@coreui/angular-pro 5.0.4 → 5.1.0

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 (277) hide show
  1. package/esm2022/lib/accordion/accordion/accordion.component.mjs +3 -3
  2. package/esm2022/lib/accordion/accordion-button/accordion-button.directive.mjs +3 -3
  3. package/esm2022/lib/accordion/accordion-item/accordion-item.component.mjs +3 -3
  4. package/esm2022/lib/accordion/accordion.module.mjs +4 -4
  5. package/esm2022/lib/accordion/accordion.service.mjs +3 -3
  6. package/esm2022/lib/alert/alert-heading.directive.mjs +3 -3
  7. package/esm2022/lib/alert/alert-link.directive.mjs +3 -3
  8. package/esm2022/lib/alert/alert.component.mjs +3 -3
  9. package/esm2022/lib/alert/alert.module.mjs +4 -4
  10. package/esm2022/lib/avatar/avatar.component.mjs +3 -3
  11. package/esm2022/lib/avatar/avatar.module.mjs +4 -4
  12. package/esm2022/lib/backdrop/backdrop.service.mjs +3 -3
  13. package/esm2022/lib/badge/badge.component.mjs +3 -3
  14. package/esm2022/lib/badge/badge.module.mjs +4 -4
  15. package/esm2022/lib/breadcrumb/breadcrumb/breadcrumb.component.mjs +3 -3
  16. package/esm2022/lib/breadcrumb/breadcrumb-item/breadcrumb-item.component.mjs +3 -3
  17. package/esm2022/lib/breadcrumb/breadcrumb-router/breadcrumb-router.component.mjs +3 -3
  18. package/esm2022/lib/breadcrumb/breadcrumb-router/breadcrumb-router.service.mjs +3 -3
  19. package/esm2022/lib/breadcrumb/breadcrumb.module.mjs +4 -4
  20. package/esm2022/lib/button/button-close.directive.mjs +3 -3
  21. package/esm2022/lib/button/button.directive.mjs +3 -3
  22. package/esm2022/lib/button/button.module.mjs +4 -4
  23. package/esm2022/lib/button-group/button-group/button-group.component.mjs +3 -3
  24. package/esm2022/lib/button-group/button-group.module.mjs +4 -4
  25. package/esm2022/lib/button-group/button-toolbar/button-toolbar.component.mjs +3 -3
  26. package/esm2022/lib/calendar/calendar/calendar-class-view.pipe.mjs +3 -3
  27. package/esm2022/lib/calendar/calendar/calendar.component.mjs +3 -3
  28. package/esm2022/lib/calendar/calendar-month/calendar-class-day.pipe.mjs +3 -3
  29. package/esm2022/lib/calendar/calendar-month/calendar-class-month.pipe.mjs +3 -3
  30. package/esm2022/lib/calendar/calendar-month/calendar-class-row.pipe.mjs +3 -3
  31. package/esm2022/lib/calendar/calendar-month/calendar-class-year.pipe.mjs +3 -3
  32. package/esm2022/lib/calendar/calendar-month/calendar-day-title.pipe.mjs +3 -3
  33. package/esm2022/lib/calendar/calendar-month/calendar-day.directive.mjs +3 -3
  34. package/esm2022/lib/calendar/calendar-month/calendar-day.pipe.mjs +3 -3
  35. package/esm2022/lib/calendar/calendar-month/calendar-month.component.mjs +3 -3
  36. package/esm2022/lib/calendar/calendar-month/calendar-row.directive.mjs +3 -3
  37. package/esm2022/lib/calendar/calendar-month/calendar-weekday.pipe.mjs +3 -3
  38. package/esm2022/lib/calendar/calendar-navigation/calendar-navigation.component.mjs +3 -3
  39. package/esm2022/lib/calendar/calendar.module.mjs +4 -4
  40. package/esm2022/lib/calendar/calendar.service.mjs +3 -3
  41. package/esm2022/lib/callout/callout.component.mjs +3 -3
  42. package/esm2022/lib/callout/callout.module.mjs +4 -4
  43. package/esm2022/lib/card/card-body.component.mjs +3 -3
  44. package/esm2022/lib/card/card-footer.component.mjs +3 -3
  45. package/esm2022/lib/card/card-group.component.mjs +3 -3
  46. package/esm2022/lib/card/card-header-actions.component.mjs +3 -3
  47. package/esm2022/lib/card/card-header.component.mjs +3 -3
  48. package/esm2022/lib/card/card-img-overlay/card-img-overlay.component.mjs +3 -3
  49. package/esm2022/lib/card/card-img.directive.mjs +3 -3
  50. package/esm2022/lib/card/card-link.directive.mjs +3 -3
  51. package/esm2022/lib/card/card-subtitle.directive.mjs +3 -3
  52. package/esm2022/lib/card/card-text.directive.mjs +3 -3
  53. package/esm2022/lib/card/card-title.directive.mjs +3 -3
  54. package/esm2022/lib/card/card.component.mjs +3 -3
  55. package/esm2022/lib/card/card.module.mjs +4 -4
  56. package/esm2022/lib/carousel/carousel/carousel.component.mjs +3 -3
  57. package/esm2022/lib/carousel/carousel-caption/carousel-caption.component.mjs +3 -3
  58. package/esm2022/lib/carousel/carousel-control/carousel-control.component.mjs +3 -3
  59. package/esm2022/lib/carousel/carousel-indicators/carousel-indicators.component.mjs +3 -3
  60. package/esm2022/lib/carousel/carousel-inner/carousel-inner.component.mjs +3 -3
  61. package/esm2022/lib/carousel/carousel-item/carousel-item.component.mjs +3 -3
  62. package/esm2022/lib/carousel/carousel-state.mjs +3 -3
  63. package/esm2022/lib/carousel/carousel.config.mjs +3 -3
  64. package/esm2022/lib/carousel/carousel.module.mjs +4 -4
  65. package/esm2022/lib/carousel/carousel.service.mjs +3 -3
  66. package/esm2022/lib/collapse/collapse.directive.mjs +3 -3
  67. package/esm2022/lib/collapse/collapse.module.mjs +4 -4
  68. package/esm2022/lib/coreui.types.mjs +1 -1
  69. package/esm2022/lib/date-picker/date-picker.component.mjs +3 -3
  70. package/esm2022/lib/date-picker/date-picker.module.mjs +4 -4
  71. package/esm2022/lib/date-range-picker/date-range-picker/custom-range-key.pipe.mjs +3 -3
  72. package/esm2022/lib/date-range-picker/date-range-picker/date-range-picker.component.mjs +3 -3
  73. package/esm2022/lib/date-range-picker/date-range-picker.module.mjs +4 -4
  74. package/esm2022/lib/dropdown/dropdown/dropdown.component.mjs +6 -6
  75. package/esm2022/lib/dropdown/dropdown-close/dropdown-close.directive.mjs +3 -3
  76. package/esm2022/lib/dropdown/dropdown-divider/dropdown-divider.directive.mjs +3 -3
  77. package/esm2022/lib/dropdown/dropdown-header/dropdown-header.directive.mjs +3 -3
  78. package/esm2022/lib/dropdown/dropdown-item/dropdown-item-plain.directive.mjs +3 -3
  79. package/esm2022/lib/dropdown/dropdown-item/dropdown-item.directive.mjs +3 -3
  80. package/esm2022/lib/dropdown/dropdown-menu/dropdown-menu.directive.mjs +3 -3
  81. package/esm2022/lib/dropdown/dropdown.module.mjs +4 -4
  82. package/esm2022/lib/dropdown/dropdown.service.mjs +3 -3
  83. package/esm2022/lib/element-cover/element-cover.component.mjs +3 -3
  84. package/esm2022/lib/element-cover/element-cover.module.mjs +4 -4
  85. package/esm2022/lib/footer/footer.component.mjs +3 -3
  86. package/esm2022/lib/footer/footer.module.mjs +4 -4
  87. package/esm2022/lib/form/form/form.directive.mjs +3 -3
  88. package/esm2022/lib/form/form-check/form-check-input.directive.mjs +3 -3
  89. package/esm2022/lib/form/form-check/form-check-label.directive.mjs +3 -3
  90. package/esm2022/lib/form/form-check/form-check.component.mjs +3 -3
  91. package/esm2022/lib/form/form-control/form-control.directive.mjs +3 -3
  92. package/esm2022/lib/form/form-feedback/form-feedback.component.mjs +3 -3
  93. package/esm2022/lib/form/form-floating/form-floating.directive.mjs +3 -3
  94. package/esm2022/lib/form/form-label/form-label.directive.mjs +3 -3
  95. package/esm2022/lib/form/form-select/form-select.directive.mjs +3 -3
  96. package/esm2022/lib/form/form-text/form-text.directive.mjs +3 -3
  97. package/esm2022/lib/form/form.module.mjs +4 -4
  98. package/esm2022/lib/form/input-group/input-group.component.mjs +3 -3
  99. package/esm2022/lib/form/input-group-text/input-group-text.directive.mjs +3 -3
  100. package/esm2022/lib/grid/col.component.mjs +3 -3
  101. package/esm2022/lib/grid/col.directive.mjs +3 -3
  102. package/esm2022/lib/grid/container.component.mjs +3 -3
  103. package/esm2022/lib/grid/grid.module.mjs +4 -4
  104. package/esm2022/lib/grid/gutter.directive.mjs +3 -3
  105. package/esm2022/lib/grid/row.component.mjs +3 -3
  106. package/esm2022/lib/grid/row.directive.mjs +3 -3
  107. package/esm2022/lib/header/header/header.component.mjs +3 -3
  108. package/esm2022/lib/header/header-brand/header-brand.component.mjs +3 -3
  109. package/esm2022/lib/header/header-divider/header-divider.component.mjs +3 -3
  110. package/esm2022/lib/header/header-nav/header-nav.component.mjs +3 -3
  111. package/esm2022/lib/header/header-text/header-text.component.mjs +3 -3
  112. package/esm2022/lib/header/header-toggler/header-toggler.directive.mjs +3 -3
  113. package/esm2022/lib/header/header.module.mjs +4 -4
  114. package/esm2022/lib/image/img.directive.mjs +3 -3
  115. package/esm2022/lib/image/img.module.mjs +4 -4
  116. package/esm2022/lib/list-group/list-group-item.directive.mjs +3 -3
  117. package/esm2022/lib/list-group/list-group.directive.mjs +3 -3
  118. package/esm2022/lib/list-group/list-group.module.mjs +4 -4
  119. package/esm2022/lib/loading-button/loading-button.component.mjs +3 -3
  120. package/esm2022/lib/loading-button/loading-button.module.mjs +4 -4
  121. package/esm2022/lib/modal/modal/modal.component.mjs +3 -3
  122. package/esm2022/lib/modal/modal-body/modal-body.component.mjs +3 -3
  123. package/esm2022/lib/modal/modal-content/modal-content.component.mjs +3 -3
  124. package/esm2022/lib/modal/modal-dialog/modal-dialog.component.mjs +3 -3
  125. package/esm2022/lib/modal/modal-dismiss/modal-toggle.directive.mjs +3 -3
  126. package/esm2022/lib/modal/modal-footer/modal-footer.component.mjs +3 -3
  127. package/esm2022/lib/modal/modal-header/modal-header.component.mjs +3 -3
  128. package/esm2022/lib/modal/modal-title/modal-title.directive.mjs +3 -3
  129. package/esm2022/lib/modal/modal.module.mjs +4 -4
  130. package/esm2022/lib/modal/modal.service.mjs +3 -3
  131. package/esm2022/lib/multi-select/multi-select/multi-select-search.directive.mjs +3 -3
  132. package/esm2022/lib/multi-select/multi-select/multi-select.component.mjs +3 -3
  133. package/esm2022/lib/multi-select/multi-select-native-select/multi-select-native-select.component.mjs +3 -3
  134. package/esm2022/lib/multi-select/multi-select-optgroup/multi-select-optgroup-label.component.mjs +3 -3
  135. package/esm2022/lib/multi-select/multi-select-optgroup/multi-select-optgroup.component.mjs +3 -3
  136. package/esm2022/lib/multi-select/multi-select-option/multi-select-option.component.mjs +3 -3
  137. package/esm2022/lib/multi-select/multi-select-tag/multi-select-tag.component.mjs +3 -3
  138. package/esm2022/lib/multi-select/multi-select.module.mjs +4 -4
  139. package/esm2022/lib/multi-select/multi-select.service.mjs +3 -3
  140. package/esm2022/lib/nav/nav-item.component.mjs +3 -3
  141. package/esm2022/lib/nav/nav-link.directive.mjs +3 -3
  142. package/esm2022/lib/nav/nav.component.mjs +3 -3
  143. package/esm2022/lib/nav/nav.module.mjs +4 -4
  144. package/esm2022/lib/navbar/navbar-brand/navbar-brand.directive.mjs +3 -3
  145. package/esm2022/lib/navbar/navbar-nav/navbar-nav.component.mjs +3 -3
  146. package/esm2022/lib/navbar/navbar-text/navbar-text.component.mjs +3 -3
  147. package/esm2022/lib/navbar/navbar-toggler/navbar-toggler.directive.mjs +3 -3
  148. package/esm2022/lib/navbar/navbar.component.mjs +3 -3
  149. package/esm2022/lib/navbar/navbar.module.mjs +4 -4
  150. package/esm2022/lib/offcanvas/offcanvas/offcanvas.component.mjs +3 -3
  151. package/esm2022/lib/offcanvas/offcanvas-body/offcanvas-body.component.mjs +3 -3
  152. package/esm2022/lib/offcanvas/offcanvas-header/offcanvas-header.component.mjs +3 -3
  153. package/esm2022/lib/offcanvas/offcanvas-title/offcanvas-title.directive.mjs +3 -3
  154. package/esm2022/lib/offcanvas/offcanvas-toggle/offcanvas-toggle.directive.mjs +3 -3
  155. package/esm2022/lib/offcanvas/offcanvas.module.mjs +4 -4
  156. package/esm2022/lib/offcanvas/offcanvas.service.mjs +3 -3
  157. package/esm2022/lib/pagination/page-item/page-item.component.mjs +3 -3
  158. package/esm2022/lib/pagination/page-item/page-item.directive.mjs +3 -3
  159. package/esm2022/lib/pagination/page-link/page-link.directive.mjs +3 -3
  160. package/esm2022/lib/pagination/pagination/pagination.component.mjs +3 -3
  161. package/esm2022/lib/pagination/pagination.module.mjs +4 -4
  162. package/esm2022/lib/placeholder/placeholder-animation.directive.mjs +3 -3
  163. package/esm2022/lib/placeholder/placeholder.directive.mjs +3 -3
  164. package/esm2022/lib/placeholder/placeholder.module.mjs +4 -4
  165. package/esm2022/lib/popover/popover/popover.component.mjs +3 -3
  166. package/esm2022/lib/popover/popover.directive.mjs +3 -3
  167. package/esm2022/lib/popover/popover.module.mjs +4 -4
  168. package/esm2022/lib/progress/progress-bar.component.mjs +3 -3
  169. package/esm2022/lib/progress/progress-bar.directive.mjs +3 -3
  170. package/esm2022/lib/progress/progress-stacked.component.mjs +3 -3
  171. package/esm2022/lib/progress/progress.component.mjs +3 -3
  172. package/esm2022/lib/progress/progress.module.mjs +4 -4
  173. package/esm2022/lib/rating/index.mjs +2 -0
  174. package/esm2022/lib/rating/public_api.mjs +3 -0
  175. package/esm2022/lib/rating/rating-item-label/rating-item-label.component.mjs +40 -0
  176. package/esm2022/lib/rating/rating.component.mjs +353 -0
  177. package/esm2022/lib/rating/rating.module.mjs +16 -0
  178. package/esm2022/lib/services/class-toggle.service.mjs +3 -3
  179. package/esm2022/lib/services/color-mode.service.mjs +3 -3
  180. package/esm2022/lib/services/in-memory-storage.service.mjs +3 -3
  181. package/esm2022/lib/services/intersection.service.mjs +3 -3
  182. package/esm2022/lib/services/listeners.service.mjs +25 -14
  183. package/esm2022/lib/services/local-storage.service.mjs +3 -3
  184. package/esm2022/lib/shared/element-ref.directive.mjs +18 -0
  185. package/esm2022/lib/shared/html-attr.directive.mjs +3 -3
  186. package/esm2022/lib/shared/public_api.mjs +3 -2
  187. package/esm2022/lib/shared/shared.module.mjs +9 -8
  188. package/esm2022/lib/shared/template-id.directive.mjs +9 -9
  189. package/esm2022/lib/shared/theme.directive.mjs +3 -3
  190. package/esm2022/lib/sidebar/sidebar/sidebar.component.mjs +3 -3
  191. package/esm2022/lib/sidebar/sidebar-backdrop/sidebar-backdrop.service.mjs +3 -3
  192. package/esm2022/lib/sidebar/sidebar-brand/sidebar-brand.component.mjs +3 -3
  193. package/esm2022/lib/sidebar/sidebar-footer/sidebar-footer.component.mjs +3 -3
  194. package/esm2022/lib/sidebar/sidebar-header/sidebar-header.component.mjs +3 -3
  195. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-badge.pipe.mjs +3 -3
  196. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-divider.component.mjs +3 -3
  197. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-group.service.mjs +3 -3
  198. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-icon.pipe.mjs +3 -3
  199. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-item-class.pipe.mjs +3 -3
  200. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-label.component.mjs +3 -3
  201. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-link.component.mjs +6 -6
  202. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-link.pipe.mjs +3 -3
  203. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-title.component.mjs +3 -3
  204. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav.component.mjs +6 -6
  205. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav.service.mjs +6 -6
  206. package/esm2022/lib/sidebar/sidebar-toggle/sidebar-toggle.directive.mjs +3 -3
  207. package/esm2022/lib/sidebar/sidebar-toggler/sidebar-toggler.directive.mjs +3 -3
  208. package/esm2022/lib/sidebar/sidebar.module.mjs +4 -4
  209. package/esm2022/lib/sidebar/sidebar.service.mjs +3 -3
  210. package/esm2022/lib/smart-pagination/smart-pagination.component.mjs +3 -3
  211. package/esm2022/lib/smart-pagination/smart-pagination.module.mjs +4 -4
  212. package/esm2022/lib/smart-table/smart-table/smart-table.component.mjs +3 -3
  213. package/esm2022/lib/smart-table/smart-table-column-filter/smart-table-column-filter.component.mjs +3 -3
  214. package/esm2022/lib/smart-table/smart-table-filter/filter-input.directive.mjs +3 -3
  215. package/esm2022/lib/smart-table/smart-table-filter/smart-table-filter.component.mjs +3 -3
  216. package/esm2022/lib/smart-table/smart-table-head/smart-table-column-label.pipe.mjs +3 -3
  217. package/esm2022/lib/smart-table/smart-table-head/smart-table-head.component.mjs +3 -3
  218. package/esm2022/lib/smart-table/smart-table-items-per-page-selector/smart-table-items-per-page-selector.component.mjs +3 -3
  219. package/esm2022/lib/smart-table/smart-table.module.mjs +4 -4
  220. package/esm2022/lib/spinner/spinner.component.mjs +3 -3
  221. package/esm2022/lib/spinner/spinner.module.mjs +4 -4
  222. package/esm2022/lib/table/table-active.directive.mjs +3 -3
  223. package/esm2022/lib/table/table-color.directive.mjs +3 -3
  224. package/esm2022/lib/table/table.directive.mjs +3 -3
  225. package/esm2022/lib/table/table.module.mjs +4 -4
  226. package/esm2022/lib/tabs/tab-content/tab-content.component.mjs +3 -3
  227. package/esm2022/lib/tabs/tab-content-ref.directive.mjs +3 -3
  228. package/esm2022/lib/tabs/tab-pane/tab-pane.component.mjs +3 -3
  229. package/esm2022/lib/tabs/tab.service.mjs +3 -3
  230. package/esm2022/lib/tabs/tabs.module.mjs +4 -4
  231. package/esm2022/lib/time-picker/time-picker-roll-col/time-picker-roll-am-pm.component.mjs +6 -6
  232. package/esm2022/lib/time-picker/time-picker-roll-col/time-picker-roll-col.component.mjs +6 -6
  233. package/esm2022/lib/time-picker/time-picker.component.mjs +3 -3
  234. package/esm2022/lib/time-picker/time-picker.module.mjs +4 -4
  235. package/esm2022/lib/toast/toast/toast.component.mjs +3 -3
  236. package/esm2022/lib/toast/toast-body/toast-body.component.mjs +3 -3
  237. package/esm2022/lib/toast/toast-close.directive.mjs +3 -3
  238. package/esm2022/lib/toast/toast-header/toast-header.component.mjs +3 -3
  239. package/esm2022/lib/toast/toast.module.mjs +4 -4
  240. package/esm2022/lib/toast/toaster/toaster-host.directive.mjs +3 -3
  241. package/esm2022/lib/toast/toaster/toaster.component.mjs +3 -3
  242. package/esm2022/lib/toast/toaster/toaster.service.mjs +3 -3
  243. package/esm2022/lib/tooltip/tooltip/tooltip.component.mjs +3 -3
  244. package/esm2022/lib/tooltip/tooltip.directive.mjs +77 -81
  245. package/esm2022/lib/tooltip/tooltip.module.mjs +4 -4
  246. package/esm2022/lib/utilities/align.directive.mjs +3 -3
  247. package/esm2022/lib/utilities/bg-color.directive.mjs +3 -3
  248. package/esm2022/lib/utilities/border.directive.mjs +3 -3
  249. package/esm2022/lib/utilities/rounded.directive.mjs +3 -3
  250. package/esm2022/lib/utilities/shadow-on-scroll.directive.mjs +3 -3
  251. package/esm2022/lib/utilities/text-bg-color.directive.mjs +3 -3
  252. package/esm2022/lib/utilities/text-color.directive.mjs +3 -3
  253. package/esm2022/lib/utilities/utilities.module.mjs +4 -4
  254. package/esm2022/lib/widget/widget-stat-a/widget-stat-a.component.mjs +3 -3
  255. package/esm2022/lib/widget/widget-stat-b/widget-stat-b.component.mjs +3 -3
  256. package/esm2022/lib/widget/widget-stat-c/widget-stat-c.component.mjs +3 -3
  257. package/esm2022/lib/widget/widget-stat-d/widget-stat-d.component.mjs +3 -3
  258. package/esm2022/lib/widget/widget-stat-e/widget-stat-e.component.mjs +3 -3
  259. package/esm2022/lib/widget/widget-stat-f/widget-stat-f.component.mjs +3 -3
  260. package/esm2022/lib/widget/widget.module.mjs +4 -4
  261. package/esm2022/public-api.mjs +2 -1
  262. package/fesm2022/coreui-angular-pro.mjs +4226 -3808
  263. package/fesm2022/coreui-angular-pro.mjs.map +1 -1
  264. package/lib/coreui.types.d.ts +1 -1
  265. package/lib/rating/index.d.ts +1 -0
  266. package/lib/rating/public_api.d.ts +2 -0
  267. package/lib/rating/rating-item-label/rating-item-label.component.d.ts +13 -0
  268. package/lib/rating/rating.component.d.ts +131 -0
  269. package/lib/rating/rating.module.d.ts +7 -0
  270. package/lib/services/listeners.service.d.ts +2 -3
  271. package/lib/shared/element-ref.directive.d.ts +7 -0
  272. package/lib/shared/public_api.d.ts +2 -1
  273. package/lib/shared/shared.module.d.ts +5 -4
  274. package/lib/shared/template-id.directive.d.ts +1 -2
  275. package/lib/tooltip/tooltip.directive.d.ts +30 -16
  276. package/package.json +3 -3
  277. package/public-api.d.ts +1 -0
@@ -0,0 +1,40 @@
1
+ import { ChangeDetectionStrategy, Component, effect, ElementRef, inject, input, Renderer2, signal } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class RatingItemLabelComponent {
4
+ constructor() {
5
+ this.#elementRef = inject(ElementRef);
6
+ this.#renderer = inject(Renderer2);
7
+ this.label = input('');
8
+ this.value = input.required();
9
+ this.focusable = signal(false);
10
+ this.focusableEffect = effect(() => {
11
+ this.#renderer.setAttribute(this.#elementRef.nativeElement, 'tabindex', this.focusable() ? '0' : '-1');
12
+ });
13
+ }
14
+ #elementRef;
15
+ #renderer;
16
+ // @HostBinding('attr.tabindex')
17
+ // get tabIndex() {
18
+ // // console.log('active', this.active(), this.active() ? '0' : '-1')
19
+ // console.log('focusable', this.value(), this.focusable(), this.focusable() ? '0' : '-1');
20
+ // return this.focusable() ? '0' : '-1';
21
+ // }
22
+ focus(origin) {
23
+ this.#elementRef.nativeElement.focus();
24
+ }
25
+ getLabel() {
26
+ return this.label() || this.value().toString();
27
+ }
28
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: RatingItemLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
29
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.8", type: RatingItemLabelComponent, isStandalone: true, selector: "c-rating-item-label", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: '<ng-content />', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
30
+ }
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: RatingItemLabelComponent, decorators: [{
32
+ type: Component,
33
+ args: [{
34
+ selector: 'c-rating-item-label',
35
+ standalone: true,
36
+ template: '<ng-content />',
37
+ changeDetection: ChangeDetectionStrategy.OnPush,
38
+ }]
39
+ }] });
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0aW5nLWl0ZW0tbGFiZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9yYXRpbmcvcmF0aW5nLWl0ZW0tbGFiZWwvcmF0aW5nLWl0ZW0tbGFiZWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBU3pILE1BQU0sT0FBTyx3QkFBd0I7SUFOckM7UUFPVyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqQyxjQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlCLFVBQUssR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEIsVUFBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztRQUNqQyxjQUFTLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRW5DLG9CQUFlLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUM1QixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pHLENBQUMsQ0FBQyxDQUFDO0tBZ0JKO0lBeEJVLFdBQVcsQ0FBc0I7SUFDakMsU0FBUyxDQUFxQjtJQVN2QyxnQ0FBZ0M7SUFDaEMsbUJBQW1CO0lBQ25CLHdFQUF3RTtJQUN4RSw2RkFBNkY7SUFDN0YsMENBQTBDO0lBQzFDLElBQUk7SUFFSixLQUFLLENBQUMsTUFBb0I7UUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDakQsQ0FBQzs4R0F4QlUsd0JBQXdCO2tHQUF4Qix3QkFBd0IsMFVBSHpCLGdCQUFnQjs7MkZBR2Ysd0JBQXdCO2tCQU5wQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBlZmZlY3QsIEVsZW1lbnRSZWYsIGluamVjdCwgaW5wdXQsIFJlbmRlcmVyMiwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb2N1c2FibGVPcHRpb24sIEZvY3VzT3JpZ2luIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjLXJhdGluZy1pdGVtLWxhYmVsJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudCAvPicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBSYXRpbmdJdGVtTGFiZWxDb21wb25lbnQgaW1wbGVtZW50cyBGb2N1c2FibGVPcHRpb24ge1xuICByZWFkb25seSAjZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgcmVhZG9ubHkgI3JlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XG4gIHJlYWRvbmx5IGxhYmVsID0gaW5wdXQoJycpO1xuICByZWFkb25seSB2YWx1ZSA9IGlucHV0LnJlcXVpcmVkPG51bWJlcj4oKTtcbiAgcmVhZG9ubHkgZm9jdXNhYmxlID0gc2lnbmFsKGZhbHNlKTtcblxuICBmb2N1c2FibGVFZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xuICAgIHRoaXMuI3JlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLiNlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICd0YWJpbmRleCcsIHRoaXMuZm9jdXNhYmxlKCkgPyAnMCcgOiAnLTEnKTtcbiAgfSk7XG5cbiAgLy8gQEhvc3RCaW5kaW5nKCdhdHRyLnRhYmluZGV4JylcbiAgLy8gZ2V0IHRhYkluZGV4KCkge1xuICAvLyAgIC8vIGNvbnNvbGUubG9nKCdhY3RpdmUnLCB0aGlzLmFjdGl2ZSgpLCB0aGlzLmFjdGl2ZSgpID8gJzAnIDogJy0xJylcbiAgLy8gICBjb25zb2xlLmxvZygnZm9jdXNhYmxlJywgdGhpcy52YWx1ZSgpLCB0aGlzLmZvY3VzYWJsZSgpLCB0aGlzLmZvY3VzYWJsZSgpID8gJzAnIDogJy0xJyk7XG4gIC8vICAgcmV0dXJuIHRoaXMuZm9jdXNhYmxlKCkgPyAnMCcgOiAnLTEnO1xuICAvLyB9XG5cbiAgZm9jdXMob3JpZ2luPzogRm9jdXNPcmlnaW4pOiB2b2lkIHtcbiAgICB0aGlzLiNlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIGdldExhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubGFiZWwoKSB8fCB0aGlzLnZhbHVlKCkudG9TdHJpbmcoKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,353 @@
1
+ import { FocusKeyManager } from '@angular/cdk/a11y';
2
+ import { booleanAttribute, ChangeDetectionStrategy, Component, computed, contentChildren, DestroyRef, effect, ElementRef, forwardRef, HostBinding, HostListener, inject, input, model, numberAttribute, output, signal, untracked, viewChildren, } from '@angular/core';
3
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
+ import { NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';
5
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
6
+ import { fromEvent, merge, takeWhile } from 'rxjs';
7
+ import { filter, tap } from 'rxjs/operators';
8
+ import { TooltipDirective } from '../tooltip';
9
+ import { ElementRefDirective, TemplateIdDirective } from '../shared';
10
+ import { RatingItemLabelComponent } from './rating-item-label/rating-item-label.component';
11
+ import * as i0 from "@angular/core";
12
+ export const coerceStringArray = (value) => Array.isArray(value) ? [...value] : [value];
13
+ export const coerceRatingPrecision = (value) => [1, 0.5, 0.25].includes(numberAttribute(value)) ? numberAttribute(value) : 1;
14
+ export const coerceNumber = (value) => Number(value ?? 0);
15
+ export class RatingComponent {
16
+ constructor() {
17
+ this.#destroyRef = inject(DestroyRef);
18
+ this.#elementRef = inject(ElementRef);
19
+ /**
20
+ * The default icon to display when the item is selected.
21
+ * @type: string | string[]
22
+ */
23
+ this.activeIcon = input([], {
24
+ transform: coerceStringArray,
25
+ });
26
+ /**
27
+ * Enables the clearing upon clicking the selected item again.
28
+ * @type: boolean
29
+ * @default: false
30
+ */
31
+ this.allowClear = input(false, { transform: booleanAttribute });
32
+ /**
33
+ * Toggle the disabled state for the component.
34
+ * @type: boolean
35
+ * @default: false
36
+ */
37
+ this.disabled = input(false, { transform: booleanAttribute });
38
+ this.#disabledState = signal(this.disabled());
39
+ /**
40
+ * If enabled, only the currently selected icon will be visibly highlighted.
41
+ * @type: boolean
42
+ * @default: false
43
+ */
44
+ this.highlightOnlySelected = input(false, { transform: booleanAttribute });
45
+ /**
46
+ * The default icon to display when the item is not selected.
47
+ * @type: string | string[]
48
+ */
49
+ this.icon = input([], {
50
+ transform: coerceStringArray,
51
+ });
52
+ /**
53
+ * Specifies the total number of stars to be displayed in the star rating component. This property determines the scale of the rating,
54
+ * such as out of 5 stars, 10 stars, etc.
55
+ * @type: number
56
+ * @default: 5
57
+ */
58
+ this.itemCount = input(5, { transform: numberAttribute });
59
+ /**
60
+ * Minimum increment value change allowed.
61
+ * @type: number
62
+ * @default: 1
63
+ */
64
+ this.precision = input(1, { transform: numberAttribute });
65
+ /**
66
+ * Allows to click fractions
67
+ * @type: boolean
68
+ * @default: false
69
+ */
70
+ // readonly precisionClick = input(false, { transform: booleanAttribute });
71
+ /**
72
+ * Toggle the readonly state for the component.
73
+ * @type: boolean
74
+ * @default: false
75
+ */
76
+ this.readOnly = input(false, { transform: booleanAttribute });
77
+ /**
78
+ * Size the component small, large, or custom if you define custom icons with custom height.
79
+ * @type: 'sm' | 'lg' | 'custom' | undefined
80
+ * @default: undefined
81
+ */
82
+ this.size = input(undefined);
83
+ /**
84
+ * Enable tooltips with default values or set specific labels for each icon.
85
+ * @type: boolean | string[] | undefined
86
+ * @default: undefined
87
+ */
88
+ this.tooltips = input(undefined);
89
+ /**
90
+ * The `value` attribute of component.
91
+ * @type: number | null
92
+ * @default: null
93
+ * Emits `valueChange` on value change
94
+ */
95
+ this.value = model(null);
96
+ /**
97
+ * Event emitted on hoverValue change.
98
+ * @type: number | null
99
+ */
100
+ this.hoverValue = signal(null);
101
+ this.hoverValueChange = output();
102
+ this.hoverValueEffect = effect(() => {
103
+ this.hoverValueChange.emit(this.hoverValue());
104
+ if (!this.hoverValue()) {
105
+ this.hoveredItem.set(undefined);
106
+ }
107
+ }, { allowSignalWrites: true });
108
+ this.#cleared = signal(false);
109
+ this.hoveredItem = signal(undefined);
110
+ this.tooltipValue = signal(null);
111
+ this.ratingDisabled = computed(() => this.disabled() || this.readOnly() || this.#disabledState());
112
+ this.ratingDisabledEffect = effect(() => {
113
+ if (!this.ratingDisabled()) {
114
+ const focusIn$ = fromEvent(this.#elementRef.nativeElement, 'focusin');
115
+ const focusOut$ = fromEvent(this.#elementRef.nativeElement, 'focusout');
116
+ const mouseLeave$ = fromEvent(this.#elementRef.nativeElement, 'mouseleave');
117
+ merge(focusIn$, focusOut$, mouseLeave$)
118
+ .pipe(filter((event) => !this.ratingDisabled()), tap(($event) => {
119
+ switch ($event.type) {
120
+ case 'focusin':
121
+ this.onTouched();
122
+ break;
123
+ case 'focusout':
124
+ case 'mouseleave':
125
+ this.hoverValue.set(null);
126
+ break;
127
+ }
128
+ }), takeWhile(() => !this.ratingDisabled()), takeUntilDestroyed(this.#destroyRef))
129
+ .subscribe();
130
+ }
131
+ });
132
+ this.contentTemplates = contentChildren(TemplateIdDirective);
133
+ this.iconTemplates = computed(() => {
134
+ const templateArray = this.contentTemplates().map((child) => {
135
+ return [[child.id], child.templateRef];
136
+ });
137
+ return Object.fromEntries(templateArray);
138
+ });
139
+ this.numberOfSubItems = computed(() => {
140
+ return parseInt((1 / this.precision()).toFixed());
141
+ });
142
+ this.ratingItems = computed(() => {
143
+ return Array.from({ length: this.itemCount() }, (_, itemIndex) => {
144
+ if (this.numberOfSubItems() === 1) {
145
+ return [itemIndex + 1];
146
+ }
147
+ return Array.from({ length: this.numberOfSubItems() }, (_, subIndex) => itemIndex + (subIndex + 1) * this.precision());
148
+ });
149
+ });
150
+ this.ratingItemLabels = viewChildren(RatingItemLabelComponent);
151
+ this.ratingItemLabelsEffect = effect(() => {
152
+ if (untracked(this.ratingDisabled)) {
153
+ return;
154
+ }
155
+ this.#focusKeyManager = new FocusKeyManager(this.ratingItemLabels())
156
+ .withHorizontalOrientation('ltr')
157
+ .withWrap();
158
+ const activeItemIndex = this.ratingItems()
159
+ .flat()
160
+ .findIndex((value) => value === coerceNumber(this.value() ?? 0));
161
+ this.#focusKeyManager?.updateActiveItem(activeItemIndex < 0 ? 0 : activeItemIndex);
162
+ this.#focusKeyManager.tabOut
163
+ .pipe(tap((x) => {
164
+ const activeItemIndex = untracked(this.ratingItems)
165
+ .flat()
166
+ .findIndex((value) => value === coerceNumber(untracked(this.value) ?? 0));
167
+ this.#focusKeyManager.updateActiveItem(activeItemIndex === -1 ? 0 : activeItemIndex);
168
+ this.updateFocusableItems();
169
+ }), takeUntilDestroyed(this.#destroyRef))
170
+ .subscribe();
171
+ this.#focusKeyManager.change
172
+ .pipe(tap((value) => {
173
+ this.ratingItemLabels().forEach((label, index) => {
174
+ label.focusable.set(index === this.#focusKeyManager.activeItemIndex);
175
+ if (index === this.#focusKeyManager.activeItemIndex) {
176
+ const value = untracked(label.value);
177
+ this.handleClick(value);
178
+ }
179
+ });
180
+ }), takeUntilDestroyed(this.#destroyRef))
181
+ .subscribe();
182
+ }, { allowSignalWrites: true });
183
+ this.onChange = (value) => { };
184
+ this.onTouched = () => { };
185
+ // keep it at the bottom of the code
186
+ this.valueEffect = effect(() => {
187
+ const ratingValue = this.value();
188
+ this.onChange(ratingValue);
189
+ if (untracked(this.ratingDisabled)) {
190
+ return;
191
+ }
192
+ if (untracked(this.#cleared)) {
193
+ this.#cleared.set(false);
194
+ return;
195
+ }
196
+ const activeItemIndex = this.ratingItems()
197
+ .flat()
198
+ .findIndex((value) => value === coerceNumber(ratingValue ?? 0));
199
+ this.#focusKeyManager?.updateActiveItem(activeItemIndex < 0 ? 0 : activeItemIndex);
200
+ this.updateFocusableItems();
201
+ }, { allowSignalWrites: true });
202
+ }
203
+ #destroyRef;
204
+ #elementRef;
205
+ #disabledState;
206
+ #cleared;
207
+ #focusKeyManager;
208
+ get hostClasses() {
209
+ return {
210
+ rating: true,
211
+ [`rating-${this.size()}`]: this.size(),
212
+ disabled: this.disabled() || this.#disabledState(),
213
+ readonly: this.readOnly(),
214
+ };
215
+ }
216
+ get ariaValueNow() {
217
+ return this.value();
218
+ }
219
+ get ariaValueMax() {
220
+ return this.itemCount();
221
+ }
222
+ get role() {
223
+ return 'radiogroup';
224
+ }
225
+ onKeydown($event) {
226
+ if (this.ratingDisabled()) {
227
+ return false;
228
+ }
229
+ if (['Space', 'Enter'].includes($event.code)) {
230
+ $event.preventDefault();
231
+ const item = this.ratingItemLabels().find((label, index) => index === this.#focusKeyManager?.activeItemIndex);
232
+ this.handleClick(item?.value() ?? -1);
233
+ return;
234
+ }
235
+ if (['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown'].includes($event.key)) {
236
+ this.#focusKeyManager.onKeydown($event);
237
+ return;
238
+ }
239
+ if (['Tab'].includes($event.key)) {
240
+ this.#focusKeyManager?.tabOut.next();
241
+ }
242
+ return;
243
+ }
244
+ registerOnChange(fn) {
245
+ this.onChange = fn;
246
+ }
247
+ registerOnTouched(fn) {
248
+ this.onTouched = fn;
249
+ }
250
+ setDisabledState(isDisabled) {
251
+ this.#disabledState.set(isDisabled);
252
+ }
253
+ writeValue(value) {
254
+ this.value.set(value);
255
+ }
256
+ isItemActive(value) {
257
+ const localValue = this.hoverValue() ?? this.value() ?? -1;
258
+ return this.highlightOnlySelected() ? localValue === value : localValue >= value;
259
+ }
260
+ notLastItemStyle(value) {
261
+ return {
262
+ zIndex: this.numberOfSubItems() - value,
263
+ position: 'absolute',
264
+ width: `${this.precision() * (value + 1) * 100}%`,
265
+ overflow: 'hidden',
266
+ opacity: 0.1,
267
+ };
268
+ }
269
+ handleFocusIn($event, itemValue) {
270
+ this.handleMouseEnter($event, itemValue);
271
+ }
272
+ handleClick(value) {
273
+ if (this.ratingDisabled()) {
274
+ return;
275
+ }
276
+ if (this.allowClear() && value === this.value()) {
277
+ this.#cleared.set(true);
278
+ this.value.set(null);
279
+ this.hoverValue.set(null);
280
+ }
281
+ else {
282
+ this.value.set(value);
283
+ }
284
+ }
285
+ handleMouseEnter($event, value) {
286
+ if (this.ratingDisabled()) {
287
+ return;
288
+ }
289
+ this.hoverValue.set(null);
290
+ this.hoverValue.set(value);
291
+ this.tooltipValue.set(value);
292
+ }
293
+ getTooltipValue(index) {
294
+ if (!this.hoverValue() || this.hoveredItem() !== index) {
295
+ return undefined;
296
+ }
297
+ if (Array.isArray(this.tooltips())) {
298
+ const tooltips = this.tooltips();
299
+ return tooltips[index];
300
+ }
301
+ return this.precision()
302
+ ? this.tooltipValue()?.toString() ?? ''
303
+ : this.ratingItems()
304
+ ? (this.ratingItems()[index].at(-1) ?? '').toString()
305
+ : '';
306
+ }
307
+ updateFocusableItems() {
308
+ this.ratingItemLabels().forEach((label, index) => {
309
+ label.focusable.set(index === this.#focusKeyManager?.activeItemIndex);
310
+ });
311
+ }
312
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: RatingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
313
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: RatingComponent, isStandalone: true, selector: "c-rating", inputs: { activeIcon: { classPropertyName: "activeIcon", publicName: "activeIcon", isSignal: true, isRequired: false, transformFunction: null }, allowClear: { classPropertyName: "allowClear", publicName: "allowClear", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, highlightOnlySelected: { classPropertyName: "highlightOnlySelected", publicName: "highlightOnlySelected", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, itemCount: { classPropertyName: "itemCount", publicName: "itemCount", isSignal: true, isRequired: false, transformFunction: null }, precision: { classPropertyName: "precision", publicName: "precision", isSignal: true, isRequired: false, transformFunction: null }, readOnly: { classPropertyName: "readOnly", publicName: "readOnly", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, tooltips: { classPropertyName: "tooltips", publicName: "tooltips", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", hoverValueChange: "hoverValueChange" }, host: { listeners: { "keydown": "onKeydown($event)" }, properties: { "class": "this.hostClasses", "attr.aria-valuenow": "this.ariaValueNow", "attr.aria-valuemax": "this.ariaValueMax", "attr.role": "this.role" } }, providers: [
314
+ {
315
+ provide: NG_VALUE_ACCESSOR,
316
+ useExisting: forwardRef(() => RatingComponent),
317
+ multi: true,
318
+ },
319
+ ], queries: [{ propertyName: "contentTemplates", predicate: TemplateIdDirective, isSignal: true }], viewQueries: [{ propertyName: "ratingItemLabels", predicate: RatingItemLabelComponent, descendants: true, isSignal: true }], exportAs: ["cRating"], ngImport: i0, template: "@for (item of ratingItems(); track item; let itemIndex = $index, last = $last) {\n @if (tooltips()) {\n <div\n class=\"rating-item\"\n [cTooltip]=\"getTooltipValue(itemIndex)\"\n [cTooltipTrigger]=\"['hover', 'focusin']\"\n (mouseenter)=\"hoveredItem.set(itemIndex)\"\n (focusin)=\"hoveredItem.set(itemIndex)\"\n >\n <ng-container *ngTemplateOutlet=\"ratingItemLabel; context: { $implicit: item, itemIndex }\" />\n </div>\n } @else {\n <div class=\"rating-item\">\n <ng-container *ngTemplateOutlet=\"ratingItemLabel; context: { $implicit: item, itemIndex }\" />\n </div>\n }\n}\n\n<ng-template let-item let-itemIndex=\"itemIndex\" #ratingItemLabel>\n @for (itemValue of item; track radioIndex; let radioIndex = $index, last = $last) {\n <c-rating-item-label\n class=\"rating-item-label d-inline-block\"\n role=\"radio\"\n (click)=\"handleClick(itemValue)\"\n (focus)=\"handleFocusIn($event, itemValue)\"\n [ngClass]=\"{ active: isItemActive(itemValue) }\"\n (mouseenter)=\"handleMouseEnter($event, itemValue)\"\n [ngStyle]=\"radioIndex + 1 < numberOfSubItems() ? notLastItemStyle(radioIndex) : {}\"\n [value]=\"itemValue\"\n [attr.aria-label]=\"itemValue\"\n [attr.aria-checked]=\"itemValue === value()\"\n >\n @if (iconTemplates()[icon()[itemIndex] ?? icon()]) {\n <ng-container *ngTemplateOutlet=\"customIconTemplate; context: { $implicit: icon()?.[itemIndex] ?? icon() }\" />\n } @else {\n <ng-container *ngTemplateOutlet=\"defaultIconTemplate\" />\n }\n @if (iconTemplates()[activeIcon()[itemIndex] ?? activeIcon()]) {\n <ng-container *ngTemplateOutlet=\"customIconActiveTemplate; context: { $implicit: activeIcon()?.[itemIndex] ?? activeIcon() }\" />\n }\n </c-rating-item-label>\n }\n</ng-template>\n\n<ng-template #tooltipContent>\n <span>{{ hoverValue() }}</span>\n</ng-template>\n\n<ng-template #defaultIconTemplate>\n <div class=\"rating-item-icon\"></div>\n</ng-template>\n\n<ng-template #customIconTemplate let-icon>\n <div class=\"rating-item-custom-icon\">\n <ng-container *ngTemplateOutlet=\"iconTemplates()?.[icon] || defaultIconTemplate\" />\n </div>\n</ng-template>\n\n<ng-template #customIconActiveTemplate let-icon>\n <div class=\"rating-item-custom-icon-active\">\n <ng-container *ngTemplateOutlet=\"iconTemplates()?.[icon] || customIconTemplate\" />\n </div>\n</ng-template>\n", styles: [":host{display:inline-flex}:is(:host.disabled,:host.readonly) .rating-item-label{cursor:default}\n"], dependencies: [{ kind: "directive", type: i0.forwardRef(() => NgClass), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(() => NgStyle), selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i0.forwardRef(() => NgTemplateOutlet), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i0.forwardRef(() => TooltipDirective), selector: "[cTooltip]", inputs: ["cTooltip", "cTooltipOptions", "cTooltipPlacement", "cTooltipRef", "cTooltipTrigger", "cTooltipVisible"], outputs: ["cTooltipVisibleChange"], exportAs: ["cTooltip"] }, { kind: "component", type: i0.forwardRef(() => RatingItemLabelComponent), selector: "c-rating-item-label", inputs: ["label", "value"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
320
+ }
321
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: RatingComponent, decorators: [{
322
+ type: Component,
323
+ args: [{ selector: 'c-rating', exportAs: 'cRating', standalone: true, imports: [
324
+ NgClass,
325
+ NgStyle,
326
+ NgTemplateOutlet,
327
+ forwardRef(() => TooltipDirective),
328
+ ElementRefDirective,
329
+ RatingItemLabelComponent,
330
+ ], providers: [
331
+ {
332
+ provide: NG_VALUE_ACCESSOR,
333
+ useExisting: forwardRef(() => RatingComponent),
334
+ multi: true,
335
+ },
336
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "@for (item of ratingItems(); track item; let itemIndex = $index, last = $last) {\n @if (tooltips()) {\n <div\n class=\"rating-item\"\n [cTooltip]=\"getTooltipValue(itemIndex)\"\n [cTooltipTrigger]=\"['hover', 'focusin']\"\n (mouseenter)=\"hoveredItem.set(itemIndex)\"\n (focusin)=\"hoveredItem.set(itemIndex)\"\n >\n <ng-container *ngTemplateOutlet=\"ratingItemLabel; context: { $implicit: item, itemIndex }\" />\n </div>\n } @else {\n <div class=\"rating-item\">\n <ng-container *ngTemplateOutlet=\"ratingItemLabel; context: { $implicit: item, itemIndex }\" />\n </div>\n }\n}\n\n<ng-template let-item let-itemIndex=\"itemIndex\" #ratingItemLabel>\n @for (itemValue of item; track radioIndex; let radioIndex = $index, last = $last) {\n <c-rating-item-label\n class=\"rating-item-label d-inline-block\"\n role=\"radio\"\n (click)=\"handleClick(itemValue)\"\n (focus)=\"handleFocusIn($event, itemValue)\"\n [ngClass]=\"{ active: isItemActive(itemValue) }\"\n (mouseenter)=\"handleMouseEnter($event, itemValue)\"\n [ngStyle]=\"radioIndex + 1 < numberOfSubItems() ? notLastItemStyle(radioIndex) : {}\"\n [value]=\"itemValue\"\n [attr.aria-label]=\"itemValue\"\n [attr.aria-checked]=\"itemValue === value()\"\n >\n @if (iconTemplates()[icon()[itemIndex] ?? icon()]) {\n <ng-container *ngTemplateOutlet=\"customIconTemplate; context: { $implicit: icon()?.[itemIndex] ?? icon() }\" />\n } @else {\n <ng-container *ngTemplateOutlet=\"defaultIconTemplate\" />\n }\n @if (iconTemplates()[activeIcon()[itemIndex] ?? activeIcon()]) {\n <ng-container *ngTemplateOutlet=\"customIconActiveTemplate; context: { $implicit: activeIcon()?.[itemIndex] ?? activeIcon() }\" />\n }\n </c-rating-item-label>\n }\n</ng-template>\n\n<ng-template #tooltipContent>\n <span>{{ hoverValue() }}</span>\n</ng-template>\n\n<ng-template #defaultIconTemplate>\n <div class=\"rating-item-icon\"></div>\n</ng-template>\n\n<ng-template #customIconTemplate let-icon>\n <div class=\"rating-item-custom-icon\">\n <ng-container *ngTemplateOutlet=\"iconTemplates()?.[icon] || defaultIconTemplate\" />\n </div>\n</ng-template>\n\n<ng-template #customIconActiveTemplate let-icon>\n <div class=\"rating-item-custom-icon-active\">\n <ng-container *ngTemplateOutlet=\"iconTemplates()?.[icon] || customIconTemplate\" />\n </div>\n</ng-template>\n", styles: [":host{display:inline-flex}:is(:host.disabled,:host.readonly) .rating-item-label{cursor:default}\n"] }]
337
+ }], propDecorators: { hostClasses: [{
338
+ type: HostBinding,
339
+ args: ['class']
340
+ }], ariaValueNow: [{
341
+ type: HostBinding,
342
+ args: ['attr.aria-valuenow']
343
+ }], ariaValueMax: [{
344
+ type: HostBinding,
345
+ args: ['attr.aria-valuemax']
346
+ }], role: [{
347
+ type: HostBinding,
348
+ args: ['attr.role']
349
+ }], onKeydown: [{
350
+ type: HostListener,
351
+ args: ['keydown', ['$event']]
352
+ }] } });
353
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0aW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmV1aS1hbmd1bGFyL3NyYy9saWIvcmF0aW5nL3JhdGluZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL3JhdGluZy9yYXRpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsZUFBZSxFQUNmLFVBQVUsRUFDVixNQUFNLEVBQ04sVUFBVSxFQUNWLFVBQVUsRUFDVixXQUFXLEVBQ1gsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsS0FBSyxFQUNMLGVBQWUsRUFDZixNQUFNLEVBQ04sTUFBTSxFQUNOLFNBQVMsRUFDVCxZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRSxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNyRSxPQUFPLEVBQUUs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QUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQztnQkFDOUMsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLDJEQWtKMkMsbUJBQW1CLGtGQXlCdEIsd0JBQXdCLHVGQ3JPbkUsdzZFQStEQSwrS0RwQkksT0FBTyx5R0FDUCxPQUFPLGdHQUNQLGdCQUFnQix5S0FDQyxnQkFBZ0IsMlBBRWpDLHdCQUF3Qjs7MkZBYWYsZUFBZTtrQkF2QjNCLFNBQVM7K0JBQ0UsVUFBVSxZQUNWLFNBQVMsY0FDUCxJQUFJLFdBQ1A7d0JBQ1AsT0FBTzt3QkFDUCxPQUFPO3dCQUNQLGdCQUFnQjt3QkFDaEIsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDO3dCQUNsQyxtQkFBbUI7d0JBQ25CLHdCQUF3QjtxQkFDekIsYUFHVTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQzs0QkFDOUMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0YsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU07OEJBNk4zQyxXQUFXO3NCQURkLFdBQVc7dUJBQUMsT0FBTztnQkFXaEIsWUFBWTtzQkFEZixXQUFXO3VCQUFDLG9CQUFvQjtnQkFNN0IsWUFBWTtzQkFEZixXQUFXO3VCQUFDLG9CQUFvQjtnQkFNN0IsSUFBSTtzQkFEUCxXQUFXO3VCQUFDLFdBQVc7Z0JBTXhCLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c0tleU1hbmFnZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQge1xuICBib29sZWFuQXR0cmlidXRlLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgY29udGVudENoaWxkcmVuLFxuICBEZXN0cm95UmVmLFxuICBlZmZlY3QsXG4gIEVsZW1lbnRSZWYsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIElucHV0U2lnbmFsV2l0aFRyYW5zZm9ybSxcbiAgbW9kZWwsXG4gIG51bWJlckF0dHJpYnV0ZSxcbiAgb3V0cHV0LFxuICBzaWduYWwsXG4gIHVudHJhY2tlZCxcbiAgdmlld0NoaWxkcmVuLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IE5nQ2xhc3MsIE5nU3R5bGUsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBtZXJnZSwgdGFrZVdoaWxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICcuLi90b29sdGlwJztcbmltcG9ydCB7IEVsZW1lbnRSZWZEaXJlY3RpdmUsIFRlbXBsYXRlSWREaXJlY3RpdmUgfSBmcm9tICcuLi9zaGFyZWQnO1xuaW1wb3J0IHsgUmF0aW5nSXRlbUxhYmVsQ29tcG9uZW50IH0gZnJvbSAnLi9yYXRpbmctaXRlbS1sYWJlbC9yYXRpbmctaXRlbS1sYWJlbC5jb21wb25lbnQnO1xuXG5leHBvcnQgY29uc3QgY29lcmNlU3RyaW5nQXJyYXkgPSAodmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdKTogc3RyaW5nW10gPT5cbiAgQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyBbLi4udmFsdWVdIDogW3ZhbHVlXTtcbmV4cG9ydCBjb25zdCBjb2VyY2VSYXRpbmdQcmVjaXNpb24gPSAodmFsdWU6IG51bWJlciB8IHN0cmluZyk6IG51bWJlciA9PlxuICBbMSwgMC41LCAwLjI1XS5pbmNsdWRlcyhudW1iZXJBdHRyaWJ1dGUodmFsdWUpKSA/IG51bWJlckF0dHJpYnV0ZSh2YWx1ZSkgOiAxO1xuZXhwb3J0IGNvbnN0IGNvZXJjZU51bWJlciA9ICh2YWx1ZTogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCk6IG51bWJlciA9PiBOdW1iZXIodmFsdWUgPz8gMCk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2MtcmF0aW5nJyxcbiAgZXhwb3J0QXM6ICdjUmF0aW5nJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE5nQ2xhc3MsXG4gICAgTmdTdHlsZSxcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIGZvcndhcmRSZWYoKCkgPT4gVG9vbHRpcERpcmVjdGl2ZSksXG4gICAgRWxlbWVudFJlZkRpcmVjdGl2ZSxcbiAgICBSYXRpbmdJdGVtTGFiZWxDb21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9yYXRpbmcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vcmF0aW5nLmNvbXBvbmVudC5zY3NzJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBSYXRpbmdDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFJhdGluZ0NvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgcmVhZG9ubHkgI2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gIHJlYWRvbmx5ICNlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCBpY29uIHRvIGRpc3BsYXkgd2hlbiB0aGUgaXRlbSBpcyBzZWxlY3RlZC5cbiAgICogQHR5cGU6IHN0cmluZyB8IHN0cmluZ1tdXG4gICAqL1xuICByZWFkb25seSBhY3RpdmVJY29uOiBJbnB1dFNpZ25hbFdpdGhUcmFuc2Zvcm08c3RyaW5nW10sIHN0cmluZyB8IHN0cmluZ1tdPiA9IGlucHV0KFtdLCB7XG4gICAgdHJhbnNmb3JtOiBjb2VyY2VTdHJpbmdBcnJheSxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgdGhlIGNsZWFyaW5nIHVwb24gY2xpY2tpbmcgdGhlIHNlbGVjdGVkIGl0ZW0gYWdhaW4uXG4gICAqIEB0eXBlOiBib29sZWFuXG4gICAqIEBkZWZhdWx0OiBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dDbGVhciA9IGlucHV0KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblxuICAvKipcbiAgICogVG9nZ2xlIHRoZSBkaXNhYmxlZCBzdGF0ZSBmb3IgdGhlIGNvbXBvbmVudC5cbiAgICogQHR5cGU6IGJvb2xlYW5cbiAgICogQGRlZmF1bHQ6IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBkaXNhYmxlZCA9IGlucHV0KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcbiAgcmVhZG9ubHkgI2Rpc2FibGVkU3RhdGUgPSBzaWduYWwodGhpcy5kaXNhYmxlZCgpKTtcblxuICAvKipcbiAgICogSWYgZW5hYmxlZCwgb25seSB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGljb24gd2lsbCBiZSB2aXNpYmx5IGhpZ2hsaWdodGVkLlxuICAgKiBAdHlwZTogYm9vbGVhblxuICAgKiBAZGVmYXVsdDogZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGhpZ2hsaWdodE9ubHlTZWxlY3RlZCA9IGlucHV0KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblxuICAvKipcbiAgICogVGhlIGRlZmF1bHQgaWNvbiB0byBkaXNwbGF5IHdoZW4gdGhlIGl0ZW0gaXMgbm90IHNlbGVjdGVkLlxuICAgKiBAdHlwZTogc3RyaW5nIHwgc3RyaW5nW11cbiAgICovXG4gIHJlYWRvbmx5IGljb246IElucHV0U2lnbmFsV2l0aFRyYW5zZm9ybTxzdHJpbmdbXSwgc3RyaW5nIHwgc3RyaW5nW10+ID0gaW5wdXQoW10sIHtcbiAgICB0cmFuc2Zvcm06IGNvZXJjZVN0cmluZ0FycmF5LFxuICB9KTtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSB0b3RhbCBudW1iZXIgb2Ygc3RhcnMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBzdGFyIHJhdGluZyBjb21wb25lbnQuIFRoaXMgcHJvcGVydHkgZGV0ZXJtaW5lcyB0aGUgc2NhbGUgb2YgdGhlIHJhdGluZyxcbiAgICogc3VjaCBhcyBvdXQgb2YgNSBzdGFycywgMTAgc3RhcnMsIGV0Yy5cbiAgICogQHR5cGU6IG51bWJlclxuICAgKiBAZGVmYXVsdDogNVxuICAgKi9cbiAgcmVhZG9ubHkgaXRlbUNvdW50ID0gaW5wdXQoNSwgeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KTtcblxuICAvKipcbiAgICogTWluaW11bSBpbmNyZW1lbnQgdmFsdWUgY2hhbmdlIGFsbG93ZWQuXG4gICAqIEB0eXBlOiBudW1iZXJcbiAgICogQGRlZmF1bHQ6IDFcbiAgICovXG4gIHJlYWRvbmx5IHByZWNpc2lvbiA9IGlucHV0KDEsIHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSk7XG5cbiAgLyoqXG4gICAqIEFsbG93cyB0byBjbGljayBmcmFjdGlvbnNcbiAgICogQHR5cGU6IGJvb2xlYW5cbiAgICogQGRlZmF1bHQ6IGZhbHNlXG4gICAqL1xuICAvLyByZWFkb25seSBwcmVjaXNpb25DbGljayA9IGlucHV0KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblxuICAvKipcbiAgICogVG9nZ2xlIHRoZSByZWFkb25seSBzdGF0ZSBmb3IgdGhlIGNvbXBvbmVudC5cbiAgICogQHR5cGU6IGJvb2xlYW5cbiAgICogQGRlZmF1bHQ6IGZhbHNlXG4gICAqL1xuICByZWFkb25seSByZWFkT25seSA9IGlucHV0KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblxuICAvKipcbiAgICogU2l6ZSB0aGUgY29tcG9uZW50IHNtYWxsLCBsYXJnZSwgb3IgY3VzdG9tIGlmIHlvdSBkZWZpbmUgY3VzdG9tIGljb25zIHdpdGggY3VzdG9tIGhlaWdodC5cbiAgICogQHR5cGU6ICdzbScgfCAnbGcnIHwgJ2N1c3RvbScgfCB1bmRlZmluZWRcbiAgICogQGRlZmF1bHQ6IHVuZGVmaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkgc2l6ZSA9IGlucHV0PCdzbScgfCAnbGcnIHwgJ2N1c3RvbScgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgLyoqXG4gICAqIEVuYWJsZSB0b29sdGlwcyB3aXRoIGRlZmF1bHQgdmFsdWVzIG9yIHNldCBzcGVjaWZpYyBsYWJlbHMgZm9yIGVhY2ggaWNvbi5cbiAgICogQHR5cGU6IGJvb2xlYW4gfCBzdHJpbmdbXSB8IHVuZGVmaW5lZFxuICAgKiBAZGVmYXVsdDogdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSB0b29sdGlwcyA9IGlucHV0PGJvb2xlYW4gfCBzdHJpbmdbXSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAvKipcbiAgICogVGhlIGB2YWx1ZWAgYXR0cmlidXRlIG9mIGNvbXBvbmVudC5cbiAgICogQHR5cGU6IG51bWJlciB8IG51bGxcbiAgICogQGRlZmF1bHQ6IG51bGxcbiAgICogRW1pdHMgYHZhbHVlQ2hhbmdlYCBvbiB2YWx1ZSBjaGFuZ2VcbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlID0gbW9kZWw8bnVtYmVyIHwgbnVsbD4obnVsbCk7XG5cbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgb24gaG92ZXJWYWx1ZSBjaGFuZ2UuXG4gICAqIEB0eXBlOiBudW1iZXIgfCBudWxsXG4gICAqL1xuICByZWFkb25seSBob3ZlclZhbHVlID0gc2lnbmFsPG51bWJlciB8IG51bGw+KG51bGwpO1xuICByZWFkb25seSBob3ZlclZhbHVlQ2hhbmdlID0gb3V0cHV0PG51bWJlciB8IG51bGw+KCk7XG4gIHJlYWRvbmx5IGhvdmVyVmFsdWVFZmZlY3QgPSBlZmZlY3QoXG4gICAgKCkgPT4ge1xuICAgICAgdGhpcy5ob3ZlclZhbHVlQ2hhbmdlLmVtaXQodGhpcy5ob3ZlclZhbHVlKCkpO1xuICAgICAgaWYgKCF0aGlzLmhvdmVyVmFsdWUoKSkge1xuICAgICAgICB0aGlzLmhvdmVyZWRJdGVtLnNldCh1bmRlZmluZWQpO1xuICAgICAgfVxuICAgIH0sXG4gICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxuICApO1xuXG4gIHJlYWRvbmx5ICNjbGVhcmVkID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgaG92ZXJlZEl0ZW0gPSBzaWduYWw8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSB0b29sdGlwVmFsdWUgPSBzaWduYWw8c3RyaW5nIHwgbnVtYmVyIHwgbnVsbD4obnVsbCk7XG5cbiAgcmVhZG9ubHkgcmF0aW5nRGlzYWJsZWQgPSBjb21wdXRlZDxib29sZWFuPihcbiAgICAoKSA9PiB0aGlzLmRpc2FibGVkKCkgfHwgdGhpcy5yZWFkT25seSgpIHx8IHRoaXMuI2Rpc2FibGVkU3RhdGUoKSxcbiAgKTtcbiAgcmVhZG9ubHkgcmF0aW5nRGlzYWJsZWRFZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xuICAgIGlmICghdGhpcy5yYXRpbmdEaXNhYmxlZCgpKSB7XG4gICAgICBjb25zdCBmb2N1c0luJCA9IGZyb21FdmVudDxGb2N1c0V2ZW50Pih0aGlzLiNlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdmb2N1c2luJyk7XG4gICAgICBjb25zdCBmb2N1c091dCQgPSBmcm9tRXZlbnQ8Rm9jdXNFdmVudD4odGhpcy4jZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnZm9jdXNvdXQnKTtcbiAgICAgIGNvbnN0IG1vdXNlTGVhdmUkID0gZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMuI2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ21vdXNlbGVhdmUnKTtcblxuICAgICAgbWVyZ2UoZm9jdXNJbiQsIGZvY3VzT3V0JCwgbW91c2VMZWF2ZSQpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpbHRlcigoZXZlbnQpID0+ICF0aGlzLnJhdGluZ0Rpc2FibGVkKCkpLFxuICAgICAgICAgIHRhcCgoJGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2ggKCRldmVudC50eXBlKSB7XG4gICAgICAgICAgICAgIGNhc2UgJ2ZvY3VzaW4nOlxuICAgICAgICAgICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgJ2ZvY3Vzb3V0JzpcbiAgICAgICAgICAgICAgY2FzZSAnbW91c2VsZWF2ZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5ob3ZlclZhbHVlLnNldChudWxsKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSxcbiAgICAgICAgICB0YWtlV2hpbGUoKCkgPT4gIXRoaXMucmF0aW5nRGlzYWJsZWQoKSksXG4gICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuI2Rlc3Ryb3lSZWYpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGNvbnRlbnRUZW1wbGF0ZXMgPSBjb250ZW50Q2hpbGRyZW4oVGVtcGxhdGVJZERpcmVjdGl2ZSk7XG5cbiAgcmVhZG9ubHkgaWNvblRlbXBsYXRlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB0ZW1wbGF0ZUFycmF5ID0gdGhpcy5jb250ZW50VGVtcGxhdGVzKCkubWFwKChjaGlsZDogVGVtcGxhdGVJZERpcmVjdGl2ZSkgPT4ge1xuICAgICAgcmV0dXJuIFtbY2hpbGQuaWRdLCBjaGlsZC50ZW1wbGF0ZVJlZl07XG4gICAgfSk7XG4gICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyh0ZW1wbGF0ZUFycmF5KTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgbnVtYmVyT2ZTdWJJdGVtcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gcGFyc2VJbnQoKDEgLyB0aGlzLnByZWNpc2lvbigpKS50b0ZpeGVkKCkpO1xuICB9KTtcblxuICByZWFkb25seSByYXRpbmdJdGVtcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh7IGxlbmd0aDogdGhpcy5pdGVtQ291bnQoKSB9LCAoXywgaXRlbUluZGV4KSA9PiB7XG4gICAgICBpZiAodGhpcy5udW1iZXJPZlN1Ykl0ZW1zKCkgPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIFtpdGVtSW5kZXggKyAxXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBBcnJheS5mcm9tKFxuICAgICAgICB7IGxlbmd0aDogdGhpcy5udW1iZXJPZlN1Ykl0ZW1zKCkgfSxcbiAgICAgICAgKF8sIHN1YkluZGV4KSA9PiBpdGVtSW5kZXggKyAoc3ViSW5kZXggKyAxKSAqIHRoaXMucHJlY2lzaW9uKCksXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcblxuICByZWFkb25seSByYXRpbmdJdGVtTGFiZWxzID0gdmlld0NoaWxkcmVuKFJhdGluZ0l0ZW1MYWJlbENvbXBvbmVudCk7XG4gICNmb2N1c0tleU1hbmFnZXIhOiBGb2N1c0tleU1hbmFnZXI8UmF0aW5nSXRlbUxhYmVsQ29tcG9uZW50PjtcblxuICByZWFkb25seSByYXRpbmdJdGVtTGFiZWxzRWZmZWN0ID0gZWZmZWN0KFxuICAgICgpID0+IHtcbiAgICAgIGlmICh1bnRyYWNrZWQodGhpcy5yYXRpbmdEaXNhYmxlZCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy4jZm9jdXNLZXlNYW5hZ2VyID0gbmV3IEZvY3VzS2V5TWFuYWdlcih0aGlzLnJhdGluZ0l0ZW1MYWJlbHMoKSlcbiAgICAgICAgLndpdGhIb3Jpem9udGFsT3JpZW50YXRpb24oJ2x0cicpXG4gICAgICAgIC53aXRoV3JhcCgpO1xuXG4gICAgICBjb25zdCBhY3RpdmVJdGVtSW5kZXggPSB0aGlzLnJhdGluZ0l0ZW1zKClcbiAgICAgICAgLmZsYXQoKVxuICAgICAgICAuZmluZEluZGV4KCh2YWx1ZSkgPT4gdmFsdWUgPT09IGNvZXJjZU51bWJlcih0aGlzLnZhbHVlKCkgPz8gMCkpO1xuXG4gICAgICB0aGlzLiNmb2N1c0tleU1hbmFnZXI/LnVwZGF0ZUFjdGl2ZUl0ZW0oYWN0aXZlSXRlbUluZGV4IDwgMCA/IDAgOiBhY3RpdmVJdGVtSW5kZXgpO1xuXG4gICAgICB0aGlzLiNmb2N1c0tleU1hbmFnZXIudGFiT3V0XG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRhcCgoeCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYWN0aXZlSXRlbUluZGV4ID0gdW50cmFja2VkKHRoaXMucmF0aW5nSXRlbXMpXG4gICAgICAgICAgICAgIC5mbGF0KClcbiAgICAgICAgICAgICAgLmZpbmRJbmRleCgodmFsdWUpID0+IHZhbHVlID09PSBjb2VyY2VOdW1iZXIodW50cmFja2VkKHRoaXMudmFsdWUpID8/IDApKTtcblxuICAgICAgICAgICAgdGhpcy4jZm9jdXNLZXlNYW5hZ2VyLnVwZGF0ZUFjdGl2ZUl0ZW0oYWN0aXZlSXRlbUluZGV4ID09PSAtMSA/IDAgOiBhY3RpdmVJdGVtSW5kZXgpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVGb2N1c2FibGVJdGVtcygpO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLiNkZXN0cm95UmVmKSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICAgIHRoaXMuI2ZvY3VzS2V5TWFuYWdlci5jaGFuZ2VcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFwKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yYXRpbmdJdGVtTGFiZWxzKCkuZm9yRWFjaCgobGFiZWwsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIGxhYmVsLmZvY3VzYWJsZS5zZXQoaW5kZXggPT09IHRoaXMuI2ZvY3VzS2V5TWFuYWdlci5hY3RpdmVJdGVtSW5kZXgpO1xuICAgICAgICAgICAgICBpZiAoaW5kZXggPT09IHRoaXMuI2ZvY3VzS2V5TWFuYWdlci5hY3RpdmVJdGVtSW5kZXgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHVudHJhY2tlZChsYWJlbC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVDbGljayh2YWx1ZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLiNkZXN0cm95UmVmKSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfSxcbiAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXG4gICk7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBob3N0Q2xhc3NlcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcmF0aW5nOiB0cnVlLFxuICAgICAgW2ByYXRpbmctJHt0aGlzLnNpemUoKX1gXTogdGhpcy5zaXplKCksXG4gICAgICBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCgpIHx8IHRoaXMuI2Rpc2FibGVkU3RhdGUoKSxcbiAgICAgIHJlYWRvbmx5OiB0aGlzLnJlYWRPbmx5KCksXG4gICAgfTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLXZhbHVlbm93JylcbiAgZ2V0IGFyaWFWYWx1ZU5vdygpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZSgpO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtdmFsdWVtYXgnKVxuICBnZXQgYXJpYVZhbHVlTWF4KCkge1xuICAgIHJldHVybiB0aGlzLml0ZW1Db3VudCgpO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnJvbGUnKVxuICBnZXQgcm9sZSgpIHtcbiAgICByZXR1cm4gJ3JhZGlvZ3JvdXAnO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIG9uS2V5ZG93bigkZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLnJhdGluZ0Rpc2FibGVkKCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKFsnU3BhY2UnLCAnRW50ZXInXS5pbmNsdWRlcygkZXZlbnQuY29kZSkpIHtcbiAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgY29uc3QgaXRlbSA9IHRoaXMucmF0aW5nSXRlbUxhYmVscygpLmZpbmQoXG4gICAgICAgIChsYWJlbCwgaW5kZXgpID0+IGluZGV4ID09PSB0aGlzLiNmb2N1c0tleU1hbmFnZXI/LmFjdGl2ZUl0ZW1JbmRleCxcbiAgICAgICk7XG4gICAgICB0aGlzLmhhbmRsZUNsaWNrKGl0ZW0/LnZhbHVlKCkgPz8gLTEpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoWydBcnJvd0xlZnQnLCAnQXJyb3dSaWdodCcsICdBcnJvd1VwJywgJ0Fycm93RG93biddLmluY2x1ZGVzKCRldmVudC5rZXkpKSB7XG4gICAgICB0aGlzLiNmb2N1c0tleU1hbmFnZXIub25LZXlkb3duKCRldmVudCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChbJ1RhYiddLmluY2x1ZGVzKCRldmVudC5rZXkpKSB7XG4gICAgICB0aGlzLiNmb2N1c0tleU1hbmFnZXI/LnRhYk91dC5uZXh0KCk7XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuXG4gIG9uQ2hhbmdlID0gKHZhbHVlOiBudW1iZXIgfCBudWxsKSA9PiB7fTtcblxuICBvblRvdWNoZWQgPSAoKSA9PiB7fTtcblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuI2Rpc2FibGVkU3RhdGUuc2V0KGlzRGlzYWJsZWQpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogbnVtYmVyIHwgbnVsbCk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUuc2V0KHZhbHVlKTtcbiAgfVxuXG4gIGlzSXRlbUFjdGl2ZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgY29uc3QgbG9jYWxWYWx1ZSA9IHRoaXMuaG92ZXJWYWx1ZSgpID8/IHRoaXMudmFsdWUoKSA/PyAtMTtcbiAgICByZXR1cm4gdGhpcy5oaWdobGlnaHRPbmx5U2VsZWN0ZWQoKSA/IGxvY2FsVmFsdWUgPT09IHZhbHVlIDogbG9jYWxWYWx1ZSA+PSB2YWx1ZTtcbiAgfVxuXG4gIG5vdExhc3RJdGVtU3R5bGUodmFsdWU6IG51bWJlcikge1xuICAgIHJldHVybiB7XG4gICAgICB6SW5kZXg6IHRoaXMubnVtYmVyT2ZTdWJJdGVtcygpIC0gdmFsdWUsXG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgIHdpZHRoOiBgJHt0aGlzLnByZWNpc2lvbigpICogKHZhbHVlICsgMSkgKiAxMDB9JWAsXG4gICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgICBvcGFjaXR5OiAwLjEsXG4gICAgfTtcbiAgfVxuXG4gIGhhbmRsZUZvY3VzSW4oJGV2ZW50OiBGb2N1c0V2ZW50LCBpdGVtVmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuaGFuZGxlTW91c2VFbnRlcigkZXZlbnQgYXMgTW91c2VFdmVudCwgaXRlbVZhbHVlKTtcbiAgfVxuXG4gIGhhbmRsZUNsaWNrKHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5yYXRpbmdEaXNhYmxlZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmFsbG93Q2xlYXIoKSAmJiB2YWx1ZSA9PT0gdGhpcy52YWx1ZSgpKSB7XG4gICAgICB0aGlzLiNjbGVhcmVkLnNldCh0cnVlKTtcbiAgICAgIHRoaXMudmFsdWUuc2V0KG51bGwpO1xuICAgICAgdGhpcy5ob3ZlclZhbHVlLnNldChudWxsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52YWx1ZS5zZXQodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZU1vdXNlRW50ZXIoJGV2ZW50OiBNb3VzZUV2ZW50LCB2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmF0aW5nRGlzYWJsZWQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmhvdmVyVmFsdWUuc2V0KG51bGwpO1xuICAgIHRoaXMuaG92ZXJWYWx1ZS5zZXQodmFsdWUpO1xuICAgIHRoaXMudG9vbHRpcFZhbHVlLnNldCh2YWx1ZSk7XG4gIH1cblxuICBnZXRUb29sdGlwVmFsdWUoaW5kZXg6IG51bWJlcik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0aGlzLmhvdmVyVmFsdWUoKSB8fCB0aGlzLmhvdmVyZWRJdGVtKCkgIT09IGluZGV4KSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnRvb2x0aXBzKCkpKSB7XG4gICAgICBjb25zdCB0b29sdGlwcyA9IHRoaXMudG9vbHRpcHMoKSBhcyBBcnJheTxzdHJpbmc+O1xuICAgICAgcmV0dXJuIHRvb2x0aXBzW2luZGV4XTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucHJlY2lzaW9uKClcbiAgICAgID8gdGhpcy50b29sdGlwVmFsdWUoKT8udG9TdHJpbmcoKSA/PyAnJ1xuICAgICAgOiB0aGlzLnJhdGluZ0l0ZW1zKClcbiAgICAgICAgPyAodGhpcy5yYXRpbmdJdGVtcygpW2luZGV4XS5hdCgtMSkgPz8gJycpLnRvU3RyaW5nKClcbiAgICAgICAgOiAnJztcbiAgfVxuXG4gIHVwZGF0ZUZvY3VzYWJsZUl0ZW1zKCkge1xuICAgIHRoaXMucmF0aW5nSXRlbUxhYmVscygpLmZvckVhY2goKGxhYmVsLCBpbmRleCkgPT4ge1xuICAgICAgbGFiZWwuZm9jdXNhYmxlLnNldChpbmRleCA9PT0gdGhpcy4jZm9jdXNLZXlNYW5hZ2VyPy5hY3RpdmVJdGVtSW5kZXgpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8ga2VlcCBpdCBhdCB0aGUgYm90dG9tIG9mIHRoZSBjb2RlXG4gIHJlYWRvbmx5IHZhbHVlRWZmZWN0ID0gZWZmZWN0KFxuICAgICgpID0+IHtcbiAgICAgIGNvbnN0IHJhdGluZ1ZhbHVlID0gdGhpcy52YWx1ZSgpO1xuICAgICAgdGhpcy5vbkNoYW5nZShyYXRpbmdWYWx1ZSk7XG5cbiAgICAgIGlmICh1bnRyYWNrZWQodGhpcy5yYXRpbmdEaXNhYmxlZCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodW50cmFja2VkKHRoaXMuI2NsZWFyZWQpKSB7XG4gICAgICAgIHRoaXMuI2NsZWFyZWQuc2V0KGZhbHNlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgYWN0aXZlSXRlbUluZGV4ID0gdGhpcy5yYXRpbmdJdGVtcygpXG4gICAgICAgIC5mbGF0KClcbiAgICAgICAgLmZpbmRJbmRleCgodmFsdWUpID0+IHZhbHVlID09PSBjb2VyY2VOdW1iZXIocmF0aW5nVmFsdWUgPz8gMCkpO1xuXG4gICAgICB0aGlzLiNmb2N1c0tleU1hbmFnZXI/LnVwZGF0ZUFjdGl2ZUl0ZW0oYWN0aXZlSXRlbUluZGV4IDwgMCA/IDAgOiBhY3RpdmVJdGVtSW5kZXgpO1xuICAgICAgdGhpcy51cGRhdGVGb2N1c2FibGVJdGVtcygpO1xuICAgIH0sXG4gICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxuICApO1xufVxuIiwiQGZvciAoaXRlbSBvZiByYXRpbmdJdGVtcygpOyB0cmFjayBpdGVtOyBsZXQgaXRlbUluZGV4ID0gJGluZGV4LCBsYXN0ID0gJGxhc3QpIHtcbiAgQGlmICh0b29sdGlwcygpKSB7XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJyYXRpbmctaXRlbVwiXG4gICAgICBbY1Rvb2x0aXBdPVwiZ2V0VG9vbHRpcFZhbHVlKGl0ZW1JbmRleClcIlxuICAgICAgW2NUb29sdGlwVHJpZ2dlcl09XCJbJ2hvdmVyJywgJ2ZvY3VzaW4nXVwiXG4gICAgICAobW91c2VlbnRlcik9XCJob3ZlcmVkSXRlbS5zZXQoaXRlbUluZGV4KVwiXG4gICAgICAoZm9jdXNpbik9XCJob3ZlcmVkSXRlbS5zZXQoaXRlbUluZGV4KVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInJhdGluZ0l0ZW1MYWJlbDsgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0sIGl0ZW1JbmRleCB9XCIgLz5cbiAgICA8L2Rpdj5cbiAgfSBAZWxzZSB7XG4gICAgPGRpdiBjbGFzcz1cInJhdGluZy1pdGVtXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicmF0aW5nSXRlbUxhYmVsOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogaXRlbSwgaXRlbUluZGV4IH1cIiAvPlxuICAgIDwvZGl2PlxuICB9XG59XG5cbjxuZy10ZW1wbGF0ZSBsZXQtaXRlbSBsZXQtaXRlbUluZGV4PVwiaXRlbUluZGV4XCIgI3JhdGluZ0l0ZW1MYWJlbD5cbiAgQGZvciAoaXRlbVZhbHVlIG9mIGl0ZW07IHRyYWNrIHJhZGlvSW5kZXg7IGxldCByYWRpb0luZGV4ID0gJGluZGV4LCBsYXN0ID0gJGxhc3QpIHtcbiAgICA8Yy1yYXRpbmctaXRlbS1sYWJlbFxuICAgICAgY2xhc3M9XCJyYXRpbmctaXRlbS1sYWJlbCBkLWlubGluZS1ibG9ja1wiXG4gICAgICByb2xlPVwicmFkaW9cIlxuICAgICAgKGNsaWNrKT1cImhhbmRsZUNsaWNrKGl0ZW1WYWx1ZSlcIlxuICAgICAgKGZvY3VzKT1cImhhbmRsZUZvY3VzSW4oJGV2ZW50LCBpdGVtVmFsdWUpXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiBpc0l0ZW1BY3RpdmUoaXRlbVZhbHVlKSB9XCJcbiAgICAgIChtb3VzZWVudGVyKT1cImhhbmRsZU1vdXNlRW50ZXIoJGV2ZW50LCBpdGVtVmFsdWUpXCJcbiAgICAgIFtuZ1N0eWxlXT1cInJhZGlvSW5kZXggKyAxIDwgbnVtYmVyT2ZTdWJJdGVtcygpID8gbm90TGFzdEl0ZW1TdHlsZShyYWRpb0luZGV4KSA6IHt9XCJcbiAgICAgIFt2YWx1ZV09XCJpdGVtVmFsdWVcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJpdGVtVmFsdWVcIlxuICAgICAgW2F0dHIuYXJpYS1jaGVja2VkXT1cIml0ZW1WYWx1ZSA9PT0gdmFsdWUoKVwiXG4gICAgPlxuICAgICAgQGlmIChpY29uVGVtcGxhdGVzKClbaWNvbigpW2l0ZW1JbmRleF0gPz8gaWNvbigpXSkge1xuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VzdG9tSWNvblRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogaWNvbigpPy5baXRlbUluZGV4XSA/PyBpY29uKCkgfVwiIC8+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRlZmF1bHRJY29uVGVtcGxhdGVcIiAvPlxuICAgICAgfVxuICAgICAgQGlmIChpY29uVGVtcGxhdGVzKClbYWN0aXZlSWNvbigpW2l0ZW1JbmRleF0gPz8gYWN0aXZlSWNvbigpXSkge1xuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VzdG9tSWNvbkFjdGl2ZVRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogYWN0aXZlSWNvbigpPy5baXRlbUluZGV4XSA/PyBhY3RpdmVJY29uKCkgfVwiIC8+XG4gICAgICB9XG4gICAgPC9jLXJhdGluZy1pdGVtLWxhYmVsPlxuICB9XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3Rvb2x0aXBDb250ZW50PlxuICA8c3Bhbj57eyBob3ZlclZhbHVlKCkgfX08L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHRJY29uVGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJyYXRpbmctaXRlbS1pY29uXCI+PC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2N1c3RvbUljb25UZW1wbGF0ZSBsZXQtaWNvbj5cbiAgPGRpdiBjbGFzcz1cInJhdGluZy1pdGVtLWN1c3RvbS1pY29uXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImljb25UZW1wbGF0ZXMoKT8uW2ljb25dIHx8IGRlZmF1bHRJY29uVGVtcGxhdGVcIiAvPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY3VzdG9tSWNvbkFjdGl2ZVRlbXBsYXRlIGxldC1pY29uPlxuICA8ZGl2IGNsYXNzPVwicmF0aW5nLWl0ZW0tY3VzdG9tLWljb24tYWN0aXZlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImljb25UZW1wbGF0ZXMoKT8uW2ljb25dIHx8IGN1c3RvbUljb25UZW1wbGF0ZVwiIC8+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -0,0 +1,16 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { RatingComponent } from './rating.component';
3
+ import * as i0 from "@angular/core";
4
+ export class RatingModule {
5
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: RatingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.8", ngImport: i0, type: RatingModule, imports: [RatingComponent], exports: [RatingComponent] }); }
7
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: RatingModule }); }
8
+ }
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: RatingModule, decorators: [{
10
+ type: NgModule,
11
+ args: [{
12
+ imports: [RatingComponent],
13
+ exports: [RatingComponent]
14
+ }]
15
+ }] });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0aW5nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmV1aS1hbmd1bGFyL3NyYy9saWIvcmF0aW5nL3JhdGluZy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBTXJELE1BQU0sT0FBTyxZQUFZOzhHQUFaLFlBQVk7K0dBQVosWUFBWSxZQUhiLGVBQWUsYUFDZixlQUFlOytHQUVkLFlBQVk7OzJGQUFaLFlBQVk7a0JBSnhCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsZUFBZSxDQUFDO29CQUMxQixPQUFPLEVBQUUsQ0FBQyxlQUFlLENBQUM7aUJBQzNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgUmF0aW5nQ29tcG9uZW50IH0gZnJvbSAnLi9yYXRpbmcuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1JhdGluZ0NvbXBvbmVudF0sXG4gIGV4cG9ydHM6IFtSYXRpbmdDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIFJhdGluZ01vZHVsZSB7fVxuIl19
@@ -15,10 +15,10 @@ export class ClassToggleService {
15
15
  this.renderer.addClass(element, className);
16
16
  }
17
17
  }
18
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: ClassToggleService, deps: [{ token: DOCUMENT }, { token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable }); }
19
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: ClassToggleService, providedIn: 'root' }); }
18
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: ClassToggleService, deps: [{ token: DOCUMENT }, { token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable }); }
19
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: ClassToggleService, providedIn: 'root' }); }
20
20
  }
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: ClassToggleService, decorators: [{
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: ClassToggleService, decorators: [{
22
22
  type: Injectable,
23
23
  args: [{
24
24
  providedIn: 'root'
@@ -63,10 +63,10 @@ export class ColorModeService {
63
63
  this.#document.documentElement.dispatchEvent(event);
64
64
  }
65
65
  ;
66
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: ColorModeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
67
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: ColorModeService, providedIn: 'root' }); }
66
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: ColorModeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
67
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: ColorModeService, providedIn: 'root' }); }
68
68
  }
69
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: ColorModeService, decorators: [{
69
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: ColorModeService, decorators: [{
70
70
  type: Injectable,
71
71
  args: [{
72
72
  providedIn: 'root'
@@ -21,10 +21,10 @@ export class InMemoryStorageService {
21
21
  key(index) {
22
22
  return Array.from(this.#storage.keys())[index];
23
23
  }
24
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: InMemoryStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
25
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: InMemoryStorageService, providedIn: 'root' }); }
24
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: InMemoryStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
25
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: InMemoryStorageService, providedIn: 'root' }); }
26
26
  }
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: InMemoryStorageService, decorators: [{
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: InMemoryStorageService, decorators: [{
28
28
  type: Injectable,
29
29
  args: [{
30
30
  providedIn: 'root'
@@ -39,10 +39,10 @@ export class IntersectionService {
39
39
  observer?.unobserve(elementRef.nativeElement);
40
40
  });
41
41
  }
42
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: IntersectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
43
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: IntersectionService, providedIn: 'root' }); }
42
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: IntersectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
43
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: IntersectionService, providedIn: 'root' }); }
44
44
  }
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: IntersectionService, decorators: [{
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: IntersectionService, decorators: [{
46
46
  type: Injectable,
47
47
  args: [{
48
48
  providedIn: 'root'