valtech-components 2.0.821 → 2.0.824

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 (817) 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/container/container.component.mjs +52 -0
  8. package/esm2022/lib/components/atoms/container/types.mjs +2 -0
  9. package/esm2022/lib/components/atoms/countdown/countdown.component.mjs +340 -0
  10. package/esm2022/lib/components/atoms/countdown/types.mjs +27 -0
  11. package/esm2022/lib/components/atoms/display/display.component.mjs +51 -0
  12. package/esm2022/lib/components/atoms/display/types.mjs +2 -0
  13. package/esm2022/lib/components/atoms/divider/divider.component.mjs +27 -0
  14. package/esm2022/lib/components/atoms/divider/types.mjs +2 -0
  15. package/esm2022/lib/components/atoms/fab/fab.component.mjs +190 -0
  16. package/esm2022/lib/components/atoms/fab/types.mjs +2 -0
  17. package/esm2022/lib/components/atoms/glass/glass.component.mjs +125 -0
  18. package/esm2022/lib/components/atoms/glass/types.mjs +2 -0
  19. package/esm2022/lib/components/atoms/glow/glow.component.mjs +95 -0
  20. package/esm2022/lib/components/atoms/glow/types.mjs +2 -0
  21. package/esm2022/lib/components/atoms/horizontal-scroll/horizontal-scroll.component.mjs +82 -0
  22. package/esm2022/lib/components/atoms/horizontal-scroll/types.mjs +2 -0
  23. package/esm2022/lib/components/atoms/href/href.component.mjs +62 -0
  24. package/esm2022/lib/components/atoms/href/types.mjs +2 -0
  25. package/esm2022/lib/components/atoms/icon/icon.component.mjs +29 -0
  26. package/esm2022/lib/components/atoms/icon/types.mjs +2 -0
  27. package/esm2022/lib/components/atoms/image/image.component.mjs +507 -0
  28. package/esm2022/lib/components/atoms/image/types.mjs +2 -0
  29. package/esm2022/lib/components/atoms/pattern/motifs.mjs +147 -0
  30. package/esm2022/lib/components/atoms/pattern/pattern.component.mjs +178 -0
  31. package/esm2022/lib/components/atoms/pattern/types.mjs +2 -0
  32. package/esm2022/lib/components/atoms/price-tag/price-tag.component.mjs +235 -0
  33. package/esm2022/lib/components/atoms/price-tag/types.mjs +15 -0
  34. package/esm2022/lib/components/atoms/progress-bar/progress-bar.component.mjs +91 -0
  35. package/esm2022/lib/components/atoms/progress-bar/types.mjs +2 -0
  36. package/esm2022/lib/components/atoms/progress-ring/progress-ring.component.mjs +149 -0
  37. package/esm2022/lib/components/atoms/progress-ring/types.mjs +2 -0
  38. package/esm2022/lib/components/atoms/qr-code/qr-code.component.mjs +394 -0
  39. package/esm2022/lib/components/atoms/qr-code/types.mjs +2 -0
  40. package/esm2022/lib/components/atoms/rights-footer/rights-footer.component.mjs +108 -0
  41. package/esm2022/lib/components/atoms/rights-footer/types.mjs +2 -0
  42. package/esm2022/lib/components/atoms/skeleton/skeleton.component.mjs +193 -0
  43. package/esm2022/lib/components/atoms/skeleton/types.mjs +13 -0
  44. package/esm2022/lib/components/atoms/text/text.component.mjs +132 -0
  45. package/esm2022/lib/components/atoms/text/types.mjs +2 -0
  46. package/esm2022/lib/components/atoms/title/title.component.mjs +68 -0
  47. package/esm2022/lib/components/atoms/title/types.mjs +22 -0
  48. package/esm2022/lib/components/atoms/user-avatar/types.mjs +2 -0
  49. package/esm2022/lib/components/atoms/user-avatar/user-avatar.component.mjs +209 -0
  50. package/esm2022/lib/components/molecules/accordion/accordion.component.mjs +120 -0
  51. package/esm2022/lib/components/molecules/accordion/types.mjs +2 -0
  52. package/esm2022/lib/components/molecules/action-card/action-card.component.mjs +273 -0
  53. package/esm2022/lib/components/molecules/action-card/types.mjs +11 -0
  54. package/esm2022/lib/components/molecules/action-header/action-header.component.mjs +55 -0
  55. package/esm2022/lib/components/molecules/action-header/types.mjs +2 -0
  56. package/esm2022/lib/components/molecules/ad-slot/ad-slot.component.mjs +274 -0
  57. package/esm2022/lib/components/molecules/alert-box/alert-box.component.mjs +119 -0
  58. package/esm2022/lib/components/molecules/alert-box/types.mjs +2 -0
  59. package/esm2022/lib/components/molecules/breadcrumb/breadcrumb.component.mjs +130 -0
  60. package/esm2022/lib/components/molecules/breadcrumb/types.mjs +2 -0
  61. package/esm2022/lib/components/molecules/button-group/button-group.component.mjs +63 -0
  62. package/esm2022/lib/components/molecules/button-group/types.mjs +2 -0
  63. package/esm2022/lib/components/molecules/card/card.component.mjs +450 -0
  64. package/esm2022/lib/components/molecules/card/types.mjs +16 -0
  65. package/esm2022/lib/components/molecules/check-input/check-input.component.mjs +82 -0
  66. package/esm2022/lib/components/molecules/checkbox-radio-input/checkbox-radio-input.component.mjs +79 -0
  67. package/esm2022/lib/components/molecules/chip-group/chip-group.component.mjs +166 -0
  68. package/esm2022/lib/components/molecules/chip-group/types.mjs +2 -0
  69. package/esm2022/lib/components/molecules/code-display/code-display.component.mjs +115 -0
  70. package/esm2022/lib/components/molecules/code-display/types.mjs +2 -0
  71. package/esm2022/lib/components/molecules/command-display/command-display.component.mjs +49 -0
  72. package/esm2022/lib/components/molecules/command-display/types.mjs +2 -0
  73. package/esm2022/lib/components/molecules/comment/comment.component.mjs +618 -0
  74. package/esm2022/lib/components/molecules/comment/types.mjs +2 -0
  75. package/esm2022/lib/components/molecules/comment-input/comment-input.component.mjs +41 -0
  76. package/esm2022/lib/components/molecules/comment-input/types.mjs +2 -0
  77. package/esm2022/lib/components/molecules/content-loader/content-loader.component.mjs +42 -0
  78. package/esm2022/lib/components/molecules/content-loader/types.mjs +2 -0
  79. package/esm2022/lib/components/molecules/content-reaction/content-reaction.component.mjs +210 -0
  80. package/esm2022/lib/components/molecules/content-reaction/types.mjs +2 -0
  81. package/esm2022/lib/components/molecules/currency-input/currency-input.component.mjs +347 -0
  82. package/esm2022/lib/components/molecules/currency-input/types.mjs +18 -0
  83. package/esm2022/lib/components/molecules/date-input/date-input.component.mjs +148 -0
  84. package/esm2022/lib/components/molecules/date-input/types.mjs +2 -0
  85. package/esm2022/lib/components/molecules/date-range-input/date-range-input.component.mjs +416 -0
  86. package/esm2022/lib/components/molecules/date-range-input/types.mjs +2 -0
  87. package/esm2022/lib/components/molecules/docs-api-table/docs-api-table.component.mjs +222 -0
  88. package/esm2022/lib/components/molecules/docs-api-table/types.mjs +11 -0
  89. package/esm2022/lib/components/molecules/docs-breadcrumb/docs-breadcrumb.component.mjs +144 -0
  90. package/esm2022/lib/components/molecules/docs-breadcrumb/types.mjs +2 -0
  91. package/esm2022/lib/components/molecules/docs-callout/docs-callout.component.mjs +60 -0
  92. package/esm2022/lib/components/molecules/docs-code-example/docs-code-example.component.mjs +249 -0
  93. package/esm2022/lib/components/molecules/docs-code-example/types.mjs +2 -0
  94. package/esm2022/lib/components/molecules/docs-nav-links/docs-nav-links.component.mjs +140 -0
  95. package/esm2022/lib/components/molecules/docs-nav-links/types.mjs +2 -0
  96. package/esm2022/lib/components/molecules/docs-search/docs-search.component.mjs +268 -0
  97. package/esm2022/lib/components/molecules/docs-search/types.mjs +2 -0
  98. package/esm2022/lib/components/molecules/docs-section/docs-section.component.mjs +85 -0
  99. package/esm2022/lib/components/molecules/docs-section/types.mjs +2 -0
  100. package/esm2022/lib/components/molecules/email-input/email-input.component.mjs +68 -0
  101. package/esm2022/lib/components/molecules/expandable-text/expandable-text.component.mjs +77 -0
  102. package/esm2022/lib/components/molecules/expandable-text/types.mjs +2 -0
  103. package/esm2022/lib/components/molecules/features-list/features-list.component.mjs +179 -0
  104. package/esm2022/lib/components/molecules/features-list/types.mjs +11 -0
  105. package/esm2022/lib/components/molecules/feedback-form/feedback-form.component.mjs +354 -0
  106. package/esm2022/lib/components/molecules/feedback-form/types.mjs +2 -0
  107. package/esm2022/lib/components/molecules/file-input/file-input.component.mjs +90 -0
  108. package/esm2022/lib/components/molecules/file-input/types.mjs +2 -0
  109. package/esm2022/lib/components/molecules/footer-links/footer-links.component.mjs +391 -0
  110. package/esm2022/lib/components/molecules/footer-links/types.mjs +2 -0
  111. package/esm2022/lib/components/molecules/glow-card/glow-card.component.mjs +314 -0
  112. package/esm2022/lib/components/molecules/glow-card/types.mjs +11 -0
  113. package/esm2022/lib/components/molecules/hint/hint.component.mjs +90 -0
  114. package/esm2022/lib/components/molecules/hour-input/hour-input.component.mjs +28 -0
  115. package/esm2022/lib/components/molecules/image-crop/image-crop.component.mjs +174 -0
  116. package/esm2022/lib/components/molecules/image-crop/index.mjs +2 -0
  117. package/esm2022/lib/components/molecules/info/info.component.mjs +49 -0
  118. package/esm2022/lib/components/molecules/info/types.mjs +2 -0
  119. package/esm2022/lib/components/molecules/language-selector/language-selector.component.mjs +221 -0
  120. package/esm2022/lib/components/molecules/language-selector/types.mjs +2 -0
  121. package/esm2022/lib/components/molecules/layered-card/layered-card.component.mjs +104 -0
  122. package/esm2022/lib/components/molecules/layered-card/types.mjs +2 -0
  123. package/esm2022/lib/components/molecules/link/link.component.mjs +64 -0
  124. package/esm2022/lib/components/molecules/link/types.mjs +2 -0
  125. package/esm2022/lib/components/molecules/linked-providers/linked-providers.component.mjs +236 -0
  126. package/esm2022/lib/components/molecules/linked-providers/types.mjs +27 -0
  127. package/esm2022/lib/components/molecules/links-accordion/links-accordion.component.mjs +203 -0
  128. package/esm2022/lib/components/molecules/links-accordion/types.mjs +2 -0
  129. package/esm2022/lib/components/molecules/links-cake/links-cake.component.mjs +51 -0
  130. package/esm2022/lib/components/molecules/links-cake/types.mjs +2 -0
  131. package/esm2022/lib/components/molecules/multi-select-search/multi-select-search.component.mjs +488 -0
  132. package/esm2022/lib/components/molecules/notes-box/notes-box.component.mjs +92 -0
  133. package/esm2022/lib/components/molecules/notes-box/types.mjs +2 -0
  134. package/esm2022/lib/components/molecules/number-from-to/number-from-to.component.mjs +143 -0
  135. package/esm2022/lib/components/molecules/number-from-to/types.mjs +2 -0
  136. package/esm2022/lib/components/molecules/number-input/number-input.component.mjs +34 -0
  137. package/esm2022/lib/components/molecules/number-stepper/number-stepper.component.mjs +379 -0
  138. package/esm2022/lib/components/molecules/number-stepper/types.mjs +2 -0
  139. package/esm2022/lib/components/molecules/page-links/page-links.component.mjs +150 -0
  140. package/esm2022/lib/components/molecules/page-links/types.mjs +2 -0
  141. package/esm2022/lib/components/molecules/pagination/pagination.component.mjs +253 -0
  142. package/esm2022/lib/components/molecules/pagination/types.mjs +2 -0
  143. package/esm2022/lib/components/molecules/password-input/password-input.component.mjs +93 -0
  144. package/esm2022/lib/components/molecules/phone-input/phone-input.component.mjs +365 -0
  145. package/esm2022/lib/components/molecules/phone-input/types.mjs +19 -0
  146. package/esm2022/lib/components/molecules/pill/pill.component.mjs +202 -0
  147. package/esm2022/lib/components/molecules/pill/types.mjs +2 -0
  148. package/esm2022/lib/components/molecules/pin-input/pin-input.component.mjs +78 -0
  149. package/esm2022/lib/components/molecules/pin-input/types.mjs +2 -0
  150. package/esm2022/lib/components/molecules/plain-code-box/plain-code-box.component.mjs +82 -0
  151. package/esm2022/lib/components/molecules/plain-code-box/types.mjs +2 -0
  152. package/esm2022/lib/components/molecules/popover-selector/popover-selector.component.mjs +188 -0
  153. package/esm2022/lib/components/molecules/popover-selector/types.mjs +2 -0
  154. package/esm2022/lib/components/molecules/progress-status/progress-status.component.mjs +105 -0
  155. package/esm2022/lib/components/molecules/progress-status/types.mjs +2 -0
  156. package/esm2022/lib/components/molecules/prompter/prompter.component.mjs +85 -0
  157. package/esm2022/lib/components/molecules/prompter/types.mjs +2 -0
  158. package/esm2022/lib/components/molecules/quote-box/quote-box.component.mjs +155 -0
  159. package/esm2022/lib/components/molecules/radio-input/radio-input.component.mjs +52 -0
  160. package/esm2022/lib/components/molecules/range-input/range-input.component.mjs +127 -0
  161. package/esm2022/lib/components/molecules/range-input/types.mjs +2 -0
  162. package/esm2022/lib/components/molecules/rating/rating.component.mjs +166 -0
  163. package/esm2022/lib/components/molecules/rating/types.mjs +2 -0
  164. package/esm2022/lib/components/molecules/refresher/refresher.component.mjs +275 -0
  165. package/esm2022/lib/components/molecules/refresher/types.mjs +15 -0
  166. package/esm2022/lib/components/molecules/searchbar/searchbar.component.mjs +127 -0
  167. package/esm2022/lib/components/molecules/searchbar/types.mjs +2 -0
  168. package/esm2022/lib/components/molecules/segment-control/segment-control.component.mjs +129 -0
  169. package/esm2022/lib/components/molecules/segment-control/types.mjs +2 -0
  170. package/esm2022/lib/components/molecules/select-input/select-input.component.mjs +148 -0
  171. package/esm2022/lib/components/molecules/select-search/select-search.component.mjs +434 -0
  172. package/esm2022/lib/components/molecules/share-buttons/share-buttons.component.mjs +274 -0
  173. package/esm2022/lib/components/molecules/share-buttons/types.mjs +88 -0
  174. package/esm2022/lib/components/molecules/stats-card/stats-card.component.mjs +211 -0
  175. package/esm2022/lib/components/molecules/stats-card/types.mjs +2 -0
  176. package/esm2022/lib/components/molecules/stepper/stepper.component.mjs +242 -0
  177. package/esm2022/lib/components/molecules/stepper/types.mjs +2 -0
  178. package/esm2022/lib/components/molecules/swipe-carousel/swipe-carousel.component.mjs +206 -0
  179. package/esm2022/lib/components/molecules/swipe-carousel/types.mjs +2 -0
  180. package/esm2022/lib/components/molecules/tabs/tabs.component.mjs +139 -0
  181. package/esm2022/lib/components/molecules/tabs/types.mjs +2 -0
  182. package/esm2022/lib/components/molecules/testimonial-card/testimonial-card.component.mjs +138 -0
  183. package/esm2022/lib/components/molecules/testimonial-card/types.mjs +2 -0
  184. package/esm2022/lib/components/molecules/text-input/text-input.component.mjs +77 -0
  185. package/esm2022/lib/components/molecules/textarea-input/textarea-input.component.mjs +213 -0
  186. package/esm2022/lib/components/molecules/textarea-input/types.mjs +2 -0
  187. package/esm2022/lib/components/molecules/timeline/timeline.component.mjs +140 -0
  188. package/esm2022/lib/components/molecules/timeline/types.mjs +2 -0
  189. package/esm2022/lib/components/molecules/title-block/title-block.component.mjs +102 -0
  190. package/esm2022/lib/components/molecules/title-block/types.mjs +2 -0
  191. package/esm2022/lib/components/molecules/toggle-input/toggle-input.component.mjs +93 -0
  192. package/esm2022/lib/components/molecules/toggle-input/types.mjs +2 -0
  193. package/esm2022/lib/components/molecules/update-banner/types.mjs +42 -0
  194. package/esm2022/lib/components/molecules/update-banner/update-banner.component.mjs +243 -0
  195. package/esm2022/lib/components/molecules/username-input/types.mjs +2 -0
  196. package/esm2022/lib/components/molecules/username-input/username-input.component.mjs +295 -0
  197. package/esm2022/lib/components/organisms/article/article.component.mjs +578 -0
  198. package/esm2022/lib/components/organisms/article/types.mjs +183 -0
  199. package/esm2022/lib/components/organisms/avatar-upload/avatar-upload.component.mjs +325 -0
  200. package/esm2022/lib/components/organisms/avatar-upload/types.mjs +15 -0
  201. package/esm2022/lib/components/organisms/banner/banner.component.mjs +111 -0
  202. package/esm2022/lib/components/organisms/banner/types.mjs +2 -0
  203. package/esm2022/lib/components/organisms/bottom-nav/bottom-nav.component.mjs +383 -0
  204. package/esm2022/lib/components/organisms/bottom-nav/types.mjs +19 -0
  205. package/esm2022/lib/components/organisms/cards-carousel/cards-carousel.component.mjs +108 -0
  206. package/esm2022/lib/components/organisms/cards-carousel/types.mjs +2 -0
  207. package/esm2022/lib/components/organisms/comment-section/comment-section.component.mjs +537 -0
  208. package/esm2022/lib/components/organisms/comment-section/types.mjs +2 -0
  209. package/esm2022/lib/components/organisms/company-footer/company-footer.component.mjs +76 -0
  210. package/esm2022/lib/components/organisms/company-footer/types.mjs +2 -0
  211. package/esm2022/lib/components/organisms/cookie-banner/cookie-banner.component.mjs +199 -0
  212. package/esm2022/lib/components/organisms/cookie-banner/types.mjs +2 -0
  213. package/esm2022/lib/components/organisms/data-table/data-table.component.mjs +1081 -0
  214. package/esm2022/lib/components/organisms/data-table/types.mjs +13 -0
  215. package/esm2022/lib/components/organisms/docs-sidebar/docs-sidebar.component.mjs +290 -0
  216. package/esm2022/lib/components/organisms/docs-sidebar/types.mjs +2 -0
  217. package/esm2022/lib/components/organisms/docs-toc/docs-toc.component.mjs +307 -0
  218. package/esm2022/lib/components/organisms/docs-toc/types.mjs +2 -0
  219. package/esm2022/lib/components/organisms/faq/faq.component.mjs +176 -0
  220. package/esm2022/lib/components/organisms/faq/types.mjs +9 -0
  221. package/esm2022/lib/components/organisms/footer/footer.component.mjs +73 -0
  222. package/esm2022/lib/components/organisms/footer/types.mjs +2 -0
  223. package/esm2022/lib/components/organisms/form/factory.mjs +29 -0
  224. package/esm2022/lib/components/organisms/form/form-footer/form-footer.component.mjs +83 -0
  225. package/esm2022/lib/components/organisms/form/form.component.mjs +510 -0
  226. package/esm2022/lib/components/organisms/fun-header/fun-header.component.mjs +225 -0
  227. package/esm2022/lib/components/organisms/fun-header/types.mjs +2 -0
  228. package/esm2022/lib/components/organisms/header/header.component.mjs +51 -0
  229. package/esm2022/lib/components/organisms/header/types.mjs +2 -0
  230. package/esm2022/lib/components/organisms/infinite-list/infinite-list.component.mjs +620 -0
  231. package/esm2022/lib/components/organisms/infinite-list/types.mjs +15 -0
  232. package/esm2022/lib/components/organisms/item-list/item-list.component.mjs +418 -0
  233. package/esm2022/lib/components/organisms/item-list/types.mjs +2 -0
  234. package/esm2022/lib/components/organisms/login/login.component.mjs +735 -0
  235. package/esm2022/lib/components/organisms/login/types.mjs +11 -0
  236. package/esm2022/lib/components/organisms/menu/menu.component.mjs +206 -0
  237. package/esm2022/lib/components/organisms/menu/types.mjs +2 -0
  238. package/esm2022/lib/components/organisms/no-content/no-content.component.mjs +66 -0
  239. package/esm2022/lib/components/organisms/no-content/types.mjs +2 -0
  240. package/esm2022/lib/components/organisms/rotating-text/rotating-text.component.mjs +180 -0
  241. package/esm2022/lib/components/organisms/rotating-text/types.mjs +2 -0
  242. package/esm2022/lib/components/organisms/skeleton-layout/skeleton-layout.component.mjs +423 -0
  243. package/esm2022/lib/components/organisms/skeleton-layout/types.mjs +10 -0
  244. package/esm2022/lib/components/organisms/tabbed-content/tabbed-content.component.mjs +170 -0
  245. package/esm2022/lib/components/organisms/tabbed-content/types.mjs +2 -0
  246. package/esm2022/lib/components/organisms/terminal-404/terminal-404.component.mjs +214 -0
  247. package/esm2022/lib/components/organisms/terminal-404/types.mjs +2 -0
  248. package/esm2022/lib/components/organisms/testimonial-carousel/testimonial-carousel.component.mjs +72 -0
  249. package/esm2022/lib/components/organisms/testimonial-carousel/types.mjs +2 -0
  250. package/esm2022/lib/components/organisms/toolbar/toolbar.component.mjs +255 -0
  251. package/esm2022/lib/components/organisms/toolbar/types.mjs +2 -0
  252. package/esm2022/lib/components/organisms/wizard/types.mjs +10 -0
  253. package/esm2022/lib/components/organisms/wizard/wizard-footer/wizard-footer.component.mjs +111 -0
  254. package/esm2022/lib/components/organisms/wizard/wizard.component.mjs +161 -0
  255. package/esm2022/lib/components/templates/auth-background/auth-background.component.mjs +164 -0
  256. package/esm2022/lib/components/templates/auth-background/types.mjs +2 -0
  257. package/esm2022/lib/components/templates/docs-layout/docs-layout.component.mjs +221 -0
  258. package/esm2022/lib/components/templates/docs-layout/types.mjs +2 -0
  259. package/esm2022/lib/components/templates/docs-page/docs-page.component.mjs +251 -0
  260. package/esm2022/lib/components/templates/docs-page/types.mjs +2 -0
  261. package/esm2022/lib/components/templates/docs-shell/docs-shell.component.mjs +376 -0
  262. package/esm2022/lib/components/templates/docs-shell/types.mjs +2 -0
  263. package/esm2022/lib/components/templates/maintenance-page/maintenance-page.component.mjs +153 -0
  264. package/esm2022/lib/components/templates/maintenance-page/types.mjs +2 -0
  265. package/esm2022/lib/components/templates/page-content/page-content.component.mjs +193 -0
  266. package/esm2022/lib/components/templates/page-content/types.mjs +2 -0
  267. package/esm2022/lib/components/templates/page-template/page-template.component.mjs +188 -0
  268. package/esm2022/lib/components/templates/page-template/types.mjs +2 -0
  269. package/esm2022/lib/components/templates/page-wrapper/page-wrapper.component.mjs +238 -0
  270. package/esm2022/lib/components/templates/page-wrapper/types.mjs +2 -0
  271. package/esm2022/lib/components/templates/simple/simple.component.mjs +123 -0
  272. package/esm2022/lib/components/templates/simple/types.mjs +2 -0
  273. package/esm2022/lib/components/types.mjs +60 -0
  274. package/esm2022/lib/config/company-footer.config.mjs +125 -0
  275. package/esm2022/lib/config/index.mjs +5 -0
  276. package/esm2022/lib/services/ads/ads-loader.service.mjs +120 -0
  277. package/esm2022/lib/services/ads/ads.service.mjs +236 -0
  278. package/esm2022/lib/services/ads/config.mjs +81 -0
  279. package/esm2022/lib/services/ads/index.mjs +13 -0
  280. package/esm2022/lib/services/ads/types.mjs +23 -0
  281. package/esm2022/lib/services/app-config/app-config.service.mjs +209 -0
  282. package/esm2022/lib/services/app-config/config.mjs +47 -0
  283. package/esm2022/lib/services/app-config/index.mjs +48 -0
  284. package/esm2022/lib/services/app-config/types.mjs +13 -0
  285. package/esm2022/lib/services/app-config/version.mjs +85 -0
  286. package/esm2022/lib/services/app-version/app-version.service.mjs +187 -0
  287. package/esm2022/lib/services/app-version/config.mjs +42 -0
  288. package/esm2022/lib/services/app-version/index.mjs +24 -0
  289. package/esm2022/lib/services/app-version/types.mjs +17 -0
  290. package/esm2022/lib/services/auth/auth-state.service.mjs +207 -0
  291. package/esm2022/lib/services/auth/auth.service.mjs +1142 -0
  292. package/esm2022/lib/services/auth/config.mjs +75 -0
  293. package/esm2022/lib/services/auth/device.service.mjs +135 -0
  294. package/esm2022/lib/services/auth/guards.mjs +199 -0
  295. package/esm2022/lib/services/auth/handoff.service.mjs +152 -0
  296. package/esm2022/lib/services/auth/index.mjs +98 -0
  297. package/esm2022/lib/services/auth/interceptor.mjs +122 -0
  298. package/esm2022/lib/services/auth/notification-action.service.mjs +117 -0
  299. package/esm2022/lib/services/auth/oauth-callback.component.mjs +169 -0
  300. package/esm2022/lib/services/auth/oauth.service.mjs +322 -0
  301. package/esm2022/lib/services/auth/org-switch.service.mjs +137 -0
  302. package/esm2022/lib/services/auth/session.service.mjs +78 -0
  303. package/esm2022/lib/services/auth/storage.service.mjs +152 -0
  304. package/esm2022/lib/services/auth/sync.service.mjs +149 -0
  305. package/esm2022/lib/services/auth/token.service.mjs +122 -0
  306. package/esm2022/lib/services/auth/types.mjs +30 -0
  307. package/esm2022/lib/services/confirmation-dialog/confirmation-dialog.service.mjs +189 -0
  308. package/esm2022/lib/services/confirmation-dialog/types.mjs +14 -0
  309. package/esm2022/lib/services/content/content-types/blog.mjs +275 -0
  310. package/esm2022/lib/services/content/content-types/documentation.mjs +303 -0
  311. package/esm2022/lib/services/content/content-types/news.mjs +277 -0
  312. package/esm2022/lib/services/content/index.mjs +51 -0
  313. package/esm2022/lib/services/content/transformer.mjs +265 -0
  314. package/esm2022/lib/services/content/types.mjs +41 -0
  315. package/esm2022/lib/services/docs/docs-navigation.service.mjs +91 -0
  316. package/esm2022/lib/services/donation/config.mjs +41 -0
  317. package/esm2022/lib/services/donation/donation.service.mjs +92 -0
  318. package/esm2022/lib/services/donation/index.mjs +25 -0
  319. package/esm2022/lib/services/donation/types.mjs +10 -0
  320. package/esm2022/lib/services/download.service.mjs +80 -0
  321. package/esm2022/lib/services/feedback/config.mjs +49 -0
  322. package/esm2022/lib/services/feedback/feedback.service.mjs +296 -0
  323. package/esm2022/lib/services/feedback/index.mjs +44 -0
  324. package/esm2022/lib/services/feedback/types.mjs +30 -0
  325. package/esm2022/lib/services/firebase/analytics-error-handler.mjs +141 -0
  326. package/esm2022/lib/services/firebase/analytics-router-tracker.mjs +99 -0
  327. package/esm2022/lib/services/firebase/analytics-types.mjs +7 -0
  328. package/esm2022/lib/services/firebase/analytics.service.mjs +620 -0
  329. package/esm2022/lib/services/firebase/config.mjs +131 -0
  330. package/esm2022/lib/services/firebase/firebase.service.mjs +506 -0
  331. package/esm2022/lib/services/firebase/firestore-collection.mjs +301 -0
  332. package/esm2022/lib/services/firebase/firestore.service.mjs +571 -0
  333. package/esm2022/lib/services/firebase/index.mjs +56 -0
  334. package/esm2022/lib/services/firebase/messaging.service.mjs +721 -0
  335. package/esm2022/lib/services/firebase/notifications.service.mjs +274 -0
  336. package/esm2022/lib/services/firebase/shared-config.mjs +147 -0
  337. package/esm2022/lib/services/firebase/storage.service.mjs +484 -0
  338. package/esm2022/lib/services/firebase/types.mjs +18 -0
  339. package/esm2022/lib/services/firebase/utils/path-builder.mjs +195 -0
  340. package/esm2022/lib/services/firebase/utils/query-builder.mjs +302 -0
  341. package/esm2022/lib/services/i18n/config.mjs +128 -0
  342. package/esm2022/lib/services/i18n/default-content.mjs +577 -0
  343. package/esm2022/lib/services/i18n/i18n.service.mjs +217 -0
  344. package/esm2022/lib/services/i18n/index.mjs +13 -0
  345. package/esm2022/lib/services/i18n/input-i18n.helper.mjs +97 -0
  346. package/esm2022/lib/services/i18n/translate.pipe.mjs +50 -0
  347. package/esm2022/lib/services/i18n/types.mjs +15 -0
  348. package/esm2022/lib/services/icons.service.mjs +83 -0
  349. package/esm2022/lib/services/image/image.service.mjs +244 -0
  350. package/esm2022/lib/services/image/index.mjs +3 -0
  351. package/esm2022/lib/services/image/types.mjs +13 -0
  352. package/esm2022/lib/services/in-app-browser.service.mjs +35 -0
  353. package/esm2022/lib/services/legal-link/legal-link.service.mjs +85 -0
  354. package/esm2022/lib/services/link-processor.service.mjs +259 -0
  355. package/esm2022/lib/services/local-storage.service.mjs +37 -0
  356. package/esm2022/lib/services/locale.service.mjs +75 -0
  357. package/esm2022/lib/services/markdown-article/legal-content.service.mjs +107 -0
  358. package/esm2022/lib/services/markdown-article/markdown-article-parser.mjs +302 -0
  359. package/esm2022/lib/services/markdown-article/markdown-article-parser.service.mjs +20 -0
  360. package/esm2022/lib/services/meta/index.mjs +3 -0
  361. package/esm2022/lib/services/meta/meta.service.mjs +63 -0
  362. package/esm2022/lib/services/meta/types.mjs +2 -0
  363. package/esm2022/lib/services/modal/modal.service.mjs +220 -0
  364. package/esm2022/lib/services/modal/simple-modal-content.component.mjs +133 -0
  365. package/esm2022/lib/services/modal/types.mjs +26 -0
  366. package/esm2022/lib/services/navigation/index.mjs +3 -0
  367. package/esm2022/lib/services/navigation/navigation.service.mjs +216 -0
  368. package/esm2022/lib/services/navigation/types.mjs +16 -0
  369. package/esm2022/lib/services/page-refresh/page-refresh.service.mjs +104 -0
  370. package/esm2022/lib/services/pagination/index.mjs +5 -0
  371. package/esm2022/lib/services/pagination/pagination.service.mjs +218 -0
  372. package/esm2022/lib/services/pagination/types.mjs +14 -0
  373. package/esm2022/lib/services/preferences/index.mjs +3 -0
  374. package/esm2022/lib/services/preferences/preferences.service.mjs +198 -0
  375. package/esm2022/lib/services/preferences/preferences.types.mjs +7 -0
  376. package/esm2022/lib/services/presets/config.mjs +46 -0
  377. package/esm2022/lib/services/presets/index.mjs +5 -0
  378. package/esm2022/lib/services/presets/preset.service.mjs +104 -0
  379. package/esm2022/lib/services/presets/types.mjs +2 -0
  380. package/esm2022/lib/services/qr-generator/qr-generator.service.mjs +341 -0
  381. package/esm2022/lib/services/qr-generator/types.mjs +46 -0
  382. package/esm2022/lib/services/refreshable-stream/index.mjs +8 -0
  383. package/esm2022/lib/services/refreshable-stream/refreshable-stream.mjs +112 -0
  384. package/esm2022/lib/services/skeleton/config.mjs +79 -0
  385. package/esm2022/lib/services/skeleton/directives/loading.directive.mjs +215 -0
  386. package/esm2022/lib/services/skeleton/index.mjs +16 -0
  387. package/esm2022/lib/services/skeleton/skeleton.service.mjs +198 -0
  388. package/esm2022/lib/services/skeleton/templates/detail-skeleton.component.mjs +223 -0
  389. package/esm2022/lib/services/skeleton/templates/form-skeleton.component.mjs +127 -0
  390. package/esm2022/lib/services/skeleton/templates/grid-skeleton.component.mjs +154 -0
  391. package/esm2022/lib/services/skeleton/templates/list-skeleton.component.mjs +110 -0
  392. package/esm2022/lib/services/skeleton/templates/profile-skeleton.component.mjs +207 -0
  393. package/esm2022/lib/services/skeleton/templates/table-skeleton.component.mjs +116 -0
  394. package/esm2022/lib/services/skeleton/types.mjs +11 -0
  395. package/esm2022/lib/services/theme.service.mjs +153 -0
  396. package/esm2022/lib/services/toast.service.mjs +53 -0
  397. package/esm2022/lib/services/types.mjs +5 -0
  398. package/esm2022/lib/shared/constants/storage.mjs +3 -0
  399. package/esm2022/lib/shared/pipes/process-links.pipe.mjs +69 -0
  400. package/esm2022/lib/shared/utils/datetime.mjs +24 -0
  401. package/esm2022/lib/shared/utils/dom.mjs +27 -0
  402. package/esm2022/lib/shared/utils/form-defaults.mjs +112 -0
  403. package/esm2022/lib/shared/utils/styles.mjs +37 -0
  404. package/esm2022/lib/shared/utils/text.mjs +12 -0
  405. package/esm2022/lib/version.mjs +6 -0
  406. package/esm2022/public-api.mjs +367 -0
  407. package/esm2022/valtech-components.mjs +5 -0
  408. package/fesm2022/valtech-components.mjs +1 -1
  409. package/fesm2022/valtech-components.mjs.map +1 -1
  410. package/index.d.ts +5 -0
  411. package/lib/components/atoms/avatar/avatar.component.d.ts +36 -0
  412. package/lib/components/atoms/avatar/types.d.ts +15 -0
  413. package/lib/components/atoms/box/box.component.d.ts +26 -0
  414. package/lib/components/atoms/box/types.d.ts +19 -0
  415. package/lib/components/atoms/button/button.component.d.ts +63 -0
  416. package/lib/components/atoms/button/factory.d.ts +71 -0
  417. package/lib/components/atoms/container/container.component.d.ts +30 -0
  418. package/lib/components/atoms/container/types.d.ts +11 -0
  419. package/lib/components/atoms/countdown/countdown.component.d.ts +38 -0
  420. package/lib/components/atoms/countdown/types.d.ts +108 -0
  421. package/lib/components/atoms/display/display.component.d.ts +19 -0
  422. package/lib/components/atoms/display/types.d.ts +33 -0
  423. package/lib/components/atoms/divider/divider.component.d.ts +27 -0
  424. package/lib/components/atoms/divider/types.d.ts +12 -0
  425. package/lib/components/atoms/fab/fab.component.d.ts +36 -0
  426. package/lib/components/atoms/fab/types.d.ts +45 -0
  427. package/lib/components/atoms/glass/glass.component.d.ts +43 -0
  428. package/lib/components/atoms/glass/types.d.ts +70 -0
  429. package/lib/components/atoms/glow/glow.component.d.ts +42 -0
  430. package/lib/components/atoms/glow/types.d.ts +40 -0
  431. package/lib/components/atoms/horizontal-scroll/horizontal-scroll.component.d.ts +41 -0
  432. package/lib/components/atoms/horizontal-scroll/types.d.ts +13 -0
  433. package/lib/components/atoms/href/href.component.d.ts +25 -0
  434. package/lib/components/atoms/href/types.d.ts +19 -0
  435. package/lib/components/atoms/icon/icon.component.d.ts +18 -0
  436. package/lib/components/atoms/icon/types.d.ts +13 -0
  437. package/lib/components/atoms/image/image.component.d.ts +41 -0
  438. package/lib/components/atoms/image/types.d.ts +37 -0
  439. package/lib/components/atoms/pattern/motifs.d.ts +60 -0
  440. package/lib/components/atoms/pattern/pattern.component.d.ts +68 -0
  441. package/lib/components/atoms/pattern/types.d.ts +61 -0
  442. package/lib/components/atoms/price-tag/price-tag.component.d.ts +15 -0
  443. package/lib/components/atoms/price-tag/types.d.ts +59 -0
  444. package/lib/components/atoms/progress-bar/progress-bar.component.d.ts +35 -0
  445. package/lib/components/atoms/progress-bar/types.d.ts +19 -0
  446. package/lib/components/atoms/progress-ring/progress-ring.component.d.ts +20 -0
  447. package/lib/components/atoms/progress-ring/types.d.ts +24 -0
  448. package/lib/components/atoms/qr-code/qr-code.component.d.ts +33 -0
  449. package/lib/components/atoms/qr-code/types.d.ts +124 -0
  450. package/lib/components/atoms/rights-footer/rights-footer.component.d.ts +53 -0
  451. package/lib/components/atoms/rights-footer/types.d.ts +21 -0
  452. package/lib/components/atoms/skeleton/skeleton.component.d.ts +12 -0
  453. package/lib/components/atoms/skeleton/types.d.ts +29 -0
  454. package/lib/components/atoms/text/text.component.d.ts +33 -0
  455. package/lib/components/atoms/text/types.d.ts +42 -0
  456. package/lib/components/atoms/title/title.component.d.ts +21 -0
  457. package/lib/components/atoms/title/types.d.ts +36 -0
  458. package/lib/components/atoms/user-avatar/types.d.ts +74 -0
  459. package/lib/components/atoms/user-avatar/user-avatar.component.d.ts +55 -0
  460. package/lib/components/molecules/accordion/accordion.component.d.ts +18 -0
  461. package/lib/components/molecules/accordion/types.d.ts +47 -0
  462. package/lib/components/molecules/action-card/action-card.component.d.ts +90 -0
  463. package/lib/components/molecules/action-card/types.d.ts +83 -0
  464. package/lib/components/molecules/action-header/action-header.component.d.ts +27 -0
  465. package/lib/components/molecules/action-header/types.d.ts +27 -0
  466. package/lib/components/molecules/ad-slot/ad-slot.component.d.ts +69 -0
  467. package/lib/components/molecules/alert-box/alert-box.component.d.ts +39 -0
  468. package/lib/components/molecules/alert-box/types.d.ts +37 -0
  469. package/lib/components/molecules/breadcrumb/breadcrumb.component.d.ts +22 -0
  470. package/lib/components/molecules/breadcrumb/types.d.ts +45 -0
  471. package/lib/components/molecules/button-group/button-group.component.d.ts +23 -0
  472. package/lib/components/molecules/button-group/types.d.ts +13 -0
  473. package/lib/components/molecules/card/card.component.d.ts +49 -0
  474. package/lib/components/molecules/card/types.d.ts +32 -0
  475. package/lib/components/molecules/check-input/check-input.component.d.ts +36 -0
  476. package/lib/components/molecules/checkbox-radio-input/checkbox-radio-input.component.d.ts +17 -0
  477. package/lib/components/molecules/chip-group/chip-group.component.d.ts +22 -0
  478. package/lib/components/molecules/chip-group/types.d.ts +65 -0
  479. package/lib/components/molecules/code-display/code-display.component.d.ts +24 -0
  480. package/lib/components/molecules/code-display/types.d.ts +10 -0
  481. package/lib/components/molecules/command-display/command-display.component.d.ts +11 -0
  482. package/lib/components/molecules/command-display/types.d.ts +3 -0
  483. package/lib/components/molecules/comment/comment.component.d.ts +42 -0
  484. package/lib/components/molecules/comment/types.d.ts +171 -0
  485. package/lib/components/molecules/comment-input/comment-input.component.d.ts +16 -0
  486. package/lib/components/molecules/comment-input/types.d.ts +59 -0
  487. package/lib/components/molecules/content-loader/content-loader.component.d.ts +18 -0
  488. package/lib/components/molecules/content-loader/types.d.ts +15 -0
  489. package/lib/components/molecules/content-reaction/content-reaction.component.d.ts +58 -0
  490. package/lib/components/molecules/content-reaction/types.d.ts +77 -0
  491. package/lib/components/molecules/currency-input/currency-input.component.d.ts +40 -0
  492. package/lib/components/molecules/currency-input/types.d.ts +96 -0
  493. package/lib/components/molecules/date-input/date-input.component.d.ts +40 -0
  494. package/lib/components/molecules/date-input/types.d.ts +74 -0
  495. package/lib/components/molecules/date-range-input/date-range-input.component.d.ts +50 -0
  496. package/lib/components/molecules/date-range-input/types.d.ts +109 -0
  497. package/lib/components/molecules/docs-api-table/docs-api-table.component.d.ts +41 -0
  498. package/lib/components/molecules/docs-api-table/types.d.ts +62 -0
  499. package/lib/components/molecules/docs-breadcrumb/docs-breadcrumb.component.d.ts +31 -0
  500. package/lib/components/molecules/docs-breadcrumb/types.d.ts +20 -0
  501. package/lib/components/molecules/docs-callout/docs-callout.component.d.ts +17 -0
  502. package/lib/components/molecules/docs-code-example/docs-code-example.component.d.ts +45 -0
  503. package/lib/components/molecules/docs-code-example/types.d.ts +63 -0
  504. package/lib/components/molecules/docs-nav-links/docs-nav-links.component.d.ts +30 -0
  505. package/lib/components/molecules/docs-nav-links/types.d.ts +31 -0
  506. package/lib/components/molecules/docs-search/docs-search.component.d.ts +47 -0
  507. package/lib/components/molecules/docs-search/types.d.ts +27 -0
  508. package/lib/components/molecules/docs-section/docs-section.component.d.ts +29 -0
  509. package/lib/components/molecules/docs-section/types.d.ts +27 -0
  510. package/lib/components/molecules/email-input/email-input.component.d.ts +34 -0
  511. package/lib/components/molecules/expandable-text/expandable-text.component.d.ts +23 -0
  512. package/lib/components/molecules/expandable-text/types.d.ts +14 -0
  513. package/lib/components/molecules/features-list/features-list.component.d.ts +66 -0
  514. package/lib/components/molecules/features-list/types.d.ts +36 -0
  515. package/lib/components/molecules/feedback-form/feedback-form.component.d.ts +58 -0
  516. package/lib/components/molecules/feedback-form/types.d.ts +54 -0
  517. package/lib/components/molecules/file-input/file-input.component.d.ts +25 -0
  518. package/lib/components/molecules/file-input/types.d.ts +72 -0
  519. package/lib/components/molecules/footer-links/footer-links.component.d.ts +47 -0
  520. package/lib/components/molecules/footer-links/types.d.ts +50 -0
  521. package/lib/components/molecules/glow-card/glow-card.component.d.ts +60 -0
  522. package/lib/components/molecules/glow-card/types.d.ts +94 -0
  523. package/lib/components/molecules/hint/hint.component.d.ts +19 -0
  524. package/lib/components/molecules/hour-input/hour-input.component.d.ts +15 -0
  525. package/lib/components/molecules/image-crop/image-crop.component.d.ts +59 -0
  526. package/lib/components/molecules/image-crop/index.d.ts +1 -0
  527. package/lib/components/molecules/info/info.component.d.ts +9 -0
  528. package/lib/components/molecules/info/types.d.ts +10 -0
  529. package/lib/components/molecules/language-selector/language-selector.component.d.ts +40 -0
  530. package/lib/components/molecules/language-selector/types.d.ts +82 -0
  531. package/lib/components/molecules/layered-card/layered-card.component.d.ts +10 -0
  532. package/lib/components/molecules/layered-card/types.d.ts +15 -0
  533. package/lib/components/molecules/link/link.component.d.ts +24 -0
  534. package/lib/components/molecules/link/types.d.ts +19 -0
  535. package/lib/components/molecules/linked-providers/linked-providers.component.d.ts +30 -0
  536. package/lib/components/molecules/linked-providers/types.d.ts +38 -0
  537. package/lib/components/molecules/links-accordion/links-accordion.component.d.ts +61 -0
  538. package/lib/components/molecules/links-accordion/types.d.ts +39 -0
  539. package/lib/components/molecules/links-cake/links-cake.component.d.ts +17 -0
  540. package/lib/components/molecules/links-cake/types.d.ts +13 -0
  541. package/lib/components/molecules/multi-select-search/multi-select-search.component.d.ts +76 -0
  542. package/lib/components/molecules/notes-box/notes-box.component.d.ts +33 -0
  543. package/lib/components/molecules/notes-box/types.d.ts +35 -0
  544. package/lib/components/molecules/number-from-to/number-from-to.component.d.ts +27 -0
  545. package/lib/components/molecules/number-from-to/types.d.ts +76 -0
  546. package/lib/components/molecules/number-input/number-input.component.d.ts +16 -0
  547. package/lib/components/molecules/number-stepper/number-stepper.component.d.ts +38 -0
  548. package/lib/components/molecules/number-stepper/types.d.ts +88 -0
  549. package/lib/components/molecules/page-links/page-links.component.d.ts +29 -0
  550. package/lib/components/molecules/page-links/types.d.ts +38 -0
  551. package/lib/components/molecules/pagination/pagination.component.d.ts +15 -0
  552. package/lib/components/molecules/pagination/types.d.ts +41 -0
  553. package/lib/components/molecules/password-input/password-input.component.d.ts +37 -0
  554. package/lib/components/molecules/phone-input/phone-input.component.d.ts +59 -0
  555. package/lib/components/molecules/phone-input/types.d.ts +98 -0
  556. package/lib/components/molecules/pill/pill.component.d.ts +44 -0
  557. package/lib/components/molecules/pill/types.d.ts +63 -0
  558. package/lib/components/molecules/pin-input/pin-input.component.d.ts +21 -0
  559. package/lib/components/molecules/pin-input/types.d.ts +69 -0
  560. package/lib/components/molecules/plain-code-box/plain-code-box.component.d.ts +22 -0
  561. package/lib/components/molecules/plain-code-box/types.d.ts +10 -0
  562. package/lib/components/molecules/popover-selector/popover-selector.component.d.ts +42 -0
  563. package/lib/components/molecules/popover-selector/types.d.ts +69 -0
  564. package/lib/components/molecules/progress-status/progress-status.component.d.ts +23 -0
  565. package/lib/components/molecules/progress-status/types.d.ts +20 -0
  566. package/lib/components/molecules/prompter/prompter.component.d.ts +10 -0
  567. package/lib/components/molecules/prompter/types.d.ts +25 -0
  568. package/lib/components/molecules/quote-box/quote-box.component.d.ts +26 -0
  569. package/lib/components/molecules/radio-input/radio-input.component.d.ts +15 -0
  570. package/lib/components/molecules/range-input/range-input.component.d.ts +25 -0
  571. package/lib/components/molecules/range-input/types.d.ts +59 -0
  572. package/lib/components/molecules/rating/rating.component.d.ts +23 -0
  573. package/lib/components/molecules/rating/types.d.ts +41 -0
  574. package/lib/components/molecules/refresher/refresher.component.d.ts +84 -0
  575. package/lib/components/molecules/refresher/types.d.ts +86 -0
  576. package/lib/components/molecules/searchbar/searchbar.component.d.ts +43 -0
  577. package/lib/components/molecules/searchbar/types.d.ts +33 -0
  578. package/lib/components/molecules/segment-control/segment-control.component.d.ts +35 -0
  579. package/lib/components/molecules/segment-control/types.d.ts +46 -0
  580. package/lib/components/molecules/select-input/select-input.component.d.ts +57 -0
  581. package/lib/components/molecules/select-search/select-search.component.d.ts +78 -0
  582. package/lib/components/molecules/share-buttons/share-buttons.component.d.ts +22 -0
  583. package/lib/components/molecules/share-buttons/types.d.ts +108 -0
  584. package/lib/components/molecules/stats-card/stats-card.component.d.ts +20 -0
  585. package/lib/components/molecules/stats-card/types.d.ts +60 -0
  586. package/lib/components/molecules/stepper/stepper.component.d.ts +31 -0
  587. package/lib/components/molecules/stepper/types.d.ts +66 -0
  588. package/lib/components/molecules/swipe-carousel/swipe-carousel.component.d.ts +66 -0
  589. package/lib/components/molecules/swipe-carousel/types.d.ts +35 -0
  590. package/lib/components/molecules/tabs/tabs.component.d.ts +34 -0
  591. package/lib/components/molecules/tabs/types.d.ts +45 -0
  592. package/lib/components/molecules/testimonial-card/testimonial-card.component.d.ts +41 -0
  593. package/lib/components/molecules/testimonial-card/types.d.ts +25 -0
  594. package/lib/components/molecules/text-input/text-input.component.d.ts +42 -0
  595. package/lib/components/molecules/textarea-input/textarea-input.component.d.ts +46 -0
  596. package/lib/components/molecules/textarea-input/types.d.ts +74 -0
  597. package/lib/components/molecules/timeline/timeline.component.d.ts +14 -0
  598. package/lib/components/molecules/timeline/types.d.ts +39 -0
  599. package/lib/components/molecules/title-block/title-block.component.d.ts +12 -0
  600. package/lib/components/molecules/title-block/types.d.ts +15 -0
  601. package/lib/components/molecules/toggle-input/toggle-input.component.d.ts +39 -0
  602. package/lib/components/molecules/toggle-input/types.d.ts +30 -0
  603. package/lib/components/molecules/update-banner/types.d.ts +41 -0
  604. package/lib/components/molecules/update-banner/update-banner.component.d.ts +48 -0
  605. package/lib/components/molecules/username-input/types.d.ts +36 -0
  606. package/lib/components/molecules/username-input/username-input.component.d.ts +58 -0
  607. package/lib/components/organisms/article/article.component.d.ts +108 -0
  608. package/lib/components/organisms/article/types.d.ts +367 -0
  609. package/lib/components/organisms/avatar-upload/avatar-upload.component.d.ts +84 -0
  610. package/lib/components/organisms/avatar-upload/types.d.ts +62 -0
  611. package/lib/components/organisms/banner/banner.component.d.ts +16 -0
  612. package/lib/components/organisms/banner/types.d.ts +29 -0
  613. package/lib/components/organisms/bottom-nav/bottom-nav.component.d.ts +91 -0
  614. package/lib/components/organisms/bottom-nav/types.d.ts +120 -0
  615. package/lib/components/organisms/cards-carousel/cards-carousel.component.d.ts +36 -0
  616. package/lib/components/organisms/cards-carousel/types.d.ts +40 -0
  617. package/lib/components/organisms/comment-section/comment-section.component.d.ts +50 -0
  618. package/lib/components/organisms/comment-section/types.d.ts +144 -0
  619. package/lib/components/organisms/company-footer/company-footer.component.d.ts +37 -0
  620. package/lib/components/organisms/company-footer/types.d.ts +15 -0
  621. package/lib/components/organisms/cookie-banner/cookie-banner.component.d.ts +36 -0
  622. package/lib/components/organisms/cookie-banner/types.d.ts +62 -0
  623. package/lib/components/organisms/data-table/data-table.component.d.ts +63 -0
  624. package/lib/components/organisms/data-table/types.d.ts +219 -0
  625. package/lib/components/organisms/docs-sidebar/docs-sidebar.component.d.ts +51 -0
  626. package/lib/components/organisms/docs-sidebar/types.d.ts +93 -0
  627. package/lib/components/organisms/docs-toc/docs-toc.component.d.ts +62 -0
  628. package/lib/components/organisms/docs-toc/types.d.ts +62 -0
  629. package/lib/components/organisms/faq/faq.component.d.ts +46 -0
  630. package/lib/components/organisms/faq/types.d.ts +53 -0
  631. package/lib/components/organisms/footer/footer.component.d.ts +36 -0
  632. package/lib/components/organisms/footer/types.d.ts +16 -0
  633. package/lib/components/organisms/form/factory.d.ts +17 -0
  634. package/lib/components/organisms/form/form-footer/form-footer.component.d.ts +17 -0
  635. package/lib/components/organisms/form/form.component.d.ts +72 -0
  636. package/lib/components/organisms/fun-header/fun-header.component.d.ts +72 -0
  637. package/lib/components/organisms/fun-header/types.d.ts +28 -0
  638. package/lib/components/organisms/header/header.component.d.ts +22 -0
  639. package/lib/components/organisms/header/types.d.ts +16 -0
  640. package/lib/components/organisms/infinite-list/infinite-list.component.d.ts +113 -0
  641. package/lib/components/organisms/infinite-list/types.d.ts +197 -0
  642. package/lib/components/organisms/item-list/item-list.component.d.ts +43 -0
  643. package/lib/components/organisms/item-list/types.d.ts +126 -0
  644. package/lib/components/organisms/login/login.component.d.ts +79 -0
  645. package/lib/components/organisms/login/types.d.ts +70 -0
  646. package/lib/components/organisms/menu/menu.component.d.ts +44 -0
  647. package/lib/components/organisms/menu/types.d.ts +23 -0
  648. package/lib/components/organisms/no-content/no-content.component.d.ts +14 -0
  649. package/lib/components/organisms/no-content/types.d.ts +17 -0
  650. package/lib/components/organisms/rotating-text/rotating-text.component.d.ts +47 -0
  651. package/lib/components/organisms/rotating-text/types.d.ts +28 -0
  652. package/lib/components/organisms/skeleton-layout/skeleton-layout.component.d.ts +37 -0
  653. package/lib/components/organisms/skeleton-layout/types.d.ts +50 -0
  654. package/lib/components/organisms/tabbed-content/tabbed-content.component.d.ts +65 -0
  655. package/lib/components/organisms/tabbed-content/types.d.ts +53 -0
  656. package/lib/components/organisms/terminal-404/terminal-404.component.d.ts +42 -0
  657. package/lib/components/organisms/terminal-404/types.d.ts +22 -0
  658. package/lib/components/organisms/testimonial-carousel/testimonial-carousel.component.d.ts +33 -0
  659. package/lib/components/organisms/testimonial-carousel/types.d.ts +8 -0
  660. package/lib/components/organisms/toolbar/toolbar.component.d.ts +85 -0
  661. package/lib/components/organisms/toolbar/types.d.ts +31 -0
  662. package/lib/components/organisms/wizard/types.d.ts +42 -0
  663. package/lib/components/organisms/wizard/wizard-footer/wizard-footer.component.d.ts +23 -0
  664. package/lib/components/organisms/wizard/wizard.component.d.ts +27 -0
  665. package/lib/components/templates/auth-background/auth-background.component.d.ts +62 -0
  666. package/lib/components/templates/auth-background/types.d.ts +30 -0
  667. package/lib/components/templates/docs-layout/docs-layout.component.d.ts +42 -0
  668. package/lib/components/templates/docs-layout/types.d.ts +39 -0
  669. package/lib/components/templates/docs-page/docs-page.component.d.ts +61 -0
  670. package/lib/components/templates/docs-page/types.d.ts +121 -0
  671. package/lib/components/templates/docs-shell/docs-shell.component.d.ts +33 -0
  672. package/lib/components/templates/docs-shell/types.d.ts +152 -0
  673. package/lib/components/templates/maintenance-page/maintenance-page.component.d.ts +57 -0
  674. package/lib/components/templates/maintenance-page/types.d.ts +12 -0
  675. package/lib/components/templates/page-content/page-content.component.d.ts +107 -0
  676. package/lib/components/templates/page-content/types.d.ts +27 -0
  677. package/lib/components/templates/page-template/page-template.component.d.ts +54 -0
  678. package/lib/components/templates/page-template/types.d.ts +17 -0
  679. package/lib/components/templates/page-wrapper/page-wrapper.component.d.ts +99 -0
  680. package/lib/components/templates/page-wrapper/types.d.ts +26 -0
  681. package/lib/components/templates/simple/simple.component.d.ts +14 -0
  682. package/lib/components/templates/simple/types.d.ts +10 -0
  683. package/lib/components/types.d.ts +304 -0
  684. package/lib/config/company-footer.config.d.ts +118 -0
  685. package/lib/config/index.d.ts +4 -0
  686. package/lib/services/ads/ads-loader.service.d.ts +41 -0
  687. package/lib/services/ads/ads.service.d.ts +99 -0
  688. package/lib/services/ads/config.d.ts +53 -0
  689. package/lib/services/ads/index.d.ts +9 -0
  690. package/lib/services/ads/types.d.ts +106 -0
  691. package/lib/services/app-config/app-config.service.d.ts +115 -0
  692. package/lib/services/app-config/config.d.ts +31 -0
  693. package/lib/services/app-config/index.d.ts +47 -0
  694. package/lib/services/app-config/types.d.ts +54 -0
  695. package/lib/services/app-config/version.d.ts +64 -0
  696. package/lib/services/app-version/app-version.service.d.ts +64 -0
  697. package/lib/services/app-version/config.d.ts +35 -0
  698. package/lib/services/app-version/index.d.ts +23 -0
  699. package/lib/services/app-version/types.d.ts +35 -0
  700. package/lib/services/auth/auth-state.service.d.ts +106 -0
  701. package/lib/services/auth/auth.service.d.ts +429 -0
  702. package/lib/services/auth/config.d.ts +38 -0
  703. package/lib/services/auth/device.service.d.ts +101 -0
  704. package/lib/services/auth/guards.d.ts +126 -0
  705. package/lib/services/auth/handoff.service.d.ts +159 -0
  706. package/lib/services/auth/index.d.ts +89 -0
  707. package/lib/services/auth/interceptor.d.ts +22 -0
  708. package/lib/services/auth/notification-action.service.d.ts +34 -0
  709. package/lib/services/auth/oauth-callback.component.d.ts +34 -0
  710. package/lib/services/auth/oauth.service.d.ts +99 -0
  711. package/lib/services/auth/org-switch.service.d.ts +127 -0
  712. package/lib/services/auth/session.service.d.ts +60 -0
  713. package/lib/services/auth/storage.service.d.ts +52 -0
  714. package/lib/services/auth/sync.service.d.ts +49 -0
  715. package/lib/services/auth/token.service.d.ts +57 -0
  716. package/lib/services/auth/types.d.ts +862 -0
  717. package/lib/services/confirmation-dialog/confirmation-dialog.service.d.ts +71 -0
  718. package/lib/services/confirmation-dialog/types.d.ts +61 -0
  719. package/lib/services/content/content-types/blog.d.ts +148 -0
  720. package/lib/services/content/content-types/documentation.d.ts +183 -0
  721. package/lib/services/content/content-types/news.d.ts +162 -0
  722. package/lib/services/content/index.d.ts +49 -0
  723. package/lib/services/content/transformer.d.ts +96 -0
  724. package/lib/services/content/types.d.ts +220 -0
  725. package/lib/services/docs/docs-navigation.service.d.ts +51 -0
  726. package/lib/services/donation/config.d.ts +33 -0
  727. package/lib/services/donation/donation.service.d.ts +54 -0
  728. package/lib/services/donation/index.d.ts +25 -0
  729. package/lib/services/donation/types.d.ts +85 -0
  730. package/lib/services/download.service.d.ts +21 -0
  731. package/lib/services/feedback/config.d.ts +35 -0
  732. package/lib/services/feedback/feedback.service.d.ts +134 -0
  733. package/lib/services/feedback/index.d.ts +40 -0
  734. package/lib/services/feedback/types.d.ts +173 -0
  735. package/lib/services/firebase/analytics-error-handler.d.ts +54 -0
  736. package/lib/services/firebase/analytics-router-tracker.d.ts +51 -0
  737. package/lib/services/firebase/analytics-types.d.ts +221 -0
  738. package/lib/services/firebase/analytics.service.d.ts +256 -0
  739. package/lib/services/firebase/config.d.ts +49 -0
  740. package/lib/services/firebase/firebase.service.d.ts +303 -0
  741. package/lib/services/firebase/firestore-collection.d.ts +199 -0
  742. package/lib/services/firebase/firestore.service.d.ts +335 -0
  743. package/lib/services/firebase/index.d.ts +44 -0
  744. package/lib/services/firebase/messaging.service.d.ts +341 -0
  745. package/lib/services/firebase/notifications.service.d.ts +158 -0
  746. package/lib/services/firebase/shared-config.d.ts +151 -0
  747. package/lib/services/firebase/storage.service.d.ts +238 -0
  748. package/lib/services/firebase/types.d.ts +374 -0
  749. package/lib/services/firebase/utils/path-builder.d.ts +132 -0
  750. package/lib/services/firebase/utils/query-builder.d.ts +210 -0
  751. package/lib/services/i18n/config.d.ts +29 -0
  752. package/lib/services/i18n/default-content.d.ts +30 -0
  753. package/lib/services/i18n/i18n.service.d.ts +128 -0
  754. package/lib/services/i18n/index.d.ts +6 -0
  755. package/lib/services/i18n/input-i18n.helper.d.ts +70 -0
  756. package/lib/services/i18n/translate.pipe.d.ts +36 -0
  757. package/lib/services/i18n/types.d.ts +93 -0
  758. package/lib/services/icons.service.d.ts +9 -0
  759. package/lib/services/image/image.service.d.ts +76 -0
  760. package/lib/services/image/index.d.ts +2 -0
  761. package/lib/services/image/types.d.ts +74 -0
  762. package/lib/services/in-app-browser.service.d.ts +16 -0
  763. package/lib/services/legal-link/legal-link.service.d.ts +73 -0
  764. package/lib/services/link-processor.service.d.ts +104 -0
  765. package/lib/services/local-storage.service.d.ts +27 -0
  766. package/lib/services/locale.service.d.ts +52 -0
  767. package/lib/services/markdown-article/legal-content.service.d.ts +73 -0
  768. package/lib/services/markdown-article/markdown-article-parser.d.ts +38 -0
  769. package/lib/services/markdown-article/markdown-article-parser.service.d.ts +12 -0
  770. package/lib/services/meta/index.d.ts +2 -0
  771. package/lib/services/meta/meta.service.d.ts +23 -0
  772. package/lib/services/meta/types.d.ts +12 -0
  773. package/lib/services/modal/modal.service.d.ts +100 -0
  774. package/lib/services/modal/simple-modal-content.component.d.ts +19 -0
  775. package/lib/services/modal/types.d.ts +155 -0
  776. package/lib/services/navigation/index.d.ts +2 -0
  777. package/lib/services/navigation/navigation.service.d.ts +134 -0
  778. package/lib/services/navigation/types.d.ts +67 -0
  779. package/lib/services/page-refresh/page-refresh.service.d.ts +86 -0
  780. package/lib/services/pagination/index.d.ts +2 -0
  781. package/lib/services/pagination/pagination.service.d.ts +43 -0
  782. package/lib/services/pagination/types.d.ts +113 -0
  783. package/lib/services/preferences/index.d.ts +2 -0
  784. package/lib/services/preferences/preferences.service.d.ts +61 -0
  785. package/lib/services/preferences/preferences.types.d.ts +35 -0
  786. package/lib/services/presets/config.d.ts +32 -0
  787. package/lib/services/presets/index.d.ts +3 -0
  788. package/lib/services/presets/preset.service.d.ts +69 -0
  789. package/lib/services/presets/types.d.ts +39 -0
  790. package/lib/services/qr-generator/qr-generator.service.d.ts +115 -0
  791. package/lib/services/qr-generator/types.d.ts +141 -0
  792. package/lib/services/refreshable-stream/index.d.ts +7 -0
  793. package/lib/services/refreshable-stream/refreshable-stream.d.ts +113 -0
  794. package/lib/services/skeleton/config.d.ts +30 -0
  795. package/lib/services/skeleton/directives/loading.directive.d.ts +71 -0
  796. package/lib/services/skeleton/index.d.ts +10 -0
  797. package/lib/services/skeleton/skeleton.service.d.ts +127 -0
  798. package/lib/services/skeleton/templates/detail-skeleton.component.d.ts +18 -0
  799. package/lib/services/skeleton/templates/form-skeleton.component.d.ts +22 -0
  800. package/lib/services/skeleton/templates/grid-skeleton.component.d.ts +18 -0
  801. package/lib/services/skeleton/templates/list-skeleton.component.d.ts +17 -0
  802. package/lib/services/skeleton/templates/profile-skeleton.component.d.ts +20 -0
  803. package/lib/services/skeleton/templates/table-skeleton.component.d.ts +17 -0
  804. package/lib/services/skeleton/types.d.ts +111 -0
  805. package/lib/services/theme.service.d.ts +76 -0
  806. package/lib/services/toast.service.d.ts +28 -0
  807. package/lib/services/types.d.ts +1 -0
  808. package/lib/shared/constants/storage.d.ts +2 -0
  809. package/lib/shared/pipes/process-links.pipe.d.ts +55 -0
  810. package/lib/shared/utils/datetime.d.ts +21 -0
  811. package/lib/shared/utils/dom.d.ts +13 -0
  812. package/lib/shared/utils/form-defaults.d.ts +30 -0
  813. package/lib/shared/utils/styles.d.ts +13 -0
  814. package/lib/shared/utils/text.d.ts +11 -0
  815. package/lib/version.d.ts +5 -0
  816. package/package.json +1 -1
  817. package/public-api.d.ts +316 -0
@@ -0,0 +1,79 @@
1
+ import { makeEnvironmentProviders, APP_INITIALIZER } from '@angular/core';
2
+ import { DEFAULT_SKELETON_CONFIG } from './types';
3
+ import { SkeletonService } from './skeleton.service';
4
+ // Import built-in templates
5
+ import { ListSkeletonComponent } from './templates/list-skeleton.component';
6
+ import { GridSkeletonComponent } from './templates/grid-skeleton.component';
7
+ import { FormSkeletonComponent } from './templates/form-skeleton.component';
8
+ import { ProfileSkeletonComponent } from './templates/profile-skeleton.component';
9
+ import { TableSkeletonComponent } from './templates/table-skeleton.component';
10
+ import { DetailSkeletonComponent } from './templates/detail-skeleton.component';
11
+ /**
12
+ * Configura el sistema de skeletons para Valtech Components.
13
+ *
14
+ * @param config Configuracion de skeletons
15
+ * @returns Providers para app.config.ts
16
+ *
17
+ * @example
18
+ * // app.config.ts
19
+ * import { provideValtechSkeleton } from 'valtech-components';
20
+ *
21
+ * export const appConfig: ApplicationConfig = {
22
+ * providers: [
23
+ * provideValtechSkeleton({
24
+ * animated: true,
25
+ * defaultDelay: 100,
26
+ * defaultMinTime: 500,
27
+ * templates: [
28
+ * { name: 'custom-card', component: MyCustomCardSkeleton }
29
+ * ]
30
+ * }),
31
+ * ]
32
+ * };
33
+ *
34
+ * @example
35
+ * // Uso minimo - usa configuracion por defecto
36
+ * providers: [provideValtechSkeleton()]
37
+ */
38
+ export function provideValtechSkeleton(config = {}) {
39
+ const mergedConfig = { ...DEFAULT_SKELETON_CONFIG, ...config };
40
+ return makeEnvironmentProviders([
41
+ {
42
+ provide: APP_INITIALIZER,
43
+ useFactory: (skeletonService) => {
44
+ return () => {
45
+ // Configurar servicio
46
+ skeletonService.configure(mergedConfig);
47
+ // Registrar templates built-in
48
+ skeletonService.registerTemplate('list', ListSkeletonComponent, { count: 3 });
49
+ skeletonService.registerTemplate('list-avatar', ListSkeletonComponent, {
50
+ count: 3,
51
+ variant: 'avatar',
52
+ });
53
+ skeletonService.registerTemplate('grid', GridSkeletonComponent, { count: 4 });
54
+ skeletonService.registerTemplate('grid-cards', GridSkeletonComponent, {
55
+ count: 6,
56
+ variant: 'cards',
57
+ });
58
+ skeletonService.registerTemplate('form', FormSkeletonComponent, { count: 3 });
59
+ skeletonService.registerTemplate('form-compact', FormSkeletonComponent, {
60
+ count: 2,
61
+ variant: 'compact',
62
+ });
63
+ skeletonService.registerTemplate('profile', ProfileSkeletonComponent, {});
64
+ skeletonService.registerTemplate('profile-full', ProfileSkeletonComponent, {
65
+ variant: 'full',
66
+ });
67
+ skeletonService.registerTemplate('table', TableSkeletonComponent, {
68
+ columns: 4,
69
+ rows: 5,
70
+ });
71
+ skeletonService.registerTemplate('detail', DetailSkeletonComponent, { sections: 2 });
72
+ };
73
+ },
74
+ deps: [SkeletonService],
75
+ multi: true,
76
+ },
77
+ ]);
78
+ }
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9za2VsZXRvbi9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF3Qix3QkFBd0IsRUFBRSxlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEcsT0FBTyxFQUFrQix1QkFBdUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFckQsNEJBQTRCO0FBQzVCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRWhGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBCRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxTQUF5QixFQUFFO0lBQ2hFLE1BQU0sWUFBWSxHQUFHLEVBQUUsR0FBRyx1QkFBdUIsRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDO0lBRS9ELE9BQU8sd0JBQXdCLENBQUM7UUFDOUI7WUFDRSxPQUFPLEVBQUUsZUFBZTtZQUN4QixVQUFVLEVBQUUsQ0FBQyxlQUFnQyxFQUFFLEVBQUU7Z0JBQy9DLE9BQU8sR0FBRyxFQUFFO29CQUNWLHNCQUFzQjtvQkFDdEIsZUFBZSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFFeEMsK0JBQStCO29CQUMvQixlQUFlLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLHFCQUFxQixFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQzlFLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUscUJBQXFCLEVBQUU7d0JBQ3JFLEtBQUssRUFBRSxDQUFDO3dCQUNSLE9BQU8sRUFBRSxRQUFRO3FCQUNsQixDQUFDLENBQUM7b0JBQ0gsZUFBZSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUM5RSxlQUFlLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLHFCQUFxQixFQUFFO3dCQUNwRSxLQUFLLEVBQUUsQ0FBQzt3QkFDUixPQUFPLEVBQUUsT0FBTztxQkFDakIsQ0FBQyxDQUFDO29CQUNILGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUscUJBQXFCLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDOUUsZUFBZSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsRUFBRSxxQkFBcUIsRUFBRTt3QkFDdEUsS0FBSyxFQUFFLENBQUM7d0JBQ1IsT0FBTyxFQUFFLFNBQVM7cUJBQ25CLENBQUMsQ0FBQztvQkFDSCxlQUFlLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLHdCQUF3QixFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUMxRSxlQUFlLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxFQUFFLHdCQUF3QixFQUFFO3dCQUN6RSxPQUFPLEVBQUUsTUFBTTtxQkFDaEIsQ0FBQyxDQUFDO29CQUNILGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUU7d0JBQ2hFLE9BQU8sRUFBRSxDQUFDO3dCQUNWLElBQUksRUFBRSxDQUFDO3FCQUNSLENBQUMsQ0FBQztvQkFDSCxlQUFlLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLHVCQUF1QixFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3ZGLENBQUMsQ0FBQztZQUNKLENBQUM7WUFDRCxJQUFJLEVBQUUsQ0FBQyxlQUFlLENBQUM7WUFDdkIsS0FBSyxFQUFFLElBQUk7U0FDWjtLQUNGLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnZpcm9ubWVudFByb3ZpZGVycywgbWFrZUVudmlyb25tZW50UHJvdmlkZXJzLCBBUFBfSU5JVElBTElaRVIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNrZWxldG9uQ29uZmlnLCBERUZBVUxUX1NLRUxFVE9OX0NPTkZJRyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgU2tlbGV0b25TZXJ2aWNlIH0gZnJvbSAnLi9za2VsZXRvbi5zZXJ2aWNlJztcblxuLy8gSW1wb3J0IGJ1aWx0LWluIHRlbXBsYXRlc1xuaW1wb3J0IHsgTGlzdFNrZWxldG9uQ29tcG9uZW50IH0gZnJvbSAnLi90ZW1wbGF0ZXMvbGlzdC1za2VsZXRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgR3JpZFNrZWxldG9uQ29tcG9uZW50IH0gZnJvbSAnLi90ZW1wbGF0ZXMvZ3JpZC1za2VsZXRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9ybVNrZWxldG9uQ29tcG9uZW50IH0gZnJvbSAnLi90ZW1wbGF0ZXMvZm9ybS1za2VsZXRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgUHJvZmlsZVNrZWxldG9uQ29tcG9uZW50IH0gZnJvbSAnLi90ZW1wbGF0ZXMvcHJvZmlsZS1za2VsZXRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFibGVTa2VsZXRvbkNvbXBvbmVudCB9IGZyb20gJy4vdGVtcGxhdGVzL3RhYmxlLXNrZWxldG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEZXRhaWxTa2VsZXRvbkNvbXBvbmVudCB9IGZyb20gJy4vdGVtcGxhdGVzL2RldGFpbC1za2VsZXRvbi5jb21wb25lbnQnO1xuXG4vKipcbiAqIENvbmZpZ3VyYSBlbCBzaXN0ZW1hIGRlIHNrZWxldG9ucyBwYXJhIFZhbHRlY2ggQ29tcG9uZW50cy5cbiAqXG4gKiBAcGFyYW0gY29uZmlnIENvbmZpZ3VyYWNpb24gZGUgc2tlbGV0b25zXG4gKiBAcmV0dXJucyBQcm92aWRlcnMgcGFyYSBhcHAuY29uZmlnLnRzXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIGFwcC5jb25maWcudHNcbiAqIGltcG9ydCB7IHByb3ZpZGVWYWx0ZWNoU2tlbGV0b24gfSBmcm9tICd2YWx0ZWNoLWNvbXBvbmVudHMnO1xuICpcbiAqIGV4cG9ydCBjb25zdCBhcHBDb25maWc6IEFwcGxpY2F0aW9uQ29uZmlnID0ge1xuICogICBwcm92aWRlcnM6IFtcbiAqICAgICBwcm92aWRlVmFsdGVjaFNrZWxldG9uKHtcbiAqICAgICAgIGFuaW1hdGVkOiB0cnVlLFxuICogICAgICAgZGVmYXVsdERlbGF5OiAxMDAsXG4gKiAgICAgICBkZWZhdWx0TWluVGltZTogNTAwLFxuICogICAgICAgdGVtcGxhdGVzOiBbXG4gKiAgICAgICAgIHsgbmFtZTogJ2N1c3RvbS1jYXJkJywgY29tcG9uZW50OiBNeUN1c3RvbUNhcmRTa2VsZXRvbiB9XG4gKiAgICAgICBdXG4gKiAgICAgfSksXG4gKiAgIF1cbiAqIH07XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFVzbyBtaW5pbW8gLSB1c2EgY29uZmlndXJhY2lvbiBwb3IgZGVmZWN0b1xuICogcHJvdmlkZXJzOiBbcHJvdmlkZVZhbHRlY2hTa2VsZXRvbigpXVxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZVZhbHRlY2hTa2VsZXRvbihjb25maWc6IFNrZWxldG9uQ29uZmlnID0ge30pOiBFbnZpcm9ubWVudFByb3ZpZGVycyB7XG4gIGNvbnN0IG1lcmdlZENvbmZpZyA9IHsgLi4uREVGQVVMVF9TS0VMRVRPTl9DT05GSUcsIC4uLmNvbmZpZyB9O1xuXG4gIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMoW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFQUF9JTklUSUFMSVpFUixcbiAgICAgIHVzZUZhY3Rvcnk6IChza2VsZXRvblNlcnZpY2U6IFNrZWxldG9uU2VydmljZSkgPT4ge1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgIC8vIENvbmZpZ3VyYXIgc2VydmljaW9cbiAgICAgICAgICBza2VsZXRvblNlcnZpY2UuY29uZmlndXJlKG1lcmdlZENvbmZpZyk7XG5cbiAgICAgICAgICAvLyBSZWdpc3RyYXIgdGVtcGxhdGVzIGJ1aWx0LWluXG4gICAgICAgICAgc2tlbGV0b25TZXJ2aWNlLnJlZ2lzdGVyVGVtcGxhdGUoJ2xpc3QnLCBMaXN0U2tlbGV0b25Db21wb25lbnQsIHsgY291bnQ6IDMgfSk7XG4gICAgICAgICAgc2tlbGV0b25TZXJ2aWNlLnJlZ2lzdGVyVGVtcGxhdGUoJ2xpc3QtYXZhdGFyJywgTGlzdFNrZWxldG9uQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBjb3VudDogMyxcbiAgICAgICAgICAgIHZhcmlhbnQ6ICdhdmF0YXInLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHNrZWxldG9uU2VydmljZS5yZWdpc3RlclRlbXBsYXRlKCdncmlkJywgR3JpZFNrZWxldG9uQ29tcG9uZW50LCB7IGNvdW50OiA0IH0pO1xuICAgICAgICAgIHNrZWxldG9uU2VydmljZS5yZWdpc3RlclRlbXBsYXRlKCdncmlkLWNhcmRzJywgR3JpZFNrZWxldG9uQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBjb3VudDogNixcbiAgICAgICAgICAgIHZhcmlhbnQ6ICdjYXJkcycsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgc2tlbGV0b25TZXJ2aWNlLnJlZ2lzdGVyVGVtcGxhdGUoJ2Zvcm0nLCBGb3JtU2tlbGV0b25Db21wb25lbnQsIHsgY291bnQ6IDMgfSk7XG4gICAgICAgICAgc2tlbGV0b25TZXJ2aWNlLnJlZ2lzdGVyVGVtcGxhdGUoJ2Zvcm0tY29tcGFjdCcsIEZvcm1Ta2VsZXRvbkNvbXBvbmVudCwge1xuICAgICAgICAgICAgY291bnQ6IDIsXG4gICAgICAgICAgICB2YXJpYW50OiAnY29tcGFjdCcsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgc2tlbGV0b25TZXJ2aWNlLnJlZ2lzdGVyVGVtcGxhdGUoJ3Byb2ZpbGUnLCBQcm9maWxlU2tlbGV0b25Db21wb25lbnQsIHt9KTtcbiAgICAgICAgICBza2VsZXRvblNlcnZpY2UucmVnaXN0ZXJUZW1wbGF0ZSgncHJvZmlsZS1mdWxsJywgUHJvZmlsZVNrZWxldG9uQ29tcG9uZW50LCB7XG4gICAgICAgICAgICB2YXJpYW50OiAnZnVsbCcsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgc2tlbGV0b25TZXJ2aWNlLnJlZ2lzdGVyVGVtcGxhdGUoJ3RhYmxlJywgVGFibGVTa2VsZXRvbkNvbXBvbmVudCwge1xuICAgICAgICAgICAgY29sdW1uczogNCxcbiAgICAgICAgICAgIHJvd3M6IDUsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgc2tlbGV0b25TZXJ2aWNlLnJlZ2lzdGVyVGVtcGxhdGUoJ2RldGFpbCcsIERldGFpbFNrZWxldG9uQ29tcG9uZW50LCB7IHNlY3Rpb25zOiAyIH0pO1xuICAgICAgICB9O1xuICAgICAgfSxcbiAgICAgIGRlcHM6IFtTa2VsZXRvblNlcnZpY2VdLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSk7XG59XG4iXX0=
@@ -0,0 +1,215 @@
1
+ import { Directive, Input, TemplateRef, ViewContainerRef, inject, effect, signal, isSignal, DestroyRef, } from '@angular/core';
2
+ import { toSignal } from '@angular/core/rxjs-interop';
3
+ import { isObservable } from 'rxjs';
4
+ import { SkeletonService } from '../skeleton.service';
5
+ import * as i0 from "@angular/core";
6
+ /**
7
+ * Directiva estructural simplificada para estados de carga.
8
+ *
9
+ * Soporta multiples fuentes de estado de carga:
10
+ * - Angular Signal<boolean>
11
+ * - RxJS Observable<boolean>
12
+ * - Promise<any> (cargando hasta que se resuelve)
13
+ * - boolean literal
14
+ *
15
+ * @example
16
+ * <!-- Uso simple con signal -->
17
+ * <ng-container *valLoading="isLoading(); skeleton: 'list'">
18
+ * <app-list [items]="items()"></app-list>
19
+ * </ng-container>
20
+ *
21
+ * @example
22
+ * <!-- Con configuracion -->
23
+ * <ng-container *valLoading="loading$; skeleton: 'grid-cards'; count: 8">
24
+ * <app-grid [data]="data"></app-grid>
25
+ * </ng-container>
26
+ *
27
+ * @example
28
+ * <!-- Con template personalizado -->
29
+ * <ng-container *valLoading="isLoading(); skeletonTpl: customSkeleton">
30
+ * <app-content></app-content>
31
+ * </ng-container>
32
+ * <ng-template #customSkeleton>
33
+ * <val-skeleton [props]="{ type: 'card' }"></val-skeleton>
34
+ * </ng-template>
35
+ */
36
+ export class LoadingDirective {
37
+ constructor() {
38
+ this.templateRef = inject((TemplateRef));
39
+ this.viewContainer = inject(ViewContainerRef);
40
+ this.skeletonService = inject(SkeletonService);
41
+ this.destroyRef = inject(DestroyRef);
42
+ this._loading = signal(false);
43
+ this.hasContentView = false;
44
+ this.skeletonComponentRef = null;
45
+ /** Template de skeleton a usar */
46
+ this.skeleton = 'list';
47
+ /** Template personalizado para skeleton */
48
+ this.skeletonTpl = null;
49
+ /** Cantidad de items skeleton */
50
+ this.count = 3;
51
+ /** Animacion habilitada */
52
+ this.animated = true;
53
+ /** Mostrar spinner en lugar de skeleton */
54
+ this.spinner = false;
55
+ effect(() => {
56
+ const isLoading = this._loading();
57
+ this.updateView(isLoading);
58
+ });
59
+ }
60
+ /**
61
+ * Input principal - puede ser boolean, Signal, Observable o Promise.
62
+ */
63
+ set loading(source) {
64
+ this.resolveLoadingSource(source);
65
+ }
66
+ ngOnDestroy() {
67
+ this.viewContainer.clear();
68
+ this.skeletonComponentRef = null;
69
+ }
70
+ resolveLoadingSource(source) {
71
+ if (typeof source === 'boolean') {
72
+ this._loading.set(source);
73
+ }
74
+ else if (isSignal(source)) {
75
+ // Sincronizar signal con effect
76
+ effect(() => {
77
+ this._loading.set(source());
78
+ }, { injector: this.viewContainer.injector });
79
+ }
80
+ else if (isObservable(source)) {
81
+ // Convertir observable a signal
82
+ const signalValue = toSignal(source, {
83
+ initialValue: true,
84
+ injector: this.viewContainer.injector,
85
+ });
86
+ effect(() => {
87
+ this._loading.set(signalValue());
88
+ }, { injector: this.viewContainer.injector });
89
+ }
90
+ else if (source instanceof Promise) {
91
+ this._loading.set(true);
92
+ source.finally(() => this._loading.set(false));
93
+ }
94
+ }
95
+ updateView(isLoading) {
96
+ if (isLoading) {
97
+ this.showSkeleton();
98
+ }
99
+ else {
100
+ this.showContent();
101
+ }
102
+ }
103
+ showSkeleton() {
104
+ // Limpiar contenido previo
105
+ this.viewContainer.clear();
106
+ this.hasContentView = false;
107
+ if (this.skeletonTpl) {
108
+ // Usar template personalizado
109
+ this.viewContainer.createEmbeddedView(this.skeletonTpl);
110
+ }
111
+ else if (this.spinner) {
112
+ // Mostrar spinner (usar val-content-loader si esta disponible)
113
+ this.showSpinner();
114
+ }
115
+ else {
116
+ // Usar template de skeleton registrado
117
+ this.showSkeletonTemplate();
118
+ }
119
+ }
120
+ showSkeletonTemplate() {
121
+ const template = this.skeletonService.getTemplate(this.skeleton);
122
+ if (template) {
123
+ this.skeletonComponentRef = this.viewContainer.createComponent(template.component);
124
+ // Combinar config por defecto con inputs
125
+ const config = {
126
+ ...template.defaultConfig,
127
+ count: this.count,
128
+ animated: this.animated,
129
+ gap: this.gap,
130
+ variant: this.variant,
131
+ };
132
+ this.skeletonComponentRef.instance.config = config;
133
+ }
134
+ else {
135
+ // Fallback: mostrar texto de carga si no hay template
136
+ console.warn(`[valLoading] Template '${this.skeleton}' not found. Using fallback.`);
137
+ this.showFallback();
138
+ }
139
+ }
140
+ showSpinner() {
141
+ // Crear un div con spinner simple
142
+ const element = document.createElement('div');
143
+ element.className = 'val-loading-spinner';
144
+ element.innerHTML = `
145
+ <ion-spinner name="crescent"></ion-spinner>
146
+ `;
147
+ element.style.cssText = 'display: flex; justify-content: center; padding: 20px;';
148
+ const hostElement = this.viewContainer.element.nativeElement;
149
+ hostElement.parentElement?.insertBefore(element, hostElement);
150
+ }
151
+ showFallback() {
152
+ // Fallback simple si no hay template registrado
153
+ const element = document.createElement('div');
154
+ element.className = 'val-loading-fallback';
155
+ element.style.cssText =
156
+ 'display: flex; flex-direction: column; gap: 12px; padding: 16px;';
157
+ for (let i = 0; i < this.count; i++) {
158
+ const skeleton = document.createElement('div');
159
+ skeleton.style.cssText = `
160
+ background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
161
+ background-size: 200% 100%;
162
+ animation: skeleton-loading 1.5s infinite;
163
+ height: 56px;
164
+ border-radius: 8px;
165
+ `;
166
+ element.appendChild(skeleton);
167
+ }
168
+ const hostElement = this.viewContainer.element.nativeElement;
169
+ hostElement.parentElement?.insertBefore(element, hostElement);
170
+ }
171
+ showContent() {
172
+ // Limpiar skeleton
173
+ this.viewContainer.clear();
174
+ this.skeletonComponentRef = null;
175
+ // Mostrar contenido real
176
+ if (!this.hasContentView) {
177
+ this.viewContainer.createEmbeddedView(this.templateRef);
178
+ this.hasContentView = true;
179
+ }
180
+ }
181
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LoadingDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
182
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: LoadingDirective, isStandalone: true, selector: "[valLoading]", inputs: { skeleton: ["valLoadingSkeleton", "skeleton"], skeletonTpl: ["valLoadingSkeletonTpl", "skeletonTpl"], count: ["valLoadingCount", "count"], animated: ["valLoadingAnimated", "animated"], gap: ["valLoadingGap", "gap"], variant: ["valLoadingVariant", "variant"], spinner: ["valLoadingSpinner", "spinner"], loading: ["valLoading", "loading"] }, ngImport: i0 }); }
183
+ }
184
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LoadingDirective, decorators: [{
185
+ type: Directive,
186
+ args: [{
187
+ selector: '[valLoading]',
188
+ standalone: true,
189
+ }]
190
+ }], ctorParameters: () => [], propDecorators: { skeleton: [{
191
+ type: Input,
192
+ args: ['valLoadingSkeleton']
193
+ }], skeletonTpl: [{
194
+ type: Input,
195
+ args: ['valLoadingSkeletonTpl']
196
+ }], count: [{
197
+ type: Input,
198
+ args: ['valLoadingCount']
199
+ }], animated: [{
200
+ type: Input,
201
+ args: ['valLoadingAnimated']
202
+ }], gap: [{
203
+ type: Input,
204
+ args: ['valLoadingGap']
205
+ }], variant: [{
206
+ type: Input,
207
+ args: ['valLoadingVariant']
208
+ }], spinner: [{
209
+ type: Input,
210
+ args: ['valLoadingSpinner']
211
+ }], loading: [{
212
+ type: Input,
213
+ args: ['valLoading']
214
+ }] } });
215
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3NrZWxldG9uL2RpcmVjdGl2ZXMvbG9hZGluZy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixNQUFNLEVBQ04sTUFBTSxFQUNOLE1BQU0sRUFFTixRQUFRLEVBQ1IsVUFBVSxHQUVYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFHdEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkJHO0FBS0gsTUFBTSxPQUFPLGdCQUFnQjtJQStCM0I7UUE5QmlCLGdCQUFXLEdBQUcsTUFBTSxDQUFDLENBQUEsV0FBb0IsQ0FBQSxDQUFDLENBQUM7UUFDM0Msa0JBQWEsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN6QyxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMxQyxlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRWhDLGFBQVEsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEMsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIseUJBQW9CLEdBQW1ELElBQUksQ0FBQztRQUVwRixrQ0FBa0M7UUFDTCxhQUFRLEdBQWtDLE1BQU0sQ0FBQztRQUU5RSwyQ0FBMkM7UUFDWCxnQkFBVyxHQUFnQyxJQUFJLENBQUM7UUFFaEYsaUNBQWlDO1FBQ1AsVUFBSyxHQUFHLENBQUMsQ0FBQztRQUVwQywyQkFBMkI7UUFDRSxhQUFRLEdBQUcsSUFBSSxDQUFDO1FBUTdDLDJDQUEyQztRQUNmLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFHMUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFDSSxPQUFPLENBQUMsTUFBcUI7UUFDL0IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO0lBQ25DLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxNQUFxQjtRQUNoRCxJQUFJLE9BQU8sTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVCLENBQUM7YUFBTSxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzVCLGdDQUFnQztZQUNoQyxNQUFNLENBQ0osR0FBRyxFQUFFO2dCQUNILElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFFLE1BQXdCLEVBQUUsQ0FBQyxDQUFDO1lBQ2pELENBQUMsRUFDRCxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUMxQyxDQUFDO1FBQ0osQ0FBQzthQUFNLElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDaEMsZ0NBQWdDO1lBQ2hDLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUU7Z0JBQ25DLFlBQVksRUFBRSxJQUFJO2dCQUNsQixRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRO2FBQ3RDLENBQUMsQ0FBQztZQUNILE1BQU0sQ0FDSixHQUFHLEVBQUU7Z0JBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUNuQyxDQUFDLEVBQ0QsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FDMUMsQ0FBQztRQUNKLENBQUM7YUFBTSxJQUFJLE1BQU0sWUFBWSxPQUFPLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QixNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDakQsQ0FBQztJQUNILENBQUM7SUFFTyxVQUFVLENBQUMsU0FBa0I7UUFDbkMsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQixDQUFDO0lBQ0gsQ0FBQztJQUVPLFlBQVk7UUFDbEIsMkJBQTJCO1FBQzNCLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFFNUIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsOEJBQThCO1lBQzlCLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzFELENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN4QiwrREFBK0Q7WUFDL0QsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JCLENBQUM7YUFBTSxDQUFDO1lBQ04sdUNBQXVDO1lBQ3ZDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzlCLENBQUM7SUFDSCxDQUFDO0lBRU8sb0JBQW9CO1FBQzFCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVqRSxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUM1RCxRQUFRLENBQUMsU0FBZ0QsQ0FDMUQsQ0FBQztZQUVGLHlDQUF5QztZQUN6QyxNQUFNLE1BQU0sR0FBRztnQkFDYixHQUFHLFFBQVEsQ0FBQyxhQUFhO2dCQUN6QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7Z0JBQ2pCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtnQkFDdkIsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO2dCQUNiLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTzthQUN0QixDQUFDO1lBRUYsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JELENBQUM7YUFBTSxDQUFDO1lBQ04sc0RBQXNEO1lBQ3RELE9BQU8sQ0FBQyxJQUFJLENBQUMsMEJBQTBCLElBQUksQ0FBQyxRQUFRLDhCQUE4QixDQUFDLENBQUM7WUFDcEYsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRU8sV0FBVztRQUNqQixrQ0FBa0M7UUFDbEMsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QyxPQUFPLENBQUMsU0FBUyxHQUFHLHFCQUFxQixDQUFDO1FBQzFDLE9BQU8sQ0FBQyxTQUFTLEdBQUc7O0tBRW5CLENBQUM7UUFDRixPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyx3REFBd0QsQ0FBQztRQUVqRixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxhQUE0QixDQUFDO1FBQzVFLFdBQVcsQ0FBQyxhQUFhLEVBQUUsWUFBWSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRU8sWUFBWTtRQUNsQixnREFBZ0Q7UUFDaEQsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QyxPQUFPLENBQUMsU0FBUyxHQUFHLHNCQUFzQixDQUFDO1FBQzNDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTztZQUNuQixrRUFBa0UsQ0FBQztRQUVyRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDL0MsUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUc7Ozs7OztPQU14QixDQUFDO1lBQ0YsT0FBTyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBRUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsYUFBNEIsQ0FBQztRQUM1RSxXQUFXLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVPLFdBQVc7UUFDakIsbUJBQW1CO1FBQ25CLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztRQUVqQyx5QkFBeUI7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQzsrR0FoTFUsZ0JBQWdCO21HQUFoQixnQkFBZ0I7OzRGQUFoQixnQkFBZ0I7a0JBSjVCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjt3REFZOEIsUUFBUTtzQkFBcEMsS0FBSzt1QkFBQyxvQkFBb0I7Z0JBR0ssV0FBVztzQkFBMUMsS0FBSzt1QkFBQyx1QkFBdUI7Z0JBR0osS0FBSztzQkFBOUIsS0FBSzt1QkFBQyxpQkFBaUI7Z0JBR0ssUUFBUTtzQkFBcEMsS0FBSzt1QkFBQyxvQkFBb0I7Z0JBR0gsR0FBRztzQkFBMUIsS0FBSzt1QkFBQyxlQUFlO2dCQUdNLE9BQU87c0JBQWxDLEtBQUs7dUJBQUMsbUJBQW1CO2dCQUdFLE9BQU87c0JBQWxDLEtBQUs7dUJBQUMsbUJBQW1CO2dCQWF0QixPQUFPO3NCQURWLEtBQUs7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgSW5wdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBpbmplY3QsXG4gIGVmZmVjdCxcbiAgc2lnbmFsLFxuICBPbkRlc3Ryb3ksXG4gIGlzU2lnbmFsLFxuICBEZXN0cm95UmVmLFxuICBDb21wb25lbnRSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBpc09ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNrZWxldG9uU2VydmljZSB9IGZyb20gJy4uL3NrZWxldG9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9hZGluZ1NvdXJjZSwgU2tlbGV0b25UZW1wbGF0ZU5hbWUsIFNrZWxldG9uVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuLi90eXBlcyc7XG5cbi8qKlxuICogRGlyZWN0aXZhIGVzdHJ1Y3R1cmFsIHNpbXBsaWZpY2FkYSBwYXJhIGVzdGFkb3MgZGUgY2FyZ2EuXG4gKlxuICogU29wb3J0YSBtdWx0aXBsZXMgZnVlbnRlcyBkZSBlc3RhZG8gZGUgY2FyZ2E6XG4gKiAtIEFuZ3VsYXIgU2lnbmFsPGJvb2xlYW4+XG4gKiAtIFJ4SlMgT2JzZXJ2YWJsZTxib29sZWFuPlxuICogLSBQcm9taXNlPGFueT4gKGNhcmdhbmRvIGhhc3RhIHF1ZSBzZSByZXN1ZWx2ZSlcbiAqIC0gYm9vbGVhbiBsaXRlcmFsXG4gKlxuICogQGV4YW1wbGVcbiAqIDwhLS0gVXNvIHNpbXBsZSBjb24gc2lnbmFsIC0tPlxuICogPG5nLWNvbnRhaW5lciAqdmFsTG9hZGluZz1cImlzTG9hZGluZygpOyBza2VsZXRvbjogJ2xpc3QnXCI+XG4gKiAgIDxhcHAtbGlzdCBbaXRlbXNdPVwiaXRlbXMoKVwiPjwvYXBwLWxpc3Q+XG4gKiA8L25nLWNvbnRhaW5lcj5cbiAqXG4gKiBAZXhhbXBsZVxuICogPCEtLSBDb24gY29uZmlndXJhY2lvbiAtLT5cbiAqIDxuZy1jb250YWluZXIgKnZhbExvYWRpbmc9XCJsb2FkaW5nJDsgc2tlbGV0b246ICdncmlkLWNhcmRzJzsgY291bnQ6IDhcIj5cbiAqICAgPGFwcC1ncmlkIFtkYXRhXT1cImRhdGFcIj48L2FwcC1ncmlkPlxuICogPC9uZy1jb250YWluZXI+XG4gKlxuICogQGV4YW1wbGVcbiAqIDwhLS0gQ29uIHRlbXBsYXRlIHBlcnNvbmFsaXphZG8gLS0+XG4gKiA8bmctY29udGFpbmVyICp2YWxMb2FkaW5nPVwiaXNMb2FkaW5nKCk7IHNrZWxldG9uVHBsOiBjdXN0b21Ta2VsZXRvblwiPlxuICogICA8YXBwLWNvbnRlbnQ+PC9hcHAtY29udGVudD5cbiAqIDwvbmctY29udGFpbmVyPlxuICogPG5nLXRlbXBsYXRlICNjdXN0b21Ta2VsZXRvbj5cbiAqICAgPHZhbC1za2VsZXRvbiBbcHJvcHNdPVwieyB0eXBlOiAnY2FyZCcgfVwiPjwvdmFsLXNrZWxldG9uPlxuICogPC9uZy10ZW1wbGF0ZT5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3ZhbExvYWRpbmddJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTG9hZGluZ0RpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGVtcGxhdGVSZWYgPSBpbmplY3QoVGVtcGxhdGVSZWY8dW5rbm93bj4pO1xuICBwcml2YXRlIHJlYWRvbmx5IHZpZXdDb250YWluZXIgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2tlbGV0b25TZXJ2aWNlID0gaW5qZWN0KFNrZWxldG9uU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9sb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJpdmF0ZSBoYXNDb250ZW50VmlldyA9IGZhbHNlO1xuICBwcml2YXRlIHNrZWxldG9uQ29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8U2tlbGV0b25UZW1wbGF0ZUNvbXBvbmVudD4gfCBudWxsID0gbnVsbDtcblxuICAvKiogVGVtcGxhdGUgZGUgc2tlbGV0b24gYSB1c2FyICovXG4gIEBJbnB1dCgndmFsTG9hZGluZ1NrZWxldG9uJykgc2tlbGV0b246IFNrZWxldG9uVGVtcGxhdGVOYW1lIHwgc3RyaW5nID0gJ2xpc3QnO1xuXG4gIC8qKiBUZW1wbGF0ZSBwZXJzb25hbGl6YWRvIHBhcmEgc2tlbGV0b24gKi9cbiAgQElucHV0KCd2YWxMb2FkaW5nU2tlbGV0b25UcGwnKSBza2VsZXRvblRwbDogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCBudWxsID0gbnVsbDtcblxuICAvKiogQ2FudGlkYWQgZGUgaXRlbXMgc2tlbGV0b24gKi9cbiAgQElucHV0KCd2YWxMb2FkaW5nQ291bnQnKSBjb3VudCA9IDM7XG5cbiAgLyoqIEFuaW1hY2lvbiBoYWJpbGl0YWRhICovXG4gIEBJbnB1dCgndmFsTG9hZGluZ0FuaW1hdGVkJykgYW5pbWF0ZWQgPSB0cnVlO1xuXG4gIC8qKiBHYXAgZW50cmUgaXRlbXMgKi9cbiAgQElucHV0KCd2YWxMb2FkaW5nR2FwJykgZ2FwOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqIFZhcmlhbnRlIGRlbCB0ZW1wbGF0ZSAqL1xuICBASW5wdXQoJ3ZhbExvYWRpbmdWYXJpYW50JykgdmFyaWFudDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKiBNb3N0cmFyIHNwaW5uZXIgZW4gbHVnYXIgZGUgc2tlbGV0b24gKi9cbiAgQElucHV0KCd2YWxMb2FkaW5nU3Bpbm5lcicpIHNwaW5uZXIgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgaXNMb2FkaW5nID0gdGhpcy5fbG9hZGluZygpO1xuICAgICAgdGhpcy51cGRhdGVWaWV3KGlzTG9hZGluZyk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSW5wdXQgcHJpbmNpcGFsIC0gcHVlZGUgc2VyIGJvb2xlYW4sIFNpZ25hbCwgT2JzZXJ2YWJsZSBvIFByb21pc2UuXG4gICAqL1xuICBASW5wdXQoJ3ZhbExvYWRpbmcnKVxuICBzZXQgbG9hZGluZyhzb3VyY2U6IExvYWRpbmdTb3VyY2UpIHtcbiAgICB0aGlzLnJlc29sdmVMb2FkaW5nU291cmNlKHNvdXJjZSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdDb250YWluZXIuY2xlYXIoKTtcbiAgICB0aGlzLnNrZWxldG9uQ29tcG9uZW50UmVmID0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZUxvYWRpbmdTb3VyY2Uoc291cmNlOiBMb2FkaW5nU291cmNlKTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiBzb3VyY2UgPT09ICdib29sZWFuJykge1xuICAgICAgdGhpcy5fbG9hZGluZy5zZXQoc291cmNlKTtcbiAgICB9IGVsc2UgaWYgKGlzU2lnbmFsKHNvdXJjZSkpIHtcbiAgICAgIC8vIFNpbmNyb25pemFyIHNpZ25hbCBjb24gZWZmZWN0XG4gICAgICBlZmZlY3QoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0aGlzLl9sb2FkaW5nLnNldCgoc291cmNlIGFzICgpID0+IGJvb2xlYW4pKCkpO1xuICAgICAgICB9LFxuICAgICAgICB7IGluamVjdG9yOiB0aGlzLnZpZXdDb250YWluZXIuaW5qZWN0b3IgfVxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKGlzT2JzZXJ2YWJsZShzb3VyY2UpKSB7XG4gICAgICAvLyBDb252ZXJ0aXIgb2JzZXJ2YWJsZSBhIHNpZ25hbFxuICAgICAgY29uc3Qgc2lnbmFsVmFsdWUgPSB0b1NpZ25hbChzb3VyY2UsIHtcbiAgICAgICAgaW5pdGlhbFZhbHVlOiB0cnVlLFxuICAgICAgICBpbmplY3RvcjogdGhpcy52aWV3Q29udGFpbmVyLmluamVjdG9yLFxuICAgICAgfSk7XG4gICAgICBlZmZlY3QoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0aGlzLl9sb2FkaW5nLnNldChzaWduYWxWYWx1ZSgpKTtcbiAgICAgICAgfSxcbiAgICAgICAgeyBpbmplY3RvcjogdGhpcy52aWV3Q29udGFpbmVyLmluamVjdG9yIH1cbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChzb3VyY2UgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICB0aGlzLl9sb2FkaW5nLnNldCh0cnVlKTtcbiAgICAgIHNvdXJjZS5maW5hbGx5KCgpID0+IHRoaXMuX2xvYWRpbmcuc2V0KGZhbHNlKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVWaWV3KGlzTG9hZGluZzogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChpc0xvYWRpbmcpIHtcbiAgICAgIHRoaXMuc2hvd1NrZWxldG9uKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2hvd0NvbnRlbnQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNob3dTa2VsZXRvbigpOiB2b2lkIHtcbiAgICAvLyBMaW1waWFyIGNvbnRlbmlkbyBwcmV2aW9cbiAgICB0aGlzLnZpZXdDb250YWluZXIuY2xlYXIoKTtcbiAgICB0aGlzLmhhc0NvbnRlbnRWaWV3ID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5za2VsZXRvblRwbCkge1xuICAgICAgLy8gVXNhciB0ZW1wbGF0ZSBwZXJzb25hbGl6YWRvXG4gICAgICB0aGlzLnZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuc2tlbGV0b25UcGwpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zcGlubmVyKSB7XG4gICAgICAvLyBNb3N0cmFyIHNwaW5uZXIgKHVzYXIgdmFsLWNvbnRlbnQtbG9hZGVyIHNpIGVzdGEgZGlzcG9uaWJsZSlcbiAgICAgIHRoaXMuc2hvd1NwaW5uZXIoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVXNhciB0ZW1wbGF0ZSBkZSBza2VsZXRvbiByZWdpc3RyYWRvXG4gICAgICB0aGlzLnNob3dTa2VsZXRvblRlbXBsYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzaG93U2tlbGV0b25UZW1wbGF0ZSgpOiB2b2lkIHtcbiAgICBjb25zdCB0ZW1wbGF0ZSA9IHRoaXMuc2tlbGV0b25TZXJ2aWNlLmdldFRlbXBsYXRlKHRoaXMuc2tlbGV0b24pO1xuXG4gICAgaWYgKHRlbXBsYXRlKSB7XG4gICAgICB0aGlzLnNrZWxldG9uQ29tcG9uZW50UmVmID0gdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChcbiAgICAgICAgdGVtcGxhdGUuY29tcG9uZW50IGFzIG5ldyAoKSA9PiBTa2VsZXRvblRlbXBsYXRlQ29tcG9uZW50XG4gICAgICApO1xuXG4gICAgICAvLyBDb21iaW5hciBjb25maWcgcG9yIGRlZmVjdG8gY29uIGlucHV0c1xuICAgICAgY29uc3QgY29uZmlnID0ge1xuICAgICAgICAuLi50ZW1wbGF0ZS5kZWZhdWx0Q29uZmlnLFxuICAgICAgICBjb3VudDogdGhpcy5jb3VudCxcbiAgICAgICAgYW5pbWF0ZWQ6IHRoaXMuYW5pbWF0ZWQsXG4gICAgICAgIGdhcDogdGhpcy5nYXAsXG4gICAgICAgIHZhcmlhbnQ6IHRoaXMudmFyaWFudCxcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuc2tlbGV0b25Db21wb25lbnRSZWYuaW5zdGFuY2UuY29uZmlnID0gY29uZmlnO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBGYWxsYmFjazogbW9zdHJhciB0ZXh0byBkZSBjYXJnYSBzaSBubyBoYXkgdGVtcGxhdGVcbiAgICAgIGNvbnNvbGUud2FybihgW3ZhbExvYWRpbmddIFRlbXBsYXRlICcke3RoaXMuc2tlbGV0b259JyBub3QgZm91bmQuIFVzaW5nIGZhbGxiYWNrLmApO1xuICAgICAgdGhpcy5zaG93RmFsbGJhY2soKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNob3dTcGlubmVyKCk6IHZvaWQge1xuICAgIC8vIENyZWFyIHVuIGRpdiBjb24gc3Bpbm5lciBzaW1wbGVcbiAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgZWxlbWVudC5jbGFzc05hbWUgPSAndmFsLWxvYWRpbmctc3Bpbm5lcic7XG4gICAgZWxlbWVudC5pbm5lckhUTUwgPSBgXG4gICAgICA8aW9uLXNwaW5uZXIgbmFtZT1cImNyZXNjZW50XCI+PC9pb24tc3Bpbm5lcj5cbiAgICBgO1xuICAgIGVsZW1lbnQuc3R5bGUuY3NzVGV4dCA9ICdkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgcGFkZGluZzogMjBweDsnO1xuXG4gICAgY29uc3QgaG9zdEVsZW1lbnQgPSB0aGlzLnZpZXdDb250YWluZXIuZWxlbWVudC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgIGhvc3RFbGVtZW50LnBhcmVudEVsZW1lbnQ/Lmluc2VydEJlZm9yZShlbGVtZW50LCBob3N0RWxlbWVudCk7XG4gIH1cblxuICBwcml2YXRlIHNob3dGYWxsYmFjaygpOiB2b2lkIHtcbiAgICAvLyBGYWxsYmFjayBzaW1wbGUgc2kgbm8gaGF5IHRlbXBsYXRlIHJlZ2lzdHJhZG9cbiAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgZWxlbWVudC5jbGFzc05hbWUgPSAndmFsLWxvYWRpbmctZmFsbGJhY2snO1xuICAgIGVsZW1lbnQuc3R5bGUuY3NzVGV4dCA9XG4gICAgICAnZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiAxMnB4OyBwYWRkaW5nOiAxNnB4Oyc7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY291bnQ7IGkrKykge1xuICAgICAgY29uc3Qgc2tlbGV0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgIHNrZWxldG9uLnN0eWxlLmNzc1RleHQgPSBgXG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgI2YwZjBmMCAyNSUsICNlMGUwZTAgNTAlLCAjZjBmMGYwIDc1JSk7XG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogMjAwJSAxMDAlO1xuICAgICAgICBhbmltYXRpb246IHNrZWxldG9uLWxvYWRpbmcgMS41cyBpbmZpbml0ZTtcbiAgICAgICAgaGVpZ2h0OiA1NnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICBgO1xuICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZChza2VsZXRvbik7XG4gICAgfVxuXG4gICAgY29uc3QgaG9zdEVsZW1lbnQgPSB0aGlzLnZpZXdDb250YWluZXIuZWxlbWVudC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgIGhvc3RFbGVtZW50LnBhcmVudEVsZW1lbnQ/Lmluc2VydEJlZm9yZShlbGVtZW50LCBob3N0RWxlbWVudCk7XG4gIH1cblxuICBwcml2YXRlIHNob3dDb250ZW50KCk6IHZvaWQge1xuICAgIC8vIExpbXBpYXIgc2tlbGV0b25cbiAgICB0aGlzLnZpZXdDb250YWluZXIuY2xlYXIoKTtcbiAgICB0aGlzLnNrZWxldG9uQ29tcG9uZW50UmVmID0gbnVsbDtcblxuICAgIC8vIE1vc3RyYXIgY29udGVuaWRvIHJlYWxcbiAgICBpZiAoIXRoaXMuaGFzQ29udGVudFZpZXcpIHtcbiAgICAgIHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZik7XG4gICAgICB0aGlzLmhhc0NvbnRlbnRWaWV3ID0gdHJ1ZTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,16 @@
1
+ // Types
2
+ export { DEFAULT_SKELETON_CONFIG, } from './types';
3
+ // Service
4
+ export { SkeletonService } from './skeleton.service';
5
+ // Directives
6
+ export { LoadingDirective } from './directives/loading.directive';
7
+ // Templates
8
+ export { ListSkeletonComponent } from './templates/list-skeleton.component';
9
+ export { GridSkeletonComponent } from './templates/grid-skeleton.component';
10
+ export { FormSkeletonComponent } from './templates/form-skeleton.component';
11
+ export { ProfileSkeletonComponent } from './templates/profile-skeleton.component';
12
+ export { TableSkeletonComponent } from './templates/table-skeleton.component';
13
+ export { DetailSkeletonComponent } from './templates/detail-skeleton.component';
14
+ // Config / Provider
15
+ export { provideValtechSkeleton } from './config';
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3NrZWxldG9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFFBQVE7QUFDUixPQUFPLEVBVUwsdUJBQXVCLEdBQ3hCLE1BQU0sU0FBUyxDQUFDO0FBRWpCLFVBQVU7QUFDVixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFckQsYUFBYTtBQUNiLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRWxFLFlBQVk7QUFDWixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNsRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUVoRixvQkFBb0I7QUFDcEIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVHlwZXNcbmV4cG9ydCB7XG4gIFNrZWxldG9uVGVtcGxhdGVOYW1lLFxuICBTa2VsZXRvblRlbXBsYXRlQ29uZmlnLFxuICBMb2FkaW5nU291cmNlLFxuICBTa2VsZXRvbkRpcmVjdGl2ZUNvbmZpZyxcbiAgTG9hZGluZ0RpcmVjdGl2ZUNvbmZpZyxcbiAgUmVnaXN0ZXJlZFNrZWxldG9uVGVtcGxhdGUsXG4gIFNrZWxldG9uQ29uZmlnLFxuICBTa2VsZXRvblRlbXBsYXRlQ29udGV4dCxcbiAgU2tlbGV0b25UZW1wbGF0ZUNvbXBvbmVudCxcbiAgREVGQVVMVF9TS0VMRVRPTl9DT05GSUcsXG59IGZyb20gJy4vdHlwZXMnO1xuXG4vLyBTZXJ2aWNlXG5leHBvcnQgeyBTa2VsZXRvblNlcnZpY2UgfSBmcm9tICcuL3NrZWxldG9uLnNlcnZpY2UnO1xuXG4vLyBEaXJlY3RpdmVzXG5leHBvcnQgeyBMb2FkaW5nRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2xvYWRpbmcuZGlyZWN0aXZlJztcblxuLy8gVGVtcGxhdGVzXG5leHBvcnQgeyBMaXN0U2tlbGV0b25Db21wb25lbnQgfSBmcm9tICcuL3RlbXBsYXRlcy9saXN0LXNrZWxldG9uLmNvbXBvbmVudCc7XG5leHBvcnQgeyBHcmlkU2tlbGV0b25Db21wb25lbnQgfSBmcm9tICcuL3RlbXBsYXRlcy9ncmlkLXNrZWxldG9uLmNvbXBvbmVudCc7XG5leHBvcnQgeyBGb3JtU2tlbGV0b25Db21wb25lbnQgfSBmcm9tICcuL3RlbXBsYXRlcy9mb3JtLXNrZWxldG9uLmNvbXBvbmVudCc7XG5leHBvcnQgeyBQcm9maWxlU2tlbGV0b25Db21wb25lbnQgfSBmcm9tICcuL3RlbXBsYXRlcy9wcm9maWxlLXNrZWxldG9uLmNvbXBvbmVudCc7XG5leHBvcnQgeyBUYWJsZVNrZWxldG9uQ29tcG9uZW50IH0gZnJvbSAnLi90ZW1wbGF0ZXMvdGFibGUtc2tlbGV0b24uY29tcG9uZW50JztcbmV4cG9ydCB7IERldGFpbFNrZWxldG9uQ29tcG9uZW50IH0gZnJvbSAnLi90ZW1wbGF0ZXMvZGV0YWlsLXNrZWxldG9uLmNvbXBvbmVudCc7XG5cbi8vIENvbmZpZyAvIFByb3ZpZGVyXG5leHBvcnQgeyBwcm92aWRlVmFsdGVjaFNrZWxldG9uIH0gZnJvbSAnLi9jb25maWcnO1xuIl19
@@ -0,0 +1,198 @@
1
+ import { Injectable, signal, computed } from '@angular/core';
2
+ import { DEFAULT_SKELETON_CONFIG, } from './types';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * Servicio para gestionar templates de skeleton y estados de carga globales.
6
+ *
7
+ * @example
8
+ * // En un componente
9
+ * skeleton = inject(SkeletonService);
10
+ *
11
+ * // Registrar template personalizado
12
+ * skeleton.registerTemplate('my-custom', MyCustomSkeletonComponent);
13
+ *
14
+ * // Obtener componente de template
15
+ * const component = skeleton.getTemplate('list');
16
+ *
17
+ * // Gestionar estados de carga globales
18
+ * skeleton.setLoadingState('dashboard', true);
19
+ * const isDashboardLoading = skeleton.loadingState('dashboard');
20
+ */
21
+ export class SkeletonService {
22
+ constructor() {
23
+ this._config = signal(DEFAULT_SKELETON_CONFIG);
24
+ this._templates = signal(new Map());
25
+ this._loadingStates = signal(new Map());
26
+ this._initialized = false;
27
+ /** Configuracion actual (solo lectura) */
28
+ this.config = this._config.asReadonly();
29
+ /** Templates registrados (solo lectura) */
30
+ this.templates = this._templates.asReadonly();
31
+ /** Estado de carga global (cualquier estado registrado esta cargando) */
32
+ this.isAnyLoading = computed(() => {
33
+ const states = this._loadingStates();
34
+ return Array.from(states.values()).some((v) => v);
35
+ });
36
+ /** Cantidad de templates registrados */
37
+ this.templateCount = computed(() => this._templates().size);
38
+ }
39
+ /**
40
+ * Configura el servicio de skeleton.
41
+ * Llamado por provideValtechSkeleton().
42
+ */
43
+ configure(config) {
44
+ if (this._initialized) {
45
+ console.warn('[SkeletonService] Service already configured. Ignoring reconfiguration.');
46
+ return;
47
+ }
48
+ this._config.set({ ...DEFAULT_SKELETON_CONFIG, ...config });
49
+ // Registrar templates personalizados de la configuracion
50
+ config.templates?.forEach((t) => {
51
+ this.registerTemplate(t.name, t.component, t.defaultConfig);
52
+ });
53
+ this._initialized = true;
54
+ }
55
+ /**
56
+ * Registra un template de skeleton personalizado.
57
+ *
58
+ * @param name Nombre unico del template
59
+ * @param component Componente a usar
60
+ * @param defaultConfig Configuracion por defecto opcional
61
+ */
62
+ registerTemplate(name, component, defaultConfig) {
63
+ this._templates.update((map) => {
64
+ const newMap = new Map(map);
65
+ newMap.set(name, { name, component, defaultConfig });
66
+ return newMap;
67
+ });
68
+ }
69
+ /**
70
+ * Obtiene un template de skeleton registrado.
71
+ *
72
+ * @param name Nombre del template
73
+ * @returns Template registrado o undefined si no existe
74
+ */
75
+ getTemplate(name) {
76
+ return this._templates().get(name);
77
+ }
78
+ /**
79
+ * Verifica si un template esta registrado.
80
+ *
81
+ * @param name Nombre del template
82
+ * @returns true si el template existe
83
+ */
84
+ hasTemplate(name) {
85
+ return this._templates().has(name);
86
+ }
87
+ /**
88
+ * Obtiene todos los nombres de templates registrados.
89
+ *
90
+ * @returns Array de nombres de templates
91
+ */
92
+ getTemplateNames() {
93
+ return Array.from(this._templates().keys());
94
+ }
95
+ /**
96
+ * Registra un estado de carga nombrado.
97
+ * Util para indicadores de carga globales.
98
+ *
99
+ * @param key Identificador unico del estado
100
+ * @param isLoading Estado de carga
101
+ */
102
+ setLoadingState(key, isLoading) {
103
+ this._loadingStates.update((map) => {
104
+ const newMap = new Map(map);
105
+ if (isLoading) {
106
+ newMap.set(key, true);
107
+ }
108
+ else {
109
+ newMap.delete(key);
110
+ }
111
+ return newMap;
112
+ });
113
+ }
114
+ /**
115
+ * Obtiene el estado de carga para una clave especifica.
116
+ *
117
+ * @param key Identificador del estado
118
+ * @returns Estado de carga actual
119
+ */
120
+ getLoadingState(key) {
121
+ return this._loadingStates().get(key) ?? false;
122
+ }
123
+ /**
124
+ * Crea un signal computado para un estado de carga especifico.
125
+ *
126
+ * @param key Identificador del estado
127
+ * @returns Signal reactivo del estado de carga
128
+ */
129
+ loadingState(key) {
130
+ return computed(() => this._loadingStates().get(key) ?? false);
131
+ }
132
+ /**
133
+ * Obtiene todas las claves de estados de carga activos.
134
+ *
135
+ * @returns Array de claves con estado de carga activo
136
+ */
137
+ getActiveLoadingKeys() {
138
+ const states = this._loadingStates();
139
+ return Array.from(states.entries())
140
+ .filter(([, isLoading]) => isLoading)
141
+ .map(([key]) => key);
142
+ }
143
+ /**
144
+ * Limpia todos los estados de carga.
145
+ */
146
+ clearLoadingStates() {
147
+ this._loadingStates.set(new Map());
148
+ }
149
+ /**
150
+ * Limpia un estado de carga especifico.
151
+ *
152
+ * @param key Identificador del estado a limpiar
153
+ */
154
+ clearLoadingState(key) {
155
+ this.setLoadingState(key, false);
156
+ }
157
+ /**
158
+ * Ejecuta una funcion async con tracking de estado de carga.
159
+ *
160
+ * @param key Identificador del estado
161
+ * @param fn Funcion async a ejecutar
162
+ * @returns Resultado de la funcion
163
+ */
164
+ async withLoading(key, fn) {
165
+ this.setLoadingState(key, true);
166
+ try {
167
+ return await fn();
168
+ }
169
+ finally {
170
+ this.setLoadingState(key, false);
171
+ }
172
+ }
173
+ /**
174
+ * Obtiene la configuracion de animacion por defecto.
175
+ */
176
+ get animated() {
177
+ return this._config().animated ?? true;
178
+ }
179
+ /**
180
+ * Obtiene el delay por defecto.
181
+ */
182
+ get defaultDelay() {
183
+ return this._config().defaultDelay ?? 0;
184
+ }
185
+ /**
186
+ * Obtiene el tiempo minimo por defecto.
187
+ */
188
+ get defaultMinTime() {
189
+ return this._config().defaultMinTime ?? 300;
190
+ }
191
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SkeletonService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
192
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SkeletonService, providedIn: 'root' }); }
193
+ }
194
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SkeletonService, decorators: [{
195
+ type: Injectable,
196
+ args: [{ providedIn: 'root' }]
197
+ }] });
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2tlbGV0b24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvc2tlbGV0b24vc2tlbGV0b24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUtMLHVCQUF1QixHQUN4QixNQUFNLFNBQVMsQ0FBQzs7QUFFakI7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFFSCxNQUFNLE9BQU8sZUFBZTtJQUQ1QjtRQUVtQixZQUFPLEdBQUcsTUFBTSxDQUFpQix1QkFBdUIsQ0FBQyxDQUFDO1FBQzFELGVBQVUsR0FBRyxNQUFNLENBQTBDLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQztRQUN4RSxtQkFBYyxHQUFHLE1BQU0sQ0FBdUIsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRTdCLDBDQUEwQztRQUNqQyxXQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUU1QywyQ0FBMkM7UUFDbEMsY0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFbEQseUVBQXlFO1FBQ2hFLGlCQUFZLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNwQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDckMsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEQsQ0FBQyxDQUFDLENBQUM7UUFFSCx3Q0FBd0M7UUFDL0Isa0JBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENB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R0FBRyxDQUFDO0lBQzlDLENBQUM7K0dBL0xVLGVBQWU7bUhBQWYsZUFBZSxjQURGLE1BQU07OzRGQUNuQixlQUFlO2tCQUQzQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIHNpZ25hbCwgY29tcHV0ZWQsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFNrZWxldG9uVGVtcGxhdGVOYW1lLFxuICBTa2VsZXRvblRlbXBsYXRlQ29uZmlnLFxuICBSZWdpc3RlcmVkU2tlbGV0b25UZW1wbGF0ZSxcbiAgU2tlbGV0b25Db25maWcsXG4gIERFRkFVTFRfU0tFTEVUT05fQ09ORklHLFxufSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBTZXJ2aWNpbyBwYXJhIGdlc3Rpb25hciB0ZW1wbGF0ZXMgZGUgc2tlbGV0b24geSBlc3RhZG9zIGRlIGNhcmdhIGdsb2JhbGVzLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBFbiB1biBjb21wb25lbnRlXG4gKiBza2VsZXRvbiA9IGluamVjdChTa2VsZXRvblNlcnZpY2UpO1xuICpcbiAqIC8vIFJlZ2lzdHJhciB0ZW1wbGF0ZSBwZXJzb25hbGl6YWRvXG4gKiBza2VsZXRvbi5yZWdpc3RlclRlbXBsYXRlKCdteS1jdXN0b20nLCBNeUN1c3RvbVNrZWxldG9uQ29tcG9uZW50KTtcbiAqXG4gKiAvLyBPYnRlbmVyIGNvbXBvbmVudGUgZGUgdGVtcGxhdGVcbiAqIGNvbnN0IGNvbXBvbmVudCA9IHNrZWxldG9uLmdldFRlbXBsYXRlKCdsaXN0Jyk7XG4gKlxuICogLy8gR2VzdGlvbmFyIGVzdGFkb3MgZGUgY2FyZ2EgZ2xvYmFsZXNcbiAqIHNrZWxldG9uLnNldExvYWRpbmdTdGF0ZSgnZGFzaGJvYXJkJywgdHJ1ZSk7XG4gKiBjb25zdCBpc0Rhc2hib2FyZExvYWRpbmcgPSBza2VsZXRvbi5sb2FkaW5nU3RhdGUoJ2Rhc2hib2FyZCcpO1xuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFNrZWxldG9uU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbmZpZyA9IHNpZ25hbDxTa2VsZXRvbkNvbmZpZz4oREVGQVVMVF9TS0VMRVRPTl9DT05GSUcpO1xuICBwcml2YXRlIHJlYWRvbmx5IF90ZW1wbGF0ZXMgPSBzaWduYWw8TWFwPHN0cmluZywgUmVnaXN0ZXJlZFNrZWxldG9uVGVtcGxhdGU+PihuZXcgTWFwKCkpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2FkaW5nU3RhdGVzID0gc2lnbmFsPE1hcDxzdHJpbmcsIGJvb2xlYW4+PihuZXcgTWFwKCkpO1xuICBwcml2YXRlIF9pbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gIC8qKiBDb25maWd1cmFjaW9uIGFjdHVhbCAoc29sbyBsZWN0dXJhKSAqL1xuICByZWFkb25seSBjb25maWcgPSB0aGlzLl9jb25maWcuYXNSZWFkb25seSgpO1xuXG4gIC8qKiBUZW1wbGF0ZXMgcmVnaXN0cmFkb3MgKHNvbG8gbGVjdHVyYSkgKi9cbiAgcmVhZG9ubHkgdGVtcGxhdGVzID0gdGhpcy5fdGVtcGxhdGVzLmFzUmVhZG9ubHkoKTtcblxuICAvKiogRXN0YWRvIGRlIGNhcmdhIGdsb2JhbCAoY3VhbHF1aWVyIGVzdGFkbyByZWdpc3RyYWRvIGVzdGEgY2FyZ2FuZG8pICovXG4gIHJlYWRvbmx5IGlzQW55TG9hZGluZyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBzdGF0ZXMgPSB0aGlzLl9sb2FkaW5nU3RhdGVzKCk7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oc3RhdGVzLnZhbHVlcygpKS5zb21lKCh2KSA9PiB2KTtcbiAgfSk7XG5cbiAgLyoqIENhbnRpZGFkIGRlIHRlbXBsYXRlcyByZWdpc3RyYWRvcyAqL1xuICByZWFkb25seSB0ZW1wbGF0ZUNvdW50ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fdGVtcGxhdGVzKCkuc2l6ZSk7XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyYSBlbCBzZXJ2aWNpbyBkZSBza2VsZXRvbi5cbiAgICogTGxhbWFkbyBwb3IgcHJvdmlkZVZhbHRlY2hTa2VsZXRvbigpLlxuICAgKi9cbiAgY29uZmlndXJlKGNvbmZpZzogU2tlbGV0b25Db25maWcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faW5pdGlhbGl6ZWQpIHtcbiAgICAgIGNvbnNvbGUud2FybignW1NrZWxldG9uU2VydmljZV0gU2VydmljZSBhbHJlYWR5IGNvbmZpZ3VyZWQuIElnbm9yaW5nIHJlY29uZmlndXJhdGlvbi4nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9jb25maWcuc2V0KHsgLi4uREVGQVVMVF9TS0VMRVRPTl9DT05GSUcsIC4uLmNvbmZpZyB9KTtcblxuICAgIC8vIFJlZ2lzdHJhciB0ZW1wbGF0ZXMgcGVyc29uYWxpemFkb3MgZGUgbGEgY29uZmlndXJhY2lvblxuICAgIGNvbmZpZy50ZW1wbGF0ZXM/LmZvckVhY2goKHQpID0+IHtcbiAgICAgIHRoaXMucmVnaXN0ZXJUZW1wbGF0ZSh0Lm5hbWUsIHQuY29tcG9uZW50LCB0LmRlZmF1bHRDb25maWcpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5faW5pdGlhbGl6ZWQgPSB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhIHVuIHRlbXBsYXRlIGRlIHNrZWxldG9uIHBlcnNvbmFsaXphZG8uXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIE5vbWJyZSB1bmljbyBkZWwgdGVtcGxhdGVcbiAgICogQHBhcmFtIGNvbXBvbmVudCBDb21wb25lbnRlIGEgdXNhclxuICAgKiBAcGFyYW0gZGVmYXVsdENvbmZpZyBDb25maWd1cmFjaW9uIHBvciBkZWZlY3RvIG9wY2lvbmFsXG4gICAqL1xuICByZWdpc3RlclRlbXBsYXRlKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBjb21wb25lbnQ6IFR5cGU8dW5rbm93bj4sXG4gICAgZGVmYXVsdENvbmZpZz86IFNrZWxldG9uVGVtcGxhdGVDb25maWdcbiAgKTogdm9pZCB7XG4gICAgdGhpcy5fdGVtcGxhdGVzLnVwZGF0ZSgobWFwKSA9PiB7XG4gICAgICBjb25zdCBuZXdNYXAgPSBuZXcgTWFwKG1hcCk7XG4gICAgICBuZXdNYXAuc2V0KG5hbWUsIHsgbmFtZSwgY29tcG9uZW50LCBkZWZhdWx0Q29uZmlnIH0pO1xuICAgICAgcmV0dXJuIG5ld01hcDtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIHVuIHRlbXBsYXRlIGRlIHNrZWxldG9uIHJlZ2lzdHJhZG8uXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIE5vbWJyZSBkZWwgdGVtcGxhdGVcbiAgICogQHJldHVybnMgVGVtcGxhdGUgcmVnaXN0cmFkbyBvIHVuZGVmaW5lZCBzaSBubyBleGlzdGVcbiAgICovXG4gIGdldFRlbXBsYXRlKG5hbWU6IFNrZWxldG9uVGVtcGxhdGVOYW1lIHwgc3RyaW5nKTogUmVnaXN0ZXJlZFNrZWxldG9uVGVtcGxhdGUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl90ZW1wbGF0ZXMoKS5nZXQobmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpY2Egc2kgdW4gdGVtcGxhdGUgZXN0YSByZWdpc3RyYWRvLlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSBOb21icmUgZGVsIHRlbXBsYXRlXG4gICAqIEByZXR1cm5zIHRydWUgc2kgZWwgdGVtcGxhdGUgZXhpc3RlXG4gICAqL1xuICBoYXNUZW1wbGF0ZShuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fdGVtcGxhdGVzKCkuaGFzKG5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgdG9kb3MgbG9zIG5vbWJyZXMgZGUgdGVtcGxhdGVzIHJlZ2lzdHJhZG9zLlxuICAgKlxuICAgKiBAcmV0dXJucyBBcnJheSBkZSBub21icmVzIGRlIHRlbXBsYXRlc1xuICAgKi9cbiAgZ2V0VGVtcGxhdGVOYW1lcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5fdGVtcGxhdGVzKCkua2V5cygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RyYSB1biBlc3RhZG8gZGUgY2FyZ2Egbm9tYnJhZG8uXG4gICAqIFV0aWwgcGFyYSBpbmRpY2Fkb3JlcyBkZSBjYXJnYSBnbG9iYWxlcy5cbiAgICpcbiAgICogQHBhcmFtIGtleSBJZGVudGlmaWNhZG9yIHVuaWNvIGRlbCBlc3RhZG9cbiAgICogQHBhcmFtIGlzTG9hZGluZyBFc3RhZG8gZGUgY2FyZ2FcbiAgICovXG4gIHNldExvYWRpbmdTdGF0ZShrZXk6IHN0cmluZywgaXNMb2FkaW5nOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5fbG9hZGluZ1N0YXRlcy51cGRhdGUoKG1hcCkgPT4ge1xuICAgICAgY29uc3QgbmV3TWFwID0gbmV3IE1hcChtYXApO1xuICAgICAgaWYgKGlzTG9hZGluZykge1xuICAgICAgICBuZXdNYXAuc2V0KGtleSwgdHJ1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXdNYXAuZGVsZXRlKGtleSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3TWFwO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgZWwgZXN0YWRvIGRlIGNhcmdhIHBhcmEgdW5hIGNsYXZlIGVzcGVjaWZpY2EuXG4gICAqXG4gICAqIEBwYXJhbSBrZXkgSWRlbnRpZmljYWRvciBkZWwgZXN0YWRvXG4gICAqIEByZXR1cm5zIEVzdGFkbyBkZSBjYXJnYSBhY3R1YWxcbiAgICovXG4gIGdldExvYWRpbmdTdGF0ZShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9sb2FkaW5nU3RhdGVzKCkuZ2V0KGtleSkgPz8gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYSB1biBzaWduYWwgY29tcHV0YWRvIHBhcmEgdW4gZXN0YWRvIGRlIGNhcmdhIGVzcGVjaWZpY28uXG4gICAqXG4gICAqIEBwYXJhbSBrZXkgSWRlbnRpZmljYWRvciBkZWwgZXN0YWRvXG4gICAqIEByZXR1cm5zIFNpZ25hbCByZWFjdGl2byBkZWwgZXN0YWRvIGRlIGNhcmdhXG4gICAqL1xuICBsb2FkaW5nU3RhdGUoa2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gY29tcHV0ZWQoKCkgPT4gdGhpcy5fbG9hZGluZ1N0YXRlcygpLmdldChrZXkpID8/IGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIHRvZGFzIGxhcyBjbGF2ZXMgZGUgZXN0YWRvcyBkZSBjYXJnYSBhY3Rpdm9zLlxuICAgKlxuICAgKiBAcmV0dXJucyBBcnJheSBkZSBjbGF2ZXMgY29uIGVzdGFkbyBkZSBjYXJnYSBhY3Rpdm9cbiAgICovXG4gIGdldEFjdGl2ZUxvYWRpbmdLZXlzKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBzdGF0ZXMgPSB0aGlzLl9sb2FkaW5nU3RhdGVzKCk7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oc3RhdGVzLmVudHJpZXMoKSlcbiAgICAgIC5maWx0ZXIoKFssIGlzTG9hZGluZ10pID0+IGlzTG9hZGluZylcbiAgICAgIC5tYXAoKFtrZXldKSA9PiBrZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIExpbXBpYSB0b2RvcyBsb3MgZXN0YWRvcyBkZSBjYXJnYS5cbiAgICovXG4gIGNsZWFyTG9hZGluZ1N0YXRlcygpOiB2b2lkIHtcbiAgICB0aGlzLl9sb2FkaW5nU3RhdGVzLnNldChuZXcgTWFwKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIExpbXBpYSB1biBlc3RhZG8gZGUgY2FyZ2EgZXNwZWNpZmljby5cbiAgICpcbiAgICogQHBhcmFtIGtleSBJZGVudGlmaWNhZG9yIGRlbCBlc3RhZG8gYSBsaW1waWFyXG4gICAqL1xuICBjbGVhckxvYWRpbmdTdGF0ZShrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2V0TG9hZGluZ1N0YXRlKGtleSwgZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVqZWN1dGEgdW5hIGZ1bmNpb24gYXN5bmMgY29uIHRyYWNraW5nIGRlIGVzdGFkbyBkZSBjYXJnYS5cbiAgICpcbiAgICogQHBhcmFtIGtleSBJZGVudGlmaWNhZG9yIGRlbCBlc3RhZG9cbiAgICogQHBhcmFtIGZuIEZ1bmNpb24gYXN5bmMgYSBlamVjdXRhclxuICAgKiBAcmV0dXJucyBSZXN1bHRhZG8gZGUgbGEgZnVuY2lvblxuICAgKi9cbiAgYXN5bmMgd2l0aExvYWRpbmc8VD4oa2V5OiBzdHJpbmcsIGZuOiAoKSA9PiBQcm9taXNlPFQ+KTogUHJvbWlzZTxUPiB7XG4gICAgdGhpcy5zZXRMb2FkaW5nU3RhdGUoa2V5LCB0cnVlKTtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IGZuKCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuc2V0TG9hZGluZ1N0YXRlKGtleSwgZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIGxhIGNvbmZpZ3VyYWNpb24gZGUgYW5pbWFjaW9uIHBvciBkZWZlY3RvLlxuICAgKi9cbiAgZ2V0IGFuaW1hdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9jb25maWcoKS5hbmltYXRlZCA/PyB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgZWwgZGVsYXkgcG9yIGRlZmVjdG8uXG4gICAqL1xuICBnZXQgZGVmYXVsdERlbGF5KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZygpLmRlZmF1bHREZWxheSA/PyAwO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgZWwgdGllbXBvIG1pbmltbyBwb3IgZGVmZWN0by5cbiAgICovXG4gIGdldCBkZWZhdWx0TWluVGltZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9jb25maWcoKS5kZWZhdWx0TWluVGltZSA/PyAzMDA7XG4gIH1cbn1cbiJdfQ==