valtech-components 2.0.691 → 2.0.692

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 (1362) hide show
  1. package/esm2022/lib/components/atoms/avatar/avatar.component.mjs +94 -0
  2. package/esm2022/lib/components/atoms/avatar/types.mjs +2 -0
  3. package/esm2022/lib/components/atoms/box/box.component.mjs +88 -0
  4. package/esm2022/lib/components/atoms/box/types.mjs +2 -0
  5. package/esm2022/lib/components/atoms/button/button.component.mjs +174 -0
  6. package/esm2022/lib/components/atoms/button/factory.mjs +217 -0
  7. package/esm2022/lib/components/atoms/countdown/countdown.component.mjs +340 -0
  8. package/esm2022/lib/components/atoms/countdown/types.mjs +27 -0
  9. package/esm2022/lib/components/atoms/display/display.component.mjs +51 -0
  10. package/esm2022/lib/components/atoms/display/types.mjs +2 -0
  11. package/esm2022/lib/components/atoms/divider/divider.component.mjs +27 -0
  12. package/esm2022/lib/components/atoms/divider/types.mjs +2 -0
  13. package/esm2022/lib/components/atoms/fab/fab.component.mjs +190 -0
  14. package/esm2022/lib/components/atoms/fab/types.mjs +2 -0
  15. package/esm2022/lib/components/atoms/horizontal-scroll/horizontal-scroll.component.mjs +82 -0
  16. package/esm2022/lib/components/atoms/horizontal-scroll/types.mjs +2 -0
  17. package/esm2022/lib/components/atoms/href/href.component.mjs +62 -0
  18. package/esm2022/lib/components/atoms/href/types.mjs +2 -0
  19. package/esm2022/lib/components/atoms/icon/icon.component.mjs +29 -0
  20. package/esm2022/lib/components/atoms/icon/types.mjs +2 -0
  21. package/esm2022/lib/components/atoms/image/image.component.mjs +507 -0
  22. package/esm2022/lib/components/atoms/image/types.mjs +2 -0
  23. package/esm2022/lib/components/atoms/price-tag/price-tag.component.mjs +235 -0
  24. package/esm2022/lib/components/atoms/price-tag/types.mjs +15 -0
  25. package/esm2022/lib/components/atoms/progress-bar/progress-bar.component.mjs +91 -0
  26. package/esm2022/lib/components/atoms/progress-bar/types.mjs +2 -0
  27. package/esm2022/lib/components/atoms/progress-ring/progress-ring.component.mjs +149 -0
  28. package/esm2022/lib/components/atoms/progress-ring/types.mjs +2 -0
  29. package/esm2022/lib/components/atoms/qr-code/qr-code.component.mjs +394 -0
  30. package/esm2022/lib/components/atoms/qr-code/types.mjs +2 -0
  31. package/esm2022/lib/components/atoms/rights-footer/rights-footer.component.mjs +108 -0
  32. package/esm2022/lib/components/atoms/rights-footer/types.mjs +2 -0
  33. package/esm2022/lib/components/atoms/skeleton/skeleton.component.mjs +193 -0
  34. package/esm2022/lib/components/atoms/skeleton/types.mjs +13 -0
  35. package/esm2022/lib/components/atoms/text/text.component.mjs +132 -0
  36. package/esm2022/lib/components/atoms/text/types.mjs +2 -0
  37. package/esm2022/lib/components/atoms/title/title.component.mjs +68 -0
  38. package/esm2022/lib/components/atoms/title/types.mjs +22 -0
  39. package/esm2022/lib/components/molecules/accordion/accordion.component.mjs +120 -0
  40. package/esm2022/lib/components/molecules/accordion/types.mjs +2 -0
  41. package/esm2022/lib/components/molecules/action-card/action-card.component.mjs +298 -0
  42. package/esm2022/lib/components/molecules/action-card/types.mjs +11 -0
  43. package/esm2022/lib/components/molecules/action-header/action-header.component.mjs +26 -0
  44. package/esm2022/lib/components/molecules/action-header/types.mjs +2 -0
  45. package/esm2022/lib/components/molecules/ad-slot/ad-slot.component.mjs +274 -0
  46. package/esm2022/lib/components/molecules/alert-box/alert-box.component.mjs +119 -0
  47. package/esm2022/lib/components/molecules/alert-box/types.mjs +2 -0
  48. package/esm2022/lib/components/molecules/breadcrumb/breadcrumb.component.mjs +130 -0
  49. package/esm2022/lib/components/molecules/breadcrumb/types.mjs +2 -0
  50. package/esm2022/lib/components/molecules/button-group/button-group.component.mjs +63 -0
  51. package/esm2022/lib/components/molecules/button-group/types.mjs +2 -0
  52. package/esm2022/lib/components/molecules/card/card.component.mjs +450 -0
  53. package/esm2022/lib/components/molecules/card/types.mjs +16 -0
  54. package/esm2022/lib/components/molecules/check-input/check-input.component.mjs +82 -0
  55. package/esm2022/lib/components/molecules/chip-group/chip-group.component.mjs +166 -0
  56. package/esm2022/lib/components/molecules/chip-group/types.mjs +2 -0
  57. package/esm2022/lib/components/molecules/code-display/code-display.component.mjs +115 -0
  58. package/esm2022/lib/components/molecules/code-display/types.mjs +2 -0
  59. package/esm2022/lib/components/molecules/command-display/command-display.component.mjs +49 -0
  60. package/esm2022/lib/components/molecules/command-display/types.mjs +2 -0
  61. package/esm2022/lib/components/molecules/comment/comment.component.mjs +618 -0
  62. package/esm2022/lib/components/molecules/comment/types.mjs +2 -0
  63. package/esm2022/lib/components/molecules/comment-input/comment-input.component.mjs +41 -0
  64. package/esm2022/lib/components/molecules/comment-input/types.mjs +2 -0
  65. package/esm2022/lib/components/molecules/content-loader/content-loader.component.mjs +42 -0
  66. package/esm2022/lib/components/molecules/content-loader/types.mjs +2 -0
  67. package/esm2022/lib/components/molecules/content-reaction/content-reaction.component.mjs +218 -0
  68. package/esm2022/lib/components/molecules/content-reaction/types.mjs +2 -0
  69. package/esm2022/lib/components/molecules/currency-input/currency-input.component.mjs +347 -0
  70. package/esm2022/lib/components/molecules/currency-input/types.mjs +18 -0
  71. package/esm2022/lib/components/molecules/date-input/date-input.component.mjs +148 -0
  72. package/esm2022/lib/components/molecules/date-input/types.mjs +2 -0
  73. package/esm2022/lib/components/molecules/date-range-input/date-range-input.component.mjs +416 -0
  74. package/esm2022/lib/components/molecules/date-range-input/types.mjs +2 -0
  75. package/esm2022/lib/components/molecules/docs-api-table/docs-api-table.component.mjs +222 -0
  76. package/esm2022/lib/components/molecules/docs-api-table/types.mjs +11 -0
  77. package/esm2022/lib/components/molecules/docs-breadcrumb/docs-breadcrumb.component.mjs +144 -0
  78. package/esm2022/lib/components/molecules/docs-breadcrumb/types.mjs +2 -0
  79. package/esm2022/lib/components/molecules/docs-callout/docs-callout.component.mjs +60 -0
  80. package/esm2022/lib/components/molecules/docs-code-example/docs-code-example.component.mjs +255 -0
  81. package/esm2022/lib/components/molecules/docs-code-example/types.mjs +2 -0
  82. package/esm2022/lib/components/molecules/docs-nav-links/docs-nav-links.component.mjs +140 -0
  83. package/esm2022/lib/components/molecules/docs-nav-links/types.mjs +2 -0
  84. package/esm2022/lib/components/molecules/docs-search/docs-search.component.mjs +268 -0
  85. package/esm2022/lib/components/molecules/docs-search/types.mjs +2 -0
  86. package/esm2022/lib/components/molecules/docs-section/docs-section.component.mjs +85 -0
  87. package/esm2022/lib/components/molecules/docs-section/types.mjs +2 -0
  88. package/esm2022/lib/components/molecules/email-input/email-input.component.mjs +68 -0
  89. package/esm2022/lib/components/molecules/expandable-text/expandable-text.component.mjs +77 -0
  90. package/esm2022/lib/components/molecules/expandable-text/types.mjs +2 -0
  91. package/esm2022/lib/components/molecules/features-list/features-list.component.mjs +185 -0
  92. package/esm2022/lib/components/molecules/features-list/types.mjs +11 -0
  93. package/esm2022/lib/components/molecules/feedback-form/feedback-form.component.mjs +354 -0
  94. package/esm2022/lib/components/molecules/feedback-form/types.mjs +2 -0
  95. package/esm2022/lib/components/molecules/file-input/file-input.component.mjs +90 -0
  96. package/esm2022/lib/components/molecules/file-input/types.mjs +2 -0
  97. package/esm2022/lib/components/molecules/footer-links/footer-links.component.mjs +391 -0
  98. package/esm2022/lib/components/molecules/footer-links/types.mjs +2 -0
  99. package/esm2022/lib/components/molecules/glow-card/glow-card.component.mjs +314 -0
  100. package/esm2022/lib/components/molecules/glow-card/types.mjs +11 -0
  101. package/esm2022/lib/components/molecules/hint/hint.component.mjs +90 -0
  102. package/esm2022/lib/components/molecules/hour-input/hour-input.component.mjs +28 -0
  103. package/esm2022/lib/components/molecules/image-crop/image-crop.component.mjs +174 -0
  104. package/esm2022/lib/components/molecules/image-crop/index.mjs +2 -0
  105. package/esm2022/lib/components/molecules/info/info.component.mjs +49 -0
  106. package/esm2022/lib/components/molecules/info/types.mjs +2 -0
  107. package/esm2022/lib/components/molecules/language-selector/language-selector.component.mjs +221 -0
  108. package/esm2022/lib/components/molecules/language-selector/types.mjs +2 -0
  109. package/esm2022/lib/components/molecules/layered-card/layered-card.component.mjs +104 -0
  110. package/esm2022/lib/components/molecules/layered-card/types.mjs +2 -0
  111. package/esm2022/lib/components/molecules/link/link.component.mjs +64 -0
  112. package/esm2022/lib/components/molecules/link/types.mjs +2 -0
  113. package/esm2022/lib/components/molecules/linked-providers/linked-providers.component.mjs +236 -0
  114. package/esm2022/lib/components/molecules/linked-providers/types.mjs +27 -0
  115. package/esm2022/lib/components/molecules/links-accordion/links-accordion.component.mjs +185 -0
  116. package/esm2022/lib/components/molecules/links-accordion/types.mjs +2 -0
  117. package/esm2022/lib/components/molecules/links-cake/links-cake.component.mjs +51 -0
  118. package/esm2022/lib/components/molecules/links-cake/types.mjs +2 -0
  119. package/esm2022/lib/components/molecules/multi-select-search/multi-select-search.component.mjs +488 -0
  120. package/esm2022/lib/components/molecules/notes-box/notes-box.component.mjs +69 -0
  121. package/esm2022/lib/components/molecules/notes-box/types.mjs +2 -0
  122. package/esm2022/lib/components/molecules/number-from-to/number-from-to.component.mjs +143 -0
  123. package/esm2022/lib/components/molecules/number-from-to/types.mjs +2 -0
  124. package/esm2022/lib/components/molecules/number-input/number-input.component.mjs +34 -0
  125. package/esm2022/lib/components/molecules/number-stepper/number-stepper.component.mjs +379 -0
  126. package/esm2022/lib/components/molecules/number-stepper/types.mjs +2 -0
  127. package/esm2022/lib/components/molecules/pagination/pagination.component.mjs +253 -0
  128. package/esm2022/lib/components/molecules/pagination/types.mjs +2 -0
  129. package/esm2022/lib/components/molecules/participant-card/participant-card.component.mjs +514 -0
  130. package/esm2022/lib/components/molecules/participant-card/types.mjs +21 -0
  131. package/esm2022/lib/components/molecules/password-input/password-input.component.mjs +93 -0
  132. package/esm2022/lib/components/molecules/phone-input/phone-input.component.mjs +365 -0
  133. package/esm2022/lib/components/molecules/phone-input/types.mjs +19 -0
  134. package/esm2022/lib/components/molecules/pill/pill.component.mjs +92 -0
  135. package/esm2022/lib/components/molecules/pill/types.mjs +2 -0
  136. package/esm2022/lib/components/molecules/pin-input/pin-input.component.mjs +78 -0
  137. package/esm2022/lib/components/molecules/pin-input/types.mjs +2 -0
  138. package/esm2022/lib/components/molecules/plain-code-box/plain-code-box.component.mjs +82 -0
  139. package/esm2022/lib/components/molecules/plain-code-box/types.mjs +2 -0
  140. package/esm2022/lib/components/molecules/popover-selector/popover-selector.component.mjs +188 -0
  141. package/esm2022/lib/components/molecules/popover-selector/types.mjs +2 -0
  142. package/esm2022/lib/components/molecules/progress-status/progress-status.component.mjs +105 -0
  143. package/esm2022/lib/components/molecules/progress-status/types.mjs +2 -0
  144. package/esm2022/lib/components/molecules/prompter/prompter.component.mjs +85 -0
  145. package/esm2022/lib/components/molecules/prompter/types.mjs +2 -0
  146. package/esm2022/lib/components/molecules/quote-box/quote-box.component.mjs +155 -0
  147. package/esm2022/lib/components/molecules/radio-input/radio-input.component.mjs +52 -0
  148. package/esm2022/lib/components/molecules/raffle-status-card/raffle-status-card.component.mjs +476 -0
  149. package/esm2022/lib/components/molecules/raffle-status-card/types.mjs +23 -0
  150. package/esm2022/lib/components/molecules/range-input/range-input.component.mjs +127 -0
  151. package/esm2022/lib/components/molecules/range-input/types.mjs +2 -0
  152. package/esm2022/lib/components/molecules/rating/rating.component.mjs +166 -0
  153. package/esm2022/lib/components/molecules/rating/types.mjs +2 -0
  154. package/esm2022/lib/components/molecules/recap-card/recap-card.component.mjs +78 -0
  155. package/esm2022/lib/components/molecules/recap-card/types.mjs +2 -0
  156. package/esm2022/lib/components/molecules/refresher/refresher.component.mjs +269 -0
  157. package/esm2022/lib/components/molecules/refresher/types.mjs +15 -0
  158. package/esm2022/lib/components/molecules/searchbar/searchbar.component.mjs +127 -0
  159. package/esm2022/lib/components/molecules/searchbar/types.mjs +2 -0
  160. package/esm2022/lib/components/molecules/segment-control/segment-control.component.mjs +137 -0
  161. package/esm2022/lib/components/molecules/segment-control/types.mjs +2 -0
  162. package/esm2022/lib/components/molecules/select-input/select-input.component.mjs +130 -0
  163. package/esm2022/lib/components/molecules/select-search/select-search.component.mjs +420 -0
  164. package/esm2022/lib/components/molecules/share-buttons/share-buttons.component.mjs +274 -0
  165. package/esm2022/lib/components/molecules/share-buttons/types.mjs +88 -0
  166. package/esm2022/lib/components/molecules/stats-card/stats-card.component.mjs +213 -0
  167. package/esm2022/lib/components/molecules/stats-card/types.mjs +2 -0
  168. package/esm2022/lib/components/molecules/stepper/stepper.component.mjs +242 -0
  169. package/esm2022/lib/components/molecules/stepper/types.mjs +2 -0
  170. package/esm2022/lib/components/molecules/swipe-carousel/swipe-carousel.component.mjs +206 -0
  171. package/esm2022/lib/components/molecules/swipe-carousel/types.mjs +2 -0
  172. package/esm2022/lib/components/molecules/tabs/tabs.component.mjs +139 -0
  173. package/esm2022/lib/components/molecules/tabs/types.mjs +2 -0
  174. package/esm2022/lib/components/molecules/testimonial-card/testimonial-card.component.mjs +138 -0
  175. package/esm2022/lib/components/molecules/testimonial-card/types.mjs +2 -0
  176. package/esm2022/lib/components/molecules/text-input/text-input.component.mjs +77 -0
  177. package/esm2022/lib/components/molecules/textarea-input/textarea-input.component.mjs +213 -0
  178. package/esm2022/lib/components/molecules/textarea-input/types.mjs +2 -0
  179. package/esm2022/lib/components/molecules/ticket-grid/ticket-grid.component.mjs +489 -0
  180. package/esm2022/lib/components/molecules/ticket-grid/types.mjs +11 -0
  181. package/esm2022/lib/components/molecules/timeline/timeline.component.mjs +140 -0
  182. package/esm2022/lib/components/molecules/timeline/types.mjs +2 -0
  183. package/esm2022/lib/components/molecules/title-block/title-block.component.mjs +102 -0
  184. package/esm2022/lib/components/molecules/title-block/types.mjs +2 -0
  185. package/esm2022/lib/components/molecules/toggle-input/toggle-input.component.mjs +93 -0
  186. package/esm2022/lib/components/molecules/toggle-input/types.mjs +2 -0
  187. package/esm2022/lib/components/molecules/update-banner/update-banner.component.mjs +112 -0
  188. package/esm2022/lib/components/molecules/username-input/types.mjs +2 -0
  189. package/esm2022/lib/components/molecules/username-input/username-input.component.mjs +260 -0
  190. package/esm2022/lib/components/molecules/winner-display/types.mjs +9 -0
  191. package/esm2022/lib/components/molecules/winner-display/winner-display.component.mjs +359 -0
  192. package/esm2022/lib/components/organisms/article/article.component.mjs +573 -0
  193. package/esm2022/lib/components/organisms/article/types.mjs +183 -0
  194. package/esm2022/lib/components/organisms/avatar-upload/avatar-upload.component.mjs +372 -0
  195. package/esm2022/lib/components/organisms/avatar-upload/types.mjs +15 -0
  196. package/esm2022/lib/components/organisms/banner/banner.component.mjs +111 -0
  197. package/esm2022/lib/components/organisms/banner/types.mjs +2 -0
  198. package/esm2022/lib/components/organisms/bottom-nav/bottom-nav.component.mjs +368 -0
  199. package/esm2022/lib/components/organisms/bottom-nav/types.mjs +18 -0
  200. package/esm2022/lib/components/organisms/cards-carousel/cards-carousel.component.mjs +61 -0
  201. package/esm2022/lib/components/organisms/cards-carousel/types.mjs +2 -0
  202. package/esm2022/lib/components/organisms/comment-section/comment-section.component.mjs +537 -0
  203. package/esm2022/lib/components/organisms/comment-section/types.mjs +2 -0
  204. package/esm2022/lib/components/organisms/company-footer/company-footer.component.mjs +76 -0
  205. package/esm2022/lib/components/organisms/company-footer/types.mjs +2 -0
  206. package/esm2022/lib/components/organisms/data-table/data-table.component.mjs +1081 -0
  207. package/esm2022/lib/components/organisms/data-table/types.mjs +13 -0
  208. package/esm2022/lib/components/organisms/docs-sidebar/docs-sidebar.component.mjs +290 -0
  209. package/esm2022/lib/components/organisms/docs-sidebar/types.mjs +2 -0
  210. package/esm2022/lib/components/organisms/docs-toc/docs-toc.component.mjs +307 -0
  211. package/esm2022/lib/components/organisms/docs-toc/types.mjs +2 -0
  212. package/esm2022/lib/components/organisms/footer/footer.component.mjs +73 -0
  213. package/esm2022/lib/components/organisms/footer/types.mjs +2 -0
  214. package/esm2022/lib/components/organisms/form/factory.mjs +29 -0
  215. package/esm2022/lib/components/organisms/form/form-footer/form-footer.component.mjs +83 -0
  216. package/esm2022/lib/components/organisms/form/form.component.mjs +417 -0
  217. package/esm2022/lib/components/organisms/fun-header/fun-header.component.mjs +225 -0
  218. package/esm2022/lib/components/organisms/fun-header/types.mjs +2 -0
  219. package/esm2022/lib/components/organisms/header/header.component.mjs +51 -0
  220. package/esm2022/lib/components/organisms/header/types.mjs +2 -0
  221. package/esm2022/lib/components/organisms/infinite-list/infinite-list.component.mjs +620 -0
  222. package/esm2022/lib/components/organisms/infinite-list/types.mjs +15 -0
  223. package/esm2022/lib/components/organisms/item-list/item-list.component.mjs +418 -0
  224. package/esm2022/lib/components/organisms/item-list/types.mjs +2 -0
  225. package/esm2022/lib/components/organisms/login/login.component.mjs +741 -0
  226. package/esm2022/lib/components/organisms/login/types.mjs +11 -0
  227. package/esm2022/lib/components/organisms/menu/menu.component.mjs +206 -0
  228. package/esm2022/lib/components/organisms/menu/types.mjs +2 -0
  229. package/esm2022/lib/components/organisms/no-content/no-content.component.mjs +66 -0
  230. package/esm2022/lib/components/organisms/no-content/types.mjs +2 -0
  231. package/esm2022/lib/components/organisms/rotating-text/rotating-text.component.mjs +180 -0
  232. package/esm2022/lib/components/organisms/rotating-text/types.mjs +2 -0
  233. package/esm2022/lib/components/organisms/tabbed-content/tabbed-content.component.mjs +170 -0
  234. package/esm2022/lib/components/organisms/tabbed-content/types.mjs +2 -0
  235. package/esm2022/lib/components/organisms/terminal-404/terminal-404.component.mjs +214 -0
  236. package/esm2022/lib/components/organisms/terminal-404/types.mjs +2 -0
  237. package/esm2022/lib/components/organisms/testimonial-carousel/testimonial-carousel.component.mjs +72 -0
  238. package/esm2022/lib/components/organisms/testimonial-carousel/types.mjs +2 -0
  239. package/esm2022/lib/components/organisms/toolbar/toolbar.component.mjs +237 -0
  240. package/esm2022/lib/components/organisms/toolbar/types.mjs +2 -0
  241. package/esm2022/lib/components/organisms/wizard/types.mjs +10 -0
  242. package/esm2022/lib/components/organisms/wizard/wizard-footer/wizard-footer.component.mjs +111 -0
  243. package/esm2022/lib/components/organisms/wizard/wizard.component.mjs +161 -0
  244. package/esm2022/lib/components/templates/auth-background/auth-background.component.mjs +149 -0
  245. package/esm2022/lib/components/templates/auth-background/types.mjs +2 -0
  246. package/esm2022/lib/components/templates/docs-layout/docs-layout.component.mjs +221 -0
  247. package/esm2022/lib/components/templates/docs-layout/types.mjs +2 -0
  248. package/esm2022/lib/components/templates/docs-page/docs-page.component.mjs +251 -0
  249. package/esm2022/lib/components/templates/docs-page/types.mjs +2 -0
  250. package/esm2022/lib/components/templates/docs-shell/docs-shell.component.mjs +376 -0
  251. package/esm2022/lib/components/templates/docs-shell/types.mjs +2 -0
  252. package/esm2022/lib/components/templates/layout/layout.component.mjs +19 -0
  253. package/esm2022/lib/components/templates/maintenance-page/maintenance-page.component.mjs +153 -0
  254. package/esm2022/lib/components/templates/maintenance-page/types.mjs +2 -0
  255. package/esm2022/lib/components/templates/page-content/page-content.component.mjs +193 -0
  256. package/esm2022/lib/components/templates/page-content/types.mjs +2 -0
  257. package/esm2022/lib/components/templates/page-template/page-template.component.mjs +188 -0
  258. package/esm2022/lib/components/templates/page-template/types.mjs +2 -0
  259. package/esm2022/lib/components/templates/page-wrapper/page-wrapper.component.mjs +192 -0
  260. package/esm2022/lib/components/templates/page-wrapper/types.mjs +2 -0
  261. package/esm2022/lib/components/templates/simple/simple.component.mjs +125 -0
  262. package/esm2022/lib/components/templates/simple/types.mjs +2 -0
  263. package/esm2022/lib/components/types.mjs +58 -0
  264. package/esm2022/lib/config/company-footer.config.mjs +109 -0
  265. package/esm2022/lib/config/index.mjs +5 -0
  266. package/esm2022/lib/services/ads/ads-loader.service.mjs +120 -0
  267. package/esm2022/lib/services/ads/ads.service.mjs +236 -0
  268. package/esm2022/lib/services/ads/config.mjs +81 -0
  269. package/esm2022/lib/services/ads/index.mjs +13 -0
  270. package/esm2022/lib/services/ads/types.mjs +23 -0
  271. package/esm2022/lib/services/app-config/app-config.service.mjs +209 -0
  272. package/esm2022/lib/services/app-config/config.mjs +47 -0
  273. package/esm2022/lib/services/app-config/index.mjs +48 -0
  274. package/esm2022/lib/services/app-config/types.mjs +13 -0
  275. package/esm2022/lib/services/app-config/version.mjs +85 -0
  276. package/esm2022/lib/services/auth/auth-state.service.mjs +186 -0
  277. package/esm2022/lib/services/auth/auth.service.mjs +1087 -0
  278. package/esm2022/lib/services/auth/config.mjs +77 -0
  279. package/esm2022/lib/services/auth/device.service.mjs +135 -0
  280. package/esm2022/lib/services/auth/guards.mjs +194 -0
  281. package/esm2022/lib/services/auth/index.mjs +92 -0
  282. package/esm2022/lib/services/auth/interceptor.mjs +122 -0
  283. package/esm2022/lib/services/auth/oauth-callback.component.mjs +169 -0
  284. package/esm2022/lib/services/auth/oauth.service.mjs +318 -0
  285. package/esm2022/lib/services/auth/session.service.mjs +78 -0
  286. package/esm2022/lib/services/auth/storage.service.mjs +152 -0
  287. package/esm2022/lib/services/auth/sync.service.mjs +149 -0
  288. package/esm2022/lib/services/auth/token.service.mjs +122 -0
  289. package/esm2022/lib/services/auth/types.mjs +30 -0
  290. package/esm2022/lib/services/confirmation-dialog/confirmation-dialog.service.mjs +180 -0
  291. package/esm2022/lib/services/confirmation-dialog/types.mjs +14 -0
  292. package/esm2022/lib/services/docs/docs-navigation.service.mjs +91 -0
  293. package/esm2022/lib/services/download.service.mjs +80 -0
  294. package/esm2022/lib/services/feedback/config.mjs +49 -0
  295. package/esm2022/lib/services/feedback/feedback.service.mjs +296 -0
  296. package/esm2022/lib/services/feedback/index.mjs +44 -0
  297. package/esm2022/lib/services/feedback/types.mjs +30 -0
  298. package/esm2022/lib/services/firebase/analytics-error-handler.mjs +141 -0
  299. package/esm2022/lib/services/firebase/analytics-router-tracker.mjs +99 -0
  300. package/esm2022/lib/services/firebase/analytics-types.mjs +7 -0
  301. package/esm2022/lib/services/firebase/analytics.service.mjs +620 -0
  302. package/esm2022/lib/services/firebase/config.mjs +131 -0
  303. package/esm2022/lib/services/firebase/firebase.service.mjs +456 -0
  304. package/esm2022/lib/services/firebase/firestore-collection.mjs +262 -0
  305. package/esm2022/lib/services/firebase/firestore.service.mjs +536 -0
  306. package/esm2022/lib/services/firebase/index.mjs +56 -0
  307. package/esm2022/lib/services/firebase/messaging.service.mjs +597 -0
  308. package/esm2022/lib/services/firebase/notifications.service.mjs +210 -0
  309. package/esm2022/lib/services/firebase/shared-config.mjs +114 -0
  310. package/esm2022/lib/services/firebase/storage.service.mjs +472 -0
  311. package/esm2022/lib/services/firebase/types.mjs +18 -0
  312. package/esm2022/lib/services/firebase/utils/path-builder.mjs +195 -0
  313. package/esm2022/lib/services/firebase/utils/query-builder.mjs +302 -0
  314. package/esm2022/lib/services/i18n/config.mjs +110 -0
  315. package/esm2022/lib/services/i18n/default-content.mjs +563 -0
  316. package/esm2022/lib/services/i18n/i18n.service.mjs +196 -0
  317. package/esm2022/lib/services/i18n/index.mjs +13 -0
  318. package/esm2022/lib/services/i18n/input-i18n.helper.mjs +97 -0
  319. package/esm2022/lib/services/i18n/translate.pipe.mjs +50 -0
  320. package/esm2022/lib/services/i18n/types.mjs +15 -0
  321. package/esm2022/lib/services/icons.service.mjs +76 -0
  322. package/esm2022/lib/services/image/image.service.mjs +244 -0
  323. package/esm2022/lib/services/image/index.mjs +3 -0
  324. package/esm2022/lib/services/image/types.mjs +13 -0
  325. package/esm2022/lib/services/in-app-browser.service.mjs +35 -0
  326. package/esm2022/lib/services/link-processor.service.mjs +259 -0
  327. package/esm2022/lib/services/local-storage.service.mjs +37 -0
  328. package/esm2022/lib/services/locale.service.mjs +75 -0
  329. package/esm2022/lib/services/meta/index.mjs +3 -0
  330. package/esm2022/lib/services/meta/meta.service.mjs +63 -0
  331. package/esm2022/lib/services/meta/types.mjs +2 -0
  332. package/esm2022/lib/services/modal/modal.service.mjs +212 -0
  333. package/esm2022/lib/services/modal/simple-modal-content.component.mjs +133 -0
  334. package/esm2022/lib/services/modal/types.mjs +26 -0
  335. package/esm2022/lib/services/navigation/index.mjs +3 -0
  336. package/esm2022/lib/services/navigation/navigation.service.mjs +216 -0
  337. package/esm2022/lib/services/navigation/types.mjs +16 -0
  338. package/esm2022/lib/services/pagination/index.mjs +5 -0
  339. package/esm2022/lib/services/pagination/pagination.service.mjs +218 -0
  340. package/esm2022/lib/services/pagination/types.mjs +14 -0
  341. package/esm2022/lib/services/presets/config.mjs +46 -0
  342. package/esm2022/lib/services/presets/index.mjs +5 -0
  343. package/esm2022/lib/services/presets/preset.service.mjs +104 -0
  344. package/esm2022/lib/services/presets/types.mjs +2 -0
  345. package/esm2022/lib/services/qr-generator/qr-generator.service.mjs +341 -0
  346. package/esm2022/lib/services/qr-generator/types.mjs +46 -0
  347. package/esm2022/lib/services/skeleton/config.mjs +79 -0
  348. package/esm2022/lib/services/skeleton/directives/loading.directive.mjs +215 -0
  349. package/esm2022/lib/services/skeleton/index.mjs +16 -0
  350. package/esm2022/lib/services/skeleton/skeleton.service.mjs +198 -0
  351. package/esm2022/lib/services/skeleton/templates/detail-skeleton.component.mjs +223 -0
  352. package/esm2022/lib/services/skeleton/templates/form-skeleton.component.mjs +127 -0
  353. package/esm2022/lib/services/skeleton/templates/grid-skeleton.component.mjs +154 -0
  354. package/esm2022/lib/services/skeleton/templates/list-skeleton.component.mjs +110 -0
  355. package/esm2022/lib/services/skeleton/templates/profile-skeleton.component.mjs +207 -0
  356. package/esm2022/lib/services/skeleton/templates/table-skeleton.component.mjs +116 -0
  357. package/esm2022/lib/services/skeleton/types.mjs +11 -0
  358. package/esm2022/lib/services/theme.service.mjs +144 -0
  359. package/esm2022/lib/services/toast.service.mjs +47 -0
  360. package/esm2022/lib/services/types.mjs +5 -0
  361. package/esm2022/lib/shared/constants/storage.mjs +3 -0
  362. package/esm2022/lib/shared/pipes/process-links.pipe.mjs +69 -0
  363. package/esm2022/lib/shared/utils/dom.mjs +27 -0
  364. package/esm2022/lib/shared/utils/form-defaults.mjs +112 -0
  365. package/esm2022/lib/shared/utils/styles.mjs +37 -0
  366. package/esm2022/lib/shared/utils/text.mjs +12 -0
  367. package/esm2022/lib/version.mjs +6 -0
  368. package/esm2022/public-api.mjs +333 -0
  369. package/esm2022/valtech-components.mjs +5 -0
  370. package/fesm2022/valtech-components.mjs +42067 -0
  371. package/fesm2022/valtech-components.mjs.map +1 -0
  372. package/index.d.ts +5 -0
  373. package/lib/components/atoms/avatar/avatar.component.d.ts +36 -0
  374. package/lib/components/atoms/avatar/types.d.ts +15 -0
  375. package/lib/components/atoms/box/box.component.d.ts +26 -0
  376. package/lib/components/atoms/box/types.d.ts +19 -0
  377. package/lib/components/atoms/button/button.component.d.ts +63 -0
  378. package/lib/components/atoms/button/factory.d.ts +71 -0
  379. package/lib/components/atoms/countdown/countdown.component.d.ts +38 -0
  380. package/lib/components/atoms/countdown/types.d.ts +108 -0
  381. package/lib/components/atoms/display/display.component.d.ts +19 -0
  382. package/lib/components/atoms/display/types.d.ts +33 -0
  383. package/lib/components/atoms/divider/divider.component.d.ts +27 -0
  384. package/lib/components/atoms/divider/types.d.ts +12 -0
  385. package/lib/components/atoms/fab/fab.component.d.ts +36 -0
  386. package/lib/components/atoms/fab/types.d.ts +45 -0
  387. package/lib/components/atoms/horizontal-scroll/horizontal-scroll.component.d.ts +41 -0
  388. package/lib/components/atoms/horizontal-scroll/types.d.ts +13 -0
  389. package/lib/components/atoms/href/href.component.d.ts +25 -0
  390. package/lib/components/atoms/href/types.d.ts +19 -0
  391. package/lib/components/atoms/icon/icon.component.d.ts +18 -0
  392. package/lib/components/atoms/icon/types.d.ts +13 -0
  393. package/lib/components/atoms/image/image.component.d.ts +41 -0
  394. package/lib/components/atoms/image/types.d.ts +37 -0
  395. package/lib/components/atoms/price-tag/price-tag.component.d.ts +15 -0
  396. package/lib/components/atoms/price-tag/types.d.ts +59 -0
  397. package/lib/components/atoms/progress-bar/progress-bar.component.d.ts +35 -0
  398. package/lib/components/atoms/progress-bar/types.d.ts +19 -0
  399. package/lib/components/atoms/progress-ring/progress-ring.component.d.ts +20 -0
  400. package/lib/components/atoms/progress-ring/types.d.ts +24 -0
  401. package/lib/components/atoms/qr-code/qr-code.component.d.ts +33 -0
  402. package/lib/components/atoms/qr-code/types.d.ts +124 -0
  403. package/lib/components/atoms/rights-footer/rights-footer.component.d.ts +53 -0
  404. package/lib/components/atoms/rights-footer/types.d.ts +21 -0
  405. package/lib/components/atoms/skeleton/skeleton.component.d.ts +12 -0
  406. package/lib/components/atoms/skeleton/types.d.ts +29 -0
  407. package/lib/components/atoms/text/text.component.d.ts +33 -0
  408. package/lib/components/atoms/text/types.d.ts +42 -0
  409. package/lib/components/atoms/title/title.component.d.ts +21 -0
  410. package/lib/components/atoms/title/types.d.ts +36 -0
  411. package/lib/components/molecules/accordion/accordion.component.d.ts +18 -0
  412. package/lib/components/molecules/accordion/types.d.ts +47 -0
  413. package/lib/components/molecules/action-card/action-card.component.d.ts +90 -0
  414. package/lib/components/molecules/action-card/types.d.ts +83 -0
  415. package/lib/components/molecules/action-header/action-header.component.d.ts +7 -0
  416. package/lib/components/molecules/action-header/types.d.ts +6 -0
  417. package/lib/components/molecules/ad-slot/ad-slot.component.d.ts +69 -0
  418. package/lib/components/molecules/alert-box/alert-box.component.d.ts +39 -0
  419. package/lib/components/molecules/alert-box/types.d.ts +37 -0
  420. package/lib/components/molecules/breadcrumb/breadcrumb.component.d.ts +22 -0
  421. package/lib/components/molecules/breadcrumb/types.d.ts +45 -0
  422. package/lib/components/molecules/button-group/button-group.component.d.ts +23 -0
  423. package/lib/components/molecules/button-group/types.d.ts +13 -0
  424. package/lib/components/molecules/card/card.component.d.ts +49 -0
  425. package/lib/components/molecules/card/types.d.ts +32 -0
  426. package/lib/components/molecules/check-input/check-input.component.d.ts +36 -0
  427. package/lib/components/molecules/chip-group/chip-group.component.d.ts +22 -0
  428. package/lib/components/molecules/chip-group/types.d.ts +65 -0
  429. package/lib/components/molecules/code-display/code-display.component.d.ts +24 -0
  430. package/lib/components/molecules/code-display/types.d.ts +10 -0
  431. package/lib/components/molecules/command-display/command-display.component.d.ts +11 -0
  432. package/lib/components/molecules/command-display/types.d.ts +3 -0
  433. package/lib/components/molecules/comment/comment.component.d.ts +42 -0
  434. package/lib/components/molecules/comment/types.d.ts +171 -0
  435. package/lib/components/molecules/comment-input/comment-input.component.d.ts +16 -0
  436. package/lib/components/molecules/comment-input/types.d.ts +59 -0
  437. package/lib/components/molecules/content-loader/content-loader.component.d.ts +18 -0
  438. package/lib/components/molecules/content-loader/types.d.ts +15 -0
  439. package/lib/components/molecules/content-reaction/content-reaction.component.d.ts +58 -0
  440. package/lib/components/molecules/content-reaction/types.d.ts +77 -0
  441. package/lib/components/molecules/currency-input/currency-input.component.d.ts +40 -0
  442. package/lib/components/molecules/currency-input/types.d.ts +96 -0
  443. package/lib/components/molecules/date-input/date-input.component.d.ts +40 -0
  444. package/lib/components/molecules/date-input/types.d.ts +74 -0
  445. package/lib/components/molecules/date-range-input/date-range-input.component.d.ts +50 -0
  446. package/lib/components/molecules/date-range-input/types.d.ts +109 -0
  447. package/lib/components/molecules/docs-api-table/docs-api-table.component.d.ts +41 -0
  448. package/lib/components/molecules/docs-api-table/types.d.ts +62 -0
  449. package/lib/components/molecules/docs-breadcrumb/docs-breadcrumb.component.d.ts +31 -0
  450. package/lib/components/molecules/docs-breadcrumb/types.d.ts +20 -0
  451. package/lib/components/molecules/docs-callout/docs-callout.component.d.ts +17 -0
  452. package/lib/components/molecules/docs-code-example/docs-code-example.component.d.ts +45 -0
  453. package/lib/components/molecules/docs-code-example/types.d.ts +63 -0
  454. package/lib/components/molecules/docs-nav-links/docs-nav-links.component.d.ts +30 -0
  455. package/lib/components/molecules/docs-nav-links/types.d.ts +31 -0
  456. package/lib/components/molecules/docs-search/docs-search.component.d.ts +47 -0
  457. package/lib/components/molecules/docs-search/types.d.ts +27 -0
  458. package/lib/components/molecules/docs-section/docs-section.component.d.ts +29 -0
  459. package/lib/components/molecules/docs-section/types.d.ts +27 -0
  460. package/lib/components/molecules/email-input/email-input.component.d.ts +34 -0
  461. package/lib/components/molecules/expandable-text/expandable-text.component.d.ts +23 -0
  462. package/lib/components/molecules/expandable-text/types.d.ts +14 -0
  463. package/lib/components/molecules/features-list/features-list.component.d.ts +66 -0
  464. package/lib/components/molecules/features-list/types.d.ts +36 -0
  465. package/lib/components/molecules/feedback-form/feedback-form.component.d.ts +58 -0
  466. package/lib/components/molecules/feedback-form/types.d.ts +54 -0
  467. package/lib/components/molecules/file-input/file-input.component.d.ts +25 -0
  468. package/lib/components/molecules/file-input/types.d.ts +72 -0
  469. package/lib/components/molecules/footer-links/footer-links.component.d.ts +47 -0
  470. package/lib/components/molecules/footer-links/types.d.ts +50 -0
  471. package/lib/components/molecules/glow-card/glow-card.component.d.ts +60 -0
  472. package/lib/components/molecules/glow-card/types.d.ts +94 -0
  473. package/lib/components/molecules/hint/hint.component.d.ts +19 -0
  474. package/lib/components/molecules/hour-input/hour-input.component.d.ts +15 -0
  475. package/lib/components/molecules/image-crop/image-crop.component.d.ts +59 -0
  476. package/lib/components/molecules/info/info.component.d.ts +9 -0
  477. package/lib/components/molecules/info/types.d.ts +10 -0
  478. package/lib/components/molecules/language-selector/language-selector.component.d.ts +40 -0
  479. package/lib/components/molecules/language-selector/types.d.ts +82 -0
  480. package/lib/components/molecules/layered-card/layered-card.component.d.ts +10 -0
  481. package/lib/components/molecules/layered-card/types.d.ts +15 -0
  482. package/lib/components/molecules/link/link.component.d.ts +24 -0
  483. package/lib/components/molecules/link/types.d.ts +19 -0
  484. package/lib/components/molecules/linked-providers/linked-providers.component.d.ts +30 -0
  485. package/lib/components/molecules/linked-providers/types.d.ts +38 -0
  486. package/lib/components/molecules/links-accordion/links-accordion.component.d.ts +61 -0
  487. package/lib/components/molecules/links-accordion/types.d.ts +39 -0
  488. package/lib/components/molecules/links-cake/links-cake.component.d.ts +17 -0
  489. package/lib/components/molecules/links-cake/types.d.ts +13 -0
  490. package/lib/components/molecules/multi-select-search/multi-select-search.component.d.ts +76 -0
  491. package/lib/components/molecules/notes-box/notes-box.component.d.ts +21 -0
  492. package/lib/components/molecules/notes-box/types.d.ts +21 -0
  493. package/lib/components/molecules/number-from-to/number-from-to.component.d.ts +27 -0
  494. package/lib/components/molecules/number-from-to/types.d.ts +76 -0
  495. package/lib/components/molecules/number-input/number-input.component.d.ts +16 -0
  496. package/lib/components/molecules/number-stepper/number-stepper.component.d.ts +38 -0
  497. package/lib/components/molecules/number-stepper/types.d.ts +88 -0
  498. package/lib/components/molecules/pagination/pagination.component.d.ts +15 -0
  499. package/lib/components/molecules/pagination/types.d.ts +41 -0
  500. package/lib/components/molecules/participant-card/participant-card.component.d.ts +34 -0
  501. package/lib/components/molecules/participant-card/types.d.ts +132 -0
  502. package/lib/components/molecules/password-input/password-input.component.d.ts +37 -0
  503. package/lib/components/molecules/phone-input/phone-input.component.d.ts +59 -0
  504. package/lib/components/molecules/phone-input/types.d.ts +98 -0
  505. package/lib/components/molecules/pill/pill.component.d.ts +33 -0
  506. package/lib/components/molecules/pill/types.d.ts +9 -0
  507. package/lib/components/molecules/pin-input/pin-input.component.d.ts +21 -0
  508. package/lib/components/molecules/pin-input/types.d.ts +69 -0
  509. package/lib/components/molecules/plain-code-box/plain-code-box.component.d.ts +22 -0
  510. package/lib/components/molecules/plain-code-box/types.d.ts +10 -0
  511. package/lib/components/molecules/popover-selector/popover-selector.component.d.ts +42 -0
  512. package/lib/components/molecules/popover-selector/types.d.ts +69 -0
  513. package/lib/components/molecules/progress-status/progress-status.component.d.ts +23 -0
  514. package/lib/components/molecules/progress-status/types.d.ts +20 -0
  515. package/lib/components/molecules/prompter/prompter.component.d.ts +10 -0
  516. package/lib/components/molecules/prompter/types.d.ts +25 -0
  517. package/lib/components/molecules/quote-box/quote-box.component.d.ts +26 -0
  518. package/lib/components/molecules/radio-input/radio-input.component.d.ts +15 -0
  519. package/lib/components/molecules/raffle-status-card/raffle-status-card.component.d.ts +21 -0
  520. package/lib/components/molecules/raffle-status-card/types.d.ts +108 -0
  521. package/lib/components/molecules/range-input/range-input.component.d.ts +25 -0
  522. package/lib/components/molecules/range-input/types.d.ts +59 -0
  523. package/lib/components/molecules/rating/rating.component.d.ts +23 -0
  524. package/lib/components/molecules/rating/types.d.ts +41 -0
  525. package/lib/components/molecules/recap-card/recap-card.component.d.ts +36 -0
  526. package/lib/components/molecules/recap-card/types.d.ts +30 -0
  527. package/lib/components/molecules/refresher/refresher.component.d.ts +84 -0
  528. package/lib/components/molecules/refresher/types.d.ts +86 -0
  529. package/lib/components/molecules/searchbar/searchbar.component.d.ts +43 -0
  530. package/lib/components/molecules/searchbar/types.d.ts +33 -0
  531. package/lib/components/molecules/segment-control/segment-control.component.d.ts +35 -0
  532. package/lib/components/molecules/segment-control/types.d.ts +46 -0
  533. package/lib/components/molecules/select-input/select-input.component.d.ts +48 -0
  534. package/lib/components/molecules/select-search/select-search.component.d.ts +76 -0
  535. package/lib/components/molecules/share-buttons/share-buttons.component.d.ts +22 -0
  536. package/lib/components/molecules/share-buttons/types.d.ts +108 -0
  537. package/lib/components/molecules/stats-card/stats-card.component.d.ts +20 -0
  538. package/lib/components/molecules/stats-card/types.d.ts +60 -0
  539. package/lib/components/molecules/stepper/stepper.component.d.ts +31 -0
  540. package/lib/components/molecules/stepper/types.d.ts +66 -0
  541. package/lib/components/molecules/swipe-carousel/swipe-carousel.component.d.ts +66 -0
  542. package/lib/components/molecules/swipe-carousel/types.d.ts +35 -0
  543. package/lib/components/molecules/tabs/tabs.component.d.ts +34 -0
  544. package/lib/components/molecules/tabs/types.d.ts +45 -0
  545. package/lib/components/molecules/testimonial-card/testimonial-card.component.d.ts +41 -0
  546. package/lib/components/molecules/testimonial-card/types.d.ts +25 -0
  547. package/lib/components/molecules/text-input/text-input.component.d.ts +42 -0
  548. package/lib/components/molecules/textarea-input/textarea-input.component.d.ts +46 -0
  549. package/lib/components/molecules/textarea-input/types.d.ts +74 -0
  550. package/lib/components/molecules/ticket-grid/ticket-grid.component.d.ts +40 -0
  551. package/lib/components/molecules/ticket-grid/types.d.ts +122 -0
  552. package/lib/components/molecules/timeline/timeline.component.d.ts +14 -0
  553. package/lib/components/molecules/timeline/types.d.ts +39 -0
  554. package/lib/components/molecules/title-block/title-block.component.d.ts +12 -0
  555. package/lib/components/molecules/title-block/types.d.ts +15 -0
  556. package/lib/components/molecules/toggle-input/toggle-input.component.d.ts +39 -0
  557. package/lib/components/molecules/toggle-input/types.d.ts +30 -0
  558. package/lib/components/molecules/update-banner/update-banner.component.d.ts +42 -0
  559. package/lib/components/molecules/username-input/types.d.ts +34 -0
  560. package/lib/components/molecules/username-input/username-input.component.d.ts +45 -0
  561. package/lib/components/molecules/winner-display/types.d.ts +103 -0
  562. package/lib/components/molecules/winner-display/winner-display.component.d.ts +36 -0
  563. package/lib/components/organisms/article/article.component.d.ts +108 -0
  564. package/lib/components/organisms/article/types.d.ts +359 -0
  565. package/lib/components/organisms/avatar-upload/avatar-upload.component.d.ts +84 -0
  566. package/lib/components/organisms/avatar-upload/types.d.ts +62 -0
  567. package/lib/components/organisms/banner/banner.component.d.ts +16 -0
  568. package/lib/components/organisms/banner/types.d.ts +29 -0
  569. package/lib/components/organisms/bottom-nav/bottom-nav.component.d.ts +88 -0
  570. package/lib/components/organisms/bottom-nav/types.d.ts +118 -0
  571. package/lib/components/organisms/cards-carousel/cards-carousel.component.d.ts +30 -0
  572. package/lib/components/organisms/cards-carousel/types.d.ts +11 -0
  573. package/lib/components/organisms/comment-section/comment-section.component.d.ts +50 -0
  574. package/lib/components/organisms/comment-section/types.d.ts +144 -0
  575. package/lib/components/organisms/company-footer/company-footer.component.d.ts +37 -0
  576. package/lib/components/organisms/company-footer/types.d.ts +15 -0
  577. package/lib/components/organisms/data-table/data-table.component.d.ts +63 -0
  578. package/lib/components/organisms/data-table/types.d.ts +219 -0
  579. package/lib/components/organisms/docs-sidebar/docs-sidebar.component.d.ts +51 -0
  580. package/lib/components/organisms/docs-sidebar/types.d.ts +93 -0
  581. package/lib/components/organisms/docs-toc/docs-toc.component.d.ts +62 -0
  582. package/lib/components/organisms/docs-toc/types.d.ts +62 -0
  583. package/lib/components/organisms/footer/footer.component.d.ts +36 -0
  584. package/lib/components/organisms/footer/types.d.ts +16 -0
  585. package/lib/components/organisms/form/factory.d.ts +17 -0
  586. package/lib/components/organisms/form/form-footer/form-footer.component.d.ts +17 -0
  587. package/lib/components/organisms/form/form.component.d.ts +48 -0
  588. package/lib/components/organisms/fun-header/fun-header.component.d.ts +72 -0
  589. package/lib/components/organisms/fun-header/types.d.ts +28 -0
  590. package/lib/components/organisms/header/header.component.d.ts +22 -0
  591. package/lib/components/organisms/header/types.d.ts +16 -0
  592. package/lib/components/organisms/infinite-list/infinite-list.component.d.ts +113 -0
  593. package/lib/components/organisms/infinite-list/types.d.ts +197 -0
  594. package/lib/components/organisms/item-list/item-list.component.d.ts +43 -0
  595. package/lib/components/organisms/item-list/types.d.ts +126 -0
  596. package/lib/components/organisms/login/login.component.d.ts +79 -0
  597. package/lib/components/organisms/login/types.d.ts +70 -0
  598. package/lib/components/organisms/menu/menu.component.d.ts +44 -0
  599. package/lib/components/organisms/menu/types.d.ts +23 -0
  600. package/lib/components/organisms/no-content/no-content.component.d.ts +14 -0
  601. package/lib/components/organisms/no-content/types.d.ts +17 -0
  602. package/lib/components/organisms/rotating-text/rotating-text.component.d.ts +47 -0
  603. package/lib/components/organisms/rotating-text/types.d.ts +28 -0
  604. package/lib/components/organisms/tabbed-content/tabbed-content.component.d.ts +65 -0
  605. package/lib/components/organisms/tabbed-content/types.d.ts +53 -0
  606. package/lib/components/organisms/terminal-404/terminal-404.component.d.ts +42 -0
  607. package/lib/components/organisms/terminal-404/types.d.ts +22 -0
  608. package/lib/components/organisms/testimonial-carousel/testimonial-carousel.component.d.ts +33 -0
  609. package/lib/components/organisms/testimonial-carousel/types.d.ts +8 -0
  610. package/lib/components/organisms/toolbar/toolbar.component.d.ts +85 -0
  611. package/lib/components/organisms/toolbar/types.d.ts +31 -0
  612. package/lib/components/organisms/wizard/types.d.ts +42 -0
  613. package/lib/components/organisms/wizard/wizard-footer/wizard-footer.component.d.ts +23 -0
  614. package/lib/components/organisms/wizard/wizard.component.d.ts +27 -0
  615. package/lib/components/templates/auth-background/auth-background.component.d.ts +59 -0
  616. package/lib/components/templates/auth-background/types.d.ts +30 -0
  617. package/lib/components/templates/docs-layout/docs-layout.component.d.ts +42 -0
  618. package/lib/components/templates/docs-layout/types.d.ts +39 -0
  619. package/lib/components/templates/docs-page/docs-page.component.d.ts +61 -0
  620. package/lib/components/templates/docs-page/types.d.ts +121 -0
  621. package/lib/components/templates/docs-shell/docs-shell.component.d.ts +33 -0
  622. package/lib/components/templates/docs-shell/types.d.ts +152 -0
  623. package/lib/components/templates/layout/layout.component.d.ts +5 -0
  624. package/lib/components/templates/maintenance-page/maintenance-page.component.d.ts +57 -0
  625. package/lib/components/templates/maintenance-page/types.d.ts +12 -0
  626. package/lib/components/templates/page-content/page-content.component.d.ts +107 -0
  627. package/lib/components/templates/page-content/types.d.ts +27 -0
  628. package/lib/components/templates/page-template/page-template.component.d.ts +54 -0
  629. package/lib/components/templates/page-template/types.d.ts +17 -0
  630. package/lib/components/templates/page-wrapper/page-wrapper.component.d.ts +89 -0
  631. package/lib/components/templates/page-wrapper/types.d.ts +19 -0
  632. package/lib/components/templates/simple/simple.component.d.ts +14 -0
  633. package/lib/components/templates/simple/types.d.ts +10 -0
  634. package/lib/components/types.d.ts +289 -0
  635. package/lib/config/company-footer.config.d.ts +98 -0
  636. package/lib/services/ads/ads-loader.service.d.ts +41 -0
  637. package/lib/services/ads/ads.service.d.ts +99 -0
  638. package/lib/services/ads/config.d.ts +53 -0
  639. package/lib/services/ads/index.d.ts +9 -0
  640. package/lib/services/ads/types.d.ts +106 -0
  641. package/lib/services/app-config/app-config.service.d.ts +115 -0
  642. package/lib/services/app-config/config.d.ts +31 -0
  643. package/lib/services/app-config/index.d.ts +47 -0
  644. package/lib/services/app-config/types.d.ts +54 -0
  645. package/lib/services/app-config/version.d.ts +64 -0
  646. package/lib/services/auth/auth-state.service.d.ts +92 -0
  647. package/lib/services/auth/auth.service.d.ts +401 -0
  648. package/lib/services/auth/config.d.ts +38 -0
  649. package/lib/services/auth/device.service.d.ts +101 -0
  650. package/lib/services/auth/guards.d.ts +123 -0
  651. package/lib/services/auth/index.d.ts +83 -0
  652. package/lib/services/auth/interceptor.d.ts +22 -0
  653. package/lib/services/auth/oauth-callback.component.d.ts +34 -0
  654. package/lib/services/auth/oauth.service.d.ts +99 -0
  655. package/lib/services/auth/session.service.d.ts +60 -0
  656. package/lib/services/auth/storage.service.d.ts +52 -0
  657. package/lib/services/auth/sync.service.d.ts +49 -0
  658. package/lib/services/auth/token.service.d.ts +57 -0
  659. package/lib/services/auth/types.d.ts +842 -0
  660. package/lib/services/confirmation-dialog/confirmation-dialog.service.d.ts +71 -0
  661. package/lib/services/confirmation-dialog/types.d.ts +61 -0
  662. package/lib/services/docs/docs-navigation.service.d.ts +51 -0
  663. package/lib/services/download.service.d.ts +21 -0
  664. package/lib/services/feedback/config.d.ts +35 -0
  665. package/lib/services/feedback/feedback.service.d.ts +134 -0
  666. package/lib/services/feedback/index.d.ts +40 -0
  667. package/lib/services/feedback/types.d.ts +173 -0
  668. package/lib/services/firebase/analytics-error-handler.d.ts +54 -0
  669. package/lib/services/firebase/analytics-router-tracker.d.ts +51 -0
  670. package/lib/services/firebase/analytics-types.d.ts +221 -0
  671. package/lib/services/firebase/analytics.service.d.ts +256 -0
  672. package/lib/services/firebase/config.d.ts +49 -0
  673. package/lib/services/firebase/firebase.service.d.ts +251 -0
  674. package/lib/services/firebase/firestore-collection.d.ts +180 -0
  675. package/lib/services/firebase/firestore.service.d.ts +312 -0
  676. package/lib/services/firebase/index.d.ts +44 -0
  677. package/lib/services/firebase/messaging.service.d.ts +293 -0
  678. package/lib/services/firebase/notifications.service.d.ts +126 -0
  679. package/lib/services/firebase/shared-config.d.ts +118 -0
  680. package/lib/services/firebase/storage.service.d.ts +238 -0
  681. package/lib/services/firebase/types.d.ts +374 -0
  682. package/lib/services/firebase/utils/path-builder.d.ts +132 -0
  683. package/lib/services/firebase/utils/query-builder.d.ts +210 -0
  684. package/lib/services/i18n/config.d.ts +29 -0
  685. package/lib/services/i18n/default-content.d.ts +30 -0
  686. package/lib/services/i18n/i18n.service.d.ts +112 -0
  687. package/lib/services/i18n/index.d.ts +6 -0
  688. package/lib/services/i18n/input-i18n.helper.d.ts +70 -0
  689. package/lib/services/i18n/translate.pipe.d.ts +36 -0
  690. package/lib/services/i18n/types.d.ts +93 -0
  691. package/lib/services/icons.service.d.ts +9 -0
  692. package/lib/services/image/image.service.d.ts +76 -0
  693. package/lib/services/image/types.d.ts +74 -0
  694. package/lib/services/in-app-browser.service.d.ts +16 -0
  695. package/lib/services/link-processor.service.d.ts +104 -0
  696. package/lib/services/local-storage.service.d.ts +27 -0
  697. package/lib/services/locale.service.d.ts +52 -0
  698. package/lib/services/meta/meta.service.d.ts +23 -0
  699. package/lib/services/meta/types.d.ts +12 -0
  700. package/lib/services/modal/modal.service.d.ts +100 -0
  701. package/lib/services/modal/simple-modal-content.component.d.ts +19 -0
  702. package/lib/services/modal/types.d.ts +155 -0
  703. package/lib/services/navigation/navigation.service.d.ts +134 -0
  704. package/lib/services/navigation/types.d.ts +67 -0
  705. package/lib/services/pagination/index.d.ts +2 -0
  706. package/lib/services/pagination/pagination.service.d.ts +43 -0
  707. package/lib/services/pagination/types.d.ts +113 -0
  708. package/lib/services/presets/config.d.ts +32 -0
  709. package/lib/services/presets/index.d.ts +3 -0
  710. package/lib/services/presets/preset.service.d.ts +69 -0
  711. package/lib/services/presets/types.d.ts +39 -0
  712. package/lib/services/qr-generator/qr-generator.service.d.ts +115 -0
  713. package/lib/services/qr-generator/types.d.ts +141 -0
  714. package/lib/services/skeleton/config.d.ts +30 -0
  715. package/lib/services/skeleton/directives/loading.directive.d.ts +71 -0
  716. package/lib/services/skeleton/index.d.ts +10 -0
  717. package/lib/services/skeleton/skeleton.service.d.ts +127 -0
  718. package/lib/services/skeleton/templates/detail-skeleton.component.d.ts +18 -0
  719. package/lib/services/skeleton/templates/form-skeleton.component.d.ts +22 -0
  720. package/lib/services/skeleton/templates/grid-skeleton.component.d.ts +18 -0
  721. package/lib/services/skeleton/templates/list-skeleton.component.d.ts +17 -0
  722. package/lib/services/skeleton/templates/profile-skeleton.component.d.ts +20 -0
  723. package/lib/services/skeleton/templates/table-skeleton.component.d.ts +17 -0
  724. package/lib/services/skeleton/types.d.ts +111 -0
  725. package/lib/services/theme.service.d.ts +70 -0
  726. package/lib/services/toast.service.d.ts +22 -0
  727. package/lib/services/types.d.ts +1 -0
  728. package/lib/shared/constants/storage.d.ts +2 -0
  729. package/lib/shared/pipes/process-links.pipe.d.ts +55 -0
  730. package/lib/shared/utils/dom.d.ts +13 -0
  731. package/lib/shared/utils/form-defaults.d.ts +30 -0
  732. package/lib/shared/utils/styles.d.ts +13 -0
  733. package/lib/shared/utils/text.d.ts +11 -0
  734. package/lib/version.d.ts +5 -0
  735. package/package.json +16 -64
  736. package/public-api.d.ts +295 -0
  737. package/.editorconfig +0 -16
  738. package/.prettierignore +0 -6
  739. package/.prettierrc +0 -30
  740. package/.storybook/main.ts +0 -21
  741. package/.storybook/preview-body.html +0 -60
  742. package/.storybook/preview-head.html +0 -48
  743. package/.storybook/preview.ts +0 -52
  744. package/.storybook/tsconfig.json +0 -12
  745. package/I18N-COMPONENTS-MIGRATION.md +0 -496
  746. package/angular.json +0 -60
  747. package/ng-package.json +0 -16
  748. package/scripts/publish.sh +0 -30
  749. package/scripts/update-apps.sh +0 -94
  750. package/src/lib/components/atoms/avatar/avatar.component.scss +0 -31
  751. package/src/lib/components/atoms/avatar/avatar.component.ts +0 -95
  752. package/src/lib/components/atoms/avatar/avatar.stories.ts +0 -243
  753. package/src/lib/components/atoms/avatar/types.ts +0 -15
  754. package/src/lib/components/atoms/box/box.component.scss +0 -57
  755. package/src/lib/components/atoms/box/box.component.ts +0 -77
  756. package/src/lib/components/atoms/box/box.stories.ts +0 -280
  757. package/src/lib/components/atoms/box/types.ts +0 -20
  758. package/src/lib/components/atoms/button/button.component.scss +0 -20
  759. package/src/lib/components/atoms/button/button.component.ts +0 -174
  760. package/src/lib/components/atoms/button/button.stories.ts +0 -293
  761. package/src/lib/components/atoms/button/factory.ts +0 -444
  762. package/src/lib/components/atoms/countdown/countdown.component.scss +0 -256
  763. package/src/lib/components/atoms/countdown/countdown.component.ts +0 -293
  764. package/src/lib/components/atoms/countdown/countdown.stories.ts +0 -316
  765. package/src/lib/components/atoms/countdown/types.ts +0 -144
  766. package/src/lib/components/atoms/display/display.component.scss +0 -17
  767. package/src/lib/components/atoms/display/display.component.ts +0 -54
  768. package/src/lib/components/atoms/display/display.stories.ts +0 -185
  769. package/src/lib/components/atoms/display/types.ts +0 -35
  770. package/src/lib/components/atoms/divider/divider.component.scss +0 -62
  771. package/src/lib/components/atoms/divider/divider.component.ts +0 -35
  772. package/src/lib/components/atoms/divider/divider.stories.ts +0 -202
  773. package/src/lib/components/atoms/divider/types.ts +0 -12
  774. package/src/lib/components/atoms/fab/fab.component.scss +0 -26
  775. package/src/lib/components/atoms/fab/fab.component.ts +0 -166
  776. package/src/lib/components/atoms/fab/fab.stories.ts +0 -360
  777. package/src/lib/components/atoms/fab/types.ts +0 -47
  778. package/src/lib/components/atoms/horizontal-scroll/horizontal-scroll.component.scss +0 -39
  779. package/src/lib/components/atoms/horizontal-scroll/horizontal-scroll.component.ts +0 -67
  780. package/src/lib/components/atoms/horizontal-scroll/horizontal-scroll.stories.ts +0 -351
  781. package/src/lib/components/atoms/horizontal-scroll/types.ts +0 -13
  782. package/src/lib/components/atoms/href/href.component.scss +0 -25
  783. package/src/lib/components/atoms/href/href.component.ts +0 -64
  784. package/src/lib/components/atoms/href/href.stories.ts +0 -214
  785. package/src/lib/components/atoms/href/types.ts +0 -20
  786. package/src/lib/components/atoms/icon/icon.component.scss +0 -33
  787. package/src/lib/components/atoms/icon/icon.component.ts +0 -38
  788. package/src/lib/components/atoms/icon/icon.stories.ts +0 -160
  789. package/src/lib/components/atoms/icon/types.ts +0 -14
  790. package/src/lib/components/atoms/image/README.md +0 -0
  791. package/src/lib/components/atoms/image/image.component.scss +0 -281
  792. package/src/lib/components/atoms/image/image.component.ts +0 -399
  793. package/src/lib/components/atoms/image/image.stories.ts +0 -317
  794. package/src/lib/components/atoms/image/types.ts +0 -37
  795. package/src/lib/components/atoms/price-tag/price-tag.component.scss +0 -228
  796. package/src/lib/components/atoms/price-tag/price-tag.component.ts +0 -188
  797. package/src/lib/components/atoms/price-tag/price-tag.stories.ts +0 -315
  798. package/src/lib/components/atoms/price-tag/types.ts +0 -78
  799. package/src/lib/components/atoms/progress-bar/progress-bar.component.scss +0 -22
  800. package/src/lib/components/atoms/progress-bar/progress-bar.component.ts +0 -88
  801. package/src/lib/components/atoms/progress-bar/progress-bar.stories.ts +0 -375
  802. package/src/lib/components/atoms/progress-bar/types.ts +0 -20
  803. package/src/lib/components/atoms/progress-ring/progress-ring.component.scss +0 -35
  804. package/src/lib/components/atoms/progress-ring/progress-ring.component.ts +0 -114
  805. package/src/lib/components/atoms/progress-ring/progress-ring.stories.ts +0 -323
  806. package/src/lib/components/atoms/progress-ring/types.ts +0 -25
  807. package/src/lib/components/atoms/qr-code/qr-code.component.scss +0 -353
  808. package/src/lib/components/atoms/qr-code/qr-code.component.ts +0 -313
  809. package/src/lib/components/atoms/qr-code/qr-code.stories.ts +0 -767
  810. package/src/lib/components/atoms/qr-code/types.ts +0 -173
  811. package/src/lib/components/atoms/rights-footer/rights-footer.component.scss +0 -20
  812. package/src/lib/components/atoms/rights-footer/rights-footer.component.ts +0 -98
  813. package/src/lib/components/atoms/rights-footer/rights-footer.stories.ts +0 -229
  814. package/src/lib/components/atoms/rights-footer/types.ts +0 -21
  815. package/src/lib/components/atoms/skeleton/skeleton.component.scss +0 -58
  816. package/src/lib/components/atoms/skeleton/skeleton.component.ts +0 -129
  817. package/src/lib/components/atoms/skeleton/skeleton.stories.ts +0 -242
  818. package/src/lib/components/atoms/skeleton/types.ts +0 -39
  819. package/src/lib/components/atoms/text/text.component.scss +0 -38
  820. package/src/lib/components/atoms/text/text.component.ts +0 -123
  821. package/src/lib/components/atoms/text/text.stories.ts +0 -174
  822. package/src/lib/components/atoms/text/types.ts +0 -50
  823. package/src/lib/components/atoms/title/title.component.scss +0 -33
  824. package/src/lib/components/atoms/title/title.component.ts +0 -65
  825. package/src/lib/components/atoms/title/title.stories.ts +0 -167
  826. package/src/lib/components/atoms/title/types.ts +0 -46
  827. package/src/lib/components/molecules/accordion/accordion.component.scss +0 -34
  828. package/src/lib/components/molecules/accordion/accordion.component.ts +0 -103
  829. package/src/lib/components/molecules/accordion/accordion.stories.ts +0 -236
  830. package/src/lib/components/molecules/accordion/types.ts +0 -49
  831. package/src/lib/components/molecules/action-card/action-card.component.scss +0 -226
  832. package/src/lib/components/molecules/action-card/action-card.component.ts +0 -246
  833. package/src/lib/components/molecules/action-card/action-card.stories.ts +0 -396
  834. package/src/lib/components/molecules/action-card/types.ts +0 -102
  835. package/src/lib/components/molecules/action-header/action-header.component.ts +0 -28
  836. package/src/lib/components/molecules/action-header/action-header.stories.ts +0 -481
  837. package/src/lib/components/molecules/action-header/types.ts +0 -7
  838. package/src/lib/components/molecules/ad-slot/ad-slot.component.ts +0 -352
  839. package/src/lib/components/molecules/alert-box/alert-box.component.scss +0 -10
  840. package/src/lib/components/molecules/alert-box/alert-box.component.ts +0 -125
  841. package/src/lib/components/molecules/alert-box/alert-box.stories.ts +0 -248
  842. package/src/lib/components/molecules/alert-box/types.ts +0 -39
  843. package/src/lib/components/molecules/breadcrumb/breadcrumb.component.scss +0 -34
  844. package/src/lib/components/molecules/breadcrumb/breadcrumb.component.ts +0 -109
  845. package/src/lib/components/molecules/breadcrumb/breadcrumb.stories.ts +0 -271
  846. package/src/lib/components/molecules/breadcrumb/types.ts +0 -47
  847. package/src/lib/components/molecules/button-group/button-group.component.scss +0 -41
  848. package/src/lib/components/molecules/button-group/button-group.component.ts +0 -65
  849. package/src/lib/components/molecules/button-group/button-group.stories.ts +0 -296
  850. package/src/lib/components/molecules/button-group/types.ts +0 -14
  851. package/src/lib/components/molecules/card/card.component.scss +0 -62
  852. package/src/lib/components/molecules/card/card.component.ts +0 -300
  853. package/src/lib/components/molecules/card/card.stories.ts +0 -360
  854. package/src/lib/components/molecules/card/types.ts +0 -36
  855. package/src/lib/components/molecules/check-input/check-input.component.scss +0 -0
  856. package/src/lib/components/molecules/check-input/check-input.component.ts +0 -88
  857. package/src/lib/components/molecules/check-input/check-input.stories.ts +0 -54
  858. package/src/lib/components/molecules/chip-group/chip-group.component.scss +0 -70
  859. package/src/lib/components/molecules/chip-group/chip-group.component.ts +0 -150
  860. package/src/lib/components/molecules/chip-group/chip-group.stories.ts +0 -307
  861. package/src/lib/components/molecules/chip-group/types.ts +0 -69
  862. package/src/lib/components/molecules/code-display/code-display.component.scss +0 -239
  863. package/src/lib/components/molecules/code-display/code-display.component.ts +0 -109
  864. package/src/lib/components/molecules/code-display/code-display.stories.ts +0 -402
  865. package/src/lib/components/molecules/code-display/types.ts +0 -11
  866. package/src/lib/components/molecules/command-display/command-display.component.scss +0 -38
  867. package/src/lib/components/molecules/command-display/command-display.component.ts +0 -45
  868. package/src/lib/components/molecules/command-display/command-display.stories.ts +0 -110
  869. package/src/lib/components/molecules/command-display/types.ts +0 -3
  870. package/src/lib/components/molecules/comment/comment.component.scss +0 -339
  871. package/src/lib/components/molecules/comment/comment.component.ts +0 -496
  872. package/src/lib/components/molecules/comment/comment.stories.ts +0 -384
  873. package/src/lib/components/molecules/comment/types.ts +0 -181
  874. package/src/lib/components/molecules/comment-input/comment-input.component.scss +0 -0
  875. package/src/lib/components/molecules/comment-input/comment-input.component.ts +0 -42
  876. package/src/lib/components/molecules/comment-input/comment-input.stories.ts +0 -124
  877. package/src/lib/components/molecules/comment-input/types.ts +0 -69
  878. package/src/lib/components/molecules/content-loader/content-loader.component.scss +0 -42
  879. package/src/lib/components/molecules/content-loader/content-loader.component.ts +0 -45
  880. package/src/lib/components/molecules/content-loader/content-loader.stories.ts +0 -370
  881. package/src/lib/components/molecules/content-loader/types.ts +0 -16
  882. package/src/lib/components/molecules/content-reaction/content-reaction.component.html +0 -81
  883. package/src/lib/components/molecules/content-reaction/content-reaction.component.scss +0 -157
  884. package/src/lib/components/molecules/content-reaction/content-reaction.component.ts +0 -273
  885. package/src/lib/components/molecules/content-reaction/content-reaction.stories.ts +0 -453
  886. package/src/lib/components/molecules/content-reaction/types.ts +0 -99
  887. package/src/lib/components/molecules/currency-input/currency-input.component.scss +0 -101
  888. package/src/lib/components/molecules/currency-input/currency-input.component.ts +0 -327
  889. package/src/lib/components/molecules/currency-input/currency-input.stories.ts +0 -279
  890. package/src/lib/components/molecules/currency-input/types.ts +0 -125
  891. package/src/lib/components/molecules/date-input/date-input.component.scss +0 -11
  892. package/src/lib/components/molecules/date-input/date-input.component.ts +0 -136
  893. package/src/lib/components/molecules/date-input/date-input.stories.ts +0 -205
  894. package/src/lib/components/molecules/date-input/types.ts +0 -84
  895. package/src/lib/components/molecules/date-range-input/date-range-input.component.scss +0 -119
  896. package/src/lib/components/molecules/date-range-input/date-range-input.component.ts +0 -364
  897. package/src/lib/components/molecules/date-range-input/date-range-input.stories.ts +0 -288
  898. package/src/lib/components/molecules/date-range-input/types.ts +0 -122
  899. package/src/lib/components/molecules/docs-api-table/docs-api-table.component.scss +0 -278
  900. package/src/lib/components/molecules/docs-api-table/docs-api-table.component.ts +0 -138
  901. package/src/lib/components/molecules/docs-api-table/types.ts +0 -81
  902. package/src/lib/components/molecules/docs-breadcrumb/docs-breadcrumb.component.ts +0 -161
  903. package/src/lib/components/molecules/docs-breadcrumb/types.ts +0 -21
  904. package/src/lib/components/molecules/docs-callout/docs-callout.component.scss +0 -136
  905. package/src/lib/components/molecules/docs-callout/docs-callout.component.ts +0 -55
  906. package/src/lib/components/molecules/docs-code-example/docs-code-example.component.ts +0 -535
  907. package/src/lib/components/molecules/docs-code-example/types.ts +0 -75
  908. package/src/lib/components/molecules/docs-nav-links/docs-nav-links.component.ts +0 -216
  909. package/src/lib/components/molecules/docs-nav-links/types.ts +0 -36
  910. package/src/lib/components/molecules/docs-search/docs-search.component.scss +0 -195
  911. package/src/lib/components/molecules/docs-search/docs-search.component.ts +0 -228
  912. package/src/lib/components/molecules/docs-search/types.ts +0 -30
  913. package/src/lib/components/molecules/docs-section/docs-section.component.ts +0 -99
  914. package/src/lib/components/molecules/docs-section/types.ts +0 -31
  915. package/src/lib/components/molecules/email-input/email-input.component.scss +0 -0
  916. package/src/lib/components/molecules/email-input/email-input.component.ts +0 -77
  917. package/src/lib/components/molecules/email-input/email-input.stories.ts +0 -176
  918. package/src/lib/components/molecules/expandable-text/expandable-text.component.ts +0 -111
  919. package/src/lib/components/molecules/expandable-text/expandable-text.stories.ts +0 -287
  920. package/src/lib/components/molecules/expandable-text/types.ts +0 -14
  921. package/src/lib/components/molecules/features-list/features-list.component.ts +0 -251
  922. package/src/lib/components/molecules/features-list/types.ts +0 -44
  923. package/src/lib/components/molecules/feedback-form/feedback-form.component.ts +0 -355
  924. package/src/lib/components/molecules/feedback-form/types.ts +0 -77
  925. package/src/lib/components/molecules/file-input/file-input.component.scss +0 -11
  926. package/src/lib/components/molecules/file-input/file-input.component.ts +0 -87
  927. package/src/lib/components/molecules/file-input/file-input.stories.ts +0 -107
  928. package/src/lib/components/molecules/file-input/types.ts +0 -85
  929. package/src/lib/components/molecules/footer-links/footer-links.component.scss +0 -130
  930. package/src/lib/components/molecules/footer-links/footer-links.component.ts +0 -244
  931. package/src/lib/components/molecules/footer-links/footer-links.stories.ts +0 -188
  932. package/src/lib/components/molecules/footer-links/types.ts +0 -52
  933. package/src/lib/components/molecules/glow-card/glow-card.component.scss +0 -295
  934. package/src/lib/components/molecules/glow-card/glow-card.component.ts +0 -284
  935. package/src/lib/components/molecules/glow-card/glow-card.stories.ts +0 -680
  936. package/src/lib/components/molecules/glow-card/types.ts +0 -117
  937. package/src/lib/components/molecules/hint/hint.component.scss +0 -5
  938. package/src/lib/components/molecules/hint/hint.component.ts +0 -89
  939. package/src/lib/components/molecules/hint/hint.stories.ts +0 -233
  940. package/src/lib/components/molecules/hour-input/hour-input.component.scss +0 -0
  941. package/src/lib/components/molecules/hour-input/hour-input.component.ts +0 -34
  942. package/src/lib/components/molecules/hour-input/hour-input.stories.ts +0 -145
  943. package/src/lib/components/molecules/image-crop/image-crop.component.ts +0 -195
  944. package/src/lib/components/molecules/info/info.component.ts +0 -35
  945. package/src/lib/components/molecules/info/info.stories.ts +0 -276
  946. package/src/lib/components/molecules/info/types.ts +0 -11
  947. package/src/lib/components/molecules/language-selector/language-selector.component.scss +0 -128
  948. package/src/lib/components/molecules/language-selector/language-selector.component.ts +0 -204
  949. package/src/lib/components/molecules/language-selector/language-selector.stories.ts +0 -261
  950. package/src/lib/components/molecules/language-selector/types.ts +0 -84
  951. package/src/lib/components/molecules/layered-card/layered-card.component.scss +0 -84
  952. package/src/lib/components/molecules/layered-card/layered-card.component.ts +0 -66
  953. package/src/lib/components/molecules/layered-card/layered-card.stories.ts +0 -313
  954. package/src/lib/components/molecules/layered-card/types.ts +0 -16
  955. package/src/lib/components/molecules/link/link.component.scss +0 -11
  956. package/src/lib/components/molecules/link/link.component.ts +0 -73
  957. package/src/lib/components/molecules/link/link.stories.ts +0 -307
  958. package/src/lib/components/molecules/link/types.ts +0 -20
  959. package/src/lib/components/molecules/linked-providers/index.ts +0 -2
  960. package/src/lib/components/molecules/linked-providers/linked-providers.component.ts +0 -289
  961. package/src/lib/components/molecules/linked-providers/types.ts +0 -63
  962. package/src/lib/components/molecules/links-accordion/links-accordion.component.scss +0 -17
  963. package/src/lib/components/molecules/links-accordion/links-accordion.component.ts +0 -152
  964. package/src/lib/components/molecules/links-accordion/links-accordion.stories.ts +0 -209
  965. package/src/lib/components/molecules/links-accordion/types.ts +0 -41
  966. package/src/lib/components/molecules/links-cake/links-cake.component.scss +0 -9
  967. package/src/lib/components/molecules/links-cake/links-cake.component.ts +0 -49
  968. package/src/lib/components/molecules/links-cake/links-cake.stories.ts +0 -160
  969. package/src/lib/components/molecules/links-cake/types.ts +0 -14
  970. package/src/lib/components/molecules/multi-select-search/multi-select-search.component.scss +0 -168
  971. package/src/lib/components/molecules/multi-select-search/multi-select-search.component.ts +0 -471
  972. package/src/lib/components/molecules/multi-select-search/multi-select-search.stories.ts +0 -188
  973. package/src/lib/components/molecules/notes-box/notes-box.component.scss +0 -5
  974. package/src/lib/components/molecules/notes-box/notes-box.component.ts +0 -62
  975. package/src/lib/components/molecules/notes-box/notes-box.stories.ts +0 -308
  976. package/src/lib/components/molecules/notes-box/types.ts +0 -22
  977. package/src/lib/components/molecules/number-from-to/number-from-to.component.scss +0 -10
  978. package/src/lib/components/molecules/number-from-to/number-from-to.component.ts +0 -134
  979. package/src/lib/components/molecules/number-from-to/number-from-to.stories.ts +0 -203
  980. package/src/lib/components/molecules/number-from-to/types.ts +0 -91
  981. package/src/lib/components/molecules/number-input/number-input.component.scss +0 -0
  982. package/src/lib/components/molecules/number-input/number-input.component.ts +0 -41
  983. package/src/lib/components/molecules/number-input/number-input.stories.ts +0 -151
  984. package/src/lib/components/molecules/number-stepper/number-stepper.component.scss +0 -252
  985. package/src/lib/components/molecules/number-stepper/number-stepper.component.ts +0 -302
  986. package/src/lib/components/molecules/number-stepper/number-stepper.stories.ts +0 -417
  987. package/src/lib/components/molecules/number-stepper/types.ts +0 -101
  988. package/src/lib/components/molecules/pagination/pagination.component.scss +0 -50
  989. package/src/lib/components/molecules/pagination/pagination.component.ts +0 -194
  990. package/src/lib/components/molecules/pagination/pagination.stories.ts +0 -260
  991. package/src/lib/components/molecules/pagination/types.ts +0 -43
  992. package/src/lib/components/molecules/participant-card/participant-card.component.scss +0 -371
  993. package/src/lib/components/molecules/participant-card/participant-card.component.ts +0 -402
  994. package/src/lib/components/molecules/participant-card/participant-card.stories.ts +0 -479
  995. package/src/lib/components/molecules/participant-card/types.ts +0 -170
  996. package/src/lib/components/molecules/password-input/password-input.component.scss +0 -7
  997. package/src/lib/components/molecules/password-input/password-input.component.ts +0 -93
  998. package/src/lib/components/molecules/password-input/password-input.stories.ts +0 -187
  999. package/src/lib/components/molecules/phone-input/phone-input.component.scss +0 -157
  1000. package/src/lib/components/molecules/phone-input/phone-input.component.ts +0 -354
  1001. package/src/lib/components/molecules/phone-input/phone-input.stories.ts +0 -229
  1002. package/src/lib/components/molecules/phone-input/types.ts +0 -126
  1003. package/src/lib/components/molecules/pill/pill.component.scss +0 -35
  1004. package/src/lib/components/molecules/pill/pill.component.ts +0 -89
  1005. package/src/lib/components/molecules/pill/pill.stories.ts +0 -219
  1006. package/src/lib/components/molecules/pill/types.ts +0 -10
  1007. package/src/lib/components/molecules/pin-input/pin-input.component.scss +0 -22
  1008. package/src/lib/components/molecules/pin-input/pin-input.component.ts +0 -83
  1009. package/src/lib/components/molecules/pin-input/pin-input.stories.ts +0 -196
  1010. package/src/lib/components/molecules/pin-input/types.ts +0 -80
  1011. package/src/lib/components/molecules/plain-code-box/plain-code-box.component.scss +0 -191
  1012. package/src/lib/components/molecules/plain-code-box/plain-code-box.component.ts +0 -86
  1013. package/src/lib/components/molecules/plain-code-box/plain-code-box.stories.ts +0 -174
  1014. package/src/lib/components/molecules/plain-code-box/types.ts +0 -12
  1015. package/src/lib/components/molecules/popover-selector/popover-selector.component.scss +0 -220
  1016. package/src/lib/components/molecules/popover-selector/popover-selector.component.ts +0 -163
  1017. package/src/lib/components/molecules/popover-selector/popover-selector.stories.ts +0 -324
  1018. package/src/lib/components/molecules/popover-selector/types.ts +0 -71
  1019. package/src/lib/components/molecules/progress-status/progress-status.component.scss +0 -41
  1020. package/src/lib/components/molecules/progress-status/progress-status.component.ts +0 -90
  1021. package/src/lib/components/molecules/progress-status/progress-status.stories.ts +0 -415
  1022. package/src/lib/components/molecules/progress-status/types.ts +0 -21
  1023. package/src/lib/components/molecules/prompter/prompter.component.scss +0 -45
  1024. package/src/lib/components/molecules/prompter/prompter.component.ts +0 -55
  1025. package/src/lib/components/molecules/prompter/prompter.stories.ts +0 -193
  1026. package/src/lib/components/molecules/prompter/types.ts +0 -26
  1027. package/src/lib/components/molecules/quote-box/quote-box.component.scss +0 -253
  1028. package/src/lib/components/molecules/quote-box/quote-box.component.ts +0 -104
  1029. package/src/lib/components/molecules/quote-box/quote-box.stories.ts +0 -264
  1030. package/src/lib/components/molecules/radio-input/radio-input.component.scss +0 -0
  1031. package/src/lib/components/molecules/radio-input/radio-input.component.ts +0 -51
  1032. package/src/lib/components/molecules/radio-input/radio-input.stories.ts +0 -197
  1033. package/src/lib/components/molecules/raffle-status-card/raffle-status-card.component.scss +0 -418
  1034. package/src/lib/components/molecules/raffle-status-card/raffle-status-card.component.ts +0 -320
  1035. package/src/lib/components/molecules/raffle-status-card/raffle-status-card.stories.ts +0 -509
  1036. package/src/lib/components/molecules/raffle-status-card/types.ts +0 -150
  1037. package/src/lib/components/molecules/range-input/range-input.component.scss +0 -15
  1038. package/src/lib/components/molecules/range-input/range-input.component.ts +0 -106
  1039. package/src/lib/components/molecules/range-input/range-input.stories.ts +0 -331
  1040. package/src/lib/components/molecules/range-input/types.ts +0 -61
  1041. package/src/lib/components/molecules/rating/rating.component.scss +0 -60
  1042. package/src/lib/components/molecules/rating/rating.component.ts +0 -154
  1043. package/src/lib/components/molecules/rating/rating.stories.ts +0 -332
  1044. package/src/lib/components/molecules/rating/types.ts +0 -43
  1045. package/src/lib/components/molecules/recap-card/recap-card.component.scss +0 -35
  1046. package/src/lib/components/molecules/recap-card/recap-card.component.ts +0 -64
  1047. package/src/lib/components/molecules/recap-card/recap-card.stories.ts +0 -174
  1048. package/src/lib/components/molecules/recap-card/types.ts +0 -30
  1049. package/src/lib/components/molecules/refresher/refresher.component.ts +0 -257
  1050. package/src/lib/components/molecules/refresher/types.ts +0 -103
  1051. package/src/lib/components/molecules/searchbar/searchbar.component.scss +0 -9
  1052. package/src/lib/components/molecules/searchbar/searchbar.component.ts +0 -122
  1053. package/src/lib/components/molecules/searchbar/searchbar.stories.ts +0 -192
  1054. package/src/lib/components/molecules/searchbar/types.ts +0 -38
  1055. package/src/lib/components/molecules/segment-control/segment-control.component.scss +0 -27
  1056. package/src/lib/components/molecules/segment-control/segment-control.component.ts +0 -121
  1057. package/src/lib/components/molecules/segment-control/segment-control.stories.ts +0 -296
  1058. package/src/lib/components/molecules/segment-control/types.ts +0 -48
  1059. package/src/lib/components/molecules/select-input/select-input.component.scss +0 -0
  1060. package/src/lib/components/molecules/select-input/select-input.component.ts +0 -133
  1061. package/src/lib/components/molecules/select-input/select-input.stories.ts +0 -330
  1062. package/src/lib/components/molecules/select-search/select-search.component.ts +0 -420
  1063. package/src/lib/components/molecules/select-search/select-search.stories.ts +0 -218
  1064. package/src/lib/components/molecules/share-buttons/share-buttons.component.scss +0 -195
  1065. package/src/lib/components/molecules/share-buttons/share-buttons.component.ts +0 -269
  1066. package/src/lib/components/molecules/share-buttons/share-buttons.stories.ts +0 -343
  1067. package/src/lib/components/molecules/share-buttons/types.ts +0 -211
  1068. package/src/lib/components/molecules/stats-card/stats-card.component.scss +0 -198
  1069. package/src/lib/components/molecules/stats-card/stats-card.component.ts +0 -157
  1070. package/src/lib/components/molecules/stats-card/stats-card.stories.ts +0 -481
  1071. package/src/lib/components/molecules/stats-card/types.ts +0 -63
  1072. package/src/lib/components/molecules/stepper/stepper.component.scss +0 -156
  1073. package/src/lib/components/molecules/stepper/stepper.component.ts +0 -201
  1074. package/src/lib/components/molecules/stepper/stepper.stories.ts +0 -308
  1075. package/src/lib/components/molecules/stepper/types.ts +0 -70
  1076. package/src/lib/components/molecules/swipe-carousel/swipe-carousel.component.scss +0 -164
  1077. package/src/lib/components/molecules/swipe-carousel/swipe-carousel.component.ts +0 -215
  1078. package/src/lib/components/molecules/swipe-carousel/swipe-carousel.stories.ts +0 -406
  1079. package/src/lib/components/molecules/swipe-carousel/types.ts +0 -32
  1080. package/src/lib/components/molecules/tabs/tabs.component.scss +0 -35
  1081. package/src/lib/components/molecules/tabs/tabs.component.ts +0 -125
  1082. package/src/lib/components/molecules/tabs/tabs.stories.ts +0 -283
  1083. package/src/lib/components/molecules/tabs/types.ts +0 -47
  1084. package/src/lib/components/molecules/testimonial-card/testimonial-card.component.scss +0 -25
  1085. package/src/lib/components/molecules/testimonial-card/testimonial-card.component.ts +0 -121
  1086. package/src/lib/components/molecules/testimonial-card/testimonial-card.stories.ts +0 -130
  1087. package/src/lib/components/molecules/testimonial-card/types.ts +0 -26
  1088. package/src/lib/components/molecules/text-input/text-input.component.scss +0 -1
  1089. package/src/lib/components/molecules/text-input/text-input.component.ts +0 -86
  1090. package/src/lib/components/molecules/text-input/text-input.stories.ts +0 -301
  1091. package/src/lib/components/molecules/textarea-input/textarea-input.component.scss +0 -62
  1092. package/src/lib/components/molecules/textarea-input/textarea-input.component.ts +0 -195
  1093. package/src/lib/components/molecules/textarea-input/textarea-input.stories.ts +0 -329
  1094. package/src/lib/components/molecules/textarea-input/types.ts +0 -83
  1095. package/src/lib/components/molecules/ticket-grid/ticket-grid.component.scss +0 -270
  1096. package/src/lib/components/molecules/ticket-grid/ticket-grid.component.ts +0 -429
  1097. package/src/lib/components/molecules/ticket-grid/ticket-grid.stories.ts +0 -436
  1098. package/src/lib/components/molecules/ticket-grid/types.ts +0 -145
  1099. package/src/lib/components/molecules/timeline/timeline.component.scss +0 -168
  1100. package/src/lib/components/molecules/timeline/timeline.component.ts +0 -98
  1101. package/src/lib/components/molecules/timeline/timeline.stories.ts +0 -259
  1102. package/src/lib/components/molecules/timeline/types.ts +0 -41
  1103. package/src/lib/components/molecules/title-block/title-block.component.scss +0 -48
  1104. package/src/lib/components/molecules/title-block/title-block.component.ts +0 -72
  1105. package/src/lib/components/molecules/title-block/title-block.stories.ts +0 -351
  1106. package/src/lib/components/molecules/title-block/types.ts +0 -16
  1107. package/src/lib/components/molecules/toggle-input/toggle-input.component.scss +0 -7
  1108. package/src/lib/components/molecules/toggle-input/toggle-input.component.ts +0 -94
  1109. package/src/lib/components/molecules/toggle-input/toggle-input.stories.ts +0 -240
  1110. package/src/lib/components/molecules/toggle-input/types.ts +0 -31
  1111. package/src/lib/components/molecules/update-banner/index.ts +0 -1
  1112. package/src/lib/components/molecules/update-banner/update-banner.component.ts +0 -118
  1113. package/src/lib/components/molecules/username-input/index.ts +0 -2
  1114. package/src/lib/components/molecules/username-input/types.ts +0 -36
  1115. package/src/lib/components/molecules/username-input/username-input.component.ts +0 -336
  1116. package/src/lib/components/molecules/winner-display/types.ts +0 -129
  1117. package/src/lib/components/molecules/winner-display/winner-display.component.scss +0 -501
  1118. package/src/lib/components/molecules/winner-display/winner-display.component.ts +0 -284
  1119. package/src/lib/components/molecules/winner-display/winner-display.stories.ts +0 -468
  1120. package/src/lib/components/organisms/article/README.md +0 -569
  1121. package/src/lib/components/organisms/article/article.component.scss +0 -433
  1122. package/src/lib/components/organisms/article/article.component.ts +0 -469
  1123. package/src/lib/components/organisms/article/article.stories.ts +0 -625
  1124. package/src/lib/components/organisms/article/types.ts +0 -550
  1125. package/src/lib/components/organisms/avatar-upload/avatar-upload.component.scss +0 -119
  1126. package/src/lib/components/organisms/avatar-upload/avatar-upload.component.ts +0 -349
  1127. package/src/lib/components/organisms/avatar-upload/index.ts +0 -2
  1128. package/src/lib/components/organisms/avatar-upload/types.ts +0 -71
  1129. package/src/lib/components/organisms/banner/banner.component.scss +0 -51
  1130. package/src/lib/components/organisms/banner/banner.component.ts +0 -95
  1131. package/src/lib/components/organisms/banner/banner.stories.ts +0 -462
  1132. package/src/lib/components/organisms/banner/types.ts +0 -30
  1133. package/src/lib/components/organisms/bottom-nav/bottom-nav.component.scss +0 -350
  1134. package/src/lib/components/organisms/bottom-nav/bottom-nav.component.ts +0 -362
  1135. package/src/lib/components/organisms/bottom-nav/types.ts +0 -139
  1136. package/src/lib/components/organisms/cards-carousel/cards-carousel.component.ts +0 -53
  1137. package/src/lib/components/organisms/cards-carousel/cards-carousel.stories.ts +0 -241
  1138. package/src/lib/components/organisms/cards-carousel/types.ts +0 -12
  1139. package/src/lib/components/organisms/comment-section/comment-section.component.scss +0 -269
  1140. package/src/lib/components/organisms/comment-section/comment-section.component.ts +0 -429
  1141. package/src/lib/components/organisms/comment-section/comment-section.stories.ts +0 -305
  1142. package/src/lib/components/organisms/comment-section/types.ts +0 -169
  1143. package/src/lib/components/organisms/company-footer/company-footer.component.ts +0 -73
  1144. package/src/lib/components/organisms/company-footer/company-footer.stories.ts +0 -216
  1145. package/src/lib/components/organisms/company-footer/types.ts +0 -16
  1146. package/src/lib/components/organisms/data-table/data-table.component.scss +0 -907
  1147. package/src/lib/components/organisms/data-table/data-table.component.ts +0 -821
  1148. package/src/lib/components/organisms/data-table/data-table.stories.ts +0 -787
  1149. package/src/lib/components/organisms/data-table/types.ts +0 -258
  1150. package/src/lib/components/organisms/docs-sidebar/docs-sidebar.component.scss +0 -228
  1151. package/src/lib/components/organisms/docs-sidebar/docs-sidebar.component.ts +0 -213
  1152. package/src/lib/components/organisms/docs-sidebar/types.ts +0 -112
  1153. package/src/lib/components/organisms/docs-toc/docs-toc.component.scss +0 -119
  1154. package/src/lib/components/organisms/docs-toc/docs-toc.component.ts +0 -320
  1155. package/src/lib/components/organisms/docs-toc/types.ts +0 -73
  1156. package/src/lib/components/organisms/footer/footer.component.scss +0 -3
  1157. package/src/lib/components/organisms/footer/footer.component.ts +0 -65
  1158. package/src/lib/components/organisms/footer/footer.stories.ts +0 -278
  1159. package/src/lib/components/organisms/footer/types.ts +0 -17
  1160. package/src/lib/components/organisms/form/factory.ts +0 -46
  1161. package/src/lib/components/organisms/form/form-footer/form-footer.component.scss +0 -0
  1162. package/src/lib/components/organisms/form/form-footer/form-footer.component.ts +0 -72
  1163. package/src/lib/components/organisms/form/form.component.scss +0 -24
  1164. package/src/lib/components/organisms/form/form.component.ts +0 -367
  1165. package/src/lib/components/organisms/form/form.stories.ts +0 -505
  1166. package/src/lib/components/organisms/fun-header/fun-header.component.scss +0 -36
  1167. package/src/lib/components/organisms/fun-header/fun-header.component.ts +0 -209
  1168. package/src/lib/components/organisms/fun-header/fun-header.stories.ts +0 -272
  1169. package/src/lib/components/organisms/fun-header/types.ts +0 -29
  1170. package/src/lib/components/organisms/header/header.component.scss +0 -5
  1171. package/src/lib/components/organisms/header/header.component.ts +0 -53
  1172. package/src/lib/components/organisms/header/header.stories.ts +0 -293
  1173. package/src/lib/components/organisms/header/types.ts +0 -17
  1174. package/src/lib/components/organisms/infinite-list/infinite-list.component.ts +0 -602
  1175. package/src/lib/components/organisms/infinite-list/types.ts +0 -235
  1176. package/src/lib/components/organisms/item-list/item-list.component.scss +0 -53
  1177. package/src/lib/components/organisms/item-list/item-list.component.ts +0 -269
  1178. package/src/lib/components/organisms/item-list/item-list.stories.ts +0 -363
  1179. package/src/lib/components/organisms/item-list/types.ts +0 -130
  1180. package/src/lib/components/organisms/login/login.component.html +0 -244
  1181. package/src/lib/components/organisms/login/login.component.scss +0 -118
  1182. package/src/lib/components/organisms/login/login.component.ts +0 -866
  1183. package/src/lib/components/organisms/login/types.ts +0 -89
  1184. package/src/lib/components/organisms/menu/menu.component.scss +0 -23
  1185. package/src/lib/components/organisms/menu/menu.component.ts +0 -152
  1186. package/src/lib/components/organisms/menu/menu.stories.ts +0 -223
  1187. package/src/lib/components/organisms/menu/types.ts +0 -24
  1188. package/src/lib/components/organisms/no-content/no-content.component.scss +0 -11
  1189. package/src/lib/components/organisms/no-content/no-content.component.ts +0 -68
  1190. package/src/lib/components/organisms/no-content/no-content.stories.ts +0 -259
  1191. package/src/lib/components/organisms/no-content/types.ts +0 -18
  1192. package/src/lib/components/organisms/rotating-text/rotating-text.component.ts +0 -239
  1193. package/src/lib/components/organisms/rotating-text/types.ts +0 -29
  1194. package/src/lib/components/organisms/tabbed-content/tabbed-content.component.scss +0 -89
  1195. package/src/lib/components/organisms/tabbed-content/tabbed-content.component.ts +0 -165
  1196. package/src/lib/components/organisms/tabbed-content/tabbed-content.stories.ts +0 -326
  1197. package/src/lib/components/organisms/tabbed-content/types.ts +0 -56
  1198. package/src/lib/components/organisms/terminal-404/terminal-404.component.ts +0 -339
  1199. package/src/lib/components/organisms/terminal-404/types.ts +0 -22
  1200. package/src/lib/components/organisms/testimonial-carousel/testimonial-carousel.component.ts +0 -70
  1201. package/src/lib/components/organisms/testimonial-carousel/testimonial-carousel.stories.ts +0 -173
  1202. package/src/lib/components/organisms/testimonial-carousel/types.ts +0 -9
  1203. package/src/lib/components/organisms/toolbar/toolbar.component.scss +0 -13
  1204. package/src/lib/components/organisms/toolbar/toolbar.component.ts +0 -195
  1205. package/src/lib/components/organisms/toolbar/toolbar.stories.ts +0 -263
  1206. package/src/lib/components/organisms/toolbar/types.ts +0 -32
  1207. package/src/lib/components/organisms/wizard/types.ts +0 -46
  1208. package/src/lib/components/organisms/wizard/wizard-footer/wizard-footer.component.scss +0 -0
  1209. package/src/lib/components/organisms/wizard/wizard-footer/wizard-footer.component.ts +0 -104
  1210. package/src/lib/components/organisms/wizard/wizard.component.scss +0 -16
  1211. package/src/lib/components/organisms/wizard/wizard.component.ts +0 -165
  1212. package/src/lib/components/organisms/wizard/wizard.stories.ts +0 -653
  1213. package/src/lib/components/templates/auth-background/auth-background.component.ts +0 -258
  1214. package/src/lib/components/templates/auth-background/types.ts +0 -34
  1215. package/src/lib/components/templates/docs-layout/docs-layout.component.scss +0 -218
  1216. package/src/lib/components/templates/docs-layout/docs-layout.component.ts +0 -161
  1217. package/src/lib/components/templates/docs-layout/types.ts +0 -45
  1218. package/src/lib/components/templates/docs-page/docs-page.component.ts +0 -534
  1219. package/src/lib/components/templates/docs-page/types.ts +0 -141
  1220. package/src/lib/components/templates/docs-shell/docs-shell.component.ts +0 -494
  1221. package/src/lib/components/templates/docs-shell/types.ts +0 -176
  1222. package/src/lib/components/templates/layout/layout.component.scss +0 -25
  1223. package/src/lib/components/templates/layout/layout.component.ts +0 -14
  1224. package/src/lib/components/templates/maintenance-page/index.ts +0 -2
  1225. package/src/lib/components/templates/maintenance-page/maintenance-page.component.scss +0 -44
  1226. package/src/lib/components/templates/maintenance-page/maintenance-page.component.ts +0 -120
  1227. package/src/lib/components/templates/maintenance-page/types.ts +0 -12
  1228. package/src/lib/components/templates/page-content/page-content.component.ts +0 -188
  1229. package/src/lib/components/templates/page-content/page-content.stories.ts +0 -169
  1230. package/src/lib/components/templates/page-content/types.ts +0 -28
  1231. package/src/lib/components/templates/page-template/page-template.component.ts +0 -164
  1232. package/src/lib/components/templates/page-template/page-template.stories.ts +0 -174
  1233. package/src/lib/components/templates/page-template/types.ts +0 -17
  1234. package/src/lib/components/templates/page-wrapper/page-wrapper.component.ts +0 -183
  1235. package/src/lib/components/templates/page-wrapper/page-wrapper.stories.ts +0 -149
  1236. package/src/lib/components/templates/page-wrapper/types.ts +0 -20
  1237. package/src/lib/components/templates/simple/simple.component.ts +0 -92
  1238. package/src/lib/components/templates/simple/types.ts +0 -11
  1239. package/src/lib/components/types.ts +0 -311
  1240. package/src/lib/config/company-footer.config.ts +0 -137
  1241. package/src/lib/services/ads/ads-consent.service.ts +0 -166
  1242. package/src/lib/services/ads/ads-loader.service.ts +0 -133
  1243. package/src/lib/services/ads/ads.service.ts +0 -268
  1244. package/src/lib/services/ads/config.ts +0 -92
  1245. package/src/lib/services/ads/index.ts +0 -29
  1246. package/src/lib/services/ads/types.ts +0 -187
  1247. package/src/lib/services/app-config/app-config.service.ts +0 -228
  1248. package/src/lib/services/app-config/config.ts +0 -62
  1249. package/src/lib/services/app-config/index.ts +0 -48
  1250. package/src/lib/services/app-config/types.ts +0 -62
  1251. package/src/lib/services/app-config/version.ts +0 -104
  1252. package/src/lib/services/auth/auth-state.service.ts +0 -225
  1253. package/src/lib/services/auth/auth.service.ts +0 -1306
  1254. package/src/lib/services/auth/config.ts +0 -93
  1255. package/src/lib/services/auth/device.service.ts +0 -163
  1256. package/src/lib/services/auth/guards.ts +0 -234
  1257. package/src/lib/services/auth/index.ts +0 -111
  1258. package/src/lib/services/auth/interceptor.ts +0 -177
  1259. package/src/lib/services/auth/oauth-callback.component.ts +0 -202
  1260. package/src/lib/services/auth/oauth.service.ts +0 -352
  1261. package/src/lib/services/auth/session.service.ts +0 -83
  1262. package/src/lib/services/auth/storage.service.ts +0 -181
  1263. package/src/lib/services/auth/sync.service.ts +0 -158
  1264. package/src/lib/services/auth/token.service.ts +0 -132
  1265. package/src/lib/services/auth/types.ts +0 -1023
  1266. package/src/lib/services/confirmation-dialog/confirmation-dialog.service.ts +0 -199
  1267. package/src/lib/services/confirmation-dialog/types.ts +0 -74
  1268. package/src/lib/services/content/content-types/blog.ts +0 -324
  1269. package/src/lib/services/content/content-types/documentation.ts +0 -369
  1270. package/src/lib/services/content/content-types/news.ts +0 -328
  1271. package/src/lib/services/content/index.ts +0 -71
  1272. package/src/lib/services/content/transformer.ts +0 -312
  1273. package/src/lib/services/content/types.ts +0 -276
  1274. package/src/lib/services/docs/docs-navigation.service.ts +0 -91
  1275. package/src/lib/services/download.service.ts +0 -75
  1276. package/src/lib/services/feedback/config.ts +0 -61
  1277. package/src/lib/services/feedback/feedback.service.ts +0 -348
  1278. package/src/lib/services/feedback/index.ts +0 -59
  1279. package/src/lib/services/feedback/types.ts +0 -239
  1280. package/src/lib/services/firebase/README.md +0 -328
  1281. package/src/lib/services/firebase/analytics-error-handler.ts +0 -155
  1282. package/src/lib/services/firebase/analytics-router-tracker.ts +0 -109
  1283. package/src/lib/services/firebase/analytics-types.ts +0 -277
  1284. package/src/lib/services/firebase/analytics.service.ts +0 -707
  1285. package/src/lib/services/firebase/config.ts +0 -172
  1286. package/src/lib/services/firebase/firebase.service.ts +0 -502
  1287. package/src/lib/services/firebase/firestore-collection.ts +0 -336
  1288. package/src/lib/services/firebase/firestore.service.ts +0 -649
  1289. package/src/lib/services/firebase/index.ts +0 -88
  1290. package/src/lib/services/firebase/messaging.service.ts +0 -672
  1291. package/src/lib/services/firebase/notifications.service.ts +0 -253
  1292. package/src/lib/services/firebase/shared-config.ts +0 -167
  1293. package/src/lib/services/firebase/storage.service.ts +0 -519
  1294. package/src/lib/services/firebase/types.ts +0 -461
  1295. package/src/lib/services/firebase/utils/path-builder.ts +0 -210
  1296. package/src/lib/services/firebase/utils/query-builder.ts +0 -339
  1297. package/src/lib/services/i18n/config.ts +0 -129
  1298. package/src/lib/services/i18n/default-content.ts +0 -640
  1299. package/src/lib/services/i18n/i18n.service.ts +0 -223
  1300. package/src/lib/services/i18n/index.ts +0 -29
  1301. package/src/lib/services/i18n/input-i18n.helper.ts +0 -141
  1302. package/src/lib/services/i18n/translate.pipe.ts +0 -43
  1303. package/src/lib/services/i18n/types.ts +0 -108
  1304. package/src/lib/services/icons.service.ts +0 -122
  1305. package/src/lib/services/image/image.service.ts +0 -328
  1306. package/src/lib/services/image/types.ts +0 -79
  1307. package/src/lib/services/in-app-browser.service.ts +0 -30
  1308. package/src/lib/services/link-processor.service.ts +0 -311
  1309. package/src/lib/services/local-storage.service.ts +0 -39
  1310. package/src/lib/services/locale.service.ts +0 -86
  1311. package/src/lib/services/meta/meta.service.ts +0 -64
  1312. package/src/lib/services/meta/types.ts +0 -13
  1313. package/src/lib/services/modal/modal.service.ts +0 -244
  1314. package/src/lib/services/modal/simple-modal-content.component.ts +0 -138
  1315. package/src/lib/services/modal/types.ts +0 -180
  1316. package/src/lib/services/navigation/navigation.service.ts +0 -255
  1317. package/src/lib/services/navigation/types.ts +0 -86
  1318. package/src/lib/services/pagination/index.ts +0 -13
  1319. package/src/lib/services/pagination/pagination.service.ts +0 -243
  1320. package/src/lib/services/pagination/types.ts +0 -133
  1321. package/src/lib/services/presets/config.ts +0 -51
  1322. package/src/lib/services/presets/index.ts +0 -8
  1323. package/src/lib/services/presets/preset.service.ts +0 -105
  1324. package/src/lib/services/presets/types.ts +0 -41
  1325. package/src/lib/services/qr-generator/qr-generator.service.ts +0 -378
  1326. package/src/lib/services/qr-generator/types.ts +0 -207
  1327. package/src/lib/services/skeleton/config.ts +0 -82
  1328. package/src/lib/services/skeleton/directives/index.ts +0 -1
  1329. package/src/lib/services/skeleton/directives/loading.directive.ts +0 -230
  1330. package/src/lib/services/skeleton/index.ts +0 -30
  1331. package/src/lib/services/skeleton/skeleton.service.ts +0 -220
  1332. package/src/lib/services/skeleton/templates/detail-skeleton.component.ts +0 -166
  1333. package/src/lib/services/skeleton/templates/form-skeleton.component.ts +0 -115
  1334. package/src/lib/services/skeleton/templates/grid-skeleton.component.ts +0 -127
  1335. package/src/lib/services/skeleton/templates/index.ts +0 -6
  1336. package/src/lib/services/skeleton/templates/list-skeleton.component.ts +0 -90
  1337. package/src/lib/services/skeleton/templates/profile-skeleton.component.ts +0 -174
  1338. package/src/lib/services/skeleton/templates/table-skeleton.component.ts +0 -113
  1339. package/src/lib/services/skeleton/types.ts +0 -142
  1340. package/src/lib/services/theme.service.ts +0 -154
  1341. package/src/lib/services/toast.service.ts +0 -42
  1342. package/src/lib/services/types.ts +0 -6
  1343. package/src/lib/shared/constants/storage.ts +0 -2
  1344. package/src/lib/shared/pipes/process-links.pipe.ts +0 -64
  1345. package/src/lib/shared/utils/dom.ts +0 -29
  1346. package/src/lib/shared/utils/form-defaults.ts +0 -119
  1347. package/src/lib/shared/utils/styles.ts +0 -39
  1348. package/src/lib/shared/utils/text.ts +0 -12
  1349. package/src/lib/version.ts +0 -5
  1350. package/src/public-api.ts +0 -352
  1351. package/src/stories/Introduction.mdx +0 -649
  1352. package/src/stories/helpers/mock-services.ts +0 -27
  1353. package/src/stories/helpers/storybook-helpers.ts +0 -89
  1354. package/tsconfig.json +0 -32
  1355. package/tsconfig.lib.json +0 -15
  1356. package/tsconfig.lib.prod.json +0 -10
  1357. package/tsconfig.spec.json +0 -14
  1358. /package/{src/lib/components/molecules/image-crop/index.ts → lib/components/molecules/image-crop/index.d.ts} +0 -0
  1359. /package/{src/lib/config/index.ts → lib/config/index.d.ts} +0 -0
  1360. /package/{src/lib/services/image/index.ts → lib/services/image/index.d.ts} +0 -0
  1361. /package/{src/lib/services/meta/index.ts → lib/services/meta/index.d.ts} +0 -0
  1362. /package/{src/lib/services/navigation/index.ts → lib/services/navigation/index.d.ts} +0 -0
@@ -0,0 +1,536 @@
1
+ /**
2
+ * Firestore Service
3
+ *
4
+ * Servicio genérico para operaciones CRUD en Firestore.
5
+ * Soporta lecturas one-time, subscripciones real-time, paginación y queries complejas.
6
+ */
7
+ import { inject, Injectable } from '@angular/core';
8
+ import { addDoc, collection, collectionData, deleteDoc, doc, docData, getDoc, getDocs, limit, orderBy, query, serverTimestamp, setDoc, startAfter, startAt, endBefore, endAt, Timestamp, updateDoc, where, writeBatch, increment, arrayUnion, arrayRemove, } from '@angular/fire/firestore';
9
+ import { map } from 'rxjs';
10
+ import { VALTECH_FIREBASE_CONFIG } from './config';
11
+ import { buildPath } from './utils/path-builder';
12
+ import * as i0 from "@angular/core";
13
+ import * as i1 from "@angular/fire/firestore";
14
+ /**
15
+ * Servicio para operaciones CRUD en Firestore.
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * interface User extends FirestoreDocument {
20
+ * name: string;
21
+ * email: string;
22
+ * role: 'admin' | 'user';
23
+ * }
24
+ *
25
+ * @Component({...})
26
+ * export class UsersComponent {
27
+ * private firestore = inject(FirestoreService);
28
+ *
29
+ * // Lectura one-time
30
+ * async loadUser(id: string) {
31
+ * const user = await this.firestore.getDoc<User>('users', id);
32
+ * }
33
+ *
34
+ * // Subscripción real-time
35
+ * users$ = this.firestore.collectionChanges<User>('users', {
36
+ * where: [{ field: 'role', operator: '==', value: 'admin' }],
37
+ * orderBy: [{ field: 'name', direction: 'asc' }]
38
+ * });
39
+ *
40
+ * // Crear documento
41
+ * async createUser(data: Omit<User, 'id'>) {
42
+ * const user = await this.firestore.addDoc<User>('users', data);
43
+ * }
44
+ * }
45
+ * ```
46
+ */
47
+ export class FirestoreService {
48
+ constructor(firestore) {
49
+ this.firestore = firestore;
50
+ this.config = inject(VALTECH_FIREBASE_CONFIG, { optional: true });
51
+ }
52
+ /**
53
+ * Prefija el path de colección con el appId si está configurado.
54
+ * Si no hay appId, retorna el path sin modificar (backward compatible).
55
+ *
56
+ * @internal
57
+ */
58
+ prefixCollectionPath(collectionPath) {
59
+ if (!this.config?.appId)
60
+ return collectionPath;
61
+ return `apps/${this.config.appId}/${collectionPath}`;
62
+ }
63
+ // ===========================================================================
64
+ // LECTURAS ONE-TIME (Promise)
65
+ // ===========================================================================
66
+ /**
67
+ * Obtiene un documento por ID (lectura única).
68
+ *
69
+ * @param collectionPath - Ruta de la colección
70
+ * @param docId - ID del documento
71
+ * @returns Documento o null si no existe
72
+ *
73
+ * @example
74
+ * ```typescript
75
+ * const user = await firestoreService.getDoc<User>('users', 'abc123');
76
+ * if (user) {
77
+ * console.log(user.name);
78
+ * }
79
+ * ```
80
+ */
81
+ async getDoc(collectionPath, docId) {
82
+ const prefixedPath = this.prefixCollectionPath(collectionPath);
83
+ const docRef = doc(this.firestore, prefixedPath, docId);
84
+ const snapshot = await getDoc(docRef);
85
+ if (!snapshot.exists()) {
86
+ return null;
87
+ }
88
+ return this.mapDocument(snapshot);
89
+ }
90
+ /**
91
+ * Obtiene múltiples documentos con opciones de query.
92
+ *
93
+ * @param collectionPath - Ruta de la colección
94
+ * @param options - Opciones de query (where, orderBy, limit)
95
+ * @returns Array de documentos
96
+ *
97
+ * @example
98
+ * ```typescript
99
+ * // Todos los usuarios activos ordenados por nombre
100
+ * const users = await firestoreService.getDocs<User>('users', {
101
+ * where: [{ field: 'active', operator: '==', value: true }],
102
+ * orderBy: [{ field: 'name', direction: 'asc' }],
103
+ * limit: 50
104
+ * });
105
+ * ```
106
+ */
107
+ async getDocs(collectionPath, options) {
108
+ const prefixedPath = this.prefixCollectionPath(collectionPath);
109
+ const collectionRef = collection(this.firestore, prefixedPath);
110
+ const constraints = this.buildQueryConstraints(options);
111
+ const q = query(collectionRef, ...constraints);
112
+ const snapshot = await getDocs(q);
113
+ return snapshot.docs.map((doc) => this.mapDocument(doc));
114
+ }
115
+ /**
116
+ * Obtiene documentos con paginación basada en cursores.
117
+ *
118
+ * @param collectionPath - Ruta de la colección
119
+ * @param options - Opciones de query (debe incluir limit)
120
+ * @returns Resultado paginado con cursor para la siguiente página
121
+ *
122
+ * @example
123
+ * ```typescript
124
+ * // Primera página
125
+ * const page1 = await firestoreService.getPaginated<User>('users', {
126
+ * orderBy: [{ field: 'createdAt', direction: 'desc' }],
127
+ * limit: 10
128
+ * });
129
+ *
130
+ * // Siguiente página
131
+ * if (page1.hasMore) {
132
+ * const page2 = await firestoreService.getPaginated<User>('users', {
133
+ * orderBy: [{ field: 'createdAt', direction: 'desc' }],
134
+ * limit: 10,
135
+ * startAfter: page1.lastDoc
136
+ * });
137
+ * }
138
+ * ```
139
+ */
140
+ async getPaginated(collectionPath, options) {
141
+ const prefixedPath = this.prefixCollectionPath(collectionPath);
142
+ const collectionRef = collection(this.firestore, prefixedPath);
143
+ const constraints = this.buildQueryConstraints(options);
144
+ // Pedir uno más para saber si hay más páginas
145
+ const q = query(collectionRef, ...constraints, limit(options.limit + 1));
146
+ const snapshot = await getDocs(q);
147
+ const docs = snapshot.docs;
148
+ const hasMore = docs.length > options.limit;
149
+ // Si hay más, remover el documento extra
150
+ const resultDocs = hasMore ? docs.slice(0, -1) : docs;
151
+ const lastDoc = resultDocs.length > 0 ? resultDocs[resultDocs.length - 1] : null;
152
+ return {
153
+ data: resultDocs.map((doc) => this.mapDocument(doc)),
154
+ hasMore,
155
+ lastDoc,
156
+ };
157
+ }
158
+ /**
159
+ * Verifica si un documento existe.
160
+ *
161
+ * @param collectionPath - Ruta de la colección
162
+ * @param docId - ID del documento
163
+ * @returns true si el documento existe
164
+ */
165
+ async exists(collectionPath, docId) {
166
+ const prefixedPath = this.prefixCollectionPath(collectionPath);
167
+ const docRef = doc(this.firestore, prefixedPath, docId);
168
+ const snapshot = await getDoc(docRef);
169
+ return snapshot.exists();
170
+ }
171
+ // ===========================================================================
172
+ // SUBSCRIPCIONES REAL-TIME (Observable)
173
+ // ===========================================================================
174
+ /**
175
+ * Suscribe a cambios de un documento (real-time).
176
+ *
177
+ * @param collectionPath - Ruta de la colección
178
+ * @param docId - ID del documento
179
+ * @returns Observable que emite cuando el documento cambia
180
+ *
181
+ * @example
182
+ * ```typescript
183
+ * // En el componente
184
+ * user$ = this.firestoreService.docChanges<User>('users', this.userId);
185
+ *
186
+ * // En el template
187
+ * @if (user$ | async; as user) {
188
+ * <p>{{ user.name }}</p>
189
+ * }
190
+ * ```
191
+ */
192
+ docChanges(collectionPath, docId) {
193
+ const prefixedPath = this.prefixCollectionPath(collectionPath);
194
+ const docRef = doc(this.firestore, prefixedPath, docId);
195
+ return docData(docRef, { idField: 'id' }).pipe(map((data) => {
196
+ if (!data)
197
+ return null;
198
+ return this.convertTimestamps(data);
199
+ }));
200
+ }
201
+ /**
202
+ * Suscribe a cambios de una colección (real-time).
203
+ *
204
+ * @param collectionPath - Ruta de la colección
205
+ * @param options - Opciones de query
206
+ * @returns Observable que emite cuando la colección cambia
207
+ *
208
+ * @example
209
+ * ```typescript
210
+ * // Usuarios activos en tiempo real
211
+ * activeUsers$ = this.firestoreService.collectionChanges<User>('users', {
212
+ * where: [{ field: 'status', operator: '==', value: 'online' }]
213
+ * });
214
+ * ```
215
+ */
216
+ collectionChanges(collectionPath, options) {
217
+ const prefixedPath = this.prefixCollectionPath(collectionPath);
218
+ const collectionRef = collection(this.firestore, prefixedPath);
219
+ const constraints = this.buildQueryConstraints(options);
220
+ const q = query(collectionRef, ...constraints);
221
+ return collectionData(q, { idField: 'id' }).pipe(map((docs) => docs.map((doc) => this.convertTimestamps(doc))));
222
+ }
223
+ // ===========================================================================
224
+ // ESCRITURA
225
+ // ===========================================================================
226
+ /**
227
+ * Agrega un documento con ID auto-generado.
228
+ *
229
+ * @param collectionPath - Ruta de la colección
230
+ * @param data - Datos del documento (sin id, createdAt, updatedAt)
231
+ * @returns Documento creado con su ID
232
+ *
233
+ * @example
234
+ * ```typescript
235
+ * const newUser = await firestoreService.addDoc<User>('users', {
236
+ * name: 'John Doe',
237
+ * email: 'john@example.com',
238
+ * role: 'user'
239
+ * });
240
+ * console.log('Created user with ID:', newUser.id);
241
+ * ```
242
+ */
243
+ async addDoc(collectionPath, data) {
244
+ const prefixedPath = this.prefixCollectionPath(collectionPath);
245
+ const collectionRef = collection(this.firestore, prefixedPath);
246
+ const timestamp = serverTimestamp();
247
+ const docData = {
248
+ ...data,
249
+ createdAt: timestamp,
250
+ updatedAt: timestamp,
251
+ };
252
+ const docRef = await addDoc(collectionRef, docData);
253
+ // Obtener el documento creado para retornarlo con timestamps resueltos
254
+ const snapshot = await getDoc(docRef);
255
+ return this.mapDocument(snapshot);
256
+ }
257
+ /**
258
+ * Crea o sobrescribe un documento con ID específico.
259
+ *
260
+ * @param collectionPath - Ruta de la colección
261
+ * @param docId - ID del documento
262
+ * @param data - Datos del documento
263
+ * @param options - Opciones (merge: true para merge en lugar de sobrescribir)
264
+ *
265
+ * @example
266
+ * ```typescript
267
+ * // Sobrescribir completamente
268
+ * await firestoreService.setDoc<User>('users', 'user123', userData);
269
+ *
270
+ * // Merge con datos existentes
271
+ * await firestoreService.setDoc<User>('users', 'user123', { name: 'New Name' }, { merge: true });
272
+ * ```
273
+ */
274
+ async setDoc(collectionPath, docId, data, options) {
275
+ const prefixedPath = this.prefixCollectionPath(collectionPath);
276
+ const docRef = doc(this.firestore, prefixedPath, docId);
277
+ const timestamp = serverTimestamp();
278
+ const docData = {
279
+ ...data,
280
+ updatedAt: timestamp,
281
+ ...(options?.merge ? {} : { createdAt: timestamp }),
282
+ };
283
+ await setDoc(docRef, docData, { merge: options?.merge ?? false });
284
+ }
285
+ /**
286
+ * Actualiza campos específicos de un documento.
287
+ *
288
+ * @param collectionPath - Ruta de la colección
289
+ * @param docId - ID del documento
290
+ * @param data - Campos a actualizar
291
+ *
292
+ * @example
293
+ * ```typescript
294
+ * await firestoreService.updateDoc<User>('users', 'user123', {
295
+ * name: 'Updated Name',
296
+ * lastLogin: new Date()
297
+ * });
298
+ * ```
299
+ */
300
+ async updateDoc(collectionPath, docId, data) {
301
+ const prefixedPath = this.prefixCollectionPath(collectionPath);
302
+ const docRef = doc(this.firestore, prefixedPath, docId);
303
+ await updateDoc(docRef, {
304
+ ...data,
305
+ updatedAt: serverTimestamp(),
306
+ });
307
+ }
308
+ /**
309
+ * Elimina un documento.
310
+ *
311
+ * @param collectionPath - Ruta de la colección
312
+ * @param docId - ID del documento
313
+ *
314
+ * @example
315
+ * ```typescript
316
+ * await firestoreService.deleteDoc('users', 'user123');
317
+ * ```
318
+ */
319
+ async deleteDoc(collectionPath, docId) {
320
+ const prefixedPath = this.prefixCollectionPath(collectionPath);
321
+ const docRef = doc(this.firestore, prefixedPath, docId);
322
+ await deleteDoc(docRef);
323
+ }
324
+ // ===========================================================================
325
+ // OPERACIONES EN LOTE
326
+ // ===========================================================================
327
+ /**
328
+ * Ejecuta múltiples operaciones de escritura de forma atómica.
329
+ *
330
+ * @param operations - Función que recibe el batch y agrega operaciones
331
+ *
332
+ * @example
333
+ * ```typescript
334
+ * await firestoreService.batch((batch) => {
335
+ * batch.set('users/user1', { name: 'User 1' });
336
+ * batch.update('users/user2', { status: 'inactive' });
337
+ * batch.delete('users/user3');
338
+ * });
339
+ * ```
340
+ */
341
+ async batch(operations) {
342
+ const batch = writeBatch(this.firestore);
343
+ const batchApi = {
344
+ set: (path, data) => {
345
+ const [collectionPath, docId] = this.splitPath(path);
346
+ const prefixedPath = this.prefixCollectionPath(collectionPath);
347
+ const docRef = doc(this.firestore, prefixedPath, docId);
348
+ batch.set(docRef, {
349
+ ...data,
350
+ createdAt: serverTimestamp(),
351
+ updatedAt: serverTimestamp(),
352
+ });
353
+ },
354
+ update: (path, data) => {
355
+ const [collectionPath, docId] = this.splitPath(path);
356
+ const prefixedPath = this.prefixCollectionPath(collectionPath);
357
+ const docRef = doc(this.firestore, prefixedPath, docId);
358
+ batch.update(docRef, {
359
+ ...data,
360
+ updatedAt: serverTimestamp(),
361
+ });
362
+ },
363
+ delete: (path) => {
364
+ const [collectionPath, docId] = this.splitPath(path);
365
+ const prefixedPath = this.prefixCollectionPath(collectionPath);
366
+ const docRef = doc(this.firestore, prefixedPath, docId);
367
+ batch.delete(docRef);
368
+ },
369
+ };
370
+ operations(batchApi);
371
+ await batch.commit();
372
+ }
373
+ // ===========================================================================
374
+ // UTILIDADES
375
+ // ===========================================================================
376
+ /**
377
+ * Construye una ruta a partir de un template.
378
+ *
379
+ * @param template - Template con placeholders {param}
380
+ * @param params - Valores para los placeholders
381
+ * @returns Ruta construida
382
+ *
383
+ * @example
384
+ * ```typescript
385
+ * const path = firestoreService.buildPath('users/{userId}/documents/{docId}', {
386
+ * userId: 'user123',
387
+ * docId: 'doc456'
388
+ * });
389
+ * // => 'users/user123/documents/doc456'
390
+ * ```
391
+ */
392
+ buildPath(template, params) {
393
+ return buildPath(template, params);
394
+ }
395
+ /**
396
+ * Genera un ID único para un documento (sin crearlo).
397
+ *
398
+ * @param collectionPath - Ruta de la colección
399
+ * @returns ID único generado por Firestore
400
+ */
401
+ generateId(collectionPath) {
402
+ const prefixedPath = this.prefixCollectionPath(collectionPath);
403
+ const collectionRef = collection(this.firestore, prefixedPath);
404
+ return doc(collectionRef).id;
405
+ }
406
+ /**
407
+ * Retorna un valor de timestamp del servidor.
408
+ * Usar en campos de fecha para que Firestore asigne el timestamp.
409
+ */
410
+ serverTimestamp() {
411
+ return serverTimestamp();
412
+ }
413
+ /**
414
+ * Retorna un valor para agregar elementos a un array.
415
+ *
416
+ * @example
417
+ * ```typescript
418
+ * await firestoreService.updateDoc('users', 'user123', {
419
+ * tags: firestoreService.arrayUnion('new-tag')
420
+ * });
421
+ * ```
422
+ */
423
+ arrayUnion(...elements) {
424
+ return arrayUnion(...elements);
425
+ }
426
+ /**
427
+ * Retorna un valor para remover elementos de un array.
428
+ */
429
+ arrayRemove(...elements) {
430
+ return arrayRemove(...elements);
431
+ }
432
+ /**
433
+ * Retorna un valor para incrementar un campo numérico.
434
+ *
435
+ * @example
436
+ * ```typescript
437
+ * await firestoreService.updateDoc('users', 'user123', {
438
+ * loginCount: firestoreService.increment(1)
439
+ * });
440
+ * ```
441
+ */
442
+ increment(n) {
443
+ return increment(n);
444
+ }
445
+ // ===========================================================================
446
+ // MÉTODOS PRIVADOS
447
+ // ===========================================================================
448
+ /**
449
+ * Construye los QueryConstraints a partir de QueryOptions
450
+ */
451
+ buildQueryConstraints(options) {
452
+ const constraints = [];
453
+ if (!options)
454
+ return constraints;
455
+ // Where clauses
456
+ if (options.where) {
457
+ for (const clause of options.where) {
458
+ constraints.push(where(clause.field, clause.operator, clause.value));
459
+ }
460
+ }
461
+ // OrderBy clauses
462
+ if (options.orderBy) {
463
+ for (const clause of options.orderBy) {
464
+ constraints.push(orderBy(clause.field, clause.direction));
465
+ }
466
+ }
467
+ // Cursors para paginación
468
+ if (options.startAfter) {
469
+ constraints.push(startAfter(options.startAfter));
470
+ }
471
+ if (options.startAt) {
472
+ constraints.push(startAt(options.startAt));
473
+ }
474
+ if (options.endBefore) {
475
+ constraints.push(endBefore(options.endBefore));
476
+ }
477
+ if (options.endAt) {
478
+ constraints.push(endAt(options.endAt));
479
+ }
480
+ // Limit (se agrega al final)
481
+ if (options.limit) {
482
+ constraints.push(limit(options.limit));
483
+ }
484
+ return constraints;
485
+ }
486
+ /**
487
+ * Mapea un DocumentSnapshot a nuestro tipo
488
+ */
489
+ mapDocument(snapshot) {
490
+ const data = snapshot.data();
491
+ if (!data) {
492
+ throw new Error('Documento no tiene datos');
493
+ }
494
+ return {
495
+ id: snapshot.id,
496
+ ...this.convertTimestamps(data),
497
+ };
498
+ }
499
+ /**
500
+ * Convierte Timestamps de Firestore a Date de JavaScript
501
+ */
502
+ convertTimestamps(data) {
503
+ const result = {};
504
+ for (const [key, value] of Object.entries(data)) {
505
+ if (value instanceof Timestamp) {
506
+ result[key] = value.toDate();
507
+ }
508
+ else if (value && typeof value === 'object' && !Array.isArray(value)) {
509
+ result[key] = this.convertTimestamps(value);
510
+ }
511
+ else {
512
+ result[key] = value;
513
+ }
514
+ }
515
+ return result;
516
+ }
517
+ /**
518
+ * Divide una ruta de documento en colección e ID
519
+ */
520
+ splitPath(path) {
521
+ const segments = path.split('/');
522
+ if (segments.length < 2 || segments.length % 2 !== 0) {
523
+ throw new Error(`Ruta de documento inválida: ${path}`);
524
+ }
525
+ const docId = segments.pop();
526
+ const collectionPath = segments.join('/');
527
+ return [collectionPath, docId];
528
+ }
529
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FirestoreService, deps: [{ token: i1.Firestore }], target: i0.ɵɵFactoryTarget.Injectable }); }
530
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FirestoreService, providedIn: 'root' }); }
531
+ }
532
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FirestoreService, decorators: [{
533
+ type: Injectable,
534
+ args: [{ providedIn: 'root' }]
535
+ }], ctorParameters: () => [{ type: i1.Firestore }] });
536
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyZXN0b3JlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2ZpcmViYXNlL2ZpcmVzdG9yZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBRUgsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUNMLE1BQU0sRUFDTixVQUFVLEVBQ1YsY0FBYyxFQUNkLFNBQVMsRUFDVCxHQUFHLEVBQ0gsT0FBTyxFQUtQLE1BQU0sRUFDTixPQUFPLEVBQ1AsS0FBSyxFQUNMLE9BQU8sRUFDUCxLQUFLLEVBRUwsZUFBZSxFQUNmLE1BQU0sRUFDTixVQUFVLEVBQ1YsT0FBTyxFQUNQLFNBQVMsRUFDVCxLQUFLLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFDVCxLQUFLLEVBQ0wsVUFBVSxFQUNWLFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxHQUVaLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLEdBQUcsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUV2QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7QUFFakQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBZ0NHO0FBRUgsTUFBTSxPQUFPLGdCQUFnQjtJQUczQixZQUFvQixTQUFvQjtRQUFwQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBRmhDLFdBQU0sR0FBRyxNQUFNLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUUxQixDQUFDO0lBRTVDOzs7OztPQUtHO0lBQ0ssb0JBQW9CLENBQUMsY0FBc0I7UUFDakQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSztZ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SyxDQUFDLCtCQUErQixJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELENBQUM7UUFDRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFHLENBQUM7UUFDOUIsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQyxPQUFPLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7K0dBdmpCVSxnQkFBZ0I7bUhBQWhCLGdCQUFnQixjQURILE1BQU07OzRGQUNuQixnQkFBZ0I7a0JBRDVCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGaXJlc3RvcmUgU2VydmljZVxuICpcbiAqIFNlcnZpY2lvIGdlbsOpcmljbyBwYXJhIG9wZXJhY2lvbmVzIENSVUQgZW4gRmlyZXN0b3JlLlxuICogU29wb3J0YSBsZWN0dXJhcyBvbmUtdGltZSwgc3Vic2NyaXBjaW9uZXMgcmVhbC10aW1lLCBwYWdpbmFjacOzbiB5IHF1ZXJpZXMgY29tcGxlamFzLlxuICovXG5cbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgYWRkRG9jLFxuICBjb2xsZWN0aW9uLFxuICBjb2xsZWN0aW9uRGF0YSxcbiAgZGVsZXRlRG9jLFxuICBkb2MsXG4gIGRvY0RhdGEsXG4gIERvY3VtZW50RGF0YSxcbiAgRG9jdW1lbnRSZWZlcmVuY2UsXG4gIERvY3VtZW50U25hcHNob3QsXG4gIEZpcmVzdG9yZSxcbiAgZ2V0RG9jLFxuICBnZXREb2NzLFxuICBsaW1pdCxcbiAgb3JkZXJCeSxcbiAgcXVlcnksXG4gIFF1ZXJ5Q29uc3RyYWludCxcbiAgc2VydmVyVGltZXN0YW1wLFxuICBzZXREb2MsXG4gIHN0YXJ0QWZ0ZXIsXG4gIHN0YXJ0QXQsXG4gIGVuZEJlZm9yZSxcbiAgZW5kQXQsXG4gIFRpbWVzdGFtcCxcbiAgdXBkYXRlRG9jLFxuICB3aGVyZSxcbiAgd3JpdGVCYXRjaCxcbiAgaW5jcmVtZW50LFxuICBhcnJheVVuaW9uLFxuICBhcnJheVJlbW92ZSxcbiAgRmllbGRWYWx1ZSxcbn0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9maXJlc3RvcmUnO1xuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFZBTFRFQ0hfRklSRUJBU0VfQ09ORklHIH0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHsgRmlyZXN0b3JlRG9jdW1lbnQsIFBhZ2luYXRlZFJlc3VsdCwgUXVlcnlPcHRpb25zIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBidWlsZFBhdGggfSBmcm9tICcuL3V0aWxzL3BhdGgtYnVpbGRlcic7XG5cbi8qKlxuICogU2VydmljaW8gcGFyYSBvcGVyYWNpb25lcyBDUlVEIGVuIEZpcmVzdG9yZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW50ZXJmYWNlIFVzZXIgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudCB7XG4gKiAgIG5hbWU6IHN0cmluZztcbiAqICAgZW1haWw6IHN0cmluZztcbiAqICAgcm9sZTogJ2FkbWluJyB8ICd1c2VyJztcbiAqIH1cbiAqXG4gKiBAQ29tcG9uZW50KHsuLi59KVxuICogZXhwb3J0IGNsYXNzIFVzZXJzQ29tcG9uZW50IHtcbiAqICAgcHJpdmF0ZSBmaXJlc3RvcmUgPSBpbmplY3QoRmlyZXN0b3JlU2VydmljZSk7XG4gKlxuICogICAvLyBMZWN0dXJhIG9uZS10aW1lXG4gKiAgIGFzeW5jIGxvYWRVc2VyKGlkOiBzdHJpbmcpIHtcbiAqICAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy5maXJlc3RvcmUuZ2V0RG9jPFVzZXI+KCd1c2VycycsIGlkKTtcbiAqICAgfVxuICpcbiAqICAgLy8gU3Vic2NyaXBjacOzbiByZWFsLXRpbWVcbiAqICAgdXNlcnMkID0gdGhpcy5maXJlc3RvcmUuY29sbGVjdGlvbkNoYW5nZXM8VXNlcj4oJ3VzZXJzJywge1xuICogICAgIHdoZXJlOiBbeyBmaWVsZDogJ3JvbGUnLCBvcGVyYXRvcjogJz09JywgdmFsdWU6ICdhZG1pbicgfV0sXG4gKiAgICAgb3JkZXJCeTogW3sgZmllbGQ6ICduYW1lJywgZGlyZWN0aW9uOiAnYXNjJyB9XVxuICogICB9KTtcbiAqXG4gKiAgIC8vIENyZWFyIGRvY3VtZW50b1xuICogICBhc3luYyBjcmVhdGVVc2VyKGRhdGE6IE9taXQ8VXNlciwgJ2lkJz4pIHtcbiAqICAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy5maXJlc3RvcmUuYWRkRG9jPFVzZXI+KCd1c2VycycsIGRhdGEpO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBGaXJlc3RvcmVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBjb25maWcgPSBpbmplY3QoVkFMVEVDSF9GSVJFQkFTRV9DT05GSUcsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmaXJlc3RvcmU6IEZpcmVzdG9yZSkge31cblxuICAvKipcbiAgICogUHJlZmlqYSBlbCBwYXRoIGRlIGNvbGVjY2nDs24gY29uIGVsIGFwcElkIHNpIGVzdMOhIGNvbmZpZ3VyYWRvLlxuICAgKiBTaSBubyBoYXkgYXBwSWQsIHJldG9ybmEgZWwgcGF0aCBzaW4gbW9kaWZpY2FyIChiYWNrd2FyZCBjb21wYXRpYmxlKS5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIHByZWZpeENvbGxlY3Rpb25QYXRoKGNvbGxlY3Rpb25QYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5jb25maWc/LmFwcElkKSByZXR1cm4gY29sbGVjdGlvblBhdGg7XG4gICAgcmV0dXJuIGBhcHBzLyR7dGhpcy5jb25maWcuYXBwSWR9LyR7Y29sbGVjdGlvblBhdGh9YDtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBMRUNUVVJBUyBPTkUtVElNRSAoUHJvbWlzZSlcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIE9idGllbmUgdW4gZG9jdW1lbnRvIHBvciBJRCAobGVjdHVyYSDDum5pY2EpLlxuICAgKlxuICAgKiBAcGFyYW0gY29sbGVjdGlvblBhdGggLSBSdXRhIGRlIGxhIGNvbGVjY2nDs25cbiAgICogQHBhcmFtIGRvY0lkIC0gSUQgZGVsIGRvY3VtZW50b1xuICAgKiBAcmV0dXJucyBEb2N1bWVudG8gbyBudWxsIHNpIG5vIGV4aXN0ZVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHVzZXIgPSBhd2FpdCBmaXJlc3RvcmVTZXJ2aWNlLmdldERvYzxVc2VyPigndXNlcnMnLCAnYWJjMTIzJyk7XG4gICAqIGlmICh1c2VyKSB7XG4gICAqICAgY29uc29sZS5sb2codXNlci5uYW1lKTtcbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIGdldERvYzxUIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ+KFxuICAgIGNvbGxlY3Rpb25QYXRoOiBzdHJpbmcsXG4gICAgZG9jSWQ6IHN0cmluZ1xuICApOiBQcm9taXNlPFQgfCBudWxsPiB7XG4gICAgY29uc3QgcHJlZml4ZWRQYXRoID0gdGhpcy5wcmVmaXhDb2xsZWN0aW9uUGF0aChjb2xsZWN0aW9uUGF0aCk7XG4gICAgY29uc3QgZG9jUmVmID0gZG9jKHRoaXMuZmlyZXN0b3JlLCBwcmVmaXhlZFBhdGgsIGRvY0lkKTtcbiAgICBjb25zdCBzbmFwc2hvdCA9IGF3YWl0IGdldERvYyhkb2NSZWYpO1xuXG4gICAgaWYgKCFzbmFwc2hvdC5leGlzdHMoKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubWFwRG9jdW1lbnQ8VD4oc25hcHNob3QpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgbcO6bHRpcGxlcyBkb2N1bWVudG9zIGNvbiBvcGNpb25lcyBkZSBxdWVyeS5cbiAgICpcbiAgICogQHBhcmFtIGNvbGxlY3Rpb25QYXRoIC0gUnV0YSBkZSBsYSBjb2xlY2Npw7NuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gT3BjaW9uZXMgZGUgcXVlcnkgKHdoZXJlLCBvcmRlckJ5LCBsaW1pdClcbiAgICogQHJldHVybnMgQXJyYXkgZGUgZG9jdW1lbnRvc1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIC8vIFRvZG9zIGxvcyB1c3VhcmlvcyBhY3Rpdm9zIG9yZGVuYWRvcyBwb3Igbm9tYnJlXG4gICAqIGNvbnN0IHVzZXJzID0gYXdhaXQgZmlyZXN0b3JlU2VydmljZS5nZXREb2NzPFVzZXI+KCd1c2VycycsIHtcbiAgICogICB3aGVyZTogW3sgZmllbGQ6ICdhY3RpdmUnLCBvcGVyYXRvcjogJz09JywgdmFsdWU6IHRydWUgfV0sXG4gICAqICAgb3JkZXJCeTogW3sgZmllbGQ6ICduYW1lJywgZGlyZWN0aW9uOiAnYXNjJyB9XSxcbiAgICogICBsaW1pdDogNTBcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgZ2V0RG9jczxUIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ+KFxuICAgIGNvbGxlY3Rpb25QYXRoOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IFF1ZXJ5T3B0aW9uc1xuICApOiBQcm9taXNlPFRbXT4ge1xuICAgIGNvbnN0IHByZWZpeGVkUGF0aCA9IHRoaXMucHJlZml4Q29sbGVjdGlvblBhdGgoY29sbGVjdGlvblBhdGgpO1xuICAgIGNvbnN0IGNvbGxlY3Rpb25SZWYgPSBjb2xsZWN0aW9uKHRoaXMuZmlyZXN0b3JlLCBwcmVmaXhlZFBhdGgpO1xuICAgIGNvbnN0IGNvbnN0cmFpbnRzID0gdGhpcy5idWlsZFF1ZXJ5Q29uc3RyYWludHMob3B0aW9ucyk7XG4gICAgY29uc3QgcSA9IHF1ZXJ5KGNvbGxlY3Rpb25SZWYsIC4uLmNvbnN0cmFpbnRzKTtcbiAgICBjb25zdCBzbmFwc2hvdCA9IGF3YWl0IGdldERvY3MocSk7XG5cbiAgICByZXR1cm4gc25hcHNob3QuZG9jcy5tYXAoKGRvYykgPT4gdGhpcy5tYXBEb2N1bWVudDxUPihkb2MpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIGRvY3VtZW50b3MgY29uIHBhZ2luYWNpw7NuIGJhc2FkYSBlbiBjdXJzb3Jlcy5cbiAgICpcbiAgICogQHBhcmFtIGNvbGxlY3Rpb25QYXRoIC0gUnV0YSBkZSBsYSBjb2xlY2Npw7NuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gT3BjaW9uZXMgZGUgcXVlcnkgKGRlYmUgaW5jbHVpciBsaW1pdClcbiAgICogQHJldHVybnMgUmVzdWx0YWRvIHBhZ2luYWRvIGNvbiBjdXJzb3IgcGFyYSBsYSBzaWd1aWVudGUgcMOhZ2luYVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIC8vIFByaW1lcmEgcMOhZ2luYVxuICAgKiBjb25zdCBwYWdlMSA9IGF3YWl0IGZpcmVzdG9yZVNlcnZpY2UuZ2V0UGFnaW5hdGVkPFVzZXI+KCd1c2VycycsIHtcbiAgICogICBvcmRlckJ5OiBbeyBmaWVsZDogJ2NyZWF0ZWRBdCcsIGRpcmVjdGlvbjogJ2Rlc2MnIH1dLFxuICAgKiAgIGxpbWl0OiAxMFxuICAgKiB9KTtcbiAgICpcbiAgICogLy8gU2lndWllbnRlIHDDoWdpbmFcbiAgICogaWYgKHBhZ2UxLmhhc01vcmUpIHtcbiAgICogICBjb25zdCBwYWdlMiA9IGF3YWl0IGZpcmVzdG9yZVNlcnZpY2UuZ2V0UGFnaW5hdGVkPFVzZXI+KCd1c2VycycsIHtcbiAgICogICAgIG9yZGVyQnk6IFt7IGZpZWxkOiAnY3JlYXRlZEF0JywgZGlyZWN0aW9uOiAnZGVzYycgfV0sXG4gICAqICAgICBsaW1pdDogMTAsXG4gICAqICAgICBzdGFydEFmdGVyOiBwYWdlMS5sYXN0RG9jXG4gICAqICAgfSk7XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBnZXRQYWdpbmF0ZWQ8VCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PihcbiAgICBjb2xsZWN0aW9uUGF0aDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IFF1ZXJ5T3B0aW9ucyAmIHsgbGltaXQ6IG51bWJlciB9XG4gICk6IFByb21pc2U8UGFnaW5hdGVkUmVzdWx0PFQ+PiB7XG4gICAgY29uc3QgcHJlZml4ZWRQYXRoID0gdGhpcy5wcmVmaXhDb2xsZWN0aW9uUGF0aChjb2xsZWN0aW9uUGF0aCk7XG4gICAgY29uc3QgY29sbGVjdGlvblJlZiA9IGNvbGxlY3Rpb24odGhpcy5maXJlc3RvcmUsIHByZWZpeGVkUGF0aCk7XG4gICAgY29uc3QgY29uc3RyYWludHMgPSB0aGlzLmJ1aWxkUXVlcnlDb25zdHJhaW50cyhvcHRpb25zKTtcblxuICAgIC8vIFBlZGlyIHVubyBtw6FzIHBhcmEgc2FiZXIgc2kgaGF5IG3DoXMgcMOhZ2luYXNcbiAgICBjb25zdCBxID0gcXVlcnkoY29sbGVjdGlvblJlZiwgLi4uY29uc3RyYWludHMsIGxpbWl0KG9wdGlvbnMubGltaXQgKyAxKSk7XG4gICAgY29uc3Qgc25hcHNob3QgPSBhd2FpdCBnZXREb2NzKHEpO1xuXG4gICAgY29uc3QgZG9jcyA9IHNuYXBzaG90LmRvY3M7XG4gICAgY29uc3QgaGFzTW9yZSA9IGRvY3MubGVuZ3RoID4gb3B0aW9ucy5saW1pdDtcblxuICAgIC8vIFNpIGhheSBtw6FzLCByZW1vdmVyIGVsIGRvY3VtZW50byBleHRyYVxuICAgIGNvbnN0IHJlc3VsdERvY3MgPSBoYXNNb3JlID8gZG9jcy5zbGljZSgwLCAtMSkgOiBkb2NzO1xuICAgIGNvbnN0IGxhc3REb2MgPSByZXN1bHREb2NzLmxlbmd0aCA+IDAgPyByZXN1bHREb2NzW3Jlc3VsdERvY3MubGVuZ3RoIC0gMV0gOiBudWxsO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGE6IHJlc3VsdERvY3MubWFwKChkb2MpID0+IHRoaXMubWFwRG9jdW1lbnQ8VD4oZG9jKSksXG4gICAgICBoYXNNb3JlLFxuICAgICAgbGFzdERvYyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWNhIHNpIHVuIGRvY3VtZW50byBleGlzdGUuXG4gICAqXG4gICAqIEBwYXJhbSBjb2xsZWN0aW9uUGF0aCAtIFJ1dGEgZGUgbGEgY29sZWNjacOzblxuICAgKiBAcGFyYW0gZG9jSWQgLSBJRCBkZWwgZG9jdW1lbnRvXG4gICAqIEByZXR1cm5zIHRydWUgc2kgZWwgZG9jdW1lbnRvIGV4aXN0ZVxuICAgKi9cbiAgYXN5bmMgZXhpc3RzKGNvbGxlY3Rpb25QYXRoOiBzdHJpbmcsIGRvY0lkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBwcmVmaXhlZFBhdGggPSB0aGlzLnByZWZpeENvbGxlY3Rpb25QYXRoKGNvbGxlY3Rpb25QYXRoKTtcbiAgICBjb25zdCBkb2NSZWYgPSBkb2ModGhpcy5maXJlc3RvcmUsIHByZWZpeGVkUGF0aCwgZG9jSWQpO1xuICAgIGNvbnN0IHNuYXBzaG90ID0gYXdhaXQgZ2V0RG9jKGRvY1JlZik7XG4gICAgcmV0dXJuIHNuYXBzaG90LmV4aXN0cygpO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFNVQlNDUklQQ0lPTkVTIFJFQUwtVElNRSAoT2JzZXJ2YWJsZSlcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIFN1c2NyaWJlIGEgY2FtYmlvcyBkZSB1biBkb2N1bWVudG8gKHJlYWwtdGltZSkuXG4gICAqXG4gICAqIEBwYXJhbSBjb2xsZWN0aW9uUGF0aCAtIFJ1dGEgZGUgbGEgY29sZWNjacOzblxuICAgKiBAcGFyYW0gZG9jSWQgLSBJRCBkZWwgZG9jdW1lbnRvXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGUgcXVlIGVtaXRlIGN1YW5kbyBlbCBkb2N1bWVudG8gY2FtYmlhXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogLy8gRW4gZWwgY29tcG9uZW50ZVxuICAgKiB1c2VyJCA9IHRoaXMuZmlyZXN0b3JlU2VydmljZS5kb2NDaGFuZ2VzPFVzZXI+KCd1c2VycycsIHRoaXMudXNlcklkKTtcbiAgICpcbiAgICogLy8gRW4gZWwgdGVtcGxhdGVcbiAgICogQGlmICh1c2VyJCB8IGFzeW5jOyBhcyB1c2VyKSB7XG4gICAqICAgPHA+e3sgdXNlci5uYW1lIH19PC9wPlxuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgZG9jQ2hhbmdlczxUIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ+KFxuICAgIGNvbGxlY3Rpb25QYXRoOiBzdHJpbmcsXG4gICAgZG9jSWQ6IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPFQgfCBudWxsPiB7XG4gICAgY29uc3QgcHJlZml4ZWRQYXRoID0gdGhpcy5wcmVmaXhDb2xsZWN0aW9uUGF0aChjb2xsZWN0aW9uUGF0aCk7XG4gICAgY29uc3QgZG9jUmVmID0gZG9jKHRoaXMuZmlyZXN0b3JlLCBwcmVmaXhlZFBhdGgsIGRvY0lkKTtcbiAgICByZXR1cm4gZG9jRGF0YShkb2NSZWYsIHsgaWRGaWVsZDogJ2lkJyB9KS5waXBlKFxuICAgICAgbWFwKChkYXRhKSA9PiB7XG4gICAgICAgIGlmICghZGF0YSkgcmV0dXJuIG51bGw7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRUaW1lc3RhbXBzKGRhdGEgYXMgRG9jdW1lbnREYXRhKSBhcyBUO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1c2NyaWJlIGEgY2FtYmlvcyBkZSB1bmEgY29sZWNjacOzbiAocmVhbC10aW1lKS5cbiAgICpcbiAgICogQHBhcmFtIGNvbGxlY3Rpb25QYXRoIC0gUnV0YSBkZSBsYSBjb2xlY2Npw7NuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gT3BjaW9uZXMgZGUgcXVlcnlcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBxdWUgZW1pdGUgY3VhbmRvIGxhIGNvbGVjY2nDs24gY2FtYmlhXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogLy8gVXN1YXJpb3MgYWN0aXZvcyBlbiB0aWVtcG8gcmVhbFxuICAgKiBhY3RpdmVVc2VycyQgPSB0aGlzLmZpcmVzdG9yZVNlcnZpY2UuY29sbGVjdGlvbkNoYW5nZXM8VXNlcj4oJ3VzZXJzJywge1xuICAgKiAgIHdoZXJlOiBbeyBmaWVsZDogJ3N0YXR1cycsIG9wZXJhdG9yOiAnPT0nLCB2YWx1ZTogJ29ubGluZScgfV1cbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgY29sbGVjdGlvbkNoYW5nZXM8VCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PihcbiAgICBjb2xsZWN0aW9uUGF0aDogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiBRdWVyeU9wdGlvbnNcbiAgKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICBjb25zdCBwcmVmaXhlZFBhdGggPSB0aGlzLnByZWZpeENvbGxlY3Rpb25QYXRoKGNvbGxlY3Rpb25QYXRoKTtcbiAgICBjb25zdCBjb2xsZWN0aW9uUmVmID0gY29sbGVjdGlvbih0aGlzLmZpcmVzdG9yZSwgcHJlZml4ZWRQYXRoKTtcbiAgICBjb25zdCBjb25zdHJhaW50cyA9IHRoaXMuYnVpbGRRdWVyeUNvbnN0cmFpbnRzKG9wdGlvbnMpO1xuICAgIGNvbnN0IHEgPSBxdWVyeShjb2xsZWN0aW9uUmVmLCAuLi5jb25zdHJhaW50cyk7XG5cbiAgICByZXR1cm4gY29sbGVjdGlvbkRhdGEocSwgeyBpZEZpZWxkOiAnaWQnIH0pLnBpcGUoXG4gICAgICBtYXAoKGRvY3MpID0+IGRvY3MubWFwKChkb2MpID0+IHRoaXMuY29udmVydFRpbWVzdGFtcHMoZG9jKSBhcyBUKSlcbiAgICApO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIEVTQ1JJVFVSQVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogQWdyZWdhIHVuIGRvY3VtZW50byBjb24gSUQgYXV0by1nZW5lcmFkby5cbiAgICpcbiAgICogQHBhcmFtIGNvbGxlY3Rpb25QYXRoIC0gUnV0YSBkZSBsYSBjb2xlY2Npw7NuXG4gICAqIEBwYXJhbSBkYXRhIC0gRGF0b3MgZGVsIGRvY3VtZW50byAoc2luIGlkLCBjcmVhdGVkQXQsIHVwZGF0ZWRBdClcbiAgICogQHJldHVybnMgRG9jdW1lbnRvIGNyZWFkbyBjb24gc3UgSURcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBuZXdVc2VyID0gYXdhaXQgZmlyZXN0b3JlU2VydmljZS5hZGREb2M8VXNlcj4oJ3VzZXJzJywge1xuICAgKiAgIG5hbWU6ICdKb2huIERvZScsXG4gICAqICAgZW1haWw6ICdqb2huQGV4YW1wbGUuY29tJyxcbiAgICogICByb2xlOiAndXNlcidcbiAgICogfSk7XG4gICAqIGNvbnNvbGUubG9nKCdDcmVhdGVkIHVzZXIgd2l0aCBJRDonLCBuZXdVc2VyLmlkKTtcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBhZGREb2M8VCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PihcbiAgICBjb2xsZWN0aW9uUGF0aDogc3RyaW5nLFxuICAgIGRhdGE6IE9taXQ8VCwgJ2lkJyB8ICdjcmVhdGVkQXQnIHwgJ3VwZGF0ZWRBdCc+XG4gICk6IFByb21pc2U8VD4ge1xuICAgIGNvbnN0IHByZWZpeGVkUGF0aCA9IHRoaXMucHJlZml4Q29sbGVjdGlvblBhdGgoY29sbGVjdGlvblBhdGgpO1xuICAgIGNvbnN0IGNvbGxlY3Rpb25SZWYgPSBjb2xsZWN0aW9uKHRoaXMuZmlyZXN0b3JlLCBwcmVmaXhlZFBhdGgpO1xuICAgIGNvbnN0IHRpbWVzdGFtcCA9IHNlcnZlclRpbWVzdGFtcCgpO1xuXG4gICAgY29uc3QgZG9jRGF0YSA9IHtcbiAgICAgIC4uLmRhdGEsXG4gICAgICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCxcbiAgICAgIHVwZGF0ZWRBdDogdGltZXN0YW1wLFxuICAgIH07XG5cbiAgICBjb25zdCBkb2NSZWYgPSBhd2FpdCBhZGREb2MoY29sbGVjdGlvblJlZiwgZG9jRGF0YSk7XG5cbiAgICAvLyBPYnRlbmVyIGVsIGRvY3VtZW50byBjcmVhZG8gcGFyYSByZXRvcm5hcmxvIGNvbiB0aW1lc3RhbXBzIHJlc3VlbHRvc1xuICAgIGNvbnN0IHNuYXBzaG90ID0gYXdhaXQgZ2V0RG9jKGRvY1JlZik7XG4gICAgcmV0dXJuIHRoaXMubWFwRG9jdW1lbnQ8VD4oc25hcHNob3QpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWEgbyBzb2JyZXNjcmliZSB1biBkb2N1bWVudG8gY29uIElEIGVzcGVjw61maWNvLlxuICAgKlxuICAgKiBAcGFyYW0gY29sbGVjdGlvblBhdGggLSBSdXRhIGRlIGxhIGNvbGVjY2nDs25cbiAgICogQHBhcmFtIGRvY0lkIC0gSUQgZGVsIGRvY3VtZW50b1xuICAgKiBAcGFyYW0gZGF0YSAtIERhdG9zIGRlbCBkb2N1bWVudG9cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBPcGNpb25lcyAobWVyZ2U6IHRydWUgcGFyYSBtZXJnZSBlbiBsdWdhciBkZSBzb2JyZXNjcmliaXIpXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogLy8gU29icmVzY3JpYmlyIGNvbXBsZXRhbWVudGVcbiAgICogYXdhaXQgZmlyZXN0b3JlU2VydmljZS5zZXREb2M8VXNlcj4oJ3VzZXJzJywgJ3VzZXIxMjMnLCB1c2VyRGF0YSk7XG4gICAqXG4gICAqIC8vIE1lcmdlIGNvbiBkYXRvcyBleGlzdGVudGVzXG4gICAqIGF3YWl0IGZpcmVzdG9yZVNlcnZpY2Uuc2V0RG9jPFVzZXI+KCd1c2VycycsICd1c2VyMTIzJywgeyBuYW1lOiAnTmV3IE5hbWUnIH0sIHsgbWVyZ2U6IHRydWUgfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgc2V0RG9jPFQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudD4oXG4gICAgY29sbGVjdGlvblBhdGg6IHN0cmluZyxcbiAgICBkb2NJZDogc3RyaW5nLFxuICAgIGRhdGE6IE9taXQ8VCwgJ2lkJz4sXG4gICAgb3B0aW9ucz86IHsgbWVyZ2U/OiBib29sZWFuIH1cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcHJlZml4ZWRQYXRoID0gdGhpcy5wcmVmaXhDb2xsZWN0aW9uUGF0aChjb2xsZWN0aW9uUGF0aCk7XG4gICAgY29uc3QgZG9jUmVmID0gZG9jKHRoaXMuZmlyZXN0b3JlLCBwcmVmaXhlZFBhdGgsIGRvY0lkKTtcbiAgICBjb25zdCB0aW1lc3RhbXAgPSBzZXJ2ZXJUaW1lc3RhbXAoKTtcblxuICAgIGNvbnN0IGRvY0RhdGEgPSB7XG4gICAgICAuLi5kYXRhLFxuICAgICAgdXBkYXRlZEF0OiB0aW1lc3RhbXAsXG4gICAgICAuLi4ob3B0aW9ucz8ubWVyZ2UgPyB7fSA6IHsgY3JlYXRlZEF0OiB0aW1lc3RhbXAgfSksXG4gICAgfTtcblxuICAgIGF3YWl0IHNldERvYyhkb2NSZWYsIGRvY0RhdGEsIHsgbWVyZ2U6IG9wdGlvbnM/Lm1lcmdlID8/IGZhbHNlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjdHVhbGl6YSBjYW1wb3MgZXNwZWPDrWZpY29zIGRlIHVuIGRvY3VtZW50by5cbiAgICpcbiAgICogQHBhcmFtIGNvbGxlY3Rpb25QYXRoIC0gUnV0YSBkZSBsYSBjb2xlY2Npw7NuXG4gICAqIEBwYXJhbSBkb2NJZCAtIElEIGRlbCBkb2N1bWVudG9cbiAgICogQHBhcmFtIGRhdGEgLSBDYW1wb3MgYSBhY3R1YWxpemFyXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogYXdhaXQgZmlyZXN0b3JlU2VydmljZS51cGRhdGVEb2M8VXNlcj4oJ3VzZXJzJywgJ3VzZXIxMjMnLCB7XG4gICAqICAgbmFtZTogJ1VwZGF0ZWQgTmFtZScsXG4gICAqICAgbGFzdExvZ2luOiBuZXcgRGF0ZSgpXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIHVwZGF0ZURvYzxUIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ+KFxuICAgIGNvbGxlY3Rpb25QYXRoOiBzdHJpbmcsXG4gICAgZG9jSWQ6IHN0cmluZyxcbiAgICBkYXRhOiBQYXJ0aWFsPE9taXQ8VCwgJ2lkJyB8ICdjcmVhdGVkQXQnPj5cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcHJlZml4ZWRQYXRoID0gdGhpcy5wcmVmaXhDb2xsZWN0aW9uUGF0aChjb2xsZWN0aW9uUGF0aCk7XG4gICAgY29uc3QgZG9jUmVmID0gZG9jKHRoaXMuZmlyZXN0b3JlLCBwcmVmaXhlZFBhdGgsIGRvY0lkKTtcblxuICAgIGF3YWl0IHVwZGF0ZURvYyhkb2NSZWYsIHtcbiAgICAgIC4uLmRhdGEsXG4gICAgICB1cGRhdGVkQXQ6IHNlcnZlclRpbWVzdGFtcCgpLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEVsaW1pbmEgdW4gZG9jdW1lbnRvLlxuICAgKlxuICAgKiBAcGFyYW0gY29sbGVjdGlvblBhdGggLSBSdXRhIGRlIGxhIGNvbGVjY2nDs25cbiAgICogQHBhcmFtIGRvY0lkIC0gSUQgZGVsIGRvY3VtZW50b1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGF3YWl0IGZpcmVzdG9yZVNlcnZpY2UuZGVsZXRlRG9jKCd1c2VycycsICd1c2VyMTIzJyk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgZGVsZXRlRG9jKGNvbGxlY3Rpb25QYXRoOiBzdHJpbmcsIGRvY0lkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBwcmVmaXhlZFBhdGggPSB0aGlzLnByZWZpeENvbGxlY3Rpb25QYXRoKGNvbGxlY3Rpb25QYXRoKTtcbiAgICBjb25zdCBkb2NSZWYgPSBkb2ModGhpcy5maXJlc3RvcmUsIHByZWZpeGVkUGF0aCwgZG9jSWQpO1xuICAgIGF3YWl0IGRlbGV0ZURvYyhkb2NSZWYpO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIE9QRVJBQ0lPTkVTIEVOIExPVEVcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEVqZWN1dGEgbcO6bHRpcGxlcyBvcGVyYWNpb25lcyBkZSBlc2NyaXR1cmEgZGUgZm9ybWEgYXTDs21pY2EuXG4gICAqXG4gICAqIEBwYXJhbSBvcGVyYXRpb25zIC0gRnVuY2nDs24gcXVlIHJlY2liZSBlbCBiYXRjaCB5IGFncmVnYSBvcGVyYWNpb25lc1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGF3YWl0IGZpcmVzdG9yZVNlcnZpY2UuYmF0Y2goKGJhdGNoKSA9PiB7XG4gICAqICAgYmF0Y2guc2V0KCd1c2Vycy91c2VyMScsIHsgbmFtZTogJ1VzZXIgMScgfSk7XG4gICAqICAgYmF0Y2gudXBkYXRlKCd1c2Vycy91c2VyMicsIHsgc3RhdHVzOiAnaW5hY3RpdmUnIH0pO1xuICAgKiAgIGJhdGNoLmRlbGV0ZSgndXNlcnMvdXNlcjMnKTtcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgYmF0Y2goXG4gICAgb3BlcmF0aW9uczogKGJhdGNoOiB7XG4gICAgICBzZXQ6IDxUPihwYXRoOiBzdHJpbmcsIGRhdGE6IFQpID0+IHZvaWQ7XG4gICAgICB1cGRhdGU6IDxUPihwYXRoOiBzdHJpbmcsIGRhdGE6IFBhcnRpYWw8VD4pID0+IHZvaWQ7XG4gICAgICBkZWxldGU6IChwYXRoOiBzdHJpbmcpID0+IHZvaWQ7XG4gICAgfSkgPT4gdm9pZFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBiYXRjaCA9IHdyaXRlQmF0Y2godGhpcy5maXJlc3RvcmUpO1xuXG4gICAgY29uc3QgYmF0Y2hBcGkgPSB7XG4gICAgICBzZXQ6IDxUPihwYXRoOiBzdHJpbmcsIGRhdGE6IFQpID0+IHtcbiAgICAgICAgY29uc3QgW2NvbGxlY3Rpb25QYXRoLCBkb2NJZF0gPSB0aGlzLnNwbGl0UGF0aChwYXRoKTtcbiAgICAgICAgY29uc3QgcHJlZml4ZWRQYXRoID0gdGhpcy5wcmVmaXhDb2xsZWN0aW9uUGF0aChjb2xsZWN0aW9uUGF0aCk7XG4gICAgICAgIGNvbnN0IGRvY1JlZiA9IGRvYyh0aGlzLmZpcmVzdG9yZSwgcHJlZml4ZWRQYXRoLCBkb2NJZCk7XG4gICAgICAgIGJhdGNoLnNldChkb2NSZWYsIHtcbiAgICAgICAgICAuLi5kYXRhLFxuICAgICAgICAgIGNyZWF0ZWRBdDogc2VydmVyVGltZXN0YW1wKCksXG4gICAgICAgICAgdXBkYXRlZEF0OiBzZXJ2ZXJUaW1lc3RhbXAoKSxcbiAgICAgICAgfSBhcyBEb2N1bWVudERhdGEpO1xuICAgICAgfSxcbiAgICAgIHVwZGF0ZTogPFQ+KHBhdGg6IHN0cmluZywgZGF0YTogUGFydGlhbDxUPikgPT4ge1xuICAgICAgICBjb25zdCBbY29sbGVjdGlvblBhdGgsIGRvY0lkXSA9IHRoaXMuc3BsaXRQYXRoKHBhdGgpO1xuICAgICAgICBjb25zdCBwcmVmaXhlZFBhdGggPSB0aGlzLnByZWZpeENvbGxlY3Rpb25QYXRoKGNvbGxlY3Rpb25QYXRoKTtcbiAgICAgICAgY29uc3QgZG9jUmVmID0gZG9jKHRoaXMuZmlyZXN0b3JlLCBwcmVmaXhlZFBhdGgsIGRvY0lkKTtcbiAgICAgICAgYmF0Y2gudXBkYXRlKGRvY1JlZiwge1xuICAgICAgICAgIC4uLmRhdGEsXG4gICAgICAgICAgdXBkYXRlZEF0OiBzZXJ2ZXJUaW1lc3RhbXAoKSxcbiAgICAgICAgfSBhcyBEb2N1bWVudERhdGEpO1xuICAgICAgfSxcbiAgICAgIGRlbGV0ZTogKHBhdGg6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBbY29sbGVjdGlvblBhdGgsIGRvY0lkXSA9IHRoaXMuc3BsaXRQYXRoKHBhdGgpO1xuICAgICAgICBjb25zdCBwcmVmaXhlZFBhdGggPSB0aGlzLnByZWZpeENvbGxlY3Rpb25QYXRoKGNvbGxlY3Rpb25QYXRoKTtcbiAgICAgICAgY29uc3QgZG9jUmVmID0gZG9jKHRoaXMuZmlyZXN0b3JlLCBwcmVmaXhlZFBhdGgsIGRvY0lkKTtcbiAgICAgICAgYmF0Y2guZGVsZXRlKGRvY1JlZik7XG4gICAgICB9LFxuICAgIH07XG5cbiAgICBvcGVyYXRpb25zKGJhdGNoQXBpKTtcbiAgICBhd2FpdCBiYXRjaC5jb21taXQoKTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBVVElMSURBREVTXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBDb25zdHJ1eWUgdW5hIHJ1dGEgYSBwYXJ0aXIgZGUgdW4gdGVtcGxhdGUuXG4gICAqXG4gICAqIEBwYXJhbSB0ZW1wbGF0ZSAtIFRlbXBsYXRlIGNvbiBwbGFjZWhvbGRlcnMge3BhcmFtfVxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVmFsb3JlcyBwYXJhIGxvcyBwbGFjZWhvbGRlcnNcbiAgICogQHJldHVybnMgUnV0YSBjb25zdHJ1aWRhXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgcGF0aCA9IGZpcmVzdG9yZVNlcnZpY2UuYnVpbGRQYXRoKCd1c2Vycy97dXNlcklkfS9kb2N1bWVudHMve2RvY0lkfScsIHtcbiAgICogICB1c2VySWQ6ICd1c2VyMTIzJyxcbiAgICogICBkb2NJZDogJ2RvYzQ1NidcbiAgICogfSk7XG4gICAqIC8vID0+ICd1c2Vycy91c2VyMTIzL2RvY3VtZW50cy9kb2M0NTYnXG4gICAqIGBgYFxuICAgKi9cbiAgYnVpbGRQYXRoKHRlbXBsYXRlOiBzdHJpbmcsIHBhcmFtczogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGJ1aWxkUGF0aCh0ZW1wbGF0ZSwgcGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmEgdW4gSUQgw7puaWNvIHBhcmEgdW4gZG9jdW1lbnRvIChzaW4gY3JlYXJsbykuXG4gICAqXG4gICAqIEBwYXJhbSBjb2xsZWN0aW9uUGF0aCAtIFJ1dGEgZGUgbGEgY29sZWNjacOzblxuICAgKiBAcmV0dXJucyBJRCDDum5pY28gZ2VuZXJhZG8gcG9yIEZpcmVzdG9yZVxuICAgKi9cbiAgZ2VuZXJhdGVJZChjb2xsZWN0aW9uUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBwcmVmaXhlZFBhdGggPSB0aGlzLnByZWZpeENvbGxlY3Rpb25QYXRoKGNvbGxlY3Rpb25QYXRoKTtcbiAgICBjb25zdCBjb2xsZWN0aW9uUmVmID0gY29sbGVjdGlvbih0aGlzLmZpcmVzdG9yZSwgcHJlZml4ZWRQYXRoKTtcbiAgICByZXR1cm4gZG9jKGNvbGxlY3Rpb25SZWYpLmlkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldG9ybmEgdW4gdmFsb3IgZGUgdGltZXN0YW1wIGRlbCBzZXJ2aWRvci5cbiAgICogVXNhciBlbiBjYW1wb3MgZGUgZmVjaGEgcGFyYSBxdWUgRmlyZXN0b3JlIGFzaWduZSBlbCB0aW1lc3RhbXAuXG4gICAqL1xuICBzZXJ2ZXJUaW1lc3RhbXAoKTogRmllbGRWYWx1ZSB7XG4gICAgcmV0dXJuIHNlcnZlclRpbWVzdGFtcCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldG9ybmEgdW4gdmFsb3IgcGFyYSBhZ3JlZ2FyIGVsZW1lbnRvcyBhIHVuIGFycmF5LlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGF3YWl0IGZpcmVzdG9yZVNlcnZpY2UudXBkYXRlRG9jKCd1c2VycycsICd1c2VyMTIzJywge1xuICAgKiAgIHRhZ3M6IGZpcmVzdG9yZVNlcnZpY2UuYXJyYXlVbmlvbignbmV3LXRhZycpXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIGFycmF5VW5pb24oLi4uZWxlbWVudHM6IHVua25vd25bXSk6IEZpZWxkVmFsdWUge1xuICAgIHJldHVybiBhcnJheVVuaW9uKC4uLmVsZW1lbnRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRvcm5hIHVuIHZhbG9yIHBhcmEgcmVtb3ZlciBlbGVtZW50b3MgZGUgdW4gYXJyYXkuXG4gICAqL1xuICBhcnJheVJlbW92ZSguLi5lbGVtZW50czogdW5rbm93bltdKTogRmllbGRWYWx1ZSB7XG4gICAgcmV0dXJuIGFycmF5UmVtb3ZlKC4uLmVsZW1lbnRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRvcm5hIHVuIHZhbG9yIHBhcmEgaW5jcmVtZW50YXIgdW4gY2FtcG8gbnVtw6lyaWNvLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGF3YWl0IGZpcmVzdG9yZVNlcnZpY2UudXBkYXRlRG9jKCd1c2VycycsICd1c2VyMTIzJywge1xuICAgKiAgIGxvZ2luQ291bnQ6IGZpcmVzdG9yZVNlcnZpY2UuaW5jcmVtZW50KDEpXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIGluY3JlbWVudChuOiBudW1iZXIpOiBGaWVsZFZhbHVlIHtcbiAgICByZXR1cm4gaW5jcmVtZW50KG4pO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIE3DiVRPRE9TIFBSSVZBRE9TXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBDb25zdHJ1eWUgbG9zIFF1ZXJ5Q29uc3RyYWludHMgYSBwYXJ0aXIgZGUgUXVlcnlPcHRpb25zXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkUXVlcnlDb25zdHJhaW50cyhvcHRpb25zPzogUXVlcnlPcHRpb25zKTogUXVlcnlDb25zdHJhaW50W10ge1xuICAgIGNvbnN0IGNvbnN0cmFpbnRzOiBRdWVyeUNvbnN0cmFpbnRbXSA9IFtdO1xuXG4gICAgaWYgKCFvcHRpb25zKSByZXR1cm4gY29uc3RyYWludHM7XG5cbiAgICAvLyBXaGVyZSBjbGF1c2VzXG4gICAgaWYgKG9wdGlvbnMud2hlcmUpIHtcbiAgICAgIGZvciAoY29uc3QgY2xhdXNlIG9mIG9wdGlvbnMud2hlcmUpIHtcbiAgICAgICAgY29uc3RyYWludHMucHVzaCh3aGVyZShjbGF1c2UuZmllbGQsIGNsYXVzZS5vcGVyYXRvciwgY2xhdXNlLnZhbHVlKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gT3JkZXJCeSBjbGF1c2VzXG4gICAgaWYgKG9wdGlvbnMub3JkZXJCeSkge1xuICAgICAgZm9yIChjb25zdCBjbGF1c2Ugb2Ygb3B0aW9ucy5vcmRlckJ5KSB7XG4gICAgICAgIGNvbnN0cmFpbnRzLnB1c2gob3JkZXJCeShjbGF1c2UuZmllbGQsIGNsYXVzZS5kaXJlY3Rpb24pKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDdXJzb3JzIHBhcmEgcGFnaW5hY2nDs25cbiAgICBpZiAob3B0aW9ucy5zdGFydEFmdGVyKSB7XG4gICAgICBjb25zdHJhaW50cy5wdXNoKHN0YXJ0QWZ0ZXIob3B0aW9ucy5zdGFydEFmdGVyKSk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLnN0YXJ0QXQpIHtcbiAgICAgIGNvbnN0cmFpbnRzLnB1c2goc3RhcnRBdChvcHRpb25zLnN0YXJ0QXQpKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuZW5kQmVmb3JlKSB7XG4gICAgICBjb25zdHJhaW50cy5wdXNoKGVuZEJlZm9yZShvcHRpb25zLmVuZEJlZm9yZSkpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5lbmRBdCkge1xuICAgICAgY29uc3RyYWludHMucHVzaChlbmRBdChvcHRpb25zLmVuZEF0KSk7XG4gICAgfVxuXG4gICAgLy8gTGltaXQgKHNlIGFncmVnYSBhbCBmaW5hbClcbiAgICBpZiAob3B0aW9ucy5saW1pdCkge1xuICAgICAgY29uc3RyYWludHMucHVzaChsaW1pdChvcHRpb25zLmxpbWl0KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnN0cmFpbnRzO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hcGVhIHVuIERvY3VtZW50U25hcHNob3QgYSBudWVzdHJvIHRpcG9cbiAgICovXG4gIHByaXZhdGUgbWFwRG9jdW1lbnQ8VCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PihcbiAgICBzbmFwc2hvdDogRG9jdW1lbnRTbmFwc2hvdDxEb2N1bWVudERhdGE+XG4gICk6IFQge1xuICAgIGNvbnN0IGRhdGEgPSBzbmFwc2hvdC5kYXRhKCk7XG4gICAgaWYgKCFkYXRhKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RvY3VtZW50byBubyB0aWVuZSBkYXRvcycpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBpZDogc25hcHNob3QuaWQsXG4gICAgICAuLi50aGlzLmNvbnZlcnRUaW1lc3RhbXBzKGRhdGEpLFxuICAgIH0gYXMgVDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252aWVydGUgVGltZXN0YW1wcyBkZSBGaXJlc3RvcmUgYSBEYXRlIGRlIEphdmFTY3JpcHRcbiAgICovXG4gIHByaXZhdGUgY29udmVydFRpbWVzdGFtcHMoZGF0YTogRG9jdW1lbnREYXRhKTogRG9jdW1lbnREYXRhIHtcbiAgICBjb25zdCByZXN1bHQ6IERvY3VtZW50RGF0YSA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZGF0YSkpIHtcbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFRpbWVzdGFtcCkge1xuICAgICAgICByZXN1bHRba2V5XSA9IHZhbHVlLnRvRGF0ZSgpO1xuICAgICAgfSBlbHNlIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICByZXN1bHRba2V5XSA9IHRoaXMuY29udmVydFRpbWVzdGFtcHModmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0W2tleV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIERpdmlkZSB1bmEgcnV0YSBkZSBkb2N1bWVudG8gZW4gY29sZWNjacOzbiBlIElEXG4gICAqL1xuICBwcml2YXRlIHNwbGl0UGF0aChwYXRoOiBzdHJpbmcpOiBbc3RyaW5nLCBzdHJpbmddIHtcbiAgICBjb25zdCBzZWdtZW50cyA9IHBhdGguc3BsaXQoJy8nKTtcbiAgICBpZiAoc2VnbWVudHMubGVuZ3RoIDwgMiB8fCBzZWdtZW50cy5sZW5ndGggJSAyICE9PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFJ1dGEgZGUgZG9jdW1lbnRvIGludsOhbGlkYTogJHtwYXRofWApO1xuICAgIH1cbiAgICBjb25zdCBkb2NJZCA9IHNlZ21lbnRzLnBvcCgpITtcbiAgICBjb25zdCBjb2xsZWN0aW9uUGF0aCA9IHNlZ21lbnRzLmpvaW4oJy8nKTtcbiAgICByZXR1cm4gW2NvbGxlY3Rpb25QYXRoLCBkb2NJZF07XG4gIH1cbn1cbiJdfQ==