@sunbird-cb/toc 0.0.8 → 0.0.9

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 (495) hide show
  1. package/esm2022/lib/_collection/_common/attendance-card/attendance-card.component.mjs +55 -55
  2. package/esm2022/lib/_collection/_common/attendance-card/attendance-card.module.mjs +126 -126
  3. package/esm2022/lib/_collection/_common/attendance-helper/attendance-helper.component.mjs +32 -32
  4. package/esm2022/lib/_collection/_common/attendance-helper/attendance-helper.module.mjs +85 -85
  5. package/esm2022/lib/_collection/_common/avatar-photo/avatar-photo.component.mjs +100 -100
  6. package/esm2022/lib/_collection/_common/avatar-photo/avatar-photo.module.mjs +48 -48
  7. package/esm2022/lib/_collection/_common/certificate-dialog/certificate-dialog.component.mjs +120 -120
  8. package/esm2022/lib/_collection/_common/certificate-dialog/certificate-dialog.module.mjs +92 -92
  9. package/esm2022/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.mjs +48 -48
  10. package/esm2022/lib/_collection/_common/confirm-dialog/confirm-dialog.component.mjs +25 -25
  11. package/esm2022/lib/_collection/_common/confirm-dialog/confirm-dialog.module.mjs +41 -41
  12. package/esm2022/lib/_collection/_common/connection-hover-card/connection-hover-card.component.mjs +89 -89
  13. package/esm2022/lib/_collection/_common/connection-hover-card/connection-hover.module.mjs +42 -42
  14. package/esm2022/lib/_collection/_common/connection-hover-card/connection-hover.servive.mjs +41 -41
  15. package/esm2022/lib/_collection/_common/connection-name/connection-name.component.mjs +78 -78
  16. package/esm2022/lib/_collection/_common/connection-name/connection-name.module.mjs +45 -45
  17. package/esm2022/lib/_collection/_common/connection-name/profile-v2.model.mjs +2 -2
  18. package/esm2022/lib/_collection/_common/content-progress/content-progress.component.mjs +70 -70
  19. package/esm2022/lib/_collection/_common/content-progress/content-progress.module.mjs +28 -28
  20. package/esm2022/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.mjs +187 -187
  21. package/esm2022/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.mjs +86 -86
  22. package/esm2022/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.mjs +31 -31
  23. package/esm2022/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.mjs +941 -941
  24. package/esm2022/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.mjs +183 -183
  25. package/esm2022/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.mjs +327 -327
  26. package/esm2022/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.mjs +297 -297
  27. package/esm2022/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.mjs +248 -225
  28. package/esm2022/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.mjs +1148 -1030
  29. package/esm2022/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.mjs +16 -16
  30. package/esm2022/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.mjs +43 -43
  31. package/esm2022/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.mjs +133 -133
  32. package/esm2022/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.mjs +66 -66
  33. package/esm2022/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.mjs +278 -278
  34. package/esm2022/lib/_collection/_common/content-toc/content-services/handle-claim.service.mjs +21 -21
  35. package/esm2022/lib/_collection/_common/content-toc/content-services/review-component-data.service.mjs +21 -21
  36. package/esm2022/lib/_collection/_common/content-toc/content-toc.component.mjs +847 -847
  37. package/esm2022/lib/_collection/_common/content-toc/content-toc.module.mjs +219 -219
  38. package/esm2022/lib/_collection/_common/content-toc/karma-points/karma-points.component.mjs +209 -209
  39. package/esm2022/lib/_collection/_common/content-toc/karma-points/karma-points.module.mjs +26 -26
  40. package/esm2022/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.mjs +19 -19
  41. package/esm2022/lib/_collection/_common/content-toc/pipes/truncate.pipe.mjs +23 -23
  42. package/esm2022/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.mjs +113 -113
  43. package/esm2022/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.mjs +110 -110
  44. package/esm2022/lib/_collection/_common/display-content-type/display-content-type.component.mjs +26 -26
  45. package/esm2022/lib/_collection/_common/display-content-type/display-content-type.module.mjs +19 -19
  46. package/esm2022/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.mjs +67 -67
  47. package/esm2022/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.mjs +28 -28
  48. package/esm2022/lib/_collection/_common/mark-as-complete/mark-as-complete.component.mjs +77 -77
  49. package/esm2022/lib/_collection/_common/mark-as-complete/mark-as-complete.model.mjs +2 -2
  50. package/esm2022/lib/_collection/_common/mark-as-complete/mark-as-complete.module.mjs +61 -61
  51. package/esm2022/lib/_collection/_common/pipe-content-route/pipe-content-route.module.mjs +20 -20
  52. package/esm2022/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.mjs +67 -67
  53. package/esm2022/lib/_collection/_common/player-brief/player-brief.component.mjs +139 -139
  54. package/esm2022/lib/_collection/_common/player-brief/player-brief.module.mjs +71 -71
  55. package/esm2022/lib/_collection/_common/rating-summary/rating-summary.component.mjs +34 -34
  56. package/esm2022/lib/_collection/_common/rating-summary/rating-summary.module.mjs +56 -56
  57. package/esm2022/lib/_collection/_common/skeleton-loader/skeleton-loader.component.mjs +25 -25
  58. package/esm2022/lib/_collection/_common/skeleton-loader/skeleton-loader.module.mjs +37 -37
  59. package/esm2022/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.mjs +32 -32
  60. package/esm2022/lib/_collection/_common/tips-for-learner/tips-for-learner.module.mjs +30 -30
  61. package/esm2022/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.mjs +38 -38
  62. package/esm2022/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.mjs +51 -51
  63. package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.component.mjs +115 -115
  64. package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.model.mjs +12 -12
  65. package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.module.mjs +51 -51
  66. package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.service.mjs +61 -61
  67. package/esm2022/lib/_collection/_common/user-content-rating/user-content-rating.component.mjs +87 -87
  68. package/esm2022/lib/_collection/_common/user-content-rating/user-content-rating.module.mjs +36 -36
  69. package/esm2022/lib/_collection/_common/user-image/user-image.component.mjs +62 -62
  70. package/esm2022/lib/_collection/_common/user-image/user-image.module.mjs +24 -24
  71. package/esm2022/lib/_collection/btn-page-back/btn-page-back.component.mjs +192 -192
  72. package/esm2022/lib/_collection/btn-page-back/btn-page-back.module.mjs +44 -44
  73. package/esm2022/lib/_collection/btn-page-back/btn-page-back.service.mjs +99 -99
  74. package/esm2022/lib/_collection/card-rating-comment/card-rating-comment.component.mjs +58 -58
  75. package/esm2022/lib/_collection/card-rating-comment/card-rating-comment.module.mjs +67 -67
  76. package/esm2022/lib/_collection/sliders-dynamic/sliders-dynamic.component.mjs +112 -112
  77. package/esm2022/lib/_collection/sliders-dynamic/sliders-dynamic.model.mjs +2 -2
  78. package/esm2022/lib/_collection/sliders-dynamic/sliders-dynamic.module.mjs +69 -69
  79. package/esm2022/lib/_collection-api.mjs +57 -57
  80. package/esm2022/lib/_constants/widget-content.constants.mjs +19 -19
  81. package/esm2022/lib/_directives/tooltip.directive.mjs +68 -68
  82. package/esm2022/lib/_models/common.model.mjs +2 -2
  83. package/esm2022/lib/_models/error.model.mjs +2 -2
  84. package/esm2022/lib/_pipes/highlight.pipe.mjs +24 -24
  85. package/esm2022/lib/_services/rating.service.mjs +89 -89
  86. package/esm2022/lib/_services/samuhik-charcha.service.mjs +29 -29
  87. package/esm2022/lib/_services/viewer-route-util.mjs +103 -103
  88. package/esm2022/lib/_services/widget-content.model.mjs +247 -247
  89. package/esm2022/lib/_services/widget-content.service.mjs +594 -594
  90. package/esm2022/lib/_shared/translate-loader.factory.mjs +9 -9
  91. package/esm2022/lib/app-toc-lib.module.mjs +499 -499
  92. package/esm2022/lib/collection.config.mjs +161 -161
  93. package/esm2022/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.mjs +37 -37
  94. package/esm2022/lib/components/app-toc-banner/app-toc-banner.component.mjs +1436 -1436
  95. package/esm2022/lib/components/app-toc-cios-home/app-toc-cios-home.component.mjs +475 -475
  96. package/esm2022/lib/components/app-toc-cios-home/consent-dialog.component.mjs +119 -119
  97. package/esm2022/lib/components/app-toc-cohorts/app-toc-cohorts.component.mjs +80 -80
  98. package/esm2022/lib/components/app-toc-content-card/app-toc-content-card.component.mjs +249 -249
  99. package/esm2022/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.mjs +39 -39
  100. package/esm2022/lib/components/app-toc-discussion/app-toc-discussion.component.mjs +58 -58
  101. package/esm2022/lib/components/app-toc-home/app-toc-home.component.mjs +2229 -2229
  102. package/esm2022/lib/components/app-toc-home-v2/app-toc-home-v2.component.mjs +2907 -2905
  103. package/esm2022/lib/components/app-toc-overview/app-toc-overview.component.mjs +157 -157
  104. package/esm2022/lib/components/app-toc-session-card/app-toc-session-card.component.mjs +48 -48
  105. package/esm2022/lib/components/app-toc-sessions/app-toc-sessions.component.mjs +47 -47
  106. package/esm2022/lib/components/app-toc-single-page/app-toc-single-page.component.mjs +766 -766
  107. package/esm2022/lib/components/completion-survey-form/completion-survey-form.component.mjs +243 -243
  108. package/esm2022/lib/components/create-batch-dialog/create-batch-dialog.component.mjs +116 -116
  109. package/esm2022/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.mjs +44 -44
  110. package/esm2022/lib/components/enroll-profile-form/enroll-profile-form.component.mjs +1838 -1838
  111. package/esm2022/lib/components/enroll-questionnaire/enroll-questionnaire.component.mjs +236 -236
  112. package/esm2022/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.mjs +213 -213
  113. package/esm2022/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.mjs +36 -36
  114. package/esm2022/lib/components/public-survey-form/public-survey-form.component.mjs +256 -256
  115. package/esm2022/lib/components/survey-form-question/survey-form-question.component.mjs +133 -133
  116. package/esm2022/lib/components/survey-form-section/survey-form-section.component.mjs +36 -36
  117. package/esm2022/lib/models/app-toc-analytics.model.mjs +2 -2
  118. package/esm2022/lib/models/app-toc.model.mjs +38 -38
  119. package/esm2022/lib/models/auto-complete.model.mjs +2 -2
  120. package/esm2022/lib/models/card-content.model.mjs +13 -13
  121. package/esm2022/lib/models/content-strip-with-tabs.model.mjs +2 -2
  122. package/esm2022/lib/models/discussion-forum.model.mjs +14 -14
  123. package/esm2022/lib/models/goal.model.mjs +2 -2
  124. package/esm2022/lib/models/meta-tag.model.mjs +8 -8
  125. package/esm2022/lib/models/playlist.model.mjs +2 -2
  126. package/esm2022/lib/models/profile-revamp.model.mjs +2 -2
  127. package/esm2022/lib/models/rating.model.mjs +2 -2
  128. package/esm2022/lib/models/user-profile.model.mjs +21 -21
  129. package/esm2022/lib/resolvers/app-toc-cios-resolver.service.mjs +24 -24
  130. package/esm2022/lib/resolvers/app-toc-cios-user-enroll-resolver.service.mjs +24 -24
  131. package/esm2022/lib/resolvers/app-toc-content-read-resolver.service.mjs +60 -60
  132. package/esm2022/lib/resolvers/app-toc-ext-public-resolver.service.mjs +25 -25
  133. package/esm2022/lib/resolvers/app-toc-resolver.service.mjs +106 -106
  134. package/esm2022/lib/resolvers/config-resolver.service.mjs +25 -25
  135. package/esm2022/lib/resolvers/profile-resolver.service.mjs +25 -25
  136. package/esm2022/lib/resolvers/restricted-features-resolver.service.mjs +25 -25
  137. package/esm2022/lib/routes/app-toc-home/app-toc-home.component.mjs +51 -51
  138. package/esm2022/lib/routes/app-toc-home/app-toc-home.directive.mjs +16 -16
  139. package/esm2022/lib/routes/app-toc-home/app-toc-home.service.mjs +18 -18
  140. package/esm2022/lib/services/access-control.service.mjs +56 -56
  141. package/esm2022/lib/services/action.service.mjs +23 -23
  142. package/esm2022/lib/services/app-toc-v2.service.mjs +313 -243
  143. package/esm2022/lib/services/app-toc.service.mjs +1613 -1387
  144. package/esm2022/lib/services/certificate.service.mjs +69 -69
  145. package/esm2022/lib/services/discuss-utils.service.mjs +58 -58
  146. package/esm2022/lib/services/editor.service.mjs +34 -34
  147. package/esm2022/lib/services/load-check.service.mjs +21 -21
  148. package/esm2022/lib/services/loader.service.mjs +33 -33
  149. package/esm2022/lib/services/mobile-apps.service.mjs +67 -67
  150. package/esm2022/lib/services/netcore.service.mjs +56 -56
  151. package/esm2022/lib/services/nps-grid.service.mjs +31 -31
  152. package/esm2022/lib/services/otp.service.mjs +43 -43
  153. package/esm2022/lib/services/profile-v2.service.mjs +43 -43
  154. package/esm2022/lib/services/reset-ratings.service.mjs +19 -19
  155. package/esm2022/lib/services/resource-download-helper.service.mjs +64 -64
  156. package/esm2022/lib/services/timer.service.mjs +23 -23
  157. package/esm2022/lib/services/title-tag.service.mjs +71 -71
  158. package/esm2022/lib/services/user-profile.service.mjs +55 -55
  159. package/esm2022/lib/services/viewer-data.service.mjs +64 -64
  160. package/esm2022/lib/services/viewer-util.service.mjs +590 -590
  161. package/esm2022/lib/share-toc/share-toc/share-toc.component.mjs +291 -291
  162. package/esm2022/lib/share-toc/share-toc.module.mjs +119 -119
  163. package/esm2022/public-api.mjs +71 -71
  164. package/esm2022/sunbird-cb-toc.mjs +4 -4
  165. package/fesm2022/sunbird-cb-toc.mjs +24776 -24339
  166. package/fesm2022/sunbird-cb-toc.mjs.map +1 -1
  167. package/index.d.ts +5 -6
  168. package/lib/_collection/_common/attendance-card/attendance-card.component.d.ts +16 -17
  169. package/lib/_collection/_common/attendance-card/attendance-card.module.d.ts +31 -32
  170. package/lib/_collection/_common/attendance-helper/attendance-helper.component.d.ts +15 -16
  171. package/lib/_collection/_common/attendance-helper/attendance-helper.module.d.ts +20 -21
  172. package/lib/_collection/_common/avatar-photo/avatar-photo.component.d.ts +22 -23
  173. package/lib/_collection/_common/avatar-photo/avatar-photo.module.d.ts +15 -16
  174. package/lib/_collection/_common/certificate-dialog/certificate-dialog.component.d.ts +22 -23
  175. package/lib/_collection/_common/certificate-dialog/certificate-dialog.module.d.ts +22 -23
  176. package/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.d.ts +9 -10
  177. package/lib/_collection/_common/confirm-dialog/confirm-dialog.component.d.ts +11 -12
  178. package/lib/_collection/_common/confirm-dialog/confirm-dialog.module.d.ts +12 -13
  179. package/lib/_collection/_common/connection-hover-card/connection-hover-card.component.d.ts +18 -19
  180. package/lib/_collection/_common/connection-hover-card/connection-hover.module.d.ts +14 -15
  181. package/lib/_collection/_common/connection-hover-card/connection-hover.servive.d.ts +11 -12
  182. package/lib/_collection/_common/connection-name/connection-name.component.d.ts +17 -18
  183. package/lib/_collection/_common/connection-name/connection-name.module.d.ts +14 -15
  184. package/lib/_collection/_common/connection-name/profile-v2.model.d.ts +199 -200
  185. package/lib/_collection/_common/content-progress/content-progress.component.d.ts +16 -17
  186. package/lib/_collection/_common/content-progress/content-progress.module.d.ts +10 -11
  187. package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.d.ts +38 -39
  188. package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.d.ts +19 -20
  189. package/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.d.ts +11 -12
  190. package/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.d.ts +183 -184
  191. package/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.d.ts +41 -42
  192. package/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.d.ts +54 -55
  193. package/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.d.ts +47 -48
  194. package/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.d.ts +49 -49
  195. package/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.d.ts +171 -155
  196. package/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.d.ts +8 -9
  197. package/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.d.ts +16 -17
  198. package/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.d.ts +40 -41
  199. package/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.d.ts +21 -22
  200. package/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.d.ts +45 -46
  201. package/lib/_collection/_common/content-toc/content-services/handle-claim.service.d.ts +10 -11
  202. package/lib/_collection/_common/content-toc/content-services/review-component-data.service.d.ts +10 -11
  203. package/lib/_collection/_common/content-toc/content-toc.component.d.ts +128 -129
  204. package/lib/_collection/_common/content-toc/content-toc.module.d.ts +51 -52
  205. package/lib/_collection/_common/content-toc/karma-points/karma-points.component.d.ts +29 -30
  206. package/lib/_collection/_common/content-toc/karma-points/karma-points.module.d.ts +9 -10
  207. package/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.d.ts +7 -8
  208. package/lib/_collection/_common/content-toc/pipes/truncate.pipe.d.ts +7 -8
  209. package/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.d.ts +28 -29
  210. package/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.d.ts +24 -25
  211. package/lib/_collection/_common/display-content-type/display-content-type.component.d.ts +14 -15
  212. package/lib/_collection/_common/display-content-type/display-content-type.module.d.ts +9 -10
  213. package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.d.ts +12 -13
  214. package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.d.ts +10 -11
  215. package/lib/_collection/_common/mark-as-complete/mark-as-complete.component.d.ts +22 -23
  216. package/lib/_collection/_common/mark-as-complete/mark-as-complete.model.d.ts +8 -9
  217. package/lib/_collection/_common/mark-as-complete/mark-as-complete.module.d.ts +18 -19
  218. package/lib/_collection/_common/pipe-content-route/pipe-content-route.module.d.ts +8 -9
  219. package/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.d.ts +15 -16
  220. package/lib/_collection/_common/player-brief/player-brief.component.d.ts +35 -36
  221. package/lib/_collection/_common/player-brief/player-brief.module.d.ts +19 -20
  222. package/lib/_collection/_common/rating-summary/rating-summary.component.d.ts +14 -15
  223. package/lib/_collection/_common/rating-summary/rating-summary.module.d.ts +13 -14
  224. package/lib/_collection/_common/skeleton-loader/skeleton-loader.component.d.ts +11 -12
  225. package/lib/_collection/_common/skeleton-loader/skeleton-loader.module.d.ts +11 -12
  226. package/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.d.ts +15 -16
  227. package/lib/_collection/_common/tips-for-learner/tips-for-learner.module.d.ts +10 -11
  228. package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.d.ts +16 -17
  229. package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.d.ts +11 -12
  230. package/lib/_collection/_common/user-autocomplete/user-autocomplete.component.d.ts +34 -35
  231. package/lib/_collection/_common/user-autocomplete/user-autocomplete.model.d.ts +17 -18
  232. package/lib/_collection/_common/user-autocomplete/user-autocomplete.module.d.ts +15 -16
  233. package/lib/_collection/_common/user-autocomplete/user-autocomplete.service.d.ts +15 -16
  234. package/lib/_collection/_common/user-content-rating/user-content-rating.component.d.ts +21 -22
  235. package/lib/_collection/_common/user-content-rating/user-content-rating.module.d.ts +12 -13
  236. package/lib/_collection/_common/user-image/user-image.component.d.ts +21 -22
  237. package/lib/_collection/_common/user-image/user-image.module.d.ts +9 -10
  238. package/lib/_collection/btn-page-back/btn-page-back.component.d.ts +47 -48
  239. package/lib/_collection/btn-page-back/btn-page-back.module.d.ts +14 -15
  240. package/lib/_collection/btn-page-back/btn-page-back.service.d.ts +22 -23
  241. package/lib/_collection/card-rating-comment/card-rating-comment.component.d.ts +19 -20
  242. package/lib/_collection/card-rating-comment/card-rating-comment.module.d.ts +15 -16
  243. package/lib/_collection/sliders-dynamic/sliders-dynamic.component.d.ts +25 -26
  244. package/lib/_collection/sliders-dynamic/sliders-dynamic.model.d.ts +21 -22
  245. package/lib/_collection/sliders-dynamic/sliders-dynamic.module.d.ts +18 -19
  246. package/lib/_collection-api.d.ts +34 -35
  247. package/lib/_constants/widget-content.constants.d.ts +7 -8
  248. package/lib/_directives/tooltip.directive.d.ts +17 -18
  249. package/lib/_models/common.model.d.ts +3 -4
  250. package/lib/_models/error.model.d.ts +5 -6
  251. package/lib/_pipes/highlight.pipe.d.ts +10 -11
  252. package/lib/_services/rating.service.d.ts +18 -19
  253. package/lib/_services/samuhik-charcha.service.d.ts +13 -14
  254. package/lib/_services/viewer-route-util.d.ts +8 -9
  255. package/lib/_services/widget-content.model.d.ts +515 -516
  256. package/lib/_services/widget-content.service.d.ts +101 -102
  257. package/lib/_shared/translate-loader.factory.d.ts +7 -8
  258. package/lib/app-toc-lib.module.d.ts +88 -89
  259. package/lib/collection.config.d.ts +159 -160
  260. package/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.d.ts +17 -18
  261. package/lib/components/app-toc-banner/app-toc-banner.component.d.ts +225 -226
  262. package/lib/components/app-toc-cios-home/app-toc-cios-home.component.d.ts +78 -79
  263. package/lib/components/app-toc-cios-home/consent-dialog.component.d.ts +22 -23
  264. package/lib/components/app-toc-cohorts/app-toc-cohorts.component.d.ts +31 -32
  265. package/lib/components/app-toc-content-card/app-toc-content-card.component.d.ts +47 -48
  266. package/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.d.ts +14 -15
  267. package/lib/components/app-toc-discussion/app-toc-discussion.component.d.ts +21 -22
  268. package/lib/components/app-toc-home/app-toc-home.component.d.ts +314 -315
  269. package/lib/components/app-toc-home-v2/app-toc-home-v2.component.d.ts +408 -409
  270. package/lib/components/app-toc-overview/app-toc-overview.component.d.ts +47 -48
  271. package/lib/components/app-toc-session-card/app-toc-session-card.component.d.ts +22 -23
  272. package/lib/components/app-toc-sessions/app-toc-sessions.component.d.ts +14 -15
  273. package/lib/components/app-toc-single-page/app-toc-single-page.component.d.ts +149 -150
  274. package/lib/components/completion-survey-form/completion-survey-form.component.d.ts +42 -43
  275. package/lib/components/create-batch-dialog/create-batch-dialog.component.d.ts +27 -28
  276. package/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.d.ts +15 -16
  277. package/lib/components/enroll-profile-form/enroll-profile-form.component.d.ts +195 -196
  278. package/lib/components/enroll-questionnaire/enroll-questionnaire.component.d.ts +44 -45
  279. package/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.d.ts +54 -55
  280. package/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.d.ts +18 -19
  281. package/lib/components/public-survey-form/public-survey-form.component.d.ts +43 -44
  282. package/lib/components/survey-form-question/survey-form-question.component.d.ts +20 -21
  283. package/lib/components/survey-form-section/survey-form-section.component.d.ts +13 -14
  284. package/lib/models/app-toc-analytics.model.d.ts +152 -153
  285. package/lib/models/app-toc.model.d.ts +84 -85
  286. package/lib/models/auto-complete.model.d.ts +27 -28
  287. package/lib/models/card-content.model.d.ts +19 -20
  288. package/lib/models/content-strip-with-tabs.model.d.ts +44 -45
  289. package/lib/models/discussion-forum.model.d.ts +40 -41
  290. package/lib/models/goal.model.d.ts +22 -23
  291. package/lib/models/meta-tag.model.d.ts +6 -7
  292. package/lib/models/playlist.model.d.ts +23 -24
  293. package/lib/models/profile-revamp.model.d.ts +14 -15
  294. package/lib/models/rating.model.d.ts +17 -18
  295. package/lib/models/user-profile.model.d.ts +37 -38
  296. package/lib/resolvers/app-toc-cios-resolver.service.d.ts +12 -13
  297. package/lib/resolvers/app-toc-cios-user-enroll-resolver.service.d.ts +12 -13
  298. package/lib/resolvers/app-toc-content-read-resolver.service.d.ts +16 -17
  299. package/lib/resolvers/app-toc-ext-public-resolver.service.d.ts +12 -13
  300. package/lib/resolvers/app-toc-resolver.service.d.ts +16 -17
  301. package/lib/resolvers/config-resolver.service.d.ts +11 -12
  302. package/lib/resolvers/profile-resolver.service.d.ts +11 -12
  303. package/lib/resolvers/restricted-features-resolver.service.d.ts +11 -12
  304. package/lib/routes/app-toc-home/app-toc-home.component.d.ts +19 -20
  305. package/lib/routes/app-toc-home/app-toc-home.directive.d.ts +8 -9
  306. package/lib/routes/app-toc-home/app-toc-home.service.d.ts +8 -9
  307. package/lib/services/access-control.service.d.ts +29 -30
  308. package/lib/services/action.service.d.ts +9 -10
  309. package/lib/services/app-toc-v2.service.d.ts +16 -15
  310. package/lib/services/app-toc.service.d.ts +235 -178
  311. package/lib/services/certificate.service.d.ts +42 -43
  312. package/lib/services/discuss-utils.service.d.ts +33 -34
  313. package/lib/services/editor.service.d.ts +17 -18
  314. package/lib/services/load-check.service.d.ts +8 -9
  315. package/lib/services/loader.service.d.ts +16 -17
  316. package/lib/services/mobile-apps.service.d.ts +38 -39
  317. package/lib/services/netcore.service.d.ts +33 -34
  318. package/lib/services/nps-grid.service.d.ts +15 -16
  319. package/lib/services/otp.service.d.ts +20 -21
  320. package/lib/services/profile-v2.service.d.ts +20 -21
  321. package/lib/services/reset-ratings.service.d.ts +8 -9
  322. package/lib/services/resource-download-helper.service.d.ts +29 -30
  323. package/lib/services/timer.service.d.ts +9 -10
  324. package/lib/services/title-tag.service.d.ts +21 -22
  325. package/lib/services/user-profile.service.d.ts +24 -25
  326. package/lib/services/viewer-data.service.d.ts +58 -59
  327. package/lib/services/viewer-util.service.d.ts +76 -77
  328. package/lib/share-toc/share-toc/share-toc.component.d.ts +56 -57
  329. package/lib/share-toc/share-toc.module.d.ts +32 -33
  330. package/package.json +1 -1
  331. package/public-api.d.ts +56 -57
  332. package/lib/_collection/_common/attendance-card/attendance-card.component.d.ts.map +0 -1
  333. package/lib/_collection/_common/attendance-card/attendance-card.module.d.ts.map +0 -1
  334. package/lib/_collection/_common/attendance-helper/attendance-helper.component.d.ts.map +0 -1
  335. package/lib/_collection/_common/attendance-helper/attendance-helper.module.d.ts.map +0 -1
  336. package/lib/_collection/_common/avatar-photo/avatar-photo.component.d.ts.map +0 -1
  337. package/lib/_collection/_common/avatar-photo/avatar-photo.module.d.ts.map +0 -1
  338. package/lib/_collection/_common/certificate-dialog/certificate-dialog.component.d.ts.map +0 -1
  339. package/lib/_collection/_common/certificate-dialog/certificate-dialog.module.d.ts.map +0 -1
  340. package/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.d.ts.map +0 -1
  341. package/lib/_collection/_common/confirm-dialog/confirm-dialog.component.d.ts.map +0 -1
  342. package/lib/_collection/_common/confirm-dialog/confirm-dialog.module.d.ts.map +0 -1
  343. package/lib/_collection/_common/connection-hover-card/connection-hover-card.component.d.ts.map +0 -1
  344. package/lib/_collection/_common/connection-hover-card/connection-hover.module.d.ts.map +0 -1
  345. package/lib/_collection/_common/connection-hover-card/connection-hover.servive.d.ts.map +0 -1
  346. package/lib/_collection/_common/connection-name/connection-name.component.d.ts.map +0 -1
  347. package/lib/_collection/_common/connection-name/connection-name.module.d.ts.map +0 -1
  348. package/lib/_collection/_common/connection-name/profile-v2.model.d.ts.map +0 -1
  349. package/lib/_collection/_common/content-progress/content-progress.component.d.ts.map +0 -1
  350. package/lib/_collection/_common/content-progress/content-progress.module.d.ts.map +0 -1
  351. package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.d.ts.map +0 -1
  352. package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.d.ts.map +0 -1
  353. package/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.d.ts.map +0 -1
  354. package/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.d.ts.map +0 -1
  355. package/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.d.ts.map +0 -1
  356. package/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.d.ts.map +0 -1
  357. package/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.d.ts.map +0 -1
  358. package/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.d.ts.map +0 -1
  359. package/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.d.ts.map +0 -1
  360. package/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.d.ts.map +0 -1
  361. package/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.d.ts.map +0 -1
  362. package/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.d.ts.map +0 -1
  363. package/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.d.ts.map +0 -1
  364. package/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.d.ts.map +0 -1
  365. package/lib/_collection/_common/content-toc/content-services/handle-claim.service.d.ts.map +0 -1
  366. package/lib/_collection/_common/content-toc/content-services/review-component-data.service.d.ts.map +0 -1
  367. package/lib/_collection/_common/content-toc/content-toc.component.d.ts.map +0 -1
  368. package/lib/_collection/_common/content-toc/content-toc.module.d.ts.map +0 -1
  369. package/lib/_collection/_common/content-toc/karma-points/karma-points.component.d.ts.map +0 -1
  370. package/lib/_collection/_common/content-toc/karma-points/karma-points.module.d.ts.map +0 -1
  371. package/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.d.ts.map +0 -1
  372. package/lib/_collection/_common/content-toc/pipes/truncate.pipe.d.ts.map +0 -1
  373. package/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.d.ts.map +0 -1
  374. package/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.d.ts.map +0 -1
  375. package/lib/_collection/_common/display-content-type/display-content-type.component.d.ts.map +0 -1
  376. package/lib/_collection/_common/display-content-type/display-content-type.module.d.ts.map +0 -1
  377. package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.d.ts.map +0 -1
  378. package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.d.ts.map +0 -1
  379. package/lib/_collection/_common/mark-as-complete/mark-as-complete.component.d.ts.map +0 -1
  380. package/lib/_collection/_common/mark-as-complete/mark-as-complete.model.d.ts.map +0 -1
  381. package/lib/_collection/_common/mark-as-complete/mark-as-complete.module.d.ts.map +0 -1
  382. package/lib/_collection/_common/pipe-content-route/pipe-content-route.module.d.ts.map +0 -1
  383. package/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.d.ts.map +0 -1
  384. package/lib/_collection/_common/player-brief/player-brief.component.d.ts.map +0 -1
  385. package/lib/_collection/_common/player-brief/player-brief.module.d.ts.map +0 -1
  386. package/lib/_collection/_common/rating-summary/rating-summary.component.d.ts.map +0 -1
  387. package/lib/_collection/_common/rating-summary/rating-summary.module.d.ts.map +0 -1
  388. package/lib/_collection/_common/skeleton-loader/skeleton-loader.component.d.ts.map +0 -1
  389. package/lib/_collection/_common/skeleton-loader/skeleton-loader.module.d.ts.map +0 -1
  390. package/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.d.ts.map +0 -1
  391. package/lib/_collection/_common/tips-for-learner/tips-for-learner.module.d.ts.map +0 -1
  392. package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.d.ts.map +0 -1
  393. package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.d.ts.map +0 -1
  394. package/lib/_collection/_common/user-autocomplete/user-autocomplete.component.d.ts.map +0 -1
  395. package/lib/_collection/_common/user-autocomplete/user-autocomplete.model.d.ts.map +0 -1
  396. package/lib/_collection/_common/user-autocomplete/user-autocomplete.module.d.ts.map +0 -1
  397. package/lib/_collection/_common/user-autocomplete/user-autocomplete.service.d.ts.map +0 -1
  398. package/lib/_collection/_common/user-content-rating/user-content-rating.component.d.ts.map +0 -1
  399. package/lib/_collection/_common/user-content-rating/user-content-rating.module.d.ts.map +0 -1
  400. package/lib/_collection/_common/user-image/user-image.component.d.ts.map +0 -1
  401. package/lib/_collection/_common/user-image/user-image.module.d.ts.map +0 -1
  402. package/lib/_collection/btn-page-back/btn-page-back.component.d.ts.map +0 -1
  403. package/lib/_collection/btn-page-back/btn-page-back.module.d.ts.map +0 -1
  404. package/lib/_collection/btn-page-back/btn-page-back.service.d.ts.map +0 -1
  405. package/lib/_collection/card-rating-comment/card-rating-comment.component.d.ts.map +0 -1
  406. package/lib/_collection/card-rating-comment/card-rating-comment.module.d.ts.map +0 -1
  407. package/lib/_collection/sliders-dynamic/sliders-dynamic.component.d.ts.map +0 -1
  408. package/lib/_collection/sliders-dynamic/sliders-dynamic.model.d.ts.map +0 -1
  409. package/lib/_collection/sliders-dynamic/sliders-dynamic.module.d.ts.map +0 -1
  410. package/lib/_collection-api.d.ts.map +0 -1
  411. package/lib/_constants/widget-content.constants.d.ts.map +0 -1
  412. package/lib/_directives/tooltip.directive.d.ts.map +0 -1
  413. package/lib/_models/common.model.d.ts.map +0 -1
  414. package/lib/_models/error.model.d.ts.map +0 -1
  415. package/lib/_pipes/highlight.pipe.d.ts.map +0 -1
  416. package/lib/_services/rating.service.d.ts.map +0 -1
  417. package/lib/_services/samuhik-charcha.service.d.ts.map +0 -1
  418. package/lib/_services/viewer-route-util.d.ts.map +0 -1
  419. package/lib/_services/widget-content.model.d.ts.map +0 -1
  420. package/lib/_services/widget-content.service.d.ts.map +0 -1
  421. package/lib/_shared/translate-loader.factory.d.ts.map +0 -1
  422. package/lib/app-toc-lib.module.d.ts.map +0 -1
  423. package/lib/collection.config.d.ts.map +0 -1
  424. package/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.d.ts.map +0 -1
  425. package/lib/components/app-toc-banner/app-toc-banner.component.d.ts.map +0 -1
  426. package/lib/components/app-toc-cios-home/app-toc-cios-home.component.d.ts.map +0 -1
  427. package/lib/components/app-toc-cios-home/consent-dialog.component.d.ts.map +0 -1
  428. package/lib/components/app-toc-cohorts/app-toc-cohorts.component.d.ts.map +0 -1
  429. package/lib/components/app-toc-content-card/app-toc-content-card.component.d.ts.map +0 -1
  430. package/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.d.ts.map +0 -1
  431. package/lib/components/app-toc-discussion/app-toc-discussion.component.d.ts.map +0 -1
  432. package/lib/components/app-toc-home/app-toc-home.component.d.ts.map +0 -1
  433. package/lib/components/app-toc-home-v2/app-toc-home-v2.component.d.ts.map +0 -1
  434. package/lib/components/app-toc-overview/app-toc-overview.component.d.ts.map +0 -1
  435. package/lib/components/app-toc-session-card/app-toc-session-card.component.d.ts.map +0 -1
  436. package/lib/components/app-toc-sessions/app-toc-sessions.component.d.ts.map +0 -1
  437. package/lib/components/app-toc-single-page/app-toc-single-page.component.d.ts.map +0 -1
  438. package/lib/components/completion-survey-form/completion-survey-form.component.d.ts.map +0 -1
  439. package/lib/components/create-batch-dialog/create-batch-dialog.component.d.ts.map +0 -1
  440. package/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.d.ts.map +0 -1
  441. package/lib/components/enroll-profile-form/enroll-profile-form.component.d.ts.map +0 -1
  442. package/lib/components/enroll-questionnaire/enroll-questionnaire.component.d.ts.map +0 -1
  443. package/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.d.ts.map +0 -1
  444. package/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.d.ts.map +0 -1
  445. package/lib/components/public-survey-form/public-survey-form.component.d.ts.map +0 -1
  446. package/lib/components/survey-form-question/survey-form-question.component.d.ts.map +0 -1
  447. package/lib/components/survey-form-section/survey-form-section.component.d.ts.map +0 -1
  448. package/lib/models/app-toc-analytics.model.d.ts.map +0 -1
  449. package/lib/models/app-toc.model.d.ts.map +0 -1
  450. package/lib/models/auto-complete.model.d.ts.map +0 -1
  451. package/lib/models/card-content.model.d.ts.map +0 -1
  452. package/lib/models/content-strip-with-tabs.model.d.ts.map +0 -1
  453. package/lib/models/discussion-forum.model.d.ts.map +0 -1
  454. package/lib/models/goal.model.d.ts.map +0 -1
  455. package/lib/models/meta-tag.model.d.ts.map +0 -1
  456. package/lib/models/playlist.model.d.ts.map +0 -1
  457. package/lib/models/profile-revamp.model.d.ts.map +0 -1
  458. package/lib/models/rating.model.d.ts.map +0 -1
  459. package/lib/models/user-profile.model.d.ts.map +0 -1
  460. package/lib/resolvers/app-toc-cios-resolver.service.d.ts.map +0 -1
  461. package/lib/resolvers/app-toc-cios-user-enroll-resolver.service.d.ts.map +0 -1
  462. package/lib/resolvers/app-toc-content-read-resolver.service.d.ts.map +0 -1
  463. package/lib/resolvers/app-toc-ext-public-resolver.service.d.ts.map +0 -1
  464. package/lib/resolvers/app-toc-resolver.service.d.ts.map +0 -1
  465. package/lib/resolvers/config-resolver.service.d.ts.map +0 -1
  466. package/lib/resolvers/profile-resolver.service.d.ts.map +0 -1
  467. package/lib/resolvers/restricted-features-resolver.service.d.ts.map +0 -1
  468. package/lib/routes/app-toc-home/app-toc-home.component.d.ts.map +0 -1
  469. package/lib/routes/app-toc-home/app-toc-home.directive.d.ts.map +0 -1
  470. package/lib/routes/app-toc-home/app-toc-home.service.d.ts.map +0 -1
  471. package/lib/services/access-control.service.d.ts.map +0 -1
  472. package/lib/services/action.service.d.ts.map +0 -1
  473. package/lib/services/app-toc-v2.service.d.ts.map +0 -1
  474. package/lib/services/app-toc.service.d.ts.map +0 -1
  475. package/lib/services/certificate.service.d.ts.map +0 -1
  476. package/lib/services/discuss-utils.service.d.ts.map +0 -1
  477. package/lib/services/editor.service.d.ts.map +0 -1
  478. package/lib/services/load-check.service.d.ts.map +0 -1
  479. package/lib/services/loader.service.d.ts.map +0 -1
  480. package/lib/services/mobile-apps.service.d.ts.map +0 -1
  481. package/lib/services/netcore.service.d.ts.map +0 -1
  482. package/lib/services/nps-grid.service.d.ts.map +0 -1
  483. package/lib/services/otp.service.d.ts.map +0 -1
  484. package/lib/services/profile-v2.service.d.ts.map +0 -1
  485. package/lib/services/reset-ratings.service.d.ts.map +0 -1
  486. package/lib/services/resource-download-helper.service.d.ts.map +0 -1
  487. package/lib/services/timer.service.d.ts.map +0 -1
  488. package/lib/services/title-tag.service.d.ts.map +0 -1
  489. package/lib/services/user-profile.service.d.ts.map +0 -1
  490. package/lib/services/viewer-data.service.d.ts.map +0 -1
  491. package/lib/services/viewer-util.service.d.ts.map +0 -1
  492. package/lib/share-toc/share-toc/share-toc.component.d.ts.map +0 -1
  493. package/lib/share-toc/share-toc.module.d.ts.map +0 -1
  494. package/public-api.d.ts.map +0 -1
  495. package/sunbird-cb-toc.d.ts.map +0 -1
@@ -1,19 +1,19 @@
1
- import { Pipe } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class ReplaceNbspPipe {
4
- transform(value) {
5
- if (value && value.includes(' ')) {
6
- return value.replace(/ /g, ' ');
7
- }
8
- return value;
9
- }
10
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ReplaceNbspPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
11
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: ReplaceNbspPipe, name: "replaceNbsp" }); }
12
- }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ReplaceNbspPipe, decorators: [{
14
- type: Pipe,
15
- args: [{
16
- name: 'replaceNbsp',
17
- }]
18
- }] });
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGFjZS1uYnNwLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdG9jL3NyYy9saWIvX2NvbGxlY3Rpb24vX2NvbW1vbi9jb250ZW50LXRvYy9waXBlcy9yZXBsYWNlLW5ic3AucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQTs7QUFLbkQsTUFBTSxPQUFPLGVBQWU7SUFFMUIsU0FBUyxDQUFDLEtBQVU7UUFDbEIsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNyQyxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFBO1NBQ3JDO1FBQ0MsT0FBTyxLQUFLLENBQUE7SUFDaEIsQ0FBQzsrR0FQVSxlQUFlOzZHQUFmLGVBQWU7OzRGQUFmLGVBQWU7a0JBSDNCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGFBQWE7aUJBQ3BCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbkBQaXBlKHtcbiAgbmFtZTogJ3JlcGxhY2VOYnNwJyxcbn0pXG5leHBvcnQgY2xhc3MgUmVwbGFjZU5ic3BQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgdHJhbnNmb3JtKHZhbHVlOiBhbnkpOiBhbnkge1xuICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5pbmNsdWRlcygnJm5ic3A7JykpIHtcbiAgICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC8mbmJzcDsvZywgJyAnKVxuICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZVxuICB9XG59XG4iXX0=
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class ReplaceNbspPipe {
4
+ transform(value) {
5
+ if (value && value.includes(' ')) {
6
+ return value.replace(/ /g, ' ');
7
+ }
8
+ return value;
9
+ }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ReplaceNbspPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
11
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: ReplaceNbspPipe, name: "replaceNbsp" }); }
12
+ }
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ReplaceNbspPipe, decorators: [{
14
+ type: Pipe,
15
+ args: [{
16
+ name: 'replaceNbsp',
17
+ }]
18
+ }] });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGFjZS1uYnNwLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdG9jL3NyYy9saWIvX2NvbGxlY3Rpb24vX2NvbW1vbi9jb250ZW50LXRvYy9waXBlcy9yZXBsYWNlLW5ic3AucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQTs7QUFLbkQsTUFBTSxPQUFPLGVBQWU7SUFFMUIsU0FBUyxDQUFDLEtBQVU7UUFDbEIsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNyQyxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFBO1NBQ3JDO1FBQ0MsT0FBTyxLQUFLLENBQUE7SUFDaEIsQ0FBQzsrR0FQVSxlQUFlOzZHQUFmLGVBQWU7OzRGQUFmLGVBQWU7a0JBSDNCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGFBQWE7aUJBQ3BCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcblxyXG5AUGlwZSh7XHJcbiAgbmFtZTogJ3JlcGxhY2VOYnNwJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJlcGxhY2VOYnNwUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG5cclxuICB0cmFuc2Zvcm0odmFsdWU6IGFueSk6IGFueSB7XHJcbiAgICBpZiAodmFsdWUgJiYgdmFsdWUuaW5jbHVkZXMoJyZuYnNwOycpKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC8mbmJzcDsvZywgJyAnKVxyXG4gICAgfVxyXG4gICAgICByZXR1cm4gdmFsdWVcclxuICB9XHJcbn1cclxuIl19
@@ -1,23 +1,23 @@
1
- import { Pipe } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class TruncatePipe {
4
- transform(value, limit) {
5
- if (!value) {
6
- return '';
7
- }
8
- // const words = value.split(' ')
9
- // const newWord = words.slice(0, limit).join(' ')
10
- const charLen = value.trim();
11
- const newWord = value.substring(0, limit);
12
- return charLen.length > limit ? (`${newWord}...`) : value;
13
- }
14
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TruncatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
15
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: TruncatePipe, name: "truncate" }); }
16
- }
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TruncatePipe, decorators: [{
18
- type: Pipe,
19
- args: [{
20
- name: 'truncate',
21
- }]
22
- }] });
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1bmNhdGUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcnkvc3VuYmlyZC1jYi90b2Mvc3JjL2xpYi9fY29sbGVjdGlvbi9fY29tbW9uL2NvbnRlbnQtdG9jL3BpcGVzL3RydW5jYXRlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUE7O0FBS25ELE1BQU0sT0FBTyxZQUFZO0lBQ3ZCLFNBQVMsQ0FBQyxLQUFhLEVBQUUsS0FBYTtRQUNwQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsT0FBTyxFQUFFLENBQUE7U0FDVjtRQUNELGlDQUFpQztRQUNqQyxrREFBa0Q7UUFDbEQsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFBO1FBQzVCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQ3pDLE9BQU8sT0FBTyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUE7SUFDM0QsQ0FBQzsrR0FWVSxZQUFZOzZHQUFaLFlBQVk7OzRGQUFaLFlBQVk7a0JBSHhCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFVBQVU7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbkBQaXBlKHtcbiAgbmFtZTogJ3RydW5jYXRlJyxcbn0pXG5leHBvcnQgY2xhc3MgVHJ1bmNhdGVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nLCBsaW1pdDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gJydcbiAgICB9XG4gICAgLy8gY29uc3Qgd29yZHMgPSB2YWx1ZS5zcGxpdCgnICcpXG4gICAgLy8gY29uc3QgbmV3V29yZCA9IHdvcmRzLnNsaWNlKDAsIGxpbWl0KS5qb2luKCcgJylcbiAgICBjb25zdCBjaGFyTGVuID0gdmFsdWUudHJpbSgpXG4gICAgY29uc3QgbmV3V29yZCA9IHZhbHVlLnN1YnN0cmluZygwLCBsaW1pdClcbiAgICByZXR1cm4gY2hhckxlbi5sZW5ndGggPiBsaW1pdCA/IChgJHtuZXdXb3JkfS4uLmApIDogdmFsdWVcbiAgfVxufVxuIl19
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class TruncatePipe {
4
+ transform(value, limit) {
5
+ if (!value) {
6
+ return '';
7
+ }
8
+ // const words = value.split(' ')
9
+ // const newWord = words.slice(0, limit).join(' ')
10
+ const charLen = value.trim();
11
+ const newWord = value.substring(0, limit);
12
+ return charLen.length > limit ? (`${newWord}...`) : value;
13
+ }
14
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TruncatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
15
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: TruncatePipe, name: "truncate" }); }
16
+ }
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TruncatePipe, decorators: [{
18
+ type: Pipe,
19
+ args: [{
20
+ name: 'truncate',
21
+ }]
22
+ }] });
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1bmNhdGUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcnkvc3VuYmlyZC1jYi90b2Mvc3JjL2xpYi9fY29sbGVjdGlvbi9fY29tbW9uL2NvbnRlbnQtdG9jL3BpcGVzL3RydW5jYXRlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUE7O0FBS25ELE1BQU0sT0FBTyxZQUFZO0lBQ3ZCLFNBQVMsQ0FBQyxLQUFhLEVBQUUsS0FBYTtRQUNwQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsT0FBTyxFQUFFLENBQUE7U0FDVjtRQUNELGlDQUFpQztRQUNqQyxrREFBa0Q7UUFDbEQsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFBO1FBQzVCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQ3pDLE9BQU8sT0FBTyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUE7SUFDM0QsQ0FBQzsrR0FWVSxZQUFZOzZHQUFaLFlBQVk7OzRGQUFaLFlBQVk7a0JBSHhCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFVBQVU7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcblxyXG5AUGlwZSh7XHJcbiAgbmFtZTogJ3RydW5jYXRlJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRydW5jYXRlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG4gIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nLCBsaW1pdDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgcmV0dXJuICcnXHJcbiAgICB9XHJcbiAgICAvLyBjb25zdCB3b3JkcyA9IHZhbHVlLnNwbGl0KCcgJylcclxuICAgIC8vIGNvbnN0IG5ld1dvcmQgPSB3b3Jkcy5zbGljZSgwLCBsaW1pdCkuam9pbignICcpXHJcbiAgICBjb25zdCBjaGFyTGVuID0gdmFsdWUudHJpbSgpXHJcbiAgICBjb25zdCBuZXdXb3JkID0gdmFsdWUuc3Vic3RyaW5nKDAsIGxpbWl0KVxyXG4gICAgcmV0dXJuIGNoYXJMZW4ubGVuZ3RoID4gbGltaXQgPyAoYCR7bmV3V29yZH0uLi5gKSA6IHZhbHVlXHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,113 +1,113 @@
1
- import { Component, ViewChild, Inject, Output, EventEmitter } from '@angular/core';
2
- import { fromEvent } from 'rxjs';
3
- import { debounceTime, distinctUntilChanged, map } from 'rxjs/operators';
4
- import { MAT_LEGACY_DIALOG_DATA as MAT_DIALOG_DATA } from '@angular/material/legacy-dialog';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/material/legacy-dialog";
7
- import * as i2 from "../content-services/review-component-data.service";
8
- import * as i3 from "@angular/common";
9
- import * as i4 from "@angular/material/icon";
10
- import * as i5 from "@angular/material/menu";
11
- import * as i6 from "@angular/material/progress-spinner";
12
- import * as i7 from "../../avatar-photo/avatar-photo.component";
13
- import * as i8 from "../../rating-summary/rating-summary.component";
14
- import * as i9 from "ngx-infinite-scroll";
15
- import * as i10 from "@sunbird-cb/utils-v2";
16
- import * as i11 from "@ngx-translate/core";
17
- export class ReviewsContentComponent {
18
- constructor(dialogRef, reviewDataService, data) {
19
- this.dialogRef = dialogRef;
20
- this.reviewDataService = reviewDataService;
21
- this.data = data;
22
- this.initiateLoadMore = new EventEmitter();
23
- this.loadLatestReviews = new EventEmitter();
24
- this.clearIcon = false;
25
- this.disableLoadMore = false;
26
- this.reviews = [];
27
- this.showFilterIndicator = 'Top';
28
- this.displayLoader = false;
29
- this.reviewDataService.getReviewData().subscribe((_review) => {
30
- this.reviews = _review;
31
- this.data.reviews = _review;
32
- });
33
- }
34
- ngOnInit() {
35
- if (this.data && this.data.reviews) {
36
- this.reviews = Object.values(this.data.reviews);
37
- }
38
- }
39
- ngAfterViewInit() {
40
- fromEvent(this.searchInput.nativeElement, 'keyup')
41
- .pipe(
42
- // get value
43
- map((event) => {
44
- return event.target.value.trim();
45
- }),
46
- // Time in milliseconds between key events
47
- debounceTime(150),
48
- // If previous query is different from current
49
- distinctUntilChanged())
50
- // subscription for response
51
- .subscribe((text) => {
52
- this.clearIcon = (text.length) ? true : false;
53
- if (text) {
54
- this.reviews = Object.values(this.reviews).filter((_obj) => {
55
- return _obj.review && _obj.review.toLowerCase().includes(text.toLowerCase())
56
- || _obj.firstName && _obj.firstName.toLowerCase().includes(text.toLowerCase());
57
- });
58
- }
59
- else {
60
- this.reviews = Object.values(this.data.reviews);
61
- }
62
- });
63
- }
64
- handleCloseModal() {
65
- this.dialogRef.close();
66
- }
67
- handleFocus() {
68
- this.searchInput.nativeElement.focus();
69
- }
70
- handleClear() {
71
- this.clearIcon = false;
72
- this.searchInput.nativeElement.value = '';
73
- this.reviews = Object.values(this.data.reviews);
74
- }
75
- handleCapitalize(str, type) {
76
- let returnValue = '';
77
- if (str && type === 'name') {
78
- returnValue = str.split(' ').map(_str => {
79
- return _str.charAt(0).toUpperCase() + _str.slice(1);
80
- }).join(' ');
81
- }
82
- else {
83
- returnValue = str && (str.charAt(0).toUpperCase() + str.slice(1));
84
- }
85
- return returnValue;
86
- }
87
- handleReviewsFilter(str) {
88
- this.showFilterIndicator = str;
89
- this.loadLatestReviews.emit(str);
90
- this.handleClear();
91
- }
92
- handleLoadMore() {
93
- this.displayLoader = true;
94
- this.initiateLoadMore.emit(this.showFilterIndicator);
95
- }
96
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ReviewsContentComponent, deps: [{ token: i1.MatLegacyDialogRef }, { token: i2.ReviewComponentDataService }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
97
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ReviewsContentComponent, selector: "ws-widget-reviews-content", outputs: { initiateLoadMore: "initiateLoadMore", loadLatestReviews: "loadLatestReviews" }, viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"rating-modal-container\">\n <div class=\"flex flex-row ratings-container\">\n <div class=\"flex-1\">\n <ws-widget-rating-summary [ratingSummary]=\"data?.ratings\"></ws-widget-rating-summary>\n </div>\n <div class=\"flex\">\n <mat-icon class=\"cursor-pointer\" (click)=\"handleCloseModal()\" >close</mat-icon>\n </div>\n </div>\n <div class=\"flex flex-col p-6\">\n <div class=\"flex flex-col gap-4\">\n <div class=\"font-base font-bold\">\n <span *ngIf=\"showFilterIndicator === 'Top'\" class=\"nodtranslate\">{{ 'apptocsinglepage.topReviews' | translate }}</span>\n <span *ngIf=\"showFilterIndicator !== 'Top'\" class=\"nodtranslate\">{{ 'apptocsinglepage.latestReviews' | translate }}</span>\n </div>\n <div class=\"flex flex-row gap-3\">\n <div class=\"flex-1\">\n <div class=\"flex flex-row search-div\">\n <mat-icon (click)=\"handleFocus()\" class=\"cursor-pointer\">search</mat-icon>\n <input #searchInput type=\"text\" class=\"search-input flex\" placeholder=\"Search\" maxlength=\"50\" />\n <ng-container *ngIf=\"clearIcon\">\n <mat-icon (click)=\"handleClear()\" class=\"cursor-pointer\">close</mat-icon>\n </ng-container>\n </div>\n </div>\n <div class=\"flex items-center justify-center w-8\">\n <mat-icon class=\"cursor-pointer\" [matMenuTriggerFor]=\"filter\">filter_list</mat-icon>\n <mat-menu #filter=\"matMenu\" xPosition=\"before\">\n <button mat-menu-item class=\"px-3\" [ngClass]=\"{'highlightFilter': showFilterIndicator === 'Latest'}\"\n (click)=\"handleReviewsFilter('Latest')\">\n <span class=\"nodtranslate\">{{ 'apptocsinglepage.latestReviews' | translate }}</span>\n </button>\n <button mat-menu-item class=\"px-3\" [ngClass]=\"{'highlightFilter': showFilterIndicator === 'Top'}\"\n (click)=\"handleReviewsFilter('Top')\">\n <span class=\"nodtranslate\">{{ 'apptocsinglepage.topReviews' | translate }}</span>\n </button>\n </mat-menu>\n </div>\n </div>\n </div>\n <ng-container *ngIf=\"!reviews || !reviews.length\">\n <div class=\"flex justify-center items-center no-reviews-found text-lg\">\n <div class=\"p-4 nodtranslate\">\n {{ 'apptocsinglepage.noReviewsFound' | translate }}\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"reviews?.length\">\n <div class=\"flex flex-col reviews\" infiniteScroll [infiniteScrollDistance]=\"1\" [infiniteScrollThrottle]=\"150\" [infiniteScrollContainer]=\"'.reviews'\" [fromRoot]=\"true\" [scrollWindow]=\"false\" (scrolled)=\"handleLoadMore()\">\n <ng-container *ngFor=\"let eachReview of reviews; let i = index\">\n <div class=\"flex flex-row gap-3 p-4\">\n <div class=\"flex-1\">\n <div class=\"flex flex-col gap-4\">\n <div class=\"flex flex-row gap-2\">\n <div class=\"flex-1\">\n <div class=\"flex text-sm nodtranslate\">{{ handleCapitalize(eachReview?.review, 'comment') }}</div>\n </div>\n <div class=\"flex flex-row gap-1 rating-start-value\">\n <mat-icon>star</mat-icon>\n <div class=\"text-sm nodtranslate\">{{ eachReview?.rating }}</div>\n </div>\n </div>\n <div class=\"flex flex-row gap-2 items-center\">\n <ws-widget-avatar-photo [randomColor]=\"true\" [datalen]=\"1\" [size]=\"'round-m'\" [photoUrl]=\"eachReview?.photo || ''\" [name]=\"eachReview?.firstName\"></ws-widget-avatar-photo>\n <div class=\"flex flex-wrap\">\n <div class=\"text-sm nodtranslate\">{{ handleCapitalize(eachReview?.firstName.toLowerCase(), 'name') }}</div>\n <div class=\"flex items-center mx-2\">\n <span class=\"period\"></span>\n </div>\n <div class=\"text-sm nodtranslate\" *ngIf=\"eachReview?.date\">{{ eachReview?.date | pipeRelativeTime }}</div>\n <div class=\"text-sm nodtranslate\" *ngIf=\"eachReview?.updatedon\">{{ eachReview?.updatedon | pipeRelativeTime }}</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"separator\" *ngIf=\"reviews.length > (i + 1)\" ></div>\n </ng-container>\n <div *ngIf=\"displayLoader\" class=\"flex items-center justify-center mt-6\">\n <mat-spinner [diameter]=\"30\"></mat-spinner>\n </div>\n </div>\n </ng-container>\n </div>\n \n</div>\n\n", styles: [".search-div{border:1px solid rgba(0,0,0,.16);border-radius:4px;background:#fff}.search-div .mat-icon{padding:8px}.search-div .search-input{padding:8px 0;border:none;border-radius:8px;width:100%;font-family:Lato}.search-div .search-input:focus{outline:none}.search-div .search-input:focus-visible{outline:none!important}.ratings-container{padding:24px;background-color:#1b4ca114}.separator{border-bottom:2px solid rgba(0,0,0,.1)}.reviews{max-height:320px;overflow-y:auto}.rating-start-value mat-icon{color:#ff9800}::ng-deep .mat-menu-panel{min-width:12em!important;padding:8px 0!important;border-radius:12px;margin-top:4px}::ng-deep .mat-menu-panel .mat-menu-content{padding-top:0!important}::ng-deep .mat-menu-panel .mat-menu-content button{padding:0 16px!important}.no-reviews-found{background-color:#fff;margin-top:16px;border-radius:8px;border:none}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i5.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i5.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i7.AvatarPhotoComponent, selector: "ws-widget-avatar-photo", inputs: ["datalen", "photoUrl", "name", "size", "randomColor", "initials", "showBadge"] }, { kind: "component", type: i8.RatingSummaryComponent, selector: "ws-widget-rating-summary", inputs: ["ratingSummary"] }, { kind: "directive", type: i9.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "pipe", type: i10.PipeRelativeTimePipe, name: "pipeRelativeTime" }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }] }); }
98
- }
99
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ReviewsContentComponent, decorators: [{
100
- type: Component,
101
- args: [{ selector: 'ws-widget-reviews-content', template: "<div class=\"rating-modal-container\">\n <div class=\"flex flex-row ratings-container\">\n <div class=\"flex-1\">\n <ws-widget-rating-summary [ratingSummary]=\"data?.ratings\"></ws-widget-rating-summary>\n </div>\n <div class=\"flex\">\n <mat-icon class=\"cursor-pointer\" (click)=\"handleCloseModal()\" >close</mat-icon>\n </div>\n </div>\n <div class=\"flex flex-col p-6\">\n <div class=\"flex flex-col gap-4\">\n <div class=\"font-base font-bold\">\n <span *ngIf=\"showFilterIndicator === 'Top'\" class=\"nodtranslate\">{{ 'apptocsinglepage.topReviews' | translate }}</span>\n <span *ngIf=\"showFilterIndicator !== 'Top'\" class=\"nodtranslate\">{{ 'apptocsinglepage.latestReviews' | translate }}</span>\n </div>\n <div class=\"flex flex-row gap-3\">\n <div class=\"flex-1\">\n <div class=\"flex flex-row search-div\">\n <mat-icon (click)=\"handleFocus()\" class=\"cursor-pointer\">search</mat-icon>\n <input #searchInput type=\"text\" class=\"search-input flex\" placeholder=\"Search\" maxlength=\"50\" />\n <ng-container *ngIf=\"clearIcon\">\n <mat-icon (click)=\"handleClear()\" class=\"cursor-pointer\">close</mat-icon>\n </ng-container>\n </div>\n </div>\n <div class=\"flex items-center justify-center w-8\">\n <mat-icon class=\"cursor-pointer\" [matMenuTriggerFor]=\"filter\">filter_list</mat-icon>\n <mat-menu #filter=\"matMenu\" xPosition=\"before\">\n <button mat-menu-item class=\"px-3\" [ngClass]=\"{'highlightFilter': showFilterIndicator === 'Latest'}\"\n (click)=\"handleReviewsFilter('Latest')\">\n <span class=\"nodtranslate\">{{ 'apptocsinglepage.latestReviews' | translate }}</span>\n </button>\n <button mat-menu-item class=\"px-3\" [ngClass]=\"{'highlightFilter': showFilterIndicator === 'Top'}\"\n (click)=\"handleReviewsFilter('Top')\">\n <span class=\"nodtranslate\">{{ 'apptocsinglepage.topReviews' | translate }}</span>\n </button>\n </mat-menu>\n </div>\n </div>\n </div>\n <ng-container *ngIf=\"!reviews || !reviews.length\">\n <div class=\"flex justify-center items-center no-reviews-found text-lg\">\n <div class=\"p-4 nodtranslate\">\n {{ 'apptocsinglepage.noReviewsFound' | translate }}\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"reviews?.length\">\n <div class=\"flex flex-col reviews\" infiniteScroll [infiniteScrollDistance]=\"1\" [infiniteScrollThrottle]=\"150\" [infiniteScrollContainer]=\"'.reviews'\" [fromRoot]=\"true\" [scrollWindow]=\"false\" (scrolled)=\"handleLoadMore()\">\n <ng-container *ngFor=\"let eachReview of reviews; let i = index\">\n <div class=\"flex flex-row gap-3 p-4\">\n <div class=\"flex-1\">\n <div class=\"flex flex-col gap-4\">\n <div class=\"flex flex-row gap-2\">\n <div class=\"flex-1\">\n <div class=\"flex text-sm nodtranslate\">{{ handleCapitalize(eachReview?.review, 'comment') }}</div>\n </div>\n <div class=\"flex flex-row gap-1 rating-start-value\">\n <mat-icon>star</mat-icon>\n <div class=\"text-sm nodtranslate\">{{ eachReview?.rating }}</div>\n </div>\n </div>\n <div class=\"flex flex-row gap-2 items-center\">\n <ws-widget-avatar-photo [randomColor]=\"true\" [datalen]=\"1\" [size]=\"'round-m'\" [photoUrl]=\"eachReview?.photo || ''\" [name]=\"eachReview?.firstName\"></ws-widget-avatar-photo>\n <div class=\"flex flex-wrap\">\n <div class=\"text-sm nodtranslate\">{{ handleCapitalize(eachReview?.firstName.toLowerCase(), 'name') }}</div>\n <div class=\"flex items-center mx-2\">\n <span class=\"period\"></span>\n </div>\n <div class=\"text-sm nodtranslate\" *ngIf=\"eachReview?.date\">{{ eachReview?.date | pipeRelativeTime }}</div>\n <div class=\"text-sm nodtranslate\" *ngIf=\"eachReview?.updatedon\">{{ eachReview?.updatedon | pipeRelativeTime }}</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"separator\" *ngIf=\"reviews.length > (i + 1)\" ></div>\n </ng-container>\n <div *ngIf=\"displayLoader\" class=\"flex items-center justify-center mt-6\">\n <mat-spinner [diameter]=\"30\"></mat-spinner>\n </div>\n </div>\n </ng-container>\n </div>\n \n</div>\n\n", styles: [".search-div{border:1px solid rgba(0,0,0,.16);border-radius:4px;background:#fff}.search-div .mat-icon{padding:8px}.search-div .search-input{padding:8px 0;border:none;border-radius:8px;width:100%;font-family:Lato}.search-div .search-input:focus{outline:none}.search-div .search-input:focus-visible{outline:none!important}.ratings-container{padding:24px;background-color:#1b4ca114}.separator{border-bottom:2px solid rgba(0,0,0,.1)}.reviews{max-height:320px;overflow-y:auto}.rating-start-value mat-icon{color:#ff9800}::ng-deep .mat-menu-panel{min-width:12em!important;padding:8px 0!important;border-radius:12px;margin-top:4px}::ng-deep .mat-menu-panel .mat-menu-content{padding-top:0!important}::ng-deep .mat-menu-panel .mat-menu-content button{padding:0 16px!important}.no-reviews-found{background-color:#fff;margin-top:16px;border-radius:8px;border:none}\n"] }]
102
- }], ctorParameters: function () { return [{ type: i1.MatLegacyDialogRef }, { type: i2.ReviewComponentDataService }, { type: undefined, decorators: [{
103
- type: Inject,
104
- args: [MAT_DIALOG_DATA]
105
- }] }]; }, propDecorators: { searchInput: [{
106
- type: ViewChild,
107
- args: ['searchInput', { static: true }]
108
- }], initiateLoadMore: [{
109
- type: Output
110
- }], loadLatestReviews: [{
111
- type: Output
112
- }] } });
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV2aWV3cy1jb250ZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcnkvc3VuYmlyZC1jYi90b2Mvc3JjL2xpYi9fY29sbGVjdGlvbi9fY29tbW9uL2NvbnRlbnQtdG9jL3Jldmlld3MtY29udGVudC9yZXZpZXdzLWNvbnRlbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL19jb2xsZWN0aW9uL19jb21tb24vY29udGVudC10b2MvcmV2aWV3cy1jb250ZW50L3Jldmlld3MtY29udGVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUF5QixTQUFTLEVBQUUsTUFBTSxFQUFjLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDckgsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUNoQyxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3hFLE9BQU8sRUFBc0Msc0JBQXNCLElBQUksZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUE7Ozs7Ozs7Ozs7Ozs7QUFZL0gsTUFBTSxPQUFPLHVCQUF1QjtJQVdsQyxZQUNTLFNBQWdELEVBQy9DLGlCQUE2QyxFQUNyQixJQUFTO1FBRmxDLGNBQVMsR0FBVCxTQUFTLENBQXVDO1FBQy9DLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBNEI7UUFDckIsU0FBSSxHQUFKLElBQUksQ0FBSztRQVhqQyxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFBO1FBQ3JDLHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUE7UUFDaEQsY0FBUyxHQUFHLEtBQUssQ0FBQTtRQUNqQixvQkFBZSxHQUFH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IE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgVmlld0NoaWxkLCBJbmplY3QsIEVsZW1lbnRSZWYsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IGZyb21FdmVudCB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcbmltcG9ydCB7IE1hdExlZ2FjeURpYWxvZ1JlZiBhcyBNYXREaWFsb2dSZWYsIE1BVF9MRUdBQ1lfRElBTE9HX0RBVEEgYXMgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWRpYWxvZydcbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJ1xuXG5pbXBvcnQgeyBSZXZpZXdDb21wb25lbnREYXRhU2VydmljZSB9IGZyb20gJy4uL2NvbnRlbnQtc2VydmljZXMvcmV2aWV3LWNvbXBvbmVudC1kYXRhLnNlcnZpY2UnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3dzLXdpZGdldC1yZXZpZXdzLWNvbnRlbnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vcmV2aWV3cy1jb250ZW50LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmV2aWV3cy1jb250ZW50LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuXG5leHBvcnQgY2xhc3MgUmV2aWV3c0NvbnRlbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuXG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0JywgeyBzdGF0aWM6IHRydWUgfSkgc2VhcmNoSW5wdXQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+XG4gIEBPdXRwdXQoKSBpbml0aWF0ZUxvYWRNb3JlID0gbmV3IEV2ZW50RW1pdHRlcigpXG4gIEBPdXRwdXQoKSBsb2FkTGF0ZXN0UmV2aWV3cyA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuICBjbGVhckljb24gPSBmYWxzZVxuICBkaXNhYmxlTG9hZE1vcmUgPSBmYWxzZVxuICByZXZpZXdzOiBhbnlbXSA9IFtdXG4gIHNob3dGaWx0ZXJJbmRpY2F0b3IgPSAnVG9wJ1xuICBkaXNwbGF5TG9hZGVyID0gZmFsc2VcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8UmV2aWV3c0NvbnRlbnRDb21wb25lbnQ+LFxuICAgIHByaXZhdGUgcmV2aWV3RGF0YVNlcnZpY2U6IFJldmlld0NvbXBvbmVudERhdGFTZXJ2aWNlLFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogYW55XG4gICkge1xuICAgIHRoaXMucmV2aWV3RGF0YVNlcnZpY2UuZ2V0UmV2aWV3RGF0YSgpLnN1YnNjcmliZSgoX3JldmlldzogYW55KSA9PiB7XG4gICAgICB0aGlzLnJldmlld3MgPSBfcmV2aWV3XG4gICAgICB0aGlzLmRhdGEucmV2aWV3cyA9IF9yZXZpZXdcbiAgICB9KVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuZGF0YSAmJiB0aGlzLmRhdGEucmV2aWV3cykge1xuICAgICAgdGhpcy5yZXZpZXdzID0gT2JqZWN0LnZhbHVlcyh0aGlzLmRhdGEucmV2aWV3cylcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgZnJvbUV2ZW50KHRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudCwgJ2tleXVwJylcbiAgICAucGlwZShcbiAgICAgICAgLy8gZ2V0IHZhbHVlXG4gICAgICAgIG1hcCgoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgIHJldHVybiBldmVudC50YXJnZXQudmFsdWUudHJpbSgpXG4gICAgICAgIH0pLFxuICAgICAgICAvLyBUaW1lIGluIG1pbGxpc2Vjb25kcyBiZXR3ZWVuIGtleSBldmVudHNcbiAgICAgICAgZGVib3VuY2VUaW1lKDE1MCksXG4gICAgICAgIC8vIElmIHByZXZpb3VzIHF1ZXJ5IGlzIGRpZmZlcmVudCBmcm9tIGN1cnJlbnRcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgIClcbiAgICAgIC8vIHN1YnNjcmlwdGlvbiBmb3IgcmVzcG9uc2VcbiAgICAgIC5zdWJzY3JpYmUoKHRleHQ6IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLmNsZWFySWNvbiA9ICh0ZXh0Lmxlbmd0aCkgPyB0cnVlIDogZmFsc2VcblxuICAgICAgICBpZiAodGV4dCkge1xuICAgICAgICAgIHRoaXMucmV2aWV3cyA9IE9iamVjdC52YWx1ZXModGhpcy5yZXZpZXdzKS5maWx0ZXIoKF9vYmo6IGFueSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIF9vYmoucmV2aWV3ICYmIF9vYmoucmV2aWV3LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGV4dC50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgfHwgX29iai5maXJzdE5hbWUgJiYgX29iai5maXJzdE5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXh0LnRvTG93ZXJDYXNlKCkpXG4gICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnJldmlld3MgPSBPYmplY3QudmFsdWVzKHRoaXMuZGF0YS5yZXZpZXdzKVxuICAgICAgICB9XG4gICAgICB9KVxuICB9XG5cbiAgaGFuZGxlQ2xvc2VNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpXG4gIH1cblxuICBoYW5kbGVGb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKVxuICB9XG5cbiAgaGFuZGxlQ2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhckljb24gPSBmYWxzZVxuICAgIHRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnXG4gICAgdGhpcy5yZXZpZXdzID0gT2JqZWN0LnZhbHVlcyh0aGlzLmRhdGEucmV2aWV3cylcbiAgfVxuXG4gIGhhbmRsZUNhcGl0YWxpemUoc3RyOiBzdHJpbmcsIHR5cGU/OiBzdHJpbmcpOiBzdHJpbmcge1xuXG4gICAgbGV0IHJldHVyblZhbHVlID0gJydcbiAgICBpZiAoc3RyICYmIHR5cGUgPT09ICduYW1lJykge1xuICAgICAgcmV0dXJuVmFsdWUgPSBzdHIuc3BsaXQoJyAnKS5tYXAoX3N0ciA9PiB7XG4gICAgICAgIHJldHVybiBfc3RyLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgX3N0ci5zbGljZSgxKVxuICAgICAgfSkuam9pbignICcpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVyblZhbHVlID0gc3RyICYmIChzdHIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSkpXG4gICAgfVxuICAgIHJldHVybiByZXR1cm5WYWx1ZVxuICB9XG5cbiAgaGFuZGxlUmV2aWV3c0ZpbHRlcihzdHI6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2hvd0ZpbHRlckluZGljYXRvciA9IHN0clxuICAgIHRoaXMubG9hZExhdGVzdFJldmlld3MuZW1pdChzdHIpXG4gICAgdGhpcy5oYW5kbGVDbGVhcigpXG4gIH1cblxuICBoYW5kbGVMb2FkTW9yZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc3BsYXlMb2FkZXIgPSB0cnVlXG4gICAgdGhpcy5pbml0aWF0ZUxvYWRNb3JlLmVtaXQodGhpcy5zaG93RmlsdGVySW5kaWNhdG9yKVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicmF0aW5nLW1vZGFsLWNvbnRhaW5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IHJhdGluZ3MtY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LTFcIj5cbiAgICAgICAgICAgIDx3cy13aWRnZXQtcmF0aW5nLXN1bW1hcnkgW3JhdGluZ1N1bW1hcnldPVwiZGF0YT8ucmF0aW5nc1wiPjwvd3Mtd2lkZ2V0LXJhdGluZy1zdW1tYXJ5PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImhhbmRsZUNsb3NlTW9kYWwoKVwiID5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHAtNlwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtNFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvbnQtYmFzZSBmb250LWJvbGRcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNob3dGaWx0ZXJJbmRpY2F0b3IgPT09ICdUb3AnXCIgY2xhc3M9XCJub2R0cmFuc2xhdGVcIj57eyAnYXBwdG9jc2luZ2xlcGFnZS50b3BSZXZpZXdzJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNob3dGaWx0ZXJJbmRpY2F0b3IgIT09ICdUb3AnXCIgY2xhc3M9XCJub2R0cmFuc2xhdGVcIj57eyAnYXBwdG9jc2luZ2xlcGFnZS5sYXRlc3RSZXZpZXdzJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IHNlYXJjaC1kaXZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAoY2xpY2spPVwiaGFuZGxlRm9jdXMoKVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5zZWFyY2g8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0ICNzZWFyY2hJbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwic2VhcmNoLWlucHV0IGZsZXhcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaFwiIG1heGxlbmd0aD1cIjUwXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjbGVhckljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKGNsaWNrKT1cImhhbmRsZUNsZWFyKClcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB3LThcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwiZmlsdGVyXCI+ZmlsdGVyX2xpc3Q8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LW1lbnUgI2ZpbHRlcj1cIm1hdE1lbnVcIiB4UG9zaXRpb249XCJiZWZvcmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBjbGFzcz1cInB4LTNcIiBbbmdDbGFzc109XCJ7J2hpZ2hsaWdodEZpbHRlcic6IHNob3dGaWx0ZXJJbmRpY2F0b3IgPT09ICdMYXRlc3QnfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZVJldmlld3NGaWx0ZXIoJ0xhdGVzdCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJub2R0cmFuc2xhdGVcIj57eyAnYXBwdG9jc2luZ2xlcGFnZS5sYXRlc3RSZXZpZXdzJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIGNsYXNzPVwicHgtM1wiIFtuZ0NsYXNzXT1cInsnaGlnaGxpZ2h0RmlsdGVyJzogc2hvd0ZpbHRlckluZGljYXRvciA9PT0gJ1RvcCd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlUmV2aWV3c0ZpbHRlcignVG9wJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5vZHRyYW5zbGF0ZVwiPnt7ICdhcHB0b2NzaW5nbGVwYWdlLnRvcFJldmlld3MnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LW1lbnU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhcmV2aWV3cyB8fCAhcmV2aWV3cy5sZW5ndGhcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciBuby1yZXZpZXdzLWZvdW5kIHRleHQtbGdcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC00IG5vZHRyYW5zbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAnYXBwdG9jc2luZ2xlcGFnZS5ub1Jldmlld3NGb3VuZCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJldmlld3M/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgcmV2aWV3c1wiIGluZmluaXRlU2Nyb2xsIFtpbmZpbml0ZVNjcm9sbERpc3RhbmNlXT1cIjFcIiBbaW5maW5pdGVTY3JvbGxUaHJvdHRsZV09XCIxNTBcIiBbaW5maW5pdGVTY3JvbGxDb250YWluZXJdPVwiJy5yZXZpZXdzJ1wiIFtmcm9tUm9vdF09XCJ0cnVlXCIgW3Njcm9sbFdpbmRvd109XCJmYWxzZVwiIChzY3JvbGxlZCk9XCJoYW5kbGVMb2FkTW9yZSgpXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZWFjaFJldmlldyBvZiByZXZpZXdzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGdhcC0zIHAtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggdGV4dC1zbSBub2R0cmFuc2xhdGVcIj57eyBoYW5kbGVDYXBpdGFsaXplKGVhY2hSZXZpZXc/LnJldmlldywgJ2NvbW1lbnQnKSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBnYXAtMSByYXRpbmctc3RhcnQtdmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+c3RhcjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc20gbm9kdHJhbnNsYXRlXCI+e3sgZWFjaFJldmlldz8ucmF0aW5nIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGdhcC0yIGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzLXdpZGdldC1hdmF0YXItcGhvdG8gW3JhbmRvbUNvbG9yXT1cInRydWVcIiBbZGF0YWxlbl09XCIxXCIgW3NpemVdPVwiJ3JvdW5kLW0nXCIgW3Bob3RvVXJsXT1cImVhY2hSZXZpZXc/LnBob3RvIHx8ICcnXCIgW25hbWVdPVwiZWFjaFJldmlldz8uZmlyc3ROYW1lXCI+PC93cy13aWRnZXQtYXZhdGFyLXBob3RvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc20gbm9kdHJhbnNsYXRlXCI+e3sgaGFuZGxlQ2FwaXRhbGl6ZShlYWNoUmV2aWV3Py5maXJzdE5hbWUudG9Mb3dlckNhc2UoKSwgJ25hbWUnKSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBteC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGVyaW9kXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXNtIG5vZHRyYW5zbGF0ZVwiICpuZ0lmPVwiZWFjaFJldmlldz8uZGF0ZVwiPnt7IGVhY2hSZXZpZXc/LmRhdGUgfCBwaXBlUmVsYXRpdmVUaW1lIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc20gbm9kdHJhbnNsYXRlXCIgKm5nSWY9XCJlYWNoUmV2aWV3Py51cGRhdGVkb25cIj57eyBlYWNoUmV2aWV3Py51cGRhdGVkb24gfCBwaXBlUmVsYXRpdmVUaW1lIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZXBhcmF0b3JcIiAqbmdJZj1cInJldmlld3MubGVuZ3RoID4gKGkgKyAxKVwiID48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGlzcGxheUxvYWRlclwiIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgbXQtNlwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LXNwaW5uZXIgW2RpYW1ldGVyXT1cIjMwXCI+PC9tYXQtc3Bpbm5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICBcbjwvZGl2PlxuXG4iXX0=
1
+ import { Component, ViewChild, Inject, Output, EventEmitter } from '@angular/core';
2
+ import { fromEvent } from 'rxjs';
3
+ import { debounceTime, distinctUntilChanged, map } from 'rxjs/operators';
4
+ import { MAT_LEGACY_DIALOG_DATA as MAT_DIALOG_DATA } from '@angular/material/legacy-dialog';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/material/legacy-dialog";
7
+ import * as i2 from "../content-services/review-component-data.service";
8
+ import * as i3 from "@angular/common";
9
+ import * as i4 from "@angular/material/icon";
10
+ import * as i5 from "@angular/material/menu";
11
+ import * as i6 from "@angular/material/progress-spinner";
12
+ import * as i7 from "../../avatar-photo/avatar-photo.component";
13
+ import * as i8 from "../../rating-summary/rating-summary.component";
14
+ import * as i9 from "ngx-infinite-scroll";
15
+ import * as i10 from "@sunbird-cb/utils-v2";
16
+ import * as i11 from "@ngx-translate/core";
17
+ export class ReviewsContentComponent {
18
+ constructor(dialogRef, reviewDataService, data) {
19
+ this.dialogRef = dialogRef;
20
+ this.reviewDataService = reviewDataService;
21
+ this.data = data;
22
+ this.initiateLoadMore = new EventEmitter();
23
+ this.loadLatestReviews = new EventEmitter();
24
+ this.clearIcon = false;
25
+ this.disableLoadMore = false;
26
+ this.reviews = [];
27
+ this.showFilterIndicator = 'Top';
28
+ this.displayLoader = false;
29
+ this.reviewDataService.getReviewData().subscribe((_review) => {
30
+ this.reviews = _review;
31
+ this.data.reviews = _review;
32
+ });
33
+ }
34
+ ngOnInit() {
35
+ if (this.data && this.data.reviews) {
36
+ this.reviews = Object.values(this.data.reviews);
37
+ }
38
+ }
39
+ ngAfterViewInit() {
40
+ fromEvent(this.searchInput.nativeElement, 'keyup')
41
+ .pipe(
42
+ // get value
43
+ map((event) => {
44
+ return event.target.value.trim();
45
+ }),
46
+ // Time in milliseconds between key events
47
+ debounceTime(150),
48
+ // If previous query is different from current
49
+ distinctUntilChanged())
50
+ // subscription for response
51
+ .subscribe((text) => {
52
+ this.clearIcon = (text.length) ? true : false;
53
+ if (text) {
54
+ this.reviews = Object.values(this.reviews).filter((_obj) => {
55
+ return _obj.review && _obj.review.toLowerCase().includes(text.toLowerCase())
56
+ || _obj.firstName && _obj.firstName.toLowerCase().includes(text.toLowerCase());
57
+ });
58
+ }
59
+ else {
60
+ this.reviews = Object.values(this.data.reviews);
61
+ }
62
+ });
63
+ }
64
+ handleCloseModal() {
65
+ this.dialogRef.close();
66
+ }
67
+ handleFocus() {
68
+ this.searchInput.nativeElement.focus();
69
+ }
70
+ handleClear() {
71
+ this.clearIcon = false;
72
+ this.searchInput.nativeElement.value = '';
73
+ this.reviews = Object.values(this.data.reviews);
74
+ }
75
+ handleCapitalize(str, type) {
76
+ let returnValue = '';
77
+ if (str && type === 'name') {
78
+ returnValue = str.split(' ').map(_str => {
79
+ return _str.charAt(0).toUpperCase() + _str.slice(1);
80
+ }).join(' ');
81
+ }
82
+ else {
83
+ returnValue = str && (str.charAt(0).toUpperCase() + str.slice(1));
84
+ }
85
+ return returnValue;
86
+ }
87
+ handleReviewsFilter(str) {
88
+ this.showFilterIndicator = str;
89
+ this.loadLatestReviews.emit(str);
90
+ this.handleClear();
91
+ }
92
+ handleLoadMore() {
93
+ this.displayLoader = true;
94
+ this.initiateLoadMore.emit(this.showFilterIndicator);
95
+ }
96
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ReviewsContentComponent, deps: [{ token: i1.MatLegacyDialogRef }, { token: i2.ReviewComponentDataService }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
97
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ReviewsContentComponent, selector: "ws-widget-reviews-content", outputs: { initiateLoadMore: "initiateLoadMore", loadLatestReviews: "loadLatestReviews" }, viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"rating-modal-container\">\r\n <div class=\"flex flex-row ratings-container\">\r\n <div class=\"flex-1\">\r\n <ws-widget-rating-summary [ratingSummary]=\"data?.ratings\"></ws-widget-rating-summary>\r\n </div>\r\n <div class=\"flex\">\r\n <mat-icon class=\"cursor-pointer\" (click)=\"handleCloseModal()\" >close</mat-icon>\r\n </div>\r\n </div>\r\n <div class=\"flex flex-col p-6\">\r\n <div class=\"flex flex-col gap-4\">\r\n <div class=\"font-base font-bold\">\r\n <span *ngIf=\"showFilterIndicator === 'Top'\" class=\"nodtranslate\">{{ 'apptocsinglepage.topReviews' | translate }}</span>\r\n <span *ngIf=\"showFilterIndicator !== 'Top'\" class=\"nodtranslate\">{{ 'apptocsinglepage.latestReviews' | translate }}</span>\r\n </div>\r\n <div class=\"flex flex-row gap-3\">\r\n <div class=\"flex-1\">\r\n <div class=\"flex flex-row search-div\">\r\n <mat-icon (click)=\"handleFocus()\" class=\"cursor-pointer\">search</mat-icon>\r\n <input #searchInput type=\"text\" class=\"search-input flex\" placeholder=\"Search\" maxlength=\"50\" />\r\n <ng-container *ngIf=\"clearIcon\">\r\n <mat-icon (click)=\"handleClear()\" class=\"cursor-pointer\">close</mat-icon>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"flex items-center justify-center w-8\">\r\n <mat-icon class=\"cursor-pointer\" [matMenuTriggerFor]=\"filter\">filter_list</mat-icon>\r\n <mat-menu #filter=\"matMenu\" xPosition=\"before\">\r\n <button mat-menu-item class=\"px-3\" [ngClass]=\"{'highlightFilter': showFilterIndicator === 'Latest'}\"\r\n (click)=\"handleReviewsFilter('Latest')\">\r\n <span class=\"nodtranslate\">{{ 'apptocsinglepage.latestReviews' | translate }}</span>\r\n </button>\r\n <button mat-menu-item class=\"px-3\" [ngClass]=\"{'highlightFilter': showFilterIndicator === 'Top'}\"\r\n (click)=\"handleReviewsFilter('Top')\">\r\n <span class=\"nodtranslate\">{{ 'apptocsinglepage.topReviews' | translate }}</span>\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"!reviews || !reviews.length\">\r\n <div class=\"flex justify-center items-center no-reviews-found text-lg\">\r\n <div class=\"p-4 nodtranslate\">\r\n {{ 'apptocsinglepage.noReviewsFound' | translate }}\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"reviews?.length\">\r\n <div class=\"flex flex-col reviews\" infiniteScroll [infiniteScrollDistance]=\"1\" [infiniteScrollThrottle]=\"150\" [infiniteScrollContainer]=\"'.reviews'\" [fromRoot]=\"true\" [scrollWindow]=\"false\" (scrolled)=\"handleLoadMore()\">\r\n <ng-container *ngFor=\"let eachReview of reviews; let i = index\">\r\n <div class=\"flex flex-row gap-3 p-4\">\r\n <div class=\"flex-1\">\r\n <div class=\"flex flex-col gap-4\">\r\n <div class=\"flex flex-row gap-2\">\r\n <div class=\"flex-1\">\r\n <div class=\"flex text-sm nodtranslate\">{{ handleCapitalize(eachReview?.review, 'comment') }}</div>\r\n </div>\r\n <div class=\"flex flex-row gap-1 rating-start-value\">\r\n <mat-icon>star</mat-icon>\r\n <div class=\"text-sm nodtranslate\">{{ eachReview?.rating }}</div>\r\n </div>\r\n </div>\r\n <div class=\"flex flex-row gap-2 items-center\">\r\n <ws-widget-avatar-photo [randomColor]=\"true\" [datalen]=\"1\" [size]=\"'round-m'\" [photoUrl]=\"eachReview?.photo || ''\" [name]=\"eachReview?.firstName\"></ws-widget-avatar-photo>\r\n <div class=\"flex flex-wrap\">\r\n <div class=\"text-sm nodtranslate\">{{ handleCapitalize(eachReview?.firstName.toLowerCase(), 'name') }}</div>\r\n <div class=\"flex items-center mx-2\">\r\n <span class=\"period\"></span>\r\n </div>\r\n <div class=\"text-sm nodtranslate\" *ngIf=\"eachReview?.date\">{{ eachReview?.date | pipeRelativeTime }}</div>\r\n <div class=\"text-sm nodtranslate\" *ngIf=\"eachReview?.updatedon\">{{ eachReview?.updatedon | pipeRelativeTime }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"separator\" *ngIf=\"reviews.length > (i + 1)\" ></div>\r\n </ng-container>\r\n <div *ngIf=\"displayLoader\" class=\"flex items-center justify-center mt-6\">\r\n <mat-spinner [diameter]=\"30\"></mat-spinner>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n \r\n</div>\r\n\r\n", styles: [".search-div{border:1px solid rgba(0,0,0,.16);border-radius:4px;background:#fff}.search-div .mat-icon{padding:8px}.search-div .search-input{padding:8px 0;border:none;border-radius:8px;width:100%;font-family:Lato}.search-div .search-input:focus{outline:none}.search-div .search-input:focus-visible{outline:none!important}.ratings-container{padding:24px;background-color:#1b4ca114}.separator{border-bottom:2px solid rgba(0,0,0,.1)}.reviews{max-height:320px;overflow-y:auto}.rating-start-value mat-icon{color:#ff9800}::ng-deep .mat-menu-panel{min-width:12em!important;padding:8px 0!important;border-radius:12px;margin-top:4px}::ng-deep .mat-menu-panel .mat-menu-content{padding-top:0!important}::ng-deep .mat-menu-panel .mat-menu-content button{padding:0 16px!important}.no-reviews-found{background-color:#fff;margin-top:16px;border-radius:8px;border:none}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i5.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i5.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i7.AvatarPhotoComponent, selector: "ws-widget-avatar-photo", inputs: ["datalen", "photoUrl", "name", "size", "randomColor", "initials", "showBadge"] }, { kind: "component", type: i8.RatingSummaryComponent, selector: "ws-widget-rating-summary", inputs: ["ratingSummary"] }, { kind: "directive", type: i9.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "pipe", type: i10.PipeRelativeTimePipe, name: "pipeRelativeTime" }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }] }); }
98
+ }
99
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ReviewsContentComponent, decorators: [{
100
+ type: Component,
101
+ args: [{ selector: 'ws-widget-reviews-content', template: "<div class=\"rating-modal-container\">\r\n <div class=\"flex flex-row ratings-container\">\r\n <div class=\"flex-1\">\r\n <ws-widget-rating-summary [ratingSummary]=\"data?.ratings\"></ws-widget-rating-summary>\r\n </div>\r\n <div class=\"flex\">\r\n <mat-icon class=\"cursor-pointer\" (click)=\"handleCloseModal()\" >close</mat-icon>\r\n </div>\r\n </div>\r\n <div class=\"flex flex-col p-6\">\r\n <div class=\"flex flex-col gap-4\">\r\n <div class=\"font-base font-bold\">\r\n <span *ngIf=\"showFilterIndicator === 'Top'\" class=\"nodtranslate\">{{ 'apptocsinglepage.topReviews' | translate }}</span>\r\n <span *ngIf=\"showFilterIndicator !== 'Top'\" class=\"nodtranslate\">{{ 'apptocsinglepage.latestReviews' | translate }}</span>\r\n </div>\r\n <div class=\"flex flex-row gap-3\">\r\n <div class=\"flex-1\">\r\n <div class=\"flex flex-row search-div\">\r\n <mat-icon (click)=\"handleFocus()\" class=\"cursor-pointer\">search</mat-icon>\r\n <input #searchInput type=\"text\" class=\"search-input flex\" placeholder=\"Search\" maxlength=\"50\" />\r\n <ng-container *ngIf=\"clearIcon\">\r\n <mat-icon (click)=\"handleClear()\" class=\"cursor-pointer\">close</mat-icon>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"flex items-center justify-center w-8\">\r\n <mat-icon class=\"cursor-pointer\" [matMenuTriggerFor]=\"filter\">filter_list</mat-icon>\r\n <mat-menu #filter=\"matMenu\" xPosition=\"before\">\r\n <button mat-menu-item class=\"px-3\" [ngClass]=\"{'highlightFilter': showFilterIndicator === 'Latest'}\"\r\n (click)=\"handleReviewsFilter('Latest')\">\r\n <span class=\"nodtranslate\">{{ 'apptocsinglepage.latestReviews' | translate }}</span>\r\n </button>\r\n <button mat-menu-item class=\"px-3\" [ngClass]=\"{'highlightFilter': showFilterIndicator === 'Top'}\"\r\n (click)=\"handleReviewsFilter('Top')\">\r\n <span class=\"nodtranslate\">{{ 'apptocsinglepage.topReviews' | translate }}</span>\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"!reviews || !reviews.length\">\r\n <div class=\"flex justify-center items-center no-reviews-found text-lg\">\r\n <div class=\"p-4 nodtranslate\">\r\n {{ 'apptocsinglepage.noReviewsFound' | translate }}\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"reviews?.length\">\r\n <div class=\"flex flex-col reviews\" infiniteScroll [infiniteScrollDistance]=\"1\" [infiniteScrollThrottle]=\"150\" [infiniteScrollContainer]=\"'.reviews'\" [fromRoot]=\"true\" [scrollWindow]=\"false\" (scrolled)=\"handleLoadMore()\">\r\n <ng-container *ngFor=\"let eachReview of reviews; let i = index\">\r\n <div class=\"flex flex-row gap-3 p-4\">\r\n <div class=\"flex-1\">\r\n <div class=\"flex flex-col gap-4\">\r\n <div class=\"flex flex-row gap-2\">\r\n <div class=\"flex-1\">\r\n <div class=\"flex text-sm nodtranslate\">{{ handleCapitalize(eachReview?.review, 'comment') }}</div>\r\n </div>\r\n <div class=\"flex flex-row gap-1 rating-start-value\">\r\n <mat-icon>star</mat-icon>\r\n <div class=\"text-sm nodtranslate\">{{ eachReview?.rating }}</div>\r\n </div>\r\n </div>\r\n <div class=\"flex flex-row gap-2 items-center\">\r\n <ws-widget-avatar-photo [randomColor]=\"true\" [datalen]=\"1\" [size]=\"'round-m'\" [photoUrl]=\"eachReview?.photo || ''\" [name]=\"eachReview?.firstName\"></ws-widget-avatar-photo>\r\n <div class=\"flex flex-wrap\">\r\n <div class=\"text-sm nodtranslate\">{{ handleCapitalize(eachReview?.firstName.toLowerCase(), 'name') }}</div>\r\n <div class=\"flex items-center mx-2\">\r\n <span class=\"period\"></span>\r\n </div>\r\n <div class=\"text-sm nodtranslate\" *ngIf=\"eachReview?.date\">{{ eachReview?.date | pipeRelativeTime }}</div>\r\n <div class=\"text-sm nodtranslate\" *ngIf=\"eachReview?.updatedon\">{{ eachReview?.updatedon | pipeRelativeTime }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"separator\" *ngIf=\"reviews.length > (i + 1)\" ></div>\r\n </ng-container>\r\n <div *ngIf=\"displayLoader\" class=\"flex items-center justify-center mt-6\">\r\n <mat-spinner [diameter]=\"30\"></mat-spinner>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n \r\n</div>\r\n\r\n", styles: [".search-div{border:1px solid rgba(0,0,0,.16);border-radius:4px;background:#fff}.search-div .mat-icon{padding:8px}.search-div .search-input{padding:8px 0;border:none;border-radius:8px;width:100%;font-family:Lato}.search-div .search-input:focus{outline:none}.search-div .search-input:focus-visible{outline:none!important}.ratings-container{padding:24px;background-color:#1b4ca114}.separator{border-bottom:2px solid rgba(0,0,0,.1)}.reviews{max-height:320px;overflow-y:auto}.rating-start-value mat-icon{color:#ff9800}::ng-deep .mat-menu-panel{min-width:12em!important;padding:8px 0!important;border-radius:12px;margin-top:4px}::ng-deep .mat-menu-panel .mat-menu-content{padding-top:0!important}::ng-deep .mat-menu-panel .mat-menu-content button{padding:0 16px!important}.no-reviews-found{background-color:#fff;margin-top:16px;border-radius:8px;border:none}\n"] }]
102
+ }], ctorParameters: function () { return [{ type: i1.MatLegacyDialogRef }, { type: i2.ReviewComponentDataService }, { type: undefined, decorators: [{
103
+ type: Inject,
104
+ args: [MAT_DIALOG_DATA]
105
+ }] }]; }, propDecorators: { searchInput: [{
106
+ type: ViewChild,
107
+ args: ['searchInput', { static: true }]
108
+ }], initiateLoadMore: [{
109
+ type: Output
110
+ }], loadLatestReviews: [{
111
+ type: Output
112
+ }] } });
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV2aWV3cy1jb250ZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcnkvc3VuYmlyZC1jYi90b2Mvc3JjL2xpYi9fY29sbGVjdGlvbi9fY29tbW9uL2NvbnRlbnQtdG9jL3Jldmlld3MtY29udGVudC9yZXZpZXdzLWNvbnRlbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL19jb2xsZWN0aW9uL19jb21tb24vY29udGVudC10b2MvcmV2aWV3cy1jb250ZW50L3Jldmlld3MtY29udGVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUF5QixTQUFTLEVBQUUsTUFBTSxFQUFjLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDckgsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUNoQyxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3hFLE9BQU8sRUFBc0Msc0JBQXNCLElBQUksZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUE7Ozs7Ozs7Ozs7Ozs7QUFZL0gsTUFBTSxPQUFPLHVCQUF1QjtJQVdsQyxZQUNTLFNBQWdELEVBQy9DLGlCQUE2QyxFQUNyQixJQUFTO1FBRmxDLGNBQVMsR0FBVCxTQUFTLENBQXVDO1FBQy9DLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBNEI7UUFDckIsU0FBSSxHQUFKLElBQUksQ0FBSztRQVhqQyxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFBO1FBQ3JDLHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUE7UUFDaEQsY0FBUyxHQUFHLEtBQUssQ0FBQTtRQUNqQixvQkFBZSxHQUFH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IE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgVmlld0NoaWxkLCBJbmplY3QsIEVsZW1lbnRSZWYsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHsgZnJvbUV2ZW50IH0gZnJvbSAncnhqcydcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXHJcbmltcG9ydCB7IE1hdExlZ2FjeURpYWxvZ1JlZiBhcyBNYXREaWFsb2dSZWYsIE1BVF9MRUdBQ1lfRElBTE9HX0RBVEEgYXMgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWRpYWxvZydcclxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXHJcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCdcclxuXHJcbmltcG9ydCB7IFJldmlld0NvbXBvbmVudERhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vY29udGVudC1zZXJ2aWNlcy9yZXZpZXctY29tcG9uZW50LWRhdGEuc2VydmljZSdcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnd3Mtd2lkZ2V0LXJldmlld3MtY29udGVudCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Jldmlld3MtY29udGVudC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcmV2aWV3cy1jb250ZW50LmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgUmV2aWV3c0NvbnRlbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG5cclxuICBAVmlld0NoaWxkKCdzZWFyY2hJbnB1dCcsIHsgc3RhdGljOiB0cnVlIH0pIHNlYXJjaElucHV0ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PlxyXG4gIEBPdXRwdXQoKSBpbml0aWF0ZUxvYWRNb3JlID0gbmV3IEV2ZW50RW1pdHRlcigpXHJcbiAgQE91dHB1dCgpIGxvYWRMYXRlc3RSZXZpZXdzID0gbmV3IEV2ZW50RW1pdHRlcigpXHJcbiAgY2xlYXJJY29uID0gZmFsc2VcclxuICBkaXNhYmxlTG9hZE1vcmUgPSBmYWxzZVxyXG4gIHJldmlld3M6IGFueVtdID0gW11cclxuICBzaG93RmlsdGVySW5kaWNhdG9yID0gJ1RvcCdcclxuICBkaXNwbGF5TG9hZGVyID0gZmFsc2VcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8UmV2aWV3c0NvbnRlbnRDb21wb25lbnQ+LFxyXG4gICAgcHJpdmF0ZSByZXZpZXdEYXRhU2VydmljZTogUmV2aWV3Q29tcG9uZW50RGF0YVNlcnZpY2UsXHJcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueVxyXG4gICkge1xyXG4gICAgdGhpcy5yZXZpZXdEYXRhU2VydmljZS5nZXRSZXZpZXdEYXRhKCkuc3Vic2NyaWJlKChfcmV2aWV3OiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5yZXZpZXdzID0gX3Jldmlld1xyXG4gICAgICB0aGlzLmRhdGEucmV2aWV3cyA9IF9yZXZpZXdcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICh0aGlzLmRhdGEgJiYgdGhpcy5kYXRhLnJldmlld3MpIHtcclxuICAgICAgdGhpcy5yZXZpZXdzID0gT2JqZWN0LnZhbHVlcyh0aGlzLmRhdGEucmV2aWV3cylcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGZyb21FdmVudCh0aGlzLnNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQsICdrZXl1cCcpXHJcbiAgICAucGlwZShcclxuICAgICAgICAvLyBnZXQgdmFsdWVcclxuICAgICAgICBtYXAoKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiBldmVudC50YXJnZXQudmFsdWUudHJpbSgpXHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgLy8gVGltZSBpbiBtaWxsaXNlY29uZHMgYmV0d2VlbiBrZXkgZXZlbnRzXHJcbiAgICAgICAgZGVib3VuY2VUaW1lKDE1MCksXHJcbiAgICAgICAgLy8gSWYgcHJldmlvdXMgcXVlcnkgaXMgZGlmZmVyZW50IGZyb20gY3VycmVudFxyXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgIClcclxuICAgICAgLy8gc3Vic2NyaXB0aW9uIGZvciByZXNwb25zZVxyXG4gICAgICAuc3Vic2NyaWJlKCh0ZXh0OiBzdHJpbmcpID0+IHtcclxuICAgICAgICB0aGlzLmNsZWFySWNvbiA9ICh0ZXh0Lmxlbmd0aCkgPyB0cnVlIDogZmFsc2VcclxuXHJcbiAgICAgICAgaWYgKHRleHQpIHtcclxuICAgICAgICAgIHRoaXMucmV2aWV3cyA9IE9iamVjdC52YWx1ZXModGhpcy5yZXZpZXdzKS5maWx0ZXIoKF9vYmo6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gX29iai5yZXZpZXcgJiYgX29iai5yZXZpZXcudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXh0LnRvTG93ZXJDYXNlKCkpXHJcbiAgICAgICAgICAgIHx8IF9vYmouZmlyc3ROYW1lICYmIF9vYmouZmlyc3ROYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGV4dC50b0xvd2VyQ2FzZSgpKVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5yZXZpZXdzID0gT2JqZWN0LnZhbHVlcyh0aGlzLmRhdGEucmV2aWV3cylcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBoYW5kbGVDbG9zZU1vZGFsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlRm9jdXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlQ2xlYXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNsZWFySWNvbiA9IGZhbHNlXHJcbiAgICB0aGlzLnNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJ1xyXG4gICAgdGhpcy5yZXZpZXdzID0gT2JqZWN0LnZhbHVlcyh0aGlzLmRhdGEucmV2aWV3cylcclxuICB9XHJcblxyXG4gIGhhbmRsZUNhcGl0YWxpemUoc3RyOiBzdHJpbmcsIHR5cGU/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG5cclxuICAgIGxldCByZXR1cm5WYWx1ZSA9ICcnXHJcbiAgICBpZiAoc3RyICYmIHR5cGUgPT09ICduYW1lJykge1xyXG4gICAgICByZXR1cm5WYWx1ZSA9IHN0ci5zcGxpdCgnICcpLm1hcChfc3RyID0+IHtcclxuICAgICAgICByZXR1cm4gX3N0ci5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIF9zdHIuc2xpY2UoMSlcclxuICAgICAgfSkuam9pbignICcpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm5WYWx1ZSA9IHN0ciAmJiAoc3RyLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyLnNsaWNlKDEpKVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJldHVyblZhbHVlXHJcbiAgfVxyXG5cclxuICBoYW5kbGVSZXZpZXdzRmlsdGVyKHN0cjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnNob3dGaWx0ZXJJbmRpY2F0b3IgPSBzdHJcclxuICAgIHRoaXMubG9hZExhdGVzdFJldmlld3MuZW1pdChzdHIpXHJcbiAgICB0aGlzLmhhbmRsZUNsZWFyKClcclxuICB9XHJcblxyXG4gIGhhbmRsZUxvYWRNb3JlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNwbGF5TG9hZGVyID0gdHJ1ZVxyXG4gICAgdGhpcy5pbml0aWF0ZUxvYWRNb3JlLmVtaXQodGhpcy5zaG93RmlsdGVySW5kaWNhdG9yKVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwicmF0aW5nLW1vZGFsLWNvbnRhaW5lclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgcmF0aW5ncy1jb250YWluZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC0xXCI+XHJcbiAgICAgICAgICAgIDx3cy13aWRnZXQtcmF0aW5nLXN1bW1hcnkgW3JhdGluZ1N1bW1hcnldPVwiZGF0YT8ucmF0aW5nc1wiPjwvd3Mtd2lkZ2V0LXJhdGluZy1zdW1tYXJ5PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4XCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImhhbmRsZUNsb3NlTW9kYWwoKVwiID5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHAtNlwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC00XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb250LWJhc2UgZm9udC1ib2xkXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNob3dGaWx0ZXJJbmRpY2F0b3IgPT09ICdUb3AnXCIgY2xhc3M9XCJub2R0cmFuc2xhdGVcIj57eyAnYXBwdG9jc2luZ2xlcGFnZS50b3BSZXZpZXdzJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2hvd0ZpbHRlckluZGljYXRvciAhPT0gJ1RvcCdcIiBjbGFzcz1cIm5vZHRyYW5zbGF0ZVwiPnt7ICdhcHB0b2NzaW5nbGVwYWdlLmxhdGVzdFJldmlld3MnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBzZWFyY2gtZGl2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAoY2xpY2spPVwiaGFuZGxlRm9jdXMoKVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5zZWFyY2g8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgI3NlYXJjaElucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJzZWFyY2gtaW5wdXQgZmxleFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoXCIgbWF4bGVuZ3RoPVwiNTBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2xlYXJJY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKGNsaWNrKT1cImhhbmRsZUNsZWFyKClcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHctOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cImZpbHRlclwiPmZpbHRlcl9saXN0PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LW1lbnUgI2ZpbHRlcj1cIm1hdE1lbnVcIiB4UG9zaXRpb249XCJiZWZvcmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIGNsYXNzPVwicHgtM1wiIFtuZ0NsYXNzXT1cInsnaGlnaGxpZ2h0RmlsdGVyJzogc2hvd0ZpbHRlckluZGljYXRvciA9PT0gJ0xhdGVzdCd9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVSZXZpZXdzRmlsdGVyKCdMYXRlc3QnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJub2R0cmFuc2xhdGVcIj57eyAnYXBwdG9jc2luZ2xlcGFnZS5sYXRlc3RSZXZpZXdzJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBjbGFzcz1cInB4LTNcIiBbbmdDbGFzc109XCJ7J2hpZ2hsaWdodEZpbHRlcic6IHNob3dGaWx0ZXJJbmRpY2F0b3IgPT09ICdUb3AnfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlUmV2aWV3c0ZpbHRlcignVG9wJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibm9kdHJhbnNsYXRlXCI+e3sgJ2FwcHRvY3NpbmdsZXBhZ2UudG9wUmV2aWV3cycgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFyZXZpZXdzIHx8ICFyZXZpZXdzLmxlbmd0aFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXIgbm8tcmV2aWV3cy1mb3VuZCB0ZXh0LWxnXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC00IG5vZHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7ICdhcHB0b2NzaW5nbGVwYWdlLm5vUmV2aWV3c0ZvdW5kJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXZpZXdzPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgcmV2aWV3c1wiIGluZmluaXRlU2Nyb2xsIFtpbmZpbml0ZVNjcm9sbERpc3RhbmNlXT1cIjFcIiBbaW5maW5pdGVTY3JvbGxUaHJvdHRsZV09XCIxNTBcIiBbaW5maW5pdGVTY3JvbGxDb250YWluZXJdPVwiJy5yZXZpZXdzJ1wiIFtmcm9tUm9vdF09XCJ0cnVlXCIgW3Njcm9sbFdpbmRvd109XCJmYWxzZVwiIChzY3JvbGxlZCk9XCJoYW5kbGVMb2FkTW9yZSgpXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlYWNoUmV2aWV3IG9mIHJldmlld3M7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBnYXAtMyBwLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCB0ZXh0LXNtIG5vZHRyYW5zbGF0ZVwiPnt7IGhhbmRsZUNhcGl0YWxpemUoZWFjaFJldmlldz8ucmV2aWV3LCAnY29tbWVudCcpIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBnYXAtMSByYXRpbmctc3RhcnQtdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5zdGFyPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXNtIG5vZHRyYW5zbGF0ZVwiPnt7IGVhY2hSZXZpZXc/LnJhdGluZyB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBnYXAtMiBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzLXdpZGdldC1hdmF0YXItcGhvdG8gW3JhbmRvbUNvbG9yXT1cInRydWVcIiBbZGF0YWxlbl09XCIxXCIgW3NpemVdPVwiJ3JvdW5kLW0nXCIgW3Bob3RvVXJsXT1cImVhY2hSZXZpZXc/LnBob3RvIHx8ICcnXCIgW25hbWVdPVwiZWFjaFJldmlldz8uZmlyc3ROYW1lXCI+PC93cy13aWRnZXQtYXZhdGFyLXBob3RvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXdyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXNtIG5vZHRyYW5zbGF0ZVwiPnt7IGhhbmRsZUNhcGl0YWxpemUoZWFjaFJldmlldz8uZmlyc3ROYW1lLnRvTG93ZXJDYXNlKCksICduYW1lJykgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBteC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwZXJpb2RcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXNtIG5vZHRyYW5zbGF0ZVwiICpuZ0lmPVwiZWFjaFJldmlldz8uZGF0ZVwiPnt7IGVhY2hSZXZpZXc/LmRhdGUgfCBwaXBlUmVsYXRpdmVUaW1lIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zbSBub2R0cmFuc2xhdGVcIiAqbmdJZj1cImVhY2hSZXZpZXc/LnVwZGF0ZWRvblwiPnt7IGVhY2hSZXZpZXc/LnVwZGF0ZWRvbiB8IHBpcGVSZWxhdGl2ZVRpbWUgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlcGFyYXRvclwiICpuZ0lmPVwicmV2aWV3cy5sZW5ndGggPiAoaSArIDEpXCIgPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGlzcGxheUxvYWRlclwiIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgbXQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtc3Bpbm5lciBbZGlhbWV0ZXJdPVwiMzBcIj48L21hdC1zcGlubmVyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICBcclxuPC9kaXY+XHJcblxyXG4iXX0=