valtech-components 2.0.821 → 2.0.823

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,341 @@
1
+ import { Injectable } from '@angular/core';
2
+ import QRCodeStyling from 'qr-code-styling';
3
+ import { QR_PRESETS, } from './types';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * QrGeneratorService
7
+ *
8
+ * A comprehensive service for generating, customizing, and manipulating QR codes.
9
+ * Uses qr-code-styling library for high-quality, customizable QR code generation.
10
+ *
11
+ * @example Basic usage
12
+ * ```typescript
13
+ * const qr = await this.qrService.generate({ data: 'https://example.com' });
14
+ * console.log(qr.dataUrl); // base64 image
15
+ * ```
16
+ *
17
+ * @example With customization
18
+ * ```typescript
19
+ * const qr = await this.qrService.generate({
20
+ * data: 'https://example.com',
21
+ * width: 400,
22
+ * dotsStyle: 'rounded',
23
+ * dotsColor: '#3880ff',
24
+ * logo: { src: 'logo.png', width: 60 }
25
+ * });
26
+ * ```
27
+ *
28
+ * @example Using presets
29
+ * ```typescript
30
+ * const qr = await this.qrService.generateFromPreset('modern', 'https://example.com');
31
+ * ```
32
+ */
33
+ export class QrGeneratorService {
34
+ /**
35
+ * Generate a QR code with the given configuration.
36
+ *
37
+ * @param config - QR code configuration
38
+ * @returns Promise<QrResult> - Generated QR code result
39
+ *
40
+ * @example
41
+ * ```typescript
42
+ * const qr = await this.qrService.generate({
43
+ * data: 'https://myapp.com/product/123',
44
+ * width: 300,
45
+ * dotsStyle: 'rounded',
46
+ * dotsColor: '#000000',
47
+ * backgroundColor: '#ffffff'
48
+ * });
49
+ * ```
50
+ */
51
+ async generate(config) {
52
+ // Merge with defaults
53
+ const finalConfig = {
54
+ width: 300,
55
+ height: config.height || config.width || 300,
56
+ margin: 0,
57
+ dotsStyle: 'square',
58
+ dotsColor: '#000000',
59
+ backgroundColor: '#ffffff',
60
+ errorCorrectionLevel: 'M',
61
+ format: 'png',
62
+ quality: 1,
63
+ ...config,
64
+ };
65
+ // Build qr-code-styling options
66
+ const qrOptions = {
67
+ width: finalConfig.width,
68
+ height: finalConfig.height,
69
+ data: finalConfig.data,
70
+ margin: finalConfig.margin,
71
+ qrOptions: {
72
+ errorCorrectionLevel: finalConfig.errorCorrectionLevel,
73
+ },
74
+ dotsOptions: {
75
+ type: finalConfig.dotsStyle,
76
+ ...this.buildColorOptions(finalConfig.dotsColor),
77
+ },
78
+ backgroundOptions: {
79
+ ...this.buildColorOptions(finalConfig.backgroundColor),
80
+ },
81
+ cornersSquareOptions: finalConfig.cornersSquareColor || finalConfig.cornersSquareStyle
82
+ ? {
83
+ type: finalConfig.cornersSquareStyle,
84
+ ...this.buildColorOptions(finalConfig.cornersSquareColor || finalConfig.dotsColor),
85
+ }
86
+ : undefined,
87
+ cornersDotOptions: finalConfig.cornersDotColor || finalConfig.cornersDotStyle
88
+ ? {
89
+ type: finalConfig.cornersDotStyle,
90
+ ...this.buildColorOptions(finalConfig.cornersDotColor || finalConfig.dotsColor),
91
+ }
92
+ : undefined,
93
+ };
94
+ // Add logo if provided
95
+ if (finalConfig.logo) {
96
+ qrOptions.image = finalConfig.logo.src;
97
+ qrOptions.imageOptions = {
98
+ hideBackgroundDots: finalConfig.logo.hideBackgroundDots ?? true,
99
+ imageSize: 0.4,
100
+ margin: finalConfig.logo.margin ?? 5,
101
+ crossOrigin: 'anonymous',
102
+ };
103
+ }
104
+ // Create QR code instance
105
+ const qrCode = new QRCodeStyling(qrOptions);
106
+ // Generate blob
107
+ const format = finalConfig.format || 'png';
108
+ const mimeType = this.getMimeType(format);
109
+ const extension = format === 'jpeg' ? 'jpg' : format;
110
+ let blob;
111
+ let svg;
112
+ let dataUrl;
113
+ if (format === 'svg') {
114
+ // Get SVG data
115
+ const svgData = await qrCode.getRawData('svg');
116
+ if (!svgData) {
117
+ throw new Error('Failed to generate SVG');
118
+ }
119
+ blob = svgData;
120
+ svg = await blob.text();
121
+ dataUrl = `data:${mimeType};base64,${btoa(svg)}`;
122
+ }
123
+ else {
124
+ // Get image blob
125
+ const imageBlob = await qrCode.getRawData(format);
126
+ if (!imageBlob) {
127
+ throw new Error('Failed to generate image');
128
+ }
129
+ blob = imageBlob;
130
+ dataUrl = await this.blobToDataUrl(blob);
131
+ }
132
+ return {
133
+ config: finalConfig,
134
+ dataUrl,
135
+ blob,
136
+ svg,
137
+ mimeType,
138
+ extension,
139
+ generatedAt: new Date(),
140
+ };
141
+ }
142
+ /**
143
+ * Generate a QR code using a preset configuration.
144
+ *
145
+ * @param preset - Preset name ('default', 'rounded', 'dots', 'classy', 'modern')
146
+ * @param data - Data to encode
147
+ * @param overrides - Optional configuration overrides
148
+ * @returns Promise<QrResult>
149
+ */
150
+ async generateFromPreset(preset, data, overrides) {
151
+ const presetConfig = QR_PRESETS[preset] || QR_PRESETS['default'];
152
+ return this.generate({
153
+ ...presetConfig,
154
+ ...overrides,
155
+ data,
156
+ });
157
+ }
158
+ /**
159
+ * Download the QR code as a file.
160
+ *
161
+ * @param qr - QR result to download
162
+ * @param options - Download options
163
+ */
164
+ async download(qr, options) {
165
+ const filename = options?.filename || `qr-code-${Date.now()}`;
166
+ const format = options?.format || qr.config.format || 'png';
167
+ const extension = format === 'jpeg' ? 'jpg' : format;
168
+ let blob = qr.blob;
169
+ // Convert if different format requested
170
+ if (options?.format && options.format !== qr.config.format) {
171
+ const newQr = await this.generate({
172
+ ...qr.config,
173
+ format: options.format,
174
+ });
175
+ blob = newQr.blob;
176
+ }
177
+ // Create download link
178
+ const url = URL.createObjectURL(blob);
179
+ const link = document.createElement('a');
180
+ link.href = url;
181
+ link.download = `${filename}.${extension}`;
182
+ document.body.appendChild(link);
183
+ link.click();
184
+ document.body.removeChild(link);
185
+ URL.revokeObjectURL(url);
186
+ }
187
+ /**
188
+ * Copy the QR code to clipboard as an image.
189
+ *
190
+ * @param qr - QR result to copy
191
+ * @returns Promise<boolean> - Whether copy was successful
192
+ */
193
+ async copyToClipboard(qr) {
194
+ try {
195
+ // Clipboard API requires PNG format
196
+ let pngBlob = qr.blob;
197
+ if (qr.mimeType !== 'image/png') {
198
+ const pngQr = await this.generate({
199
+ ...qr.config,
200
+ format: 'png',
201
+ });
202
+ pngBlob = pngQr.blob;
203
+ }
204
+ await navigator.clipboard.write([
205
+ new ClipboardItem({
206
+ 'image/png': pngBlob,
207
+ }),
208
+ ]);
209
+ return true;
210
+ }
211
+ catch (error) {
212
+ console.error('Failed to copy QR to clipboard:', error);
213
+ return false;
214
+ }
215
+ }
216
+ /**
217
+ * Share the QR code using Web Share API.
218
+ *
219
+ * @param qr - QR result to share
220
+ * @param options - Share options
221
+ * @returns Promise<boolean> - Whether share was successful
222
+ */
223
+ async share(qr, options) {
224
+ if (!navigator.share || !navigator.canShare) {
225
+ console.warn('Web Share API not available');
226
+ return false;
227
+ }
228
+ try {
229
+ const filename = options?.filename || `qr-code-${Date.now()}.${qr.extension}`;
230
+ const file = new File([qr.blob], filename, { type: qr.mimeType });
231
+ const shareData = {
232
+ title: options?.title || 'QR Code',
233
+ text: options?.text,
234
+ files: [file],
235
+ };
236
+ if (navigator.canShare(shareData)) {
237
+ await navigator.share(shareData);
238
+ return true;
239
+ }
240
+ // Fallback without file
241
+ await navigator.share({
242
+ title: options?.title || 'QR Code',
243
+ text: options?.text,
244
+ });
245
+ return true;
246
+ }
247
+ catch (error) {
248
+ if (error.name !== 'AbortError') {
249
+ console.error('Failed to share QR:', error);
250
+ }
251
+ return false;
252
+ }
253
+ }
254
+ /**
255
+ * Get the QR code as a base64 string (without data URL prefix).
256
+ *
257
+ * @param qr - QR result
258
+ * @returns Base64 string
259
+ */
260
+ toBase64(qr) {
261
+ const prefix = `data:${qr.mimeType};base64,`;
262
+ if (qr.dataUrl.startsWith(prefix)) {
263
+ return qr.dataUrl.substring(prefix.length);
264
+ }
265
+ return qr.dataUrl;
266
+ }
267
+ /**
268
+ * Get the QR code as a data URL.
269
+ *
270
+ * @param qr - QR result
271
+ * @returns Data URL string
272
+ */
273
+ toDataUrl(qr) {
274
+ return qr.dataUrl;
275
+ }
276
+ /**
277
+ * Get the QR code as a Blob.
278
+ *
279
+ * @param qr - QR result
280
+ * @returns Blob
281
+ */
282
+ toBlob(qr) {
283
+ return qr.blob;
284
+ }
285
+ /**
286
+ * Check if Web Share API is available.
287
+ */
288
+ canShare() {
289
+ return !!(navigator.share && navigator.canShare);
290
+ }
291
+ /**
292
+ * Check if Clipboard API is available for images.
293
+ */
294
+ canCopyToClipboard() {
295
+ return !!(navigator.clipboard && navigator.clipboard.write);
296
+ }
297
+ // === Private Helpers ===
298
+ buildColorOptions(color) {
299
+ if (!color) {
300
+ return {};
301
+ }
302
+ if (typeof color === 'string') {
303
+ return { color };
304
+ }
305
+ // Gradient
306
+ const gradient = color;
307
+ return {
308
+ gradient: {
309
+ type: gradient.type,
310
+ rotation: gradient.rotation || 0,
311
+ colorStops: gradient.colorStops,
312
+ },
313
+ };
314
+ }
315
+ getMimeType(format) {
316
+ const mimeTypes = {
317
+ png: 'image/png',
318
+ jpeg: 'image/jpeg',
319
+ webp: 'image/webp',
320
+ svg: 'image/svg+xml',
321
+ };
322
+ return mimeTypes[format] || 'image/png';
323
+ }
324
+ blobToDataUrl(blob) {
325
+ return new Promise((resolve, reject) => {
326
+ const reader = new FileReader();
327
+ reader.onloadend = () => resolve(reader.result);
328
+ reader.onerror = reject;
329
+ reader.readAsDataURL(blob);
330
+ });
331
+ }
332
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: QrGeneratorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
333
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: QrGeneratorService, providedIn: 'root' }); }
334
+ }
335
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: QrGeneratorService, decorators: [{
336
+ type: Injectable,
337
+ args: [{
338
+ providedIn: 'root',
339
+ }]
340
+ }] });
341
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXItZ2VuZXJhdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3FyLWdlbmVyYXRvci9xci1nZW5lcmF0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sYUFBYSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFPTCxVQUFVLEdBQ1gsTUFBTSxTQUFTLENBQUM7O0FBRWpCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQkc7QUFJSCxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCOzs7Ozs7Ozs7Ozs7Ozs7O09BZ0JHO0lBQ0gsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFnQjtRQUU3QixzQkFBc0I7UUFDdEIsTUFBTSxXQUFXLEdBQWE7WUFDNUIsS0FBSyxFQUFFLEdBQUc7WUFDVixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsS0FBSyxJQUFJLEdBQUc7WUFDNUMsTUFBTSxFQUFFLENBQUM7WUFDVCxTQUFTLEVBQUUsUUFBUTtZQUNuQixTQUFTLEVBQUUsU0FBUztZQUNwQixlQUFlLEVBQUUsU0FBUztZQUMxQixvQkFBb0IsRUFBRSxHQUFHO1lBQ3pCLE1BQU0sRUFBRSxLQUFLO1lBQ2IsT0FBTyxFQUFFLENBQUM7WUFDVixHQUFHLE1BQU07U0FDVixDQUFDO1FBRUYsZ0NBQWdDO1FBQ2hDLE1BQU0sU0FBUyxHQUFRO1lBQ3JCLEtBQUssRUFBRSxXQUFXLENBQUMsS0FBSztZQUN4QixNQUFNLEVBQUUsV0FBVyxDQUFDLE1BQU07WUFDMUIsSUFBSSxFQUFFLFdBQVcsQ0FBQyxJQUFJO1lBQ3RCLE1BQU0sRUFBRSxXQUFXLENBQUMsTUFBTTtZQUMxQixTQUFTLEVBQUU7Z0JBQ1Qsb0JBQW9CLEVBQUUsV0FBVyxDQUFDLG9CQUFvQjth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QUFDLENBQUM7SUFDTCxDQUFDOytHQTdVVSxrQkFBa0I7bUhBQWxCLGtCQUFrQixjQUZqQixNQUFNOzs0RkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IFFSQ29kZVN0eWxpbmcgZnJvbSAncXItY29kZS1zdHlsaW5nJztcbmltcG9ydCB7XG4gIFFyQ29uZmlnLFxuICBRclJlc3VsdCxcbiAgUXJEb3dubG9hZE9wdGlvbnMsXG4gIFFyU2hhcmVPcHRpb25zLFxuICBRckNvbG9yQ29uZmlnLFxuICBRckdyYWRpZW50LFxuICBRUl9QUkVTRVRTLFxufSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBRckdlbmVyYXRvclNlcnZpY2VcbiAqXG4gKiBBIGNvbXByZWhlbnNpdmUgc2VydmljZSBmb3IgZ2VuZXJhdGluZywgY3VzdG9taXppbmcsIGFuZCBtYW5pcHVsYXRpbmcgUVIgY29kZXMuXG4gKiBVc2VzIHFyLWNvZGUtc3R5bGluZyBsaWJyYXJ5IGZvciBoaWdoLXF1YWxpdHksIGN1c3RvbWl6YWJsZSBRUiBjb2RlIGdlbmVyYXRpb24uXG4gKlxuICogQGV4YW1wbGUgQmFzaWMgdXNhZ2VcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHFyID0gYXdhaXQgdGhpcy5xclNlcnZpY2UuZ2VuZXJhdGUoeyBkYXRhOiAnaHR0cHM6Ly9leGFtcGxlLmNvbScgfSk7XG4gKiBjb25zb2xlLmxvZyhxci5kYXRhVXJsKTsgLy8gYmFzZTY0IGltYWdlXG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBXaXRoIGN1c3RvbWl6YXRpb25cbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHFyID0gYXdhaXQgdGhpcy5xclNlcnZpY2UuZ2VuZXJhdGUoe1xuICogICBkYXRhOiAnaHR0cHM6Ly9leGFtcGxlLmNvbScsXG4gKiAgIHdpZHRoOiA0MDAsXG4gKiAgIGRvdHNTdHlsZTogJ3JvdW5kZWQnLFxuICogICBkb3RzQ29sb3I6ICcjMzg4MGZmJyxcbiAqICAgbG9nbzogeyBzcmM6ICdsb2dvLnBuZycsIHdpZHRoOiA2MCB9XG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIFVzaW5nIHByZXNldHNcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHFyID0gYXdhaXQgdGhpcy5xclNlcnZpY2UuZ2VuZXJhdGVGcm9tUHJlc2V0KCdtb2Rlcm4nLCAnaHR0cHM6Ly9leGFtcGxlLmNvbScpO1xuICogYGBgXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBRckdlbmVyYXRvclNlcnZpY2Uge1xuICAvKipcbiAgICogR2VuZXJhdGUgYSBRUiBjb2RlIHdpdGggdGhlIGdpdmVuIGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBjb25maWcgLSBRUiBjb2RlIGNvbmZpZ3VyYXRpb25cbiAgICogQHJldHVybnMgUHJvbWlzZTxRclJlc3VsdD4gLSBHZW5lcmF0ZWQgUVIgY29kZSByZXN1bHRcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBxciA9IGF3YWl0IHRoaXMucXJTZXJ2aWNlLmdlbmVyYXRlKHtcbiAgICogICBkYXRhOiAnaHR0cHM6Ly9teWFwcC5jb20vcHJvZHVjdC8xMjMnLFxuICAgKiAgIHdpZHRoOiAzMDAsXG4gICAqICAgZG90c1N0eWxlOiAncm91bmRlZCcsXG4gICAqICAgZG90c0NvbG9yOiAnIzAwMDAwMCcsXG4gICAqICAgYmFja2dyb3VuZENvbG9yOiAnI2ZmZmZmZidcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgZ2VuZXJhdGUoY29uZmlnOiBRckNvbmZpZyk6IFByb21pc2U8UXJSZXN1bHQ+IHtcblxuICAgIC8vIE1lcmdlIHdpdGggZGVmYXVsdHNcbiAgICBjb25zdCBmaW5hbENvbmZpZzogUXJDb25maWcgPSB7XG4gICAgICB3aWR0aDogMzAwLFxuICAgICAgaGVpZ2h0OiBjb25maWcuaGVpZ2h0IHx8IGNvbmZpZy53aWR0aCB8fCAzMDAsXG4gICAgICBtYXJnaW46IDAsXG4gICAgICBkb3RzU3R5bGU6ICdzcXVhcmUnLFxuICAgICAgZG90c0NvbG9yOiAnIzAwMDAwMCcsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZmZmZmZmJyxcbiAgICAgIGVycm9yQ29ycmVjdGlvbkxldmVsOiAnTScsXG4gICAgICBmb3JtYXQ6ICdwbmcnLFxuICAgICAgcXVhbGl0eTogMSxcbiAgICAgIC4uLmNvbmZpZyxcbiAgICB9O1xuXG4gICAgLy8gQnVpbGQgcXItY29kZS1zdHlsaW5nIG9wdGlvbnNcbiAgICBjb25zdCBxck9wdGlvbnM6IGFueSA9IHtcbiAgICAgIHdpZHRoOiBmaW5hbENvbmZpZy53aWR0aCxcbiAgICAgIGhlaWdodDogZmluYWxDb25maWcuaGVpZ2h0LFxuICAgICAgZGF0YTogZmluYWxDb25maWcuZGF0YSxcbiAgICAgIG1hcmdpbjogZmluYWxDb25maWcubWFyZ2luLFxuICAgICAgcXJPcHRpb25zOiB7XG4gICAgICAgIGVycm9yQ29ycmVjdGlvbkxldmVsOiBmaW5hbENvbmZpZy5lcnJvckNvcnJlY3Rpb25MZXZlbCxcbiAgICAgIH0sXG4gICAgICBkb3RzT3B0aW9uczoge1xuICAgICAgICB0eXBlOiBmaW5hbENvbmZpZy5kb3RzU3R5bGUsXG4gICAgICAgIC4uLnRoaXMuYnVpbGRDb2xvck9wdGlvbnMoZmluYWxDb25maWcuZG90c0NvbG9yKSxcbiAgICAgIH0sXG4gICAgICBiYWNrZ3JvdW5kT3B0aW9uczoge1xuICAgICAgICAuLi50aGlzLmJ1aWxkQ29sb3JPcHRpb25zKGZpbmFsQ29uZmlnLmJhY2tncm91bmRDb2xvciksXG4gICAgICB9LFxuICAgICAgY29ybmVyc1NxdWFyZU9wdGlvbnM6IGZpbmFsQ29uZmlnLmNvcm5lcnNTcXVhcmVDb2xvciB8fCBmaW5hbENvbmZpZy5jb3JuZXJzU3F1YXJlU3R5bGVcbiAgICAgICAgPyB7XG4gICAgICAgICAgICB0eXBlOiBmaW5hbENvbmZpZy5jb3JuZXJzU3F1YXJlU3R5bGUsXG4gICAgICAgICAgICAuLi50aGlzLmJ1aWxkQ29sb3JPcHRpb25zKGZpbmFsQ29uZmlnLmNvcm5lcnNTcXVhcmVDb2xvciB8fCBmaW5hbENvbmZpZy5kb3RzQ29sb3IpLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBjb3JuZXJzRG90T3B0aW9uczogZmluYWxDb25maWcuY29ybmVyc0RvdENvbG9yIHx8IGZpbmFsQ29uZmlnLmNvcm5lcnNEb3RTdHlsZVxuICAgICAgICA/IHtcbiAgICAgICAgICAgIHR5cGU6IGZpbmFsQ29uZmlnLmNvcm5lcnNEb3RTdHlsZSxcbiAgICAgICAgICAgIC4uLnRoaXMuYnVpbGRDb2xvck9wdGlvbnMoZmluYWxDb25maWcuY29ybmVyc0RvdENvbG9yIHx8IGZpbmFsQ29uZmlnLmRvdHNDb2xvciksXG4gICAgICAgICAgfVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9O1xuXG4gICAgLy8gQWRkIGxvZ28gaWYgcHJvdmlkZWRcbiAgICBpZiAoZmluYWxDb25maWcubG9nbykge1xuICAgICAgcXJPcHRpb25zLmltYWdlID0gZmluYWxDb25maWcubG9nby5zcmM7XG4gICAgICBxck9wdGlvbnMuaW1hZ2VPcHRpb25zID0ge1xuICAgICAgICBoaWRlQmFja2dyb3VuZERvdHM6IGZpbmFsQ29uZmlnLmxvZ28uaGlkZUJhY2tncm91bmREb3RzID8/IHRydWUsXG4gICAgICAgIGltYWdlU2l6ZTogMC40LFxuICAgICAgICBtYXJnaW46IGZpbmFsQ29uZmlnLmxvZ28ubWFyZ2luID8/IDUsXG4gICAgICAgIGNyb3NzT3JpZ2luOiAnYW5vbnltb3VzJyxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIFFSIGNvZGUgaW5zdGFuY2VcbiAgICBjb25zdCBxckNvZGUgPSBuZXcgUVJDb2RlU3R5bGluZyhxck9wdGlvbnMpO1xuXG4gICAgLy8gR2VuZXJhdGUgYmxvYlxuICAgIGNvbnN0IGZvcm1hdCA9IGZpbmFsQ29uZmlnLmZvcm1hdCB8fCAncG5nJztcbiAgICBjb25zdCBtaW1lVHlwZSA9IHRoaXMuZ2V0TWltZVR5cGUoZm9ybWF0KTtcbiAgICBjb25zdCBleHRlbnNpb24gPSBmb3JtYXQgPT09ICdqcGVnJyA/ICdqcGcnIDogZm9ybWF0O1xuXG4gICAgbGV0IGJsb2I6IEJsb2I7XG4gICAgbGV0IHN2Zzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGxldCBkYXRhVXJsOiBzdHJpbmc7XG5cbiAgICBpZiAoZm9ybWF0ID09PSAnc3ZnJykge1xuICAgICAgLy8gR2V0IFNWRyBkYXRhXG4gICAgICBjb25zdCBzdmdEYXRhID0gYXdhaXQgcXJDb2RlLmdldFJhd0RhdGEoJ3N2ZycpO1xuICAgICAgaWYgKCFzdmdEYXRhKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGdlbmVyYXRlIFNWRycpO1xuICAgICAgfVxuICAgICAgYmxvYiA9IHN2Z0RhdGEgYXMgQmxvYjtcbiAgICAgIHN2ZyA9IGF3YWl0IGJsb2IudGV4dCgpO1xuICAgICAgZGF0YVVybCA9IGBkYXRhOiR7bWltZVR5cGV9O2Jhc2U2NCwke2J0b2Eoc3ZnKX1gO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBHZXQgaW1hZ2UgYmxvYlxuICAgICAgY29uc3QgaW1hZ2VCbG9iID0gYXdhaXQgcXJDb2RlLmdldFJhd0RhdGEoZm9ybWF0IGFzICdwbmcnIHwgJ2pwZWcnIHwgJ3dlYnAnKTtcbiAgICAgIGlmICghaW1hZ2VCbG9iKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGdlbmVyYXRlIGltYWdlJyk7XG4gICAgICB9XG4gICAgICBibG9iID0gaW1hZ2VCbG9iIGFzIEJsb2I7XG4gICAgICBkYXRhVXJsID0gYXdhaXQgdGhpcy5ibG9iVG9EYXRhVXJsKGJsb2IpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBjb25maWc6IGZpbmFsQ29uZmlnLFxuICAgICAgZGF0YVVybCxcbiAgICAgIGJsb2IsXG4gICAgICBzdmcsXG4gICAgICBtaW1lVHlwZSxcbiAgICAgIGV4dGVuc2lvbixcbiAgICAgIGdlbmVyYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgYSBRUiBjb2RlIHVzaW5nIGEgcHJlc2V0IGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBwcmVzZXQgLSBQcmVzZXQgbmFtZSAoJ2RlZmF1bHQnLCAncm91bmRlZCcsICdkb3RzJywgJ2NsYXNzeScsICdtb2Rlcm4nKVxuICAgKiBAcGFyYW0gZGF0YSAtIERhdGEgdG8gZW5jb2RlXG4gICAqIEBwYXJhbSBvdmVycmlkZXMgLSBPcHRpb25hbCBjb25maWd1cmF0aW9uIG92ZXJyaWRlc1xuICAgKiBAcmV0dXJucyBQcm9taXNlPFFyUmVzdWx0PlxuICAgKi9cbiAgYXN5bmMgZ2VuZXJhdGVGcm9tUHJlc2V0KFxuICAgIHByZXNldDoga2V5b2YgdHlwZW9mIFFSX1BSRVNFVFMgfCBzdHJpbmcsXG4gICAgZGF0YTogc3RyaW5nLFxuICAgIG92ZXJyaWRlcz86IFBhcnRpYWw8UXJDb25maWc+XG4gICk6IFByb21pc2U8UXJSZXN1bHQ+IHtcbiAgICBjb25zdCBwcmVzZXRDb25maWcgPSBRUl9QUkVTRVRTW3ByZXNldF0gfHwgUVJfUFJFU0VUU1snZGVmYXVsdCddO1xuICAgIHJldHVybiB0aGlzLmdlbmVyYXRlKHtcbiAgICAgIC4uLnByZXNldENvbmZpZyxcbiAgICAgIC4uLm92ZXJyaWRlcyxcbiAgICAgIGRhdGEsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRG93bmxvYWQgdGhlIFFSIGNvZGUgYXMgYSBmaWxlLlxuICAgKlxuICAgKiBAcGFyYW0gcXIgLSBRUiByZXN1bHQgdG8gZG93bmxvYWRcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBEb3dubG9hZCBvcHRpb25zXG4gICAqL1xuICBhc3luYyBkb3dubG9hZChxcjogUXJSZXN1bHQsIG9wdGlvbnM/OiBRckRvd25sb2FkT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGZpbGVuYW1lID0gb3B0aW9ucz8uZmlsZW5hbWUgfHwgYHFyLWNvZGUtJHtEYXRlLm5vdygpfWA7XG4gICAgY29uc3QgZm9ybWF0ID0gb3B0aW9ucz8uZm9ybWF0IHx8IHFyLmNvbmZpZy5mb3JtYXQgfHwgJ3BuZyc7XG4gICAgY29uc3QgZXh0ZW5zaW9uID0gZm9ybWF0ID09PSAnanBlZycgPyAnanBnJyA6IGZvcm1hdDtcblxuICAgIGxldCBibG9iID0gcXIuYmxvYjtcblxuICAgIC8vIENvbnZlcnQgaWYgZGlmZmVyZW50IGZvcm1hdCByZXF1ZXN0ZWRcbiAgICBpZiAob3B0aW9ucz8uZm9ybWF0ICYmIG9wdGlvbnMuZm9ybWF0ICE9PSBxci5jb25maWcuZm9ybWF0KSB7XG4gICAgICBjb25zdCBuZXdRciA9IGF3YWl0IHRoaXMuZ2VuZXJhdGUoe1xuICAgICAgICAuLi5xci5jb25maWcsXG4gICAgICAgIGZvcm1hdDogb3B0aW9ucy5mb3JtYXQsXG4gICAgICB9KTtcbiAgICAgIGJsb2IgPSBuZXdRci5ibG9iO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBkb3dubG9hZCBsaW5rXG4gICAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIGxpbmsuaHJlZiA9IHVybDtcbiAgICBsaW5rLmRvd25sb2FkID0gYCR7ZmlsZW5hbWV9LiR7ZXh0ZW5zaW9ufWA7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcbiAgICBsaW5rLmNsaWNrKCk7XG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcbiAgICBVUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XG4gIH1cblxuICAvKipcbiAgICogQ29weSB0aGUgUVIgY29kZSB0byBjbGlwYm9hcmQgYXMgYW4gaW1hZ2UuXG4gICAqXG4gICAqIEBwYXJhbSBxciAtIFFSIHJlc3VsdCB0byBjb3B5XG4gICAqIEByZXR1cm5zIFByb21pc2U8Ym9vbGVhbj4gLSBXaGV0aGVyIGNvcHkgd2FzIHN1Y2Nlc3NmdWxcbiAgICovXG4gIGFzeW5jIGNvcHlUb0NsaXBib2FyZChxcjogUXJSZXN1bHQpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0cnkge1xuICAgICAgLy8gQ2xpcGJvYXJkIEFQSSByZXF1aXJlcyBQTkcgZm9ybWF0XG4gICAgICBsZXQgcG5nQmxvYiA9IHFyLmJsb2I7XG5cbiAgICAgIGlmIChxci5taW1lVHlwZSAhPT0gJ2ltYWdlL3BuZycpIHtcbiAgICAgICAgY29uc3QgcG5nUXIgPSBhd2FpdCB0aGlzLmdlbmVyYXRlKHtcbiAgICAgICAgICAuLi5xci5jb25maWcsXG4gICAgICAgICAgZm9ybWF0OiAncG5nJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHBuZ0Jsb2IgPSBwbmdRci5ibG9iO1xuICAgICAgfVxuXG4gICAgICBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlKFtcbiAgICAgICAgbmV3IENsaXBib2FyZEl0ZW0oe1xuICAgICAgICAgICdpbWFnZS9wbmcnOiBwbmdCbG9iLFxuICAgICAgICB9KSxcbiAgICAgIF0pO1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGNvcHkgUVIgdG8gY2xpcGJvYXJkOicsIGVycm9yKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2hhcmUgdGhlIFFSIGNvZGUgdXNpbmcgV2ViIFNoYXJlIEFQSS5cbiAgICpcbiAgICogQHBhcmFtIHFyIC0gUVIgcmVzdWx0IHRvIHNoYXJlXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gU2hhcmUgb3B0aW9uc1xuICAgKiBAcmV0dXJucyBQcm9taXNlPGJvb2xlYW4+IC0gV2hldGhlciBzaGFyZSB3YXMgc3VjY2Vzc2Z1bFxuICAgKi9cbiAgYXN5bmMgc2hhcmUocXI6IFFyUmVzdWx0LCBvcHRpb25zPzogUXJTaGFyZU9wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAoIW5hdmlnYXRvci5zaGFyZSB8fCAhbmF2aWdhdG9yLmNhblNoYXJlKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1dlYiBTaGFyZSBBUEkgbm90IGF2YWlsYWJsZScpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBmaWxlbmFtZSA9IG9wdGlvbnM/LmZpbGVuYW1lIHx8IGBxci1jb2RlLSR7RGF0ZS5ub3coKX0uJHtxci5leHRlbnNpb259YDtcbiAgICAgIGNvbnN0IGZpbGUgPSBuZXcgRmlsZShbcXIuYmxvYl0sIGZpbGVuYW1lLCB7IHR5cGU6IHFyLm1pbWVUeXBlIH0pO1xuXG4gICAgICBjb25zdCBzaGFyZURhdGE6IFNoYXJlRGF0YSA9IHtcbiAgICAgICAgdGl0bGU6IG9wdGlvbnM/LnRpdGxlIHx8ICdRUiBDb2RlJyxcbiAgICAgICAgdGV4dDogb3B0aW9ucz8udGV4dCxcbiAgICAgICAgZmlsZXM6IFtmaWxlXSxcbiAgICAgIH07XG5cbiAgICAgIGlmIChuYXZpZ2F0b3IuY2FuU2hhcmUoc2hhcmVEYXRhKSkge1xuICAgICAgICBhd2FpdCBuYXZpZ2F0b3Iuc2hhcmUoc2hhcmVEYXRhKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIC8vIEZhbGxiYWNrIHdpdGhvdXQgZmlsZVxuICAgICAgYXdhaXQgbmF2aWdhdG9yLnNoYXJlKHtcbiAgICAgICAgdGl0bGU6IG9wdGlvbnM/LnRpdGxlIHx8ICdRUiBDb2RlJyxcbiAgICAgICAgdGV4dDogb3B0aW9ucz8udGV4dCxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKChlcnJvciBhcyBFcnJvcikubmFtZSAhPT0gJ0Fib3J0RXJyb3InKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBzaGFyZSBRUjonLCBlcnJvcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgUVIgY29kZSBhcyBhIGJhc2U2NCBzdHJpbmcgKHdpdGhvdXQgZGF0YSBVUkwgcHJlZml4KS5cbiAgICpcbiAgICogQHBhcmFtIHFyIC0gUVIgcmVzdWx0XG4gICAqIEByZXR1cm5zIEJhc2U2NCBzdHJpbmdcbiAgICovXG4gIHRvQmFzZTY0KHFyOiBRclJlc3VsdCk6IHN0cmluZyB7XG4gICAgY29uc3QgcHJlZml4ID0gYGRhdGE6JHtxci5taW1lVHlwZX07YmFzZTY0LGA7XG4gICAgaWYgKHFyLmRhdGFVcmwuc3RhcnRzV2l0aChwcmVmaXgpKSB7XG4gICAgICByZXR1cm4gcXIuZGF0YVVybC5zdWJzdHJpbmcocHJlZml4Lmxlbmd0aCk7XG4gICAgfVxuICAgIHJldHVybiBxci5kYXRhVXJsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgUVIgY29kZSBhcyBhIGRhdGEgVVJMLlxuICAgKlxuICAgKiBAcGFyYW0gcXIgLSBRUiByZXN1bHRcbiAgICogQHJldHVybnMgRGF0YSBVUkwgc3RyaW5nXG4gICAqL1xuICB0b0RhdGFVcmwocXI6IFFyUmVzdWx0KTogc3RyaW5nIHtcbiAgICByZXR1cm4gcXIuZGF0YVVybDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIFFSIGNvZGUgYXMgYSBCbG9iLlxuICAgKlxuICAgKiBAcGFyYW0gcXIgLSBRUiByZXN1bHRcbiAgICogQHJldHVybnMgQmxvYlxuICAgKi9cbiAgdG9CbG9iKHFyOiBRclJlc3VsdCk6IEJsb2Ige1xuICAgIHJldHVybiBxci5ibG9iO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIFdlYiBTaGFyZSBBUEkgaXMgYXZhaWxhYmxlLlxuICAgKi9cbiAgY2FuU2hhcmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKG5hdmlnYXRvci5zaGFyZSAmJiBuYXZpZ2F0b3IuY2FuU2hhcmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIENsaXBib2FyZCBBUEkgaXMgYXZhaWxhYmxlIGZvciBpbWFnZXMuXG4gICAqL1xuICBjYW5Db3B5VG9DbGlwYm9hcmQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKG5hdmlnYXRvci5jbGlwYm9hcmQgJiYgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZSk7XG4gIH1cblxuICAvLyA9PT0gUHJpdmF0ZSBIZWxwZXJzID09PVxuXG4gIHByaXZhdGUgYnVpbGRDb2xvck9wdGlvbnMoY29sb3I/OiBRckNvbG9yQ29uZmlnKTogYW55IHtcbiAgICBpZiAoIWNvbG9yKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBjb2xvciA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiB7IGNvbG9yIH07XG4gICAgfVxuXG4gICAgLy8gR3JhZGllbnRcbiAgICBjb25zdCBncmFkaWVudCA9IGNvbG9yIGFzIFFyR3JhZGllbnQ7XG4gICAgcmV0dXJuIHtcbiAgICAgIGdyYWRpZW50OiB7XG4gICAgICAgIHR5cGU6IGdyYWRpZW50LnR5cGUsXG4gICAgICAgIHJvdGF0aW9uOiBncmFkaWVudC5yb3RhdGlvbiB8fCAwLFxuICAgICAgICBjb2xvclN0b3BzOiBncmFkaWVudC5jb2xvclN0b3BzLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNaW1lVHlwZShmb3JtYXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgbWltZVR5cGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgcG5nOiAnaW1hZ2UvcG5nJyxcbiAgICAgIGpwZWc6ICdpbWFnZS9qcGVnJyxcbiAgICAgIHdlYnA6ICdpbWFnZS93ZWJwJyxcbiAgICAgIHN2ZzogJ2ltYWdlL3N2Zyt4bWwnLFxuICAgIH07XG4gICAgcmV0dXJuIG1pbWVUeXBlc1tmb3JtYXRdIHx8ICdpbWFnZS9wbmcnO1xuICB9XG5cbiAgcHJpdmF0ZSBibG9iVG9EYXRhVXJsKGJsb2I6IEJsb2IpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgcmVhZGVyLm9ubG9hZGVuZCA9ICgpID0+IHJlc29sdmUocmVhZGVyLnJlc3VsdCBhcyBzdHJpbmcpO1xuICAgICAgcmVhZGVyLm9uZXJyb3IgPSByZWplY3Q7XG4gICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChibG9iKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Default presets for quick styling.
3
+ */
4
+ export const QR_PRESETS = {
5
+ default: {
6
+ width: 300,
7
+ dotsStyle: 'square',
8
+ dotsColor: '#000000',
9
+ backgroundColor: '#ffffff',
10
+ errorCorrectionLevel: 'M',
11
+ },
12
+ rounded: {
13
+ width: 300,
14
+ dotsStyle: 'rounded',
15
+ cornersSquareStyle: 'extra-rounded',
16
+ cornersDotStyle: 'dot',
17
+ dotsColor: '#000000',
18
+ backgroundColor: '#ffffff',
19
+ },
20
+ dots: {
21
+ width: 300,
22
+ dotsStyle: 'dots',
23
+ cornersSquareStyle: 'dot',
24
+ cornersDotStyle: 'dot',
25
+ dotsColor: '#000000',
26
+ backgroundColor: '#ffffff',
27
+ },
28
+ classy: {
29
+ width: 300,
30
+ dotsStyle: 'classy',
31
+ cornersSquareStyle: 'extra-rounded',
32
+ cornersDotStyle: 'dot',
33
+ dotsColor: '#000000',
34
+ backgroundColor: '#ffffff',
35
+ },
36
+ modern: {
37
+ width: 300,
38
+ dotsStyle: 'extra-rounded',
39
+ cornersSquareStyle: 'extra-rounded',
40
+ cornersDotStyle: 'dot',
41
+ dotsColor: '#1a1a1a',
42
+ backgroundColor: '#ffffff',
43
+ margin: 2,
44
+ },
45
+ };
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3FyLWdlbmVyYXRvci90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrS0E7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQXNDO0lBQzNELE9BQU8sRUFBRTtRQUNQLEtBQUssRUFBRSxHQUFHO1FBQ1YsU0FBUyxFQUFFLFFBQVE7UUFDbkIsU0FBUyxFQUFFLFNBQVM7UUFDcEIsZUFBZSxFQUFFLFNBQVM7UUFDMUIsb0JBQW9CLEVBQUUsR0FBRztLQUMxQjtJQUNELE9BQU8sRUFBRTtRQUNQLEtBQUssRUFBRSxHQUFHO1FBQ1YsU0FBUyxFQUFFLFNBQVM7UUFDcEIsa0JBQWtCLEVBQUUsZUFBZTtRQUNuQyxlQUFlLEVBQUUsS0FBSztRQUN0QixTQUFTLEVBQUUsU0FBUztRQUNwQixlQUFlLEVBQUUsU0FBUztLQUMzQjtJQUNELElBQUksRUFBRTtRQUNKLEtBQUssRUFBRSxHQUFHO1FBQ1YsU0FBUyxFQUFFLE1BQU07UUFDakIsa0JBQWtCLEVBQUUsS0FBSztRQUN6QixlQUFlLEVBQUUsS0FBSztRQUN0QixTQUFTLEVBQUUsU0FBUztRQUNwQixlQUFlLEVBQUUsU0FBUztLQUMzQjtJQUNELE1BQU0sRUFBRTtRQUNOLEtBQUssRUFBRSxHQUFHO1FBQ1YsU0FBUyxFQUFFLFFBQVE7UUFDbkIsa0JBQWtCLEVBQUUsZUFBZTtRQUNuQyxlQUFlLEVBQUUsS0FBSztRQUN0QixTQUFTLEVBQUUsU0FBUztRQUNwQixlQUFlLEVBQUUsU0FBUztLQUMzQjtJQUNELE1BQU0sRUFBRTtRQUNOLEtBQUssRUFBRSxHQUFHO1FBQ1YsU0FBUyxFQUFFLGVBQWU7UUFDMUIsa0JBQWtCLEVBQUUsZUFBZTtRQUNuQyxlQUFlLEVBQUUsS0FBSztRQUN0QixTQUFTLEVBQUUsU0FBUztRQUNwQixlQUFlLEVBQUUsU0FBUztRQUMxQixNQUFNLEVBQUUsQ0FBQztLQUNWO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU3R5bGUgb3B0aW9ucyBmb3IgUVIgY29kZSBkb3RzIChkYXRhIG1vZHVsZXMpLlxuICovXG5leHBvcnQgdHlwZSBRckRvdHNTdHlsZSA9ICdzcXVhcmUnIHwgJ2RvdHMnIHwgJ3JvdW5kZWQnIHwgJ2V4dHJhLXJvdW5kZWQnIHwgJ2NsYXNzeScgfCAnY2xhc3N5LXJvdW5kZWQnO1xuXG4vKipcbiAqIFN0eWxlIG9wdGlvbnMgZm9yIFFSIGNvZGUgY29ybmVyIHNxdWFyZXMuXG4gKi9cbmV4cG9ydCB0eXBlIFFyQ29ybmVyc1NxdWFyZVN0eWxlID0gJ3NxdWFyZScgfCAnZG90JyB8ICdleHRyYS1yb3VuZGVkJztcblxuLyoqXG4gKiBTdHlsZSBvcHRpb25zIGZvciBRUiBjb2RlIGNvcm5lciBkb3RzLlxuICovXG5leHBvcnQgdHlwZSBRckNvcm5lcnNEb3RTdHlsZSA9ICdzcXVhcmUnIHwgJ2RvdCc7XG5cbi8qKlxuICogT3V0cHV0IGZvcm1hdCBmb3IgdGhlIGdlbmVyYXRlZCBRUiBjb2RlLlxuICovXG5leHBvcnQgdHlwZSBRck91dHB1dEZvcm1hdCA9ICdzdmcnIHwgJ3BuZycgfCAnanBlZycgfCAnd2VicCc7XG5cbi8qKlxuICogRXJyb3IgY29ycmVjdGlvbiBsZXZlbCBmb3IgUVIgY29kZXMuXG4gKiBIaWdoZXIgbGV2ZWxzIGFsbG93IG1vcmUgZGFtYWdlIHRvbGVyYW5jZSBidXQgcmVkdWNlIGRhdGEgY2FwYWNpdHkuXG4gKi9cbmV4cG9ydCB0eXBlIFFyRXJyb3JDb3JyZWN0aW9uTGV2ZWwgPSAnTCcgfCAnTScgfCAnUScgfCAnSCc7XG5cbi8qKlxuICogTG9nby9pbWFnZSBjb25maWd1cmF0aW9uIGZvciB0aGUgUVIgY29kZSBjZW50ZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUXJMb2dvQ29uZmlnIHtcbiAgLyoqIEltYWdlIHNvdXJjZSBVUkwgb3IgYmFzZTY0ICovXG4gIHNyYzogc3RyaW5nO1xuICAvKiogTG9nbyB3aWR0aCAoZGVmYXVsdDogMjUlIG9mIFFSIHNpemUpICovXG4gIHdpZHRoPzogbnVtYmVyO1xuICAvKiogTG9nbyBoZWlnaHQgKGRlZmF1bHQ6IHNhbWUgYXMgd2lkdGgpICovXG4gIGhlaWdodD86IG51bWJlcjtcbiAgLyoqIE1hcmdpbiBhcm91bmQgdGhlIGxvZ28gKi9cbiAgbWFyZ2luPzogbnVtYmVyO1xuICAvKiogQm9yZGVyIHJhZGl1cyBmb3Igcm91bmRlZCBjb3JuZXJzICovXG4gIGJvcmRlclJhZGl1cz86IG51bWJlcjtcbiAgLyoqIFdoZXRoZXIgdG8gaGlkZSBkb3RzIGJlaGluZCB0aGUgbG9nbyAqL1xuICBoaWRlQmFja2dyb3VuZERvdHM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEdyYWRpZW50IGNvbmZpZ3VyYXRpb24gZm9yIFFSIGVsZW1lbnRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFFyR3JhZGllbnQge1xuICAvKiogR3JhZGllbnQgdHlwZSAqL1xuICB0eXBlOiAnbGluZWFyJyB8ICdyYWRpYWwnO1xuICAvKiogUm90YXRpb24gYW5nbGUgaW4gZGVncmVlcyAoZm9yIGxpbmVhcikgKi9cbiAgcm90YXRpb24/OiBudW1iZXI7XG4gIC8qKiBDb2xvciBzdG9wcyAqL1xuICBjb2xvclN0b3BzOiBBcnJheTx7XG4gICAgb2Zmc2V0OiBudW1iZXI7XG4gICAgY29sb3I6IHN0cmluZztcbiAgfT47XG59XG5cbi8qKlxuICogQ29sb3IgY29uZmlndXJhdGlvbiAtIGNhbiBiZSBzb2xpZCBjb2xvciBvciBncmFkaWVudC5cbiAqL1xuZXhwb3J0IHR5cGUgUXJDb2xvckNvbmZpZyA9IHN0cmluZyB8IFFyR3JhZGllbnQ7XG5cbi8qKlxuICogQ29tcGxldGUgY29uZmlndXJhdGlvbiBmb3IgUVIgY29kZSBnZW5lcmF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFFyQ29uZmlnIHtcbiAgLyoqIFRoZSBkYXRhIHRvIGVuY29kZSAoVVJMLCB0ZXh0LCBldGMuKSAqL1xuICBkYXRhOiBzdHJpbmc7XG5cbiAgLy8gPT09IFNpemUgPT09XG4gIC8qKiBRUiBjb2RlIHdpZHRoIGluIHBpeGVscyAoZGVmYXVsdDogMzAwKSAqL1xuICB3aWR0aD86IG51bWJlcjtcbiAgLyoqIFFSIGNvZGUgaGVpZ2h0IGluIHBpeGVscyAoZGVmYXVsdDogc2FtZSBhcyB3aWR0aCkgKi9cbiAgaGVpZ2h0PzogbnVtYmVyO1xuICAvKiogUXVpZXQgem9uZSBtYXJnaW4gaW4gbW9kdWxlcyAoZGVmYXVsdDogMCkgKi9cbiAgbWFyZ2luPzogbnVtYmVyO1xuXG4gIC8vID09PSBDb2xvcnMgPT09XG4gIC8qKiBDb2xvci9ncmFkaWVudCBmb3IgZGF0YSBkb3RzICovXG4gIGRvdHNDb2xvcj86IFFyQ29sb3JDb25maWc7XG4gIC8qKiBCYWNrZ3JvdW5kIGNvbG9yIChkZWZhdWx0OiB3aGl0ZSkgKi9cbiAgYmFja2dyb3VuZENvbG9yPzogUXJDb2xvckNvbmZpZztcbiAgLyoqIENvbG9yIGZvciBjb3JuZXIgc3F1YXJlcyAqL1xuICBjb3JuZXJzU3F1YXJlQ29sb3I/OiBRckNvbG9yQ29uZmlnO1xuICAvKiogQ29sb3IgZm9yIGNvcm5lciBkb3RzICovXG4gIGNvcm5lcnNEb3RDb2xvcj86IFFyQ29sb3JDb25maWc7XG5cbiAgLy8gPT09IFN0eWxlcyA9PT1cbiAgLyoqIFN0eWxlIG9mIGRhdGEgZG90cyAoZGVmYXVsdDogJ3NxdWFyZScpICovXG4gIGRvdHNTdHlsZT86IFFyRG90c1N0eWxlO1xuICAvKiogU3R5bGUgb2YgY29ybmVyIHNxdWFyZXMgKGRlZmF1bHQ6ICdzcXVhcmUnKSAqL1xuICBjb3JuZXJzU3F1YXJlU3R5bGU/OiBRckNvcm5lcnNTcXVhcmVTdHlsZTtcbiAgLyoqIFN0eWxlIG9mIGNvcm5lciBkb3RzIChkZWZhdWx0OiAnc3F1YXJlJykgKi9cbiAgY29ybmVyc0RvdFN0eWxlPzogUXJDb3JuZXJzRG90U3R5bGU7XG5cbiAgLy8gPT09IExvZ28gPT09XG4gIC8qKiBMb2dvL2ltYWdlIGNvbmZpZ3VyYXRpb24gKi9cbiAgbG9nbz86IFFyTG9nb0NvbmZpZztcblxuICAvLyA9PT0gVGVjaG5pY2FsID09PVxuICAvKiogRXJyb3IgY29ycmVjdGlvbiBsZXZlbCAoZGVmYXVsdDogJ00nKSAqL1xuICBlcnJvckNvcnJlY3Rpb25MZXZlbD86IFFyRXJyb3JDb3JyZWN0aW9uTGV2ZWw7XG5cbiAgLy8gPT09IE91dHB1dCA9PT1cbiAgLyoqIE91dHB1dCBmb3JtYXQgKGRlZmF1bHQ6ICdwbmcnKSAqL1xuICBmb3JtYXQ/OiBRck91dHB1dEZvcm1hdDtcbiAgLyoqIFF1YWxpdHkgZm9yIGpwZWcvd2VicCAoMC0xLCBkZWZhdWx0OiAxKSAqL1xuICBxdWFsaXR5PzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFJlc3VsdCBmcm9tIFFSIGNvZGUgZ2VuZXJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRclJlc3VsdCB7XG4gIC8qKiBPcmlnaW5hbCBjb25maWd1cmF0aW9uIHVzZWQgKi9cbiAgY29uZmlnOiBRckNvbmZpZztcbiAgLyoqIEdlbmVyYXRlZCBkYXRhIGFzIGJhc2U2NCBkYXRhIFVSTCAqL1xuICBkYXRhVXJsOiBzdHJpbmc7XG4gIC8qKiBHZW5lcmF0ZWQgZGF0YSBhcyBCbG9iICovXG4gIGJsb2I6IEJsb2I7XG4gIC8qKiBTVkcgc3RyaW5nIChvbmx5IHdoZW4gZm9ybWF0IGlzICdzdmcnKSAqL1xuICBzdmc/OiBzdHJpbmc7XG4gIC8qKiBNSU1FIHR5cGUgb2YgdGhlIGdlbmVyYXRlZCBpbWFnZSAqL1xuICBtaW1lVHlwZTogc3RyaW5nO1xuICAvKiogRmlsZSBleHRlbnNpb24gKi9cbiAgZXh0ZW5zaW9uOiBzdHJpbmc7XG4gIC8qKiBUaW1lc3RhbXAgb2YgZ2VuZXJhdGlvbiAqL1xuICBnZW5lcmF0ZWRBdDogRGF0ZTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBkb3dubG9hZGluZyB0aGUgUVIgY29kZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRckRvd25sb2FkT3B0aW9ucyB7XG4gIC8qKiBDdXN0b20gZmlsZW5hbWUgKHdpdGhvdXQgZXh0ZW5zaW9uKSAqL1xuICBmaWxlbmFtZT86IHN0cmluZztcbiAgLyoqIE92ZXJyaWRlIGZvcm1hdCBmb3IgZG93bmxvYWQgKi9cbiAgZm9ybWF0PzogUXJPdXRwdXRGb3JtYXQ7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Igc2hhcmluZyB0aGUgUVIgY29kZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRclNoYXJlT3B0aW9ucyB7XG4gIC8qKiBTaGFyZSB0aXRsZSAqL1xuICB0aXRsZT86IHN0cmluZztcbiAgLyoqIFNoYXJlIHRleHQvZGVzY3JpcHRpb24gKi9cbiAgdGV4dD86IHN0cmluZztcbiAgLyoqIEN1c3RvbSBmaWxlbmFtZSBmb3IgdGhlIHNoYXJlZCBmaWxlICovXG4gIGZpbGVuYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByZXNldCBjb25maWd1cmF0aW9ucyBmb3IgY29tbW9uIHVzZSBjYXNlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRclByZXNldCB7XG4gIG5hbWU6IHN0cmluZztcbiAgY29uZmlnOiBQYXJ0aWFsPFFyQ29uZmlnPjtcbn1cblxuLyoqXG4gKiBEZWZhdWx0IHByZXNldHMgZm9yIHF1aWNrIHN0eWxpbmcuXG4gKi9cbmV4cG9ydCBjb25zdCBRUl9QUkVTRVRTOiBSZWNvcmQ8c3RyaW5nLCBQYXJ0aWFsPFFyQ29uZmlnPj4gPSB7XG4gIGRlZmF1bHQ6IHtcbiAgICB3aWR0aDogMzAwLFxuICAgIGRvdHNTdHlsZTogJ3NxdWFyZScsXG4gICAgZG90c0NvbG9yOiAnIzAwMDAwMCcsXG4gICAgYmFja2dyb3VuZENvbG9yOiAnI2ZmZmZmZicsXG4gICAgZXJyb3JDb3JyZWN0aW9uTGV2ZWw6ICdNJyxcbiAgfSxcbiAgcm91bmRlZDoge1xuICAgIHdpZHRoOiAzMDAsXG4gICAgZG90c1N0eWxlOiAncm91bmRlZCcsXG4gICAgY29ybmVyc1NxdWFyZVN0eWxlOiAnZXh0cmEtcm91bmRlZCcsXG4gICAgY29ybmVyc0RvdFN0eWxlOiAnZG90JyxcbiAgICBkb3RzQ29sb3I6ICcjMDAwMDAwJyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZmZmZmZmJyxcbiAgfSxcbiAgZG90czoge1xuICAgIHdpZHRoOiAzMDAsXG4gICAgZG90c1N0eWxlOiAnZG90cycsXG4gICAgY29ybmVyc1NxdWFyZVN0eWxlOiAnZG90JyxcbiAgICBjb3JuZXJzRG90U3R5bGU6ICdkb3QnLFxuICAgIGRvdHNDb2xvcjogJyMwMDAwMDAnLFxuICAgIGJhY2tncm91bmRDb2xvcjogJyNmZmZmZmYnLFxuICB9LFxuICBjbGFzc3k6IHtcbiAgICB3aWR0aDogMzAwLFxuICAgIGRvdHNTdHlsZTogJ2NsYXNzeScsXG4gICAgY29ybmVyc1NxdWFyZVN0eWxlOiAnZXh0cmEtcm91bmRlZCcsXG4gICAgY29ybmVyc0RvdFN0eWxlOiAnZG90JyxcbiAgICBkb3RzQ29sb3I6ICcjMDAwMDAwJyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZmZmZmZmJyxcbiAgfSxcbiAgbW9kZXJuOiB7XG4gICAgd2lkdGg6IDMwMCxcbiAgICBkb3RzU3R5bGU6ICdleHRyYS1yb3VuZGVkJyxcbiAgICBjb3JuZXJzU3F1YXJlU3R5bGU6ICdleHRyYS1yb3VuZGVkJyxcbiAgICBjb3JuZXJzRG90U3R5bGU6ICdkb3QnLFxuICAgIGRvdHNDb2xvcjogJyMxYTFhMWEnLFxuICAgIGJhY2tncm91bmRDb2xvcjogJyNmZmZmZmYnLFxuICAgIG1hcmdpbjogMixcbiAgfSxcbn07XG4iXX0=
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Refreshable Stream
3
+ *
4
+ * Helper `createRefreshableStream` para vistas con datos Firestore.
5
+ * Soporta modo one-shot y real-time, con gate de `firebaseAuthReady`.
6
+ */
7
+ export { createRefreshableStream, } from './refreshable-stream';
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3JlZnJlc2hhYmxlLXN0cmVhbS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUNILE9BQU8sRUFDTCx1QkFBdUIsR0FHeEIsTUFBTSxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmVmcmVzaGFibGUgU3RyZWFtXG4gKlxuICogSGVscGVyIGBjcmVhdGVSZWZyZXNoYWJsZVN0cmVhbWAgcGFyYSB2aXN0YXMgY29uIGRhdG9zIEZpcmVzdG9yZS5cbiAqIFNvcG9ydGEgbW9kbyBvbmUtc2hvdCB5IHJlYWwtdGltZSwgY29uIGdhdGUgZGUgYGZpcmViYXNlQXV0aFJlYWR5YC5cbiAqL1xuZXhwb3J0IHtcbiAgY3JlYXRlUmVmcmVzaGFibGVTdHJlYW0sXG4gIHR5cGUgUmVmcmVzaGFibGVTdHJlYW0sXG4gIHR5cGUgUmVmcmVzaGFibGVTdHJlYW1PcHRpb25zLFxufSBmcm9tICcuL3JlZnJlc2hhYmxlLXN0cmVhbSc7XG4iXX0=
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Refreshable Stream
3
+ *
4
+ * Helper estándar para vistas que consumen datos de Firestore. Soporta DOS
5
+ * modos — el caller decide cuál vía la `factory`:
6
+ *
7
+ * - **one-shot** (recomendado por defecto): `() => from(svc.getAllOnce())`.
8
+ * Carga una vez y completa. Más barato — sin listener vivo.
9
+ * - **real-time**: `() => svc.getAll()`. Listener Firestore que auto-actualiza.
10
+ * Solo donde importa (inbox de notificaciones, badges).
11
+ *
12
+ * En ambos modos la primera suscripción se gatea por `firebaseAuthReady`
13
+ * (sesión de Firebase Auth lista) — así el listener/lectura nunca se adjunta
14
+ * antes de que `request.auth` esté disponible en las reglas de Firestore, lo
15
+ * que cierra la ventana de `permission-denied` en cold start de PWA.
16
+ *
17
+ * El `retry` con backoff corto es solo red de seguridad para reconexiones
18
+ * transitorias (no para cubrir cold start — eso lo cubre el gate de auth).
19
+ */
20
+ import { inject, Injector } from '@angular/core';
21
+ import { toObservable, toSignal } from '@angular/core/rxjs-interop';
22
+ import { signal } from '@angular/core';
23
+ import { of, race, timer } from 'rxjs';
24
+ import { catchError, retry, switchMap, take, tap, timeout } from 'rxjs/operators';
25
+ import { FirebaseService } from '../firebase/firebase.service';
26
+ /**
27
+ * Crea un stream refrescable a partir de una factory de Observable.
28
+ *
29
+ * DEBE llamarse en un injection context (field initializer o constructor) —
30
+ * usa `toSignal`/`toObservable`/`inject` internamente.
31
+ *
32
+ * @param factory - Función que produce el Observable a consumir. El caller
33
+ * decide el modo: `() => from(svc.getAllOnce())` (one-shot) o
34
+ * `() => svc.getAll()` (real-time).
35
+ * @param options - Configuración opcional (fallback, retry, gate).
36
+ *
37
+ * @example
38
+ * ```typescript
39
+ * // one-shot (recomendado por defecto)
40
+ * private readonly stream = createRefreshableStream(
41
+ * () => from(this.svc.getAllOnce()),
42
+ * );
43
+ *
44
+ * // real-time (inbox)
45
+ * private readonly stream = createRefreshableStream(
46
+ * () => this.notifs.getAll(50),
47
+ * );
48
+ *
49
+ * readonly items = this.stream.data;
50
+ * readonly loading = this.stream.loading;
51
+ *
52
+ * ionViewWillEnter() {
53
+ * this.pageRefresh.register(() => this.stream.reload());
54
+ * }
55
+ * ```
56
+ */
57
+ export function createRefreshableStream(factory, options) {
58
+ const injector = options?.injector ?? inject(Injector);
59
+ const fallback = (options?.fallback ?? null);
60
+ const retryCount = options?.retryCount ?? 4;
61
+ const retryBaseDelayMs = options?.retryBaseDelayMs ?? 500;
62
+ const gateOnFirebaseAuth = options?.gateOnFirebaseAuth ?? true;
63
+ const authGateTimeoutMs = options?.authGateTimeoutMs ?? 20000;
64
+ const firstEmitTimeoutMs = options?.firstEmitTimeoutMs ?? 20000;
65
+ // FirebaseService es opcional — sin él (apps sin Firebase) no se gatea.
66
+ const firebase = gateOnFirebaseAuth ? injector.get(FirebaseService, null) : null;
67
+ const _reload = signal(0);
68
+ const _loading = signal(true);
69
+ const _error = signal(false);
70
+ // Gate de Firebase Auth: el stream no abre la primera suscripción hasta que
71
+ // la sesión esté confirmada. `race` con un `timer` de seguridad — si la
72
+ // sesión NUNCA se establece (token inválido, signInWithFirebase falló), el
73
+ // gate igual se libera tras `authGateTimeoutMs` y la factory procede: si no
74
+ // hay permiso terminará en estado `error`, jamás en skeleton infinito.
75
+ const authGate$ = firebase
76
+ ? race(firebase.firebaseAuthReady$, timer(authGateTimeoutMs)).pipe(take(1))
77
+ : of(true);
78
+ const data = toSignal(toObservable(_reload, { injector }).pipe(tap(() => {
79
+ _loading.set(true);
80
+ _error.set(false);
81
+ }),
82
+ // Esperar a Firebase Auth listo antes de cada (re)suscripción. Como
83
+ // `firebaseAuthReady$` completa tras la primera emisión, las reloads
84
+ // posteriores resuelven el gate de inmediato (auth ya está listo).
85
+ switchMap(() => authGate$.pipe(switchMap(() => factory().pipe(tap(() => {
86
+ _loading.set(false);
87
+ _error.set(false);
88
+ }),
89
+ // Backoff corto exponencial acotado — solo red de seguridad para
90
+ // reconexiones transitorias, NO para cubrir cold start.
91
+ retry({
92
+ count: retryCount,
93
+ delay: (_err, attempt) => timer(Math.min(retryBaseDelayMs * 2 ** (attempt - 1), 4000)),
94
+ }),
95
+ // Techo absoluto para la PRIMERA emisión. Si la factory no emite
96
+ // ni valor ni error (servicio nunca inicializado → `EMPTY` →
97
+ // silencio), `timeout` dispara un error → `catchError` → estado
98
+ // `error`. Nunca skeleton perpetuo. Va DESPUÉS de `retry` para
99
+ // que cuente el tiempo total, no por intento.
100
+ timeout({ first: firstEmitTimeoutMs }), catchError(() => {
101
+ _loading.set(false);
102
+ _error.set(true);
103
+ return of(fallback);
104
+ })))))), { initialValue: null, injector });
105
+ return {
106
+ data,
107
+ loading: _loading.asReadonly(),
108
+ error: _error.asReadonly(),
109
+ reload: () => _reload.update(n => n + 1),
110
+ };
111
+ }
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmcmVzaGFibGUtc3RyZWFtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9yZWZyZXNoYWJsZS1zdHJlYW0vcmVmcmVzaGFibGUtc3RyZWFtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQWdFL0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThCRztBQUNILE1BQU0sVUFBVSx1QkFBdUIsQ0FDckMsT0FBNEIsRUFDNUIsT0FBcUM7SUFFckMsTUFBTSxRQUFRLEdBQUcsT0FBTyxFQUFFLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxPQUFPLEVBQUUsUUFBUSxJQUFJLElBQUksQ0FBYSxDQUFDO0lBQ3pELE1BQU0sVUFBVSxHQUFHLE9BQU8sRUFBRSxVQUFVLElBQUksQ0FBQyxDQUFDO0lBQzVDLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxFQUFFLGdCQUFnQixJQUFJLEdBQUcsQ0FBQztJQUMxRCxNQUFNLGtCQUFrQixHQUFHLE9BQU8sRUFBRSxrQkFBa0IsSUFBSSxJQUFJLENBQUM7SUFDL0QsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLEVBQUUsaUJBQWlCLElBQUksS0FBSyxDQUFDO0lBQzlELE1BQU0sa0JBQWtCLEdBQUcsT0FBTyxFQUFFLGtCQUFrQixJQUFJLEtBQUssQ0FBQztJQUVoRSx3RUFBd0U7SUFDeEUsTUFBTSxRQUFRLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFFakYsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFCLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFN0IsNEVBQTRFO0lBQzVFLHdFQUF3RTtJQUN4RSwyRUFBMkU7SUFDM0UsNEVBQTRFO0lBQzVFLHVFQUF1RTtJQUN2RSxNQUFNLFNBQVMsR0FBd0IsUUFBUTtRQUM3QyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0UsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUViLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FDbkIsWUFBWSxDQUFDLE9BQU8sRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUN0QyxHQUFHLENBQUMsR0FBRyxFQUFFO1FBQ1AsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQixNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BCLENBQUMsQ0FBQztJQUNGLG9FQUFvRTtJQUNwRSxxRUFBcUU7SUFDckUsbUVBQW1FO0lBQ25FLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FDYixTQUFTLENBQUMsSUFBSSxDQUNaLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FDYixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQ1osR0FBRyxDQUFDLEdBQUcsRUFBRTtRQUNQLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQixDQUFDLENBQUM7SUFDRixpRUFBaUU7SUFDakUsd0RBQXdEO0lBQ3hELEtBQUssQ0FBQztRQUNKLEtBQUssRUFBRSxVQUFVO1FBQ2pCLEtBQUssRUFBRSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUN2QixLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDL0QsQ0FBQztJQUNGLGlFQUFpRTtJQUNqRSw2REFBNkQ7SUFDN0QsZ0VBQWdFO0lBQ2hFLCtEQUErRDtJQUMvRCw4Q0FBOEM7SUFDOUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFLENBQUMsRUFDdEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQixPQUFPLEVBQUUsQ0FBQyxRQUFhLENBQUMsQ0FBQztJQUMzQixDQUFDLENBQUMsQ0FDSCxDQUNGLENBQ0YsQ0FDRixDQUNGLEVBQ0QsRUFBRSxZQUFZLEVBQUUsSUFBZ0IsRUFBRSxRQUFRLEVBQUUsQ0FDN0MsQ0FBQztJQUVGLE9BQU87UUFDTCxJQUFJO1FBQ0osT0FBTyxFQUFFLFFBQVEsQ0FBQyxVQUFVLEVBQUU7UUFDOUIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxVQUFVLEVBQUU7UUFDMUIsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ3pDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSZWZyZXNoYWJsZSBTdHJlYW1cbiAqXG4gKiBIZWxwZXIgZXN0w6FuZGFyIHBhcmEgdmlzdGFzIHF1ZSBjb25zdW1lbiBkYXRvcyBkZSBGaXJlc3RvcmUuIFNvcG9ydGEgRE9TXG4gKiBtb2RvcyDigJQgZWwgY2FsbGVyIGRlY2lkZSBjdcOhbCB2w61hIGxhIGBmYWN0b3J5YDpcbiAqXG4gKiAgLSAqKm9uZS1zaG90KiogKHJlY29tZW5kYWRvIHBvciBkZWZlY3RvKTogYCgpID0+IGZyb20oc3ZjLmdldEFsbE9uY2UoKSlgLlxuICogICAgQ2FyZ2EgdW5hIHZleiB5IGNvbXBsZXRhLiBNw6FzIGJhcmF0byDigJQgc2luIGxpc3RlbmVyIHZpdm8uXG4gKiAgLSAqKnJlYWwtdGltZSoqOiBgKCkgPT4gc3ZjLmdldEFsbCgpYC4gTGlzdGVuZXIgRmlyZXN0b3JlIHF1ZSBhdXRvLWFjdHVhbGl6YS5cbiAqICAgIFNvbG8gZG9uZGUgaW1wb3J0YSAoaW5ib3ggZGUgbm90aWZpY2FjaW9uZXMsIGJhZGdlcykuXG4gKlxuICogRW4gYW1ib3MgbW9kb3MgbGEgcHJpbWVyYSBzdXNjcmlwY2nDs24gc2UgZ2F0ZWEgcG9yIGBmaXJlYmFzZUF1dGhSZWFkeWBcbiAqIChzZXNpw7NuIGRlIEZpcmViYXNlIEF1dGggbGlzdGEpIOKAlCBhc8OtIGVsIGxpc3RlbmVyL2xlY3R1cmEgbnVuY2Egc2UgYWRqdW50YVxuICogYW50ZXMgZGUgcXVlIGByZXF1ZXN0LmF1dGhgIGVzdMOpIGRpc3BvbmlibGUgZW4gbGFzIHJlZ2xhcyBkZSBGaXJlc3RvcmUsIGxvXG4gKiBxdWUgY2llcnJhIGxhIHZlbnRhbmEgZGUgYHBlcm1pc3Npb24tZGVuaWVkYCBlbiBjb2xkIHN0YXJ0IGRlIFBXQS5cbiAqXG4gKiBFbCBgcmV0cnlgIGNvbiBiYWNrb2ZmIGNvcnRvIGVzIHNvbG8gcmVkIGRlIHNlZ3VyaWRhZCBwYXJhIHJlY29uZXhpb25lc1xuICogdHJhbnNpdG9yaWFzIChubyBwYXJhIGN1YnJpciBjb2xkIHN0YXJ0IOKAlCBlc28gbG8gY3VicmUgZWwgZ2F0ZSBkZSBhdXRoKS5cbiAqL1xuXG5pbXBvcnQgeyBpbmplY3QsIEluamVjdG9yLCBTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCByYWNlLCB0aW1lciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgcmV0cnksIHN3aXRjaE1hcCwgdGFrZSwgdGFwLCB0aW1lb3V0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBGaXJlYmFzZVNlcnZpY2UgfSBmcm9tICcuLi9maXJlYmFzZS9maXJlYmFzZS5zZXJ2aWNlJztcblxuLyoqIE9wY2lvbmVzIGRlIGNvbmZpZ3VyYWNpw7NuIHBhcmEgYGNyZWF0ZVJlZnJlc2hhYmxlU3RyZWFtYC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVmcmVzaGFibGVTdHJlYW1PcHRpb25zPFQ+IHtcbiAgLyoqXG4gICAqIFZhbG9yIGVtaXRpZG8gY3VhbmRvIGxhIGZhY3RvcnkgZmFsbGEgdHJhcyBhZ290YXIgbG9zIHJlaW50ZW50b3MuXG4gICAqIERlZmF1bHQ6IGBudWxsYC5cbiAgICovXG4gIGZhbGxiYWNrPzogVDtcbiAgLyoqXG4gICAqIE7Dum1lcm8gbcOheGltbyBkZSByZWludGVudG9zIGFudGUgdW4gZXJyb3IgZGUgbGEgZmFjdG9yeS5cbiAgICogQmFja29mZiBjb3J0byDigJQgTk8gY3VicmUgY29sZCBzdGFydCAoZXNvIGxvIGhhY2UgZWwgZ2F0ZSBkZSBhdXRoKSwgc29sb1xuICAgKiByZWNvbmV4aW9uZXMgdHJhbnNpdG9yaWFzLiBEZWZhdWx0OiA0LlxuICAgKi9cbiAgcmV0cnlDb3VudD86IG51bWJlcjtcbiAgLyoqXG4gICAqIERlbGF5IGJhc2UgZGVsIGJhY2tvZmYgKG1zKS4gRWwgZGVsYXkgZWZlY3Rpdm8gY3JlY2UgZXhwb25lbmNpYWxtZW50ZVxuICAgKiBhY290YWRvOiA1MDBtcyDihpIgMXMg4oaSIDJzIC4uLiBEZWZhdWx0OiA1MDAuXG4gICAqL1xuICByZXRyeUJhc2VEZWxheU1zPzogbnVtYmVyO1xuICAvKipcbiAgICogU2kgYGZhbHNlYCwgTk8gZXNwZXJhIGEgYGZpcmViYXNlQXV0aFJlYWR5YCBhbnRlcyBkZSBsYSBwcmltZXJhXG4gICAqIHN1c2NyaXBjacOzbi4gw5p0aWwgcGFyYSBzdHJlYW1zIHF1ZSBubyBsZWVuIEZpcmVzdG9yZS4gRGVmYXVsdDogYHRydWVgLlxuICAgKi9cbiAgZ2F0ZU9uRmlyZWJhc2VBdXRoPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRpbWVvdXQgKG1zKSBkZWwgZ2F0ZSBkZSBGaXJlYmFzZSBBdXRoLiBTaSBsYSBzZXNpw7NuIGRlIEZpcmViYXNlIEF1dGggbm9cbiAgICogc2UgZXN0YWJsZWNlIGVuIGVzdGUgdGllbXBvLCBlbCBzdHJlYW0gcHJvY2VkZSBpZ3VhbCAobGEgZmFjdG9yeSBjb3JyZXLDoVxuICAgKiB5LCBzaSBubyBoYXkgcGVybWlzbywgdGVybWluYXLDoSBlbiBlc3RhZG8gYGVycm9yYCDigJQgTlVOQ0EgZW4gc2tlbGV0b25cbiAgICogaW5maW5pdG8pLiBNdXkgcG9yIGVuY2ltYSBkZSBjdWFscXVpZXIgaGFuZHNoYWtlIHJlYWwuIERlZmF1bHQ6IDIwMDAwLlxuICAgKi9cbiAgYXV0aEdhdGVUaW1lb3V0TXM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaW1lb3V0IChtcykgZGUgbGEgUFJJTUVSQSBlbWlzacOzbiBkZSBsYSBmYWN0b3J5LiBTaSBsYSBmYWN0b3J5IG5vIGVtaXRlXG4gICAqIG5pIHVuIHZhbG9yIG5pIHVuIGVycm9yIGVuIGVzdGUgdGllbXBvIChjYXNvIHTDrXBpY286IHVuIHNlcnZpY2lvIEZpcmVzdG9yZVxuICAgKiBxdWUgbnVuY2Egc2UgaW5pY2lhbGl6w7Mg4oaSIGBFTVBUWWAg4oaSIHNpbGVuY2lvIHRvdGFsKSwgZWwgc3RyZWFtIHBhc2EgYVxuICAgKiBlc3RhZG8gYGVycm9yYCBlbiB2ZXogZGUgcXVlZGFyc2UgZW4gc2tlbGV0b24gcGVycGV0dW8uIERlZmF1bHQ6IDIwMDAwLlxuICAgKi9cbiAgZmlyc3RFbWl0VGltZW91dE1zPzogbnVtYmVyO1xuICAvKipcbiAgICogSW5qZWN0b3IgZXhwbMOtY2l0by4gU29sbyBuZWNlc2FyaW8gc2kgYGNyZWF0ZVJlZnJlc2hhYmxlU3RyZWFtYCBzZSBsbGFtYVxuICAgKiBmdWVyYSBkZSB1biBpbmplY3Rpb24gY29udGV4dCAocmFybykuIFBvciBkZWZlY3RvIHVzYSBgaW5qZWN0KEluamVjdG9yKWAuXG4gICAqL1xuICBpbmplY3Rvcj86IEluamVjdG9yO1xufVxuXG4vKipcbiAqIFJlc3VsdGFkbyBkZSBgY3JlYXRlUmVmcmVzaGFibGVTdHJlYW1gLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZnJlc2hhYmxlU3RyZWFtPFQ+IHtcbiAgLyoqIERhdG9zIGFjdHVhbGVzLiBgbnVsbGAgbWllbnRyYXMgbGEgcHJpbWVyYSBlbWlzacOzbiBubyBoYSBsbGVnYWRvLiAqL1xuICByZWFkb25seSBkYXRhOiBTaWduYWw8VCB8IG51bGw+O1xuICAvKiogYHRydWVgIG1pZW50cmFzIHNlIGVzcGVyYSBsYSBwcmltZXJhIGVtaXNpw7NuIGRlIGxhIHN1c2NyaXBjacOzbiBhY3R1YWwuICovXG4gIHJlYWRvbmx5IGxvYWRpbmc6IFNpZ25hbDxib29sZWFuPjtcbiAgLyoqIGB0cnVlYCBzaSBsYSBmYWN0b3J5IGZhbGzDsyB0cmFzIGFnb3RhciBsb3MgcmVpbnRlbnRvcy4gKi9cbiAgcmVhZG9ubHkgZXJyb3I6IFNpZ25hbDxib29sZWFuPjtcbiAgLyoqXG4gICAqIFJlLXN1c2NyaWJlIGxhIGZhY3RvcnkgZGVzZGUgY2VybyAobnVldm8gbGlzdGVuZXIgLyBudWV2YSBsZWN0dXJhKS5cbiAgICogRXMgbG8gcXVlIHJlZ2lzdHJhIGVsIGBQYWdlUmVmcmVzaFNlcnZpY2VgIGNvbW8gaGFuZGxlciBkZSBwdWxsLXRvLXJlZnJlc2gsXG4gICAqIHkgdGFtYmnDqW4gZWwgXCJyZWNvbmVjdGFyIG1hbnVhbFwiIHNpIHVuIGxpc3RlbmVyIG11cmnDsy5cbiAgICovXG4gIHJlbG9hZDogKCkgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBDcmVhIHVuIHN0cmVhbSByZWZyZXNjYWJsZSBhIHBhcnRpciBkZSB1bmEgZmFjdG9yeSBkZSBPYnNlcnZhYmxlLlxuICpcbiAqIERFQkUgbGxhbWFyc2UgZW4gdW4gaW5qZWN0aW9uIGNvbnRleHQgKGZpZWxkIGluaXRpYWxpemVyIG8gY29uc3RydWN0b3IpIOKAlFxuICogdXNhIGB0b1NpZ25hbGAvYHRvT2JzZXJ2YWJsZWAvYGluamVjdGAgaW50ZXJuYW1lbnRlLlxuICpcbiAqIEBwYXJhbSBmYWN0b3J5IC0gRnVuY2nDs24gcXVlIHByb2R1Y2UgZWwgT2JzZXJ2YWJsZSBhIGNvbnN1bWlyLiBFbCBjYWxsZXJcbiAqICAgZGVjaWRlIGVsIG1vZG86IGAoKSA9PiBmcm9tKHN2Yy5nZXRBbGxPbmNlKCkpYCAob25lLXNob3QpIG9cbiAqICAgYCgpID0+IHN2Yy5nZXRBbGwoKWAgKHJlYWwtdGltZSkuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIENvbmZpZ3VyYWNpw7NuIG9wY2lvbmFsIChmYWxsYmFjaywgcmV0cnksIGdhdGUpLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBvbmUtc2hvdCAocmVjb21lbmRhZG8gcG9yIGRlZmVjdG8pXG4gKiBwcml2YXRlIHJlYWRvbmx5IHN0cmVhbSA9IGNyZWF0ZVJlZnJlc2hhYmxlU3RyZWFtKFxuICogICAoKSA9PiBmcm9tKHRoaXMuc3ZjLmdldEFsbE9uY2UoKSksXG4gKiApO1xuICpcbiAqIC8vIHJlYWwtdGltZSAoaW5ib3gpXG4gKiBwcml2YXRlIHJlYWRvbmx5IHN0cmVhbSA9IGNyZWF0ZVJlZnJlc2hhYmxlU3RyZWFtKFxuICogICAoKSA9PiB0aGlzLm5vdGlmcy5nZXRBbGwoNTApLFxuICogKTtcbiAqXG4gKiByZWFkb25seSBpdGVtcyA9IHRoaXMuc3RyZWFtLmRhdGE7XG4gKiByZWFkb25seSBsb2FkaW5nID0gdGhpcy5zdHJlYW0ubG9hZGluZztcbiAqXG4gKiBpb25WaWV3V2lsbEVudGVyKCkge1xuICogICB0aGlzLnBhZ2VSZWZyZXNoLnJlZ2lzdGVyKCgpID0+IHRoaXMuc3RyZWFtLnJlbG9hZCgpKTtcbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVmcmVzaGFibGVTdHJlYW08VD4oXG4gIGZhY3Rvcnk6ICgpID0+IE9ic2VydmFibGU8VD4sXG4gIG9wdGlvbnM/OiBSZWZyZXNoYWJsZVN0cmVhbU9wdGlvbnM8VD5cbik6IFJlZnJlc2hhYmxlU3RyZWFtPFQ+IHtcbiAgY29uc3QgaW5qZWN0b3IgPSBvcHRpb25zPy5pbmplY3RvciA/PyBpbmplY3QoSW5qZWN0b3IpO1xuICBjb25zdCBmYWxsYmFjayA9IChvcHRpb25zPy5mYWxsYmFjayA/PyBudWxsKSBhcyBUIHwgbnVsbDtcbiAgY29uc3QgcmV0cnlDb3VudCA9IG9wdGlvbnM/LnJldHJ5Q291bnQgPz8gNDtcbiAgY29uc3QgcmV0cnlCYXNlRGVsYXlNcyA9IG9wdGlvbnM/LnJldHJ5QmFzZURlbGF5TXMgPz8gNTAwO1xuICBjb25zdCBnYXRlT25GaXJlYmFzZUF1dGggPSBvcHRpb25zPy5nYXRlT25GaXJlYmFzZUF1dGggPz8gdHJ1ZTtcbiAgY29uc3QgYXV0aEdhdGVUaW1lb3V0TXMgPSBvcHRpb25zPy5hdXRoR2F0ZVRpbWVvdXRNcyA/PyAyMDAwMDtcbiAgY29uc3QgZmlyc3RFbWl0VGltZW91dE1zID0gb3B0aW9ucz8uZmlyc3RFbWl0VGltZW91dE1zID8/IDIwMDAwO1xuXG4gIC8vIEZpcmViYXNlU2VydmljZSBlcyBvcGNpb25hbCDigJQgc2luIMOpbCAoYXBwcyBzaW4gRmlyZWJhc2UpIG5vIHNlIGdhdGVhLlxuICBjb25zdCBmaXJlYmFzZSA9IGdhdGVPbkZpcmViYXNlQXV0aCA/IGluamVjdG9yLmdldChGaXJlYmFzZVNlcnZpY2UsIG51bGwpIDogbnVsbDtcblxuICBjb25zdCBfcmVsb2FkID0gc2lnbmFsKDApO1xuICBjb25zdCBfbG9hZGluZyA9IHNpZ25hbCh0cnVlKTtcbiAgY29uc3QgX2Vycm9yID0gc2lnbmFsKGZhbHNlKTtcblxuICAvLyBHYXRlIGRlIEZpcmViYXNlIEF1dGg6IGVsIHN0cmVhbSBubyBhYnJlIGxhIHByaW1lcmEgc3VzY3JpcGNpw7NuIGhhc3RhIHF1ZVxuICAvLyBsYSBzZXNpw7NuIGVzdMOpIGNvbmZpcm1hZGEuIGByYWNlYCBjb24gdW4gYHRpbWVyYCBkZSBzZWd1cmlkYWQg4oCUIHNpIGxhXG4gIC8vIHNlc2nDs24gTlVOQ0Egc2UgZXN0YWJsZWNlICh0b2tlbiBpbnbDoWxpZG8sIHNpZ25JbldpdGhGaXJlYmFzZSBmYWxsw7MpLCBlbFxuICAvLyBnYXRlIGlndWFsIHNlIGxpYmVyYSB0cmFzIGBhdXRoR2F0ZVRpbWVvdXRNc2AgeSBsYSBmYWN0b3J5IHByb2NlZGU6IHNpIG5vXG4gIC8vIGhheSBwZXJtaXNvIHRlcm1pbmFyw6EgZW4gZXN0YWRvIGBlcnJvcmAsIGphbcOhcyBlbiBza2VsZXRvbiBpbmZpbml0by5cbiAgY29uc3QgYXV0aEdhdGUkOiBPYnNlcnZhYmxlPHVua25vd24+ID0gZmlyZWJhc2VcbiAgICA/IHJhY2UoZmlyZWJhc2UuZmlyZWJhc2VBdXRoUmVhZHkkLCB0aW1lcihhdXRoR2F0ZVRpbWVvdXRNcykpLnBpcGUodGFrZSgxKSlcbiAgICA6IG9mKHRydWUpO1xuXG4gIGNvbnN0IGRhdGEgPSB0b1NpZ25hbChcbiAgICB0b09ic2VydmFibGUoX3JlbG9hZCwgeyBpbmplY3RvciB9KS5waXBlKFxuICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgX2xvYWRpbmcuc2V0KHRydWUpO1xuICAgICAgICBfZXJyb3Iuc2V0KGZhbHNlKTtcbiAgICAgIH0pLFxuICAgICAgLy8gRXNwZXJhciBhIEZpcmViYXNlIEF1dGggbGlzdG8gYW50ZXMgZGUgY2FkYSAocmUpc3VzY3JpcGNpw7NuLiBDb21vXG4gICAgICAvLyBgZmlyZWJhc2VBdXRoUmVhZHkkYCBjb21wbGV0YSB0cmFzIGxhIHByaW1lcmEgZW1pc2nDs24sIGxhcyByZWxvYWRzXG4gICAgICAvLyBwb3N0ZXJpb3JlcyByZXN1ZWx2ZW4gZWwgZ2F0ZSBkZSBpbm1lZGlhdG8gKGF1dGggeWEgZXN0w6EgbGlzdG8pLlxuICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgIGF1dGhHYXRlJC5waXBlKFxuICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgICAgICAgZmFjdG9yeSgpLnBpcGUoXG4gICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgX2xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICBfZXJyb3Iuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIC8vIEJhY2tvZmYgY29ydG8gZXhwb25lbmNpYWwgYWNvdGFkbyDigJQgc29sbyByZWQgZGUgc2VndXJpZGFkIHBhcmFcbiAgICAgICAgICAgICAgLy8gcmVjb25leGlvbmVzIHRyYW5zaXRvcmlhcywgTk8gcGFyYSBjdWJyaXIgY29sZCBzdGFydC5cbiAgICAgICAgICAgICAgcmV0cnkoe1xuICAgICAgICAgICAgICAgIGNvdW50OiByZXRyeUNvdW50LFxuICAgICAgICAgICAgICAgIGRlbGF5OiAoX2VyciwgYXR0ZW1wdCkgPT5cbiAgICAgICAgICAgICAgICAgIHRpbWVyKE1hdGgubWluKHJldHJ5QmFzZURlbGF5TXMgKiAyICoqIChhdHRlbXB0IC0gMSksIDQwMDApKSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIC8vIFRlY2hvIGFic29sdXRvIHBhcmEgbGEgUFJJTUVSQSBlbWlzacOzbi4gU2kgbGEgZmFjdG9yeSBubyBlbWl0ZVxuICAgICAgICAgICAgICAvLyBuaSB2YWxvciBuaSBlcnJvciAoc2VydmljaW8gbnVuY2EgaW5pY2lhbGl6YWRvIOKGkiBgRU1QVFlgIOKGklxuICAgICAgICAgICAgICAvLyBzaWxlbmNpbyksIGB0aW1lb3V0YCBkaXNwYXJhIHVuIGVycm9yIOKGkiBgY2F0Y2hFcnJvcmAg4oaSIGVzdGFkb1xuICAgICAgICAgICAgICAvLyBgZXJyb3JgLiBOdW5jYSBza2VsZXRvbiBwZXJwZXR1by4gVmEgREVTUFXDiVMgZGUgYHJldHJ5YCBwYXJhXG4gICAgICAgICAgICAgIC8vIHF1ZSBjdWVudGUgZWwgdGllbXBvIHRvdGFsLCBubyBwb3IgaW50ZW50by5cbiAgICAgICAgICAgICAgdGltZW91dCh7IGZpcnN0OiBmaXJzdEVtaXRUaW1lb3V0TXMgfSksXG4gICAgICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xuICAgICAgICAgICAgICAgIF9sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgICAgICAgX2Vycm9yLnNldCh0cnVlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gb2YoZmFsbGJhY2sgYXMgVCk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApXG4gICAgKSxcbiAgICB7IGluaXRpYWxWYWx1ZTogbnVsbCBhcyBUIHwgbnVsbCwgaW5qZWN0b3IgfVxuICApO1xuXG4gIHJldHVybiB7XG4gICAgZGF0YSxcbiAgICBsb2FkaW5nOiBfbG9hZGluZy5hc1JlYWRvbmx5KCksXG4gICAgZXJyb3I6IF9lcnJvci5hc1JlYWRvbmx5KCksXG4gICAgcmVsb2FkOiAoKSA9PiBfcmVsb2FkLnVwZGF0ZShuID0+IG4gKyAxKSxcbiAgfTtcbn1cbiJdfQ==