pdm-ui-kit 0.1.1 → 0.1.3

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 (378) hide show
  1. package/README.md +99 -50
  2. package/dist/corelusa-pdm-ui-kit/README.md +79 -0
  3. package/dist/corelusa-pdm-ui-kit/esm2020/corelusa-pdm-ui-kit.mjs +5 -0
  4. package/{fesm2015/pdm-ui-kit.mjs → dist/corelusa-pdm-ui-kit/fesm2015/corelusa-pdm-ui-kit.mjs} +1 -1
  5. package/dist/corelusa-pdm-ui-kit/fesm2015/corelusa-pdm-ui-kit.mjs.map +1 -0
  6. package/{fesm2020/pdm-ui-kit.mjs → dist/corelusa-pdm-ui-kit/fesm2020/corelusa-pdm-ui-kit.mjs} +1 -1
  7. package/dist/corelusa-pdm-ui-kit/fesm2020/corelusa-pdm-ui-kit.mjs.map +1 -0
  8. package/dist/corelusa-pdm-ui-kit/index.d.ts +5 -0
  9. package/dist/corelusa-pdm-ui-kit/package.json +47 -0
  10. package/dist/pdm-ui-kit/README.md +128 -0
  11. package/dist/pdm-ui-kit/esm2020/lib/components/accordion/accordion.component.mjs +42 -0
  12. package/dist/pdm-ui-kit/esm2020/lib/components/alert/alert.component.mjs +35 -0
  13. package/dist/pdm-ui-kit/esm2020/lib/components/alert-dialog/alert-dialog.component.mjs +69 -0
  14. package/dist/pdm-ui-kit/esm2020/lib/components/aspect-ratio/aspect-ratio.component.mjs +31 -0
  15. package/dist/pdm-ui-kit/esm2020/lib/components/avatar/avatar.component.mjs +46 -0
  16. package/dist/pdm-ui-kit/esm2020/lib/components/badge/badge.component.mjs +23 -0
  17. package/dist/pdm-ui-kit/esm2020/lib/components/breadcrumb/breadcrumb.component.mjs +29 -0
  18. package/dist/pdm-ui-kit/esm2020/lib/components/button/button.component.mjs +82 -0
  19. package/dist/pdm-ui-kit/esm2020/lib/components/button-group/button-group.component.mjs +23 -0
  20. package/dist/pdm-ui-kit/esm2020/lib/components/calendar/calendar.component.mjs +71 -0
  21. package/dist/pdm-ui-kit/esm2020/lib/components/card/card.component.mjs +65 -0
  22. package/dist/pdm-ui-kit/esm2020/lib/components/carousel/carousel.component.mjs +97 -0
  23. package/dist/pdm-ui-kit/esm2020/lib/components/chart/chart.component.mjs +174 -0
  24. package/dist/pdm-ui-kit/esm2020/lib/components/checkbox/checkbox.component.mjs +47 -0
  25. package/dist/pdm-ui-kit/esm2020/lib/components/collapsible/collapsible.component.mjs +43 -0
  26. package/dist/pdm-ui-kit/esm2020/lib/components/combobox/combobox.component.mjs +51 -0
  27. package/dist/pdm-ui-kit/esm2020/lib/components/command/command.component.mjs +75 -0
  28. package/dist/pdm-ui-kit/esm2020/lib/components/context-menu/context-menu.component.mjs +78 -0
  29. package/dist/pdm-ui-kit/esm2020/lib/components/data-table/data-table.component.mjs +89 -0
  30. package/dist/pdm-ui-kit/esm2020/lib/components/date-picker/date-picker.component.mjs +63 -0
  31. package/dist/pdm-ui-kit/esm2020/lib/components/dialog/dialog.component.mjs +90 -0
  32. package/dist/pdm-ui-kit/esm2020/lib/components/drawer/drawer.component.mjs +72 -0
  33. package/dist/pdm-ui-kit/esm2020/lib/components/dropdown-menu/dropdown-menu.component.mjs +120 -0
  34. package/dist/pdm-ui-kit/esm2020/lib/components/empty/empty.component.mjs +58 -0
  35. package/dist/pdm-ui-kit/esm2020/lib/components/field/field.component.mjs +64 -0
  36. package/dist/pdm-ui-kit/esm2020/lib/components/hover-card/hover-card.component.mjs +44 -0
  37. package/dist/pdm-ui-kit/esm2020/lib/components/icon/icon.component.mjs +94 -0
  38. package/dist/pdm-ui-kit/esm2020/lib/components/input/input.component.mjs +65 -0
  39. package/dist/pdm-ui-kit/esm2020/lib/components/input-group/input-group.component.mjs +63 -0
  40. package/dist/pdm-ui-kit/esm2020/lib/components/input-otp/input-otp.component.mjs +140 -0
  41. package/dist/pdm-ui-kit/esm2020/lib/components/input-password/input-password.component.mjs +72 -0
  42. package/dist/pdm-ui-kit/esm2020/lib/components/item/item.component.mjs +23 -0
  43. package/dist/pdm-ui-kit/esm2020/lib/components/kbd/kbd.component.mjs +17 -0
  44. package/dist/pdm-ui-kit/esm2020/lib/components/label/label.component.mjs +23 -0
  45. package/dist/pdm-ui-kit/esm2020/lib/components/menubar/menubar.component.mjs +31 -0
  46. package/dist/pdm-ui-kit/esm2020/lib/components/native-select/native-select.component.mjs +42 -0
  47. package/dist/pdm-ui-kit/esm2020/lib/components/navigation-menu/navigation-menu.component.mjs +20 -0
  48. package/dist/pdm-ui-kit/esm2020/lib/components/pagination/pagination.component.mjs +47 -0
  49. package/dist/pdm-ui-kit/esm2020/lib/components/popover/popover.component.mjs +58 -0
  50. package/dist/pdm-ui-kit/esm2020/lib/components/progress/progress.component.mjs +33 -0
  51. package/dist/pdm-ui-kit/esm2020/lib/components/radio-group/radio-group.component.mjs +38 -0
  52. package/dist/pdm-ui-kit/esm2020/lib/components/scroll-area/scroll-area.component.mjs +20 -0
  53. package/dist/pdm-ui-kit/esm2020/lib/components/select/select.component.mjs +38 -0
  54. package/dist/pdm-ui-kit/esm2020/lib/components/separator/separator.component.mjs +26 -0
  55. package/dist/pdm-ui-kit/esm2020/lib/components/sheet/sheet.component.mjs +39 -0
  56. package/dist/pdm-ui-kit/esm2020/lib/components/sidebar/sidebar.component.mjs +20 -0
  57. package/dist/pdm-ui-kit/esm2020/lib/components/skeleton/skeleton.component.mjs +17 -0
  58. package/dist/pdm-ui-kit/esm2020/lib/components/slider/slider.component.mjs +46 -0
  59. package/dist/pdm-ui-kit/esm2020/lib/components/sonner/sonner.component.mjs +39 -0
  60. package/dist/pdm-ui-kit/esm2020/lib/components/spinner/spinner.component.mjs +20 -0
  61. package/dist/pdm-ui-kit/esm2020/lib/components/switch/switch.component.mjs +35 -0
  62. package/dist/pdm-ui-kit/esm2020/lib/components/table/table.component.mjs +17 -0
  63. package/dist/pdm-ui-kit/esm2020/lib/components/tabs/tabs.component.mjs +31 -0
  64. package/dist/pdm-ui-kit/esm2020/lib/components/textarea/textarea.component.mjs +59 -0
  65. package/dist/pdm-ui-kit/esm2020/lib/components/toggle/toggle.component.mjs +41 -0
  66. package/dist/pdm-ui-kit/esm2020/lib/components/toggle-group/toggle-group.component.mjs +31 -0
  67. package/dist/pdm-ui-kit/esm2020/lib/components/tooltip/tooltip.component.mjs +33 -0
  68. package/dist/pdm-ui-kit/esm2020/lib/pdm-ui-kit.module.mjs +245 -0
  69. package/dist/pdm-ui-kit/esm2020/public-api.mjs +59 -0
  70. package/dist/pdm-ui-kit/fesm2015/pdm-ui-kit.mjs +2980 -0
  71. package/dist/pdm-ui-kit/fesm2015/pdm-ui-kit.mjs.map +1 -0
  72. package/dist/pdm-ui-kit/fesm2020/pdm-ui-kit.mjs +2975 -0
  73. package/dist/pdm-ui-kit/fesm2020/pdm-ui-kit.mjs.map +1 -0
  74. package/dist/pdm-ui-kit/lib/components/accordion/accordion.component.d.ts +19 -0
  75. package/dist/pdm-ui-kit/lib/components/alert/alert.component.d.ts +13 -0
  76. package/dist/pdm-ui-kit/lib/components/alert-dialog/alert-dialog.component.d.ts +21 -0
  77. package/dist/pdm-ui-kit/lib/components/aspect-ratio/aspect-ratio.component.d.ts +10 -0
  78. package/dist/pdm-ui-kit/lib/components/avatar/avatar.component.d.ts +20 -0
  79. package/dist/pdm-ui-kit/lib/components/badge/badge.component.d.ts +9 -0
  80. package/dist/pdm-ui-kit/lib/components/breadcrumb/breadcrumb.component.d.ts +10 -0
  81. package/dist/pdm-ui-kit/lib/components/button/button.component.d.ts +24 -0
  82. package/dist/pdm-ui-kit/lib/components/button-group/button-group.component.d.ts +9 -0
  83. package/dist/pdm-ui-kit/lib/components/calendar/calendar.component.d.ts +28 -0
  84. package/dist/pdm-ui-kit/lib/components/card/card.component.d.ts +24 -0
  85. package/dist/pdm-ui-kit/lib/components/carousel/carousel.component.d.ts +25 -0
  86. package/dist/pdm-ui-kit/lib/components/chart/chart.component.d.ts +41 -0
  87. package/dist/pdm-ui-kit/lib/components/checkbox/checkbox.component.d.ts +17 -0
  88. package/dist/pdm-ui-kit/lib/components/collapsible/collapsible.component.d.ts +14 -0
  89. package/dist/pdm-ui-kit/lib/components/combobox/combobox.component.d.ts +18 -0
  90. package/dist/pdm-ui-kit/lib/components/command/command.component.d.ts +33 -0
  91. package/dist/pdm-ui-kit/lib/components/context-menu/context-menu.component.d.ts +26 -0
  92. package/dist/pdm-ui-kit/lib/components/data-table/data-table.component.d.ts +36 -0
  93. package/dist/pdm-ui-kit/lib/components/date-picker/date-picker.component.d.ts +23 -0
  94. package/dist/pdm-ui-kit/lib/components/dialog/dialog.component.d.ts +30 -0
  95. package/dist/pdm-ui-kit/lib/components/drawer/drawer.component.d.ts +27 -0
  96. package/dist/pdm-ui-kit/lib/components/dropdown-menu/dropdown-menu.component.d.ts +34 -0
  97. package/dist/pdm-ui-kit/lib/components/empty/empty.component.d.ts +19 -0
  98. package/dist/pdm-ui-kit/lib/components/field/field.component.d.ts +23 -0
  99. package/dist/pdm-ui-kit/lib/components/hover-card/hover-card.component.d.ts +14 -0
  100. package/dist/pdm-ui-kit/lib/components/icon/icon.component.d.ts +18 -0
  101. package/dist/pdm-ui-kit/lib/components/input/input.component.d.ts +23 -0
  102. package/dist/pdm-ui-kit/lib/components/input-group/input-group.component.d.ts +22 -0
  103. package/dist/pdm-ui-kit/lib/components/input-otp/input-otp.component.d.ts +26 -0
  104. package/dist/pdm-ui-kit/lib/components/input-password/input-password.component.d.ts +25 -0
  105. package/dist/pdm-ui-kit/lib/components/item/item.component.d.ts +8 -0
  106. package/dist/pdm-ui-kit/lib/components/kbd/kbd.component.d.ts +6 -0
  107. package/dist/pdm-ui-kit/lib/components/label/label.component.d.ts +8 -0
  108. package/dist/pdm-ui-kit/lib/components/menubar/menubar.component.d.ts +17 -0
  109. package/dist/pdm-ui-kit/lib/components/native-select/native-select.component.d.ts +20 -0
  110. package/dist/pdm-ui-kit/lib/components/navigation-menu/navigation-menu.component.d.ts +12 -0
  111. package/dist/pdm-ui-kit/lib/components/pagination/pagination.component.d.ts +13 -0
  112. package/dist/pdm-ui-kit/lib/components/popover/popover.component.d.ts +17 -0
  113. package/dist/pdm-ui-kit/lib/components/progress/progress.component.d.ts +10 -0
  114. package/dist/pdm-ui-kit/lib/components/radio-group/radio-group.component.d.ts +19 -0
  115. package/dist/pdm-ui-kit/lib/components/scroll-area/scroll-area.component.d.ts +7 -0
  116. package/dist/pdm-ui-kit/lib/components/select/select.component.d.ts +19 -0
  117. package/dist/pdm-ui-kit/lib/components/separator/separator.component.d.ts +9 -0
  118. package/dist/pdm-ui-kit/lib/components/sheet/sheet.component.d.ts +13 -0
  119. package/dist/pdm-ui-kit/lib/components/sidebar/sidebar.component.d.ts +7 -0
  120. package/dist/pdm-ui-kit/lib/components/skeleton/skeleton.component.d.ts +6 -0
  121. package/dist/pdm-ui-kit/lib/components/slider/slider.component.d.ts +15 -0
  122. package/dist/pdm-ui-kit/lib/components/sonner/sonner.component.d.ts +13 -0
  123. package/dist/pdm-ui-kit/lib/components/spinner/spinner.component.d.ts +7 -0
  124. package/dist/pdm-ui-kit/lib/components/switch/switch.component.d.ts +13 -0
  125. package/dist/pdm-ui-kit/lib/components/table/table.component.d.ts +6 -0
  126. package/dist/pdm-ui-kit/lib/components/tabs/tabs.component.d.ts +16 -0
  127. package/dist/pdm-ui-kit/lib/components/textarea/textarea.component.d.ts +21 -0
  128. package/dist/pdm-ui-kit/lib/components/toggle/toggle.component.d.ts +14 -0
  129. package/dist/pdm-ui-kit/lib/components/toggle-group/toggle-group.component.d.ts +16 -0
  130. package/dist/pdm-ui-kit/lib/components/tooltip/tooltip.component.d.ts +10 -0
  131. package/dist/pdm-ui-kit/lib/pdm-ui-kit.module.d.ts +64 -0
  132. package/dist/pdm-ui-kit/package.json +44 -0
  133. package/dist/pdm-ui-kit/public-api.d.ts +58 -0
  134. package/ng-package.json +8 -0
  135. package/package.json +13 -20
  136. package/pdm-ui-kit-0.1.1.tgz +0 -0
  137. package/pdm-ui-kit-0.1.2.tgz +0 -0
  138. package/pdm-ui-kit-0.1.3.tgz +0 -0
  139. package/src/lib/components/accordion/accordion.component.html +34 -0
  140. package/src/lib/components/accordion/accordion.component.ts +38 -0
  141. package/src/lib/components/alert/alert.component.html +52 -0
  142. package/src/lib/components/alert/alert.component.ts +25 -0
  143. package/src/lib/components/alert-dialog/alert-dialog.component.html +41 -0
  144. package/src/lib/components/alert-dialog/alert-dialog.component.ts +45 -0
  145. package/src/lib/components/aspect-ratio/aspect-ratio.component.html +11 -0
  146. package/src/lib/components/aspect-ratio/aspect-ratio.component.ts +18 -0
  147. package/src/lib/components/avatar/avatar.component.html +21 -0
  148. package/src/lib/components/avatar/avatar.component.ts +32 -0
  149. package/src/lib/components/badge/badge.component.html +28 -0
  150. package/src/lib/components/badge/badge.component.ts +23 -0
  151. package/src/lib/components/breadcrumb/breadcrumb.component.html +39 -0
  152. package/src/lib/components/breadcrumb/breadcrumb.component.ts +26 -0
  153. package/src/lib/components/button/button.component.html +15 -0
  154. package/src/lib/components/button/button.component.ts +84 -0
  155. package/src/lib/components/button-group/button-group.component.html +39 -0
  156. package/src/lib/components/button-group/button-group.component.ts +15 -0
  157. package/src/lib/components/calendar/calendar.component.html +73 -0
  158. package/src/lib/components/calendar/calendar.component.ts +78 -0
  159. package/src/lib/components/card/card.component.html +77 -0
  160. package/src/lib/components/card/card.component.ts +39 -0
  161. package/src/lib/components/carousel/carousel.component.html +86 -0
  162. package/src/lib/components/carousel/carousel.component.ts +100 -0
  163. package/src/lib/components/chart/chart.component.html +143 -0
  164. package/src/lib/components/chart/chart.component.ts +147 -0
  165. package/src/lib/components/checkbox/checkbox.component.html +38 -0
  166. package/src/lib/components/checkbox/checkbox.component.ts +32 -0
  167. package/src/lib/components/collapsible/collapsible.component.html +26 -0
  168. package/src/lib/components/collapsible/collapsible.component.ts +29 -0
  169. package/src/lib/components/combobox/combobox.component.html +42 -0
  170. package/src/lib/components/combobox/combobox.component.ts +32 -0
  171. package/src/lib/components/command/command.component.html +55 -0
  172. package/src/lib/components/command/command.component.ts +67 -0
  173. package/src/lib/components/context-menu/context-menu.component.html +47 -0
  174. package/src/lib/components/context-menu/context-menu.component.ts +67 -0
  175. package/src/lib/components/data-table/data-table.component.html +63 -0
  176. package/src/lib/components/data-table/data-table.component.ts +78 -0
  177. package/src/lib/components/date-picker/date-picker.component.html +38 -0
  178. package/src/lib/components/date-picker/date-picker.component.ts +38 -0
  179. package/src/lib/components/dialog/dialog.component.html +78 -0
  180. package/src/lib/components/dialog/dialog.component.ts +55 -0
  181. package/src/lib/components/drawer/drawer.component.html +56 -0
  182. package/src/lib/components/drawer/drawer.component.ts +43 -0
  183. package/src/lib/components/dropdown-menu/dropdown-menu.component.html +56 -0
  184. package/src/lib/components/dropdown-menu/dropdown-menu.component.ts +126 -0
  185. package/src/lib/components/empty/empty.component.html +29 -0
  186. package/src/lib/components/empty/empty.component.ts +35 -0
  187. package/src/lib/components/field/field.component.html +26 -0
  188. package/src/lib/components/field/field.component.ts +42 -0
  189. package/src/lib/components/hover-card/hover-card.component.html +24 -0
  190. package/src/lib/components/hover-card/hover-card.component.ts +36 -0
  191. package/src/lib/components/icon/icon.component.html +286 -0
  192. package/src/lib/components/icon/icon.component.ts +133 -0
  193. package/src/lib/components/input/input.component.html +25 -0
  194. package/src/lib/components/input/input.component.ts +33 -0
  195. package/src/lib/components/input-group/input-group.component.html +59 -0
  196. package/src/lib/components/input-group/input-group.component.ts +32 -0
  197. package/src/lib/components/input-otp/input-otp.component.html +25 -0
  198. package/src/lib/components/input-otp/input-otp.component.ts +146 -0
  199. package/src/lib/components/input-password/input-password.component.html +66 -0
  200. package/src/lib/components/input-password/input-password.component.ts +46 -0
  201. package/src/lib/components/item/item.component.html +10 -0
  202. package/src/lib/components/item/item.component.ts +12 -0
  203. package/src/lib/components/kbd/kbd.component.html +3 -0
  204. package/src/lib/components/kbd/kbd.component.ts +10 -0
  205. package/src/lib/components/label/label.component.html +7 -0
  206. package/src/lib/components/label/label.component.ts +12 -0
  207. package/src/lib/components/menubar/menubar.component.html +16 -0
  208. package/src/lib/components/menubar/menubar.component.ts +29 -0
  209. package/src/lib/components/native-select/native-select.component.html +17 -0
  210. package/src/lib/components/native-select/native-select.component.ts +28 -0
  211. package/src/lib/components/navigation-menu/navigation-menu.component.html +15 -0
  212. package/src/lib/components/navigation-menu/navigation-menu.component.ts +17 -0
  213. package/src/lib/components/pagination/pagination.component.html +30 -0
  214. package/src/lib/components/pagination/pagination.component.ts +37 -0
  215. package/src/lib/components/popover/popover.component.html +6 -0
  216. package/src/lib/components/popover/popover.component.ts +40 -0
  217. package/src/lib/components/progress/progress.component.html +9 -0
  218. package/src/lib/components/progress/progress.component.ts +20 -0
  219. package/src/lib/components/radio-group/radio-group.component.html +25 -0
  220. package/src/lib/components/radio-group/radio-group.component.ts +30 -0
  221. package/src/lib/components/scroll-area/scroll-area.component.html +5 -0
  222. package/src/lib/components/scroll-area/scroll-area.component.ts +11 -0
  223. package/src/lib/components/select/select.component.html +14 -0
  224. package/src/lib/components/select/select.component.ts +27 -0
  225. package/src/lib/components/separator/separator.component.html +5 -0
  226. package/src/lib/components/separator/separator.component.ts +16 -0
  227. package/src/lib/components/sheet/sheet.component.html +10 -0
  228. package/src/lib/components/sheet/sheet.component.ts +28 -0
  229. package/src/lib/components/sidebar/sidebar.component.html +3 -0
  230. package/src/lib/components/sidebar/sidebar.component.ts +11 -0
  231. package/src/lib/components/skeleton/skeleton.component.html +1 -0
  232. package/src/lib/components/skeleton/skeleton.component.ts +10 -0
  233. package/src/lib/components/slider/slider.component.html +15 -0
  234. package/src/lib/components/slider/slider.component.ts +31 -0
  235. package/src/lib/components/sonner/sonner.component.html +10 -0
  236. package/src/lib/components/sonner/sonner.component.ts +25 -0
  237. package/src/lib/components/spinner/spinner.component.html +6 -0
  238. package/src/lib/components/spinner/spinner.component.ts +11 -0
  239. package/src/lib/components/switch/switch.component.html +14 -0
  240. package/src/lib/components/switch/switch.component.ts +20 -0
  241. package/src/lib/components/table/table.component.html +5 -0
  242. package/src/lib/components/table/table.component.ts +10 -0
  243. package/src/lib/components/tabs/tabs.component.html +21 -0
  244. package/src/lib/components/tabs/tabs.component.ts +26 -0
  245. package/src/lib/components/textarea/textarea.component.html +21 -0
  246. package/src/lib/components/textarea/textarea.component.ts +28 -0
  247. package/src/lib/components/toggle/toggle.component.html +16 -0
  248. package/src/lib/components/toggle/toggle.component.ts +29 -0
  249. package/src/lib/components/toggle-group/toggle-group.component.html +17 -0
  250. package/src/lib/components/toggle-group/toggle-group.component.ts +26 -0
  251. package/src/lib/components/tooltip/tooltip.component.html +6 -0
  252. package/src/lib/components/tooltip/tooltip.component.ts +20 -0
  253. package/src/lib/pdm-ui-kit.module.ts +126 -0
  254. package/src/public-api.ts +58 -0
  255. package/tsconfig.json +30 -0
  256. package/tsconfig.lib.json +17 -0
  257. package/fesm2015/pdm-ui-kit.mjs.map +0 -1
  258. package/fesm2020/pdm-ui-kit.mjs.map +0 -1
  259. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/accordion/accordion.component.mjs +0 -0
  260. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/alert/alert.component.mjs +0 -0
  261. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/alert-dialog/alert-dialog.component.mjs +0 -0
  262. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/aspect-ratio/aspect-ratio.component.mjs +0 -0
  263. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/avatar/avatar.component.mjs +0 -0
  264. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/badge/badge.component.mjs +0 -0
  265. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/breadcrumb/breadcrumb.component.mjs +0 -0
  266. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/button/button.component.mjs +0 -0
  267. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/button-group/button-group.component.mjs +0 -0
  268. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/calendar/calendar.component.mjs +0 -0
  269. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/card/card.component.mjs +0 -0
  270. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/carousel/carousel.component.mjs +0 -0
  271. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/chart/chart.component.mjs +0 -0
  272. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/checkbox/checkbox.component.mjs +0 -0
  273. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/collapsible/collapsible.component.mjs +0 -0
  274. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/combobox/combobox.component.mjs +0 -0
  275. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/command/command.component.mjs +0 -0
  276. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/context-menu/context-menu.component.mjs +0 -0
  277. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/data-table/data-table.component.mjs +0 -0
  278. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/date-picker/date-picker.component.mjs +0 -0
  279. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/dialog/dialog.component.mjs +0 -0
  280. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/drawer/drawer.component.mjs +0 -0
  281. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/dropdown-menu/dropdown-menu.component.mjs +0 -0
  282. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/empty/empty.component.mjs +0 -0
  283. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/field/field.component.mjs +0 -0
  284. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/hover-card/hover-card.component.mjs +0 -0
  285. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/icon/icon.component.mjs +0 -0
  286. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/input/input.component.mjs +0 -0
  287. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/input-group/input-group.component.mjs +0 -0
  288. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/input-otp/input-otp.component.mjs +0 -0
  289. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/input-password/input-password.component.mjs +0 -0
  290. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/item/item.component.mjs +0 -0
  291. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/kbd/kbd.component.mjs +0 -0
  292. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/label/label.component.mjs +0 -0
  293. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/menubar/menubar.component.mjs +0 -0
  294. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/native-select/native-select.component.mjs +0 -0
  295. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/navigation-menu/navigation-menu.component.mjs +0 -0
  296. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/pagination/pagination.component.mjs +0 -0
  297. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/popover/popover.component.mjs +0 -0
  298. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/progress/progress.component.mjs +0 -0
  299. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/radio-group/radio-group.component.mjs +0 -0
  300. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/scroll-area/scroll-area.component.mjs +0 -0
  301. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/select/select.component.mjs +0 -0
  302. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/separator/separator.component.mjs +0 -0
  303. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/sheet/sheet.component.mjs +0 -0
  304. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/sidebar/sidebar.component.mjs +0 -0
  305. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/skeleton/skeleton.component.mjs +0 -0
  306. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/slider/slider.component.mjs +0 -0
  307. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/sonner/sonner.component.mjs +0 -0
  308. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/spinner/spinner.component.mjs +0 -0
  309. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/switch/switch.component.mjs +0 -0
  310. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/table/table.component.mjs +0 -0
  311. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/tabs/tabs.component.mjs +0 -0
  312. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/textarea/textarea.component.mjs +0 -0
  313. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/toggle/toggle.component.mjs +0 -0
  314. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/toggle-group/toggle-group.component.mjs +0 -0
  315. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/tooltip/tooltip.component.mjs +0 -0
  316. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/pdm-ui-kit.module.mjs +0 -0
  317. /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/public-api.mjs +0 -0
  318. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/accordion/accordion.component.d.ts +0 -0
  319. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/alert/alert.component.d.ts +0 -0
  320. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/alert-dialog/alert-dialog.component.d.ts +0 -0
  321. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/aspect-ratio/aspect-ratio.component.d.ts +0 -0
  322. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/avatar/avatar.component.d.ts +0 -0
  323. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/badge/badge.component.d.ts +0 -0
  324. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/breadcrumb/breadcrumb.component.d.ts +0 -0
  325. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/button/button.component.d.ts +0 -0
  326. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/button-group/button-group.component.d.ts +0 -0
  327. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/calendar/calendar.component.d.ts +0 -0
  328. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/card/card.component.d.ts +0 -0
  329. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/carousel/carousel.component.d.ts +0 -0
  330. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/chart/chart.component.d.ts +0 -0
  331. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/checkbox/checkbox.component.d.ts +0 -0
  332. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/collapsible/collapsible.component.d.ts +0 -0
  333. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/combobox/combobox.component.d.ts +0 -0
  334. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/command/command.component.d.ts +0 -0
  335. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/context-menu/context-menu.component.d.ts +0 -0
  336. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/data-table/data-table.component.d.ts +0 -0
  337. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/date-picker/date-picker.component.d.ts +0 -0
  338. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/dialog/dialog.component.d.ts +0 -0
  339. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/drawer/drawer.component.d.ts +0 -0
  340. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/dropdown-menu/dropdown-menu.component.d.ts +0 -0
  341. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/empty/empty.component.d.ts +0 -0
  342. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/field/field.component.d.ts +0 -0
  343. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/hover-card/hover-card.component.d.ts +0 -0
  344. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/icon/icon.component.d.ts +0 -0
  345. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/input/input.component.d.ts +0 -0
  346. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/input-group/input-group.component.d.ts +0 -0
  347. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/input-otp/input-otp.component.d.ts +0 -0
  348. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/input-password/input-password.component.d.ts +0 -0
  349. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/item/item.component.d.ts +0 -0
  350. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/kbd/kbd.component.d.ts +0 -0
  351. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/label/label.component.d.ts +0 -0
  352. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/menubar/menubar.component.d.ts +0 -0
  353. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/native-select/native-select.component.d.ts +0 -0
  354. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/navigation-menu/navigation-menu.component.d.ts +0 -0
  355. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/pagination/pagination.component.d.ts +0 -0
  356. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/popover/popover.component.d.ts +0 -0
  357. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/progress/progress.component.d.ts +0 -0
  358. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/radio-group/radio-group.component.d.ts +0 -0
  359. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/scroll-area/scroll-area.component.d.ts +0 -0
  360. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/select/select.component.d.ts +0 -0
  361. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/separator/separator.component.d.ts +0 -0
  362. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/sheet/sheet.component.d.ts +0 -0
  363. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/sidebar/sidebar.component.d.ts +0 -0
  364. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/skeleton/skeleton.component.d.ts +0 -0
  365. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/slider/slider.component.d.ts +0 -0
  366. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/sonner/sonner.component.d.ts +0 -0
  367. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/spinner/spinner.component.d.ts +0 -0
  368. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/switch/switch.component.d.ts +0 -0
  369. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/table/table.component.d.ts +0 -0
  370. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/tabs/tabs.component.d.ts +0 -0
  371. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/textarea/textarea.component.d.ts +0 -0
  372. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/toggle/toggle.component.d.ts +0 -0
  373. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/toggle-group/toggle-group.component.d.ts +0 -0
  374. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/tooltip/tooltip.component.d.ts +0 -0
  375. /package/{lib → dist/corelusa-pdm-ui-kit/lib}/pdm-ui-kit.module.d.ts +0 -0
  376. /package/{public-api.d.ts → dist/corelusa-pdm-ui-kit/public-api.d.ts} +0 -0
  377. /package/{esm2020 → dist/pdm-ui-kit/esm2020}/pdm-ui-kit.mjs +0 -0
  378. /package/{index.d.ts → dist/pdm-ui-kit/index.d.ts} +0 -0
@@ -0,0 +1,174 @@
1
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ export class PdmChartComponent {
5
+ constructor() {
6
+ this.type = 'bar';
7
+ this.className = '';
8
+ this.title = 'Bar Chart - Interactive';
9
+ this.description = 'Showing total visitors for the last 3 months';
10
+ this.desktopLabel = 'Desktop';
11
+ this.desktopValue = '24,828';
12
+ this.mobileLabel = 'Mobile';
13
+ this.mobileValue = '25,010';
14
+ this.labels = ['Apr 9', 'Apr 19', 'Apr 29', 'May 9', 'May 19', 'May 29', 'Jun 9', 'Jun 19', 'Jun 30'];
15
+ this.bars = [
16
+ 48, 21, 53, 69, 56, 77, 12, 54, 61, 59, 66, 27, 24, 27, 84, 62, 44, 18, 45, 57,
17
+ 45, 72, 56, 15, 73, 25, 59, 86, 49, 59, 69, 93, 96, 72, 30, 58, 75, 67, 43, 43,
18
+ 84, 89, 62, 96, 59, 72, 82, 34, 34, 70, 62, 42, 40, 80, 60, 33, 67, 34, 34, 88,
19
+ 22, 84, 19, 62, 56, 43, 95, 70, 67, 89, 84, 31, 18, 92, 16, 87, 54, 44, 91, 23,
20
+ 67, 77, 49, 59, 93, 26, 29, 81, 84, 30, 22, 84
21
+ ];
22
+ this.line = [40, 28, 56, 49, 73, 67, 81, 58, 92];
23
+ this.pie = [35, 28, 20, 17];
24
+ this.radar = [72, 58, 88, 64, 79, 70];
25
+ this.radialValue = 76;
26
+ this.radialLabel = 'Completion';
27
+ this.radialDescription = 'Updated monthly';
28
+ this.tooltipTitle = 'June 2024';
29
+ this.tooltipPrimaryLabel = 'Desktop';
30
+ this.tooltipPrimaryValue = '12,450';
31
+ this.tooltipSecondaryLabel = 'Mobile';
32
+ this.tooltipSecondaryValue = '8,110';
33
+ this.pieLabels = ['Desktop', 'Mobile', 'Tablet', 'Other'];
34
+ }
35
+ get normalizedBars() {
36
+ if (!this.bars.length) {
37
+ return [];
38
+ }
39
+ const max = Math.max(...this.bars);
40
+ if (max === 0) {
41
+ return this.bars.map(() => 0);
42
+ }
43
+ return this.bars.map((value) => Math.max(8, Math.round((value / max) * 183)));
44
+ }
45
+ get normalizedLine() {
46
+ if (!this.line.length) {
47
+ return [];
48
+ }
49
+ const max = Math.max(...this.line);
50
+ if (max === 0) {
51
+ return this.line.map(() => 170);
52
+ }
53
+ return this.line.map((value) => 180 - Math.round((value / max) * 150));
54
+ }
55
+ get linePath() {
56
+ const points = this.normalizedLine;
57
+ if (!points.length) {
58
+ return '';
59
+ }
60
+ const step = points.length > 1 ? 320 / (points.length - 1) : 0;
61
+ return points
62
+ .map((y, index) => `${index === 0 ? 'M' : 'L'} ${Math.round(index * step)} ${y}`)
63
+ .join(' ');
64
+ }
65
+ get areaPath() {
66
+ const linePath = this.linePath;
67
+ if (!linePath) {
68
+ return '';
69
+ }
70
+ return `${linePath} L 320 180 L 0 180 Z`;
71
+ }
72
+ get pieSegments() {
73
+ const total = this.pie.reduce((acc, value) => acc + Math.max(value, 0), 0);
74
+ if (total === 0) {
75
+ return [];
76
+ }
77
+ let offset = 0;
78
+ const colors = ['#0090ff', '#34d399', '#f59e0b', '#f43f5e'];
79
+ return this.pie.map((value, index) => {
80
+ const size = (Math.max(value, 0) / total) * 100;
81
+ const segment = {
82
+ color: colors[index % colors.length],
83
+ size,
84
+ offset,
85
+ label: this.pieLabels[index] ?? `Series ${index + 1}`
86
+ };
87
+ offset += size;
88
+ return segment;
89
+ });
90
+ }
91
+ get pieGradient() {
92
+ const segments = this.pieSegments;
93
+ if (!segments.length) {
94
+ return 'conic-gradient(#e5e5e5 0 100%)';
95
+ }
96
+ return `conic-gradient(${segments
97
+ .map((segment) => `${segment.color} ${segment.offset}% ${segment.offset + segment.size}%`)
98
+ .join(', ')})`;
99
+ }
100
+ get radarPoints() {
101
+ const values = this.radar.slice(0, 6);
102
+ if (!values.length) {
103
+ return '';
104
+ }
105
+ const max = Math.max(...values, 1);
106
+ const radius = 72;
107
+ const center = 80;
108
+ return values
109
+ .map((value, index) => {
110
+ const angle = ((Math.PI * 2) / values.length) * index - Math.PI / 2;
111
+ const valueRadius = (Math.max(value, 0) / max) * radius;
112
+ const x = center + Math.cos(angle) * valueRadius;
113
+ const y = center + Math.sin(angle) * valueRadius;
114
+ return `${x},${y}`;
115
+ })
116
+ .join(' ');
117
+ }
118
+ get radialStrokeOffset() {
119
+ const bounded = Math.max(0, Math.min(this.radialValue, 100));
120
+ const circumference = 2 * Math.PI * 42;
121
+ return circumference - (bounded / 100) * circumference;
122
+ }
123
+ }
124
+ PdmChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PdmChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
125
+ PdmChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PdmChartComponent, selector: "pdm-chart", inputs: { type: "type", className: "className", title: "title", description: "description", desktopLabel: "desktopLabel", desktopValue: "desktopValue", mobileLabel: "mobileLabel", mobileValue: "mobileValue", labels: "labels", bars: "bars", line: "line", pie: "pie", radar: "radar", radialValue: "radialValue", radialLabel: "radialLabel", radialDescription: "radialDescription", tooltipTitle: "tooltipTitle", tooltipPrimaryLabel: "tooltipPrimaryLabel", tooltipPrimaryValue: "tooltipPrimaryValue", tooltipSecondaryLabel: "tooltipSecondaryLabel", tooltipSecondaryValue: "tooltipSecondaryValue", pieLabels: "pieLabels" }, ngImport: i0, template: "<section [ngClass]=\"['w-full rounded-[14px] border border-[hsl(var(--border))] bg-[hsl(var(--card))] text-[hsl(var(--card-foreground))]', className]\">\n <div class=\"flex w-full items-stretch border-b border-[hsl(var(--border))]\">\n <div class=\"flex min-w-0 flex-1 flex-col gap-1 px-6 pb-3 pt-4\">\n <h3 class=\"m-0 text-sm font-semibold leading-5\">{{ title }}</h3>\n <p class=\"m-0 text-sm leading-5 text-[hsl(var(--muted-foreground))]\">{{ description }}</p>\n </div>\n\n <div class=\"flex h-[92px]\">\n <div class=\"flex h-full w-[171px] flex-col justify-center border-l border-[hsl(var(--border))] bg-[hsl(var(--muted))] px-6 py-4\">\n <span class=\"text-xs leading-4 text-[hsl(var(--muted-foreground))]\">{{ desktopLabel }}</span>\n <span class=\"mt-1 text-[28px] font-semibold leading-8\">{{ desktopValue }}</span>\n </div>\n <div class=\"flex h-full w-[171px] flex-col justify-center px-6 py-4\">\n <span class=\"text-xs leading-4 text-[hsl(var(--muted-foreground))]\">{{ mobileLabel }}</span>\n <span class=\"mt-1 text-[28px] font-semibold leading-8\">{{ mobileValue }}</span>\n </div>\n </div>\n </div>\n\n <div class=\"w-full p-6\">\n <ng-container [ngSwitch]=\"type\">\n <div *ngSwitchCase=\"'bar'\" class=\"flex h-[236px] w-full flex-col justify-end gap-2\">\n <div class=\"relative h-[183px] w-full overflow-hidden\">\n <div class=\"absolute bottom-0 left-0 right-0 border-t border-[hsl(var(--border))] opacity-50\"></div>\n <div class=\"absolute left-0 right-0 top-[54px] border-t border-[hsl(var(--border))] opacity-50\"></div>\n <div class=\"absolute left-0 right-0 top-[108px] border-t border-[hsl(var(--border))] opacity-50\"></div>\n <div class=\"absolute left-0 right-0 top-[162px] border-t border-[hsl(var(--border))] opacity-50\"></div>\n <div class=\"absolute inset-x-0 bottom-0 flex h-[183px] items-end gap-[2px] px-0.5\">\n <div *ngFor=\"let bar of normalizedBars\" class=\"w-[5px] rounded-[2px] bg-[hsl(var(--primary))]\" [style.height.px]=\"bar\"></div>\n </div>\n </div>\n <div class=\"flex h-4 w-full items-center justify-between gap-2\">\n <span *ngFor=\"let label of labels\" class=\"truncate text-xs leading-4 text-[hsl(var(--muted-foreground))]\">{{ label }}</span>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'line'\" class=\"flex h-[236px] w-full flex-col gap-2\">\n <svg viewBox=\"0 0 320 180\" class=\"h-[183px] w-full\">\n <line x1=\"0\" y1=\"180\" x2=\"320\" y2=\"180\" stroke=\"hsl(var(--border))\" stroke-width=\"1\"></line>\n <line x1=\"0\" y1=\"135\" x2=\"320\" y2=\"135\" stroke=\"hsl(var(--border))\" stroke-width=\"1\" opacity=\"0.5\"></line>\n <line x1=\"0\" y1=\"90\" x2=\"320\" y2=\"90\" stroke=\"hsl(var(--border))\" stroke-width=\"1\" opacity=\"0.5\"></line>\n <line x1=\"0\" y1=\"45\" x2=\"320\" y2=\"45\" stroke=\"hsl(var(--border))\" stroke-width=\"1\" opacity=\"0.5\"></line>\n <path [attr.d]=\"linePath\" fill=\"none\" stroke=\"hsl(var(--primary))\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n <div class=\"flex h-4 w-full items-center justify-between gap-2\">\n <span *ngFor=\"let label of labels\" class=\"truncate text-xs leading-4 text-[hsl(var(--muted-foreground))]\">{{ label }}</span>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'area'\" class=\"flex h-[236px] w-full flex-col gap-2\">\n <svg viewBox=\"0 0 320 180\" class=\"h-[183px] w-full\">\n <defs>\n <linearGradient id=\"pdm-chart-area-gradient\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stop-color=\"hsl(var(--primary))\" stop-opacity=\"0.35\"></stop>\n <stop offset=\"100%\" stop-color=\"hsl(var(--primary))\" stop-opacity=\"0.02\"></stop>\n </linearGradient>\n </defs>\n <line x1=\"0\" y1=\"180\" x2=\"320\" y2=\"180\" stroke=\"hsl(var(--border))\" stroke-width=\"1\"></line>\n <line x1=\"0\" y1=\"135\" x2=\"320\" y2=\"135\" stroke=\"hsl(var(--border))\" stroke-width=\"1\" opacity=\"0.5\"></line>\n <line x1=\"0\" y1=\"90\" x2=\"320\" y2=\"90\" stroke=\"hsl(var(--border))\" stroke-width=\"1\" opacity=\"0.5\"></line>\n <line x1=\"0\" y1=\"45\" x2=\"320\" y2=\"45\" stroke=\"hsl(var(--border))\" stroke-width=\"1\" opacity=\"0.5\"></line>\n <path [attr.d]=\"areaPath\" fill=\"url(#pdm-chart-area-gradient)\"></path>\n <path [attr.d]=\"linePath\" fill=\"none\" stroke=\"hsl(var(--primary))\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n <div class=\"flex h-4 w-full items-center justify-between gap-2\">\n <span *ngFor=\"let label of labels\" class=\"truncate text-xs leading-4 text-[hsl(var(--muted-foreground))]\">{{ label }}</span>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'pie'\" class=\"flex items-center gap-6\">\n <div class=\"relative h-40 w-40 rounded-full\" [style.background]=\"pieGradient\">\n <div class=\"absolute inset-7 rounded-full bg-[hsl(var(--card))]\"></div>\n </div>\n <div class=\"grid flex-1 gap-2\">\n <div *ngFor=\"let segment of pieSegments\" class=\"flex items-center justify-between rounded-md border border-[hsl(var(--border))] px-3 py-2\">\n <div class=\"flex items-center gap-2\">\n <span class=\"size-2.5 rounded-full\" [style.background]=\"segment.color\"></span>\n <span class=\"text-sm leading-5\">{{ segment.label }}</span>\n </div>\n <span class=\"text-sm font-medium leading-5\">{{ segment.size | number: '1.0-0' }}%</span>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'radar'\" class=\"flex items-center gap-6\">\n <svg viewBox=\"0 0 160 160\" class=\"h-44 w-44\">\n <polygon points=\"80,8 144,44 144,116 80,152 16,116 16,44\" fill=\"none\" stroke=\"hsl(var(--border))\"></polygon>\n <polygon points=\"80,28 126,54 126,106 80,132 34,106 34,54\" fill=\"none\" stroke=\"hsl(var(--border))\" opacity=\"0.75\"></polygon>\n <polygon points=\"80,48 109,64 109,96 80,112 51,96 51,64\" fill=\"none\" stroke=\"hsl(var(--border))\" opacity=\"0.55\"></polygon>\n <polygon [attr.points]=\"radarPoints\" fill=\"hsl(var(--primary))\" fill-opacity=\"0.22\" stroke=\"hsl(var(--primary))\" stroke-width=\"2\"></polygon>\n </svg>\n <div class=\"grid flex-1 gap-2\">\n <div *ngFor=\"let item of radar; index as i\" class=\"flex items-center justify-between rounded-md border border-[hsl(var(--border))] px-3 py-2 text-sm\">\n <span class=\"text-[hsl(var(--muted-foreground))]\">Metric {{ i + 1 }}</span>\n <span class=\"font-medium\">{{ item }}</span>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'radial'\" class=\"flex items-center justify-between gap-6\">\n <div class=\"relative flex size-44 items-center justify-center\">\n <svg viewBox=\"0 0 96 96\" class=\"size-40 -rotate-90\">\n <circle cx=\"48\" cy=\"48\" r=\"42\" fill=\"none\" stroke=\"hsl(var(--muted))\" stroke-width=\"10\"></circle>\n <circle\n cx=\"48\"\n cy=\"48\"\n r=\"42\"\n fill=\"none\"\n stroke=\"hsl(var(--primary))\"\n stroke-width=\"10\"\n stroke-linecap=\"round\"\n stroke-dasharray=\"263.89\"\n [attr.stroke-dashoffset]=\"radialStrokeOffset\"\n ></circle>\n </svg>\n <div class=\"absolute text-center\">\n <div class=\"text-[30px] font-semibold leading-9\">{{ radialValue }}%</div>\n <div class=\"text-xs text-[hsl(var(--muted-foreground))]\">{{ radialLabel }}</div>\n </div>\n </div>\n <div class=\"flex-1\">\n <p class=\"m-0 text-sm font-medium leading-5\">{{ radialLabel }}</p>\n <p class=\"m-0 mt-1 text-sm leading-5 text-[hsl(var(--muted-foreground))]\">{{ radialDescription }}</p>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'tooltips'\" class=\"grid gap-3\">\n <div class=\"inline-flex w-fit min-w-[220px] flex-col gap-2 rounded-lg border border-[hsl(var(--border))] bg-[hsl(var(--card))] p-3 shadow-sm\">\n <p class=\"m-0 text-xs font-medium leading-4 text-[hsl(var(--muted-foreground))]\">{{ tooltipTitle }}</p>\n <div class=\"flex items-center justify-between text-sm\">\n <span>{{ tooltipPrimaryLabel }}</span>\n <span class=\"font-semibold\">{{ tooltipPrimaryValue }}</span>\n </div>\n <div class=\"flex items-center justify-between text-sm\">\n <span>{{ tooltipSecondaryLabel }}</span>\n <span class=\"font-semibold\">{{ tooltipSecondaryValue }}</span>\n </div>\n </div>\n <p class=\"m-0 text-xs text-[hsl(var(--muted-foreground))]\">Tooltip style preparado para charts de l\u00EDnea, \u00E1rea y barras.</p>\n </div>\n </ng-container>\n </div>\n</section>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
126
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PdmChartComponent, decorators: [{
127
+ type: Component,
128
+ args: [{ selector: 'pdm-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<section [ngClass]=\"['w-full rounded-[14px] border border-[hsl(var(--border))] bg-[hsl(var(--card))] text-[hsl(var(--card-foreground))]', className]\">\n <div class=\"flex w-full items-stretch border-b border-[hsl(var(--border))]\">\n <div class=\"flex min-w-0 flex-1 flex-col gap-1 px-6 pb-3 pt-4\">\n <h3 class=\"m-0 text-sm font-semibold leading-5\">{{ title }}</h3>\n <p class=\"m-0 text-sm leading-5 text-[hsl(var(--muted-foreground))]\">{{ description }}</p>\n </div>\n\n <div class=\"flex h-[92px]\">\n <div class=\"flex h-full w-[171px] flex-col justify-center border-l border-[hsl(var(--border))] bg-[hsl(var(--muted))] px-6 py-4\">\n <span class=\"text-xs leading-4 text-[hsl(var(--muted-foreground))]\">{{ desktopLabel }}</span>\n <span class=\"mt-1 text-[28px] font-semibold leading-8\">{{ desktopValue }}</span>\n </div>\n <div class=\"flex h-full w-[171px] flex-col justify-center px-6 py-4\">\n <span class=\"text-xs leading-4 text-[hsl(var(--muted-foreground))]\">{{ mobileLabel }}</span>\n <span class=\"mt-1 text-[28px] font-semibold leading-8\">{{ mobileValue }}</span>\n </div>\n </div>\n </div>\n\n <div class=\"w-full p-6\">\n <ng-container [ngSwitch]=\"type\">\n <div *ngSwitchCase=\"'bar'\" class=\"flex h-[236px] w-full flex-col justify-end gap-2\">\n <div class=\"relative h-[183px] w-full overflow-hidden\">\n <div class=\"absolute bottom-0 left-0 right-0 border-t border-[hsl(var(--border))] opacity-50\"></div>\n <div class=\"absolute left-0 right-0 top-[54px] border-t border-[hsl(var(--border))] opacity-50\"></div>\n <div class=\"absolute left-0 right-0 top-[108px] border-t border-[hsl(var(--border))] opacity-50\"></div>\n <div class=\"absolute left-0 right-0 top-[162px] border-t border-[hsl(var(--border))] opacity-50\"></div>\n <div class=\"absolute inset-x-0 bottom-0 flex h-[183px] items-end gap-[2px] px-0.5\">\n <div *ngFor=\"let bar of normalizedBars\" class=\"w-[5px] rounded-[2px] bg-[hsl(var(--primary))]\" [style.height.px]=\"bar\"></div>\n </div>\n </div>\n <div class=\"flex h-4 w-full items-center justify-between gap-2\">\n <span *ngFor=\"let label of labels\" class=\"truncate text-xs leading-4 text-[hsl(var(--muted-foreground))]\">{{ label }}</span>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'line'\" class=\"flex h-[236px] w-full flex-col gap-2\">\n <svg viewBox=\"0 0 320 180\" class=\"h-[183px] w-full\">\n <line x1=\"0\" y1=\"180\" x2=\"320\" y2=\"180\" stroke=\"hsl(var(--border))\" stroke-width=\"1\"></line>\n <line x1=\"0\" y1=\"135\" x2=\"320\" y2=\"135\" stroke=\"hsl(var(--border))\" stroke-width=\"1\" opacity=\"0.5\"></line>\n <line x1=\"0\" y1=\"90\" x2=\"320\" y2=\"90\" stroke=\"hsl(var(--border))\" stroke-width=\"1\" opacity=\"0.5\"></line>\n <line x1=\"0\" y1=\"45\" x2=\"320\" y2=\"45\" stroke=\"hsl(var(--border))\" stroke-width=\"1\" opacity=\"0.5\"></line>\n <path [attr.d]=\"linePath\" fill=\"none\" stroke=\"hsl(var(--primary))\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n <div class=\"flex h-4 w-full items-center justify-between gap-2\">\n <span *ngFor=\"let label of labels\" class=\"truncate text-xs leading-4 text-[hsl(var(--muted-foreground))]\">{{ label }}</span>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'area'\" class=\"flex h-[236px] w-full flex-col gap-2\">\n <svg viewBox=\"0 0 320 180\" class=\"h-[183px] w-full\">\n <defs>\n <linearGradient id=\"pdm-chart-area-gradient\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stop-color=\"hsl(var(--primary))\" stop-opacity=\"0.35\"></stop>\n <stop offset=\"100%\" stop-color=\"hsl(var(--primary))\" stop-opacity=\"0.02\"></stop>\n </linearGradient>\n </defs>\n <line x1=\"0\" y1=\"180\" x2=\"320\" y2=\"180\" stroke=\"hsl(var(--border))\" stroke-width=\"1\"></line>\n <line x1=\"0\" y1=\"135\" x2=\"320\" y2=\"135\" stroke=\"hsl(var(--border))\" stroke-width=\"1\" opacity=\"0.5\"></line>\n <line x1=\"0\" y1=\"90\" x2=\"320\" y2=\"90\" stroke=\"hsl(var(--border))\" stroke-width=\"1\" opacity=\"0.5\"></line>\n <line x1=\"0\" y1=\"45\" x2=\"320\" y2=\"45\" stroke=\"hsl(var(--border))\" stroke-width=\"1\" opacity=\"0.5\"></line>\n <path [attr.d]=\"areaPath\" fill=\"url(#pdm-chart-area-gradient)\"></path>\n <path [attr.d]=\"linePath\" fill=\"none\" stroke=\"hsl(var(--primary))\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n <div class=\"flex h-4 w-full items-center justify-between gap-2\">\n <span *ngFor=\"let label of labels\" class=\"truncate text-xs leading-4 text-[hsl(var(--muted-foreground))]\">{{ label }}</span>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'pie'\" class=\"flex items-center gap-6\">\n <div class=\"relative h-40 w-40 rounded-full\" [style.background]=\"pieGradient\">\n <div class=\"absolute inset-7 rounded-full bg-[hsl(var(--card))]\"></div>\n </div>\n <div class=\"grid flex-1 gap-2\">\n <div *ngFor=\"let segment of pieSegments\" class=\"flex items-center justify-between rounded-md border border-[hsl(var(--border))] px-3 py-2\">\n <div class=\"flex items-center gap-2\">\n <span class=\"size-2.5 rounded-full\" [style.background]=\"segment.color\"></span>\n <span class=\"text-sm leading-5\">{{ segment.label }}</span>\n </div>\n <span class=\"text-sm font-medium leading-5\">{{ segment.size | number: '1.0-0' }}%</span>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'radar'\" class=\"flex items-center gap-6\">\n <svg viewBox=\"0 0 160 160\" class=\"h-44 w-44\">\n <polygon points=\"80,8 144,44 144,116 80,152 16,116 16,44\" fill=\"none\" stroke=\"hsl(var(--border))\"></polygon>\n <polygon points=\"80,28 126,54 126,106 80,132 34,106 34,54\" fill=\"none\" stroke=\"hsl(var(--border))\" opacity=\"0.75\"></polygon>\n <polygon points=\"80,48 109,64 109,96 80,112 51,96 51,64\" fill=\"none\" stroke=\"hsl(var(--border))\" opacity=\"0.55\"></polygon>\n <polygon [attr.points]=\"radarPoints\" fill=\"hsl(var(--primary))\" fill-opacity=\"0.22\" stroke=\"hsl(var(--primary))\" stroke-width=\"2\"></polygon>\n </svg>\n <div class=\"grid flex-1 gap-2\">\n <div *ngFor=\"let item of radar; index as i\" class=\"flex items-center justify-between rounded-md border border-[hsl(var(--border))] px-3 py-2 text-sm\">\n <span class=\"text-[hsl(var(--muted-foreground))]\">Metric {{ i + 1 }}</span>\n <span class=\"font-medium\">{{ item }}</span>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'radial'\" class=\"flex items-center justify-between gap-6\">\n <div class=\"relative flex size-44 items-center justify-center\">\n <svg viewBox=\"0 0 96 96\" class=\"size-40 -rotate-90\">\n <circle cx=\"48\" cy=\"48\" r=\"42\" fill=\"none\" stroke=\"hsl(var(--muted))\" stroke-width=\"10\"></circle>\n <circle\n cx=\"48\"\n cy=\"48\"\n r=\"42\"\n fill=\"none\"\n stroke=\"hsl(var(--primary))\"\n stroke-width=\"10\"\n stroke-linecap=\"round\"\n stroke-dasharray=\"263.89\"\n [attr.stroke-dashoffset]=\"radialStrokeOffset\"\n ></circle>\n </svg>\n <div class=\"absolute text-center\">\n <div class=\"text-[30px] font-semibold leading-9\">{{ radialValue }}%</div>\n <div class=\"text-xs text-[hsl(var(--muted-foreground))]\">{{ radialLabel }}</div>\n </div>\n </div>\n <div class=\"flex-1\">\n <p class=\"m-0 text-sm font-medium leading-5\">{{ radialLabel }}</p>\n <p class=\"m-0 mt-1 text-sm leading-5 text-[hsl(var(--muted-foreground))]\">{{ radialDescription }}</p>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'tooltips'\" class=\"grid gap-3\">\n <div class=\"inline-flex w-fit min-w-[220px] flex-col gap-2 rounded-lg border border-[hsl(var(--border))] bg-[hsl(var(--card))] p-3 shadow-sm\">\n <p class=\"m-0 text-xs font-medium leading-4 text-[hsl(var(--muted-foreground))]\">{{ tooltipTitle }}</p>\n <div class=\"flex items-center justify-between text-sm\">\n <span>{{ tooltipPrimaryLabel }}</span>\n <span class=\"font-semibold\">{{ tooltipPrimaryValue }}</span>\n </div>\n <div class=\"flex items-center justify-between text-sm\">\n <span>{{ tooltipSecondaryLabel }}</span>\n <span class=\"font-semibold\">{{ tooltipSecondaryValue }}</span>\n </div>\n </div>\n <p class=\"m-0 text-xs text-[hsl(var(--muted-foreground))]\">Tooltip style preparado para charts de l\u00EDnea, \u00E1rea y barras.</p>\n </div>\n </ng-container>\n </div>\n</section>\n" }]
129
+ }], propDecorators: { type: [{
130
+ type: Input
131
+ }], className: [{
132
+ type: Input
133
+ }], title: [{
134
+ type: Input
135
+ }], description: [{
136
+ type: Input
137
+ }], desktopLabel: [{
138
+ type: Input
139
+ }], desktopValue: [{
140
+ type: Input
141
+ }], mobileLabel: [{
142
+ type: Input
143
+ }], mobileValue: [{
144
+ type: Input
145
+ }], labels: [{
146
+ type: Input
147
+ }], bars: [{
148
+ type: Input
149
+ }], line: [{
150
+ type: Input
151
+ }], pie: [{
152
+ type: Input
153
+ }], radar: [{
154
+ type: Input
155
+ }], radialValue: [{
156
+ type: Input
157
+ }], radialLabel: [{
158
+ type: Input
159
+ }], radialDescription: [{
160
+ type: Input
161
+ }], tooltipTitle: [{
162
+ type: Input
163
+ }], tooltipPrimaryLabel: [{
164
+ type: Input
165
+ }], tooltipPrimaryValue: [{
166
+ type: Input
167
+ }], tooltipSecondaryLabel: [{
168
+ type: Input
169
+ }], tooltipSecondaryValue: [{
170
+ type: Input
171
+ }], pieLabels: [{
172
+ type: Input
173
+ }] } });
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2NoYXJ0L2NoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9jaGFydC9jaGFydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBUzFFLE1BQU0sT0FBTyxpQkFBaUI7SUFMOUI7UUFNVyxTQUFJLEdBQWlCLEtBQUssQ0FBQztRQUMzQixjQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ2YsVUFBSyxHQUFHLHlCQUF5QixDQUFDO1FBQ2xDLGdCQUFXLEdBQUcsOENBQThDLENBQUM7UUFFN0QsaUJBQVksR0FBRyxTQUFTLENBQUM7UUFDekIsaUJBQVksR0FBRyxRQUFRLENBQUM7UUFDeEIsZ0JBQVcsR0FBRyxRQUFRLENBQUM7UUFDdkIsZ0JBQVcsR0FBRyxRQUFRLENBQUM7UUFFdkIsV0FBTSxHQUFhLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUUzRyxTQUFJLEdBQWE7WUFDeEIsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7WUFDOUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7WUFDOUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7WUFDOUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7WUFDOUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO1NBQy9DLENBQUM7UUFDTyxTQUFJLEdBQWEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELFFBQUcsR0FBYSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pDLFVBQUssR0FBYSxDQUFD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LEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgdHlwZSBQZG1DaGFydFR5cGUgPSAnYXJlYScgfCAnYmFyJyB8ICdsaW5lJyB8ICdwaWUnIHwgJ3JhZGFyJyB8ICdyYWRpYWwnIHwgJ3Rvb2x0aXBzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRtLWNoYXJ0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXJ0LmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUGRtQ2hhcnRDb21wb25lbnQge1xuICBASW5wdXQoKSB0eXBlOiBQZG1DaGFydFR5cGUgPSAnYmFyJztcbiAgQElucHV0KCkgY2xhc3NOYW1lID0gJyc7XG4gIEBJbnB1dCgpIHRpdGxlID0gJ0JhciBDaGFydCAtIEludGVyYWN0aXZlJztcbiAgQElucHV0KCkgZGVzY3JpcHRpb24gPSAnU2hvd2luZyB0b3RhbCB2aXNpdG9ycyBmb3IgdGhlIGxhc3QgMyBtb250aHMnO1xuXG4gIEBJbnB1dCgpIGRlc2t0b3BMYWJlbCA9ICdEZXNrdG9wJztcbiAgQElucHV0KCkgZGVza3RvcFZhbHVlID0gJzI0LDgyOCc7XG4gIEBJbnB1dCgpIG1vYmlsZUxhYmVsID0gJ01vYmlsZSc7XG4gIEBJbnB1dCgpIG1vYmlsZVZhbHVlID0gJzI1LDAxMCc7XG5cbiAgQElucHV0KCkgbGFiZWxzOiBzdHJpbmdbXSA9IFsnQXByIDknLCAnQXByIDE5JywgJ0FwciAyOScsICdNYXkgOScsICdNYXkgMTknLCAnTWF5IDI5JywgJ0p1biA5JywgJ0p1biAxOScsICdKdW4gMzAnXTtcblxuICBASW5wdXQoKSBiYXJzOiBudW1iZXJbXSA9IFtcbiAgICA0OCwgMjEsIDUzLCA2OSwgNTYsIDc3LCAxMiwgNTQsIDYxLCA1OSwgNjYsIDI3LCAyNCwgMjcsIDg0LCA2MiwgNDQsIDE4LCA0NSwgNTcsXG4gICAgNDUsIDcyLCA1NiwgMTUsIDczLCAyNSwgNTksIDg2LCA0OSwgNTksIDY5LCA5MywgOTYsIDcyLCAzMCwgNTgsIDc1LCA2NywgNDMsIDQzLFxuICAgIDg0LCA4OSwgNjIsIDk2LCA1OSwgNzIsIDgyLCAzNCwgMzQsIDcwLCA2MiwgNDIsIDQwLCA4MCwgNjAsIDMzLCA2NywgMzQsIDM0LCA4OCxcbiAgICAyMiwgODQsIDE5LCA2MiwgNTYsIDQzLCA5NSwgNzAsIDY3LCA4OSwgODQsIDMxLCAxOCwgOTIsIDE2LCA4NywgNTQsIDQ0LCA5MSwgMjMsXG4gICAgNjcsIDc3LCA0OSwgNTksIDkzLCAyNiwgMjksIDgxLCA4NCwgMzAsIDIyLCA4NFxuICBdO1xuICBASW5wdXQoKSBsaW5lOiBudW1iZXJbXSA9IFs0MCwgMjgsIDU2LCA0OSwgNzMsIDY3LCA4MSwgNTgsIDkyXTtcbiAgQElucHV0KCkgcGllOiBudW1iZXJbXSA9IFszNSwgMjgsIDIwLCAxN107XG4gIEBJbnB1dCgpIHJhZGFyOiBudW1iZXJbXSA9IFs3MiwgNTgsIDg4LCA2NCwgNzksIDcwXTtcbiAgQElucHV0KCkgcmFkaWFsVmFsdWUgPSA3NjtcbiAgQElucHV0KCkgcmFkaWFsTGFiZWwgPSAnQ29tcGxldGlvbic7XG4gIEBJbnB1dCgpIHJhZGlhbERlc2NyaXB0aW9uID0gJ1VwZGF0ZWQgbW9udGhseSc7XG4gIEBJbnB1dCgpIHRvb2x0aXBUaXRsZSA9ICdKdW5lIDIwMjQnO1xuICBASW5wdXQoKSB0b29sdGlwUHJpbWFyeUxhYmVsID0gJ0Rlc2t0b3AnO1xuICBASW5wdXQoKSB0b29sdGlwUHJpbWFyeVZhbHVlID0gJzEyLDQ1MCc7XG4gIEBJbnB1dCgpIHRvb2x0aXBTZWNvbmRhcnlMYWJlbCA9ICdNb2JpbGUnO1xuICBASW5wdXQoKSB0b29sdGlwU2Vjb25kYXJ5VmFsdWUgPSAnOCwxMTAnO1xuICBASW5wdXQoKSBwaWVMYWJlbHM6IHN0cmluZ1tdID0gWydEZXNrdG9wJywgJ01vYmlsZScsICdUYWJsZXQnLCAnT3RoZXInXTtcblxuICBnZXQgbm9ybWFsaXplZEJhcnMoKTogbnVtYmVyW10ge1xuICAgIGlmICghdGhpcy5iYXJzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IG1heCA9IE1hdGgubWF4KC4uLnRoaXMuYmFycyk7XG4gICAgaWYgKG1heCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuYmFycy5tYXAoKCkgPT4gMCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYmFycy5tYXAoKHZhbHVlKSA9PiBNYXRoLm1heCg4LCBNYXRoLnJvdW5kKCh2YWx1ZSAvIG1heCkgKiAxODMpKSk7XG4gIH1cblxuICBnZXQgbm9ybWFsaXplZExpbmUoKTogbnVtYmVyW10ge1xuICAgIGlmICghdGhpcy5saW5lLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IG1heCA9IE1hdGgubWF4KC4uLnRoaXMubGluZSk7XG4gICAgaWYgKG1heCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMubGluZS5tYXAoKCkgPT4gMTcwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5saW5lLm1hcCgodmFsdWUpID0+IDE4MCAtIE1hdGgucm91bmQoKHZhbHVlIC8gbWF4KSAqIDE1MCkpO1xuICB9XG5cbiAgZ2V0IGxpbmVQYXRoKCk6IHN0cmluZyB7XG4gICAgY29uc3QgcG9pbnRzID0gdGhpcy5ub3JtYWxpemVkTGluZTtcbiAgICBpZiAoIXBvaW50cy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCBzdGVwID0gcG9pbnRzLmxlbmd0aCA+IDEgPyAzMjAgLyAocG9pbnRzLmxlbmd0aCAtIDEpIDogMDtcbiAgICByZXR1cm4gcG9pbnRzXG4gICAgICAubWFwKCh5LCBpbmRleCkgPT4gYCR7aW5kZXggPT09IDAgPyAnTScgOiAnTCd9ICR7TWF0aC5yb3VuZChpbmRleCAqIHN0ZXApfSAke3l9YClcbiAgICAgIC5qb2luKCcgJyk7XG4gIH1cblxuICBnZXQgYXJlYVBhdGgoKTogc3RyaW5nIHtcbiAgICBjb25zdCBsaW5lUGF0aCA9IHRoaXMubGluZVBhdGg7XG4gICAgaWYgKCFsaW5lUGF0aCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHJldHVybiBgJHtsaW5lUGF0aH0gTCAzMjAgMTgwIEwgMCAxODAgWmA7XG4gIH1cblxuICBnZXQgcGllU2VnbWVudHMoKTogeyBjb2xvcjogc3RyaW5nOyBzaXplOiBudW1iZXI7IG9mZnNldDogbnVtYmVyOyBsYWJlbDogc3RyaW5nIH1bXSB7XG4gICAgY29uc3QgdG90YWwgPSB0aGlzLnBpZS5yZWR1Y2UoKGFjYywgdmFsdWUpID0+IGFjYyArIE1hdGgubWF4KHZhbHVlLCAwKSwgMCk7XG4gICAgaWYgKHRvdGFsID09PSAwKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgbGV0IG9mZnNldCA9IDA7XG4gICAgY29uc3QgY29sb3JzID0gWycjMDA5MGZmJywgJyMzNGQzOTknLCAnI2Y1OWUwYicsICcjZjQzZjVlJ107XG4gICAgcmV0dXJuIHRoaXMucGllLm1hcCgodmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBzaXplID0gKE1hdGgubWF4KHZhbHVlLCAwKSAvIHRvdGFsKSAqIDEwMDtcbiAgICAgIGNvbnN0IHNlZ21lbnQgPSB7XG4gICAgICAgIGNvbG9yOiBjb2xvcnNbaW5kZXggJSBjb2xvcnMubGVuZ3RoXSxcbiAgICAgICAgc2l6ZSxcbiAgICAgICAgb2Zmc2V0LFxuICAgICAgICBsYWJlbDogdGhpcy5waWVMYWJlbHNbaW5kZXhdID8/IGBTZXJpZXMgJHtpbmRleCArIDF9YFxuICAgICAgfTtcbiAgICAgIG9mZnNldCArPSBzaXplO1xuICAgICAgcmV0dXJuIHNlZ21lbnQ7XG4gICAgfSk7XG4gIH1cblxuICBnZXQgcGllR3JhZGllbnQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzZWdtZW50cyA9IHRoaXMucGllU2VnbWVudHM7XG4gICAgaWYgKCFzZWdtZW50cy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiAnY29uaWMtZ3JhZGllbnQoI2U1ZTVlNSAwIDEwMCUpJztcbiAgICB9XG5cbiAgICByZXR1cm4gYGNvbmljLWdyYWRpZW50KCR7c2VnbWVudHNcbiAgICAgIC5tYXAoKHNlZ21lbnQpID0+IGAke3NlZ21lbnQuY29sb3J9ICR7c2VnbWVudC5vZmZzZXR9JSAke3NlZ21lbnQub2Zmc2V0ICsgc2VnbWVudC5zaXplfSVgKVxuICAgICAgLmpvaW4oJywgJyl9KWA7XG4gIH1cblxuICBnZXQgcmFkYXJQb2ludHMoKTogc3RyaW5nIHtcbiAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLnJhZGFyLnNsaWNlKDAsIDYpO1xuICAgIGlmICghdmFsdWVzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IG1heCA9IE1hdGgubWF4KC4uLnZhbHVlcywgMSk7XG4gICAgY29uc3QgcmFkaXVzID0gNzI7XG4gICAgY29uc3QgY2VudGVyID0gODA7XG4gICAgcmV0dXJuIHZhbHVlc1xuICAgICAgLm1hcCgodmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IGFuZ2xlID0gKChNYXRoLlBJICogMikgLyB2YWx1ZXMubGVuZ3RoKSAqIGluZGV4IC0gTWF0aC5QSSAvIDI7XG4gICAgICAgIGNvbnN0IHZhbHVlUmFkaXVzID0gKE1hdGgubWF4KHZhbHVlLCAwKSAvIG1heCkgKiByYWRpdXM7XG4gICAgICAgIGNvbnN0IHggPSBjZW50ZXIgKyBNYXRoLmNvcyhhbmdsZSkgKiB2YWx1ZVJhZGl1cztcbiAgICAgICAgY29uc3QgeSA9IGNlbnRlciArIE1hdGguc2luKGFuZ2xlKSAqIHZhbHVlUmFkaXVzO1xuICAgICAgICByZXR1cm4gYCR7eH0sJHt5fWA7XG4gICAgICB9KVxuICAgICAgLmpvaW4oJyAnKTtcbiAgfVxuXG4gIGdldCByYWRpYWxTdHJva2VPZmZzZXQoKTogbnVtYmVyIHtcbiAgICBjb25zdCBib3VuZGVkID0gTWF0aC5tYXgoMCwgTWF0aC5taW4odGhpcy5yYWRpYWxWYWx1ZSwgMTAwKSk7XG4gICAgY29uc3QgY2lyY3VtZmVyZW5jZSA9IDIgKiBNYXRoLlBJICogNDI7XG4gICAgcmV0dXJuIGNpcmN1bWZlcmVuY2UgLSAoYm91bmRlZCAvIDEwMCkgKiBjaXJjdW1mZXJlbmNlO1xuICB9XG59XG4iLCI8c2VjdGlvbiBbbmdDbGFzc109XCJbJ3ctZnVsbCByb3VuZGVkLVsxNHB4XSBib3JkZXIgYm9yZGVyLVtoc2wodmFyKC0tYm9yZGVyKSldIGJnLVtoc2wodmFyKC0tY2FyZCkpXSB0ZXh0LVtoc2wodmFyKC0tY2FyZC1mb3JlZ3JvdW5kKSldJywgY2xhc3NOYW1lXVwiPlxuICA8ZGl2IGNsYXNzPVwiZmxleCB3LWZ1bGwgaXRlbXMtc3RyZXRjaCBib3JkZXItYiBib3JkZXItW2hzbCh2YXIoLS1ib3JkZXIpKV1cIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBtaW4tdy0wIGZsZXgtMSBmbGV4LWNvbCBnYXAtMSBweC02IHBiLTMgcHQtNFwiPlxuICAgICAgPGgzIGNsYXNzPVwibS0wIHRleHQtc20gZm9udC1zZW1pYm9sZCBsZWFkaW5nLTVcIj57eyB0aXRsZSB9fTwvaDM+XG4gICAgICA8cCBjbGFzcz1cIm0tMCB0ZXh0LXNtIGxlYWRpbmctNSB0ZXh0LVtoc2wodmFyKC0tbXV0ZWQtZm9yZWdyb3VuZCkpXVwiPnt7IGRlc2NyaXB0aW9uIH19PC9wPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImZsZXggaC1bOTJweF1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGgtZnVsbCB3LVsxNzFweF0gZmxleC1jb2wganVzdGlmeS1jZW50ZXIgYm9yZGVyLWwgYm9yZGVyLVtoc2wodmFyKC0tYm9yZGVyKSldIGJnLVtoc2wodmFyKC0tbXV0ZWQpKV0gcHgtNiBweS00XCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC14cyBsZWFkaW5nLTQgdGV4dC1baHNsKHZhcigtLW11dGVkLWZvcmVncm91bmQpKV1cIj57eyBkZXNrdG9wTGFiZWwgfX08L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibXQtMSB0ZXh0LVsyOHB4XSBmb250LXNlbWlib2xkIGxlYWRpbmctOFwiPnt7IGRlc2t0b3BWYWx1ZSB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggaC1mdWxsIHctWzE3MXB4XSBmbGV4LWNvbCBqdXN0aWZ5LWNlbnRlciBweC02IHB5LTRcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXhzIGxlYWRpbmctNCB0ZXh0LVtoc2wodmFyKC0tbXV0ZWQtZm9yZWdyb3VuZCkpXVwiPnt7IG1vYmlsZUxhYmVsIH19PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm10LTEgdGV4dC1bMjhweF0gZm9udC1zZW1pYm9sZCBsZWFkaW5nLThcIj57eyBtb2JpbGVWYWx1ZSB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwidy1mdWxsIHAtNlwiPlxuICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInR5cGVcIj5cbiAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidiYXInXCIgY2xhc3M9XCJmbGV4IGgtWzIzNnB4XSB3LWZ1bGwgZmxleC1jb2wganVzdGlmeS1lbmQgZ2FwLTJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIGgtWzE4M3B4XSB3LWZ1bGwgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFic29sdXRlIGJvdHRvbS0wIGxlZnQtMCByaWdodC0wIGJvcmRlci10IGJvcmRlci1baHNsKHZhcigtLWJvcmRlcikpXSBvcGFjaXR5LTUwXCI+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFic29sdXRlIGxlZnQtMCByaWdodC0wIHRvcC1bNTRweF0gYm9yZGVyLXQgYm9yZGVyLVtoc2wodmFyKC0tYm9yZGVyKSldIG9wYWNpdHktNTBcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgbGVmdC0wIHJpZ2h0LTAgdG9wLVsxMDhweF0gYm9yZGVyLXQgYm9yZGVyLVtoc2wodmFyKC0tYm9yZGVyKSldIG9wYWNpdHktNTBcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgbGVmdC0wIHJpZ2h0LTAgdG9wLVsxNjJweF0gYm9yZGVyLXQgYm9yZGVyLVtoc2wodmFyKC0tYm9yZGVyKSldIG9wYWNpdHktNTBcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgaW5zZXQteC0wIGJvdHRvbS0wIGZsZXggaC1bMTgzcHhdIGl0ZW1zLWVuZCBnYXAtWzJweF0gcHgtMC41XCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBiYXIgb2Ygbm9ybWFsaXplZEJhcnNcIiBjbGFzcz1cInctWzVweF0gcm91bmRlZC1bMnB4XSBiZy1baHNsKHZhcigtLXByaW1hcnkpKV1cIiBbc3R5bGUuaGVpZ2h0LnB4XT1cImJhclwiPjwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaC00IHctZnVsbCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC0yXCI+XG4gICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IGxhYmVsIG9mIGxhYmVsc1wiIGNsYXNzPVwidHJ1bmNhdGUgdGV4dC14cyBsZWFkaW5nLTQgdGV4dC1baHNsKHZhcigtLW11dGVkLWZvcmVncm91bmQpKV1cIj57eyBsYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ2xpbmUnXCIgY2xhc3M9XCJmbGV4IGgtWzIzNnB4XSB3LWZ1bGwgZmxleC1jb2wgZ2FwLTJcIj5cbiAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDMyMCAxODBcIiBjbGFzcz1cImgtWzE4M3B4XSB3LWZ1bGxcIj5cbiAgICAgICAgICA8bGluZSB4MT1cIjBcIiB5MT1cIjE4MFwiIHgyPVwiMzIwXCIgeTI9XCIxODBcIiBzdHJva2U9XCJoc2wodmFyKC0tYm9yZGVyKSlcIiBzdHJva2Utd2lkdGg9XCIxXCI+PC9saW5lPlxuICAgICAgICAgIDxsaW5lIHgxPVwiMFwiIHkxPVwiMTM1XCIgeDI9XCIzMjBcIiB5Mj1cIjEzNVwiIHN0cm9rZT1cImhzbCh2YXIoLS1ib3JkZXIpKVwiIHN0cm9rZS13aWR0aD1cIjFcIiBvcGFjaXR5PVwiMC41XCI+PC9saW5lPlxuICAgICAgICAgIDxsaW5lIHgxPVwiMFwiIHkxPVwiOTBcIiB4Mj1cIjMyMFwiIHkyPVwiOTBcIiBzdHJva2U9XCJoc2wodmFyKC0tYm9yZGVyKSlcIiBzdHJva2Utd2lkdGg9XCIxXCIgb3BhY2l0eT1cIjAuNVwiPjwvbGluZT5cbiAgICAgICAgICA8bGluZSB4MT1cIjBcIiB5MT1cIjQ1XCIgeDI9XCIzMjBcIiB5Mj1cIjQ1XCIgc3Ryb2tlPVwiaHNsKHZhcigtLWJvcmRlcikpXCIgc3Ryb2tlLXdpZHRoPVwiMVwiIG9wYWNpdHk9XCIwLjVcIj48L2xpbmU+XG4gICAgICAgICAgPHBhdGggW2F0dHIuZF09XCJsaW5lUGF0aFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiaHNsKHZhcigtLXByaW1hcnkpKVwiIHN0cm9rZS13aWR0aD1cIjIuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cbiAgICAgICAgPC9zdmc+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGgtNCB3LWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMlwiPlxuICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBsYWJlbCBvZiBsYWJlbHNcIiBjbGFzcz1cInRydW5jYXRlIHRleHQteHMgbGVhZGluZy00IHRleHQtW2hzbCh2YXIoLS1tdXRlZC1mb3JlZ3JvdW5kKSldXCI+e3sgbGFiZWwgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidhcmVhJ1wiIGNsYXNzPVwiZmxleCBoLVsyMzZweF0gdy1mdWxsIGZsZXgtY29sIGdhcC0yXCI+XG4gICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAzMjAgMTgwXCIgY2xhc3M9XCJoLVsxODNweF0gdy1mdWxsXCI+XG4gICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICA8bGluZWFyR3JhZGllbnQgaWQ9XCJwZG0tY2hhcnQtYXJlYS1ncmFkaWVudFwiIHgxPVwiMFwiIHkxPVwiMFwiIHgyPVwiMFwiIHkyPVwiMVwiPlxuICAgICAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCIwJVwiIHN0b3AtY29sb3I9XCJoc2wodmFyKC0tcHJpbWFyeSkpXCIgc3RvcC1vcGFjaXR5PVwiMC4zNVwiPjwvc3RvcD5cbiAgICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PVwiMTAwJVwiIHN0b3AtY29sb3I9XCJoc2wodmFyKC0tcHJpbWFyeSkpXCIgc3RvcC1vcGFjaXR5PVwiMC4wMlwiPjwvc3RvcD5cbiAgICAgICAgICAgIDwvbGluZWFyR3JhZGllbnQ+XG4gICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgIDxsaW5lIHgxPVwiMFwiIHkxPVwiMTgwXCIgeDI9XCIzMjBcIiB5Mj1cIjE4MFwiIHN0cm9rZT1cImhzbCh2YXIoLS1ib3JkZXIpKVwiIHN0cm9rZS13aWR0aD1cIjFcIj48L2xpbmU+XG4gICAgICAgICAgPGxpbmUgeDE9XCIwXCIgeTE9XCIxMzVcIiB4Mj1cIjMyMFwiIHkyPVwiMTM1XCIgc3Ryb2tlPVwiaHNsKHZhcigtLWJvcmRlcikpXCIgc3Ryb2tlLXdpZHRoPVwiMVwiIG9wYWNpdHk9XCIwLjVcIj48L2xpbmU+XG4gICAgICAgICAgPGxpbmUgeDE9XCIwXCIgeTE9XCI5MFwiIHgyPVwiMzIwXCIgeTI9XCI5MFwiIHN0cm9rZT1cImhzbCh2YXIoLS1ib3JkZXIpKVwiIHN0cm9rZS13aWR0aD1cIjFcIiBvcGFjaXR5PVwiMC41XCI+PC9saW5lPlxuICAgICAgICAgIDxsaW5lIHgxPVwiMFwiIHkxPVwiNDVcIiB4Mj1cIjMyMFwiIHkyPVwiNDVcIiBzdHJva2U9XCJoc2wodmFyKC0tYm9yZGVyKSlcIiBzdHJva2Utd2lkdGg9XCIxXCIgb3BhY2l0eT1cIjAuNVwiPjwvbGluZT5cbiAgICAgICAgICA8cGF0aCBbYXR0ci5kXT1cImFyZWFQYXRoXCIgZmlsbD1cInVybCgjcGRtLWNoYXJ0LWFyZWEtZ3JhZGllbnQpXCI+PC9wYXRoPlxuICAgICAgICAgIDxwYXRoIFthdHRyLmRdPVwibGluZVBhdGhcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImhzbCh2YXIoLS1wcmltYXJ5KSlcIiBzdHJva2Utd2lkdGg9XCIyLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBoLTQgdy1mdWxsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLTJcIj5cbiAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgbGFiZWwgb2YgbGFiZWxzXCIgY2xhc3M9XCJ0cnVuY2F0ZSB0ZXh0LXhzIGxlYWRpbmctNCB0ZXh0LVtoc2wodmFyKC0tbXV0ZWQtZm9yZWdyb3VuZCkpXVwiPnt7IGxhYmVsIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCIncGllJ1wiIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTZcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIGgtNDAgdy00MCByb3VuZGVkLWZ1bGxcIiBbc3R5bGUuYmFja2dyb3VuZF09XCJwaWVHcmFkaWVudFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhYnNvbHV0ZSBpbnNldC03IHJvdW5kZWQtZnVsbCBiZy1baHNsKHZhcigtLWNhcmQpKV1cIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGZsZXgtMSBnYXAtMlwiPlxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHNlZ21lbnQgb2YgcGllU2VnbWVudHNcIiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItW2hzbCh2YXIoLS1ib3JkZXIpKV0gcHgtMyBweS0yXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzaXplLTIuNSByb3VuZGVkLWZ1bGxcIiBbc3R5bGUuYmFja2dyb3VuZF09XCJzZWdtZW50LmNvbG9yXCI+PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc20gbGVhZGluZy01XCI+e3sgc2VnbWVudC5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtIGxlYWRpbmctNVwiPnt7IHNlZ21lbnQuc2l6ZSB8IG51bWJlcjogJzEuMC0wJyB9fSU8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidyYWRhcidcIiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC02XCI+XG4gICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAxNjAgMTYwXCIgY2xhc3M9XCJoLTQ0IHctNDRcIj5cbiAgICAgICAgICA8cG9seWdvbiBwb2ludHM9XCI4MCw4IDE0NCw0NCAxNDQsMTE2IDgwLDE1MiAxNiwxMTYgMTYsNDRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImhzbCh2YXIoLS1ib3JkZXIpKVwiPjwvcG9seWdvbj5cbiAgICAgICAgICA8cG9seWdvbiBwb2ludHM9XCI4MCwyOCAxMjYsNTQgMTI2LDEwNiA4MCwxMzIgMzQsMTA2IDM0LDU0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJoc2wodmFyKC0tYm9yZGVyKSlcIiBvcGFjaXR5PVwiMC43NVwiPjwvcG9seWdvbj5cbiAgICAgICAgICA8cG9seWdvbiBwb2ludHM9XCI4MCw0OCAxMDksNjQgMTA5LDk2IDgwLDExMiA1MSw5NiA1MSw2NFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiaHNsKHZhcigtLWJvcmRlcikpXCIgb3BhY2l0eT1cIjAuNTVcIj48L3BvbHlnb24+XG4gICAgICAgICAgPHBvbHlnb24gW2F0dHIucG9pbnRzXT1cInJhZGFyUG9pbnRzXCIgZmlsbD1cImhzbCh2YXIoLS1wcmltYXJ5KSlcIiBmaWxsLW9wYWNpdHk9XCIwLjIyXCIgc3Ryb2tlPVwiaHNsKHZhcigtLXByaW1hcnkpKVwiIHN0cm9rZS13aWR0aD1cIjJcIj48L3BvbHlnb24+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBmbGV4LTEgZ2FwLTJcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIHJhZGFyOyBpbmRleCBhcyBpXCIgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLVtoc2wodmFyKC0tYm9yZGVyKSldIHB4LTMgcHktMiB0ZXh0LXNtXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtW2hzbCh2YXIoLS1tdXRlZC1mb3JlZ3JvdW5kKSldXCI+TWV0cmljIHt7IGkgKyAxIH19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LW1lZGl1bVwiPnt7IGl0ZW0gfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidyYWRpYWwnXCIgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLTZcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIGZsZXggc2l6ZS00NCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgOTYgOTZcIiBjbGFzcz1cInNpemUtNDAgLXJvdGF0ZS05MFwiPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjQ4XCIgY3k9XCI0OFwiIHI9XCI0MlwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiaHNsKHZhcigtLW11dGVkKSlcIiBzdHJva2Utd2lkdGg9XCIxMFwiPjwvY2lyY2xlPlxuICAgICAgICAgICAgPGNpcmNsZVxuICAgICAgICAgICAgICBjeD1cIjQ4XCJcbiAgICAgICAgICAgICAgY3k9XCI0OFwiXG4gICAgICAgICAgICAgIHI9XCI0MlwiXG4gICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgc3Ryb2tlPVwiaHNsKHZhcigtLXByaW1hcnkpKVwiXG4gICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEwXCJcbiAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgIHN0cm9rZS1kYXNoYXJyYXk9XCIyNjMuODlcIlxuICAgICAgICAgICAgICBbYXR0ci5zdHJva2UtZGFzaG9mZnNldF09XCJyYWRpYWxTdHJva2VPZmZzZXRcIlxuICAgICAgICAgICAgPjwvY2lyY2xlPlxuICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhYnNvbHV0ZSB0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtWzMwcHhdIGZvbnQtc2VtaWJvbGQgbGVhZGluZy05XCI+e3sgcmFkaWFsVmFsdWUgfX0lPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC14cyB0ZXh0LVtoc2wodmFyKC0tbXV0ZWQtZm9yZWdyb3VuZCkpXVwiPnt7IHJhZGlhbExhYmVsIH19PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC0xXCI+XG4gICAgICAgICAgPHAgY2xhc3M9XCJtLTAgdGV4dC1zbSBmb250LW1lZGl1bSBsZWFkaW5nLTVcIj57eyByYWRpYWxMYWJlbCB9fTwvcD5cbiAgICAgICAgICA8cCBjbGFzcz1cIm0tMCBtdC0xIHRleHQtc20gbGVhZGluZy01IHRleHQtW2hzbCh2YXIoLS1tdXRlZC1mb3JlZ3JvdW5kKSldXCI+e3sgcmFkaWFsRGVzY3JpcHRpb24gfX08L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIid0b29sdGlwcydcIiBjbGFzcz1cImdyaWQgZ2FwLTNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlubGluZS1mbGV4IHctZml0IG1pbi13LVsyMjBweF0gZmxleC1jb2wgZ2FwLTIgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLVtoc2wodmFyKC0tYm9yZGVyKSldIGJnLVtoc2wodmFyKC0tY2FyZCkpXSBwLTMgc2hhZG93LXNtXCI+XG4gICAgICAgICAgPHAgY2xhc3M9XCJtLTAgdGV4dC14cyBmb250LW1lZGl1bSBsZWFkaW5nLTQgdGV4dC1baHNsKHZhcigtLW11dGVkLWZvcmVncm91bmQpKV1cIj57eyB0b29sdGlwVGl0bGUgfX08L3A+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiB0ZXh0LXNtXCI+XG4gICAgICAgICAgICA8c3Bhbj57eyB0b29sdGlwUHJpbWFyeUxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LXNlbWlib2xkXCI+e3sgdG9vbHRpcFByaW1hcnlWYWx1ZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHRleHQtc21cIj5cbiAgICAgICAgICAgIDxzcGFuPnt7IHRvb2x0aXBTZWNvbmRhcnlMYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1zZW1pYm9sZFwiPnt7IHRvb2x0aXBTZWNvbmRhcnlWYWx1ZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxwIGNsYXNzPVwibS0wIHRleHQteHMgdGV4dC1baHNsKHZhcigtLW11dGVkLWZvcmVncm91bmQpKV1cIj5Ub29sdGlwIHN0eWxlIHByZXBhcmFkbyBwYXJhIGNoYXJ0cyBkZSBsw61uZWEsIMOhcmVhIHkgYmFycmFzLjwvcD5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvc2VjdGlvbj5cbiJdfQ==
@@ -0,0 +1,47 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ export class PdmCheckboxComponent {
5
+ constructor() {
6
+ this.id = '';
7
+ this.checked = false;
8
+ this.disabled = false;
9
+ this.variant = 'default';
10
+ this.label = 'Accept terms and conditions';
11
+ this.description = '';
12
+ this.className = '';
13
+ this.checkedChange = new EventEmitter();
14
+ }
15
+ get hasDescription() {
16
+ return this.variant === 'subtext' || this.variant === 'card' ? !!this.description : false;
17
+ }
18
+ onToggle() {
19
+ if (this.disabled) {
20
+ return;
21
+ }
22
+ this.checkedChange.emit(!this.checked);
23
+ }
24
+ }
25
+ PdmCheckboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PdmCheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
26
+ PdmCheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PdmCheckboxComponent, selector: "pdm-checkbox", inputs: { id: "id", checked: "checked", disabled: "disabled", variant: "variant", label: "label", description: "description", className: "className" }, outputs: { checkedChange: "checkedChange" }, ngImport: i0, template: "<button\n type=\"button\"\n role=\"checkbox\"\n [attr.id]=\"id || null\"\n [attr.aria-checked]=\"checked\"\n [attr.aria-disabled]=\"disabled\"\n [disabled]=\"disabled\"\n [ngClass]=\"[\n 'w-full border-0 bg-transparent p-0 text-left outline-none focus:outline-none focus-visible:outline-none',\n variant === 'card'\n ? checked\n ? 'flex items-start gap-3 rounded-[10px] border border-foreground bg-muted p-3'\n : 'flex items-start gap-3 rounded-[10px] border border-border bg-background p-3'\n : hasDescription\n ? 'flex items-start gap-3'\n : 'flex items-center gap-3',\n disabled ? 'opacity-50' : '',\n className\n ]\"\n (click)=\"onToggle()\"\n>\n <span\n [ngClass]=\"[\n 'mt-0.5 inline-flex h-4 w-4 shrink-0 items-center justify-center rounded-[6px] border shadow-[0_1px_2px_rgba(0,0,0,0.1)]',\n checked ? 'border-foreground bg-foreground text-background' : 'border-input bg-background text-transparent'\n ]\"\n aria-hidden=\"true\"\n >\n <svg viewBox=\"0 0 16 16\" class=\"h-3 w-3\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M3 8.5L6.4 12L13 4\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </span>\n\n <span [ngClass]=\"['min-w-0 flex-1', hasDescription ? 'flex flex-col gap-2' : 'flex items-center']\">\n <span class=\"text-[14px] font-medium leading-5 text-foreground\">{{ label }}</span>\n <span *ngIf=\"hasDescription\" class=\"text-[14px] leading-5 text-muted-foreground\">{{ description }}</span>\n </span>\n</button>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PdmCheckboxComponent, decorators: [{
28
+ type: Component,
29
+ args: [{ selector: 'pdm-checkbox', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n type=\"button\"\n role=\"checkbox\"\n [attr.id]=\"id || null\"\n [attr.aria-checked]=\"checked\"\n [attr.aria-disabled]=\"disabled\"\n [disabled]=\"disabled\"\n [ngClass]=\"[\n 'w-full border-0 bg-transparent p-0 text-left outline-none focus:outline-none focus-visible:outline-none',\n variant === 'card'\n ? checked\n ? 'flex items-start gap-3 rounded-[10px] border border-foreground bg-muted p-3'\n : 'flex items-start gap-3 rounded-[10px] border border-border bg-background p-3'\n : hasDescription\n ? 'flex items-start gap-3'\n : 'flex items-center gap-3',\n disabled ? 'opacity-50' : '',\n className\n ]\"\n (click)=\"onToggle()\"\n>\n <span\n [ngClass]=\"[\n 'mt-0.5 inline-flex h-4 w-4 shrink-0 items-center justify-center rounded-[6px] border shadow-[0_1px_2px_rgba(0,0,0,0.1)]',\n checked ? 'border-foreground bg-foreground text-background' : 'border-input bg-background text-transparent'\n ]\"\n aria-hidden=\"true\"\n >\n <svg viewBox=\"0 0 16 16\" class=\"h-3 w-3\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M3 8.5L6.4 12L13 4\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </span>\n\n <span [ngClass]=\"['min-w-0 flex-1', hasDescription ? 'flex flex-col gap-2' : 'flex items-center']\">\n <span class=\"text-[14px] font-medium leading-5 text-foreground\">{{ label }}</span>\n <span *ngIf=\"hasDescription\" class=\"text-[14px] leading-5 text-muted-foreground\">{{ description }}</span>\n </span>\n</button>\n" }]
30
+ }], propDecorators: { id: [{
31
+ type: Input
32
+ }], checked: [{
33
+ type: Input
34
+ }], disabled: [{
35
+ type: Input
36
+ }], variant: [{
37
+ type: Input
38
+ }], label: [{
39
+ type: Input
40
+ }], description: [{
41
+ type: Input
42
+ }], className: [{
43
+ type: Input
44
+ }], checkedChange: [{
45
+ type: Output
46
+ }] } });
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFTaEcsTUFBTSxPQUFPLG9CQUFvQjtJQUxqQztRQU1XLE9BQUUsR0FBRyxFQUFFLENBQUM7UUFDUixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsWUFBTyxHQUF1QixTQUFTLENBQUM7UUFDeEMsVUFBSyxHQUFHLDZCQUE2QixDQUFDO1FBQ3RDLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFFZCxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7S0FhdkQ7SUFYQyxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUM1RixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QyxDQUFDOztrSEFyQlUsb0JBQW9CO3NHQUFwQixvQkFBb0IseVBDVGpDLHVsREFzQ0E7NEZEN0JhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxjQUFjLG1CQUVQLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLEVBQUU7c0JBQVYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFSSxhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCB0eXBlIFBkbUNoZWNrYm94VmFyaWFudCA9ICdkZWZhdWx0JyB8ICdzdWJ0ZXh0JyB8ICdjYXJkJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRtLWNoZWNrYm94JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoZWNrYm94LmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUGRtQ2hlY2tib3hDb21wb25lbnQge1xuICBASW5wdXQoKSBpZCA9ICcnO1xuICBASW5wdXQoKSBjaGVja2VkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIHZhcmlhbnQ6IFBkbUNoZWNrYm94VmFyaWFudCA9ICdkZWZhdWx0JztcbiAgQElucHV0KCkgbGFiZWwgPSAnQWNjZXB0IHRlcm1zIGFuZCBjb25kaXRpb25zJztcbiAgQElucHV0KCkgZGVzY3JpcHRpb24gPSAnJztcbiAgQElucHV0KCkgY2xhc3NOYW1lID0gJyc7XG5cbiAgQE91dHB1dCgpIGNoZWNrZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgZ2V0IGhhc0Rlc2NyaXB0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZhcmlhbnQgPT09ICdzdWJ0ZXh0JyB8fCB0aGlzLnZhcmlhbnQgPT09ICdjYXJkJyA/ICEhdGhpcy5kZXNjcmlwdGlvbiA6IGZhbHNlO1xuICB9XG5cbiAgb25Ub2dnbGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmNoZWNrZWRDaGFuZ2UuZW1pdCghdGhpcy5jaGVja2VkKTtcbiAgfVxufVxuIiwiPGJ1dHRvblxuICB0eXBlPVwiYnV0dG9uXCJcbiAgcm9sZT1cImNoZWNrYm94XCJcbiAgW2F0dHIuaWRdPVwiaWQgfHwgbnVsbFwiXG4gIFthdHRyLmFyaWEtY2hlY2tlZF09XCJjaGVja2VkXCJcbiAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFtuZ0NsYXNzXT1cIltcbiAgICAndy1mdWxsIGJvcmRlci0wIGJnLXRyYW5zcGFyZW50IHAtMCB0ZXh0LWxlZnQgb3V0bGluZS1ub25lIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZScsXG4gICAgdmFyaWFudCA9PT0gJ2NhcmQnXG4gICAgICA/IGNoZWNrZWRcbiAgICAgICAgPyAnZmxleCBpdGVtcy1zdGFydCBnYXAtMyByb3VuZGVkLVsxMHB4XSBib3JkZXIgYm9yZGVyLWZvcmVncm91bmQgYmctbXV0ZWQgcC0zJ1xuICAgICAgICA6ICdmbGV4IGl0ZW1zLXN0YXJ0IGdhcC0zIHJvdW5kZWQtWzEwcHhdIGJvcmRlciBib3JkZXItYm9yZGVyIGJnLWJhY2tncm91bmQgcC0zJ1xuICAgICAgOiBoYXNEZXNjcmlwdGlvblxuICAgICAgICA/ICdmbGV4IGl0ZW1zLXN0YXJ0IGdhcC0zJ1xuICAgICAgICA6ICdmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMycsXG4gICAgZGlzYWJsZWQgPyAnb3BhY2l0eS01MCcgOiAnJyxcbiAgICBjbGFzc05hbWVcbiAgXVwiXG4gIChjbGljayk9XCJvblRvZ2dsZSgpXCJcbj5cbiAgPHNwYW5cbiAgICBbbmdDbGFzc109XCJbXG4gICAgICAnbXQtMC41IGlubGluZS1mbGV4IGgtNCB3LTQgc2hyaW5rLTAgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtWzZweF0gYm9yZGVyIHNoYWRvdy1bMF8xcHhfMnB4X3JnYmEoMCwwLDAsMC4xKV0nLFxuICAgICAgY2hlY2tlZCA/ICdib3JkZXItZm9yZWdyb3VuZCBiZy1mb3JlZ3JvdW5kIHRleHQtYmFja2dyb3VuZCcgOiAnYm9yZGVyLWlucHV0IGJnLWJhY2tncm91bmQgdGV4dC10cmFuc3BhcmVudCdcbiAgICBdXCJcbiAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICA+XG4gICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgY2xhc3M9XCJoLTMgdy0zXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICA8cGF0aCBkPVwiTTMgOC41TDYuNCAxMkwxMyA0XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cbiAgICA8L3N2Zz5cbiAgPC9zcGFuPlxuXG4gIDxzcGFuIFtuZ0NsYXNzXT1cIlsnbWluLXctMCBmbGV4LTEnLCBoYXNEZXNjcmlwdGlvbiA/ICdmbGV4IGZsZXgtY29sIGdhcC0yJyA6ICdmbGV4IGl0ZW1zLWNlbnRlciddXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LVsxNHB4XSBmb250LW1lZGl1bSBsZWFkaW5nLTUgdGV4dC1mb3JlZ3JvdW5kXCI+e3sgbGFiZWwgfX08L3NwYW4+XG4gICAgPHNwYW4gKm5nSWY9XCJoYXNEZXNjcmlwdGlvblwiIGNsYXNzPVwidGV4dC1bMTRweF0gbGVhZGluZy01IHRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPnt7IGRlc2NyaXB0aW9uIH19PC9zcGFuPlxuICA8L3NwYW4+XG48L2J1dHRvbj5cbiJdfQ==
@@ -0,0 +1,43 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ export class PdmCollapsibleComponent {
5
+ constructor() {
6
+ this.title = '@peduarte starred 3 repositories';
7
+ this.open = false;
8
+ this.disabled = false;
9
+ this.items = ['@radix-ui/primitives', '@radix-ui/colors', '@stitches/react'];
10
+ this.className = '';
11
+ this.openChange = new EventEmitter();
12
+ }
13
+ get visibleItems() {
14
+ if (!this.items.length) {
15
+ return [];
16
+ }
17
+ return this.open ? this.items : this.items.slice(0, 1);
18
+ }
19
+ toggle() {
20
+ if (!this.disabled) {
21
+ this.openChange.emit(!this.open);
22
+ }
23
+ }
24
+ }
25
+ PdmCollapsibleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PdmCollapsibleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
26
+ PdmCollapsibleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PdmCollapsibleComponent, selector: "pdm-collapsible", inputs: { title: "title", open: "open", disabled: "disabled", items: "items", className: "className" }, outputs: { openChange: "openChange" }, ngImport: i0, template: "<div [ngClass]=\"['flex w-[350px] flex-col gap-2', className]\">\n <button\n type=\"button\"\n [disabled]=\"disabled\"\n class=\"flex w-full items-center justify-between px-4 text-left\"\n [attr.aria-expanded]=\"open\"\n (click)=\"toggle()\"\n >\n <span class=\"text-[14px] font-semibold leading-5 text-[#0a0a0a]\">{{ title }}</span>\n <span class=\"inline-flex h-8 w-8 items-center justify-center text-[#0a0a0a]\">\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7 15L12 20L17 15\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M17 9L12 4L7 9\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </span>\n </button>\n\n <div class=\"flex w-full flex-col gap-2\">\n <div\n *ngFor=\"let item of visibleItems\"\n class=\"w-full rounded-[8px] border border-[#e5e5e5] bg-white px-4 py-2\"\n >\n <span class=\"font-mono text-[14px] leading-5 text-[#0a0a0a]\">{{ item }}</span>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PdmCollapsibleComponent, decorators: [{
28
+ type: Component,
29
+ args: [{ selector: 'pdm-collapsible', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [ngClass]=\"['flex w-[350px] flex-col gap-2', className]\">\n <button\n type=\"button\"\n [disabled]=\"disabled\"\n class=\"flex w-full items-center justify-between px-4 text-left\"\n [attr.aria-expanded]=\"open\"\n (click)=\"toggle()\"\n >\n <span class=\"text-[14px] font-semibold leading-5 text-[#0a0a0a]\">{{ title }}</span>\n <span class=\"inline-flex h-8 w-8 items-center justify-center text-[#0a0a0a]\">\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7 15L12 20L17 15\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M17 9L12 4L7 9\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </span>\n </button>\n\n <div class=\"flex w-full flex-col gap-2\">\n <div\n *ngFor=\"let item of visibleItems\"\n class=\"w-full rounded-[8px] border border-[#e5e5e5] bg-white px-4 py-2\"\n >\n <span class=\"font-mono text-[14px] leading-5 text-[#0a0a0a]\">{{ item }}</span>\n </div>\n </div>\n</div>\n" }]
30
+ }], propDecorators: { title: [{
31
+ type: Input
32
+ }], open: [{
33
+ type: Input
34
+ }], disabled: [{
35
+ type: Input
36
+ }], items: [{
37
+ type: Input
38
+ }], className: [{
39
+ type: Input
40
+ }], openChange: [{
41
+ type: Output
42
+ }] } });
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGFwc2libGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2NvbGxhcHNpYmxlL2NvbGxhcHNpYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9jb2xsYXBzaWJsZS9jb2xsYXBzaWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFPaEcsTUFBTSxPQUFPLHVCQUF1QjtJQUxwQztRQU1XLFVBQUssR0FBRyxrQ0FBa0MsQ0FBQztRQUMzQyxTQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2IsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixVQUFLLEdBQWEsQ0FBQyxzQkFBc0IsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2xGLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFFZCxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztLQWNwRDtJQVpDLElBQUksWUFBWTtRQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUN0QixPQUFPLEVBQUUsQ0FBQztTQUNYO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNsQztJQUNILENBQUM7O3FIQXBCVSx1QkFBdUI7eUdBQXZCLHVCQUF1QixzTUNQcEMsd3BDQTBCQTs0RkRuQmEsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLGlCQUFpQixtQkFFVix1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUksVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZG0tY29sbGFwc2libGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29sbGFwc2libGUuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBQZG1Db2xsYXBzaWJsZUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHRpdGxlID0gJ0BwZWR1YXJ0ZSBzdGFycmVkIDMgcmVwb3NpdG9yaWVzJztcbiAgQElucHV0KCkgb3BlbiA9IGZhbHNlO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBpdGVtczogc3RyaW5nW10gPSBbJ0ByYWRpeC11aS9wcmltaXRpdmVzJywgJ0ByYWRpeC11aS9jb2xvcnMnLCAnQHN0aXRjaGVzL3JlYWN0J107XG4gIEBJbnB1dCgpIGNsYXNzTmFtZSA9ICcnO1xuXG4gIEBPdXRwdXQoKSBvcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIGdldCB2aXNpYmxlSXRlbXMoKTogc3RyaW5nW10ge1xuICAgIGlmICghdGhpcy5pdGVtcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMub3BlbiA/IHRoaXMuaXRlbXMgOiB0aGlzLml0ZW1zLnNsaWNlKDAsIDEpO1xuICB9XG5cbiAgdG9nZ2xlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5vcGVuQ2hhbmdlLmVtaXQoIXRoaXMub3Blbik7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IFtuZ0NsYXNzXT1cIlsnZmxleCB3LVszNTBweF0gZmxleC1jb2wgZ2FwLTInLCBjbGFzc05hbWVdXCI+XG4gIDxidXR0b25cbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIGNsYXNzPVwiZmxleCB3LWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBweC00IHRleHQtbGVmdFwiXG4gICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJvcGVuXCJcbiAgICAoY2xpY2spPVwidG9nZ2xlKClcIlxuICA+XG4gICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LVsxNHB4XSBmb250LXNlbWlib2xkIGxlYWRpbmctNSB0ZXh0LVsjMGEwYTBhXVwiPnt7IHRpdGxlIH19PC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPVwiaW5saW5lLWZsZXggaC04IHctOCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC1bIzBhMGEwYV1cIj5cbiAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGNsYXNzPVwiaC00IHctNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICA8cGF0aCBkPVwiTTcgMTVMMTIgMjBMMTcgMTVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XG4gICAgICAgIDxwYXRoIGQ9XCJNMTcgOUwxMiA0TDcgOVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cbiAgICAgIDwvc3ZnPlxuICAgIDwvc3Bhbj5cbiAgPC9idXR0b24+XG5cbiAgPGRpdiBjbGFzcz1cImZsZXggdy1mdWxsIGZsZXgtY29sIGdhcC0yXCI+XG4gICAgPGRpdlxuICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgdmlzaWJsZUl0ZW1zXCJcbiAgICAgIGNsYXNzPVwidy1mdWxsIHJvdW5kZWQtWzhweF0gYm9yZGVyIGJvcmRlci1bI2U1ZTVlNV0gYmctd2hpdGUgcHgtNCBweS0yXCJcbiAgICA+XG4gICAgICA8c3BhbiBjbGFzcz1cImZvbnQtbW9ubyB0ZXh0LVsxNHB4XSBsZWFkaW5nLTUgdGV4dC1bIzBhMGEwYV1cIj57eyBpdGVtIH19PC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,51 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ export class PdmComboboxComponent {
5
+ constructor() {
6
+ this.open = false;
7
+ this.placeholder = 'Select framework...';
8
+ this.searchPlaceholder = 'Search framework';
9
+ this.className = '';
10
+ this.options = ['Next.js', 'SvelteKit', 'Nuxt.js', 'Remix', 'Astro'];
11
+ this.value = '';
12
+ this.width = 200;
13
+ this.openChange = new EventEmitter();
14
+ this.valueChange = new EventEmitter();
15
+ }
16
+ get selectedLabel() {
17
+ return this.value || this.placeholder;
18
+ }
19
+ toggle() {
20
+ this.openChange.emit(!this.open);
21
+ }
22
+ select(option) {
23
+ this.valueChange.emit(option);
24
+ this.openChange.emit(false);
25
+ }
26
+ }
27
+ PdmComboboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PdmComboboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
28
+ PdmComboboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PdmComboboxComponent, selector: "pdm-combobox", inputs: { open: "open", placeholder: "placeholder", searchPlaceholder: "searchPlaceholder", className: "className", options: "options", value: "value", width: "width" }, outputs: { openChange: "openChange", valueChange: "valueChange" }, ngImport: i0, template: "<div [ngClass]=\"['flex flex-col gap-1', className]\" [style.width.px]=\"width\">\n <button\n type=\"button\"\n class=\"flex h-9 w-full items-center gap-2 rounded-[8px] border border-[#e5e5e5] bg-white px-3 py-2 shadow-[0_1px_2px_rgba(0,0,0,0.1)]\"\n [attr.aria-expanded]=\"open\"\n (click)=\"toggle()\"\n >\n <span class=\"min-w-0 flex-1 truncate text-left text-[14px] font-medium leading-5 text-[#0a0a0a]\">{{ selectedLabel }}</span>\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-[#0a0a0a]\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7 15L12 20L17 15\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M17 9L12 4L7 9\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n\n <div\n *ngIf=\"open\"\n class=\"w-full rounded-[8px] border border-[#e5e5e5] bg-white shadow-[0_2px_4px_-2px_rgba(0,0,0,0.1),0_4px_6px_-1px_rgba(0,0,0,0.1)]\"\n >\n <div class=\"flex items-center gap-2 border-b border-[#e5e5e5] px-3\">\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-[#737373]\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"11\" cy=\"11\" r=\"7\" stroke=\"currentColor\" stroke-width=\"1.5\"></circle>\n <path d=\"M20 20L16.6 16.6\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n </svg>\n <div class=\"h-9 flex-1 py-2 text-[14px] leading-5 text-[#737373]\">{{ searchPlaceholder }}</div>\n </div>\n\n <div class=\"p-1\">\n <button\n *ngFor=\"let option of options\"\n type=\"button\"\n class=\"flex w-full items-center gap-2 rounded-[4px] px-2 py-[6px] text-left\"\n [ngClass]=\"option === value ? 'bg-[#f5f5f5]' : ''\"\n (click)=\"select(option)\"\n >\n <span [ngClass]=\"['min-w-0 flex-1 truncate text-[14px] leading-5', option === value ? 'text-[#171717]' : 'text-[#0a0a0a]']\">{{ option }}</span>\n <svg *ngIf=\"option === value\" viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-[#0a0a0a]\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M5 12.5L9.2 16.7L19 7\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PdmComboboxComponent, decorators: [{
30
+ type: Component,
31
+ args: [{ selector: 'pdm-combobox', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [ngClass]=\"['flex flex-col gap-1', className]\" [style.width.px]=\"width\">\n <button\n type=\"button\"\n class=\"flex h-9 w-full items-center gap-2 rounded-[8px] border border-[#e5e5e5] bg-white px-3 py-2 shadow-[0_1px_2px_rgba(0,0,0,0.1)]\"\n [attr.aria-expanded]=\"open\"\n (click)=\"toggle()\"\n >\n <span class=\"min-w-0 flex-1 truncate text-left text-[14px] font-medium leading-5 text-[#0a0a0a]\">{{ selectedLabel }}</span>\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-[#0a0a0a]\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7 15L12 20L17 15\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M17 9L12 4L7 9\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n\n <div\n *ngIf=\"open\"\n class=\"w-full rounded-[8px] border border-[#e5e5e5] bg-white shadow-[0_2px_4px_-2px_rgba(0,0,0,0.1),0_4px_6px_-1px_rgba(0,0,0,0.1)]\"\n >\n <div class=\"flex items-center gap-2 border-b border-[#e5e5e5] px-3\">\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-[#737373]\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"11\" cy=\"11\" r=\"7\" stroke=\"currentColor\" stroke-width=\"1.5\"></circle>\n <path d=\"M20 20L16.6 16.6\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n </svg>\n <div class=\"h-9 flex-1 py-2 text-[14px] leading-5 text-[#737373]\">{{ searchPlaceholder }}</div>\n </div>\n\n <div class=\"p-1\">\n <button\n *ngFor=\"let option of options\"\n type=\"button\"\n class=\"flex w-full items-center gap-2 rounded-[4px] px-2 py-[6px] text-left\"\n [ngClass]=\"option === value ? 'bg-[#f5f5f5]' : ''\"\n (click)=\"select(option)\"\n >\n <span [ngClass]=\"['min-w-0 flex-1 truncate text-[14px] leading-5', option === value ? 'text-[#171717]' : 'text-[#0a0a0a]']\">{{ option }}</span>\n <svg *ngIf=\"option === value\" viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-[#0a0a0a]\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M5 12.5L9.2 16.7L19 7\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n </div>\n </div>\n</div>\n" }]
32
+ }], propDecorators: { open: [{
33
+ type: Input
34
+ }], placeholder: [{
35
+ type: Input
36
+ }], searchPlaceholder: [{
37
+ type: Input
38
+ }], className: [{
39
+ type: Input
40
+ }], options: [{
41
+ type: Input
42
+ }], value: [{
43
+ type: Input
44
+ }], width: [{
45
+ type: Input
46
+ }], openChange: [{
47
+ type: Output
48
+ }], valueChange: [{
49
+ type: Output
50
+ }] } });
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm9ib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2NvbWJvYm94L2NvbWJvYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9jb21ib2JveC9jb21ib2JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFPaEcsTUFBTSxPQUFPLG9CQUFvQjtJQUxqQztRQU1XLFNBQUksR0FBRyxLQUFLLENBQUM7UUFDYixnQkFBVyxHQUFHLHFCQUFxQixDQUFDO1FBQ3BDLHNCQUFpQixHQUFHLGtCQUFrQixDQUFDO1FBQ3ZDLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFDZixZQUFPLEdBQWEsQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDMUUsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLFVBQUssR0FBRyxHQUFHLENBQUM7UUFFWCxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUN6QyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7S0FjcEQ7SUFaQyxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUN4QyxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBYztRQUNuQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDOztrSEF2QlUsb0JBQW9CO3NHQUFwQixvQkFBb0IsaVNDUGpDLDYyRUEwQ0E7NEZEbkNhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxjQUFjLG1CQUVQLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLElBQUk7c0JBQVosS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUVJLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZG0tY29tYm9ib3gnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29tYm9ib3guY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBQZG1Db21ib2JveENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIG9wZW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnU2VsZWN0IGZyYW1ld29yay4uLic7XG4gIEBJbnB1dCgpIHNlYXJjaFBsYWNlaG9sZGVyID0gJ1NlYXJjaCBmcmFtZXdvcmsnO1xuICBASW5wdXQoKSBjbGFzc05hbWUgPSAnJztcbiAgQElucHV0KCkgb3B0aW9uczogc3RyaW5nW10gPSBbJ05leHQuanMnLCAnU3ZlbHRlS2l0JywgJ051eHQuanMnLCAnUmVtaXgnLCAnQXN0cm8nXTtcbiAgQElucHV0KCkgdmFsdWUgPSAnJztcbiAgQElucHV0KCkgd2lkdGggPSAyMDA7XG5cbiAgQE91dHB1dCgpIG9wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIGdldCBzZWxlY3RlZExhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUgfHwgdGhpcy5wbGFjZWhvbGRlcjtcbiAgfVxuXG4gIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW5DaGFuZ2UuZW1pdCghdGhpcy5vcGVuKTtcbiAgfVxuXG4gIHNlbGVjdChvcHRpb246IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChvcHRpb24pO1xuICAgIHRoaXMub3BlbkNoYW5nZS5lbWl0KGZhbHNlKTtcbiAgfVxufVxuIiwiPGRpdiBbbmdDbGFzc109XCJbJ2ZsZXggZmxleC1jb2wgZ2FwLTEnLCBjbGFzc05hbWVdXCIgW3N0eWxlLndpZHRoLnB4XT1cIndpZHRoXCI+XG4gIDxidXR0b25cbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBjbGFzcz1cImZsZXggaC05IHctZnVsbCBpdGVtcy1jZW50ZXIgZ2FwLTIgcm91bmRlZC1bOHB4XSBib3JkZXIgYm9yZGVyLVsjZTVlNWU1XSBiZy13aGl0ZSBweC0zIHB5LTIgc2hhZG93LVswXzFweF8ycHhfcmdiYSgwLDAsMCwwLjEpXVwiXG4gICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJvcGVuXCJcbiAgICAoY2xpY2spPVwidG9nZ2xlKClcIlxuICA+XG4gICAgPHNwYW4gY2xhc3M9XCJtaW4tdy0wIGZsZXgtMSB0cnVuY2F0ZSB0ZXh0LWxlZnQgdGV4dC1bMTRweF0gZm9udC1tZWRpdW0gbGVhZGluZy01IHRleHQtWyMwYTBhMGFdXCI+e3sgc2VsZWN0ZWRMYWJlbCB9fTwvc3Bhbj5cbiAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBjbGFzcz1cImgtNCB3LTQgdGV4dC1bIzBhMGEwYV1cIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgIDxwYXRoIGQ9XCJNNyAxNUwxMiAyMEwxNyAxNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cbiAgICAgIDxwYXRoIGQ9XCJNMTcgOUwxMiA0TDcgOVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cbiAgICA8L3N2Zz5cbiAgPC9idXR0b24+XG5cbiAgPGRpdlxuICAgICpuZ0lmPVwib3BlblwiXG4gICAgY2xhc3M9XCJ3LWZ1bGwgcm91bmRlZC1bOHB4XSBib3JkZXIgYm9yZGVyLVsjZTVlNWU1XSBiZy13aGl0ZSBzaGFkb3ctWzBfMnB4XzRweF8tMnB4X3JnYmEoMCwwLDAsMC4xKSwwXzRweF82cHhfLTFweF9yZ2JhKDAsMCwwLDAuMSldXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiBib3JkZXItYiBib3JkZXItWyNlNWU1ZTVdIHB4LTNcIj5cbiAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGNsYXNzPVwiaC00IHctNCB0ZXh0LVsjNzM3MzczXVwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICA8Y2lyY2xlIGN4PVwiMTFcIiBjeT1cIjExXCIgcj1cIjdcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIj48L2NpcmNsZT5cbiAgICAgICAgPHBhdGggZD1cIk0yMCAyMEwxNi42IDE2LjZcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCI+PC9wYXRoPlxuICAgICAgPC9zdmc+XG4gICAgICA8ZGl2IGNsYXNzPVwiaC05IGZsZXgtMSBweS0yIHRleHQtWzE0cHhdIGxlYWRpbmctNSB0ZXh0LVsjNzM3MzczXVwiPnt7IHNlYXJjaFBsYWNlaG9sZGVyIH19PC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwicC0xXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uc1wiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cImZsZXggdy1mdWxsIGl0ZW1zLWNlbnRlciBnYXAtMiByb3VuZGVkLVs0cHhdIHB4LTIgcHktWzZweF0gdGV4dC1sZWZ0XCJcbiAgICAgICAgW25nQ2xhc3NdPVwib3B0aW9uID09PSB2YWx1ZSA/ICdiZy1bI2Y1ZjVmNV0nIDogJydcIlxuICAgICAgICAoY2xpY2spPVwic2VsZWN0KG9wdGlvbilcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJbJ21pbi13LTAgZmxleC0xIHRydW5jYXRlIHRleHQtWzE0cHhdIGxlYWRpbmctNScsIG9wdGlvbiA9PT0gdmFsdWUgPyAndGV4dC1bIzE3MTcxN10nIDogJ3RleHQtWyMwYTBhMGFdJ11cIj57eyBvcHRpb24gfX08L3NwYW4+XG4gICAgICAgIDxzdmcgKm5nSWY9XCJvcHRpb24gPT09IHZhbHVlXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGNsYXNzPVwiaC00IHctNCB0ZXh0LVsjMGEwYTBhXVwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNNSAxMi41TDkuMiAxNi43TDE5IDdcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjhcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,75 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ import * as i2 from "../icon/icon.component";
5
+ export class PdmCommandComponent {
6
+ constructor() {
7
+ this.open = true;
8
+ this.hintLabel = 'Press';
9
+ this.hintKey = 'J';
10
+ this.placeholder = 'Type a command or search...';
11
+ this.emptyMessage = 'No results found.';
12
+ this.items = [
13
+ { label: 'Calendar', value: 'calendar', group: 'Suggestions', icon: 'calendar' },
14
+ { label: 'Search emoji', value: 'emoji', group: 'Suggestions', icon: 'smile' },
15
+ { label: 'Calculator', value: 'calculator', group: 'Suggestions', icon: 'calculator', disabled: true },
16
+ { label: 'Profile', value: 'profile', group: 'Settings', icon: 'user', shortcut: '⌘P' },
17
+ { label: 'Billing', value: 'billing', group: 'Settings', icon: 'credit-card', shortcut: '⌘B' },
18
+ { label: 'Settings', value: 'settings', group: 'Settings', icon: 'settings', shortcut: '⌘S' }
19
+ ];
20
+ this.className = '';
21
+ this.itemSelect = new EventEmitter();
22
+ this.openChange = new EventEmitter();
23
+ this.query = '';
24
+ }
25
+ get filteredItems() {
26
+ const q = this.query.toLowerCase().trim();
27
+ if (!q)
28
+ return this.items;
29
+ return this.items.filter((item) => item.label.toLowerCase().includes(q));
30
+ }
31
+ get groupedItems() {
32
+ const map = new Map();
33
+ for (const item of this.filteredItems) {
34
+ const key = item.group || '';
35
+ const arr = map.get(key) ?? [];
36
+ arr.push(item);
37
+ map.set(key, arr);
38
+ }
39
+ return Array.from(map.entries()).map(([name, items]) => ({ name, items }));
40
+ }
41
+ onQueryChange(event) {
42
+ this.query = event.target.value;
43
+ }
44
+ toggleOpen() {
45
+ this.openChange.emit(!this.open);
46
+ }
47
+ select(value) {
48
+ this.itemSelect.emit(value);
49
+ }
50
+ }
51
+ PdmCommandComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PdmCommandComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
52
+ PdmCommandComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PdmCommandComponent, selector: "pdm-command", inputs: { open: "open", hintLabel: "hintLabel", hintKey: "hintKey", placeholder: "placeholder", emptyMessage: "emptyMessage", items: "items", className: "className" }, outputs: { itemSelect: "itemSelect", openChange: "openChange" }, ngImport: i0, template: "<div [ngClass]=\"['w-full', className]\">\n <div *ngIf=\"!open\" class=\"flex items-center gap-1\">\n <span class=\"text-[14px] font-medium leading-5 text-[#737373]\">{{ hintLabel }}</span>\n <button\n type=\"button\"\n class=\"inline-flex h-5 items-center gap-0.5 rounded-[6px] border border-[#e5e5e5] bg-[#f5f5f5] px-1.5\"\n (click)=\"toggleOpen()\"\n >\n <pdm-icon name=\"command\" [size]=\"12\" className=\"text-[#737373]\" [decorative]=\"true\"></pdm-icon>\n <span class=\"text-[12px] leading-4 text-[#737373]\">{{ hintKey }}</span>\n </button>\n </div>\n\n <section\n *ngIf=\"open\"\n class=\"flex w-full flex-col overflow-hidden rounded-[10px] border border-[#e5e5e5] bg-white shadow-[0_2px_4px_-2px_rgba(0,0,0,0.1),0_4px_6px_-1px_rgba(0,0,0,0.1)]\"\n >\n <div class=\"flex items-center gap-2 border-b border-[#e5e5e5] px-3\">\n <pdm-icon name=\"search\" [size]=\"16\" className=\"text-[#737373]\" [decorative]=\"true\"></pdm-icon>\n <input\n type=\"text\"\n [placeholder]=\"placeholder\"\n [value]=\"query\"\n (input)=\"onQueryChange($event)\"\n class=\"h-10 w-full bg-transparent py-3 text-[14px] leading-5 text-[#0a0a0a] outline-none placeholder:text-[#737373]\"\n />\n </div>\n\n <div class=\"max-h-[300px] overflow-y-auto p-1\">\n <ng-container *ngFor=\"let group of groupedItems; let groupIndex = index\">\n <div *ngIf=\"group.name\" class=\"px-2 py-[6px] text-[12px] leading-4 text-[#737373]\">{{ group.name }}</div>\n <button\n *ngFor=\"let item of group.items\"\n type=\"button\"\n [disabled]=\"item.disabled\"\n class=\"flex w-full items-center gap-2 rounded-[6px] px-2 py-[6px] text-left\"\n [ngClass]=\"[\n item.disabled ? 'opacity-50' : '',\n item.label === 'Calendar' ? 'bg-[#f5f5f5]' : ''\n ]\"\n (click)=\"select(item.value)\"\n >\n <span class=\"inline-flex h-4 w-4 items-center justify-center text-[#0a0a0a]\">\n <pdm-icon *ngIf=\"item.icon\" [name]=\"item.icon\" [size]=\"16\" [decorative]=\"true\"></pdm-icon>\n </span>\n <span class=\"min-w-0 flex-1 text-[14px] leading-5 text-[#0a0a0a]\">{{ item.label }}</span>\n <span *ngIf=\"item.shortcut\" class=\"text-[12px] leading-4 text-[#737373]\">{{ item.shortcut }}</span>\n </button>\n <div *ngIf=\"groupIndex === 0 && groupedItems.length > 1\" class=\"my-1 border-t border-[#e5e5e5]\"></div>\n </ng-container>\n\n <p *ngIf=\"filteredItems.length === 0\" class=\"py-6 text-center text-[14px] text-[#737373]\">{{ emptyMessage }}</p>\n </div>\n </section>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.PdmIconComponent, selector: "pdm-icon", inputs: ["name", "library", "assetUrl", "size", "strokeWidth", "className", "ariaLabel", "decorative"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PdmCommandComponent, decorators: [{
54
+ type: Component,
55
+ args: [{ selector: 'pdm-command', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [ngClass]=\"['w-full', className]\">\n <div *ngIf=\"!open\" class=\"flex items-center gap-1\">\n <span class=\"text-[14px] font-medium leading-5 text-[#737373]\">{{ hintLabel }}</span>\n <button\n type=\"button\"\n class=\"inline-flex h-5 items-center gap-0.5 rounded-[6px] border border-[#e5e5e5] bg-[#f5f5f5] px-1.5\"\n (click)=\"toggleOpen()\"\n >\n <pdm-icon name=\"command\" [size]=\"12\" className=\"text-[#737373]\" [decorative]=\"true\"></pdm-icon>\n <span class=\"text-[12px] leading-4 text-[#737373]\">{{ hintKey }}</span>\n </button>\n </div>\n\n <section\n *ngIf=\"open\"\n class=\"flex w-full flex-col overflow-hidden rounded-[10px] border border-[#e5e5e5] bg-white shadow-[0_2px_4px_-2px_rgba(0,0,0,0.1),0_4px_6px_-1px_rgba(0,0,0,0.1)]\"\n >\n <div class=\"flex items-center gap-2 border-b border-[#e5e5e5] px-3\">\n <pdm-icon name=\"search\" [size]=\"16\" className=\"text-[#737373]\" [decorative]=\"true\"></pdm-icon>\n <input\n type=\"text\"\n [placeholder]=\"placeholder\"\n [value]=\"query\"\n (input)=\"onQueryChange($event)\"\n class=\"h-10 w-full bg-transparent py-3 text-[14px] leading-5 text-[#0a0a0a] outline-none placeholder:text-[#737373]\"\n />\n </div>\n\n <div class=\"max-h-[300px] overflow-y-auto p-1\">\n <ng-container *ngFor=\"let group of groupedItems; let groupIndex = index\">\n <div *ngIf=\"group.name\" class=\"px-2 py-[6px] text-[12px] leading-4 text-[#737373]\">{{ group.name }}</div>\n <button\n *ngFor=\"let item of group.items\"\n type=\"button\"\n [disabled]=\"item.disabled\"\n class=\"flex w-full items-center gap-2 rounded-[6px] px-2 py-[6px] text-left\"\n [ngClass]=\"[\n item.disabled ? 'opacity-50' : '',\n item.label === 'Calendar' ? 'bg-[#f5f5f5]' : ''\n ]\"\n (click)=\"select(item.value)\"\n >\n <span class=\"inline-flex h-4 w-4 items-center justify-center text-[#0a0a0a]\">\n <pdm-icon *ngIf=\"item.icon\" [name]=\"item.icon\" [size]=\"16\" [decorative]=\"true\"></pdm-icon>\n </span>\n <span class=\"min-w-0 flex-1 text-[14px] leading-5 text-[#0a0a0a]\">{{ item.label }}</span>\n <span *ngIf=\"item.shortcut\" class=\"text-[12px] leading-4 text-[#737373]\">{{ item.shortcut }}</span>\n </button>\n <div *ngIf=\"groupIndex === 0 && groupedItems.length > 1\" class=\"my-1 border-t border-[#e5e5e5]\"></div>\n </ng-container>\n\n <p *ngIf=\"filteredItems.length === 0\" class=\"py-6 text-center text-[14px] text-[#737373]\">{{ emptyMessage }}</p>\n </div>\n </section>\n</div>\n" }]
56
+ }], propDecorators: { open: [{
57
+ type: Input
58
+ }], hintLabel: [{
59
+ type: Input
60
+ }], hintKey: [{
61
+ type: Input
62
+ }], placeholder: [{
63
+ type: Input
64
+ }], emptyMessage: [{
65
+ type: Input
66
+ }], items: [{
67
+ type: Input
68
+ }], className: [{
69
+ type: Input
70
+ }], itemSelect: [{
71
+ type: Output
72
+ }], openChange: [{
73
+ type: Output
74
+ }] } });
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvY29tbWFuZC9jb21tYW5kLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9jb21tYW5kL2NvbW1hbmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQWlCaEcsTUFBTSxPQUFPLG1CQUFtQjtJQUxoQztRQU1XLFNBQUksR0FBRyxJQUFJLENBQUM7UUFDWixjQUFTLEdBQUcsT0FBTyxDQUFDO1FBQ3BCLFlBQU8sR0FBRyxHQUFHLENBQUM7UUFDZCxnQkFBVyxHQUFHLDZCQUE2QixDQUFDO1FBQzVDLGlCQUFZLEdBQUcsbUJBQW1CLENBQUM7UUFDbkMsVUFBSyxHQUFxQjtZQUNqQyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDaEYsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO1lBQzlFLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1lBQ3RHLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1lBQ3ZGLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1lBQzlGLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1NBQzlGLENBQUM7UUFDTyxjQUFTLEdBQUcsRUFBRSxDQUFDO1FBRWQsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDeEMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFFbkQsVUFBSyxHQUFHLEVBQUUsQ0FBQztLQThCWjtJQTVCQyxJQUFJLGFBQWE7UUFDZixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFDLElBQUksQ0FBQyxDQUFDO1lBQUUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzFCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxFQUE0QixDQUFDO1FBQ2hELEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNyQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUM3QixNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMvQixHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2YsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDbkI7UUFDRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBWTtRQUN4QixJQUFJLENBQUMsS0FBSyxHQUFJLEtBQUssQ0FBQyxNQUEyQixDQUFDLEtBQUssQ0FBQztJQUN4RCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBYTtRQUNsQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDOztpSEFoRFUsbUJBQW1CO3FHQUFuQixtQkFBbUIsNFJDakJoQyw0cUZBdURBOzRGRHRDYSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsYUFBYSxtQkFFTix1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFRRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVJLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBQZG1JY29uTmFtZSB9IGZyb20gJy4uL2ljb24vaWNvbi5jb21wb25lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBkbUNvbW1hbmRJdGVtIHtcbiAgbGFiZWw6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbiAgZ3JvdXA/OiBzdHJpbmc7XG4gIGljb24/OiBQZG1JY29uTmFtZTtcbiAgc2hvcnRjdXQ/OiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRtLWNvbW1hbmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29tbWFuZC5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFBkbUNvbW1hbmRDb21wb25lbnQge1xuICBASW5wdXQoKSBvcGVuID0gdHJ1ZTtcbiAgQElucHV0KCkgaGludExhYmVsID0gJ1ByZXNzJztcbiAgQElucHV0KCkgaGludEtleSA9ICdKJztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnVHlwZSBhIGNvbW1hbmQgb3Igc2VhcmNoLi4uJztcbiAgQElucHV0KCkgZW1wdHlNZXNzYWdlID0gJ05vIHJlc3VsdHMgZm91bmQuJztcbiAgQElucHV0KCkgaXRlbXM6IFBkbUNvbW1hbmRJdGVtW10gPSBbXG4gICAgeyBsYWJlbDogJ0NhbGVuZGFyJywgdmFsdWU6ICdjYWxlbmRhcicsIGdyb3VwOiAnU3VnZ2VzdGlvbnMnLCBpY29uOiAnY2FsZW5kYXInIH0sXG4gICAgeyBsYWJlbDogJ1NlYXJjaCBlbW9qaScsIHZhbHVlOiAnZW1vamknLCBncm91cDogJ1N1Z2dlc3Rpb25zJywgaWNvbjogJ3NtaWxlJyB9LFxuICAgIHsgbGFiZWw6ICdDYWxjdWxhdG9yJywgdmFsdWU6ICdjYWxjdWxhdG9yJywgZ3JvdXA6ICdTdWdnZXN0aW9ucycsIGljb246ICdjYWxjdWxhdG9yJywgZGlzYWJsZWQ6IHRydWUgfSxcbiAgICB7IGxhYmVsOiAnUHJvZmlsZScsIHZhbHVlOiAncHJvZmlsZScsIGdyb3VwOiAnU2V0dGluZ3MnLCBpY29uOiAndXNlcicsIHNob3J0Y3V0OiAn4oyYUCcgfSxcbiAgICB7IGxhYmVsOiAnQmlsbGluZycsIHZhbHVlOiAnYmlsbGluZycsIGdyb3VwOiAnU2V0dGluZ3MnLCBpY29uOiAnY3JlZGl0LWNhcmQnLCBzaG9ydGN1dDogJ+KMmEInIH0sXG4gICAgeyBsYWJlbDogJ1NldHRpbmdzJywgdmFsdWU6ICdzZXR0aW5ncycsIGdyb3VwOiAnU2V0dGluZ3MnLCBpY29uOiAnc2V0dGluZ3MnLCBzaG9ydGN1dDogJ+KMmFMnIH1cbiAgXTtcbiAgQElucHV0KCkgY2xhc3NOYW1lID0gJyc7XG5cbiAgQE91dHB1dCgpIGl0ZW1TZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIG9wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgcXVlcnkgPSAnJztcblxuICBnZXQgZmlsdGVyZWRJdGVtcygpOiBQZG1Db21tYW5kSXRlbVtdIHtcbiAgICBjb25zdCBxID0gdGhpcy5xdWVyeS50b0xvd2VyQ2FzZSgpLnRyaW0oKTtcbiAgICBpZiAoIXEpIHJldHVybiB0aGlzLml0ZW1zO1xuICAgIHJldHVybiB0aGlzLml0ZW1zLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5sYWJlbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHEpKTtcbiAgfVxuXG4gIGdldCBncm91cGVkSXRlbXMoKTogeyBuYW1lOiBzdHJpbmc7IGl0ZW1zOiBQZG1Db21tYW5kSXRlbVtdIH1bXSB7XG4gICAgY29uc3QgbWFwID0gbmV3IE1hcDxzdHJpbmcsIFBkbUNvbW1hbmRJdGVtW10+KCk7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuZmlsdGVyZWRJdGVtcykge1xuICAgICAgY29uc3Qga2V5ID0gaXRlbS5ncm91cCB8fCAnJztcbiAgICAgIGNvbnN0IGFyciA9IG1hcC5nZXQoa2V5KSA/PyBbXTtcbiAgICAgIGFyci5wdXNoKGl0ZW0pO1xuICAgICAgbWFwLnNldChrZXksIGFycik7XG4gICAgfVxuICAgIHJldHVybiBBcnJheS5mcm9tKG1hcC5lbnRyaWVzKCkpLm1hcCgoW25hbWUsIGl0ZW1zXSkgPT4gKHsgbmFtZSwgaXRlbXMgfSkpO1xuICB9XG5cbiAgb25RdWVyeUNoYW5nZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnF1ZXJ5ID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcbiAgfVxuXG4gIHRvZ2dsZU9wZW4oKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuQ2hhbmdlLmVtaXQoIXRoaXMub3Blbik7XG4gIH1cblxuICBzZWxlY3QodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuaXRlbVNlbGVjdC5lbWl0KHZhbHVlKTtcbiAgfVxufVxuIiwiPGRpdiBbbmdDbGFzc109XCJbJ3ctZnVsbCcsIGNsYXNzTmFtZV1cIj5cbiAgPGRpdiAqbmdJZj1cIiFvcGVuXCIgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMVwiPlxuICAgIDxzcGFuIGNsYXNzPVwidGV4dC1bMTRweF0gZm9udC1tZWRpdW0gbGVhZGluZy01IHRleHQtWyM3MzczNzNdXCI+e3sgaGludExhYmVsIH19PC9zcGFuPlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJpbmxpbmUtZmxleCBoLTUgaXRlbXMtY2VudGVyIGdhcC0wLjUgcm91bmRlZC1bNnB4XSBib3JkZXIgYm9yZGVyLVsjZTVlNWU1XSBiZy1bI2Y1ZjVmNV0gcHgtMS41XCJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVPcGVuKClcIlxuICAgID5cbiAgICAgIDxwZG0taWNvbiBuYW1lPVwiY29tbWFuZFwiIFtzaXplXT1cIjEyXCIgY2xhc3NOYW1lPVwidGV4dC1bIzczNzM3M11cIiBbZGVjb3JhdGl2ZV09XCJ0cnVlXCI+PC9wZG0taWNvbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1bMTJweF0gbGVhZGluZy00IHRleHQtWyM3MzczNzNdXCI+e3sgaGludEtleSB9fTwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG5cbiAgPHNlY3Rpb25cbiAgICAqbmdJZj1cIm9wZW5cIlxuICAgIGNsYXNzPVwiZmxleCB3LWZ1bGwgZmxleC1jb2wgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtWzEwcHhdIGJvcmRlciBib3JkZXItWyNlNWU1ZTVdIGJnLXdoaXRlIHNoYWRvdy1bMF8ycHhfNHB4Xy0ycHhfcmdiYSgwLDAsMCwwLjEpLDBfNHB4XzZweF8tMXB4X3JnYmEoMCwwLDAsMC4xKV1cIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIGJvcmRlci1iIGJvcmRlci1bI2U1ZTVlNV0gcHgtM1wiPlxuICAgICAgPHBkbS1pY29uIG5hbWU9XCJzZWFyY2hcIiBbc2l6ZV09XCIxNlwiIGNsYXNzTmFtZT1cInRleHQtWyM3MzczNzNdXCIgW2RlY29yYXRpdmVdPVwidHJ1ZVwiPjwvcGRtLWljb24+XG4gICAgICA8aW5wdXRcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICBbdmFsdWVdPVwicXVlcnlcIlxuICAgICAgICAoaW5wdXQpPVwib25RdWVyeUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgY2xhc3M9XCJoLTEwIHctZnVsbCBiZy10cmFuc3BhcmVudCBweS0zIHRleHQtWzE0cHhdIGxlYWRpbmctNSB0ZXh0LVsjMGEwYTBhXSBvdXRsaW5lLW5vbmUgcGxhY2Vob2xkZXI6dGV4dC1bIzczNzM3M11cIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJtYXgtaC1bMzAwcHhdIG92ZXJmbG93LXktYXV0byBwLTFcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGdyb3VwZWRJdGVtczsgbGV0IGdyb3VwSW5kZXggPSBpbmRleFwiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZ3JvdXAubmFtZVwiIGNsYXNzPVwicHgtMiBweS1bNnB4XSB0ZXh0LVsxMnB4XSBsZWFkaW5nLTQgdGV4dC1bIzczNzM3M11cIj57eyBncm91cC5uYW1lIH19PC9kaXY+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBncm91cC5pdGVtc1wiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIlxuICAgICAgICAgIGNsYXNzPVwiZmxleCB3LWZ1bGwgaXRlbXMtY2VudGVyIGdhcC0yIHJvdW5kZWQtWzZweF0gcHgtMiBweS1bNnB4XSB0ZXh0LWxlZnRcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIltcbiAgICAgICAgICAgIGl0ZW0uZGlzYWJsZWQgPyAnb3BhY2l0eS01MCcgOiAnJyxcbiAgICAgICAgICAgIGl0ZW0ubGFiZWwgPT09ICdDYWxlbmRhcicgPyAnYmctWyNmNWY1ZjVdJyA6ICcnXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNlbGVjdChpdGVtLnZhbHVlKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImlubGluZS1mbGV4IGgtNCB3LTQgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtWyMwYTBhMGFdXCI+XG4gICAgICAgICAgICA8cGRtLWljb24gKm5nSWY9XCJpdGVtLmljb25cIiBbbmFtZV09XCJpdGVtLmljb25cIiBbc2l6ZV09XCIxNlwiIFtkZWNvcmF0aXZlXT1cInRydWVcIj48L3BkbS1pY29uPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1pbi13LTAgZmxleC0xIHRleHQtWzE0cHhdIGxlYWRpbmctNSB0ZXh0LVsjMGEwYTBhXVwiPnt7IGl0ZW0ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJpdGVtLnNob3J0Y3V0XCIgY2xhc3M9XCJ0ZXh0LVsxMnB4XSBsZWFkaW5nLTQgdGV4dC1bIzczNzM3M11cIj57eyBpdGVtLnNob3J0Y3V0IH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImdyb3VwSW5kZXggPT09IDAgJiYgZ3JvdXBlZEl0ZW1zLmxlbmd0aCA+IDFcIiBjbGFzcz1cIm15LTEgYm9yZGVyLXQgYm9yZGVyLVsjZTVlNWU1XVwiPjwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxwICpuZ0lmPVwiZmlsdGVyZWRJdGVtcy5sZW5ndGggPT09IDBcIiBjbGFzcz1cInB5LTYgdGV4dC1jZW50ZXIgdGV4dC1bMTRweF0gdGV4dC1bIzczNzM3M11cIj57eyBlbXB0eU1lc3NhZ2UgfX08L3A+XG4gICAgPC9kaXY+XG4gIDwvc2VjdGlvbj5cbjwvZGl2PlxuIl19