@plumile/ui 0.1.55 → 0.1.57
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/lib/atomic/atoms/button/Button.d.ts.map +1 -1
- package/lib/atomic/atoms/button/Button.js +5 -2
- package/lib/atomic/atoms/formatted-date/FormattedDate.d.ts +14 -0
- package/lib/atomic/atoms/formatted-date/FormattedDate.d.ts.map +1 -0
- package/lib/atomic/atoms/formatted-date/FormattedDate.js +29 -0
- package/lib/atomic/atoms/icon-button/IconMenuButton.d.ts +8 -0
- package/lib/atomic/atoms/icon-button/IconMenuButton.d.ts.map +1 -0
- package/lib/atomic/atoms/icon-button/IconMenuButton.js +10 -0
- package/lib/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuDropdown.d.ts +14 -0
- package/lib/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuDropdown.d.ts.map +1 -0
- package/lib/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuDropdown.js +16 -0
- package/lib/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuPopover.d.ts +13 -0
- package/lib/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuPopover.d.ts.map +1 -0
- package/lib/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuPopover.js +42 -0
- package/lib/atomic/molecules/breadcrumb_navigation/BreadcrumbNavigation.d.ts +13 -0
- package/lib/atomic/molecules/breadcrumb_navigation/BreadcrumbNavigation.d.ts.map +1 -0
- package/lib/atomic/molecules/breadcrumb_navigation/BreadcrumbNavigation.js +37 -0
- package/lib/atomic/molecules/breadcrumb_navigation/breadcrumbNavigation.css.d.ts +25 -0
- package/lib/atomic/molecules/breadcrumb_navigation/breadcrumbNavigation.css.d.ts.map +1 -0
- package/lib/atomic/molecules/breadcrumb_navigation/breadcrumbNavigation.css.js +221 -0
- package/lib/atomic/molecules/breadcrumb_navigation/types.d.ts +15 -0
- package/lib/atomic/molecules/breadcrumb_navigation/types.d.ts.map +1 -0
- package/lib/atomic/molecules/breadcrumb_navigation/types.js +2 -0
- package/lib/atomic/molecules/dropdown/Dropdown.d.ts +26 -0
- package/lib/atomic/molecules/dropdown/Dropdown.d.ts.map +1 -0
- package/lib/atomic/molecules/dropdown/Dropdown.js +271 -0
- package/lib/atomic/molecules/dropdown/dropdown.css.d.ts +8 -0
- package/lib/atomic/molecules/dropdown/dropdown.css.d.ts.map +1 -0
- package/lib/atomic/molecules/dropdown/dropdown.css.js +30 -0
- package/lib/atomic/molecules/form-actions/FormActions.d.ts +16 -0
- package/lib/atomic/molecules/form-actions/FormActions.d.ts.map +1 -0
- package/lib/atomic/molecules/form-actions/FormActions.js +27 -0
- package/lib/atomic/molecules/toast/ToastProvider.d.ts +19 -0
- package/lib/atomic/molecules/toast/ToastProvider.d.ts.map +1 -0
- package/lib/atomic/molecules/toast/ToastProvider.js +113 -0
- package/lib/atomic/molecules/toast/ToastViewport.d.ts +24 -0
- package/lib/atomic/molecules/toast/ToastViewport.d.ts.map +1 -0
- package/lib/atomic/molecules/toast/ToastViewport.js +40 -0
- package/lib/atomic/molecules/toast/constants.d.ts +2 -0
- package/lib/atomic/molecules/toast/constants.d.ts.map +1 -0
- package/lib/atomic/molecules/toast/constants.js +2 -0
- package/lib/atomic/molecules/toast/toast.css.d.ts +25 -0
- package/lib/atomic/molecules/toast/toast.css.d.ts.map +1 -0
- package/lib/atomic/molecules/toast/toast.css.js +106 -0
- package/lib/components/data-table/DataTable.css.d.ts +61 -0
- package/lib/components/data-table/DataTable.css.d.ts.map +1 -0
- package/lib/components/data-table/DataTable.css.js +285 -0
- package/lib/components/data-table/DataTable.d.ts +32 -0
- package/lib/components/data-table/DataTable.d.ts.map +1 -0
- package/lib/components/data-table/DataTable.js +95 -0
- package/lib/components/data-table/TableCell.css.d.ts +26 -0
- package/lib/components/data-table/TableCell.css.d.ts.map +1 -0
- package/lib/components/data-table/TableCell.css.js +45 -0
- package/lib/components/data-table/TableCell.d.ts +46 -0
- package/lib/components/data-table/TableCell.d.ts.map +1 -0
- package/lib/components/data-table/TableCell.js +72 -0
- package/lib/components/data-table/TableCellBase.d.ts +13 -0
- package/lib/components/data-table/TableCellBase.d.ts.map +1 -0
- package/lib/components/data-table/TableCellBase.js +11 -0
- package/lib/components/data-table/VirtualizedConnectionTable.css.d.ts +5 -0
- package/lib/components/data-table/VirtualizedConnectionTable.css.d.ts.map +1 -0
- package/lib/components/data-table/VirtualizedConnectionTable.css.js +18 -0
- package/lib/components/data-table/VirtualizedConnectionTable.d.ts +32 -0
- package/lib/components/data-table/VirtualizedConnectionTable.d.ts.map +1 -0
- package/lib/components/data-table/VirtualizedConnectionTable.js +304 -0
- package/lib/components/data-table/tableBreakpoints.d.ts +9 -0
- package/lib/components/data-table/tableBreakpoints.d.ts.map +1 -0
- package/lib/components/data-table/tableBreakpoints.js +34 -0
- package/lib/components/select/SimpleSelect.css.d.ts +23 -0
- package/lib/components/select/SimpleSelect.css.d.ts.map +1 -0
- package/lib/components/select/SimpleSelect.css.js +175 -0
- package/lib/components/select/SimpleSelect.d.ts +22 -0
- package/lib/components/select/SimpleSelect.d.ts.map +1 -0
- package/lib/components/select/SimpleSelect.js +218 -0
- package/lib/components/subscriptions/RefetchNeededBanner.css.d.ts +5 -0
- package/lib/components/subscriptions/RefetchNeededBanner.css.d.ts.map +1 -0
- package/lib/components/subscriptions/RefetchNeededBanner.css.js +32 -0
- package/lib/components/subscriptions/RefetchNeededBanner.d.ts +9 -0
- package/lib/components/subscriptions/RefetchNeededBanner.d.ts.map +1 -0
- package/lib/components/subscriptions/RefetchNeededBanner.js +17 -0
- package/lib/esm/atomic/atoms/badge/Badge.js +17 -16
- package/lib/esm/atomic/atoms/badge/Badge.js.map +1 -1
- package/lib/esm/atomic/atoms/badge/badge.css.js +30 -8
- package/lib/esm/atomic/atoms/badge/badge.css.js.map +1 -1
- package/lib/esm/atomic/atoms/button/Button.js +46 -56
- package/lib/esm/atomic/atoms/button/Button.js.map +1 -1
- package/lib/esm/atomic/atoms/button/LinkButton.js +48 -62
- package/lib/esm/atomic/atoms/button/LinkButton.js.map +1 -1
- package/lib/esm/atomic/atoms/button/button.css.js +95 -16
- package/lib/esm/atomic/atoms/button/button.css.js.map +1 -1
- package/lib/esm/atomic/atoms/checkbox/Checkbox.js +37 -40
- package/lib/esm/atomic/atoms/checkbox/Checkbox.js.map +1 -1
- package/lib/esm/atomic/atoms/checkbox/checkbox.css.js +26 -11
- package/lib/esm/atomic/atoms/checkbox/checkbox.css.js.map +1 -1
- package/lib/esm/atomic/atoms/formatted-date/FormattedDate.js +33 -0
- package/lib/esm/atomic/atoms/formatted-date/FormattedDate.js.map +1 -0
- package/lib/esm/atomic/atoms/icon-button/IconMenuButton.js +19 -0
- package/lib/esm/atomic/atoms/icon-button/IconMenuButton.js.map +1 -0
- package/lib/esm/atomic/atoms/input/Input.js +46 -40
- package/lib/esm/atomic/atoms/input/Input.js.map +1 -1
- package/lib/esm/atomic/atoms/input/input.css.js +32 -14
- package/lib/esm/atomic/atoms/input/input.css.js.map +1 -1
- package/lib/esm/atomic/atoms/label/Label.js +23 -16
- package/lib/esm/atomic/atoms/label/Label.js.map +1 -1
- package/lib/esm/atomic/atoms/label/label.css.js +27 -9
- package/lib/esm/atomic/atoms/label/label.css.js.map +1 -1
- package/lib/esm/atomic/atoms/textarea/Textarea.js +19 -18
- package/lib/esm/atomic/atoms/textarea/Textarea.js.map +1 -1
- package/lib/esm/atomic/atoms/textarea/textarea.css.js +32 -8
- package/lib/esm/atomic/atoms/textarea/textarea.css.js.map +1 -1
- package/lib/esm/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuDropdown.js +48 -0
- package/lib/esm/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuDropdown.js.map +1 -0
- package/lib/esm/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuPopover.js +54 -0
- package/lib/esm/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuPopover.js.map +1 -0
- package/lib/esm/atomic/molecules/breadcrumb_navigation/BreadcrumbNavigation.js +63 -0
- package/lib/esm/atomic/molecules/breadcrumb_navigation/BreadcrumbNavigation.js.map +1 -0
- package/lib/esm/atomic/molecules/breadcrumb_navigation/breadcrumbNavigation.css.js +8 -0
- package/lib/esm/atomic/molecules/breadcrumb_navigation/breadcrumbNavigation.css.js.map +1 -0
- package/lib/esm/atomic/molecules/card/Card.css.js +8 -10
- package/lib/esm/atomic/molecules/card/Card.css.js.map +1 -1
- package/lib/esm/atomic/molecules/card/Card.js +24 -17
- package/lib/esm/atomic/molecules/card/Card.js.map +1 -1
- package/lib/esm/atomic/molecules/dropdown/Dropdown.js +149 -0
- package/lib/esm/atomic/molecules/dropdown/Dropdown.js.map +1 -0
- package/lib/esm/atomic/molecules/dropdown/dropdown.css.js +8 -0
- package/lib/esm/atomic/molecules/dropdown/dropdown.css.js.map +1 -0
- package/lib/esm/atomic/molecules/form-actions/FormActions.js +32 -0
- package/lib/esm/atomic/molecules/form-actions/FormActions.js.map +1 -0
- package/lib/esm/atomic/molecules/tabs/Tabs.js +34 -33
- package/lib/esm/atomic/molecules/tabs/Tabs.js.map +1 -1
- package/lib/esm/atomic/molecules/tabs/tabs.css.js +18 -9
- package/lib/esm/atomic/molecules/tabs/tabs.css.js.map +1 -1
- package/lib/esm/atomic/molecules/toast/ToastProvider.js +83 -0
- package/lib/esm/atomic/molecules/toast/ToastProvider.js.map +1 -0
- package/lib/esm/atomic/molecules/toast/ToastViewport.js +76 -0
- package/lib/esm/atomic/molecules/toast/ToastViewport.js.map +1 -0
- package/lib/esm/atomic/molecules/toast/constants.js +6 -0
- package/lib/esm/atomic/molecules/toast/constants.js.map +1 -0
- package/lib/esm/atomic/molecules/toast/toast.css.js +18 -0
- package/lib/esm/atomic/molecules/toast/toast.css.js.map +1 -0
- package/lib/esm/components/charts/BillingUsageLineChart.js +140 -173
- package/lib/esm/components/charts/BillingUsageLineChart.js.map +1 -1
- package/lib/esm/components/charts/billingUsageLineChart.css.js +8 -12
- package/lib/esm/components/charts/billingUsageLineChart.css.js.map +1 -1
- package/lib/esm/components/data-table/DataTable.css.js +84 -0
- package/lib/esm/components/data-table/DataTable.css.js.map +1 -0
- package/lib/esm/components/data-table/DataTable.js +74 -0
- package/lib/esm/components/data-table/DataTable.js.map +1 -0
- package/lib/esm/components/data-table/TableCell.css.js +18 -0
- package/lib/esm/components/data-table/TableCell.css.js.map +1 -0
- package/lib/esm/components/data-table/TableCell.js +75 -0
- package/lib/esm/components/data-table/TableCell.js.map +1 -0
- package/lib/esm/components/data-table/TableCellBase.js +19 -0
- package/lib/esm/components/data-table/TableCellBase.js.map +1 -0
- package/lib/esm/components/data-table/VirtualizedConnectionTable.css.js +8 -0
- package/lib/esm/components/data-table/VirtualizedConnectionTable.css.js.map +1 -0
- package/lib/esm/components/data-table/VirtualizedConnectionTable.js +191 -0
- package/lib/esm/components/data-table/VirtualizedConnectionTable.js.map +1 -0
- package/lib/esm/components/data-table/tableBreakpoints.js +31 -0
- package/lib/esm/components/data-table/tableBreakpoints.js.map +1 -0
- package/lib/esm/components/layout/ContentLayout.css.js +8 -18
- package/lib/esm/components/layout/ContentLayout.css.js.map +1 -1
- package/lib/esm/components/layout/ContentLayout.js +68 -78
- package/lib/esm/components/layout/ContentLayout.js.map +1 -1
- package/lib/esm/components/layout/TabsContentLayout.css.js +8 -11
- package/lib/esm/components/layout/TabsContentLayout.css.js.map +1 -1
- package/lib/esm/components/layout/TabsContentLayout.js +30 -13
- package/lib/esm/components/layout/TabsContentLayout.js.map +1 -1
- package/lib/esm/components/select/SimpleSelect.css.js +17 -0
- package/lib/esm/components/select/SimpleSelect.css.js.map +1 -0
- package/lib/esm/components/select/SimpleSelect.js +185 -0
- package/lib/esm/components/select/SimpleSelect.js.map +1 -0
- package/lib/esm/components/subscriptions/RefetchNeededBanner.css.js +8 -0
- package/lib/esm/components/subscriptions/RefetchNeededBanner.css.js.map +1 -0
- package/lib/esm/components/subscriptions/RefetchNeededBanner.js +32 -0
- package/lib/esm/components/subscriptions/RefetchNeededBanner.js.map +1 -0
- package/lib/esm/components/tile/InfoTile.css.js +8 -18
- package/lib/esm/components/tile/InfoTile.css.js.map +1 -1
- package/lib/esm/components/tile/InfoTile.js +62 -67
- package/lib/esm/components/tile/InfoTile.js.map +1 -1
- package/lib/esm/i18n/useUiTranslation.js +9 -0
- package/lib/esm/i18n/useUiTranslation.js.map +1 -0
- package/lib/esm/icons/BanSvg.js +29 -44
- package/lib/esm/icons/BanSvg.js.map +1 -1
- package/lib/esm/icons/ButtonLoadingSpinnerSvg.js +26 -41
- package/lib/esm/icons/ButtonLoadingSpinnerSvg.js.map +1 -1
- package/lib/esm/icons/ChatCheckSvg.js +27 -42
- package/lib/esm/icons/ChatCheckSvg.js.map +1 -1
- package/lib/esm/icons/ChatSizeLargeSvg.js +49 -70
- package/lib/esm/icons/ChatSizeLargeSvg.js.map +1 -1
- package/lib/esm/icons/ChatSizeMediumSvg.js +43 -61
- package/lib/esm/icons/ChatSizeMediumSvg.js.map +1 -1
- package/lib/esm/icons/ChatSizeSmallSvg.js +37 -52
- package/lib/esm/icons/ChatSizeSmallSvg.js.map +1 -1
- package/lib/esm/icons/ChatXSvg.js +27 -42
- package/lib/esm/icons/ChatXSvg.js.map +1 -1
- package/lib/esm/icons/CheckSvg.js +21 -30
- package/lib/esm/icons/CheckSvg.js.map +1 -1
- package/lib/esm/icons/ChevronDownSvg.js +21 -30
- package/lib/esm/icons/ChevronDownSvg.js.map +1 -1
- package/lib/esm/icons/ChevronLeftSvg.js +21 -30
- package/lib/esm/icons/ChevronLeftSvg.js.map +1 -1
- package/lib/esm/icons/ChevronRightSvg.js +21 -30
- package/lib/esm/icons/ChevronRightSvg.js.map +1 -1
- package/lib/esm/icons/ClockSvg.js +29 -44
- package/lib/esm/icons/ClockSvg.js.map +1 -1
- package/lib/esm/icons/CoinOffSvg.js +47 -65
- package/lib/esm/icons/CoinOffSvg.js.map +1 -1
- package/lib/esm/icons/CoinSvg.js +40 -55
- package/lib/esm/icons/CoinSvg.js.map +1 -1
- package/lib/esm/icons/DatabaseCheckSvg.js +47 -65
- package/lib/esm/icons/DatabaseCheckSvg.js.map +1 -1
- package/lib/esm/icons/DatabaseXSvg.js +47 -65
- package/lib/esm/icons/DatabaseXSvg.js.map +1 -1
- package/lib/esm/icons/DevModeSvg.js +21 -30
- package/lib/esm/icons/DevModeSvg.js.map +1 -1
- package/lib/esm/icons/EyeSvg.js +27 -33
- package/lib/esm/icons/EyeSvg.js.map +1 -1
- package/lib/esm/icons/FormErrorAlertSvg.js +37 -29
- package/lib/esm/icons/FormErrorAlertSvg.js.map +1 -1
- package/lib/esm/icons/GlobeSvg.js +18 -27
- package/lib/esm/icons/GlobeSvg.js.map +1 -1
- package/lib/esm/icons/GripDotsSvg.js +52 -29
- package/lib/esm/icons/GripDotsSvg.js.map +1 -1
- package/lib/esm/icons/HomeActivityAssignUserSvg.js +44 -62
- package/lib/esm/icons/HomeActivityAssignUserSvg.js.map +1 -1
- package/lib/esm/icons/HomeStatsCheckBadgeSvg.js +27 -42
- package/lib/esm/icons/HomeStatsCheckBadgeSvg.js.map +1 -1
- package/lib/esm/icons/HomeStatsClipboardSvg.js +27 -42
- package/lib/esm/icons/HomeStatsClipboardSvg.js.map +1 -1
- package/lib/esm/icons/HomeStatsClockSvg.js +27 -42
- package/lib/esm/icons/HomeStatsClockSvg.js.map +1 -1
- package/lib/esm/icons/KeyOffSvg.js +39 -54
- package/lib/esm/icons/KeyOffSvg.js.map +1 -1
- package/lib/esm/icons/KeySvg.js +39 -54
- package/lib/esm/icons/KeySvg.js.map +1 -1
- package/lib/esm/icons/KronexSvg.js +28 -43
- package/lib/esm/icons/KronexSvg.js.map +1 -1
- package/lib/esm/icons/LinkCheckSvg.js +37 -52
- package/lib/esm/icons/LinkCheckSvg.js.map +1 -1
- package/lib/esm/icons/LinkSvg.js +27 -42
- package/lib/esm/icons/LinkSvg.js.map +1 -1
- package/lib/esm/icons/LinkXSvg.js +37 -52
- package/lib/esm/icons/LinkXSvg.js.map +1 -1
- package/lib/esm/icons/LockOpenSvg.js +31 -46
- package/lib/esm/icons/LockOpenSvg.js.map +1 -1
- package/lib/esm/icons/LockSvg.js +31 -46
- package/lib/esm/icons/LockSvg.js.map +1 -1
- package/lib/esm/icons/MailCheckSvg.js +41 -56
- package/lib/esm/icons/MailCheckSvg.js.map +1 -1
- package/lib/esm/icons/MailSvg.js +31 -46
- package/lib/esm/icons/MailSvg.js.map +1 -1
- package/lib/esm/icons/MailXSvg.js +41 -56
- package/lib/esm/icons/MailXSvg.js.map +1 -1
- package/lib/esm/icons/ModalCloseSvg.js +27 -42
- package/lib/esm/icons/ModalCloseSvg.js.map +1 -1
- package/lib/esm/icons/PencilSvg.js +14 -20
- package/lib/esm/icons/PencilSvg.js.map +1 -1
- package/lib/esm/icons/PinFilledSvg.js +24 -40
- package/lib/esm/icons/PinFilledSvg.js.map +1 -1
- package/lib/esm/icons/PinSvg.js +27 -43
- package/lib/esm/icons/PinSvg.js.map +1 -1
- package/lib/esm/icons/ProfileDropdownLogoutSvg.js +37 -52
- package/lib/esm/icons/ProfileDropdownLogoutSvg.js.map +1 -1
- package/lib/esm/icons/ProfileDropdownOrganizationSvg.js +27 -42
- package/lib/esm/icons/ProfileDropdownOrganizationSvg.js.map +1 -1
- package/lib/esm/icons/ProjectsFolderSvg.js +21 -30
- package/lib/esm/icons/ProjectsFolderSvg.js.map +1 -1
- package/lib/esm/icons/RobotCheckSvg.js +60 -68
- package/lib/esm/icons/RobotCheckSvg.js.map +1 -1
- package/lib/esm/icons/RobotSvg.js +53 -58
- package/lib/esm/icons/RobotSvg.js.map +1 -1
- package/lib/esm/icons/RobotXSvg.js +60 -68
- package/lib/esm/icons/RobotXSvg.js.map +1 -1
- package/lib/esm/icons/RocketOffSvg.js +58 -83
- package/lib/esm/icons/RocketOffSvg.js.map +1 -1
- package/lib/esm/icons/RocketSvg.js +51 -73
- package/lib/esm/icons/RocketSvg.js.map +1 -1
- package/lib/esm/icons/SendCheckSvg.js +40 -55
- package/lib/esm/icons/SendCheckSvg.js.map +1 -1
- package/lib/esm/icons/SendMessageSvg.js +30 -45
- package/lib/esm/icons/SendMessageSvg.js.map +1 -1
- package/lib/esm/icons/SendXSvg.js +40 -55
- package/lib/esm/icons/SendXSvg.js.map +1 -1
- package/lib/esm/icons/SettingsCheckSvg.js +37 -52
- package/lib/esm/icons/SettingsCheckSvg.js.map +1 -1
- package/lib/esm/icons/SettingsXSvg.js +37 -52
- package/lib/esm/icons/SettingsXSvg.js.map +1 -1
- package/lib/esm/icons/ShieldLockSvg.js +41 -56
- package/lib/esm/icons/ShieldLockSvg.js.map +1 -1
- package/lib/esm/icons/ShieldOffSvg.js +27 -42
- package/lib/esm/icons/ShieldOffSvg.js.map +1 -1
- package/lib/esm/icons/SidebarHomeSvg.js +27 -42
- package/lib/esm/icons/SidebarHomeSvg.js.map +1 -1
- package/lib/esm/icons/SidebarInitiativesSvg.js +37 -52
- package/lib/esm/icons/SidebarInitiativesSvg.js.map +1 -1
- package/lib/esm/icons/SidebarPlusSvg.js +27 -42
- package/lib/esm/icons/SidebarPlusSvg.js.map +1 -1
- package/lib/esm/icons/SidebarSearchSvg.js +27 -42
- package/lib/esm/icons/SidebarSearchSvg.js.map +1 -1
- package/lib/esm/icons/SidebarSettingsSvg.js +27 -42
- package/lib/esm/icons/SidebarSettingsSvg.js.map +1 -1
- package/lib/esm/icons/SidebarTasksSvg.js +27 -42
- package/lib/esm/icons/SidebarTasksSvg.js.map +1 -1
- package/lib/esm/icons/SidebarTeamSvg.js +44 -62
- package/lib/esm/icons/SidebarTeamSvg.js.map +1 -1
- package/lib/esm/icons/TaskAttachmentSvg.js +21 -30
- package/lib/esm/icons/TaskAttachmentSvg.js.map +1 -1
- package/lib/esm/icons/TaskCalendarSvg.js +44 -62
- package/lib/esm/icons/TaskCalendarSvg.js.map +1 -1
- package/lib/esm/icons/TaskCommentBubbleSvg.js +21 -30
- package/lib/esm/icons/TaskCommentBubbleSvg.js.map +1 -1
- package/lib/esm/icons/TaskDeleteSvg.js +27 -42
- package/lib/esm/icons/TaskDeleteSvg.js.map +1 -1
- package/lib/esm/icons/TaskDependencyBlockedSvg.js +27 -43
- package/lib/esm/icons/TaskDependencyBlockedSvg.js.map +1 -1
- package/lib/esm/icons/TaskDependencyReadySvg.js +27 -43
- package/lib/esm/icons/TaskDependencyReadySvg.js.map +1 -1
- package/lib/esm/icons/TaskMenuDotsSvg.js +37 -52
- package/lib/esm/icons/TaskMenuDotsSvg.js.map +1 -1
- package/lib/esm/icons/TaskTagSvg.js +27 -42
- package/lib/esm/icons/TaskTagSvg.js.map +1 -1
- package/lib/esm/icons/TeamMemberEmailSvg.js +27 -42
- package/lib/esm/icons/TeamMemberEmailSvg.js.map +1 -1
- package/lib/esm/icons/TeamMemberLocationSvg.js +27 -42
- package/lib/esm/icons/TeamMemberLocationSvg.js.map +1 -1
- package/lib/esm/icons/WrenchSvg.js +21 -30
- package/lib/esm/icons/WrenchSvg.js.map +1 -1
- package/lib/esm/icons/XBadgeSvg.js +27 -42
- package/lib/esm/icons/XBadgeSvg.js.map +1 -1
- package/lib/esm/icons/markdown/MarkdownCheckboxCheckedSvg.js +30 -42
- package/lib/esm/icons/markdown/MarkdownCheckboxCheckedSvg.js.map +1 -1
- package/lib/esm/icons/markdown/MarkdownCheckboxUncheckedSvg.js +22 -28
- package/lib/esm/icons/markdown/MarkdownCheckboxUncheckedSvg.js.map +1 -1
- package/lib/esm/icons/markdown/MarkdownCopySuccessSvg.js +41 -53
- package/lib/esm/icons/markdown/MarkdownCopySuccessSvg.js.map +1 -1
- package/lib/esm/icons/markdown/MarkdownCopySvg.js +30 -42
- package/lib/esm/icons/markdown/MarkdownCopySvg.js.map +1 -1
- package/lib/esm/icons/markdown/MarkdownExternalLinkSvg.js +39 -51
- package/lib/esm/icons/markdown/MarkdownExternalLinkSvg.js.map +1 -1
- package/lib/esm/index.js +33 -55
- package/lib/esm/style.css +2 -0
- package/lib/esm/style.js +4 -0
- package/lib/esm/styles/slots.js +0 -0
- package/lib/esm/svg/ChevronDownIcon.js +11 -10
- package/lib/esm/svg/ChevronDownIcon.js.map +1 -1
- package/lib/esm/svg/ChevronRightIcon.js +11 -9
- package/lib/esm/svg/ChevronRightIcon.js.map +1 -1
- package/lib/esm/svg/GlobeIcon.js +11 -6
- package/lib/esm/svg/GlobeIcon.js.map +1 -1
- package/lib/esm/theme/ThemeProvider.js +33 -37
- package/lib/esm/theme/ThemeProvider.js.map +1 -1
- package/lib/esm/theme/VisuallyHidden.js +12 -8
- package/lib/esm/theme/VisuallyHidden.js.map +1 -1
- package/lib/esm/theme/accessibility.css.js +7 -8
- package/lib/esm/theme/accessibility.css.js.map +1 -1
- package/lib/esm/theme/colors.js +101 -100
- package/lib/esm/theme/colors.js.map +1 -1
- package/lib/esm/theme/common.js +122 -123
- package/lib/esm/theme/common.js.map +1 -1
- package/lib/esm/theme/containerQueries.js +14 -13
- package/lib/esm/theme/containerQueries.js.map +1 -1
- package/lib/esm/theme/global.css.js +1 -2
- package/lib/esm/theme/index.js +9 -28
- package/lib/esm/theme/sprinkles.css.js +68484 -9
- package/lib/esm/theme/sprinkles.css.js.map +1 -1
- package/lib/esm/theme/theme.css.js +1 -2
- package/lib/esm/theme/themeContract.js +1025 -1035
- package/lib/esm/theme/themeContract.js.map +1 -1
- package/lib/esm/theme/tools.js +16 -19
- package/lib/esm/theme/tools.js.map +1 -1
- package/lib/i18n/useUiTranslation.d.ts +3 -0
- package/lib/i18n/useUiTranslation.d.ts.map +1 -0
- package/lib/i18n/useUiTranslation.js +5 -0
- package/lib/index.d.ts +10 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +11 -1
- package/lib/style.d.ts +5 -0
- package/lib/style.d.ts.map +1 -0
- package/lib/style.js +5 -0
- package/lib/styles/slots.d.ts +2 -0
- package/lib/styles/slots.d.ts.map +1 -0
- package/lib/styles/slots.js +2 -0
- package/lib/types/atomic/atoms/button/Button.d.ts.map +1 -1
- package/lib/types/atomic/atoms/formatted-date/FormattedDate.d.ts +14 -0
- package/lib/types/atomic/atoms/formatted-date/FormattedDate.d.ts.map +1 -0
- package/lib/types/atomic/atoms/icon-button/IconMenuButton.d.ts +8 -0
- package/lib/types/atomic/atoms/icon-button/IconMenuButton.d.ts.map +1 -0
- package/lib/types/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuDropdown.d.ts +14 -0
- package/lib/types/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuDropdown.d.ts.map +1 -0
- package/lib/types/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuPopover.d.ts +13 -0
- package/lib/types/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuPopover.d.ts.map +1 -0
- package/lib/types/atomic/molecules/breadcrumb_navigation/BreadcrumbNavigation.d.ts +13 -0
- package/lib/types/atomic/molecules/breadcrumb_navigation/BreadcrumbNavigation.d.ts.map +1 -0
- package/lib/types/atomic/molecules/breadcrumb_navigation/breadcrumbNavigation.css.d.ts +25 -0
- package/lib/types/atomic/molecules/breadcrumb_navigation/breadcrumbNavigation.css.d.ts.map +1 -0
- package/lib/types/atomic/molecules/breadcrumb_navigation/types.d.ts +15 -0
- package/lib/types/atomic/molecules/breadcrumb_navigation/types.d.ts.map +1 -0
- package/lib/types/atomic/molecules/dropdown/Dropdown.d.ts +26 -0
- package/lib/types/atomic/molecules/dropdown/Dropdown.d.ts.map +1 -0
- package/lib/types/atomic/molecules/dropdown/dropdown.css.d.ts +8 -0
- package/lib/types/atomic/molecules/dropdown/dropdown.css.d.ts.map +1 -0
- package/lib/types/atomic/molecules/form-actions/FormActions.d.ts +16 -0
- package/lib/types/atomic/molecules/form-actions/FormActions.d.ts.map +1 -0
- package/lib/types/atomic/molecules/toast/ToastProvider.d.ts +19 -0
- package/lib/types/atomic/molecules/toast/ToastProvider.d.ts.map +1 -0
- package/lib/types/atomic/molecules/toast/ToastViewport.d.ts +24 -0
- package/lib/types/atomic/molecules/toast/ToastViewport.d.ts.map +1 -0
- package/lib/types/atomic/molecules/toast/constants.d.ts +2 -0
- package/lib/types/atomic/molecules/toast/constants.d.ts.map +1 -0
- package/lib/types/atomic/molecules/toast/toast.css.d.ts +25 -0
- package/lib/types/atomic/molecules/toast/toast.css.d.ts.map +1 -0
- package/lib/types/components/data-table/DataTable.css.d.ts +61 -0
- package/lib/types/components/data-table/DataTable.css.d.ts.map +1 -0
- package/lib/types/components/data-table/DataTable.d.ts +32 -0
- package/lib/types/components/data-table/DataTable.d.ts.map +1 -0
- package/lib/types/components/data-table/TableCell.css.d.ts +26 -0
- package/lib/types/components/data-table/TableCell.css.d.ts.map +1 -0
- package/lib/types/components/data-table/TableCell.d.ts +46 -0
- package/lib/types/components/data-table/TableCell.d.ts.map +1 -0
- package/lib/types/components/data-table/TableCellBase.d.ts +13 -0
- package/lib/types/components/data-table/TableCellBase.d.ts.map +1 -0
- package/lib/types/components/data-table/VirtualizedConnectionTable.css.d.ts +5 -0
- package/lib/types/components/data-table/VirtualizedConnectionTable.css.d.ts.map +1 -0
- package/lib/types/components/data-table/VirtualizedConnectionTable.d.ts +32 -0
- package/lib/types/components/data-table/VirtualizedConnectionTable.d.ts.map +1 -0
- package/lib/types/components/data-table/tableBreakpoints.d.ts +9 -0
- package/lib/types/components/data-table/tableBreakpoints.d.ts.map +1 -0
- package/lib/types/components/select/SimpleSelect.css.d.ts +23 -0
- package/lib/types/components/select/SimpleSelect.css.d.ts.map +1 -0
- package/lib/types/components/select/SimpleSelect.d.ts +22 -0
- package/lib/types/components/select/SimpleSelect.d.ts.map +1 -0
- package/lib/types/components/subscriptions/RefetchNeededBanner.css.d.ts +5 -0
- package/lib/types/components/subscriptions/RefetchNeededBanner.css.d.ts.map +1 -0
- package/lib/types/components/subscriptions/RefetchNeededBanner.d.ts +9 -0
- package/lib/types/components/subscriptions/RefetchNeededBanner.d.ts.map +1 -0
- package/lib/types/i18n/useUiTranslation.d.ts +3 -0
- package/lib/types/i18n/useUiTranslation.d.ts.map +1 -0
- package/lib/types/index.d.ts +10 -0
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/style.d.ts +5 -0
- package/lib/types/style.d.ts.map +1 -0
- package/lib/types/styles/slots.d.ts +2 -0
- package/lib/types/styles/slots.d.ts.map +1 -0
- package/package.json +12 -4
- package/src/i18n/locales/en/ui.json +53 -0
- package/src/i18n/locales/fr/ui.json +53 -0
- package/src/i18n/useUiTranslation.ts +6 -0
- package/lib/esm/atomic/atoms/badge/badge.css.ts.vanilla-BxMgYgcH.css +0 -1
- package/lib/esm/atomic/atoms/button/button.css.ts.vanilla-BYFxDZro.css +0 -1
- package/lib/esm/atomic/atoms/checkbox/checkbox.css.ts.vanilla-D6TvWxlo.css +0 -1
- package/lib/esm/atomic/atoms/input/input.css.ts.vanilla-D_X5_tcn.css +0 -1
- package/lib/esm/atomic/atoms/textarea/textarea.css.ts.vanilla-IrvNTQEt.css +0 -1
- package/lib/esm/atomic/molecules/tabs/tabs.css.ts.vanilla-DQm5wO0K.css +0 -1
- package/lib/esm/components/charts/billingUsageLineChart.css.ts.vanilla-7e3dy1Dj.css +0 -1
- package/lib/esm/components/tile/InfoTile.css.ts.vanilla-ByCg4UKz.css +0 -1
- package/lib/esm/index.js.map +0 -1
- package/lib/esm/theme/accessibility.css.ts.vanilla-D6gfeWvf.css +0 -1
- package/lib/esm/theme/global.css.js.map +0 -1
- package/lib/esm/theme/global.css.ts.vanilla-ClXnHnoy.css +0 -1
- package/lib/esm/theme/index.js.map +0 -1
- package/lib/esm/theme/sprinkles.css.ts.vanilla-DOI5FNoi.css +0 -1
- package/lib/esm/theme/theme.css.js.map +0 -1
- package/lib/esm/theme/theme.css.ts.vanilla-a3SsXff5.css +0 -1
- /package/lib/esm/{components/layout/TabsContentLayout.css.ts.vanilla-tn0RQdqM.css → atomic/molecules/breadcrumb_navigation/types.js} +0 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type BreadcrumbNode = {
|
|
2
|
+
name: string;
|
|
3
|
+
to: string;
|
|
4
|
+
};
|
|
5
|
+
export type BreadcrumbMenuItem = {
|
|
6
|
+
id: string;
|
|
7
|
+
name: string;
|
|
8
|
+
to: string;
|
|
9
|
+
description?: string | null;
|
|
10
|
+
};
|
|
11
|
+
export type BreadcrumbMenuConfig = {
|
|
12
|
+
items: readonly BreadcrumbMenuItem[];
|
|
13
|
+
selectedId?: string | null;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/atomic/molecules/breadcrumb_navigation/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACrC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXRvbWljL21vbGVjdWxlcy9icmVhZGNydW1iX25hdmlnYXRpb24vdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEJyZWFkY3J1bWJOb2RlID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHRvOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBCcmVhZGNydW1iTWVudUl0ZW0gPSB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgdG86IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmcgfCBudWxsO1xufTtcblxuZXhwb3J0IHR5cGUgQnJlYWRjcnVtYk1lbnVDb25maWcgPSB7XG4gIGl0ZW1zOiByZWFkb25seSBCcmVhZGNydW1iTWVudUl0ZW1bXTtcbiAgc2VsZWN0ZWRJZD86IHN0cmluZyB8IG51bGw7XG59O1xuIl19
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type ReactNode, type ReactElement, type JSX } from 'react';
|
|
2
|
+
export type DropdownPlacement = 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end';
|
|
3
|
+
interface DropdownContextValue {
|
|
4
|
+
close: () => void;
|
|
5
|
+
open: () => void;
|
|
6
|
+
isOpen: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare const useDropdown: () => DropdownContextValue;
|
|
9
|
+
export interface DropdownProps {
|
|
10
|
+
trigger: ReactElement | ((isOpen: boolean) => ReactElement);
|
|
11
|
+
children: ReactNode;
|
|
12
|
+
className?: string;
|
|
13
|
+
contentClassName?: string;
|
|
14
|
+
placement?: DropdownPlacement;
|
|
15
|
+
offset?: number;
|
|
16
|
+
matchTriggerWidth?: boolean;
|
|
17
|
+
open?: boolean;
|
|
18
|
+
defaultOpen?: boolean;
|
|
19
|
+
onOpenChange?: (open: boolean) => void;
|
|
20
|
+
closeOnItemClick?: boolean;
|
|
21
|
+
portalContainer?: HTMLElement | null;
|
|
22
|
+
ariaLabel?: string;
|
|
23
|
+
}
|
|
24
|
+
export declare const Dropdown: ({ trigger, children, className, contentClassName, placement, offset, matchTriggerWidth, open, defaultOpen, onOpenChange, closeOnItemClick, portalContainer, ariaLabel, }: DropdownProps) => JSX.Element;
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=Dropdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Dropdown.d.ts","sourceRoot":"","sources":["../../../../src/atomic/molecules/dropdown/Dropdown.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,GAAG,EAUT,MAAM,OAAO,CAAC;AAOf,MAAM,MAAM,iBAAiB,GACzB,cAAc,GACd,YAAY,GACZ,WAAW,GACX,SAAS,CAAC;AAEd,UAAU,oBAAoB;IAC5B,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB;AAMD,eAAO,MAAM,WAAW,QAAO,oBAM9B,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,YAAY,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,YAAY,CAAC,CAAC;IAC5D,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,eAAe,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAErC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAsBD,eAAO,MAAM,QAAQ,GAAI,0KActB,aAAa,KAAG,GAAG,CAAC,OA0TtB,CAAC"}
|
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useRef, useEffect, useLayoutEffect, useCallback, createContext, useContext, isValidElement, cloneElement, } from 'react';
|
|
3
|
+
import { createPortal } from 'react-dom';
|
|
4
|
+
import * as classes from './dropdown.css.js';
|
|
5
|
+
import { cx } from '../../../theme/tools.js';
|
|
6
|
+
const DropdownContext = createContext(null);
|
|
7
|
+
export const useDropdown = () => {
|
|
8
|
+
const ctx = useContext(DropdownContext);
|
|
9
|
+
if (ctx == null) {
|
|
10
|
+
throw new Error('useDropdown must be used within a <Dropdown />');
|
|
11
|
+
}
|
|
12
|
+
return ctx;
|
|
13
|
+
};
|
|
14
|
+
const isForwardRefComponent = (type) => {
|
|
15
|
+
if (type == null || typeof type !== 'object') {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
return (type.$$typeof === Symbol.for('react.forward_ref'));
|
|
19
|
+
};
|
|
20
|
+
export const Dropdown = ({ trigger, children, className, contentClassName, placement = 'bottom-start', offset = 4, matchTriggerWidth = true, open, defaultOpen = false, onOpenChange, closeOnItemClick = false, portalContainer, ariaLabel, }) => {
|
|
21
|
+
const isControlled = open != null;
|
|
22
|
+
const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);
|
|
23
|
+
let isOpen = uncontrolledOpen;
|
|
24
|
+
if (isControlled) {
|
|
25
|
+
isOpen = Boolean(open);
|
|
26
|
+
}
|
|
27
|
+
const containerRef = useRef(null);
|
|
28
|
+
const triggerRef = useRef(null);
|
|
29
|
+
const contentRef = useRef(null);
|
|
30
|
+
const [position, setPosition] = useState(null);
|
|
31
|
+
const cleanupRef = useRef([]);
|
|
32
|
+
const setOpen = useCallback((next) => {
|
|
33
|
+
if (!isControlled) {
|
|
34
|
+
setUncontrolledOpen(next);
|
|
35
|
+
}
|
|
36
|
+
onOpenChange?.(next);
|
|
37
|
+
}, [isControlled, onOpenChange]);
|
|
38
|
+
const toggle = useCallback(() => {
|
|
39
|
+
setOpen(!isOpen);
|
|
40
|
+
}, [isOpen, setOpen]);
|
|
41
|
+
const close = useCallback(() => {
|
|
42
|
+
setOpen(false);
|
|
43
|
+
}, [setOpen]);
|
|
44
|
+
const openFn = useCallback(() => {
|
|
45
|
+
setOpen(true);
|
|
46
|
+
}, [setOpen]);
|
|
47
|
+
const computePosition = useCallback(() => {
|
|
48
|
+
const triggerEl = triggerRef.current;
|
|
49
|
+
const contentEl = contentRef.current;
|
|
50
|
+
if (triggerEl == null) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
if (contentEl == null) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
const rect = triggerEl.getBoundingClientRect();
|
|
57
|
+
let top = 0;
|
|
58
|
+
let left = 0;
|
|
59
|
+
switch (placement) {
|
|
60
|
+
case 'bottom-start':
|
|
61
|
+
top = rect.bottom + offset;
|
|
62
|
+
left = rect.left;
|
|
63
|
+
break;
|
|
64
|
+
case 'bottom-end':
|
|
65
|
+
top = rect.bottom + offset;
|
|
66
|
+
left = rect.right - contentEl.offsetWidth;
|
|
67
|
+
break;
|
|
68
|
+
case 'top-start':
|
|
69
|
+
top = rect.top - contentEl.offsetHeight - offset;
|
|
70
|
+
left = rect.left;
|
|
71
|
+
break;
|
|
72
|
+
case 'top-end':
|
|
73
|
+
top = rect.top - contentEl.offsetHeight - offset;
|
|
74
|
+
left = rect.right - contentEl.offsetWidth;
|
|
75
|
+
break;
|
|
76
|
+
default:
|
|
77
|
+
top = rect.bottom + offset;
|
|
78
|
+
left = rect.left;
|
|
79
|
+
}
|
|
80
|
+
const vw = window.innerWidth;
|
|
81
|
+
const vh = window.innerHeight;
|
|
82
|
+
let width;
|
|
83
|
+
if (matchTriggerWidth) {
|
|
84
|
+
width = rect.width;
|
|
85
|
+
}
|
|
86
|
+
const contentWidth = width ?? contentEl.offsetWidth;
|
|
87
|
+
if (left + contentWidth > vw - 4) {
|
|
88
|
+
left = Math.max(4, vw - contentWidth - 4);
|
|
89
|
+
}
|
|
90
|
+
if (left < 4)
|
|
91
|
+
left = 4;
|
|
92
|
+
const contentHeight = contentEl.offsetHeight;
|
|
93
|
+
if (top + contentHeight > vh - 4) {
|
|
94
|
+
if (placement.startsWith('bottom')) {
|
|
95
|
+
const flippedTop = rect.top - contentHeight - offset;
|
|
96
|
+
if (flippedTop >= 4) {
|
|
97
|
+
top = flippedTop;
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
top = Math.max(4, vh - contentHeight - 4);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
top = Math.max(4, vh - contentHeight - 4);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
if (top < 4)
|
|
108
|
+
top = 4;
|
|
109
|
+
setPosition({ top, left, width });
|
|
110
|
+
}, [placement, offset, matchTriggerWidth]);
|
|
111
|
+
useLayoutEffect(() => {
|
|
112
|
+
if (isOpen)
|
|
113
|
+
computePosition();
|
|
114
|
+
}, [isOpen, computePosition, children]);
|
|
115
|
+
useEffect(() => {
|
|
116
|
+
if (!isOpen)
|
|
117
|
+
return;
|
|
118
|
+
const handle = () => {
|
|
119
|
+
computePosition();
|
|
120
|
+
};
|
|
121
|
+
window.addEventListener('resize', handle);
|
|
122
|
+
window.addEventListener('scroll', handle, true);
|
|
123
|
+
const cleanup = () => {
|
|
124
|
+
window.removeEventListener('resize', handle);
|
|
125
|
+
window.removeEventListener('scroll', handle, true);
|
|
126
|
+
};
|
|
127
|
+
cleanupRef.current.push(cleanup);
|
|
128
|
+
}, [isOpen, computePosition]);
|
|
129
|
+
useEffect(() => {
|
|
130
|
+
if (!isOpen)
|
|
131
|
+
return;
|
|
132
|
+
const onDocMouseDown = (e) => {
|
|
133
|
+
const target = e.target;
|
|
134
|
+
if (containerRef.current != null &&
|
|
135
|
+
contentRef.current != null &&
|
|
136
|
+
!containerRef.current.contains(target) &&
|
|
137
|
+
!contentRef.current.contains(target)) {
|
|
138
|
+
close();
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
const onKey = (e) => {
|
|
142
|
+
if (e.key === 'Escape') {
|
|
143
|
+
close();
|
|
144
|
+
triggerRef.current?.focus();
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
document.addEventListener('mousedown', onDocMouseDown);
|
|
148
|
+
document.addEventListener('keydown', onKey);
|
|
149
|
+
const cleanup = () => {
|
|
150
|
+
document.removeEventListener('mousedown', onDocMouseDown);
|
|
151
|
+
document.removeEventListener('keydown', onKey);
|
|
152
|
+
};
|
|
153
|
+
cleanupRef.current.push(cleanup);
|
|
154
|
+
}, [isOpen, close]);
|
|
155
|
+
useEffect(() => {
|
|
156
|
+
if (!isOpen)
|
|
157
|
+
return;
|
|
158
|
+
const firstFocusable = contentRef.current?.querySelector('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');
|
|
159
|
+
firstFocusable?.focus();
|
|
160
|
+
}, [isOpen]);
|
|
161
|
+
useEffect(() => {
|
|
162
|
+
if (!isOpen || !closeOnItemClick)
|
|
163
|
+
return;
|
|
164
|
+
const handler = (e) => {
|
|
165
|
+
if (contentRef.current?.contains(e.target)) {
|
|
166
|
+
close();
|
|
167
|
+
}
|
|
168
|
+
};
|
|
169
|
+
document.addEventListener('click', handler, { capture: true });
|
|
170
|
+
const cleanup = () => {
|
|
171
|
+
document.removeEventListener('click', handler, { capture: true });
|
|
172
|
+
};
|
|
173
|
+
cleanupRef.current.push(cleanup);
|
|
174
|
+
}, [isOpen, closeOnItemClick, close]);
|
|
175
|
+
useEffect(() => {
|
|
176
|
+
return () => {
|
|
177
|
+
cleanupRef.current.forEach((fn) => {
|
|
178
|
+
fn();
|
|
179
|
+
});
|
|
180
|
+
cleanupRef.current = [];
|
|
181
|
+
};
|
|
182
|
+
}, []);
|
|
183
|
+
let triggerElement = trigger;
|
|
184
|
+
if (typeof trigger === 'function') {
|
|
185
|
+
triggerElement = trigger(isOpen);
|
|
186
|
+
}
|
|
187
|
+
if (!isValidElement(triggerElement)) {
|
|
188
|
+
throw new Error('Dropdown trigger must be a React element.');
|
|
189
|
+
}
|
|
190
|
+
const isHostElement = typeof triggerElement.type === 'string';
|
|
191
|
+
const isButtonElement = isHostElement && triggerElement.type === 'button';
|
|
192
|
+
const canAttachRef = isHostElement ||
|
|
193
|
+
typeof triggerElement.type === 'function' ||
|
|
194
|
+
isForwardRefComponent(triggerElement.type);
|
|
195
|
+
if (!canAttachRef) {
|
|
196
|
+
throw new Error('Dropdown trigger must be a DOM element or component that accepts a ref.');
|
|
197
|
+
}
|
|
198
|
+
const triggerElementRef = triggerElement.props.ref ??
|
|
199
|
+
triggerElement.ref;
|
|
200
|
+
const setTriggerRef = (node) => {
|
|
201
|
+
triggerRef.current = node;
|
|
202
|
+
if (typeof triggerElementRef === 'function') {
|
|
203
|
+
triggerElementRef(node);
|
|
204
|
+
}
|
|
205
|
+
else if (triggerElementRef != null) {
|
|
206
|
+
triggerElementRef.current =
|
|
207
|
+
node;
|
|
208
|
+
}
|
|
209
|
+
};
|
|
210
|
+
const triggerProps = triggerElement.props;
|
|
211
|
+
const handleTriggerClick = (event) => {
|
|
212
|
+
triggerProps.onClick?.(event);
|
|
213
|
+
if (event.defaultPrevented) {
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
toggle();
|
|
217
|
+
};
|
|
218
|
+
const handleTriggerKeyDown = (event) => {
|
|
219
|
+
triggerProps.onKeyDown?.(event);
|
|
220
|
+
if (event.defaultPrevented) {
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
if (event.key === 'Enter' || event.key === ' ') {
|
|
224
|
+
event.preventDefault();
|
|
225
|
+
toggle();
|
|
226
|
+
}
|
|
227
|
+
};
|
|
228
|
+
const mergedTriggerProps = {
|
|
229
|
+
onClick: handleTriggerClick,
|
|
230
|
+
'aria-haspopup': 'menu',
|
|
231
|
+
'aria-expanded': isOpen,
|
|
232
|
+
};
|
|
233
|
+
if (ariaLabel != null && ariaLabel !== '') {
|
|
234
|
+
mergedTriggerProps['aria-label'] = ariaLabel;
|
|
235
|
+
}
|
|
236
|
+
if (isButtonElement) {
|
|
237
|
+
if (triggerProps.type == null) {
|
|
238
|
+
mergedTriggerProps.type = 'button';
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
mergedTriggerProps.onKeyDown = handleTriggerKeyDown;
|
|
243
|
+
if (triggerProps.role == null) {
|
|
244
|
+
mergedTriggerProps.role = 'button';
|
|
245
|
+
}
|
|
246
|
+
if (triggerProps.tabIndex == null) {
|
|
247
|
+
mergedTriggerProps.tabIndex = 0;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
mergedTriggerProps.ref = setTriggerRef;
|
|
251
|
+
let contentStyles = {};
|
|
252
|
+
if (position != null) {
|
|
253
|
+
contentStyles = {
|
|
254
|
+
top: position.top,
|
|
255
|
+
left: position.left,
|
|
256
|
+
width: position.width,
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
const portalTarget = portalContainer ?? document.body;
|
|
260
|
+
const contextValue = {
|
|
261
|
+
close,
|
|
262
|
+
open: openFn,
|
|
263
|
+
isOpen,
|
|
264
|
+
};
|
|
265
|
+
let dropdownContent = null;
|
|
266
|
+
if (isOpen) {
|
|
267
|
+
dropdownContent = createPortal(_jsx("div", { ref: contentRef, role: "menu", className: cx(classes.content, classes.contentPositioned, contentClassName), style: contentStyles, children: children }), portalTarget);
|
|
268
|
+
}
|
|
269
|
+
return (_jsxs(DropdownContext.Provider, { value: contextValue, children: [_jsx("div", { className: cx(classes.container, className), ref: containerRef, children: cloneElement(triggerElement, mergedTriggerProps) }), dropdownContent] }));
|
|
270
|
+
};
|
|
271
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHJvcGRvd24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXRvbWljL21vbGVjdWxlcy9kcm9wZG93bi9Ecm9wZG93bi50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxlQUFlLEVBQ2YsV0FBVyxFQVNYLGFBQWEsRUFDYixVQUFVLEVBQ1YsY0FBYyxFQUNkLFlBQVksR0FDYixNQUFNLE9BQU8sQ0FBQztBQUNmLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFekMsT0FBTyxLQUFLLE9BQU8sTUFBTSxtQkFBbUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFlN0MsTUFBTSxlQUFlLEdBQUcsYUFBYSxDQUE4QixJQUFJLENBQUMsQ0FBQztBQUl6RSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsR0FBeUIsRUFBRTtJQUNwRCxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDeEMsSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMsQ0FBQztBQXlCRixNQUFNLHFCQUFxQixHQUFHLENBQUMsSUFBYSxFQUFXLEVBQUU7SUFDdkQsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzdDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELE9BQU8sQ0FDSixJQUE4QixDQUFDLFFBQVEsS0FBSyxNQUFNLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQzdFLENBQUM7QUFDSixDQUFDLENBQUM7QUFPRixNQUFNLENBQUMsTUFBTSxRQUFRLEdB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ZUFBZSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFFdEQsTUFBTSxZQUFZLEdBQXlCO1FBQ3pDLEtBQUs7UUFDTCxJQUFJLEVBQUUsTUFBTTtRQUNaLE1BQU07S0FDUCxDQUFDO0lBRUYsSUFBSSxlQUFlLEdBQXVCLElBQUksQ0FBQztJQUMvQyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ1gsZUFBZSxHQUFHLFlBQVksQ0FDNUIsY0FDRSxHQUFHLEVBQUUsVUFBVSxFQUNmLElBQUksRUFBQyxNQUFNLEVBQ1gsU0FBUyxFQUFFLEVBQUUsQ0FDWCxPQUFPLENBQUMsT0FBTyxFQUNmLE9BQU8sQ0FBQyxpQkFBaUIsRUFDekIsZ0JBQWdCLENBQ2pCLEVBQ0QsS0FBSyxFQUFFLGFBQWEsWUFFbkIsUUFBUSxHQUNMLEVBQ04sWUFBWSxDQUNiLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTyxDQUNMLE1BQUMsZUFBZSxDQUFDLFFBQVEsSUFBQyxLQUFLLEVBQUUsWUFBWSxhQUMzQyxjQUFLLFNBQVMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsRUFBRSxHQUFHLEVBQUUsWUFBWSxZQUNoRSxZQUFZLENBQUMsY0FBYyxFQUFFLGtCQUFrQixDQUFDLEdBQzdDLEVBQ0wsZUFBZSxJQUNTLENBQzVCLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICB1c2VTdGF0ZSxcbiAgdXNlUmVmLFxuICB1c2VFZmZlY3QsXG4gIHVzZUxheW91dEVmZmVjdCxcbiAgdXNlQ2FsbGJhY2ssXG4gIHR5cGUgUmVhY3ROb2RlLFxuICB0eXBlIFJlYWN0RWxlbWVudCxcbiAgdHlwZSBKU1gsXG4gIHR5cGUgUmVmLFxuICB0eXBlIE11dGFibGVSZWZPYmplY3QsXG4gIHR5cGUgSFRNTEF0dHJpYnV0ZXMsXG4gIHR5cGUgTW91c2VFdmVudCBhcyBSZWFjdE1vdXNlRXZlbnQsXG4gIHR5cGUgS2V5Ym9hcmRFdmVudCBhcyBSZWFjdEtleWJvYXJkRXZlbnQsXG4gIGNyZWF0ZUNvbnRleHQsXG4gIHVzZUNvbnRleHQsXG4gIGlzVmFsaWRFbGVtZW50LFxuICBjbG9uZUVsZW1lbnQsXG59IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gJ3JlYWN0LWRvbSc7XG5cbmltcG9ydCAqIGFzIGNsYXNzZXMgZnJvbSAnLi9kcm9wZG93bi5jc3MuanMnO1xuaW1wb3J0IHsgY3ggfSBmcm9tICcuLi8uLi8uLi90aGVtZS90b29scy5qcyc7XG5cbi8vIFR5cGVzXG5leHBvcnQgdHlwZSBEcm9wZG93blBsYWNlbWVudCA9XG4gIHwgJ2JvdHRvbS1zdGFydCdcbiAgfCAnYm90dG9tLWVuZCdcbiAgfCAndG9wLXN0YXJ0J1xuICB8ICd0b3AtZW5kJztcblxuaW50ZXJmYWNlIERyb3Bkb3duQ29udGV4dFZhbHVlIHtcbiAgY2xvc2U6ICgpID0+IHZvaWQ7XG4gIG9wZW46ICgpID0+IHZvaWQ7XG4gIGlzT3BlbjogYm9vbGVhbjtcbn1cblxuY29uc3QgRHJvcGRvd25Db250ZXh0ID0gY3JlYXRlQ29udGV4dDxEcm9wZG93bkNvbnRleHRWYWx1ZSB8IG51bGw+KG51bGwpO1xuLyoqXG4gKiBBY2Nlc3MgdGhlIG5lYXJlc3QgRHJvcGRvd24gY29udGV4dC4gVGhyb3dzIGlmIHVzZWQgb3V0c2lkZSBhIDxEcm9wZG93biAvPi5cbiAqL1xuZXhwb3J0IGNvbnN0IHVzZURyb3Bkb3duID0gKCk6IERyb3Bkb3duQ29udGV4dFZhbHVlID0+IHtcbiAgY29uc3QgY3R4ID0gdXNlQ29udGV4dChEcm9wZG93bkNvbnRleHQpO1xuICBpZiAoY3R4ID09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3VzZURyb3Bkb3duIG11c3QgYmUgdXNlZCB3aXRoaW4gYSA8RHJvcGRvd24gLz4nKTtcbiAgfVxuICByZXR1cm4gY3R4O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBEcm9wZG93blByb3BzIHtcbiAgdHJpZ2dlcjogUmVhY3RFbGVtZW50IHwgKChpc09wZW46IGJvb2xlYW4pID0+IFJlYWN0RWxlbWVudCk7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgY29udGVudENsYXNzTmFtZT86IHN0cmluZztcbiAgcGxhY2VtZW50PzogRHJvcGRvd25QbGFjZW1lbnQ7XG4gIG9mZnNldD86IG51bWJlcjtcbiAgbWF0Y2hUcmlnZ2VyV2lkdGg/OiBib29sZWFuO1xuICBvcGVuPzogYm9vbGVhbjsgLy8gY29udHJvbGxlZFxuICBkZWZhdWx0T3Blbj86IGJvb2xlYW47IC8vIHVuY29udHJvbGxlZFxuICBvbk9wZW5DaGFuZ2U/OiAob3BlbjogYm9vbGVhbikgPT4gdm9pZDtcbiAgY2xvc2VPbkl0ZW1DbGljaz86IGJvb2xlYW47XG4gIHBvcnRhbENvbnRhaW5lcj86IEhUTUxFbGVtZW50IHwgbnVsbDtcbiAgLy8gQWNjZXNzaWJsZSBsYWJlbCBpZiB0cmlnZ2VyIGlzIGFuIGljb24gb25seVxuICBhcmlhTGFiZWw/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBQb3NpdGlvblN0YXRlIHtcbiAgdG9wOiBudW1iZXI7XG4gIGxlZnQ6IG51bWJlcjtcbiAgd2lkdGg/OiBudW1iZXI7XG59XG5cbmNvbnN0IGlzRm9yd2FyZFJlZkNvbXBvbmVudCA9ICh0eXBlOiB1bmtub3duKTogYm9vbGVhbiA9PiB7XG4gIGlmICh0eXBlID09IG51bGwgfHwgdHlwZW9mIHR5cGUgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiAoXG4gICAgKHR5cGUgYXMgeyAkJHR5cGVvZj86IHN5bWJvbCB9KS4kJHR5cGVvZiA9PT0gU3ltYm9sLmZvcigncmVhY3QuZm9yd2FyZF9yZWYnKVxuICApO1xufTtcblxuLyoqXG4gKiBBIHNjYWxhYmxlLCBwb3J0YWwtYmFzZWQgZHJvcGRvd24gY29tcG9uZW50IHdpdGggYmFzaWMgY29sbGlzaW9uIGhhbmRsaW5nLFxuICogY29udHJvbGxlZC91bmNvbnRyb2xsZWQgbW9kZXMsIGFjY2Vzc2liaWxpdHkgYXR0cmlidXRlcywgYW5kIG9wdGlvbmFsXG4gKiB0cmlnZ2VyIHdpZHRoIG1hdGNoaW5nLiBDb250ZW50IGlzIHJlbmRlcmVkIGluIGEgUmVhY3QgcG9ydGFsIChkZWZhdWx0OiBkb2N1bWVudC5ib2R5KS5cbiAqL1xuZXhwb3J0IGNvbnN0IERyb3Bkb3duID0gKHtcbiAgdHJpZ2dlcixcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgY29udGVudENsYXNzTmFtZSxcbiAgcGxhY2VtZW50ID0gJ2JvdHRvbS1zdGFydCcsXG4gIG9mZnNldCA9IDQsXG4gIG1hdGNoVHJpZ2dlcldpZHRoID0gdHJ1ZSxcbiAgb3BlbixcbiAgZGVmYXVsdE9wZW4gPSBmYWxzZSxcbiAgb25PcGVuQ2hhbmdlLFxuICBjbG9zZU9uSXRlbUNsaWNrID0gZmFsc2UsXG4gIHBvcnRhbENvbnRhaW5lcixcbiAgYXJpYUxhYmVsLFxufTogRHJvcGRvd25Qcm9wcyk6IEpTWC5FbGVtZW50ID0+IHtcbiAgY29uc3QgaXNDb250cm9sbGVkID0gb3BlbiAhPSBudWxsO1xuICBjb25zdCBbdW5jb250cm9sbGVkT3Blbiwgc2V0VW5jb250cm9sbGVkT3Blbl0gPSB1c2VTdGF0ZShkZWZhdWx0T3Blbik7XG4gIGxldCBpc09wZW4gPSB1bmNvbnRyb2xsZWRPcGVuO1xuICBpZiAoaXNDb250cm9sbGVkKSB7XG4gICAgaXNPcGVuID0gQm9vbGVhbihvcGVuKTtcbiAgfVxuXG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IHRyaWdnZXJSZWYgPSB1c2VSZWY8SFRNTEVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBjb250ZW50UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgW3Bvc2l0aW9uLCBzZXRQb3NpdGlvbl0gPSB1c2VTdGF0ZTxQb3NpdGlvblN0YXRlIHwgbnVsbD4obnVsbCk7XG4gIC8vIEFjY3VtdWxhdGUgbWFudWFsIGNsZWFudXBzIGZvciBlZmZlY3RzIHdoZXJlIHJldHVybmluZyBhIGZ1bmN0aW9uIHZpb2xhdGVzIGxpbnQgcnVsZXMuXG4gIGNvbnN0IGNsZWFudXBSZWYgPSB1c2VSZWY8KCgpID0+IHZvaWQpW10+KFtdKTtcblxuICBjb25zdCBzZXRPcGVuID0gdXNlQ2FsbGJhY2soXG4gICAgKG5leHQ6IGJvb2xlYW4pID0+IHtcbiAgICAgIGlmICghaXNDb250cm9sbGVkKSB7XG4gICAgICAgIHNldFVuY29udHJvbGxlZE9wZW4obmV4dCk7XG4gICAgICB9XG4gICAgICBvbk9wZW5DaGFuZ2U/LihuZXh0KTtcbiAgICB9LFxuICAgIFtpc0NvbnRyb2xsZWQsIG9uT3BlbkNoYW5nZV0sXG4gICk7XG5cbiAgY29uc3QgdG9nZ2xlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldE9wZW4oIWlzT3Blbik7XG4gIH0sIFtpc09wZW4sIHNldE9wZW5dKTtcbiAgY29uc3QgY2xvc2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0T3BlbihmYWxzZSk7XG4gIH0sIFtzZXRPcGVuXSk7XG4gIGNvbnN0IG9wZW5GbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRPcGVuKHRydWUpO1xuICB9LCBbc2V0T3Blbl0pO1xuXG4gIC8vIFBvc2l0aW9uaW5nIGxvZ2ljXG4gIGNvbnN0IGNvbXB1dGVQb3NpdGlvbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCB0cmlnZ2VyRWwgPSB0cmlnZ2VyUmVmLmN1cnJlbnQ7XG4gICAgY29uc3QgY29udGVudEVsID0gY29udGVudFJlZi5jdXJyZW50O1xuICAgIGlmICh0cmlnZ2VyRWwgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoY29udGVudEVsID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByZWN0ID0gdHJpZ2dlckVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGxldCB0b3AgPSAwO1xuICAgIGxldCBsZWZ0ID0gMDtcblxuICAgIHN3aXRjaCAocGxhY2VtZW50KSB7XG4gICAgICBjYXNlICdib3R0b20tc3RhcnQnOlxuICAgICAgICB0b3AgPSByZWN0LmJvdHRvbSArIG9mZnNldDtcbiAgICAgICAgbGVmdCA9IHJlY3QubGVmdDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdib3R0b20tZW5kJzpcbiAgICAgICAgdG9wID0gcmVjdC5ib3R0b20gKyBvZmZzZXQ7XG4gICAgICAgIGxlZnQgPSByZWN0LnJpZ2h0IC0gY29udGVudEVsLm9mZnNldFdpZHRoO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RvcC1zdGFydCc6XG4gICAgICAgIHRvcCA9IHJlY3QudG9wIC0gY29udGVudEVsLm9mZnNldEhlaWdodCAtIG9mZnNldDtcbiAgICAgICAgbGVmdCA9IHJlY3QubGVmdDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0b3AtZW5kJzpcbiAgICAgICAgdG9wID0gcmVjdC50b3AgLSBjb250ZW50RWwub2Zmc2V0SGVpZ2h0IC0gb2Zmc2V0O1xuICAgICAgICBsZWZ0ID0gcmVjdC5yaWdodCAtIGNvbnRlbnRFbC5vZmZzZXRXaWR0aDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0b3AgPSByZWN0LmJvdHRvbSArIG9mZnNldDtcbiAgICAgICAgbGVmdCA9IHJlY3QubGVmdDtcbiAgICB9XG5cbiAgICAvLyBLZWVwIHdpdGhpbiB2aWV3cG9ydCAoYmFzaWMgY29sbGlzaW9uIGhhbmRsaW5nKVxuICAgIGNvbnN0IHZ3ID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgY29uc3QgdmggPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG4gICAgbGV0IHdpZHRoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgaWYgKG1hdGNoVHJpZ2dlcldpZHRoKSB7XG4gICAgICB3aWR0aCA9IHJlY3Qud2lkdGg7XG4gICAgfVxuICAgIGNvbnN0IGNvbnRlbnRXaWR0aCA9IHdpZHRoID8/IGNvbnRlbnRFbC5vZmZzZXRXaWR0aDtcblxuICAgIGlmIChsZWZ0ICsgY29udGVudFdpZHRoID4gdncgLSA0KSB7XG4gICAgICBsZWZ0ID0gTWF0aC5tYXgoNCwgdncgLSBjb250ZW50V2lkdGggLSA0KTtcbiAgICB9XG4gICAgaWYgKGxlZnQgPCA0KSBsZWZ0ID0gNDtcbiAgICBjb25zdCBjb250ZW50SGVpZ2h0ID0gY29udGVudEVsLm9mZnNldEhlaWdodDtcbiAgICBpZiAodG9wICsgY29udGVudEhlaWdodCA+IHZoIC0gNCkge1xuICAgICAgLy8gVHJ5IGZsaXAgdG8gdG9wIGlmIGJvdHRvbSBvdmVyZmxvd3MgYW5kIGluaXRpYWwgd2FzIGJvdHRvbVxuICAgICAgaWYgKHBsYWNlbWVudC5zdGFydHNXaXRoKCdib3R0b20nKSkge1xuICAgICAgICBjb25zdCBmbGlwcGVkVG9wID0gcmVjdC50b3AgLSBjb250ZW50SGVpZ2h0IC0gb2Zmc2V0O1xuICAgICAgICBpZiAoZmxpcHBlZFRvcCA+PSA0KSB7XG4gICAgICAgICAgdG9wID0gZmxpcHBlZFRvcDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0b3AgPSBNYXRoLm1heCg0LCB2aCAtIGNvbnRlbnRIZWlnaHQgLSA0KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdG9wID0gTWF0aC5tYXgoNCwgdmggLSBjb250ZW50SGVpZ2h0IC0gNCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0b3AgPCA0KSB0b3AgPSA0O1xuXG4gICAgc2V0UG9zaXRpb24oeyB0b3AsIGxlZnQsIHdpZHRoIH0pO1xuICB9LCBbcGxhY2VtZW50LCBvZmZzZXQsIG1hdGNoVHJpZ2dlcldpZHRoXSk7XG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNPcGVuKSBjb21wdXRlUG9zaXRpb24oKTtcbiAgfSwgW2lzT3BlbiwgY29tcHV0ZVBvc2l0aW9uLCBjaGlsZHJlbl0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc09wZW4pIHJldHVybjtcbiAgICBjb25zdCBoYW5kbGUgPSAoKSA9PiB7XG4gICAgICBjb21wdXRlUG9zaXRpb24oKTtcbiAgICB9O1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGUpO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGUsIHRydWUpO1xuICAgIGNvbnN0IGNsZWFudXAgPSAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlKTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGUsIHRydWUpO1xuICAgIH07XG4gICAgY2xlYW51cFJlZi5jdXJyZW50LnB1c2goY2xlYW51cCk7XG4gIH0sIFtpc09wZW4sIGNvbXB1dGVQb3NpdGlvbl0pO1xuXG4gIC8vIE91dHNpZGUgY2xpY2sgJiBFc2NhcGVcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzT3BlbikgcmV0dXJuO1xuICAgIGNvbnN0IG9uRG9jTW91c2VEb3duID0gKGU6IGdsb2JhbFRoaXMuTW91c2VFdmVudCkgPT4ge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gZS50YXJnZXQgYXMgTm9kZTtcbiAgICAgIGlmIChcbiAgICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQgIT0gbnVsbCAmJlxuICAgICAgICBjb250ZW50UmVmLmN1cnJlbnQgIT0gbnVsbCAmJlxuICAgICAgICAhY29udGFpbmVyUmVmLmN1cnJlbnQuY29udGFpbnModGFyZ2V0KSAmJlxuICAgICAgICAhY29udGVudFJlZi5jdXJyZW50LmNvbnRhaW5zKHRhcmdldClcbiAgICAgICkge1xuICAgICAgICBjbG9zZSgpO1xuICAgICAgfVxuICAgIH07XG4gICAgY29uc3Qgb25LZXkgPSAoZTogZ2xvYmFsVGhpcy5LZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICBpZiAoZS5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgIGNsb3NlKCk7XG4gICAgICAgIHRyaWdnZXJSZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIG9uRG9jTW91c2VEb3duKTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgb25LZXkpO1xuICAgIGNvbnN0IGNsZWFudXAgPSAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBvbkRvY01vdXNlRG93bik7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgb25LZXkpO1xuICAgIH07XG4gICAgY2xlYW51cFJlZi5jdXJyZW50LnB1c2goY2xlYW51cCk7XG4gIH0sIFtpc09wZW4sIGNsb3NlXSk7XG5cbiAgLy8gS2V5Ym9hcmQgbmF2aWdhdGlvbiBiYXNpYyAoQXJyb3dEb3duIGZvY3VzZXMgZmlyc3QgZm9jdXNhYmxlKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNPcGVuKSByZXR1cm47XG4gICAgY29uc3QgZmlyc3RGb2N1c2FibGUgPSBjb250ZW50UmVmLmN1cnJlbnQ/LnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KFxuICAgICAgJ2J1dHRvbiwgW2hyZWZdLCBpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSwgW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PVwiLTFcIl0pJyxcbiAgICApO1xuICAgIGZpcnN0Rm9jdXNhYmxlPy5mb2N1cygpO1xuICB9LCBbaXNPcGVuXSk7XG5cbiAgLy8gQ2xvc2Ugb24gaXRlbSBjbGljayBpZiBlbmFibGVkXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc09wZW4gfHwgIWNsb3NlT25JdGVtQ2xpY2spIHJldHVybjtcbiAgICBjb25zdCBoYW5kbGVyID0gKGU6IGdsb2JhbFRoaXMuTW91c2VFdmVudCkgPT4ge1xuICAgICAgaWYgKGNvbnRlbnRSZWYuY3VycmVudD8uY29udGFpbnMoZS50YXJnZXQgYXMgTm9kZSkpIHtcbiAgICAgICAgY2xvc2UoKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlciwgeyBjYXB0dXJlOiB0cnVlIH0pO1xuICAgIC8vIEV4cGxpY2l0IGNsZWFudXAgd2l0aG91dCByZXR1cm5pbmcgKGxpbnQgcnVsZSBmb3JiaWRzIHJldHVybmluZyBhcnJvdyBmbilcbiAgICBjb25zdCBjbGVhbnVwID0gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVyLCB7IGNhcHR1cmU6IHRydWUgfSk7XG4gICAgfTtcbiAgICAvLyBTdG9yZSBpbiByZWYgdG8gcnVuIG9uIHVubW91bnQgLyBkZXBlbmRlbmN5IGNoYW5nZVxuICAgIGNsZWFudXBSZWYuY3VycmVudC5wdXNoKGNsZWFudXApO1xuICB9LCBbaXNPcGVuLCBjbG9zZU9uSXRlbUNsaWNrLCBjbG9zZV0pO1xuICAvLyBSdW4gYWNjdW11bGF0ZWQgY2xlYW51cHMgb24gdW5tb3VudFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjbGVhbnVwUmVmLmN1cnJlbnQuZm9yRWFjaCgoZm4pID0+IHtcbiAgICAgICAgZm4oKTtcbiAgICAgIH0pO1xuICAgICAgY2xlYW51cFJlZi5jdXJyZW50ID0gW107XG4gICAgfTtcbiAgfSwgW10pO1xuXG4gIGxldCB0cmlnZ2VyRWxlbWVudCA9IHRyaWdnZXI7XG4gIGlmICh0eXBlb2YgdHJpZ2dlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHRyaWdnZXJFbGVtZW50ID0gdHJpZ2dlcihpc09wZW4pO1xuICB9XG5cbiAgaWYgKCFpc1ZhbGlkRWxlbWVudCh0cmlnZ2VyRWxlbWVudCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Ryb3Bkb3duIHRyaWdnZXIgbXVzdCBiZSBhIFJlYWN0IGVsZW1lbnQuJyk7XG4gIH1cblxuICBjb25zdCBpc0hvc3RFbGVtZW50ID0gdHlwZW9mIHRyaWdnZXJFbGVtZW50LnR5cGUgPT09ICdzdHJpbmcnO1xuICBjb25zdCBpc0J1dHRvbkVsZW1lbnQgPSBpc0hvc3RFbGVtZW50ICYmIHRyaWdnZXJFbGVtZW50LnR5cGUgPT09ICdidXR0b24nO1xuICBjb25zdCBjYW5BdHRhY2hSZWYgPVxuICAgIGlzSG9zdEVsZW1lbnQgfHxcbiAgICB0eXBlb2YgdHJpZ2dlckVsZW1lbnQudHlwZSA9PT0gJ2Z1bmN0aW9uJyB8fFxuICAgIGlzRm9yd2FyZFJlZkNvbXBvbmVudCh0cmlnZ2VyRWxlbWVudC50eXBlKTtcblxuICBpZiAoIWNhbkF0dGFjaFJlZikge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdEcm9wZG93biB0cmlnZ2VyIG11c3QgYmUgYSBET00gZWxlbWVudCBvciBjb21wb25lbnQgdGhhdCBhY2NlcHRzIGEgcmVmLicsXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHRyaWdnZXJFbGVtZW50UmVmID1cbiAgICAodHJpZ2dlckVsZW1lbnQucHJvcHMgYXMgeyByZWY/OiBSZWY8SFRNTEVsZW1lbnQ+IH0pLnJlZiA/P1xuICAgICh0cmlnZ2VyRWxlbWVudCBhcyBSZWFjdEVsZW1lbnQgJiB7IHJlZj86IFJlZjxIVE1MRWxlbWVudD4gfSkucmVmO1xuICBjb25zdCBzZXRUcmlnZ2VyUmVmID0gKG5vZGU6IEhUTUxFbGVtZW50IHwgbnVsbCkgPT4ge1xuICAgIHRyaWdnZXJSZWYuY3VycmVudCA9IG5vZGU7XG4gICAgaWYgKHR5cGVvZiB0cmlnZ2VyRWxlbWVudFJlZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdHJpZ2dlckVsZW1lbnRSZWYobm9kZSk7XG4gICAgfSBlbHNlIGlmICh0cmlnZ2VyRWxlbWVudFJlZiAhPSBudWxsKSB7XG4gICAgICAodHJpZ2dlckVsZW1lbnRSZWYgYXMgTXV0YWJsZVJlZk9iamVjdDxIVE1MRWxlbWVudCB8IG51bGw+KS5jdXJyZW50ID1cbiAgICAgICAgbm9kZTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgdHJpZ2dlclByb3BzID0gdHJpZ2dlckVsZW1lbnQucHJvcHMgYXMgSFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+ICYge1xuICAgIHR5cGU/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlVHJpZ2dlckNsaWNrID0gKGV2ZW50OiBSZWFjdE1vdXNlRXZlbnQ8SFRNTEVsZW1lbnQ+KSA9PiB7XG4gICAgdHJpZ2dlclByb3BzLm9uQ2xpY2s/LihldmVudCk7XG4gICAgaWYgKGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdG9nZ2xlKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlVHJpZ2dlcktleURvd24gPSAoZXZlbnQ6IFJlYWN0S2V5Ym9hcmRFdmVudDxIVE1MRWxlbWVudD4pID0+IHtcbiAgICB0cmlnZ2VyUHJvcHMub25LZXlEb3duPy4oZXZlbnQpO1xuICAgIGlmIChldmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicgfHwgZXZlbnQua2V5ID09PSAnICcpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0b2dnbGUoKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgbWVyZ2VkVHJpZ2dlclByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICBvbkNsaWNrOiBoYW5kbGVUcmlnZ2VyQ2xpY2ssXG4gICAgJ2FyaWEtaGFzcG9wdXAnOiAnbWVudScsXG4gICAgJ2FyaWEtZXhwYW5kZWQnOiBpc09wZW4sXG4gIH07XG5cbiAgaWYgKGFyaWFMYWJlbCAhPSBudWxsICYmIGFyaWFMYWJlbCAhPT0gJycpIHtcbiAgICBtZXJnZWRUcmlnZ2VyUHJvcHNbJ2FyaWEtbGFiZWwnXSA9IGFyaWFMYWJlbDtcbiAgfVxuXG4gIGlmIChpc0J1dHRvbkVsZW1lbnQpIHtcbiAgICBpZiAodHJpZ2dlclByb3BzLnR5cGUgPT0gbnVsbCkge1xuICAgICAgbWVyZ2VkVHJpZ2dlclByb3BzLnR5cGUgPSAnYnV0dG9uJztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbWVyZ2VkVHJpZ2dlclByb3BzLm9uS2V5RG93biA9IGhhbmRsZVRyaWdnZXJLZXlEb3duO1xuICAgIGlmICh0cmlnZ2VyUHJvcHMucm9sZSA9PSBudWxsKSB7XG4gICAgICBtZXJnZWRUcmlnZ2VyUHJvcHMucm9sZSA9ICdidXR0b24nO1xuICAgIH1cbiAgICBpZiAodHJpZ2dlclByb3BzLnRhYkluZGV4ID09IG51bGwpIHtcbiAgICAgIG1lcmdlZFRyaWdnZXJQcm9wcy50YWJJbmRleCA9IDA7XG4gICAgfVxuICB9XG5cbiAgbWVyZ2VkVHJpZ2dlclByb3BzLnJlZiA9IHNldFRyaWdnZXJSZWY7XG5cbiAgbGV0IGNvbnRlbnRTdHlsZXM6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7fTtcbiAgaWYgKHBvc2l0aW9uICE9IG51bGwpIHtcbiAgICBjb250ZW50U3R5bGVzID0ge1xuICAgICAgdG9wOiBwb3NpdGlvbi50b3AsXG4gICAgICBsZWZ0OiBwb3NpdGlvbi5sZWZ0LFxuICAgICAgd2lkdGg6IHBvc2l0aW9uLndpZHRoLFxuICAgIH07XG4gIH1cblxuICBjb25zdCBwb3J0YWxUYXJnZXQgPSBwb3J0YWxDb250YWluZXIgPz8gZG9jdW1lbnQuYm9keTtcblxuICBjb25zdCBjb250ZXh0VmFsdWU6IERyb3Bkb3duQ29udGV4dFZhbHVlID0ge1xuICAgIGNsb3NlLFxuICAgIG9wZW46IG9wZW5GbixcbiAgICBpc09wZW4sXG4gIH07XG5cbiAgbGV0IGRyb3Bkb3duQ29udGVudDogSlNYLkVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgaWYgKGlzT3Blbikge1xuICAgIGRyb3Bkb3duQ29udGVudCA9IGNyZWF0ZVBvcnRhbChcbiAgICAgIDxkaXZcbiAgICAgICAgcmVmPXtjb250ZW50UmVmfVxuICAgICAgICByb2xlPVwibWVudVwiXG4gICAgICAgIGNsYXNzTmFtZT17Y3goXG4gICAgICAgICAgY2xhc3Nlcy5jb250ZW50LFxuICAgICAgICAgIGNsYXNzZXMuY29udGVudFBvc2l0aW9uZWQsXG4gICAgICAgICAgY29udGVudENsYXNzTmFtZSxcbiAgICAgICAgKX1cbiAgICAgICAgc3R5bGU9e2NvbnRlbnRTdHlsZXN9XG4gICAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvZGl2PixcbiAgICAgIHBvcnRhbFRhcmdldCxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8RHJvcGRvd25Db250ZXh0LlByb3ZpZGVyIHZhbHVlPXtjb250ZXh0VmFsdWV9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e2N4KGNsYXNzZXMuY29udGFpbmVyLCBjbGFzc05hbWUpfSByZWY9e2NvbnRhaW5lclJlZn0+XG4gICAgICAgIHtjbG9uZUVsZW1lbnQodHJpZ2dlckVsZW1lbnQsIG1lcmdlZFRyaWdnZXJQcm9wcyl9XG4gICAgICA8L2Rpdj5cbiAgICAgIHtkcm9wZG93bkNvbnRlbnR9XG4gICAgPC9Ecm9wZG93bkNvbnRleHQuUHJvdmlkZXI+XG4gICk7XG59O1xuIl19
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const container: string;
|
|
2
|
+
export declare const content: string;
|
|
3
|
+
export declare const contentPositioned: string;
|
|
4
|
+
export declare const hidden: string;
|
|
5
|
+
export declare const focusOutlineReset: string;
|
|
6
|
+
export declare const menu: string;
|
|
7
|
+
export declare const menuItem: string;
|
|
8
|
+
//# sourceMappingURL=dropdown.css.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dropdown.css.d.ts","sourceRoot":"","sources":["../../../../src/atomic/molecules/dropdown/dropdown.css.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,SAAS,QAEpB,CAAC;AAGH,eAAO,MAAM,OAAO,QAKlB,CAAC;AAEH,eAAO,MAAM,iBAAiB,QAI5B,CAAC;AAEH,eAAO,MAAM,MAAM,QAEjB,CAAC;AAEH,eAAO,MAAM,iBAAiB,QAE5B,CAAC;AAEH,eAAO,MAAM,IAAI,QAIf,CAAC;AAEH,eAAO,MAAM,QAAQ,QAEnB,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { sprinkles } from '../../../theme/sprinkles.css.js';
|
|
2
|
+
export const container = sprinkles({
|
|
3
|
+
position: 'relative',
|
|
4
|
+
});
|
|
5
|
+
export const content = sprinkles({
|
|
6
|
+
backgroundColor: 'white',
|
|
7
|
+
borderRadius: 'xl',
|
|
8
|
+
zIndex: 'modal',
|
|
9
|
+
overflow: 'hidden',
|
|
10
|
+
});
|
|
11
|
+
export const contentPositioned = sprinkles({
|
|
12
|
+
position: 'fixed',
|
|
13
|
+
top: 0,
|
|
14
|
+
left: 0,
|
|
15
|
+
});
|
|
16
|
+
export const hidden = sprinkles({
|
|
17
|
+
display: 'none',
|
|
18
|
+
});
|
|
19
|
+
export const focusOutlineReset = sprinkles({
|
|
20
|
+
outline: 'none',
|
|
21
|
+
});
|
|
22
|
+
export const menu = sprinkles({
|
|
23
|
+
listStyleType: 'none',
|
|
24
|
+
margin: 0,
|
|
25
|
+
padding: 0,
|
|
26
|
+
});
|
|
27
|
+
export const menuItem = sprinkles({
|
|
28
|
+
cursor: 'pointer',
|
|
29
|
+
});
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY3NzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2F0b21pYy9tb2xlY3VsZXMvZHJvcGRvd24vZHJvcGRvd24uY3NzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUc1RCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDO0lBQ2pDLFFBQVEsRUFBRSxVQUFVO0NBQ3JCLENBQUMsQ0FBQztBQUdILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUM7SUFDL0IsZUFBZSxFQUFFLE9BQU87SUFDeEIsWUFBWSxFQUFFLElBQUk7SUFDbEIsTUFBTSxFQUFFLE9BQU87SUFDZixRQUFRLEVBQUUsUUFBUTtDQUNuQixDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxTQUFTLENBQUM7SUFDekMsUUFBUSxFQUFFLE9BQU87SUFDakIsR0FBRyxFQUFFLENBQUM7SUFDTixJQUFJLEVBQUUsQ0FBQztDQUNSLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFDOUIsT0FBTyxFQUFFLE1BQU07Q0FDaEIsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsU0FBUyxDQUFDO0lBQ3pDLE9BQU8sRUFBRSxNQUFNO0NBQ2hCLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxTQUFTLENBQUM7SUFDNUIsYUFBYSxFQUFFLE1BQU07SUFDckIsTUFBTSxFQUFFLENBQUM7SUFDVCxPQUFPLEVBQUUsQ0FBQztDQUNYLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUM7SUFDaEMsTUFBTSxFQUFFLFNBQVM7Q0FDbEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3ByaW5rbGVzIH0gZnJvbSAnLi4vLi4vLi4vdGhlbWUvc3ByaW5rbGVzLmNzcy5qcyc7XG5cbi8vIENvbnRhaW5lciBvbmx5IHdyYXBzIHRoZSB0cmlnZ2VyIG5vdzsgbWVudSBjb250ZW50IGlzIHBvcnRhbGVkIHRvIGJvZHkuXG5leHBvcnQgY29uc3QgY29udGFpbmVyID0gc3ByaW5rbGVzKHtcbiAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG59KTtcblxuLy8gQmFzZSB2aXN1YWwgc3R5bGluZyBmb3IgdGhlIGRyb3Bkb3duIGNvbnRlbnQuIFBvc2l0aW9uICh0b3AvbGVmdCkgaXMgYXBwbGllZCBpbmxpbmUuXG5leHBvcnQgY29uc3QgY29udGVudCA9IHNwcmlua2xlcyh7XG4gIGJhY2tncm91bmRDb2xvcjogJ3doaXRlJyxcbiAgYm9yZGVyUmFkaXVzOiAneGwnLFxuICB6SW5kZXg6ICdtb2RhbCcsXG4gIG92ZXJmbG93OiAnaGlkZGVuJyxcbn0pO1xuXG5leHBvcnQgY29uc3QgY29udGVudFBvc2l0aW9uZWQgPSBzcHJpbmtsZXMoe1xuICBwb3NpdGlvbjogJ2ZpeGVkJyxcbiAgdG9wOiAwLFxuICBsZWZ0OiAwLFxufSk7XG5cbmV4cG9ydCBjb25zdCBoaWRkZW4gPSBzcHJpbmtsZXMoe1xuICBkaXNwbGF5OiAnbm9uZScsXG59KTtcblxuZXhwb3J0IGNvbnN0IGZvY3VzT3V0bGluZVJlc2V0ID0gc3ByaW5rbGVzKHtcbiAgb3V0bGluZTogJ25vbmUnLFxufSk7XG5cbmV4cG9ydCBjb25zdCBtZW51ID0gc3ByaW5rbGVzKHtcbiAgbGlzdFN0eWxlVHlwZTogJ25vbmUnLFxuICBtYXJnaW46IDAsXG4gIHBhZGRpbmc6IDAsXG59KTtcblxuZXhwb3J0IGNvbnN0IG1lbnVJdGVtID0gc3ByaW5rbGVzKHtcbiAgY3Vyc29yOiAncG9pbnRlcicsXG59KTtcbiJdfQ==
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type ComponentProps, type JSX, type ReactNode } from 'react';
|
|
2
|
+
import { Button } from '../../atoms/button/Button.js';
|
|
3
|
+
export type FormActionsProps = {
|
|
4
|
+
onCancel: () => void;
|
|
5
|
+
cancelLabel?: string;
|
|
6
|
+
submitLabel?: string;
|
|
7
|
+
submitLoadingLabel?: string;
|
|
8
|
+
isSubmitting?: boolean;
|
|
9
|
+
submitDisabled?: boolean;
|
|
10
|
+
className?: string;
|
|
11
|
+
renderSubmitContent?: (isSubmitting: boolean) => ReactNode;
|
|
12
|
+
submitButtonProps?: Omit<ComponentProps<typeof Button>, 'children' | 'type'>;
|
|
13
|
+
cancelButtonProps?: Omit<ComponentProps<typeof Button>, 'children' | 'type' | 'variant'>;
|
|
14
|
+
};
|
|
15
|
+
export declare const FormActions: ({ onCancel, cancelLabel, submitLabel, submitLoadingLabel, isSubmitting, submitDisabled, className, renderSubmitContent, submitButtonProps, cancelButtonProps, }: FormActionsProps) => JSX.Element;
|
|
16
|
+
//# sourceMappingURL=FormActions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormActions.d.ts","sourceRoot":"","sources":["../../../../src/atomic/molecules/form-actions/FormActions.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,GAAG,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtE,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAGtD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,CAAC,YAAY,EAAE,OAAO,KAAK,SAAS,CAAC;IAC3D,iBAAiB,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC,CAAC;IAC7E,iBAAiB,CAAC,EAAE,IAAI,CACtB,cAAc,CAAC,OAAO,MAAM,CAAC,EAC7B,UAAU,GAAG,MAAM,GAAG,SAAS,CAChC,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,iKAWzB,gBAAgB,KAAG,GAAG,CAAC,OAyDzB,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Button } from '../../atoms/button/Button.js';
|
|
3
|
+
import { useUiTranslation } from '../../../i18n/useUiTranslation.js';
|
|
4
|
+
export const FormActions = ({ onCancel, cancelLabel, submitLabel, submitLoadingLabel, isSubmitting = false, submitDisabled = false, className, renderSubmitContent, submitButtonProps, cancelButtonProps, }) => {
|
|
5
|
+
const { t } = useUiTranslation();
|
|
6
|
+
const resolvedCancelLabel = cancelLabel ?? t('common.actions.cancel');
|
|
7
|
+
const resolvedSubmitLabel = submitLabel ?? t('common.actions.save');
|
|
8
|
+
const resolvedSubmitLoadingLabel = submitLoadingLabel ?? t('common.actions.saving');
|
|
9
|
+
const cancelProps = cancelButtonProps ?? {};
|
|
10
|
+
const { className: cancelClassName, disabled: cancelDisabled, ...restCancelButtonProps } = cancelProps;
|
|
11
|
+
const submitProps = submitButtonProps ?? {};
|
|
12
|
+
const { className: submitClassName, disabled: submitDisabledOverride, ...restSubmitButtonProps } = submitProps;
|
|
13
|
+
let submitContent;
|
|
14
|
+
if (renderSubmitContent != null) {
|
|
15
|
+
submitContent = renderSubmitContent(isSubmitting);
|
|
16
|
+
}
|
|
17
|
+
else if (isSubmitting) {
|
|
18
|
+
submitContent = resolvedSubmitLoadingLabel;
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
submitContent = resolvedSubmitLabel;
|
|
22
|
+
}
|
|
23
|
+
const isCancelDisabled = Boolean(cancelDisabled);
|
|
24
|
+
const isSubmitDisabled = Boolean(submitDisabled) || isSubmitting || submitDisabledOverride === true;
|
|
25
|
+
return (_jsxs("div", { className: className, children: [_jsx(Button, { type: "button", variant: "text", onClick: onCancel, disabled: isCancelDisabled, className: cancelClassName, ...restCancelButtonProps, children: resolvedCancelLabel }), _jsx(Button, { type: "submit", variant: "primary", disabled: isSubmitDisabled, className: submitClassName, ...restSubmitButtonProps, children: submitContent })] }));
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9ybUFjdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXRvbWljL21vbGVjdWxlcy9mb3JtLWFjdGlvbnMvRm9ybUFjdGlvbnMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFFQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFrQnJFLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEVBQzFCLFFBQVEsRUFDUixXQUFXLEVBQ1gsV0FBVyxFQUNYLGtCQUFrQixFQUNsQixZQUFZLEdBQUcsS0FBSyxFQUNwQixjQUFjLEdBQUcsS0FBSyxFQUN0QixTQUFTLEVBQ1QsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNqQixpQkFBaUIsR0FDQSxFQUFlLEVBQUU7SUFDbEMsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLGdCQUFnQixFQUFFLENBQUM7SUFDakMsTUFBTSxtQkFBbUIsR0FBRyxXQUFXLElBQUksQ0FBQyxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDdEUsTUFBTSxtQkFBbUIsR0FBRyxXQUFXLElBQUksQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDcEUsTUFBTSwwQkFBMEIsR0FDOUIsa0JBQWtCLElBQUksQ0FBQyxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDbkQsTUFBTSxXQUFXLEdBQUcsaUJBQWlCLElBQUksRUFBRSxDQUFDO0lBQzVDLE1BQU0sRUFDSixTQUFTLEVBQUUsZUFBZSxFQUMxQixRQUFRLEVBQUUsY0FBYyxFQUN4QixHQUFHLHFCQUFxQixFQUN6QixHQUFHLFdBQVcsQ0FBQztJQUVoQixNQUFNLFdBQVcsR0FBRyxpQkFBaUIsSUFBSSxFQUFFLENBQUM7SUFDNUMsTUFBTSxFQUNKLFNBQVMsRUFBRSxlQUFlLEVBQzFCLFFBQVEsRUFBRSxzQkFBc0IsRUFDaEMsR0FBRyxxQkFBcUIsRUFDekIsR0FBRyxXQUFXLENBQUM7SUFFaEIsSUFBSSxhQUF3QixDQUFDO0lBRTdCLElBQUksbUJBQW1CLElBQUksSUFBSSxFQUFFLENBQUM7UUFDaEMsYUFBYSxHQUFHLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3BELENBQUM7U0FBTSxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3hCLGFBQWEsR0FBRywwQkFBMEIsQ0FBQztJQUM3QyxDQUFDO1NBQU0sQ0FBQztRQUNOLGFBQWEsR0FBRyxtQkFBbUIsQ0FBQztJQUN0QyxDQUFDO0lBRUQsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDakQsTUFBTSxnQkFBZ0IsR0FDcEIsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLFlBQVksSUFBSSxzQkFBc0IsS0FBSyxJQUFJLENBQUM7SUFFN0UsT0FBTyxDQUNMLGVBQUssU0FBUyxFQUFFLFNBQVMsYUFDdkIsS0FBQyxNQUFNLElBQ0wsSUFBSSxFQUFDLFFBQVEsRUFDYixPQUFPLEVBQUMsTUFBTSxFQUNkLE9BQU8sRUFBRSxRQUFRLEVBQ2pCLFFBQVEsRUFBRSxnQkFBZ0IsRUFDMUIsU0FBUyxFQUFFLGVBQWUsS0FDdEIscUJBQXFCLFlBRXhCLG1CQUFtQixHQUNiLEVBQ1QsS0FBQyxNQUFNLElBQ0wsSUFBSSxFQUFDLFFBQVEsRUFDYixPQUFPLEVBQUMsU0FBUyxFQUNqQixRQUFRLEVBQUUsZ0JBQWdCLEVBQzFCLFNBQVMsRUFBRSxlQUFlLEtBQ3RCLHFCQUFxQixZQUV4QixhQUFhLEdBQ1AsSUFDTCxDQUNQLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIENvbXBvbmVudFByb3BzLCB0eXBlIEpTWCwgdHlwZSBSZWFjdE5vZGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJy4uLy4uL2F0b21zL2J1dHRvbi9CdXR0b24uanMnO1xuaW1wb3J0IHsgdXNlVWlUcmFuc2xhdGlvbiB9IGZyb20gJy4uLy4uLy4uL2kxOG4vdXNlVWlUcmFuc2xhdGlvbi5qcyc7XG5cbmV4cG9ydCB0eXBlIEZvcm1BY3Rpb25zUHJvcHMgPSB7XG4gIG9uQ2FuY2VsOiAoKSA9PiB2b2lkO1xuICBjYW5jZWxMYWJlbD86IHN0cmluZztcbiAgc3VibWl0TGFiZWw/OiBzdHJpbmc7XG4gIHN1Ym1pdExvYWRpbmdMYWJlbD86IHN0cmluZztcbiAgaXNTdWJtaXR0aW5nPzogYm9vbGVhbjtcbiAgc3VibWl0RGlzYWJsZWQ/OiBib29sZWFuO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHJlbmRlclN1Ym1pdENvbnRlbnQ/OiAoaXNTdWJtaXR0aW5nOiBib29sZWFuKSA9PiBSZWFjdE5vZGU7XG4gIHN1Ym1pdEJ1dHRvblByb3BzPzogT21pdDxDb21wb25lbnRQcm9wczx0eXBlb2YgQnV0dG9uPiwgJ2NoaWxkcmVuJyB8ICd0eXBlJz47XG4gIGNhbmNlbEJ1dHRvblByb3BzPzogT21pdDxcbiAgICBDb21wb25lbnRQcm9wczx0eXBlb2YgQnV0dG9uPixcbiAgICAnY2hpbGRyZW4nIHwgJ3R5cGUnIHwgJ3ZhcmlhbnQnXG4gID47XG59O1xuXG5leHBvcnQgY29uc3QgRm9ybUFjdGlvbnMgPSAoe1xuICBvbkNhbmNlbCxcbiAgY2FuY2VsTGFiZWwsXG4gIHN1Ym1pdExhYmVsLFxuICBzdWJtaXRMb2FkaW5nTGFiZWwsXG4gIGlzU3VibWl0dGluZyA9IGZhbHNlLFxuICBzdWJtaXREaXNhYmxlZCA9IGZhbHNlLFxuICBjbGFzc05hbWUsXG4gIHJlbmRlclN1Ym1pdENvbnRlbnQsXG4gIHN1Ym1pdEJ1dHRvblByb3BzLFxuICBjYW5jZWxCdXR0b25Qcm9wcyxcbn06IEZvcm1BY3Rpb25zUHJvcHMpOiBKU1guRWxlbWVudCA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVWlUcmFuc2xhdGlvbigpO1xuICBjb25zdCByZXNvbHZlZENhbmNlbExhYmVsID0gY2FuY2VsTGFiZWwgPz8gdCgnY29tbW9uLmFjdGlvbnMuY2FuY2VsJyk7XG4gIGNvbnN0IHJlc29sdmVkU3VibWl0TGFiZWwgPSBzdWJtaXRMYWJlbCA/PyB0KCdjb21tb24uYWN0aW9ucy5zYXZlJyk7XG4gIGNvbnN0IHJlc29sdmVkU3VibWl0TG9hZGluZ0xhYmVsID1cbiAgICBzdWJtaXRMb2FkaW5nTGFiZWwgPz8gdCgnY29tbW9uLmFjdGlvbnMuc2F2aW5nJyk7XG4gIGNvbnN0IGNhbmNlbFByb3BzID0gY2FuY2VsQnV0dG9uUHJvcHMgPz8ge307XG4gIGNvbnN0IHtcbiAgICBjbGFzc05hbWU6IGNhbmNlbENsYXNzTmFtZSxcbiAgICBkaXNhYmxlZDogY2FuY2VsRGlzYWJsZWQsXG4gICAgLi4ucmVzdENhbmNlbEJ1dHRvblByb3BzXG4gIH0gPSBjYW5jZWxQcm9wcztcblxuICBjb25zdCBzdWJtaXRQcm9wcyA9IHN1Ym1pdEJ1dHRvblByb3BzID8/IHt9O1xuICBjb25zdCB7XG4gICAgY2xhc3NOYW1lOiBzdWJtaXRDbGFzc05hbWUsXG4gICAgZGlzYWJsZWQ6IHN1Ym1pdERpc2FibGVkT3ZlcnJpZGUsXG4gICAgLi4ucmVzdFN1Ym1pdEJ1dHRvblByb3BzXG4gIH0gPSBzdWJtaXRQcm9wcztcblxuICBsZXQgc3VibWl0Q29udGVudDogUmVhY3ROb2RlO1xuXG4gIGlmIChyZW5kZXJTdWJtaXRDb250ZW50ICE9IG51bGwpIHtcbiAgICBzdWJtaXRDb250ZW50ID0gcmVuZGVyU3VibWl0Q29udGVudChpc1N1Ym1pdHRpbmcpO1xuICB9IGVsc2UgaWYgKGlzU3VibWl0dGluZykge1xuICAgIHN1Ym1pdENvbnRlbnQgPSByZXNvbHZlZFN1Ym1pdExvYWRpbmdMYWJlbDtcbiAgfSBlbHNlIHtcbiAgICBzdWJtaXRDb250ZW50ID0gcmVzb2x2ZWRTdWJtaXRMYWJlbDtcbiAgfVxuXG4gIGNvbnN0IGlzQ2FuY2VsRGlzYWJsZWQgPSBCb29sZWFuKGNhbmNlbERpc2FibGVkKTtcbiAgY29uc3QgaXNTdWJtaXREaXNhYmxlZCA9XG4gICAgQm9vbGVhbihzdWJtaXREaXNhYmxlZCkgfHwgaXNTdWJtaXR0aW5nIHx8IHN1Ym1pdERpc2FibGVkT3ZlcnJpZGUgPT09IHRydWU7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lfT5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgb25DbGljaz17b25DYW5jZWx9XG4gICAgICAgIGRpc2FibGVkPXtpc0NhbmNlbERpc2FibGVkfVxuICAgICAgICBjbGFzc05hbWU9e2NhbmNlbENsYXNzTmFtZX1cbiAgICAgICAgey4uLnJlc3RDYW5jZWxCdXR0b25Qcm9wc31cbiAgICAgID5cbiAgICAgICAge3Jlc29sdmVkQ2FuY2VsTGFiZWx9XG4gICAgICA8L0J1dHRvbj5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgZGlzYWJsZWQ9e2lzU3VibWl0RGlzYWJsZWR9XG4gICAgICAgIGNsYXNzTmFtZT17c3VibWl0Q2xhc3NOYW1lfVxuICAgICAgICB7Li4ucmVzdFN1Ym1pdEJ1dHRvblByb3BzfVxuICAgICAgPlxuICAgICAgICB7c3VibWl0Q29udGVudH1cbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvZGl2PlxuICApO1xufTtcbiJdfQ==
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type JSX, type ReactNode } from 'react';
|
|
2
|
+
import { type ToastItem } from './ToastViewport.js';
|
|
3
|
+
export type ToastApi = {
|
|
4
|
+
push: (toast: Omit<ToastItem, 'id'> & {
|
|
5
|
+
id?: string;
|
|
6
|
+
}) => string;
|
|
7
|
+
dismiss: (toastId: string) => void;
|
|
8
|
+
clear: () => void;
|
|
9
|
+
info: (title: ReactNode, message?: ReactNode) => string;
|
|
10
|
+
warning: (title: ReactNode, message?: ReactNode) => string;
|
|
11
|
+
error: (title: ReactNode, message?: ReactNode) => string;
|
|
12
|
+
};
|
|
13
|
+
export type ToastProviderProps = {
|
|
14
|
+
children: ReactNode;
|
|
15
|
+
maxToasts?: number;
|
|
16
|
+
};
|
|
17
|
+
export declare const ToastProvider: ({ children, maxToasts, }: ToastProviderProps) => JSX.Element;
|
|
18
|
+
export declare const useToast: () => ToastApi;
|
|
19
|
+
//# sourceMappingURL=ToastProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToastProvider.d.ts","sourceRoot":"","sources":["../../../../src/atomic/molecules/toast/ToastProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,GAAG,EACR,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,EAEL,KAAK,SAAS,EAEf,MAAM,oBAAoB,CAAC;AAG5B,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,CAAC;IACjE,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,IAAI,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,SAAS,KAAK,MAAM,CAAC;IACxD,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,SAAS,KAAK,MAAM,CAAC;IAC3D,KAAK,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,SAAS,KAAK,MAAM,CAAC;CAC1D,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAUF,eAAO,MAAM,aAAa,GAAI,0BAG3B,kBAAkB,KAAG,GAAG,CAAC,OAgH3B,CAAC;AAEF,eAAO,MAAM,QAAQ,QAAO,QAM3B,CAAC"}
|