@naniteninja/dashboard-components-lib 1.0.3 → 1.0.5

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.
Files changed (309) hide show
  1. package/esm2022/lib/components/auto-delegation/animations.mjs +20 -0
  2. package/esm2022/lib/components/auto-delegation/auto-delegation-modal.component.mjs +106 -0
  3. package/esm2022/lib/components/auto-delegation/enums/auto-delegation.event-type.enum.mjs +6 -0
  4. package/esm2022/lib/components/auto-delegation/enums/auto-delegation.event-value.enum.mjs +7 -0
  5. package/esm2022/lib/components/auto-delegation/interface/auto-delegation-data.interface.mjs +2 -0
  6. package/esm2022/lib/components/auto-delegation/interface/auto-delegation.event.interface.mjs +2 -0
  7. package/esm2022/lib/components/auto-delegation/interface/auto-delegation.modal-data.interface.mjs +2 -0
  8. package/esm2022/lib/components/auto-delegation/interface/preferences.interface.mjs +2 -0
  9. package/esm2022/lib/components/calendar/agenda/agenda-day-card/agenda-day-card.component.mjs +37 -0
  10. package/esm2022/lib/components/calendar/agenda/agenda.component.mjs +120 -0
  11. package/esm2022/lib/components/calendar/agenda/agenda.module.mjs +23 -0
  12. package/esm2022/lib/components/calendar/agenda/enums/agenda-item-type.enum.mjs +6 -0
  13. package/esm2022/lib/components/calendar/agenda/interfaces/agenda.day.interface.mjs +2 -0
  14. package/esm2022/lib/components/calendar/agenda/interfaces/agenda.event.inetrface.mjs +2 -0
  15. package/esm2022/lib/components/calendar/agenda/types/agenda-item.type.mjs +2 -0
  16. package/esm2022/lib/components/calendar/components/edit-recurring-event/edit-recurring-event.component.mjs +40 -0
  17. package/esm2022/lib/components/calendar/components/event-form/event-form.component.mjs +275 -0
  18. package/esm2022/lib/components/calendar/components/event-form/event-form.module.mjs +89 -0
  19. package/esm2022/lib/components/calendar/components/event-info/event-info.component.mjs +40 -0
  20. package/esm2022/lib/components/calendar/enums/calendar.account.enum.mjs +6 -0
  21. package/esm2022/lib/components/calendar/enums/calendar.account.icons.enum.mjs +6 -0
  22. package/esm2022/lib/components/calendar/enums/event-type.enum.mjs +10 -0
  23. package/esm2022/lib/components/calendar/enums/recurring.edit.options.enum.mjs +7 -0
  24. package/esm2022/lib/components/calendar/enums/recurring.type.enum.mjs +8 -0
  25. package/esm2022/lib/components/calendar/interfaces/calendar.account.interface.mjs +2 -0
  26. package/esm2022/lib/components/calendar/interfaces/calendar.account.theme.interface.mjs +2 -0
  27. package/esm2022/lib/components/calendar/interfaces/event.form.interface.mjs +2 -0
  28. package/esm2022/lib/components/calendar/interfaces/event.form.output.interface.mjs +2 -0
  29. package/esm2022/lib/components/calendar/interfaces/event.interface.mjs +2 -0
  30. package/esm2022/lib/components/calendar/interfaces/event.time.interface.mjs +2 -0
  31. package/esm2022/lib/components/calendar/interfaces/recurring.event.interface.mjs +2 -0
  32. package/esm2022/lib/components/calendar/interfaces/recurring.exception.interface.mjs +2 -0
  33. package/esm2022/lib/components/calendar/interfaces/recurring.pattern.interface.mjs +2 -0
  34. package/esm2022/lib/components/calendar/lookups/recurring.options.lookup.mjs +30 -0
  35. package/esm2022/lib/components/calendar/scheduler/enums/schedule-date-status.enum.mjs +7 -0
  36. package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.action.interface.mjs +2 -0
  37. package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.event.day.interface.mjs +2 -0
  38. package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.event.interface.mjs +2 -0
  39. package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.event.suggestion.interface.mjs +2 -0
  40. package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.slots.interface.mjs +2 -0
  41. package/esm2022/lib/components/calendar/scheduler/mock-schedule.mjs +80 -0
  42. package/esm2022/lib/components/calendar/scheduler/scheduler.component.mjs +144 -0
  43. package/esm2022/lib/components/calendar/services/calendar-utils.service.mjs +211 -0
  44. package/esm2022/lib/components/chat/chat.component.mjs +310 -0
  45. package/esm2022/lib/components/chat/chat.component.module.mjs +85 -0
  46. package/esm2022/lib/components/chat/chat.service.mjs +63 -0
  47. package/esm2022/lib/components/chat/enums/sender-types.enum.mjs +6 -0
  48. package/esm2022/lib/components/chat/gif-selector/gif-selector.component.mjs +77 -0
  49. package/esm2022/lib/components/chat/gif-selector/gif-selector.service.mjs +41 -0
  50. package/esm2022/lib/components/chat/gif-selector/tenor-media-format.interface.mjs +2 -0
  51. package/esm2022/lib/components/chat/gif-selector/tenor-object.interface.mjs +2 -0
  52. package/esm2022/lib/components/chat/gif-selector/tenor-result.interface.mjs +2 -0
  53. package/esm2022/lib/components/chat/interfaces/date-messages.interface.mjs +2 -0
  54. package/esm2022/lib/components/chat/interfaces/message-attachment.interface.mjs +2 -0
  55. package/esm2022/lib/components/chat/interfaces/message.interface.mjs +2 -0
  56. package/esm2022/lib/components/chat/interfaces/send-options-message.interface.mjs +2 -0
  57. package/esm2022/lib/components/chat/interfaces/type-send-message.enum.mjs +7 -0
  58. package/esm2022/lib/components/chat-suggestion/chat-suggestion.component.mjs +21 -0
  59. package/esm2022/lib/components/chat-suggestion/interfaces/chat-suggestion.interface.mjs +2 -0
  60. package/esm2022/lib/components/circle-progress/circle-progress.component.mjs +143 -0
  61. package/esm2022/lib/components/circle-progress/circle-progress.module.mjs +18 -0
  62. package/esm2022/lib/components/circle-progress/enums/circle-variable.enum.mjs +6 -0
  63. package/esm2022/lib/components/circle-progress/interfaces/circle-progress-config.interface.mjs +2 -0
  64. package/esm2022/lib/components/client-home/client-home.component.mjs +123 -0
  65. package/esm2022/lib/components/client-home/enums/client-home-component.enum.mjs +9 -0
  66. package/esm2022/lib/components/client-home/interfaces/chat-meta.interface.mjs +2 -0
  67. package/esm2022/lib/components/client-home/interfaces/home-dashboard-inputs.interface.mjs +2 -0
  68. package/esm2022/lib/components/client-home/interfaces/inner-partial-circle-progress-colors.interface.mjs +2 -0
  69. package/esm2022/lib/components/client-home/interfaces/partial-circle-progress-colors.interface.mjs +2 -0
  70. package/esm2022/lib/components/client-home/lookup/client-home.config.mjs +30 -0
  71. package/esm2022/lib/components/client-home/lookup/inner-progress-default-colors.config.mjs +6 -0
  72. package/esm2022/lib/components/client-home/lookup/inner-progress-pink-colors.config.mjs +6 -0
  73. package/esm2022/lib/components/client-home/lookup/inner-progress-purple-colors.config.mjs +6 -0
  74. package/esm2022/lib/components/client-home/lookup/inner-progress-teal-colors.config.mjs +6 -0
  75. package/esm2022/lib/components/client-home/lookup/inner-progress-white-colors.config.mjs +10 -0
  76. package/esm2022/lib/components/client-home/lookup/progress-default-colors.config.mjs +10 -0
  77. package/esm2022/lib/components/client-home/lookup/progress-white-colors.config.mjs +10 -0
  78. package/esm2022/lib/components/client-home/pipes/chat-meta.pipe.mjs +60 -0
  79. package/esm2022/lib/components/client-home/pipes/get-color-by-matcher.pipe.mjs +33 -0
  80. package/esm2022/lib/components/client-match-overview/client-match-overview.component.mjs +300 -0
  81. package/esm2022/lib/components/client-match-overview/enums/conversation-flag.enum.mjs +6 -0
  82. package/esm2022/lib/components/client-match-overview/enums/counter-flag-base.enum.mjs +6 -0
  83. package/esm2022/lib/components/client-match-overview/enums/inner-circle-state.enum.mjs +8 -0
  84. package/esm2022/lib/components/client-match-overview/interfaces/client-match-overview.interface.mjs +2 -0
  85. package/esm2022/lib/components/client-match-overview/interfaces/conversation-flag.interface.mjs +2 -0
  86. package/esm2022/lib/components/client-match-overview/interfaces/dashboard-match-request.interface.mjs +2 -0
  87. package/esm2022/lib/components/client-match-overview/interfaces/progress-decision.interface.mjs +2 -0
  88. package/esm2022/lib/components/client-match-overview/interfaces/progress-facts.interface.mjs +2 -0
  89. package/esm2022/lib/components/client-match-overview/lookups/computer-inner-state.lookup.mjs +81 -0
  90. package/esm2022/lib/components/client-match-overview/lookups/limit-dates-indicator.lookup.mjs +8 -0
  91. package/esm2022/lib/components/client-match-overview/progress-ticker/progress-gap.config.mjs +4 -0
  92. package/esm2022/lib/components/client-match-overview/progress-ticker/progress-ticker.config.mjs +3 -0
  93. package/esm2022/lib/components/client-match-overview/progress-ticker/progress-ticker.service.mjs +43 -0
  94. package/esm2022/lib/components/dashboard-swipeable-tabs/dashboard-swipeable-tabs.component.mjs +113 -0
  95. package/esm2022/lib/components/dashboard-swipeable-tabs/lookups/dashboard-main-swiper-options.mjs +11 -0
  96. package/esm2022/lib/components/dashboard-swipeable-tabs/lookups/dashboard-thumbs-swiper-options.mjs +27 -0
  97. package/esm2022/lib/components/dashboard-swipeable-tabs/lookups/main-swiper-default-options.mjs +19 -0
  98. package/esm2022/lib/components/dashboard-swipeable-tabs/lookups/thumbs-swiper-default-options.mjs +21 -0
  99. package/esm2022/lib/components/lib-client-dashboard/client-dashboard.component.mjs +173 -0
  100. package/esm2022/lib/components/lib-client-dashboard/enums/alert-status-fields.enum.mjs +11 -0
  101. package/esm2022/lib/components/lib-client-dashboard/enums/client-dashboard-component.enum.mjs +7 -0
  102. package/esm2022/lib/components/lib-client-dashboard/interfaces/ads.interface.mjs +2 -0
  103. package/esm2022/lib/components/lib-client-dashboard/interfaces/client-dashboard-inputs.interface.mjs +2 -0
  104. package/esm2022/lib/components/lib-client-dashboard/lookups/client-dashboard.config.mjs +15 -0
  105. package/esm2022/lib/components/lib-compose-matcher-dash/compose-matcher-dash.component.mjs +146 -0
  106. package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/chart-data.interface.mjs +2 -0
  107. package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/chat-identifier.interface.mjs +2 -0
  108. package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/matcher-dashboard-inputs.interface.mjs +2 -0
  109. package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/matcher-profile.interface.mjs +2 -0
  110. package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/prospect-data.interface.mjs +2 -0
  111. package/esm2022/lib/components/lib-compose-matcher-dash/pipes/get-profile-with-progress.pipe.mjs +21 -0
  112. package/esm2022/lib/components/matcher-statuses/enums/matcher-statuses.enum.mjs +15 -0
  113. package/esm2022/lib/components/matcher-statuses/interfaces/status.interface.mjs +2 -0
  114. package/esm2022/lib/components/matcher-statuses/lookups/matcher-statuses.lookup.mjs +54 -0
  115. package/esm2022/lib/components/matcher-statuses/matcher-statuses.component.mjs +58 -0
  116. package/esm2022/lib/components/matcher-statuses/pipes/is-status-included.pipe.mjs +19 -0
  117. package/esm2022/lib/components/profile-card/profile-card.component.mjs +35 -0
  118. package/esm2022/lib/components/profile-card/profile-card.module.mjs +19 -0
  119. package/esm2022/lib/components/spider-chart/interfaces/chart-data-circle.interface.mjs +2 -0
  120. package/esm2022/lib/components/spider-chart/interfaces/chart-data-defs-f.interface.mjs +2 -0
  121. package/esm2022/lib/components/spider-chart/interfaces/chart-data-defs-lg.interface.mjs +2 -0
  122. package/esm2022/lib/components/spider-chart/interfaces/chart-data-defs-rg.interface.mjs +2 -0
  123. package/esm2022/lib/components/spider-chart/interfaces/config.interface.mjs +2 -0
  124. package/esm2022/lib/components/spider-chart/interfaces/dataset.interface.mjs +2 -0
  125. package/esm2022/lib/components/spider-chart/interfaces/polygon-color.interface.mjs +2 -0
  126. package/esm2022/lib/components/spider-chart/interfaces/spider-chart-attribute.interface.mjs +2 -0
  127. package/esm2022/lib/components/spider-chart/lookup/default-spider-config.mjs +67 -0
  128. package/esm2022/lib/components/spider-chart/lookup/demo-polygon-colors.lookup.mjs +11 -0
  129. package/esm2022/lib/components/spider-chart/lookup/svg-config.lookup.mjs +277 -0
  130. package/esm2022/lib/components/spider-chart/spider-chart.component.mjs +235 -0
  131. package/esm2022/lib/enums/direction.enum.mjs +6 -0
  132. package/esm2022/lib/enums/form-field-type.mjs +30 -0
  133. package/esm2022/lib/enums/local-storage-keys.enum.mjs +5 -0
  134. package/esm2022/lib/enums/status-types.mjs +8 -0
  135. package/esm2022/lib/model/select-option-template.mjs +2 -0
  136. package/esm2022/lib/operations/operations.mjs +19 -0
  137. package/esm2022/lib/pipes/array-sort/array.sort.pipe.mjs +49 -0
  138. package/esm2022/lib/pipes/count-non-empty-fields/count-non-empty-fields.pipe.mjs +17 -0
  139. package/esm2022/lib/pipes/date-localization/date-localization.pipe.mjs +31 -0
  140. package/esm2022/lib/pipes/fallback-translate/fallback-translate.pipe.mjs +28 -0
  141. package/esm2022/lib/pipes/get-display-value/get-display-value.pipe.mjs +59 -0
  142. package/esm2022/lib/pipes/get-multi-select-display-text/get-multi-select-display-text.pipe.mjs +22 -0
  143. package/esm2022/lib/pipes/initials/initials.pipe.mjs +26 -0
  144. package/esm2022/lib/pipes/round/round.pipe.mjs +17 -0
  145. package/esm2022/lib/pipes/update-llm-preference/update-llm-preference.pipe.mjs +25 -0
  146. package/esm2022/lib/services/abstract-cache.service.mjs +10 -0
  147. package/esm2022/lib/shared/shared/alert-popup/alert-popup.component.mjs +38 -0
  148. package/esm2022/lib/shared/shared/message-modal/message-modal.component.mjs +95 -0
  149. package/esm2022/lib/shared/shared/status-icon/status-icon.component.mjs +14 -0
  150. package/esm2022/lib/shared/shared.module.mjs +23 -0
  151. package/esm2022/naniteninja-dashboard-components-lib.mjs +5 -0
  152. package/esm2022/public-api.mjs +123 -0
  153. package/fesm2022/naniteninja-dashboard-components-lib.mjs +205 -178
  154. package/fesm2022/naniteninja-dashboard-components-lib.mjs.map +1 -1
  155. package/index.d.ts +3 -1669
  156. package/lib/components/auto-delegation/animations.d.ts +1 -0
  157. package/lib/components/auto-delegation/auto-delegation-modal.component.d.ts +29 -0
  158. package/lib/components/auto-delegation/enums/auto-delegation.event-type.enum.d.ts +4 -0
  159. package/lib/components/auto-delegation/enums/auto-delegation.event-value.enum.d.ts +5 -0
  160. package/lib/components/auto-delegation/interface/auto-delegation-data.interface.d.ts +31 -0
  161. package/lib/components/auto-delegation/interface/auto-delegation.event.interface.d.ts +6 -0
  162. package/lib/components/auto-delegation/interface/auto-delegation.modal-data.interface.d.ts +8 -0
  163. package/lib/components/auto-delegation/interface/preferences.interface.d.ts +17 -0
  164. package/lib/components/calendar/agenda/agenda-day-card/agenda-day-card.component.d.ts +12 -0
  165. package/lib/components/calendar/agenda/agenda.component.d.ts +27 -0
  166. package/lib/components/calendar/agenda/agenda.module.d.ts +12 -0
  167. package/lib/components/calendar/agenda/enums/agenda-item-type.enum.d.ts +4 -0
  168. package/lib/components/calendar/agenda/interfaces/agenda.day.interface.d.ts +7 -0
  169. package/lib/components/calendar/agenda/interfaces/agenda.event.inetrface.d.ts +9 -0
  170. package/lib/components/calendar/agenda/types/agenda-item.type.d.ts +7 -0
  171. package/lib/components/calendar/components/edit-recurring-event/edit-recurring-event.component.d.ts +19 -0
  172. package/lib/components/calendar/components/event-form/event-form.component.d.ts +67 -0
  173. package/lib/components/calendar/components/event-form/event-form.module.d.ts +20 -0
  174. package/lib/components/calendar/components/event-info/event-info.component.d.ts +24 -0
  175. package/lib/components/calendar/enums/calendar.account.enum.d.ts +4 -0
  176. package/lib/components/calendar/enums/calendar.account.icons.enum.d.ts +4 -0
  177. package/lib/components/calendar/enums/event-type.enum.d.ts +8 -0
  178. package/lib/components/calendar/enums/recurring.edit.options.enum.d.ts +5 -0
  179. package/lib/components/calendar/enums/recurring.type.enum.d.ts +6 -0
  180. package/lib/components/calendar/interfaces/calendar.account.interface.d.ts +14 -0
  181. package/lib/components/calendar/interfaces/calendar.account.theme.interface.d.ts +5 -0
  182. package/lib/components/calendar/interfaces/event.form.interface.d.ts +22 -0
  183. package/lib/components/calendar/interfaces/event.form.output.interface.d.ts +10 -0
  184. package/lib/components/calendar/interfaces/event.interface.d.ts +33 -0
  185. package/lib/components/calendar/interfaces/event.time.interface.d.ts +4 -0
  186. package/lib/components/calendar/interfaces/recurring.event.interface.d.ts +16 -0
  187. package/lib/components/calendar/interfaces/recurring.exception.interface.d.ts +14 -0
  188. package/lib/components/calendar/interfaces/recurring.pattern.interface.d.ts +16 -0
  189. package/lib/components/calendar/lookups/recurring.options.lookup.d.ts +2 -0
  190. package/lib/components/calendar/scheduler/enums/schedule-date-status.enum.d.ts +5 -0
  191. package/lib/components/calendar/scheduler/interfaces/scheduler.action.interface.d.ts +10 -0
  192. package/lib/components/calendar/scheduler/interfaces/scheduler.event.day.interface.d.ts +5 -0
  193. package/lib/components/calendar/scheduler/interfaces/scheduler.event.interface.d.ts +26 -0
  194. package/lib/components/calendar/scheduler/interfaces/scheduler.event.suggestion.interface.d.ts +13 -0
  195. package/lib/components/calendar/scheduler/interfaces/scheduler.slots.interface.d.ts +6 -0
  196. package/lib/components/calendar/scheduler/mock-schedule.d.ts +9 -0
  197. package/lib/components/calendar/scheduler/scheduler.component.d.ts +36 -0
  198. package/lib/components/calendar/services/calendar-utils.service.d.ts +39 -0
  199. package/lib/components/chat/chat.component.d.ts +70 -0
  200. package/lib/components/chat/chat.component.module.d.ts +22 -0
  201. package/lib/components/chat/chat.service.d.ts +15 -0
  202. package/lib/components/chat/enums/sender-types.enum.d.ts +4 -0
  203. package/lib/components/chat/gif-selector/gif-selector.component.d.ts +25 -0
  204. package/lib/components/chat/gif-selector/gif-selector.service.d.ts +15 -0
  205. package/lib/components/chat/gif-selector/tenor-media-format.interface.d.ts +7 -0
  206. package/lib/components/chat/gif-selector/tenor-object.interface.d.ts +5 -0
  207. package/lib/components/chat/gif-selector/tenor-result.interface.d.ts +16 -0
  208. package/lib/components/chat/interfaces/date-messages.interface.d.ts +6 -0
  209. package/lib/components/chat/interfaces/message-attachment.interface.d.ts +6 -0
  210. package/lib/components/chat/interfaces/message.interface.d.ts +11 -0
  211. package/lib/components/chat/interfaces/send-options-message.interface.d.ts +5 -0
  212. package/lib/components/chat/interfaces/type-send-message.enum.d.ts +5 -0
  213. package/lib/components/chat-suggestion/chat-suggestion.component.d.ts +9 -0
  214. package/lib/components/chat-suggestion/interfaces/chat-suggestion.interface.d.ts +4 -0
  215. package/lib/components/circle-progress/circle-progress.component.d.ts +31 -0
  216. package/lib/components/circle-progress/circle-progress.module.d.ts +8 -0
  217. package/lib/components/circle-progress/enums/circle-variable.enum.d.ts +4 -0
  218. package/lib/components/circle-progress/interfaces/circle-progress-config.interface.d.ts +29 -0
  219. package/lib/components/client-home/client-home.component.d.ts +44 -0
  220. package/lib/components/client-home/enums/client-home-component.enum.d.ts +7 -0
  221. package/lib/components/client-home/interfaces/chat-meta.interface.d.ts +7 -0
  222. package/lib/components/client-home/interfaces/home-dashboard-inputs.interface.d.ts +45 -0
  223. package/lib/components/client-home/interfaces/inner-partial-circle-progress-colors.interface.d.ts +5 -0
  224. package/lib/components/client-home/interfaces/partial-circle-progress-colors.interface.d.ts +9 -0
  225. package/lib/components/client-home/lookup/client-home.config.d.ts +2 -0
  226. package/lib/components/client-home/lookup/inner-progress-default-colors.config.d.ts +2 -0
  227. package/lib/components/client-home/lookup/inner-progress-pink-colors.config.d.ts +2 -0
  228. package/lib/components/client-home/lookup/inner-progress-purple-colors.config.d.ts +2 -0
  229. package/lib/components/client-home/lookup/inner-progress-teal-colors.config.d.ts +2 -0
  230. package/lib/components/client-home/lookup/inner-progress-white-colors.config.d.ts +2 -0
  231. package/lib/components/client-home/lookup/progress-default-colors.config.d.ts +2 -0
  232. package/lib/components/client-home/lookup/progress-white-colors.config.d.ts +2 -0
  233. package/lib/components/client-home/pipes/chat-meta.pipe.d.ts +10 -0
  234. package/lib/components/client-home/pipes/get-color-by-matcher.pipe.d.ts +10 -0
  235. package/lib/components/client-match-overview/client-match-overview.component.d.ts +55 -0
  236. package/lib/components/client-match-overview/enums/conversation-flag.enum.d.ts +4 -0
  237. package/lib/components/client-match-overview/enums/counter-flag-base.enum.d.ts +4 -0
  238. package/lib/components/client-match-overview/enums/inner-circle-state.enum.d.ts +6 -0
  239. package/lib/components/client-match-overview/interfaces/client-match-overview.interface.d.ts +19 -0
  240. package/lib/components/client-match-overview/interfaces/conversation-flag.interface.d.ts +8 -0
  241. package/lib/components/client-match-overview/interfaces/dashboard-match-request.interface.d.ts +7 -0
  242. package/lib/components/client-match-overview/interfaces/progress-decision.interface.d.ts +10 -0
  243. package/lib/components/client-match-overview/interfaces/progress-facts.interface.d.ts +11 -0
  244. package/lib/components/client-match-overview/lookups/computer-inner-state.lookup.d.ts +7 -0
  245. package/lib/components/client-match-overview/lookups/limit-dates-indicator.lookup.d.ts +5 -0
  246. package/lib/components/client-match-overview/progress-ticker/progress-gap.config.d.ts +2 -0
  247. package/lib/components/client-match-overview/progress-ticker/progress-ticker.config.d.ts +2 -0
  248. package/lib/components/client-match-overview/progress-ticker/progress-ticker.service.d.ts +11 -0
  249. package/lib/components/dashboard-swipeable-tabs/dashboard-swipeable-tabs.component.d.ts +29 -0
  250. package/lib/components/dashboard-swipeable-tabs/lookups/dashboard-main-swiper-options.d.ts +2 -0
  251. package/lib/components/dashboard-swipeable-tabs/lookups/dashboard-thumbs-swiper-options.d.ts +2 -0
  252. package/lib/components/dashboard-swipeable-tabs/lookups/main-swiper-default-options.d.ts +2 -0
  253. package/lib/components/dashboard-swipeable-tabs/lookups/thumbs-swiper-default-options.d.ts +2 -0
  254. package/lib/components/lib-client-dashboard/client-dashboard.component.d.ts +75 -0
  255. package/lib/components/lib-client-dashboard/enums/alert-status-fields.enum.d.ts +9 -0
  256. package/lib/components/lib-client-dashboard/enums/client-dashboard-component.enum.d.ts +5 -0
  257. package/lib/components/lib-client-dashboard/interfaces/ads.interface.d.ts +14 -0
  258. package/lib/components/lib-client-dashboard/interfaces/client-dashboard-inputs.interface.d.ts +29 -0
  259. package/lib/components/lib-client-dashboard/lookups/client-dashboard.config.d.ts +2 -0
  260. package/lib/components/lib-compose-matcher-dash/compose-matcher-dash.component.d.ts +48 -0
  261. package/lib/components/lib-compose-matcher-dash/interfaces/chart-data.interface.d.ts +5 -0
  262. package/lib/components/lib-compose-matcher-dash/interfaces/chat-identifier.interface.d.ts +5 -0
  263. package/lib/components/lib-compose-matcher-dash/interfaces/matcher-dashboard-inputs.interface.d.ts +26 -0
  264. package/lib/components/lib-compose-matcher-dash/interfaces/matcher-profile.interface.d.ts +8 -0
  265. package/lib/components/lib-compose-matcher-dash/interfaces/prospect-data.interface.d.ts +24 -0
  266. package/lib/components/lib-compose-matcher-dash/pipes/get-profile-with-progress.pipe.d.ts +9 -0
  267. package/lib/components/matcher-statuses/enums/matcher-statuses.enum.d.ts +13 -0
  268. package/lib/components/matcher-statuses/interfaces/status.interface.d.ts +6 -0
  269. package/lib/components/matcher-statuses/lookups/matcher-statuses.lookup.d.ts +2 -0
  270. package/lib/components/matcher-statuses/matcher-statuses.component.d.ts +23 -0
  271. package/lib/components/matcher-statuses/pipes/is-status-included.pipe.d.ts +8 -0
  272. package/lib/components/profile-card/profile-card.component.d.ts +11 -0
  273. package/lib/components/profile-card/profile-card.module.d.ts +9 -0
  274. package/lib/components/spider-chart/interfaces/chart-data-circle.interface.d.ts +10 -0
  275. package/lib/components/spider-chart/interfaces/chart-data-defs-f.interface.d.ts +11 -0
  276. package/lib/components/spider-chart/interfaces/chart-data-defs-lg.interface.d.ts +11 -0
  277. package/lib/components/spider-chart/interfaces/chart-data-defs-rg.interface.d.ts +10 -0
  278. package/lib/components/spider-chart/interfaces/config.interface.d.ts +19 -0
  279. package/lib/components/spider-chart/interfaces/dataset.interface.d.ts +7 -0
  280. package/lib/components/spider-chart/interfaces/polygon-color.interface.d.ts +4 -0
  281. package/lib/components/spider-chart/interfaces/spider-chart-attribute.interface.d.ts +6 -0
  282. package/lib/components/spider-chart/lookup/default-spider-config.d.ts +2 -0
  283. package/lib/components/spider-chart/lookup/demo-polygon-colors.lookup.d.ts +2 -0
  284. package/lib/components/spider-chart/lookup/svg-config.lookup.d.ts +8 -0
  285. package/lib/components/spider-chart/spider-chart.component.d.ts +52 -0
  286. package/lib/enums/direction.enum.d.ts +4 -0
  287. package/lib/enums/form-field-type.d.ts +28 -0
  288. package/lib/enums/local-storage-keys.enum.d.ts +3 -0
  289. package/lib/enums/status-types.d.ts +6 -0
  290. package/lib/model/select-option-template.d.ts +5 -0
  291. package/lib/operations/operations.d.ts +19 -0
  292. package/lib/pipes/array-sort/array.sort.pipe.d.ts +7 -0
  293. package/lib/pipes/count-non-empty-fields/count-non-empty-fields.pipe.d.ts +7 -0
  294. package/lib/pipes/date-localization/date-localization.pipe.d.ts +8 -0
  295. package/lib/pipes/fallback-translate/fallback-translate.pipe.d.ts +11 -0
  296. package/lib/pipes/get-display-value/get-display-value.pipe.d.ts +13 -0
  297. package/lib/pipes/get-multi-select-display-text/get-multi-select-display-text.pipe.d.ts +8 -0
  298. package/lib/pipes/initials/initials.pipe.d.ts +7 -0
  299. package/lib/pipes/round/round.pipe.d.ts +7 -0
  300. package/lib/pipes/update-llm-preference/update-llm-preference.pipe.d.ts +8 -0
  301. package/lib/services/abstract-cache.service.d.ts +9 -0
  302. package/lib/shared/shared/alert-popup/alert-popup.component.d.ts +14 -0
  303. package/lib/shared/shared/message-modal/message-modal.component.d.ts +29 -0
  304. package/lib/shared/shared/status-icon/status-icon.component.d.ts +7 -0
  305. package/lib/shared/shared.module.d.ts +13 -0
  306. package/naniteninja-dashboard-components-lib-1.0.5.tgz +0 -0
  307. package/package.json +29 -25
  308. package/public-api.d.ts +122 -0
  309. package/src/lib/shared-styles/common/theme.scss +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"naniteninja-dashboard-components-lib.mjs","sources":["../../../projects/dashboard-components-lib/src/lib/operations/operations.ts","../../../projects/dashboard-components-lib/src/lib/components/auto-delegation/animations.ts","../../../projects/dashboard-components-lib/src/lib/components/auto-delegation/enums/auto-delegation.event-type.enum.ts","../../../projects/dashboard-components-lib/src/lib/components/auto-delegation/enums/auto-delegation.event-value.enum.ts","../../../projects/dashboard-components-lib/src/lib/components/auto-delegation/auto-delegation-modal.component.ts","../../../projects/dashboard-components-lib/src/lib/components/auto-delegation/auto-delegation-modal.component.html","../../../projects/dashboard-components-lib/src/lib/enums/direction.enum.ts","../../../projects/dashboard-components-lib/src/lib/components/calendar/agenda/agenda-day-card/agenda-day-card.component.ts","../../../projects/dashboard-components-lib/src/lib/components/calendar/agenda/agenda-day-card/agenda-day-card.component.html","../../../projects/dashboard-components-lib/src/lib/components/calendar/agenda/agenda.component.ts","../../../projects/dashboard-components-lib/src/lib/components/calendar/agenda/agenda.component.html","../../../projects/dashboard-components-lib/src/lib/components/calendar/agenda/agenda.module.ts","../../../projects/dashboard-components-lib/src/lib/components/calendar/enums/event-type.enum.ts","../../../projects/dashboard-components-lib/src/lib/components/calendar/enums/recurring.type.enum.ts","../../../projects/dashboard-components-lib/src/lib/components/calendar/lookups/recurring.options.lookup.ts","../../../projects/dashboard-components-lib/src/lib/components/calendar/services/calendar-utils.service.ts","../../../projects/dashboard-components-lib/src/lib/pipes/fallback-translate/fallback-translate.pipe.ts","../../../projects/dashboard-components-lib/src/lib/components/calendar/components/event-info/event-info.component.ts","../../../projects/dashboard-components-lib/src/lib/components/calendar/components/event-info/event-info.component.html","../../../projects/dashboard-components-lib/src/lib/enums/form-field-type.ts","../../../projects/dashboard-components-lib/src/lib/components/calendar/enums/recurring.edit.options.enum.ts","../../../projects/dashboard-components-lib/src/lib/components/calendar/components/edit-recurring-event/edit-recurring-event.component.ts","../../../projects/dashboard-components-lib/src/lib/components/calendar/components/edit-recurring-event/edit-recurring-event.component.html","../../../projects/dashboard-components-lib/src/lib/components/calendar/components/event-form/event-form.component.ts","../../../projects/dashboard-components-lib/src/lib/components/calendar/components/event-form/event-form.component.html","../../../projects/dashboard-components-lib/src/lib/components/calendar/components/event-form/event-form.module.ts","../../../projects/dashboard-components-lib/src/lib/components/calendar/enums/calendar.account.enum.ts","../../../projects/dashboard-components-lib/src/lib/components/calendar/enums/calendar.account.icons.enum.ts","../../../projects/dashboard-components-lib/src/lib/components/calendar/scheduler/enums/schedule-date-status.enum.ts","../../../projects/dashboard-components-lib/src/lib/components/calendar/scheduler/mock-schedule.ts","../../../projects/dashboard-components-lib/src/lib/components/calendar/scheduler/scheduler.component.ts","../../../projects/dashboard-components-lib/src/lib/components/calendar/scheduler/scheduler.component.html","../../../projects/dashboard-components-lib/src/lib/components/client-home/lookup/inner-progress-default-colors.config.ts","../../../projects/dashboard-components-lib/src/lib/components/client-home/lookup/inner-progress-pink-colors.config.ts","../../../projects/dashboard-components-lib/src/lib/components/client-home/lookup/inner-progress-teal-colors.config.ts","../../../projects/dashboard-components-lib/src/lib/components/client-home/lookup/progress-default-colors.config.ts","../../../projects/dashboard-components-lib/src/lib/components/client-match-overview/enums/inner-circle-state.enum.ts","../../../projects/dashboard-components-lib/src/lib/components/circle-progress/enums/circle-variable.enum.ts","../../../projects/dashboard-components-lib/src/lib/components/circle-progress/circle-progress.component.ts","../../../projects/dashboard-components-lib/src/lib/components/circle-progress/circle-progress.component.html","../../../projects/dashboard-components-lib/src/lib/components/circle-progress/circle-progress.module.ts","../../../projects/dashboard-components-lib/src/lib/components/chat-suggestion/chat-suggestion.component.ts","../../../projects/dashboard-components-lib/src/lib/components/chat-suggestion/chat-suggestion.component.html","../../../projects/dashboard-components-lib/src/lib/enums/local-storage-keys.enum.ts","../../../projects/dashboard-components-lib/src/lib/services/abstract-cache.service.ts","../../../projects/dashboard-components-lib/src/lib/components/chat/chat.service.ts","../../../projects/dashboard-components-lib/src/lib/shared/shared/message-modal/message-modal.component.ts","../../../projects/dashboard-components-lib/src/lib/shared/shared/message-modal/message-modal.component.html","../../../projects/dashboard-components-lib/src/lib/components/chat/enums/sender-types.enum.ts","../../../projects/dashboard-components-lib/src/lib/components/chat/interfaces/type-send-message.enum.ts","../../../projects/dashboard-components-lib/src/lib/components/chat/gif-selector/gif-selector.service.ts","../../../projects/dashboard-components-lib/src/lib/components/chat/gif-selector/gif-selector.component.ts","../../../projects/dashboard-components-lib/src/lib/components/chat/gif-selector/gif-selector.component.html","../../../projects/dashboard-components-lib/src/lib/components/chat/chat.component.ts","../../../projects/dashboard-components-lib/src/lib/components/chat/chat.component.html","../../../projects/dashboard-components-lib/src/lib/shared/shared/alert-popup/alert-popup.component.ts","../../../projects/dashboard-components-lib/src/lib/shared/shared/alert-popup/alert-popup.component.html","../../../projects/dashboard-components-lib/src/lib/shared/shared/status-icon/status-icon.component.ts","../../../projects/dashboard-components-lib/src/lib/shared/shared/status-icon/status-icon.component.html","../../../projects/dashboard-components-lib/src/lib/shared/shared.module.ts","../../../projects/dashboard-components-lib/src/lib/components/chat/chat.component.module.ts","../../../projects/dashboard-components-lib/src/lib/components/client-home/lookup/inner-progress-white-colors.config.ts","../../../projects/dashboard-components-lib/src/lib/components/client-match-overview/enums/conversation-flag.enum.ts","../../../projects/dashboard-components-lib/src/lib/components/client-match-overview/enums/counter-flag-base.enum.ts","../../../projects/dashboard-components-lib/src/lib/components/client-match-overview/lookups/limit-dates-indicator.lookup.ts","../../../projects/dashboard-components-lib/src/lib/components/client-match-overview/lookups/computer-inner-state.lookup.ts","../../../projects/dashboard-components-lib/src/lib/components/client-match-overview/progress-ticker/progress-gap.config.ts","../../../projects/dashboard-components-lib/src/lib/components/client-match-overview/progress-ticker/progress-ticker.config.ts","../../../projects/dashboard-components-lib/src/lib/components/client-match-overview/progress-ticker/progress-ticker.service.ts","../../../projects/dashboard-components-lib/src/lib/components/client-match-overview/client-match-overview.component.ts","../../../projects/dashboard-components-lib/src/lib/components/client-match-overview/client-match-overview.component.html","../../../projects/dashboard-components-lib/src/lib/components/lib-client-dashboard/enums/alert-status-fields.enum.ts","../../../projects/dashboard-components-lib/src/lib/components/matcher-statuses/enums/matcher-statuses.enum.ts","../../../projects/dashboard-components-lib/src/lib/components/matcher-statuses/lookups/matcher-statuses.lookup.ts","../../../projects/dashboard-components-lib/src/lib/components/matcher-statuses/pipes/is-status-included.pipe.ts","../../../projects/dashboard-components-lib/src/lib/components/matcher-statuses/matcher-statuses.component.ts","../../../projects/dashboard-components-lib/src/lib/components/matcher-statuses/matcher-statuses.component.html","../../../projects/dashboard-components-lib/src/lib/pipes/initials/initials.pipe.ts","../../../projects/dashboard-components-lib/src/lib/components/spider-chart/lookup/svg-config.lookup.ts","../../../projects/dashboard-components-lib/src/lib/components/spider-chart/spider-chart.component.ts","../../../projects/dashboard-components-lib/src/lib/components/spider-chart/spider-chart.component.html","../../../projects/dashboard-components-lib/src/lib/components/dashboard-swipeable-tabs/lookups/dashboard-main-swiper-options.ts","../../../projects/dashboard-components-lib/src/lib/components/dashboard-swipeable-tabs/lookups/dashboard-thumbs-swiper-options.ts","../../../projects/dashboard-components-lib/src/lib/components/dashboard-swipeable-tabs/dashboard-swipeable-tabs.component.ts","../../../projects/dashboard-components-lib/src/lib/components/dashboard-swipeable-tabs/dashboard-swipeable-tabs.component.html","../../../projects/dashboard-components-lib/src/lib/components/client-home/enums/client-home-component.enum.ts","../../../projects/dashboard-components-lib/src/lib/components/client-home/lookup/client-home.config.ts","../../../projects/dashboard-components-lib/src/lib/components/client-home/pipes/chat-meta.pipe.ts","../../../projects/dashboard-components-lib/src/lib/components/client-home/pipes/get-color-by-matcher.pipe.ts","../../../projects/dashboard-components-lib/src/lib/components/client-home/client-home.component.ts","../../../projects/dashboard-components-lib/src/lib/components/client-home/client-home.component.html","../../../projects/dashboard-components-lib/src/lib/components/client-home/lookup/inner-progress-purple-colors.config.ts","../../../projects/dashboard-components-lib/src/lib/components/client-home/lookup/progress-white-colors.config.ts","../../../projects/dashboard-components-lib/src/lib/components/dashboard-swipeable-tabs/lookups/main-swiper-default-options.ts","../../../projects/dashboard-components-lib/src/lib/components/dashboard-swipeable-tabs/lookups/thumbs-swiper-default-options.ts","../../../projects/dashboard-components-lib/src/lib/components/lib-client-dashboard/enums/client-dashboard-component.enum.ts","../../../projects/dashboard-components-lib/src/lib/components/spider-chart/lookup/default-spider-config.ts","../../../projects/dashboard-components-lib/src/lib/components/spider-chart/lookup/demo-polygon-colors.lookup.ts","../../../projects/dashboard-components-lib/src/lib/components/lib-client-dashboard/lookups/client-dashboard.config.ts","../../../projects/dashboard-components-lib/src/lib/components/lib-client-dashboard/client-dashboard.component.ts","../../../projects/dashboard-components-lib/src/lib/components/lib-client-dashboard/client-dashboard.component.html","../../../projects/dashboard-components-lib/src/lib/pipes/update-llm-preference/update-llm-preference.pipe.ts","../../../projects/dashboard-components-lib/src/lib/components/profile-card/profile-card.component.ts","../../../projects/dashboard-components-lib/src/lib/components/profile-card/profile-card.component.html","../../../projects/dashboard-components-lib/src/lib/components/profile-card/profile-card.module.ts","../../../projects/dashboard-components-lib/src/lib/components/lib-compose-matcher-dash/pipes/get-profile-with-progress.pipe.ts","../../../projects/dashboard-components-lib/src/lib/components/lib-compose-matcher-dash/compose-matcher-dash.component.ts","../../../projects/dashboard-components-lib/src/lib/components/lib-compose-matcher-dash/compose-matcher-dash.component.html","../../../projects/dashboard-components-lib/src/lib/pipes/array-sort/array.sort.pipe.ts","../../../projects/dashboard-components-lib/src/lib/pipes/count-non-empty-fields/count-non-empty-fields.pipe.ts","../../../projects/dashboard-components-lib/src/lib/pipes/date-localization/date-localization.pipe.ts","../../../projects/dashboard-components-lib/src/lib/pipes/get-display-value/get-display-value.pipe.ts","../../../projects/dashboard-components-lib/src/lib/pipes/get-multi-select-display-text/get-multi-select-display-text.pipe.ts","../../../projects/dashboard-components-lib/src/lib/pipes/round/round.pipe.ts","../../../projects/dashboard-components-lib/src/naniteninja-dashboard-components-lib.ts"],"sourcesContent":["/**\n * operations.ts - Contains common operations utility functions.\n *\n * @file This file exports utility functions for common operations.\n */\n\n/**\n * Generates a random string of the specified length.\n *\n * @param {number} [length=10] - The length of the random string to generate. Default is 10.\n * @return {string} A randomly generated string.\n */\nfunction randomString(length: number = 10): string {\n return Array.from({ length }, () => Math.random().toString(36).charAt(2)).join('');\n}\n\n/**\n * Collection of common operations utility functions.\n */\nexport const CommonOperations = { randomString };\n","import { animate, query, sequence, stagger, style, transition, trigger } from '@angular/animations';\n\nexport const SeeMoreAnimation = trigger('dropDownMenu', [\n transition(':enter', [\n style({ height: 0, overflow: 'hidden' }),\n query('.menu-item', [style({ opacity: 0, transform: 'translateY(-50px)' })], { optional: true }),\n sequence([\n animate('200ms', style({ height: '*' })),\n query('.menu-item', [stagger(-50, [animate('400ms ease', style({ opacity: 1, transform: 'none' }))])], { optional: true }),\n ]),\n ]),\n\n transition(':leave', [\n style({ height: '*', overflow: 'hidden' }),\n query('.menu-item', [style({ opacity: 1, transform: 'none' })], { optional: true }),\n sequence([\n query('.menu-item', [stagger(50, [animate('400ms ease', style({ opacity: 0, transform: 'translateY(-50px)' }))])], { optional: true }),\n animate('200ms', style({ height: 0 })),\n ]),\n ]),\n]);\n","export enum AutoDelegationEventTypes {\n Click = 'click',\n Countdown = 'countdown',\n}\n","export enum AutoDelegationEventValue {\n CountdownCompleted = 'countdown-completed',\n RequestRejected = 'request-rejected',\n RequestAcceped = 'request-accepted',\n}\n","import { CommonModule } from '@angular/common';\nimport { AfterViewInit, ChangeDetectorRef, Component, ElementRef, EventEmitter, Inject, Input, OnInit, Optional, Output, ViewChild } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { interval, take } from 'rxjs';\nimport { PopperModule, LibMenuItem, BaseCardModule, ButtonsModule, MODAL_DATA, LibModalComponent, PopupModalService } from '@naniteninja/ionic-lib';\nimport { CommonOperations } from '../../operations/operations';\nimport { SeeMoreAnimation } from './animations';\nimport { AutoDelegationEventTypes } from './enums/auto-delegation.event-type.enum';\nimport { AutoDelegationEventValue } from './enums/auto-delegation.event-value.enum';\nimport { IAutoDelegationData } from './interface/auto-delegation-data.interface';\nimport { IAutoDelegationEvent } from './interface/auto-delegation.event.interface';\nimport { IAutoDelegationModalData } from './interface/auto-delegation.modal-data.interface';\n@Component({\n selector: 'lib-auto-delegation-modal',\n templateUrl: './auto-delegation-modal.component.html',\n styleUrls: ['./auto-delegation-modal.component.scss'],\n animations: [SeeMoreAnimation],\n imports: [CommonModule, BaseCardModule, TranslateModule, ButtonsModule, MatMenuModule, MatButtonModule, PopperModule],\n providers: [LibModalComponent],\n})\nexport class LibAutoDelegationModalComponent implements OnInit, AfterViewInit {\n @ViewChild('childModalElementRef') childModalElementRef: ElementRef<HTMLDivElement>;\n\n @Input() countdown: number = 45;\n @Input() expandedBaseCard?: boolean = true;\n @Input() data: IAutoDelegationData;\n @Input() menuItems: LibMenuItem[] = [];\n @Output() event: EventEmitter<IAutoDelegationEvent> = new EventEmitter<IAutoDelegationEvent>();\n\n public totalStrokeLength: number = 2 * Math.PI * 42.5;\n public currentCountdownAt: number;\n public activeCountdownPathId: string;\n public strokeDashOffset: number = 0;\n public componentData: IAutoDelegationModalData | null = null;\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n private popupModalService: PopupModalService,\n @Optional() @Inject(MODAL_DATA) public modalData?: IAutoDelegationModalData,\n ) {\n if (modalData) {\n // Can use that component as modal and pass Inputs\n this.componentData = modalData;\n }\n }\n\n ngOnInit(): void {\n if (!this.componentData) {\n // Can use that component as child and pass Inputs\n this.componentData = {\n countdown: this.countdown,\n expandedBaseCard: this.expandedBaseCard,\n menuItems: this.menuItems,\n data: this.data || null,\n };\n }\n }\n\n ngAfterViewInit(): void {\n this.activeCountdownPathId = CommonOperations.randomString(100);\n interval(1000)\n .pipe(take(this.componentData?.countdown + 1))\n .subscribe({\n next: (elapsedSeconds) => {\n this.currentCountdownAt = this.componentData?.countdown - elapsedSeconds;\n this.strokeDashOffset = this.totalStrokeLength * ((this.componentData?.countdown - this.currentCountdownAt) / this.componentData?.countdown);\n this.changeDetectorRef.detectChanges();\n },\n complete: () => {\n if (this.data) {\n this.event.emit({ type: AutoDelegationEventTypes.Countdown, value: AutoDelegationEventValue.CountdownCompleted });\n } else {\n this.popupModalService.hide({ type: AutoDelegationEventTypes.Countdown, value: AutoDelegationEventValue.CountdownCompleted });\n }\n },\n });\n\n this.popupModalService.setChildModalElementRef(this.childModalElementRef);\n }\n\n public reject(): void {\n if (this.data) {\n this.event.emit({ type: AutoDelegationEventTypes.Click, value: AutoDelegationEventValue.RequestRejected });\n } else {\n this.popupModalService.hide({ type: AutoDelegationEventTypes.Click, value: AutoDelegationEventValue.RequestRejected });\n }\n }\n\n public accept(): void {\n if (this.data) {\n this.event.emit({ type: AutoDelegationEventTypes.Click, value: AutoDelegationEventValue.RequestAcceped });\n } else {\n this.popupModalService.hide({ type: AutoDelegationEventTypes.Click, value: AutoDelegationEventValue.RequestAcceped });\n }\n }\n}\n","<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 }}±{{ componentData?.data?.preferences?.bust?.moe }} {{ componentData?.data?.preferences?.waist?.value }}±{{\n componentData?.data?.preferences?.waist?.moe\n }}\n {{ componentData?.data?.preferences?.height?.value }}±{{ 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","export enum Direction {\n horizontal = 'horizontal',\n vertical = 'vertical',\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { IAgendaDay } from '../interfaces/agenda.day.interface';\n\n@Component({\n selector: 'lib-agenda-day-card',\n templateUrl: './agenda-day-card.component.html',\n styleUrls: ['./agenda-day-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class AgendaDayCardComponent implements OnInit {\n @Input() adDay: boolean;\n @Input() day: IAgendaDay;\n public fullName: string = '';\n\n ngOnInit(): void {\n if (!this.day?.user?.name) {\n this.fullName = '';\n return;\n }\n const words = this.day.user.name.split(' ').filter(Boolean);\n this.fullName = words.length < 2 ? this.day.user.name : `${this.sanitizeHtml(words[0])}<br>${this.sanitizeHtml(words[1])}`;\n }\n\n private sanitizeHtml(text: string): string {\n return text.replace(\n /[&<>\"']/g,\n (char) =>\n ({\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;',\n })[char] || char,\n );\n }\n}\n","@if (adDay) {\n <div class=\"agenda-day message-box first-day\">\n <div class=\"message-box-wrapper\">\n <div class=\"message-box-content\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n} @else {\n <div class=\"agenda-day\" [ngClass]=\"{ 'message-box': !!day.startTime, 'hidden-day': day.empty, 'first-day': day.index === 0 }\">\n <div class=\"message-box-wrapper\">\n <div class=\"message-box-content\">\n <div class=\"date\" [class.with-time]=\"!day.empty\">\n <span [class.empty]=\"day.empty\">{{ day.empty ? '' : day.dayNumber }}</span>\n @if (!day.empty) {\n <span class=\"spacer\"></span>\n <span *ngIf=\"day.startTime\" class=\"event-time\"\n >{{ day.startTime }} <br />\n {{ day.endTime }}</span\n >\n }\n </div>\n <div class=\"day\">\n <span [class.empty]=\"day.empty\">{{ day.empty ? '' : day.name }}</span>\n </div>\n @if (!day.empty && day.user) {\n <div class=\"profile\">\n <div class=\"profile-pic\" [class.default-icon]=\"!day.user.profilePic\">\n @if (day.user.profilePic) {\n <img [src]=\"day.user.profilePic\" alt=\"Profile Image\" />\n } @else {\n <lib-avatar></lib-avatar>\n }\n </div>\n <div class=\"profile-name\" [innerHTML]=\"fullName\"></div>\n </div>\n }\n </div>\n </div>\n </div>\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit, TemplateRef } from '@angular/core';\nimport { addDays, isSameDay, set } from 'date-fns';\nimport { Observable } from 'rxjs';\nimport { IAgendaDay } from './interfaces/agenda.day.interface';\nimport { IAgendaEvent } from './interfaces/agenda.event.inetrface';\nimport { Direction } from '../../../enums/direction.enum';\n\n@Component({\n selector: 'lib-agenda',\n templateUrl: './agenda.component.html',\n styleUrls: ['./agenda.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class AgendaComponent implements OnInit {\n @Input() adsTemplate?: TemplateRef<HTMLElement>;\n @Input() loading$: Observable<boolean>;\n @Input() startDate: Date = new Date();\n @Input() endDate: Date = addDays(this.startDate, 13);\n @Input() set events(events: IAgendaEvent[]) {\n this._events = events;\n this.numberOfEvents = events?.length || 0;\n this.buildAgendaDays();\n }\n public numberOfEvents: number = 0;\n public days: IAgendaDay[] = [];\n public direction: Direction = Direction.horizontal;\n private _events: IAgendaEvent[] = [];\n\n ngOnInit(): void {\n this.buildAgendaDays();\n }\n\n private buildAgendaDays(): void {\n if (this._events) {\n const dates: Date[] = [];\n let current = new Date(this.startDate);\n while (current <= new Date(this.endDate)) {\n dates.push(current);\n current = set(current, { date: current.getDate() + 1 });\n }\n const days: IAgendaDay[] = dates.flatMap((date, index) => {\n const events = this._events?.filter((e) => isSameDay(e.date, date)) || [];\n const dayEvent = {\n name: date.toLocaleDateString('en', { weekday: events.length > 0 ? 'long' : 'short' }),\n dayNumber: date.getDate(),\n date,\n index,\n };\n return events?.length > 0\n ? events.map((event) => {\n return { ...event, ...dayEvent };\n })\n : dayEvent;\n });\n const emptyContinuesDays = this.getSuccessiveEmptyDays(days);\n emptyContinuesDays.forEach((emptyDays) => {\n if (emptyDays?.length > 2) {\n emptyDays.forEach((emptyDay, index) => {\n if (index > 0 && index !== emptyDays.length - 1) {\n days[emptyDay.index].empty = !days[emptyDay.index + 1]?.startTime || emptyDay.index + 1 !== days.length - 1;\n }\n });\n }\n });\n this.days = days;\n } else {\n this.days = [];\n }\n }\n\n private getSuccessiveEmptyDays(days: IAgendaDay[]): IAgendaDay[][] {\n const emptyDays: IAgendaDay[] = days.filter((day) => !day.startTime);\n const result: IAgendaDay[][] = [];\n let currentGroup: IAgendaDay[] = [];\n for (let i = 0; i < emptyDays.length; i++) {\n if (currentGroup.length === 0 || emptyDays[i].dayNumber === emptyDays[i - 1].dayNumber + 1) {\n currentGroup.push(emptyDays[i]);\n } else {\n result.push(currentGroup);\n currentGroup = [emptyDays[i]];\n }\n }\n if (currentGroup.length > 0) {\n result.push(currentGroup);\n }\n return result;\n }\n}\n","<div class=\"agenda-container\" [class.container-sides-shadow]=\"numberOfEvents > 2\" [class.loading]=\"loading$\">\n <div [class.has-ads]=\"!!adsTemplate\">\n @if (adsTemplate) {\n <div>\n <ng-container *ngTemplateOutlet=\"adsTemplate\"></ng-container>\n </div>\n }\n <div\n class=\"wrapper\"\n libDraggableScroll\n [direction]=\"direction\"\n [ngClass]=\"{ 'single-event': numberOfEvents === 1 || (adsTemplate && numberOfEvents === 0), 'no-events': numberOfEvents === 0 }\"\n >\n @for (day of days; track day.dayNumber) {\n <lib-agenda-day-card [day]=\"day\" [class.has-event]=\"!!day.startTime\" [class.hidden-day]=\"day.empty\"></lib-agenda-day-card>\n }\n </div>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { IonicModule } from '@ionic/angular';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { DirectiveModule } from '@naniteninja/ionic-lib';\n\nimport { AvatarComponent } from '@naniteninja/ionic-lib';\nimport { AgendaDayCardComponent } from './agenda-day-card/agenda-day-card.component';\nimport { AgendaComponent } from './agenda.component';\n\n@NgModule({\n declarations: [AgendaComponent, AgendaDayCardComponent],\n exports: [AgendaComponent],\n imports: [CommonModule, IonicModule, TranslateModule, DirectiveModule, AvatarComponent],\n})\nexport class LibAgendaModule {}\n","export enum EventTypes {\n DATE = 'Date',\n GOOGLE = 'Google',\n MICROSOFT = 'Microsoft',\n SYSTEM = 'System', // system created events\n USER = 'User', // user created events\n ITINERARY = 'Itinerary', // Itinerary created events (from chat schedualer)\n}\n","export enum RecurringTypes {\n DAILY = 'DAILY',\n WEEKLY = 'WEEKLY',\n MONTHLY = 'MONTHLY',\n ANNUALLY = 'ANNUALLY',\n}\n","import { RRule } from 'rrule';\nimport { RecurringTypes } from '../enums/recurring.type.enum';\nimport { IRecurringEvent } from '../interfaces/recurring.event.interface';\n\nexport const recurringOptions: IRecurringEvent[] = [\n { title: 'CALENDAR.DOES_NOT_REPEAT', type: null, name: 'Does not repeat' },\n {\n title: 'CALENDAR.DAILY',\n name: 'Daily',\n type: RecurringTypes.DAILY,\n rrule: { freq: RRule.DAILY },\n },\n {\n title: 'CALENDAR.WEEKLY',\n name: 'Weekly',\n type: RecurringTypes.WEEKLY,\n rrule: { freq: RRule.WEEKLY },\n },\n {\n title: 'CALENDAR.MONTHLY',\n name: 'Monthly',\n type: RecurringTypes.MONTHLY,\n rrule: { freq: RRule.MONTHLY },\n },\n {\n title: 'CALENDAR.ANNUALLY',\n name: 'Annually',\n type: RecurringTypes.ANNUALLY,\n rrule: { freq: RRule.YEARLY },\n },\n];\n","import { formatDate } from '@angular/common';\nimport { Inject, Injectable, LOCALE_ID } from '@angular/core';\nimport { addDays, addMinutes, differenceInMinutes, getDay, getHours, getMinutes, isBefore, isEqual, isSameWeek, set, startOfDay } from 'date-fns';\nimport { RRule } from 'rrule';\nimport { Frequency } from 'rrule/dist/esm/types';\nimport { Weekday } from 'rrule/dist/esm/weekday';\nimport { EventTypes } from '../enums/event-type.enum';\nimport { ICalendarAccount } from '../interfaces/calendar.account.interface';\nimport { IEvent } from '../interfaces/event.interface';\nimport { IEventTime } from '../interfaces/event.time.interface';\nimport { IRecurringEventException } from '../interfaces/recurring.exception.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CalendarUtilsService {\n constructor(@Inject(LOCALE_ID) private locale: string) {}\n\n public filterCalendarsEvents<T>(selectedCalendars: ICalendarAccount[], calendarEvents: T[]): T[] {\n if (selectedCalendars?.length > 0) {\n return calendarEvents.filter((event) => selectedCalendars.find((calendar) => calendar.email === event['meta'].email || this.validCalendarEvent(event['meta'])) != null);\n } else {\n return calendarEvents.filter((event) => this.validCalendarEvent(event['meta']));\n }\n }\n\n public validCalendarEvent(event: IEvent): boolean {\n return [EventTypes.SYSTEM, EventTypes.DATE, EventTypes.USER].indexOf(event.type) !== -1;\n }\n\n public formatEventTime(start: Date, end: Date): { startTime: string; endTime: string } {\n const startHours = getHours(start);\n const endHours = getHours(end);\n const startTimeFormat = (startHours > 12 && endHours > 12) || (startHours < 12 && endHours < 12) ? 'h:mm' : 'h:mm aa';\n const startTime = formatDate(start, startTimeFormat, this.locale).replace(':00', '');\n const endTime = formatDate(end, 'h:mm aa', this.locale).replace(':00', '');\n return { startTime, endTime };\n }\n\n public isProviderEvent(event: Partial<IEvent>): boolean {\n return [EventTypes.GOOGLE, EventTypes.MICROSOFT].indexOf(event.type) !== -1;\n }\n\n public isRecurringEvent(event: Partial<IEvent>): boolean {\n // Excluding providers events because they are not generated within the app and come from external source like Google or Microsoft.\n return event.recurring && event.type && !this.isProviderEvent(event);\n }\n\n public isEqualDates(startDate: string | Date, enDate: string | Date): boolean {\n return !startDate || !enDate ? false : isEqual(startOfDay(new Date(startDate)), startOfDay(new Date(enDate)));\n }\n\n public isBeforeDate(startDate: string | Date, enDate: string | Date): boolean {\n return isBefore(startOfDay(new Date(startDate)), startOfDay(new Date(enDate)));\n }\n\n public isSameWeek(startDate: string | Date, enDate: string | Date): boolean {\n return !startDate || !enDate ? false : isSameWeek(startOfDay(new Date(startDate)), startOfDay(new Date(enDate)));\n }\n\n public getUpdatedRecurringException(event: Partial<IEvent>): IRecurringEventException {\n const validUpdatedRecurringException = this.isRecurringEvent(event) && event.recurringPattern.updatedEvent;\n if (validUpdatedRecurringException && !this.isBeforeDate(event.recurringStartDate, event.recurringPattern.updatedEvent.startDate)) {\n return event.recurringPattern.updatedEvent;\n }\n return null;\n }\n\n public getExceptionEvent(event: Partial<IEvent>, exceptions: IRecurringEventException[]): IRecurringEventException {\n return this.isRecurringEvent(event)\n ? exceptions?.find(\n (exception) =>\n this.isEqualDates(event.recurringStartDate, exception.startDate) &&\n this.isEqualDates(event.recurringEndDate, exception.endDate) &&\n event.recurringInstanceNo === exception.recurringInstanceNo,\n )\n : null;\n }\n\n public isValidRecurringDate(event: IEvent, recurringDate: Date): boolean {\n return !event.recurringPattern.recurringEndDate || this.isBeforeDate(recurringDate, event.recurringPattern.recurringEndDate);\n }\n\n public getDeletedRecurringEvent(event: IEvent, recurringDate: Date): IRecurringEventException {\n return event.recurringPattern?.deletions?.find((item) => this.isEqualDates(item.startDate, recurringDate));\n }\n\n public generateRecurringDates(dtstart: Date, until: Date, freq: Frequency, interval: number = 1): Date[] {\n return (\n new RRule({\n freq,\n dtstart,\n until,\n wkst: new Weekday(getDay(dtstart)),\n interval,\n }).all() || []\n );\n }\n\n public isValidRecurringException(event: IEvent, exceptionEvent: IRecurringEventException): boolean {\n return (\n this.isEqualDates(event.recurringStartDate, exceptionEvent.recurringStartDate) &&\n this.isEqualDates(event.recurringEndDate, exceptionEvent.recurringEndDate) &&\n event.recurringInstanceNo === exceptionEvent.recurringInstanceNo\n );\n }\n\n public sortEvents<T>(calendarEvents: T[]): void {\n calendarEvents.sort((a, b) => differenceInMinutes(b['end'], b['start']) - differenceInMinutes(a['end'], a['start']));\n let zIndex = 1;\n calendarEvents.forEach((event, index) => {\n event['meta'].zIndex = zIndex;\n event['cssClass'] += ` cyrano-event-index-${event['meta'].zIndex}`;\n zIndex++;\n for (let i = index - 1; i >= 0; i--) {\n const calendarEvent = calendarEvents[i];\n if (event['start'] < calendarEvent['end']) {\n event['meta'].zIndex = Math.max(event['meta'].zIndex, calendarEvent['meta'].zIndex + 1);\n event['cssClass'] += ` cyrano-event-index-${event['meta'].zIndex}`;\n } else {\n break;\n }\n }\n });\n }\n\n public applyEventsIndex(): void {\n const eventElements = document.querySelectorAll('.cyrano-event');\n // Calculate and apply z-index\n eventElements.forEach((element: HTMLElement, index) => {\n let zIndex = 0;\n element.classList.forEach((eventClass) => {\n if (eventClass.includes('cyrano-event-index-')) {\n const eventClassSplit = eventClass.split('-');\n zIndex = Number(eventClassSplit[3]);\n }\n });\n element.style.zIndex = `${zIndex} !important`;\n });\n }\n\n public setEventTime(event: Partial<IEvent>): { start: Date; end: Date } {\n let start = new Date(event.recurringStartDate || event.startDate);\n let end = new Date(event.recurringEndDate || event.endDate);\n if (!event.allDay) {\n start = set(start, { hours: getHours(new Date(event.startTime)), minutes: getMinutes(new Date(event.startTime)) });\n end = set(end, { hours: getHours(new Date(event.endTime)), minutes: getMinutes(new Date(event.endTime)) });\n }\n const eventMinutes = differenceInMinutes(end, start);\n // --- for events that start PM and end AM next day----------\n end = eventMinutes < 0 ? addDays(end, 1) : end;\n if (event.recurring) {\n event.recurringStartDate = start;\n event.recurringEndDate = end;\n } else {\n event.startDate = start;\n event.endDate = end;\n }\n return { start, end };\n }\n\n // temp fix to remove html tags from event note until we change the note text area field to a rich textarea\n public removeHtmlTags(html: string): string {\n const regex = /(<([^>]+)>)/gi;\n const cleanString = html.replace(regex, '');\n return cleanString ? cleanString.trim() : '';\n }\n\n public prepareEventDates(eventData: IEvent): void {\n if (eventData.allDay) {\n eventData.startDate = startOfDay(new Date(eventData.startDate));\n eventData.startTime = eventData.startDate;\n eventData.endTime = eventData.endDate;\n } else {\n eventData.endDate = eventData.startDate;\n }\n }\n\n public getEventTimes(eventData: Partial<IEvent>, recurringException?: IRecurringEventException, newEvent?: boolean): IEventTime {\n let startTime = new Date(recurringException?.startTime || eventData.startTime);\n let endTime: Date;\n if (!eventData._id && newEvent) {\n const startTimeMinutes = getMinutes(startTime);\n startTime = set(startTime, { minutes: startTimeMinutes < 30 ? 0 : 30 });\n endTime = addMinutes(startTime, 60);\n } else {\n endTime = new Date(recurringException?.endTime || eventData.endTime);\n const startDate = new Date(recurringException?.startDate || eventData.recurringStartDate || eventData.startDate);\n const endDate = new Date(recurringException?.endDate || eventData.recurringEndDate || eventData.endDate);\n if (startDate && !eventData.allDay) {\n if (!isEqual(startOfDay(startDate), startOfDay(startTime))) {\n startTime = set(startDate, { hours: startTime.getHours(), minutes: startTime.getMinutes() });\n }\n if (!isEqual(startOfDay(endDate), startOfDay(endTime))) {\n endTime = set(endDate, { hours: endTime.getHours(), minutes: endTime.getMinutes() });\n }\n }\n }\n return { startTime, endTime };\n }\n\n public buildUpdatedEvent(event: IEvent, formValue: IEvent): IEvent {\n const updatedEvent: IEvent = formValue;\n this.prepareEventDates(updatedEvent);\n updatedEvent.location = updatedEvent.location || { address: formValue.address, coordinates: [] };\n updatedEvent.startTime = updatedEvent.startTime['slotValue'] ? updatedEvent.startTime['slotValue'] : updatedEvent.startTime;\n updatedEvent.endTime = updatedEvent.endTime['slotValue'] ? updatedEvent.endTime['slotValue'] : updatedEvent.endTime;\n const eventTimes = this.getEventTimes(updatedEvent);\n updatedEvent.startTime = eventTimes.startTime;\n updatedEvent.endTime = eventTimes.endTime;\n updatedEvent.timeZone = event?.timeZone;\n updatedEvent.recurring = !!updatedEvent.recurringPattern?.type;\n\n const startHours = getHours(eventTimes.startTime);\n updatedEvent.recurringInstanceNo = event.recurringInstanceNo;\n const endHours = getHours(eventTimes.endTime);\n if (startHours > endHours) {\n updatedEvent.endTime = set(addDays(eventTimes.startTime, 1), { hours: endHours, minutes: getMinutes(eventTimes.endTime) });\n updatedEvent.endDate = updatedEvent.endTime;\n }\n\n updatedEvent.startDate = set(updatedEvent.startDate, { hours: updatedEvent.startTime?.getHours(), minutes: updatedEvent.startTime?.getMinutes() });\n updatedEvent.endDate = set(updatedEvent.endDate, { hours: updatedEvent.endTime?.getHours(), minutes: updatedEvent.endTime?.getMinutes() });\n if (!updatedEvent.recurringPattern || !updatedEvent.recurringPattern.type) {\n delete updatedEvent.recurringPattern;\n }\n\n updatedEvent.timeZone = updatedEvent.type === EventTypes.MICROSOFT ? Intl.DateTimeFormat().resolvedOptions().timeZone : updatedEvent.timeZone;\n\n return updatedEvent;\n }\n}\n","import { Injectable, Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Pipe({\n name: 'fallbackTranslate',\n standalone: true,\n})\n@Injectable({\n providedIn: 'root',\n})\nexport class FallbackTranslatePipe implements PipeTransform {\n constructor(private translate: TranslateService) {}\n\n transform(key: string, fallback: string): string {\n const translated = this.translate.instant(key);\n return translated === key ? fallback : translated;\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { FallbackTranslatePipe } from '../../../../pipes/fallback-translate/fallback-translate.pipe';\n\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ICalendarAccount } from '../../interfaces/calendar.account.interface';\nimport { IEvent } from '../../interfaces/event.interface';\nimport { IRecurringEventException } from '../../interfaces/recurring.exception.interface';\nimport { CalendarUtilsService } from '../../services/calendar-utils.service';\n\n@Component({\n selector: 'lib-event-info',\n templateUrl: './event-info.component.html',\n styleUrls: ['./event-info.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, MatIconModule, FallbackTranslatePipe, TranslateModule],\n})\nexport class LibEventInfoComponent implements OnInit {\n @Input() event: IEvent;\n @Input() calendars: ICalendarAccount[];\n\n public calendarAccount: ICalendarAccount;\n public recurringException: IRecurringEventException;\n public updatedRecurringException: IRecurringEventException;\n public address: string;\n public title: string;\n public note: string;\n\n constructor(\n private fallbackTranslatePipe: FallbackTranslatePipe,\n private calendarUtilService: CalendarUtilsService,\n ) {}\n\n ngOnInit(): void {\n this.initEventInfo();\n }\n\n private initEventInfo(): void {\n this.calendarUtilService.setEventTime(this.event);\n this.recurringException = this.calendarUtilService.getExceptionEvent(this.event, this.event.recurringPattern?.exceptions);\n this.updatedRecurringException = this.calendarUtilService.getUpdatedRecurringException(this.event);\n this.address = this.recurringException?.location?.address || this.updatedRecurringException?.location?.address || this.event.location?.address;\n this.calendarAccount = this.calendars?.find((value) => value._id && this.event.accountId && value._id === this.event.accountId);\n this.title = this.recurringException?.title || this.event.title || this.fallbackTranslatePipe.transform('CALENDAR.NO_TITLE', '(No title)');\n this.note = this.recurringException?.note || this.updatedRecurringException?.note || this.event.note;\n }\n}\n","<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","export enum FormFieldType {\r\n date = 'date',\r\n text = 'text',\r\n textarea = 'textarea',\r\n typeahead = 'typeahead',\r\n multiselect = 'multiselect',\r\n select = 'select',\r\n checkbox = 'checkbox',\r\n toggle = 'toggle',\r\n radio = 'radio',\r\n textlist = 'textlist',\r\n number = 'number',\r\n message = 'message',\r\n time = 'time',\r\n multifield = 'multifield',\r\n action = 'action',\r\n currency = 'currency',\r\n banner = 'banner',\r\n percentage = 'percentage',\r\n multiselectdropdown = 'multiselectdropdown',\r\n hyperlink = 'hyperlink',\r\n injectable = 'injectable',\r\n datetime = 'datetime',\r\n rating = 'rating',\r\n incrementer = 'incrementer',\r\n range = 'range',\r\n password = 'password',\r\n}\r\n","export enum EditRecurringEventOptions {\n CURRENT = 'CURRENT',\n FOLLOWING = 'FOLLOWING',\n ALL = 'ALL',\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FormFieldModule, InputFieldModule, SelectOption } from '@naniteninja/ionic-lib';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { FormFieldType } from '../../../../enums/form-field-type';\nimport { FallbackTranslatePipe } from '../../../../pipes/fallback-translate/fallback-translate.pipe';\nimport { EditRecurringEventOptions } from '../../enums/recurring.edit.options.enum';\n\n@Component({\n selector: 'lib-edit-recurring-event',\n templateUrl: './edit-recurring-event.component.html',\n styleUrls: ['./edit-recurring-event.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, FallbackTranslatePipe, TranslateModule, InputFieldModule, FormsModule, ReactiveFormsModule, FormFieldModule],\n})\nexport class LibEditRecurringEventComponent implements OnInit {\n @Input() excludeCurrentInstance: boolean;\n @Input() editOptionsCtrl: FormControl<EditRecurringEventOptions> = new FormControl(EditRecurringEventOptions.CURRENT);\n\n public options: SelectOption<EditRecurringEventOptions>[];\n public radioFieldType = FormFieldType.radio;\n\n constructor(private fallbackTranslatePipe: FallbackTranslatePipe) {}\n\n ngOnInit(): void {\n this.initRecurringOptions();\n }\n\n private initRecurringOptions(): void {\n const options = [\n { label: this.fallbackTranslatePipe.transform('CALENDAR.EDIT_RECURRING_THIS_AND_FOLLOWING_EVENT', 'This and following events'), value: EditRecurringEventOptions.FOLLOWING },\n { label: this.fallbackTranslatePipe.transform('CALENDAR.EDIT_RECURRING_ALL_EVENTS', 'All events'), value: EditRecurringEventOptions.ALL },\n ];\n this.options = this.excludeCurrentInstance ? options : [{ label: 'CALENDAR.EDIT_RECURRING_THIS_EVENT', value: EditRecurringEventOptions.CURRENT }, ...options];\n this.editOptionsCtrl.setValue(this.excludeCurrentInstance ? EditRecurringEventOptions.FOLLOWING : EditRecurringEventOptions.CURRENT);\n }\n}\n","@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","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { BaseComponent, DateRangeValidator, LocationModel, TimeRangeValidator } from '@naniteninja/ionic-lib';\nimport { addMinutes, differenceInMinutes, startOfDay } from 'date-fns';\nimport { takeUntil } from 'rxjs';\nimport { FallbackTranslatePipe } from '../../../../pipes/fallback-translate/fallback-translate.pipe';\nimport { EventTypes } from '../../enums/event-type.enum';\nimport { EditRecurringEventOptions } from '../../enums/recurring.edit.options.enum';\nimport { ICalendarAccount } from '../../interfaces/calendar.account.interface';\nimport { IEventForm } from '../../interfaces/event.form.interface';\nimport { IEventFormOutput } from '../../interfaces/event.form.output.interface';\nimport { IEvent } from '../../interfaces/event.interface';\nimport { IRecurringEvent } from '../../interfaces/recurring.event.interface';\nimport { IRecurringEventException } from '../../interfaces/recurring.exception.interface';\nimport { recurringOptions } from '../../lookups/recurring.options.lookup';\nimport { CalendarUtilsService } from '../../services/calendar-utils.service';\n\n@Component({\n selector: 'lib-event-form',\n templateUrl: './event-form.component.html',\n styleUrl: './event-form.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class LibEventFormComponent extends BaseComponent {\n @Input() calendars: ICalendarAccount[];\n @Input() get event(): IEvent {\n return this._event;\n }\n set event(e: IEvent) {\n this.onEventChange(e);\n }\n @Input() get draggedEvent(): IEvent {\n return this._draggedEvent;\n }\n set draggedEvent(e: IEvent) {\n this.onDragEvent(e);\n }\n\n @Output() updateRecurringEvent: EventEmitter<IEventFormOutput> = new EventEmitter<IEventFormOutput>();\n @Output() updateDraggedEvent: EventEmitter<IEventFormOutput> = new EventEmitter<IEventFormOutput>();\n @Output() delete: EventEmitter<IEventFormOutput> = new EventEmitter<IEventFormOutput>();\n @Output() closeForm: EventEmitter<void> = new EventEmitter<void>();\n @Output() submitForm: EventEmitter<IEventFormOutput> = new EventEmitter<IEventFormOutput>();\n\n public editMode: boolean;\n public editOptionsCtrl: FormControl<EditRecurringEventOptions> = new FormControl();\n public modalTitle: string;\n public recurringTypeChanged: boolean;\n public cancelButtonTitle: string;\n public submitButtonTitle: string;\n public secondaryButtonTitle: string;\n public openModal: boolean;\n public showConfirm: boolean;\n public openRecurringOptions: boolean;\n public recurringOptions: IRecurringEvent[];\n public eventStart: Date;\n public form: FormGroup<IEventForm>;\n public recurringException: IRecurringEventException;\n private initialFormValue: IEvent;\n private eventTime: number;\n private _event: IEvent;\n private _draggedEvent: IEvent;\n private deleteConfirmed: boolean;\n private updatedEvent: IEvent;\n\n constructor(\n private cdr: ChangeDetectorRef,\n public fb: FormBuilder,\n private calendarUtilService: CalendarUtilsService,\n private fallbackTranslatePipe: FallbackTranslatePipe,\n ) {\n super();\n }\n\n public onDeleteConfirm(): void {\n this.showConfirm = false;\n this.delete.emit({ selectedRecurringOption: this.editOptionsCtrl.value });\n }\n\n public onSubmitModal(): void {\n if (this.deleteConfirmed) {\n this.onDeleteConfirm();\n return;\n }\n if (this.draggedEvent) {\n this.updateDraggedEvent.emit({\n selectedRecurringOption: this.editOptionsCtrl.value,\n });\n return;\n }\n this.editMode ? this.updateEvent() : this.saveEvent();\n }\n\n public onModalSecondaryButtonClick(): void {\n this.openRecurringOptions = this.editOptionsCtrl?.value ? false : this.event.recurring || !!this.event.recurringEventId;\n this.showConfirm = !this.openRecurringOptions;\n if (this.openRecurringOptions) {\n this.cancelButtonTitle = this.fallbackTranslatePipe.transform('BUTTONS.CANCEL', 'Cancel');\n this.submitButtonTitle = this.fallbackTranslatePipe.transform('BUTTONS.DELETE', 'Delete');\n this.deleteConfirmed = true;\n this.secondaryButtonTitle = null;\n }\n this.cdr.detectChanges();\n }\n\n public saveEvent(): void {\n if (this.allowSubmission()) {\n const updatedEvent: IEvent = this.calendarUtilService.buildUpdatedEvent(this.event, this.form.getRawValue());\n if ((updatedEvent.recurring && this.event.recurring) || this.event?.recurringEventId) {\n updatedEvent.recurringStartDate = this.event.recurringStartDate;\n updatedEvent.recurringEndDate = this.event.recurringEndDate;\n this.updatedEvent = updatedEvent;\n this.recurringTypeChanged =\n this.updatedEvent.recurringPattern?.type !== this.event.recurringPattern?.type || (this.updatedEvent.recurringPattern && !this.event.recurringPattern);\n this.openRecurringOptions = true;\n this.modalTitle = this.fallbackTranslatePipe.transform('CALENDAR.EDIT_RECURRING_EVENT', 'Edit recurring event');\n this.secondaryButtonTitle = null;\n } else {\n this.submitFormEvent(updatedEvent, this.form.getRawValue());\n }\n }\n }\n\n public onLocationChange(event: LocationModel): void {\n this.form.controls.location.setValue({ coordinates: event.coordinates, address: event.address });\n this.form.controls.address.setValue(event.address);\n this.form.controls.address.setErrors(event.address && event.coordinates ? null : { invalidField: true });\n }\n\n public resetModal(): void {\n this.recurringTypeChanged = false;\n this.editOptionsCtrl.setValue(null);\n this.openRecurringOptions = false;\n this.openModal = false;\n this.closeForm.emit();\n }\n\n private initializeEventForm(): void {\n this.modalTitle = this.editMode ? this.event.title : this.fallbackTranslatePipe.transform('CALENDAR.NEW_EVENT', 'New event');\n this.secondaryButtonTitle = this.editMode ? this.fallbackTranslatePipe.transform('BUTTONS.DELETE', 'Delete') : null;\n this.cancelButtonTitle = this.editMode ? null : this.fallbackTranslatePipe.transform('BUTTONS.CANCEL', 'Cancel');\n this.submitButtonTitle = this.editMode ? this.fallbackTranslatePipe.transform('BUTTONS.EDIT', 'Edit') : this.fallbackTranslatePipe.transform('BUTTONS.SAVE', 'Save');\n if (!this.editMode) {\n this.buildForm();\n }\n this.openModal = true;\n }\n\n private buildForm(): void {\n this.recurringOptions = recurringOptions.map((option) => {\n return { ...option, title: this.fallbackTranslatePipe.transform(option.title, option.name) };\n });\n this.recurringException =\n this.calendarUtilService.getExceptionEvent(this.event, this.event.recurringPattern?.exceptions) || this.calendarUtilService.getUpdatedRecurringException(this.event);\n const startDate = new Date(this.recurringException?.startDate || this.event.recurringStartDate || this.event.startDate);\n this.eventStart = startOfDay(startDate);\n this.calendarUtilService.setEventTime(this.event);\n const eventTimes = this.calendarUtilService.getEventTimes(this.event, this.recurringException, true);\n const eventNote = this.recurringException?.note || this.event.note ? this.calendarUtilService.removeHtmlTags(this.recurringException?.note || this.event.note) : '';\n this.form = this.fb.nonNullable.group(\n {\n _id: [this.event._id, []],\n accountId: [this.event.accountId, []],\n type: [this.event.type || EventTypes.USER, []],\n email: [this.event.email, []],\n title: [this.recurringException?.title || this.event.title, this.calendarUtilService.isProviderEvent(this.event) ? [] : [Validators.required]],\n allDay: new FormControl<boolean>(this.recurringException?.allDay || this.event.allDay || false, []),\n startDate: new FormControl<Date>(startDate, [Validators.required]),\n startTime: new FormControl<Date>(eventTimes.startTime, [Validators.required]),\n endDate: new FormControl<Date>(new Date(!this.event._id ? startDate : this.event.recurringEndDate || this.event.endDate), [Validators.required]),\n endTime: new FormControl<Date>(eventTimes.endTime, [Validators.required]),\n note: [eventNote, []],\n location: [this.recurringException?.location || this.event.location, []],\n address: [this.recurringException?.location?.address || this.event.location?.address, this.event?.type ? [] : [Validators.required]],\n recurringPattern: this.fb.nonNullable.group({\n type: [!this.event._id ? recurringOptions[0].type : this.event.recurringPattern?.type, []],\n }),\n },\n {\n validators: [DateRangeValidator('startDate', 'endDate'), TimeRangeValidator('startTime', 'endTime')],\n },\n );\n this.eventTime = differenceInMinutes(eventTimes.endTime, eventTimes.startTime);\n this.handleAllDayEvents(this.event.allDay);\n this.watchFormFields();\n this.initialFormValue = this.form.getRawValue();\n }\n\n private watchFormFields(): void {\n this.form.controls.allDay.valueChanges.pipe(takeUntil(this.componentDestroyed$)).subscribe((value) => this.handleAllDayEvents(value, true));\n this.form.controls.address.valueChanges.pipe(takeUntil(this.componentDestroyed$)).subscribe((value) => {\n if (value && !this.form.value.location) {\n this.form.controls.address.setErrors({ invalidField: true });\n }\n if (!value) {\n this.form.controls.location.setValue(null);\n }\n });\n\n // ------- watch start date recurring -------------\n this.form.controls.startDate.valueChanges.pipe(takeUntil(this.componentDestroyed$)).subscribe((value) => {\n if (value && !this.form.controls.allDay.value) {\n this.form.controls.endDate.setValue(new Date(value));\n }\n });\n this.form.controls.startTime.valueChanges.pipe(takeUntil(this.componentDestroyed$)).subscribe((value) => {\n if (value) {\n this.form.controls.endTime.setValue(addMinutes(value['slotValue'] || new Date(value), this.eventTime));\n }\n });\n }\n\n private handleAllDayEvents(allDay: boolean, onChange?: boolean): void {\n ['endDate', 'endTime', 'startTime'].forEach((controlName) => {\n this.form.controls[controlName].setValidators(allDay ? [] : [Validators.required]);\n this.form.controls[controlName].updateValueAndValidity();\n });\n if (onChange) {\n if (allDay) {\n const startDate = this.form.controls.startDate.value;\n this.form.controls.endDate.setValue(startDate ? startOfDay(new Date(startDate)) : null);\n } else {\n const startTime = this.form.controls.startTime.value;\n const time = startTime && startTime['slotValue'] ? startOfDay(new Date(startTime['slotValue'])) : null;\n this.form.controls.startTime.setValue(time);\n this.form.controls.endTime.setValue(time);\n }\n }\n }\n\n private updateEvent(): void {\n if (this.editOptionsCtrl.value || this.form) {\n this.saveEvent();\n } else {\n this.buildForm();\n this.modalTitle = this.fallbackTranslatePipe.transform('CALENDAR.UPDATE_EVENT', 'Update Event');\n this.submitButtonTitle = this.fallbackTranslatePipe.transform('BUTTONS.SAVE', 'Save');\n this.cancelButtonTitle = this.fallbackTranslatePipe.transform('BUTTONS.CANCEL', 'Cancel');\n this.secondaryButtonTitle = null;\n }\n }\n\n private allowSubmission(): boolean {\n if (this.form.invalid) {\n this.form.markAllAsTouched();\n return false;\n }\n if (this.form.value.address && !this.form.value.location) {\n this.form.controls['address'].setErrors({ invalidField: true });\n return false;\n }\n if (this.openRecurringOptions) {\n this.updateRecurringEvent.emit({\n event: this.updatedEvent,\n selectedRecurringOption: this.editOptionsCtrl.value,\n recurringTypeChanged: this.recurringTypeChanged,\n });\n return false;\n }\n return true;\n }\n\n private submitFormEvent(event: IEvent, formValue: IEvent): void {\n this.submitForm.emit({\n event,\n initialFormValue: this.initialFormValue,\n formValue,\n selectedRecurringOption: this.editOptionsCtrl.value,\n });\n }\n\n private onEventChange(event: IEvent): void {\n this.editMode = !!event?._id;\n this._event = event;\n this.editOptionsCtrl.setValue(null);\n if (!event) {\n this.openModal = false;\n this.form = null;\n } else {\n this.initializeEventForm();\n }\n this.cdr.detectChanges;\n }\n\n private onDragEvent(event: IEvent): void {\n this.editMode = !!event?._id;\n this.openModal = !this._draggedEvent && event?.recurring;\n this.openRecurringOptions = this.openModal;\n this.modalTitle = this.openModal ? this.fallbackTranslatePipe.transform('CALENDAR.EDIT_RECURRING_EVENT', 'Edit recurring event') : null;\n this.cancelButtonTitle = this.openModal ? this.fallbackTranslatePipe.transform('BUTTONS.CANCEL', 'Cancel') : null;\n this.submitButtonTitle = this.openModal ? this.fallbackTranslatePipe.transform('BUTTONS.EDIT', 'Edit') : null;\n this.secondaryButtonTitle = null;\n this._draggedEvent = event;\n if (this._draggedEvent && !this.openModal) {\n this.submitFormEvent(this._draggedEvent, this.draggedEvent);\n }\n }\n}\n","<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","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { IonicModule } from '@ionic/angular';\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport {\n BaseComponent,\n DashedCheckboxModule,\n DirectiveModule,\n FormFieldModule,\n InputDateFieldModule,\n InputFieldModule,\n InputFieldSelectModule,\n InputTimeFieldModule,\n LibErrorMessageComponent,\n LibMapModule,\n LibModalModule,\n} from '@naniteninja/ionic-lib';\nimport { FallbackTranslatePipe } from '../../../../pipes/fallback-translate/fallback-translate.pipe';\nimport { CalendarUtilsService } from '../../services/calendar-utils.service';\nimport { LibEditRecurringEventComponent } from '../edit-recurring-event/edit-recurring-event.component';\nimport { LibEventInfoComponent } from '../event-info/event-info.component';\nimport { LibEventFormComponent } from './event-form.component';\n\n@NgModule({\n declarations: [LibEventFormComponent],\n exports: [LibEventFormComponent],\n imports: [\n CommonModule,\n IonicModule,\n TranslateModule,\n FormsModule,\n ReactiveFormsModule,\n DashedCheckboxModule,\n DirectiveModule,\n FormFieldModule,\n InputDateFieldModule,\n InputFieldModule,\n InputFieldSelectModule,\n InputTimeFieldModule,\n LibModalModule,\n LibErrorMessageComponent,\n FallbackTranslatePipe,\n LibEventInfoComponent,\n LibEditRecurringEventComponent,\n BaseComponent,\n ],\n providers: [CalendarUtilsService],\n})\nexport class LibEventFormModule {\n static forRoot(config: { googleMapsKey: string; googleMapsURL: string }): ModuleWithProviders<LibEventFormModule> {\n const libMapModule = LibMapModule.forRoot({\n googleMapsKey: config.googleMapsKey,\n googleMapsURL: config.googleMapsURL,\n });\n return {\n ngModule: LibEventFormModule,\n providers: [...(libMapModule.providers || [])],\n };\n }\n}\n","export enum CalendarAccountEnum {\n GOOGLE = 'Google',\n MICROSOFT = 'Microsoft',\n}\n","export enum CalendarAccountIconsEnum {\n Google = 'googleCalender',\n Microsoft = 'microsoft',\n}\n","export enum ScheduleDateStatus {\n Suggested = 'suggested',\n Canceled = 'canceled',\n Pending = 'pending',\n}\n","export const mockSchedule = [\n {\n day: 'Mon',\n start: new Date('2025-03-11T11:00:00.000Z'),\n end: new Date('2025-04-11T03:00:00.000Z'),\n hours: '16 hrs',\n suggestions: [\n {\n title: '',\n },\n ],\n },\n {\n day: 'Tue',\n start: new Date('2025-03-11T11:00:00.000Z'),\n end: new Date('2025-04-11T03:00:00.000Z'),\n hours: '16 hrs',\n suggestions: [\n {\n title: '',\n },\n ],\n },\n {\n day: 'Wed',\n start: new Date('2025-03-11T11:00:00.000Z'),\n end: new Date('2025-04-11T03:00:00.000Z'),\n hours: '16 hrs',\n suggestions: [\n {\n title: '',\n },\n ],\n },\n {\n day: 'Thu',\n start: new Date('2025-03-11T11:00:00.000Z'),\n end: new Date('2025-04-11T03:00:00.000Z'),\n hours: '16 hrs',\n suggestions: [\n {\n title: '',\n },\n ],\n },\n {\n day: 'Fri',\n start: new Date('2025-03-11T11:00:00.000Z'),\n end: new Date('2025-04-11T03:00:00.000Z'),\n hours: '16 hrs',\n suggestions: [\n {\n title: '',\n },\n ],\n },\n {\n day: 'Sat',\n start: new Date('2025-03-11T11:00:00.000Z'),\n end: new Date('2025-04-11T03:00:00.000Z'),\n hours: '16 hrs',\n suggestions: [\n {\n title: '',\n },\n ],\n },\n {\n day: 'Sun',\n start: new Date('2025-03-11T11:00:00.000Z'),\n end: new Date('2025-04-11T03:00:00.000Z'),\n hours: '16 hrs',\n suggestions: [\n {\n title: '',\n },\n ],\n },\n];\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Output, TemplateRef } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { addDays, endOfDay, set } from 'date-fns';\nimport { SkeletonModule } from 'primeng/skeleton';\nimport { Observable, Subject, takeUntil } from 'rxjs';\nimport { SectionSeparatorComponent } from '@naniteninja/ionic-lib';\nimport { ISchedulerAction } from './interfaces/scheduler.action.interface';\nimport { ISchedulerEventDay } from './interfaces/scheduler.event.day.interface';\nimport { ISchedulerEvent } from './interfaces/scheduler.event.interface';\nimport { mockSchedule } from './mock-schedule';\n\n@Component({\n selector: 'lib-scheduler',\n imports: [CommonModule, TranslateModule, SectionSeparatorComponent, SkeletonModule],\n templateUrl: './scheduler.component.html',\n styleUrls: ['./scheduler.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LibSchedulerComponent implements OnInit, OnDestroy {\n @Input() adsTemplate?: TemplateRef<HTMLElement>;\n @Input() loading$: Observable<boolean>;\n @Input() emptyMessage: string;\n @Input() displayBookedStatuses: boolean;\n @Input() displayEmptyDays: boolean = true;\n @Input() events$: Observable<ISchedulerEvent[]>;\n @Input() startDate: Date = new Date();\n @Input() endDate: Date = endOfDay(addDays(new Date(), 6));\n @Input() default: boolean = false;\n @Output() bookEvent: EventEmitter<ISchedulerAction> = new EventEmitter();\n @Output() removeSuggestion: EventEmitter<ISchedulerAction> = new EventEmitter();\n public eventsDays: ISchedulerEventDay[];\n public suggestedCount: number = 0;\n public bookedCount: number = 0;\n private componentDestroyed$: Subject<void> = new Subject();\n private events: ISchedulerEvent[] = [];\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n if (this.default) {\n this.events = [];\n this.buildEvents();\n return;\n }\n this.events$?.pipe(takeUntil(this.componentDestroyed$)).subscribe((events) => {\n this.events = events;\n this.buildEvents();\n });\n }\n\n ngOnDestroy(): void {\n this.componentDestroyed$.next();\n this.componentDestroyed$.complete();\n }\n\n public toggleExpand(dayIndex: number, eventIndex: number): void {\n if (!this.eventsDays[dayIndex].events[eventIndex].booked) {\n this.eventsDays[dayIndex].events[eventIndex].expanded = !this.eventsDays[dayIndex].events[eventIndex].expanded;\n }\n }\n\n public acceptSuggestion(dayIndex: number, eventIndex: number, suggestionIndex: number): void {\n const suggestion = this.eventsDays[dayIndex].events[eventIndex].suggestions[suggestionIndex];\n suggestion.checked = !suggestion.checked;\n suggestion.canceled = !suggestion.checked && suggestion.canceled;\n this.updateSuggestionsCounts();\n this.cdr.detectChanges();\n this.bookEvent.emit({\n event: this.eventsDays[dayIndex].events[eventIndex],\n suggestion,\n index: this.eventsDays[dayIndex].events[eventIndex].index,\n });\n }\n\n public cancelSuggestion(dayIndex: number, eventIndex: number, suggestionIndex: number): void {\n const suggestion = this.eventsDays[dayIndex].events[eventIndex].suggestions[suggestionIndex];\n suggestion.canceled = !suggestion.canceled;\n suggestion.checked = suggestion.checked && !suggestion.canceled;\n this.removeSuggestion.emit({\n event: this.eventsDays[dayIndex].events[eventIndex],\n suggestionIndex,\n index: this.eventsDays[dayIndex].events[eventIndex].index,\n });\n }\n\n // Update the count of suggested and booked items\n public updateSuggestionsCounts(): void {\n this.suggestedCount = 0;\n this.bookedCount = this.events.reduce((count, event) => {\n this.suggestedCount += event.suggestions?.length || 0;\n return count + event.suggestions.filter((s) => s.checked).length;\n }, 0);\n }\n\n private groupEventsByDay(): ISchedulerEventDay[] {\n if (this.events?.length > 0) {\n const grouped: { [key: string]: ISchedulerEvent[] } = {};\n this.events.forEach((event, index) => {\n if (!grouped[event.day]) {\n grouped[event.day] = [];\n }\n grouped[event.day].push({ ...event, index });\n });\n return Object.entries(grouped).map(([day, events]) => ({ day, events }));\n } else {\n const grouped: { [key: string]: ISchedulerEvent[] } = {};\n mockSchedule.forEach((event, index) => {\n if (!grouped[event.day]) {\n grouped[event.day] = [];\n }\n grouped[event.day].push({ ...event, index });\n });\n return Object.entries(grouped).map(([day, events]) => ({ day, events }));\n }\n }\n\n private buildEvents(): void {\n this.updateSuggestionsCounts();\n const eventsDays: ISchedulerEventDay[] = [];\n let current = new Date(this.startDate);\n const schedulerEvents = this.groupEventsByDay();\n while (current <= new Date(this.endDate)) {\n const day = current.toLocaleDateString('en', { weekday: 'short' });\n const eventDay = { day, events: schedulerEvents.find((event) => event.day === day)?.events || [] };\n if (eventDay.events.length > 0 || this.displayEmptyDays) {\n eventsDays.push(eventDay);\n }\n current = set(current, { date: current.getDate() + 1 });\n }\n this.eventsDays = eventsDays;\n this.cdr.detectChanges();\n }\n}\n","<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\" *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","import { IInnerPartialCircleProgressColors } from '../interfaces/inner-partial-circle-progress-colors.interface';\n\nexport const innerProgressDefaultColors: IInnerPartialCircleProgressColors = {\n primary: 'transparent',\n secondary: 'transparent',\n tertiary: 'transparent',\n};\n","import { IInnerPartialCircleProgressColors } from '../interfaces/inner-partial-circle-progress-colors.interface';\n\nexport const innerProgressPinkColors: IInnerPartialCircleProgressColors = {\n primary: '#ea6b85',\n secondary: '#ee4c76',\n tertiary: 'black',\n};\n","import { IInnerPartialCircleProgressColors } from '../interfaces/inner-partial-circle-progress-colors.interface';\n\nexport const innerProgressTealColors: IInnerPartialCircleProgressColors = {\n primary: 'rgb(111, 220, 193)',\n secondary: 'rgb(58, 232, 197)',\n tertiary: 'black',\n};\n","import { IPartialCircleProgressColors } from '../interfaces/partial-circle-progress-colors.interface';\n\nexport const progressDefaultColors: IPartialCircleProgressColors = {\n primary: '#FE3C72',\n secondary: '#E15561',\n tertiary: '#FE3C3C',\n gradientPrimary: '#f0788d',\n gradientSecondary: '#f84776',\n complete: '#ff858f',\n incomplete: '#E15561',\n};\n","export enum INNER_CIRCLE_STATE {\n Waiting = 'waiting',\n Quiet = 'quiet',\n Unresponsive = 'unresponsive',\n Redelegation = 'redelegation',\n}\n","export enum CircleVariable {\n Partial = 'partial',\n Complete = 'complete',\n}\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, Input } from '@angular/core';\nimport * as d3 from 'd3';\nimport { CommonOperations } from '../../operations/operations';\nimport { IInnerPartialCircleProgressColors } from '../client-home/interfaces/inner-partial-circle-progress-colors.interface';\nimport { innerProgressDefaultColors } from '../client-home/lookup/inner-progress-default-colors.config';\nimport { innerProgressPinkColors } from '../client-home/lookup/inner-progress-pink-colors.config';\nimport { innerProgressTealColors } from '../client-home/lookup/inner-progress-teal-colors.config';\nimport { progressDefaultColors } from '../client-home/lookup/progress-default-colors.config';\nimport { INNER_CIRCLE_STATE } from '../client-match-overview/enums/inner-circle-state.enum';\nimport { CircleVariable } from './enums/circle-variable.enum';\nimport { CircleProgressConfig } from './interfaces/circle-progress-config.interface';\n\n@Component({\n selector: 'lib-circle-progress',\n templateUrl: './circle-progress.component.html',\n styleUrls: ['./circle-progress.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class CircleProgressComponent implements AfterViewInit {\n @Input() variable: CircleVariable = CircleVariable.Partial;\n\n private _config: Partial<CircleProgressConfig> = {\n value: 10,\n max: 100,\n partialColors: progressDefaultColors,\n showExternalPartialCircleProgress: true,\n\n inner: {\n value: 100,\n max: 100,\n colors: innerProgressDefaultColors,\n state: INNER_CIRCLE_STATE.Quiet,\n showIllumination: false,\n },\n imageUrl: '',\n width: '62.6px',\n height: '63.18px',\n showValueProportionLabel: true,\n imgObjectPosition: 'top',\n hasNotification: false,\n prefix: '$',\n suffix: '',\n };\n\n @Input()\n set config(newConfig: Partial<CircleProgressConfig> | undefined) {\n if (newConfig) {\n this._config = { ...this._config, ...newConfig };\n }\n }\n\n get config(): Partial<CircleProgressConfig> {\n return this._config;\n }\n\n public innerProgressDefaultColors: IInnerPartialCircleProgressColors = innerProgressDefaultColors;\n public innerProgressPinkColors: IInnerPartialCircleProgressColors = innerProgressPinkColors;\n public innerProgressTealColors: IInnerPartialCircleProgressColors = innerProgressTealColors;\n public circleVariable = CircleVariable;\n\n public readonly INNER_CIRCLE_STATE = INNER_CIRCLE_STATE;\n public readonly pathId: string = CommonOperations.randomString(10);\n public readonly innerCirclePathId: string = CommonOperations.randomString(10);\n public readonly innerCircleBehindPathId: string = CommonOperations.randomString(10);\n\n constructor(private el: ElementRef) {}\n\n ngAfterViewInit(): void {\n if (this.variable === CircleVariable.Complete) {\n this.createCircle();\n }\n }\n\n private createCircle(): void {\n const element = this.el.nativeElement.querySelector('svg');\n\n const color = d3.interpolateRgb('#221E26', this.config.partialColors?.incomplete);\n\n const path = d3.select(element).select('path');\n\n d3.select(element)\n .selectAll('path')\n .data(this.createQuadrilateralSegments(this.generatePathSamplePoints(path.node(), 0.5)))\n .enter()\n .append('path')\n .style('fill', (d: number[][]) => color(d['t']))\n .style('stroke', (d: number[][]) => color(d['t']))\n .attr('d', (d: number[][]) => this.constructJoinedLinePath(d[0], d[1], d[2], d[3], 32));\n }\n\n private generatePathSamplePoints(path: SVGPathElement, precision: number): number[][] {\n const n: number = path.getTotalLength();\n const t: number[] = [0];\n let i = 0;\n while ((i += precision) < n) t.push(i);\n t.push(n);\n return t.map((r) => {\n const domPoint = path.getPointAtLength(r);\n const a: number[] = [domPoint.x, domPoint.y];\n a['t'] = r / n;\n return a;\n });\n }\n\n private createQuadrilateralSegments(points: number[][]): number[][][] {\n return (d3.range(points.length - 1) as number[]).map((i: number) => {\n const a: number[][] = [points[i - 1], points[i], points[i + 1], points[i + 2]];\n a['t'] = (points[i]['t'] + points[i + 1]['t']) / 2;\n return a;\n });\n }\n\n private constructJoinedLinePath(p0: number[], p1: number[], p2: number[], p3: number[], width: number): string {\n const u12 = this.calculatePerpendicularVector(p1, p2);\n const r = width / 6;\n let a: number[] = [p1[0] + u12[0] * r, p1[1] + u12[1] * r];\n let b: number[] = [p2[0] + u12[0] * r, p2[1] + u12[1] * r];\n let c: number[] = [p2[0] - u12[0] * r, p2[1] - u12[1] * r];\n let d: number[] = [p1[0] - u12[0] * r, p1[1] - u12[1] * r];\n\n if (p0) {\n const u01 = this.calculatePerpendicularVector(p0, p1);\n const e = [p1[0] + u01[0] + u12[0], p1[1] + u01[1] + u12[1]];\n a = this.computeLineIntersection(p1, e, a, b);\n d = this.computeLineIntersection(p1, e, d, c);\n }\n\n if (p3) {\n const u23 = this.calculatePerpendicularVector(p2, p3);\n const e = [p2[0] + u23[0] + u12[0], p2[1] + u23[1] + u12[1]];\n b = this.computeLineIntersection(p2, e, a, b);\n c = this.computeLineIntersection(p2, e, d, c);\n }\n\n return 'M' + a + 'L' + b + ' ' + c + ' ' + d + 'Z';\n }\n\n private computeLineIntersection(a: number[], b: number[], c: number[], d: number[]): number[] {\n const x1 = c[0];\n const x3 = a[0];\n const x21 = d[0] - x1;\n const x43 = b[0] - x3;\n const y1 = c[1];\n const y3 = a[1];\n const y21 = d[1] - y1;\n const y43 = b[1] - y3;\n const ua = (x43 * (y1 - y3) - y43 * (x1 - x3)) / (y43 * x21 - x43 * y21);\n return [x1 + ua * x21, y1 + ua * y21];\n }\n\n private calculatePerpendicularVector(p0: number[], p1: number[]): number[] {\n const u01x = p0[1] - p1[1];\n const u01y = p1[0] - p0[0];\n const u01d = Math.sqrt(u01x * u01x + u01y * u01y);\n return [u01x / u01d, u01y / u01d];\n }\n}\n","<img [ngStyle]=\"{ opacity: config.hasNotification ? 1 : 0 }\" src=\"assets/icons/notification-pop.svg\" class=\"notification-icon\" alt=\"menu btn notification icon\" />\n\n<div class=\"circle\" [ngClass]=\"{ 'circle-img': config.imageUrl, 'circle-text': !config.imageUrl }\">\n @if (!config.imageUrl) {\n <div class=\"text-container\">\n <span class=\"percent f-w-400 f-xl h-160\">{{ config.prefix + config.value + config.suffix }}</span>\n <span class=\"bottom-text f-w-400 f-xs h-100\">{{ type }}</span>\n </div>\n } @else {\n <img [src]=\"config.imageUrl\" [ngStyle]=\"{ 'object-position': config.imgObjectPosition }\" />\n }\n</div>\n\n@if (variable === circleVariable.Partial) {\n <div\n [ngClass]=\"{\n pulse: config.inner?.showIllumination,\n 'illuminated-external': showExternalPartialCircleProgress,\n 'illuminated-internal': !showExternalPartialCircleProgress,\n }\"\n ></div>\n <svg class=\"circle-progress__image\" width=\"100%\" height=\"100%\" viewBox=\"0 0 90 90\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n @if (config.showExternalPartialCircleProgress) {\n <ellipse mask=\"url(#cut-circle)\" cx=\"44.334\" cy=\"44.3024\" rx=\"33.9693\" ry=\"33.6363\" fill=\"url(#paint0_linear_239_3673)\" transform=\"translate(1 0.5)\" />\n <ellipse mask=\"url(#cut-circle)\" cx=\"44.334\" cy=\"44.3028\" rx=\"27.2427\" ry=\"26.9757\" fill=\"#27242C\" transform=\"translate(2 0)\" />\n <ellipse mask=\"url(#cut-circle)\" cx=\"44.334\" cy=\"44.3028\" rx=\"27.2427\" ry=\"26.9757\" fill=\"url(#pattern0_239_3673)\" />\n }\n <g transform=\"translate(0.25)\">\n <!-- response time indicators -->\n @if (config.showExternalPartialCircleProgress) {\n @if (config.inner?.state === INNER_CIRCLE_STATE.Waiting || config.inner?.state === INNER_CIRCLE_STATE.Unresponsive) {\n <circle\n r=\"45\"\n cx=\"45\"\n cy=\"45\"\n [attr.fill]=\"config.inner?.state === INNER_CIRCLE_STATE.Waiting ? 'url(#gradInnerPink)' : 'url(#gradInnerTeal)'\"\n [attr.mask]=\"'url(#' + innerCircleBehindPathId + ')'\"\n transform=\"scale(0.659 0.659) translate(+22 21.5) rotate(225, 45, 45)\"\n />\n }\n <circle r=\"45\" cx=\"45\" cy=\"45\" fill=\"url(#grad2)\" [attr.mask]=\"'url(#' + innerCirclePathId + ')'\" transform=\"scale(0.659 0.659) translate(+22 21.5) rotate(225, 45, 45)\" />\n } @else {\n @if (config.inner?.state === INNER_CIRCLE_STATE.Waiting || config.inner?.state === INNER_CIRCLE_STATE.Unresponsive) {\n <circle\n r=\"45\"\n cx=\"45\"\n cy=\"45\"\n [attr.fill]=\"config.inner?.state === INNER_CIRCLE_STATE.Waiting ? 'url(#gradInnerPink)' : 'url(#gradInnerTeal)'\"\n [attr.mask]=\"'url(#' + innerCircleBehindPathId + ')'\"\n transform=\"scale(+0.70 0.70) translate(+20.0 16.5) rotate(225, 45, 45)\"\n />\n }\n <circle r=\"45\" cx=\"45\" cy=\"45\" fill=\"url(#grad2)\" [attr.mask]=\"'url(#' + innerCirclePathId + ')'\" transform=\"scale(+0.70 0.70) translate(+20.0 16.5) rotate(225, 45, 45)\" />\n }\n <defs>\n <mask class=\"circle-progress__mask\" [attr.id]=\"innerCirclePathId\">\n <g>\n <path\n #progressPath\n d=\"M 45 0 A 45 45 0 1 1 44.9999 0\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-width=\"5\"\n [ngStyle]=\"{\n 'stroke-dasharray': progressPath.getTotalLength(),\n 'stroke-dashoffset': progressPath.getTotalLength() - (config.inner?.value * progressPath.getTotalLength()) / config.inner?.max,\n }\"\n />\n </g>\n </mask>\n <mask class=\"circle-progress__mask\" [attr.id]=\"innerCircleBehindPathId\">\n <g>\n <path d=\"M 45 0 A 45 45 0 1 1 44.9999 0\" stroke=\"white\" stroke-linecap=\"round\" stroke-width=\"5\" />\n </g>\n </mask>\n <radialGradient id=\"grad2\">\n <stop offset=\"0%\" [attr.stop-color]=\"config.inner?.colors?.tertiary\" />\n <stop offset=\"80%\" [attr.stop-color]=\"config.inner?.colors?.tertiary\" />\n <stop offset=\"91%\" [attr.stop-color]=\"config.inner?.colors?.primary\" />\n <stop offset=\"95%\" [attr.stop-color]=\"config.inner?.colors?.secondary\" />\n <stop offset=\"100%\" [attr.stop-color]=\"config.inner?.colors?.tertiary\" />\n </radialGradient>\n\n <radialGradient id=\"gradInnerPink\">\n <stop offset=\"0%\" [attr.stop-color]=\"innerProgressPinkColors?.tertiary\" />\n <stop offset=\"80%\" [attr.stop-color]=\"innerProgressPinkColors?.tertiary\" />\n <stop offset=\"91%\" [attr.stop-color]=\"innerProgressPinkColors?.primary\" />\n <stop offset=\"95%\" [attr.stop-color]=\"innerProgressPinkColors?.secondary\" />\n <stop offset=\"100%\" [attr.stop-color]=\"innerProgressPinkColors?.tertiary\" />\n </radialGradient>\n\n <radialGradient id=\"gradInnerTeal\">\n <stop offset=\"0%\" [attr.stop-color]=\"innerProgressTealColors?.tertiary\" />\n <stop offset=\"80%\" [attr.stop-color]=\"innerProgressTealColors?.tertiary\" />\n <stop offset=\"91%\" [attr.stop-color]=\"innerProgressTealColors?.primary\" />\n <stop offset=\"95%\" [attr.stop-color]=\"innerProgressTealColors?.secondary\" />\n <stop offset=\"100%\" [attr.stop-color]=\"innerProgressTealColors?.tertiary\" />\n </radialGradient>\n </defs>\n </g>\n @if (config.showValueProportionLabel) {\n <text\n x=\"25\"\n y=\"70\"\n text-anchor=\"middle\"\n dominant-baseline=\"middle\"\n font-size=\"12\"\n fill=\"white\"\n stroke=\"black\"\n stroke-width=\"3\"\n stroke-linejoin=\"round\"\n stroke-linecap=\"round\"\n paint-order=\"stroke fill\"\n >\n {{ (24 * config.inner.value) / config.inner.max | number: '1.0-0' }}\n </text>\n }\n <defs>\n <mask id=\"cut-circle\">\n <rect x=\"0\" y=\"0\" width=\"90\" height=\"90\" fill=\"white\" />\n <circle r=\"27.5\" cx=\"43.5\" cy=\"43.5\" fill=\"black\"></circle>\n </mask>\n <pattern id=\"pattern0_239_3673\" patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\">\n <use xlink:href=\"#image0_239_3673\" transform=\"scale(1)\" />\n </pattern>\n <filter id=\"filter0_f_239_3673\" x=\"0.510602\" y=\"0.145909\" width=\"87.6468\" height=\"74.376\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\" />\n <feGaussianBlur stdDeviation=\"4.92705\" result=\"effect1_foregroundBlur_239_3673\" />\n </filter>\n <filter id=\"filter1_f_239_3673\" x=\"10.779\" y=\"11.1278\" width=\"65.4831\" height=\"65.4833\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\" />\n <feGaussianBlur stdDeviation=\"2.12309\" result=\"effect1_foregroundBlur_239_3673\" />\n </filter>\n <filter id=\"filter2_d_239_3673\" x=\"9.88\" y=\"16.0474\" width=\"68.8873\" height=\"68.8874\" 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 dy=\"6.63108\" />\n <feGaussianBlur stdDeviation=\"3.31554\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_239_3673\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_239_3673\" result=\"shape\" />\n </filter>\n <linearGradient id=\"paint0_linear_239_3673\" x1=\"71.4224\" y1=\"13.7746\" x2=\"56.8589\" y2=\"88.1932\" gradientUnits=\"userSpaceOnUse\">\n <stop offset=\"0.581821\" stop-color=\"#27242C\" />\n <stop offset=\"1\" stop-color=\"#0C0B0E\" />\n </linearGradient>\n <linearGradient id=\"paint1_linear_239_3673\" x1=\"77.0682\" y1=\"5.96974\" x2=\"5.21288\" y2=\"11.5456\" gradientUnits=\"userSpaceOnUse\">\n <stop [attr.stop-color]=\"config.partialColors?.primary\" />\n <stop offset=\"1\" [attr.stop-color]=\"config.partialColors?.secondary\" />\n </linearGradient>\n <linearGradient id=\"paint2_linear_239_3673\" x1=\"77.068\" y1=\"5.96974\" x2=\"5.2127\" y2=\"11.5456\" gradientUnits=\"userSpaceOnUse\">\n <stop [attr.stop-color]=\"config.partialColors?.primary\" />\n <stop offset=\"1\" [attr.stop-color]=\"config.partialColors?.secondary\" />\n </linearGradient>\n <linearGradient id=\"paint3_linear_239_3673\" x1=\"77.0682\" y1=\"5.96974\" x2=\"5.21288\" y2=\"11.5456\" gradientUnits=\"userSpaceOnUse\">\n <stop [attr.stop-color]=\"config.partialColors?.primary\" />\n <stop offset=\"1\" [attr.stop-color]=\"config.partialColors?.secondary\" />\n </linearGradient>\n <radialGradient\n id=\"paint4_radial_239_3673\"\n cx=\"0\"\n cy=\"0\"\n r=\"1\"\n gradientUnits=\"userSpaceOnUse\"\n gradientTransform=\"translate(44.6705 43.9694) rotate(-90) scale(36.3006 37.8505)\"\n >\n <stop offset=\"0.629654\" stop-color=\"white\" stop-opacity=\"0\" />\n <stop offset=\"0.822917\" [attr.stop-color]=\"config.partialColors?.primary\" />\n <stop offset=\"0.988953\" stop-color=\"white\" stop-opacity=\"0\" />\n </radialGradient>\n <linearGradient id=\"paint5_linear_239_3673\" x1=\"70.9798\" y1=\"11.9932\" x2=\"10.7034\" y2=\"16.6706\" gradientUnits=\"userSpaceOnUse\">\n <stop [attr.stop-color]=\"config.partialColors?.primary\" />\n <stop offset=\"1\" [attr.stop-color]=\"config.partialColors?.secondary\" />\n </linearGradient>\n <radialGradient\n id=\"paint6_radial_239_3673\"\n cx=\"0\"\n cy=\"0\"\n r=\"1\"\n gradientUnits=\"userSpaceOnUse\"\n gradientTransform=\"translate(43.8027 43.8695) rotate(-90) scale(30.451 31.7512)\"\n >\n <stop offset=\"0.629654\" stop-color=\"white\" stop-opacity=\"0\" />\n <stop offset=\"0.822917\" [attr.stop-color]=\"config.partialColors?.primary\" />\n <stop offset=\"0.988953\" stop-color=\"white\" stop-opacity=\"0\" />\n </radialGradient>\n <linearGradient id=\"paint7_linear_239_3673\" x1=\"71.1248\" y1=\"12.7476\" x2=\"12.2928\" y2=\"17.3129\" gradientUnits=\"userSpaceOnUse\">\n <stop [attr.stop-color]=\"config.inner?.colors?.tertiary\" />\n <stop offset=\"1\" [attr.stop-color]=\"config.inner?.colors?.secondary\" />\n </linearGradient>\n <radialGradient id=\"paint8_radial_239_3673\" cx=\"0\" cy=\"0\" r=\"1\" gradientUnits=\"userSpaceOnUse\" gradientTransform=\"translate(44.599 43.86) rotate(-90) scale(29.7213 30.9903)\">\n <stop offset=\"0.629654\" stop-color=\"white\" stop-opacity=\"0\" />\n <stop offset=\"0.880168\" [attr.stop-color]=\"config.inner?.colors?.primary\" />\n <stop offset=\"0.988953\" stop-color=\"white\" stop-opacity=\"0\" />\n </radialGradient>\n </defs>\n </svg>\n\n @if (config.showExternalPartialCircleProgress) {\n <svg class=\"circle-progress__svg\" width=\"100%\" height=\"100%\" viewBox=\"0 0 90 90\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle r=\"45\" cx=\"45\" cy=\"45\" fill=\"url(#grad)\" [attr.mask]=\"'url(#' + pathId + ')'\" />\n <defs>\n <mask class=\"circle-progress__mask\" [attr.id]=\"pathId\">\n <g>\n <path\n #progressPath\n d=\"M 7.2598244424559155 69.50875657567614 A 45 45 0 1 1 82.74017555754409 69.50875657567614\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-width=\"8.5\"\n [ngStyle]=\"{\n 'stroke-dasharray': progressPath.getTotalLength(),\n 'stroke-dashoffset': progressPath.getTotalLength() - (config.value * progressPath.getTotalLength()) / config.max,\n }\"\n />\n </g>\n <circle r=\"37.5\" cx=\"45\" cy=\"45\" fill=\"black\" />\n </mask>\n <radialGradient id=\"grad\">\n <stop offset=\"0%\" [attr.stop-color]=\"config.partialColors?.gradientPrimary\" />\n <stop offset=\"80%\" [attr.stop-color]=\"config.partialColors?.gradientPrimary\" />\n <stop offset=\"90%\" [attr.stop-color]=\"config.partialColors?.gradientSecondary\" />\n <stop offset=\"100%\" [attr.stop-color]=\"config.partialColors?.gradientPrimary\" />\n </radialGradient>\n </defs>\n </svg>\n }\n}\n@if (variable === circleVariable.Complete) {\n <svg\n class=\"circle-progress-d3__main\"\n width=\"100%\"\n height=\"100%\"\n viewBox=\"-10 -10 90 90\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n [ngStyle]=\"{ display: config.value === 0 ? 'none' : 'block' }\"\n >\n <g transform=\"translate(0.3,-0.3)\">\n <path fill=\"none\" stroke-width=\"1\" stroke=\"transparent\" d=\"M 0 45 A 45 45 0 0 1 45 0\" style=\"transform-origin: center; transform: translate(-1.4px, -0.7px)\"></path>\n </g>\n </svg>\n\n <svg class=\"circle-progress-d3__image\" width=\"100%\" height=\"100%\" viewBox=\"0 0 90 90\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <ellipse mask=\"url(#cut-circle)\" cx=\"44.334\" cy=\"44.3024\" rx=\"33.9693\" ry=\"33.6363\" fill=\"url(#paint0_linear_239_3673)\" />\n <g transform=\"translate(0.3,-0.3)\" opacity=\"1\">\n <path\n opacity=\"0.15\"\n d=\"M 0 45 A 45 45 0 0 1 90 45 M 90 45 A 45 45 0 0 1 0 45\"\n stroke-width=\"12\"\n stroke=\"black\"\n style=\"transform-origin: center; transform: scale(0.69) translate(-1.4px, -0.7px)\"\n />\n </g>\n <defs>\n <mask id=\"cut-circle\">\n <rect x=\"0\" y=\"0\" width=\"90\" height=\"90\" fill=\"white\" />\n <circle r=\"27.5\" cx=\"44.5\" cy=\"44\" fill=\"black\"></circle>\n </mask>\n </defs>\n </svg>\n\n <svg class=\"circle-progress-d3__svg\" width=\"100%\" height=\"100%\" viewBox=\"0 0 90 90\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle\n r=\"45\"\n cx=\"45\"\n cy=\"45\"\n [attr.mask]=\"'url(#' + pathId + ')'\"\n [ngStyle]=\"{ fill: config.value === config.max ? config.partialColors?.complete : config.partialColors?.incomplete }\"\n />\n <defs>\n <mask class=\"circle-progress-d3__mask\" [attr.id]=\"pathId\">\n <g>\n <path\n #progressPath\n d=\"M 45 0 A 45 45 0 1 1 44.9999 0\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-width=\"12\"\n [ngStyle]=\"{\n 'stroke-dasharray': progressPath.getTotalLength(),\n 'stroke-dashoffset': progressPath.getTotalLength() - (config.value * progressPath.getTotalLength()) / config.max,\n }\"\n />\n </g>\n </mask>\n </defs>\n </svg>\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { CircleProgressComponent } from './circle-progress.component';\n\n@NgModule({\n declarations: [CircleProgressComponent],\n imports: [CommonModule],\n exports: [CircleProgressComponent],\n})\nexport class CircleProgressModule {}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CircleProgressModule } from '../circle-progress/circle-progress.module';\nimport { IChatSuggestion } from './interfaces/chat-suggestion.interface';\n\n@Component({\n selector: 'lib-chat-suggestion',\n imports: [CircleProgressModule],\n templateUrl: './chat-suggestion.component.html',\n styleUrl: './chat-suggestion.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChatSuggestionComponent {\n @Input() chatSuggestions: IChatSuggestion[] = [];\n @Output() suggestClicked?: EventEmitter<string> = new EventEmitter();\n}\n","<div class=\"contentWrapper\">\n <div class=\"content\">\n @for (suggestion of chatSuggestions; track suggestion.question; let idx = $index) {\n <div class=\"contentItem\" (click)=\"suggestClicked?.emit(suggestion?.question)\">\n <span>{{ idx + 1 }}</span>\n <div class=\"itemDescription\">{{ suggestion.question }}</div>\n <div class=\"progress_view\">\n <lib-circle-progress class=\"circle-progress-suggestion\" variable=\"complete\" [config]=\"{ prefix: '', suffix: '%', value: suggestion.percentage }\"></lib-circle-progress>\n </div>\n </div>\n }\n </div>\n</div>\n","export enum LocalStorageKeys {\n LongPressForSendImmediately = 'longPressForSendImmediately',\n}\n","import { Injectable } from '@angular/core';\nimport { JSONSchema } from '@ngx-pwa/local-storage';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport abstract class AbstractCacheService {\n abstract saveLocalStorage(key: string, value: unknown, schema?: JSONSchema): void;\n abstract getLocalStorage<T>(key: string): Observable<T>;\n}\n","import { Injectable } from '@angular/core';\nimport { startOfDay } from 'date-fns';\nimport { map, Observable } from 'rxjs';\nimport { LocalStorageKeys } from '../../enums/local-storage-keys.enum';\nimport { AbstractCacheService } from '../../services/abstract-cache.service';\nimport { IDateMessages } from './interfaces/date-messages.interface';\nimport { IMessage } from './interfaces/message.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ChatService {\n constructor(public cacheService: AbstractCacheService) {}\n\n public setLongPressForSendImmediately(enabled: boolean): void {\n this.cacheService.saveLocalStorage(LocalStorageKeys.LongPressForSendImmediately, enabled ? '1' : '0');\n }\n\n public isLongPressForSendImmediately(): Observable<boolean> {\n return this.cacheService.getLocalStorage<string>(LocalStorageKeys.LongPressForSendImmediately).pipe(map((value) => value === '1'));\n }\n\n // transforms |messages| into |DateMessages| array\n transformMessages(messages: IMessage[]): IDateMessages[] {\n const sorted = [...messages].sort((a, b) => a.timestamp?.getTime() - b.timestamp?.getTime());\n const seen = new Set<string>();\n\n return sorted.map((msg) => {\n const dayStart = startOfDay(msg.timestamp); // midnight *local*\n if (dayStart) {\n const key = dayStart.getTime(); // epoch ms as the bucket id\n const isFirst = !seen.has(String(key));\n if (isFirst) seen.add(String(key));\n\n return { date: dayStart, isFirstMessage: isFirst, message: msg };\n } else {\n return null;\n }\n });\n }\n\n // updates |isFirstMessage| property of |DateMessages| array\n updateDateMessages(dateMessages: IDateMessages[]): IDateMessages[] {\n const byDay = new Map<number, IDateMessages[]>();\n\n dateMessages.forEach((dm) => {\n const dayStart = startOfDay(dm.message.timestamp).getTime(); // epoch-ms key\n if (!byDay.has(dayStart)) byDay.set(dayStart, []);\n byDay.get(dayStart)!.push(dm);\n });\n\n // 2️⃣ Within each bucket, sort and flag the first message\n const result: IDateMessages[] = [];\n byDay.forEach((list) => {\n // ✨ clone so we don’t mutate callers’ state\n const sorted = [...list].sort((a, b) => a.message.timestamp.getTime() - b.message.timestamp.getTime());\n\n sorted.forEach((dm, idx) => (dm.isFirstMessage = idx === 0));\n result.push(...sorted);\n });\n\n return result;\n }\n}\n","import { ChangeDetectionStrategy, Component, Inject, OnInit, Optional, TemplateRef, ViewChild } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { MODAL_DATA, PopupModalService } from '@naniteninja/ionic-lib';\nimport { FormFieldType } from '@naniteninja/ionic-lib';\nimport { SelectOptionWithTemplate } from '../../../model/select-option-template';\nimport { ChatService } from './../../../components/chat/chat.service';\n\n@Component({\n selector: 'lib-message-modal',\n templateUrl: './message-modal.component.html',\n styleUrls: ['./message-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class LibMessageModalComponent implements OnInit {\n @ViewChild('toggleTemplate', { static: true }) toggleTemplate: TemplateRef<HTMLElement>;\n public options: SelectOptionWithTemplate<string>[];\n public messageType = new FormControl('send_immediately', Validators.required);\n public dateTimePicker = new FormControl(new Date(), Validators.required);\n public toggleLongPress = new FormControl(false, Validators.required);\n\n public type: FormFieldType = FormFieldType.radio;\n\n public formTime: FormGroup = this.fb.group({\n time: [null, [Validators.required, Validators.pattern('^([01]\\\\d|2[0-3]):[0-5]\\\\d$')]],\n });\n\n constructor(\n private fb: FormBuilder,\n private popupModalService: PopupModalService,\n private chatService: ChatService,\n @Optional() @Inject(MODAL_DATA) public modalData?: { responseTime: string },\n ) {}\n\n ngOnInit(): void {\n this.chatService.isLongPressForSendImmediately().subscribe({\n next: (res) => {\n this.toggleLongPress.setValue(res, { emitEvent: false });\n },\n });\n\n this.toggleLongPress.valueChanges.subscribe((val: boolean) => this.chatService.setLongPressForSendImmediately(val));\n\n const { responseTime } = this.modalData || { responseTime: '' };\n if (responseTime && !responseTime.includes('0h 0m 0s')) {\n this.options = [\n { label: 'MESSAGE_MODAL.OPTIONS.SEND_IMMEDIATELY', value: 'send_immediately', addOnTemplateRef: this.toggleTemplate },\n { label: 'MESSAGE_MODAL.OPTIONS.SEND_AFTER' + responseTime, value: 'send_after' },\n { label: 'MESSAGE_MODAL.OPTIONS.SPECIFY_TIME', value: 'specify_time' },\n ];\n } else {\n this.options = [\n { label: 'MESSAGE_MODAL.OPTIONS.SEND_IMMEDIATELY', value: 'send_immediately', addOnTemplateRef: this.toggleTemplate },\n { label: 'MESSAGE_MODAL.OPTIONS.SPECIFY_TIME', value: 'specify_time' },\n ];\n }\n }\n\n public onSubmit(): void {\n let arrivalDate: string | undefined = undefined;\n let type = this.messageType.value;\n\n if (this.messageType?.value === 'specify_time') {\n const time = this.formTime.get('time').value as Date;\n\n if (time) {\n arrivalDate = `${time.getHours()}:${time.getMinutes()}:00`;\n } else {\n type = 'send_inmediately';\n }\n } else if (this.messageType?.value === 'send_after') {\n const { responseTime } = this.modalData || { responseTime: '' };\n\n if (responseTime) {\n const times = responseTime.split(' ');\n const hours = times[0].slice(0, 2);\n const minutes = times[1].slice(0, 2);\n const seconds = times[2].slice(0, 2);\n arrivalDate = `${hours}:${minutes}:${seconds}`;\n } else {\n type = 'send_inmediately';\n }\n } else if (this.messageType.value === '') {\n type = 'send_inmediately';\n }\n\n this.popupModalService.hide({\n type,\n arrivalDate,\n longPressEnabled: this.toggleLongPress.value,\n });\n }\n}\n","<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","export enum SenderTypes {\n USER = 'user',\n OTHER = 'other',\n}\n","export enum SendMessageType {\n INMEDIATELY = 'send_immediately',\n AFTER = 'send_after',\n SPECIFIC = 'specify_time',\n}\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ITenorObject } from './tenor-object.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class GifSelectorService {\n private tenorKey: string;\n private tenorURL: string;\n\n private http = inject(HttpClient);\n\n public setTenorKey(key: string) {\n this.tenorKey = key;\n }\n\n public setTenorURL(url: string) {\n this.tenorURL = url;\n }\n\n private getTenorKey(): string {\n return this.tenorKey;\n }\n\n private getTenorURL(): string {\n return this.tenorURL;\n }\n\n public getGifs(term: string, pos: string): Observable<ITenorObject> {\n const formattedValue = term.replace(/ /g, '+');\n const url =\n `${this.getTenorURL()}/search?q=` +\n formattedValue +\n '&prettyPrint=false' +\n `&key=${this.getTenorKey()}` +\n '&client_key=tenor_web' +\n '&contentfilter=low' +\n '&searchfilter=none' +\n '&limit=' +\n 50 +\n (pos !== '' ? '&pos=' + pos : '');\n return this.http.get<ITenorObject>(url);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, inject, OnDestroy, OnInit, Output } from '@angular/core';\nimport { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { debounceTime, distinctUntilChanged, Observable, Subject, switchMap, takeUntil } from 'rxjs';\nimport { GifSelectorService } from './gif-selector.service';\nimport { ITenorObject } from './tenor-object.interface';\nimport { ITenorResult } from './tenor-result.interface';\n\n@Component({\n selector: 'lib-gif-selector',\n imports: [CommonModule, InfiniteScrollModule, FormsModule, ReactiveFormsModule],\n templateUrl: './gif-selector.component.html',\n styleUrl: './gif-selector.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GifSelectorComponent implements OnInit, OnDestroy {\n private cdr = inject(ChangeDetectorRef);\n private gifService = inject(GifSelectorService);\n private destroy$ = new Subject<void>();\n\n public form: FormGroup;\n\n public pos: string = '';\n public gifs: ITenorResult[] = [];\n public throttle = 150;\n public distance = 2;\n\n @Output() selectGif = new EventEmitter<string>();\n\n ngOnInit(): void {\n this.buildForm();\n\n this.getGifs('popular').subscribe((gifs) => {\n this.gifs = gifs.results;\n this.pos = gifs.next;\n this.cdr.markForCheck();\n });\n\n this.form\n .get('gifTerm')\n .valueChanges.pipe(\n debounceTime(800), // Waits 800ms after the user stops typing\n distinctUntilChanged(), // Prevents emiting repetitive consecutive values\n switchMap((value: string) => {\n return this.getGifs(value);\n }),\n takeUntil(this.destroy$),\n )\n .subscribe({\n next: (gifs) => {\n this.gifs = gifs.results;\n this.pos = gifs.next;\n this.cdr.markForCheck();\n },\n });\n }\n\n onScrollGifs(): void {\n const term = this.form.get('gifTerm').value;\n const searchTerm = term?.trim() || 'popular';\n this.getGifs(searchTerm).subscribe((gifs: ITenorObject) => {\n this.gifs.push(...gifs.results);\n this.pos = gifs.next;\n this.cdr.markForCheck();\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n public getGifs(term: string): Observable<ITenorObject> {\n return this.gifService.getGifs(term, this.pos);\n }\n\n private buildForm(): void {\n this.form = new FormGroup({\n gifTerm: new FormControl(''),\n });\n }\n\n onGifClick(url: string) {\n this.selectGif.emit(url);\n }\n}\n","<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","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport 'emoji-picker-element';\nimport { first } from 'rxjs';\nimport { EmojiPickerConfig } from '@naniteninja/ionic-lib';\nimport { LibMessageModalComponent } from '../../shared/shared/message-modal/message-modal.component';\nimport { InputFieldComponent, PopupModalService } from '@naniteninja/ionic-lib';\nimport { ChatService } from './chat.service';\nimport { SenderTypes } from './enums/sender-types.enum';\nimport { IDateMessages } from './interfaces/date-messages.interface';\nimport { IMessage } from './interfaces/message.interface';\nimport { SendMessageType } from './interfaces/type-send-message.enum';\n\n@Component({\n selector: 'lib-chat',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: ChatComponent,\n multi: true,\n },\n ],\n templateUrl: './chat.component.html',\n styleUrls: ['./chat.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class ChatComponent implements OnInit, AfterViewInit, OnChanges, OnDestroy {\n @Input() default?: boolean = false;\n @Input() responseTime?: string = '05h 04m 35s';\n // Pre-filled input value\n @Input() set inputValue(value: string) {\n if (value) {\n this.textControl.setValue(value);\n }\n }\n // Configuration of emojiPicker. Must be added\n @Input() emojiPickerConfig: EmojiPickerConfig;\n // whether gifs as a message should be allowed or not\n @Input() includeGifMessage: boolean = true;\n // whether timestamp styles should be allowed or not\n @Input() includeTime: boolean = true;\n // interface for messages to groupm them in dates\n @Input() set dateMessages(value: IMessage[]) {\n this.messages = this.chatService.transformMessages(value);\n }\n // max length for textarea input\n @Input() maxLength: number = 100;\n\n @Input() enableGifPicker: boolean = false;\n\n @Input() prospectJoinDate: Date;\n\n // send message emitter\n @Output() sendMessage = new EventEmitter<IMessage>();\n // scroller-up event to get older messages\n @Output() getMessages = new EventEmitter<boolean>();\n\n @Input() disabled: boolean = false;\n\n @ViewChild('emojiPicker') emojiPickerRef: ElementRef;\n @ViewChild('scrollableContainer') scrollableContainer: ElementRef;\n @ViewChild('chatInput') chatInput: InputFieldComponent;\n\n private cdr = inject(ChangeDetectorRef);\n private elementRef = inject(ElementRef);\n private popupModalService = inject(PopupModalService);\n private chatService = inject(ChatService);\n private pendingMessage: IMessage | null;\n private renderer = inject(Renderer2);\n\n public scrollThreshold = 200;\n public messages: IDateMessages[] = [];\n\n public textControl: FormControl<string> = new FormControl('');\n\n public base64Image: string | null = null;\n\n public emojiVisibility: boolean = false;\n public gifVisibility: boolean = false;\n public isAtStartChat: boolean = false;\n public emojiPickerOpened: boolean = false;\n\n public pos: string = '';\n\n public longPressEnabled: boolean;\n public throttle = 0;\n public distance = 0;\n public readonly ModalComponent = LibMessageModalComponent;\n\n private documentClickListener: (() => void) | null = null;\n\n ngOnInit(): void {\n if (!this.prospectJoinDate) {\n this.prospectJoinDate = null;\n }\n\n this.chatService.isLongPressForSendImmediately().subscribe({\n next: (res) => {\n this.longPressEnabled = res;\n },\n });\n\n if (this.disabled) {\n this.textControl.disable();\n }\n }\n\n ngOnDestroy(): void {\n this.removeEmojiPickerClickListener();\n }\n\n ngAfterViewInit(): void {\n if (this.emojiPickerConfig?.style) {\n if (this.emojiPickerRef?.nativeElement) {\n const style = document.createElement('style');\n style.textContent = this.emojiPickerConfig.style;\n this.emojiPickerRef.nativeElement.shadowRoot.appendChild(style);\n }\n }\n\n this.scrollToBottom();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.scrollableContainer) return;\n const container = this.scrollableContainer.nativeElement;\n const scrollTop = container.scrollTop;\n const scrollHeight = container.scrollHeight;\n const clientHeight = container.clientHeight;\n\n if (!(scrollTop < scrollHeight - clientHeight - this.scrollThreshold)) {\n setTimeout(() => {\n this.scrollToBottom();\n }, 200);\n }\n }\n\n public onScrollChats(): void {\n this.getMessages.emit(true);\n }\n\n handleScrollNewMessage(): void {\n setTimeout(() => {\n if (!this.isAtStartChat) this.scrollToBottom();\n }, 200);\n }\n\n onScrollMessages(event: Event): void {\n const container = this.scrollableContainer.nativeElement;\n const scrollTop = container.scrollTop;\n const scrollHeight = container.scrollHeight;\n const clientHeight = container.clientHeight;\n\n this.isAtStartChat = scrollTop < scrollHeight - clientHeight - this.scrollThreshold;\n }\n\n scrollToBottom(): void {\n const container = this.scrollableContainer.nativeElement;\n container.scrollTop = container.scrollHeight;\n }\n\n public onEmojiclick(event: CustomEvent): void {\n const emoji = event.detail.unicode;\n if (this.chatInput.inputFieldRef) {\n const textAreaElement = this.chatInput.inputFieldRef.nativeElement;\n const start = textAreaElement.selectionStart ?? 0;\n const end = textAreaElement.selectionEnd ?? 0;\n\n const currentText = this.textControl.value || '';\n const newText = currentText.slice(0, start) + emoji + currentText.slice(end);\n\n this.textControl.setValue(newText);\n\n // Reposiciona el cursor después del emoji\n setTimeout(() => {\n textAreaElement.focus(); // Asegura que el textarea recupere el foco\n textAreaElement.setSelectionRange(start + emoji.length, start + emoji.length);\n });\n }\n }\n\n public handleEmojiPickerClick(): void {\n if (this.default) {\n return;\n }\n\n this.emojiPickerOpened = true;\n\n if (this.gifVisibility) {\n this.gifVisibility = !this.gifVisibility;\n }\n this.emojiVisibility = !this.emojiVisibility;\n\n if (this.gifVisibility || this.emojiVisibility) {\n this.setupEmojiPickerClickListener();\n }\n }\n\n public handleGifPickerClick(): void {\n if (this.emojiVisibility) {\n this.emojiVisibility = !this.emojiVisibility;\n }\n\n this.gifVisibility = !this.gifVisibility;\n\n if (this.gifVisibility || this.emojiVisibility) {\n this.setupEmojiPickerClickListener();\n }\n }\n\n public onGifClick(url: string): void {\n if (this.default) {\n return;\n }\n const newMessage: IMessage = {\n sender: SenderTypes.USER,\n timestamp: new Date(),\n message: '',\n attachments: [\n {\n type: 'gif',\n url,\n },\n ],\n };\n\n this.pendingMessage = newMessage;\n this.onSendMessageModal();\n }\n\n public onSendMessageModal(): void {\n const modalData = {\n data: {\n responseTime: this.responseTime,\n },\n };\n this.popupModalService\n .show(this.ModalComponent, modalData)\n .afterClose.pipe(first())\n .subscribe((data) => {\n this.pendingMessage.sendOptions = {\n type: data.type,\n arrivalDate: data.arrivalDate,\n };\n\n this.longPressEnabled = data.longPressEnabled;\n\n this.onSend();\n });\n this.popupModalService.setValues({ customClass: 'message-modal-container' });\n }\n\n public onSendText(): void {\n this.savePendingMessage();\n this.onSendMessageModal();\n }\n\n public savePendingMessage(): void {\n const message = this.textControl.value.trim();\n if (message.trim()) {\n const newMessage: IMessage = {\n sender: SenderTypes.USER,\n timestamp: new Date(),\n message: message,\n attachments: [],\n };\n\n this.pendingMessage = newMessage;\n }\n }\n\n public onSend(): void {\n this.gifVisibility = false;\n this.emojiVisibility = false;\n this.textControl.setValue('');\n this.handleScrollNewMessage();\n this.sendMessage.emit(this.pendingMessage);\n }\n\n public onKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Enter') {\n this.onSendText();\n }\n }\n\n private onLongPress(): void {\n this.savePendingMessage();\n this.pendingMessage.sendOptions = {\n type: SendMessageType.INMEDIATELY,\n arrivalDate: new Date(),\n };\n this.onSend();\n }\n\n private onBlurPickerSpace(): void {\n this.gifVisibility = false;\n this.emojiVisibility = false;\n this.cdr.markForCheck();\n this.removeEmojiPickerClickListener();\n }\n\n private setupEmojiPickerClickListener(): void {\n if (this.documentClickListener) return;\n\n this.documentClickListener = this.renderer.listen('document', 'click', (event: Event) => {\n if (!this.elementRef.nativeElement.contains(event.target)) {\n this.onBlurPickerSpace();\n }\n });\n }\n\n private removeEmojiPickerClickListener(): void {\n if (this.documentClickListener) {\n this.documentClickListener();\n this.documentClickListener = null;\n }\n }\n}\n","<div class=\"chat-component\">\n <div class=\"chat-container\">\n <div class=\"go-button\" *ngIf=\"isAtStartChat\" (click)=\"scrollToBottom()\">↓</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","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-alert-popup',\r\n templateUrl: './alert-popup.component.html',\r\n styleUrls: ['./alert-popup.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false,\r\n})\r\nexport class AlertPopupComponent implements OnChanges {\r\n @Input() title: string;\r\n @Input() description: string;\r\n @Input() timeState: number;\r\n @Input() number: number;\r\n\r\n @Output() closed: EventEmitter<boolean> = new EventEmitter();\r\n\r\n public isClosing: boolean = false;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const resetTriggerFields = ['title', 'description', 'timeState'];\r\n\r\n if (resetTriggerFields.some((field) => changes[field])) {\r\n this.isClosing = false;\r\n }\r\n }\r\n\r\n handleCloseEvent(): void {\r\n this.isClosing = true;\r\n setTimeout(() => {\r\n this.closed.emit(true);\r\n }, 1000);\r\n }\r\n}\r\n","<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","import { Component, Input } from '@angular/core';\r\nimport { StatusTypes } from '../../../enums/status-types';\r\n\r\n@Component({\r\n selector: 'lib-status-icon',\r\n templateUrl: './status-icon.component.html',\r\n standalone: false,\r\n})\r\nexport class StatusIconComponent {\r\n @Input({ required: true }) type: StatusTypes;\r\n}\r\n","@switch (type) {\r\n @case ('info') {\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M9.9987 19.1315C15.0613 19.1315 19.1654 15.0275 19.1654 9.96487C19.1654 4.90226 15.0613 0.798203 9.9987 0.798203C4.93609 0.798203 0.832031 4.90226 0.832031 9.96487C0.832031 15.0275 4.93609 19.1315 9.9987 19.1315ZM9.9987 5.15237C9.36587 5.15237 8.85287 5.66538 8.85287 6.2982C8.85287 6.93103 9.36587 7.44404 9.9987 7.44404C10.6315 7.44404 11.1445 6.93103 11.1445 6.2982C11.1445 5.66538 10.6315 5.15237 9.9987 5.15237ZM9.9987 9.7357C9.36797 9.7357 8.85287 10.2508 8.85287 10.8815V13.6315C8.85287 14.2623 9.36797 14.7774 9.9987 14.7774C10.6294 14.7774 11.1445 14.2623 11.1445 13.6315V10.8815C11.1445 10.2508 10.6294 9.7357 9.9987 9.7357Z\"\r\n fill=\"#237FD5\"\r\n />\r\n </svg>\r\n }\r\n\r\n @case ('warning') {\r\n <svg width=\"18\" height=\"16\" viewBox=\"0 0 18 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M2.0975 15.795H15.9025C17.3142 15.795 18.1942 14.2642 17.4883 13.045L10.5858 1.11921C9.88 -0.0999577 8.12 -0.0999577 7.41417 1.11921L0.511666 13.045C-0.194167 14.2642 0.685832 15.795 2.0975 15.795ZM9 9.37838C8.49583 9.37838 8.08333 8.96588 8.08333 8.46171V6.62838C8.08333 6.12421 8.49583 5.71171 9 5.71171C9.50417 5.71171 9.91667 6.12421 9.91667 6.62838V8.46171C9.91667 8.96588 9.50417 9.37838 9 9.37838ZM9.91667 13.045H8.08333V11.2117H9.91667V13.045Z\"\r\n fill=\"#F29C38\"\r\n />\r\n </svg>\r\n }\r\n\r\n @case ('error') {\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M10 0.833374C4.94001 0.833374 0.833344 4.94004 0.833344 10C0.833344 15.06 4.94001 19.1667 10 19.1667C15.06 19.1667 19.1667 15.06 19.1667 10C19.1667 4.94004 15.06 0.833374 10 0.833374ZM10 10.9167C9.49584 10.9167 9.08334 10.5042 9.08334 10V6.33337C9.08334 5.82921 9.49584 5.41671 10 5.41671C10.5042 5.41671 10.9167 5.82921 10.9167 6.33337V10C10.9167 10.5042 10.5042 10.9167 10 10.9167ZM10.9167 14.5834H9.08334V12.75H10.9167V14.5834Z\"\r\n fill=\"#D32F2F\"\r\n />\r\n </svg>\r\n }\r\n\r\n @case ('success') {\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M10 0.833328C4.94001 0.833328 0.833344 4.93999 0.833344 10C0.833344 15.06 4.94001 19.1667 10 19.1667C15.06 19.1667 19.1667 15.06 19.1667 10C19.1667 4.93999 15.06 0.833328 10 0.833328ZM7.51584 13.9325L4.22501 10.6417C3.86751 10.2842 3.86751 9.70666 4.22501 9.34916C4.58251 8.99166 5.16001 8.99166 5.51751 9.34916L8.16668 11.9892L14.4733 5.6825C14.8308 5.325 15.4083 5.325 15.7658 5.6825C16.1233 6.04 16.1233 6.6175 15.7658 6.97499L8.80834 13.9325C8.46001 14.29 7.87334 14.29 7.51584 13.9325Z\"\r\n fill=\"#2DB231\"\r\n />\r\n </svg>\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ButtonsModule, FormFieldModule, InputDateFieldModule, InputFieldModule, ToggleModule } from '@naniteninja/ionic-lib';\nimport { AlertPopupComponent } from './shared/alert-popup/alert-popup.component';\nimport { LibMessageModalComponent } from './shared/message-modal/message-modal.component';\nimport { StatusIconComponent } from './shared/status-icon/status-icon.component';\n\n@NgModule({\n declarations: [StatusIconComponent, AlertPopupComponent, LibMessageModalComponent],\n imports: [CommonModule, FormFieldModule, ButtonsModule, InputDateFieldModule, InputFieldModule, FormsModule, ReactiveFormsModule, TranslateModule, ToggleModule],\n exports: [StatusIconComponent, AlertPopupComponent, LibMessageModalComponent],\n})\nexport class SharedModule {}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\n// import { DirectiveModule } from '../../directives/directive.module';\nimport { SharedModule } from '../../shared/shared.module';\nimport { ChatComponent } from '../chat/chat.component';\nimport { InputFieldModule, LibModalModule, ImageCardModule } from '@naniteninja/ionic-lib';\nimport { ChatService } from './chat.service';\nimport { GifSelectorComponent } from './gif-selector/gif-selector.component';\nimport { GifSelectorService } from './gif-selector/gif-selector.service';\n\n@NgModule({\n declarations: [ChatComponent],\n imports: [\n CommonModule,\n ImageCardModule,\n MatInputModule,\n MatSelectModule,\n MatFormFieldModule,\n InputFieldModule,\n FormsModule,\n ReactiveFormsModule,\n GifSelectorComponent,\n LibModalModule,\n SharedModule,\n InfiniteScrollModule,\n TranslateModule,\n ],\n exports: [ChatComponent],\n providers: [ChatService],\n})\nexport class LibChatComponentModule {\n static forRoot(config: { tenorKey: string; tenorURL: string }): ModuleWithProviders<LibChatComponentModule> {\n return {\n ngModule: LibChatComponentModule,\n providers: [\n {\n provide: GifSelectorService,\n useFactory: () => {\n const gifService = new GifSelectorService();\n gifService.setTenorKey(config.tenorKey);\n gifService.setTenorURL(config.tenorURL);\n return gifService;\n },\n },\n ],\n };\n }\n}\n","import { IPartialCircleProgressColors } from '../interfaces/partial-circle-progress-colors.interface';\n\nexport const innerProgressWhiteColors: IPartialCircleProgressColors = {\n primary: '#FFFFFF',\n secondary: '#E0E0E0',\n tertiary: '#000000',\n gradientPrimary: '#FFFFFF',\n gradientSecondary: '#E0E0E0',\n incomplete: '#E0E0E0',\n complete: '#FFFFFF',\n};\n","export enum CONVERSATION_FLAG {\n UNRESPONSIVE = 'unresponsive',\n REDELEGATION = 'redelegation',\n}\n","export enum COUNTER_FLAG_BASE {\n StartConversation = 'startConversation',\n LastResponse = 'lastResponse',\n}\n","import { CONVERSATION_FLAG } from '../enums/conversation-flag.enum';\n\nexport const getLimitDatesIndicators = (timestamp: Date, interval: number = 1_440): { [key in keyof typeof CONVERSATION_FLAG]: Date } => {\n const MS_IN_MIN = 60 * 1000; // 60 000\n const baseTime = timestamp.getTime(); // epoch ms of the input\n\n const Unresponsive = new Date(baseTime + interval * 1 * MS_IN_MIN);\n const Redelegation = new Date(baseTime + interval * 2 * MS_IN_MIN);\n\n return { UNRESPONSIVE: Unresponsive, REDELEGATION: Redelegation };\n};\n","import { CONVERSATION_FLAG } from '../enums/conversation-flag.enum';\nimport { COUNTER_FLAG_BASE } from '../enums/counter-flag-base.enum';\nimport { INNER_CIRCLE_STATE } from '../enums/inner-circle-state.enum';\nimport { ProgressDecision } from '../interfaces/progress-decision.interface';\nimport { ProgressFacts } from '../interfaces/progress-facts.interface';\nimport { getLimitDatesIndicators } from './limit-dates-indicator.lookup';\n\n/**\n * Pure “rules engine” for the inner circle.\n * No side-effects, no RxJS, no Angular.\n */\nexport function computeInnerState(indicators: ProgressFacts): ProgressDecision | null {\n if (!indicators.createdAt) {\n return null;\n }\n\n let basedOn: COUNTER_FLAG_BASE;\n\n const now = indicators.nowMs ?? Date.now();\n\n // --- 1️⃣ How many minutes since the reference point? ---\n let minutesSinceRef: number | null;\n\n let limitDatesIndicators: { [key in keyof typeof CONVERSATION_FLAG]: Date };\n\n if (indicators.firstAnswer) {\n if (indicators.lastMessageTimestamp) {\n if (indicators.waitingAnswer) {\n minutesSinceRef = diffMinutes(indicators.lastMessageTimestamp.getTime(), now);\n basedOn = COUNTER_FLAG_BASE.LastResponse;\n limitDatesIndicators = getLimitDatesIndicators(indicators.lastMessageTimestamp);\n } else {\n minutesSinceRef = null; // I already replied\n basedOn = null;\n limitDatesIndicators = null;\n }\n } else {\n minutesSinceRef = null; // prospect never replied\n basedOn = null;\n limitDatesIndicators = null;\n }\n } else {\n minutesSinceRef = diffMinutes(indicators.createdAt.getTime(), now);\n basedOn = COUNTER_FLAG_BASE.StartConversation;\n limitDatesIndicators = getLimitDatesIndicators(indicators.createdAt, indicators.innerMax);\n }\n\n // --- 2️⃣ Decide state ----------------------------------\n if (minutesSinceRef === null) {\n return quiet(); // nothing to track\n }\n\n const { UNRESPONSIVE, REDELEGATION } = limitDatesIndicators;\n\n if (indicators.innerMax * 2 - minutesSinceRef <= 0) {\n const flagFound = indicators.conversationFlags?.find((flag) => {\n return flag.flag === CONVERSATION_FLAG.REDELEGATION && flag.timestamp.getTime() === REDELEGATION.getTime() && flag.basedOn === basedOn;\n });\n return redelegation(basedOn, !!flagFound);\n }\n\n if (indicators.innerMax - minutesSinceRef <= 0) {\n const remainder = indicators.innerMax - (minutesSinceRef - 24 * 60);\n const flagFound = indicators.conversationFlags?.find((flag) => {\n return flag.flag === CONVERSATION_FLAG.UNRESPONSIVE && flag.timestamp.getTime() === UNRESPONSIVE.getTime() && flag.basedOn === basedOn;\n });\n return unresponsive(remainder, basedOn, !!flagFound);\n }\n\n // Waiting path\n if (indicators.lastMessageTimestamp) {\n return indicators.waitingAnswer ? waiting(indicators.innerMax - minutesSinceRef, basedOn) : quiet();\n }\n\n // Prospect still waiting for FIRST message\n return waiting(indicators.innerMax - minutesSinceRef, basedOn);\n}\n\n// ------------------ local helpers -----------------------\nconst diffMinutes = (past: number, present: number) => Math.floor((present - past) / 1000 / 60);\n\nconst quiet = (): ProgressDecision => {\n return { state: INNER_CIRCLE_STATE.Quiet, innerValue: null, tick: 'stop', basedOn: null, registered: null };\n};\nconst waiting = (value: number, basedOn: COUNTER_FLAG_BASE): ProgressDecision => {\n return { state: INNER_CIRCLE_STATE.Waiting, innerValue: value, tick: 'start', basedOn, registered: null };\n};\nconst unresponsive = (value: number, basedOn: COUNTER_FLAG_BASE, registered: boolean): ProgressDecision => {\n return { state: INNER_CIRCLE_STATE.Unresponsive, innerValue: value, tick: 'start', basedOn, registered };\n};\nconst redelegation = (basedOn: COUNTER_FLAG_BASE, registered: boolean): ProgressDecision => {\n return { state: INNER_CIRCLE_STATE.Redelegation, innerValue: null, tick: 'stop', basedOn, registered };\n};\n","// progress-gap.config.ts (inside the library)\nimport { InjectionToken } from '@angular/core';\n\nexport const PROGRESS_GAP_MINUTES = new InjectionToken<number>('PROGRESS_GAP_MINUTES', { factory: () => 1 }); // Default to 1 minute if not provided\n","import { InjectionToken } from '@angular/core';\n\nexport const TICK_PERIOD_SECONDS = new InjectionToken<number>(\n 'TICK_PERIOD_SECONDS',\n { factory: () => 60 }, // Default to 60 seconds if not provided\n);\n","import { Inject, Injectable } from '@angular/core';\nimport { animationFrameScheduler, BehaviorSubject, defer, finalize, interval, Observable, shareReplay } from 'rxjs';\nimport { TICK_PERIOD_SECONDS } from './progress-ticker.config';\n\n// 🔁 ProgressTickerService centralizes timing control instead of spawning\n// multiple `setInterval` calls inside each animated component.\n//\n// This prevents creating 100+ independent timers (one per component),\n// and ensures all animations stay synchronized through a shared RxJS Observable.\n//\n// With 'shareReplay', the timer activates only when there’s at least one subscriber,\n// and it automatically stops when there are none.\n//\n// This approach significantly improves performance, reduces CPU usage,\n// and makes animation timing easier to manage and debug.\n\n@Injectable({ providedIn: 'root' })\nexport class ProgressTickerService {\n /** Emits once every `periodSec` seconds. Auto-starts & ref-counts. */\n readonly tick$: Observable<number>;\n\n /** For diagnostics: current number of active subscribers. */\n readonly subscriberCount$ = new BehaviorSubject<number>(0);\n\n /* 60 * 1_000 = 1 minute */\n\n constructor(@Inject(TICK_PERIOD_SECONDS) periodSec: number) {\n const periodMs = Math.max(0.125, periodSec) * 1_000; // guard against 0/neg\n\n const base$ = interval(periodMs, animationFrameScheduler);\n\n // wrapped timer that tracks subs/unsubs\n this.tick$ = defer(() => {\n // a new subscription is starting\n this.subscriberCount$.next(this.subscriberCount$.value + 1);\n\n return base$.pipe(\n finalize(() => {\n // this subscription is ending\n this.subscriberCount$.next(this.subscriberCount$.value - 1);\n }),\n );\n }).pipe(shareReplay({ bufferSize: 1, refCount: true }));\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n inject,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewEncapsulation,\n} from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { SkeletonModule } from 'primeng/skeleton';\nimport { BehaviorSubject, concatMap, from, Observable, Subject, Subscription, takeUntil } from 'rxjs';\nimport { CommonOperations } from '../../operations/operations';\nimport { CircleProgressModule } from '../circle-progress/circle-progress.module';\nimport { CircleVariable } from '../circle-progress/enums/circle-variable.enum';\nimport { CircleProgressConfig } from '../circle-progress/interfaces/circle-progress-config.interface';\nimport { IChatMeta } from '../client-home/interfaces/chat-meta.interface';\nimport { IPartialCircleProgressColors } from '../client-home/interfaces/partial-circle-progress-colors.interface';\nimport { innerProgressDefaultColors } from '../client-home/lookup/inner-progress-default-colors.config';\nimport { innerProgressTealColors } from '../client-home/lookup/inner-progress-teal-colors.config';\nimport { innerProgressWhiteColors } from '../client-home/lookup/inner-progress-white-colors.config';\nimport { progressDefaultColors } from '../client-home/lookup/progress-default-colors.config';\nimport { IInnerPartialCircleProgressColors } from './../client-home/interfaces/inner-partial-circle-progress-colors.interface';\nimport { innerProgressPinkColors } from './../client-home/lookup/inner-progress-pink-colors.config';\nimport { CONVERSATION_FLAG } from './enums/conversation-flag.enum';\nimport { COUNTER_FLAG_BASE } from './enums/counter-flag-base.enum';\nimport { INNER_CIRCLE_STATE } from './enums/inner-circle-state.enum';\nimport { ILibClientMatchOverview } from './interfaces/client-match-overview.interface';\nimport { IConversationFlag } from './interfaces/conversation-flag.interface';\nimport { ProgressDecision } from './interfaces/progress-decision.interface';\nimport { computeInnerState } from './lookups/computer-inner-state.lookup';\nimport { PROGRESS_GAP_MINUTES } from './progress-ticker/progress-gap.config';\nimport { ProgressTickerService } from './progress-ticker/progress-ticker.service';\n@Component({\n selector: 'lib-client-match-overview',\n templateUrl: './client-match-overview.component.html',\n styleUrls: ['./client-match-overview.component.scss'],\n encapsulation: ViewEncapsulation.ShadowDom,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, CircleProgressModule, TranslateModule, SkeletonModule],\n})\nexport class LibClientMatchOverviewComponent implements OnInit, OnDestroy, AfterViewInit, OnChanges {\n @Input({ required: true }) public overview: ILibClientMatchOverview;\n @Input() meta!: IChatMeta;\n @Input() expand: boolean = false;\n @Input() loading?: boolean = false;\n @Input() default?: boolean = false;\n @Input() hideProgressBar?: boolean = false;\n @Input() partialColors: IPartialCircleProgressColors = progressDefaultColors;\n @Input() showExternalPartialCircleProgress: boolean = true;\n @Input() maxValue: number = 100;\n @Input() enableChangeOverview: boolean = false;\n\n @Output() sendConversationFlag: EventEmitter<IConversationFlag> = new EventEmitter<IConversationFlag>();\n\n public circleVariable = CircleVariable;\n public innerMaxValue: number = 1_440;\n public innerValue: number = 0;\n public showIllumination: boolean = false;\n public showValueProportionLabel: boolean = true;\n public innerPartialColors: IInnerPartialCircleProgressColors = innerProgressDefaultColors;\n\n public innerState: INNER_CIRCLE_STATE = INNER_CIRCLE_STATE.Quiet;\n public basedOn: COUNTER_FLAG_BASE = null;\n public imageLoader$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n public imagePathId: string;\n\n public circleOpts: CircleProgressConfig;\n\n private cdr = inject(ChangeDetectorRef);\n private readonly ngZone = inject(NgZone);\n private readonly ticker = inject(ProgressTickerService);\n\n private readonly progressGap = inject(PROGRESS_GAP_MINUTES);\n\n private componentDestroyed$: Subject<void> = new Subject<void>();\n private tickerSub: Subscription | null = null;\n\n ngOnInit(): void {\n if (!this.default && this.overview.primary) {\n this.imagePathId = CommonOperations.randomString(100);\n this.loadProfileImage();\n }\n }\n\n ngAfterViewInit(): void {\n if (this.hideProgressBar || !this.meta) return;\n\n this.setInnerState();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const expandChange = changes['expand'];\n if (expandChange) {\n this.buildCircleOpts();\n return;\n }\n\n const overviewChange = changes['overview'];\n\n if (this.enableChangeOverview && overviewChange?.currentValue) {\n this.overview = overviewChange.currentValue;\n\n this.setInnerState();\n return;\n }\n\n const metaChange = changes['meta'];\n\n if (!metaChange || metaChange.isFirstChange() || this.hideProgressBar) {\n return;\n } else {\n const prev = metaChange.previousValue as IChatMeta;\n const curr = metaChange.currentValue as IChatMeta;\n\n if (prev.waitingAnswer !== curr.waitingAnswer) {\n if (curr?.waitingAnswer === true) {\n // new response from prospect/ red dot was added\n\n // if the prospect has answered and the client hasn't send a single message yet\n if (this.meta.firstAnswer) {\n this.setInnerCircleState(INNER_CIRCLE_STATE.Waiting);\n this.startTicker();\n }\n } else {\n // propect answered/ red dot was removed\n\n this.setInnerCircleState(INNER_CIRCLE_STATE.Quiet);\n this.stopTicker();\n }\n }\n\n if (prev.firstAnswer !== curr.firstAnswer && curr.firstAnswer) {\n // prospect has answered for the first time\n\n this.setInnerCircleState(INNER_CIRCLE_STATE.Quiet);\n this.stopTicker();\n }\n\n this.buildCircleOpts();\n return;\n }\n }\n\n ngOnDestroy(): void {\n this.componentDestroyed$.next();\n this.componentDestroyed$.complete();\n this.imageLoader$.complete();\n }\n\n private setInnerState(): void {\n const decision: ProgressDecision = computeInnerState({\n createdAt: this.overview.createdAt,\n lastMessageTimestamp: this.meta.lastResponseTimestamp,\n firstAnswer: this.meta.firstAnswer,\n waitingAnswer: this.meta.waitingAnswer,\n innerMax: this.innerMaxValue,\n conversationFlags: this.meta.conversationFlags,\n });\n if (!decision) return;\n\n this.setInnerCircleState(decision.state, decision.innerValue, decision.basedOn);\n\n if (decision.tick === 'start') {\n this.startTicker();\n } else {\n this.stopTicker();\n }\n\n this.buildCircleOpts();\n }\n\n private stepProgress(): void {\n if (this.innerValue <= this.innerMaxValue && (this.innerState === INNER_CIRCLE_STATE.Waiting || this.innerState === INNER_CIRCLE_STATE.Unresponsive)) {\n this.innerValue = Math.max(this.innerValue - this.progressGap, 0);\n this.buildCircleOpts();\n }\n\n if (this.innerValue === 0 && this.innerState === INNER_CIRCLE_STATE.Waiting) {\n this.setInnerCircleState(INNER_CIRCLE_STATE.Unresponsive);\n }\n\n if (this.innerValue === 0 && this.innerState === INNER_CIRCLE_STATE.Unresponsive) {\n this.setInnerCircleState(INNER_CIRCLE_STATE.Redelegation);\n this.stopTicker();\n }\n }\n\n private loadProfileImage(): void {\n from([this.overview.primary.src, this.overview.secondary.src])\n .pipe(\n takeUntil(this.componentDestroyed$),\n concatMap((imageSrc) => {\n return new Observable<boolean>((imageObserver) => {\n const image: HTMLImageElement = new Image();\n image.src = imageSrc;\n\n image.onload = () => {\n imageObserver.next(true);\n imageObserver.complete();\n };\n\n image.onerror = () => {\n imageObserver.error(false);\n };\n });\n }),\n )\n .subscribe({\n complete: () => {\n this.imageLoader$.next(true);\n },\n error: () => {\n this.imageLoader$.next(false);\n },\n });\n }\n\n private startTicker(): void {\n // guard: if already active, do nothing\n if (this.tickerSub) return;\n\n // 🚫 'runOutsideAngular()' ensures Angular doesn’t trigger global change detection\n // on every timer emission (which can happen every minute or less).\n // Without it, Angular would run 'ApplicationRef.tick()' and walk the entire component tree,\n // even if only one component actually needs to update.\n //\n // By running the ticking logic outside Angular’s zone,\n // we keep the main thread lighter and avoid unnecessary DOM checks.\n // Then, we re-enter Angular manually using 'run()'\n // and call 'markForCheck()' to update this component only.\n //\n // This pattern is ideal when using 'ChangeDetectionStrategy.OnPush'\n // and gives us precise, efficient rendering control.\n this.ngZone.runOutsideAngular(() => {\n this.tickerSub = this.ticker.tick$.pipe(takeUntil(this.componentDestroyed$)).subscribe((n) => {\n this.stepProgress();\n this.ngZone.run(() => this.cdr.markForCheck());\n });\n });\n }\n\n private stopTicker(): void {\n this.tickerSub?.unsubscribe();\n this.tickerSub = null;\n }\n\n private setInnerCircleState(preset: INNER_CIRCLE_STATE, innerValue: number = null, basedOn: COUNTER_FLAG_BASE = null): void {\n const lookUpMap: Record<\n INNER_CIRCLE_STATE,\n {\n innerValue: number;\n showIllumination: boolean;\n showValueProportionLabel: boolean;\n innerPartialColors: IInnerPartialCircleProgressColors;\n basedOn: COUNTER_FLAG_BASE;\n }\n > = {\n waiting: {\n innerValue: this.innerMaxValue,\n showIllumination: false,\n showValueProportionLabel: true,\n innerPartialColors: innerProgressWhiteColors,\n basedOn: this.basedOn,\n },\n quiet: {\n innerValue: this.innerMaxValue,\n showIllumination: false,\n showValueProportionLabel: false,\n innerPartialColors: innerProgressDefaultColors,\n basedOn: null,\n },\n unresponsive: {\n innerValue: this.innerMaxValue,\n showIllumination: true,\n showValueProportionLabel: true,\n innerPartialColors: innerProgressPinkColors,\n basedOn: this.basedOn,\n },\n redelegation: {\n innerValue: this.innerMaxValue,\n showIllumination: false,\n showValueProportionLabel: false,\n innerPartialColors: innerProgressTealColors,\n basedOn: this.basedOn,\n },\n };\n\n const map = lookUpMap[preset];\n\n this.innerValue = innerValue ?? map.innerValue;\n this.showIllumination = map.showIllumination;\n this.showValueProportionLabel = map.showValueProportionLabel;\n this.innerPartialColors = map.innerPartialColors;\n this.basedOn = basedOn ?? map.basedOn;\n this.innerState = preset;\n\n if (preset === INNER_CIRCLE_STATE.Unresponsive) {\n this.sendConversationFlag.emit({\n timestamp: new Date(),\n prospectId: this.overview._id,\n basedOn: this.basedOn,\n flag: CONVERSATION_FLAG.UNRESPONSIVE,\n });\n } else if (preset === INNER_CIRCLE_STATE.Redelegation) {\n this.sendConversationFlag.emit({\n timestamp: new Date(),\n prospectId: this.overview._id,\n basedOn: this.basedOn,\n flag: CONVERSATION_FLAG.REDELEGATION,\n });\n }\n\n this.buildCircleOpts();\n }\n\n private buildCircleOpts(): void {\n this.circleOpts = {\n value: this.overview.preferences + this.overview.personality,\n max: this.maxValue,\n partialColors: this.partialColors,\n showExternalPartialCircleProgress: this.showExternalPartialCircleProgress && this.expand,\n showValueProportionLabel: this.showValueProportionLabel,\n hasNotification: this.meta?.waitingAnswer,\n\n inner: {\n value: this.innerValue,\n max: this.innerMaxValue,\n colors: this.innerPartialColors,\n state: this.innerState,\n showIllumination: this.showIllumination,\n },\n\n imageUrl: this.overview.primary?.src,\n\n suffix: '',\n prefix: '',\n };\n }\n}\n","@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","export enum AlertStatusFields {\n upcomingDates = 'upcomingDates',\n\n compatibilityProfileTrait = 'compatibilityProfileTrait',\n compatibilityProfileSpider = 'compatibilityProfileSpider',\n\n chatHandoff = 'chatHandoff',\n chatProgress = 'chatProgress',\n\n chatMeetupAgenda = 'chatMeetupAgenda',\n face = 'face',\n}\n","export enum MatcherStatuses {\n STATUS0 = 'no contact',\n STATUS1 = '1st exchange',\n STATUS2 = '2nd exchange',\n STATUS3 = '3rd exchange',\n STATUS4 = '2+ laughs',\n STATUS5 = 'idea signalled',\n STATUS6 = 'alt contact',\n STATUS7 = 'any romance',\n STATUS8 = 'locale confirmed',\n STATUS9 = 'time confirmed',\n STATUS10 = 'all followup',\n}\n","import { MatcherStatuses } from '../enums/matcher-statuses.enum';\nimport { IStatus } from '../interfaces/status.interface';\n\nexport const MATCHER_STATUSES: IStatus[] = [\n {\n title: '1st',\n subtitle: 'exchange',\n value: MatcherStatuses.STATUS1,\n },\n {\n title: '2nd',\n subtitle: 'exchange',\n value: MatcherStatuses.STATUS2,\n },\n {\n title: '3rd',\n subtitle: 'exchange',\n value: MatcherStatuses.STATUS3,\n },\n {\n title: '2+',\n subtitle: 'laughs',\n value: MatcherStatuses.STATUS4,\n },\n {\n title: 'idea',\n subtitle: 'signalled',\n value: MatcherStatuses.STATUS5,\n },\n {\n title: 'alt',\n subtitle: 'contact',\n value: MatcherStatuses.STATUS6,\n },\n {\n title: 'any',\n subtitle: 'romance',\n value: MatcherStatuses.STATUS7,\n },\n {\n title: 'locale',\n subtitle: 'confirmed',\n value: MatcherStatuses.STATUS8,\n },\n {\n title: 'time',\n subtitle: 'confirmed',\n value: MatcherStatuses.STATUS9,\n },\n {\n title: 'all',\n subtitle: 'followup',\n value: MatcherStatuses.STATUS10,\n },\n];\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { MatcherStatuses } from '../enums/matcher-statuses.enum';\nimport { MATCHER_STATUSES } from '../lookups/matcher-statuses.lookup';\n\n@Pipe({\n name: 'isStatusIncluded',\n standalone: true,\n})\nexport class IsStatusIncludedPipe implements PipeTransform {\n transform(status: MatcherStatuses, index: number) {\n const statusFound = MATCHER_STATUSES.findIndex((stat) => status === stat.value);\n\n return index < statusFound + 1;\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\nimport { ButtonsModule } from '@naniteninja/ionic-lib';\nimport { LibChatComponentModule } from '../chat/chat.component.module';\nimport { IMessage } from '../chat/interfaces/message.interface';\nimport { MatcherStatuses } from './enums/matcher-statuses.enum';\nimport { MATCHER_STATUSES } from './lookups/matcher-statuses.lookup';\nimport { IsStatusIncludedPipe } from './pipes/is-status-included.pipe';\n\n@Component({\n selector: 'lib-matcher-statuses',\n imports: [LibChatComponentModule, ButtonsModule, IsStatusIncludedPipe],\n templateUrl: './matcher-statuses.component.html',\n styleUrls: ['./matcher-statuses.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatcherStatusesComponent {\n @Input() adsTemplate?: TemplateRef<HTMLElement>;\n @Input() status: MatcherStatuses = MatcherStatuses.STATUS0;\n @Input() hideStatuses: boolean = false;\n @Input() messages: IMessage[] = [];\n @Input() inputValue?: string = '';\n @Input() maxLength: number = 100;\n @Input() responseTime?: string = '';\n @Input() disabled: boolean = false;\n @Input() prospectJoinDate: Date;\n @Output() getMessages = new EventEmitter<boolean>();\n @Output() sendMessage = new EventEmitter<IMessage>();\n\n public MATCHER_STATUSES: typeof MATCHER_STATUSES = MATCHER_STATUSES;\n\n handleGetMessages(event: boolean) {\n this.getMessages.emit(event);\n }\n\n handleSendMessage(event: IMessage) {\n this.sendMessage.emit(event);\n }\n}\n","<div class=\"matcher-statuses-container\" [class.box-shadow-statuses]=\"!hideStatuses\">\n <div class=\"top-gradient-fade\"></div>\n\n @if (!hideStatuses) {\n <div class=\"status-list\">\n @for (matcherStatus of MATCHER_STATUSES; let idx = $index; track matcherStatus.title) {\n <lib-bubble-btn class=\"custom-bubble-status\" [title]=\"matcherStatus.title\" [subTitle]=\"matcherStatus.subtitle\" [checked]=\"status | isStatusIncluded: idx\"></lib-bubble-btn>\n }\n </div>\n }\n <lib-chat\n class=\"conversation-chat\"\n (getMessages)=\"handleGetMessages($event)\"\n (sendMessage)=\"handleSendMessage($event)\"\n [dateMessages]=\"messages\"\n [inputValue]=\"inputValue\"\n [maxLength]=\"maxLength\"\n [responseTime]=\"responseTime\"\n [disabled]=\"disabled\"\n [prospectJoinDate]=\"prospectJoinDate\"\n >\n </lib-chat>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'initials',\n pure: true,\n standalone: false,\n})\nexport class InitialsPipe implements PipeTransform {\n transform(fullName: string, numChars: number = 2): string {\n if (!fullName?.trim()) {\n return '';\n }\n return fullName\n .trim()\n .split(/\\s+/)\n .slice(0, numChars)\n .map((n) => n.substring(0, 2).toUpperCase())\n .join('');\n }\n}\n","import { ICircleData } from '../interfaces/chart-data-circle.interface';\nimport { IDefsF } from '../interfaces/chart-data-defs-f.interface';\nimport { IDefsLG } from '../interfaces/chart-data-defs-lg.interface';\nimport { IDefsRG } from '../interfaces/chart-data-defs-rg.interface';\n\nexport const circleData: ICircleData[] = [\n {\n cx: '0',\n cy: '0',\n r: '100',\n transform: `translate(${300 / 2},${300 / 2})`,\n stroke: 'url(#circleBorderRadiant)',\n 'stroke-width': '1.5',\n fill: 'url(#circleFillRadial)',\n },\n {\n cx: '0',\n cy: '0',\n r: '40',\n fill: 'black',\n transform: `translate(${300 / 2},${300 / 2})`,\n filter: 'url(#innerCircleBlurEffect)',\n },\n {\n cx: '0',\n cy: '0',\n r: '23',\n fill: '#ffffff0f',\n transform: `translate(${300 / 2},${300 / 2})`,\n filter: 'url(#innerWhiteCircleBlurEffect)',\n },\n];\n\nexport const defsLG: IDefsLG[] = [\n {\n id: 'circleBorderRadiant',\n x1: '0%',\n y1: '0%',\n x2: '100%',\n y2: '0%',\n stopTags: [\n { offset: '0%', style: 'stop-color:#562232;stop-opacity:1' },\n { offset: '100%', style: 'stop-color:#E6688D;stop-opacity:1' },\n ],\n },\n {\n id: 'circleFillRadial',\n x1: '0%',\n y1: '0%',\n x2: '100%',\n y2: '0%',\n stopTags: [\n { offset: '0%', style: 'stop-color:#00000043;stop-opacity:1' },\n { offset: '100%', style: 'stop-color:#29252D;stop-opacity:0.8' },\n ],\n },\n {\n id: 'needleRadiant',\n x1: '0%',\n y1: '0%',\n x2: '100%',\n y2: '0%',\n stopTags: [\n { offset: '0%', style: 'stop-color:#8d61791b; stop-opacity:1' },\n { offset: '30%', style: 'stop-color:#E854AC; stop-opacity:0.5' },\n { offset: '70%', style: 'stop-color:#E854AC; stop-opacity:0.5' },\n { offset: '100%', style: 'stop-color:#8d61791b; stop-opacity:1' },\n ],\n },\n];\n\nexport const defsF: IDefsF[] = [\n {\n id: 'innerCircleBlurEffect',\n x: '-40%',\n y: '-40%',\n height: '200%',\n width: '200%',\n feGaussianTags: [{ in: 'SourceGraphic', stdDeviation: '12' }],\n },\n {\n id: 'innerWhiteCircleBlurEffect',\n x: '-40%',\n y: '-40%',\n height: '200%',\n width: '200%',\n feGaussianTags: [{ in: 'SourceGraphic', stdDeviation: '10' }],\n },\n];\n\nexport const defsRG: IDefsRG[] = [\n {\n id: 'innerCircleRadialEffect',\n cx: '50%',\n cy: '50%',\n r: '30%',\n stopTags: [\n { offset: '0%', style: 'stop-color:#5050591a; stop-opacity:1' },\n { offset: '30%', style: 'stop-color:#5050592a; stop-opacity:1' },\n { offset: '70%', style: 'stop-color:#000000; stop-opacity:1' },\n { offset: '100%', style: 'stop-color: #000000; stop-opacity:1' },\n ],\n },\n {\n id: 'firstGraphColor',\n cx: '50%',\n cy: '50%',\n r: '50%',\n stopTags: [\n { offset: '0%', style: 'stop-color:#47454C; stop-opacity:0.3' },\n { offset: '30%', style: 'stop-color:#47454C; stop-opacity:0.3' },\n { offset: '70%', style: 'stop-color:#6c6b70; stop-opacity:0.3' },\n { offset: '100%', style: 'stop-color: #753D43; stop-opacity:0.5' },\n ],\n },\n {\n id: 'secondGraphColor',\n cx: '50%',\n cy: '50%',\n r: '0%',\n stopTags: [\n { offset: '0%', style: 'stop-color:#48263C; stop-opacity:0.3' },\n { offset: '30%', style: 'stop-color:#48263C; stop-opacity:0.3' },\n { offset: '70%', style: 'stop-color:#48263C; stop-opacity:0.3' },\n { offset: '100%', style: 'stop-color:#48263C; stop-opacity:0.3' },\n ],\n },\n {\n id: 'thirdGraphColor',\n cx: '50%',\n cy: '50%',\n r: '0%',\n stopTags: [\n { offset: '0%', style: 'stop-color:#006400; stop-opacity:0.3' },\n { offset: '30%', style: 'stop-color:#006400; stop-opacity:0.3' },\n { offset: '70%', style: 'stop-color:#006400; stop-opacity:0.3' },\n { offset: '100%', style: 'stop-color:#006400; stop-opacity:0.3' },\n ],\n },\n {\n id: 'fourthGraphColor',\n cx: '50%',\n cy: '50%',\n r: '0%',\n stopTags: [\n { offset: '0%', style: 'stop-color:#8B0000; stop-opacity:0.3' },\n { offset: '30%', style: 'stop-color:#8B0000; stop-opacity:0.3' },\n { offset: '70%', style: 'stop-color:#8B0000; stop-opacity:0.3' },\n { offset: '100%', style: 'stop-color:#8B0000; stop-opacity:0.3' },\n ],\n },\n {\n id: 'fifthGraphColor',\n cx: '50%',\n cy: '50%',\n r: '0%',\n stopTags: [\n { offset: '0%', style: 'stop-color:#00008B; stop-opacity:0.3' },\n { offset: '30%', style: 'stop-color:#00008B; stop-opacity:0.3' },\n { offset: '70%', style: 'stop-color:#00008B; stop-opacity:0.3' },\n { offset: '100%', style: 'stop-color:#00008B; stop-opacity:0.3' },\n ],\n },\n {\n id: 'sixthGraphColor',\n cx: '50%',\n cy: '50%',\n r: '0%',\n stopTags: [\n { offset: '0%', style: 'stop-color:#8B008B; stop-opacity:0.3' },\n { offset: '30%', style: 'stop-color:#8B008B; stop-opacity:0.3' },\n { offset: '70%', style: 'stop-color:#8B008B; stop-opacity:0.3' },\n { offset: '100%', style: 'stop-color:#8B008B; stop-opacity:0.3' },\n ],\n },\n {\n id: 'seventhGraphColor',\n cx: '50%',\n cy: '50%',\n r: '0%',\n stopTags: [\n { offset: '0%', style: 'stop-color:#FF8C00; stop-opacity:0.3' },\n { offset: '30%', style: 'stop-color:#FF8C00; stop-opacity:0.3' },\n { offset: '70%', style: 'stop-color:#FF8C00; stop-opacity:0.3' },\n { offset: '100%', style: 'stop-color:#FF8C00; stop-opacity:0.3' },\n ],\n },\n {\n id: 'eighthGraphColor',\n cx: '50%',\n cy: '50%',\n r: '0%',\n stopTags: [\n { offset: '0%', style: 'stop-color:#008080; stop-opacity:0.3' },\n { offset: '30%', style: 'stop-color:#008080; stop-opacity:0.3' },\n { offset: '70%', style: 'stop-color:#008080; stop-opacity:0.3' },\n { offset: '100%', style: 'stop-color:#008080; stop-opacity:0.3' },\n ],\n },\n {\n id: 'ninthGraphColor',\n cx: '50%',\n cy: '50%',\n r: '0%',\n stopTags: [\n { offset: '0%', style: 'stop-color:#D2691E; stop-opacity:0.3' },\n { offset: '30%', style: 'stop-color:#D2691E; stop-opacity:0.3' },\n { offset: '70%', style: 'stop-color:#D2691E; stop-opacity:0.3' },\n { offset: '100%', style: 'stop-color:#D2691E; stop-opacity:0.3' },\n ],\n },\n {\n id: 'tenthGraphColor',\n cx: '50%',\n cy: '50%',\n r: '0%',\n stopTags: [\n { offset: '0%', style: 'stop-color:#9400D3; stop-opacity:0.3' },\n { offset: '30%', style: 'stop-color:#9400D3; stop-opacity:0.3' },\n { offset: '70%', style: 'stop-color:#9400D3; stop-opacity:0.3' },\n { offset: '100%', style: 'stop-color:#9400D3; stop-opacity:0.3' },\n ],\n },\n {\n id: 'eleventhGraphColor',\n cx: '50%',\n cy: '50%',\n r: '0%',\n stopTags: [\n { offset: '0%', style: 'stop-color:#4B0082; stop-opacity:0.3' },\n { offset: '30%', style: 'stop-color:#4B0082; stop-opacity:0.3' },\n { offset: '70%', style: 'stop-color:#4B0082; stop-opacity:0.3' },\n { offset: '100%', style: 'stop-color:#4B0082; stop-opacity:0.3' },\n ],\n },\n {\n id: 'twelfthGraphColor',\n cx: '50%',\n cy: '50%',\n r: '0%',\n stopTags: [\n { offset: '0%', style: 'stop-color:#800000; stop-opacity:0.3' },\n { offset: '30%', style: 'stop-color:#800000; stop-opacity:0.3' },\n { offset: '70%', style: 'stop-color:#800000; stop-opacity:0.3' },\n { offset: '100%', style: 'stop-color:#800000; stop-opacity:0.3' },\n ],\n },\n {\n id: 'thirteenthGraphColor',\n cx: '50%',\n cy: '50%',\n r: '0%',\n stopTags: [\n { offset: '0%', style: 'stop-color:#808000; stop-opacity:0.3' },\n { offset: '30%', style: 'stop-color:#808000; stop-opacity:0.3' },\n { offset: '70%', style: 'stop-color:#808000; stop-opacity:0.3' },\n { offset: '100%', style: 'stop-color:#808000; stop-opacity:0.3' },\n ],\n },\n {\n id: 'fourteenthGraphColor',\n cx: '50%',\n cy: '50%',\n r: '0%',\n stopTags: [\n { offset: '0%', style: 'stop-color:#483D8B; stop-opacity:0.3' },\n { offset: '30%', style: 'stop-color:#483D8B; stop-opacity:0.3' },\n { offset: '70%', style: 'stop-color:#483D8B; stop-opacity:0.3' },\n { offset: '100%', style: 'stop-color:#483D8B; stop-opacity:0.3' },\n ],\n },\n {\n id: 'fifteenthGraphColor',\n cx: '50%',\n cy: '50%',\n r: '0%',\n stopTags: [\n { offset: '0%', style: 'stop-color:#2F4F4F; stop-opacity:0.3' },\n { offset: '30%', style: 'stop-color:#2F4F4F; stop-opacity:0.3' },\n { offset: '70%', style: 'stop-color:#2F4F4F; stop-opacity:0.3' },\n { offset: '100%', style: 'stop-color:#2F4F4F; stop-opacity:0.3' },\n ],\n },\n];\n","import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, inject, Input, OnChanges, OnDestroy, SimpleChanges, ViewChild } from '@angular/core';\nimport * as d3 from 'd3';\nimport { SharedModule } from '../../shared/shared.module';\nimport { InitialsPipe } from '../../pipes/initials/initials.pipe';\nimport { AlertStatusFields } from '../lib-client-dashboard/enums/alert-status-fields.enum';\nimport { ICircleData } from './interfaces/chart-data-circle.interface';\nimport { IDefsF } from './interfaces/chart-data-defs-f.interface';\nimport { IDefsLG } from './interfaces/chart-data-defs-lg.interface';\nimport { IDefsRG } from './interfaces/chart-data-defs-rg.interface';\nimport { ISpiderChartConfig } from './interfaces/config.interface';\nimport { IDataset } from './interfaces/dataset.interface';\nimport { IPolygonColor } from './interfaces/polygon-color.interface';\nimport { ISpiderChartAttribute } from './interfaces/spider-chart-attribute.interface';\nimport { circleData, defsF, defsLG, defsRG } from './lookup/svg-config.lookup';\n\n@Component({\n selector: 'lib-spider-chart',\n templateUrl: './spider-chart.component.html',\n styleUrl: './spider-chart.component.scss',\n imports: [SharedModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SpiderChartComponent implements OnChanges, OnDestroy, AfterViewInit {\n @ViewChild('D3Chart') d3Chart: ElementRef;\n @Input() datasets: IDataset[] = [];\n @Input() config: ISpiderChartConfig;\n @Input() polygon_colors: IPolygonColor[] = [];\n @Input() showChartInfo: boolean = true;\n\n public alertStatusFields = AlertStatusFields;\n public titleAlertPopup = '';\n public descriptionAlertPopup = '';\n public isAlertPopupClosing = false;\n public timeStateAlertPopup = 0;\n public numberAlertPopup: number;\n\n public svg: d3.Selection<SVGSVGElement, unknown, HTMLElement, unknown>;\n public defsRG: IDefsRG[] = [];\n public defsF: IDefsF[] = [];\n public defsLG: IDefsLG[] = [];\n public circleData: ICircleData[] = [];\n public readonly initialsPipe: InitialsPipe = inject(InitialsPipe);\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if ((changes['datasets'] || changes['config']) && this.svg) {\n if (this.datasets.length && this.config) {\n this.createRadarChart();\n } else if (changes['config']?.currentValue?.['fullScreen'] !== changes['config']?.previousValue?.['fullScreen']) {\n this.createRadarChart();\n }\n }\n }\n\n ngAfterViewInit(): void {\n this.defsRG = defsRG;\n this.defsF = defsF;\n this.defsLG = defsLG;\n this.circleData = circleData;\n this.initializeChart();\n }\n\n ngOnDestroy(): void {\n if (this.svg) {\n this.svg.remove();\n this.svg = null;\n }\n }\n\n public onClosedAlert(data: { event: boolean; field: AlertStatusFields }): void {\n console.log(data);\n }\n\n private initializeChart(): void {\n this.svg = this.createSvgObject();\n const defsGroup = this.svg.append('g');\n\n this.defsLG.forEach((defData) => {\n this.createDefsAndLinearGradient(defsGroup, defData);\n });\n\n this.defsF.forEach((defData) => {\n this.createDefsAndFilter(defsGroup, defData);\n });\n\n this.defsRG.forEach((defData) => {\n this.createDefsAndRadialGradient(defsGroup, defData);\n });\n\n const circleGroup = this.svg.append('g');\n this.createCircle(circleGroup, this.circleData);\n if (!this.config) return;\n this.createRadarChart();\n }\n\n private createSvgObject(): d3.Selection<SVGSVGElement, unknown, HTMLElement, unknown> {\n return d3.select(this.d3Chart?.nativeElement).append('svg').attr('class', 'svg').attr('height', 300).attr('width', 300);\n }\n\n private createLine(\n group: d3.Selection<SVGGElement, unknown, HTMLElement, unknown>,\n data: ISpiderChartAttribute[],\n MaxValue: number,\n angleSlice: number,\n rScale: d3.ScaleLinear<number, number>,\n ): void {\n group.selectAll('line').remove();\n return group\n .selectAll('line')\n .data(data)\n .enter()\n .append('g')\n .append('line')\n .attr('class', 'line')\n .attr('class', 'line-group')\n .attr('x1', 0)\n .attr('y1', 0)\n .attr('x2', (_d, i) => rScale(MaxValue * 1.4) * Math.cos(angleSlice * i + 0.01 - Math.PI / 2))\n .attr('y2', (_d, i) => rScale(MaxValue * 1.4) * Math.sin(angleSlice * i + 0.01 - Math.PI / 2))\n .attr('stroke', 'url(#needleRadiant)')\n .attr('transform', 'translate(150,150)');\n }\n\n private createCircle(group: d3.Selection<SVGGElement, unknown, HTMLElement, unknown>, data: ICircleData[]): void {\n data?.forEach((datum) => {\n const g = group.append('circle');\n Object.keys(datum).forEach((key) => {\n g.attr(key, datum[key]);\n });\n });\n return group;\n }\n\n private createText(\n group: d3.Selection<SVGGElement, unknown, HTMLElement, unknown>,\n data: ISpiderChartAttribute[],\n rScale: d3.ScaleLinear<number, number>,\n MaxValue: number,\n angleSlice: number,\n ) {\n const toolTip = d3.select('#tooltip');\n group.selectAll('text').remove();\n\n const isFullScreenActive: boolean = this.config.fullScreen;\n\n // TODO left based on position of modal\n const left = isFullScreenActive ? 0 : 0;\n const top = isFullScreenActive ? -80 : -220;\n return group\n .selectAll('text')\n .data(data)\n .enter()\n .append('text')\n .text((d) => this.initialsPipe.transform(d.text))\n .attr('x', (_d, i) => {\n const x2 = rScale(MaxValue * 1.2) * Math.cos(angleSlice * i + 0.1 - Math.PI / 2);\n return x2;\n })\n .attr('y', (_d, i) => {\n const y2 = rScale(MaxValue * 1.2) * Math.sin(angleSlice * i + 0.1 - Math.PI / 2);\n return y2;\n })\n .attr('dy', '0.35em')\n .attr('transform', 'translate(150,150)')\n .style('fill', '#FE3C72')\n .style('text-shadow', '1px 2px 1px #000')\n .attr('class', 'line-label')\n .on('pointerdown', (event, d: ISpiderChartAttribute) => {\n const { titleAlertPopup, descriptionAlertPopup } = d;\n this.titleAlertPopup = titleAlertPopup;\n this.descriptionAlertPopup = descriptionAlertPopup;\n this.isAlertPopupClosing = false;\n this.timeStateAlertPopup = new Date().getTime();\n this.numberAlertPopup = Math.floor(Math.random() * 10);\n this.cdr.detectChanges();\n toolTip\n .style('display', 'block')\n .style('left', event.pageX + left + 'px')\n .style('top', event.pageY + top < 0 ? 0 : event.pageY + top + 'px');\n })\n .on('pointerup', (event, d: ISpiderChartAttribute) => {});\n }\n\n private createPolygons(group: d3.Selection<SVGGElement, unknown, HTMLElement, unknown>, datasets: IDataset[], rScale: d3.ScaleLinear<number, number>, angleSlice: number): void {\n group.selectAll('polygon').remove();\n group.selectAll('.radarCircle').remove();\n\n const polygonPoints = (data) => {\n const points = data?.keys?.map((key, i) => {\n const r = rScale(data?.values[key] ?? 1 * 1);\n const x = r * Math.cos(angleSlice * i + 0.01 - Math.PI / 2);\n const y = r * Math.sin(angleSlice * i + 0.01 - Math.PI / 2);\n return `${x},${y}`;\n });\n return points.join(' ');\n };\n group\n .selectAll('polygon')\n .data(datasets)\n .enter()\n .append('polygon')\n .attr('points', (d) => polygonPoints(d ?? {}))\n .attr('stroke', (_, i) => _.polygon_color?.value)\n .attr('transform', 'translate(150,150)')\n\n .attr('fill', (_, i) => `url(${this.polygon_colors?.[i]?.label})`);\n datasets.forEach((data, j) => {\n const allValuesAreZero = data.keys.every((key) => data.values[key] === 0);\n if (!allValuesAreZero) {\n group\n .append('g')\n .selectAll('circle')\n .data(data.keys)\n .enter()\n .append('circle')\n .attr('class', 'radarCircle')\n .attr('r', 3)\n .attr('cx', (key, i) => rScale(data.values[key] ?? 0) * Math.cos(angleSlice * i - Math.PI / 2))\n .attr('cy', (key, i) => rScale(data.values[key] ?? 0) * Math.sin(angleSlice * i - Math.PI / 2))\n .style('fill', 'white')\n .style('stroke', () => this.polygon_colors?.[j]?.value) // Using stroke colors from the strokeColors array\n .attr('transform', 'translate(150,150)')\n .attr('filter', 'blur(1px)')\n .style('stroke-width', 2)\n .style('fill-opacity', 0.8);\n }\n });\n }\n\n private createDefsAndLinearGradient(group: d3.Selection<SVGGElement, unknown, HTMLElement, unknown>, data: IDefsLG): void {\n const defs = group.append('defs').append('linearGradient').attr('id', data.id).attr('x1', data.x1).attr('y1', data.y1).attr('x2', data.x2).attr('y2', data.y2);\n\n data.stopTags.forEach((elem) => {\n defs.append('stop').attr('offset', elem.offset).attr('style', elem.style);\n });\n }\n\n private createDefsAndFilter(group: d3.Selection<SVGGElement, unknown, HTMLElement, unknown>, data: IDefsF): void {\n const defs = group.append('defs').append('filter').attr('id', data.id).attr('x', data.x).attr('y', data.y).attr('height', data.height).attr('width', data.width);\n\n data.feGaussianTags.forEach((elem) => {\n defs.append('feGaussianBlur').attr('in', elem.in).attr('stdDeviation', elem.stdDeviation);\n });\n }\n\n private createDefsAndRadialGradient(group: d3.Selection<SVGGElement, unknown, HTMLElement, unknown>, data: IDefsRG): void {\n const defs = group.append('defs').append('radialGradient').attr('id', data.id).attr('cx', data.cy).attr('cy', data.cx).attr('r', data.r);\n\n data.stopTags.forEach((elem) => {\n defs.append('stop').attr('offset', elem.offset).attr('style', elem.style);\n });\n }\n\n private createRadarChart(): void {\n const { maxValue, datasets, attributes } = this.config;\n const allAxis = [...new Set(attributes)].map((i) => i);\n const total = allAxis.length;\n const angleSlice = (Math.PI * 2) / total;\n let MaxValue =\n datasets.length > 0\n ? Math.max(\n ...datasets.reduce((a, i) => {\n return [...a, ...Object.values(i.values)];\n }, []),\n )\n : maxValue;\n MaxValue = MaxValue > 0 ? MaxValue : 25;\n\n const rScale = d3.scaleLinear().range([0, 100]).domain([0, MaxValue]);\n\n this.createLine(this.svg, allAxis, MaxValue, angleSlice, rScale);\n this.createText(this.svg, allAxis, rScale, MaxValue, angleSlice);\n this.createPolygons(this.svg, datasets, rScale, angleSlice);\n }\n}\n","<div id=\"tooltip\">\n <lib-alert-popup [title]=\"titleAlertPopup\" [description]=\"descriptionAlertPopup\" [timeState]=\"timeStateAlertPopup\" [number]=\"numberAlertPopup\"></lib-alert-popup>\n</div>\n\n<div class=\"container\">\n <div class=\"d3-container\">\n <div class=\"d3-chart\" #D3Chart></div>\n @if (showChartInfo) {\n <div class=\"chartInfo\">\n @if (datasets.length > 0) {\n <div class=\"datachart\">\n @for (dataset of datasets; let j = $index; track dataset) {\n <div class=\"legend-item\">\n <div [style.border]=\"'5px solid ' + polygon_colors?.[j]?.value\" [style.boxShadow]=\"'0px 0px 12px ' + polygon_colors?.[j]?.value\" class=\"legend-color\"></div>\n {{ dataset.title }}\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n</div>\n","import { SwiperOptions } from 'swiper/types';\n\nexport const dashboardMainSwiperDefaultOptions: SwiperOptions = {\n centeredSlides: true,\n grabCursor: true,\n slidesPerView: 'auto',\n spaceBetween: 20,\n keyboard: {\n enabled: true,\n onlyInViewport: false,\n },\n};\n","import { SwiperOptions } from 'swiper/types';\n\nexport const dashboardThumbsSwiperDefaultOptions: SwiperOptions = {\n centeredSlides: true,\n centeredSlidesBounds: true,\n grabCursor: true,\n freeMode: {\n enabled: true,\n sticky: true,\n },\n slidesPerView: 10,\n spaceBetween: 0,\n breakpoints: {\n 640: {\n slidesPerView: 10,\n },\n 1024: {\n slidesPerView: 10,\n },\n },\n mousewheel: {\n invert: true,\n },\n keyboard: {\n enabled: true,\n onlyInViewport: false,\n },\n};\n","import { CommonModule } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, ContentChild, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport Swiper from 'swiper';\nimport { register } from 'swiper/element/bundle';\nimport { SwiperOptions } from 'swiper/types';\nimport { dashboardMainSwiperDefaultOptions } from './lookups/dashboard-main-swiper-options';\nimport { dashboardThumbsSwiperDefaultOptions } from './lookups/dashboard-thumbs-swiper-options';\n\nregister();\n@Component({\n selector: 'lib-dashboard-swipeable-tabs',\n imports: [CommonModule, TranslateModule],\n templateUrl: './dashboard-swipeable-tabs.component.html',\n styleUrls: ['./dashboard-swipeable-tabs.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LibDashboardSwipeableTabsComponent implements AfterViewInit {\n @ViewChild('thumbSwiper', { static: false }) thumbSwiper!: ElementRef<{ initialize: () => {} }>;\n @ViewChild('mainSwiper', { static: false }) mainSwiper!: ElementRef<{ initialize: () => {} }>;\n @ContentChild('thumbSlides', { static: false }) thumbSlides: ElementRef | undefined;\n @Input() thumbsSwiperOptions: SwiperOptions = dashboardThumbsSwiperDefaultOptions;\n @Input() mainSwiperOptions: SwiperOptions = dashboardMainSwiperDefaultOptions;\n @Input() activeIndex: number = 0;\n @Input() bottomThumbs: boolean = false;\n @Input() slideContentMaxHeight: string = 'auto';\n @Input() mainSwiperHeight: string = 'auto';\n @Input() subMainSwiperHeight: string = 'auto';\n @Input() thumbsSwiperHeight: string = 'auto';\n @Input() generalSwiperHeight: string = 'auto';\n\n @Output() activeIndexChange: EventEmitter<number> = new EventEmitter();\n private thumbsSwiperInstance: Swiper;\n private mainSwiperInstance: Swiper;\n\n ngAfterViewInit(): void {\n this.initSwiperInstances();\n }\n\n private initSwiperInstances(): void {\n const ref = this;\n const swiperParams: SwiperOptions = {\n ...this.thumbsSwiperOptions,\n initialSlide: this.activeIndex,\n on: {\n init(swiper: Swiper) {\n ref.thumbsSwiperInstance = swiper;\n ref.initMainSwiper();\n },\n click(swiper: Swiper) {\n if (swiper?.clickedIndex > -1) {\n if (ref.activeIndex !== swiper?.clickedIndex) {\n ref.activeIndex = swiper.clickedIndex;\n ref.activeIndexChange.emit(swiper.clickedIndex);\n }\n }\n },\n },\n };\n Object.assign(this.thumbSwiper.nativeElement, swiperParams);\n this.thumbSwiper.nativeElement.initialize();\n }\n\n private initMainSwiper(): void {\n const ref = this;\n\n const swiperParams: SwiperOptions = {\n ...this.mainSwiperOptions,\n initialSlide: this.activeIndex,\n autoHeight: true,\n thumbs: {\n swiper: this.thumbsSwiperInstance,\n },\n on: {\n init(swiper: Swiper) {\n ref.mainSwiperInstance = swiper;\n },\n slideChange(swiper: Swiper) {\n if (ref.activeIndex !== swiper?.activeIndex) {\n ref.activeIndex = swiper?.activeIndex;\n ref.activeIndexChange.emit(swiper?.activeIndex);\n }\n },\n },\n };\n Object.assign(this.mainSwiper.nativeElement, swiperParams);\n this.mainSwiper.nativeElement.initialize();\n\n requestAnimationFrame(() => {\n ref.mainSwiperInstance?.update();\n ref.thumbsSwiperInstance?.update();\n });\n }\n}\n","<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","export enum ClientHomeComponent {\n ChatCompatibility = 'ChatCompatibility',\n ChatHandoff = 'ChatHandoff',\n ChatScheduler = 'ChatScheduler',\n ClientMatchSpiderChart = 'ClientMatchSpiderChart',\n ClientMatchTraitChart = 'ClientMatchTraitChart',\n}\n","import { addDays, endOfDay } from 'date-fns';\nimport { of } from 'rxjs';\nimport { IHomeDashboardInputs } from '../interfaces/home-dashboard-inputs.interface';\nimport { ClientHomeComponent } from './../enums/client-home-component.enum';\n\nexport const defaultClientHomeConfig: IHomeDashboardInputs = {\n loading: {\n clientMatches: true,\n },\n default: false,\n component: ClientHomeComponent.ChatHandoff,\n activeIndex: 0,\n slideContentMaxHeight: 'auto',\n clientMatches$: of([]),\n schedulers$: of([]),\n polygonColors: [],\n spiderConfig: null,\n bottomThumbs: true,\n includeTime: true,\n maxLength: 300,\n includeGifMessage: true,\n startDate: new Date(),\n endDate: endOfDay(addDays(new Date(), 6)),\n emptyMessage: '',\n displayBookedStatuses: false,\n displayEmptyDays: true,\n loading$: of(false),\n alertStatus: {},\n showValueProportionLabel: false,\n hideProgressBar: false,\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { map, Observable } from 'rxjs';\nimport { SenderTypes } from '../../chat/enums/sender-types.enum';\nimport { ILibClientMatchOverview } from '../../client-match-overview/interfaces/client-match-overview.interface';\nimport { IChatMeta } from '../interfaces/chat-meta.interface';\n\n@Pipe({\n name: 'chatMeta',\n standalone: true,\n pure: true, // default, but being explicit\n})\nexport class ChatMetaPipe implements PipeTransform {\n transform(clientMatches$: Observable<ILibClientMatchOverview[]>, prospectId: string): Observable<IChatMeta> {\n return clientMatches$?.pipe(\n map((clientMatches) => clientMatches.map((c) => c.prospectData)),\n map((chats) => {\n const chat = chats.find((c) => c.prospectId === prospectId);\n if (!chat || chat.messages.length === 0) {\n return {\n lastResponseTimestamp: null,\n firstAnswer: false,\n waitingAnswer: false,\n conversationFlags: chat?.conversationFlags,\n };\n }\n\n // --- one forward/backward scan, no extra arrays ---\n let lastUserIndex = -1;\n for (let i = chat.messages.length - 1; i >= 0; i--) {\n if (chat.messages[i].sender === SenderTypes.USER) {\n lastUserIndex = i;\n break;\n }\n }\n\n let firstProspectMessageAfterMe: Date | null = null;\n let waitingAnswer = false;\n\n if (lastUserIndex !== -1) {\n for (let i = lastUserIndex + 1; i < chat.messages.length; i++) {\n if (chat.messages[i].sender === SenderTypes.OTHER) {\n firstProspectMessageAfterMe = chat.messages[i].timestamp;\n waitingAnswer = true; // prospect wrote last → waiting\n break;\n }\n }\n }\n\n if (!waitingAnswer) {\n // Either I haven't written, or I wrote last\n const lastMsg = chat.messages[chat.messages.length - 1];\n waitingAnswer = !!lastMsg && lastMsg.sender === SenderTypes.OTHER && lastUserIndex === -1;\n }\n\n return {\n lastResponseTimestamp: firstProspectMessageAfterMe,\n firstAnswer: lastUserIndex !== -1,\n waitingAnswer,\n conversationFlags: chat.conversationFlags,\n };\n }),\n );\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ILibClientMatchOverview } from '../../client-match-overview/interfaces/client-match-overview.interface';\nimport { IHomeDashboardInputs } from '../interfaces/home-dashboard-inputs.interface';\nimport { IPartialCircleProgressColors } from '../interfaces/partial-circle-progress-colors.interface';\nimport { progressDefaultColors } from '../lookup/progress-default-colors.config';\n\n@Pipe({\n name: 'getColorByMatcher',\n standalone: true,\n})\nexport class GetColorByMatcherPipe implements PipeTransform {\n transform(match: ILibClientMatchOverview, config: IHomeDashboardInputs): IPartialCircleProgressColors {\n const defaultColors: IPartialCircleProgressColors = progressDefaultColors;\n\n if (!config?.spiderConfig?.datasets?.length) {\n return defaultColors;\n }\n\n const currentMatch = config.spiderConfig.datasets.find((ma) => ma.title === match.primary?.name || ma.title === match.secondary?.name);\n\n return currentMatch\n ? {\n primary: currentMatch.polygon_color.value,\n secondary: currentMatch.polygon_color.value,\n tertiary: currentMatch.polygon_color.value,\n gradientPrimary: currentMatch.polygon_color.value,\n gradientSecondary: currentMatch.polygon_color.value,\n complete: currentMatch.polygon_color.value,\n incomplete: currentMatch.polygon_color.value,\n }\n : defaultColors;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, inject, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { ButtonsModule } from '@naniteninja/ionic-lib';\nimport { LibChatComponentModule } from '../chat/chat.component.module';\nimport { IMessage } from '../chat/interfaces/message.interface';\nimport { SharedModule } from '../../shared/shared.module';\nimport { ISchedulerAction } from '../calendar/scheduler/interfaces/scheduler.action.interface';\nimport { LibSchedulerComponent } from '../calendar/scheduler/scheduler.component';\nimport { LibClientMatchOverviewComponent } from '../client-match-overview/client-match-overview.component';\nimport { ILibClientMatchOverview } from '../client-match-overview/interfaces/client-match-overview.interface';\nimport { IDashboardMatchRequest } from '../client-match-overview/interfaces/dashboard-match-request.interface';\nimport { ProgressTickerService } from '../client-match-overview/progress-ticker/progress-ticker.service';\nimport { AlertStatusFields } from '../lib-client-dashboard/enums/alert-status-fields.enum';\nimport { MATCHER_STATUSES } from '../matcher-statuses/lookups/matcher-statuses.lookup';\nimport { MatcherStatusesComponent } from '../matcher-statuses/matcher-statuses.component';\nimport { SpiderChartComponent } from '../spider-chart/spider-chart.component';\nimport { LibDashboardSwipeableTabsComponent } from '../dashboard-swipeable-tabs/dashboard-swipeable-tabs.component';\nimport { ClientHomeComponent } from './enums/client-home-component.enum';\nimport { IHomeDashboardInputs } from './interfaces/home-dashboard-inputs.interface';\nimport { defaultClientHomeConfig } from './lookup/client-home.config';\nimport { ChatMetaPipe } from './pipes/chat-meta.pipe';\nimport { GetColorByMatcherPipe } from './pipes/get-color-by-matcher.pipe';\n\n@Component({\n selector: 'lib-client-home',\n imports: [\n CommonModule,\n LibClientMatchOverviewComponent,\n TranslateModule,\n LibDashboardSwipeableTabsComponent,\n LibChatComponentModule,\n LibSchedulerComponent,\n SpiderChartComponent,\n ButtonsModule,\n SharedModule,\n MatcherStatusesComponent,\n GetColorByMatcherPipe,\n ChatMetaPipe,\n ],\n templateUrl: './client-home.component.html',\n styleUrls: ['./client-home.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LibClientHomeComponent implements OnInit, OnDestroy {\n @Input() config: IHomeDashboardInputs;\n\n @Output() activeIndexChange: EventEmitter<number> = new EventEmitter();\n @Output() addMessage: EventEmitter<{ message: IMessage; prospectId: string; matchRequest: IDashboardMatchRequest }> = new EventEmitter();\n @Output() getMessages: EventEmitter<void> = new EventEmitter();\n @Output() bookEvent: EventEmitter<ISchedulerAction> = new EventEmitter();\n @Output() removeSuggestion: EventEmitter<ISchedulerAction> = new EventEmitter();\n @Output() handleAppearPopup: EventEmitter<AlertStatusFields> = new EventEmitter();\n\n public alertStatusFields = AlertStatusFields;\n public components = ClientHomeComponent;\n public clientMatches: ILibClientMatchOverview[];\n public activeChatHeadIndex: number;\n public assetPaths = {\n traitVisual: 'assets/trait-visual/force-directed-graph.png',\n };\n private componentDestroyed$: Subject<void>;\n public MATCHER_STATUSES: typeof MATCHER_STATUSES = MATCHER_STATUSES;\n public readonly defaultNumberOfItems = Array.from({ length: 10 }, () => null);\n\n private readonly ticker = inject(ProgressTickerService);\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n this.config = {\n ...defaultClientHomeConfig,\n ...this.config,\n };\n this.componentDestroyed$ = new Subject();\n this.config?.clientMatches$?.pipe(takeUntil(this.componentDestroyed$)).subscribe((clientMatches: ILibClientMatchOverview[]) => {\n this.clientMatches = [];\n this.cdr.detectChanges();\n this.clientMatches = clientMatches;\n this.updateSpiderChart();\n this.cdr.detectChanges();\n });\n }\n\n ngOnDestroy(): void {\n this.componentDestroyed$.next();\n this.componentDestroyed$.complete();\n }\n\n public onActiveIndexChange(index: number): void {\n this.config.activeIndex = index;\n this.activeIndexChange.emit(index);\n this.cdr.detectChanges();\n }\n\n public handleClientMatch(match: ILibClientMatchOverview, index: number) {\n match.isExpanded = !match.isExpanded;\n this.clientMatches[index].isExpanded = match.isExpanded;\n this.updateSpiderChart();\n }\n\n public updateSpiderChart(): void {\n if (!this.config.default && this.config.spiderConfig && this.components.ClientMatchSpiderChart === this.config.component) {\n this.config.spiderConfig.datasets = this.clientMatches\n .filter((clientMatche: ILibClientMatchOverview) => clientMatche.isExpanded)\n .map((clientMatche: ILibClientMatchOverview, index: number) => {\n const values = {};\n this.config?.spiderConfig?.attributes?.forEach((attribute) => {\n values[attribute.key] = clientMatche[attribute.key];\n });\n return {\n title: clientMatche.primary?.name || clientMatche?.secondary?.name,\n keys: this.config?.spiderConfig?.attributes.map((attribute) => attribute.key),\n values,\n polygon_color: this.config?.polygonColors?.[index],\n };\n });\n }\n }\n\n public addMessageEmit(event: IMessage, prospectId: string, matchRequest: IDashboardMatchRequest): void {\n this.addMessage.emit({ message: event, prospectId, matchRequest });\n }\n}\n","<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 style=\"display: flex; justify-content: center\">\n <img class=\"trait-visual\" [src]=\"assetPaths.traitVisual\" />\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","import { IInnerPartialCircleProgressColors } from '../interfaces/inner-partial-circle-progress-colors.interface';\n\nexport const innerProgressPurpleColors: IInnerPartialCircleProgressColors = {\n primary: 'rgb(209, 8, 209)',\n secondary: 'rgb(255, 46, 192)',\n tertiary: 'rgb(255, 46, 164)',\n};\n","import { IPartialCircleProgressColors } from '../interfaces/partial-circle-progress-colors.interface';\n\nexport const progressWhiteColors: IPartialCircleProgressColors = {\n primary: 'rgb(255, 255, 255)',\n secondary: 'rgb(215, 215, 215)',\n tertiary: 'rgb(214, 214, 214)',\n gradientPrimary: 'rgb(255, 255, 255)',\n gradientSecondary: 'rgb(231, 231, 231)',\n incomplete: 'rgb(214, 214, 214)',\n complete: 'rgb(255, 255, 255)',\n};\n","import { SwiperOptions } from 'swiper/types';\n\nexport const mainswiperDefaultOptions: SwiperOptions = {\n spaceBetween: 10,\n slidesPerView: 1,\n centeredSlides: true,\n loop: false,\n autoplay: {\n delay: 3000,\n disableOnInteraction: false,\n },\n pagination: {\n el: '.swiper-pagination',\n clickable: true,\n },\n navigation: {\n nextEl: '.swiper-button-next',\n prevEl: '.swiper-button-prev',\n },\n};\n","import { SwiperOptions } from 'swiper/types';\n\nexport const thumbsSwiperDefaultOptions: SwiperOptions = {\n spaceBetween: 10,\n slidesPerView: 4,\n freeMode: true,\n watchSlidesProgress: true,\n breakpoints: {\n 320: {\n slidesPerView: 2,\n spaceBetween: 10,\n },\n 640: {\n slidesPerView: 3,\n spaceBetween: 10,\n },\n 768: {\n slidesPerView: 4,\n spaceBetween: 10,\n },\n },\n};\n","export enum ClientDashboardTabs {\n ChatScheduler = 0,\n ChatCompatibility = 1,\n ChatHandoff = 2,\n}\n","import * as d3 from 'd3';\nimport { ISpiderChartConfig } from '../interfaces/config.interface';\n\nexport const defaultSpiderConfig: ISpiderChartConfig = {\n w: 200,\n h: 200,\n levels: 5,\n fullScreen: false,\n maxValue: 35,\n labelFactor: 1.25,\n wrapWidth: 60,\n opacityArea: 0.35,\n dotRadius: 3,\n opacityCircles: 0.1,\n strokeWidth: 2,\n color: d3.scaleOrdinal().range(['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd']),\n attributes: [\n {\n key: 'One',\n text: 'W',\n titleAlertPopup: 'CLIENT_DASHBOARD.ALERT_POPUP.SPIDER_CONFIG.W.TITLE',\n descriptionAlertPopup: 'CLIENT_DASHBOARD.ALERT_POPUP.SPIDER_CONFIG.W.DESCRIPTION',\n },\n {\n key: 'Two',\n text: 'H',\n titleAlertPopup: 'CLIENT_DASHBOARD.ALERT_POPUP.SPIDER_CONFIG.H1.TITLE',\n descriptionAlertPopup: 'CLIENT_DASHBOARD.ALERT_POPUP.SPIDER_CONFIG.H1.DESCRIPTION',\n },\n {\n key: 'Three',\n text: 'B',\n titleAlertPopup: 'CLIENT_DASHBOARD.ALERT_POPUP.SPIDER_CONFIG.B.TITLE',\n descriptionAlertPopup: 'CLIENT_DASHBOARD.ALERT_POPUP.SPIDER_CONFIG.B.DESCRIPTION',\n },\n {\n key: 'Four',\n text: 'H',\n titleAlertPopup: 'CLIENT_DASHBOARD.ALERT_POPUP.SPIDER_CONFIG.H2.TITLE',\n descriptionAlertPopup: 'CLIENT_DASHBOARD.ALERT_POPUP.SPIDER_CONFIG.H2.DESCRIPTION',\n },\n {\n key: 'Five',\n text: 'F',\n titleAlertPopup: 'CLIENT_DASHBOARD.ALERT_POPUP.SPIDER_CONFIG.F.TITLE',\n descriptionAlertPopup: 'CLIENT_DASHBOARD.ALERT_POPUP.SPIDER_CONFIG.F.DESCRIPTION',\n },\n {\n key: 'Six',\n text: 'Ch',\n titleAlertPopup: 'CLIENT_DASHBOARD.ALERT_POPUP.SPIDER_CONFIG.CH.TITLE',\n descriptionAlertPopup: 'CLIENT_DASHBOARD.ALERT_POPUP.SPIDER_CONFIG.CH.DESCRIPTION',\n },\n {\n key: 'Seven',\n text: 'I',\n titleAlertPopup: 'CLIENT_DASHBOARD.ALERT_POPUP.SPIDER_CONFIG.I.TITLE',\n descriptionAlertPopup: 'CLIENT_DASHBOARD.ALERT_POPUP.SPIDER_CONFIG.I.DESCRIPTION',\n },\n {\n key: 'Eight',\n text: 'Co',\n titleAlertPopup: 'CLIENT_DASHBOARD.ALERT_POPUP.SPIDER_CONFIG.CO.TITLE',\n descriptionAlertPopup: 'CLIENT_DASHBOARD.ALERT_POPUP.SPIDER_CONFIG.CO.DESCRIPTION',\n },\n ],\n datasets: [],\n};\n","import { IPolygonColor } from '../interfaces/polygon-color.interface';\n\nexport const demoPolygonColors: IPolygonColor[] = [\n { label: 'Red', value: '#FF6B6B' },\n { label: 'Teal', value: '#4ECDC4' },\n { label: 'Blue', value: '#45B7D1' },\n { label: 'Green', value: '#96CEB4' },\n { label: 'Yellow', value: '#FFEAA7' },\n { label: 'Purple', value: '#DDA0DD' },\n { label: 'Mint', value: '#98D8C8' },\n { label: 'Orange', value: '#F7DC6F' },\n];\n","import { IClientDashboardInputs } from '../interfaces/client-dashboard-inputs.interface';\nimport { defaultSpiderConfig } from './../../spider-chart/lookup/default-spider-config';\nimport { demoPolygonColors } from './../../spider-chart/lookup/demo-polygon-colors.lookup';\n\nexport const defaultClientDashboardConfig: IClientDashboardInputs = {\n activeIndex: 1,\n activeTabIndex: 0,\n activeChartItem: 1,\n slideContentMaxHeight: 'auto',\n clientMatches$: null,\n events: [],\n polygonColors: demoPolygonColors,\n spiderConfig: defaultSpiderConfig,\n schedulers$: null,\n alertStatus: {},\n};\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, CUSTOM_ELEMENTS_SCHEMA, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Subject } from 'rxjs';\nimport { SwiperOptions } from 'swiper/types';\nimport { LibChatComponentModule } from '../chat/chat.component.module';\nimport { IMessage } from '../chat/interfaces/message.interface';\nimport { PipeModule } from '@naniteninja/ionic-lib';\nimport { SharedModule } from '../../shared/shared.module';\nimport { LibAgendaModule } from '../calendar/agenda/agenda.module';\nimport { ISchedulerAction } from '../calendar/scheduler/interfaces/scheduler.action.interface';\nimport { LibClientHomeComponent } from '../client-home/client-home.component';\nimport { ClientHomeComponent } from '../client-home/enums/client-home-component.enum';\nimport { IDashboardMatchRequest } from '../client-match-overview/interfaces/dashboard-match-request.interface';\nimport { dashboardThumbsSwiperDefaultOptions } from '../dashboard-swipeable-tabs/lookups/dashboard-thumbs-swiper-options';\nimport { LibDashboardSwipeableTabsComponent } from '../dashboard-swipeable-tabs/dashboard-swipeable-tabs.component';\nimport { AlertStatusFields } from './enums/alert-status-fields.enum';\nimport { ClientDashboardTabs } from './enums/client-dashboard-component.enum';\nimport { IClientDashboardInputs } from './interfaces/client-dashboard-inputs.interface';\nimport { defaultClientDashboardConfig } from './lookups/client-dashboard.config';\n\n@Component({\n selector: 'lib-client-dashboard',\n imports: [CommonModule, TranslateModule, LibChatComponentModule, LibAgendaModule, PipeModule, LibClientHomeComponent, LibDashboardSwipeableTabsComponent, SharedModule],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n templateUrl: './client-dashboard.component.html',\n styleUrls: ['./client-dashboard.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LibClientDashboardComponent implements OnInit, OnDestroy {\n @Input() config: IClientDashboardInputs;\n\n @Output() addMessage: EventEmitter<{ message: IMessage; index: number; prospectId: string; matchRequest: IDashboardMatchRequest }> = new EventEmitter();\n @Output() getMessages: EventEmitter<void> = new EventEmitter();\n @Output() bookEvent: EventEmitter<ISchedulerAction> = new EventEmitter();\n @Output() removeSuggestion: EventEmitter<ISchedulerAction> = new EventEmitter();\n @Output() activeIndexChange: EventEmitter<number> = new EventEmitter();\n @Output() handleClosedAlert: EventEmitter<{ event: boolean; field: AlertStatusFields }> = new EventEmitter();\n @Output() handleAppearPopup: EventEmitter<AlertStatusFields> = new EventEmitter();\n\n public components = ClientHomeComponent;\n public componentTabs = ClientDashboardTabs;\n public mainSwiperOptions: SwiperOptions = {\n noSwipingSelector: '.no-swiping-selector',\n nested: true,\n };\n public alertStatusFields = AlertStatusFields;\n public isTouchEvent = false;\n public items: { key: string; label: string; onClickInfo: () => void }[] = [\n {\n key: 'CHAT_SCHEDULER',\n label: 'CLIENT_DASHBOARD.LABELS.CHAT_SCHEDULER',\n onClickInfo: () => {\n this.handleAppearPopup.emit(AlertStatusFields.chatMeetupAgenda);\n },\n },\n {\n key: 'TRAIT_VISUAL',\n label: 'CLIENT_DASHBOARD.LABELS.TRAIT_VISUAL',\n onClickInfo: () => {\n this.handleAppearPopup.emit(AlertStatusFields.compatibilityProfileTrait);\n this.handleAppearPopup.emit(AlertStatusFields.face);\n },\n },\n {\n key: 'SPIDER_CHART',\n label: 'CLIENT_DASHBOARD.LABELS.SPIDER_CHART',\n onClickInfo: () => {\n this.handleAppearPopup.emit(AlertStatusFields.compatibilityProfileSpider);\n this.handleAppearPopup.emit(AlertStatusFields.face);\n },\n },\n {\n key: 'CHAT_HANDOFF',\n label: 'CLIENT_DASHBOARD.LABELS.CHAT_HANDOFF',\n onClickInfo: () => {\n this.handleAppearPopup.emit(AlertStatusFields.chatHandoff);\n this.handleAppearPopup.emit(AlertStatusFields.chatProgress);\n },\n },\n ];\n public isMinimizeVisual = false;\n public iconSize: string = '20px';\n public assetPaths = {\n defaultIcon: 'assets/icons/defualt.svg',\n };\n public item = { label: 'Sample' };\n\n public clientHomeThumbsSwiperOptions: SwiperOptions = {\n ...dashboardThumbsSwiperDefaultOptions,\n breakpoints: { 350: { slidesPerView: 20 } },\n };\n\n public dashboardThumbsSwiperOptions: SwiperOptions = {\n centeredSlides: true,\n slidesPerView: 4,\n };\n\n private lastTapTime = 0;\n private componentDestroyed$: Subject<void>;\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n this.config = {\n ...defaultClientDashboardConfig,\n ...this.config,\n };\n this.componentDestroyed$ = new Subject();\n }\n\n ngOnDestroy(): void {\n this.componentDestroyed$.next();\n this.componentDestroyed$.complete();\n }\n\n public onActiveTabIndexChange(index: number): void {\n this.config.activeTabIndex = index;\n this.cdr.detectChanges();\n }\n\n public handleNewMessage(event: { message: IMessage; index: number; prospectId: string; matchRequest: IDashboardMatchRequest }): void {\n this.addMessage?.emit(event);\n }\n\n public handleDoubleClick(): void {\n const currentTime = new Date().getTime();\n const tapLength = currentTime - this.lastTapTime;\n\n if (tapLength < 300 && tapLength > 0) {\n this.isMinimizeVisual = !this.isMinimizeVisual;\n this.config.spiderConfig = {\n ...this.config.spiderConfig,\n fullScreen: this.isMinimizeVisual,\n };\n }\n this.lastTapTime = currentTime;\n }\n\n public onTouchStart(event: TouchEvent): void {\n this.isTouchEvent = true;\n this.handleDoubleClick();\n }\n\n public onClick(event: PointerEvent): void {\n if (this.isTouchEvent) {\n this.isTouchEvent = false;\n event.preventDefault();\n return;\n }\n\n this.handleDoubleClick();\n }\n\n public onChartIndexChange(index): void {\n this.config.activeChartItem = index;\n setTimeout(() => this.cdr.detectChanges());\n }\n\n public onActiveProspectChange(index: number): void {\n if (index >= 0) {\n this.config.activeIndex = index;\n this.activeIndexChange.emit(index);\n setTimeout(() => this.cdr.detectChanges());\n }\n }\n\n public onClosedAlert(data: { event: boolean; field: AlertStatusFields }) {\n this.handleClosedAlert.emit(data);\n }\n\n public onHandleAppearPopup(field: AlertStatusFields): void {\n this.handleAppearPopup.emit(field);\n }\n}\n","<!-- 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\"></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 (click)=\"onClick($event)\" (touchstart)=\"onTouchStart($event)\" [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 <img [width]=\"12\" [height]=\"12\" [src]=\"assetPaths.defaultIcon\" [alt]=\"item?.label + ' icon'\" (click)=\"item.onClickInfo()\" />\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","import { Pipe, PipeTransform } from '@angular/core';\nimport { SelectOption } from '@naniteninja/ionic-lib';\n\n@Pipe({\n name: 'updateLLMPreference',\n pure: true,\n standalone: true,\n})\nexport class UpdateLLMPreferencePipe implements PipeTransform {\n transform(values: SelectOption<string>[], llmPreferenceLoading: string[]): SelectOption<string>[] {\n return values.map((option) => {\n if (llmPreferenceLoading?.includes(option.value)) {\n return { ...option, loading: true };\n } else {\n return { ...option, loading: false };\n }\n });\n }\n}\n","import { Component, Input, OnChanges, SimpleChanges, ViewChild } from '@angular/core';\nimport { Profile } from '@naniteninja/ionic-lib';\n\n@Component({\n selector: 'lib-profile-card',\n templateUrl: './profile-card.component.html',\n styleUrls: ['./profile-card.component.scss'],\n standalone: false,\n})\nexport class ProfileCardComponent implements OnChanges {\n @Input() profile: Profile;\n @Input() progressText: string = 'Progress';\n @ViewChild('progressBar') progressBar: any;\n\n ngOnChanges(changes: SimpleChanges): void {\n setTimeout(() => {\n const progressDiv = (this.progressBar?.el?.shadowRoot as ShadowRoot)?.querySelectorAll('.progress')[0] as HTMLDivElement;\n if (progressDiv) {\n progressDiv.style.transform = 'none';\n const percent = this.profile.progress * 100 + '%';\n progressDiv.style.width = percent;\n const progressBlur = document.getElementById('progressBlur' + this.profile.id) as HTMLDivElement;\n progressBlur.style.width = percent;\n }\n }, 500);\n }\n}\n","<div class=\"personal-card ion-activatable\" *ngIf=\"profile\">\n <div class=\"wihtout-progress\">\n <div *ngIf=\"profile.notification > 0\" class=\"badge-container\">\n <div class=\"noti noti-container\"></div>\n <div class=\"noti noti-circle\"></div>\n <span class=\"f-calistoga f-w-400 f-sm h-160 f-white\">{{ profile.notification }}</span>\n </div>\n\n <img [src]=\"profile.photo\" alt=\"use\" />\n <div class=\"f-calistoga f-w-600 f-md h-160 f-white\">{{ profile.name }}</div>\n @if (profile.value) {\n <span class=\"f-calistoga f-w-400 f-sm h-160 f-gray\">{{ profile.value }}</span>\n }\n </div>\n @if (profile.progress) {\n <div class=\"progress-bar-container\">\n <ion-progress-bar #progressBar mode=\"ios\" [value]=\"profile.progress\"></ion-progress-bar>\n <div [id]=\"'progressBlur' + profile.id\" class=\"progress-blur\"></div>\n <ion-text class=\"progress-label f-w-400 f-xs h-100 f-white\">\n {{ profile.progress * 100 + '% ' + progressText }}\n </ion-text>\n </div>\n }\n <ion-ripple-effect type=\"bounded\"></ion-ripple-effect>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { IonicModule } from '@ionic/angular';\nimport { ProfileCardComponent } from './profile-card.component';\n\n@NgModule({\n declarations: [ProfileCardComponent],\n imports: [CommonModule, IonicModule],\n exports: [ProfileCardComponent],\n})\nexport class ProfileCardModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Profile } from '@naniteninja/ionic-lib';\nimport { ILibClientMatchOverview } from '../../client-match-overview/interfaces/client-match-overview.interface';\n\n@Pipe({\n name: 'getProfileWithProgress',\n standalone: true,\n})\nexport class GetProfileWithProgressPipe implements PipeTransform {\n transform(clientMatch: ILibClientMatchOverview): Profile {\n return {\n name: clientMatch?.primary?.name,\n photo: clientMatch?.primary?.src,\n progress: 10, // TODO: get progress from clientMatch\n };\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, CUSTOM_ELEMENTS_SCHEMA, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { FormFieldType } from '../../enums/form-field-type';\nimport { PipeModule } from '@naniteninja/ionic-lib';\nimport { UpdateLLMPreferencePipe } from '../../pipes/update-llm-preference/update-llm-preference.pipe';\nimport { SharedModule } from '../../shared/shared.module';\nimport { ButtonsModule } from '@naniteninja/ionic-lib';\nimport { LibAgendaModule } from '../calendar/agenda/agenda.module';\nimport { ISchedulerAction } from '../calendar/scheduler/interfaces/scheduler.action.interface';\nimport { ISchedulerEvent } from '../calendar/scheduler/interfaces/scheduler.event.interface';\nimport { LibSchedulerComponent } from '../calendar/scheduler/scheduler.component';\nimport { ChatSuggestionComponent } from '../chat-suggestion/chat-suggestion.component';\nimport { LibChatComponentModule } from '../chat/chat.component.module';\nimport { IMessage } from '../chat/interfaces/message.interface';\nimport { LibClientHomeComponent } from '../client-home/client-home.component';\nimport { ClientHomeComponent } from '../client-home/enums/client-home-component.enum';\nimport { IDashboardMatchRequest } from '../client-match-overview/interfaces/dashboard-match-request.interface';\nimport { FormFieldModule } from '@naniteninja/ionic-lib';\nimport { ProfileCardModule } from '../profile-card/profile-card.module';\nimport { SpiderChartComponent } from '../spider-chart/spider-chart.component';\nimport { LibDashboardSwipeableTabsComponent } from '../dashboard-swipeable-tabs/dashboard-swipeable-tabs.component';\nimport { IChatIdentifier } from './interfaces/chat-identifier.interface';\nimport { IMatcherDashboardInputs } from './interfaces/matcher-dashboard-inputs.interface';\nimport { GetProfileWithProgressPipe } from './pipes/get-profile-with-progress.pipe';\n\n@Component({\n selector: 'lib-compose-matcher-dash',\n imports: [\n CommonModule,\n TranslateModule,\n LibChatComponentModule,\n LibAgendaModule,\n PipeModule,\n LibChatComponentModule,\n LibClientHomeComponent,\n LibDashboardSwipeableTabsComponent,\n ChatSuggestionComponent,\n ButtonsModule,\n LibSchedulerComponent,\n SpiderChartComponent,\n ProfileCardModule,\n SharedModule,\n FormsModule,\n ReactiveFormsModule,\n FormFieldModule,\n UpdateLLMPreferencePipe,\n GetProfileWithProgressPipe,\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n templateUrl: './compose-matcher-dash.component.html',\n styleUrls: ['./compose-matcher-dash.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LibComposeMacherDashComponent implements OnInit, OnDestroy {\n @Input() config: IMatcherDashboardInputs = {\n loading: {\n clientMatches: true,\n },\n default: false,\n activeIndex: 0,\n activeTabIndex: 1,\n slideContentMaxHeight: 'auto',\n clientMatches$: null,\n polygonColors: [],\n spiderConfig: null,\n events$: null,\n alertStatus: {\n upcomingDates: false,\n\n compatibilityProfileTrait: false,\n compatibilityProfileSpider: false,\n\n chatProgress: false,\n chatHandoff: false,\n\n chatMeetupAgenda: false,\n },\n };\n @Output() addMessage: EventEmitter<{ message: IMessage; prospectId: string; matchRequest: IDashboardMatchRequest }> = new EventEmitter();\n @Output() updateLLMConversation: EventEmitter<IChatIdentifier> = new EventEmitter();\n @Output() getMessages: EventEmitter<void> = new EventEmitter();\n @Output() bookEvent: EventEmitter<ISchedulerAction> = new EventEmitter();\n @Output() removeSuggestion: EventEmitter<ISchedulerAction> = new EventEmitter();\n @Output() activeIndexChange: EventEmitter<number> = new EventEmitter();\n\n public components = ClientHomeComponent;\n public suggest = '';\n public schedularCounts = {\n booked: 0,\n suggested: 0,\n };\n public statuses = [\n { title: 'Suggest', icon: 'assets/icons/compose-matcher/suggest.svg', isText: true },\n { title: 'Notes', icon: 'assets/icons/compose-matcher/notes.svg' },\n { title: 'Visuals', icon: 'assets/icons/compose-matcher/visual.svg' },\n { title: 'Profile', icon: 'assets/icons/compose-matcher/profile.svg' },\n ];\n public FormFieldType = FormFieldType;\n\n private componentDestroyed$: Subject<void> = new Subject();\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n this.config.events$?.pipe(takeUntil(this.componentDestroyed$)).subscribe((events: ISchedulerEvent[]) => {\n events?.map((event: ISchedulerEvent) => {\n if (event?.booked) {\n this.schedularCounts.booked += 1;\n }\n if (event?.suggestions?.length) {\n this.schedularCounts.suggested += event?.suggestions?.length;\n }\n });\n this.cdr.detectChanges();\n });\n }\n\n ngOnDestroy(): void {\n this.componentDestroyed$.next();\n this.componentDestroyed$.complete();\n }\n\n public onActiveTabIndexChange(index: number): void {\n if (index >= 0) {\n this.config.activeTabIndex = index;\n this.cdr.detectChanges();\n }\n }\n\n public onActiveProspectChange(index: number): void {\n if (index >= 0) {\n this.config.activeIndex = index;\n this.activeIndexChange.emit(index);\n this.cdr.detectChanges();\n }\n }\n\n public suggestClicked(suggest: string): void {\n this.suggest = suggest;\n }\n}\n","<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","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'sort',\n standalone: false,\n})\nexport class ArraySortPipe implements PipeTransform {\n transform(array: any, field: string, type: string = 'ASC'): any[] {\n if (!Array.isArray(array)) {\n return null;\n }\n switch (type.toUpperCase()) {\n case 'ASC': {\n array.sort((a: any, b: any) => {\n if (a[field] < b[field]) {\n return -1;\n } else if (a[field] > b[field]) {\n return 1;\n } else {\n return 0;\n }\n });\n break;\n }\n case 'DSC': {\n array.sort((a: any, b: any) => {\n if (a[field] > b[field]) {\n return -1;\n } else if (a[field] < b[field]) {\n return 1;\n } else {\n return 0;\n }\n });\n break;\n }\n }\n return array;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'countNonEmptyFields',\n pure: true,\n standalone: false,\n})\nexport class CountNonEmptyFieldsPipe implements PipeTransform {\n transform(records: Record<string, string | null>): number {\n return Object.values(records).filter(Boolean).length;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport moment from 'moment';\n\n@Pipe({\n name: 'dateLocalization',\n pure: true,\n standalone: false,\n})\nexport class DateLocalizationPipe implements PipeTransform {\n transform(value: string | moment.Moment, dateFormat: string): string {\n if (moment.isMoment(value)) {\n return value.format(dateFormat).toString();\n } else {\n let parsedDate = moment(value, moment.ISO_8601, true);\n if (!parsedDate.isValid()) {\n // If the value is entered manually by user then parse the value based on the date format\n parsedDate = moment(value, dateFormat, false);\n }\n if (parsedDate.isValid()) {\n return parsedDate.format(dateFormat).toString();\n }\n return null;\n }\n }\n}\n","import { CurrencyPipe, formatNumber } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport moment from 'moment';\nimport { GridColumn } from '@naniteninja/ionic-lib';\nimport { DateLocalizationPipe } from '../date-localization/date-localization.pipe';\n\n@Pipe({\n name: 'getDisplayValue',\n pure: true,\n standalone: false,\n})\nexport class GetDisplayValuePipe implements PipeTransform {\n constructor(\n private dateLocalizationPipe: DateLocalizationPipe,\n private currencyPipe: CurrencyPipe,\n ) {}\n\n transform(data: any, column: GridColumn, dateFormat: string, corporateCurrency: string = 'USD'): string {\n if ((typeof data != 'boolean' && !data && data !== 0) || !column) {\n return '';\n }\n\n if (column.controlType === 'SingleSelect' || column.controlType === 'MultiSelect') {\n if (Array.isArray(data)) {\n return data.map((value) => column.values?.find((col) => col.Key === value)?.Value)?.join(', ') ?? '';\n }\n return column.values?.find((col) => col.Key === data)?.Value;\n }\n\n if (column.controlType === 'AutoComplete' || column.controlType === 'AutoCompleteMulti' || column.controlType === 'MultiField') {\n if (Array.isArray(data)) {\n return data?.map((kv) => kv?.Value)?.join(', ') ?? '';\n }\n return data?.Value;\n }\n\n if (column.controlType === 'Date') {\n if (moment.isMoment(data)) {\n return this.dateLocalizationPipe.transform(data, dateFormat);\n } else {\n return this.dateLocalizationPipe.transform(data?.toString() ?? '', dateFormat);\n }\n }\n\n if (column.controlType === 'Percent') {\n return `${formatNumber(data, 'en-US', '1.0-0')}%`;\n }\n\n if (column.controlType === 'Currency') {\n return this.currencyPipe.transform(Math.round(data), corporateCurrency, 'symbol', '1.0-0');\n }\n\n if (column.controlType === 'Boolean') {\n return data ? 'Yes' : 'No';\n }\n\n if (data.en) return data.en;\n\n return data.toString();\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { SelectOption } from '@naniteninja/ionic-lib';\n\n@Pipe({\n name: 'getMultiSelectDisplayText',\n pure: true,\n standalone: false,\n})\nexport class GetMultiSelectDisplayTextPipe implements PipeTransform {\n transform(formValue: any[], options: SelectOption<any>[]): string {\n if (Array.isArray(formValue) && formValue?.length > 0) {\n return formValue.map((value) => options.find((option) => option.value === value)?.label)?.join(', ');\n } else {\n return '';\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'round',\n pure: true,\n standalone: false,\n})\nexport class RoundPipe implements PipeTransform {\n transform(value: number): number {\n return Math.round(value);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i1","i3","i3.AgendaDayCardComponent","i1.FallbackTranslatePipe","i2.CalendarUtilsService","i5","i3.FallbackTranslatePipe","i4","i6","i7.LibEventInfoComponent","i8.LibEditRecurringEventComponent","i1.CircleProgressComponent","i1.AbstractCacheService","FormFieldType","i4.GifSelectorComponent","i2.CircleProgressComponent","i1.ChatComponent","i1.AlertPopupComponent","i2.AlertPopupComponent","i4.AlertPopupComponent","i1.DateLocalizationPipe"],"mappings":"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"}
1
+ {"version":3,"file":"naniteninja-dashboard-components-lib.mjs","sources":["../../../projects/dashboard-components-lib/src/lib/operations/operations.ts","../../../projects/dashboard-components-lib/src/lib/components/auto-delegation/animations.ts","../../../projects/dashboard-components-lib/src/lib/components/auto-delegation/enums/auto-delegation.event-type.enum.ts","../../../projects/dashboard-components-lib/src/lib/components/auto-delegation/enums/auto-delegation.event-value.enum.ts","../../../projects/dashboard-components-lib/src/lib/components/auto-delegation/auto-delegation-modal.component.ts","../../../projects/dashboard-components-lib/src/lib/components/auto-delegation/auto-delegation-modal.component.html","../../../projects/dashboard-components-lib/src/lib/enums/direction.enum.ts","../../../projects/dashboard-components-lib/src/lib/components/calendar/agenda/enums/agenda-item-type.enum.ts","../../../projects/dashboard-components-lib/src/lib/components/calendar/agenda/agenda-day-card/agenda-day-card.component.ts","../../../projects/dashboard-components-lib/src/lib/components/calendar/agenda/agenda-day-card/agenda-day-card.component.html","../../../projects/dashboard-components-lib/src/lib/components/calendar/agenda/agenda.component.ts","../../../projects/dashboard-components-lib/src/lib/components/calendar/agenda/agenda.component.html","../../../projects/dashboard-components-lib/src/lib/components/calendar/agenda/agenda.module.ts","../../../projects/dashboard-components-lib/src/lib/components/calendar/enums/event-type.enum.ts","../../../projects/dashboard-components-lib/src/lib/components/calendar/enums/recurring.type.enum.ts","../../../projects/dashboard-components-lib/src/lib/components/calendar/lookups/recurring.options.lookup.ts","../../../projects/dashboard-components-lib/src/lib/components/calendar/services/calendar-utils.service.ts","../../../projects/dashboard-components-lib/src/lib/pipes/fallback-translate/fallback-translate.pipe.ts","../../../projects/dashboard-components-lib/src/lib/components/calendar/components/event-info/event-info.component.ts","../../../projects/dashboard-components-lib/src/lib/components/calendar/components/event-info/event-info.component.html","../../../projects/dashboard-components-lib/src/lib/enums/form-field-type.ts","../../../projects/dashboard-components-lib/src/lib/components/calendar/enums/recurring.edit.options.enum.ts","../../../projects/dashboard-components-lib/src/lib/components/calendar/components/edit-recurring-event/edit-recurring-event.component.ts","../../../projects/dashboard-components-lib/src/lib/components/calendar/components/edit-recurring-event/edit-recurring-event.component.html","../../../projects/dashboard-components-lib/src/lib/components/calendar/components/event-form/event-form.component.ts","../../../projects/dashboard-components-lib/src/lib/components/calendar/components/event-form/event-form.component.html","../../../projects/dashboard-components-lib/src/lib/components/calendar/components/event-form/event-form.module.ts","../../../projects/dashboard-components-lib/src/lib/components/calendar/enums/calendar.account.enum.ts","../../../projects/dashboard-components-lib/src/lib/components/calendar/enums/calendar.account.icons.enum.ts","../../../projects/dashboard-components-lib/src/lib/components/calendar/scheduler/enums/schedule-date-status.enum.ts","../../../projects/dashboard-components-lib/src/lib/components/calendar/scheduler/mock-schedule.ts","../../../projects/dashboard-components-lib/src/lib/components/calendar/scheduler/scheduler.component.ts","../../../projects/dashboard-components-lib/src/lib/components/calendar/scheduler/scheduler.component.html","../../../projects/dashboard-components-lib/src/lib/components/client-home/lookup/inner-progress-default-colors.config.ts","../../../projects/dashboard-components-lib/src/lib/components/client-home/lookup/inner-progress-pink-colors.config.ts","../../../projects/dashboard-components-lib/src/lib/components/client-home/lookup/inner-progress-teal-colors.config.ts","../../../projects/dashboard-components-lib/src/lib/components/client-home/lookup/progress-default-colors.config.ts","../../../projects/dashboard-components-lib/src/lib/components/client-match-overview/enums/inner-circle-state.enum.ts","../../../projects/dashboard-components-lib/src/lib/components/circle-progress/enums/circle-variable.enum.ts","../../../projects/dashboard-components-lib/src/lib/components/circle-progress/circle-progress.component.ts","../../../projects/dashboard-components-lib/src/lib/components/circle-progress/circle-progress.component.html","../../../projects/dashboard-components-lib/src/lib/components/circle-progress/circle-progress.module.ts","../../../projects/dashboard-components-lib/src/lib/components/chat-suggestion/chat-suggestion.component.ts","../../../projects/dashboard-components-lib/src/lib/components/chat-suggestion/chat-suggestion.component.html","../../../projects/dashboard-components-lib/src/lib/enums/local-storage-keys.enum.ts","../../../projects/dashboard-components-lib/src/lib/services/abstract-cache.service.ts","../../../projects/dashboard-components-lib/src/lib/components/chat/chat.service.ts","../../../projects/dashboard-components-lib/src/lib/shared/shared/message-modal/message-modal.component.ts","../../../projects/dashboard-components-lib/src/lib/shared/shared/message-modal/message-modal.component.html","../../../projects/dashboard-components-lib/src/lib/components/chat/enums/sender-types.enum.ts","../../../projects/dashboard-components-lib/src/lib/components/chat/interfaces/type-send-message.enum.ts","../../../projects/dashboard-components-lib/src/lib/components/chat/gif-selector/gif-selector.service.ts","../../../projects/dashboard-components-lib/src/lib/components/chat/gif-selector/gif-selector.component.ts","../../../projects/dashboard-components-lib/src/lib/components/chat/gif-selector/gif-selector.component.html","../../../projects/dashboard-components-lib/src/lib/components/chat/chat.component.ts","../../../projects/dashboard-components-lib/src/lib/components/chat/chat.component.html","../../../projects/dashboard-components-lib/src/lib/shared/shared/alert-popup/alert-popup.component.ts","../../../projects/dashboard-components-lib/src/lib/shared/shared/alert-popup/alert-popup.component.html","../../../projects/dashboard-components-lib/src/lib/shared/shared/status-icon/status-icon.component.ts","../../../projects/dashboard-components-lib/src/lib/shared/shared/status-icon/status-icon.component.html","../../../projects/dashboard-components-lib/src/lib/shared/shared.module.ts","../../../projects/dashboard-components-lib/src/lib/components/chat/chat.component.module.ts","../../../projects/dashboard-components-lib/src/lib/components/client-home/lookup/inner-progress-white-colors.config.ts","../../../projects/dashboard-components-lib/src/lib/components/client-match-overview/enums/conversation-flag.enum.ts","../../../projects/dashboard-components-lib/src/lib/components/client-match-overview/enums/counter-flag-base.enum.ts","../../../projects/dashboard-components-lib/src/lib/components/client-match-overview/lookups/limit-dates-indicator.lookup.ts","../../../projects/dashboard-components-lib/src/lib/components/client-match-overview/lookups/computer-inner-state.lookup.ts","../../../projects/dashboard-components-lib/src/lib/components/client-match-overview/progress-ticker/progress-gap.config.ts","../../../projects/dashboard-components-lib/src/lib/components/client-match-overview/progress-ticker/progress-ticker.config.ts","../../../projects/dashboard-components-lib/src/lib/components/client-match-overview/progress-ticker/progress-ticker.service.ts","../../../projects/dashboard-components-lib/src/lib/components/client-match-overview/client-match-overview.component.ts","../../../projects/dashboard-components-lib/src/lib/components/client-match-overview/client-match-overview.component.html","../../../projects/dashboard-components-lib/src/lib/components/lib-client-dashboard/enums/alert-status-fields.enum.ts","../../../projects/dashboard-components-lib/src/lib/components/matcher-statuses/enums/matcher-statuses.enum.ts","../../../projects/dashboard-components-lib/src/lib/components/matcher-statuses/lookups/matcher-statuses.lookup.ts","../../../projects/dashboard-components-lib/src/lib/components/matcher-statuses/pipes/is-status-included.pipe.ts","../../../projects/dashboard-components-lib/src/lib/components/matcher-statuses/matcher-statuses.component.ts","../../../projects/dashboard-components-lib/src/lib/components/matcher-statuses/matcher-statuses.component.html","../../../projects/dashboard-components-lib/src/lib/pipes/initials/initials.pipe.ts","../../../projects/dashboard-components-lib/src/lib/components/spider-chart/lookup/svg-config.lookup.ts","../../../projects/dashboard-components-lib/src/lib/components/spider-chart/spider-chart.component.ts","../../../projects/dashboard-components-lib/src/lib/components/spider-chart/spider-chart.component.html","../../../projects/dashboard-components-lib/src/lib/components/dashboard-swipeable-tabs/lookups/dashboard-main-swiper-options.ts","../../../projects/dashboard-components-lib/src/lib/components/dashboard-swipeable-tabs/lookups/dashboard-thumbs-swiper-options.ts","../../../projects/dashboard-components-lib/src/lib/components/dashboard-swipeable-tabs/dashboard-swipeable-tabs.component.ts","../../../projects/dashboard-components-lib/src/lib/components/dashboard-swipeable-tabs/dashboard-swipeable-tabs.component.html","../../../projects/dashboard-components-lib/src/lib/components/client-home/enums/client-home-component.enum.ts","../../../projects/dashboard-components-lib/src/lib/components/client-home/lookup/client-home.config.ts","../../../projects/dashboard-components-lib/src/lib/components/client-home/pipes/chat-meta.pipe.ts","../../../projects/dashboard-components-lib/src/lib/components/client-home/pipes/get-color-by-matcher.pipe.ts","../../../projects/dashboard-components-lib/src/lib/components/client-home/client-home.component.ts","../../../projects/dashboard-components-lib/src/lib/components/client-home/client-home.component.html","../../../projects/dashboard-components-lib/src/lib/components/client-home/lookup/inner-progress-purple-colors.config.ts","../../../projects/dashboard-components-lib/src/lib/components/client-home/lookup/progress-white-colors.config.ts","../../../projects/dashboard-components-lib/src/lib/components/dashboard-swipeable-tabs/lookups/main-swiper-default-options.ts","../../../projects/dashboard-components-lib/src/lib/components/dashboard-swipeable-tabs/lookups/thumbs-swiper-default-options.ts","../../../projects/dashboard-components-lib/src/lib/components/lib-client-dashboard/enums/client-dashboard-component.enum.ts","../../../projects/dashboard-components-lib/src/lib/components/spider-chart/lookup/default-spider-config.ts","../../../projects/dashboard-components-lib/src/lib/components/spider-chart/lookup/demo-polygon-colors.lookup.ts","../../../projects/dashboard-components-lib/src/lib/components/lib-client-dashboard/lookups/client-dashboard.config.ts","../../../projects/dashboard-components-lib/src/lib/components/lib-client-dashboard/client-dashboard.component.ts","../../../projects/dashboard-components-lib/src/lib/components/lib-client-dashboard/client-dashboard.component.html","../../../projects/dashboard-components-lib/src/lib/pipes/update-llm-preference/update-llm-preference.pipe.ts","../../../projects/dashboard-components-lib/src/lib/components/profile-card/profile-card.component.ts","../../../projects/dashboard-components-lib/src/lib/components/profile-card/profile-card.component.html","../../../projects/dashboard-components-lib/src/lib/components/profile-card/profile-card.module.ts","../../../projects/dashboard-components-lib/src/lib/components/lib-compose-matcher-dash/pipes/get-profile-with-progress.pipe.ts","../../../projects/dashboard-components-lib/src/lib/components/lib-compose-matcher-dash/compose-matcher-dash.component.ts","../../../projects/dashboard-components-lib/src/lib/components/lib-compose-matcher-dash/compose-matcher-dash.component.html","../../../projects/dashboard-components-lib/src/lib/pipes/array-sort/array.sort.pipe.ts","../../../projects/dashboard-components-lib/src/lib/pipes/count-non-empty-fields/count-non-empty-fields.pipe.ts","../../../projects/dashboard-components-lib/src/lib/pipes/date-localization/date-localization.pipe.ts","../../../projects/dashboard-components-lib/src/lib/pipes/get-display-value/get-display-value.pipe.ts","../../../projects/dashboard-components-lib/src/lib/pipes/get-multi-select-display-text/get-multi-select-display-text.pipe.ts","../../../projects/dashboard-components-lib/src/lib/pipes/round/round.pipe.ts","../../../projects/dashboard-components-lib/src/naniteninja-dashboard-components-lib.ts"],"sourcesContent":["/**\n * operations.ts - Contains common operations utility functions.\n *\n * @file This file exports utility functions for common operations.\n */\n\n/**\n * Generates a random string of the specified length.\n *\n * @param {number} [length=10] - The length of the random string to generate. Default is 10.\n * @return {string} A randomly generated string.\n */\nfunction randomString(length: number = 10): string {\n return Array.from({ length }, () => Math.random().toString(36).charAt(2)).join('');\n}\n\n/**\n * Collection of common operations utility functions.\n */\nexport const CommonOperations = { randomString };\n","import { animate, query, sequence, stagger, style, transition, trigger } from '@angular/animations';\n\nexport const SeeMoreAnimation = trigger('dropDownMenu', [\n transition(':enter', [\n style({ height: 0, overflow: 'hidden' }),\n query('.menu-item', [style({ opacity: 0, transform: 'translateY(-50px)' })], { optional: true }),\n sequence([\n animate('200ms', style({ height: '*' })),\n query('.menu-item', [stagger(-50, [animate('400ms ease', style({ opacity: 1, transform: 'none' }))])], { optional: true }),\n ]),\n ]),\n\n transition(':leave', [\n style({ height: '*', overflow: 'hidden' }),\n query('.menu-item', [style({ opacity: 1, transform: 'none' })], { optional: true }),\n sequence([\n query('.menu-item', [stagger(50, [animate('400ms ease', style({ opacity: 0, transform: 'translateY(-50px)' }))])], { optional: true }),\n animate('200ms', style({ height: 0 })),\n ]),\n ]),\n]);\n","export enum AutoDelegationEventTypes {\n Click = 'click',\n Countdown = 'countdown',\n}\n","export enum AutoDelegationEventValue {\n CountdownCompleted = 'countdown-completed',\n RequestRejected = 'request-rejected',\n RequestAcceped = 'request-accepted',\n}\n","import { CommonModule } from '@angular/common';\nimport { AfterViewInit, ChangeDetectorRef, Component, ElementRef, EventEmitter, Inject, Input, OnInit, Optional, Output, ViewChild } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { interval, take } from 'rxjs';\nimport { PopperModule, LibMenuItem, BaseCardModule, ButtonsModule, MODAL_DATA, LibModalComponent, PopupModalService } from '@naniteninja/ionic-lib';\nimport { CommonOperations } from '../../operations/operations';\nimport { SeeMoreAnimation } from './animations';\nimport { AutoDelegationEventTypes } from './enums/auto-delegation.event-type.enum';\nimport { AutoDelegationEventValue } from './enums/auto-delegation.event-value.enum';\nimport { IAutoDelegationData } from './interface/auto-delegation-data.interface';\nimport { IAutoDelegationEvent } from './interface/auto-delegation.event.interface';\nimport { IAutoDelegationModalData } from './interface/auto-delegation.modal-data.interface';\n@Component({\n selector: 'lib-auto-delegation-modal',\n templateUrl: './auto-delegation-modal.component.html',\n styleUrls: ['./auto-delegation-modal.component.scss'],\n animations: [SeeMoreAnimation],\n standalone: true,\n imports: [CommonModule, BaseCardModule, TranslateModule, ButtonsModule, MatMenuModule, MatButtonModule, PopperModule],\n providers: [LibModalComponent],\n})\nexport class LibAutoDelegationModalComponent implements OnInit, AfterViewInit {\n @ViewChild('childModalElementRef') childModalElementRef: ElementRef<HTMLDivElement>;\n\n @Input() countdown: number = 45;\n @Input() expandedBaseCard?: boolean = true;\n @Input() data: IAutoDelegationData;\n @Input() menuItems: LibMenuItem[] = [];\n @Output() event: EventEmitter<IAutoDelegationEvent> = new EventEmitter<IAutoDelegationEvent>();\n\n public totalStrokeLength: number = 2 * Math.PI * 42.5;\n public currentCountdownAt: number;\n public activeCountdownPathId: string;\n public strokeDashOffset: number = 0;\n public componentData: IAutoDelegationModalData | null = null;\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n private popupModalService: PopupModalService,\n @Optional() @Inject(MODAL_DATA) public modalData?: IAutoDelegationModalData,\n ) {\n if (modalData) {\n // Can use that component as modal and pass Inputs\n this.componentData = modalData;\n }\n }\n\n ngOnInit(): void {\n if (!this.componentData) {\n // Can use that component as child and pass Inputs\n this.componentData = {\n countdown: this.countdown,\n expandedBaseCard: this.expandedBaseCard,\n menuItems: this.menuItems,\n data: this.data || null,\n };\n }\n }\n\n ngAfterViewInit(): void {\n this.activeCountdownPathId = CommonOperations.randomString(100);\n interval(1000)\n .pipe(take(this.componentData?.countdown + 1))\n .subscribe({\n next: (elapsedSeconds) => {\n this.currentCountdownAt = this.componentData?.countdown - elapsedSeconds;\n this.strokeDashOffset = this.totalStrokeLength * ((this.componentData?.countdown - this.currentCountdownAt) / this.componentData?.countdown);\n this.changeDetectorRef.detectChanges();\n },\n complete: () => {\n if (this.data) {\n this.event.emit({ type: AutoDelegationEventTypes.Countdown, value: AutoDelegationEventValue.CountdownCompleted });\n } else {\n this.popupModalService.hide({ type: AutoDelegationEventTypes.Countdown, value: AutoDelegationEventValue.CountdownCompleted });\n }\n },\n });\n\n this.popupModalService.setChildModalElementRef(this.childModalElementRef);\n }\n\n public reject(): void {\n if (this.data) {\n this.event.emit({ type: AutoDelegationEventTypes.Click, value: AutoDelegationEventValue.RequestRejected });\n } else {\n this.popupModalService.hide({ type: AutoDelegationEventTypes.Click, value: AutoDelegationEventValue.RequestRejected });\n }\n }\n\n public accept(): void {\n if (this.data) {\n this.event.emit({ type: AutoDelegationEventTypes.Click, value: AutoDelegationEventValue.RequestAcceped });\n } else {\n this.popupModalService.hide({ type: AutoDelegationEventTypes.Click, value: AutoDelegationEventValue.RequestAcceped });\n }\n }\n}\n","<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 }}±{{ componentData?.data?.preferences?.bust?.moe }} {{ componentData?.data?.preferences?.waist?.value }}±{{\n componentData?.data?.preferences?.waist?.moe\n }}\n {{ componentData?.data?.preferences?.height?.value }}±{{ 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","export enum Direction {\n horizontal = 'horizontal',\n vertical = 'vertical',\n}\n","export enum AgendaItemType {\n DAY = 'day',\n AD = 'ad',\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { IAgendaDay } from '../interfaces/agenda.day.interface';\n\n@Component({\n selector: 'lib-agenda-day-card',\n templateUrl: './agenda-day-card.component.html',\n styleUrls: ['./agenda-day-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AgendaDayCardComponent implements OnInit {\n @Input() adDay: boolean;\n @Input() day: IAgendaDay;\n public fullName: string = '';\n\n ngOnInit(): void {\n if (!this.day?.user?.name) {\n this.fullName = '';\n return;\n }\n const words = this.day.user.name.split(' ').filter(Boolean);\n this.fullName = words.length < 2 ? this.day.user.name : `${this.sanitizeHtml(words[0])}<br>${this.sanitizeHtml(words[1])}`;\n }\n\n private sanitizeHtml(text: string): string {\n return text.replace(\n /[&<>\"']/g,\n (char) =>\n ({\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;',\n })[char] || char,\n );\n }\n}\n","@if (adDay) {\n <div class=\"agenda-day message-box first-day\">\n <div class=\"message-box-wrapper\">\n <div class=\"message-box-content\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n} @else {\n <div class=\"agenda-day\" [ngClass]=\"{ 'message-box': !!day.startTime, 'hidden-day': day.empty, 'first-day': day.index === 0 }\">\n <div class=\"message-box-wrapper\">\n <div class=\"message-box-content\">\n <div class=\"date\" [class.with-time]=\"!day.empty\">\n <span [class.empty]=\"day.empty\">{{ day.empty ? '' : day.dayNumber }}</span>\n @if (!day.empty) {\n <span class=\"spacer\"></span>\n <span *ngIf=\"day.startTime\" class=\"event-time\"\n >{{ day.startTime }} <br />\n {{ day.endTime }}</span\n >\n }\n </div>\n <div class=\"day\">\n <span [class.empty]=\"day.empty\">{{ day.empty ? '' : day.name }}</span>\n </div>\n @if (!day.empty && day.user) {\n <div class=\"profile\">\n <div class=\"profile-pic\" [class.default-icon]=\"!day.user.profilePic\">\n @if (day.user.profilePic) {\n <img [src]=\"day.user.profilePic\" alt=\"Profile Image\" />\n } @else {\n <lib-avatar></lib-avatar>\n }\n </div>\n <div class=\"profile-name\" [innerHTML]=\"fullName\"></div>\n </div>\n }\n </div>\n </div>\n </div>\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit, TemplateRef } from '@angular/core';\nimport { addDays, isSameDay, set } from 'date-fns';\nimport { Observable } from 'rxjs';\nimport { Direction } from '../../../enums/direction.enum';\nimport { IAd } from '../../lib-client-dashboard/interfaces/ads.interface';\nimport { IAgendaDay } from './interfaces/agenda.day.interface';\nimport { IAgendaEvent } from './interfaces/agenda.event.inetrface';\nimport { AgendaItem } from './types/agenda-item.type';\nimport { AgendaItemType } from './enums/agenda-item-type.enum';\n\n@Component({\n selector: 'lib-agenda',\n templateUrl: './agenda.component.html',\n styleUrls: ['./agenda.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AgendaComponent implements OnInit {\n @Input() adsTemplate?: TemplateRef<HTMLElement>;\n @Input() agendaAdsData?: Array<IAd> = [];\n @Input() loading$: Observable<boolean>;\n @Input() startDate: Date = new Date();\n @Input() endDate: Date = addDays(this.startDate, 13);\n @Input() set events(events: IAgendaEvent[]) {\n this._events = events;\n this.numberOfEvents = events?.length || 0;\n this.buildAgendaDays();\n }\n public numberOfEvents: number = 0;\n public days: IAgendaDay[] = [];\n public combinedAgendaItems: AgendaItem[] = [];\n public direction: Direction = Direction.horizontal;\n private _events: IAgendaEvent[] = [];\n\n ngOnInit(): void {\n this.buildAgendaDays();\n }\n\n @Input() set setAdsData(ads: IAd[]) {\n this.agendaAdsData = ads || [];\n this.buildAgendaDays();\n }\n\n private buildAgendaDays(): void {\n if (this._events) {\n const dates: Date[] = [];\n let current = new Date(this.startDate);\n while (current <= new Date(this.endDate)) {\n dates.push(current);\n current = set(current, { date: current.getDate() + 1 });\n }\n const days: IAgendaDay[] = dates.flatMap((date, index) => {\n const events = this._events?.filter((e) => isSameDay(e.date, date)) || [];\n const dayEvent = {\n name: date.toLocaleDateString('en', { weekday: events.length > 0 ? 'long' : 'short' }),\n dayNumber: date.getDate(),\n date,\n index,\n };\n return events?.length > 0\n ? events.map((event) => {\n return { ...event, ...dayEvent };\n })\n : dayEvent;\n });\n const emptyContinuesDays = this.getSuccessiveEmptyDays(days);\n emptyContinuesDays.forEach((emptyDays) => {\n if (emptyDays?.length > 2) {\n emptyDays.forEach((emptyDay, index) => {\n if (index > 0 && index !== emptyDays.length - 1) {\n days[emptyDay.index].empty = !days[emptyDay.index + 1]?.startTime || emptyDay.index + 1 !== days.length - 1;\n }\n });\n }\n });\n\n this.days = days;\n\n const mergedList: AgendaItem[] = [];\n const adFrequency = 3; // Inserts an ad after every 3rd day\n let adIndex = 0;\n\n this.days.forEach((day, index) => {\n mergedList.push({ type: AgendaItemType.DAY, data: day });\n\n if ((index + 1) % adFrequency === 0 && adIndex < this.agendaAdsData.length) {\n mergedList.push({ type: AgendaItemType.AD, data: this.agendaAdsData[adIndex]});\n adIndex++;\n }\n });\n\n this.combinedAgendaItems = mergedList;\n } else {\n this.days = [];\n }\n }\n\n private getSuccessiveEmptyDays(days: IAgendaDay[]): IAgendaDay[][] {\n const emptyDays: IAgendaDay[] = days.filter((day) => !day.startTime);\n const result: IAgendaDay[][] = [];\n let currentGroup: IAgendaDay[] = [];\n for (let i = 0; i < emptyDays.length; i++) {\n if (currentGroup.length === 0 || emptyDays[i].dayNumber === emptyDays[i - 1].dayNumber + 1) {\n currentGroup.push(emptyDays[i]);\n } else {\n result.push(currentGroup);\n currentGroup = [emptyDays[i]];\n }\n }\n if (currentGroup.length > 0) {\n result.push(currentGroup);\n }\n return result;\n }\n}\n","<div class=\"agenda-container\" [class.container-sides-shadow]=\"numberOfEvents > 2\" [class.loading]=\"loading$ | async\">\n <div [class.has-ads]=\"agendaAdsData?.length > 0\">\n <div class=\"wrapper\" libDraggableScroll [direction]=\"direction\" [ngClass]=\"{ 'single-event': numberOfEvents === 1, 'no-events': numberOfEvents === 0 }\">\n @for (item of combinedAgendaItems; track $index) {\n @switch (item.type) {\n @case ('day') {\n <lib-agenda-day-card [day]=\"item.data\" [class.has-event]=\"!!item.data.startTime\" [class.hidden-day]=\"item.data.empty\"></lib-agenda-day-card>\n }\n\n @case ('ad') {\n <div class=\"ad-interspersed-container\">\n <ng-container *ngTemplateOutlet=\"adsTemplate; context: { ad: item.data }\"></ng-container>\n </div>\n }\n }\n }\n </div>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { IonicModule } from '@ionic/angular';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { DirectiveModule } from '@naniteninja/ionic-lib';\n\nimport { AvatarComponent } from '@naniteninja/ionic-lib';\nimport { AgendaDayCardComponent } from './agenda-day-card/agenda-day-card.component';\nimport { AgendaComponent } from './agenda.component';\n\n@NgModule({\n declarations: [AgendaComponent, AgendaDayCardComponent],\n exports: [AgendaComponent],\n imports: [CommonModule, IonicModule, TranslateModule, DirectiveModule, AvatarComponent],\n})\nexport class LibAgendaModule {}\n","export enum EventTypes {\n DATE = 'Date',\n GOOGLE = 'Google',\n MICROSOFT = 'Microsoft',\n SYSTEM = 'System', // system created events\n USER = 'User', // user created events\n ITINERARY = 'Itinerary', // Itinerary created events (from chat schedualer)\n}\n","export enum RecurringTypes {\n DAILY = 'DAILY',\n WEEKLY = 'WEEKLY',\n MONTHLY = 'MONTHLY',\n ANNUALLY = 'ANNUALLY',\n}\n","import { RRule } from 'rrule';\nimport { RecurringTypes } from '../enums/recurring.type.enum';\nimport { IRecurringEvent } from '../interfaces/recurring.event.interface';\n\nexport const recurringOptions: IRecurringEvent[] = [\n { title: 'CALENDAR.DOES_NOT_REPEAT', type: null, name: 'Does not repeat' },\n {\n title: 'CALENDAR.DAILY',\n name: 'Daily',\n type: RecurringTypes.DAILY,\n rrule: { freq: RRule.DAILY },\n },\n {\n title: 'CALENDAR.WEEKLY',\n name: 'Weekly',\n type: RecurringTypes.WEEKLY,\n rrule: { freq: RRule.WEEKLY },\n },\n {\n title: 'CALENDAR.MONTHLY',\n name: 'Monthly',\n type: RecurringTypes.MONTHLY,\n rrule: { freq: RRule.MONTHLY },\n },\n {\n title: 'CALENDAR.ANNUALLY',\n name: 'Annually',\n type: RecurringTypes.ANNUALLY,\n rrule: { freq: RRule.YEARLY },\n },\n];\n","import { formatDate } from '@angular/common';\nimport { Inject, Injectable, LOCALE_ID } from '@angular/core';\nimport { addDays, addMinutes, differenceInMinutes, getDay, getHours, getMinutes, isBefore, isEqual, isSameWeek, set, startOfDay } from 'date-fns';\nimport { RRule } from 'rrule';\nimport { Frequency } from 'rrule/dist/esm/types';\nimport { Weekday } from 'rrule/dist/esm/weekday';\nimport { EventTypes } from '../enums/event-type.enum';\nimport { ICalendarAccount } from '../interfaces/calendar.account.interface';\nimport { IEvent } from '../interfaces/event.interface';\nimport { IEventTime } from '../interfaces/event.time.interface';\nimport { IRecurringEventException } from '../interfaces/recurring.exception.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CalendarUtilsService {\n constructor(@Inject(LOCALE_ID) private locale: string) {}\n\n public filterCalendarsEvents<T>(selectedCalendars: ICalendarAccount[], calendarEvents: T[]): T[] {\n if (selectedCalendars?.length > 0) {\n return calendarEvents.filter((event) => selectedCalendars.find((calendar) => calendar.email === event['meta'].email || this.validCalendarEvent(event['meta'])) != null);\n } else {\n return calendarEvents.filter((event) => this.validCalendarEvent(event['meta']));\n }\n }\n\n public validCalendarEvent(event: IEvent): boolean {\n return [EventTypes.SYSTEM, EventTypes.DATE, EventTypes.USER].indexOf(event.type) !== -1;\n }\n\n public formatEventTime(start: Date, end: Date): { startTime: string; endTime: string } {\n const startHours = getHours(start);\n const endHours = getHours(end);\n const startTimeFormat = (startHours > 12 && endHours > 12) || (startHours < 12 && endHours < 12) ? 'h:mm' : 'h:mm aa';\n const startTime = formatDate(start, startTimeFormat, this.locale).replace(':00', '');\n const endTime = formatDate(end, 'h:mm aa', this.locale).replace(':00', '');\n return { startTime, endTime };\n }\n\n public isProviderEvent(event: Partial<IEvent>): boolean {\n return [EventTypes.GOOGLE, EventTypes.MICROSOFT].indexOf(event.type) !== -1;\n }\n\n public isRecurringEvent(event: Partial<IEvent>): boolean {\n // Excluding providers events because they are not generated within the app and come from external source like Google or Microsoft.\n return event.recurring && event.type && !this.isProviderEvent(event);\n }\n\n public isEqualDates(startDate: string | Date, enDate: string | Date): boolean {\n return !startDate || !enDate ? false : isEqual(startOfDay(new Date(startDate)), startOfDay(new Date(enDate)));\n }\n\n public isBeforeDate(startDate: string | Date, enDate: string | Date): boolean {\n return isBefore(startOfDay(new Date(startDate)), startOfDay(new Date(enDate)));\n }\n\n public isSameWeek(startDate: string | Date, enDate: string | Date): boolean {\n return !startDate || !enDate ? false : isSameWeek(startOfDay(new Date(startDate)), startOfDay(new Date(enDate)));\n }\n\n public getUpdatedRecurringException(event: Partial<IEvent>): IRecurringEventException {\n const validUpdatedRecurringException = this.isRecurringEvent(event) && event.recurringPattern.updatedEvent;\n if (validUpdatedRecurringException && !this.isBeforeDate(event.recurringStartDate, event.recurringPattern.updatedEvent.startDate)) {\n return event.recurringPattern.updatedEvent;\n }\n return null;\n }\n\n public getExceptionEvent(event: Partial<IEvent>, exceptions: IRecurringEventException[]): IRecurringEventException {\n return this.isRecurringEvent(event)\n ? exceptions?.find(\n (exception) =>\n this.isEqualDates(event.recurringStartDate, exception.startDate) &&\n this.isEqualDates(event.recurringEndDate, exception.endDate) &&\n event.recurringInstanceNo === exception.recurringInstanceNo,\n )\n : null;\n }\n\n public isValidRecurringDate(event: IEvent, recurringDate: Date): boolean {\n return !event.recurringPattern.recurringEndDate || this.isBeforeDate(recurringDate, event.recurringPattern.recurringEndDate);\n }\n\n public getDeletedRecurringEvent(event: IEvent, recurringDate: Date): IRecurringEventException {\n return event.recurringPattern?.deletions?.find((item) => this.isEqualDates(item.startDate, recurringDate));\n }\n\n public generateRecurringDates(dtstart: Date, until: Date, freq: Frequency, interval: number = 1): Date[] {\n return (\n new RRule({\n freq,\n dtstart,\n until,\n wkst: new Weekday(getDay(dtstart)),\n interval,\n }).all() || []\n );\n }\n\n public isValidRecurringException(event: IEvent, exceptionEvent: IRecurringEventException): boolean {\n return (\n this.isEqualDates(event.recurringStartDate, exceptionEvent.recurringStartDate) &&\n this.isEqualDates(event.recurringEndDate, exceptionEvent.recurringEndDate) &&\n event.recurringInstanceNo === exceptionEvent.recurringInstanceNo\n );\n }\n\n public sortEvents<T>(calendarEvents: T[]): void {\n calendarEvents.sort((a, b) => differenceInMinutes(b['end'], b['start']) - differenceInMinutes(a['end'], a['start']));\n let zIndex = 1;\n calendarEvents.forEach((event, index) => {\n event['meta'].zIndex = zIndex;\n event['cssClass'] += ` cyrano-event-index-${event['meta'].zIndex}`;\n zIndex++;\n for (let i = index - 1; i >= 0; i--) {\n const calendarEvent = calendarEvents[i];\n if (event['start'] < calendarEvent['end']) {\n event['meta'].zIndex = Math.max(event['meta'].zIndex, calendarEvent['meta'].zIndex + 1);\n event['cssClass'] += ` cyrano-event-index-${event['meta'].zIndex}`;\n } else {\n break;\n }\n }\n });\n }\n\n public applyEventsIndex(): void {\n const eventElements = document.querySelectorAll('.cyrano-event');\n // Calculate and apply z-index\n eventElements.forEach((element: HTMLElement, index) => {\n let zIndex = 0;\n element.classList.forEach((eventClass) => {\n if (eventClass.includes('cyrano-event-index-')) {\n const eventClassSplit = eventClass.split('-');\n zIndex = Number(eventClassSplit[3]);\n }\n });\n element.style.zIndex = `${zIndex} !important`;\n });\n }\n\n public setEventTime(event: Partial<IEvent>): { start: Date; end: Date } {\n let start = new Date(event.recurringStartDate || event.startDate);\n let end = new Date(event.recurringEndDate || event.endDate);\n if (!event.allDay) {\n start = set(start, { hours: getHours(new Date(event.startTime)), minutes: getMinutes(new Date(event.startTime)) });\n end = set(end, { hours: getHours(new Date(event.endTime)), minutes: getMinutes(new Date(event.endTime)) });\n }\n const eventMinutes = differenceInMinutes(end, start);\n // --- for events that start PM and end AM next day----------\n end = eventMinutes < 0 ? addDays(end, 1) : end;\n if (event.recurring) {\n event.recurringStartDate = start;\n event.recurringEndDate = end;\n } else {\n event.startDate = start;\n event.endDate = end;\n }\n return { start, end };\n }\n\n // temp fix to remove html tags from event note until we change the note text area field to a rich textarea\n public removeHtmlTags(html: string): string {\n const regex = /(<([^>]+)>)/gi;\n const cleanString = html.replace(regex, '');\n return cleanString ? cleanString.trim() : '';\n }\n\n public prepareEventDates(eventData: IEvent): void {\n if (eventData.allDay) {\n eventData.startDate = startOfDay(new Date(eventData.startDate));\n eventData.startTime = eventData.startDate;\n eventData.endTime = eventData.endDate;\n } else {\n eventData.endDate = eventData.startDate;\n }\n }\n\n public getEventTimes(eventData: Partial<IEvent>, recurringException?: IRecurringEventException, newEvent?: boolean): IEventTime {\n let startTime = new Date(recurringException?.startTime || eventData.startTime);\n let endTime: Date;\n if (!eventData._id && newEvent) {\n const startTimeMinutes = getMinutes(startTime);\n startTime = set(startTime, { minutes: startTimeMinutes < 30 ? 0 : 30 });\n endTime = addMinutes(startTime, 60);\n } else {\n endTime = new Date(recurringException?.endTime || eventData.endTime);\n const startDate = new Date(recurringException?.startDate || eventData.recurringStartDate || eventData.startDate);\n const endDate = new Date(recurringException?.endDate || eventData.recurringEndDate || eventData.endDate);\n if (startDate && !eventData.allDay) {\n if (!isEqual(startOfDay(startDate), startOfDay(startTime))) {\n startTime = set(startDate, { hours: startTime.getHours(), minutes: startTime.getMinutes() });\n }\n if (!isEqual(startOfDay(endDate), startOfDay(endTime))) {\n endTime = set(endDate, { hours: endTime.getHours(), minutes: endTime.getMinutes() });\n }\n }\n }\n return { startTime, endTime };\n }\n\n public buildUpdatedEvent(event: IEvent, formValue: IEvent): IEvent {\n const updatedEvent: IEvent = formValue;\n this.prepareEventDates(updatedEvent);\n updatedEvent.location = updatedEvent.location || { address: formValue.address, coordinates: [] };\n updatedEvent.startTime = updatedEvent.startTime['slotValue'] ? updatedEvent.startTime['slotValue'] : updatedEvent.startTime;\n updatedEvent.endTime = updatedEvent.endTime['slotValue'] ? updatedEvent.endTime['slotValue'] : updatedEvent.endTime;\n const eventTimes = this.getEventTimes(updatedEvent);\n updatedEvent.startTime = eventTimes.startTime;\n updatedEvent.endTime = eventTimes.endTime;\n updatedEvent.timeZone = event?.timeZone;\n updatedEvent.recurring = !!updatedEvent.recurringPattern?.type;\n\n const startHours = getHours(eventTimes.startTime);\n updatedEvent.recurringInstanceNo = event.recurringInstanceNo;\n const endHours = getHours(eventTimes.endTime);\n if (startHours > endHours) {\n updatedEvent.endTime = set(addDays(eventTimes.startTime, 1), { hours: endHours, minutes: getMinutes(eventTimes.endTime) });\n updatedEvent.endDate = updatedEvent.endTime;\n }\n\n updatedEvent.startDate = set(updatedEvent.startDate, { hours: updatedEvent.startTime?.getHours(), minutes: updatedEvent.startTime?.getMinutes() });\n updatedEvent.endDate = set(updatedEvent.endDate, { hours: updatedEvent.endTime?.getHours(), minutes: updatedEvent.endTime?.getMinutes() });\n if (!updatedEvent.recurringPattern || !updatedEvent.recurringPattern.type) {\n delete updatedEvent.recurringPattern;\n }\n\n updatedEvent.timeZone = updatedEvent.type === EventTypes.MICROSOFT ? Intl.DateTimeFormat().resolvedOptions().timeZone : updatedEvent.timeZone;\n\n return updatedEvent;\n }\n}\n","import { Injectable, Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Pipe({\n name: 'fallbackTranslate',\n standalone: true,\n})\n@Injectable({\n providedIn: 'root',\n})\nexport class FallbackTranslatePipe implements PipeTransform {\n constructor(private translate: TranslateService) {}\n\n transform(key: string, fallback: string): string {\n const translated = this.translate.instant(key);\n return translated === key ? fallback : translated;\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { FallbackTranslatePipe } from '../../../../pipes/fallback-translate/fallback-translate.pipe';\n\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ICalendarAccount } from '../../interfaces/calendar.account.interface';\nimport { IEvent } from '../../interfaces/event.interface';\nimport { IRecurringEventException } from '../../interfaces/recurring.exception.interface';\nimport { CalendarUtilsService } from '../../services/calendar-utils.service';\n\n@Component({\n selector: 'lib-event-info',\n templateUrl: './event-info.component.html',\n styleUrls: ['./event-info.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [CommonModule, MatIconModule, FallbackTranslatePipe, TranslateModule],\n})\nexport class LibEventInfoComponent implements OnInit {\n @Input() event: IEvent;\n @Input() calendars: ICalendarAccount[];\n\n public calendarAccount: ICalendarAccount;\n public recurringException: IRecurringEventException;\n public updatedRecurringException: IRecurringEventException;\n public address: string;\n public title: string;\n public note: string;\n\n constructor(\n private fallbackTranslatePipe: FallbackTranslatePipe,\n private calendarUtilService: CalendarUtilsService,\n ) {}\n\n ngOnInit(): void {\n this.initEventInfo();\n }\n\n private initEventInfo(): void {\n this.calendarUtilService.setEventTime(this.event);\n this.recurringException = this.calendarUtilService.getExceptionEvent(this.event, this.event.recurringPattern?.exceptions);\n this.updatedRecurringException = this.calendarUtilService.getUpdatedRecurringException(this.event);\n this.address = this.recurringException?.location?.address || this.updatedRecurringException?.location?.address || this.event.location?.address;\n this.calendarAccount = this.calendars?.find((value) => value._id && this.event.accountId && value._id === this.event.accountId);\n this.title = this.recurringException?.title || this.event.title || this.fallbackTranslatePipe.transform('CALENDAR.NO_TITLE', '(No title)');\n this.note = this.recurringException?.note || this.updatedRecurringException?.note || this.event.note;\n }\n}\n","<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","export enum FormFieldType {\r\n date = 'date',\r\n text = 'text',\r\n textarea = 'textarea',\r\n typeahead = 'typeahead',\r\n multiselect = 'multiselect',\r\n select = 'select',\r\n checkbox = 'checkbox',\r\n toggle = 'toggle',\r\n radio = 'radio',\r\n textlist = 'textlist',\r\n number = 'number',\r\n message = 'message',\r\n time = 'time',\r\n multifield = 'multifield',\r\n action = 'action',\r\n currency = 'currency',\r\n banner = 'banner',\r\n percentage = 'percentage',\r\n multiselectdropdown = 'multiselectdropdown',\r\n hyperlink = 'hyperlink',\r\n injectable = 'injectable',\r\n datetime = 'datetime',\r\n rating = 'rating',\r\n incrementer = 'incrementer',\r\n range = 'range',\r\n password = 'password',\r\n}\r\n","export enum EditRecurringEventOptions {\n CURRENT = 'CURRENT',\n FOLLOWING = 'FOLLOWING',\n ALL = 'ALL',\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FormFieldModule, InputFieldModule, SelectOption } from '@naniteninja/ionic-lib';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { FormFieldType } from '../../../../enums/form-field-type';\nimport { FallbackTranslatePipe } from '../../../../pipes/fallback-translate/fallback-translate.pipe';\nimport { EditRecurringEventOptions } from '../../enums/recurring.edit.options.enum';\n\n@Component({\n selector: 'lib-edit-recurring-event',\n templateUrl: './edit-recurring-event.component.html',\n styleUrls: ['./edit-recurring-event.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [CommonModule, FallbackTranslatePipe, TranslateModule, InputFieldModule, FormsModule, ReactiveFormsModule, FormFieldModule],\n})\nexport class LibEditRecurringEventComponent implements OnInit {\n @Input() excludeCurrentInstance: boolean;\n @Input() editOptionsCtrl: FormControl<EditRecurringEventOptions> = new FormControl(EditRecurringEventOptions.CURRENT);\n\n public options: SelectOption<EditRecurringEventOptions>[];\n public radioFieldType = FormFieldType.radio;\n\n constructor(private fallbackTranslatePipe: FallbackTranslatePipe) {}\n\n ngOnInit(): void {\n this.initRecurringOptions();\n }\n\n private initRecurringOptions(): void {\n const options = [\n { label: this.fallbackTranslatePipe.transform('CALENDAR.EDIT_RECURRING_THIS_AND_FOLLOWING_EVENT', 'This and following events'), value: EditRecurringEventOptions.FOLLOWING },\n { label: this.fallbackTranslatePipe.transform('CALENDAR.EDIT_RECURRING_ALL_EVENTS', 'All events'), value: EditRecurringEventOptions.ALL },\n ];\n this.options = this.excludeCurrentInstance ? options : [{ label: 'CALENDAR.EDIT_RECURRING_THIS_EVENT', value: EditRecurringEventOptions.CURRENT }, ...options];\n this.editOptionsCtrl.setValue(this.excludeCurrentInstance ? EditRecurringEventOptions.FOLLOWING : EditRecurringEventOptions.CURRENT);\n }\n}\n","@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","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { BaseComponent, DateRangeValidator, LocationModel, TimeRangeValidator } from '@naniteninja/ionic-lib';\nimport { addMinutes, differenceInMinutes, startOfDay } from 'date-fns';\nimport { takeUntil } from 'rxjs';\nimport { FallbackTranslatePipe } from '../../../../pipes/fallback-translate/fallback-translate.pipe';\nimport { EventTypes } from '../../enums/event-type.enum';\nimport { EditRecurringEventOptions } from '../../enums/recurring.edit.options.enum';\nimport { ICalendarAccount } from '../../interfaces/calendar.account.interface';\nimport { IEventForm } from '../../interfaces/event.form.interface';\nimport { IEventFormOutput } from '../../interfaces/event.form.output.interface';\nimport { IEvent } from '../../interfaces/event.interface';\nimport { IRecurringEvent } from '../../interfaces/recurring.event.interface';\nimport { IRecurringEventException } from '../../interfaces/recurring.exception.interface';\nimport { recurringOptions } from '../../lookups/recurring.options.lookup';\nimport { CalendarUtilsService } from '../../services/calendar-utils.service';\n\n@Component({\n selector: 'lib-event-form',\n templateUrl: './event-form.component.html',\n styleUrl: './event-form.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LibEventFormComponent extends BaseComponent {\n @Input() calendars: ICalendarAccount[];\n @Input() get event(): IEvent {\n return this._event;\n }\n set event(e: IEvent) {\n this.onEventChange(e);\n }\n @Input() get draggedEvent(): IEvent {\n return this._draggedEvent;\n }\n set draggedEvent(e: IEvent) {\n this.onDragEvent(e);\n }\n\n @Output() updateRecurringEvent: EventEmitter<IEventFormOutput> = new EventEmitter<IEventFormOutput>();\n @Output() updateDraggedEvent: EventEmitter<IEventFormOutput> = new EventEmitter<IEventFormOutput>();\n @Output() delete: EventEmitter<IEventFormOutput> = new EventEmitter<IEventFormOutput>();\n @Output() closeForm: EventEmitter<void> = new EventEmitter<void>();\n @Output() submitForm: EventEmitter<IEventFormOutput> = new EventEmitter<IEventFormOutput>();\n\n public editMode: boolean;\n public editOptionsCtrl: FormControl<EditRecurringEventOptions> = new FormControl();\n public modalTitle: string;\n public recurringTypeChanged: boolean;\n public cancelButtonTitle: string;\n public submitButtonTitle: string;\n public secondaryButtonTitle: string;\n public openModal: boolean;\n public showConfirm: boolean;\n public openRecurringOptions: boolean;\n public recurringOptions: IRecurringEvent[];\n public eventStart: Date;\n public form: FormGroup<IEventForm>;\n public recurringException: IRecurringEventException;\n private initialFormValue: IEvent;\n private eventTime: number;\n private _event: IEvent;\n private _draggedEvent: IEvent;\n private deleteConfirmed: boolean;\n private updatedEvent: IEvent;\n\n constructor(\n private cdr: ChangeDetectorRef,\n public fb: FormBuilder,\n private calendarUtilService: CalendarUtilsService,\n private fallbackTranslatePipe: FallbackTranslatePipe,\n ) {\n super();\n }\n\n public onDeleteConfirm(): void {\n this.showConfirm = false;\n this.delete.emit({ selectedRecurringOption: this.editOptionsCtrl.value });\n }\n\n public onSubmitModal(): void {\n if (this.deleteConfirmed) {\n this.onDeleteConfirm();\n return;\n }\n if (this.draggedEvent) {\n this.updateDraggedEvent.emit({\n selectedRecurringOption: this.editOptionsCtrl.value,\n });\n return;\n }\n this.editMode ? this.updateEvent() : this.saveEvent();\n }\n\n public onModalSecondaryButtonClick(): void {\n this.openRecurringOptions = this.editOptionsCtrl?.value ? false : this.event.recurring || !!this.event.recurringEventId;\n this.showConfirm = !this.openRecurringOptions;\n if (this.openRecurringOptions) {\n this.cancelButtonTitle = this.fallbackTranslatePipe.transform('BUTTONS.CANCEL', 'Cancel');\n this.submitButtonTitle = this.fallbackTranslatePipe.transform('BUTTONS.DELETE', 'Delete');\n this.deleteConfirmed = true;\n this.secondaryButtonTitle = null;\n }\n this.cdr.detectChanges();\n }\n\n public saveEvent(): void {\n if (this.allowSubmission()) {\n const updatedEvent: IEvent = this.calendarUtilService.buildUpdatedEvent(this.event, this.form.getRawValue());\n if ((updatedEvent.recurring && this.event.recurring) || this.event?.recurringEventId) {\n updatedEvent.recurringStartDate = this.event.recurringStartDate;\n updatedEvent.recurringEndDate = this.event.recurringEndDate;\n this.updatedEvent = updatedEvent;\n this.recurringTypeChanged =\n this.updatedEvent.recurringPattern?.type !== this.event.recurringPattern?.type || (this.updatedEvent.recurringPattern && !this.event.recurringPattern);\n this.openRecurringOptions = true;\n this.modalTitle = this.fallbackTranslatePipe.transform('CALENDAR.EDIT_RECURRING_EVENT', 'Edit recurring event');\n this.secondaryButtonTitle = null;\n } else {\n this.submitFormEvent(updatedEvent, this.form.getRawValue());\n }\n }\n }\n\n public onLocationChange(event: LocationModel): void {\n this.form.controls.location.setValue({ coordinates: event.coordinates, address: event.address });\n this.form.controls.address.setValue(event.address);\n this.form.controls.address.setErrors(event.address && event.coordinates ? null : { invalidField: true });\n }\n\n public resetModal(): void {\n this.recurringTypeChanged = false;\n this.editOptionsCtrl.setValue(null);\n this.openRecurringOptions = false;\n this.openModal = false;\n this.closeForm.emit();\n }\n\n private initializeEventForm(): void {\n this.modalTitle = this.editMode ? this.event.title : this.fallbackTranslatePipe.transform('CALENDAR.NEW_EVENT', 'New event');\n this.secondaryButtonTitle = this.editMode ? this.fallbackTranslatePipe.transform('BUTTONS.DELETE', 'Delete') : null;\n this.cancelButtonTitle = this.editMode ? null : this.fallbackTranslatePipe.transform('BUTTONS.CANCEL', 'Cancel');\n this.submitButtonTitle = this.editMode ? this.fallbackTranslatePipe.transform('BUTTONS.EDIT', 'Edit') : this.fallbackTranslatePipe.transform('BUTTONS.SAVE', 'Save');\n if (!this.editMode) {\n this.buildForm();\n }\n this.openModal = true;\n }\n\n private buildForm(): void {\n this.recurringOptions = recurringOptions.map((option) => {\n return { ...option, title: this.fallbackTranslatePipe.transform(option.title, option.name) };\n });\n this.recurringException =\n this.calendarUtilService.getExceptionEvent(this.event, this.event.recurringPattern?.exceptions) || this.calendarUtilService.getUpdatedRecurringException(this.event);\n const startDate = new Date(this.recurringException?.startDate || this.event.recurringStartDate || this.event.startDate);\n this.eventStart = startOfDay(startDate);\n this.calendarUtilService.setEventTime(this.event);\n const eventTimes = this.calendarUtilService.getEventTimes(this.event, this.recurringException, true);\n const eventNote = this.recurringException?.note || this.event.note ? this.calendarUtilService.removeHtmlTags(this.recurringException?.note || this.event.note) : '';\n this.form = this.fb.nonNullable.group(\n {\n _id: [this.event._id, []],\n accountId: [this.event.accountId, []],\n type: [this.event.type || EventTypes.USER, []],\n email: [this.event.email, []],\n title: [this.recurringException?.title || this.event.title, this.calendarUtilService.isProviderEvent(this.event) ? [] : [Validators.required]],\n allDay: new FormControl<boolean>(this.recurringException?.allDay || this.event.allDay || false, []),\n startDate: new FormControl<Date>(startDate, [Validators.required]),\n startTime: new FormControl<Date>(eventTimes.startTime, [Validators.required]),\n endDate: new FormControl<Date>(new Date(!this.event._id ? startDate : this.event.recurringEndDate || this.event.endDate), [Validators.required]),\n endTime: new FormControl<Date>(eventTimes.endTime, [Validators.required]),\n note: [eventNote, []],\n location: [this.recurringException?.location || this.event.location, []],\n address: [this.recurringException?.location?.address || this.event.location?.address, this.event?.type ? [] : [Validators.required]],\n recurringPattern: this.fb.nonNullable.group({\n type: [!this.event._id ? recurringOptions[0].type : this.event.recurringPattern?.type, []],\n }),\n },\n {\n validators: [DateRangeValidator('startDate', 'endDate'), TimeRangeValidator('startTime', 'endTime')],\n },\n );\n this.eventTime = differenceInMinutes(eventTimes.endTime, eventTimes.startTime);\n this.handleAllDayEvents(this.event.allDay);\n this.watchFormFields();\n this.initialFormValue = this.form.getRawValue();\n }\n\n private watchFormFields(): void {\n this.form.controls.allDay.valueChanges.pipe(takeUntil(this.componentDestroyed$)).subscribe((value) => this.handleAllDayEvents(value, true));\n this.form.controls.address.valueChanges.pipe(takeUntil(this.componentDestroyed$)).subscribe((value) => {\n if (value && !this.form.value.location) {\n this.form.controls.address.setErrors({ invalidField: true });\n }\n if (!value) {\n this.form.controls.location.setValue(null);\n }\n });\n\n // ------- watch start date recurring -------------\n this.form.controls.startDate.valueChanges.pipe(takeUntil(this.componentDestroyed$)).subscribe((value) => {\n if (value && !this.form.controls.allDay.value) {\n this.form.controls.endDate.setValue(new Date(value));\n }\n });\n this.form.controls.startTime.valueChanges.pipe(takeUntil(this.componentDestroyed$)).subscribe((value) => {\n if (value) {\n this.form.controls.endTime.setValue(addMinutes(value['slotValue'] || new Date(value), this.eventTime));\n }\n });\n }\n\n private handleAllDayEvents(allDay: boolean, onChange?: boolean): void {\n ['endDate', 'endTime', 'startTime'].forEach((controlName) => {\n this.form.controls[controlName].setValidators(allDay ? [] : [Validators.required]);\n this.form.controls[controlName].updateValueAndValidity();\n });\n if (onChange) {\n if (allDay) {\n const startDate = this.form.controls.startDate.value;\n this.form.controls.endDate.setValue(startDate ? startOfDay(new Date(startDate)) : null);\n } else {\n const startTime = this.form.controls.startTime.value;\n const time = startTime && startTime['slotValue'] ? startOfDay(new Date(startTime['slotValue'])) : null;\n this.form.controls.startTime.setValue(time);\n this.form.controls.endTime.setValue(time);\n }\n }\n }\n\n private updateEvent(): void {\n if (this.editOptionsCtrl.value || this.form) {\n this.saveEvent();\n } else {\n this.buildForm();\n this.modalTitle = this.fallbackTranslatePipe.transform('CALENDAR.UPDATE_EVENT', 'Update Event');\n this.submitButtonTitle = this.fallbackTranslatePipe.transform('BUTTONS.SAVE', 'Save');\n this.cancelButtonTitle = this.fallbackTranslatePipe.transform('BUTTONS.CANCEL', 'Cancel');\n this.secondaryButtonTitle = null;\n }\n }\n\n private allowSubmission(): boolean {\n if (this.form.invalid) {\n this.form.markAllAsTouched();\n return false;\n }\n if (this.form.value.address && !this.form.value.location) {\n this.form.controls['address'].setErrors({ invalidField: true });\n return false;\n }\n if (this.openRecurringOptions) {\n this.updateRecurringEvent.emit({\n event: this.updatedEvent,\n selectedRecurringOption: this.editOptionsCtrl.value,\n recurringTypeChanged: this.recurringTypeChanged,\n });\n return false;\n }\n return true;\n }\n\n private submitFormEvent(event: IEvent, formValue: IEvent): void {\n this.submitForm.emit({\n event,\n initialFormValue: this.initialFormValue,\n formValue,\n selectedRecurringOption: this.editOptionsCtrl.value,\n });\n }\n\n private onEventChange(event: IEvent): void {\n this.editMode = !!event?._id;\n this._event = event;\n this.editOptionsCtrl.setValue(null);\n if (!event) {\n this.openModal = false;\n this.form = null;\n } else {\n this.initializeEventForm();\n }\n this.cdr.detectChanges;\n }\n\n private onDragEvent(event: IEvent): void {\n this.editMode = !!event?._id;\n this.openModal = !this._draggedEvent && event?.recurring;\n this.openRecurringOptions = this.openModal;\n this.modalTitle = this.openModal ? this.fallbackTranslatePipe.transform('CALENDAR.EDIT_RECURRING_EVENT', 'Edit recurring event') : null;\n this.cancelButtonTitle = this.openModal ? this.fallbackTranslatePipe.transform('BUTTONS.CANCEL', 'Cancel') : null;\n this.submitButtonTitle = this.openModal ? this.fallbackTranslatePipe.transform('BUTTONS.EDIT', 'Edit') : null;\n this.secondaryButtonTitle = null;\n this._draggedEvent = event;\n if (this._draggedEvent && !this.openModal) {\n this.submitFormEvent(this._draggedEvent, this.draggedEvent);\n }\n }\n}\n","<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","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { IonicModule } from '@ionic/angular';\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport {\n BaseComponent,\n DashedCheckboxModule,\n DirectiveModule,\n FormFieldModule,\n InputDateFieldModule,\n InputFieldModule,\n InputFieldSelectModule,\n InputTimeFieldModule,\n LibErrorMessageComponent,\n LibMapModule,\n LibModalModule,\n} from '@naniteninja/ionic-lib';\nimport { FallbackTranslatePipe } from '../../../../pipes/fallback-translate/fallback-translate.pipe';\nimport { CalendarUtilsService } from '../../services/calendar-utils.service';\nimport { LibEditRecurringEventComponent } from '../edit-recurring-event/edit-recurring-event.component';\nimport { LibEventInfoComponent } from '../event-info/event-info.component';\nimport { LibEventFormComponent } from './event-form.component';\n\n@NgModule({\n declarations: [LibEventFormComponent],\n exports: [LibEventFormComponent],\n imports: [\n CommonModule,\n IonicModule,\n TranslateModule,\n FormsModule,\n ReactiveFormsModule,\n DashedCheckboxModule,\n DirectiveModule,\n FormFieldModule,\n InputDateFieldModule,\n InputFieldModule,\n InputFieldSelectModule,\n InputTimeFieldModule,\n LibModalModule,\n LibErrorMessageComponent,\n FallbackTranslatePipe,\n LibEventInfoComponent,\n LibEditRecurringEventComponent,\n BaseComponent,\n ],\n providers: [CalendarUtilsService],\n})\nexport class LibEventFormModule {\n static forRoot(config: { googleMapsKey: string; googleMapsURL: string }): ModuleWithProviders<LibEventFormModule> {\n const libMapModule = LibMapModule.forRoot({\n googleMapsKey: config.googleMapsKey,\n googleMapsURL: config.googleMapsURL,\n });\n return {\n ngModule: LibEventFormModule,\n providers: [...(libMapModule.providers || [])],\n };\n }\n}\n","export enum CalendarAccountEnum {\n GOOGLE = 'Google',\n MICROSOFT = 'Microsoft',\n}\n","export enum CalendarAccountIconsEnum {\n Google = 'googleCalender',\n Microsoft = 'microsoft',\n}\n","export enum ScheduleDateStatus {\n Suggested = 'suggested',\n Canceled = 'canceled',\n Pending = 'pending',\n}\n","export const mockSchedule = [\n {\n day: 'Mon',\n start: new Date('2025-03-11T11:00:00.000Z'),\n end: new Date('2025-04-11T03:00:00.000Z'),\n hours: '16 hrs',\n suggestions: [\n {\n title: '',\n },\n ],\n },\n {\n day: 'Tue',\n start: new Date('2025-03-11T11:00:00.000Z'),\n end: new Date('2025-04-11T03:00:00.000Z'),\n hours: '16 hrs',\n suggestions: [\n {\n title: '',\n },\n ],\n },\n {\n day: 'Wed',\n start: new Date('2025-03-11T11:00:00.000Z'),\n end: new Date('2025-04-11T03:00:00.000Z'),\n hours: '16 hrs',\n suggestions: [\n {\n title: '',\n },\n ],\n },\n {\n day: 'Thu',\n start: new Date('2025-03-11T11:00:00.000Z'),\n end: new Date('2025-04-11T03:00:00.000Z'),\n hours: '16 hrs',\n suggestions: [\n {\n title: '',\n },\n ],\n },\n {\n day: 'Fri',\n start: new Date('2025-03-11T11:00:00.000Z'),\n end: new Date('2025-04-11T03:00:00.000Z'),\n hours: '16 hrs',\n suggestions: [\n {\n title: '',\n },\n ],\n },\n {\n day: 'Sat',\n start: new Date('2025-03-11T11:00:00.000Z'),\n end: new Date('2025-04-11T03:00:00.000Z'),\n hours: '16 hrs',\n suggestions: [\n {\n title: '',\n },\n ],\n },\n {\n day: 'Sun',\n start: new Date('2025-03-11T11:00:00.000Z'),\n end: new Date('2025-04-11T03:00:00.000Z'),\n hours: '16 hrs',\n suggestions: [\n {\n title: '',\n },\n ],\n },\n];\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Output, TemplateRef } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { addDays, endOfDay, set } from 'date-fns';\nimport { SkeletonModule } from 'primeng/skeleton';\nimport { Observable, Subject, takeUntil } from 'rxjs';\nimport { SectionSeparatorComponent } from '@naniteninja/ionic-lib';\nimport { ISchedulerAction } from './interfaces/scheduler.action.interface';\nimport { ISchedulerEventDay } from './interfaces/scheduler.event.day.interface';\nimport { ISchedulerEvent } from './interfaces/scheduler.event.interface';\nimport { mockSchedule } from './mock-schedule';\n\n@Component({\n selector: 'lib-scheduler',\n standalone: true,\n imports: [CommonModule, TranslateModule, SectionSeparatorComponent, SkeletonModule],\n templateUrl: './scheduler.component.html',\n styleUrls: ['./scheduler.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LibSchedulerComponent implements OnInit, OnDestroy {\n @Input() adsTemplate?: TemplateRef<HTMLElement>;\n @Input() loading$: Observable<boolean>;\n @Input() emptyMessage: string;\n @Input() displayBookedStatuses: boolean;\n @Input() displayEmptyDays: boolean = true;\n @Input() events$: Observable<ISchedulerEvent[]>;\n @Input() startDate: Date = new Date();\n @Input() endDate: Date = endOfDay(addDays(new Date(), 6));\n @Input() default: boolean = false;\n @Output() bookEvent: EventEmitter<ISchedulerAction> = new EventEmitter();\n @Output() removeSuggestion: EventEmitter<ISchedulerAction> = new EventEmitter();\n public eventsDays: ISchedulerEventDay[];\n public suggestedCount: number = 0;\n public bookedCount: number = 0;\n private componentDestroyed$: Subject<void> = new Subject();\n private events: ISchedulerEvent[] = [];\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n if (this.default) {\n this.events = [];\n this.buildEvents();\n return;\n }\n this.events$?.pipe(takeUntil(this.componentDestroyed$)).subscribe((events) => {\n this.events = events;\n this.buildEvents();\n });\n }\n\n ngOnDestroy(): void {\n this.componentDestroyed$.next();\n this.componentDestroyed$.complete();\n }\n\n public toggleExpand(dayIndex: number, eventIndex: number): void {\n if (!this.eventsDays[dayIndex].events[eventIndex].booked) {\n this.eventsDays[dayIndex].events[eventIndex].expanded = !this.eventsDays[dayIndex].events[eventIndex].expanded;\n }\n }\n\n public acceptSuggestion(dayIndex: number, eventIndex: number, suggestionIndex: number): void {\n const suggestion = this.eventsDays[dayIndex].events[eventIndex].suggestions[suggestionIndex];\n suggestion.checked = !suggestion.checked;\n suggestion.canceled = !suggestion.checked && suggestion.canceled;\n this.updateSuggestionsCounts();\n this.cdr.detectChanges();\n this.bookEvent.emit({\n event: this.eventsDays[dayIndex].events[eventIndex],\n suggestion,\n index: this.eventsDays[dayIndex].events[eventIndex].index,\n });\n }\n\n public cancelSuggestion(dayIndex: number, eventIndex: number, suggestionIndex: number): void {\n const suggestion = this.eventsDays[dayIndex].events[eventIndex].suggestions[suggestionIndex];\n suggestion.canceled = !suggestion.canceled;\n suggestion.checked = suggestion.checked && !suggestion.canceled;\n this.removeSuggestion.emit({\n event: this.eventsDays[dayIndex].events[eventIndex],\n suggestionIndex,\n index: this.eventsDays[dayIndex].events[eventIndex].index,\n });\n }\n\n // Update the count of suggested and booked items\n public updateSuggestionsCounts(): void {\n this.suggestedCount = 0;\n this.bookedCount = this.events.reduce((count, event) => {\n this.suggestedCount += event.suggestions?.length || 0;\n return count + event.suggestions.filter((s) => s.checked).length;\n }, 0);\n }\n\n private groupEventsByDay(): ISchedulerEventDay[] {\n if (this.events?.length > 0) {\n const grouped: { [key: string]: ISchedulerEvent[] } = {};\n this.events.forEach((event, index) => {\n if (!grouped[event.day]) {\n grouped[event.day] = [];\n }\n grouped[event.day].push({ ...event, index });\n });\n return Object.entries(grouped).map(([day, events]) => ({ day, events }));\n } else {\n const grouped: { [key: string]: ISchedulerEvent[] } = {};\n mockSchedule.forEach((event, index) => {\n if (!grouped[event.day]) {\n grouped[event.day] = [];\n }\n grouped[event.day].push({ ...event, index });\n });\n return Object.entries(grouped).map(([day, events]) => ({ day, events }));\n }\n }\n\n private buildEvents(): void {\n this.updateSuggestionsCounts();\n const eventsDays: ISchedulerEventDay[] = [];\n let current = new Date(this.startDate);\n const schedulerEvents = this.groupEventsByDay();\n while (current <= new Date(this.endDate)) {\n const day = current.toLocaleDateString('en', { weekday: 'short' });\n const eventDay = { day, events: schedulerEvents.find((event) => event.day === day)?.events || [] };\n if (eventDay.events.length > 0 || this.displayEmptyDays) {\n eventsDays.push(eventDay);\n }\n current = set(current, { date: current.getDate() + 1 });\n }\n this.eventsDays = eventsDays;\n this.cdr.detectChanges();\n }\n}\n","<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\" *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","import { IInnerPartialCircleProgressColors } from '../interfaces/inner-partial-circle-progress-colors.interface';\n\nexport const innerProgressDefaultColors: IInnerPartialCircleProgressColors = {\n primary: 'transparent',\n secondary: 'transparent',\n tertiary: 'transparent',\n};\n","import { IInnerPartialCircleProgressColors } from '../interfaces/inner-partial-circle-progress-colors.interface';\n\nexport const innerProgressPinkColors: IInnerPartialCircleProgressColors = {\n primary: '#ea6b85',\n secondary: '#ee4c76',\n tertiary: 'black',\n};\n","import { IInnerPartialCircleProgressColors } from '../interfaces/inner-partial-circle-progress-colors.interface';\n\nexport const innerProgressTealColors: IInnerPartialCircleProgressColors = {\n primary: 'rgb(111, 220, 193)',\n secondary: 'rgb(58, 232, 197)',\n tertiary: 'black',\n};\n","import { IPartialCircleProgressColors } from '../interfaces/partial-circle-progress-colors.interface';\n\nexport const progressDefaultColors: IPartialCircleProgressColors = {\n primary: '#FE3C72',\n secondary: '#E15561',\n tertiary: '#FE3C3C',\n gradientPrimary: '#f0788d',\n gradientSecondary: '#f84776',\n complete: '#ff858f',\n incomplete: '#E15561',\n};\n","export enum INNER_CIRCLE_STATE {\n Waiting = 'waiting',\n Quiet = 'quiet',\n Unresponsive = 'unresponsive',\n Redelegation = 'redelegation',\n}\n","export enum CircleVariable {\n Partial = 'partial',\n Complete = 'complete',\n}\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, Input } from '@angular/core';\nimport * as d3 from 'd3';\nimport { CommonOperations } from '../../operations/operations';\nimport { IInnerPartialCircleProgressColors } from '../client-home/interfaces/inner-partial-circle-progress-colors.interface';\nimport { innerProgressDefaultColors } from '../client-home/lookup/inner-progress-default-colors.config';\nimport { innerProgressPinkColors } from '../client-home/lookup/inner-progress-pink-colors.config';\nimport { innerProgressTealColors } from '../client-home/lookup/inner-progress-teal-colors.config';\nimport { progressDefaultColors } from '../client-home/lookup/progress-default-colors.config';\nimport { INNER_CIRCLE_STATE } from '../client-match-overview/enums/inner-circle-state.enum';\nimport { CircleVariable } from './enums/circle-variable.enum';\nimport { CircleProgressConfig } from './interfaces/circle-progress-config.interface';\n\n@Component({\n selector: 'lib-circle-progress',\n templateUrl: './circle-progress.component.html',\n styleUrls: ['./circle-progress.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CircleProgressComponent implements AfterViewInit {\n @Input() variable: CircleVariable = CircleVariable.Partial;\n\n private _config: Partial<CircleProgressConfig> = {\n value: 10,\n max: 100,\n partialColors: progressDefaultColors,\n showExternalPartialCircleProgress: true,\n\n inner: {\n value: 100,\n max: 100,\n colors: innerProgressDefaultColors,\n state: INNER_CIRCLE_STATE.Quiet,\n showIllumination: false,\n },\n imageUrl: '',\n width: '62.6px',\n height: '63.18px',\n showValueProportionLabel: true,\n imgObjectPosition: 'top',\n hasNotification: false,\n prefix: '$',\n suffix: '',\n };\n\n @Input()\n set config(newConfig: Partial<CircleProgressConfig> | undefined) {\n if (newConfig) {\n this._config = { ...this._config, ...newConfig };\n }\n }\n\n get config(): Partial<CircleProgressConfig> {\n return this._config;\n }\n\n public innerProgressDefaultColors: IInnerPartialCircleProgressColors = innerProgressDefaultColors;\n public innerProgressPinkColors: IInnerPartialCircleProgressColors = innerProgressPinkColors;\n public innerProgressTealColors: IInnerPartialCircleProgressColors = innerProgressTealColors;\n public circleVariable = CircleVariable;\n\n public readonly INNER_CIRCLE_STATE = INNER_CIRCLE_STATE;\n public readonly pathId: string = CommonOperations.randomString(10);\n public readonly innerCirclePathId: string = CommonOperations.randomString(10);\n public readonly innerCircleBehindPathId: string = CommonOperations.randomString(10);\n\n constructor(private el: ElementRef) {}\n\n ngAfterViewInit(): void {\n if (this.variable === CircleVariable.Complete) {\n this.createCircle();\n }\n }\n\n private createCircle(): void {\n const element = this.el.nativeElement.querySelector('svg');\n\n const color = d3.interpolateRgb('#221E26', this.config.partialColors?.incomplete);\n\n const path = d3.select(element).select('path');\n\n d3.select(element)\n .selectAll('path')\n .data(this.createQuadrilateralSegments(this.generatePathSamplePoints(path.node(), 0.5)))\n .enter()\n .append('path')\n .style('fill', (d: number[][]) => color(d['t']))\n .style('stroke', (d: number[][]) => color(d['t']))\n .attr('d', (d: number[][]) => this.constructJoinedLinePath(d[0], d[1], d[2], d[3], 32));\n }\n\n private generatePathSamplePoints(path: SVGPathElement, precision: number): number[][] {\n const n: number = path.getTotalLength();\n const t: number[] = [0];\n let i = 0;\n while ((i += precision) < n) t.push(i);\n t.push(n);\n return t.map((r) => {\n const domPoint = path.getPointAtLength(r);\n const a: number[] = [domPoint.x, domPoint.y];\n a['t'] = r / n;\n return a;\n });\n }\n\n private createQuadrilateralSegments(points: number[][]): number[][][] {\n return (d3.range(points.length - 1) as number[]).map((i: number) => {\n const a: number[][] = [points[i - 1], points[i], points[i + 1], points[i + 2]];\n a['t'] = (points[i]['t'] + points[i + 1]['t']) / 2;\n return a;\n });\n }\n\n private constructJoinedLinePath(p0: number[], p1: number[], p2: number[], p3: number[], width: number): string {\n const u12 = this.calculatePerpendicularVector(p1, p2);\n const r = width / 6;\n let a: number[] = [p1[0] + u12[0] * r, p1[1] + u12[1] * r];\n let b: number[] = [p2[0] + u12[0] * r, p2[1] + u12[1] * r];\n let c: number[] = [p2[0] - u12[0] * r, p2[1] - u12[1] * r];\n let d: number[] = [p1[0] - u12[0] * r, p1[1] - u12[1] * r];\n\n if (p0) {\n const u01 = this.calculatePerpendicularVector(p0, p1);\n const e = [p1[0] + u01[0] + u12[0], p1[1] + u01[1] + u12[1]];\n a = this.computeLineIntersection(p1, e, a, b);\n d = this.computeLineIntersection(p1, e, d, c);\n }\n\n if (p3) {\n const u23 = this.calculatePerpendicularVector(p2, p3);\n const e = [p2[0] + u23[0] + u12[0], p2[1] + u23[1] + u12[1]];\n b = this.computeLineIntersection(p2, e, a, b);\n c = this.computeLineIntersection(p2, e, d, c);\n }\n\n return 'M' + a + 'L' + b + ' ' + c + ' ' + d + 'Z';\n }\n\n private computeLineIntersection(a: number[], b: number[], c: number[], d: number[]): number[] {\n const x1 = c[0];\n const x3 = a[0];\n const x21 = d[0] - x1;\n const x43 = b[0] - x3;\n const y1 = c[1];\n const y3 = a[1];\n const y21 = d[1] - y1;\n const y43 = b[1] - y3;\n const ua = (x43 * (y1 - y3) - y43 * (x1 - x3)) / (y43 * x21 - x43 * y21);\n return [x1 + ua * x21, y1 + ua * y21];\n }\n\n private calculatePerpendicularVector(p0: number[], p1: number[]): number[] {\n const u01x = p0[1] - p1[1];\n const u01y = p1[0] - p0[0];\n const u01d = Math.sqrt(u01x * u01x + u01y * u01y);\n return [u01x / u01d, u01y / u01d];\n }\n}\n","<img [ngStyle]=\"{ opacity: config.hasNotification ? 1 : 0 }\" src=\"assets/icons/notification-pop.svg\" class=\"notification-icon\" alt=\"menu btn notification icon\" />\n\n<div class=\"circle\" [ngClass]=\"{ 'circle-img': config.imageUrl, 'circle-text': !config.imageUrl }\">\n @if (!config.imageUrl) {\n <div class=\"text-container\">\n <span class=\"percent f-w-400 f-xl h-160\">{{ config.prefix + config.value + config.suffix }}</span>\n <span class=\"bottom-text f-w-400 f-xs h-100\">{{ type }}</span>\n </div>\n } @else {\n <img [src]=\"config.imageUrl\" [ngStyle]=\"{ 'object-position': config.imgObjectPosition }\" />\n }\n</div>\n\n@if (variable === circleVariable.Partial) {\n <div\n [ngClass]=\"{\n pulse: config.inner?.showIllumination,\n 'illuminated-external': showExternalPartialCircleProgress,\n 'illuminated-internal': !showExternalPartialCircleProgress,\n }\"\n ></div>\n <svg class=\"circle-progress__image\" width=\"100%\" height=\"100%\" viewBox=\"0 0 90 90\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n @if (config.showExternalPartialCircleProgress) {\n <ellipse mask=\"url(#cut-circle)\" cx=\"44.334\" cy=\"44.3024\" rx=\"33.9693\" ry=\"33.6363\" fill=\"url(#paint0_linear_239_3673)\" transform=\"translate(1 0.5)\" />\n <ellipse mask=\"url(#cut-circle)\" cx=\"44.334\" cy=\"44.3028\" rx=\"27.2427\" ry=\"26.9757\" fill=\"#27242C\" transform=\"translate(2 0)\" />\n <ellipse mask=\"url(#cut-circle)\" cx=\"44.334\" cy=\"44.3028\" rx=\"27.2427\" ry=\"26.9757\" fill=\"url(#pattern0_239_3673)\" />\n }\n <g transform=\"translate(0.25)\">\n <!-- response time indicators -->\n @if (config.showExternalPartialCircleProgress) {\n @if (config.inner?.state === INNER_CIRCLE_STATE.Waiting || config.inner?.state === INNER_CIRCLE_STATE.Unresponsive) {\n <circle\n r=\"45\"\n cx=\"45\"\n cy=\"45\"\n [attr.fill]=\"config.inner?.state === INNER_CIRCLE_STATE.Waiting ? 'url(#gradInnerPink)' : 'url(#gradInnerTeal)'\"\n [attr.mask]=\"'url(#' + innerCircleBehindPathId + ')'\"\n transform=\"scale(0.659 0.659) translate(+22 21.5) rotate(225, 45, 45)\"\n />\n }\n <circle r=\"45\" cx=\"45\" cy=\"45\" fill=\"url(#grad2)\" [attr.mask]=\"'url(#' + innerCirclePathId + ')'\" transform=\"scale(0.659 0.659) translate(+22 21.5) rotate(225, 45, 45)\" />\n } @else {\n @if (config.inner?.state === INNER_CIRCLE_STATE.Waiting || config.inner?.state === INNER_CIRCLE_STATE.Unresponsive) {\n <circle\n r=\"45\"\n cx=\"45\"\n cy=\"45\"\n [attr.fill]=\"config.inner?.state === INNER_CIRCLE_STATE.Waiting ? 'url(#gradInnerPink)' : 'url(#gradInnerTeal)'\"\n [attr.mask]=\"'url(#' + innerCircleBehindPathId + ')'\"\n transform=\"scale(+0.70 0.70) translate(+20.0 16.5) rotate(225, 45, 45)\"\n />\n }\n <circle r=\"45\" cx=\"45\" cy=\"45\" fill=\"url(#grad2)\" [attr.mask]=\"'url(#' + innerCirclePathId + ')'\" transform=\"scale(+0.70 0.70) translate(+20.0 16.5) rotate(225, 45, 45)\" />\n }\n <defs>\n <mask class=\"circle-progress__mask\" [attr.id]=\"innerCirclePathId\">\n <g>\n <path\n #progressPath\n d=\"M 45 0 A 45 45 0 1 1 44.9999 0\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-width=\"5\"\n [ngStyle]=\"{\n 'stroke-dasharray': progressPath.getTotalLength(),\n 'stroke-dashoffset': progressPath.getTotalLength() - (config.inner?.value * progressPath.getTotalLength()) / config.inner?.max,\n }\"\n />\n </g>\n </mask>\n <mask class=\"circle-progress__mask\" [attr.id]=\"innerCircleBehindPathId\">\n <g>\n <path d=\"M 45 0 A 45 45 0 1 1 44.9999 0\" stroke=\"white\" stroke-linecap=\"round\" stroke-width=\"5\" />\n </g>\n </mask>\n <radialGradient id=\"grad2\">\n <stop offset=\"0%\" [attr.stop-color]=\"config.inner?.colors?.tertiary\" />\n <stop offset=\"80%\" [attr.stop-color]=\"config.inner?.colors?.tertiary\" />\n <stop offset=\"91%\" [attr.stop-color]=\"config.inner?.colors?.primary\" />\n <stop offset=\"95%\" [attr.stop-color]=\"config.inner?.colors?.secondary\" />\n <stop offset=\"100%\" [attr.stop-color]=\"config.inner?.colors?.tertiary\" />\n </radialGradient>\n\n <radialGradient id=\"gradInnerPink\">\n <stop offset=\"0%\" [attr.stop-color]=\"innerProgressPinkColors?.tertiary\" />\n <stop offset=\"80%\" [attr.stop-color]=\"innerProgressPinkColors?.tertiary\" />\n <stop offset=\"91%\" [attr.stop-color]=\"innerProgressPinkColors?.primary\" />\n <stop offset=\"95%\" [attr.stop-color]=\"innerProgressPinkColors?.secondary\" />\n <stop offset=\"100%\" [attr.stop-color]=\"innerProgressPinkColors?.tertiary\" />\n </radialGradient>\n\n <radialGradient id=\"gradInnerTeal\">\n <stop offset=\"0%\" [attr.stop-color]=\"innerProgressTealColors?.tertiary\" />\n <stop offset=\"80%\" [attr.stop-color]=\"innerProgressTealColors?.tertiary\" />\n <stop offset=\"91%\" [attr.stop-color]=\"innerProgressTealColors?.primary\" />\n <stop offset=\"95%\" [attr.stop-color]=\"innerProgressTealColors?.secondary\" />\n <stop offset=\"100%\" [attr.stop-color]=\"innerProgressTealColors?.tertiary\" />\n </radialGradient>\n </defs>\n </g>\n @if (config.showValueProportionLabel) {\n <text\n x=\"25\"\n y=\"70\"\n text-anchor=\"middle\"\n dominant-baseline=\"middle\"\n font-size=\"12\"\n fill=\"white\"\n stroke=\"black\"\n stroke-width=\"3\"\n stroke-linejoin=\"round\"\n stroke-linecap=\"round\"\n paint-order=\"stroke fill\"\n >\n {{ (24 * config.inner.value) / config.inner.max | number: '1.0-0' }}\n </text>\n }\n <defs>\n <mask id=\"cut-circle\">\n <rect x=\"0\" y=\"0\" width=\"90\" height=\"90\" fill=\"white\" />\n <circle r=\"27.5\" cx=\"43.5\" cy=\"43.5\" fill=\"black\"></circle>\n </mask>\n <pattern id=\"pattern0_239_3673\" patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\">\n <use xlink:href=\"#image0_239_3673\" transform=\"scale(1)\" />\n </pattern>\n <filter id=\"filter0_f_239_3673\" x=\"0.510602\" y=\"0.145909\" width=\"87.6468\" height=\"74.376\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\" />\n <feGaussianBlur stdDeviation=\"4.92705\" result=\"effect1_foregroundBlur_239_3673\" />\n </filter>\n <filter id=\"filter1_f_239_3673\" x=\"10.779\" y=\"11.1278\" width=\"65.4831\" height=\"65.4833\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\" />\n <feGaussianBlur stdDeviation=\"2.12309\" result=\"effect1_foregroundBlur_239_3673\" />\n </filter>\n <filter id=\"filter2_d_239_3673\" x=\"9.88\" y=\"16.0474\" width=\"68.8873\" height=\"68.8874\" 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 dy=\"6.63108\" />\n <feGaussianBlur stdDeviation=\"3.31554\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_239_3673\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_239_3673\" result=\"shape\" />\n </filter>\n <linearGradient id=\"paint0_linear_239_3673\" x1=\"71.4224\" y1=\"13.7746\" x2=\"56.8589\" y2=\"88.1932\" gradientUnits=\"userSpaceOnUse\">\n <stop offset=\"0.581821\" stop-color=\"#27242C\" />\n <stop offset=\"1\" stop-color=\"#0C0B0E\" />\n </linearGradient>\n <linearGradient id=\"paint1_linear_239_3673\" x1=\"77.0682\" y1=\"5.96974\" x2=\"5.21288\" y2=\"11.5456\" gradientUnits=\"userSpaceOnUse\">\n <stop [attr.stop-color]=\"config.partialColors?.primary\" />\n <stop offset=\"1\" [attr.stop-color]=\"config.partialColors?.secondary\" />\n </linearGradient>\n <linearGradient id=\"paint2_linear_239_3673\" x1=\"77.068\" y1=\"5.96974\" x2=\"5.2127\" y2=\"11.5456\" gradientUnits=\"userSpaceOnUse\">\n <stop [attr.stop-color]=\"config.partialColors?.primary\" />\n <stop offset=\"1\" [attr.stop-color]=\"config.partialColors?.secondary\" />\n </linearGradient>\n <linearGradient id=\"paint3_linear_239_3673\" x1=\"77.0682\" y1=\"5.96974\" x2=\"5.21288\" y2=\"11.5456\" gradientUnits=\"userSpaceOnUse\">\n <stop [attr.stop-color]=\"config.partialColors?.primary\" />\n <stop offset=\"1\" [attr.stop-color]=\"config.partialColors?.secondary\" />\n </linearGradient>\n <radialGradient\n id=\"paint4_radial_239_3673\"\n cx=\"0\"\n cy=\"0\"\n r=\"1\"\n gradientUnits=\"userSpaceOnUse\"\n gradientTransform=\"translate(44.6705 43.9694) rotate(-90) scale(36.3006 37.8505)\"\n >\n <stop offset=\"0.629654\" stop-color=\"white\" stop-opacity=\"0\" />\n <stop offset=\"0.822917\" [attr.stop-color]=\"config.partialColors?.primary\" />\n <stop offset=\"0.988953\" stop-color=\"white\" stop-opacity=\"0\" />\n </radialGradient>\n <linearGradient id=\"paint5_linear_239_3673\" x1=\"70.9798\" y1=\"11.9932\" x2=\"10.7034\" y2=\"16.6706\" gradientUnits=\"userSpaceOnUse\">\n <stop [attr.stop-color]=\"config.partialColors?.primary\" />\n <stop offset=\"1\" [attr.stop-color]=\"config.partialColors?.secondary\" />\n </linearGradient>\n <radialGradient\n id=\"paint6_radial_239_3673\"\n cx=\"0\"\n cy=\"0\"\n r=\"1\"\n gradientUnits=\"userSpaceOnUse\"\n gradientTransform=\"translate(43.8027 43.8695) rotate(-90) scale(30.451 31.7512)\"\n >\n <stop offset=\"0.629654\" stop-color=\"white\" stop-opacity=\"0\" />\n <stop offset=\"0.822917\" [attr.stop-color]=\"config.partialColors?.primary\" />\n <stop offset=\"0.988953\" stop-color=\"white\" stop-opacity=\"0\" />\n </radialGradient>\n <linearGradient id=\"paint7_linear_239_3673\" x1=\"71.1248\" y1=\"12.7476\" x2=\"12.2928\" y2=\"17.3129\" gradientUnits=\"userSpaceOnUse\">\n <stop [attr.stop-color]=\"config.inner?.colors?.tertiary\" />\n <stop offset=\"1\" [attr.stop-color]=\"config.inner?.colors?.secondary\" />\n </linearGradient>\n <radialGradient id=\"paint8_radial_239_3673\" cx=\"0\" cy=\"0\" r=\"1\" gradientUnits=\"userSpaceOnUse\" gradientTransform=\"translate(44.599 43.86) rotate(-90) scale(29.7213 30.9903)\">\n <stop offset=\"0.629654\" stop-color=\"white\" stop-opacity=\"0\" />\n <stop offset=\"0.880168\" [attr.stop-color]=\"config.inner?.colors?.primary\" />\n <stop offset=\"0.988953\" stop-color=\"white\" stop-opacity=\"0\" />\n </radialGradient>\n </defs>\n </svg>\n\n @if (config.showExternalPartialCircleProgress) {\n <svg class=\"circle-progress__svg\" width=\"100%\" height=\"100%\" viewBox=\"0 0 90 90\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle r=\"45\" cx=\"45\" cy=\"45\" fill=\"url(#grad)\" [attr.mask]=\"'url(#' + pathId + ')'\" />\n <defs>\n <mask class=\"circle-progress__mask\" [attr.id]=\"pathId\">\n <g>\n <path\n #progressPath\n d=\"M 7.2598244424559155 69.50875657567614 A 45 45 0 1 1 82.74017555754409 69.50875657567614\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-width=\"8.5\"\n [ngStyle]=\"{\n 'stroke-dasharray': progressPath.getTotalLength(),\n 'stroke-dashoffset': progressPath.getTotalLength() - (config.value * progressPath.getTotalLength()) / config.max,\n }\"\n />\n </g>\n <circle r=\"37.5\" cx=\"45\" cy=\"45\" fill=\"black\" />\n </mask>\n <radialGradient id=\"grad\">\n <stop offset=\"0%\" [attr.stop-color]=\"config.partialColors?.gradientPrimary\" />\n <stop offset=\"80%\" [attr.stop-color]=\"config.partialColors?.gradientPrimary\" />\n <stop offset=\"90%\" [attr.stop-color]=\"config.partialColors?.gradientSecondary\" />\n <stop offset=\"100%\" [attr.stop-color]=\"config.partialColors?.gradientPrimary\" />\n </radialGradient>\n </defs>\n </svg>\n }\n}\n@if (variable === circleVariable.Complete) {\n <svg\n class=\"circle-progress-d3__main\"\n width=\"100%\"\n height=\"100%\"\n viewBox=\"-10 -10 90 90\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n [ngStyle]=\"{ display: config.value === 0 ? 'none' : 'block' }\"\n >\n <g transform=\"translate(0.3,-0.3)\">\n <path fill=\"none\" stroke-width=\"1\" stroke=\"transparent\" d=\"M 0 45 A 45 45 0 0 1 45 0\" style=\"transform-origin: center; transform: translate(-1.4px, -0.7px)\"></path>\n </g>\n </svg>\n\n <svg class=\"circle-progress-d3__image\" width=\"100%\" height=\"100%\" viewBox=\"0 0 90 90\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <ellipse mask=\"url(#cut-circle)\" cx=\"44.334\" cy=\"44.3024\" rx=\"33.9693\" ry=\"33.6363\" fill=\"url(#paint0_linear_239_3673)\" />\n <g transform=\"translate(0.3,-0.3)\" opacity=\"1\">\n <path\n opacity=\"0.15\"\n d=\"M 0 45 A 45 45 0 0 1 90 45 M 90 45 A 45 45 0 0 1 0 45\"\n stroke-width=\"12\"\n stroke=\"black\"\n style=\"transform-origin: center; transform: scale(0.69) translate(-1.4px, -0.7px)\"\n />\n </g>\n <defs>\n <mask id=\"cut-circle\">\n <rect x=\"0\" y=\"0\" width=\"90\" height=\"90\" fill=\"white\" />\n <circle r=\"27.5\" cx=\"44.5\" cy=\"44\" fill=\"black\"></circle>\n </mask>\n </defs>\n </svg>\n\n <svg class=\"circle-progress-d3__svg\" width=\"100%\" height=\"100%\" viewBox=\"0 0 90 90\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle\n r=\"45\"\n cx=\"45\"\n cy=\"45\"\n [attr.mask]=\"'url(#' + pathId + ')'\"\n [ngStyle]=\"{ fill: config.value === config.max ? config.partialColors?.complete : config.partialColors?.incomplete }\"\n />\n <defs>\n <mask class=\"circle-progress-d3__mask\" [attr.id]=\"pathId\">\n <g>\n <path\n #progressPath\n d=\"M 45 0 A 45 45 0 1 1 44.9999 0\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-width=\"12\"\n [ngStyle]=\"{\n 'stroke-dasharray': progressPath.getTotalLength(),\n 'stroke-dashoffset': progressPath.getTotalLength() - (config.value * progressPath.getTotalLength()) / config.max,\n }\"\n />\n </g>\n </mask>\n </defs>\n </svg>\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { CircleProgressComponent } from './circle-progress.component';\n\n@NgModule({\n declarations: [CircleProgressComponent],\n imports: [CommonModule],\n exports: [CircleProgressComponent],\n})\nexport class CircleProgressModule {}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CircleProgressModule } from '../circle-progress/circle-progress.module';\nimport { IChatSuggestion } from './interfaces/chat-suggestion.interface';\n\n@Component({\n selector: 'lib-chat-suggestion',\n standalone: true,\n imports: [CircleProgressModule],\n templateUrl: './chat-suggestion.component.html',\n styleUrl: './chat-suggestion.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChatSuggestionComponent {\n @Input() chatSuggestions: IChatSuggestion[] = [];\n @Output() suggestClicked?: EventEmitter<string> = new EventEmitter();\n}\n","<div class=\"contentWrapper\">\n <div class=\"content\">\n @for (suggestion of chatSuggestions; track suggestion.question; let idx = $index) {\n <div class=\"contentItem\" (click)=\"suggestClicked?.emit(suggestion?.question)\">\n <span>{{ idx + 1 }}</span>\n <div class=\"itemDescription\">{{ suggestion.question }}</div>\n <div class=\"progress_view\">\n <lib-circle-progress class=\"circle-progress-suggestion\" variable=\"complete\" [config]=\"{ prefix: '', suffix: '%', value: suggestion.percentage }\"></lib-circle-progress>\n </div>\n </div>\n }\n </div>\n</div>\n","export enum LocalStorageKeys {\n LongPressForSendImmediately = 'longPressForSendImmediately',\n}\n","import { Injectable } from '@angular/core';\nimport { JSONSchema } from '@ngx-pwa/local-storage';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport abstract class AbstractCacheService {\n abstract saveLocalStorage(key: string, value: unknown, schema?: JSONSchema): void;\n abstract getLocalStorage<T>(key: string): Observable<T>;\n}\n","import { Injectable } from '@angular/core';\nimport { startOfDay } from 'date-fns';\nimport { map, Observable } from 'rxjs';\nimport { LocalStorageKeys } from '../../enums/local-storage-keys.enum';\nimport { AbstractCacheService } from '../../services/abstract-cache.service';\nimport { IDateMessages } from './interfaces/date-messages.interface';\nimport { IMessage } from './interfaces/message.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ChatService {\n constructor(public cacheService: AbstractCacheService) {}\n\n public setLongPressForSendImmediately(enabled: boolean): void {\n this.cacheService.saveLocalStorage(LocalStorageKeys.LongPressForSendImmediately, enabled ? '1' : '0');\n }\n\n public isLongPressForSendImmediately(): Observable<boolean> {\n return this.cacheService.getLocalStorage<string>(LocalStorageKeys.LongPressForSendImmediately).pipe(map((value) => value === '1'));\n }\n\n // transforms |messages| into |DateMessages| array\n transformMessages(messages: IMessage[]): IDateMessages[] {\n const sorted = [...messages].sort((a, b) => a.timestamp?.getTime() - b.timestamp?.getTime());\n const seen = new Set<string>();\n\n return sorted.map((msg) => {\n const dayStart = startOfDay(msg.timestamp); // midnight *local*\n if (dayStart) {\n const key = dayStart.getTime(); // epoch ms as the bucket id\n const isFirst = !seen.has(String(key));\n if (isFirst) seen.add(String(key));\n\n return { date: dayStart, isFirstMessage: isFirst, message: msg };\n } else {\n return null;\n }\n });\n }\n\n // updates |isFirstMessage| property of |DateMessages| array\n updateDateMessages(dateMessages: IDateMessages[]): IDateMessages[] {\n const byDay = new Map<number, IDateMessages[]>();\n\n dateMessages.forEach((dm) => {\n const dayStart = startOfDay(dm.message.timestamp).getTime(); // epoch-ms key\n if (!byDay.has(dayStart)) byDay.set(dayStart, []);\n byDay.get(dayStart)!.push(dm);\n });\n\n // 2️⃣ Within each bucket, sort and flag the first message\n const result: IDateMessages[] = [];\n byDay.forEach((list) => {\n // ✨ clone so we don’t mutate callers’ state\n const sorted = [...list].sort((a, b) => a.message.timestamp.getTime() - b.message.timestamp.getTime());\n\n sorted.forEach((dm, idx) => (dm.isFirstMessage = idx === 0));\n result.push(...sorted);\n });\n\n return result;\n }\n}\n","import { ChangeDetectionStrategy, Component, Inject, OnInit, Optional, TemplateRef, ViewChild } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { MODAL_DATA, PopupModalService } from '@naniteninja/ionic-lib';\nimport { FormFieldType } from '@naniteninja/ionic-lib';\nimport { SelectOptionWithTemplate } from '../../../model/select-option-template';\nimport { ChatService } from './../../../components/chat/chat.service';\n\n@Component({\n selector: 'lib-message-modal',\n templateUrl: './message-modal.component.html',\n styleUrls: ['./message-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LibMessageModalComponent implements OnInit {\n @ViewChild('toggleTemplate', { static: true }) toggleTemplate: TemplateRef<HTMLElement>;\n public options: SelectOptionWithTemplate<string>[];\n public messageType = new FormControl('send_immediately', Validators.required);\n public dateTimePicker = new FormControl(new Date(), Validators.required);\n public toggleLongPress = new FormControl(false, Validators.required);\n\n public type: FormFieldType = FormFieldType.radio;\n\n public formTime: FormGroup = this.fb.group({\n time: [null, [Validators.required, Validators.pattern('^([01]\\\\d|2[0-3]):[0-5]\\\\d$')]],\n });\n\n constructor(\n private fb: FormBuilder,\n private popupModalService: PopupModalService,\n private chatService: ChatService,\n @Optional() @Inject(MODAL_DATA) public modalData?: { responseTime: string },\n ) {}\n\n ngOnInit(): void {\n this.chatService.isLongPressForSendImmediately().subscribe({\n next: (res) => {\n this.toggleLongPress.setValue(res, { emitEvent: false });\n },\n });\n\n this.toggleLongPress.valueChanges.subscribe((val: boolean) => this.chatService.setLongPressForSendImmediately(val));\n\n const { responseTime } = this.modalData || { responseTime: '' };\n if (responseTime && !responseTime.includes('0h 0m 0s')) {\n this.options = [\n { label: 'MESSAGE_MODAL.OPTIONS.SEND_IMMEDIATELY', value: 'send_immediately', addOnTemplateRef: this.toggleTemplate },\n { label: 'MESSAGE_MODAL.OPTIONS.SEND_AFTER' + responseTime, value: 'send_after' },\n { label: 'MESSAGE_MODAL.OPTIONS.SPECIFY_TIME', value: 'specify_time' },\n ];\n } else {\n this.options = [\n { label: 'MESSAGE_MODAL.OPTIONS.SEND_IMMEDIATELY', value: 'send_immediately', addOnTemplateRef: this.toggleTemplate },\n { label: 'MESSAGE_MODAL.OPTIONS.SPECIFY_TIME', value: 'specify_time' },\n ];\n }\n }\n\n public onSubmit(): void {\n let arrivalDate: string | undefined = undefined;\n let type = this.messageType.value;\n\n if (this.messageType?.value === 'specify_time') {\n const time = this.formTime.get('time').value as Date;\n\n if (time) {\n arrivalDate = `${time.getHours()}:${time.getMinutes()}:00`;\n } else {\n type = 'send_inmediately';\n }\n } else if (this.messageType?.value === 'send_after') {\n const { responseTime } = this.modalData || { responseTime: '' };\n\n if (responseTime) {\n const times = responseTime.split(' ');\n const hours = times[0].slice(0, 2);\n const minutes = times[1].slice(0, 2);\n const seconds = times[2].slice(0, 2);\n arrivalDate = `${hours}:${minutes}:${seconds}`;\n } else {\n type = 'send_inmediately';\n }\n } else if (this.messageType.value === '') {\n type = 'send_inmediately';\n }\n\n this.popupModalService.hide({\n type,\n arrivalDate,\n longPressEnabled: this.toggleLongPress.value,\n });\n }\n}\n","<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","export enum SenderTypes {\n USER = 'user',\n OTHER = 'other',\n}\n","export enum SendMessageType {\n INMEDIATELY = 'send_immediately',\n AFTER = 'send_after',\n SPECIFIC = 'specify_time',\n}\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ITenorObject } from './tenor-object.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class GifSelectorService {\n private tenorKey: string;\n private tenorURL: string;\n\n private http = inject(HttpClient);\n\n public setTenorKey(key: string) {\n this.tenorKey = key;\n }\n\n public setTenorURL(url: string) {\n this.tenorURL = url;\n }\n\n private getTenorKey(): string {\n return this.tenorKey;\n }\n\n private getTenorURL(): string {\n return this.tenorURL;\n }\n\n public getGifs(term: string, pos: string): Observable<ITenorObject> {\n const formattedValue = term.replace(/ /g, '+');\n const url =\n `${this.getTenorURL()}/search?q=` +\n formattedValue +\n '&prettyPrint=false' +\n `&key=${this.getTenorKey()}` +\n '&client_key=tenor_web' +\n '&contentfilter=low' +\n '&searchfilter=none' +\n '&limit=' +\n 50 +\n (pos !== '' ? '&pos=' + pos : '');\n return this.http.get<ITenorObject>(url);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, inject, OnDestroy, OnInit, Output } from '@angular/core';\nimport { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { debounceTime, distinctUntilChanged, Observable, Subject, switchMap, takeUntil } from 'rxjs';\nimport { GifSelectorService } from './gif-selector.service';\nimport { ITenorObject } from './tenor-object.interface';\nimport { ITenorResult } from './tenor-result.interface';\n\n@Component({\n selector: 'lib-gif-selector',\n standalone: true,\n imports: [CommonModule, InfiniteScrollModule, FormsModule, ReactiveFormsModule],\n templateUrl: './gif-selector.component.html',\n styleUrl: './gif-selector.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GifSelectorComponent implements OnInit, OnDestroy {\n private cdr = inject(ChangeDetectorRef);\n private gifService = inject(GifSelectorService);\n private destroy$ = new Subject<void>();\n\n public form: FormGroup;\n\n public pos: string = '';\n public gifs: ITenorResult[] = [];\n public throttle = 150;\n public distance = 2;\n\n @Output() selectGif = new EventEmitter<string>();\n\n ngOnInit(): void {\n this.buildForm();\n\n this.getGifs('popular').subscribe((gifs) => {\n this.gifs = gifs.results;\n this.pos = gifs.next;\n this.cdr.markForCheck();\n });\n\n this.form\n .get('gifTerm')\n .valueChanges.pipe(\n debounceTime(800), // Waits 800ms after the user stops typing\n distinctUntilChanged(), // Prevents emiting repetitive consecutive values\n switchMap((value: string) => {\n return this.getGifs(value);\n }),\n takeUntil(this.destroy$),\n )\n .subscribe({\n next: (gifs) => {\n this.gifs = gifs.results;\n this.pos = gifs.next;\n this.cdr.markForCheck();\n },\n });\n }\n\n onScrollGifs(): void {\n const term = this.form.get('gifTerm').value;\n const searchTerm = term?.trim() || 'popular';\n this.getGifs(searchTerm).subscribe((gifs: ITenorObject) => {\n this.gifs.push(...gifs.results);\n this.pos = gifs.next;\n this.cdr.markForCheck();\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n public getGifs(term: string): Observable<ITenorObject> {\n return this.gifService.getGifs(term, this.pos);\n }\n\n private buildForm(): void {\n this.form = new FormGroup({\n gifTerm: new FormControl(''),\n });\n }\n\n onGifClick(url: string) {\n this.selectGif.emit(url);\n }\n}\n","<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","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport 'emoji-picker-element';\nimport { first } from 'rxjs';\nimport { EmojiPickerConfig } from '@naniteninja/ionic-lib';\nimport { LibMessageModalComponent } from '../../shared/shared/message-modal/message-modal.component';\nimport { InputFieldComponent, PopupModalService } from '@naniteninja/ionic-lib';\nimport { ChatService } from './chat.service';\nimport { SenderTypes } from './enums/sender-types.enum';\nimport { IDateMessages } from './interfaces/date-messages.interface';\nimport { IMessage } from './interfaces/message.interface';\nimport { SendMessageType } from './interfaces/type-send-message.enum';\n\n@Component({\n selector: 'lib-chat',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: ChatComponent,\n multi: true,\n },\n ],\n templateUrl: './chat.component.html',\n styleUrls: ['./chat.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChatComponent implements OnInit, AfterViewInit, OnChanges, OnDestroy {\n @Input() default?: boolean = false;\n @Input() responseTime?: string = '05h 04m 35s';\n // Pre-filled input value\n @Input() set inputValue(value: string) {\n if (value) {\n this.textControl.setValue(value);\n }\n }\n // Configuration of emojiPicker. Must be added\n @Input() emojiPickerConfig: EmojiPickerConfig;\n // whether gifs as a message should be allowed or not\n @Input() includeGifMessage: boolean = true;\n // whether timestamp styles should be allowed or not\n @Input() includeTime: boolean = true;\n // interface for messages to groupm them in dates\n @Input() set dateMessages(value: IMessage[]) {\n this.messages = this.chatService.transformMessages(value);\n }\n // max length for textarea input\n @Input() maxLength: number = 100;\n\n @Input() enableGifPicker: boolean = false;\n\n @Input() prospectJoinDate: Date;\n\n // send message emitter\n @Output() sendMessage = new EventEmitter<IMessage>();\n // scroller-up event to get older messages\n @Output() getMessages = new EventEmitter<boolean>();\n\n @Input() disabled: boolean = false;\n\n @ViewChild('emojiPicker') emojiPickerRef: ElementRef;\n @ViewChild('scrollableContainer') scrollableContainer: ElementRef;\n @ViewChild('chatInput') chatInput: InputFieldComponent;\n\n private cdr = inject(ChangeDetectorRef);\n private elementRef = inject(ElementRef);\n private popupModalService = inject(PopupModalService);\n private chatService = inject(ChatService);\n private pendingMessage: IMessage | null;\n private renderer = inject(Renderer2);\n\n public scrollThreshold = 200;\n public messages: IDateMessages[] = [];\n\n public textControl: FormControl<string> = new FormControl('');\n\n public base64Image: string | null = null;\n\n public emojiVisibility: boolean = false;\n public gifVisibility: boolean = false;\n public isAtStartChat: boolean = false;\n public emojiPickerOpened: boolean = false;\n\n public pos: string = '';\n\n public longPressEnabled: boolean;\n public throttle = 0;\n public distance = 0;\n public readonly ModalComponent = LibMessageModalComponent;\n\n private documentClickListener: (() => void) | null = null;\n\n ngOnInit(): void {\n if (!this.prospectJoinDate) {\n this.prospectJoinDate = null;\n }\n\n this.chatService.isLongPressForSendImmediately().subscribe({\n next: (res) => {\n this.longPressEnabled = res;\n },\n });\n\n if (this.disabled) {\n this.textControl.disable();\n }\n }\n\n ngOnDestroy(): void {\n this.removeEmojiPickerClickListener();\n if (this.popupModalService.getInstance()) {\n this.popupModalService.hide();\n }\n }\n\n ngAfterViewInit(): void {\n if (this.emojiPickerConfig?.style) {\n if (this.emojiPickerRef?.nativeElement) {\n const style = document.createElement('style');\n style.textContent = this.emojiPickerConfig.style;\n this.emojiPickerRef.nativeElement.shadowRoot.appendChild(style);\n }\n }\n\n this.scrollToBottom();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.scrollableContainer) return;\n const container = this.scrollableContainer.nativeElement;\n const scrollTop = container.scrollTop;\n const scrollHeight = container.scrollHeight;\n const clientHeight = container.clientHeight;\n\n if (!(scrollTop < scrollHeight - clientHeight - this.scrollThreshold)) {\n setTimeout(() => {\n this.scrollToBottom();\n }, 200);\n }\n }\n\n public onScrollChats(): void {\n this.getMessages.emit(true);\n }\n\n handleScrollNewMessage(): void {\n setTimeout(() => {\n if (!this.isAtStartChat) this.scrollToBottom();\n }, 200);\n }\n\n onScrollMessages(event: Event): void {\n const container = this.scrollableContainer.nativeElement;\n const scrollTop = container.scrollTop;\n const scrollHeight = container.scrollHeight;\n const clientHeight = container.clientHeight;\n\n this.isAtStartChat = scrollTop < scrollHeight - clientHeight - this.scrollThreshold;\n }\n\n scrollToBottom(): void {\n const container = this.scrollableContainer.nativeElement;\n container.scrollTop = container.scrollHeight;\n }\n\n public onEmojiclick(event: CustomEvent): void {\n const emoji = event.detail.unicode;\n if (this.chatInput.inputFieldRef) {\n const textAreaElement = this.chatInput.inputFieldRef.nativeElement;\n const start = textAreaElement.selectionStart ?? 0;\n const end = textAreaElement.selectionEnd ?? 0;\n\n const currentText = this.textControl.value || '';\n const newText = currentText.slice(0, start) + emoji + currentText.slice(end);\n\n this.textControl.setValue(newText);\n\n // Reposiciona el cursor después del emoji\n setTimeout(() => {\n textAreaElement.focus(); // Asegura que el textarea recupere el foco\n textAreaElement.setSelectionRange(start + emoji.length, start + emoji.length);\n });\n }\n }\n\n public handleEmojiPickerClick(): void {\n if (this.default) {\n return;\n }\n\n this.emojiPickerOpened = true;\n\n if (this.gifVisibility) {\n this.gifVisibility = !this.gifVisibility;\n }\n this.emojiVisibility = !this.emojiVisibility;\n\n if (this.gifVisibility || this.emojiVisibility) {\n this.setupEmojiPickerClickListener();\n }\n }\n\n public handleGifPickerClick(): void {\n if (this.emojiVisibility) {\n this.emojiVisibility = !this.emojiVisibility;\n }\n\n this.gifVisibility = !this.gifVisibility;\n\n if (this.gifVisibility || this.emojiVisibility) {\n this.setupEmojiPickerClickListener();\n }\n }\n\n public onGifClick(url: string): void {\n if (this.default) {\n return;\n }\n const newMessage: IMessage = {\n sender: SenderTypes.USER,\n timestamp: new Date(),\n message: '',\n attachments: [\n {\n type: 'gif',\n url,\n },\n ],\n };\n\n this.pendingMessage = newMessage;\n this.onSendMessageModal();\n }\n\n public onSendMessageModal(): void {\n const modalData = {\n data: {\n responseTime: this.responseTime,\n },\n };\n\n this.popupModalService.setValues({ customClass: 'message-modal-container' });\n\n this.popupModalService\n .show(this.ModalComponent, modalData)\n .afterClose.pipe(first())\n .subscribe((data) => {\n this.pendingMessage.sendOptions = {\n type: data.type,\n arrivalDate: data.arrivalDate,\n };\n\n this.longPressEnabled = data.longPressEnabled;\n\n this.onSend();\n });\n }\n\n public onSendText(): void {\n this.savePendingMessage();\n this.onSendMessageModal();\n }\n\n public savePendingMessage(): void {\n const message = this.textControl.value.trim();\n if (message.trim()) {\n const newMessage: IMessage = {\n sender: SenderTypes.USER,\n timestamp: new Date(),\n message: message,\n attachments: [],\n };\n\n this.pendingMessage = newMessage;\n }\n }\n\n public onSend(): void {\n this.gifVisibility = false;\n this.emojiVisibility = false;\n this.textControl.setValue('');\n this.handleScrollNewMessage();\n this.sendMessage.emit(this.pendingMessage);\n }\n\n public onKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Enter') {\n this.onSendText();\n }\n }\n\n private onLongPress(): void {\n this.savePendingMessage();\n this.pendingMessage.sendOptions = {\n type: SendMessageType.INMEDIATELY,\n arrivalDate: new Date(),\n };\n this.onSend();\n }\n\n private onBlurPickerSpace(): void {\n this.gifVisibility = false;\n this.emojiVisibility = false;\n this.cdr.markForCheck();\n this.removeEmojiPickerClickListener();\n }\n\n private setupEmojiPickerClickListener(): void {\n if (this.documentClickListener) return;\n\n this.documentClickListener = this.renderer.listen('document', 'click', (event: Event) => {\n if (!this.elementRef.nativeElement.contains(event.target)) {\n this.onBlurPickerSpace();\n }\n });\n }\n\n private removeEmojiPickerClickListener(): void {\n if (this.documentClickListener) {\n this.documentClickListener();\n this.documentClickListener = null;\n }\n }\n}\n","<div class=\"chat-component\">\n <div class=\"chat-container\">\n <div class=\"go-button\" *ngIf=\"isAtStartChat\" (click)=\"scrollToBottom()\">↓</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","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-alert-popup',\r\n templateUrl: './alert-popup.component.html',\r\n styleUrls: ['./alert-popup.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AlertPopupComponent implements OnChanges {\r\n @Input() title: string;\r\n @Input() description: string;\r\n @Input() timeState: number;\r\n @Input() number: number;\r\n\r\n @Output() closed: EventEmitter<boolean> = new EventEmitter();\r\n\r\n public isClosing: boolean = false;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const resetTriggerFields = ['title', 'description', 'timeState'];\r\n\r\n if (resetTriggerFields.some((field) => changes[field])) {\r\n this.isClosing = false;\r\n }\r\n }\r\n\r\n handleCloseEvent(): void {\r\n this.isClosing = true;\r\n setTimeout(() => {\r\n this.closed.emit(true);\r\n }, 1000);\r\n }\r\n}\r\n","<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","import { Component, Input } from '@angular/core';\r\nimport { StatusTypes } from '../../../enums/status-types';\r\n\r\n@Component({\r\n selector: 'lib-status-icon',\r\n templateUrl: './status-icon.component.html',\r\n})\r\nexport class StatusIconComponent {\r\n @Input({ required: true }) type: StatusTypes;\r\n}\r\n","@switch (type) {\r\n @case ('info') {\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M9.9987 19.1315C15.0613 19.1315 19.1654 15.0275 19.1654 9.96487C19.1654 4.90226 15.0613 0.798203 9.9987 0.798203C4.93609 0.798203 0.832031 4.90226 0.832031 9.96487C0.832031 15.0275 4.93609 19.1315 9.9987 19.1315ZM9.9987 5.15237C9.36587 5.15237 8.85287 5.66538 8.85287 6.2982C8.85287 6.93103 9.36587 7.44404 9.9987 7.44404C10.6315 7.44404 11.1445 6.93103 11.1445 6.2982C11.1445 5.66538 10.6315 5.15237 9.9987 5.15237ZM9.9987 9.7357C9.36797 9.7357 8.85287 10.2508 8.85287 10.8815V13.6315C8.85287 14.2623 9.36797 14.7774 9.9987 14.7774C10.6294 14.7774 11.1445 14.2623 11.1445 13.6315V10.8815C11.1445 10.2508 10.6294 9.7357 9.9987 9.7357Z\"\r\n fill=\"#237FD5\"\r\n />\r\n </svg>\r\n }\r\n\r\n @case ('warning') {\r\n <svg width=\"18\" height=\"16\" viewBox=\"0 0 18 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M2.0975 15.795H15.9025C17.3142 15.795 18.1942 14.2642 17.4883 13.045L10.5858 1.11921C9.88 -0.0999577 8.12 -0.0999577 7.41417 1.11921L0.511666 13.045C-0.194167 14.2642 0.685832 15.795 2.0975 15.795ZM9 9.37838C8.49583 9.37838 8.08333 8.96588 8.08333 8.46171V6.62838C8.08333 6.12421 8.49583 5.71171 9 5.71171C9.50417 5.71171 9.91667 6.12421 9.91667 6.62838V8.46171C9.91667 8.96588 9.50417 9.37838 9 9.37838ZM9.91667 13.045H8.08333V11.2117H9.91667V13.045Z\"\r\n fill=\"#F29C38\"\r\n />\r\n </svg>\r\n }\r\n\r\n @case ('error') {\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M10 0.833374C4.94001 0.833374 0.833344 4.94004 0.833344 10C0.833344 15.06 4.94001 19.1667 10 19.1667C15.06 19.1667 19.1667 15.06 19.1667 10C19.1667 4.94004 15.06 0.833374 10 0.833374ZM10 10.9167C9.49584 10.9167 9.08334 10.5042 9.08334 10V6.33337C9.08334 5.82921 9.49584 5.41671 10 5.41671C10.5042 5.41671 10.9167 5.82921 10.9167 6.33337V10C10.9167 10.5042 10.5042 10.9167 10 10.9167ZM10.9167 14.5834H9.08334V12.75H10.9167V14.5834Z\"\r\n fill=\"#D32F2F\"\r\n />\r\n </svg>\r\n }\r\n\r\n @case ('success') {\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M10 0.833328C4.94001 0.833328 0.833344 4.93999 0.833344 10C0.833344 15.06 4.94001 19.1667 10 19.1667C15.06 19.1667 19.1667 15.06 19.1667 10C19.1667 4.93999 15.06 0.833328 10 0.833328ZM7.51584 13.9325L4.22501 10.6417C3.86751 10.2842 3.86751 9.70666 4.22501 9.34916C4.58251 8.99166 5.16001 8.99166 5.51751 9.34916L8.16668 11.9892L14.4733 5.6825C14.8308 5.325 15.4083 5.325 15.7658 5.6825C16.1233 6.04 16.1233 6.6175 15.7658 6.97499L8.80834 13.9325C8.46001 14.29 7.87334 14.29 7.51584 13.9325Z\"\r\n fill=\"#2DB231\"\r\n />\r\n </svg>\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ButtonsModule, FormFieldModule, InputDateFieldModule, InputFieldModule, ToggleModule } from '@naniteninja/ionic-lib';\nimport { AlertPopupComponent } from './shared/alert-popup/alert-popup.component';\nimport { LibMessageModalComponent } from './shared/message-modal/message-modal.component';\nimport { StatusIconComponent } from './shared/status-icon/status-icon.component';\n\n@NgModule({\n declarations: [StatusIconComponent, AlertPopupComponent, LibMessageModalComponent],\n imports: [CommonModule, FormFieldModule, ButtonsModule, InputDateFieldModule, InputFieldModule, FormsModule, ReactiveFormsModule, TranslateModule, ToggleModule],\n exports: [StatusIconComponent, AlertPopupComponent, LibMessageModalComponent],\n})\nexport class SharedModule {}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\n// import { DirectiveModule } from '../../directives/directive.module';\nimport { SharedModule } from '../../shared/shared.module';\nimport { ChatComponent } from '../chat/chat.component';\nimport { InputFieldModule, LibModalModule, ImageCardModule } from '@naniteninja/ionic-lib';\nimport { ChatService } from './chat.service';\nimport { GifSelectorComponent } from './gif-selector/gif-selector.component';\nimport { GifSelectorService } from './gif-selector/gif-selector.service';\n\n@NgModule({\n declarations: [ChatComponent],\n imports: [\n CommonModule,\n ImageCardModule,\n MatInputModule,\n MatSelectModule,\n MatFormFieldModule,\n InputFieldModule,\n FormsModule,\n ReactiveFormsModule,\n GifSelectorComponent,\n LibModalModule,\n SharedModule,\n InfiniteScrollModule,\n TranslateModule,\n ],\n exports: [ChatComponent],\n providers: [ChatService],\n})\nexport class LibChatComponentModule {\n static forRoot(config: { tenorKey: string; tenorURL: string }): ModuleWithProviders<LibChatComponentModule> {\n return {\n ngModule: LibChatComponentModule,\n providers: [\n {\n provide: GifSelectorService,\n useFactory: () => {\n const gifService = new GifSelectorService();\n gifService.setTenorKey(config.tenorKey);\n gifService.setTenorURL(config.tenorURL);\n return gifService;\n },\n },\n ],\n };\n }\n}\n","import { IPartialCircleProgressColors } from '../interfaces/partial-circle-progress-colors.interface';\n\nexport const innerProgressWhiteColors: IPartialCircleProgressColors = {\n primary: '#FFFFFF',\n secondary: '#E0E0E0',\n tertiary: '#000000',\n gradientPrimary: '#FFFFFF',\n gradientSecondary: '#E0E0E0',\n incomplete: '#E0E0E0',\n complete: '#FFFFFF',\n};\n","export enum CONVERSATION_FLAG {\n UNRESPONSIVE = 'unresponsive',\n REDELEGATION = 'redelegation',\n}\n","export enum COUNTER_FLAG_BASE {\n StartConversation = 'startConversation',\n LastResponse = 'lastResponse',\n}\n","import { CONVERSATION_FLAG } from '../enums/conversation-flag.enum';\n\nexport const getLimitDatesIndicators = (timestamp: Date, interval: number = 1_440): { [key in keyof typeof CONVERSATION_FLAG]: Date } => {\n const MS_IN_MIN = 60 * 1000; // 60 000\n const baseTime = timestamp.getTime(); // epoch ms of the input\n\n const Unresponsive = new Date(baseTime + interval * 1 * MS_IN_MIN);\n const Redelegation = new Date(baseTime + interval * 2 * MS_IN_MIN);\n\n return { UNRESPONSIVE: Unresponsive, REDELEGATION: Redelegation };\n};\n","import { CONVERSATION_FLAG } from '../enums/conversation-flag.enum';\nimport { COUNTER_FLAG_BASE } from '../enums/counter-flag-base.enum';\nimport { INNER_CIRCLE_STATE } from '../enums/inner-circle-state.enum';\nimport { ProgressDecision } from '../interfaces/progress-decision.interface';\nimport { ProgressFacts } from '../interfaces/progress-facts.interface';\nimport { getLimitDatesIndicators } from './limit-dates-indicator.lookup';\n\n/**\n * Pure “rules engine” for the inner circle.\n * No side-effects, no RxJS, no Angular.\n */\nexport function computeInnerState(indicators: ProgressFacts): ProgressDecision | null {\n if (!indicators.createdAt) {\n return null;\n }\n\n let basedOn: COUNTER_FLAG_BASE;\n\n const now = indicators.nowMs ?? Date.now();\n\n // --- 1️⃣ How many minutes since the reference point? ---\n let minutesSinceRef: number | null;\n\n let limitDatesIndicators: { [key in keyof typeof CONVERSATION_FLAG]: Date };\n\n if (indicators.firstAnswer) {\n if (indicators.lastMessageTimestamp) {\n if (indicators.waitingAnswer) {\n minutesSinceRef = diffMinutes(indicators.lastMessageTimestamp.getTime(), now);\n basedOn = COUNTER_FLAG_BASE.LastResponse;\n limitDatesIndicators = getLimitDatesIndicators(indicators.lastMessageTimestamp);\n } else {\n minutesSinceRef = null; // I already replied\n basedOn = null;\n limitDatesIndicators = null;\n }\n } else {\n minutesSinceRef = null; // prospect never replied\n basedOn = null;\n limitDatesIndicators = null;\n }\n } else {\n minutesSinceRef = diffMinutes(indicators.createdAt.getTime(), now);\n basedOn = COUNTER_FLAG_BASE.StartConversation;\n limitDatesIndicators = getLimitDatesIndicators(indicators.createdAt, indicators.innerMax);\n }\n\n // --- 2️⃣ Decide state ----------------------------------\n if (minutesSinceRef === null) {\n return quiet(); // nothing to track\n }\n\n const { UNRESPONSIVE, REDELEGATION } = limitDatesIndicators;\n\n if (indicators.innerMax * 2 - minutesSinceRef <= 0) {\n const flagFound = indicators.conversationFlags?.find((flag) => {\n return flag.flag === CONVERSATION_FLAG.REDELEGATION && flag.timestamp.getTime() === REDELEGATION.getTime() && flag.basedOn === basedOn;\n });\n return redelegation(basedOn, !!flagFound);\n }\n\n if (indicators.innerMax - minutesSinceRef <= 0) {\n const remainder = indicators.innerMax - (minutesSinceRef - 24 * 60);\n const flagFound = indicators.conversationFlags?.find((flag) => {\n return flag.flag === CONVERSATION_FLAG.UNRESPONSIVE && flag.timestamp.getTime() === UNRESPONSIVE.getTime() && flag.basedOn === basedOn;\n });\n return unresponsive(remainder, basedOn, !!flagFound);\n }\n\n // Waiting path\n if (indicators.lastMessageTimestamp) {\n return indicators.waitingAnswer ? waiting(indicators.innerMax - minutesSinceRef, basedOn) : quiet();\n }\n\n // Prospect still waiting for FIRST message\n return waiting(indicators.innerMax - minutesSinceRef, basedOn);\n}\n\n// ------------------ local helpers -----------------------\nconst diffMinutes = (past: number, present: number) => Math.floor((present - past) / 1000 / 60);\n\nconst quiet = (): ProgressDecision => {\n return { state: INNER_CIRCLE_STATE.Quiet, innerValue: null, tick: 'stop', basedOn: null, registered: null };\n};\nconst waiting = (value: number, basedOn: COUNTER_FLAG_BASE): ProgressDecision => {\n return { state: INNER_CIRCLE_STATE.Waiting, innerValue: value, tick: 'start', basedOn, registered: null };\n};\nconst unresponsive = (value: number, basedOn: COUNTER_FLAG_BASE, registered: boolean): ProgressDecision => {\n return { state: INNER_CIRCLE_STATE.Unresponsive, innerValue: value, tick: 'start', basedOn, registered };\n};\nconst redelegation = (basedOn: COUNTER_FLAG_BASE, registered: boolean): ProgressDecision => {\n return { state: INNER_CIRCLE_STATE.Redelegation, innerValue: null, tick: 'stop', basedOn, registered };\n};\n","// progress-gap.config.ts (inside the library)\nimport { InjectionToken } from '@angular/core';\n\nexport const PROGRESS_GAP_MINUTES = new InjectionToken<number>('PROGRESS_GAP_MINUTES', { factory: () => 1 }); // Default to 1 minute if not provided\n","import { InjectionToken } from '@angular/core';\n\nexport const TICK_PERIOD_SECONDS = new InjectionToken<number>(\n 'TICK_PERIOD_SECONDS',\n { factory: () => 60 }, // Default to 60 seconds if not provided\n);\n","import { Inject, Injectable } from '@angular/core';\nimport { animationFrameScheduler, BehaviorSubject, defer, finalize, interval, Observable, shareReplay } from 'rxjs';\nimport { TICK_PERIOD_SECONDS } from './progress-ticker.config';\n\n// 🔁 ProgressTickerService centralizes timing control instead of spawning\n// multiple `setInterval` calls inside each animated component.\n//\n// This prevents creating 100+ independent timers (one per component),\n// and ensures all animations stay synchronized through a shared RxJS Observable.\n//\n// With 'shareReplay', the timer activates only when there’s at least one subscriber,\n// and it automatically stops when there are none.\n//\n// This approach significantly improves performance, reduces CPU usage,\n// and makes animation timing easier to manage and debug.\n\n@Injectable({ providedIn: 'root' })\nexport class ProgressTickerService {\n /** Emits once every `periodSec` seconds. Auto-starts & ref-counts. */\n readonly tick$: Observable<number>;\n\n /** For diagnostics: current number of active subscribers. */\n readonly subscriberCount$ = new BehaviorSubject<number>(0);\n\n /* 60 * 1_000 = 1 minute */\n\n constructor(@Inject(TICK_PERIOD_SECONDS) periodSec: number) {\n const periodMs = Math.max(0.125, periodSec) * 1_000; // guard against 0/neg\n\n const base$ = interval(periodMs, animationFrameScheduler);\n\n // wrapped timer that tracks subs/unsubs\n this.tick$ = defer(() => {\n // a new subscription is starting\n this.subscriberCount$.next(this.subscriberCount$.value + 1);\n\n return base$.pipe(\n finalize(() => {\n // this subscription is ending\n this.subscriberCount$.next(this.subscriberCount$.value - 1);\n }),\n );\n }).pipe(shareReplay({ bufferSize: 1, refCount: true }));\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n inject,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewEncapsulation,\n} from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { SkeletonModule } from 'primeng/skeleton';\nimport { BehaviorSubject, concatMap, from, Observable, Subject, Subscription, takeUntil } from 'rxjs';\nimport { CommonOperations } from '../../operations/operations';\nimport { CircleProgressModule } from '../circle-progress/circle-progress.module';\nimport { CircleVariable } from '../circle-progress/enums/circle-variable.enum';\nimport { CircleProgressConfig } from '../circle-progress/interfaces/circle-progress-config.interface';\nimport { IChatMeta } from '../client-home/interfaces/chat-meta.interface';\nimport { IPartialCircleProgressColors } from '../client-home/interfaces/partial-circle-progress-colors.interface';\nimport { innerProgressDefaultColors } from '../client-home/lookup/inner-progress-default-colors.config';\nimport { innerProgressTealColors } from '../client-home/lookup/inner-progress-teal-colors.config';\nimport { innerProgressWhiteColors } from '../client-home/lookup/inner-progress-white-colors.config';\nimport { progressDefaultColors } from '../client-home/lookup/progress-default-colors.config';\nimport { IInnerPartialCircleProgressColors } from './../client-home/interfaces/inner-partial-circle-progress-colors.interface';\nimport { innerProgressPinkColors } from './../client-home/lookup/inner-progress-pink-colors.config';\nimport { CONVERSATION_FLAG } from './enums/conversation-flag.enum';\nimport { COUNTER_FLAG_BASE } from './enums/counter-flag-base.enum';\nimport { INNER_CIRCLE_STATE } from './enums/inner-circle-state.enum';\nimport { ILibClientMatchOverview } from './interfaces/client-match-overview.interface';\nimport { IConversationFlag } from './interfaces/conversation-flag.interface';\nimport { ProgressDecision } from './interfaces/progress-decision.interface';\nimport { computeInnerState } from './lookups/computer-inner-state.lookup';\nimport { PROGRESS_GAP_MINUTES } from './progress-ticker/progress-gap.config';\nimport { ProgressTickerService } from './progress-ticker/progress-ticker.service';\n@Component({\n selector: 'lib-client-match-overview',\n templateUrl: './client-match-overview.component.html',\n styleUrls: ['./client-match-overview.component.scss'],\n encapsulation: ViewEncapsulation.ShadowDom,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [CommonModule, CircleProgressModule, TranslateModule, SkeletonModule],\n})\nexport class LibClientMatchOverviewComponent implements OnInit, OnDestroy, AfterViewInit, OnChanges {\n @Input({ required: true }) public overview: ILibClientMatchOverview;\n @Input() meta!: IChatMeta;\n @Input() expand: boolean = false;\n @Input() loading?: boolean = false;\n @Input() default?: boolean = false;\n @Input() hideProgressBar?: boolean = false;\n @Input() partialColors: IPartialCircleProgressColors = progressDefaultColors;\n @Input() showExternalPartialCircleProgress: boolean = true;\n @Input() maxValue: number = 100;\n @Input() enableChangeOverview: boolean = false;\n\n @Output() sendConversationFlag: EventEmitter<IConversationFlag> = new EventEmitter<IConversationFlag>();\n\n public circleVariable = CircleVariable;\n public innerMaxValue: number = 1_440;\n public innerValue: number = 0;\n public showIllumination: boolean = false;\n public showValueProportionLabel: boolean = true;\n public innerPartialColors: IInnerPartialCircleProgressColors = innerProgressDefaultColors;\n\n public innerState: INNER_CIRCLE_STATE = INNER_CIRCLE_STATE.Quiet;\n public basedOn: COUNTER_FLAG_BASE = null;\n public imageLoader$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n public imagePathId: string;\n\n public circleOpts: CircleProgressConfig;\n\n private cdr = inject(ChangeDetectorRef);\n private readonly ngZone = inject(NgZone);\n private readonly ticker = inject(ProgressTickerService);\n\n private readonly progressGap = inject(PROGRESS_GAP_MINUTES);\n\n private componentDestroyed$: Subject<void> = new Subject<void>();\n private tickerSub: Subscription | null = null;\n\n ngOnInit(): void {\n if (!this.default && this.overview.primary) {\n this.imagePathId = CommonOperations.randomString(100);\n this.loadProfileImage();\n }\n }\n\n ngAfterViewInit(): void {\n if (this.hideProgressBar || !this.meta) return;\n\n this.setInnerState();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const expandChange = changes['expand'];\n if (expandChange) {\n this.buildCircleOpts();\n return;\n }\n\n const overviewChange = changes['overview'];\n\n if (this.enableChangeOverview && overviewChange?.currentValue) {\n this.overview = overviewChange.currentValue;\n\n this.setInnerState();\n return;\n }\n\n const metaChange = changes['meta'];\n\n if (!metaChange || metaChange.isFirstChange() || this.hideProgressBar) {\n return;\n } else {\n const prev = metaChange.previousValue as IChatMeta;\n const curr = metaChange.currentValue as IChatMeta;\n\n if (prev.waitingAnswer !== curr.waitingAnswer) {\n if (curr?.waitingAnswer === true) {\n // new response from prospect/ red dot was added\n\n // if the prospect has answered and the client hasn't send a single message yet\n if (this.meta.firstAnswer) {\n this.setInnerCircleState(INNER_CIRCLE_STATE.Waiting);\n this.startTicker();\n }\n } else {\n // propect answered/ red dot was removed\n\n this.setInnerCircleState(INNER_CIRCLE_STATE.Quiet);\n this.stopTicker();\n }\n }\n\n if (prev.firstAnswer !== curr.firstAnswer && curr.firstAnswer) {\n // prospect has answered for the first time\n\n this.setInnerCircleState(INNER_CIRCLE_STATE.Quiet);\n this.stopTicker();\n }\n\n this.buildCircleOpts();\n return;\n }\n }\n\n ngOnDestroy(): void {\n this.componentDestroyed$.next();\n this.componentDestroyed$.complete();\n this.imageLoader$.complete();\n }\n\n private setInnerState(): void {\n const decision: ProgressDecision = computeInnerState({\n createdAt: this.overview.createdAt,\n lastMessageTimestamp: this.meta.lastResponseTimestamp,\n firstAnswer: this.meta.firstAnswer,\n waitingAnswer: this.meta.waitingAnswer,\n innerMax: this.innerMaxValue,\n conversationFlags: this.meta.conversationFlags,\n });\n if (!decision) return;\n\n this.setInnerCircleState(decision.state, decision.innerValue, decision.basedOn);\n\n if (decision.tick === 'start') {\n this.startTicker();\n } else {\n this.stopTicker();\n }\n\n this.buildCircleOpts();\n }\n\n private stepProgress(): void {\n if (this.innerValue <= this.innerMaxValue && (this.innerState === INNER_CIRCLE_STATE.Waiting || this.innerState === INNER_CIRCLE_STATE.Unresponsive)) {\n this.innerValue = Math.max(this.innerValue - this.progressGap, 0);\n this.buildCircleOpts();\n }\n\n if (this.innerValue === 0 && this.innerState === INNER_CIRCLE_STATE.Waiting) {\n this.setInnerCircleState(INNER_CIRCLE_STATE.Unresponsive);\n }\n\n if (this.innerValue === 0 && this.innerState === INNER_CIRCLE_STATE.Unresponsive) {\n this.setInnerCircleState(INNER_CIRCLE_STATE.Redelegation);\n this.stopTicker();\n }\n }\n\n private loadProfileImage(): void {\n from([this.overview.primary.src, this.overview.secondary.src])\n .pipe(\n takeUntil(this.componentDestroyed$),\n concatMap((imageSrc) => {\n return new Observable<boolean>((imageObserver) => {\n const image: HTMLImageElement = new Image();\n image.src = imageSrc;\n\n image.onload = () => {\n imageObserver.next(true);\n imageObserver.complete();\n };\n\n image.onerror = () => {\n imageObserver.error(false);\n };\n });\n }),\n )\n .subscribe({\n complete: () => {\n this.imageLoader$.next(true);\n },\n error: () => {\n this.imageLoader$.next(false);\n },\n });\n }\n\n private startTicker(): void {\n // guard: if already active, do nothing\n if (this.tickerSub) return;\n\n // 🚫 'runOutsideAngular()' ensures Angular doesn’t trigger global change detection\n // on every timer emission (which can happen every minute or less).\n // Without it, Angular would run 'ApplicationRef.tick()' and walk the entire component tree,\n // even if only one component actually needs to update.\n //\n // By running the ticking logic outside Angular’s zone,\n // we keep the main thread lighter and avoid unnecessary DOM checks.\n // Then, we re-enter Angular manually using 'run()'\n // and call 'markForCheck()' to update this component only.\n //\n // This pattern is ideal when using 'ChangeDetectionStrategy.OnPush'\n // and gives us precise, efficient rendering control.\n this.ngZone.runOutsideAngular(() => {\n this.tickerSub = this.ticker.tick$.pipe(takeUntil(this.componentDestroyed$)).subscribe((n) => {\n this.stepProgress();\n this.ngZone.run(() => this.cdr.markForCheck());\n });\n });\n }\n\n private stopTicker(): void {\n this.tickerSub?.unsubscribe();\n this.tickerSub = null;\n }\n\n private setInnerCircleState(preset: INNER_CIRCLE_STATE, innerValue: number = null, basedOn: COUNTER_FLAG_BASE = null): void {\n const lookUpMap: Record<\n INNER_CIRCLE_STATE,\n {\n innerValue: number;\n showIllumination: boolean;\n showValueProportionLabel: boolean;\n innerPartialColors: IInnerPartialCircleProgressColors;\n basedOn: COUNTER_FLAG_BASE;\n }\n > = {\n waiting: {\n innerValue: this.innerMaxValue,\n showIllumination: false,\n showValueProportionLabel: true,\n innerPartialColors: innerProgressWhiteColors,\n basedOn: this.basedOn,\n },\n quiet: {\n innerValue: this.innerMaxValue,\n showIllumination: false,\n showValueProportionLabel: false,\n innerPartialColors: innerProgressDefaultColors,\n basedOn: null,\n },\n unresponsive: {\n innerValue: this.innerMaxValue,\n showIllumination: true,\n showValueProportionLabel: true,\n innerPartialColors: innerProgressPinkColors,\n basedOn: this.basedOn,\n },\n redelegation: {\n innerValue: this.innerMaxValue,\n showIllumination: false,\n showValueProportionLabel: false,\n innerPartialColors: innerProgressTealColors,\n basedOn: this.basedOn,\n },\n };\n\n const map = lookUpMap[preset];\n\n this.innerValue = innerValue ?? map.innerValue;\n this.showIllumination = map.showIllumination;\n this.showValueProportionLabel = map.showValueProportionLabel;\n this.innerPartialColors = map.innerPartialColors;\n this.basedOn = basedOn ?? map.basedOn;\n this.innerState = preset;\n\n if (preset === INNER_CIRCLE_STATE.Unresponsive) {\n this.sendConversationFlag.emit({\n timestamp: new Date(),\n prospectId: this.overview._id,\n basedOn: this.basedOn,\n flag: CONVERSATION_FLAG.UNRESPONSIVE,\n });\n } else if (preset === INNER_CIRCLE_STATE.Redelegation) {\n this.sendConversationFlag.emit({\n timestamp: new Date(),\n prospectId: this.overview._id,\n basedOn: this.basedOn,\n flag: CONVERSATION_FLAG.REDELEGATION,\n });\n }\n\n this.buildCircleOpts();\n }\n\n private buildCircleOpts(): void {\n this.circleOpts = {\n value: this.overview.preferences + this.overview.personality,\n max: this.maxValue,\n partialColors: this.partialColors,\n showExternalPartialCircleProgress: this.showExternalPartialCircleProgress && this.expand,\n showValueProportionLabel: this.showValueProportionLabel,\n hasNotification: this.meta?.waitingAnswer,\n\n inner: {\n value: this.innerValue,\n max: this.innerMaxValue,\n colors: this.innerPartialColors,\n state: this.innerState,\n showIllumination: this.showIllumination,\n },\n\n imageUrl: this.overview.primary?.src,\n\n suffix: '',\n prefix: '',\n };\n }\n}\n","@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","export enum AlertStatusFields {\n upcomingDates = 'upcomingDates',\n\n compatibilityProfileTrait = 'compatibilityProfileTrait',\n compatibilityProfileSpider = 'compatibilityProfileSpider',\n\n chatHandoff = 'chatHandoff',\n chatProgress = 'chatProgress',\n\n chatMeetupAgenda = 'chatMeetupAgenda',\n face = 'face',\n}\n","export enum MatcherStatuses {\n STATUS0 = 'no contact',\n STATUS1 = '1st exchange',\n STATUS2 = '2nd exchange',\n STATUS3 = '3rd exchange',\n STATUS4 = '2+ laughs',\n STATUS5 = 'idea signalled',\n STATUS6 = 'alt contact',\n STATUS7 = 'any romance',\n STATUS8 = 'locale confirmed',\n STATUS9 = 'time confirmed',\n STATUS10 = 'all followup',\n}\n","import { MatcherStatuses } from '../enums/matcher-statuses.enum';\nimport { IStatus } from '../interfaces/status.interface';\n\nexport const MATCHER_STATUSES: IStatus[] = [\n {\n title: '1st',\n subtitle: 'exchange',\n value: MatcherStatuses.STATUS1,\n },\n {\n title: '2nd',\n subtitle: 'exchange',\n value: MatcherStatuses.STATUS2,\n },\n {\n title: '3rd',\n subtitle: 'exchange',\n value: MatcherStatuses.STATUS3,\n },\n {\n title: '2+',\n subtitle: 'laughs',\n value: MatcherStatuses.STATUS4,\n },\n {\n title: 'idea',\n subtitle: 'signalled',\n value: MatcherStatuses.STATUS5,\n },\n {\n title: 'alt',\n subtitle: 'contact',\n value: MatcherStatuses.STATUS6,\n },\n {\n title: 'any',\n subtitle: 'romance',\n value: MatcherStatuses.STATUS7,\n },\n {\n title: 'locale',\n subtitle: 'confirmed',\n value: MatcherStatuses.STATUS8,\n },\n {\n title: 'time',\n subtitle: 'confirmed',\n value: MatcherStatuses.STATUS9,\n },\n {\n title: 'all',\n subtitle: 'followup',\n value: MatcherStatuses.STATUS10,\n },\n];\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { MatcherStatuses } from '../enums/matcher-statuses.enum';\nimport { MATCHER_STATUSES } from '../lookups/matcher-statuses.lookup';\n\n@Pipe({\n name: 'isStatusIncluded',\n standalone: true,\n})\nexport class IsStatusIncludedPipe implements PipeTransform {\n transform(status: MatcherStatuses, index: number) {\n const statusFound = MATCHER_STATUSES.findIndex((stat) => status === stat.value);\n\n return index < statusFound + 1;\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\nimport { ButtonsModule } from '@naniteninja/ionic-lib';\nimport { LibChatComponentModule } from '../chat/chat.component.module';\nimport { IMessage } from '../chat/interfaces/message.interface';\nimport { MatcherStatuses } from './enums/matcher-statuses.enum';\nimport { MATCHER_STATUSES } from './lookups/matcher-statuses.lookup';\nimport { IsStatusIncludedPipe } from './pipes/is-status-included.pipe';\n\n@Component({\n selector: 'lib-matcher-statuses',\n standalone: true,\n imports: [LibChatComponentModule, ButtonsModule, IsStatusIncludedPipe],\n templateUrl: './matcher-statuses.component.html',\n styleUrls: ['./matcher-statuses.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatcherStatusesComponent {\n @Input() adsTemplate?: TemplateRef<HTMLElement>;\n @Input() status: MatcherStatuses = MatcherStatuses.STATUS0;\n @Input() hideStatuses: boolean = false;\n @Input() messages: IMessage[] = [];\n @Input() inputValue?: string = '';\n @Input() maxLength: number = 100;\n @Input() responseTime?: string = '';\n @Input() disabled: boolean = false;\n @Input() prospectJoinDate: Date;\n @Output() getMessages = new EventEmitter<boolean>();\n @Output() sendMessage = new EventEmitter<IMessage>();\n\n public MATCHER_STATUSES: typeof MATCHER_STATUSES = MATCHER_STATUSES;\n\n handleGetMessages(event: boolean) {\n this.getMessages.emit(event);\n }\n\n handleSendMessage(event: IMessage) {\n this.sendMessage.emit(event);\n }\n}\n","<div class=\"matcher-statuses-container\" [class.box-shadow-statuses]=\"!hideStatuses\">\n <div class=\"top-gradient-fade\"></div>\n\n @if (!hideStatuses) {\n <div class=\"status-list\">\n @for (matcherStatus of MATCHER_STATUSES; let idx = $index; track matcherStatus.title) {\n <lib-bubble-btn class=\"custom-bubble-status\" [title]=\"matcherStatus.title\" [subTitle]=\"matcherStatus.subtitle\" [checked]=\"status | isStatusIncluded: idx\"></lib-bubble-btn>\n }\n </div>\n }\n <lib-chat\n class=\"conversation-chat\"\n (getMessages)=\"handleGetMessages($event)\"\n (sendMessage)=\"handleSendMessage($event)\"\n [dateMessages]=\"messages\"\n [inputValue]=\"inputValue\"\n [maxLength]=\"maxLength\"\n [responseTime]=\"responseTime\"\n [disabled]=\"disabled\"\n [prospectJoinDate]=\"prospectJoinDate\"\n >\n </lib-chat>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'initials',\n pure: true,\n standalone: true,\n})\nexport class InitialsPipe implements PipeTransform {\n transform(fullName: string, numChars: number = 2): string {\n if (!fullName?.trim()) {\n return '';\n }\n return fullName\n .trim()\n .split(/\\s+/)\n .slice(0, numChars)\n .map((n) => n.substring(0, 2).toUpperCase())\n .join('');\n }\n}\n","import { ICircleData } from '../interfaces/chart-data-circle.interface';\nimport { IDefsF } from '../interfaces/chart-data-defs-f.interface';\nimport { IDefsLG } from '../interfaces/chart-data-defs-lg.interface';\nimport { IDefsRG } from '../interfaces/chart-data-defs-rg.interface';\n\nexport const circleData: ICircleData[] = [\n {\n cx: '0',\n cy: '0',\n r: '100',\n transform: `translate(${300 / 2},${300 / 2})`,\n stroke: 'url(#circleBorderRadiant)',\n 'stroke-width': '1.5',\n fill: 'url(#circleFillRadial)',\n },\n {\n cx: '0',\n cy: '0',\n r: '40',\n fill: 'black',\n transform: `translate(${300 / 2},${300 / 2})`,\n filter: 'url(#innerCircleBlurEffect)',\n },\n {\n cx: '0',\n cy: '0',\n r: '23',\n fill: '#ffffff0f',\n transform: `translate(${300 / 2},${300 / 2})`,\n filter: 'url(#innerWhiteCircleBlurEffect)',\n },\n];\n\nexport const defsLG: IDefsLG[] = [\n {\n id: 'circleBorderRadiant',\n x1: '0%',\n y1: '0%',\n x2: '100%',\n y2: '0%',\n stopTags: [\n { offset: '0%', style: 'stop-color:#562232;stop-opacity:1' },\n { offset: '100%', style: 'stop-color:#E6688D;stop-opacity:1' },\n ],\n },\n {\n id: 'circleFillRadial',\n x1: '0%',\n y1: '0%',\n x2: '100%',\n y2: '0%',\n stopTags: [\n { offset: '0%', style: 'stop-color:#00000043;stop-opacity:1' },\n { offset: '100%', style: 'stop-color:#29252D;stop-opacity:0.8' },\n ],\n },\n {\n id: 'needleRadiant',\n x1: '0%',\n y1: '0%',\n x2: '100%',\n y2: '0%',\n stopTags: [\n { offset: '0%', style: 'stop-color:#8d61791b; stop-opacity:1' },\n { offset: '30%', style: 'stop-color:#E854AC; stop-opacity:0.5' },\n { offset: '70%', style: 'stop-color:#E854AC; stop-opacity:0.5' },\n { offset: '100%', style: 'stop-color:#8d61791b; stop-opacity:1' },\n ],\n },\n];\n\nexport const defsF: IDefsF[] = [\n {\n id: 'innerCircleBlurEffect',\n x: '-40%',\n y: '-40%',\n height: '200%',\n width: '200%',\n feGaussianTags: [{ in: 'SourceGraphic', stdDeviation: '12' }],\n },\n {\n id: 'innerWhiteCircleBlurEffect',\n x: '-40%',\n y: '-40%',\n height: '200%',\n width: '200%',\n feGaussianTags: [{ in: 'SourceGraphic', stdDeviation: '10' }],\n },\n];\n\nexport const defsRG: IDefsRG[] = [\n {\n id: 'innerCircleRadialEffect',\n cx: '50%',\n cy: '50%',\n r: '30%',\n stopTags: [\n { offset: '0%', style: 'stop-color:#5050591a; stop-opacity:1' },\n { offset: '30%', style: 'stop-color:#5050592a; stop-opacity:1' },\n { offset: '70%', style: 'stop-color:#000000; stop-opacity:1' },\n { offset: '100%', style: 'stop-color: #000000; stop-opacity:1' },\n ],\n },\n {\n id: 'firstGraphColor',\n cx: '50%',\n cy: '50%',\n r: '50%',\n stopTags: [\n { offset: '0%', style: 'stop-color:#47454C; stop-opacity:0.3' },\n { offset: '30%', style: 'stop-color:#47454C; stop-opacity:0.3' },\n { offset: '70%', style: 'stop-color:#6c6b70; stop-opacity:0.3' },\n { offset: '100%', style: 'stop-color: #753D43; stop-opacity:0.5' },\n ],\n },\n {\n id: 'secondGraphColor',\n cx: '50%',\n cy: '50%',\n r: '0%',\n stopTags: [\n { offset: '0%', style: 'stop-color:#48263C; stop-opacity:0.3' },\n { offset: '30%', style: 'stop-color:#48263C; stop-opacity:0.3' },\n { offset: '70%', style: 'stop-color:#48263C; stop-opacity:0.3' },\n { offset: '100%', style: 'stop-color:#48263C; stop-opacity:0.3' },\n ],\n },\n {\n id: 'thirdGraphColor',\n cx: '50%',\n cy: '50%',\n r: '0%',\n stopTags: [\n { offset: '0%', style: 'stop-color:#006400; stop-opacity:0.3' },\n { offset: '30%', style: 'stop-color:#006400; stop-opacity:0.3' },\n { offset: '70%', style: 'stop-color:#006400; stop-opacity:0.3' },\n { offset: '100%', style: 'stop-color:#006400; stop-opacity:0.3' },\n ],\n },\n {\n id: 'fourthGraphColor',\n cx: '50%',\n cy: '50%',\n r: '0%',\n stopTags: [\n { offset: '0%', style: 'stop-color:#8B0000; stop-opacity:0.3' },\n { offset: '30%', style: 'stop-color:#8B0000; stop-opacity:0.3' },\n { offset: '70%', style: 'stop-color:#8B0000; stop-opacity:0.3' },\n { offset: '100%', style: 'stop-color:#8B0000; stop-opacity:0.3' },\n ],\n },\n {\n id: 'fifthGraphColor',\n cx: '50%',\n cy: '50%',\n r: '0%',\n stopTags: [\n { offset: '0%', style: 'stop-color:#00008B; stop-opacity:0.3' },\n { offset: '30%', style: 'stop-color:#00008B; stop-opacity:0.3' },\n { offset: '70%', style: 'stop-color:#00008B; stop-opacity:0.3' },\n { offset: '100%', style: 'stop-color:#00008B; stop-opacity:0.3' },\n ],\n },\n {\n id: 'sixthGraphColor',\n cx: '50%',\n cy: '50%',\n r: '0%',\n stopTags: [\n { offset: '0%', style: 'stop-color:#8B008B; stop-opacity:0.3' },\n { offset: '30%', style: 'stop-color:#8B008B; stop-opacity:0.3' },\n { offset: '70%', style: 'stop-color:#8B008B; stop-opacity:0.3' },\n { offset: '100%', style: 'stop-color:#8B008B; stop-opacity:0.3' },\n ],\n },\n {\n id: 'seventhGraphColor',\n cx: '50%',\n cy: '50%',\n r: '0%',\n stopTags: [\n { offset: '0%', style: 'stop-color:#FF8C00; stop-opacity:0.3' },\n { offset: '30%', style: 'stop-color:#FF8C00; stop-opacity:0.3' },\n { offset: '70%', style: 'stop-color:#FF8C00; stop-opacity:0.3' },\n { offset: '100%', style: 'stop-color:#FF8C00; stop-opacity:0.3' },\n ],\n },\n {\n id: 'eighthGraphColor',\n cx: '50%',\n cy: '50%',\n r: '0%',\n stopTags: [\n { offset: '0%', style: 'stop-color:#008080; stop-opacity:0.3' },\n { offset: '30%', style: 'stop-color:#008080; stop-opacity:0.3' },\n { offset: '70%', style: 'stop-color:#008080; stop-opacity:0.3' },\n { offset: '100%', style: 'stop-color:#008080; stop-opacity:0.3' },\n ],\n },\n {\n id: 'ninthGraphColor',\n cx: '50%',\n cy: '50%',\n r: '0%',\n stopTags: [\n { offset: '0%', style: 'stop-color:#D2691E; stop-opacity:0.3' },\n { offset: '30%', style: 'stop-color:#D2691E; stop-opacity:0.3' },\n { offset: '70%', style: 'stop-color:#D2691E; stop-opacity:0.3' },\n { offset: '100%', style: 'stop-color:#D2691E; stop-opacity:0.3' },\n ],\n },\n {\n id: 'tenthGraphColor',\n cx: '50%',\n cy: '50%',\n r: '0%',\n stopTags: [\n { offset: '0%', style: 'stop-color:#9400D3; stop-opacity:0.3' },\n { offset: '30%', style: 'stop-color:#9400D3; stop-opacity:0.3' },\n { offset: '70%', style: 'stop-color:#9400D3; stop-opacity:0.3' },\n { offset: '100%', style: 'stop-color:#9400D3; stop-opacity:0.3' },\n ],\n },\n {\n id: 'eleventhGraphColor',\n cx: '50%',\n cy: '50%',\n r: '0%',\n stopTags: [\n { offset: '0%', style: 'stop-color:#4B0082; stop-opacity:0.3' },\n { offset: '30%', style: 'stop-color:#4B0082; stop-opacity:0.3' },\n { offset: '70%', style: 'stop-color:#4B0082; stop-opacity:0.3' },\n { offset: '100%', style: 'stop-color:#4B0082; stop-opacity:0.3' },\n ],\n },\n {\n id: 'twelfthGraphColor',\n cx: '50%',\n cy: '50%',\n r: '0%',\n stopTags: [\n { offset: '0%', style: 'stop-color:#800000; stop-opacity:0.3' },\n { offset: '30%', style: 'stop-color:#800000; stop-opacity:0.3' },\n { offset: '70%', style: 'stop-color:#800000; stop-opacity:0.3' },\n { offset: '100%', style: 'stop-color:#800000; stop-opacity:0.3' },\n ],\n },\n {\n id: 'thirteenthGraphColor',\n cx: '50%',\n cy: '50%',\n r: '0%',\n stopTags: [\n { offset: '0%', style: 'stop-color:#808000; stop-opacity:0.3' },\n { offset: '30%', style: 'stop-color:#808000; stop-opacity:0.3' },\n { offset: '70%', style: 'stop-color:#808000; stop-opacity:0.3' },\n { offset: '100%', style: 'stop-color:#808000; stop-opacity:0.3' },\n ],\n },\n {\n id: 'fourteenthGraphColor',\n cx: '50%',\n cy: '50%',\n r: '0%',\n stopTags: [\n { offset: '0%', style: 'stop-color:#483D8B; stop-opacity:0.3' },\n { offset: '30%', style: 'stop-color:#483D8B; stop-opacity:0.3' },\n { offset: '70%', style: 'stop-color:#483D8B; stop-opacity:0.3' },\n { offset: '100%', style: 'stop-color:#483D8B; stop-opacity:0.3' },\n ],\n },\n {\n id: 'fifteenthGraphColor',\n cx: '50%',\n cy: '50%',\n r: '0%',\n stopTags: [\n { offset: '0%', style: 'stop-color:#2F4F4F; stop-opacity:0.3' },\n { offset: '30%', style: 'stop-color:#2F4F4F; stop-opacity:0.3' },\n { offset: '70%', style: 'stop-color:#2F4F4F; stop-opacity:0.3' },\n { offset: '100%', style: 'stop-color:#2F4F4F; stop-opacity:0.3' },\n ],\n },\n];\n","import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, inject, Input, OnChanges, OnDestroy, SimpleChanges, ViewChild } from '@angular/core';\nimport * as d3 from 'd3';\nimport { SharedModule } from '../../shared/shared.module';\nimport { InitialsPipe } from '../../pipes/initials/initials.pipe';\nimport { AlertStatusFields } from '../lib-client-dashboard/enums/alert-status-fields.enum';\nimport { ICircleData } from './interfaces/chart-data-circle.interface';\nimport { IDefsF } from './interfaces/chart-data-defs-f.interface';\nimport { IDefsLG } from './interfaces/chart-data-defs-lg.interface';\nimport { IDefsRG } from './interfaces/chart-data-defs-rg.interface';\nimport { ISpiderChartConfig } from './interfaces/config.interface';\nimport { IDataset } from './interfaces/dataset.interface';\nimport { IPolygonColor } from './interfaces/polygon-color.interface';\nimport { ISpiderChartAttribute } from './interfaces/spider-chart-attribute.interface';\nimport { circleData, defsF, defsLG, defsRG } from './lookup/svg-config.lookup';\n\n@Component({\n selector: 'lib-spider-chart',\n templateUrl: './spider-chart.component.html',\n styleUrl: './spider-chart.component.scss',\n standalone: true,\n imports: [SharedModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [InitialsPipe],\n})\nexport class SpiderChartComponent implements OnChanges, OnDestroy, AfterViewInit {\n @ViewChild('D3Chart') d3Chart: ElementRef;\n @Input() datasets: IDataset[] = [];\n @Input() config: ISpiderChartConfig;\n @Input() polygon_colors: IPolygonColor[] = [];\n @Input() showChartInfo: boolean = true;\n\n public alertStatusFields = AlertStatusFields;\n public titleAlertPopup = '';\n public descriptionAlertPopup = '';\n public isAlertPopupClosing = false;\n public timeStateAlertPopup = 0;\n public numberAlertPopup: number;\n\n public svg: d3.Selection<SVGSVGElement, unknown, HTMLElement, unknown>;\n public defsRG: IDefsRG[] = [];\n public defsF: IDefsF[] = [];\n public defsLG: IDefsLG[] = [];\n public circleData: ICircleData[] = [];\n public readonly initialsPipe: InitialsPipe = inject(InitialsPipe);\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if ((changes['datasets'] || changes['config']) && this.svg) {\n if (this.datasets.length && this.config) {\n this.createRadarChart();\n } else if (changes['config']?.currentValue?.['fullScreen'] !== changes['config']?.previousValue?.['fullScreen']) {\n this.createRadarChart();\n }\n }\n }\n\n ngAfterViewInit(): void {\n this.defsRG = defsRG;\n this.defsF = defsF;\n this.defsLG = defsLG;\n this.circleData = circleData;\n this.initializeChart();\n }\n\n ngOnDestroy(): void {\n if (this.svg) {\n this.svg.remove();\n this.svg = null;\n }\n }\n\n public onClosedAlert(data: { event: boolean; field: AlertStatusFields }): void {\n console.log(data);\n }\n\n private initializeChart(): void {\n this.svg = this.createSvgObject();\n const defsGroup = this.svg.append('g');\n\n this.defsLG.forEach((defData) => {\n this.createDefsAndLinearGradient(defsGroup, defData);\n });\n\n this.defsF.forEach((defData) => {\n this.createDefsAndFilter(defsGroup, defData);\n });\n\n this.defsRG.forEach((defData) => {\n this.createDefsAndRadialGradient(defsGroup, defData);\n });\n\n const circleGroup = this.svg.append('g');\n this.createCircle(circleGroup, this.circleData);\n if (!this.config) return;\n this.createRadarChart();\n }\n\n private createSvgObject(): d3.Selection<SVGSVGElement, unknown, HTMLElement, unknown> {\n return d3.select(this.d3Chart?.nativeElement).append('svg').attr('class', 'svg').attr('height', 300).attr('width', 300);\n }\n\n private createLine(\n group: d3.Selection<SVGGElement, unknown, HTMLElement, unknown>,\n data: ISpiderChartAttribute[],\n MaxValue: number,\n angleSlice: number,\n rScale: d3.ScaleLinear<number, number>,\n ): void {\n group.selectAll('line').remove();\n return group\n .selectAll('line')\n .data(data)\n .enter()\n .append('g')\n .append('line')\n .attr('class', 'line')\n .attr('class', 'line-group')\n .attr('x1', 0)\n .attr('y1', 0)\n .attr('x2', (_d, i) => rScale(MaxValue * 1.4) * Math.cos(angleSlice * i + 0.01 - Math.PI / 2))\n .attr('y2', (_d, i) => rScale(MaxValue * 1.4) * Math.sin(angleSlice * i + 0.01 - Math.PI / 2))\n .attr('stroke', 'url(#needleRadiant)')\n .attr('transform', 'translate(150,150)');\n }\n\n private createCircle(group: d3.Selection<SVGGElement, unknown, HTMLElement, unknown>, data: ICircleData[]): void {\n data?.forEach((datum) => {\n const g = group.append('circle');\n Object.keys(datum).forEach((key) => {\n g.attr(key, datum[key]);\n });\n });\n return group;\n }\n\n private createText(\n group: d3.Selection<SVGGElement, unknown, HTMLElement, unknown>,\n data: ISpiderChartAttribute[],\n rScale: d3.ScaleLinear<number, number>,\n MaxValue: number,\n angleSlice: number,\n ) {\n const toolTip = d3.select('#tooltip');\n group.selectAll('text').remove();\n\n const isFullScreenActive: boolean = this.config.fullScreen;\n\n // TODO left based on position of modal\n const left = isFullScreenActive ? 0 : 0;\n const top = isFullScreenActive ? -80 : -220;\n return group\n .selectAll('text')\n .data(data)\n .enter()\n .append('text')\n .text((d) => this.initialsPipe.transform(d.text))\n .attr('x', (_d, i) => {\n const x2 = rScale(MaxValue * 1.2) * Math.cos(angleSlice * i + 0.1 - Math.PI / 2);\n return x2;\n })\n .attr('y', (_d, i) => {\n const y2 = rScale(MaxValue * 1.2) * Math.sin(angleSlice * i + 0.1 - Math.PI / 2);\n return y2;\n })\n .attr('dy', '0.35em')\n .attr('transform', 'translate(150,150)')\n .style('fill', '#FE3C72')\n .style('text-shadow', '1px 2px 1px #000')\n .attr('class', 'line-label')\n .on('pointerdown', (event, d: ISpiderChartAttribute) => {\n const { titleAlertPopup, descriptionAlertPopup } = d;\n this.titleAlertPopup = titleAlertPopup;\n this.descriptionAlertPopup = descriptionAlertPopup;\n this.isAlertPopupClosing = false;\n this.timeStateAlertPopup = new Date().getTime();\n this.numberAlertPopup = Math.floor(Math.random() * 10);\n this.cdr.detectChanges();\n toolTip\n .style('display', 'block')\n .style('left', event.pageX + left + 'px')\n .style('top', event.pageY + top < 0 ? 0 : event.pageY + top + 'px');\n })\n .on('pointerup', (event, d: ISpiderChartAttribute) => {});\n }\n\n private createPolygons(group: d3.Selection<SVGGElement, unknown, HTMLElement, unknown>, datasets: IDataset[], rScale: d3.ScaleLinear<number, number>, angleSlice: number): void {\n group.selectAll('polygon').remove();\n group.selectAll('.radarCircle').remove();\n\n const polygonPoints = (data) => {\n const points = data?.keys?.map((key, i) => {\n const r = rScale(data?.values[key] ?? 1 * 1);\n const x = r * Math.cos(angleSlice * i + 0.01 - Math.PI / 2);\n const y = r * Math.sin(angleSlice * i + 0.01 - Math.PI / 2);\n return `${x},${y}`;\n });\n return points.join(' ');\n };\n group\n .selectAll('polygon')\n .data(datasets)\n .enter()\n .append('polygon')\n .attr('points', (d) => polygonPoints(d ?? {}))\n .attr('stroke', (_, i) => _.polygon_color?.value)\n .attr('transform', 'translate(150,150)')\n\n .attr('fill', (_, i) => `url(${this.polygon_colors?.[i]?.label})`);\n datasets.forEach((data, j) => {\n const allValuesAreZero = data.keys.every((key) => data.values[key] === 0);\n if (!allValuesAreZero) {\n group\n .append('g')\n .selectAll('circle')\n .data(data.keys)\n .enter()\n .append('circle')\n .attr('class', 'radarCircle')\n .attr('r', 3)\n .attr('cx', (key, i) => rScale(data.values[key] ?? 0) * Math.cos(angleSlice * i - Math.PI / 2))\n .attr('cy', (key, i) => rScale(data.values[key] ?? 0) * Math.sin(angleSlice * i - Math.PI / 2))\n .style('fill', 'white')\n .style('stroke', () => this.polygon_colors?.[j]?.value) // Using stroke colors from the strokeColors array\n .attr('transform', 'translate(150,150)')\n .attr('filter', 'blur(1px)')\n .style('stroke-width', 2)\n .style('fill-opacity', 0.8);\n }\n });\n }\n\n private createDefsAndLinearGradient(group: d3.Selection<SVGGElement, unknown, HTMLElement, unknown>, data: IDefsLG): void {\n const defs = group.append('defs').append('linearGradient').attr('id', data.id).attr('x1', data.x1).attr('y1', data.y1).attr('x2', data.x2).attr('y2', data.y2);\n\n data.stopTags.forEach((elem) => {\n defs.append('stop').attr('offset', elem.offset).attr('style', elem.style);\n });\n }\n\n private createDefsAndFilter(group: d3.Selection<SVGGElement, unknown, HTMLElement, unknown>, data: IDefsF): void {\n const defs = group.append('defs').append('filter').attr('id', data.id).attr('x', data.x).attr('y', data.y).attr('height', data.height).attr('width', data.width);\n\n data.feGaussianTags.forEach((elem) => {\n defs.append('feGaussianBlur').attr('in', elem.in).attr('stdDeviation', elem.stdDeviation);\n });\n }\n\n private createDefsAndRadialGradient(group: d3.Selection<SVGGElement, unknown, HTMLElement, unknown>, data: IDefsRG): void {\n const defs = group.append('defs').append('radialGradient').attr('id', data.id).attr('cx', data.cy).attr('cy', data.cx).attr('r', data.r);\n\n data.stopTags.forEach((elem) => {\n defs.append('stop').attr('offset', elem.offset).attr('style', elem.style);\n });\n }\n\n private createRadarChart(): void {\n const { maxValue, datasets, attributes } = this.config;\n const allAxis = [...new Set(attributes)].map((i) => i);\n const total = allAxis.length;\n const angleSlice = (Math.PI * 2) / total;\n let MaxValue =\n datasets.length > 0\n ? Math.max(\n ...datasets.reduce((a, i) => {\n return [...a, ...Object.values(i.values)];\n }, []),\n )\n : maxValue;\n MaxValue = MaxValue > 0 ? MaxValue : 25;\n\n const rScale = d3.scaleLinear().range([0, 100]).domain([0, MaxValue]);\n\n this.createLine(this.svg, allAxis, MaxValue, angleSlice, rScale);\n this.createText(this.svg, allAxis, rScale, MaxValue, angleSlice);\n this.createPolygons(this.svg, datasets, rScale, angleSlice);\n }\n}\n","<div id=\"tooltip\">\n <lib-alert-popup [title]=\"titleAlertPopup\" [description]=\"descriptionAlertPopup\" [timeState]=\"timeStateAlertPopup\" [number]=\"numberAlertPopup\"></lib-alert-popup>\n</div>\n\n<div class=\"container\">\n <div class=\"d3-container\">\n <div class=\"d3-chart\" #D3Chart></div>\n @if (showChartInfo) {\n <div class=\"chartInfo\">\n @if (datasets.length > 0) {\n <div class=\"datachart\">\n @for (dataset of datasets; let j = $index; track dataset) {\n <div class=\"legend-item\">\n <div [style.border]=\"'5px solid ' + polygon_colors?.[j]?.value\" [style.boxShadow]=\"'0px 0px 12px ' + polygon_colors?.[j]?.value\" class=\"legend-color\"></div>\n {{ dataset.title }}\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n</div>\n","import { SwiperOptions } from 'swiper/types';\n\nexport const dashboardMainSwiperDefaultOptions: SwiperOptions = {\n centeredSlides: true,\n grabCursor: true,\n slidesPerView: 'auto',\n spaceBetween: 20,\n keyboard: {\n enabled: true,\n onlyInViewport: false,\n },\n};\n","import { SwiperOptions } from 'swiper/types';\n\nexport const dashboardThumbsSwiperDefaultOptions: SwiperOptions = {\n centeredSlides: true,\n centeredSlidesBounds: true,\n grabCursor: true,\n freeMode: {\n enabled: true,\n sticky: true,\n },\n slidesPerView: 10,\n spaceBetween: 0,\n breakpoints: {\n 640: {\n slidesPerView: 10,\n },\n 1024: {\n slidesPerView: 10,\n },\n },\n mousewheel: {\n invert: true,\n },\n keyboard: {\n enabled: true,\n onlyInViewport: false,\n },\n};\n","import { CommonModule } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, ContentChild, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport Swiper from 'swiper';\nimport { register } from 'swiper/element/bundle';\nimport { SwiperOptions } from 'swiper/types';\nimport { dashboardMainSwiperDefaultOptions } from './lookups/dashboard-main-swiper-options';\nimport { dashboardThumbsSwiperDefaultOptions } from './lookups/dashboard-thumbs-swiper-options';\n\nregister();\n@Component({\n selector: 'lib-dashboard-swipeable-tabs',\n standalone: true,\n imports: [CommonModule, TranslateModule],\n templateUrl: './dashboard-swipeable-tabs.component.html',\n styleUrls: ['./dashboard-swipeable-tabs.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LibDashboardSwipeableTabsComponent implements AfterViewInit {\n @ViewChild('thumbSwiper', { static: false }) thumbSwiper!: ElementRef<{ initialize: () => {} }>;\n @ViewChild('mainSwiper', { static: false }) mainSwiper!: ElementRef<{ initialize: () => {} }>;\n @ContentChild('thumbSlides', { static: false }) thumbSlides: ElementRef | undefined;\n @Input() thumbsSwiperOptions: SwiperOptions = dashboardThumbsSwiperDefaultOptions;\n @Input() mainSwiperOptions: SwiperOptions = dashboardMainSwiperDefaultOptions;\n @Input() activeIndex: number = 0;\n @Input() bottomThumbs: boolean = false;\n @Input() slideContentMaxHeight: string = 'auto';\n @Input() mainSwiperHeight: string = 'auto';\n @Input() subMainSwiperHeight: string = 'auto';\n @Input() thumbsSwiperHeight: string = 'auto';\n @Input() generalSwiperHeight: string = 'auto';\n\n @Output() activeIndexChange: EventEmitter<number> = new EventEmitter();\n private thumbsSwiperInstance: Swiper;\n private mainSwiperInstance: Swiper;\n\n ngAfterViewInit(): void {\n this.initSwiperInstances();\n }\n\n private initSwiperInstances(): void {\n const ref = this;\n const swiperParams: SwiperOptions = {\n ...this.thumbsSwiperOptions,\n initialSlide: this.activeIndex,\n on: {\n init(swiper: Swiper) {\n ref.thumbsSwiperInstance = swiper;\n ref.initMainSwiper();\n },\n click(swiper: Swiper) {\n if (swiper?.clickedIndex > -1) {\n if (ref.activeIndex !== swiper?.clickedIndex) {\n ref.activeIndex = swiper.clickedIndex;\n ref.activeIndexChange.emit(swiper.clickedIndex);\n }\n }\n },\n },\n };\n Object.assign(this.thumbSwiper.nativeElement, swiperParams);\n this.thumbSwiper.nativeElement.initialize();\n }\n\n private initMainSwiper(): void {\n const ref = this;\n\n const swiperParams: SwiperOptions = {\n ...this.mainSwiperOptions,\n initialSlide: this.activeIndex,\n autoHeight: true,\n thumbs: {\n swiper: this.thumbsSwiperInstance,\n },\n on: {\n init(swiper: Swiper) {\n ref.mainSwiperInstance = swiper;\n },\n slideChange(swiper: Swiper) {\n if (ref.activeIndex !== swiper?.activeIndex) {\n ref.activeIndex = swiper?.activeIndex;\n ref.activeIndexChange.emit(swiper?.activeIndex);\n }\n },\n },\n };\n Object.assign(this.mainSwiper.nativeElement, swiperParams);\n this.mainSwiper.nativeElement.initialize();\n\n requestAnimationFrame(() => {\n ref.mainSwiperInstance?.update();\n ref.thumbsSwiperInstance?.update();\n });\n }\n}\n","<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","export enum ClientHomeComponent {\n ChatCompatibility = 'ChatCompatibility',\n ChatHandoff = 'ChatHandoff',\n ChatScheduler = 'ChatScheduler',\n ClientMatchSpiderChart = 'ClientMatchSpiderChart',\n ClientMatchTraitChart = 'ClientMatchTraitChart',\n}\n","import { addDays, endOfDay } from 'date-fns';\nimport { of } from 'rxjs';\nimport { IHomeDashboardInputs } from '../interfaces/home-dashboard-inputs.interface';\nimport { ClientHomeComponent } from './../enums/client-home-component.enum';\n\nexport const defaultClientHomeConfig: IHomeDashboardInputs = {\n loading: {\n clientMatches: true,\n },\n default: false,\n component: ClientHomeComponent.ChatHandoff,\n activeIndex: 0,\n slideContentMaxHeight: 'auto',\n clientMatches$: of([]),\n schedulers$: of([]),\n polygonColors: [],\n spiderConfig: null,\n bottomThumbs: true,\n includeTime: true,\n maxLength: 300,\n includeGifMessage: true,\n startDate: new Date(),\n endDate: endOfDay(addDays(new Date(), 6)),\n emptyMessage: '',\n displayBookedStatuses: false,\n displayEmptyDays: true,\n loading$: of(false),\n alertStatus: {},\n showValueProportionLabel: false,\n hideProgressBar: false,\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { map, Observable } from 'rxjs';\nimport { SenderTypes } from '../../chat/enums/sender-types.enum';\nimport { ILibClientMatchOverview } from '../../client-match-overview/interfaces/client-match-overview.interface';\nimport { IChatMeta } from '../interfaces/chat-meta.interface';\n\n@Pipe({\n name: 'chatMeta',\n standalone: true,\n pure: true, // default, but being explicit\n})\nexport class ChatMetaPipe implements PipeTransform {\n transform(clientMatches$: Observable<ILibClientMatchOverview[]>, prospectId: string): Observable<IChatMeta> {\n return clientMatches$?.pipe(\n map((clientMatches) => clientMatches.map((c) => c.prospectData)),\n map((chats) => {\n const chat = chats.find((c) => c.prospectId === prospectId);\n if (!chat || chat.messages.length === 0) {\n return {\n lastResponseTimestamp: null,\n firstAnswer: false,\n waitingAnswer: false,\n conversationFlags: chat?.conversationFlags,\n };\n }\n\n // --- one forward/backward scan, no extra arrays ---\n let lastUserIndex = -1;\n for (let i = chat.messages.length - 1; i >= 0; i--) {\n if (chat.messages[i].sender === SenderTypes.USER) {\n lastUserIndex = i;\n break;\n }\n }\n\n let firstProspectMessageAfterMe: Date | null = null;\n let waitingAnswer = false;\n\n if (lastUserIndex !== -1) {\n for (let i = lastUserIndex + 1; i < chat.messages.length; i++) {\n if (chat.messages[i].sender === SenderTypes.OTHER) {\n firstProspectMessageAfterMe = chat.messages[i].timestamp;\n waitingAnswer = true; // prospect wrote last → waiting\n break;\n }\n }\n }\n\n if (!waitingAnswer) {\n // Either I haven't written, or I wrote last\n const lastMsg = chat.messages[chat.messages.length - 1];\n waitingAnswer = !!lastMsg && lastMsg.sender === SenderTypes.OTHER && lastUserIndex === -1;\n }\n\n return {\n lastResponseTimestamp: firstProspectMessageAfterMe,\n firstAnswer: lastUserIndex !== -1,\n waitingAnswer,\n conversationFlags: chat.conversationFlags,\n };\n }),\n );\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ILibClientMatchOverview } from '../../client-match-overview/interfaces/client-match-overview.interface';\nimport { IHomeDashboardInputs } from '../interfaces/home-dashboard-inputs.interface';\nimport { IPartialCircleProgressColors } from '../interfaces/partial-circle-progress-colors.interface';\nimport { progressDefaultColors } from '../lookup/progress-default-colors.config';\n\n@Pipe({\n name: 'getColorByMatcher',\n standalone: true,\n})\nexport class GetColorByMatcherPipe implements PipeTransform {\n transform(match: ILibClientMatchOverview, config: IHomeDashboardInputs): IPartialCircleProgressColors {\n const defaultColors: IPartialCircleProgressColors = progressDefaultColors;\n\n if (!config?.spiderConfig?.datasets?.length) {\n return defaultColors;\n }\n\n const currentMatch = config.spiderConfig.datasets.find((ma) => ma.title === match.primary?.name || ma.title === match.secondary?.name);\n\n return currentMatch\n ? {\n primary: currentMatch.polygon_color.value,\n secondary: currentMatch.polygon_color.value,\n tertiary: currentMatch.polygon_color.value,\n gradientPrimary: currentMatch.polygon_color.value,\n gradientSecondary: currentMatch.polygon_color.value,\n complete: currentMatch.polygon_color.value,\n incomplete: currentMatch.polygon_color.value,\n }\n : defaultColors;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, inject, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { ButtonsModule } from '@naniteninja/ionic-lib';\nimport { LibChatComponentModule } from '../chat/chat.component.module';\nimport { IMessage } from '../chat/interfaces/message.interface';\nimport { SharedModule } from '../../shared/shared.module';\nimport { ISchedulerAction } from '../calendar/scheduler/interfaces/scheduler.action.interface';\nimport { LibSchedulerComponent } from '../calendar/scheduler/scheduler.component';\nimport { LibClientMatchOverviewComponent } from '../client-match-overview/client-match-overview.component';\nimport { ILibClientMatchOverview } from '../client-match-overview/interfaces/client-match-overview.interface';\nimport { IDashboardMatchRequest } from '../client-match-overview/interfaces/dashboard-match-request.interface';\nimport { ProgressTickerService } from '../client-match-overview/progress-ticker/progress-ticker.service';\nimport { AlertStatusFields } from '../lib-client-dashboard/enums/alert-status-fields.enum';\nimport { MATCHER_STATUSES } from '../matcher-statuses/lookups/matcher-statuses.lookup';\nimport { MatcherStatusesComponent } from '../matcher-statuses/matcher-statuses.component';\nimport { SpiderChartComponent } from '../spider-chart/spider-chart.component';\nimport { LibDashboardSwipeableTabsComponent } from '../dashboard-swipeable-tabs/dashboard-swipeable-tabs.component';\nimport { ClientHomeComponent } from './enums/client-home-component.enum';\nimport { IHomeDashboardInputs } from './interfaces/home-dashboard-inputs.interface';\nimport { defaultClientHomeConfig } from './lookup/client-home.config';\nimport { ChatMetaPipe } from './pipes/chat-meta.pipe';\nimport { GetColorByMatcherPipe } from './pipes/get-color-by-matcher.pipe';\n\n@Component({\n selector: 'lib-client-home',\n standalone: true,\n imports: [\n CommonModule,\n LibClientMatchOverviewComponent,\n TranslateModule,\n LibDashboardSwipeableTabsComponent,\n LibChatComponentModule,\n LibSchedulerComponent,\n SpiderChartComponent,\n ButtonsModule,\n SharedModule,\n MatcherStatusesComponent,\n GetColorByMatcherPipe,\n ChatMetaPipe,\n ],\n templateUrl: './client-home.component.html',\n styleUrls: ['./client-home.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LibClientHomeComponent implements OnInit, OnDestroy {\n @Input() config: IHomeDashboardInputs;\n\n @Output() activeIndexChange: EventEmitter<number> = new EventEmitter();\n @Output() addMessage: EventEmitter<{ message: IMessage; prospectId: string; matchRequest: IDashboardMatchRequest }> = new EventEmitter();\n @Output() getMessages: EventEmitter<void> = new EventEmitter();\n @Output() bookEvent: EventEmitter<ISchedulerAction> = new EventEmitter();\n @Output() removeSuggestion: EventEmitter<ISchedulerAction> = new EventEmitter();\n @Output() handleAppearPopup: EventEmitter<AlertStatusFields> = new EventEmitter();\n\n public alertStatusFields = AlertStatusFields;\n public components = ClientHomeComponent;\n public clientMatches: ILibClientMatchOverview[];\n public activeChatHeadIndex: number;\n public assetPaths = {\n traitVisual: 'assets/trait-visual/force-directed-graph.png',\n };\n private componentDestroyed$: Subject<void>;\n public MATCHER_STATUSES: typeof MATCHER_STATUSES = MATCHER_STATUSES;\n public readonly defaultNumberOfItems = Array.from({ length: 10 }, () => null);\n\n private readonly ticker = inject(ProgressTickerService);\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n this.config = {\n ...defaultClientHomeConfig,\n ...this.config,\n };\n this.componentDestroyed$ = new Subject();\n this.config?.clientMatches$?.pipe(takeUntil(this.componentDestroyed$)).subscribe((clientMatches: ILibClientMatchOverview[]) => {\n this.clientMatches = [];\n this.cdr.detectChanges();\n this.clientMatches = clientMatches;\n this.updateSpiderChart();\n this.cdr.detectChanges();\n });\n }\n\n ngOnDestroy(): void {\n this.componentDestroyed$.next();\n this.componentDestroyed$.complete();\n }\n\n public onActiveIndexChange(index: number): void {\n this.config.activeIndex = index;\n this.activeIndexChange.emit(index);\n this.cdr.detectChanges();\n }\n\n public handleClientMatch(match: ILibClientMatchOverview, index: number) {\n match.isExpanded = !match.isExpanded;\n this.clientMatches[index].isExpanded = match.isExpanded;\n this.updateSpiderChart();\n }\n\n public updateSpiderChart(): void {\n if (!this.config.default && this.config.spiderConfig && this.components.ClientMatchSpiderChart === this.config.component) {\n this.config.spiderConfig.datasets = this.clientMatches\n .filter((clientMatche: ILibClientMatchOverview) => clientMatche.isExpanded)\n .map((clientMatche: ILibClientMatchOverview, index: number) => {\n const values = {};\n this.config?.spiderConfig?.attributes?.forEach((attribute) => {\n values[attribute.key] = clientMatche[attribute.key];\n });\n return {\n title: clientMatche.primary?.name || clientMatche?.secondary?.name,\n keys: this.config?.spiderConfig?.attributes.map((attribute) => attribute.key),\n values,\n polygon_color: this.config?.polygonColors?.[index],\n };\n });\n }\n }\n\n public addMessageEmit(event: IMessage, prospectId: string, matchRequest: IDashboardMatchRequest): void {\n this.addMessage.emit({ message: event, prospectId, matchRequest });\n }\n}\n","<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 style=\"display: flex; justify-content: center\">\n <img class=\"trait-visual\" [src]=\"assetPaths.traitVisual\" />\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","import { IInnerPartialCircleProgressColors } from '../interfaces/inner-partial-circle-progress-colors.interface';\n\nexport const innerProgressPurpleColors: IInnerPartialCircleProgressColors = {\n primary: 'rgb(209, 8, 209)',\n secondary: 'rgb(255, 46, 192)',\n tertiary: 'rgb(255, 46, 164)',\n};\n","import { IPartialCircleProgressColors } from '../interfaces/partial-circle-progress-colors.interface';\n\nexport const progressWhiteColors: IPartialCircleProgressColors = {\n primary: 'rgb(255, 255, 255)',\n secondary: 'rgb(215, 215, 215)',\n tertiary: 'rgb(214, 214, 214)',\n gradientPrimary: 'rgb(255, 255, 255)',\n gradientSecondary: 'rgb(231, 231, 231)',\n incomplete: 'rgb(214, 214, 214)',\n complete: 'rgb(255, 255, 255)',\n};\n","import { SwiperOptions } from 'swiper/types';\n\nexport const mainswiperDefaultOptions: SwiperOptions = {\n spaceBetween: 10,\n slidesPerView: 1,\n centeredSlides: true,\n loop: false,\n autoplay: {\n delay: 3000,\n disableOnInteraction: false,\n },\n pagination: {\n el: '.swiper-pagination',\n clickable: true,\n },\n navigation: {\n nextEl: '.swiper-button-next',\n prevEl: '.swiper-button-prev',\n },\n};\n","import { SwiperOptions } from 'swiper/types';\n\nexport const thumbsSwiperDefaultOptions: SwiperOptions = {\n spaceBetween: 10,\n slidesPerView: 4,\n freeMode: true,\n watchSlidesProgress: true,\n breakpoints: {\n 320: {\n slidesPerView: 2,\n spaceBetween: 10,\n },\n 640: {\n slidesPerView: 3,\n spaceBetween: 10,\n },\n 768: {\n slidesPerView: 4,\n spaceBetween: 10,\n },\n },\n};\n","export enum ClientDashboardTabs {\n ChatScheduler = 0,\n ChatCompatibility = 1,\n ChatHandoff = 2,\n}\n","import * as d3 from 'd3';\nimport { ISpiderChartConfig } from '../interfaces/config.interface';\n\nexport const defaultSpiderConfig: ISpiderChartConfig = {\n w: 200,\n h: 200,\n levels: 5,\n fullScreen: false,\n maxValue: 35,\n labelFactor: 1.25,\n wrapWidth: 60,\n opacityArea: 0.35,\n dotRadius: 3,\n opacityCircles: 0.1,\n strokeWidth: 2,\n color: d3.scaleOrdinal().range(['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd']),\n attributes: [\n {\n key: 'One',\n text: 'W',\n titleAlertPopup: 'CLIENT_DASHBOARD.ALERT_POPUP.SPIDER_CONFIG.W.TITLE',\n descriptionAlertPopup: 'CLIENT_DASHBOARD.ALERT_POPUP.SPIDER_CONFIG.W.DESCRIPTION',\n },\n {\n key: 'Two',\n text: 'H',\n titleAlertPopup: 'CLIENT_DASHBOARD.ALERT_POPUP.SPIDER_CONFIG.H1.TITLE',\n descriptionAlertPopup: 'CLIENT_DASHBOARD.ALERT_POPUP.SPIDER_CONFIG.H1.DESCRIPTION',\n },\n {\n key: 'Three',\n text: 'B',\n titleAlertPopup: 'CLIENT_DASHBOARD.ALERT_POPUP.SPIDER_CONFIG.B.TITLE',\n descriptionAlertPopup: 'CLIENT_DASHBOARD.ALERT_POPUP.SPIDER_CONFIG.B.DESCRIPTION',\n },\n {\n key: 'Four',\n text: 'H',\n titleAlertPopup: 'CLIENT_DASHBOARD.ALERT_POPUP.SPIDER_CONFIG.H2.TITLE',\n descriptionAlertPopup: 'CLIENT_DASHBOARD.ALERT_POPUP.SPIDER_CONFIG.H2.DESCRIPTION',\n },\n {\n key: 'Five',\n text: 'F',\n titleAlertPopup: 'CLIENT_DASHBOARD.ALERT_POPUP.SPIDER_CONFIG.F.TITLE',\n descriptionAlertPopup: 'CLIENT_DASHBOARD.ALERT_POPUP.SPIDER_CONFIG.F.DESCRIPTION',\n },\n {\n key: 'Six',\n text: 'Ch',\n titleAlertPopup: 'CLIENT_DASHBOARD.ALERT_POPUP.SPIDER_CONFIG.CH.TITLE',\n descriptionAlertPopup: 'CLIENT_DASHBOARD.ALERT_POPUP.SPIDER_CONFIG.CH.DESCRIPTION',\n },\n {\n key: 'Seven',\n text: 'I',\n titleAlertPopup: 'CLIENT_DASHBOARD.ALERT_POPUP.SPIDER_CONFIG.I.TITLE',\n descriptionAlertPopup: 'CLIENT_DASHBOARD.ALERT_POPUP.SPIDER_CONFIG.I.DESCRIPTION',\n },\n {\n key: 'Eight',\n text: 'Co',\n titleAlertPopup: 'CLIENT_DASHBOARD.ALERT_POPUP.SPIDER_CONFIG.CO.TITLE',\n descriptionAlertPopup: 'CLIENT_DASHBOARD.ALERT_POPUP.SPIDER_CONFIG.CO.DESCRIPTION',\n },\n ],\n datasets: [],\n};\n","import { IPolygonColor } from '../interfaces/polygon-color.interface';\n\nexport const demoPolygonColors: IPolygonColor[] = [\n { label: 'Red', value: '#FF6B6B' },\n { label: 'Teal', value: '#4ECDC4' },\n { label: 'Blue', value: '#45B7D1' },\n { label: 'Green', value: '#96CEB4' },\n { label: 'Yellow', value: '#FFEAA7' },\n { label: 'Purple', value: '#DDA0DD' },\n { label: 'Mint', value: '#98D8C8' },\n { label: 'Orange', value: '#F7DC6F' },\n];\n","import { IClientDashboardInputs } from '../interfaces/client-dashboard-inputs.interface';\nimport { defaultSpiderConfig } from './../../spider-chart/lookup/default-spider-config';\nimport { demoPolygonColors } from './../../spider-chart/lookup/demo-polygon-colors.lookup';\n\nexport const defaultClientDashboardConfig: IClientDashboardInputs = {\n activeIndex: 1,\n activeTabIndex: 0,\n activeChartItem: 1,\n slideContentMaxHeight: 'auto',\n clientMatches$: null,\n events: [],\n polygonColors: demoPolygonColors,\n spiderConfig: defaultSpiderConfig,\n schedulers$: null,\n alertStatus: {},\n};\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, CUSTOM_ELEMENTS_SCHEMA, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Subject } from 'rxjs';\nimport { SwiperOptions } from 'swiper/types';\nimport { LibChatComponentModule } from '../chat/chat.component.module';\nimport { IMessage } from '../chat/interfaces/message.interface';\nimport { PipeModule } from '@naniteninja/ionic-lib';\nimport { SharedModule } from '../../shared/shared.module';\nimport { LibAgendaModule } from '../calendar/agenda/agenda.module';\nimport { ISchedulerAction } from '../calendar/scheduler/interfaces/scheduler.action.interface';\nimport { LibClientHomeComponent } from '../client-home/client-home.component';\nimport { ClientHomeComponent } from '../client-home/enums/client-home-component.enum';\nimport { IDashboardMatchRequest } from '../client-match-overview/interfaces/dashboard-match-request.interface';\nimport { dashboardThumbsSwiperDefaultOptions } from '../dashboard-swipeable-tabs/lookups/dashboard-thumbs-swiper-options';\nimport { LibDashboardSwipeableTabsComponent } from '../dashboard-swipeable-tabs/dashboard-swipeable-tabs.component';\nimport { AlertStatusFields } from './enums/alert-status-fields.enum';\nimport { ClientDashboardTabs } from './enums/client-dashboard-component.enum';\nimport { IClientDashboardInputs } from './interfaces/client-dashboard-inputs.interface';\nimport { defaultClientDashboardConfig } from './lookups/client-dashboard.config';\nimport { IAd } from './interfaces/ads.interface';\n\n@Component({\n selector: 'lib-client-dashboard',\n standalone: true,\n imports: [CommonModule, TranslateModule, LibChatComponentModule, LibAgendaModule, PipeModule, LibClientHomeComponent, LibDashboardSwipeableTabsComponent, SharedModule],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n templateUrl: './client-dashboard.component.html',\n styleUrls: ['./client-dashboard.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LibClientDashboardComponent implements OnInit, OnDestroy {\n @Input() config: IClientDashboardInputs;\n @Input() agendaAdsData?: Array<IAd> = [];\n @Output() addMessage: EventEmitter<{ message: IMessage; index: number; prospectId: string; matchRequest: IDashboardMatchRequest }> = new EventEmitter();\n @Output() getMessages: EventEmitter<void> = new EventEmitter();\n @Output() bookEvent: EventEmitter<ISchedulerAction> = new EventEmitter();\n @Output() removeSuggestion: EventEmitter<ISchedulerAction> = new EventEmitter();\n @Output() activeIndexChange: EventEmitter<number> = new EventEmitter();\n @Output() handleClosedAlert: EventEmitter<{ event: boolean; field: AlertStatusFields }> = new EventEmitter();\n @Output() handleAppearPopup: EventEmitter<AlertStatusFields> = new EventEmitter();\n\n public components = ClientHomeComponent;\n public componentTabs = ClientDashboardTabs;\n public mainSwiperOptions: SwiperOptions = {\n noSwipingSelector: '.no-swiping-selector',\n nested: true,\n };\n public alertStatusFields = AlertStatusFields;\n public isTouchEvent = false;\n public items: { key: string; label: string; onClickInfo: () => void }[] = [\n {\n key: 'CHAT_SCHEDULER',\n label: 'CLIENT_DASHBOARD.LABELS.CHAT_SCHEDULER',\n onClickInfo: () => {\n this.handleAppearPopup.emit(AlertStatusFields.chatMeetupAgenda);\n },\n },\n {\n key: 'TRAIT_VISUAL',\n label: 'CLIENT_DASHBOARD.LABELS.TRAIT_VISUAL',\n onClickInfo: () => {\n this.handleAppearPopup.emit(AlertStatusFields.compatibilityProfileTrait);\n this.handleAppearPopup.emit(AlertStatusFields.face);\n },\n },\n {\n key: 'SPIDER_CHART',\n label: 'CLIENT_DASHBOARD.LABELS.SPIDER_CHART',\n onClickInfo: () => {\n this.handleAppearPopup.emit(AlertStatusFields.compatibilityProfileSpider);\n this.handleAppearPopup.emit(AlertStatusFields.face);\n },\n },\n {\n key: 'CHAT_HANDOFF',\n label: 'CLIENT_DASHBOARD.LABELS.CHAT_HANDOFF',\n onClickInfo: () => {\n this.handleAppearPopup.emit(AlertStatusFields.chatHandoff);\n this.handleAppearPopup.emit(AlertStatusFields.chatProgress);\n },\n },\n ];\n public isMinimizeVisual = false;\n public iconSize: string = '20px';\n public assetPaths = {\n defaultIcon: 'assets/icons/defualt.svg',\n };\n public item = { label: 'Sample' };\n\n public clientHomeThumbsSwiperOptions: SwiperOptions = {\n ...dashboardThumbsSwiperDefaultOptions,\n breakpoints: { 350: { slidesPerView: 20 } },\n };\n\n public dashboardThumbsSwiperOptions: SwiperOptions = {\n centeredSlides: true,\n slidesPerView: 4,\n };\n\n private lastTapTime = 0;\n private componentDestroyed$: Subject<void>;\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n this.config = {\n ...defaultClientDashboardConfig,\n ...this.config,\n };\n this.componentDestroyed$ = new Subject();\n }\n\n ngOnDestroy(): void {\n this.componentDestroyed$.next();\n this.componentDestroyed$.complete();\n }\n\n public onActiveTabIndexChange(index: number): void {\n this.config.activeTabIndex = index;\n this.cdr.detectChanges();\n }\n\n public handleNewMessage(event: { message: IMessage; index: number; prospectId: string; matchRequest: IDashboardMatchRequest }): void {\n this.addMessage?.emit(event);\n }\n\n public handleDoubleClick(): void {\n const currentTime = new Date().getTime();\n const tapLength = currentTime - this.lastTapTime;\n\n if (tapLength < 300 && tapLength > 0) {\n this.isMinimizeVisual = !this.isMinimizeVisual;\n this.config.spiderConfig = {\n ...this.config.spiderConfig,\n fullScreen: this.isMinimizeVisual,\n };\n }\n this.lastTapTime = currentTime;\n }\n\n public onTouchStart(event: TouchEvent): void {\n this.isTouchEvent = true;\n this.handleDoubleClick();\n }\n\n public onClick(event: PointerEvent): void {\n if (this.isTouchEvent) {\n this.isTouchEvent = false;\n event.preventDefault();\n return;\n }\n\n this.handleDoubleClick();\n }\n\n public onChartIndexChange(index): void {\n this.config.activeChartItem = index;\n setTimeout(() => this.cdr.detectChanges());\n }\n\n public onActiveProspectChange(index: number): void {\n if (index >= 0) {\n this.config.activeIndex = index;\n this.activeIndexChange.emit(index);\n setTimeout(() => this.cdr.detectChanges());\n }\n }\n\n public onClosedAlert(data: { event: boolean; field: AlertStatusFields }) {\n this.handleClosedAlert.emit(data);\n }\n\n public onHandleAppearPopup(field: AlertStatusFields): void {\n this.handleAppearPopup.emit(field);\n }\n}\n","<!-- 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\"></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 <img [width]=\"12\" [height]=\"12\" [src]=\"assetPaths.defaultIcon\" [alt]=\"item?.label + ' icon'\" (click)=\"item.onClickInfo()\" />\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","import { Pipe, PipeTransform } from '@angular/core';\nimport { SelectOption } from '@naniteninja/ionic-lib';\n\n@Pipe({\n name: 'updateLLMPreference',\n pure: true,\n standalone: true,\n})\nexport class UpdateLLMPreferencePipe implements PipeTransform {\n transform(values: SelectOption<string>[], llmPreferenceLoading: string[]): SelectOption<string>[] {\n return values.map((option) => {\n if (llmPreferenceLoading?.includes(option.value)) {\n return { ...option, loading: true };\n } else {\n return { ...option, loading: false };\n }\n });\n }\n}\n","import { Component, Input, OnChanges, SimpleChanges, ViewChild } from '@angular/core';\nimport { Profile } from '@naniteninja/ionic-lib';\n\n@Component({\n selector: 'lib-profile-card',\n templateUrl: './profile-card.component.html',\n styleUrls: ['./profile-card.component.scss'],\n})\nexport class ProfileCardComponent implements OnChanges {\n @Input() profile: Profile;\n @Input() progressText: string = 'Progress';\n @ViewChild('progressBar') progressBar: any;\n\n ngOnChanges(changes: SimpleChanges): void {\n setTimeout(() => {\n const progressDiv = (this.progressBar?.el?.shadowRoot as ShadowRoot)?.querySelectorAll('.progress')[0] as HTMLDivElement;\n if (progressDiv) {\n progressDiv.style.transform = 'none';\n const percent = this.profile.progress * 100 + '%';\n progressDiv.style.width = percent;\n const progressBlur = document.getElementById('progressBlur' + this.profile.id) as HTMLDivElement;\n progressBlur.style.width = percent;\n }\n }, 500);\n }\n}\n","<div class=\"personal-card ion-activatable\" *ngIf=\"profile\">\n <div class=\"wihtout-progress\">\n <div *ngIf=\"profile.notification > 0\" class=\"badge-container\">\n <div class=\"noti noti-container\"></div>\n <div class=\"noti noti-circle\"></div>\n <span class=\"f-calistoga f-w-400 f-sm h-160 f-white\">{{ profile.notification }}</span>\n </div>\n\n <img [src]=\"profile.photo\" alt=\"use\" />\n <div class=\"f-calistoga f-w-600 f-md h-160 f-white\">{{ profile.name }}</div>\n @if (profile.value) {\n <span class=\"f-calistoga f-w-400 f-sm h-160 f-gray\">{{ profile.value }}</span>\n }\n </div>\n @if (profile.progress) {\n <div class=\"progress-bar-container\">\n <ion-progress-bar #progressBar mode=\"ios\" [value]=\"profile.progress\"></ion-progress-bar>\n <div [id]=\"'progressBlur' + profile.id\" class=\"progress-blur\"></div>\n <ion-text class=\"progress-label f-w-400 f-xs h-100 f-white\">\n {{ profile.progress * 100 + '% ' + progressText }}\n </ion-text>\n </div>\n }\n <ion-ripple-effect type=\"bounded\"></ion-ripple-effect>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { IonicModule } from '@ionic/angular';\nimport { ProfileCardComponent } from './profile-card.component';\n\n@NgModule({\n declarations: [ProfileCardComponent],\n imports: [CommonModule, IonicModule],\n exports: [ProfileCardComponent],\n})\nexport class ProfileCardModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Profile } from '@naniteninja/ionic-lib';\nimport { ILibClientMatchOverview } from '../../client-match-overview/interfaces/client-match-overview.interface';\n\n@Pipe({\n name: 'getProfileWithProgress',\n standalone: true,\n})\nexport class GetProfileWithProgressPipe implements PipeTransform {\n transform(clientMatch: ILibClientMatchOverview): Profile {\n return {\n name: clientMatch?.primary?.name,\n photo: clientMatch?.primary?.src,\n progress: 10, // TODO: get progress from clientMatch\n };\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, CUSTOM_ELEMENTS_SCHEMA, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { FormFieldType } from '../../enums/form-field-type';\nimport { PipeModule } from '@naniteninja/ionic-lib';\nimport { UpdateLLMPreferencePipe } from '../../pipes/update-llm-preference/update-llm-preference.pipe';\nimport { SharedModule } from '../../shared/shared.module';\nimport { ButtonsModule } from '@naniteninja/ionic-lib';\nimport { LibAgendaModule } from '../calendar/agenda/agenda.module';\nimport { ISchedulerAction } from '../calendar/scheduler/interfaces/scheduler.action.interface';\nimport { ISchedulerEvent } from '../calendar/scheduler/interfaces/scheduler.event.interface';\nimport { LibSchedulerComponent } from '../calendar/scheduler/scheduler.component';\nimport { ChatSuggestionComponent } from '../chat-suggestion/chat-suggestion.component';\nimport { LibChatComponentModule } from '../chat/chat.component.module';\nimport { IMessage } from '../chat/interfaces/message.interface';\nimport { LibClientHomeComponent } from '../client-home/client-home.component';\nimport { ClientHomeComponent } from '../client-home/enums/client-home-component.enum';\nimport { IDashboardMatchRequest } from '../client-match-overview/interfaces/dashboard-match-request.interface';\nimport { FormFieldModule } from '@naniteninja/ionic-lib';\nimport { ProfileCardModule } from '../profile-card/profile-card.module';\nimport { SpiderChartComponent } from '../spider-chart/spider-chart.component';\nimport { LibDashboardSwipeableTabsComponent } from '../dashboard-swipeable-tabs/dashboard-swipeable-tabs.component';\nimport { IChatIdentifier } from './interfaces/chat-identifier.interface';\nimport { IMatcherDashboardInputs } from './interfaces/matcher-dashboard-inputs.interface';\nimport { GetProfileWithProgressPipe } from './pipes/get-profile-with-progress.pipe';\n\n@Component({\n selector: 'lib-compose-matcher-dash',\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n LibChatComponentModule,\n LibAgendaModule,\n PipeModule,\n LibChatComponentModule,\n LibClientHomeComponent,\n LibDashboardSwipeableTabsComponent,\n ChatSuggestionComponent,\n ButtonsModule,\n LibSchedulerComponent,\n SpiderChartComponent,\n ProfileCardModule,\n SharedModule,\n FormsModule,\n ReactiveFormsModule,\n FormFieldModule,\n UpdateLLMPreferencePipe,\n GetProfileWithProgressPipe,\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n templateUrl: './compose-matcher-dash.component.html',\n styleUrls: ['./compose-matcher-dash.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LibComposeMacherDashComponent implements OnInit, OnDestroy {\n @Input() config: IMatcherDashboardInputs = {\n loading: {\n clientMatches: true,\n },\n default: false,\n activeIndex: 0,\n activeTabIndex: 1,\n slideContentMaxHeight: 'auto',\n clientMatches$: null,\n polygonColors: [],\n spiderConfig: null,\n events$: null,\n alertStatus: {\n upcomingDates: false,\n\n compatibilityProfileTrait: false,\n compatibilityProfileSpider: false,\n\n chatProgress: false,\n chatHandoff: false,\n\n chatMeetupAgenda: false,\n },\n };\n @Output() addMessage: EventEmitter<{ message: IMessage; prospectId: string; matchRequest: IDashboardMatchRequest }> = new EventEmitter();\n @Output() updateLLMConversation: EventEmitter<IChatIdentifier> = new EventEmitter();\n @Output() getMessages: EventEmitter<void> = new EventEmitter();\n @Output() bookEvent: EventEmitter<ISchedulerAction> = new EventEmitter();\n @Output() removeSuggestion: EventEmitter<ISchedulerAction> = new EventEmitter();\n @Output() activeIndexChange: EventEmitter<number> = new EventEmitter();\n\n public components = ClientHomeComponent;\n public suggest = '';\n public schedularCounts = {\n booked: 0,\n suggested: 0,\n };\n public statuses = [\n { title: 'Suggest', icon: 'assets/icons/compose-matcher/suggest.svg', isText: true },\n { title: 'Notes', icon: 'assets/icons/compose-matcher/notes.svg' },\n { title: 'Visuals', icon: 'assets/icons/compose-matcher/visual.svg' },\n { title: 'Profile', icon: 'assets/icons/compose-matcher/profile.svg' },\n ];\n public FormFieldType = FormFieldType;\n\n private componentDestroyed$: Subject<void> = new Subject();\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n this.config.events$?.pipe(takeUntil(this.componentDestroyed$)).subscribe((events: ISchedulerEvent[]) => {\n events?.map((event: ISchedulerEvent) => {\n if (event?.booked) {\n this.schedularCounts.booked += 1;\n }\n if (event?.suggestions?.length) {\n this.schedularCounts.suggested += event?.suggestions?.length;\n }\n });\n this.cdr.detectChanges();\n });\n }\n\n ngOnDestroy(): void {\n this.componentDestroyed$.next();\n this.componentDestroyed$.complete();\n }\n\n public onActiveTabIndexChange(index: number): void {\n if (index >= 0) {\n this.config.activeTabIndex = index;\n this.cdr.detectChanges();\n }\n }\n\n public onActiveProspectChange(index: number): void {\n if (index >= 0) {\n this.config.activeIndex = index;\n this.activeIndexChange.emit(index);\n this.cdr.detectChanges();\n }\n }\n\n public suggestClicked(suggest: string): void {\n this.suggest = suggest;\n }\n}\n","<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","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'sort',\n})\nexport class ArraySortPipe implements PipeTransform {\n transform(array: any, field: string, type: string = 'ASC'): any[] {\n if (!Array.isArray(array)) {\n return null;\n }\n switch (type.toUpperCase()) {\n case 'ASC': {\n array.sort((a: any, b: any) => {\n if (a[field] < b[field]) {\n return -1;\n } else if (a[field] > b[field]) {\n return 1;\n } else {\n return 0;\n }\n });\n break;\n }\n case 'DSC': {\n array.sort((a: any, b: any) => {\n if (a[field] > b[field]) {\n return -1;\n } else if (a[field] < b[field]) {\n return 1;\n } else {\n return 0;\n }\n });\n break;\n }\n }\n return array;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'countNonEmptyFields',\n pure: true,\n})\nexport class CountNonEmptyFieldsPipe implements PipeTransform {\n transform(records: Record<string, string | null>): number {\n return Object.values(records).filter(Boolean).length;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport moment from 'moment';\n\n@Pipe({\n name: 'dateLocalization',\n pure: true,\n})\nexport class DateLocalizationPipe implements PipeTransform {\n transform(value: string | moment.Moment, dateFormat: string): string {\n if (moment.isMoment(value)) {\n return value.format(dateFormat).toString();\n } else {\n let parsedDate = moment(value, moment.ISO_8601, true);\n if (!parsedDate.isValid()) {\n // If the value is entered manually by user then parse the value based on the date format\n parsedDate = moment(value, dateFormat, false);\n }\n if (parsedDate.isValid()) {\n return parsedDate.format(dateFormat).toString();\n }\n return null;\n }\n }\n}\n","import { CurrencyPipe, formatNumber } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport moment from 'moment';\nimport { GridColumn } from '@naniteninja/ionic-lib';\nimport { DateLocalizationPipe } from '../date-localization/date-localization.pipe';\n\n@Pipe({\n name: 'getDisplayValue',\n pure: true,\n})\nexport class GetDisplayValuePipe implements PipeTransform {\n constructor(\n private dateLocalizationPipe: DateLocalizationPipe,\n private currencyPipe: CurrencyPipe,\n ) {}\n\n transform(data: any, column: GridColumn, dateFormat: string, corporateCurrency: string = 'USD'): string {\n if ((typeof data != 'boolean' && !data && data !== 0) || !column) {\n return '';\n }\n\n if (column.controlType === 'SingleSelect' || column.controlType === 'MultiSelect') {\n if (Array.isArray(data)) {\n return data.map((value) => column.values?.find((col) => col.Key === value)?.Value)?.join(', ') ?? '';\n }\n return column.values?.find((col) => col.Key === data)?.Value;\n }\n\n if (column.controlType === 'AutoComplete' || column.controlType === 'AutoCompleteMulti' || column.controlType === 'MultiField') {\n if (Array.isArray(data)) {\n return data?.map((kv) => kv?.Value)?.join(', ') ?? '';\n }\n return data?.Value;\n }\n\n if (column.controlType === 'Date') {\n if (moment.isMoment(data)) {\n return this.dateLocalizationPipe.transform(data, dateFormat);\n } else {\n return this.dateLocalizationPipe.transform(data?.toString() ?? '', dateFormat);\n }\n }\n\n if (column.controlType === 'Percent') {\n return `${formatNumber(data, 'en-US', '1.0-0')}%`;\n }\n\n if (column.controlType === 'Currency') {\n return this.currencyPipe.transform(Math.round(data), corporateCurrency, 'symbol', '1.0-0');\n }\n\n if (column.controlType === 'Boolean') {\n return data ? 'Yes' : 'No';\n }\n\n if (data.en) return data.en;\n\n return data.toString();\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { SelectOption } from '@naniteninja/ionic-lib';\n\n@Pipe({\n name: 'getMultiSelectDisplayText',\n pure: true,\n})\nexport class GetMultiSelectDisplayTextPipe implements PipeTransform {\n transform(formValue: any[], options: SelectOption<any>[]): string {\n if (Array.isArray(formValue) && formValue?.length > 0) {\n return formValue.map((value) => options.find((option) => option.value === value)?.label)?.join(', ');\n } else {\n return '';\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'round',\n pure: true,\n})\nexport class RoundPipe implements PipeTransform {\n transform(value: number): number {\n return Math.round(value);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i1","i3.AgendaDayCardComponent","i1.FallbackTranslatePipe","i2.CalendarUtilsService","i5","i3.FallbackTranslatePipe","i4","i6","i7.LibEventInfoComponent","i8.LibEditRecurringEventComponent","i1.CircleProgressComponent","i1.AbstractCacheService","FormFieldType","i4.GifSelectorComponent","i2.CircleProgressComponent","i1.ChatComponent","i1.AlertPopupComponent","i4.AlertPopupComponent","i1.DateLocalizationPipe"],"mappings":"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"}