@smwb/ui-react 2.7.0 → 2.8.0
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 +27 -0
- package/dist/assets/styles/less/components/avatar/avatar.entry.css +1 -1
- package/dist/assets/styles/less/components/card/card.entry.css +1 -1
- package/dist/assets/styles/less/components/checkbox/checkbox.entry.css +1 -1
- package/dist/assets/styles/less/components/chip/chip.entry.css +1 -1
- package/dist/assets/styles/less/components/menu/menu.entry.css +1 -1
- package/dist/assets/styles/less/components/personChip/personChip.entry.css +1 -1
- package/dist/assets/styles/less/components/radioButton/radioButton.entry.css +1 -1
- package/dist/assets/styles/less/components/rating/rating.entry.css +1 -1
- package/dist/assets/styles/less/components/selectField/selectField.entry.css +1 -1
- package/dist/assets/styles/less/components/table/table.entry.css +1 -1
- package/dist/assets/styles/less/components/thumbCard/thumbCard.entry.css +1 -1
- package/dist/assets/styles/less/components/toggle/toggle.entry.css +1 -1
- package/dist/assets/styles/less/components/typography/typography.entry.css +1 -1
- package/dist/assets/styles/less/connects/rt/table.entry.css +1 -1
- package/dist/components/base/icon/icon.d.ts +6 -2
- package/dist/components/base/icon/icon.js +49 -37
- package/dist/components/base/icon/icon.js.map +1 -1
- package/dist/components/base/ripple/ripple.d.ts +3 -0
- package/dist/components/base/ripple/ripple.js +38 -23
- package/dist/components/base/ripple/ripple.js.map +1 -1
- package/dist/components/dataDisplay/avatar/avatar.d.ts +4 -0
- package/dist/components/dataDisplay/avatar/avatar.js +50 -37
- package/dist/components/dataDisplay/avatar/avatar.js.map +1 -1
- package/dist/components/dataDisplay/badge/badge.js +37 -28
- package/dist/components/dataDisplay/badge/badge.js.map +1 -1
- package/dist/components/dataDisplay/card/card.d.ts +30 -2
- package/dist/components/dataDisplay/card/card.js +50 -23
- package/dist/components/dataDisplay/card/card.js.map +1 -1
- package/dist/components/dataDisplay/carousel/carousel.js +70 -70
- package/dist/components/dataDisplay/carousel/carousel.js.map +1 -1
- package/dist/components/dataDisplay/chart/chart.d.ts +2 -0
- package/dist/components/dataDisplay/chart/chart.js +66 -53
- package/dist/components/dataDisplay/chart/chart.js.map +1 -1
- package/dist/components/dataDisplay/chat/chatIconButton.d.ts +1 -1
- package/dist/components/dataDisplay/chat/chatIconButton.js +30 -26
- package/dist/components/dataDisplay/chat/chatIconButton.js.map +1 -1
- package/dist/components/dataDisplay/chat/chatLayout.d.ts +3 -1
- package/dist/components/dataDisplay/chat/chatLayout.js +56 -55
- package/dist/components/dataDisplay/chat/chatLayout.js.map +1 -1
- package/dist/components/dataDisplay/chat/chatOverlayLayout.d.ts +3 -1
- package/dist/components/dataDisplay/chip/chip.d.ts +31 -0
- package/dist/components/dataDisplay/chip/chip.js +110 -83
- package/dist/components/dataDisplay/chip/chip.js.map +1 -1
- package/dist/components/dataDisplay/chipGroup/chipGroup.js +34 -30
- package/dist/components/dataDisplay/chipGroup/chipGroup.js.map +1 -1
- package/dist/components/dataDisplay/descriptionList/descriptionList.d.ts +11 -3
- package/dist/components/dataDisplay/descriptionList/descriptionList.js.map +1 -1
- package/dist/components/dataDisplay/expansionPanel/expansionPanel.js +143 -98
- package/dist/components/dataDisplay/expansionPanel/expansionPanel.js.map +1 -1
- package/dist/components/dataDisplay/kanban/kanban.d.ts +6 -0
- package/dist/components/dataDisplay/kanban/kanban.js +46 -35
- package/dist/components/dataDisplay/kanban/kanban.js.map +1 -1
- package/dist/components/dataDisplay/lazyImage/lazyImage.js +31 -30
- package/dist/components/dataDisplay/lazyImage/lazyImage.js.map +1 -1
- package/dist/components/dataDisplay/list/list.d.ts +2 -0
- package/dist/components/dataDisplay/list/list.js +15 -14
- package/dist/components/dataDisplay/list/list.js.map +1 -1
- package/dist/components/dataDisplay/meter/meter.d.ts +2 -0
- package/dist/components/dataDisplay/meter/meter.js +24 -23
- package/dist/components/dataDisplay/meter/meter.js.map +1 -1
- package/dist/components/dataDisplay/personChip/personChip.d.ts +2 -0
- package/dist/components/dataDisplay/personChip/personChip.js +39 -27
- package/dist/components/dataDisplay/personChip/personChip.js.map +1 -1
- package/dist/components/dataDisplay/stat/stat.d.ts +2 -0
- package/dist/components/dataDisplay/stat/stat.js +25 -13
- package/dist/components/dataDisplay/stat/stat.js.map +1 -1
- package/dist/components/dataDisplay/table/table.d.ts +16 -1
- package/dist/components/dataDisplay/table/table.js +40 -36
- package/dist/components/dataDisplay/table/table.js.map +1 -1
- package/dist/components/dataDisplay/table/tableBody.js +10 -4
- package/dist/components/dataDisplay/table/tableBody.js.map +1 -1
- package/dist/components/dataDisplay/table/tableCell.d.ts +10 -2
- package/dist/components/dataDisplay/table/tableCell.js +20 -13
- package/dist/components/dataDisplay/table/tableCell.js.map +1 -1
- package/dist/components/dataDisplay/table/tableColumns.d.ts +83 -0
- package/dist/components/dataDisplay/table/tableColumns.js +112 -0
- package/dist/components/dataDisplay/table/tableColumns.js.map +1 -0
- package/dist/components/dataDisplay/table/tableHead.js +9 -3
- package/dist/components/dataDisplay/table/tableHead.js.map +1 -1
- package/dist/components/dataDisplay/table/tableHeadCell.d.ts +24 -3
- package/dist/components/dataDisplay/table/tableHeadCell.js +60 -65
- package/dist/components/dataDisplay/table/tableHeadCell.js.map +1 -1
- package/dist/components/dataDisplay/table/tableRow.d.ts +3 -1
- package/dist/components/dataDisplay/table/tableRow.js +28 -16
- package/dist/components/dataDisplay/table/tableRow.js.map +1 -1
- package/dist/components/dataDisplay/thumbCard/thumbCard.d.ts +44 -3
- package/dist/components/dataDisplay/thumbCard/thumbCard.js +79 -59
- package/dist/components/dataDisplay/thumbCard/thumbCard.js.map +1 -1
- package/dist/components/dataDisplay/treeView/treeView.d.ts +2 -0
- package/dist/components/dataDisplay/treeView/treeView.js +24 -23
- package/dist/components/dataDisplay/treeView/treeView.js.map +1 -1
- package/dist/components/feedBack/emptyState/emptyState.d.ts +2 -0
- package/dist/components/feedBack/emptyState/emptyState.js +22 -12
- package/dist/components/feedBack/emptyState/emptyState.js.map +1 -1
- package/dist/components/feedBack/message/message.d.ts +2 -0
- package/dist/components/feedBack/message/message.js +30 -19
- package/dist/components/feedBack/message/message.js.map +1 -1
- package/dist/components/feedBack/modal/modal.js +40 -40
- package/dist/components/feedBack/modal/modal.js.map +1 -1
- package/dist/components/feedBack/skeleton/skeleton.d.ts +10 -2
- package/dist/components/feedBack/skeleton/skeleton.js +37 -34
- package/dist/components/feedBack/skeleton/skeleton.js.map +1 -1
- package/dist/components/feedBack/snackbar/snackbar.js +104 -103
- package/dist/components/feedBack/snackbar/snackbar.js.map +1 -1
- package/dist/components/feedBack/tooltip/tooltip.d.ts +9 -1
- package/dist/components/feedBack/tooltip/tooltip.js +67 -47
- package/dist/components/feedBack/tooltip/tooltip.js.map +1 -1
- package/dist/components/inputs/button/button.d.ts +2 -0
- package/dist/components/inputs/button/button.js +62 -58
- package/dist/components/inputs/button/button.js.map +1 -1
- package/dist/components/inputs/buttonGroups/buttonGroup.d.ts +2 -0
- package/dist/components/inputs/buttonGroups/buttonGroup.js +40 -36
- package/dist/components/inputs/buttonGroups/buttonGroup.js.map +1 -1
- package/dist/components/inputs/checkbox/checkbox.d.ts +10 -0
- package/dist/components/inputs/checkbox/checkbox.js +84 -59
- package/dist/components/inputs/checkbox/checkbox.js.map +1 -1
- package/dist/components/inputs/datePicker/datePicker.js +170 -164
- package/dist/components/inputs/datePicker/datePicker.js.map +1 -1
- package/dist/components/inputs/datePicker/datePickerDay.d.ts +1 -1
- package/dist/components/inputs/datePicker/datePickerDay.js +52 -44
- package/dist/components/inputs/datePicker/datePickerDay.js.map +1 -1
- package/dist/components/inputs/datePicker/datePickerIconButton.d.ts +1 -1
- package/dist/components/inputs/datePicker/datePickerIconButton.js +32 -28
- package/dist/components/inputs/datePicker/datePickerIconButton.js.map +1 -1
- package/dist/components/inputs/dateTimePicker/dateTimePicker.js +160 -154
- package/dist/components/inputs/dateTimePicker/dateTimePicker.js.map +1 -1
- package/dist/components/inputs/floatingButton/floatingButton.js +32 -30
- package/dist/components/inputs/floatingButton/floatingButton.js.map +1 -1
- package/dist/components/inputs/radioButton/radioButton.d.ts +9 -0
- package/dist/components/inputs/radioButton/radioButton.js +77 -58
- package/dist/components/inputs/radioButton/radioButton.js.map +1 -1
- package/dist/components/inputs/rating/rating.d.ts +8 -0
- package/dist/components/inputs/rating/rating.js +85 -70
- package/dist/components/inputs/rating/rating.js.map +1 -1
- package/dist/components/inputs/selectField/dropdownMenu.d.ts +20 -1
- package/dist/components/inputs/selectField/dropdownMenu.js +266 -113
- package/dist/components/inputs/selectField/dropdownMenu.js.map +1 -1
- package/dist/components/inputs/selectField/optionNavigation.d.ts +17 -0
- package/dist/components/inputs/selectField/optionNavigation.js +38 -0
- package/dist/components/inputs/selectField/optionNavigation.js.map +1 -0
- package/dist/components/inputs/selectField/selectField.d.ts +31 -1
- package/dist/components/inputs/selectField/selectField.js +358 -218
- package/dist/components/inputs/selectField/selectField.js.map +1 -1
- package/dist/components/inputs/slider/slider.d.ts +22 -1
- package/dist/components/inputs/slider/slider.js +330 -261
- package/dist/components/inputs/slider/slider.js.map +1 -1
- package/dist/components/inputs/textField/textField.d.ts +7 -0
- package/dist/components/inputs/textField/textField.js +118 -100
- package/dist/components/inputs/textField/textField.js.map +1 -1
- package/dist/components/inputs/textField/textFieldWrapper.d.ts +15 -1
- package/dist/components/inputs/textField/textFieldWrapper.js +45 -34
- package/dist/components/inputs/textField/textFieldWrapper.js.map +1 -1
- package/dist/components/inputs/timePicker/timePicker.js +91 -85
- package/dist/components/inputs/timePicker/timePicker.js.map +1 -1
- package/dist/components/inputs/toggle/toggle.d.ts +4 -0
- package/dist/components/inputs/toggle/toggle.js +80 -61
- package/dist/components/inputs/toggle/toggle.js.map +1 -1
- package/dist/components/inputs/valueSlider/valueSlider.d.ts +12 -0
- package/dist/components/inputs/valueSlider/valueSlider.js +23 -22
- package/dist/components/inputs/valueSlider/valueSlider.js.map +1 -1
- package/dist/components/layout/appLayout/appLayout.d.ts +2 -0
- package/dist/components/layout/appLayout/appLayout.js +25 -24
- package/dist/components/layout/appLayout/appLayout.js.map +1 -1
- package/dist/components/layout/divider/divider.d.ts +2 -0
- package/dist/components/layout/divider/divider.js +23 -22
- package/dist/components/layout/divider/divider.js.map +1 -1
- package/dist/components/layout/floatingWindow/floatingWindow.d.ts +2 -0
- package/dist/components/layout/floatingWindow/floatingWindow.js +145 -139
- package/dist/components/layout/floatingWindow/floatingWindow.js.map +1 -1
- package/dist/components/layout/grid/grid.d.ts +12 -1
- package/dist/components/layout/grid/grid.js +51 -36
- package/dist/components/layout/grid/grid.js.map +1 -1
- package/dist/components/layout/page/page.d.ts +2 -0
- package/dist/components/layout/page/page.js +16 -8
- package/dist/components/layout/page/page.js.map +1 -1
- package/dist/components/layout/pageHeader/pageHeader.d.ts +2 -0
- package/dist/components/layout/pageHeader/pageHeader.js +22 -13
- package/dist/components/layout/pageHeader/pageHeader.js.map +1 -1
- package/dist/components/layout/sectionHeader/sectionHeader.d.ts +2 -0
- package/dist/components/layout/sectionHeader/sectionHeader.js +37 -27
- package/dist/components/layout/sectionHeader/sectionHeader.js.map +1 -1
- package/dist/components/layout/sheet/sheet.d.ts +2 -0
- package/dist/components/layout/sheet/sheet.js +80 -79
- package/dist/components/layout/sheet/sheet.js.map +1 -1
- package/dist/components/layout/stack/stack.d.ts +2 -0
- package/dist/components/layout/stack/stack.js +29 -17
- package/dist/components/layout/stack/stack.js.map +1 -1
- package/dist/components/navigation/appBar/appBar.d.ts +2 -0
- package/dist/components/navigation/appBar/appBar.js +24 -23
- package/dist/components/navigation/appBar/appBar.js.map +1 -1
- package/dist/components/navigation/bottomBar/bottomBar.js +81 -77
- package/dist/components/navigation/bottomBar/bottomBar.js.map +1 -1
- package/dist/components/navigation/breadcrumbs/breadcrumbs.d.ts +2 -0
- package/dist/components/navigation/breadcrumbs/breadcrumbs.js +29 -27
- package/dist/components/navigation/breadcrumbs/breadcrumbs.js.map +1 -1
- package/dist/components/navigation/menu/menu.d.ts +12 -0
- package/dist/components/navigation/menu/menu.js.map +1 -1
- package/dist/components/navigation/menu/menuContext.d.ts +2 -0
- package/dist/components/navigation/menu/menuContext.js.map +1 -1
- package/dist/components/navigation/menu/menuFloating.js +42 -30
- package/dist/components/navigation/menu/menuFloating.js.map +1 -1
- package/dist/components/navigation/menu/menuItem.d.ts +4 -0
- package/dist/components/navigation/menu/menuItem.js +60 -48
- package/dist/components/navigation/menu/menuItem.js.map +1 -1
- package/dist/components/navigation/menu/menuList.d.ts +5 -1
- package/dist/components/navigation/menu/menuList.js +30 -19
- package/dist/components/navigation/menu/menuList.js.map +1 -1
- package/dist/components/navigation/menu/menuSubmenu.js +53 -40
- package/dist/components/navigation/menu/menuSubmenu.js.map +1 -1
- package/dist/components/navigation/pagination/pagination.d.ts +2 -0
- package/dist/components/navigation/pagination/pagination.js +51 -49
- package/dist/components/navigation/pagination/pagination.js.map +1 -1
- package/dist/components/navigation/sidebar/sidebar.js +39 -38
- package/dist/components/navigation/sidebar/sidebar.js.map +1 -1
- package/dist/components/navigation/stepper/stepper.d.ts +2 -0
- package/dist/components/navigation/stepper/stepper.js +37 -28
- package/dist/components/navigation/stepper/stepper.js.map +1 -1
- package/dist/components/navigation/tabs/tab/tab.js +42 -40
- package/dist/components/navigation/tabs/tab/tab.js.map +1 -1
- package/dist/components/navigation/tabs/tabs.d.ts +6 -0
- package/dist/components/navigation/tabs/tabs.js +83 -86
- package/dist/components/navigation/tabs/tabs.js.map +1 -1
- package/dist/connects/rt/table/headerCellRenderer.d.ts +4 -1
- package/dist/connects/rt/table/headerCellRenderer.js +45 -15
- package/dist/connects/rt/table/headerCellRenderer.js.map +1 -1
- package/dist/connects/rt/table/table.d.ts +15 -1
- package/dist/connects/rt/table/table.js +125 -131
- package/dist/connects/rt/table/table.js.map +1 -1
- package/dist/headless/components/base/icon/icon.js +49 -37
- package/dist/headless/components/base/icon/icon.js.map +1 -1
- package/dist/headless/components/base/ripple/ripple.js +42 -27
- package/dist/headless/components/base/ripple/ripple.js.map +1 -1
- package/dist/headless/components/dataDisplay/avatar/avatar.js +51 -38
- package/dist/headless/components/dataDisplay/avatar/avatar.js.map +1 -1
- package/dist/headless/components/dataDisplay/badge/badge.js +37 -28
- package/dist/headless/components/dataDisplay/badge/badge.js.map +1 -1
- package/dist/headless/components/dataDisplay/card/card.js +50 -23
- package/dist/headless/components/dataDisplay/card/card.js.map +1 -1
- package/dist/headless/components/dataDisplay/carousel/carousel.js +55 -55
- package/dist/headless/components/dataDisplay/carousel/carousel.js.map +1 -1
- package/dist/headless/components/dataDisplay/chat/chatIconButton.js +30 -26
- package/dist/headless/components/dataDisplay/chat/chatIconButton.js.map +1 -1
- package/dist/headless/components/dataDisplay/chat/chatLayout.js +56 -55
- package/dist/headless/components/dataDisplay/chat/chatLayout.js.map +1 -1
- package/dist/headless/components/dataDisplay/chip/chip.js +108 -81
- package/dist/headless/components/dataDisplay/chip/chip.js.map +1 -1
- package/dist/headless/components/dataDisplay/chipGroup/chipGroup.js +35 -31
- package/dist/headless/components/dataDisplay/chipGroup/chipGroup.js.map +1 -1
- package/dist/headless/components/dataDisplay/descriptionList/descriptionList.js.map +1 -1
- package/dist/headless/components/dataDisplay/expansionPanel/expansionPanel.js +143 -98
- package/dist/headless/components/dataDisplay/expansionPanel/expansionPanel.js.map +1 -1
- package/dist/headless/components/dataDisplay/kanban/kanban.js +45 -34
- package/dist/headless/components/dataDisplay/kanban/kanban.js.map +1 -1
- package/dist/headless/components/dataDisplay/lazyImage/lazyImage.js +30 -29
- package/dist/headless/components/dataDisplay/lazyImage/lazyImage.js.map +1 -1
- package/dist/headless/components/dataDisplay/list/list.js +15 -14
- package/dist/headless/components/dataDisplay/list/list.js.map +1 -1
- package/dist/headless/components/dataDisplay/meter/meter.js +19 -18
- package/dist/headless/components/dataDisplay/meter/meter.js.map +1 -1
- package/dist/headless/components/dataDisplay/personChip/personChip.js +39 -27
- package/dist/headless/components/dataDisplay/personChip/personChip.js.map +1 -1
- package/dist/headless/components/dataDisplay/stat/stat.js +27 -15
- package/dist/headless/components/dataDisplay/stat/stat.js.map +1 -1
- package/dist/headless/components/dataDisplay/table/table.js +40 -36
- package/dist/headless/components/dataDisplay/table/table.js.map +1 -1
- package/dist/headless/components/dataDisplay/table/tableBody.js +10 -4
- package/dist/headless/components/dataDisplay/table/tableBody.js.map +1 -1
- package/dist/headless/components/dataDisplay/table/tableCell.js +20 -13
- package/dist/headless/components/dataDisplay/table/tableCell.js.map +1 -1
- package/dist/headless/components/dataDisplay/table/tableColumns.js +112 -0
- package/dist/headless/components/dataDisplay/table/tableColumns.js.map +1 -0
- package/dist/headless/components/dataDisplay/table/tableHead.js +9 -3
- package/dist/headless/components/dataDisplay/table/tableHead.js.map +1 -1
- package/dist/headless/components/dataDisplay/table/tableHeadCell.js +60 -65
- package/dist/headless/components/dataDisplay/table/tableHeadCell.js.map +1 -1
- package/dist/headless/components/dataDisplay/table/tableRow.js +28 -16
- package/dist/headless/components/dataDisplay/table/tableRow.js.map +1 -1
- package/dist/headless/components/dataDisplay/thumbCard/thumbCard.js +78 -58
- package/dist/headless/components/dataDisplay/thumbCard/thumbCard.js.map +1 -1
- package/dist/headless/components/dataDisplay/treeView/treeView.js +24 -23
- package/dist/headless/components/dataDisplay/treeView/treeView.js.map +1 -1
- package/dist/headless/components/feedBack/emptyState/emptyState.js +21 -11
- package/dist/headless/components/feedBack/emptyState/emptyState.js.map +1 -1
- package/dist/headless/components/feedBack/message/message.js +31 -20
- package/dist/headless/components/feedBack/message/message.js.map +1 -1
- package/dist/headless/components/feedBack/modal/modal.js +44 -44
- package/dist/headless/components/feedBack/modal/modal.js.map +1 -1
- package/dist/headless/components/feedBack/skeleton/skeleton.js +38 -35
- package/dist/headless/components/feedBack/skeleton/skeleton.js.map +1 -1
- package/dist/headless/components/feedBack/snackbar/snackbar.js +108 -107
- package/dist/headless/components/feedBack/snackbar/snackbar.js.map +1 -1
- package/dist/headless/components/feedBack/tooltip/tooltip.js +67 -47
- package/dist/headless/components/feedBack/tooltip/tooltip.js.map +1 -1
- package/dist/headless/components/inputs/button/button.js +62 -58
- package/dist/headless/components/inputs/button/button.js.map +1 -1
- package/dist/headless/components/inputs/buttonGroups/buttonGroup.js +40 -36
- package/dist/headless/components/inputs/buttonGroups/buttonGroup.js.map +1 -1
- package/dist/headless/components/inputs/checkbox/checkbox.js +85 -60
- package/dist/headless/components/inputs/checkbox/checkbox.js.map +1 -1
- package/dist/headless/components/inputs/datePicker/datePicker.js +170 -164
- package/dist/headless/components/inputs/datePicker/datePicker.js.map +1 -1
- package/dist/headless/components/inputs/datePicker/datePickerDay.js +52 -44
- package/dist/headless/components/inputs/datePicker/datePickerDay.js.map +1 -1
- package/dist/headless/components/inputs/datePicker/datePickerIconButton.js +32 -28
- package/dist/headless/components/inputs/datePicker/datePickerIconButton.js.map +1 -1
- package/dist/headless/components/inputs/dateTimePicker/dateTimePicker.js +160 -154
- package/dist/headless/components/inputs/dateTimePicker/dateTimePicker.js.map +1 -1
- package/dist/headless/components/inputs/floatingButton/floatingButton.js +32 -30
- package/dist/headless/components/inputs/floatingButton/floatingButton.js.map +1 -1
- package/dist/headless/components/inputs/radioButton/radioButton.js +77 -58
- package/dist/headless/components/inputs/radioButton/radioButton.js.map +1 -1
- package/dist/headless/components/inputs/rating/rating.js +85 -70
- package/dist/headless/components/inputs/rating/rating.js.map +1 -1
- package/dist/headless/components/inputs/selectField/dropdownMenu.js +266 -113
- package/dist/headless/components/inputs/selectField/dropdownMenu.js.map +1 -1
- package/dist/headless/components/inputs/selectField/optionNavigation.js +38 -0
- package/dist/headless/components/inputs/selectField/optionNavigation.js.map +1 -0
- package/dist/headless/components/inputs/selectField/selectField.js +358 -218
- package/dist/headless/components/inputs/selectField/selectField.js.map +1 -1
- package/dist/headless/components/inputs/slider/slider.js +330 -261
- package/dist/headless/components/inputs/slider/slider.js.map +1 -1
- package/dist/headless/components/inputs/textField/textField.js +118 -100
- package/dist/headless/components/inputs/textField/textField.js.map +1 -1
- package/dist/headless/components/inputs/textField/textFieldWrapper.js +45 -34
- package/dist/headless/components/inputs/textField/textFieldWrapper.js.map +1 -1
- package/dist/headless/components/inputs/timePicker/timePicker.js +91 -85
- package/dist/headless/components/inputs/timePicker/timePicker.js.map +1 -1
- package/dist/headless/components/inputs/toggle/toggle.js +79 -60
- package/dist/headless/components/inputs/toggle/toggle.js.map +1 -1
- package/dist/headless/components/inputs/valueSlider/valueSlider.js +25 -24
- package/dist/headless/components/inputs/valueSlider/valueSlider.js.map +1 -1
- package/dist/headless/components/layout/appLayout/appLayout.js +27 -26
- package/dist/headless/components/layout/appLayout/appLayout.js.map +1 -1
- package/dist/headless/components/layout/divider/divider.js +18 -17
- package/dist/headless/components/layout/divider/divider.js.map +1 -1
- package/dist/headless/components/layout/floatingWindow/floatingWindow.js +145 -139
- package/dist/headless/components/layout/floatingWindow/floatingWindow.js.map +1 -1
- package/dist/headless/components/layout/grid/grid.js +48 -33
- package/dist/headless/components/layout/grid/grid.js.map +1 -1
- package/dist/headless/components/layout/page/page.js +15 -7
- package/dist/headless/components/layout/page/page.js.map +1 -1
- package/dist/headless/components/layout/pageHeader/pageHeader.js +20 -11
- package/dist/headless/components/layout/pageHeader/pageHeader.js.map +1 -1
- package/dist/headless/components/layout/sectionHeader/sectionHeader.js +36 -26
- package/dist/headless/components/layout/sectionHeader/sectionHeader.js.map +1 -1
- package/dist/headless/components/layout/sheet/sheet.js +80 -79
- package/dist/headless/components/layout/sheet/sheet.js.map +1 -1
- package/dist/headless/components/layout/stack/stack.js +29 -17
- package/dist/headless/components/layout/stack/stack.js.map +1 -1
- package/dist/headless/components/navigation/appBar/appBar.js +15 -14
- package/dist/headless/components/navigation/appBar/appBar.js.map +1 -1
- package/dist/headless/components/navigation/bottomBar/bottomBar.js +81 -77
- package/dist/headless/components/navigation/bottomBar/bottomBar.js.map +1 -1
- package/dist/headless/components/navigation/breadcrumbs/breadcrumbs.js +32 -30
- package/dist/headless/components/navigation/breadcrumbs/breadcrumbs.js.map +1 -1
- package/dist/headless/components/navigation/menu/menu.js.map +1 -1
- package/dist/headless/components/navigation/menu/menuContext.js.map +1 -1
- package/dist/headless/components/navigation/menu/menuFloating.js +42 -30
- package/dist/headless/components/navigation/menu/menuFloating.js.map +1 -1
- package/dist/headless/components/navigation/menu/menuItem.js +60 -48
- package/dist/headless/components/navigation/menu/menuItem.js.map +1 -1
- package/dist/headless/components/navigation/menu/menuList.js +30 -19
- package/dist/headless/components/navigation/menu/menuList.js.map +1 -1
- package/dist/headless/components/navigation/menu/menuSubmenu.js +53 -40
- package/dist/headless/components/navigation/menu/menuSubmenu.js.map +1 -1
- package/dist/headless/components/navigation/pagination/pagination.js +51 -49
- package/dist/headless/components/navigation/pagination/pagination.js.map +1 -1
- package/dist/headless/components/navigation/sidebar/sidebar.js +29 -28
- package/dist/headless/components/navigation/sidebar/sidebar.js.map +1 -1
- package/dist/headless/components/navigation/stepper/stepper.js +42 -33
- package/dist/headless/components/navigation/stepper/stepper.js.map +1 -1
- package/dist/headless/components/navigation/tabs/tab/tab.js +41 -39
- package/dist/headless/components/navigation/tabs/tab/tab.js.map +1 -1
- package/dist/headless/components/navigation/tabs/tabs.js +95 -98
- package/dist/headless/components/navigation/tabs/tabs.js.map +1 -1
- package/dist/headless/hooks/useDismissOnEscape.js +16 -0
- package/dist/headless/hooks/useDismissOnEscape.js.map +1 -0
- package/dist/headless/hooks/useFocusTrap.js +1 -0
- package/dist/headless/hooks/useFocusTrap.js.map +1 -1
- package/dist/headless/hooks/useHelperText.js +13 -0
- package/dist/headless/hooks/useHelperText.js.map +1 -0
- package/dist/headless/utils/controlProps.js +14 -0
- package/dist/headless/utils/controlProps.js.map +1 -0
- package/dist/headless/utils/overlayLayer.js +14 -7
- package/dist/headless/utils/overlayLayer.js.map +1 -1
- package/dist/headless/utils/ownClick.js +40 -0
- package/dist/headless/utils/ownClick.js.map +1 -0
- package/dist/headless/utils/readOnlyToggle.js +14 -0
- package/dist/headless/utils/readOnlyToggle.js.map +1 -0
- package/dist/hooks/useDismissOnEscape.d.ts +11 -0
- package/dist/hooks/useDismissOnEscape.js +16 -0
- package/dist/hooks/useDismissOnEscape.js.map +1 -0
- package/dist/hooks/useFocusTrap.d.ts +2 -0
- package/dist/hooks/useFocusTrap.js +1 -0
- package/dist/hooks/useFocusTrap.js.map +1 -1
- package/dist/hooks/useHelperText.d.ts +21 -0
- package/dist/hooks/useHelperText.js +13 -0
- package/dist/hooks/useHelperText.js.map +1 -0
- package/dist/index.cjs +2 -2
- package/dist/index.cjs.map +1 -1
- package/dist/utils/controlProps.d.ts +16 -0
- package/dist/utils/controlProps.js +14 -0
- package/dist/utils/controlProps.js.map +1 -0
- package/dist/utils/overlayLayer.d.ts +15 -3
- package/dist/utils/overlayLayer.js +14 -7
- package/dist/utils/overlayLayer.js.map +1 -1
- package/dist/utils/ownClick.d.ts +16 -0
- package/dist/utils/ownClick.js +40 -0
- package/dist/utils/ownClick.js.map +1 -0
- package/dist/utils/readOnlyToggle.d.ts +15 -0
- package/dist/utils/readOnlyToggle.js +14 -0
- package/dist/utils/readOnlyToggle.js.map +1 -0
- package/package.json +2 -2
|
@@ -1,17 +1,30 @@
|
|
|
1
|
-
import { jsxs as
|
|
1
|
+
import { jsxs as Q, jsx as C } from "react/jsx-runtime";
|
|
2
2
|
import '../../../assets/styles/less/components/chart/chart.entry.css';import '../../../assets/styles/less/tokens.entry.css';/* empty css */
|
|
3
3
|
/* empty css */
|
|
4
|
-
import
|
|
5
|
-
import
|
|
4
|
+
import U, { useRef as y, useState as q, useEffect as z } from "react";
|
|
5
|
+
import V from "clsx";
|
|
6
6
|
import { readChartPalette as B, samePalette as _, chartTheme as H } from "./chartTheme.js";
|
|
7
|
-
import { Skeleton as
|
|
8
|
-
const
|
|
7
|
+
import { Skeleton as X } from "../../feedBack/skeleton/skeleton.js";
|
|
8
|
+
const Y = (u) => typeof u == "number" ? `${u}px` : u, Z = () => import("echarts"), tt = (u) => {
|
|
9
9
|
try {
|
|
10
10
|
return JSON.stringify(u, (k, h) => typeof h == "function" ? String(h) : h);
|
|
11
11
|
} catch {
|
|
12
12
|
return null;
|
|
13
13
|
}
|
|
14
|
-
},
|
|
14
|
+
}, it = U.forwardRef(function({
|
|
15
|
+
className: k,
|
|
16
|
+
style: h,
|
|
17
|
+
label: J,
|
|
18
|
+
summary: x,
|
|
19
|
+
option: g,
|
|
20
|
+
height: W = 240,
|
|
21
|
+
loader: E,
|
|
22
|
+
renderer: F = "canvas",
|
|
23
|
+
onClick: N,
|
|
24
|
+
onReady: S,
|
|
25
|
+
"data-testid": $ = "chart",
|
|
26
|
+
...D
|
|
27
|
+
}, p) {
|
|
15
28
|
const A = y(null), w = y(null), [f, M] = q(null), [b, L] = q(!1), l = y({
|
|
16
29
|
module: null,
|
|
17
30
|
instance: null,
|
|
@@ -21,52 +34,52 @@ const X = (u) => typeof u == "number" ? `${u}px` : u, Y = () => import("echarts"
|
|
|
21
34
|
pending: !1
|
|
22
35
|
}), s = y({ option: g, palette: f, loader: E, renderer: F, onClick: N, onReady: S });
|
|
23
36
|
s.current = { option: g, palette: f, loader: E, renderer: F, onClick: N, onReady: S };
|
|
24
|
-
const
|
|
25
|
-
A.current =
|
|
37
|
+
const G = (t) => {
|
|
38
|
+
A.current = t, typeof p == "function" ? p(t) : p && (p.current = t);
|
|
26
39
|
}, R = () => {
|
|
27
|
-
const
|
|
28
|
-
return !!(
|
|
29
|
-
}, O = (
|
|
30
|
-
const
|
|
31
|
-
return
|
|
40
|
+
const t = w.current;
|
|
41
|
+
return !!(t && t.clientWidth > 0 && t.clientHeight > 0);
|
|
42
|
+
}, O = (t, n) => {
|
|
43
|
+
const e = t.init(w.current, H(n), { renderer: s.current.renderer });
|
|
44
|
+
return e.on("click", (a) => {
|
|
32
45
|
var c, o;
|
|
33
46
|
return (o = (c = s.current).onClick) == null ? void 0 : o.call(c, a);
|
|
34
|
-
}), l.current.themed = n, l.current.drawn = null,
|
|
47
|
+
}), l.current.themed = n, l.current.drawn = null, e;
|
|
35
48
|
}, P = () => {
|
|
36
|
-
const
|
|
37
|
-
if (!
|
|
49
|
+
const t = l.current, n = s.current.palette;
|
|
50
|
+
if (!t.instance || !n) return;
|
|
38
51
|
if (!R()) {
|
|
39
|
-
|
|
52
|
+
t.pending = !0;
|
|
40
53
|
return;
|
|
41
54
|
}
|
|
42
|
-
const
|
|
43
|
-
if (!(!
|
|
44
|
-
|
|
55
|
+
const e = s.current.option, a = typeof e == "function" ? e(n) : e, c = tt(a);
|
|
56
|
+
if (!(!t.pending && c !== null && c === t.drawn)) {
|
|
57
|
+
t.pending = !1;
|
|
45
58
|
try {
|
|
46
|
-
|
|
59
|
+
t.instance.setOption(a, { notMerge: !0 }), t.drawn = c;
|
|
47
60
|
} catch (o) {
|
|
48
|
-
|
|
61
|
+
t.drawn = null, console.error("[smwb] Chart: the option did not draw.", o);
|
|
49
62
|
}
|
|
50
63
|
}
|
|
51
|
-
},
|
|
64
|
+
}, I = (t) => {
|
|
52
65
|
const n = l.current;
|
|
53
|
-
if (!(!n.instance || !n.module || n.themed && _(n.themed,
|
|
66
|
+
if (!(!n.instance || !n.module || n.themed && _(n.themed, t)))
|
|
54
67
|
if (typeof n.instance.setTheme == "function") {
|
|
55
68
|
try {
|
|
56
|
-
n.instance.setTheme(H(
|
|
57
|
-
} catch (
|
|
58
|
-
console.error("[smwb] Chart: the theme did not apply.",
|
|
69
|
+
n.instance.setTheme(H(t));
|
|
70
|
+
} catch (e) {
|
|
71
|
+
console.error("[smwb] Chart: the theme did not apply.", e);
|
|
59
72
|
}
|
|
60
|
-
n.themed =
|
|
73
|
+
n.themed = t, n.drawn = null;
|
|
61
74
|
} else
|
|
62
|
-
n.instance.dispose(), n.instance = O(n.module,
|
|
75
|
+
n.instance.dispose(), n.instance = O(n.module, t);
|
|
63
76
|
};
|
|
64
77
|
return z(() => {
|
|
65
78
|
var j;
|
|
66
|
-
const
|
|
79
|
+
const t = A.current, n = w.current, e = l.current;
|
|
67
80
|
let a = !1;
|
|
68
81
|
const c = () => {
|
|
69
|
-
const r = B(
|
|
82
|
+
const r = B(t);
|
|
70
83
|
M((i) => i && _(i, r) ? i : r);
|
|
71
84
|
};
|
|
72
85
|
c();
|
|
@@ -78,56 +91,56 @@ const X = (u) => typeof u == "number" ? `${u}px` : u, Y = () => import("echarts"
|
|
|
78
91
|
const d = typeof window.matchMedia == "function" ? window.matchMedia("(prefers-color-scheme: dark)") : void 0;
|
|
79
92
|
d == null || d.addEventListener("change", c);
|
|
80
93
|
const T = () => {
|
|
81
|
-
if (a ||
|
|
82
|
-
const r = B(
|
|
83
|
-
M((i) => i && _(i, r) ? i : r),
|
|
84
|
-
},
|
|
94
|
+
if (a || e.instance || !e.module || !R()) return;
|
|
95
|
+
const r = B(t);
|
|
96
|
+
M((i) => i && _(i, r) ? i : r), e.instance = O(e.module, r), L(!0);
|
|
97
|
+
}, K = () => {
|
|
85
98
|
if (R()) {
|
|
86
|
-
if (!
|
|
99
|
+
if (!e.instance) {
|
|
87
100
|
T();
|
|
88
101
|
return;
|
|
89
102
|
}
|
|
90
103
|
try {
|
|
91
|
-
|
|
104
|
+
e.instance.resize();
|
|
92
105
|
} catch {
|
|
93
106
|
}
|
|
94
|
-
|
|
107
|
+
e.pending && P();
|
|
95
108
|
}
|
|
96
109
|
};
|
|
97
110
|
let v = 0;
|
|
98
111
|
const m = typeof ResizeObserver == "function" ? new ResizeObserver(() => {
|
|
99
|
-
cancelAnimationFrame(v), v = requestAnimationFrame(
|
|
112
|
+
cancelAnimationFrame(v), v = requestAnimationFrame(K);
|
|
100
113
|
}) : void 0;
|
|
101
|
-
return m == null || m.observe(n), ((j = s.current.loader) != null ? j :
|
|
114
|
+
return m == null || m.observe(n), ((j = s.current.loader) != null ? j : Z)().then(
|
|
102
115
|
(r) => {
|
|
103
|
-
|
|
116
|
+
e.module = r, T();
|
|
104
117
|
},
|
|
105
118
|
(r) => console.error("[smwb] Chart: ECharts did not load.", r)
|
|
106
119
|
), () => {
|
|
107
120
|
var r;
|
|
108
|
-
a = !0, o.disconnect(), d == null || d.removeEventListener("change", c), m == null || m.disconnect(), cancelAnimationFrame(v), (r =
|
|
121
|
+
a = !0, o.disconnect(), d == null || d.removeEventListener("change", c), m == null || m.disconnect(), cancelAnimationFrame(v), (r = e.instance) == null || r.dispose(), e.instance = null, e.announced = null, e.drawn = null, L(!1);
|
|
109
122
|
};
|
|
110
123
|
}, []), z(() => {
|
|
111
|
-
var n,
|
|
112
|
-
const
|
|
113
|
-
!b || !f || !
|
|
114
|
-
}, [b, f, g]), /* @__PURE__ */
|
|
124
|
+
var n, e;
|
|
125
|
+
const t = l.current;
|
|
126
|
+
!b || !f || !t.instance || (I(f), P(), t.instance && t.announced !== t.instance && (t.announced = t.instance, (e = (n = s.current).onReady) == null || e.call(n, t.instance)));
|
|
127
|
+
}, [b, f, g]), /* @__PURE__ */ Q(
|
|
115
128
|
"div",
|
|
116
129
|
{
|
|
117
|
-
"data-testid":
|
|
118
|
-
|
|
119
|
-
ref:
|
|
120
|
-
className:
|
|
121
|
-
style: { ...h, height:
|
|
130
|
+
"data-testid": $,
|
|
131
|
+
...D,
|
|
132
|
+
ref: G,
|
|
133
|
+
className: V("smwb-chart", k),
|
|
134
|
+
style: { ...h, height: Y(W) },
|
|
122
135
|
children: [
|
|
123
136
|
/* @__PURE__ */ C("div", { ref: w, className: "smwb-chart__canvas", role: "img", "aria-label": J }),
|
|
124
|
-
b ? null : /* @__PURE__ */ C(
|
|
137
|
+
b ? null : /* @__PURE__ */ C(X, { className: "smwb-chart__skeleton", variant: "rounded", width: "100%", height: "100%" }),
|
|
125
138
|
x ? /* @__PURE__ */ C("p", { className: "smwb-chart__summary", children: x }) : null
|
|
126
139
|
]
|
|
127
140
|
}
|
|
128
141
|
);
|
|
129
142
|
});
|
|
130
143
|
export {
|
|
131
|
-
|
|
144
|
+
it as Chart
|
|
132
145
|
};
|
|
133
146
|
//# sourceMappingURL=chart.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chart.js","sources":["../../../../src/components/dataDisplay/chart/chart.tsx"],"sourcesContent":["import React, { HTMLAttributes, useEffect, useRef, useState } from \"react\";\nimport cn from \"clsx\";\nimport { Skeleton } from \"../../feedBack/skeleton\";\nimport { type ChartOption, type ChartPalette, chartTheme, readChartPalette, samePalette } from \"./chartTheme\";\n\n/** What an ECharts event hands its handler: the item under the pointer. */\nexport interface ChartEventParams {\n componentType?: string;\n seriesType?: string;\n seriesIndex?: number;\n seriesName?: string;\n name?: string;\n dataIndex?: number;\n data?: unknown;\n value?: unknown;\n [key: string]: unknown;\n}\n\n/** The part of an ECharts instance the chart uses; `onReady` hands over the instance itself. */\nexport interface ChartInstance {\n setOption(option: ChartOption, opts?: { notMerge?: boolean }): void;\n resize(): void;\n on(eventName: string, handler: (params: ChartEventParams) => void): void;\n dispose(): void;\n /** ECharts 6 switches the theme in place; with ECharts 5 the chart is created anew. */\n setTheme?(theme: object): void;\n}\n\n/** What `loader` resolves to: `echarts`, or `echarts/core` with the charts you use registered. */\nexport interface ChartModule {\n init(dom: HTMLElement, theme?: object | string | null, opts?: { renderer?: \"canvas\" | \"svg\" }): ChartInstance;\n}\n\nexport interface ChartProps extends Omit<HTMLAttributes<HTMLDivElement>, \"onClick\"> {\n className?: string;\n /** What the chart shows: its accessible name. */\n label: string;\n /** The chart in words, for screen readers; it is there before the chart draws, and on the server. */\n summary?: string;\n /**\n * The ECharts option, or a function of the theme's palette that returns it.\n * It is applied whole whenever it or the theme changes; an equal option\n * passed again (an inline object on a re-render) does not redraw.\n */\n option: ChartOption | ((palette: ChartPalette) => ChartOption);\n /** The chart's height: a number of pixels or any CSS length; 240 by default. It fills the width. */\n height?: number | string;\n /**\n * Loads ECharts in the browser: `import(\"echarts\")` by default, the whole\n * library. For a smaller bundle pass `() => import(\"./my-echarts\")`, a module\n * that registers only the charts you use with `echarts/core`.\n */\n loader?: () => Promise<ChartModule>;\n /** How ECharts draws: \"canvas\" (default) or \"svg\". Read once, when the chart is created. */\n renderer?: \"canvas\" | \"svg\";\n /** A click on an item: a bar, a point, a node. */\n onClick?: (params: ChartEventParams) => void;\n /** The ECharts instance, once it has drawn — for other events and actions. Called again if a theme change re-creates it. */\n onReady?: (chart: ChartInstance) => void;\n}\n\ninterface ChartState {\n module: ChartModule | null;\n instance: ChartInstance | null;\n themed: ChartPalette | null;\n announced: ChartInstance | null;\n /** The option last drawn, serialised; null forces the next draw. */\n drawn: string | null;\n pending: boolean;\n}\n\nconst cssLength = (value: number | string): string => (typeof value === \"number\" ? `${value}px` : value);\n\nconst loadECharts = (): Promise<ChartModule> => import(\"echarts\") as unknown as Promise<ChartModule>;\n\n// Functions (formatters) count by their source, so a changed formatter redraws.\nconst serialise = (option: ChartOption): string | null => {\n try {\n return JSON.stringify(option, (_key, value: unknown) => (typeof value === \"function\" ? String(value) : value));\n } catch {\n return null;\n }\n};\n\n/**\n * An ECharts chart in the theme's palette. On the server, and until ECharts\n * loads in the browser, a skeleton of the same size stands in its place, so\n * the page does not jump; the chart follows theme switches and its box's size.\n */\nexport const Chart = React.forwardRef<HTMLDivElement, ChartProps>(function Chart(\n { className, style, label, summary, option, height = 240, loader, renderer = \"canvas\", onClick, onReady, ...rest },\n ref\n) {\n const rootRef = useRef<HTMLDivElement | null>(null);\n const canvasRef = useRef<HTMLDivElement>(null);\n const [palette, setPalette] = useState<ChartPalette | null>(null);\n const [ready, setReady] = useState(false);\n const state = useRef<ChartState>({\n module: null,\n instance: null,\n themed: null,\n announced: null,\n drawn: null,\n pending: false,\n });\n const latest = useRef({ option, palette, loader, renderer, onClick, onReady });\n latest.current = { option, palette, loader, renderer, onClick, onReady };\n\n const setRoot = (element: HTMLDivElement | null): void => {\n rootRef.current = element;\n if (typeof ref === \"function\") ref(element);\n else if (ref) ref.current = element;\n };\n\n const hasSize = (): boolean => {\n const canvas = canvasRef.current;\n return Boolean(canvas && canvas.clientWidth > 0 && canvas.clientHeight > 0);\n };\n\n const create = (loaded: ChartModule, colours: ChartPalette): ChartInstance => {\n const created = loaded.init(canvasRef.current!, chartTheme(colours), { renderer: latest.current.renderer });\n created.on(\"click\", (params) => latest.current.onClick?.(params));\n state.current.themed = colours;\n state.current.drawn = null;\n return created;\n };\n\n // Not at zero size (a hidden tab, a collapsed panel): there the graph of\n // ECharts 6.1 inverts a degenerate matrix and throws. The option waits for\n // the chart to get a size, and a failed redraw is caught up on the next one.\n const draw = (): void => {\n const current = state.current;\n const colours = latest.current.palette;\n if (!current.instance || !colours) return;\n if (!hasSize()) {\n current.pending = true;\n return;\n }\n const source = latest.current.option;\n const next = typeof source === \"function\" ? source(colours) : source;\n const key = serialise(next);\n if (!current.pending && key !== null && key === current.drawn) return;\n current.pending = false;\n try {\n current.instance.setOption(next, { notMerge: true });\n current.drawn = key;\n } catch (error) {\n current.drawn = null;\n console.error(\"[smwb] Chart: the option did not draw.\", error);\n }\n };\n\n const retheme = (colours: ChartPalette): void => {\n const current = state.current;\n if (!current.instance || !current.module || (current.themed && samePalette(current.themed, colours))) return;\n if (typeof current.instance.setTheme === \"function\") {\n try {\n current.instance.setTheme(chartTheme(colours));\n } catch (error) {\n console.error(\"[smwb] Chart: the theme did not apply.\", error);\n }\n current.themed = colours;\n current.drawn = null;\n } else {\n current.instance.dispose();\n current.instance = create(current.module, colours);\n }\n };\n\n useEffect(() => {\n const root = rootRef.current!;\n const canvas = canvasRef.current!;\n const current = state.current;\n let disposed = false;\n\n const refresh = (): void => {\n const next = readChartPalette(root);\n setPalette((previous) => (previous && samePalette(previous, next) ? previous : next));\n };\n refresh();\n\n // The theme switches by an attribute on <html> (data-theme, a class) or\n // with the system setting.\n const themeObserver = new MutationObserver(() => requestAnimationFrame(refresh));\n themeObserver.observe(document.documentElement, {\n attributes: true,\n attributeFilter: [\"data-theme\", \"class\", \"style\"],\n });\n const media =\n typeof window.matchMedia === \"function\" ? window.matchMedia(\"(prefers-color-scheme: dark)\") : undefined;\n media?.addEventListener(\"change\", refresh);\n\n // The palette is read again here, not taken from mount: a theme set after\n // the chart mounted (a parent's effect runs after this one) would otherwise\n // show for a frame in the old colours.\n const start = (): void => {\n if (disposed || current.instance || !current.module || !hasSize()) return;\n const colours = readChartPalette(root);\n setPalette((previous) => (previous && samePalette(previous, colours) ? previous : colours));\n current.instance = create(current.module, colours);\n setReady(true);\n };\n\n const onResize = (): void => {\n if (!hasSize()) return;\n if (!current.instance) {\n start();\n return;\n }\n try {\n current.instance.resize();\n } catch {\n // It catches up on the next resize.\n }\n if (current.pending) draw();\n };\n // In the next frame, not in the observer's callback: drawing there resizes\n // what it observes, and the browser reports a ResizeObserver loop.\n let frame = 0;\n const resizeObserver =\n typeof ResizeObserver === \"function\"\n ? new ResizeObserver(() => {\n cancelAnimationFrame(frame);\n frame = requestAnimationFrame(onResize);\n })\n : undefined;\n resizeObserver?.observe(canvas);\n\n (latest.current.loader ?? loadECharts)().then(\n (loaded) => {\n current.module = loaded;\n start();\n },\n (error: unknown) => console.error(\"[smwb] Chart: ECharts did not load.\", error)\n );\n\n return () => {\n disposed = true;\n themeObserver.disconnect();\n media?.removeEventListener(\"change\", refresh);\n resizeObserver?.disconnect();\n cancelAnimationFrame(frame);\n current.instance?.dispose();\n current.instance = null;\n current.announced = null;\n current.drawn = null;\n // Effects that run again with the state kept (fast refresh, a hidden\n // <Activity>) create a new chart, and it must draw.\n setReady(false);\n };\n // The chart is set up once; later props are read through `latest`.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n const current = state.current;\n if (!ready || !palette || !current.instance) return;\n retheme(palette);\n draw();\n if (current.instance && current.announced !== current.instance) {\n current.announced = current.instance;\n latest.current.onReady?.(current.instance);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [ready, palette, option]);\n\n return (\n <div\n data-testid=\"chart\"\n {...rest}\n ref={setRoot}\n className={cn(\"smwb-chart\", className)}\n style={{ ...style, height: cssLength(height) }}\n >\n <div ref={canvasRef} className=\"smwb-chart__canvas\" role=\"img\" aria-label={label} />\n {!ready ? <Skeleton className=\"smwb-chart__skeleton\" variant=\"rounded\" width=\"100%\" height=\"100%\" /> : null}\n {summary ? <p className=\"smwb-chart__summary\">{summary}</p> : null}\n </div>\n );\n});\n\nexport default Chart;\n"],"names":["cssLength","value","loadECharts","serialise","option","_key","Chart","React","className","style","label","summary","height","loader","renderer","onClick","onReady","rest","ref","rootRef","useRef","canvasRef","palette","setPalette","useState","ready","setReady","state","latest","setRoot","element","hasSize","canvas","create","loaded","colours","created","chartTheme","params","_b","_a","draw","current","source","next","key","error","retheme","samePalette","useEffect","root","disposed","refresh","readChartPalette","previous","themeObserver","media","start","onResize","frame","resizeObserver","jsxs","cn","jsx","Skeleton"],"mappings":";;;;;;;AAyEA,MAAMA,IAAY,CAACC,MAAoC,OAAOA,KAAU,WAAW,GAAGA,CAAK,OAAOA,GAE5FC,IAAc,MAA4B,OAAO,SAAS,GAG1DC,IAAY,CAACC,MAAuC;AACxD,MAAI;AACF,WAAO,KAAK,UAAUA,GAAQ,CAACC,GAAMJ,MAAoB,OAAOA,KAAU,aAAa,OAAOA,CAAK,IAAIA,CAAM;AAAA,EAC/G,QAAQ;AACN,WAAO;AAAA,EACT;AACF,GAOaK,KAAQC,EAAM,WAAuC,SAChE,EAAE,WAAAC,GAAW,OAAAC,GAAO,OAAAC,GAAO,SAAAC,GAAS,QAAAP,GAAQ,QAAAQ,IAAS,KAAK,QAAAC,GAAQ,UAAAC,IAAW,UAAU,SAAAC,GAAS,SAAAC,GAAS,GAAGC,EAAA,GAC5GC,GACA;AACA,QAAMC,IAAUC,EAA8B,IAAI,GAC5CC,IAAYD,EAAuB,IAAI,GACvC,CAACE,GAASC,CAAU,IAAIC,EAA8B,IAAI,GAC1D,CAACC,GAAOC,CAAQ,IAAIF,EAAS,EAAK,GAClCG,IAAQP,EAAmB;AAAA,IAC/B,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,OAAO;AAAA,IACP,SAAS;AAAA,EAAA,CACV,GACKQ,IAASR,EAAO,EAAE,QAAAhB,GAAQ,SAAAkB,GAAS,QAAAT,GAAQ,UAAAC,GAAU,SAAAC,GAAS,SAAAC,GAAS;AAC7E,EAAAY,EAAO,UAAU,EAAE,QAAAxB,GAAQ,SAAAkB,GAAS,QAAAT,GAAQ,UAAAC,GAAU,SAAAC,GAAS,SAAAC,EAAA;AAE/D,QAAMa,IAAU,CAACC,MAAyC;AACxD,IAAAX,EAAQ,UAAUW,GACd,OAAOZ,KAAQ,aAAYA,EAAIY,CAAO,IACjCZ,QAAS,UAAUY;AAAA,EAC9B,GAEMC,IAAU,MAAe;AAC7B,UAAMC,IAASX,EAAU;AACzB,WAAO,GAAQW,KAAUA,EAAO,cAAc,KAAKA,EAAO,eAAe;AAAA,EAC3E,GAEMC,IAAS,CAACC,GAAqBC,MAAyC;AAC5E,UAAMC,IAAUF,EAAO,KAAKb,EAAU,SAAUgB,EAAWF,CAAO,GAAG,EAAE,UAAUP,EAAO,QAAQ,UAAU;AAC1G,WAAAQ,EAAQ,GAAG,SAAS,CAACE,MAAA;;AAAW,cAAAC,KAAAC,IAAAZ,EAAO,SAAQ,YAAf,gBAAAW,EAAA,KAAAC,GAAyBF;AAAA,KAAO,GAChEX,EAAM,QAAQ,SAASQ,GACvBR,EAAM,QAAQ,QAAQ,MACfS;AAAA,EACT,GAKMK,IAAO,MAAY;AACvB,UAAMC,IAAUf,EAAM,SAChBQ,IAAUP,EAAO,QAAQ;AAC/B,QAAI,CAACc,EAAQ,YAAY,CAACP,EAAS;AACnC,QAAI,CAACJ,KAAW;AACd,MAAAW,EAAQ,UAAU;AAClB;AAAA,IACF;AACA,UAAMC,IAASf,EAAO,QAAQ,QACxBgB,IAAO,OAAOD,KAAW,aAAaA,EAAOR,CAAO,IAAIQ,GACxDE,IAAM1C,EAAUyC,CAAI;AAC1B,QAAI,GAACF,EAAQ,WAAWG,MAAQ,QAAQA,MAAQH,EAAQ,QACxD;AAAA,MAAAA,EAAQ,UAAU;AAClB,UAAI;AACF,QAAAA,EAAQ,SAAS,UAAUE,GAAM,EAAE,UAAU,IAAM,GACnDF,EAAQ,QAAQG;AAAA,MAClB,SAASC,GAAO;AACd,QAAAJ,EAAQ,QAAQ,MAChB,QAAQ,MAAM,0CAA0CI,CAAK;AAAA,MAC/D;AAAA;AAAA,EACF,GAEMC,IAAU,CAACZ,MAAgC;AAC/C,UAAMO,IAAUf,EAAM;AACtB,QAAI,GAACe,EAAQ,YAAY,CAACA,EAAQ,UAAWA,EAAQ,UAAUM,EAAYN,EAAQ,QAAQP,CAAO;AAClG,UAAI,OAAOO,EAAQ,SAAS,YAAa,YAAY;AACnD,YAAI;AACF,UAAAA,EAAQ,SAAS,SAASL,EAAWF,CAAO,CAAC;AAAA,QAC/C,SAASW,GAAO;AACd,kBAAQ,MAAM,0CAA0CA,CAAK;AAAA,QAC/D;AACA,QAAAJ,EAAQ,SAASP,GACjBO,EAAQ,QAAQ;AAAA,MAClB;AACE,QAAAA,EAAQ,SAAS,QAAA,GACjBA,EAAQ,WAAWT,EAAOS,EAAQ,QAAQP,CAAO;AAAA,EAErD;AAEA,SAAAc,EAAU,MAAM;;AACd,UAAMC,IAAO/B,EAAQ,SACfa,IAASX,EAAU,SACnBqB,IAAUf,EAAM;AACtB,QAAIwB,IAAW;AAEf,UAAMC,IAAU,MAAY;AAC1B,YAAMR,IAAOS,EAAiBH,CAAI;AAClC,MAAA3B,EAAW,CAAC+B,MAAcA,KAAYN,EAAYM,GAAUV,CAAI,IAAIU,IAAWV,CAAK;AAAA,IACtF;AACA,IAAAQ,EAAA;AAIA,UAAMG,IAAgB,IAAI,iBAAiB,MAAM,sBAAsBH,CAAO,CAAC;AAC/E,IAAAG,EAAc,QAAQ,SAAS,iBAAiB;AAAA,MAC9C,YAAY;AAAA,MACZ,iBAAiB,CAAC,cAAc,SAAS,OAAO;AAAA,IAAA,CACjD;AACD,UAAMC,IACJ,OAAO,OAAO,cAAe,aAAa,OAAO,WAAW,8BAA8B,IAAI;AAChG,IAAAA,KAAA,QAAAA,EAAO,iBAAiB,UAAUJ;AAKlC,UAAMK,IAAQ,MAAY;AACxB,UAAIN,KAAYT,EAAQ,YAAY,CAACA,EAAQ,UAAU,CAACX,IAAW;AACnE,YAAMI,IAAUkB,EAAiBH,CAAI;AACrC,MAAA3B,EAAW,CAAC+B,MAAcA,KAAYN,EAAYM,GAAUnB,CAAO,IAAImB,IAAWnB,CAAQ,GAC1FO,EAAQ,WAAWT,EAAOS,EAAQ,QAAQP,CAAO,GACjDT,EAAS,EAAI;AAAA,IACf,GAEMgC,IAAW,MAAY;AAC3B,UAAK3B,KACL;AAAA,YAAI,CAACW,EAAQ,UAAU;AACrB,UAAAe,EAAA;AACA;AAAA,QACF;AACA,YAAI;AACF,UAAAf,EAAQ,SAAS,OAAA;AAAA,QACnB,QAAQ;AAAA,QAER;AACA,QAAIA,EAAQ,WAASD,EAAA;AAAA;AAAA,IACvB;AAGA,QAAIkB,IAAQ;AACZ,UAAMC,IACJ,OAAO,kBAAmB,aACtB,IAAI,eAAe,MAAM;AACvB,2BAAqBD,CAAK,GAC1BA,IAAQ,sBAAsBD,CAAQ;AAAA,IACxC,CAAC,IACD;AACN,WAAAE,KAAA,QAAAA,EAAgB,QAAQ5B,MAEvBQ,IAAAZ,EAAO,QAAQ,WAAf,OAAAY,IAAyBtC,GAAA,EAAe;AAAA,MACvC,CAACgC,MAAW;AACV,QAAAQ,EAAQ,SAASR,GACjBuB,EAAA;AAAA,MACF;AAAA,MACA,CAACX,MAAmB,QAAQ,MAAM,uCAAuCA,CAAK;AAAA,IAAA,GAGzE,MAAM;;AACX,MAAAK,IAAW,IACXI,EAAc,WAAA,GACdC,KAAA,QAAAA,EAAO,oBAAoB,UAAUJ,IACrCQ,KAAA,QAAAA,EAAgB,cAChB,qBAAqBD,CAAK,IAC1BnB,IAAAE,EAAQ,aAAR,QAAAF,EAAkB,WAClBE,EAAQ,WAAW,MACnBA,EAAQ,YAAY,MACpBA,EAAQ,QAAQ,MAGhBhB,EAAS,EAAK;AAAA,IAChB;AAAA,EAGF,GAAG,CAAA,CAAE,GAELuB,EAAU,MAAM;;AACd,UAAMP,IAAUf,EAAM;AACtB,IAAI,CAACF,KAAS,CAACH,KAAW,CAACoB,EAAQ,aACnCK,EAAQzB,CAAO,GACfmB,EAAA,GACIC,EAAQ,YAAYA,EAAQ,cAAcA,EAAQ,aACpDA,EAAQ,YAAYA,EAAQ,WAC5BH,KAAAC,IAAAZ,EAAO,SAAQ,YAAf,QAAAW,EAAA,KAAAC,GAAyBE,EAAQ;AAAA,EAGrC,GAAG,CAACjB,GAAOH,GAASlB,CAAM,CAAC,GAGzB,gBAAAyD;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,eAAY;AAAA,MACX,GAAG5C;AAAA,MACJ,KAAKY;AAAA,MACL,WAAWiC,EAAG,cAActD,CAAS;AAAA,MACrC,OAAO,EAAE,GAAGC,GAAO,QAAQT,EAAUY,CAAM,EAAA;AAAA,MAE3C,UAAA;AAAA,QAAA,gBAAAmD,EAAC,OAAA,EAAI,KAAK1C,GAAW,WAAU,sBAAqB,MAAK,OAAM,cAAYX,EAAA,CAAO;AAAA,QAChFe,IAAqG,OAA7F,gBAAAsC,EAACC,GAAA,EAAS,WAAU,wBAAuB,SAAQ,WAAU,OAAM,QAAO,QAAO,OAAA,CAAO;AAAA,QACjGrD,IAAU,gBAAAoD,EAAC,KAAA,EAAE,WAAU,uBAAuB,aAAQ,IAAO;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGpE,CAAC;"}
|
|
1
|
+
{"version":3,"file":"chart.js","sources":["../../../../src/components/dataDisplay/chart/chart.tsx"],"sourcesContent":["import React, { HTMLAttributes, useEffect, useRef, useState } from \"react\";\nimport cn from \"clsx\";\nimport { Skeleton } from \"../../feedBack/skeleton\";\nimport { type ChartOption, type ChartPalette, chartTheme, readChartPalette, samePalette } from \"./chartTheme\";\n\n/** What an ECharts event hands its handler: the item under the pointer. */\nexport interface ChartEventParams {\n componentType?: string;\n seriesType?: string;\n seriesIndex?: number;\n seriesName?: string;\n name?: string;\n dataIndex?: number;\n data?: unknown;\n value?: unknown;\n [key: string]: unknown;\n}\n\n/** The part of an ECharts instance the chart uses; `onReady` hands over the instance itself. */\nexport interface ChartInstance {\n setOption(option: ChartOption, opts?: { notMerge?: boolean }): void;\n resize(): void;\n on(eventName: string, handler: (params: ChartEventParams) => void): void;\n dispose(): void;\n /** ECharts 6 switches the theme in place; with ECharts 5 the chart is created anew. */\n setTheme?(theme: object): void;\n}\n\n/** What `loader` resolves to: `echarts`, or `echarts/core` with the charts you use registered. */\nexport interface ChartModule {\n init(dom: HTMLElement, theme?: object | string | null, opts?: { renderer?: \"canvas\" | \"svg\" }): ChartInstance;\n}\n\nexport interface ChartProps extends Omit<HTMLAttributes<HTMLDivElement>, \"onClick\"> {\n className?: string;\n /** What the chart shows: its accessible name. */\n label: string;\n /** The chart in words, for screen readers; it is there before the chart draws, and on the server. */\n summary?: string;\n /**\n * The ECharts option, or a function of the theme's palette that returns it.\n * It is applied whole whenever it or the theme changes; an equal option\n * passed again (an inline object on a re-render) does not redraw.\n */\n option: ChartOption | ((palette: ChartPalette) => ChartOption);\n /** The chart's height: a number of pixels or any CSS length; 240 by default. It fills the width. */\n height?: number | string;\n /**\n * Loads ECharts in the browser: `import(\"echarts\")` by default, the whole\n * library. For a smaller bundle pass `() => import(\"./my-echarts\")`, a module\n * that registers only the charts you use with `echarts/core`.\n */\n loader?: () => Promise<ChartModule>;\n /** How ECharts draws: \"canvas\" (default) or \"svg\". Read once, when the chart is created. */\n renderer?: \"canvas\" | \"svg\";\n /** A click on an item: a bar, a point, a node. */\n onClick?: (params: ChartEventParams) => void;\n /** The ECharts instance, once it has drawn — for other events and actions. Called again if a theme change re-creates it. */\n onReady?: (chart: ChartInstance) => void;\n /** Test id of the root `<div>`; `chart` unless given. */\n \"data-testid\"?: string;\n}\n\ninterface ChartState {\n module: ChartModule | null;\n instance: ChartInstance | null;\n themed: ChartPalette | null;\n announced: ChartInstance | null;\n /** The option last drawn, serialised; null forces the next draw. */\n drawn: string | null;\n pending: boolean;\n}\n\nconst cssLength = (value: number | string): string => (typeof value === \"number\" ? `${value}px` : value);\n\nconst loadECharts = (): Promise<ChartModule> => import(\"echarts\") as unknown as Promise<ChartModule>;\n\n// Functions (formatters) count by their source, so a changed formatter redraws.\nconst serialise = (option: ChartOption): string | null => {\n try {\n return JSON.stringify(option, (_key, value: unknown) => (typeof value === \"function\" ? String(value) : value));\n } catch {\n return null;\n }\n};\n\n/**\n * An ECharts chart in the theme's palette. On the server, and until ECharts\n * loads in the browser, a skeleton of the same size stands in its place, so\n * the page does not jump; the chart follows theme switches and its box's size.\n */\nexport const Chart = React.forwardRef<HTMLDivElement, ChartProps>(function Chart(\n {\n className,\n style,\n label,\n summary,\n option,\n height = 240,\n loader,\n renderer = \"canvas\",\n onClick,\n onReady,\n \"data-testid\": dataTestId = \"chart\",\n ...rest\n },\n ref\n) {\n const rootRef = useRef<HTMLDivElement | null>(null);\n const canvasRef = useRef<HTMLDivElement>(null);\n const [palette, setPalette] = useState<ChartPalette | null>(null);\n const [ready, setReady] = useState(false);\n const state = useRef<ChartState>({\n module: null,\n instance: null,\n themed: null,\n announced: null,\n drawn: null,\n pending: false,\n });\n const latest = useRef({ option, palette, loader, renderer, onClick, onReady });\n latest.current = { option, palette, loader, renderer, onClick, onReady };\n\n const setRoot = (element: HTMLDivElement | null): void => {\n rootRef.current = element;\n if (typeof ref === \"function\") ref(element);\n else if (ref) ref.current = element;\n };\n\n const hasSize = (): boolean => {\n const canvas = canvasRef.current;\n return Boolean(canvas && canvas.clientWidth > 0 && canvas.clientHeight > 0);\n };\n\n const create = (loaded: ChartModule, colours: ChartPalette): ChartInstance => {\n const created = loaded.init(canvasRef.current!, chartTheme(colours), { renderer: latest.current.renderer });\n created.on(\"click\", (params) => latest.current.onClick?.(params));\n state.current.themed = colours;\n state.current.drawn = null;\n return created;\n };\n\n // Not at zero size (a hidden tab, a collapsed panel): there the graph of\n // ECharts 6.1 inverts a degenerate matrix and throws. The option waits for\n // the chart to get a size, and a failed redraw is caught up on the next one.\n const draw = (): void => {\n const current = state.current;\n const colours = latest.current.palette;\n if (!current.instance || !colours) return;\n if (!hasSize()) {\n current.pending = true;\n return;\n }\n const source = latest.current.option;\n const next = typeof source === \"function\" ? source(colours) : source;\n const key = serialise(next);\n if (!current.pending && key !== null && key === current.drawn) return;\n current.pending = false;\n try {\n current.instance.setOption(next, { notMerge: true });\n current.drawn = key;\n } catch (error) {\n current.drawn = null;\n console.error(\"[smwb] Chart: the option did not draw.\", error);\n }\n };\n\n const retheme = (colours: ChartPalette): void => {\n const current = state.current;\n if (!current.instance || !current.module || (current.themed && samePalette(current.themed, colours))) return;\n if (typeof current.instance.setTheme === \"function\") {\n try {\n current.instance.setTheme(chartTheme(colours));\n } catch (error) {\n console.error(\"[smwb] Chart: the theme did not apply.\", error);\n }\n current.themed = colours;\n current.drawn = null;\n } else {\n current.instance.dispose();\n current.instance = create(current.module, colours);\n }\n };\n\n useEffect(() => {\n const root = rootRef.current!;\n const canvas = canvasRef.current!;\n const current = state.current;\n let disposed = false;\n\n const refresh = (): void => {\n const next = readChartPalette(root);\n setPalette((previous) => (previous && samePalette(previous, next) ? previous : next));\n };\n refresh();\n\n // The theme switches by an attribute on <html> (data-theme, a class) or\n // with the system setting.\n const themeObserver = new MutationObserver(() => requestAnimationFrame(refresh));\n themeObserver.observe(document.documentElement, {\n attributes: true,\n attributeFilter: [\"data-theme\", \"class\", \"style\"],\n });\n const media =\n typeof window.matchMedia === \"function\" ? window.matchMedia(\"(prefers-color-scheme: dark)\") : undefined;\n media?.addEventListener(\"change\", refresh);\n\n // The palette is read again here, not taken from mount: a theme set after\n // the chart mounted (a parent's effect runs after this one) would otherwise\n // show for a frame in the old colours.\n const start = (): void => {\n if (disposed || current.instance || !current.module || !hasSize()) return;\n const colours = readChartPalette(root);\n setPalette((previous) => (previous && samePalette(previous, colours) ? previous : colours));\n current.instance = create(current.module, colours);\n setReady(true);\n };\n\n const onResize = (): void => {\n if (!hasSize()) return;\n if (!current.instance) {\n start();\n return;\n }\n try {\n current.instance.resize();\n } catch {\n // It catches up on the next resize.\n }\n if (current.pending) draw();\n };\n // In the next frame, not in the observer's callback: drawing there resizes\n // what it observes, and the browser reports a ResizeObserver loop.\n let frame = 0;\n const resizeObserver =\n typeof ResizeObserver === \"function\"\n ? new ResizeObserver(() => {\n cancelAnimationFrame(frame);\n frame = requestAnimationFrame(onResize);\n })\n : undefined;\n resizeObserver?.observe(canvas);\n\n (latest.current.loader ?? loadECharts)().then(\n (loaded) => {\n current.module = loaded;\n start();\n },\n (error: unknown) => console.error(\"[smwb] Chart: ECharts did not load.\", error)\n );\n\n return () => {\n disposed = true;\n themeObserver.disconnect();\n media?.removeEventListener(\"change\", refresh);\n resizeObserver?.disconnect();\n cancelAnimationFrame(frame);\n current.instance?.dispose();\n current.instance = null;\n current.announced = null;\n current.drawn = null;\n // Effects that run again with the state kept (fast refresh, a hidden\n // <Activity>) create a new chart, and it must draw.\n setReady(false);\n };\n // The chart is set up once; later props are read through `latest`.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n const current = state.current;\n if (!ready || !palette || !current.instance) return;\n retheme(palette);\n draw();\n if (current.instance && current.announced !== current.instance) {\n current.announced = current.instance;\n latest.current.onReady?.(current.instance);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [ready, palette, option]);\n\n return (\n <div\n data-testid={dataTestId}\n {...rest}\n ref={setRoot}\n className={cn(\"smwb-chart\", className)}\n style={{ ...style, height: cssLength(height) }}\n >\n <div ref={canvasRef} className=\"smwb-chart__canvas\" role=\"img\" aria-label={label} />\n {!ready ? <Skeleton className=\"smwb-chart__skeleton\" variant=\"rounded\" width=\"100%\" height=\"100%\" /> : null}\n {summary ? <p className=\"smwb-chart__summary\">{summary}</p> : null}\n </div>\n );\n});\n\nexport default Chart;\n"],"names":["cssLength","value","loadECharts","serialise","option","_key","Chart","React","className","style","label","summary","height","loader","renderer","onClick","onReady","dataTestId","rest","ref","rootRef","useRef","canvasRef","palette","setPalette","useState","ready","setReady","state","latest","setRoot","element","hasSize","canvas","create","loaded","colours","created","chartTheme","params","_b","_a","draw","current","source","next","key","error","retheme","samePalette","useEffect","root","disposed","refresh","readChartPalette","previous","themeObserver","media","start","onResize","frame","resizeObserver","jsxs","cn","jsx","Skeleton"],"mappings":"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"}
|
|
@@ -4,5 +4,5 @@ export interface ChatIconButtonProps extends React.ButtonHTMLAttributes<HTMLButt
|
|
|
4
4
|
edge?: "start" | "end";
|
|
5
5
|
color?: "default" | "primary";
|
|
6
6
|
}
|
|
7
|
-
export declare function ChatIconButton({ className, children, disabled, edge, color, onMouseDown: onMouseDownProp, ...rest }: ChatIconButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export declare function ChatIconButton({ className, children, disabled, edge, color, onMouseDown: onMouseDownProp, onPointerDown: onPointerDownProp, type, ...rest }: ChatIconButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
8
8
|
export default ChatIconButton;
|
|
@@ -1,47 +1,51 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import { Ripple as
|
|
5
|
-
function
|
|
1
|
+
import { jsxs as h, jsx as R } from "react/jsx-runtime";
|
|
2
|
+
import p from "react";
|
|
3
|
+
import _ from "clsx";
|
|
4
|
+
import { Ripple as x } from "../../base/ripple/ripple.js";
|
|
5
|
+
function w({
|
|
6
6
|
className: i,
|
|
7
|
-
children:
|
|
7
|
+
children: r,
|
|
8
8
|
disabled: t,
|
|
9
|
-
edge:
|
|
10
|
-
color:
|
|
9
|
+
edge: a,
|
|
10
|
+
color: s = "default",
|
|
11
11
|
onMouseDown: n,
|
|
12
|
-
|
|
12
|
+
// The button sets this on its root too; its own handler calls the caller's first.
|
|
13
|
+
onPointerDown: m,
|
|
14
|
+
// A default: the caller's type wins.
|
|
15
|
+
type: f = "button",
|
|
16
|
+
...b
|
|
13
17
|
}) {
|
|
14
|
-
const
|
|
18
|
+
const u = p.useRef(null), l = (c) => {
|
|
15
19
|
n == null || n(c);
|
|
16
|
-
},
|
|
17
|
-
var
|
|
18
|
-
t || (
|
|
20
|
+
}, o = (c) => {
|
|
21
|
+
var e;
|
|
22
|
+
m == null || m(c), t || (e = u.current) == null || e.onRipple(c);
|
|
19
23
|
};
|
|
20
|
-
return /* @__PURE__ */
|
|
24
|
+
return /* @__PURE__ */ h(
|
|
21
25
|
"button",
|
|
22
26
|
{
|
|
23
|
-
type:
|
|
24
|
-
className:
|
|
27
|
+
type: f,
|
|
28
|
+
className: _(
|
|
25
29
|
"smwb-chat-icon-button",
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
30
|
+
a === "start" && "smwb-chat-icon-button_edge-start",
|
|
31
|
+
a === "end" && "smwb-chat-icon-button_edge-end",
|
|
32
|
+
s === "primary" && "smwb-chat-icon-button_primary",
|
|
29
33
|
t && "smwb-chat-icon-button_disabled",
|
|
30
34
|
i
|
|
31
35
|
),
|
|
32
36
|
disabled: t,
|
|
33
|
-
onMouseDown:
|
|
34
|
-
onPointerDown:
|
|
35
|
-
...
|
|
37
|
+
onMouseDown: l,
|
|
38
|
+
onPointerDown: o,
|
|
39
|
+
...b,
|
|
36
40
|
children: [
|
|
37
|
-
|
|
38
|
-
t ? null : /* @__PURE__ */
|
|
41
|
+
r,
|
|
42
|
+
t ? null : /* @__PURE__ */ R(x, { actionRef: u, center: !0 })
|
|
39
43
|
]
|
|
40
44
|
}
|
|
41
45
|
);
|
|
42
46
|
}
|
|
43
47
|
export {
|
|
44
|
-
|
|
45
|
-
|
|
48
|
+
w as ChatIconButton,
|
|
49
|
+
w as default
|
|
46
50
|
};
|
|
47
51
|
//# sourceMappingURL=chatIconButton.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chatIconButton.js","sources":["../../../../src/components/dataDisplay/chat/chatIconButton.tsx"],"sourcesContent":["import React from \"react\";\nimport cn from \"clsx\";\nimport { Ripple, RippleActionsRef } from \"../../base/ripple/ripple\";\n\nexport interface ChatIconButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n className?: string;\n edge?: \"start\" | \"end\";\n color?: \"default\" | \"primary\";\n}\n\nexport function ChatIconButton({\n className,\n children,\n disabled,\n edge,\n color = \"default\",\n onMouseDown: onMouseDownProp,\n ...rest\n}: ChatIconButtonProps) {\n const rippleRef = React.useRef<RippleActionsRef>(null);\n\n const onMouseDown = (event: React.MouseEvent<HTMLButtonElement>) => {\n onMouseDownProp?.(event);\n };\n\n const onPointerDown = (event: React.PointerEvent<HTMLButtonElement>) => {\n if (!disabled) {\n rippleRef.current?.onRipple(event);\n }\n };\n\n return (\n <button\n type
|
|
1
|
+
{"version":3,"file":"chatIconButton.js","sources":["../../../../src/components/dataDisplay/chat/chatIconButton.tsx"],"sourcesContent":["import React from \"react\";\nimport cn from \"clsx\";\nimport { Ripple, RippleActionsRef } from \"../../base/ripple/ripple\";\n\nexport interface ChatIconButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n className?: string;\n edge?: \"start\" | \"end\";\n color?: \"default\" | \"primary\";\n}\n\nexport function ChatIconButton({\n className,\n children,\n disabled,\n edge,\n color = \"default\",\n onMouseDown: onMouseDownProp,\n // The button sets this on its root too; its own handler calls the caller's first.\n onPointerDown: onPointerDownProp,\n // A default: the caller's type wins.\n type = \"button\",\n ...rest\n}: ChatIconButtonProps) {\n const rippleRef = React.useRef<RippleActionsRef>(null);\n\n const onMouseDown = (event: React.MouseEvent<HTMLButtonElement>) => {\n onMouseDownProp?.(event);\n };\n\n const onPointerDown = (event: React.PointerEvent<HTMLButtonElement>) => {\n onPointerDownProp?.(event);\n if (!disabled) {\n rippleRef.current?.onRipple(event);\n }\n };\n\n return (\n <button\n type={type}\n className={cn(\n \"smwb-chat-icon-button\",\n edge === \"start\" && \"smwb-chat-icon-button_edge-start\",\n edge === \"end\" && \"smwb-chat-icon-button_edge-end\",\n color === \"primary\" && \"smwb-chat-icon-button_primary\",\n disabled && \"smwb-chat-icon-button_disabled\",\n className\n )}\n disabled={disabled}\n onMouseDown={onMouseDown}\n onPointerDown={onPointerDown}\n {...rest}\n >\n {children}\n {!disabled ? <Ripple actionRef={rippleRef} center /> : null}\n </button>\n );\n}\n\nexport default ChatIconButton;\n"],"names":["ChatIconButton","className","children","disabled","edge","color","onMouseDownProp","onPointerDownProp","type","rest","rippleRef","React","onMouseDown","event","onPointerDown","_a","jsxs","cn","jsx","Ripple"],"mappings":";;;;AAUO,SAASA,EAAe;AAAA,EAC7B,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,MAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,aAAaC;AAAA;AAAA,EAEb,eAAeC;AAAA;AAAA,EAEf,MAAAC,IAAO;AAAA,EACP,GAAGC;AACL,GAAwB;AACtB,QAAMC,IAAYC,EAAM,OAAyB,IAAI,GAE/CC,IAAc,CAACC,MAA+C;AAClE,IAAAP,KAAA,QAAAA,EAAkBO;AAAA,EACpB,GAEMC,IAAgB,CAACD,MAAiD;;AACtE,IAAAN,KAAA,QAAAA,EAAoBM,IACfV,MACHY,IAAAL,EAAU,YAAV,QAAAK,EAAmB,SAASF;AAAA,EAEhC;AAEA,SACE,gBAAAG;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAAR;AAAA,MACA,WAAWS;AAAA,QACT;AAAA,QACAb,MAAS,WAAW;AAAA,QACpBA,MAAS,SAAS;AAAA,QAClBC,MAAU,aAAa;AAAA,QACvBF,KAAY;AAAA,QACZF;AAAA,MAAA;AAAA,MAEF,UAAAE;AAAA,MACA,aAAAS;AAAA,MACA,eAAAE;AAAA,MACC,GAAGL;AAAA,MAEH,UAAA;AAAA,QAAAP;AAAA,QACCC,IAAqD,OAA1C,gBAAAe,EAACC,GAAA,EAAO,WAAWT,GAAW,QAAM,IAAC;AAAA,MAAK;AAAA,IAAA;AAAA,EAAA;AAG7D;"}
|
|
@@ -15,6 +15,8 @@ export interface ChatLayoutProps extends PropsWithChildren, HTMLAttributes<HTMLD
|
|
|
15
15
|
expandAriaLabel?: string;
|
|
16
16
|
floatingAnchor?: ChatAnchor;
|
|
17
17
|
chat: ChatLayoutChatProps;
|
|
18
|
+
/** Test id of the root `<div>`; `chat-layout` unless given. */
|
|
19
|
+
"data-testid"?: string;
|
|
18
20
|
}
|
|
19
|
-
export declare function ChatLayout({ className, contentClassName, chatClassName, side, chatWidth, collapsed: collapsedProp, defaultCollapsed, onCollapsedChange, collapseAriaLabel, expandAriaLabel, floatingAnchor, chat, children, style, ...rest }: ChatLayoutProps): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
export declare function ChatLayout({ className, contentClassName, chatClassName, side, chatWidth, collapsed: collapsedProp, defaultCollapsed, onCollapsedChange, collapseAriaLabel, expandAriaLabel, floatingAnchor, chat, children, style, "data-testid": dataTestId, ...rest }: ChatLayoutProps): import("react/jsx-runtime").JSX.Element;
|
|
20
22
|
export default ChatLayout;
|
|
@@ -1,102 +1,103 @@
|
|
|
1
|
-
import { jsxs as l, Fragment as
|
|
2
|
-
import { useEffect as
|
|
1
|
+
import { jsxs as l, Fragment as b, jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect as H } from "react";
|
|
3
3
|
import n from "clsx";
|
|
4
|
-
import { Icon as
|
|
5
|
-
import { ChatIconButton as
|
|
6
|
-
import { useControllableState as
|
|
7
|
-
import { Chat as
|
|
8
|
-
const
|
|
9
|
-
function
|
|
4
|
+
import { Icon as g } from "../../base/icon/icon.js";
|
|
5
|
+
import { ChatIconButton as w } from "./chatIconButton.js";
|
|
6
|
+
import { useControllableState as C } from "../../../hooks/useControllableState.js";
|
|
7
|
+
import { Chat as x } from "./chat.js";
|
|
8
|
+
const S = (a) => typeof a == "number" ? `${a}px` : a, $ = (a) => a === "left" ? "bottom-left" : "bottom-right";
|
|
9
|
+
function R({
|
|
10
10
|
className: a,
|
|
11
|
-
contentClassName:
|
|
12
|
-
chatClassName:
|
|
11
|
+
contentClassName: i,
|
|
12
|
+
chatClassName: r,
|
|
13
13
|
side: e = "right",
|
|
14
|
-
chatWidth:
|
|
15
|
-
collapsed:
|
|
16
|
-
defaultCollapsed:
|
|
17
|
-
onCollapsedChange:
|
|
18
|
-
collapseAriaLabel:
|
|
19
|
-
expandAriaLabel:
|
|
20
|
-
floatingAnchor:
|
|
14
|
+
chatWidth: k = 400,
|
|
15
|
+
collapsed: I,
|
|
16
|
+
defaultCollapsed: N = !1,
|
|
17
|
+
onCollapsedChange: v,
|
|
18
|
+
collapseAriaLabel: A = "Collapse chat panel",
|
|
19
|
+
expandAriaLabel: B = "Expand chat panel",
|
|
20
|
+
floatingAnchor: s,
|
|
21
21
|
chat: o,
|
|
22
22
|
children: u,
|
|
23
23
|
style: p,
|
|
24
|
-
|
|
24
|
+
"data-testid": m = "chat-layout",
|
|
25
|
+
...f
|
|
25
26
|
}) {
|
|
26
|
-
const [
|
|
27
|
-
value:
|
|
28
|
-
defaultValue:
|
|
29
|
-
onChange:
|
|
30
|
-
}), [
|
|
27
|
+
const [c, h] = C({
|
|
28
|
+
value: I,
|
|
29
|
+
defaultValue: N,
|
|
30
|
+
onChange: v
|
|
31
|
+
}), [F, d] = C({
|
|
31
32
|
defaultValue: !1
|
|
32
33
|
});
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}, [
|
|
36
|
-
const
|
|
37
|
-
|
|
34
|
+
H(() => {
|
|
35
|
+
c || d(!1);
|
|
36
|
+
}, [c, d]);
|
|
37
|
+
const L = s != null ? s : $(e), O = e === "left" ? "dock_to_left" : "dock_to_right", V = /* @__PURE__ */ t(
|
|
38
|
+
w,
|
|
38
39
|
{
|
|
39
|
-
"aria-label":
|
|
40
|
+
"aria-label": A,
|
|
40
41
|
"data-testid": "chat-layout-collapse",
|
|
41
42
|
onClick: () => h(!0),
|
|
42
|
-
children: /* @__PURE__ */ t(
|
|
43
|
+
children: /* @__PURE__ */ t(g, { name: e === "left" ? "left_panel_close" : "right_panel_close", size: 18 })
|
|
43
44
|
}
|
|
44
|
-
),
|
|
45
|
-
o.headerActions,
|
|
46
|
-
O
|
|
47
|
-
] }), z = /* @__PURE__ */ l(_, { children: [
|
|
45
|
+
), j = /* @__PURE__ */ t(w, { "aria-label": B, "data-testid": "chat-layout-expand", onClick: () => h(!1), children: /* @__PURE__ */ t(g, { name: O, size: 18 }) }), z = /* @__PURE__ */ l(b, { children: [
|
|
48
46
|
o.headerActions,
|
|
49
47
|
V
|
|
50
|
-
] }),
|
|
51
|
-
|
|
48
|
+
] }), E = /* @__PURE__ */ l(b, { children: [
|
|
49
|
+
o.headerActions,
|
|
50
|
+
j
|
|
51
|
+
] }), y = {
|
|
52
|
+
"--smwb-chat-layout-w": S(k)
|
|
52
53
|
};
|
|
53
|
-
if (
|
|
54
|
+
if (c)
|
|
54
55
|
return /* @__PURE__ */ l(
|
|
55
56
|
"div",
|
|
56
57
|
{
|
|
57
58
|
className: n("smwb-chat-layout", "smwb-chat-layout_collapsed", a),
|
|
58
|
-
style: { ...
|
|
59
|
-
"data-testid":
|
|
59
|
+
style: { ...y, ...p },
|
|
60
|
+
"data-testid": m,
|
|
61
|
+
...f,
|
|
60
62
|
"data-collapsed": "true",
|
|
61
|
-
...m,
|
|
62
63
|
children: [
|
|
63
|
-
/* @__PURE__ */ t("div", { className: n("smwb-chat-layout__content",
|
|
64
|
+
/* @__PURE__ */ t("div", { className: n("smwb-chat-layout__content", i), "data-testid": "chat-layout-content", children: u }),
|
|
64
65
|
/* @__PURE__ */ t(
|
|
65
|
-
|
|
66
|
+
x,
|
|
66
67
|
{
|
|
67
68
|
...o,
|
|
68
|
-
className:
|
|
69
|
+
className: r,
|
|
69
70
|
floatingTrigger: !0,
|
|
70
|
-
anchor:
|
|
71
|
+
anchor: L,
|
|
71
72
|
allowedLayouts: ["floating"],
|
|
72
73
|
layout: "floating",
|
|
73
|
-
open:
|
|
74
|
+
open: F,
|
|
74
75
|
onOpenChange: d,
|
|
75
|
-
headerActions:
|
|
76
|
+
headerActions: E
|
|
76
77
|
}
|
|
77
78
|
)
|
|
78
79
|
]
|
|
79
80
|
}
|
|
80
81
|
);
|
|
81
|
-
const
|
|
82
|
+
const _ = /* @__PURE__ */ t("aside", { className: "smwb-chat-layout__panel", "data-testid": "chat-layout-panel", children: /* @__PURE__ */ t(x, { ...o, className: r, embedded: !0, allowedLayouts: [], headerActions: z }) });
|
|
82
83
|
return /* @__PURE__ */ l(
|
|
83
84
|
"div",
|
|
84
85
|
{
|
|
85
86
|
className: n("smwb-chat-layout", `smwb-chat-layout_${e}`, a),
|
|
86
|
-
style: { ...
|
|
87
|
-
"data-testid":
|
|
87
|
+
style: { ...y, ...p },
|
|
88
|
+
"data-testid": m,
|
|
89
|
+
...f,
|
|
88
90
|
"data-collapsed": "false",
|
|
89
|
-
...m,
|
|
90
91
|
children: [
|
|
91
|
-
e === "left" ?
|
|
92
|
-
/* @__PURE__ */ t("div", { className: n("smwb-chat-layout__content",
|
|
93
|
-
e === "right" ?
|
|
92
|
+
e === "left" ? _ : null,
|
|
93
|
+
/* @__PURE__ */ t("div", { className: n("smwb-chat-layout__content", i), "data-testid": "chat-layout-content", children: u }),
|
|
94
|
+
e === "right" ? _ : null
|
|
94
95
|
]
|
|
95
96
|
}
|
|
96
97
|
);
|
|
97
98
|
}
|
|
98
99
|
export {
|
|
99
|
-
|
|
100
|
-
|
|
100
|
+
R as ChatLayout,
|
|
101
|
+
R as default
|
|
101
102
|
};
|
|
102
103
|
//# sourceMappingURL=chatLayout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chatLayout.js","sources":["../../../../src/components/dataDisplay/chat/chatLayout.tsx"],"sourcesContent":["import React, { CSSProperties, HTMLAttributes, PropsWithChildren, useEffect } from \"react\";\nimport cn from \"clsx\";\nimport Icon from \"../../base/icon/icon\";\nimport ChatIconButton from \"./chatIconButton\";\nimport { useControllableState } from \"../../../hooks/useControllableState\";\nimport Chat, { ChatProps } from \"./chat\";\nimport { ChatAnchor, ChatLayoutSide } from \"./types\";\n\nconst len = (value: number | string) => (typeof value === \"number\" ? `${value}px` : value);\n\nconst floatingAnchorForSide = (side: ChatLayoutSide): ChatAnchor => (side === \"left\" ? \"bottom-left\" : \"bottom-right\");\n\nexport type ChatLayoutChatProps = Omit<\n ChatProps,\n | \"className\"\n | \"embedded\"\n | \"floatingTrigger\"\n | \"anchor\"\n | \"allowedLayouts\"\n | \"layout\"\n | \"defaultLayout\"\n | \"open\"\n | \"defaultOpen\"\n | \"onOpenChange\"\n | \"onLayoutChange\"\n>;\n\nexport interface ChatLayoutProps extends PropsWithChildren, HTMLAttributes<HTMLDivElement> {\n className?: string;\n contentClassName?: string;\n chatClassName?: string;\n side?: ChatLayoutSide;\n chatWidth?: number | string;\n collapsed?: boolean;\n defaultCollapsed?: boolean;\n onCollapsedChange?: (collapsed: boolean) => void;\n collapseAriaLabel?: string;\n expandAriaLabel?: string;\n floatingAnchor?: ChatAnchor;\n chat: ChatLayoutChatProps;\n}\n\nexport function ChatLayout({\n className,\n contentClassName,\n chatClassName,\n side = \"right\",\n chatWidth = 400,\n collapsed: collapsedProp,\n defaultCollapsed = false,\n onCollapsedChange,\n collapseAriaLabel = \"Collapse chat panel\",\n expandAriaLabel = \"Expand chat panel\",\n floatingAnchor,\n chat,\n children,\n style,\n ...rest\n}: ChatLayoutProps) {\n const [collapsed, setCollapsed] = useControllableState<boolean>({\n value: collapsedProp,\n defaultValue: defaultCollapsed,\n onChange: onCollapsedChange,\n });\n\n const [floatingOpen, setFloatingOpen] = useControllableState<boolean>({\n defaultValue: false,\n });\n\n useEffect(() => {\n if (!collapsed) {\n setFloatingOpen(false);\n }\n }, [collapsed, setFloatingOpen]);\n\n const anchor = floatingAnchor ?? floatingAnchorForSide(side);\n const dockIcon = side === \"left\" ? \"dock_to_left\" : \"dock_to_right\";\n const collapseIcon = side === \"left\" ? \"left_panel_close\" : \"right_panel_close\";\n\n const collapseButton = (\n <ChatIconButton\n aria-label={collapseAriaLabel}\n data-testid=\"chat-layout-collapse\"\n onClick={() => setCollapsed(true)}\n >\n <Icon name={collapseIcon} size={18} />\n </ChatIconButton>\n );\n\n const expandButton = (\n <ChatIconButton aria-label={expandAriaLabel} data-testid=\"chat-layout-expand\" onClick={() => setCollapsed(false)}>\n <Icon name={dockIcon} size={18} />\n </ChatIconButton>\n );\n\n const dockedHeaderActions = (\n <>\n {chat.headerActions}\n {collapseButton}\n </>\n );\n\n const floatingHeaderActions = (\n <>\n {chat.headerActions}\n {expandButton}\n </>\n );\n\n const cssVars = {\n \"--smwb-chat-layout-w\": len(chatWidth),\n } as CSSProperties;\n\n if (collapsed) {\n return (\n <div\n className={cn(\"smwb-chat-layout\", \"smwb-chat-layout_collapsed\", className)}\n style={{ ...cssVars, ...style }}\n data-testid
|
|
1
|
+
{"version":3,"file":"chatLayout.js","sources":["../../../../src/components/dataDisplay/chat/chatLayout.tsx"],"sourcesContent":["import React, { CSSProperties, HTMLAttributes, PropsWithChildren, useEffect } from \"react\";\nimport cn from \"clsx\";\nimport Icon from \"../../base/icon/icon\";\nimport ChatIconButton from \"./chatIconButton\";\nimport { useControllableState } from \"../../../hooks/useControllableState\";\nimport Chat, { ChatProps } from \"./chat\";\nimport { ChatAnchor, ChatLayoutSide } from \"./types\";\n\nconst len = (value: number | string) => (typeof value === \"number\" ? `${value}px` : value);\n\nconst floatingAnchorForSide = (side: ChatLayoutSide): ChatAnchor => (side === \"left\" ? \"bottom-left\" : \"bottom-right\");\n\nexport type ChatLayoutChatProps = Omit<\n ChatProps,\n | \"className\"\n | \"embedded\"\n | \"floatingTrigger\"\n | \"anchor\"\n | \"allowedLayouts\"\n | \"layout\"\n | \"defaultLayout\"\n | \"open\"\n | \"defaultOpen\"\n | \"onOpenChange\"\n | \"onLayoutChange\"\n>;\n\nexport interface ChatLayoutProps extends PropsWithChildren, HTMLAttributes<HTMLDivElement> {\n className?: string;\n contentClassName?: string;\n chatClassName?: string;\n side?: ChatLayoutSide;\n chatWidth?: number | string;\n collapsed?: boolean;\n defaultCollapsed?: boolean;\n onCollapsedChange?: (collapsed: boolean) => void;\n collapseAriaLabel?: string;\n expandAriaLabel?: string;\n floatingAnchor?: ChatAnchor;\n chat: ChatLayoutChatProps;\n /** Test id of the root `<div>`; `chat-layout` unless given. */\n \"data-testid\"?: string;\n}\n\nexport function ChatLayout({\n className,\n contentClassName,\n chatClassName,\n side = \"right\",\n chatWidth = 400,\n collapsed: collapsedProp,\n defaultCollapsed = false,\n onCollapsedChange,\n collapseAriaLabel = \"Collapse chat panel\",\n expandAriaLabel = \"Expand chat panel\",\n floatingAnchor,\n chat,\n children,\n style,\n \"data-testid\": dataTestId = \"chat-layout\",\n ...rest\n}: ChatLayoutProps) {\n const [collapsed, setCollapsed] = useControllableState<boolean>({\n value: collapsedProp,\n defaultValue: defaultCollapsed,\n onChange: onCollapsedChange,\n });\n\n const [floatingOpen, setFloatingOpen] = useControllableState<boolean>({\n defaultValue: false,\n });\n\n useEffect(() => {\n if (!collapsed) {\n setFloatingOpen(false);\n }\n }, [collapsed, setFloatingOpen]);\n\n const anchor = floatingAnchor ?? floatingAnchorForSide(side);\n const dockIcon = side === \"left\" ? \"dock_to_left\" : \"dock_to_right\";\n const collapseIcon = side === \"left\" ? \"left_panel_close\" : \"right_panel_close\";\n\n const collapseButton = (\n <ChatIconButton\n aria-label={collapseAriaLabel}\n data-testid=\"chat-layout-collapse\"\n onClick={() => setCollapsed(true)}\n >\n <Icon name={collapseIcon} size={18} />\n </ChatIconButton>\n );\n\n const expandButton = (\n <ChatIconButton aria-label={expandAriaLabel} data-testid=\"chat-layout-expand\" onClick={() => setCollapsed(false)}>\n <Icon name={dockIcon} size={18} />\n </ChatIconButton>\n );\n\n const dockedHeaderActions = (\n <>\n {chat.headerActions}\n {collapseButton}\n </>\n );\n\n const floatingHeaderActions = (\n <>\n {chat.headerActions}\n {expandButton}\n </>\n );\n\n const cssVars = {\n \"--smwb-chat-layout-w\": len(chatWidth),\n } as CSSProperties;\n\n if (collapsed) {\n return (\n <div\n className={cn(\"smwb-chat-layout\", \"smwb-chat-layout_collapsed\", className)}\n style={{ ...cssVars, ...style }}\n data-testid={dataTestId}\n {...rest}\n // The collapsed state is the layout's own; it wins over the caller's.\n data-collapsed=\"true\"\n >\n <div className={cn(\"smwb-chat-layout__content\", contentClassName)} data-testid=\"chat-layout-content\">\n {children}\n </div>\n <Chat\n {...chat}\n className={chatClassName}\n floatingTrigger\n anchor={anchor}\n allowedLayouts={[\"floating\"]}\n layout=\"floating\"\n open={floatingOpen}\n onOpenChange={setFloatingOpen}\n headerActions={floatingHeaderActions}\n />\n </div>\n );\n }\n\n const panel = (\n <aside className=\"smwb-chat-layout__panel\" data-testid=\"chat-layout-panel\">\n <Chat {...chat} className={chatClassName} embedded allowedLayouts={[]} headerActions={dockedHeaderActions} />\n </aside>\n );\n\n return (\n <div\n className={cn(\"smwb-chat-layout\", `smwb-chat-layout_${side}`, className)}\n style={{ ...cssVars, ...style }}\n data-testid={dataTestId}\n {...rest}\n // The collapsed state is the layout's own; it wins over the caller's.\n data-collapsed=\"false\"\n >\n {side === \"left\" ? panel : null}\n <div className={cn(\"smwb-chat-layout__content\", contentClassName)} data-testid=\"chat-layout-content\">\n {children}\n </div>\n {side === \"right\" ? panel : null}\n </div>\n );\n}\n\nexport default ChatLayout;\n"],"names":["len","value","floatingAnchorForSide","side","ChatLayout","className","contentClassName","chatClassName","chatWidth","collapsedProp","defaultCollapsed","onCollapsedChange","collapseAriaLabel","expandAriaLabel","floatingAnchor","chat","children","style","dataTestId","rest","collapsed","setCollapsed","useControllableState","floatingOpen","setFloatingOpen","useEffect","anchor","dockIcon","collapseButton","jsx","ChatIconButton","Icon","expandButton","dockedHeaderActions","jsxs","Fragment","floatingHeaderActions","cssVars","cn","Chat","panel"],"mappings":"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"}
|
|
@@ -12,6 +12,8 @@ export interface ChatOverlayLayoutProps extends PropsWithChildren, HTMLAttribute
|
|
|
12
12
|
defaultLayout?: ChatLayoutMode;
|
|
13
13
|
defaultOpen?: boolean;
|
|
14
14
|
chat: ChatOverlayLayoutChatProps;
|
|
15
|
+
/** Test id of the root `<div>`; `chat-overlay-layout` unless given. */
|
|
16
|
+
"data-testid"?: string;
|
|
15
17
|
}
|
|
16
|
-
export declare function ChatOverlayLayout({ className, contentClassName, chatClassName, side, chatWidth, allowedLayouts, defaultLayout, defaultOpen, chat, children, style, ...rest }: ChatOverlayLayoutProps): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export declare function ChatOverlayLayout({ className, contentClassName, chatClassName, side, chatWidth, allowedLayouts, defaultLayout, defaultOpen, chat, children, style, "data-testid": dataTestId, ...rest }: ChatOverlayLayoutProps): import("react/jsx-runtime").JSX.Element;
|
|
17
19
|
export default ChatOverlayLayout;
|