pdm-ui-kit 0.1.4 → 0.1.6
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.
- package/esm2020/lib/components/accordion/accordion.component.mjs +42 -0
- package/esm2020/lib/components/alert/alert.component.mjs +35 -0
- package/esm2020/lib/components/alert-dialog/alert-dialog.component.mjs +69 -0
- package/{dist/corelusa-pdm-ui-kit/esm2020 → esm2020}/lib/components/aspect-ratio/aspect-ratio.component.mjs +4 -4
- package/{dist/pdm-ui-kit/esm2020 → esm2020}/lib/components/avatar/avatar.component.mjs +5 -5
- package/esm2020/lib/components/badge/badge.component.mjs +23 -0
- package/esm2020/lib/components/breadcrumb/breadcrumb.component.mjs +29 -0
- package/{dist/pdm-ui-kit/esm2020 → esm2020}/lib/components/button/button.component.mjs +4 -4
- package/esm2020/lib/components/button-group/button-group.component.mjs +23 -0
- package/esm2020/lib/components/calendar/calendar.component.mjs +71 -0
- package/esm2020/lib/components/card/card.component.mjs +65 -0
- package/esm2020/lib/components/carousel/carousel.component.mjs +97 -0
- package/esm2020/lib/components/chart/chart.component.mjs +174 -0
- package/{dist/pdm-ui-kit/esm2020 → esm2020}/lib/components/checkbox/checkbox.component.mjs +5 -5
- package/{dist/corelusa-pdm-ui-kit/esm2020 → esm2020}/lib/components/collapsible/collapsible.component.mjs +5 -5
- package/esm2020/lib/components/combobox/combobox.component.mjs +51 -0
- package/esm2020/lib/components/command/command.component.mjs +75 -0
- package/{dist/corelusa-pdm-ui-kit/esm2020 → esm2020}/lib/components/context-menu/context-menu.component.mjs +5 -5
- package/esm2020/lib/components/data-table/data-table.component.mjs +89 -0
- package/esm2020/lib/components/date-picker/date-picker.component.mjs +63 -0
- package/esm2020/lib/components/dialog/dialog.component.mjs +90 -0
- package/esm2020/lib/components/drawer/drawer.component.mjs +72 -0
- package/{dist/corelusa-pdm-ui-kit/esm2020 → esm2020}/lib/components/dropdown-menu/dropdown-menu.component.mjs +5 -5
- package/{dist/pdm-ui-kit/esm2020 → esm2020}/lib/components/empty/empty.component.mjs +4 -4
- package/{dist/pdm-ui-kit/esm2020 → esm2020}/lib/components/field/field.component.mjs +4 -4
- package/{dist/corelusa-pdm-ui-kit/esm2020 → esm2020}/lib/components/hover-card/hover-card.component.mjs +5 -5
- package/{dist/corelusa-pdm-ui-kit/esm2020 → esm2020}/lib/components/icon/icon.component.mjs +4 -4
- package/esm2020/lib/components/input/input.component.mjs +71 -0
- package/esm2020/lib/components/input-group/input-group.component.mjs +63 -0
- package/esm2020/lib/components/input-otp/input-otp.component.mjs +140 -0
- package/esm2020/lib/components/input-password/input-password.component.mjs +78 -0
- package/{dist/pdm-ui-kit/esm2020 → esm2020}/lib/components/item/item.component.mjs +4 -4
- package/{dist/corelusa-pdm-ui-kit/esm2020 → esm2020}/lib/components/kbd/kbd.component.mjs +4 -4
- package/{dist/pdm-ui-kit/esm2020 → esm2020}/lib/components/label/label.component.mjs +4 -4
- package/esm2020/lib/components/menubar/menubar.component.mjs +37 -0
- package/{dist/pdm-ui-kit/esm2020 → esm2020}/lib/components/native-select/native-select.component.mjs +5 -5
- package/{dist/pdm-ui-kit/esm2020 → esm2020}/lib/components/navigation-menu/navigation-menu.component.mjs +4 -4
- package/{dist/pdm-ui-kit/esm2020 → esm2020}/lib/components/pagination/pagination.component.mjs +5 -5
- package/{dist/pdm-ui-kit/esm2020 → esm2020}/lib/components/popover/popover.component.mjs +5 -5
- package/{dist/pdm-ui-kit/esm2020 → esm2020}/lib/components/progress/progress.component.mjs +4 -4
- package/{dist/pdm-ui-kit/esm2020 → esm2020}/lib/components/radio-group/radio-group.component.mjs +4 -4
- package/{dist/corelusa-pdm-ui-kit/esm2020 → esm2020}/lib/components/scroll-area/scroll-area.component.mjs +4 -4
- package/{dist/pdm-ui-kit/esm2020 → esm2020}/lib/components/select/select.component.mjs +5 -5
- package/{dist/pdm-ui-kit/esm2020 → esm2020}/lib/components/separator/separator.component.mjs +4 -4
- package/{dist/corelusa-pdm-ui-kit/esm2020 → esm2020}/lib/components/sheet/sheet.component.mjs +5 -5
- package/{dist/pdm-ui-kit/esm2020 → esm2020}/lib/components/sidebar/sidebar.component.mjs +4 -4
- package/{dist/corelusa-pdm-ui-kit/esm2020 → esm2020}/lib/components/skeleton/skeleton.component.mjs +4 -4
- package/{dist/pdm-ui-kit/esm2020 → esm2020}/lib/components/slider/slider.component.mjs +5 -5
- package/{dist/corelusa-pdm-ui-kit/esm2020 → esm2020}/lib/components/sonner/sonner.component.mjs +4 -4
- package/{dist/corelusa-pdm-ui-kit/esm2020 → esm2020}/lib/components/spinner/spinner.component.mjs +4 -4
- package/{dist/corelusa-pdm-ui-kit/esm2020 → esm2020}/lib/components/switch/switch.component.mjs +5 -5
- package/{dist/pdm-ui-kit/esm2020 → esm2020}/lib/components/table/table.component.mjs +4 -4
- package/{dist/pdm-ui-kit/esm2020 → esm2020}/lib/components/tabs/tabs.component.mjs +5 -5
- package/{dist/corelusa-pdm-ui-kit/esm2020 → esm2020}/lib/components/textarea/textarea.component.mjs +5 -5
- package/{dist/pdm-ui-kit/esm2020 → esm2020}/lib/components/toggle/toggle.component.mjs +4 -4
- package/{dist/corelusa-pdm-ui-kit/esm2020 → esm2020}/lib/components/toggle-group/toggle-group.component.mjs +4 -4
- package/{dist/pdm-ui-kit/esm2020 → esm2020}/lib/components/tooltip/tooltip.component.mjs +4 -4
- package/{dist/pdm-ui-kit/esm2020 → esm2020}/lib/pdm-ui-kit.module.mjs +5 -5
- package/fesm2015/pdm-ui-kit.mjs +2998 -0
- package/fesm2015/pdm-ui-kit.mjs.map +1 -0
- package/fesm2020/pdm-ui-kit.mjs +2993 -0
- package/fesm2020/pdm-ui-kit.mjs.map +1 -0
- package/{dist/corelusa-pdm-ui-kit/lib → lib}/components/accordion/accordion.component.d.ts +1 -1
- package/{dist/corelusa-pdm-ui-kit/lib → lib}/components/alert/alert.component.d.ts +2 -2
- package/{dist/pdm-ui-kit/lib → lib}/components/alert-dialog/alert-dialog.component.d.ts +1 -1
- package/{dist/pdm-ui-kit/lib → lib}/components/aspect-ratio/aspect-ratio.component.d.ts +1 -1
- package/{dist/pdm-ui-kit/lib → lib}/components/avatar/avatar.component.d.ts +2 -2
- package/{dist/corelusa-pdm-ui-kit/lib → lib}/components/badge/badge.component.d.ts +2 -2
- package/{dist/pdm-ui-kit/lib → lib}/components/breadcrumb/breadcrumb.component.d.ts +2 -2
- package/{dist/pdm-ui-kit/lib → lib}/components/button/button.component.d.ts +4 -4
- package/{dist/pdm-ui-kit/lib → lib}/components/button-group/button-group.component.d.ts +2 -2
- package/{dist/pdm-ui-kit/lib → lib}/components/calendar/calendar.component.d.ts +2 -2
- package/{dist/pdm-ui-kit/lib → lib}/components/card/card.component.d.ts +2 -2
- package/{dist/pdm-ui-kit/lib → lib}/components/carousel/carousel.component.d.ts +2 -2
- package/{dist/corelusa-pdm-ui-kit/lib → lib}/components/chart/chart.component.d.ts +2 -2
- package/{dist/pdm-ui-kit/lib → lib}/components/checkbox/checkbox.component.d.ts +2 -2
- package/{dist/pdm-ui-kit/lib → lib}/components/collapsible/collapsible.component.d.ts +1 -1
- package/{dist/corelusa-pdm-ui-kit/lib → lib}/components/combobox/combobox.component.d.ts +1 -1
- package/{dist/corelusa-pdm-ui-kit/lib → lib}/components/command/command.component.d.ts +1 -1
- package/{dist/pdm-ui-kit/lib → lib}/components/context-menu/context-menu.component.d.ts +1 -1
- package/{dist/corelusa-pdm-ui-kit/lib → lib}/components/data-table/data-table.component.d.ts +1 -1
- package/{dist/corelusa-pdm-ui-kit/lib → lib}/components/date-picker/date-picker.component.d.ts +2 -2
- package/{dist/pdm-ui-kit/lib → lib}/components/dialog/dialog.component.d.ts +2 -2
- package/{dist/corelusa-pdm-ui-kit/lib → lib}/components/drawer/drawer.component.d.ts +2 -2
- package/{dist/pdm-ui-kit/lib → lib}/components/dropdown-menu/dropdown-menu.component.d.ts +2 -2
- package/{dist/corelusa-pdm-ui-kit/lib → lib}/components/empty/empty.component.d.ts +2 -2
- package/{dist/pdm-ui-kit/lib → lib}/components/field/field.component.d.ts +3 -3
- package/{dist/corelusa-pdm-ui-kit/lib → lib}/components/hover-card/hover-card.component.d.ts +3 -3
- package/lib/components/icon/icon.component.d.ts +18 -0
- package/{dist/corelusa-pdm-ui-kit/lib → lib}/components/input/input.component.d.ts +5 -1
- package/{dist/pdm-ui-kit/lib → lib}/components/input-group/input-group.component.d.ts +1 -1
- package/{dist/corelusa-pdm-ui-kit/lib → lib}/components/input-otp/input-otp.component.d.ts +1 -1
- package/{dist/corelusa-pdm-ui-kit/lib → lib}/components/input-password/input-password.component.d.ts +4 -1
- package/{dist/pdm-ui-kit/lib → lib}/components/item/item.component.d.ts +1 -1
- package/{dist/pdm-ui-kit/lib → lib}/components/kbd/kbd.component.d.ts +1 -1
- package/{dist/corelusa-pdm-ui-kit/lib → lib}/components/label/label.component.d.ts +1 -1
- package/{dist/pdm-ui-kit/lib → lib}/components/menubar/menubar.component.d.ts +2 -1
- package/{dist/corelusa-pdm-ui-kit/lib → lib}/components/native-select/native-select.component.d.ts +1 -1
- package/{dist/corelusa-pdm-ui-kit/lib → lib}/components/navigation-menu/navigation-menu.component.d.ts +1 -1
- package/{dist/pdm-ui-kit/lib → lib}/components/pagination/pagination.component.d.ts +1 -1
- package/{dist/corelusa-pdm-ui-kit/lib → lib}/components/popover/popover.component.d.ts +1 -1
- package/{dist/corelusa-pdm-ui-kit/lib → lib}/components/progress/progress.component.d.ts +1 -1
- package/{dist/corelusa-pdm-ui-kit/lib → lib}/components/radio-group/radio-group.component.d.ts +1 -1
- package/{dist/pdm-ui-kit/lib → lib}/components/scroll-area/scroll-area.component.d.ts +1 -1
- package/{dist/pdm-ui-kit/lib → lib}/components/select/select.component.d.ts +1 -1
- package/{dist/corelusa-pdm-ui-kit/lib → lib}/components/separator/separator.component.d.ts +1 -1
- package/{dist/pdm-ui-kit/lib → lib}/components/sheet/sheet.component.d.ts +2 -2
- package/{dist/pdm-ui-kit/lib → lib}/components/sidebar/sidebar.component.d.ts +1 -1
- package/{dist/pdm-ui-kit/lib → lib}/components/skeleton/skeleton.component.d.ts +1 -1
- package/{dist/pdm-ui-kit/lib → lib}/components/slider/slider.component.d.ts +1 -1
- package/{dist/corelusa-pdm-ui-kit/lib → lib}/components/sonner/sonner.component.d.ts +2 -2
- package/{dist/corelusa-pdm-ui-kit/lib → lib}/components/spinner/spinner.component.d.ts +1 -1
- package/{dist/corelusa-pdm-ui-kit/lib → lib}/components/switch/switch.component.d.ts +1 -1
- package/{dist/corelusa-pdm-ui-kit/lib → lib}/components/table/table.component.d.ts +1 -1
- package/{dist/corelusa-pdm-ui-kit/lib → lib}/components/tabs/tabs.component.d.ts +1 -1
- package/{dist/corelusa-pdm-ui-kit/lib → lib}/components/textarea/textarea.component.d.ts +1 -1
- package/{dist/pdm-ui-kit/lib → lib}/components/toggle/toggle.component.d.ts +2 -2
- package/{dist/corelusa-pdm-ui-kit/lib → lib}/components/toggle-group/toggle-group.component.d.ts +1 -1
- package/{dist/corelusa-pdm-ui-kit/lib → lib}/components/tooltip/tooltip.component.d.ts +1 -1
- package/package.json +22 -15
- package/dist/corelusa-pdm-ui-kit/README.md +0 -79
- package/dist/corelusa-pdm-ui-kit/esm2020/corelusa-pdm-ui-kit.mjs +0 -5
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/components/accordion/accordion.component.mjs +0 -42
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/components/alert/alert.component.mjs +0 -35
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/components/alert-dialog/alert-dialog.component.mjs +0 -69
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/components/avatar/avatar.component.mjs +0 -46
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/components/badge/badge.component.mjs +0 -23
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/components/breadcrumb/breadcrumb.component.mjs +0 -29
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/components/button/button.component.mjs +0 -82
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/components/button-group/button-group.component.mjs +0 -23
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/components/calendar/calendar.component.mjs +0 -71
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/components/card/card.component.mjs +0 -65
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/components/carousel/carousel.component.mjs +0 -97
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/components/chart/chart.component.mjs +0 -174
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/components/checkbox/checkbox.component.mjs +0 -47
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/components/combobox/combobox.component.mjs +0 -51
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/components/command/command.component.mjs +0 -75
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/components/data-table/data-table.component.mjs +0 -89
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/components/date-picker/date-picker.component.mjs +0 -63
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/components/dialog/dialog.component.mjs +0 -90
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/components/drawer/drawer.component.mjs +0 -72
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/components/empty/empty.component.mjs +0 -58
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/components/field/field.component.mjs +0 -52
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/components/input/input.component.mjs +0 -65
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/components/input-group/input-group.component.mjs +0 -54
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/components/input-otp/input-otp.component.mjs +0 -140
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/components/input-password/input-password.component.mjs +0 -72
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/components/item/item.component.mjs +0 -23
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/components/label/label.component.mjs +0 -23
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/components/menubar/menubar.component.mjs +0 -31
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/components/native-select/native-select.component.mjs +0 -42
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/components/navigation-menu/navigation-menu.component.mjs +0 -20
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/components/pagination/pagination.component.mjs +0 -47
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/components/popover/popover.component.mjs +0 -58
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/components/progress/progress.component.mjs +0 -33
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/components/radio-group/radio-group.component.mjs +0 -38
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/components/select/select.component.mjs +0 -38
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/components/separator/separator.component.mjs +0 -26
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/components/sidebar/sidebar.component.mjs +0 -20
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/components/slider/slider.component.mjs +0 -46
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/components/table/table.component.mjs +0 -17
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/components/tabs/tabs.component.mjs +0 -31
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/components/toggle/toggle.component.mjs +0 -41
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/components/tooltip/tooltip.component.mjs +0 -33
- package/dist/corelusa-pdm-ui-kit/esm2020/lib/pdm-ui-kit.module.mjs +0 -245
- package/dist/corelusa-pdm-ui-kit/fesm2015/corelusa-pdm-ui-kit.mjs +0 -2959
- package/dist/corelusa-pdm-ui-kit/fesm2015/corelusa-pdm-ui-kit.mjs.map +0 -1
- package/dist/corelusa-pdm-ui-kit/fesm2020/corelusa-pdm-ui-kit.mjs +0 -2954
- package/dist/corelusa-pdm-ui-kit/fesm2020/corelusa-pdm-ui-kit.mjs.map +0 -1
- package/dist/corelusa-pdm-ui-kit/index.d.ts +0 -5
- package/dist/corelusa-pdm-ui-kit/lib/components/alert-dialog/alert-dialog.component.d.ts +0 -21
- package/dist/corelusa-pdm-ui-kit/lib/components/aspect-ratio/aspect-ratio.component.d.ts +0 -10
- package/dist/corelusa-pdm-ui-kit/lib/components/avatar/avatar.component.d.ts +0 -20
- package/dist/corelusa-pdm-ui-kit/lib/components/breadcrumb/breadcrumb.component.d.ts +0 -10
- package/dist/corelusa-pdm-ui-kit/lib/components/button/button.component.d.ts +0 -24
- package/dist/corelusa-pdm-ui-kit/lib/components/button-group/button-group.component.d.ts +0 -9
- package/dist/corelusa-pdm-ui-kit/lib/components/calendar/calendar.component.d.ts +0 -28
- package/dist/corelusa-pdm-ui-kit/lib/components/card/card.component.d.ts +0 -24
- package/dist/corelusa-pdm-ui-kit/lib/components/carousel/carousel.component.d.ts +0 -25
- package/dist/corelusa-pdm-ui-kit/lib/components/checkbox/checkbox.component.d.ts +0 -17
- package/dist/corelusa-pdm-ui-kit/lib/components/collapsible/collapsible.component.d.ts +0 -14
- package/dist/corelusa-pdm-ui-kit/lib/components/context-menu/context-menu.component.d.ts +0 -26
- package/dist/corelusa-pdm-ui-kit/lib/components/dialog/dialog.component.d.ts +0 -30
- package/dist/corelusa-pdm-ui-kit/lib/components/dropdown-menu/dropdown-menu.component.d.ts +0 -34
- package/dist/corelusa-pdm-ui-kit/lib/components/field/field.component.d.ts +0 -18
- package/dist/corelusa-pdm-ui-kit/lib/components/icon/icon.component.d.ts +0 -18
- package/dist/corelusa-pdm-ui-kit/lib/components/input-group/input-group.component.d.ts +0 -19
- package/dist/corelusa-pdm-ui-kit/lib/components/item/item.component.d.ts +0 -8
- package/dist/corelusa-pdm-ui-kit/lib/components/kbd/kbd.component.d.ts +0 -6
- package/dist/corelusa-pdm-ui-kit/lib/components/menubar/menubar.component.d.ts +0 -17
- package/dist/corelusa-pdm-ui-kit/lib/components/pagination/pagination.component.d.ts +0 -13
- package/dist/corelusa-pdm-ui-kit/lib/components/scroll-area/scroll-area.component.d.ts +0 -7
- package/dist/corelusa-pdm-ui-kit/lib/components/select/select.component.d.ts +0 -19
- package/dist/corelusa-pdm-ui-kit/lib/components/sheet/sheet.component.d.ts +0 -13
- package/dist/corelusa-pdm-ui-kit/lib/components/sidebar/sidebar.component.d.ts +0 -7
- package/dist/corelusa-pdm-ui-kit/lib/components/skeleton/skeleton.component.d.ts +0 -6
- package/dist/corelusa-pdm-ui-kit/lib/components/slider/slider.component.d.ts +0 -15
- package/dist/corelusa-pdm-ui-kit/lib/components/toggle/toggle.component.d.ts +0 -14
- package/dist/corelusa-pdm-ui-kit/package.json +0 -47
- package/dist/pdm-ui-kit/README.md +0 -128
- package/dist/pdm-ui-kit/esm2020/lib/components/accordion/accordion.component.mjs +0 -42
- package/dist/pdm-ui-kit/esm2020/lib/components/alert/alert.component.mjs +0 -35
- package/dist/pdm-ui-kit/esm2020/lib/components/alert-dialog/alert-dialog.component.mjs +0 -69
- package/dist/pdm-ui-kit/esm2020/lib/components/aspect-ratio/aspect-ratio.component.mjs +0 -31
- package/dist/pdm-ui-kit/esm2020/lib/components/badge/badge.component.mjs +0 -23
- package/dist/pdm-ui-kit/esm2020/lib/components/breadcrumb/breadcrumb.component.mjs +0 -29
- package/dist/pdm-ui-kit/esm2020/lib/components/button-group/button-group.component.mjs +0 -23
- package/dist/pdm-ui-kit/esm2020/lib/components/calendar/calendar.component.mjs +0 -71
- package/dist/pdm-ui-kit/esm2020/lib/components/card/card.component.mjs +0 -65
- package/dist/pdm-ui-kit/esm2020/lib/components/carousel/carousel.component.mjs +0 -97
- package/dist/pdm-ui-kit/esm2020/lib/components/chart/chart.component.mjs +0 -174
- package/dist/pdm-ui-kit/esm2020/lib/components/collapsible/collapsible.component.mjs +0 -43
- package/dist/pdm-ui-kit/esm2020/lib/components/combobox/combobox.component.mjs +0 -51
- package/dist/pdm-ui-kit/esm2020/lib/components/command/command.component.mjs +0 -75
- package/dist/pdm-ui-kit/esm2020/lib/components/context-menu/context-menu.component.mjs +0 -78
- package/dist/pdm-ui-kit/esm2020/lib/components/data-table/data-table.component.mjs +0 -89
- package/dist/pdm-ui-kit/esm2020/lib/components/date-picker/date-picker.component.mjs +0 -63
- package/dist/pdm-ui-kit/esm2020/lib/components/dialog/dialog.component.mjs +0 -90
- package/dist/pdm-ui-kit/esm2020/lib/components/drawer/drawer.component.mjs +0 -72
- package/dist/pdm-ui-kit/esm2020/lib/components/dropdown-menu/dropdown-menu.component.mjs +0 -120
- package/dist/pdm-ui-kit/esm2020/lib/components/hover-card/hover-card.component.mjs +0 -44
- package/dist/pdm-ui-kit/esm2020/lib/components/icon/icon.component.mjs +0 -94
- package/dist/pdm-ui-kit/esm2020/lib/components/input/input.component.mjs +0 -65
- package/dist/pdm-ui-kit/esm2020/lib/components/input-group/input-group.component.mjs +0 -63
- package/dist/pdm-ui-kit/esm2020/lib/components/input-otp/input-otp.component.mjs +0 -140
- package/dist/pdm-ui-kit/esm2020/lib/components/input-password/input-password.component.mjs +0 -72
- package/dist/pdm-ui-kit/esm2020/lib/components/kbd/kbd.component.mjs +0 -17
- package/dist/pdm-ui-kit/esm2020/lib/components/menubar/menubar.component.mjs +0 -31
- package/dist/pdm-ui-kit/esm2020/lib/components/scroll-area/scroll-area.component.mjs +0 -20
- package/dist/pdm-ui-kit/esm2020/lib/components/sheet/sheet.component.mjs +0 -39
- package/dist/pdm-ui-kit/esm2020/lib/components/skeleton/skeleton.component.mjs +0 -17
- package/dist/pdm-ui-kit/esm2020/lib/components/sonner/sonner.component.mjs +0 -39
- package/dist/pdm-ui-kit/esm2020/lib/components/spinner/spinner.component.mjs +0 -20
- package/dist/pdm-ui-kit/esm2020/lib/components/switch/switch.component.mjs +0 -35
- package/dist/pdm-ui-kit/esm2020/lib/components/textarea/textarea.component.mjs +0 -59
- package/dist/pdm-ui-kit/esm2020/lib/components/toggle-group/toggle-group.component.mjs +0 -31
- package/dist/pdm-ui-kit/esm2020/public-api.mjs +0 -59
- package/dist/pdm-ui-kit/fesm2015/pdm-ui-kit.mjs +0 -2980
- package/dist/pdm-ui-kit/fesm2015/pdm-ui-kit.mjs.map +0 -1
- package/dist/pdm-ui-kit/fesm2020/pdm-ui-kit.mjs +0 -2975
- package/dist/pdm-ui-kit/fesm2020/pdm-ui-kit.mjs.map +0 -1
- package/dist/pdm-ui-kit/lib/components/accordion/accordion.component.d.ts +0 -19
- package/dist/pdm-ui-kit/lib/components/alert/alert.component.d.ts +0 -13
- package/dist/pdm-ui-kit/lib/components/badge/badge.component.d.ts +0 -9
- package/dist/pdm-ui-kit/lib/components/chart/chart.component.d.ts +0 -41
- package/dist/pdm-ui-kit/lib/components/combobox/combobox.component.d.ts +0 -18
- package/dist/pdm-ui-kit/lib/components/command/command.component.d.ts +0 -33
- package/dist/pdm-ui-kit/lib/components/data-table/data-table.component.d.ts +0 -36
- package/dist/pdm-ui-kit/lib/components/date-picker/date-picker.component.d.ts +0 -23
- package/dist/pdm-ui-kit/lib/components/drawer/drawer.component.d.ts +0 -27
- package/dist/pdm-ui-kit/lib/components/empty/empty.component.d.ts +0 -19
- package/dist/pdm-ui-kit/lib/components/hover-card/hover-card.component.d.ts +0 -14
- package/dist/pdm-ui-kit/lib/components/icon/icon.component.d.ts +0 -18
- package/dist/pdm-ui-kit/lib/components/input/input.component.d.ts +0 -23
- package/dist/pdm-ui-kit/lib/components/input-otp/input-otp.component.d.ts +0 -26
- package/dist/pdm-ui-kit/lib/components/input-password/input-password.component.d.ts +0 -25
- package/dist/pdm-ui-kit/lib/components/label/label.component.d.ts +0 -8
- package/dist/pdm-ui-kit/lib/components/native-select/native-select.component.d.ts +0 -20
- package/dist/pdm-ui-kit/lib/components/navigation-menu/navigation-menu.component.d.ts +0 -12
- package/dist/pdm-ui-kit/lib/components/popover/popover.component.d.ts +0 -17
- package/dist/pdm-ui-kit/lib/components/progress/progress.component.d.ts +0 -10
- package/dist/pdm-ui-kit/lib/components/radio-group/radio-group.component.d.ts +0 -19
- package/dist/pdm-ui-kit/lib/components/separator/separator.component.d.ts +0 -9
- package/dist/pdm-ui-kit/lib/components/sonner/sonner.component.d.ts +0 -13
- package/dist/pdm-ui-kit/lib/components/spinner/spinner.component.d.ts +0 -7
- package/dist/pdm-ui-kit/lib/components/switch/switch.component.d.ts +0 -13
- package/dist/pdm-ui-kit/lib/components/table/table.component.d.ts +0 -6
- package/dist/pdm-ui-kit/lib/components/tabs/tabs.component.d.ts +0 -16
- package/dist/pdm-ui-kit/lib/components/textarea/textarea.component.d.ts +0 -21
- package/dist/pdm-ui-kit/lib/components/toggle-group/toggle-group.component.d.ts +0 -16
- package/dist/pdm-ui-kit/lib/components/tooltip/tooltip.component.d.ts +0 -10
- package/dist/pdm-ui-kit/lib/pdm-ui-kit.module.d.ts +0 -64
- package/dist/pdm-ui-kit/package.json +0 -44
- package/dist/pdm-ui-kit/public-api.d.ts +0 -58
- package/ng-package.json +0 -8
- package/pdm-ui-kit-0.1.1.tgz +0 -0
- package/pdm-ui-kit-0.1.2.tgz +0 -0
- package/pdm-ui-kit-0.1.3.tgz +0 -0
- package/pdm-ui-kit-0.1.4.tgz +0 -0
- package/src/lib/components/accordion/accordion.component.html +0 -34
- package/src/lib/components/accordion/accordion.component.ts +0 -38
- package/src/lib/components/alert/alert.component.html +0 -52
- package/src/lib/components/alert/alert.component.ts +0 -25
- package/src/lib/components/alert-dialog/alert-dialog.component.html +0 -41
- package/src/lib/components/alert-dialog/alert-dialog.component.ts +0 -45
- package/src/lib/components/aspect-ratio/aspect-ratio.component.html +0 -11
- package/src/lib/components/aspect-ratio/aspect-ratio.component.ts +0 -18
- package/src/lib/components/avatar/avatar.component.html +0 -21
- package/src/lib/components/avatar/avatar.component.ts +0 -32
- package/src/lib/components/badge/badge.component.html +0 -28
- package/src/lib/components/badge/badge.component.ts +0 -23
- package/src/lib/components/breadcrumb/breadcrumb.component.html +0 -39
- package/src/lib/components/breadcrumb/breadcrumb.component.ts +0 -26
- package/src/lib/components/button/button.component.html +0 -15
- package/src/lib/components/button/button.component.ts +0 -84
- package/src/lib/components/button-group/button-group.component.html +0 -39
- package/src/lib/components/button-group/button-group.component.ts +0 -15
- package/src/lib/components/calendar/calendar.component.html +0 -73
- package/src/lib/components/calendar/calendar.component.ts +0 -78
- package/src/lib/components/card/card.component.html +0 -77
- package/src/lib/components/card/card.component.ts +0 -39
- package/src/lib/components/carousel/carousel.component.html +0 -86
- package/src/lib/components/carousel/carousel.component.ts +0 -100
- package/src/lib/components/chart/chart.component.html +0 -143
- package/src/lib/components/chart/chart.component.ts +0 -147
- package/src/lib/components/checkbox/checkbox.component.html +0 -38
- package/src/lib/components/checkbox/checkbox.component.ts +0 -32
- package/src/lib/components/collapsible/collapsible.component.html +0 -26
- package/src/lib/components/collapsible/collapsible.component.ts +0 -29
- package/src/lib/components/combobox/combobox.component.html +0 -42
- package/src/lib/components/combobox/combobox.component.ts +0 -32
- package/src/lib/components/command/command.component.html +0 -55
- package/src/lib/components/command/command.component.ts +0 -67
- package/src/lib/components/context-menu/context-menu.component.html +0 -47
- package/src/lib/components/context-menu/context-menu.component.ts +0 -67
- package/src/lib/components/data-table/data-table.component.html +0 -63
- package/src/lib/components/data-table/data-table.component.ts +0 -78
- package/src/lib/components/date-picker/date-picker.component.html +0 -38
- package/src/lib/components/date-picker/date-picker.component.ts +0 -38
- package/src/lib/components/dialog/dialog.component.html +0 -78
- package/src/lib/components/dialog/dialog.component.ts +0 -55
- package/src/lib/components/drawer/drawer.component.html +0 -56
- package/src/lib/components/drawer/drawer.component.ts +0 -43
- package/src/lib/components/dropdown-menu/dropdown-menu.component.html +0 -56
- package/src/lib/components/dropdown-menu/dropdown-menu.component.ts +0 -126
- package/src/lib/components/empty/empty.component.html +0 -29
- package/src/lib/components/empty/empty.component.ts +0 -35
- package/src/lib/components/field/field.component.html +0 -26
- package/src/lib/components/field/field.component.ts +0 -42
- package/src/lib/components/hover-card/hover-card.component.html +0 -24
- package/src/lib/components/hover-card/hover-card.component.ts +0 -36
- package/src/lib/components/icon/icon.component.html +0 -286
- package/src/lib/components/icon/icon.component.ts +0 -133
- package/src/lib/components/input/input.component.html +0 -25
- package/src/lib/components/input/input.component.ts +0 -33
- package/src/lib/components/input-group/input-group.component.html +0 -59
- package/src/lib/components/input-group/input-group.component.ts +0 -32
- package/src/lib/components/input-otp/input-otp.component.html +0 -25
- package/src/lib/components/input-otp/input-otp.component.ts +0 -146
- package/src/lib/components/input-password/input-password.component.html +0 -66
- package/src/lib/components/input-password/input-password.component.ts +0 -46
- package/src/lib/components/item/item.component.html +0 -10
- package/src/lib/components/item/item.component.ts +0 -12
- package/src/lib/components/kbd/kbd.component.html +0 -3
- package/src/lib/components/kbd/kbd.component.ts +0 -10
- package/src/lib/components/label/label.component.html +0 -7
- package/src/lib/components/label/label.component.ts +0 -12
- package/src/lib/components/menubar/menubar.component.html +0 -16
- package/src/lib/components/menubar/menubar.component.ts +0 -29
- package/src/lib/components/native-select/native-select.component.html +0 -17
- package/src/lib/components/native-select/native-select.component.ts +0 -28
- package/src/lib/components/navigation-menu/navigation-menu.component.html +0 -15
- package/src/lib/components/navigation-menu/navigation-menu.component.ts +0 -17
- package/src/lib/components/pagination/pagination.component.html +0 -30
- package/src/lib/components/pagination/pagination.component.ts +0 -37
- package/src/lib/components/popover/popover.component.html +0 -6
- package/src/lib/components/popover/popover.component.ts +0 -40
- package/src/lib/components/progress/progress.component.html +0 -9
- package/src/lib/components/progress/progress.component.ts +0 -20
- package/src/lib/components/radio-group/radio-group.component.html +0 -25
- package/src/lib/components/radio-group/radio-group.component.ts +0 -30
- package/src/lib/components/scroll-area/scroll-area.component.html +0 -5
- package/src/lib/components/scroll-area/scroll-area.component.ts +0 -11
- package/src/lib/components/select/select.component.html +0 -14
- package/src/lib/components/select/select.component.ts +0 -27
- package/src/lib/components/separator/separator.component.html +0 -5
- package/src/lib/components/separator/separator.component.ts +0 -16
- package/src/lib/components/sheet/sheet.component.html +0 -10
- package/src/lib/components/sheet/sheet.component.ts +0 -28
- package/src/lib/components/sidebar/sidebar.component.html +0 -3
- package/src/lib/components/sidebar/sidebar.component.ts +0 -11
- package/src/lib/components/skeleton/skeleton.component.html +0 -1
- package/src/lib/components/skeleton/skeleton.component.ts +0 -10
- package/src/lib/components/slider/slider.component.html +0 -15
- package/src/lib/components/slider/slider.component.ts +0 -31
- package/src/lib/components/sonner/sonner.component.html +0 -10
- package/src/lib/components/sonner/sonner.component.ts +0 -25
- package/src/lib/components/spinner/spinner.component.html +0 -6
- package/src/lib/components/spinner/spinner.component.ts +0 -11
- package/src/lib/components/switch/switch.component.html +0 -14
- package/src/lib/components/switch/switch.component.ts +0 -20
- package/src/lib/components/table/table.component.html +0 -5
- package/src/lib/components/table/table.component.ts +0 -10
- package/src/lib/components/tabs/tabs.component.html +0 -21
- package/src/lib/components/tabs/tabs.component.ts +0 -26
- package/src/lib/components/textarea/textarea.component.html +0 -21
- package/src/lib/components/textarea/textarea.component.ts +0 -28
- package/src/lib/components/toggle/toggle.component.html +0 -16
- package/src/lib/components/toggle/toggle.component.ts +0 -29
- package/src/lib/components/toggle-group/toggle-group.component.html +0 -17
- package/src/lib/components/toggle-group/toggle-group.component.ts +0 -26
- package/src/lib/components/tooltip/tooltip.component.html +0 -6
- package/src/lib/components/tooltip/tooltip.component.ts +0 -20
- package/src/lib/pdm-ui-kit.module.ts +0 -126
- package/src/public-api.ts +0 -58
- package/tsconfig.json +0 -30
- package/tsconfig.lib.json +0 -17
- /package/{dist/pdm-ui-kit/esm2020 → esm2020}/pdm-ui-kit.mjs +0 -0
- /package/{dist/corelusa-pdm-ui-kit/esm2020 → esm2020}/public-api.mjs +0 -0
- /package/{dist/pdm-ui-kit/index.d.ts → index.d.ts} +0 -0
- /package/{dist/corelusa-pdm-ui-kit/lib → lib}/pdm-ui-kit.module.d.ts +0 -0
- /package/{dist/corelusa-pdm-ui-kit/public-api.d.ts → public-api.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 = ['hsl(var(--chart-1))', 'hsl(var(--chart-2))', 'hsl(var(--chart-3))', 'hsl(var(--chart-4))'];
|
|
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(hsl(var(--muted)) 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: "14.3.0", ngImport: i0, type: PdmChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
125
|
+
PdmChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", 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: "14.3.0", 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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WTtzQkFBcEIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCB0eXBlIFBkbUNoYXJ0VHlwZSA9ICdhcmVhJyB8ICdiYXInIHwgJ2xpbmUnIHwgJ3BpZScgfCAncmFkYXInIHwgJ3JhZGlhbCcgfCAndG9vbHRpcHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZG0tY2hhcnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hhcnQuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBQZG1DaGFydENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHR5cGU6IFBkbUNoYXJ0VHlwZSA9ICdiYXInO1xuICBASW5wdXQoKSBjbGFzc05hbWUgPSAnJztcbiAgQElucHV0KCkgdGl0bGUgPSAnQmFyIENoYXJ0IC0gSW50ZXJhY3RpdmUnO1xuICBASW5wdXQoKSBkZXNjcmlwdGlvbiA9ICdTaG93aW5nIHRvdGFsIHZpc2l0b3JzIGZvciB0aGUgbGFzdCAzIG1vbnRocyc7XG5cbiAgQElucHV0KCkgZGVza3RvcExhYmVsID0gJ0Rlc2t0b3AnO1xuICBASW5wdXQoKSBkZXNrdG9wVmFsdWUgPSAnMjQsODI4JztcbiAgQElucHV0KCkgbW9iaWxlTGFiZWwgPSAnTW9iaWxlJztcbiAgQElucHV0KCkgbW9iaWxlVmFsdWUgPSAnMjUsMDEwJztcblxuICBASW5wdXQoKSBsYWJlbHM6IHN0cmluZ1tdID0gWydBcHIgOScsICdBcHIgMTknLCAnQXByIDI5JywgJ01heSA5JywgJ01heSAxOScsICdNYXkgMjknLCAnSnVuIDknLCAnSnVuIDE5JywgJ0p1biAzMCddO1xuXG4gIEBJbnB1dCgpIGJhcnM6IG51bWJlcltdID0gW1xuICAgIDQ4LCAyMSwgNTMsIDY5LCA1NiwgNzcsIDEyLCA1NCwgNjEsIDU5LCA2NiwgMjcsIDI0LCAyNywgODQsIDYyLCA0NCwgMTgsIDQ1LCA1NyxcbiAgICA0NSwgNzIsIDU2LCAxNSwgNzMsIDI1LCA1OSwgODYsIDQ5LCA1OSwgNjksIDkzLCA5NiwgNzIsIDMwLCA1OCwgNzUsIDY3LCA0MywgNDMsXG4gICAgODQsIDg5LCA2MiwgOTYsIDU5LCA3MiwgODIsIDM0LCAzNCwgNzAsIDYyLCA0MiwgNDAsIDgwLCA2MCwgMzMsIDY3LCAzNCwgMzQsIDg4LFxuICAgIDIyLCA4NCwgMTksIDYyLCA1NiwgNDMsIDk1LCA3MCwgNjcsIDg5LCA4NCwgMzEsIDE4LCA5MiwgMTYsIDg3LCA1NCwgNDQsIDkxLCAyMyxcbiAgICA2NywgNzcsIDQ5LCA1OSwgOTMsIDI2LCAyOSwgODEsIDg0LCAzMCwgMjIsIDg0XG4gIF07XG4gIEBJbnB1dCgpIGxpbmU6IG51bWJlcltdID0gWzQwLCAyOCwgNTYsIDQ5LCA3MywgNjcsIDgxLCA1OCwgOTJdO1xuICBASW5wdXQoKSBwaWU6IG51bWJlcltdID0gWzM1LCAyOCwgMjAsIDE3XTtcbiAgQElucHV0KCkgcmFkYXI6IG51bWJlcltdID0gWzcyLCA1OCwgODgsIDY0LCA3OSwgNzBdO1xuICBASW5wdXQoKSByYWRpYWxWYWx1ZSA9IDc2O1xuICBASW5wdXQoKSByYWRpYWxMYWJlbCA9ICdDb21wbGV0aW9uJztcbiAgQElucHV0KCkgcmFkaWFsRGVzY3JpcHRpb24gPSAnVXBkYXRlZCBtb250aGx5JztcbiAgQElucHV0KCkgdG9vbHRpcFRpdGxlID0gJ0p1bmUgMjAyNCc7XG4gIEBJbnB1dCgpIHRvb2x0aXBQcmltYXJ5TGFiZWwgPSAnRGVza3RvcCc7XG4gIEBJbnB1dCgpIHRvb2x0aXBQcmltYXJ5VmFsdWUgPSAnMTIsNDUwJztcbiAgQElucHV0KCkgdG9vbHRpcFNlY29uZGFyeUxhYmVsID0gJ01vYmlsZSc7XG4gIEBJbnB1dCgpIHRvb2x0aXBTZWNvbmRhcnlWYWx1ZSA9ICc4LDExMCc7XG4gIEBJbnB1dCgpIHBpZUxhYmVsczogc3RyaW5nW10gPSBbJ0Rlc2t0b3AnLCAnTW9iaWxlJywgJ1RhYmxldCcsICdPdGhlciddO1xuXG4gIGdldCBub3JtYWxpemVkQmFycygpOiBudW1iZXJbXSB7XG4gICAgaWYgKCF0aGlzLmJhcnMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgbWF4ID0gTWF0aC5tYXgoLi4udGhpcy5iYXJzKTtcbiAgICBpZiAobWF4ID09PSAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5iYXJzLm1hcCgoKSA9PiAwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5iYXJzLm1hcCgodmFsdWUpID0+IE1hdGgubWF4KDgsIE1hdGgucm91bmQoKHZhbHVlIC8gbWF4KSAqIDE4MykpKTtcbiAgfVxuXG4gIGdldCBub3JtYWxpemVkTGluZSgpOiBudW1iZXJbXSB7XG4gICAgaWYgKCF0aGlzLmxpbmUubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgbWF4ID0gTWF0aC5tYXgoLi4udGhpcy5saW5lKTtcbiAgICBpZiAobWF4ID09PSAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5saW5lLm1hcCgoKSA9PiAxNzApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmxpbmUubWFwKCh2YWx1ZSkgPT4gMTgwIC0gTWF0aC5yb3VuZCgodmFsdWUgLyBtYXgpICogMTUwKSk7XG4gIH1cblxuICBnZXQgbGluZVBhdGgoKTogc3RyaW5nIHtcbiAgICBjb25zdCBwb2ludHMgPSB0aGlzLm5vcm1hbGl6ZWRMaW5lO1xuICAgIGlmICghcG9pbnRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IHN0ZXAgPSBwb2ludHMubGVuZ3RoID4gMSA/IDMyMCAvIChwb2ludHMubGVuZ3RoIC0gMSkgOiAwO1xuICAgIHJldHVybiBwb2ludHNcbiAgICAgIC5tYXAoKHksIGluZGV4KSA9PiBgJHtpbmRleCA9PT0gMCA/ICdNJyA6ICdMJ30gJHtNYXRoLnJvdW5kKGluZGV4ICogc3RlcCl9ICR7eX1gKVxuICAgICAgLmpvaW4oJyAnKTtcbiAgfVxuXG4gIGdldCBhcmVhUGF0aCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGxpbmVQYXRoID0gdGhpcy5saW5lUGF0aDtcbiAgICBpZiAoIWxpbmVQYXRoKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke2xpbmVQYXRofSBMIDMyMCAxODAgTCAwIDE4MCBaYDtcbiAgfVxuXG4gIGdldCBwaWVTZWdtZW50cygpOiB7IGNvbG9yOiBzdHJpbmc7IHNpemU6IG51bWJlcjsgb2Zmc2V0OiBudW1iZXI7IGxhYmVsOiBzdHJpbmcgfVtdIHtcbiAgICBjb25zdCB0b3RhbCA9IHRoaXMucGllLnJlZHVjZSgoYWNjLCB2YWx1ZSkgPT4gYWNjICsgTWF0aC5tYXgodmFsdWUsIDApLCAwKTtcbiAgICBpZiAodG90YWwgPT09IDApIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICBjb25zdCBjb2xvcnMgPSBbJ2hzbCh2YXIoLS1jaGFydC0xKSknLCAnaHNsKHZhcigtLWNoYXJ0LTIpKScsICdoc2wodmFyKC0tY2hhcnQtMykpJywgJ2hzbCh2YXIoLS1jaGFydC00KSknXTtcbiAgICByZXR1cm4gdGhpcy5waWUubWFwKCh2YWx1ZSwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IHNpemUgPSAoTWF0aC5tYXgodmFsdWUsIDApIC8gdG90YWwpICogMTAwO1xuICAgICAgY29uc3Qgc2VnbWVudCA9IHtcbiAgICAgICAgY29sb3I6IGNvbG9yc1tpbmRleCAlIGNvbG9ycy5sZW5ndGhdLFxuICAgICAgICBzaXplLFxuICAgICAgICBvZmZzZXQsXG4gICAgICAgIGxhYmVsOiB0aGlzLnBpZUxhYmVsc1tpbmRleF0gPz8gYFNlcmllcyAke2luZGV4ICsgMX1gXG4gICAgICB9O1xuICAgICAgb2Zmc2V0ICs9IHNpemU7XG4gICAgICByZXR1cm4gc2VnbWVudDtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBwaWVHcmFkaWVudCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHNlZ21lbnRzID0gdGhpcy5waWVTZWdtZW50cztcbiAgICBpZiAoIXNlZ21lbnRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuICdjb25pYy1ncmFkaWVudChoc2wodmFyKC0tbXV0ZWQpKSAwIDEwMCUpJztcbiAgICB9XG5cbiAgICByZXR1cm4gYGNvbmljLWdyYWRpZW50KCR7c2VnbWVudHNcbiAgICAgIC5tYXAoKHNlZ21lbnQpID0+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==
|
|
@@ -22,11 +22,11 @@ export class PdmCheckboxComponent {
|
|
|
22
22
|
this.checkedChange.emit(!this.checked);
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
|
-
PdmCheckboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
26
|
-
PdmCheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
27
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
25
|
+
PdmCheckboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmCheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
26
|
+
PdmCheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", 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-sm',\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: "14.3.0", ngImport: i0, type: PdmCheckboxComponent, decorators: [{
|
|
28
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-
|
|
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-sm',\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
30
|
}], propDecorators: { id: [{
|
|
31
31
|
type: Input
|
|
32
32
|
}], checked: [{
|
|
@@ -44,4 +44,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
44
44
|
}], checkedChange: [{
|
|
45
45
|
type: Output
|
|
46
46
|
}] } });
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFTaEcsTUFBTSxPQUFPLG9CQUFvQjtJQUxqQztRQU1XLE9BQUUsR0FBRyxFQUFFLENBQUM7UUFDUixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsWUFBTyxHQUF1QixTQUFTLENBQUM7UUFDeEMsVUFBSyxHQUFHLDZCQUE2QixDQUFDO1FBQ3RDLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFFZCxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7S0FhdkQ7SUFYQyxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUM1RixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QyxDQUFDOztpSEFyQlUsb0JBQW9CO3FHQUFwQixvQkFBb0IseVBDVGpDLDhqREFzQ0E7MkZEN0JhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxjQUFjLG1CQUVQLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLEVBQUU7c0JBQVYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFSSxhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCB0eXBlIFBkbUNoZWNrYm94VmFyaWFudCA9ICdkZWZhdWx0JyB8ICdzdWJ0ZXh0JyB8ICdjYXJkJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRtLWNoZWNrYm94JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoZWNrYm94LmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUGRtQ2hlY2tib3hDb21wb25lbnQge1xuICBASW5wdXQoKSBpZCA9ICcnO1xuICBASW5wdXQoKSBjaGVja2VkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIHZhcmlhbnQ6IFBkbUNoZWNrYm94VmFyaWFudCA9ICdkZWZhdWx0JztcbiAgQElucHV0KCkgbGFiZWwgPSAnQWNjZXB0IHRlcm1zIGFuZCBjb25kaXRpb25zJztcbiAgQElucHV0KCkgZGVzY3JpcHRpb24gPSAnJztcbiAgQElucHV0KCkgY2xhc3NOYW1lID0gJyc7XG5cbiAgQE91dHB1dCgpIGNoZWNrZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgZ2V0IGhhc0Rlc2NyaXB0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZhcmlhbnQgPT09ICdzdWJ0ZXh0JyB8fCB0aGlzLnZhcmlhbnQgPT09ICdjYXJkJyA/ICEhdGhpcy5kZXNjcmlwdGlvbiA6IGZhbHNlO1xuICB9XG5cbiAgb25Ub2dnbGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmNoZWNrZWRDaGFuZ2UuZW1pdCghdGhpcy5jaGVja2VkKTtcbiAgfVxufVxuIiwiPGJ1dHRvblxuICB0eXBlPVwiYnV0dG9uXCJcbiAgcm9sZT1cImNoZWNrYm94XCJcbiAgW2F0dHIuaWRdPVwiaWQgfHwgbnVsbFwiXG4gIFthdHRyLmFyaWEtY2hlY2tlZF09XCJjaGVja2VkXCJcbiAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFtuZ0NsYXNzXT1cIltcbiAgICAndy1mdWxsIGJvcmRlci0wIGJnLXRyYW5zcGFyZW50IHAtMCB0ZXh0LWxlZnQgb3V0bGluZS1ub25lIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZScsXG4gICAgdmFyaWFudCA9PT0gJ2NhcmQnXG4gICAgICA/IGNoZWNrZWRcbiAgICAgICAgPyAnZmxleCBpdGVtcy1zdGFydCBnYXAtMyByb3VuZGVkLVsxMHB4XSBib3JkZXIgYm9yZGVyLWZvcmVncm91bmQgYmctbXV0ZWQgcC0zJ1xuICAgICAgICA6ICdmbGV4IGl0ZW1zLXN0YXJ0IGdhcC0zIHJvdW5kZWQtWzEwcHhdIGJvcmRlciBib3JkZXItYm9yZGVyIGJnLWJhY2tncm91bmQgcC0zJ1xuICAgICAgOiBoYXNEZXNjcmlwdGlvblxuICAgICAgICA/ICdmbGV4IGl0ZW1zLXN0YXJ0IGdhcC0zJ1xuICAgICAgICA6ICdmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMycsXG4gICAgZGlzYWJsZWQgPyAnb3BhY2l0eS01MCcgOiAnJyxcbiAgICBjbGFzc05hbWVcbiAgXVwiXG4gIChjbGljayk9XCJvblRvZ2dsZSgpXCJcbj5cbiAgPHNwYW5cbiAgICBbbmdDbGFzc109XCJbXG4gICAgICAnbXQtMC41IGlubGluZS1mbGV4IGgtNCB3LTQgc2hyaW5rLTAgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtWzZweF0gYm9yZGVyIHNoYWRvdy1zbScsXG4gICAgICBjaGVja2VkID8gJ2JvcmRlci1mb3JlZ3JvdW5kIGJnLWZvcmVncm91bmQgdGV4dC1iYWNrZ3JvdW5kJyA6ICdib3JkZXItaW5wdXQgYmctYmFja2dyb3VuZCB0ZXh0LXRyYW5zcGFyZW50J1xuICAgIF1cIlxuICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gID5cbiAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBjbGFzcz1cImgtMyB3LTNcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgIDxwYXRoIGQ9XCJNMyA4LjVMNi40IDEyTDEzIDRcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxuICAgIDwvc3ZnPlxuICA8L3NwYW4+XG5cbiAgPHNwYW4gW25nQ2xhc3NdPVwiWydtaW4tdy0wIGZsZXgtMScsIGhhc0Rlc2NyaXB0aW9uID8gJ2ZsZXggZmxleC1jb2wgZ2FwLTInIDogJ2ZsZXggaXRlbXMtY2VudGVyJ11cIj5cbiAgICA8c3BhbiBjbGFzcz1cInRleHQtWzE0cHhdIGZvbnQtbWVkaXVtIGxlYWRpbmctNSB0ZXh0LWZvcmVncm91bmRcIj57eyBsYWJlbCB9fTwvc3Bhbj5cbiAgICA8c3BhbiAqbmdJZj1cImhhc0Rlc2NyaXB0aW9uXCIgY2xhc3M9XCJ0ZXh0LVsxNHB4XSBsZWFkaW5nLTUgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+e3sgZGVzY3JpcHRpb24gfX08L3NwYW4+XG4gIDwvc3Bhbj5cbjwvYnV0dG9uPlxuIl19
|
|
@@ -22,11 +22,11 @@ export class PdmCollapsibleComponent {
|
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
|
-
PdmCollapsibleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
26
|
-
PdmCollapsibleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
27
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
25
|
+
PdmCollapsibleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmCollapsibleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
26
|
+
PdmCollapsibleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", 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-[hsl(var(--foreground))]\">{{ title }}</span>\n <span class=\"inline-flex h-8 w-8 items-center justify-center text-[hsl(var(--foreground))]\">\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-[hsl(var(--border))] bg-[hsl(var(--background))] px-4 py-2\"\n >\n <span class=\"font-mono text-[14px] leading-5 text-[hsl(var(--foreground))]\">{{ 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: "14.3.0", ngImport: i0, type: PdmCollapsibleComponent, decorators: [{
|
|
28
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-[
|
|
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-[hsl(var(--foreground))]\">{{ title }}</span>\n <span class=\"inline-flex h-8 w-8 items-center justify-center text-[hsl(var(--foreground))]\">\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-[hsl(var(--border))] bg-[hsl(var(--background))] px-4 py-2\"\n >\n <span class=\"font-mono text-[14px] leading-5 text-[hsl(var(--foreground))]\">{{ item }}</span>\n </div>\n </div>\n</div>\n" }]
|
|
30
30
|
}], propDecorators: { title: [{
|
|
31
31
|
type: Input
|
|
32
32
|
}], open: [{
|
|
@@ -40,4 +40,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
40
40
|
}], openChange: [{
|
|
41
41
|
type: Output
|
|
42
42
|
}] } });
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGFwc2libGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2NvbGxhcHNpYmxlL2NvbGxhcHNpYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9jb2xsYXBzaWJsZS9jb2xsYXBzaWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFPaEcsTUFBTSxPQUFPLHVCQUF1QjtJQUxwQztRQU1XLFVBQUssR0FBRyxrQ0FBa0MsQ0FBQztRQUMzQyxTQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2IsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixVQUFLLEdBQWEsQ0FBQyxzQkFBc0IsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2xGLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFFZCxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztLQWNwRDtJQVpDLElBQUksWUFBWTtRQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUN0QixPQUFPLEVBQUUsQ0FBQztTQUNYO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNsQztJQUNILENBQUM7O29IQXBCVSx1QkFBdUI7d0dBQXZCLHVCQUF1QixzTUNQcEMsbXVDQTBCQTsyRkRuQmEsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLGlCQUFpQixtQkFFVix1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUksVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZG0tY29sbGFwc2libGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29sbGFwc2libGUuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBQZG1Db2xsYXBzaWJsZUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHRpdGxlID0gJ0BwZWR1YXJ0ZSBzdGFycmVkIDMgcmVwb3NpdG9yaWVzJztcbiAgQElucHV0KCkgb3BlbiA9IGZhbHNlO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBpdGVtczogc3RyaW5nW10gPSBbJ0ByYWRpeC11aS9wcmltaXRpdmVzJywgJ0ByYWRpeC11aS9jb2xvcnMnLCAnQHN0aXRjaGVzL3JlYWN0J107XG4gIEBJbnB1dCgpIGNsYXNzTmFtZSA9ICcnO1xuXG4gIEBPdXRwdXQoKSBvcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIGdldCB2aXNpYmxlSXRlbXMoKTogc3RyaW5nW10ge1xuICAgIGlmICghdGhpcy5pdGVtcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMub3BlbiA/IHRoaXMuaXRlbXMgOiB0aGlzLml0ZW1zLnNsaWNlKDAsIDEpO1xuICB9XG5cbiAgdG9nZ2xlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5vcGVuQ2hhbmdlLmVtaXQoIXRoaXMub3Blbik7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IFtuZ0NsYXNzXT1cIlsnZmxleCB3LVszNTBweF0gZmxleC1jb2wgZ2FwLTInLCBjbGFzc05hbWVdXCI+XG4gIDxidXR0b25cbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIGNsYXNzPVwiZmxleCB3LWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBweC00IHRleHQtbGVmdFwiXG4gICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJvcGVuXCJcbiAgICAoY2xpY2spPVwidG9nZ2xlKClcIlxuICA+XG4gICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LVsxNHB4XSBmb250LXNlbWlib2xkIGxlYWRpbmctNSB0ZXh0LVtoc2wodmFyKC0tZm9yZWdyb3VuZCkpXVwiPnt7IHRpdGxlIH19PC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPVwiaW5saW5lLWZsZXggaC04IHctOCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC1baHNsKHZhcigtLWZvcmVncm91bmQpKV1cIj5cbiAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGNsYXNzPVwiaC00IHctNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICA8cGF0aCBkPVwiTTcgMTVMMTIgMjBMMTcgMTVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XG4gICAgICAgIDxwYXRoIGQ9XCJNMTcgOUwxMiA0TDcgOVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cbiAgICAgIDwvc3ZnPlxuICAgIDwvc3Bhbj5cbiAgPC9idXR0b24+XG5cbiAgPGRpdiBjbGFzcz1cImZsZXggdy1mdWxsIGZsZXgtY29sIGdhcC0yXCI+XG4gICAgPGRpdlxuICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgdmlzaWJsZUl0ZW1zXCJcbiAgICAgIGNsYXNzPVwidy1mdWxsIHJvdW5kZWQtWzhweF0gYm9yZGVyIGJvcmRlci1baHNsKHZhcigtLWJvcmRlcikpXSBiZy1baHNsKHZhcigtLWJhY2tncm91bmQpKV0gcHgtNCBweS0yXCJcbiAgICA+XG4gICAgICA8c3BhbiBjbGFzcz1cImZvbnQtbW9ubyB0ZXh0LVsxNHB4XSBsZWFkaW5nLTUgdGV4dC1baHNsKHZhcigtLWZvcmVncm91bmQpKV1cIj57eyBpdGVtIH19PC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -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: "14.3.0", ngImport: i0, type: PdmComboboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
28
|
+
PdmComboboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", 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-[hsl(var(--border))] bg-[hsl(var(--background))] px-3 py-2 shadow-sm\"\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-[hsl(var(--foreground))]\">{{ selectedLabel }}</span>\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-[hsl(var(--foreground))]\" 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-[hsl(var(--border))] bg-[hsl(var(--background))] shadow-md\"\n >\n <div class=\"flex items-center gap-2 border-b border-[hsl(var(--border))] px-3\">\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-[hsl(var(--muted-foreground))]\" 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-[hsl(var(--muted-foreground))]\">{{ 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-[hsl(var(--muted))]' : ''\"\n (click)=\"select(option)\"\n >\n <span [ngClass]=\"['min-w-0 flex-1 truncate text-[14px] leading-5', option === value ? 'text-[hsl(var(--foreground))]' : 'text-[hsl(var(--foreground))]']\">{{ option }}</span>\n <svg *ngIf=\"option === value\" viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-[hsl(var(--foreground))]\" 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: "14.3.0", 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-[hsl(var(--border))] bg-[hsl(var(--background))] px-3 py-2 shadow-sm\"\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-[hsl(var(--foreground))]\">{{ selectedLabel }}</span>\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-[hsl(var(--foreground))]\" 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-[hsl(var(--border))] bg-[hsl(var(--background))] shadow-md\"\n >\n <div class=\"flex items-center gap-2 border-b border-[hsl(var(--border))] px-3\">\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-[hsl(var(--muted-foreground))]\" 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-[hsl(var(--muted-foreground))]\">{{ 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-[hsl(var(--muted))]' : ''\"\n (click)=\"select(option)\"\n >\n <span [ngClass]=\"['min-w-0 flex-1 truncate text-[14px] leading-5', option === value ? 'text-[hsl(var(--foreground))]' : 'text-[hsl(var(--foreground))]']\">{{ option }}</span>\n <svg *ngIf=\"option === value\" viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-[hsl(var(--foreground))]\" 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm9ib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2NvbWJvYm94L2NvbWJvYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9jb21ib2JveC9jb21ib2JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFPaEcsTUFBTSxPQUFPLG9CQUFvQjtJQUxqQztRQU1XLFNBQUksR0FBRyxLQUFLLENBQUM7UUFDYixnQkFBVyxHQUFHLHFCQUFxQixDQUFDO1FBQ3BDLHNCQUFpQixHQUFHLGtCQUFrQixDQUFDO1FBQ3ZDLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFDZixZQUFPLEdBQWEsQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDMUUsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLFVBQUssR0FBRyxHQUFHLENBQUM7UUFFWCxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUN6QyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7S0FjcEQ7SUFaQyxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUN4QyxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBYztRQUNuQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDOztpSEF2QlUsb0JBQW9CO3FHQUFwQixvQkFBb0IsaVNDUGpDLDY5RUEwQ0E7MkZEbkNhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxjQUFjLG1CQUVQLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLElBQUk7c0JBQVosS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUVJLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZG0tY29tYm9ib3gnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29tYm9ib3guY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBQZG1Db21ib2JveENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIG9wZW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnU2VsZWN0IGZyYW1ld29yay4uLic7XG4gIEBJbnB1dCgpIHNlYXJjaFBsYWNlaG9sZGVyID0gJ1NlYXJjaCBmcmFtZXdvcmsnO1xuICBASW5wdXQoKSBjbGFzc05hbWUgPSAnJztcbiAgQElucHV0KCkgb3B0aW9uczogc3RyaW5nW10gPSBbJ05leHQuanMnLCAnU3ZlbHRlS2l0JywgJ051eHQuanMnLCAnUmVtaXgnLCAnQXN0cm8nXTtcbiAgQElucHV0KCkgdmFsdWUgPSAnJztcbiAgQElucHV0KCkgd2lkdGggPSAyMDA7XG5cbiAgQE91dHB1dCgpIG9wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIGdldCBzZWxlY3RlZExhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUgfHwgdGhpcy5wbGFjZWhvbGRlcjtcbiAgfVxuXG4gIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW5DaGFuZ2UuZW1pdCghdGhpcy5vcGVuKTtcbiAgfVxuXG4gIHNlbGVjdChvcHRpb246IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChvcHRpb24pO1xuICAgIHRoaXMub3BlbkNoYW5nZS5lbWl0KGZhbHNlKTtcbiAgfVxufVxuIiwiPGRpdiBbbmdDbGFzc109XCJbJ2ZsZXggZmxleC1jb2wgZ2FwLTEnLCBjbGFzc05hbWVdXCIgW3N0eWxlLndpZHRoLnB4XT1cIndpZHRoXCI+XG4gIDxidXR0b25cbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBjbGFzcz1cImZsZXggaC05IHctZnVsbCBpdGVtcy1jZW50ZXIgZ2FwLTIgcm91bmRlZC1bOHB4XSBib3JkZXIgYm9yZGVyLVtoc2wodmFyKC0tYm9yZGVyKSldIGJnLVtoc2wodmFyKC0tYmFja2dyb3VuZCkpXSBweC0zIHB5LTIgc2hhZG93LXNtXCJcbiAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIm9wZW5cIlxuICAgIChjbGljayk9XCJ0b2dnbGUoKVwiXG4gID5cbiAgICA8c3BhbiBjbGFzcz1cIm1pbi13LTAgZmxleC0xIHRydW5jYXRlIHRleHQtbGVmdCB0ZXh0LVsxNHB4XSBmb250LW1lZGl1bSBsZWFkaW5nLTUgdGV4dC1baHNsKHZhcigtLWZvcmVncm91bmQpKV1cIj57eyBzZWxlY3RlZExhYmVsIH19PC9zcGFuPlxuICAgIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGNsYXNzPVwiaC00IHctNCB0ZXh0LVtoc2wodmFyKC0tZm9yZWdyb3VuZCkpXVwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgPHBhdGggZD1cIk03IDE1TDEyIDIwTDE3IDE1XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxuICAgICAgPHBhdGggZD1cIk0xNyA5TDEyIDRMNyA5XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxuICAgIDwvc3ZnPlxuICA8L2J1dHRvbj5cblxuICA8ZGl2XG4gICAgKm5nSWY9XCJvcGVuXCJcbiAgICBjbGFzcz1cInctZnVsbCByb3VuZGVkLVs4cHhdIGJvcmRlciBib3JkZXItW2hzbCh2YXIoLS1ib3JkZXIpKV0gYmctW2hzbCh2YXIoLS1iYWNrZ3JvdW5kKSldIHNoYWRvdy1tZFwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgYm9yZGVyLWIgYm9yZGVyLVtoc2wodmFyKC0tYm9yZGVyKSldIHB4LTNcIj5cbiAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGNsYXNzPVwiaC00IHctNCB0ZXh0LVtoc2wodmFyKC0tbXV0ZWQtZm9yZWdyb3VuZCkpXVwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICA8Y2lyY2xlIGN4PVwiMTFcIiBjeT1cIjExXCIgcj1cIjdcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIj48L2NpcmNsZT5cbiAgICAgICAgPHBhdGggZD1cIk0yMCAyMEwxNi42IDE2LjZcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCI+PC9wYXRoPlxuICAgICAgPC9zdmc+XG4gICAgICA8ZGl2IGNsYXNzPVwiaC05IGZsZXgtMSBweS0yIHRleHQtWzE0cHhdIGxlYWRpbmctNSB0ZXh0LVtoc2wodmFyKC0tbXV0ZWQtZm9yZWdyb3VuZCkpXVwiPnt7IHNlYXJjaFBsYWNlaG9sZGVyIH19PC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwicC0xXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uc1wiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cImZsZXggdy1mdWxsIGl0ZW1zLWNlbnRlciBnYXAtMiByb3VuZGVkLVs0cHhdIHB4LTIgcHktWzZweF0gdGV4dC1sZWZ0XCJcbiAgICAgICAgW25nQ2xhc3NdPVwib3B0aW9uID09PSB2YWx1ZSA/ICdiZy1baHNsKHZhcigtLW11dGVkKSldJyA6ICcnXCJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdChvcHRpb24pXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwiWydtaW4tdy0wIGZsZXgtMSB0cnVuY2F0ZSB0ZXh0LVsxNHB4XSBsZWFkaW5nLTUnLCBvcHRpb24gPT09IHZhbHVlID8gJ3RleHQtW2hzbCh2YXIoLS1mb3JlZ3JvdW5kKSldJyA6ICd0ZXh0LVtoc2wodmFyKC0tZm9yZWdyb3VuZCkpXSddXCI+e3sgb3B0aW9uIH19PC9zcGFuPlxuICAgICAgICA8c3ZnICpuZ0lmPVwib3B0aW9uID09PSB2YWx1ZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBjbGFzcz1cImgtNCB3LTQgdGV4dC1baHNsKHZhcigtLWZvcmVncm91bmQpKV1cIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICA8cGF0aCBkPVwiTTUgMTIuNUw5LjIgMTYuN0wxOSA3XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS44XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -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: "14.3.0", ngImport: i0, type: PdmCommandComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
52
|
+
PdmCommandComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", 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-[hsl(var(--muted-foreground))]\">{{ hintLabel }}</span>\n <button\n type=\"button\"\n class=\"inline-flex h-5 items-center gap-0.5 rounded-[6px] border border-[hsl(var(--border))] bg-[hsl(var(--muted))] px-1.5\"\n (click)=\"toggleOpen()\"\n >\n <pdm-icon name=\"command\" [size]=\"12\" className=\"text-[hsl(var(--muted-foreground))]\" [decorative]=\"true\"></pdm-icon>\n <span class=\"text-[12px] leading-4 text-[hsl(var(--muted-foreground))]\">{{ 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-[hsl(var(--border))] bg-[hsl(var(--background))] shadow-md\"\n >\n <div class=\"flex items-center gap-2 border-b border-[hsl(var(--border))] px-3\">\n <pdm-icon name=\"search\" [size]=\"16\" className=\"text-[hsl(var(--muted-foreground))]\" [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-[hsl(var(--foreground))] outline-none placeholder:text-[hsl(var(--muted-foreground))]\"\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-[hsl(var(--muted-foreground))]\">{{ 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-[hsl(var(--muted))]' : ''\n ]\"\n (click)=\"select(item.value)\"\n >\n <span class=\"inline-flex h-4 w-4 items-center justify-center text-[hsl(var(--foreground))]\">\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-[hsl(var(--foreground))]\">{{ item.label }}</span>\n <span *ngIf=\"item.shortcut\" class=\"text-[12px] leading-4 text-[hsl(var(--muted-foreground))]\">{{ item.shortcut }}</span>\n </button>\n <div *ngIf=\"groupIndex === 0 && groupedItems.length > 1\" class=\"my-1 border-t border-[hsl(var(--border))]\"></div>\n </ng-container>\n\n <p *ngIf=\"filteredItems.length === 0\" class=\"py-6 text-center text-[14px] text-[hsl(var(--muted-foreground))]\">{{ 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: "14.3.0", 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-[hsl(var(--muted-foreground))]\">{{ hintLabel }}</span>\n <button\n type=\"button\"\n class=\"inline-flex h-5 items-center gap-0.5 rounded-[6px] border border-[hsl(var(--border))] bg-[hsl(var(--muted))] px-1.5\"\n (click)=\"toggleOpen()\"\n >\n <pdm-icon name=\"command\" [size]=\"12\" className=\"text-[hsl(var(--muted-foreground))]\" [decorative]=\"true\"></pdm-icon>\n <span class=\"text-[12px] leading-4 text-[hsl(var(--muted-foreground))]\">{{ 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-[hsl(var(--border))] bg-[hsl(var(--background))] shadow-md\"\n >\n <div class=\"flex items-center gap-2 border-b border-[hsl(var(--border))] px-3\">\n <pdm-icon name=\"search\" [size]=\"16\" className=\"text-[hsl(var(--muted-foreground))]\" [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-[hsl(var(--foreground))] outline-none placeholder:text-[hsl(var(--muted-foreground))]\"\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-[hsl(var(--muted-foreground))]\">{{ 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-[hsl(var(--muted))]' : ''\n ]\"\n (click)=\"select(item.value)\"\n >\n <span class=\"inline-flex h-4 w-4 items-center justify-center text-[hsl(var(--foreground))]\">\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-[hsl(var(--foreground))]\">{{ item.label }}</span>\n <span *ngIf=\"item.shortcut\" class=\"text-[12px] leading-4 text-[hsl(var(--muted-foreground))]\">{{ item.shortcut }}</span>\n </button>\n <div *ngIf=\"groupIndex === 0 && groupedItems.length > 1\" class=\"my-1 border-t border-[hsl(var(--border))]\"></div>\n </ng-container>\n\n <p *ngIf=\"filteredItems.length === 0\" class=\"py-6 text-center text-[14px] text-[hsl(var(--muted-foreground))]\">{{ 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvY29tbWFuZC9jb21tYW5kLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9jb21tYW5kL2NvbW1hbmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQWlCaEcsTUFBTSxPQUFPLG1CQUFtQjtJQUxoQztRQU1XLFNBQUksR0FBRyxJQUFJLENBQUM7UUFDWixjQUFTLEdBQUcsT0FBTyxDQUFDO1FBQ3BCLFlBQU8sR0FBRyxHQUFHLENBQUM7UUFDZCxnQkFBVyxHQUFHLDZCQUE2QixDQUFDO1FBQzVDLGlCQUFZLEdBQUcsbUJBQW1CLENBQUM7UUFDbkMsVUFBSyxHQUFxQjtZQUNqQyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDaEYsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO1lBQzlFLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1lBQ3RHLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1lBQ3ZGLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1lBQzlGLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1NBQzlGLENBQUM7UUFDTyxjQUFTLEdBQUcsRUFBRSxDQUFDO1FBRWQsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDeEMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFFbkQsVUFBSyxHQUFHLEVBQUUsQ0FBQztLQThCWjtJQTVCQyxJQUFJLGFBQWE7UUFDZixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFDLElBQUksQ0FBQyxDQUFDO1lBQUUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzFCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxFQUE0QixDQUFDO1FBQ2hELEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNyQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUM3QixNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMvQixHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2YsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDbkI7UUFDRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBWTtRQUN4QixJQUFJLENBQUMsS0FBSyxHQUFJLEtBQUssQ0FBQyxNQUEyQixDQUFDLEtBQUssQ0FBQztJQUN4RCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBYTtRQUNsQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDOztnSEFoRFUsbUJBQW1CO29HQUFuQixtQkFBbUIsNFJDakJoQyx1NUZBdURBOzJGRHRDYSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsYUFBYSxtQkFFTix1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFRRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVJLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBQZG1JY29uTmFtZSB9IGZyb20gJy4uL2ljb24vaWNvbi5jb21wb25lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBkbUNvbW1hbmRJdGVtIHtcbiAgbGFiZWw6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbiAgZ3JvdXA/OiBzdHJpbmc7XG4gIGljb24/OiBQZG1JY29uTmFtZTtcbiAgc2hvcnRjdXQ/OiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRtLWNvbW1hbmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29tbWFuZC5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFBkbUNvbW1hbmRDb21wb25lbnQge1xuICBASW5wdXQoKSBvcGVuID0gdHJ1ZTtcbiAgQElucHV0KCkgaGludExhYmVsID0gJ1ByZXNzJztcbiAgQElucHV0KCkgaGludEtleSA9ICdKJztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnVHlwZSBhIGNvbW1hbmQgb3Igc2VhcmNoLi4uJztcbiAgQElucHV0KCkgZW1wdHlNZXNzYWdlID0gJ05vIHJlc3VsdHMgZm91bmQuJztcbiAgQElucHV0KCkgaXRlbXM6IFBkbUNvbW1hbmRJdGVtW10gPSBbXG4gICAgeyBsYWJlbDogJ0NhbGVuZGFyJywgdmFsdWU6ICdjYWxlbmRhcicsIGdyb3VwOiAnU3VnZ2VzdGlvbnMnLCBpY29uOiAnY2FsZW5kYXInIH0sXG4gICAgeyBsYWJlbDogJ1NlYXJjaCBlbW9qaScsIHZhbHVlOiAnZW1vamknLCBncm91cDogJ1N1Z2dlc3Rpb25zJywgaWNvbjogJ3NtaWxlJyB9LFxuICAgIHsgbGFiZWw6ICdDYWxjdWxhdG9yJywgdmFsdWU6ICdjYWxjdWxhdG9yJywgZ3JvdXA6ICdTdWdnZXN0aW9ucycsIGljb246ICdjYWxjdWxhdG9yJywgZGlzYWJsZWQ6IHRydWUgfSxcbiAgICB7IGxhYmVsOiAnUHJvZmlsZScsIHZhbHVlOiAncHJvZmlsZScsIGdyb3VwOiAnU2V0dGluZ3MnLCBpY29uOiAndXNlcicsIHNob3J0Y3V0OiAn4oyYUCcgfSxcbiAgICB7IGxhYmVsOiAnQmlsbGluZycsIHZhbHVlOiAnYmlsbGluZycsIGdyb3VwOiAnU2V0dGluZ3MnLCBpY29uOiAnY3JlZGl0LWNhcmQnLCBzaG9ydGN1dDogJ+KMmEInIH0sXG4gICAgeyBsYWJlbDogJ1NldHRpbmdzJywgdmFsdWU6ICdzZXR0aW5ncycsIGdyb3VwOiAnU2V0dGluZ3MnLCBpY29uOiAnc2V0dGluZ3MnLCBzaG9ydGN1dDogJ+KMmFMnIH1cbiAgXTtcbiAgQElucHV0KCkgY2xhc3NOYW1lID0gJyc7XG5cbiAgQE91dHB1dCgpIGl0ZW1TZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIG9wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgcXVlcnkgPSAnJztcblxuICBnZXQgZmlsdGVyZWRJdGVtcygpOiBQZG1Db21tYW5kSXRlbVtdIHtcbiAgICBjb25zdCBxID0gdGhpcy5xdWVyeS50b0xvd2VyQ2FzZSgpLnRyaW0oKTtcbiAgICBpZiAoIXEpIHJldHVybiB0aGlzLml0ZW1zO1xuICAgIHJldHVybiB0aGlzLml0ZW1zLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5sYWJlbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHEpKTtcbiAgfVxuXG4gIGdldCBncm91cGVkSXRlbXMoKTogeyBuYW1lOiBzdHJpbmc7IGl0ZW1zOiBQZG1Db21tYW5kSXRlbVtdIH1bXSB7XG4gICAgY29uc3QgbWFwID0gbmV3IE1hcDxzdHJpbmcsIFBkbUNvbW1hbmRJdGVtW10+KCk7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuZmlsdGVyZWRJdGVtcykge1xuICAgICAgY29uc3Qga2V5ID0gaXRlbS5ncm91cCB8fCAnJztcbiAgICAgIGNvbnN0IGFyciA9IG1hcC5nZXQoa2V5KSA/PyBbXTtcbiAgICAgIGFyci5wdXNoKGl0ZW0pO1xuICAgICAgbWFwLnNldChrZXksIGFycik7XG4gICAgfVxuICAgIHJldHVybiBBcnJheS5mcm9tKG1hcC5lbnRyaWVzKCkpLm1hcCgoW25hbWUsIGl0ZW1zXSkgPT4gKHsgbmFtZSwgaXRlbXMgfSkpO1xuICB9XG5cbiAgb25RdWVyeUNoYW5nZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnF1ZXJ5ID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcbiAgfVxuXG4gIHRvZ2dsZU9wZW4oKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuQ2hhbmdlLmVtaXQoIXRoaXMub3Blbik7XG4gIH1cblxuICBzZWxlY3QodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuaXRlbVNlbGVjdC5lbWl0KHZhbHVlKTtcbiAgfVxufVxuIiwiPGRpdiBbbmdDbGFzc109XCJbJ3ctZnVsbCcsIGNsYXNzTmFtZV1cIj5cbiAgPGRpdiAqbmdJZj1cIiFvcGVuXCIgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMVwiPlxuICAgIDxzcGFuIGNsYXNzPVwidGV4dC1bMTRweF0gZm9udC1tZWRpdW0gbGVhZGluZy01IHRleHQtW2hzbCh2YXIoLS1tdXRlZC1mb3JlZ3JvdW5kKSldXCI+e3sgaGludExhYmVsIH19PC9zcGFuPlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJpbmxpbmUtZmxleCBoLTUgaXRlbXMtY2VudGVyIGdhcC0wLjUgcm91bmRlZC1bNnB4XSBib3JkZXIgYm9yZGVyLVtoc2wodmFyKC0tYm9yZGVyKSldIGJnLVtoc2wodmFyKC0tbXV0ZWQpKV0gcHgtMS41XCJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVPcGVuKClcIlxuICAgID5cbiAgICAgIDxwZG0taWNvbiBuYW1lPVwiY29tbWFuZFwiIFtzaXplXT1cIjEyXCIgY2xhc3NOYW1lPVwidGV4dC1baHNsKHZhcigtLW11dGVkLWZvcmVncm91bmQpKV1cIiBbZGVjb3JhdGl2ZV09XCJ0cnVlXCI+PC9wZG0taWNvbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1bMTJweF0gbGVhZGluZy00IHRleHQtW2hzbCh2YXIoLS1tdXRlZC1mb3JlZ3JvdW5kKSldXCI+e3sgaGludEtleSB9fTwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG5cbiAgPHNlY3Rpb25cbiAgICAqbmdJZj1cIm9wZW5cIlxuICAgIGNsYXNzPVwiZmxleCB3LWZ1bGwgZmxleC1jb2wgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtWzEwcHhdIGJvcmRlciBib3JkZXItW2hzbCh2YXIoLS1ib3JkZXIpKV0gYmctW2hzbCh2YXIoLS1iYWNrZ3JvdW5kKSldIHNoYWRvdy1tZFwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgYm9yZGVyLWIgYm9yZGVyLVtoc2wodmFyKC0tYm9yZGVyKSldIHB4LTNcIj5cbiAgICAgIDxwZG0taWNvbiBuYW1lPVwic2VhcmNoXCIgW3NpemVdPVwiMTZcIiBjbGFzc05hbWU9XCJ0ZXh0LVtoc2wodmFyKC0tbXV0ZWQtZm9yZWdyb3VuZCkpXVwiIFtkZWNvcmF0aXZlXT1cInRydWVcIj48L3BkbS1pY29uPlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgW3ZhbHVlXT1cInF1ZXJ5XCJcbiAgICAgICAgKGlucHV0KT1cIm9uUXVlcnlDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIGNsYXNzPVwiaC0xMCB3LWZ1bGwgYmctdHJhbnNwYXJlbnQgcHktMyB0ZXh0LVsxNHB4XSBsZWFkaW5nLTUgdGV4dC1baHNsKHZhcigtLWZvcmVncm91bmQpKV0gb3V0bGluZS1ub25lIHBsYWNlaG9sZGVyOnRleHQtW2hzbCh2YXIoLS1tdXRlZC1mb3JlZ3JvdW5kKSldXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwibWF4LWgtWzMwMHB4XSBvdmVyZmxvdy15LWF1dG8gcC0xXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBncm91cCBvZiBncm91cGVkSXRlbXM7IGxldCBncm91cEluZGV4ID0gaW5kZXhcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImdyb3VwLm5hbWVcIiBjbGFzcz1cInB4LTIgcHktWzZweF0gdGV4dC1bMTJweF0gbGVhZGluZy00IHRleHQtW2hzbCh2YXIoLS1tdXRlZC1mb3JlZ3JvdW5kKSldXCI+e3sgZ3JvdXAubmFtZSB9fTwvZGl2PlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ3JvdXAuaXRlbXNcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICBjbGFzcz1cImZsZXggdy1mdWxsIGl0ZW1zLWNlbnRlciBnYXAtMiByb3VuZGVkLVs2cHhdIHB4LTIgcHktWzZweF0gdGV4dC1sZWZ0XCJcbiAgICAgICAgICBbbmdDbGFzc109XCJbXG4gICAgICAgICAgICBpdGVtLmRpc2FibGVkID8gJ29wYWNpdHktNTAnIDogJycsXG4gICAgICAgICAgICBpdGVtLmxhYmVsID09PSAnQ2FsZW5kYXInID8gJ2JnLVtoc2wodmFyKC0tbXV0ZWQpKV0nIDogJydcbiAgICAgICAgICBdXCJcbiAgICAgICAgICAoY2xpY2spPVwic2VsZWN0KGl0ZW0udmFsdWUpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5saW5lLWZsZXggaC00IHctNCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC1baHNsKHZhcigtLWZvcmVncm91bmQpKV1cIj5cbiAgICAgICAgICAgIDxwZG0taWNvbiAqbmdJZj1cIml0ZW0uaWNvblwiIFtuYW1lXT1cIml0ZW0uaWNvblwiIFtzaXplXT1cIjE2XCIgW2RlY29yYXRpdmVdPVwidHJ1ZVwiPjwvcGRtLWljb24+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWluLXctMCBmbGV4LTEgdGV4dC1bMTRweF0gbGVhZGluZy01IHRleHQtW2hzbCh2YXIoLS1mb3JlZ3JvdW5kKSldXCI+e3sgaXRlbS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cIml0ZW0uc2hvcnRjdXRcIiBjbGFzcz1cInRleHQtWzEycHhdIGxlYWRpbmctNCB0ZXh0LVtoc2wodmFyKC0tbXV0ZWQtZm9yZWdyb3VuZCkpXVwiPnt7IGl0ZW0uc2hvcnRjdXQgfX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZ3JvdXBJbmRleCA9PT0gMCAmJiBncm91cGVkSXRlbXMubGVuZ3RoID4gMVwiIGNsYXNzPVwibXktMSBib3JkZXItdCBib3JkZXItW2hzbCh2YXIoLS1ib3JkZXIpKV1cIj48L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8cCAqbmdJZj1cImZpbHRlcmVkSXRlbXMubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJweS02IHRleHQtY2VudGVyIHRleHQtWzE0cHhdIHRleHQtW2hzbCh2YXIoLS1tdXRlZC1mb3JlZ3JvdW5kKSldXCI+e3sgZW1wdHlNZXNzYWdlIH19PC9wPlxuICAgIDwvZGl2PlxuICA8L3NlY3Rpb24+XG48L2Rpdj5cbiJdfQ==
|