pdm-ui-kit 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +99 -50
- package/dist/corelusa-pdm-ui-kit/README.md +79 -0
- package/dist/corelusa-pdm-ui-kit/esm2020/corelusa-pdm-ui-kit.mjs +5 -0
- package/{fesm2015/pdm-ui-kit.mjs → dist/corelusa-pdm-ui-kit/fesm2015/corelusa-pdm-ui-kit.mjs} +1 -1
- package/dist/corelusa-pdm-ui-kit/fesm2015/corelusa-pdm-ui-kit.mjs.map +1 -0
- package/{fesm2020/pdm-ui-kit.mjs → dist/corelusa-pdm-ui-kit/fesm2020/corelusa-pdm-ui-kit.mjs} +1 -1
- package/dist/corelusa-pdm-ui-kit/fesm2020/corelusa-pdm-ui-kit.mjs.map +1 -0
- package/dist/corelusa-pdm-ui-kit/index.d.ts +5 -0
- package/dist/corelusa-pdm-ui-kit/package.json +47 -0
- package/dist/pdm-ui-kit/README.md +128 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/accordion/accordion.component.mjs +42 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/alert/alert.component.mjs +35 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/alert-dialog/alert-dialog.component.mjs +69 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/aspect-ratio/aspect-ratio.component.mjs +31 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/avatar/avatar.component.mjs +46 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/badge/badge.component.mjs +23 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/breadcrumb/breadcrumb.component.mjs +29 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/button/button.component.mjs +82 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/button-group/button-group.component.mjs +23 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/calendar/calendar.component.mjs +71 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/card/card.component.mjs +65 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/carousel/carousel.component.mjs +97 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/chart/chart.component.mjs +174 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/checkbox/checkbox.component.mjs +47 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/collapsible/collapsible.component.mjs +43 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/combobox/combobox.component.mjs +51 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/command/command.component.mjs +75 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/context-menu/context-menu.component.mjs +78 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/data-table/data-table.component.mjs +89 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/date-picker/date-picker.component.mjs +63 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/dialog/dialog.component.mjs +90 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/drawer/drawer.component.mjs +72 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/dropdown-menu/dropdown-menu.component.mjs +120 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/empty/empty.component.mjs +58 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/field/field.component.mjs +64 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/hover-card/hover-card.component.mjs +44 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/icon/icon.component.mjs +94 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/input/input.component.mjs +65 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/input-group/input-group.component.mjs +63 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/input-otp/input-otp.component.mjs +140 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/input-password/input-password.component.mjs +72 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/item/item.component.mjs +23 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/kbd/kbd.component.mjs +17 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/label/label.component.mjs +23 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/menubar/menubar.component.mjs +31 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/native-select/native-select.component.mjs +42 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/navigation-menu/navigation-menu.component.mjs +20 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/pagination/pagination.component.mjs +47 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/popover/popover.component.mjs +58 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/progress/progress.component.mjs +33 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/radio-group/radio-group.component.mjs +38 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/scroll-area/scroll-area.component.mjs +20 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/select/select.component.mjs +38 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/separator/separator.component.mjs +26 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/sheet/sheet.component.mjs +39 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/sidebar/sidebar.component.mjs +20 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/skeleton/skeleton.component.mjs +17 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/slider/slider.component.mjs +46 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/sonner/sonner.component.mjs +39 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/spinner/spinner.component.mjs +20 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/switch/switch.component.mjs +35 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/table/table.component.mjs +17 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/tabs/tabs.component.mjs +31 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/textarea/textarea.component.mjs +59 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/toggle/toggle.component.mjs +41 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/toggle-group/toggle-group.component.mjs +31 -0
- package/dist/pdm-ui-kit/esm2020/lib/components/tooltip/tooltip.component.mjs +33 -0
- package/dist/pdm-ui-kit/esm2020/lib/pdm-ui-kit.module.mjs +245 -0
- package/dist/pdm-ui-kit/esm2020/public-api.mjs +59 -0
- package/dist/pdm-ui-kit/fesm2015/pdm-ui-kit.mjs +2980 -0
- package/dist/pdm-ui-kit/fesm2015/pdm-ui-kit.mjs.map +1 -0
- package/dist/pdm-ui-kit/fesm2020/pdm-ui-kit.mjs +2975 -0
- package/dist/pdm-ui-kit/fesm2020/pdm-ui-kit.mjs.map +1 -0
- package/dist/pdm-ui-kit/lib/components/accordion/accordion.component.d.ts +19 -0
- package/dist/pdm-ui-kit/lib/components/alert/alert.component.d.ts +13 -0
- package/dist/pdm-ui-kit/lib/components/alert-dialog/alert-dialog.component.d.ts +21 -0
- package/dist/pdm-ui-kit/lib/components/aspect-ratio/aspect-ratio.component.d.ts +10 -0
- package/dist/pdm-ui-kit/lib/components/avatar/avatar.component.d.ts +20 -0
- package/dist/pdm-ui-kit/lib/components/badge/badge.component.d.ts +9 -0
- package/dist/pdm-ui-kit/lib/components/breadcrumb/breadcrumb.component.d.ts +10 -0
- package/dist/pdm-ui-kit/lib/components/button/button.component.d.ts +24 -0
- package/dist/pdm-ui-kit/lib/components/button-group/button-group.component.d.ts +9 -0
- package/dist/pdm-ui-kit/lib/components/calendar/calendar.component.d.ts +28 -0
- package/dist/pdm-ui-kit/lib/components/card/card.component.d.ts +24 -0
- package/dist/pdm-ui-kit/lib/components/carousel/carousel.component.d.ts +25 -0
- package/dist/pdm-ui-kit/lib/components/chart/chart.component.d.ts +41 -0
- package/dist/pdm-ui-kit/lib/components/checkbox/checkbox.component.d.ts +17 -0
- package/dist/pdm-ui-kit/lib/components/collapsible/collapsible.component.d.ts +14 -0
- package/dist/pdm-ui-kit/lib/components/combobox/combobox.component.d.ts +18 -0
- package/dist/pdm-ui-kit/lib/components/command/command.component.d.ts +33 -0
- package/dist/pdm-ui-kit/lib/components/context-menu/context-menu.component.d.ts +26 -0
- package/dist/pdm-ui-kit/lib/components/data-table/data-table.component.d.ts +36 -0
- package/dist/pdm-ui-kit/lib/components/date-picker/date-picker.component.d.ts +23 -0
- package/dist/pdm-ui-kit/lib/components/dialog/dialog.component.d.ts +30 -0
- package/dist/pdm-ui-kit/lib/components/drawer/drawer.component.d.ts +27 -0
- package/dist/pdm-ui-kit/lib/components/dropdown-menu/dropdown-menu.component.d.ts +34 -0
- package/dist/pdm-ui-kit/lib/components/empty/empty.component.d.ts +19 -0
- package/dist/pdm-ui-kit/lib/components/field/field.component.d.ts +23 -0
- package/dist/pdm-ui-kit/lib/components/hover-card/hover-card.component.d.ts +14 -0
- package/dist/pdm-ui-kit/lib/components/icon/icon.component.d.ts +18 -0
- package/dist/pdm-ui-kit/lib/components/input/input.component.d.ts +23 -0
- package/dist/pdm-ui-kit/lib/components/input-group/input-group.component.d.ts +22 -0
- package/dist/pdm-ui-kit/lib/components/input-otp/input-otp.component.d.ts +26 -0
- package/dist/pdm-ui-kit/lib/components/input-password/input-password.component.d.ts +25 -0
- package/dist/pdm-ui-kit/lib/components/item/item.component.d.ts +8 -0
- package/dist/pdm-ui-kit/lib/components/kbd/kbd.component.d.ts +6 -0
- package/dist/pdm-ui-kit/lib/components/label/label.component.d.ts +8 -0
- package/dist/pdm-ui-kit/lib/components/menubar/menubar.component.d.ts +17 -0
- package/dist/pdm-ui-kit/lib/components/native-select/native-select.component.d.ts +20 -0
- package/dist/pdm-ui-kit/lib/components/navigation-menu/navigation-menu.component.d.ts +12 -0
- package/dist/pdm-ui-kit/lib/components/pagination/pagination.component.d.ts +13 -0
- package/dist/pdm-ui-kit/lib/components/popover/popover.component.d.ts +17 -0
- package/dist/pdm-ui-kit/lib/components/progress/progress.component.d.ts +10 -0
- package/dist/pdm-ui-kit/lib/components/radio-group/radio-group.component.d.ts +19 -0
- package/dist/pdm-ui-kit/lib/components/scroll-area/scroll-area.component.d.ts +7 -0
- package/dist/pdm-ui-kit/lib/components/select/select.component.d.ts +19 -0
- package/dist/pdm-ui-kit/lib/components/separator/separator.component.d.ts +9 -0
- package/dist/pdm-ui-kit/lib/components/sheet/sheet.component.d.ts +13 -0
- package/dist/pdm-ui-kit/lib/components/sidebar/sidebar.component.d.ts +7 -0
- package/dist/pdm-ui-kit/lib/components/skeleton/skeleton.component.d.ts +6 -0
- package/dist/pdm-ui-kit/lib/components/slider/slider.component.d.ts +15 -0
- package/dist/pdm-ui-kit/lib/components/sonner/sonner.component.d.ts +13 -0
- package/dist/pdm-ui-kit/lib/components/spinner/spinner.component.d.ts +7 -0
- package/dist/pdm-ui-kit/lib/components/switch/switch.component.d.ts +13 -0
- package/dist/pdm-ui-kit/lib/components/table/table.component.d.ts +6 -0
- package/dist/pdm-ui-kit/lib/components/tabs/tabs.component.d.ts +16 -0
- package/dist/pdm-ui-kit/lib/components/textarea/textarea.component.d.ts +21 -0
- package/dist/pdm-ui-kit/lib/components/toggle/toggle.component.d.ts +14 -0
- package/dist/pdm-ui-kit/lib/components/toggle-group/toggle-group.component.d.ts +16 -0
- package/dist/pdm-ui-kit/lib/components/tooltip/tooltip.component.d.ts +10 -0
- package/dist/pdm-ui-kit/lib/pdm-ui-kit.module.d.ts +64 -0
- package/dist/pdm-ui-kit/package.json +44 -0
- package/dist/pdm-ui-kit/public-api.d.ts +58 -0
- package/ng-package.json +8 -0
- package/package.json +13 -20
- 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/src/lib/components/accordion/accordion.component.html +34 -0
- package/src/lib/components/accordion/accordion.component.ts +38 -0
- package/src/lib/components/alert/alert.component.html +52 -0
- package/src/lib/components/alert/alert.component.ts +25 -0
- package/src/lib/components/alert-dialog/alert-dialog.component.html +41 -0
- package/src/lib/components/alert-dialog/alert-dialog.component.ts +45 -0
- package/src/lib/components/aspect-ratio/aspect-ratio.component.html +11 -0
- package/src/lib/components/aspect-ratio/aspect-ratio.component.ts +18 -0
- package/src/lib/components/avatar/avatar.component.html +21 -0
- package/src/lib/components/avatar/avatar.component.ts +32 -0
- package/src/lib/components/badge/badge.component.html +28 -0
- package/src/lib/components/badge/badge.component.ts +23 -0
- package/src/lib/components/breadcrumb/breadcrumb.component.html +39 -0
- package/src/lib/components/breadcrumb/breadcrumb.component.ts +26 -0
- package/src/lib/components/button/button.component.html +15 -0
- package/src/lib/components/button/button.component.ts +84 -0
- package/src/lib/components/button-group/button-group.component.html +39 -0
- package/src/lib/components/button-group/button-group.component.ts +15 -0
- package/src/lib/components/calendar/calendar.component.html +73 -0
- package/src/lib/components/calendar/calendar.component.ts +78 -0
- package/src/lib/components/card/card.component.html +77 -0
- package/src/lib/components/card/card.component.ts +39 -0
- package/src/lib/components/carousel/carousel.component.html +86 -0
- package/src/lib/components/carousel/carousel.component.ts +100 -0
- package/src/lib/components/chart/chart.component.html +143 -0
- package/src/lib/components/chart/chart.component.ts +147 -0
- package/src/lib/components/checkbox/checkbox.component.html +38 -0
- package/src/lib/components/checkbox/checkbox.component.ts +32 -0
- package/src/lib/components/collapsible/collapsible.component.html +26 -0
- package/src/lib/components/collapsible/collapsible.component.ts +29 -0
- package/src/lib/components/combobox/combobox.component.html +42 -0
- package/src/lib/components/combobox/combobox.component.ts +32 -0
- package/src/lib/components/command/command.component.html +55 -0
- package/src/lib/components/command/command.component.ts +67 -0
- package/src/lib/components/context-menu/context-menu.component.html +47 -0
- package/src/lib/components/context-menu/context-menu.component.ts +67 -0
- package/src/lib/components/data-table/data-table.component.html +63 -0
- package/src/lib/components/data-table/data-table.component.ts +78 -0
- package/src/lib/components/date-picker/date-picker.component.html +38 -0
- package/src/lib/components/date-picker/date-picker.component.ts +38 -0
- package/src/lib/components/dialog/dialog.component.html +78 -0
- package/src/lib/components/dialog/dialog.component.ts +55 -0
- package/src/lib/components/drawer/drawer.component.html +56 -0
- package/src/lib/components/drawer/drawer.component.ts +43 -0
- package/src/lib/components/dropdown-menu/dropdown-menu.component.html +56 -0
- package/src/lib/components/dropdown-menu/dropdown-menu.component.ts +126 -0
- package/src/lib/components/empty/empty.component.html +29 -0
- package/src/lib/components/empty/empty.component.ts +35 -0
- package/src/lib/components/field/field.component.html +26 -0
- package/src/lib/components/field/field.component.ts +42 -0
- package/src/lib/components/hover-card/hover-card.component.html +24 -0
- package/src/lib/components/hover-card/hover-card.component.ts +36 -0
- package/src/lib/components/icon/icon.component.html +286 -0
- package/src/lib/components/icon/icon.component.ts +133 -0
- package/src/lib/components/input/input.component.html +25 -0
- package/src/lib/components/input/input.component.ts +33 -0
- package/src/lib/components/input-group/input-group.component.html +59 -0
- package/src/lib/components/input-group/input-group.component.ts +32 -0
- package/src/lib/components/input-otp/input-otp.component.html +25 -0
- package/src/lib/components/input-otp/input-otp.component.ts +146 -0
- package/src/lib/components/input-password/input-password.component.html +66 -0
- package/src/lib/components/input-password/input-password.component.ts +46 -0
- package/src/lib/components/item/item.component.html +10 -0
- package/src/lib/components/item/item.component.ts +12 -0
- package/src/lib/components/kbd/kbd.component.html +3 -0
- package/src/lib/components/kbd/kbd.component.ts +10 -0
- package/src/lib/components/label/label.component.html +7 -0
- package/src/lib/components/label/label.component.ts +12 -0
- package/src/lib/components/menubar/menubar.component.html +16 -0
- package/src/lib/components/menubar/menubar.component.ts +29 -0
- package/src/lib/components/native-select/native-select.component.html +17 -0
- package/src/lib/components/native-select/native-select.component.ts +28 -0
- package/src/lib/components/navigation-menu/navigation-menu.component.html +15 -0
- package/src/lib/components/navigation-menu/navigation-menu.component.ts +17 -0
- package/src/lib/components/pagination/pagination.component.html +30 -0
- package/src/lib/components/pagination/pagination.component.ts +37 -0
- package/src/lib/components/popover/popover.component.html +6 -0
- package/src/lib/components/popover/popover.component.ts +40 -0
- package/src/lib/components/progress/progress.component.html +9 -0
- package/src/lib/components/progress/progress.component.ts +20 -0
- package/src/lib/components/radio-group/radio-group.component.html +25 -0
- package/src/lib/components/radio-group/radio-group.component.ts +30 -0
- package/src/lib/components/scroll-area/scroll-area.component.html +5 -0
- package/src/lib/components/scroll-area/scroll-area.component.ts +11 -0
- package/src/lib/components/select/select.component.html +14 -0
- package/src/lib/components/select/select.component.ts +27 -0
- package/src/lib/components/separator/separator.component.html +5 -0
- package/src/lib/components/separator/separator.component.ts +16 -0
- package/src/lib/components/sheet/sheet.component.html +10 -0
- package/src/lib/components/sheet/sheet.component.ts +28 -0
- package/src/lib/components/sidebar/sidebar.component.html +3 -0
- package/src/lib/components/sidebar/sidebar.component.ts +11 -0
- package/src/lib/components/skeleton/skeleton.component.html +1 -0
- package/src/lib/components/skeleton/skeleton.component.ts +10 -0
- package/src/lib/components/slider/slider.component.html +15 -0
- package/src/lib/components/slider/slider.component.ts +31 -0
- package/src/lib/components/sonner/sonner.component.html +10 -0
- package/src/lib/components/sonner/sonner.component.ts +25 -0
- package/src/lib/components/spinner/spinner.component.html +6 -0
- package/src/lib/components/spinner/spinner.component.ts +11 -0
- package/src/lib/components/switch/switch.component.html +14 -0
- package/src/lib/components/switch/switch.component.ts +20 -0
- package/src/lib/components/table/table.component.html +5 -0
- package/src/lib/components/table/table.component.ts +10 -0
- package/src/lib/components/tabs/tabs.component.html +21 -0
- package/src/lib/components/tabs/tabs.component.ts +26 -0
- package/src/lib/components/textarea/textarea.component.html +21 -0
- package/src/lib/components/textarea/textarea.component.ts +28 -0
- package/src/lib/components/toggle/toggle.component.html +16 -0
- package/src/lib/components/toggle/toggle.component.ts +29 -0
- package/src/lib/components/toggle-group/toggle-group.component.html +17 -0
- package/src/lib/components/toggle-group/toggle-group.component.ts +26 -0
- package/src/lib/components/tooltip/tooltip.component.html +6 -0
- package/src/lib/components/tooltip/tooltip.component.ts +20 -0
- package/src/lib/pdm-ui-kit.module.ts +126 -0
- package/src/public-api.ts +58 -0
- package/tsconfig.json +30 -0
- package/tsconfig.lib.json +17 -0
- package/fesm2015/pdm-ui-kit.mjs.map +0 -1
- package/fesm2020/pdm-ui-kit.mjs.map +0 -1
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/accordion/accordion.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/alert/alert.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/alert-dialog/alert-dialog.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/aspect-ratio/aspect-ratio.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/avatar/avatar.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/badge/badge.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/breadcrumb/breadcrumb.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/button/button.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/button-group/button-group.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/calendar/calendar.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/card/card.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/carousel/carousel.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/chart/chart.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/checkbox/checkbox.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/collapsible/collapsible.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/combobox/combobox.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/command/command.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/context-menu/context-menu.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/data-table/data-table.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/date-picker/date-picker.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/dialog/dialog.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/drawer/drawer.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/dropdown-menu/dropdown-menu.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/empty/empty.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/field/field.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/hover-card/hover-card.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/icon/icon.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/input/input.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/input-group/input-group.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/input-otp/input-otp.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/input-password/input-password.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/item/item.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/kbd/kbd.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/label/label.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/menubar/menubar.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/native-select/native-select.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/navigation-menu/navigation-menu.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/pagination/pagination.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/popover/popover.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/progress/progress.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/radio-group/radio-group.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/scroll-area/scroll-area.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/select/select.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/separator/separator.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/sheet/sheet.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/sidebar/sidebar.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/skeleton/skeleton.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/slider/slider.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/sonner/sonner.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/spinner/spinner.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/switch/switch.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/table/table.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/tabs/tabs.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/textarea/textarea.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/toggle/toggle.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/toggle-group/toggle-group.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/components/tooltip/tooltip.component.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/lib/pdm-ui-kit.module.mjs +0 -0
- /package/{esm2020 → dist/corelusa-pdm-ui-kit/esm2020}/public-api.mjs +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/accordion/accordion.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/alert/alert.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/alert-dialog/alert-dialog.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/aspect-ratio/aspect-ratio.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/avatar/avatar.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/badge/badge.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/breadcrumb/breadcrumb.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/button/button.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/button-group/button-group.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/calendar/calendar.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/card/card.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/carousel/carousel.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/chart/chart.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/checkbox/checkbox.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/collapsible/collapsible.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/combobox/combobox.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/command/command.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/context-menu/context-menu.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/data-table/data-table.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/date-picker/date-picker.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/dialog/dialog.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/drawer/drawer.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/dropdown-menu/dropdown-menu.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/empty/empty.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/field/field.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/hover-card/hover-card.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/icon/icon.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/input/input.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/input-group/input-group.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/input-otp/input-otp.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/input-password/input-password.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/item/item.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/kbd/kbd.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/label/label.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/menubar/menubar.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/native-select/native-select.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/navigation-menu/navigation-menu.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/pagination/pagination.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/popover/popover.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/progress/progress.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/radio-group/radio-group.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/scroll-area/scroll-area.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/select/select.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/separator/separator.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/sheet/sheet.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/sidebar/sidebar.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/skeleton/skeleton.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/slider/slider.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/sonner/sonner.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/spinner/spinner.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/switch/switch.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/table/table.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/tabs/tabs.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/textarea/textarea.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/toggle/toggle.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/toggle-group/toggle-group.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/components/tooltip/tooltip.component.d.ts +0 -0
- /package/{lib → dist/corelusa-pdm-ui-kit/lib}/pdm-ui-kit.module.d.ts +0 -0
- /package/{public-api.d.ts → dist/corelusa-pdm-ui-kit/public-api.d.ts} +0 -0
- /package/{esm2020 → dist/pdm-ui-kit/esm2020}/pdm-ui-kit.mjs +0 -0
- /package/{index.d.ts → dist/pdm-ui-kit/index.d.ts} +0 -0
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
export class PdmChartComponent {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.type = 'bar';
|
|
7
|
+
this.className = '';
|
|
8
|
+
this.title = 'Bar Chart - Interactive';
|
|
9
|
+
this.description = 'Showing total visitors for the last 3 months';
|
|
10
|
+
this.desktopLabel = 'Desktop';
|
|
11
|
+
this.desktopValue = '24,828';
|
|
12
|
+
this.mobileLabel = 'Mobile';
|
|
13
|
+
this.mobileValue = '25,010';
|
|
14
|
+
this.labels = ['Apr 9', 'Apr 19', 'Apr 29', 'May 9', 'May 19', 'May 29', 'Jun 9', 'Jun 19', 'Jun 30'];
|
|
15
|
+
this.bars = [
|
|
16
|
+
48, 21, 53, 69, 56, 77, 12, 54, 61, 59, 66, 27, 24, 27, 84, 62, 44, 18, 45, 57,
|
|
17
|
+
45, 72, 56, 15, 73, 25, 59, 86, 49, 59, 69, 93, 96, 72, 30, 58, 75, 67, 43, 43,
|
|
18
|
+
84, 89, 62, 96, 59, 72, 82, 34, 34, 70, 62, 42, 40, 80, 60, 33, 67, 34, 34, 88,
|
|
19
|
+
22, 84, 19, 62, 56, 43, 95, 70, 67, 89, 84, 31, 18, 92, 16, 87, 54, 44, 91, 23,
|
|
20
|
+
67, 77, 49, 59, 93, 26, 29, 81, 84, 30, 22, 84
|
|
21
|
+
];
|
|
22
|
+
this.line = [40, 28, 56, 49, 73, 67, 81, 58, 92];
|
|
23
|
+
this.pie = [35, 28, 20, 17];
|
|
24
|
+
this.radar = [72, 58, 88, 64, 79, 70];
|
|
25
|
+
this.radialValue = 76;
|
|
26
|
+
this.radialLabel = 'Completion';
|
|
27
|
+
this.radialDescription = 'Updated monthly';
|
|
28
|
+
this.tooltipTitle = 'June 2024';
|
|
29
|
+
this.tooltipPrimaryLabel = 'Desktop';
|
|
30
|
+
this.tooltipPrimaryValue = '12,450';
|
|
31
|
+
this.tooltipSecondaryLabel = 'Mobile';
|
|
32
|
+
this.tooltipSecondaryValue = '8,110';
|
|
33
|
+
this.pieLabels = ['Desktop', 'Mobile', 'Tablet', 'Other'];
|
|
34
|
+
}
|
|
35
|
+
get normalizedBars() {
|
|
36
|
+
if (!this.bars.length) {
|
|
37
|
+
return [];
|
|
38
|
+
}
|
|
39
|
+
const max = Math.max(...this.bars);
|
|
40
|
+
if (max === 0) {
|
|
41
|
+
return this.bars.map(() => 0);
|
|
42
|
+
}
|
|
43
|
+
return this.bars.map((value) => Math.max(8, Math.round((value / max) * 183)));
|
|
44
|
+
}
|
|
45
|
+
get normalizedLine() {
|
|
46
|
+
if (!this.line.length) {
|
|
47
|
+
return [];
|
|
48
|
+
}
|
|
49
|
+
const max = Math.max(...this.line);
|
|
50
|
+
if (max === 0) {
|
|
51
|
+
return this.line.map(() => 170);
|
|
52
|
+
}
|
|
53
|
+
return this.line.map((value) => 180 - Math.round((value / max) * 150));
|
|
54
|
+
}
|
|
55
|
+
get linePath() {
|
|
56
|
+
const points = this.normalizedLine;
|
|
57
|
+
if (!points.length) {
|
|
58
|
+
return '';
|
|
59
|
+
}
|
|
60
|
+
const step = points.length > 1 ? 320 / (points.length - 1) : 0;
|
|
61
|
+
return points
|
|
62
|
+
.map((y, index) => `${index === 0 ? 'M' : 'L'} ${Math.round(index * step)} ${y}`)
|
|
63
|
+
.join(' ');
|
|
64
|
+
}
|
|
65
|
+
get areaPath() {
|
|
66
|
+
const linePath = this.linePath;
|
|
67
|
+
if (!linePath) {
|
|
68
|
+
return '';
|
|
69
|
+
}
|
|
70
|
+
return `${linePath} L 320 180 L 0 180 Z`;
|
|
71
|
+
}
|
|
72
|
+
get pieSegments() {
|
|
73
|
+
const total = this.pie.reduce((acc, value) => acc + Math.max(value, 0), 0);
|
|
74
|
+
if (total === 0) {
|
|
75
|
+
return [];
|
|
76
|
+
}
|
|
77
|
+
let offset = 0;
|
|
78
|
+
const colors = ['#0090ff', '#34d399', '#f59e0b', '#f43f5e'];
|
|
79
|
+
return this.pie.map((value, index) => {
|
|
80
|
+
const size = (Math.max(value, 0) / total) * 100;
|
|
81
|
+
const segment = {
|
|
82
|
+
color: colors[index % colors.length],
|
|
83
|
+
size,
|
|
84
|
+
offset,
|
|
85
|
+
label: this.pieLabels[index] ?? `Series ${index + 1}`
|
|
86
|
+
};
|
|
87
|
+
offset += size;
|
|
88
|
+
return segment;
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
get pieGradient() {
|
|
92
|
+
const segments = this.pieSegments;
|
|
93
|
+
if (!segments.length) {
|
|
94
|
+
return 'conic-gradient(#e5e5e5 0 100%)';
|
|
95
|
+
}
|
|
96
|
+
return `conic-gradient(${segments
|
|
97
|
+
.map((segment) => `${segment.color} ${segment.offset}% ${segment.offset + segment.size}%`)
|
|
98
|
+
.join(', ')})`;
|
|
99
|
+
}
|
|
100
|
+
get radarPoints() {
|
|
101
|
+
const values = this.radar.slice(0, 6);
|
|
102
|
+
if (!values.length) {
|
|
103
|
+
return '';
|
|
104
|
+
}
|
|
105
|
+
const max = Math.max(...values, 1);
|
|
106
|
+
const radius = 72;
|
|
107
|
+
const center = 80;
|
|
108
|
+
return values
|
|
109
|
+
.map((value, index) => {
|
|
110
|
+
const angle = ((Math.PI * 2) / values.length) * index - Math.PI / 2;
|
|
111
|
+
const valueRadius = (Math.max(value, 0) / max) * radius;
|
|
112
|
+
const x = center + Math.cos(angle) * valueRadius;
|
|
113
|
+
const y = center + Math.sin(angle) * valueRadius;
|
|
114
|
+
return `${x},${y}`;
|
|
115
|
+
})
|
|
116
|
+
.join(' ');
|
|
117
|
+
}
|
|
118
|
+
get radialStrokeOffset() {
|
|
119
|
+
const bounded = Math.max(0, Math.min(this.radialValue, 100));
|
|
120
|
+
const circumference = 2 * Math.PI * 42;
|
|
121
|
+
return circumference - (bounded / 100) * circumference;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
PdmChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PdmChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
125
|
+
PdmChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PdmChartComponent, selector: "pdm-chart", inputs: { type: "type", className: "className", title: "title", description: "description", desktopLabel: "desktopLabel", desktopValue: "desktopValue", mobileLabel: "mobileLabel", mobileValue: "mobileValue", labels: "labels", bars: "bars", line: "line", pie: "pie", radar: "radar", radialValue: "radialValue", radialLabel: "radialLabel", radialDescription: "radialDescription", tooltipTitle: "tooltipTitle", tooltipPrimaryLabel: "tooltipPrimaryLabel", tooltipPrimaryValue: "tooltipPrimaryValue", tooltipSecondaryLabel: "tooltipSecondaryLabel", tooltipSecondaryValue: "tooltipSecondaryValue", pieLabels: "pieLabels" }, ngImport: i0, template: "<section [ngClass]=\"['w-full rounded-[14px] border border-[hsl(var(--border))] bg-[hsl(var(--card))] text-[hsl(var(--card-foreground))]', className]\">\n <div class=\"flex w-full items-stretch border-b border-[hsl(var(--border))]\">\n <div class=\"flex min-w-0 flex-1 flex-col gap-1 px-6 pb-3 pt-4\">\n <h3 class=\"m-0 text-sm font-semibold leading-5\">{{ title }}</h3>\n <p class=\"m-0 text-sm leading-5 text-[hsl(var(--muted-foreground))]\">{{ description }}</p>\n </div>\n\n <div class=\"flex h-[92px]\">\n <div class=\"flex h-full w-[171px] flex-col justify-center border-l border-[hsl(var(--border))] bg-[hsl(var(--muted))] px-6 py-4\">\n <span class=\"text-xs leading-4 text-[hsl(var(--muted-foreground))]\">{{ desktopLabel }}</span>\n <span class=\"mt-1 text-[28px] font-semibold leading-8\">{{ desktopValue }}</span>\n </div>\n <div class=\"flex h-full w-[171px] flex-col justify-center px-6 py-4\">\n <span class=\"text-xs leading-4 text-[hsl(var(--muted-foreground))]\">{{ mobileLabel }}</span>\n <span class=\"mt-1 text-[28px] font-semibold leading-8\">{{ mobileValue }}</span>\n </div>\n </div>\n </div>\n\n <div class=\"w-full p-6\">\n <ng-container [ngSwitch]=\"type\">\n <div *ngSwitchCase=\"'bar'\" class=\"flex h-[236px] w-full flex-col justify-end gap-2\">\n <div class=\"relative h-[183px] w-full overflow-hidden\">\n <div class=\"absolute bottom-0 left-0 right-0 border-t border-[hsl(var(--border))] opacity-50\"></div>\n <div class=\"absolute left-0 right-0 top-[54px] border-t border-[hsl(var(--border))] opacity-50\"></div>\n <div class=\"absolute left-0 right-0 top-[108px] border-t border-[hsl(var(--border))] opacity-50\"></div>\n <div class=\"absolute left-0 right-0 top-[162px] border-t border-[hsl(var(--border))] opacity-50\"></div>\n <div class=\"absolute inset-x-0 bottom-0 flex h-[183px] items-end gap-[2px] px-0.5\">\n <div *ngFor=\"let bar of normalizedBars\" class=\"w-[5px] rounded-[2px] bg-[hsl(var(--primary))]\" [style.height.px]=\"bar\"></div>\n </div>\n </div>\n <div class=\"flex h-4 w-full items-center justify-between gap-2\">\n <span *ngFor=\"let label of labels\" class=\"truncate text-xs leading-4 text-[hsl(var(--muted-foreground))]\">{{ label }}</span>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'line'\" class=\"flex h-[236px] w-full flex-col gap-2\">\n <svg viewBox=\"0 0 320 180\" class=\"h-[183px] w-full\">\n <line x1=\"0\" y1=\"180\" x2=\"320\" y2=\"180\" stroke=\"hsl(var(--border))\" stroke-width=\"1\"></line>\n <line x1=\"0\" y1=\"135\" x2=\"320\" y2=\"135\" stroke=\"hsl(var(--border))\" stroke-width=\"1\" opacity=\"0.5\"></line>\n <line x1=\"0\" y1=\"90\" x2=\"320\" y2=\"90\" stroke=\"hsl(var(--border))\" stroke-width=\"1\" opacity=\"0.5\"></line>\n <line x1=\"0\" y1=\"45\" x2=\"320\" y2=\"45\" stroke=\"hsl(var(--border))\" stroke-width=\"1\" opacity=\"0.5\"></line>\n <path [attr.d]=\"linePath\" fill=\"none\" stroke=\"hsl(var(--primary))\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n <div class=\"flex h-4 w-full items-center justify-between gap-2\">\n <span *ngFor=\"let label of labels\" class=\"truncate text-xs leading-4 text-[hsl(var(--muted-foreground))]\">{{ label }}</span>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'area'\" class=\"flex h-[236px] w-full flex-col gap-2\">\n <svg viewBox=\"0 0 320 180\" class=\"h-[183px] w-full\">\n <defs>\n <linearGradient id=\"pdm-chart-area-gradient\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stop-color=\"hsl(var(--primary))\" stop-opacity=\"0.35\"></stop>\n <stop offset=\"100%\" stop-color=\"hsl(var(--primary))\" stop-opacity=\"0.02\"></stop>\n </linearGradient>\n </defs>\n <line x1=\"0\" y1=\"180\" x2=\"320\" y2=\"180\" stroke=\"hsl(var(--border))\" stroke-width=\"1\"></line>\n <line x1=\"0\" y1=\"135\" x2=\"320\" y2=\"135\" stroke=\"hsl(var(--border))\" stroke-width=\"1\" opacity=\"0.5\"></line>\n <line x1=\"0\" y1=\"90\" x2=\"320\" y2=\"90\" stroke=\"hsl(var(--border))\" stroke-width=\"1\" opacity=\"0.5\"></line>\n <line x1=\"0\" y1=\"45\" x2=\"320\" y2=\"45\" stroke=\"hsl(var(--border))\" stroke-width=\"1\" opacity=\"0.5\"></line>\n <path [attr.d]=\"areaPath\" fill=\"url(#pdm-chart-area-gradient)\"></path>\n <path [attr.d]=\"linePath\" fill=\"none\" stroke=\"hsl(var(--primary))\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n <div class=\"flex h-4 w-full items-center justify-between gap-2\">\n <span *ngFor=\"let label of labels\" class=\"truncate text-xs leading-4 text-[hsl(var(--muted-foreground))]\">{{ label }}</span>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'pie'\" class=\"flex items-center gap-6\">\n <div class=\"relative h-40 w-40 rounded-full\" [style.background]=\"pieGradient\">\n <div class=\"absolute inset-7 rounded-full bg-[hsl(var(--card))]\"></div>\n </div>\n <div class=\"grid flex-1 gap-2\">\n <div *ngFor=\"let segment of pieSegments\" class=\"flex items-center justify-between rounded-md border border-[hsl(var(--border))] px-3 py-2\">\n <div class=\"flex items-center gap-2\">\n <span class=\"size-2.5 rounded-full\" [style.background]=\"segment.color\"></span>\n <span class=\"text-sm leading-5\">{{ segment.label }}</span>\n </div>\n <span class=\"text-sm font-medium leading-5\">{{ segment.size | number: '1.0-0' }}%</span>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'radar'\" class=\"flex items-center gap-6\">\n <svg viewBox=\"0 0 160 160\" class=\"h-44 w-44\">\n <polygon points=\"80,8 144,44 144,116 80,152 16,116 16,44\" fill=\"none\" stroke=\"hsl(var(--border))\"></polygon>\n <polygon points=\"80,28 126,54 126,106 80,132 34,106 34,54\" fill=\"none\" stroke=\"hsl(var(--border))\" opacity=\"0.75\"></polygon>\n <polygon points=\"80,48 109,64 109,96 80,112 51,96 51,64\" fill=\"none\" stroke=\"hsl(var(--border))\" opacity=\"0.55\"></polygon>\n <polygon [attr.points]=\"radarPoints\" fill=\"hsl(var(--primary))\" fill-opacity=\"0.22\" stroke=\"hsl(var(--primary))\" stroke-width=\"2\"></polygon>\n </svg>\n <div class=\"grid flex-1 gap-2\">\n <div *ngFor=\"let item of radar; index as i\" class=\"flex items-center justify-between rounded-md border border-[hsl(var(--border))] px-3 py-2 text-sm\">\n <span class=\"text-[hsl(var(--muted-foreground))]\">Metric {{ i + 1 }}</span>\n <span class=\"font-medium\">{{ item }}</span>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'radial'\" class=\"flex items-center justify-between gap-6\">\n <div class=\"relative flex size-44 items-center justify-center\">\n <svg viewBox=\"0 0 96 96\" class=\"size-40 -rotate-90\">\n <circle cx=\"48\" cy=\"48\" r=\"42\" fill=\"none\" stroke=\"hsl(var(--muted))\" stroke-width=\"10\"></circle>\n <circle\n cx=\"48\"\n cy=\"48\"\n r=\"42\"\n fill=\"none\"\n stroke=\"hsl(var(--primary))\"\n stroke-width=\"10\"\n stroke-linecap=\"round\"\n stroke-dasharray=\"263.89\"\n [attr.stroke-dashoffset]=\"radialStrokeOffset\"\n ></circle>\n </svg>\n <div class=\"absolute text-center\">\n <div class=\"text-[30px] font-semibold leading-9\">{{ radialValue }}%</div>\n <div class=\"text-xs text-[hsl(var(--muted-foreground))]\">{{ radialLabel }}</div>\n </div>\n </div>\n <div class=\"flex-1\">\n <p class=\"m-0 text-sm font-medium leading-5\">{{ radialLabel }}</p>\n <p class=\"m-0 mt-1 text-sm leading-5 text-[hsl(var(--muted-foreground))]\">{{ radialDescription }}</p>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'tooltips'\" class=\"grid gap-3\">\n <div class=\"inline-flex w-fit min-w-[220px] flex-col gap-2 rounded-lg border border-[hsl(var(--border))] bg-[hsl(var(--card))] p-3 shadow-sm\">\n <p class=\"m-0 text-xs font-medium leading-4 text-[hsl(var(--muted-foreground))]\">{{ tooltipTitle }}</p>\n <div class=\"flex items-center justify-between text-sm\">\n <span>{{ tooltipPrimaryLabel }}</span>\n <span class=\"font-semibold\">{{ tooltipPrimaryValue }}</span>\n </div>\n <div class=\"flex items-center justify-between text-sm\">\n <span>{{ tooltipSecondaryLabel }}</span>\n <span class=\"font-semibold\">{{ tooltipSecondaryValue }}</span>\n </div>\n </div>\n <p class=\"m-0 text-xs text-[hsl(var(--muted-foreground))]\">Tooltip style preparado para charts de l\u00EDnea, \u00E1rea y barras.</p>\n </div>\n </ng-container>\n </div>\n</section>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
126
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PdmChartComponent, decorators: [{
|
|
127
|
+
type: Component,
|
|
128
|
+
args: [{ selector: 'pdm-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<section [ngClass]=\"['w-full rounded-[14px] border border-[hsl(var(--border))] bg-[hsl(var(--card))] text-[hsl(var(--card-foreground))]', className]\">\n <div class=\"flex w-full items-stretch border-b border-[hsl(var(--border))]\">\n <div class=\"flex min-w-0 flex-1 flex-col gap-1 px-6 pb-3 pt-4\">\n <h3 class=\"m-0 text-sm font-semibold leading-5\">{{ title }}</h3>\n <p class=\"m-0 text-sm leading-5 text-[hsl(var(--muted-foreground))]\">{{ description }}</p>\n </div>\n\n <div class=\"flex h-[92px]\">\n <div class=\"flex h-full w-[171px] flex-col justify-center border-l border-[hsl(var(--border))] bg-[hsl(var(--muted))] px-6 py-4\">\n <span class=\"text-xs leading-4 text-[hsl(var(--muted-foreground))]\">{{ desktopLabel }}</span>\n <span class=\"mt-1 text-[28px] font-semibold leading-8\">{{ desktopValue }}</span>\n </div>\n <div class=\"flex h-full w-[171px] flex-col justify-center px-6 py-4\">\n <span class=\"text-xs leading-4 text-[hsl(var(--muted-foreground))]\">{{ mobileLabel }}</span>\n <span class=\"mt-1 text-[28px] font-semibold leading-8\">{{ mobileValue }}</span>\n </div>\n </div>\n </div>\n\n <div class=\"w-full p-6\">\n <ng-container [ngSwitch]=\"type\">\n <div *ngSwitchCase=\"'bar'\" class=\"flex h-[236px] w-full flex-col justify-end gap-2\">\n <div class=\"relative h-[183px] w-full overflow-hidden\">\n <div class=\"absolute bottom-0 left-0 right-0 border-t border-[hsl(var(--border))] opacity-50\"></div>\n <div class=\"absolute left-0 right-0 top-[54px] border-t border-[hsl(var(--border))] opacity-50\"></div>\n <div class=\"absolute left-0 right-0 top-[108px] border-t border-[hsl(var(--border))] opacity-50\"></div>\n <div class=\"absolute left-0 right-0 top-[162px] border-t border-[hsl(var(--border))] opacity-50\"></div>\n <div class=\"absolute inset-x-0 bottom-0 flex h-[183px] items-end gap-[2px] px-0.5\">\n <div *ngFor=\"let bar of normalizedBars\" class=\"w-[5px] rounded-[2px] bg-[hsl(var(--primary))]\" [style.height.px]=\"bar\"></div>\n </div>\n </div>\n <div class=\"flex h-4 w-full items-center justify-between gap-2\">\n <span *ngFor=\"let label of labels\" class=\"truncate text-xs leading-4 text-[hsl(var(--muted-foreground))]\">{{ label }}</span>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'line'\" class=\"flex h-[236px] w-full flex-col gap-2\">\n <svg viewBox=\"0 0 320 180\" class=\"h-[183px] w-full\">\n <line x1=\"0\" y1=\"180\" x2=\"320\" y2=\"180\" stroke=\"hsl(var(--border))\" stroke-width=\"1\"></line>\n <line x1=\"0\" y1=\"135\" x2=\"320\" y2=\"135\" stroke=\"hsl(var(--border))\" stroke-width=\"1\" opacity=\"0.5\"></line>\n <line x1=\"0\" y1=\"90\" x2=\"320\" y2=\"90\" stroke=\"hsl(var(--border))\" stroke-width=\"1\" opacity=\"0.5\"></line>\n <line x1=\"0\" y1=\"45\" x2=\"320\" y2=\"45\" stroke=\"hsl(var(--border))\" stroke-width=\"1\" opacity=\"0.5\"></line>\n <path [attr.d]=\"linePath\" fill=\"none\" stroke=\"hsl(var(--primary))\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n <div class=\"flex h-4 w-full items-center justify-between gap-2\">\n <span *ngFor=\"let label of labels\" class=\"truncate text-xs leading-4 text-[hsl(var(--muted-foreground))]\">{{ label }}</span>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'area'\" class=\"flex h-[236px] w-full flex-col gap-2\">\n <svg viewBox=\"0 0 320 180\" class=\"h-[183px] w-full\">\n <defs>\n <linearGradient id=\"pdm-chart-area-gradient\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stop-color=\"hsl(var(--primary))\" stop-opacity=\"0.35\"></stop>\n <stop offset=\"100%\" stop-color=\"hsl(var(--primary))\" stop-opacity=\"0.02\"></stop>\n </linearGradient>\n </defs>\n <line x1=\"0\" y1=\"180\" x2=\"320\" y2=\"180\" stroke=\"hsl(var(--border))\" stroke-width=\"1\"></line>\n <line x1=\"0\" y1=\"135\" x2=\"320\" y2=\"135\" stroke=\"hsl(var(--border))\" stroke-width=\"1\" opacity=\"0.5\"></line>\n <line x1=\"0\" y1=\"90\" x2=\"320\" y2=\"90\" stroke=\"hsl(var(--border))\" stroke-width=\"1\" opacity=\"0.5\"></line>\n <line x1=\"0\" y1=\"45\" x2=\"320\" y2=\"45\" stroke=\"hsl(var(--border))\" stroke-width=\"1\" opacity=\"0.5\"></line>\n <path [attr.d]=\"areaPath\" fill=\"url(#pdm-chart-area-gradient)\"></path>\n <path [attr.d]=\"linePath\" fill=\"none\" stroke=\"hsl(var(--primary))\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n <div class=\"flex h-4 w-full items-center justify-between gap-2\">\n <span *ngFor=\"let label of labels\" class=\"truncate text-xs leading-4 text-[hsl(var(--muted-foreground))]\">{{ label }}</span>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'pie'\" class=\"flex items-center gap-6\">\n <div class=\"relative h-40 w-40 rounded-full\" [style.background]=\"pieGradient\">\n <div class=\"absolute inset-7 rounded-full bg-[hsl(var(--card))]\"></div>\n </div>\n <div class=\"grid flex-1 gap-2\">\n <div *ngFor=\"let segment of pieSegments\" class=\"flex items-center justify-between rounded-md border border-[hsl(var(--border))] px-3 py-2\">\n <div class=\"flex items-center gap-2\">\n <span class=\"size-2.5 rounded-full\" [style.background]=\"segment.color\"></span>\n <span class=\"text-sm leading-5\">{{ segment.label }}</span>\n </div>\n <span class=\"text-sm font-medium leading-5\">{{ segment.size | number: '1.0-0' }}%</span>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'radar'\" class=\"flex items-center gap-6\">\n <svg viewBox=\"0 0 160 160\" class=\"h-44 w-44\">\n <polygon points=\"80,8 144,44 144,116 80,152 16,116 16,44\" fill=\"none\" stroke=\"hsl(var(--border))\"></polygon>\n <polygon points=\"80,28 126,54 126,106 80,132 34,106 34,54\" fill=\"none\" stroke=\"hsl(var(--border))\" opacity=\"0.75\"></polygon>\n <polygon points=\"80,48 109,64 109,96 80,112 51,96 51,64\" fill=\"none\" stroke=\"hsl(var(--border))\" opacity=\"0.55\"></polygon>\n <polygon [attr.points]=\"radarPoints\" fill=\"hsl(var(--primary))\" fill-opacity=\"0.22\" stroke=\"hsl(var(--primary))\" stroke-width=\"2\"></polygon>\n </svg>\n <div class=\"grid flex-1 gap-2\">\n <div *ngFor=\"let item of radar; index as i\" class=\"flex items-center justify-between rounded-md border border-[hsl(var(--border))] px-3 py-2 text-sm\">\n <span class=\"text-[hsl(var(--muted-foreground))]\">Metric {{ i + 1 }}</span>\n <span class=\"font-medium\">{{ item }}</span>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'radial'\" class=\"flex items-center justify-between gap-6\">\n <div class=\"relative flex size-44 items-center justify-center\">\n <svg viewBox=\"0 0 96 96\" class=\"size-40 -rotate-90\">\n <circle cx=\"48\" cy=\"48\" r=\"42\" fill=\"none\" stroke=\"hsl(var(--muted))\" stroke-width=\"10\"></circle>\n <circle\n cx=\"48\"\n cy=\"48\"\n r=\"42\"\n fill=\"none\"\n stroke=\"hsl(var(--primary))\"\n stroke-width=\"10\"\n stroke-linecap=\"round\"\n stroke-dasharray=\"263.89\"\n [attr.stroke-dashoffset]=\"radialStrokeOffset\"\n ></circle>\n </svg>\n <div class=\"absolute text-center\">\n <div class=\"text-[30px] font-semibold leading-9\">{{ radialValue }}%</div>\n <div class=\"text-xs text-[hsl(var(--muted-foreground))]\">{{ radialLabel }}</div>\n </div>\n </div>\n <div class=\"flex-1\">\n <p class=\"m-0 text-sm font-medium leading-5\">{{ radialLabel }}</p>\n <p class=\"m-0 mt-1 text-sm leading-5 text-[hsl(var(--muted-foreground))]\">{{ radialDescription }}</p>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'tooltips'\" class=\"grid gap-3\">\n <div class=\"inline-flex w-fit min-w-[220px] flex-col gap-2 rounded-lg border border-[hsl(var(--border))] bg-[hsl(var(--card))] p-3 shadow-sm\">\n <p class=\"m-0 text-xs font-medium leading-4 text-[hsl(var(--muted-foreground))]\">{{ tooltipTitle }}</p>\n <div class=\"flex items-center justify-between text-sm\">\n <span>{{ tooltipPrimaryLabel }}</span>\n <span class=\"font-semibold\">{{ tooltipPrimaryValue }}</span>\n </div>\n <div class=\"flex items-center justify-between text-sm\">\n <span>{{ tooltipSecondaryLabel }}</span>\n <span class=\"font-semibold\">{{ tooltipSecondaryValue }}</span>\n </div>\n </div>\n <p class=\"m-0 text-xs text-[hsl(var(--muted-foreground))]\">Tooltip style preparado para charts de l\u00EDnea, \u00E1rea y barras.</p>\n </div>\n </ng-container>\n </div>\n</section>\n" }]
|
|
129
|
+
}], propDecorators: { type: [{
|
|
130
|
+
type: Input
|
|
131
|
+
}], className: [{
|
|
132
|
+
type: Input
|
|
133
|
+
}], title: [{
|
|
134
|
+
type: Input
|
|
135
|
+
}], description: [{
|
|
136
|
+
type: Input
|
|
137
|
+
}], desktopLabel: [{
|
|
138
|
+
type: Input
|
|
139
|
+
}], desktopValue: [{
|
|
140
|
+
type: Input
|
|
141
|
+
}], mobileLabel: [{
|
|
142
|
+
type: Input
|
|
143
|
+
}], mobileValue: [{
|
|
144
|
+
type: Input
|
|
145
|
+
}], labels: [{
|
|
146
|
+
type: Input
|
|
147
|
+
}], bars: [{
|
|
148
|
+
type: Input
|
|
149
|
+
}], line: [{
|
|
150
|
+
type: Input
|
|
151
|
+
}], pie: [{
|
|
152
|
+
type: Input
|
|
153
|
+
}], radar: [{
|
|
154
|
+
type: Input
|
|
155
|
+
}], radialValue: [{
|
|
156
|
+
type: Input
|
|
157
|
+
}], radialLabel: [{
|
|
158
|
+
type: Input
|
|
159
|
+
}], radialDescription: [{
|
|
160
|
+
type: Input
|
|
161
|
+
}], tooltipTitle: [{
|
|
162
|
+
type: Input
|
|
163
|
+
}], tooltipPrimaryLabel: [{
|
|
164
|
+
type: Input
|
|
165
|
+
}], tooltipPrimaryValue: [{
|
|
166
|
+
type: Input
|
|
167
|
+
}], tooltipSecondaryLabel: [{
|
|
168
|
+
type: Input
|
|
169
|
+
}], tooltipSecondaryValue: [{
|
|
170
|
+
type: Input
|
|
171
|
+
}], pieLabels: [{
|
|
172
|
+
type: Input
|
|
173
|
+
}] } });
|
|
174
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2NoYXJ0L2NoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9jaGFydC9jaGFydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBUzFFLE1BQU0sT0FBTyxpQkFBaUI7SUFMOUI7UUFNVyxTQUFJLEdBQWlCLEtBQUssQ0FBQztRQUMzQixjQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ2YsVUFBSyxHQUFHLHlCQUF5QixDQUFDO1FBQ2xDLGdCQUFXLEdBQUcsOENBQThDLENBQUM7UUFFN0QsaUJBQVksR0FBRyxTQUFTLENBQUM7UUFDekIsaUJBQVksR0FBRyxRQUFRLENBQUM7UUFDeEIsZ0JBQVcsR0FBRyxRQUFRLENBQUM7UUFDdkIsZ0JBQVcsR0FBRyxRQUFRLENBQUM7UUFFdkIsV0FBTSxHQUFhLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUUzRyxTQUFJLEdBQWE7WUFDeEIsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7WUFDOUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7WUFDOUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7WUFDOUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7WUFDOUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO1NBQy9DLENBQUM7UUFDTyxTQUFJLEdBQWEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELFFBQUcsR0FBYSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pDLFVBQUssR0FBYSxDQUFD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LEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgdHlwZSBQZG1DaGFydFR5cGUgPSAnYXJlYScgfCAnYmFyJyB8ICdsaW5lJyB8ICdwaWUnIHwgJ3JhZGFyJyB8ICdyYWRpYWwnIHwgJ3Rvb2x0aXBzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRtLWNoYXJ0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXJ0LmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUGRtQ2hhcnRDb21wb25lbnQge1xuICBASW5wdXQoKSB0eXBlOiBQZG1DaGFydFR5cGUgPSAnYmFyJztcbiAgQElucHV0KCkgY2xhc3NOYW1lID0gJyc7XG4gIEBJbnB1dCgpIHRpdGxlID0gJ0JhciBDaGFydCAtIEludGVyYWN0aXZlJztcbiAgQElucHV0KCkgZGVzY3JpcHRpb24gPSAnU2hvd2luZyB0b3RhbCB2aXNpdG9ycyBmb3IgdGhlIGxhc3QgMyBtb250aHMnO1xuXG4gIEBJbnB1dCgpIGRlc2t0b3BMYWJlbCA9ICdEZXNrdG9wJztcbiAgQElucHV0KCkgZGVza3RvcFZhbHVlID0gJzI0LDgyOCc7XG4gIEBJbnB1dCgpIG1vYmlsZUxhYmVsID0gJ01vYmlsZSc7XG4gIEBJbnB1dCgpIG1vYmlsZVZhbHVlID0gJzI1LDAxMCc7XG5cbiAgQElucHV0KCkgbGFiZWxzOiBzdHJpbmdbXSA9IFsnQXByIDknLCAnQXByIDE5JywgJ0FwciAyOScsICdNYXkgOScsICdNYXkgMTknLCAnTWF5IDI5JywgJ0p1biA5JywgJ0p1biAxOScsICdKdW4gMzAnXTtcblxuICBASW5wdXQoKSBiYXJzOiBudW1iZXJbXSA9IFtcbiAgICA0OCwgMjEsIDUzLCA2OSwgNTYsIDc3LCAxMiwgNTQsIDYxLCA1OSwgNjYsIDI3LCAyNCwgMjcsIDg0LCA2MiwgNDQsIDE4LCA0NSwgNTcsXG4gICAgNDUsIDcyLCA1NiwgMTUsIDczLCAyNSwgNTksIDg2LCA0OSwgNTksIDY5LCA5MywgOTYsIDcyLCAzMCwgNTgsIDc1LCA2NywgNDMsIDQzLFxuICAgIDg0LCA4OSwgNjIsIDk2LCA1OSwgNzIsIDgyLCAzNCwgMzQsIDcwLCA2MiwgNDIsIDQwLCA4MCwgNjAsIDMzLCA2NywgMzQsIDM0LCA4OCxcbiAgICAyMiwgODQsIDE5LCA2MiwgNTYsIDQzLCA5NSwgNzAsIDY3LCA4OSwgODQsIDMxLCAxOCwgOTIsIDE2LCA4NywgNTQsIDQ0LCA5MSwgMjMsXG4gICAgNjcsIDc3LCA0OSwgNTksIDkzLCAyNiwgMjksIDgxLCA4NCwgMzAsIDIyLCA4NFxuICBdO1xuICBASW5wdXQoKSBsaW5lOiBudW1iZXJbXSA9IFs0MCwgMjgsIDU2LCA0OSwgNzMsIDY3LCA4MSwgNTgsIDkyXTtcbiAgQElucHV0KCkgcGllOiBudW1iZXJbXSA9IFszNSwgMjgsIDIwLCAxN107XG4gIEBJbnB1dCgpIHJhZGFyOiBudW1iZXJbXSA9IFs3MiwgNTgsIDg4LCA2NCwgNzksIDcwXTtcbiAgQElucHV0KCkgcmFkaWFsVmFsdWUgPSA3NjtcbiAgQElucHV0KCkgcmFkaWFsTGFiZWwgPSAnQ29tcGxldGlvbic7XG4gIEBJbnB1dCgpIHJhZGlhbERlc2NyaXB0aW9uID0gJ1VwZGF0ZWQgbW9udGhseSc7XG4gIEBJbnB1dCgpIHRvb2x0aXBUaXRsZSA9ICdKdW5lIDIwMjQnO1xuICBASW5wdXQoKSB0b29sdGlwUHJpbWFyeUxhYmVsID0gJ0Rlc2t0b3AnO1xuICBASW5wdXQoKSB0b29sdGlwUHJpbWFyeVZhbHVlID0gJzEyLDQ1MCc7XG4gIEBJbnB1dCgpIHRvb2x0aXBTZWNvbmRhcnlMYWJlbCA9ICdNb2JpbGUnO1xuICBASW5wdXQoKSB0b29sdGlwU2Vjb25kYXJ5VmFsdWUgPSAnOCwxMTAnO1xuICBASW5wdXQoKSBwaWVMYWJlbHM6IHN0cmluZ1tdID0gWydEZXNrdG9wJywgJ01vYmlsZScsICdUYWJsZXQnLCAnT3RoZXInXTtcblxuICBnZXQgbm9ybWFsaXplZEJhcnMoKTogbnVtYmVyW10ge1xuICAgIGlmICghdGhpcy5iYXJzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IG1heCA9IE1hdGgubWF4KC4uLnRoaXMuYmFycyk7XG4gICAgaWYgKG1heCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuYmFycy5tYXAoKCkgPT4gMCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYmFycy5tYXAoKHZhbHVlKSA9PiBNYXRoLm1heCg4LCBNYXRoLnJvdW5kKCh2YWx1ZSAvIG1heCkgKiAxODMpKSk7XG4gIH1cblxuICBnZXQgbm9ybWFsaXplZExpbmUoKTogbnVtYmVyW10ge1xuICAgIGlmICghdGhpcy5saW5lLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IG1heCA9IE1hdGgubWF4KC4uLnRoaXMubGluZSk7XG4gICAgaWYgKG1heCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMubGluZS5tYXAoKCkgPT4gMTcwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5saW5lLm1hcCgodmFsdWUpID0+IDE4MCAtIE1hdGgucm91bmQoKHZhbHVlIC8gbWF4KSAqIDE1MCkpO1xuICB9XG5cbiAgZ2V0IGxpbmVQYXRoKCk6IHN0cmluZyB7XG4gICAgY29uc3QgcG9pbnRzID0gdGhpcy5ub3JtYWxpemVkTGluZTtcbiAgICBpZiAoIXBvaW50cy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCBzdGVwID0gcG9pbnRzLmxlbmd0aCA+IDEgPyAzMjAgLyAocG9pbnRzLmxlbmd0aCAtIDEpIDogMDtcbiAgICByZXR1cm4gcG9pbnRzXG4gICAgICAubWFwKCh5LCBpbmRleCkgPT4gYCR7aW5kZXggPT09IDAgPyAnTScgOiAnTCd9ICR7TWF0aC5yb3VuZChpbmRleCAqIHN0ZXApfSAke3l9YClcbiAgICAgIC5qb2luKCcgJyk7XG4gIH1cblxuICBnZXQgYXJlYVBhdGgoKTogc3RyaW5nIHtcbiAgICBjb25zdCBsaW5lUGF0aCA9IHRoaXMubGluZVBhdGg7XG4gICAgaWYgKCFsaW5lUGF0aCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHJldHVybiBgJHtsaW5lUGF0aH0gTCAzMjAgMTgwIEwgMCAxODAgWmA7XG4gIH1cblxuICBnZXQgcGllU2VnbWVudHMoKTogeyBjb2xvcjogc3RyaW5nOyBzaXplOiBudW1iZXI7IG9mZnNldDogbnVtYmVyOyBsYWJlbDogc3RyaW5nIH1bXSB7XG4gICAgY29uc3QgdG90YWwgPSB0aGlzLnBpZS5yZWR1Y2UoKGFjYywgdmFsdWUpID0+IGFjYyArIE1hdGgubWF4KHZhbHVlLCAwKSwgMCk7XG4gICAgaWYgKHRvdGFsID09PSAwKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgbGV0IG9mZnNldCA9IDA7XG4gICAgY29uc3QgY29sb3JzID0gWycjMDA5MGZmJywgJyMzNGQzOTknLCAnI2Y1OWUwYicsICcjZjQzZjVlJ107XG4gICAgcmV0dXJuIHRoaXMucGllLm1hcCgodmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBzaXplID0gKE1hdGgubWF4KHZhbHVlLCAwKSAvIHRvdGFsKSAqIDEwMDtcbiAgICAgIGNvbnN0IHNlZ21lbnQgPSB7XG4gICAgICAgIGNvbG9yOiBjb2xvcnNbaW5kZXggJSBjb2xvcnMubGVuZ3RoXSxcbiAgICAgICAgc2l6ZSxcbiAgICAgICAgb2Zmc2V0LFxuICAgICAgICBsYWJlbDogdGhpcy5waWVMYWJlbHNbaW5kZXhdID8/IGBTZXJpZXMgJHtpbmRleCArIDF9YFxuICAgICAgfTtcbiAgICAgIG9mZnNldCArPSBzaXplO1xuICAgICAgcmV0dXJuIHNlZ21lbnQ7XG4gICAgfSk7XG4gIH1cblxuICBnZXQgcGllR3JhZGllbnQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzZWdtZW50cyA9IHRoaXMucGllU2VnbWVudHM7XG4gICAgaWYgKCFzZWdtZW50cy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiAnY29uaWMtZ3JhZGllbnQoI2U1ZTVlNSAwIDEwMCUpJztcbiAgICB9XG5cbiAgICByZXR1cm4gYGNvbmljLWdyYWRpZW50KCR7c2VnbWVudHNcbiAgICAgIC5tYXAoKHNlZ21lbnQpID0+IGAke3NlZ21lbnQuY29sb3J9ICR7c2VnbWVudC5vZmZzZXR9JSAke3NlZ21lbnQub2Zmc2V0ICsgc2VnbWVudC5zaXplfSVgKVxuICAgICAgLmpvaW4oJywgJyl9KWA7XG4gIH1cblxuICBnZXQgcmFkYXJQb2ludHMoKTogc3RyaW5nIHtcbiAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLnJhZGFyLnNsaWNlKDAsIDYpO1xuICAgIGlmICghdmFsdWVzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IG1heCA9IE1hdGgubWF4KC4uLnZhbHVlcywgMSk7XG4gICAgY29uc3QgcmFkaXVzID0gNzI7XG4gICAgY29uc3QgY2VudGVyID0gODA7XG4gICAgcmV0dXJuIHZhbHVlc1xuICAgICAgLm1hcCgodmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IGFuZ2xlID0gKChNYXRoLlBJICogMikgLyB2YWx1ZXMubGVuZ3RoKSAqIGluZGV4IC0gTWF0aC5QSSAvIDI7XG4gICAgICAgIGNvbnN0IHZhbHVlUmFkaXVzID0gKE1hdGgubWF4KHZhbHVlLCAwKSAvIG1heCkgKiByYWRpdXM7XG4gICAgICAgIGNvbnN0IHggPSBjZW50ZXIgKyBNYXRoLmNvcyhhbmdsZSkgKiB2YWx1ZVJhZGl1cztcbiAgICAgICAgY29uc3QgeSA9IGNlbnRlciArIE1hdGguc2luKGFuZ2xlKSAqIHZhbHVlUmFkaXVzO1xuICAgICAgICByZXR1cm4gYCR7eH0sJHt5fWA7XG4gICAgICB9KVxuICAgICAgLmpvaW4oJyAnKTtcbiAgfVxuXG4gIGdldCByYWRpYWxTdHJva2VPZmZzZXQoKTogbnVtYmVyIHtcbiAgICBjb25zdCBib3VuZGVkID0gTWF0aC5tYXgoMCwgTWF0aC5taW4odGhpcy5yYWRpYWxWYWx1ZSwgMTAwKSk7XG4gICAgY29uc3QgY2lyY3VtZmVyZW5jZSA9IDIgKiBNYXRoLlBJICogNDI7XG4gICAgcmV0dXJuIGNpcmN1bWZlcmVuY2UgLSAoYm91bmRlZCAvIDEwMCkgKiBjaXJjdW1mZXJlbmNlO1xuICB9XG59XG4iLCI8c2VjdGlvbiBbbmdDbGFzc109XCJbJ3ctZnVsbCByb3VuZGVkLVsxNHB4XSBib3JkZXIgYm9yZGVyLVtoc2wodmFyKC0tYm9yZGVyKSldIGJnLVtoc2wodmFyKC0tY2FyZCkpXSB0ZXh0LVtoc2wodmFyKC0tY2FyZC1mb3JlZ3JvdW5kKSldJywgY2xhc3NOYW1lXVwiPlxuICA8ZGl2IGNsYXNzPVwiZmxleCB3LWZ1bGwgaXRlbXMtc3RyZXRjaCBib3JkZXItYiBib3JkZXItW2hzbCh2YXIoLS1ib3JkZXIpKV1cIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBtaW4tdy0wIGZsZXgtMSBmbGV4LWNvbCBnYXAtMSBweC02IHBiLTMgcHQtNFwiPlxuICAgICAgPGgzIGNsYXNzPVwibS0wIHRleHQtc20gZm9udC1zZW1pYm9sZCBsZWFkaW5nLTVcIj57eyB0aXRsZSB9fTwvaDM+XG4gICAgICA8cCBjbGFzcz1cIm0tMCB0ZXh0LXNtIGxlYWRpbmctNSB0ZXh0LVtoc2wodmFyKC0tbXV0ZWQtZm9yZWdyb3VuZCkpXVwiPnt7IGRlc2NyaXB0aW9uIH19PC9wPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImZsZXggaC1bOTJweF1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGgtZnVsbCB3LVsxNzFweF0gZmxleC1jb2wganVzdGlmeS1jZW50ZXIgYm9yZGVyLWwgYm9yZGVyLVtoc2wodmFyKC0tYm9yZGVyKSldIGJnLVtoc2wodmFyKC0tbXV0ZWQpKV0gcHgtNiBweS00XCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC14cyBsZWFkaW5nLTQgdGV4dC1baHNsKHZhcigtLW11dGVkLWZvcmVncm91bmQpKV1cIj57eyBkZXNrdG9wTGFiZWwgfX08L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibXQtMSB0ZXh0LVsyOHB4XSBmb250LXNlbWlib2xkIGxlYWRpbmctOFwiPnt7IGRlc2t0b3BWYWx1ZSB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggaC1mdWxsIHctWzE3MXB4XSBmbGV4LWNvbCBqdXN0aWZ5LWNlbnRlciBweC02IHB5LTRcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXhzIGxlYWRpbmctNCB0ZXh0LVtoc2wodmFyKC0tbXV0ZWQtZm9yZWdyb3VuZCkpXVwiPnt7IG1vYmlsZUxhYmVsIH19PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm10LTEgdGV4dC1bMjhweF0gZm9udC1zZW1pYm9sZCBsZWFkaW5nLThcIj57eyBtb2JpbGVWYWx1ZSB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwidy1mdWxsIHAtNlwiPlxuICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInR5cGVcIj5cbiAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidiYXInXCIgY2xhc3M9XCJmbGV4IGgtWzIzNnB4XSB3LWZ1bGwgZmxleC1jb2wganVzdGlmeS1lbmQgZ2FwLTJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIGgtWzE4M3B4XSB3LWZ1bGwgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFic29sdXRlIGJvdHRvbS0wIGxlZnQtMCByaWdodC0wIGJvcmRlci10IGJvcmRlci1baHNsKHZhcigtLWJvcmRlcikpXSBvcGFjaXR5LTUwXCI+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFic29sdXRlIGxlZnQtMCByaWdodC0wIHRvcC1bNTRweF0gYm9yZGVyLXQgYm9yZGVyLVtoc2wodmFyKC0tYm9yZGVyKSldIG9wYWNpdHktNTBcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgbGVmdC0wIHJpZ2h0LTAgdG9wLVsxMDhweF0gYm9yZGVyLXQgYm9yZGVyLVtoc2wodmFyKC0tYm9yZGVyKSldIG9wYWNpdHktNTBcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgbGVmdC0wIHJpZ2h0LTAgdG9wLVsxNjJweF0gYm9yZGVyLXQgYm9yZGVyLVtoc2wodmFyKC0tYm9yZGVyKSldIG9wYWNpdHktNTBcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgaW5zZXQteC0wIGJvdHRvbS0wIGZsZXggaC1bMTgzcHhdIGl0ZW1zLWVuZCBnYXAtWzJweF0gcHgtMC41XCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBiYXIgb2Ygbm9ybWFsaXplZEJhcnNcIiBjbGFzcz1cInctWzVweF0gcm91bmRlZC1bMnB4XSBiZy1baHNsKHZhcigtLXByaW1hcnkpKV1cIiBbc3R5bGUuaGVpZ2h0LnB4XT1cImJhclwiPjwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaC00IHctZnVsbCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC0yXCI+XG4gICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IGxhYmVsIG9mIGxhYmVsc1wiIGNsYXNzPVwidHJ1bmNhdGUgdGV4dC14cyBsZWFkaW5nLTQgdGV4dC1baHNsKHZhcigtLW11dGVkLWZvcmVncm91bmQpKV1cIj57eyBsYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ2xpbmUnXCIgY2xhc3M9XCJmbGV4IGgtWzIzNnB4XSB3LWZ1bGwgZmxleC1jb2wgZ2FwLTJcIj5cbiAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDMyMCAxODBcIiBjbGFzcz1cImgtWzE4M3B4XSB3LWZ1bGxcIj5cbiAgICAgICAgICA8bGluZSB4MT1cIjBcIiB5MT1cIjE4MFwiIHgyPVwiMzIwXCIgeTI9XCIxODBcIiBzdHJva2U9XCJoc2wodmFyKC0tYm9yZGVyKSlcIiBzdHJva2Utd2lkdGg9XCIxXCI+PC9saW5lPlxuICAgICAgICAgIDxsaW5lIHgxPVwiMFwiIHkxPVwiMTM1XCIgeDI9XCIzMjBcIiB5Mj1cIjEzNVwiIHN0cm9rZT1cImhzbCh2YXIoLS1ib3JkZXIpKVwiIHN0cm9rZS13aWR0aD1cIjFcIiBvcGFjaXR5PVwiMC41XCI+PC9saW5lPlxuICAgICAgICAgIDxsaW5lIHgxPVwiMFwiIHkxPVwiOTBcIiB4Mj1cIjMyMFwiIHkyPVwiOTBcIiBzdHJva2U9XCJoc2wodmFyKC0tYm9yZGVyKSlcIiBzdHJva2Utd2lkdGg9XCIxXCIgb3BhY2l0eT1cIjAuNVwiPjwvbGluZT5cbiAgICAgICAgICA8bGluZSB4MT1cIjBcIiB5MT1cIjQ1XCIgeDI9XCIzMjBcIiB5Mj1cIjQ1XCIgc3Ryb2tlPVwiaHNsKHZhcigtLWJvcmRlcikpXCIgc3Ryb2tlLXdpZHRoPVwiMVwiIG9wYWNpdHk9XCIwLjVcIj48L2xpbmU+XG4gICAgICAgICAgPHBhdGggW2F0dHIuZF09XCJsaW5lUGF0aFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiaHNsKHZhcigtLXByaW1hcnkpKVwiIHN0cm9rZS13aWR0aD1cIjIuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cbiAgICAgICAgPC9zdmc+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGgtNCB3LWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMlwiPlxuICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBsYWJlbCBvZiBsYWJlbHNcIiBjbGFzcz1cInRydW5jYXRlIHRleHQteHMgbGVhZGluZy00IHRleHQtW2hzbCh2YXIoLS1tdXRlZC1mb3JlZ3JvdW5kKSldXCI+e3sgbGFiZWwgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidhcmVhJ1wiIGNsYXNzPVwiZmxleCBoLVsyMzZweF0gdy1mdWxsIGZsZXgtY29sIGdhcC0yXCI+XG4gICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAzMjAgMTgwXCIgY2xhc3M9XCJoLVsxODNweF0gdy1mdWxsXCI+XG4gICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICA8bGluZWFyR3JhZGllbnQgaWQ9XCJwZG0tY2hhcnQtYXJlYS1ncmFkaWVudFwiIHgxPVwiMFwiIHkxPVwiMFwiIHgyPVwiMFwiIHkyPVwiMVwiPlxuICAgICAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCIwJVwiIHN0b3AtY29sb3I9XCJoc2wodmFyKC0tcHJpbWFyeSkpXCIgc3RvcC1vcGFjaXR5PVwiMC4zNVwiPjwvc3RvcD5cbiAgICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PVwiMTAwJVwiIHN0b3AtY29sb3I9XCJoc2wodmFyKC0tcHJpbWFyeSkpXCIgc3RvcC1vcGFjaXR5PVwiMC4wMlwiPjwvc3RvcD5cbiAgICAgICAgICAgIDwvbGluZWFyR3JhZGllbnQ+XG4gICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgIDxsaW5lIHgxPVwiMFwiIHkxPVwiMTgwXCIgeDI9XCIzMjBcIiB5Mj1cIjE4MFwiIHN0cm9rZT1cImhzbCh2YXIoLS1ib3JkZXIpKVwiIHN0cm9rZS13aWR0aD1cIjFcIj48L2xpbmU+XG4gICAgICAgICAgPGxpbmUgeDE9XCIwXCIgeTE9XCIxMzVcIiB4Mj1cIjMyMFwiIHkyPVwiMTM1XCIgc3Ryb2tlPVwiaHNsKHZhcigtLWJvcmRlcikpXCIgc3Ryb2tlLXdpZHRoPVwiMVwiIG9wYWNpdHk9XCIwLjVcIj48L2xpbmU+XG4gICAgICAgICAgPGxpbmUgeDE9XCIwXCIgeTE9XCI5MFwiIHgyPVwiMzIwXCIgeTI9XCI5MFwiIHN0cm9rZT1cImhzbCh2YXIoLS1ib3JkZXIpKVwiIHN0cm9rZS13aWR0aD1cIjFcIiBvcGFjaXR5PVwiMC41XCI+PC9saW5lPlxuICAgICAgICAgIDxsaW5lIHgxPVwiMFwiIHkxPVwiNDVcIiB4Mj1cIjMyMFwiIHkyPVwiNDVcIiBzdHJva2U9XCJoc2wodmFyKC0tYm9yZGVyKSlcIiBzdHJva2Utd2lkdGg9XCIxXCIgb3BhY2l0eT1cIjAuNVwiPjwvbGluZT5cbiAgICAgICAgICA8cGF0aCBbYXR0ci5kXT1cImFyZWFQYXRoXCIgZmlsbD1cInVybCgjcGRtLWNoYXJ0LWFyZWEtZ3JhZGllbnQpXCI+PC9wYXRoPlxuICAgICAgICAgIDxwYXRoIFthdHRyLmRdPVwibGluZVBhdGhcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImhzbCh2YXIoLS1wcmltYXJ5KSlcIiBzdHJva2Utd2lkdGg9XCIyLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBoLTQgdy1mdWxsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLTJcIj5cbiAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgbGFiZWwgb2YgbGFiZWxzXCIgY2xhc3M9XCJ0cnVuY2F0ZSB0ZXh0LXhzIGxlYWRpbmctNCB0ZXh0LVtoc2wodmFyKC0tbXV0ZWQtZm9yZWdyb3VuZCkpXVwiPnt7IGxhYmVsIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCIncGllJ1wiIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTZcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIGgtNDAgdy00MCByb3VuZGVkLWZ1bGxcIiBbc3R5bGUuYmFja2dyb3VuZF09XCJwaWVHcmFkaWVudFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhYnNvbHV0ZSBpbnNldC03IHJvdW5kZWQtZnVsbCBiZy1baHNsKHZhcigtLWNhcmQpKV1cIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGZsZXgtMSBnYXAtMlwiPlxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHNlZ21lbnQgb2YgcGllU2VnbWVudHNcIiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItW2hzbCh2YXIoLS1ib3JkZXIpKV0gcHgtMyBweS0yXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzaXplLTIuNSByb3VuZGVkLWZ1bGxcIiBbc3R5bGUuYmFja2dyb3VuZF09XCJzZWdtZW50LmNvbG9yXCI+PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc20gbGVhZGluZy01XCI+e3sgc2VnbWVudC5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtIGxlYWRpbmctNVwiPnt7IHNlZ21lbnQuc2l6ZSB8IG51bWJlcjogJzEuMC0wJyB9fSU8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidyYWRhcidcIiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC02XCI+XG4gICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAxNjAgMTYwXCIgY2xhc3M9XCJoLTQ0IHctNDRcIj5cbiAgICAgICAgICA8cG9seWdvbiBwb2ludHM9XCI4MCw4IDE0NCw0NCAxNDQsMTE2IDgwLDE1MiAxNiwxMTYgMTYsNDRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImhzbCh2YXIoLS1ib3JkZXIpKVwiPjwvcG9seWdvbj5cbiAgICAgICAgICA8cG9seWdvbiBwb2ludHM9XCI4MCwyOCAxMjYsNTQgMTI2LDEwNiA4MCwxMzIgMzQsMTA2IDM0LDU0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJoc2wodmFyKC0tYm9yZGVyKSlcIiBvcGFjaXR5PVwiMC43NVwiPjwvcG9seWdvbj5cbiAgICAgICAgICA8cG9seWdvbiBwb2ludHM9XCI4MCw0OCAxMDksNjQgMTA5LDk2IDgwLDExMiA1MSw5NiA1MSw2NFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiaHNsKHZhcigtLWJvcmRlcikpXCIgb3BhY2l0eT1cIjAuNTVcIj48L3BvbHlnb24+XG4gICAgICAgICAgPHBvbHlnb24gW2F0dHIucG9pbnRzXT1cInJhZGFyUG9pbnRzXCIgZmlsbD1cImhzbCh2YXIoLS1wcmltYXJ5KSlcIiBmaWxsLW9wYWNpdHk9XCIwLjIyXCIgc3Ryb2tlPVwiaHNsKHZhcigtLXByaW1hcnkpKVwiIHN0cm9rZS13aWR0aD1cIjJcIj48L3BvbHlnb24+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBmbGV4LTEgZ2FwLTJcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIHJhZGFyOyBpbmRleCBhcyBpXCIgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLVtoc2wodmFyKC0tYm9yZGVyKSldIHB4LTMgcHktMiB0ZXh0LXNtXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtW2hzbCh2YXIoLS1tdXRlZC1mb3JlZ3JvdW5kKSldXCI+TWV0cmljIHt7IGkgKyAxIH19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LW1lZGl1bVwiPnt7IGl0ZW0gfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidyYWRpYWwnXCIgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLTZcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIGZsZXggc2l6ZS00NCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgOTYgOTZcIiBjbGFzcz1cInNpemUtNDAgLXJvdGF0ZS05MFwiPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjQ4XCIgY3k9XCI0OFwiIHI9XCI0MlwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiaHNsKHZhcigtLW11dGVkKSlcIiBzdHJva2Utd2lkdGg9XCIxMFwiPjwvY2lyY2xlPlxuICAgICAgICAgICAgPGNpcmNsZVxuICAgICAgICAgICAgICBjeD1cIjQ4XCJcbiAgICAgICAgICAgICAgY3k9XCI0OFwiXG4gICAgICAgICAgICAgIHI9XCI0MlwiXG4gICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgc3Ryb2tlPVwiaHNsKHZhcigtLXByaW1hcnkpKVwiXG4gICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEwXCJcbiAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgIHN0cm9rZS1kYXNoYXJyYXk9XCIyNjMuODlcIlxuICAgICAgICAgICAgICBbYXR0ci5zdHJva2UtZGFzaG9mZnNldF09XCJyYWRpYWxTdHJva2VPZmZzZXRcIlxuICAgICAgICAgICAgPjwvY2lyY2xlPlxuICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhYnNvbHV0ZSB0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtWzMwcHhdIGZvbnQtc2VtaWJvbGQgbGVhZGluZy05XCI+e3sgcmFkaWFsVmFsdWUgfX0lPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC14cyB0ZXh0LVtoc2wodmFyKC0tbXV0ZWQtZm9yZWdyb3VuZCkpXVwiPnt7IHJhZGlhbExhYmVsIH19PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC0xXCI+XG4gICAgICAgICAgPHAgY2xhc3M9XCJtLTAgdGV4dC1zbSBmb250LW1lZGl1bSBsZWFkaW5nLTVcIj57eyByYWRpYWxMYWJlbCB9fTwvcD5cbiAgICAgICAgICA8cCBjbGFzcz1cIm0tMCBtdC0xIHRleHQtc20gbGVhZGluZy01IHRleHQtW2hzbCh2YXIoLS1tdXRlZC1mb3JlZ3JvdW5kKSldXCI+e3sgcmFkaWFsRGVzY3JpcHRpb24gfX08L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIid0b29sdGlwcydcIiBjbGFzcz1cImdyaWQgZ2FwLTNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlubGluZS1mbGV4IHctZml0IG1pbi13LVsyMjBweF0gZmxleC1jb2wgZ2FwLTIgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLVtoc2wodmFyKC0tYm9yZGVyKSldIGJnLVtoc2wodmFyKC0tY2FyZCkpXSBwLTMgc2hhZG93LXNtXCI+XG4gICAgICAgICAgPHAgY2xhc3M9XCJtLTAgdGV4dC14cyBmb250LW1lZGl1bSBsZWFkaW5nLTQgdGV4dC1baHNsKHZhcigtLW11dGVkLWZvcmVncm91bmQpKV1cIj57eyB0b29sdGlwVGl0bGUgfX08L3A+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiB0ZXh0LXNtXCI+XG4gICAgICAgICAgICA8c3Bhbj57eyB0b29sdGlwUHJpbWFyeUxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LXNlbWlib2xkXCI+e3sgdG9vbHRpcFByaW1hcnlWYWx1ZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHRleHQtc21cIj5cbiAgICAgICAgICAgIDxzcGFuPnt7IHRvb2x0aXBTZWNvbmRhcnlMYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1zZW1pYm9sZFwiPnt7IHRvb2x0aXBTZWNvbmRhcnlWYWx1ZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxwIGNsYXNzPVwibS0wIHRleHQteHMgdGV4dC1baHNsKHZhcigtLW11dGVkLWZvcmVncm91bmQpKV1cIj5Ub29sdGlwIHN0eWxlIHByZXBhcmFkbyBwYXJhIGNoYXJ0cyBkZSBsw61uZWEsIMOhcmVhIHkgYmFycmFzLjwvcD5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvc2VjdGlvbj5cbiJdfQ==
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
export class PdmCheckboxComponent {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.id = '';
|
|
7
|
+
this.checked = false;
|
|
8
|
+
this.disabled = false;
|
|
9
|
+
this.variant = 'default';
|
|
10
|
+
this.label = 'Accept terms and conditions';
|
|
11
|
+
this.description = '';
|
|
12
|
+
this.className = '';
|
|
13
|
+
this.checkedChange = new EventEmitter();
|
|
14
|
+
}
|
|
15
|
+
get hasDescription() {
|
|
16
|
+
return this.variant === 'subtext' || this.variant === 'card' ? !!this.description : false;
|
|
17
|
+
}
|
|
18
|
+
onToggle() {
|
|
19
|
+
if (this.disabled) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
this.checkedChange.emit(!this.checked);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
PdmCheckboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PdmCheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
26
|
+
PdmCheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PdmCheckboxComponent, selector: "pdm-checkbox", inputs: { id: "id", checked: "checked", disabled: "disabled", variant: "variant", label: "label", description: "description", className: "className" }, outputs: { checkedChange: "checkedChange" }, ngImport: i0, template: "<button\n type=\"button\"\n role=\"checkbox\"\n [attr.id]=\"id || null\"\n [attr.aria-checked]=\"checked\"\n [attr.aria-disabled]=\"disabled\"\n [disabled]=\"disabled\"\n [ngClass]=\"[\n 'w-full border-0 bg-transparent p-0 text-left outline-none focus:outline-none focus-visible:outline-none',\n variant === 'card'\n ? checked\n ? 'flex items-start gap-3 rounded-[10px] border border-foreground bg-muted p-3'\n : 'flex items-start gap-3 rounded-[10px] border border-border bg-background p-3'\n : hasDescription\n ? 'flex items-start gap-3'\n : 'flex items-center gap-3',\n disabled ? 'opacity-50' : '',\n className\n ]\"\n (click)=\"onToggle()\"\n>\n <span\n [ngClass]=\"[\n 'mt-0.5 inline-flex h-4 w-4 shrink-0 items-center justify-center rounded-[6px] border shadow-[0_1px_2px_rgba(0,0,0,0.1)]',\n checked ? 'border-foreground bg-foreground text-background' : 'border-input bg-background text-transparent'\n ]\"\n aria-hidden=\"true\"\n >\n <svg viewBox=\"0 0 16 16\" class=\"h-3 w-3\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M3 8.5L6.4 12L13 4\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </span>\n\n <span [ngClass]=\"['min-w-0 flex-1', hasDescription ? 'flex flex-col gap-2' : 'flex items-center']\">\n <span class=\"text-[14px] font-medium leading-5 text-foreground\">{{ label }}</span>\n <span *ngIf=\"hasDescription\" class=\"text-[14px] leading-5 text-muted-foreground\">{{ description }}</span>\n </span>\n</button>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PdmCheckboxComponent, decorators: [{
|
|
28
|
+
type: Component,
|
|
29
|
+
args: [{ selector: 'pdm-checkbox', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n type=\"button\"\n role=\"checkbox\"\n [attr.id]=\"id || null\"\n [attr.aria-checked]=\"checked\"\n [attr.aria-disabled]=\"disabled\"\n [disabled]=\"disabled\"\n [ngClass]=\"[\n 'w-full border-0 bg-transparent p-0 text-left outline-none focus:outline-none focus-visible:outline-none',\n variant === 'card'\n ? checked\n ? 'flex items-start gap-3 rounded-[10px] border border-foreground bg-muted p-3'\n : 'flex items-start gap-3 rounded-[10px] border border-border bg-background p-3'\n : hasDescription\n ? 'flex items-start gap-3'\n : 'flex items-center gap-3',\n disabled ? 'opacity-50' : '',\n className\n ]\"\n (click)=\"onToggle()\"\n>\n <span\n [ngClass]=\"[\n 'mt-0.5 inline-flex h-4 w-4 shrink-0 items-center justify-center rounded-[6px] border shadow-[0_1px_2px_rgba(0,0,0,0.1)]',\n checked ? 'border-foreground bg-foreground text-background' : 'border-input bg-background text-transparent'\n ]\"\n aria-hidden=\"true\"\n >\n <svg viewBox=\"0 0 16 16\" class=\"h-3 w-3\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M3 8.5L6.4 12L13 4\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </span>\n\n <span [ngClass]=\"['min-w-0 flex-1', hasDescription ? 'flex flex-col gap-2' : 'flex items-center']\">\n <span class=\"text-[14px] font-medium leading-5 text-foreground\">{{ label }}</span>\n <span *ngIf=\"hasDescription\" class=\"text-[14px] leading-5 text-muted-foreground\">{{ description }}</span>\n </span>\n</button>\n" }]
|
|
30
|
+
}], propDecorators: { id: [{
|
|
31
|
+
type: Input
|
|
32
|
+
}], checked: [{
|
|
33
|
+
type: Input
|
|
34
|
+
}], disabled: [{
|
|
35
|
+
type: Input
|
|
36
|
+
}], variant: [{
|
|
37
|
+
type: Input
|
|
38
|
+
}], label: [{
|
|
39
|
+
type: Input
|
|
40
|
+
}], description: [{
|
|
41
|
+
type: Input
|
|
42
|
+
}], className: [{
|
|
43
|
+
type: Input
|
|
44
|
+
}], checkedChange: [{
|
|
45
|
+
type: Output
|
|
46
|
+
}] } });
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFTaEcsTUFBTSxPQUFPLG9CQUFvQjtJQUxqQztRQU1XLE9BQUUsR0FBRyxFQUFFLENBQUM7UUFDUixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsWUFBTyxHQUF1QixTQUFTLENBQUM7UUFDeEMsVUFBSyxHQUFHLDZCQUE2QixDQUFDO1FBQ3RDLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFFZCxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7S0FhdkQ7SUFYQyxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUM1RixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QyxDQUFDOztrSEFyQlUsb0JBQW9CO3NHQUFwQixvQkFBb0IseVBDVGpDLHVsREFzQ0E7NEZEN0JhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxjQUFjLG1CQUVQLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLEVBQUU7c0JBQVYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFSSxhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCB0eXBlIFBkbUNoZWNrYm94VmFyaWFudCA9ICdkZWZhdWx0JyB8ICdzdWJ0ZXh0JyB8ICdjYXJkJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRtLWNoZWNrYm94JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoZWNrYm94LmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUGRtQ2hlY2tib3hDb21wb25lbnQge1xuICBASW5wdXQoKSBpZCA9ICcnO1xuICBASW5wdXQoKSBjaGVja2VkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIHZhcmlhbnQ6IFBkbUNoZWNrYm94VmFyaWFudCA9ICdkZWZhdWx0JztcbiAgQElucHV0KCkgbGFiZWwgPSAnQWNjZXB0IHRlcm1zIGFuZCBjb25kaXRpb25zJztcbiAgQElucHV0KCkgZGVzY3JpcHRpb24gPSAnJztcbiAgQElucHV0KCkgY2xhc3NOYW1lID0gJyc7XG5cbiAgQE91dHB1dCgpIGNoZWNrZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgZ2V0IGhhc0Rlc2NyaXB0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZhcmlhbnQgPT09ICdzdWJ0ZXh0JyB8fCB0aGlzLnZhcmlhbnQgPT09ICdjYXJkJyA/ICEhdGhpcy5kZXNjcmlwdGlvbiA6IGZhbHNlO1xuICB9XG5cbiAgb25Ub2dnbGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmNoZWNrZWRDaGFuZ2UuZW1pdCghdGhpcy5jaGVja2VkKTtcbiAgfVxufVxuIiwiPGJ1dHRvblxuICB0eXBlPVwiYnV0dG9uXCJcbiAgcm9sZT1cImNoZWNrYm94XCJcbiAgW2F0dHIuaWRdPVwiaWQgfHwgbnVsbFwiXG4gIFthdHRyLmFyaWEtY2hlY2tlZF09XCJjaGVja2VkXCJcbiAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFtuZ0NsYXNzXT1cIltcbiAgICAndy1mdWxsIGJvcmRlci0wIGJnLXRyYW5zcGFyZW50IHAtMCB0ZXh0LWxlZnQgb3V0bGluZS1ub25lIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZScsXG4gICAgdmFyaWFudCA9PT0gJ2NhcmQnXG4gICAgICA/IGNoZWNrZWRcbiAgICAgICAgPyAnZmxleCBpdGVtcy1zdGFydCBnYXAtMyByb3VuZGVkLVsxMHB4XSBib3JkZXIgYm9yZGVyLWZvcmVncm91bmQgYmctbXV0ZWQgcC0zJ1xuICAgICAgICA6ICdmbGV4IGl0ZW1zLXN0YXJ0IGdhcC0zIHJvdW5kZWQtWzEwcHhdIGJvcmRlciBib3JkZXItYm9yZGVyIGJnLWJhY2tncm91bmQgcC0zJ1xuICAgICAgOiBoYXNEZXNjcmlwdGlvblxuICAgICAgICA/ICdmbGV4IGl0ZW1zLXN0YXJ0IGdhcC0zJ1xuICAgICAgICA6ICdmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMycsXG4gICAgZGlzYWJsZWQgPyAnb3BhY2l0eS01MCcgOiAnJyxcbiAgICBjbGFzc05hbWVcbiAgXVwiXG4gIChjbGljayk9XCJvblRvZ2dsZSgpXCJcbj5cbiAgPHNwYW5cbiAgICBbbmdDbGFzc109XCJbXG4gICAgICAnbXQtMC41IGlubGluZS1mbGV4IGgtNCB3LTQgc2hyaW5rLTAgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtWzZweF0gYm9yZGVyIHNoYWRvdy1bMF8xcHhfMnB4X3JnYmEoMCwwLDAsMC4xKV0nLFxuICAgICAgY2hlY2tlZCA/ICdib3JkZXItZm9yZWdyb3VuZCBiZy1mb3JlZ3JvdW5kIHRleHQtYmFja2dyb3VuZCcgOiAnYm9yZGVyLWlucHV0IGJnLWJhY2tncm91bmQgdGV4dC10cmFuc3BhcmVudCdcbiAgICBdXCJcbiAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICA+XG4gICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgY2xhc3M9XCJoLTMgdy0zXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICA8cGF0aCBkPVwiTTMgOC41TDYuNCAxMkwxMyA0XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cbiAgICA8L3N2Zz5cbiAgPC9zcGFuPlxuXG4gIDxzcGFuIFtuZ0NsYXNzXT1cIlsnbWluLXctMCBmbGV4LTEnLCBoYXNEZXNjcmlwdGlvbiA/ICdmbGV4IGZsZXgtY29sIGdhcC0yJyA6ICdmbGV4IGl0ZW1zLWNlbnRlciddXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LVsxNHB4XSBmb250LW1lZGl1bSBsZWFkaW5nLTUgdGV4dC1mb3JlZ3JvdW5kXCI+e3sgbGFiZWwgfX08L3NwYW4+XG4gICAgPHNwYW4gKm5nSWY9XCJoYXNEZXNjcmlwdGlvblwiIGNsYXNzPVwidGV4dC1bMTRweF0gbGVhZGluZy01IHRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPnt7IGRlc2NyaXB0aW9uIH19PC9zcGFuPlxuICA8L3NwYW4+XG48L2J1dHRvbj5cbiJdfQ==
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
export class PdmCollapsibleComponent {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.title = '@peduarte starred 3 repositories';
|
|
7
|
+
this.open = false;
|
|
8
|
+
this.disabled = false;
|
|
9
|
+
this.items = ['@radix-ui/primitives', '@radix-ui/colors', '@stitches/react'];
|
|
10
|
+
this.className = '';
|
|
11
|
+
this.openChange = new EventEmitter();
|
|
12
|
+
}
|
|
13
|
+
get visibleItems() {
|
|
14
|
+
if (!this.items.length) {
|
|
15
|
+
return [];
|
|
16
|
+
}
|
|
17
|
+
return this.open ? this.items : this.items.slice(0, 1);
|
|
18
|
+
}
|
|
19
|
+
toggle() {
|
|
20
|
+
if (!this.disabled) {
|
|
21
|
+
this.openChange.emit(!this.open);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
PdmCollapsibleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PdmCollapsibleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
26
|
+
PdmCollapsibleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PdmCollapsibleComponent, selector: "pdm-collapsible", inputs: { title: "title", open: "open", disabled: "disabled", items: "items", className: "className" }, outputs: { openChange: "openChange" }, ngImport: i0, template: "<div [ngClass]=\"['flex w-[350px] flex-col gap-2', className]\">\n <button\n type=\"button\"\n [disabled]=\"disabled\"\n class=\"flex w-full items-center justify-between px-4 text-left\"\n [attr.aria-expanded]=\"open\"\n (click)=\"toggle()\"\n >\n <span class=\"text-[14px] font-semibold leading-5 text-[#0a0a0a]\">{{ title }}</span>\n <span class=\"inline-flex h-8 w-8 items-center justify-center text-[#0a0a0a]\">\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7 15L12 20L17 15\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M17 9L12 4L7 9\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </span>\n </button>\n\n <div class=\"flex w-full flex-col gap-2\">\n <div\n *ngFor=\"let item of visibleItems\"\n class=\"w-full rounded-[8px] border border-[#e5e5e5] bg-white px-4 py-2\"\n >\n <span class=\"font-mono text-[14px] leading-5 text-[#0a0a0a]\">{{ item }}</span>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PdmCollapsibleComponent, decorators: [{
|
|
28
|
+
type: Component,
|
|
29
|
+
args: [{ selector: 'pdm-collapsible', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [ngClass]=\"['flex w-[350px] flex-col gap-2', className]\">\n <button\n type=\"button\"\n [disabled]=\"disabled\"\n class=\"flex w-full items-center justify-between px-4 text-left\"\n [attr.aria-expanded]=\"open\"\n (click)=\"toggle()\"\n >\n <span class=\"text-[14px] font-semibold leading-5 text-[#0a0a0a]\">{{ title }}</span>\n <span class=\"inline-flex h-8 w-8 items-center justify-center text-[#0a0a0a]\">\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7 15L12 20L17 15\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M17 9L12 4L7 9\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </span>\n </button>\n\n <div class=\"flex w-full flex-col gap-2\">\n <div\n *ngFor=\"let item of visibleItems\"\n class=\"w-full rounded-[8px] border border-[#e5e5e5] bg-white px-4 py-2\"\n >\n <span class=\"font-mono text-[14px] leading-5 text-[#0a0a0a]\">{{ item }}</span>\n </div>\n </div>\n</div>\n" }]
|
|
30
|
+
}], propDecorators: { title: [{
|
|
31
|
+
type: Input
|
|
32
|
+
}], open: [{
|
|
33
|
+
type: Input
|
|
34
|
+
}], disabled: [{
|
|
35
|
+
type: Input
|
|
36
|
+
}], items: [{
|
|
37
|
+
type: Input
|
|
38
|
+
}], className: [{
|
|
39
|
+
type: Input
|
|
40
|
+
}], openChange: [{
|
|
41
|
+
type: Output
|
|
42
|
+
}] } });
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGFwc2libGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2NvbGxhcHNpYmxlL2NvbGxhcHNpYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9jb2xsYXBzaWJsZS9jb2xsYXBzaWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFPaEcsTUFBTSxPQUFPLHVCQUF1QjtJQUxwQztRQU1XLFVBQUssR0FBRyxrQ0FBa0MsQ0FBQztRQUMzQyxTQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2IsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixVQUFLLEdBQWEsQ0FBQyxzQkFBc0IsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2xGLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFFZCxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztLQWNwRDtJQVpDLElBQUksWUFBWTtRQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUN0QixPQUFPLEVBQUUsQ0FBQztTQUNYO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNsQztJQUNILENBQUM7O3FIQXBCVSx1QkFBdUI7eUdBQXZCLHVCQUF1QixzTUNQcEMsd3BDQTBCQTs0RkRuQmEsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLGlCQUFpQixtQkFFVix1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUksVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZG0tY29sbGFwc2libGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29sbGFwc2libGUuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBQZG1Db2xsYXBzaWJsZUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHRpdGxlID0gJ0BwZWR1YXJ0ZSBzdGFycmVkIDMgcmVwb3NpdG9yaWVzJztcbiAgQElucHV0KCkgb3BlbiA9IGZhbHNlO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBpdGVtczogc3RyaW5nW10gPSBbJ0ByYWRpeC11aS9wcmltaXRpdmVzJywgJ0ByYWRpeC11aS9jb2xvcnMnLCAnQHN0aXRjaGVzL3JlYWN0J107XG4gIEBJbnB1dCgpIGNsYXNzTmFtZSA9ICcnO1xuXG4gIEBPdXRwdXQoKSBvcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIGdldCB2aXNpYmxlSXRlbXMoKTogc3RyaW5nW10ge1xuICAgIGlmICghdGhpcy5pdGVtcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMub3BlbiA/IHRoaXMuaXRlbXMgOiB0aGlzLml0ZW1zLnNsaWNlKDAsIDEpO1xuICB9XG5cbiAgdG9nZ2xlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5vcGVuQ2hhbmdlLmVtaXQoIXRoaXMub3Blbik7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IFtuZ0NsYXNzXT1cIlsnZmxleCB3LVszNTBweF0gZmxleC1jb2wgZ2FwLTInLCBjbGFzc05hbWVdXCI+XG4gIDxidXR0b25cbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIGNsYXNzPVwiZmxleCB3LWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBweC00IHRleHQtbGVmdFwiXG4gICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJvcGVuXCJcbiAgICAoY2xpY2spPVwidG9nZ2xlKClcIlxuICA+XG4gICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LVsxNHB4XSBmb250LXNlbWlib2xkIGxlYWRpbmctNSB0ZXh0LVsjMGEwYTBhXVwiPnt7IHRpdGxlIH19PC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPVwiaW5saW5lLWZsZXggaC04IHctOCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC1bIzBhMGEwYV1cIj5cbiAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGNsYXNzPVwiaC00IHctNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICA8cGF0aCBkPVwiTTcgMTVMMTIgMjBMMTcgMTVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XG4gICAgICAgIDxwYXRoIGQ9XCJNMTcgOUwxMiA0TDcgOVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cbiAgICAgIDwvc3ZnPlxuICAgIDwvc3Bhbj5cbiAgPC9idXR0b24+XG5cbiAgPGRpdiBjbGFzcz1cImZsZXggdy1mdWxsIGZsZXgtY29sIGdhcC0yXCI+XG4gICAgPGRpdlxuICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgdmlzaWJsZUl0ZW1zXCJcbiAgICAgIGNsYXNzPVwidy1mdWxsIHJvdW5kZWQtWzhweF0gYm9yZGVyIGJvcmRlci1bI2U1ZTVlNV0gYmctd2hpdGUgcHgtNCBweS0yXCJcbiAgICA+XG4gICAgICA8c3BhbiBjbGFzcz1cImZvbnQtbW9ubyB0ZXh0LVsxNHB4XSBsZWFkaW5nLTUgdGV4dC1bIzBhMGEwYV1cIj57eyBpdGVtIH19PC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
export class PdmComboboxComponent {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.open = false;
|
|
7
|
+
this.placeholder = 'Select framework...';
|
|
8
|
+
this.searchPlaceholder = 'Search framework';
|
|
9
|
+
this.className = '';
|
|
10
|
+
this.options = ['Next.js', 'SvelteKit', 'Nuxt.js', 'Remix', 'Astro'];
|
|
11
|
+
this.value = '';
|
|
12
|
+
this.width = 200;
|
|
13
|
+
this.openChange = new EventEmitter();
|
|
14
|
+
this.valueChange = new EventEmitter();
|
|
15
|
+
}
|
|
16
|
+
get selectedLabel() {
|
|
17
|
+
return this.value || this.placeholder;
|
|
18
|
+
}
|
|
19
|
+
toggle() {
|
|
20
|
+
this.openChange.emit(!this.open);
|
|
21
|
+
}
|
|
22
|
+
select(option) {
|
|
23
|
+
this.valueChange.emit(option);
|
|
24
|
+
this.openChange.emit(false);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
PdmComboboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PdmComboboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
28
|
+
PdmComboboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PdmComboboxComponent, selector: "pdm-combobox", inputs: { open: "open", placeholder: "placeholder", searchPlaceholder: "searchPlaceholder", className: "className", options: "options", value: "value", width: "width" }, outputs: { openChange: "openChange", valueChange: "valueChange" }, ngImport: i0, template: "<div [ngClass]=\"['flex flex-col gap-1', className]\" [style.width.px]=\"width\">\n <button\n type=\"button\"\n class=\"flex h-9 w-full items-center gap-2 rounded-[8px] border border-[#e5e5e5] bg-white px-3 py-2 shadow-[0_1px_2px_rgba(0,0,0,0.1)]\"\n [attr.aria-expanded]=\"open\"\n (click)=\"toggle()\"\n >\n <span class=\"min-w-0 flex-1 truncate text-left text-[14px] font-medium leading-5 text-[#0a0a0a]\">{{ selectedLabel }}</span>\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-[#0a0a0a]\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7 15L12 20L17 15\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M17 9L12 4L7 9\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n\n <div\n *ngIf=\"open\"\n class=\"w-full rounded-[8px] border border-[#e5e5e5] bg-white shadow-[0_2px_4px_-2px_rgba(0,0,0,0.1),0_4px_6px_-1px_rgba(0,0,0,0.1)]\"\n >\n <div class=\"flex items-center gap-2 border-b border-[#e5e5e5] px-3\">\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-[#737373]\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"11\" cy=\"11\" r=\"7\" stroke=\"currentColor\" stroke-width=\"1.5\"></circle>\n <path d=\"M20 20L16.6 16.6\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n </svg>\n <div class=\"h-9 flex-1 py-2 text-[14px] leading-5 text-[#737373]\">{{ searchPlaceholder }}</div>\n </div>\n\n <div class=\"p-1\">\n <button\n *ngFor=\"let option of options\"\n type=\"button\"\n class=\"flex w-full items-center gap-2 rounded-[4px] px-2 py-[6px] text-left\"\n [ngClass]=\"option === value ? 'bg-[#f5f5f5]' : ''\"\n (click)=\"select(option)\"\n >\n <span [ngClass]=\"['min-w-0 flex-1 truncate text-[14px] leading-5', option === value ? 'text-[#171717]' : 'text-[#0a0a0a]']\">{{ option }}</span>\n <svg *ngIf=\"option === value\" viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-[#0a0a0a]\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M5 12.5L9.2 16.7L19 7\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PdmComboboxComponent, decorators: [{
|
|
30
|
+
type: Component,
|
|
31
|
+
args: [{ selector: 'pdm-combobox', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [ngClass]=\"['flex flex-col gap-1', className]\" [style.width.px]=\"width\">\n <button\n type=\"button\"\n class=\"flex h-9 w-full items-center gap-2 rounded-[8px] border border-[#e5e5e5] bg-white px-3 py-2 shadow-[0_1px_2px_rgba(0,0,0,0.1)]\"\n [attr.aria-expanded]=\"open\"\n (click)=\"toggle()\"\n >\n <span class=\"min-w-0 flex-1 truncate text-left text-[14px] font-medium leading-5 text-[#0a0a0a]\">{{ selectedLabel }}</span>\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-[#0a0a0a]\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7 15L12 20L17 15\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M17 9L12 4L7 9\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n\n <div\n *ngIf=\"open\"\n class=\"w-full rounded-[8px] border border-[#e5e5e5] bg-white shadow-[0_2px_4px_-2px_rgba(0,0,0,0.1),0_4px_6px_-1px_rgba(0,0,0,0.1)]\"\n >\n <div class=\"flex items-center gap-2 border-b border-[#e5e5e5] px-3\">\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-[#737373]\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"11\" cy=\"11\" r=\"7\" stroke=\"currentColor\" stroke-width=\"1.5\"></circle>\n <path d=\"M20 20L16.6 16.6\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n </svg>\n <div class=\"h-9 flex-1 py-2 text-[14px] leading-5 text-[#737373]\">{{ searchPlaceholder }}</div>\n </div>\n\n <div class=\"p-1\">\n <button\n *ngFor=\"let option of options\"\n type=\"button\"\n class=\"flex w-full items-center gap-2 rounded-[4px] px-2 py-[6px] text-left\"\n [ngClass]=\"option === value ? 'bg-[#f5f5f5]' : ''\"\n (click)=\"select(option)\"\n >\n <span [ngClass]=\"['min-w-0 flex-1 truncate text-[14px] leading-5', option === value ? 'text-[#171717]' : 'text-[#0a0a0a]']\">{{ option }}</span>\n <svg *ngIf=\"option === value\" viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-[#0a0a0a]\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M5 12.5L9.2 16.7L19 7\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n </div>\n </div>\n</div>\n" }]
|
|
32
|
+
}], propDecorators: { open: [{
|
|
33
|
+
type: Input
|
|
34
|
+
}], placeholder: [{
|
|
35
|
+
type: Input
|
|
36
|
+
}], searchPlaceholder: [{
|
|
37
|
+
type: Input
|
|
38
|
+
}], className: [{
|
|
39
|
+
type: Input
|
|
40
|
+
}], options: [{
|
|
41
|
+
type: Input
|
|
42
|
+
}], value: [{
|
|
43
|
+
type: Input
|
|
44
|
+
}], width: [{
|
|
45
|
+
type: Input
|
|
46
|
+
}], openChange: [{
|
|
47
|
+
type: Output
|
|
48
|
+
}], valueChange: [{
|
|
49
|
+
type: Output
|
|
50
|
+
}] } });
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm9ib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2NvbWJvYm94L2NvbWJvYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9jb21ib2JveC9jb21ib2JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFPaEcsTUFBTSxPQUFPLG9CQUFvQjtJQUxqQztRQU1XLFNBQUksR0FBRyxLQUFLLENBQUM7UUFDYixnQkFBVyxHQUFHLHFCQUFxQixDQUFDO1FBQ3BDLHNCQUFpQixHQUFHLGtCQUFrQixDQUFDO1FBQ3ZDLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFDZixZQUFPLEdBQWEsQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDMUUsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLFVBQUssR0FBRyxHQUFHLENBQUM7UUFFWCxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUN6QyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7S0FjcEQ7SUFaQyxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUN4QyxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBYztRQUNuQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDOztrSEF2QlUsb0JBQW9CO3NHQUFwQixvQkFBb0IsaVNDUGpDLDYyRUEwQ0E7NEZEbkNhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxjQUFjLG1CQUVQLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLElBQUk7c0JBQVosS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUVJLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZG0tY29tYm9ib3gnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29tYm9ib3guY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBQZG1Db21ib2JveENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIG9wZW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnU2VsZWN0IGZyYW1ld29yay4uLic7XG4gIEBJbnB1dCgpIHNlYXJjaFBsYWNlaG9sZGVyID0gJ1NlYXJjaCBmcmFtZXdvcmsnO1xuICBASW5wdXQoKSBjbGFzc05hbWUgPSAnJztcbiAgQElucHV0KCkgb3B0aW9uczogc3RyaW5nW10gPSBbJ05leHQuanMnLCAnU3ZlbHRlS2l0JywgJ051eHQuanMnLCAnUmVtaXgnLCAnQXN0cm8nXTtcbiAgQElucHV0KCkgdmFsdWUgPSAnJztcbiAgQElucHV0KCkgd2lkdGggPSAyMDA7XG5cbiAgQE91dHB1dCgpIG9wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIGdldCBzZWxlY3RlZExhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUgfHwgdGhpcy5wbGFjZWhvbGRlcjtcbiAgfVxuXG4gIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW5DaGFuZ2UuZW1pdCghdGhpcy5vcGVuKTtcbiAgfVxuXG4gIHNlbGVjdChvcHRpb246IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChvcHRpb24pO1xuICAgIHRoaXMub3BlbkNoYW5nZS5lbWl0KGZhbHNlKTtcbiAgfVxufVxuIiwiPGRpdiBbbmdDbGFzc109XCJbJ2ZsZXggZmxleC1jb2wgZ2FwLTEnLCBjbGFzc05hbWVdXCIgW3N0eWxlLndpZHRoLnB4XT1cIndpZHRoXCI+XG4gIDxidXR0b25cbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBjbGFzcz1cImZsZXggaC05IHctZnVsbCBpdGVtcy1jZW50ZXIgZ2FwLTIgcm91bmRlZC1bOHB4XSBib3JkZXIgYm9yZGVyLVsjZTVlNWU1XSBiZy13aGl0ZSBweC0zIHB5LTIgc2hhZG93LVswXzFweF8ycHhfcmdiYSgwLDAsMCwwLjEpXVwiXG4gICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJvcGVuXCJcbiAgICAoY2xpY2spPVwidG9nZ2xlKClcIlxuICA+XG4gICAgPHNwYW4gY2xhc3M9XCJtaW4tdy0wIGZsZXgtMSB0cnVuY2F0ZSB0ZXh0LWxlZnQgdGV4dC1bMTRweF0gZm9udC1tZWRpdW0gbGVhZGluZy01IHRleHQtWyMwYTBhMGFdXCI+e3sgc2VsZWN0ZWRMYWJlbCB9fTwvc3Bhbj5cbiAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBjbGFzcz1cImgtNCB3LTQgdGV4dC1bIzBhMGEwYV1cIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgIDxwYXRoIGQ9XCJNNyAxNUwxMiAyMEwxNyAxNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cbiAgICAgIDxwYXRoIGQ9XCJNMTcgOUwxMiA0TDcgOVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cbiAgICA8L3N2Zz5cbiAgPC9idXR0b24+XG5cbiAgPGRpdlxuICAgICpuZ0lmPVwib3BlblwiXG4gICAgY2xhc3M9XCJ3LWZ1bGwgcm91bmRlZC1bOHB4XSBib3JkZXIgYm9yZGVyLVsjZTVlNWU1XSBiZy13aGl0ZSBzaGFkb3ctWzBfMnB4XzRweF8tMnB4X3JnYmEoMCwwLDAsMC4xKSwwXzRweF82cHhfLTFweF9yZ2JhKDAsMCwwLDAuMSldXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiBib3JkZXItYiBib3JkZXItWyNlNWU1ZTVdIHB4LTNcIj5cbiAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGNsYXNzPVwiaC00IHctNCB0ZXh0LVsjNzM3MzczXVwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICA8Y2lyY2xlIGN4PVwiMTFcIiBjeT1cIjExXCIgcj1cIjdcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIj48L2NpcmNsZT5cbiAgICAgICAgPHBhdGggZD1cIk0yMCAyMEwxNi42IDE2LjZcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCI+PC9wYXRoPlxuICAgICAgPC9zdmc+XG4gICAgICA8ZGl2IGNsYXNzPVwiaC05IGZsZXgtMSBweS0yIHRleHQtWzE0cHhdIGxlYWRpbmctNSB0ZXh0LVsjNzM3MzczXVwiPnt7IHNlYXJjaFBsYWNlaG9sZGVyIH19PC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwicC0xXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uc1wiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cImZsZXggdy1mdWxsIGl0ZW1zLWNlbnRlciBnYXAtMiByb3VuZGVkLVs0cHhdIHB4LTIgcHktWzZweF0gdGV4dC1sZWZ0XCJcbiAgICAgICAgW25nQ2xhc3NdPVwib3B0aW9uID09PSB2YWx1ZSA/ICdiZy1bI2Y1ZjVmNV0nIDogJydcIlxuICAgICAgICAoY2xpY2spPVwic2VsZWN0KG9wdGlvbilcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJbJ21pbi13LTAgZmxleC0xIHRydW5jYXRlIHRleHQtWzE0cHhdIGxlYWRpbmctNScsIG9wdGlvbiA9PT0gdmFsdWUgPyAndGV4dC1bIzE3MTcxN10nIDogJ3RleHQtWyMwYTBhMGFdJ11cIj57eyBvcHRpb24gfX08L3NwYW4+XG4gICAgICAgIDxzdmcgKm5nSWY9XCJvcHRpb24gPT09IHZhbHVlXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGNsYXNzPVwiaC00IHctNCB0ZXh0LVsjMGEwYTBhXVwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNNSAxMi41TDkuMiAxNi43TDE5IDdcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjhcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
import * as i2 from "../icon/icon.component";
|
|
5
|
+
export class PdmCommandComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.open = true;
|
|
8
|
+
this.hintLabel = 'Press';
|
|
9
|
+
this.hintKey = 'J';
|
|
10
|
+
this.placeholder = 'Type a command or search...';
|
|
11
|
+
this.emptyMessage = 'No results found.';
|
|
12
|
+
this.items = [
|
|
13
|
+
{ label: 'Calendar', value: 'calendar', group: 'Suggestions', icon: 'calendar' },
|
|
14
|
+
{ label: 'Search emoji', value: 'emoji', group: 'Suggestions', icon: 'smile' },
|
|
15
|
+
{ label: 'Calculator', value: 'calculator', group: 'Suggestions', icon: 'calculator', disabled: true },
|
|
16
|
+
{ label: 'Profile', value: 'profile', group: 'Settings', icon: 'user', shortcut: '⌘P' },
|
|
17
|
+
{ label: 'Billing', value: 'billing', group: 'Settings', icon: 'credit-card', shortcut: '⌘B' },
|
|
18
|
+
{ label: 'Settings', value: 'settings', group: 'Settings', icon: 'settings', shortcut: '⌘S' }
|
|
19
|
+
];
|
|
20
|
+
this.className = '';
|
|
21
|
+
this.itemSelect = new EventEmitter();
|
|
22
|
+
this.openChange = new EventEmitter();
|
|
23
|
+
this.query = '';
|
|
24
|
+
}
|
|
25
|
+
get filteredItems() {
|
|
26
|
+
const q = this.query.toLowerCase().trim();
|
|
27
|
+
if (!q)
|
|
28
|
+
return this.items;
|
|
29
|
+
return this.items.filter((item) => item.label.toLowerCase().includes(q));
|
|
30
|
+
}
|
|
31
|
+
get groupedItems() {
|
|
32
|
+
const map = new Map();
|
|
33
|
+
for (const item of this.filteredItems) {
|
|
34
|
+
const key = item.group || '';
|
|
35
|
+
const arr = map.get(key) ?? [];
|
|
36
|
+
arr.push(item);
|
|
37
|
+
map.set(key, arr);
|
|
38
|
+
}
|
|
39
|
+
return Array.from(map.entries()).map(([name, items]) => ({ name, items }));
|
|
40
|
+
}
|
|
41
|
+
onQueryChange(event) {
|
|
42
|
+
this.query = event.target.value;
|
|
43
|
+
}
|
|
44
|
+
toggleOpen() {
|
|
45
|
+
this.openChange.emit(!this.open);
|
|
46
|
+
}
|
|
47
|
+
select(value) {
|
|
48
|
+
this.itemSelect.emit(value);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
PdmCommandComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PdmCommandComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
52
|
+
PdmCommandComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PdmCommandComponent, selector: "pdm-command", inputs: { open: "open", hintLabel: "hintLabel", hintKey: "hintKey", placeholder: "placeholder", emptyMessage: "emptyMessage", items: "items", className: "className" }, outputs: { itemSelect: "itemSelect", openChange: "openChange" }, ngImport: i0, template: "<div [ngClass]=\"['w-full', className]\">\n <div *ngIf=\"!open\" class=\"flex items-center gap-1\">\n <span class=\"text-[14px] font-medium leading-5 text-[#737373]\">{{ hintLabel }}</span>\n <button\n type=\"button\"\n class=\"inline-flex h-5 items-center gap-0.5 rounded-[6px] border border-[#e5e5e5] bg-[#f5f5f5] px-1.5\"\n (click)=\"toggleOpen()\"\n >\n <pdm-icon name=\"command\" [size]=\"12\" className=\"text-[#737373]\" [decorative]=\"true\"></pdm-icon>\n <span class=\"text-[12px] leading-4 text-[#737373]\">{{ hintKey }}</span>\n </button>\n </div>\n\n <section\n *ngIf=\"open\"\n class=\"flex w-full flex-col overflow-hidden rounded-[10px] border border-[#e5e5e5] bg-white shadow-[0_2px_4px_-2px_rgba(0,0,0,0.1),0_4px_6px_-1px_rgba(0,0,0,0.1)]\"\n >\n <div class=\"flex items-center gap-2 border-b border-[#e5e5e5] px-3\">\n <pdm-icon name=\"search\" [size]=\"16\" className=\"text-[#737373]\" [decorative]=\"true\"></pdm-icon>\n <input\n type=\"text\"\n [placeholder]=\"placeholder\"\n [value]=\"query\"\n (input)=\"onQueryChange($event)\"\n class=\"h-10 w-full bg-transparent py-3 text-[14px] leading-5 text-[#0a0a0a] outline-none placeholder:text-[#737373]\"\n />\n </div>\n\n <div class=\"max-h-[300px] overflow-y-auto p-1\">\n <ng-container *ngFor=\"let group of groupedItems; let groupIndex = index\">\n <div *ngIf=\"group.name\" class=\"px-2 py-[6px] text-[12px] leading-4 text-[#737373]\">{{ group.name }}</div>\n <button\n *ngFor=\"let item of group.items\"\n type=\"button\"\n [disabled]=\"item.disabled\"\n class=\"flex w-full items-center gap-2 rounded-[6px] px-2 py-[6px] text-left\"\n [ngClass]=\"[\n item.disabled ? 'opacity-50' : '',\n item.label === 'Calendar' ? 'bg-[#f5f5f5]' : ''\n ]\"\n (click)=\"select(item.value)\"\n >\n <span class=\"inline-flex h-4 w-4 items-center justify-center text-[#0a0a0a]\">\n <pdm-icon *ngIf=\"item.icon\" [name]=\"item.icon\" [size]=\"16\" [decorative]=\"true\"></pdm-icon>\n </span>\n <span class=\"min-w-0 flex-1 text-[14px] leading-5 text-[#0a0a0a]\">{{ item.label }}</span>\n <span *ngIf=\"item.shortcut\" class=\"text-[12px] leading-4 text-[#737373]\">{{ item.shortcut }}</span>\n </button>\n <div *ngIf=\"groupIndex === 0 && groupedItems.length > 1\" class=\"my-1 border-t border-[#e5e5e5]\"></div>\n </ng-container>\n\n <p *ngIf=\"filteredItems.length === 0\" class=\"py-6 text-center text-[14px] text-[#737373]\">{{ emptyMessage }}</p>\n </div>\n </section>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.PdmIconComponent, selector: "pdm-icon", inputs: ["name", "library", "assetUrl", "size", "strokeWidth", "className", "ariaLabel", "decorative"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
53
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PdmCommandComponent, decorators: [{
|
|
54
|
+
type: Component,
|
|
55
|
+
args: [{ selector: 'pdm-command', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [ngClass]=\"['w-full', className]\">\n <div *ngIf=\"!open\" class=\"flex items-center gap-1\">\n <span class=\"text-[14px] font-medium leading-5 text-[#737373]\">{{ hintLabel }}</span>\n <button\n type=\"button\"\n class=\"inline-flex h-5 items-center gap-0.5 rounded-[6px] border border-[#e5e5e5] bg-[#f5f5f5] px-1.5\"\n (click)=\"toggleOpen()\"\n >\n <pdm-icon name=\"command\" [size]=\"12\" className=\"text-[#737373]\" [decorative]=\"true\"></pdm-icon>\n <span class=\"text-[12px] leading-4 text-[#737373]\">{{ hintKey }}</span>\n </button>\n </div>\n\n <section\n *ngIf=\"open\"\n class=\"flex w-full flex-col overflow-hidden rounded-[10px] border border-[#e5e5e5] bg-white shadow-[0_2px_4px_-2px_rgba(0,0,0,0.1),0_4px_6px_-1px_rgba(0,0,0,0.1)]\"\n >\n <div class=\"flex items-center gap-2 border-b border-[#e5e5e5] px-3\">\n <pdm-icon name=\"search\" [size]=\"16\" className=\"text-[#737373]\" [decorative]=\"true\"></pdm-icon>\n <input\n type=\"text\"\n [placeholder]=\"placeholder\"\n [value]=\"query\"\n (input)=\"onQueryChange($event)\"\n class=\"h-10 w-full bg-transparent py-3 text-[14px] leading-5 text-[#0a0a0a] outline-none placeholder:text-[#737373]\"\n />\n </div>\n\n <div class=\"max-h-[300px] overflow-y-auto p-1\">\n <ng-container *ngFor=\"let group of groupedItems; let groupIndex = index\">\n <div *ngIf=\"group.name\" class=\"px-2 py-[6px] text-[12px] leading-4 text-[#737373]\">{{ group.name }}</div>\n <button\n *ngFor=\"let item of group.items\"\n type=\"button\"\n [disabled]=\"item.disabled\"\n class=\"flex w-full items-center gap-2 rounded-[6px] px-2 py-[6px] text-left\"\n [ngClass]=\"[\n item.disabled ? 'opacity-50' : '',\n item.label === 'Calendar' ? 'bg-[#f5f5f5]' : ''\n ]\"\n (click)=\"select(item.value)\"\n >\n <span class=\"inline-flex h-4 w-4 items-center justify-center text-[#0a0a0a]\">\n <pdm-icon *ngIf=\"item.icon\" [name]=\"item.icon\" [size]=\"16\" [decorative]=\"true\"></pdm-icon>\n </span>\n <span class=\"min-w-0 flex-1 text-[14px] leading-5 text-[#0a0a0a]\">{{ item.label }}</span>\n <span *ngIf=\"item.shortcut\" class=\"text-[12px] leading-4 text-[#737373]\">{{ item.shortcut }}</span>\n </button>\n <div *ngIf=\"groupIndex === 0 && groupedItems.length > 1\" class=\"my-1 border-t border-[#e5e5e5]\"></div>\n </ng-container>\n\n <p *ngIf=\"filteredItems.length === 0\" class=\"py-6 text-center text-[14px] text-[#737373]\">{{ emptyMessage }}</p>\n </div>\n </section>\n</div>\n" }]
|
|
56
|
+
}], propDecorators: { open: [{
|
|
57
|
+
type: Input
|
|
58
|
+
}], hintLabel: [{
|
|
59
|
+
type: Input
|
|
60
|
+
}], hintKey: [{
|
|
61
|
+
type: Input
|
|
62
|
+
}], placeholder: [{
|
|
63
|
+
type: Input
|
|
64
|
+
}], emptyMessage: [{
|
|
65
|
+
type: Input
|
|
66
|
+
}], items: [{
|
|
67
|
+
type: Input
|
|
68
|
+
}], className: [{
|
|
69
|
+
type: Input
|
|
70
|
+
}], itemSelect: [{
|
|
71
|
+
type: Output
|
|
72
|
+
}], openChange: [{
|
|
73
|
+
type: Output
|
|
74
|
+
}] } });
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvY29tbWFuZC9jb21tYW5kLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9jb21tYW5kL2NvbW1hbmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQWlCaEcsTUFBTSxPQUFPLG1CQUFtQjtJQUxoQztRQU1XLFNBQUksR0FBRyxJQUFJLENBQUM7UUFDWixjQUFTLEdBQUcsT0FBTyxDQUFDO1FBQ3BCLFlBQU8sR0FBRyxHQUFHLENBQUM7UUFDZCxnQkFBVyxHQUFHLDZCQUE2QixDQUFDO1FBQzVDLGlCQUFZLEdBQUcsbUJBQW1CLENBQUM7UUFDbkMsVUFBSyxHQUFxQjtZQUNqQyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDaEYsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO1lBQzlFLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1lBQ3RHLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1lBQ3ZGLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1lBQzlGLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1NBQzlGLENBQUM7UUFDTyxjQUFTLEdBQUcsRUFBRSxDQUFDO1FBRWQsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDeEMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFFbkQsVUFBSyxHQUFHLEVBQUUsQ0FBQztLQThCWjtJQTVCQyxJQUFJLGFBQWE7UUFDZixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFDLElBQUksQ0FBQyxDQUFDO1lBQUUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzFCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxFQUE0QixDQUFDO1FBQ2hELEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNyQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUM3QixNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMvQixHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2YsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDbkI7UUFDRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBWTtRQUN4QixJQUFJLENBQUMsS0FBSyxHQUFJLEtBQUssQ0FBQyxNQUEyQixDQUFDLEtBQUssQ0FBQztJQUN4RCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBYTtRQUNsQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDOztpSEFoRFUsbUJBQW1CO3FHQUFuQixtQkFBbUIsNFJDakJoQyw0cUZBdURBOzRGRHRDYSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsYUFBYSxtQkFFTix1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFRRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVJLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBQZG1JY29uTmFtZSB9IGZyb20gJy4uL2ljb24vaWNvbi5jb21wb25lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBkbUNvbW1hbmRJdGVtIHtcbiAgbGFiZWw6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbiAgZ3JvdXA/OiBzdHJpbmc7XG4gIGljb24/OiBQZG1JY29uTmFtZTtcbiAgc2hvcnRjdXQ/OiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRtLWNvbW1hbmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29tbWFuZC5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFBkbUNvbW1hbmRDb21wb25lbnQge1xuICBASW5wdXQoKSBvcGVuID0gdHJ1ZTtcbiAgQElucHV0KCkgaGludExhYmVsID0gJ1ByZXNzJztcbiAgQElucHV0KCkgaGludEtleSA9ICdKJztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnVHlwZSBhIGNvbW1hbmQgb3Igc2VhcmNoLi4uJztcbiAgQElucHV0KCkgZW1wdHlNZXNzYWdlID0gJ05vIHJlc3VsdHMgZm91bmQuJztcbiAgQElucHV0KCkgaXRlbXM6IFBkbUNvbW1hbmRJdGVtW10gPSBbXG4gICAgeyBsYWJlbDogJ0NhbGVuZGFyJywgdmFsdWU6ICdjYWxlbmRhcicsIGdyb3VwOiAnU3VnZ2VzdGlvbnMnLCBpY29uOiAnY2FsZW5kYXInIH0sXG4gICAgeyBsYWJlbDogJ1NlYXJjaCBlbW9qaScsIHZhbHVlOiAnZW1vamknLCBncm91cDogJ1N1Z2dlc3Rpb25zJywgaWNvbjogJ3NtaWxlJyB9LFxuICAgIHsgbGFiZWw6ICdDYWxjdWxhdG9yJywgdmFsdWU6ICdjYWxjdWxhdG9yJywgZ3JvdXA6ICdTdWdnZXN0aW9ucycsIGljb246ICdjYWxjdWxhdG9yJywgZGlzYWJsZWQ6IHRydWUgfSxcbiAgICB7IGxhYmVsOiAnUHJvZmlsZScsIHZhbHVlOiAncHJvZmlsZScsIGdyb3VwOiAnU2V0dGluZ3MnLCBpY29uOiAndXNlcicsIHNob3J0Y3V0OiAn4oyYUCcgfSxcbiAgICB7IGxhYmVsOiAnQmlsbGluZycsIHZhbHVlOiAnYmlsbGluZycsIGdyb3VwOiAnU2V0dGluZ3MnLCBpY29uOiAnY3JlZGl0LWNhcmQnLCBzaG9ydGN1dDogJ+KMmEInIH0sXG4gICAgeyBsYWJlbDogJ1NldHRpbmdzJywgdmFsdWU6ICdzZXR0aW5ncycsIGdyb3VwOiAnU2V0dGluZ3MnLCBpY29uOiAnc2V0dGluZ3MnLCBzaG9ydGN1dDogJ+KMmFMnIH1cbiAgXTtcbiAgQElucHV0KCkgY2xhc3NOYW1lID0gJyc7XG5cbiAgQE91dHB1dCgpIGl0ZW1TZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIG9wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgcXVlcnkgPSAnJztcblxuICBnZXQgZmlsdGVyZWRJdGVtcygpOiBQZG1Db21tYW5kSXRlbVtdIHtcbiAgICBjb25zdCBxID0gdGhpcy5xdWVyeS50b0xvd2VyQ2FzZSgpLnRyaW0oKTtcbiAgICBpZiAoIXEpIHJldHVybiB0aGlzLml0ZW1zO1xuICAgIHJldHVybiB0aGlzLml0ZW1zLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5sYWJlbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHEpKTtcbiAgfVxuXG4gIGdldCBncm91cGVkSXRlbXMoKTogeyBuYW1lOiBzdHJpbmc7IGl0ZW1zOiBQZG1Db21tYW5kSXRlbVtdIH1bXSB7XG4gICAgY29uc3QgbWFwID0gbmV3IE1hcDxzdHJpbmcsIFBkbUNvbW1hbmRJdGVtW10+KCk7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuZmlsdGVyZWRJdGVtcykge1xuICAgICAgY29uc3Qga2V5ID0gaXRlbS5ncm91cCB8fCAnJztcbiAgICAgIGNvbnN0IGFyciA9IG1hcC5nZXQoa2V5KSA/PyBbXTtcbiAgICAgIGFyci5wdXNoKGl0ZW0pO1xuICAgICAgbWFwLnNldChrZXksIGFycik7XG4gICAgfVxuICAgIHJldHVybiBBcnJheS5mcm9tKG1hcC5lbnRyaWVzKCkpLm1hcCgoW25hbWUsIGl0ZW1zXSkgPT4gKHsgbmFtZSwgaXRlbXMgfSkpO1xuICB9XG5cbiAgb25RdWVyeUNoYW5nZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnF1ZXJ5ID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcbiAgfVxuXG4gIHRvZ2dsZU9wZW4oKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuQ2hhbmdlLmVtaXQoIXRoaXMub3Blbik7XG4gIH1cblxuICBzZWxlY3QodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuaXRlbVNlbGVjdC5lbWl0KHZhbHVlKTtcbiAgfVxufVxuIiwiPGRpdiBbbmdDbGFzc109XCJbJ3ctZnVsbCcsIGNsYXNzTmFtZV1cIj5cbiAgPGRpdiAqbmdJZj1cIiFvcGVuXCIgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMVwiPlxuICAgIDxzcGFuIGNsYXNzPVwidGV4dC1bMTRweF0gZm9udC1tZWRpdW0gbGVhZGluZy01IHRleHQtWyM3MzczNzNdXCI+e3sgaGludExhYmVsIH19PC9zcGFuPlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJpbmxpbmUtZmxleCBoLTUgaXRlbXMtY2VudGVyIGdhcC0wLjUgcm91bmRlZC1bNnB4XSBib3JkZXIgYm9yZGVyLVsjZTVlNWU1XSBiZy1bI2Y1ZjVmNV0gcHgtMS41XCJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVPcGVuKClcIlxuICAgID5cbiAgICAgIDxwZG0taWNvbiBuYW1lPVwiY29tbWFuZFwiIFtzaXplXT1cIjEyXCIgY2xhc3NOYW1lPVwidGV4dC1bIzczNzM3M11cIiBbZGVjb3JhdGl2ZV09XCJ0cnVlXCI+PC9wZG0taWNvbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1bMTJweF0gbGVhZGluZy00IHRleHQtWyM3MzczNzNdXCI+e3sgaGludEtleSB9fTwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG5cbiAgPHNlY3Rpb25cbiAgICAqbmdJZj1cIm9wZW5cIlxuICAgIGNsYXNzPVwiZmxleCB3LWZ1bGwgZmxleC1jb2wgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtWzEwcHhdIGJvcmRlciBib3JkZXItWyNlNWU1ZTVdIGJnLXdoaXRlIHNoYWRvdy1bMF8ycHhfNHB4Xy0ycHhfcmdiYSgwLDAsMCwwLjEpLDBfNHB4XzZweF8tMXB4X3JnYmEoMCwwLDAsMC4xKV1cIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIGJvcmRlci1iIGJvcmRlci1bI2U1ZTVlNV0gcHgtM1wiPlxuICAgICAgPHBkbS1pY29uIG5hbWU9XCJzZWFyY2hcIiBbc2l6ZV09XCIxNlwiIGNsYXNzTmFtZT1cInRleHQtWyM3MzczNzNdXCIgW2RlY29yYXRpdmVdPVwidHJ1ZVwiPjwvcGRtLWljb24+XG4gICAgICA8aW5wdXRcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICBbdmFsdWVdPVwicXVlcnlcIlxuICAgICAgICAoaW5wdXQpPVwib25RdWVyeUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgY2xhc3M9XCJoLTEwIHctZnVsbCBiZy10cmFuc3BhcmVudCBweS0zIHRleHQtWzE0cHhdIGxlYWRpbmctNSB0ZXh0LVsjMGEwYTBhXSBvdXRsaW5lLW5vbmUgcGxhY2Vob2xkZXI6dGV4dC1bIzczNzM3M11cIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJtYXgtaC1bMzAwcHhdIG92ZXJmbG93LXktYXV0byBwLTFcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGdyb3VwZWRJdGVtczsgbGV0IGdyb3VwSW5kZXggPSBpbmRleFwiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZ3JvdXAubmFtZVwiIGNsYXNzPVwicHgtMiBweS1bNnB4XSB0ZXh0LVsxMnB4XSBsZWFkaW5nLTQgdGV4dC1bIzczNzM3M11cIj57eyBncm91cC5uYW1lIH19PC9kaXY+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBncm91cC5pdGVtc1wiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIlxuICAgICAgICAgIGNsYXNzPVwiZmxleCB3LWZ1bGwgaXRlbXMtY2VudGVyIGdhcC0yIHJvdW5kZWQtWzZweF0gcHgtMiBweS1bNnB4XSB0ZXh0LWxlZnRcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIltcbiAgICAgICAgICAgIGl0ZW0uZGlzYWJsZWQgPyAnb3BhY2l0eS01MCcgOiAnJyxcbiAgICAgICAgICAgIGl0ZW0ubGFiZWwgPT09ICdDYWxlbmRhcicgPyAnYmctWyNmNWY1ZjVdJyA6ICcnXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNlbGVjdChpdGVtLnZhbHVlKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImlubGluZS1mbGV4IGgtNCB3LTQgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtWyMwYTBhMGFdXCI+XG4gICAgICAgICAgICA8cGRtLWljb24gKm5nSWY9XCJpdGVtLmljb25cIiBbbmFtZV09XCJpdGVtLmljb25cIiBbc2l6ZV09XCIxNlwiIFtkZWNvcmF0aXZlXT1cInRydWVcIj48L3BkbS1pY29uPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1pbi13LTAgZmxleC0xIHRleHQtWzE0cHhdIGxlYWRpbmctNSB0ZXh0LVsjMGEwYTBhXVwiPnt7IGl0ZW0ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJpdGVtLnNob3J0Y3V0XCIgY2xhc3M9XCJ0ZXh0LVsxMnB4XSBsZWFkaW5nLTQgdGV4dC1bIzczNzM3M11cIj57eyBpdGVtLnNob3J0Y3V0IH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImdyb3VwSW5kZXggPT09IDAgJiYgZ3JvdXBlZEl0ZW1zLmxlbmd0aCA+IDFcIiBjbGFzcz1cIm15LTEgYm9yZGVyLXQgYm9yZGVyLVsjZTVlNWU1XVwiPjwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxwICpuZ0lmPVwiZmlsdGVyZWRJdGVtcy5sZW5ndGggPT09IDBcIiBjbGFzcz1cInB5LTYgdGV4dC1jZW50ZXIgdGV4dC1bMTRweF0gdGV4dC1bIzczNzM3M11cIj57eyBlbXB0eU1lc3NhZ2UgfX08L3A+XG4gICAgPC9kaXY+XG4gIDwvc2VjdGlvbj5cbjwvZGl2PlxuIl19
|