@smwb/ui-solid 0.12.1 → 0.14.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 +638 -0
- package/dist/assets/styles/less/components/appBar/appBar.entry.css +1 -1
- package/dist/assets/styles/less/components/avatar/avatar.entry.css +1 -1
- package/dist/assets/styles/less/components/button/button.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/commandPalette/commandPalette.entry.css +1 -0
- package/dist/assets/styles/less/components/composer/composer.entry.css +1 -0
- package/dist/assets/styles/less/components/dagView/dagView.entry.css +1 -0
- package/dist/assets/styles/less/components/diffStat/diffStat.entry.css +1 -0
- package/dist/assets/styles/less/components/kbd/kbd.entry.css +1 -0
- package/dist/assets/styles/less/components/list/list.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/qrCode/qrCode.entry.css +1 -0
- 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/sidebar/sidebar.entry.css +1 -1
- package/dist/assets/styles/less/components/statusDot/statusDot.entry.css +1 -0
- package/dist/assets/styles/less/components/swimlanes/swimlanes.entry.css +1 -0
- package/dist/assets/styles/less/components/tabGroups/tabGroups.entry.css +1 -0
- package/dist/assets/styles/less/components/table/table.entry.css +1 -1
- package/dist/assets/styles/less/components/tabs/tab/tab.entry.css +1 -1
- package/dist/assets/styles/less/components/tabs/tabPanel/tabPanel.entry.css +1 -0
- package/dist/assets/styles/less/components/tabs/tabs.entry.css +1 -1
- package/dist/assets/styles/less/components/textField/textField.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/treeView/treeView.entry.css +1 -1
- package/dist/assets/styles/less/components/typography/typography.entry.css +1 -1
- package/dist/assets/styles/less/tokens.entry.css +1 -1
- package/dist/components/base/animateHeight/animateHeight.js +41 -42
- package/dist/components/base/animateHeight/animateHeight.js.map +1 -1
- package/dist/components/base/icon/icon.d.ts +6 -2
- package/dist/components/base/icon/icon.js +41 -41
- 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 +46 -34
- 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 +37 -33
- package/dist/components/dataDisplay/avatar/avatar.js.map +1 -1
- package/dist/components/dataDisplay/card/card.d.ts +32 -1
- package/dist/components/dataDisplay/card/card.js +47 -34
- package/dist/components/dataDisplay/card/card.js.map +1 -1
- package/dist/components/dataDisplay/carousel/carousel.js +92 -88
- package/dist/components/dataDisplay/carousel/carousel.js.map +1 -1
- package/dist/components/dataDisplay/chart/chart.d.ts +2 -0
- package/dist/components/dataDisplay/chat/chat.d.ts +42 -0
- package/dist/components/dataDisplay/chat/chat.js +116 -57
- package/dist/components/dataDisplay/chat/chat.js.map +1 -1
- package/dist/components/dataDisplay/chat/chatComposer.d.ts +17 -0
- package/dist/components/dataDisplay/chat/chatComposer.js +21 -19
- package/dist/components/dataDisplay/chat/chatComposer.js.map +1 -1
- package/dist/components/dataDisplay/chat/chatIconButton.js +23 -13
- package/dist/components/dataDisplay/chat/chatIconButton.js.map +1 -1
- package/dist/components/dataDisplay/chat/chatLayout.d.ts +2 -0
- package/dist/components/dataDisplay/chat/chatLayout.js +33 -29
- package/dist/components/dataDisplay/chat/chatLayout.js.map +1 -1
- package/dist/components/dataDisplay/chat/chatOverlayLayout.d.ts +2 -0
- package/dist/components/dataDisplay/chat/chatOverlayLayout.js +19 -17
- package/dist/components/dataDisplay/chat/chatOverlayLayout.js.map +1 -1
- package/dist/components/dataDisplay/chat/index.d.ts +1 -1
- package/dist/components/dataDisplay/chat/utils.d.ts +14 -0
- package/dist/components/dataDisplay/chat/utils.js.map +1 -1
- package/dist/components/dataDisplay/chip/chip.d.ts +32 -0
- package/dist/components/dataDisplay/chip/chip.js +104 -63
- package/dist/components/dataDisplay/chip/chip.js.map +1 -1
- package/dist/components/dataDisplay/chipGroup/chipGroup.js +44 -39
- package/dist/components/dataDisplay/chipGroup/chipGroup.js.map +1 -1
- package/dist/components/dataDisplay/dagView/dagLayout.d.ts +74 -0
- package/dist/components/dataDisplay/dagView/dagLayout.js +284 -0
- package/dist/components/dataDisplay/dagView/dagLayout.js.map +1 -0
- package/dist/components/dataDisplay/dagView/dagView.d.ts +151 -0
- package/dist/components/dataDisplay/dagView/dagView.js +503 -0
- package/dist/components/dataDisplay/dagView/dagView.js.map +1 -0
- package/dist/components/dataDisplay/dagView/index.d.ts +4 -0
- package/dist/components/dataDisplay/dagView/panZoom.d.ts +75 -0
- package/dist/components/dataDisplay/dagView/panZoom.js +161 -0
- package/dist/components/dataDisplay/dagView/panZoom.js.map +1 -0
- package/dist/components/dataDisplay/descriptionList/descriptionList.d.ts +11 -3
- package/dist/components/dataDisplay/descriptionList/descriptionList.js +20 -24
- package/dist/components/dataDisplay/descriptionList/descriptionList.js.map +1 -1
- package/dist/components/dataDisplay/diffStat/diffStat.d.ts +55 -0
- package/dist/components/dataDisplay/diffStat/diffStat.js +70 -0
- package/dist/components/dataDisplay/diffStat/diffStat.js.map +1 -0
- package/dist/components/dataDisplay/diffStat/index.d.ts +2 -0
- package/dist/components/dataDisplay/expansionPanel/expansionPanel.js +114 -81
- 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 +71 -61
- package/dist/components/dataDisplay/kanban/kanban.js.map +1 -1
- package/dist/components/dataDisplay/kbd/index.d.ts +4 -0
- package/dist/components/dataDisplay/kbd/kbd.d.ts +41 -0
- package/dist/components/dataDisplay/kbd/kbd.js +47 -0
- package/dist/components/dataDisplay/kbd/kbd.js.map +1 -0
- package/dist/components/dataDisplay/kbd/kbdKeys.d.ts +18 -0
- package/dist/components/dataDisplay/kbd/kbdKeys.js +70 -0
- package/dist/components/dataDisplay/kbd/kbdKeys.js.map +1 -0
- package/dist/components/dataDisplay/lazyImage/lazyImage.js +14 -12
- 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 +16 -12
- package/dist/components/dataDisplay/list/list.js.map +1 -1
- package/dist/components/dataDisplay/list/listItem.d.ts +34 -0
- package/dist/components/dataDisplay/list/listItem.js +58 -19
- package/dist/components/dataDisplay/list/listItem.js.map +1 -1
- package/dist/components/dataDisplay/meter/meter.d.ts +2 -0
- package/dist/components/dataDisplay/meter/meter.js +15 -13
- 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 +12 -10
- package/dist/components/dataDisplay/personChip/personChip.js.map +1 -1
- package/dist/components/dataDisplay/qrCode/index.d.ts +2 -0
- package/dist/components/dataDisplay/qrCode/qrCode.d.ts +30 -0
- package/dist/components/dataDisplay/qrCode/qrCode.js +88 -0
- package/dist/components/dataDisplay/qrCode/qrCode.js.map +1 -0
- package/dist/components/dataDisplay/qrCode/qrCodePath.d.ts +7 -0
- package/dist/components/dataDisplay/qrCode/qrCodePath.js +20 -0
- package/dist/components/dataDisplay/qrCode/qrCodePath.js.map +1 -0
- package/dist/components/dataDisplay/stat/stat.d.ts +2 -0
- package/dist/components/dataDisplay/stat/stat.js +41 -43
- package/dist/components/dataDisplay/stat/stat.js.map +1 -1
- package/dist/components/dataDisplay/statusDot/index.d.ts +2 -0
- package/dist/components/dataDisplay/statusDot/statusDot.d.ts +35 -0
- package/dist/components/dataDisplay/statusDot/statusDot.js +31 -0
- package/dist/components/dataDisplay/statusDot/statusDot.js.map +1 -0
- package/dist/components/dataDisplay/swimlanes/index.d.ts +2 -0
- package/dist/components/dataDisplay/swimlanes/swimlanes.d.ts +75 -0
- package/dist/components/dataDisplay/swimlanes/swimlanes.js +361 -0
- package/dist/components/dataDisplay/swimlanes/swimlanes.js.map +1 -0
- package/dist/components/dataDisplay/table/table.d.ts +10 -1
- package/dist/components/dataDisplay/table/table.js +46 -22
- package/dist/components/dataDisplay/table/table.js.map +1 -1
- package/dist/components/dataDisplay/table/tableBody.js +25 -12
- 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 +15 -14
- package/dist/components/dataDisplay/table/tableCell.js.map +1 -1
- package/dist/components/dataDisplay/table/tableColumns.d.ts +146 -0
- package/dist/components/dataDisplay/table/tableColumns.js +254 -0
- package/dist/components/dataDisplay/table/tableColumns.js.map +1 -0
- package/dist/components/dataDisplay/table/tableEntities.d.ts +4 -0
- package/dist/components/dataDisplay/table/tableEntities.js +6 -0
- package/dist/components/dataDisplay/table/tableEntities.js.map +1 -0
- package/dist/components/dataDisplay/table/tableHead.js +29 -11
- package/dist/components/dataDisplay/table/tableHead.js.map +1 -1
- package/dist/components/dataDisplay/table/tableHeadCell.d.ts +23 -1
- package/dist/components/dataDisplay/table/tableHeadCell.js +51 -26
- package/dist/components/dataDisplay/table/tableHeadCell.js.map +1 -1
- package/dist/components/dataDisplay/table/tableHtmlText.d.ts +8 -0
- package/dist/components/dataDisplay/table/tableHtmlText.js +121 -0
- package/dist/components/dataDisplay/table/tableHtmlText.js.map +1 -0
- package/dist/components/dataDisplay/table/tableRow.d.ts +2 -0
- package/dist/components/dataDisplay/table/tableRow.js +28 -13
- 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 +86 -58
- package/dist/components/dataDisplay/thumbCard/thumbCard.js.map +1 -1
- package/dist/components/dataDisplay/treeView/treeView.d.ts +22 -0
- package/dist/components/dataDisplay/treeView/treeView.js +164 -96
- package/dist/components/dataDisplay/treeView/treeView.js.map +1 -1
- package/dist/components/dataDisplay/typography/typography.js +22 -26
- package/dist/components/dataDisplay/typography/typography.js.map +1 -1
- package/dist/components/feedBack/emptyState/emptyState.d.ts +2 -0
- package/dist/components/feedBack/emptyState/emptyState.js +20 -16
- 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 +17 -13
- package/dist/components/feedBack/message/message.js.map +1 -1
- package/dist/components/feedBack/modal/modal.d.ts +9 -0
- package/dist/components/feedBack/modal/modal.js +71 -53
- 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 +43 -35
- package/dist/components/feedBack/skeleton/skeleton.js.map +1 -1
- package/dist/components/feedBack/snackbar/snackbar.js +24 -20
- 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 +65 -41
- package/dist/components/feedBack/tooltip/tooltip.js.map +1 -1
- package/dist/components/inputs/button/button.d.ts +14 -0
- package/dist/components/inputs/button/button.js +71 -36
- 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 +14 -10
- 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 +59 -36
- package/dist/components/inputs/checkbox/checkbox.js.map +1 -1
- package/dist/components/inputs/composer/composer.d.ts +148 -0
- package/dist/components/inputs/composer/composer.js +276 -0
- package/dist/components/inputs/composer/composer.js.map +1 -0
- package/dist/components/inputs/composer/composerFiles.d.ts +26 -0
- package/dist/components/inputs/composer/composerFiles.js +18 -0
- package/dist/components/inputs/composer/composerFiles.js.map +1 -0
- package/dist/components/inputs/composer/composerKeys.d.ts +29 -0
- package/dist/components/inputs/composer/composerKeys.js +7 -0
- package/dist/components/inputs/composer/composerKeys.js.map +1 -0
- package/dist/components/inputs/composer/index.d.ts +3 -0
- package/dist/components/inputs/datePicker/datePicker.js +108 -97
- package/dist/components/inputs/datePicker/datePicker.js.map +1 -1
- package/dist/components/inputs/datePicker/datePickerActionLabel.js +19 -17
- package/dist/components/inputs/datePicker/datePickerActionLabel.js.map +1 -1
- package/dist/components/inputs/datePicker/datePickerDay.js +41 -25
- package/dist/components/inputs/datePicker/datePickerDay.js.map +1 -1
- package/dist/components/inputs/datePicker/datePickerIconButton.js +24 -14
- package/dist/components/inputs/datePicker/datePickerIconButton.js.map +1 -1
- package/dist/components/inputs/dateTimePicker/dateTimePicker.js +90 -79
- package/dist/components/inputs/dateTimePicker/dateTimePicker.js.map +1 -1
- package/dist/components/inputs/floatingButton/floatingButton.js +26 -16
- 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 +48 -34
- package/dist/components/inputs/radioButton/radioButton.js.map +1 -1
- package/dist/components/inputs/rating/rating.d.ts +9 -0
- package/dist/components/inputs/rating/rating.js +74 -53
- package/dist/components/inputs/rating/rating.js.map +1 -1
- package/dist/components/inputs/selectField/dropdownMenu.d.ts +21 -1
- package/dist/components/inputs/selectField/dropdownMenu.js +268 -143
- 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 +37 -0
- package/dist/components/inputs/selectField/optionNavigation.js.map +1 -0
- package/dist/components/inputs/selectField/selectField.d.ts +32 -1
- package/dist/components/inputs/selectField/selectField.js +297 -126
- package/dist/components/inputs/selectField/selectField.js.map +1 -1
- package/dist/components/inputs/slider/slider.d.ts +25 -3
- package/dist/components/inputs/slider/slider.js +320 -197
- package/dist/components/inputs/slider/slider.js.map +1 -1
- package/dist/components/inputs/textField/textField.d.ts +9 -1
- package/dist/components/inputs/textField/textField.js +104 -51
- package/dist/components/inputs/textField/textField.js.map +1 -1
- package/dist/components/inputs/textField/textFieldWrapper.d.ts +14 -0
- package/dist/components/inputs/textField/textFieldWrapper.js +52 -45
- package/dist/components/inputs/textField/textFieldWrapper.js.map +1 -1
- package/dist/components/inputs/timePicker/timePicker.js +73 -62
- 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 +43 -31
- 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 +32 -27
- 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 +32 -30
- 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 +22 -20
- 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 +171 -168
- package/dist/components/layout/floatingWindow/floatingWindow.js.map +1 -1
- package/dist/components/layout/grid/grid.d.ts +8 -0
- package/dist/components/layout/grid/grid.js +52 -44
- 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 +14 -12
- 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 +23 -21
- 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 +38 -36
- package/dist/components/layout/sectionHeader/sectionHeader.js.map +1 -1
- package/dist/components/layout/sheet/sheet.d.ts +14 -0
- package/dist/components/layout/sheet/sheet.js +92 -76
- 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 +26 -24
- package/dist/components/layout/stack/stack.js.map +1 -1
- package/dist/components/layout/tabGroups/index.d.ts +4 -0
- package/dist/components/layout/tabGroups/tabGroups.d.ts +102 -0
- package/dist/components/layout/tabGroups/tabGroups.js +895 -0
- package/dist/components/layout/tabGroups/tabGroups.js.map +1 -0
- package/dist/components/layout/tabGroups/tabGroupsFocus.d.ts +55 -0
- package/dist/components/layout/tabGroups/tabGroupsFocus.js +192 -0
- package/dist/components/layout/tabGroups/tabGroupsFocus.js.map +1 -0
- package/dist/components/layout/tabGroups/tabGroupsLayout.d.ts +250 -0
- package/dist/components/layout/tabGroups/tabGroupsLayout.js +480 -0
- package/dist/components/layout/tabGroups/tabGroupsLayout.js.map +1 -0
- package/dist/components/navigation/appBar/appBar.d.ts +24 -0
- package/dist/components/navigation/appBar/appBar.js +68 -28
- package/dist/components/navigation/appBar/appBar.js.map +1 -1
- package/dist/components/navigation/bottomBar/bottomBar.js +125 -120
- 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 +18 -14
- package/dist/components/navigation/breadcrumbs/breadcrumbs.js.map +1 -1
- package/dist/components/navigation/commandPalette/commandPalette.d.ts +126 -0
- package/dist/components/navigation/commandPalette/commandPalette.js +457 -0
- package/dist/components/navigation/commandPalette/commandPalette.js.map +1 -0
- package/dist/components/navigation/commandPalette/commandPaletteFilter.d.ts +11 -0
- package/dist/components/navigation/commandPalette/commandPaletteFilter.js +15 -0
- package/dist/components/navigation/commandPalette/commandPaletteFilter.js.map +1 -0
- package/dist/components/navigation/commandPalette/commandPaletteNavigation.d.ts +13 -0
- package/dist/components/navigation/commandPalette/commandPaletteNavigation.js +38 -0
- package/dist/components/navigation/commandPalette/commandPaletteNavigation.js.map +1 -0
- package/dist/components/navigation/commandPalette/commandPaletteTypes.d.ts +39 -0
- package/dist/components/navigation/commandPalette/index.d.ts +6 -0
- package/dist/components/navigation/menu/menu.d.ts +6 -0
- package/dist/components/navigation/menu/menu.js.map +1 -1
- package/dist/components/navigation/menu/menuComponent.js +12 -23
- package/dist/components/navigation/menu/menuComponent.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 +54 -46
- 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 +58 -33
- package/dist/components/navigation/menu/menuItem.js.map +1 -1
- package/dist/components/navigation/menu/menuList.d.ts +4 -0
- package/dist/components/navigation/menu/menuList.js +34 -16
- package/dist/components/navigation/menu/menuList.js.map +1 -1
- package/dist/components/navigation/menu/menuSubmenu.d.ts +8 -1
- package/dist/components/navigation/menu/menuSubmenu.js +58 -38
- 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 +28 -24
- package/dist/components/navigation/pagination/pagination.js.map +1 -1
- package/dist/components/navigation/sidebar/sidebar.d.ts +10 -0
- package/dist/components/navigation/sidebar/sidebar.js +37 -33
- 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 +46 -42
- package/dist/components/navigation/stepper/stepper.js.map +1 -1
- package/dist/components/navigation/tabs/index.d.ts +3 -1
- package/dist/components/navigation/tabs/tab/tab.d.ts +89 -2
- package/dist/components/navigation/tabs/tab/tab.js +174 -43
- package/dist/components/navigation/tabs/tab/tab.js.map +1 -1
- package/dist/components/navigation/tabs/tabPanel/tabPanel.d.ts +20 -0
- package/dist/components/navigation/tabs/tabPanel/tabPanel.js +34 -0
- package/dist/components/navigation/tabs/tabPanel/tabPanel.js.map +1 -0
- package/dist/components/navigation/tabs/tabs.d.ts +79 -2
- package/dist/components/navigation/tabs/tabs.js +389 -147
- package/dist/components/navigation/tabs/tabs.js.map +1 -1
- package/dist/components/navigation/tabs/tabs.utils.d.ts +20 -0
- package/dist/components/navigation/tabs/tabs.utils.js +11 -0
- package/dist/components/navigation/tabs/tabs.utils.js.map +1 -0
- package/dist/components/navigation/tabs/tabsContext.d.ts +36 -4
- package/dist/components/navigation/tabs/tabsContext.js.map +1 -1
- package/dist/connects/rt/table/table.d.ts +16 -1
- package/dist/headless/components/base/animateHeight/animateHeight.js +41 -42
- package/dist/headless/components/base/animateHeight/animateHeight.js.map +1 -1
- package/dist/headless/components/base/icon/icon.js +40 -40
- package/dist/headless/components/base/icon/icon.js.map +1 -1
- package/dist/headless/components/base/ripple/ripple.js +46 -34
- package/dist/headless/components/base/ripple/ripple.js.map +1 -1
- package/dist/headless/components/dataDisplay/avatar/avatar.js +37 -33
- package/dist/headless/components/dataDisplay/avatar/avatar.js.map +1 -1
- package/dist/headless/components/dataDisplay/card/card.js +44 -31
- package/dist/headless/components/dataDisplay/card/card.js.map +1 -1
- package/dist/headless/components/dataDisplay/carousel/carousel.js +102 -98
- package/dist/headless/components/dataDisplay/carousel/carousel.js.map +1 -1
- package/dist/headless/components/dataDisplay/chat/chat.js +116 -57
- package/dist/headless/components/dataDisplay/chat/chat.js.map +1 -1
- package/dist/headless/components/dataDisplay/chat/chatComposer.js +21 -19
- package/dist/headless/components/dataDisplay/chat/chatComposer.js.map +1 -1
- package/dist/headless/components/dataDisplay/chat/chatIconButton.js +23 -13
- package/dist/headless/components/dataDisplay/chat/chatIconButton.js.map +1 -1
- package/dist/headless/components/dataDisplay/chat/chatLayout.js +33 -29
- package/dist/headless/components/dataDisplay/chat/chatLayout.js.map +1 -1
- package/dist/headless/components/dataDisplay/chat/chatOverlayLayout.js +19 -17
- package/dist/headless/components/dataDisplay/chat/chatOverlayLayout.js.map +1 -1
- package/dist/headless/components/dataDisplay/chat/utils.js.map +1 -1
- package/dist/headless/components/dataDisplay/chip/chip.js +104 -63
- package/dist/headless/components/dataDisplay/chip/chip.js.map +1 -1
- package/dist/headless/components/dataDisplay/chipGroup/chipGroup.js +44 -39
- package/dist/headless/components/dataDisplay/chipGroup/chipGroup.js.map +1 -1
- package/dist/headless/components/dataDisplay/dagView/dagLayout.js +284 -0
- package/dist/headless/components/dataDisplay/dagView/dagLayout.js.map +1 -0
- package/dist/headless/components/dataDisplay/dagView/dagView.js +501 -0
- package/dist/headless/components/dataDisplay/dagView/dagView.js.map +1 -0
- package/dist/headless/components/dataDisplay/dagView/panZoom.js +161 -0
- package/dist/headless/components/dataDisplay/dagView/panZoom.js.map +1 -0
- package/dist/headless/components/dataDisplay/descriptionList/descriptionList.js +15 -19
- package/dist/headless/components/dataDisplay/descriptionList/descriptionList.js.map +1 -1
- package/dist/headless/components/dataDisplay/diffStat/diffStat.js +68 -0
- package/dist/headless/components/dataDisplay/diffStat/diffStat.js.map +1 -0
- package/dist/headless/components/dataDisplay/expansionPanel/expansionPanel.js +114 -81
- package/dist/headless/components/dataDisplay/expansionPanel/expansionPanel.js.map +1 -1
- package/dist/headless/components/dataDisplay/kanban/kanban.js +71 -61
- package/dist/headless/components/dataDisplay/kanban/kanban.js.map +1 -1
- package/dist/headless/components/dataDisplay/kbd/kbd.js +45 -0
- package/dist/headless/components/dataDisplay/kbd/kbd.js.map +1 -0
- package/dist/headless/components/dataDisplay/kbd/kbdKeys.js +70 -0
- package/dist/headless/components/dataDisplay/kbd/kbdKeys.js.map +1 -0
- package/dist/headless/components/dataDisplay/lazyImage/lazyImage.js +14 -12
- package/dist/headless/components/dataDisplay/lazyImage/lazyImage.js.map +1 -1
- package/dist/headless/components/dataDisplay/list/list.js +16 -12
- package/dist/headless/components/dataDisplay/list/list.js.map +1 -1
- package/dist/headless/components/dataDisplay/list/listItem.js +58 -19
- package/dist/headless/components/dataDisplay/list/listItem.js.map +1 -1
- package/dist/headless/components/dataDisplay/meter/meter.js +14 -12
- package/dist/headless/components/dataDisplay/meter/meter.js.map +1 -1
- package/dist/headless/components/dataDisplay/personChip/personChip.js +12 -10
- package/dist/headless/components/dataDisplay/personChip/personChip.js.map +1 -1
- package/dist/headless/components/dataDisplay/qrCode/qrCode.js +86 -0
- package/dist/headless/components/dataDisplay/qrCode/qrCode.js.map +1 -0
- package/dist/headless/components/dataDisplay/qrCode/qrCodePath.js +20 -0
- package/dist/headless/components/dataDisplay/qrCode/qrCodePath.js.map +1 -0
- package/dist/headless/components/dataDisplay/stat/stat.js +43 -45
- package/dist/headless/components/dataDisplay/stat/stat.js.map +1 -1
- package/dist/headless/components/dataDisplay/statusDot/statusDot.js +29 -0
- package/dist/headless/components/dataDisplay/statusDot/statusDot.js.map +1 -0
- package/dist/headless/components/dataDisplay/swimlanes/swimlanes.js +359 -0
- package/dist/headless/components/dataDisplay/swimlanes/swimlanes.js.map +1 -0
- package/dist/headless/components/dataDisplay/table/table.js +47 -23
- package/dist/headless/components/dataDisplay/table/table.js.map +1 -1
- package/dist/headless/components/dataDisplay/table/tableBody.js +25 -12
- package/dist/headless/components/dataDisplay/table/tableBody.js.map +1 -1
- package/dist/headless/components/dataDisplay/table/tableCell.js +15 -14
- package/dist/headless/components/dataDisplay/table/tableCell.js.map +1 -1
- package/dist/headless/components/dataDisplay/table/tableColumns.js +254 -0
- package/dist/headless/components/dataDisplay/table/tableColumns.js.map +1 -0
- package/dist/headless/components/dataDisplay/table/tableEntities.js +6 -0
- package/dist/headless/components/dataDisplay/table/tableEntities.js.map +1 -0
- package/dist/headless/components/dataDisplay/table/tableHead.js +29 -11
- package/dist/headless/components/dataDisplay/table/tableHead.js.map +1 -1
- package/dist/headless/components/dataDisplay/table/tableHeadCell.js +51 -26
- package/dist/headless/components/dataDisplay/table/tableHeadCell.js.map +1 -1
- package/dist/headless/components/dataDisplay/table/tableHtmlText.js +121 -0
- package/dist/headless/components/dataDisplay/table/tableHtmlText.js.map +1 -0
- package/dist/headless/components/dataDisplay/table/tableRow.js +28 -13
- package/dist/headless/components/dataDisplay/table/tableRow.js.map +1 -1
- package/dist/headless/components/dataDisplay/thumbCard/thumbCard.js +86 -58
- package/dist/headless/components/dataDisplay/thumbCard/thumbCard.js.map +1 -1
- package/dist/headless/components/dataDisplay/treeView/treeView.js +164 -96
- package/dist/headless/components/dataDisplay/treeView/treeView.js.map +1 -1
- package/dist/headless/components/dataDisplay/typography/typography.js +21 -25
- package/dist/headless/components/dataDisplay/typography/typography.js.map +1 -1
- package/dist/headless/components/feedBack/emptyState/emptyState.js +9 -5
- package/dist/headless/components/feedBack/emptyState/emptyState.js.map +1 -1
- package/dist/headless/components/feedBack/message/message.js +17 -13
- package/dist/headless/components/feedBack/message/message.js.map +1 -1
- package/dist/headless/components/feedBack/modal/modal.js +71 -53
- package/dist/headless/components/feedBack/modal/modal.js.map +1 -1
- package/dist/headless/components/feedBack/skeleton/skeleton.js +43 -35
- package/dist/headless/components/feedBack/skeleton/skeleton.js.map +1 -1
- package/dist/headless/components/feedBack/snackbar/snackbar.js +30 -26
- package/dist/headless/components/feedBack/snackbar/snackbar.js.map +1 -1
- package/dist/headless/components/feedBack/tooltip/tooltip.js +63 -39
- package/dist/headless/components/feedBack/tooltip/tooltip.js.map +1 -1
- package/dist/headless/components/inputs/button/button.js +71 -36
- package/dist/headless/components/inputs/button/button.js.map +1 -1
- package/dist/headless/components/inputs/buttonGroups/buttonGroup.js +22 -18
- package/dist/headless/components/inputs/buttonGroups/buttonGroup.js.map +1 -1
- package/dist/headless/components/inputs/checkbox/checkbox.js +59 -36
- package/dist/headless/components/inputs/checkbox/checkbox.js.map +1 -1
- package/dist/headless/components/inputs/composer/composer.js +274 -0
- package/dist/headless/components/inputs/composer/composer.js.map +1 -0
- package/dist/headless/components/inputs/composer/composerFiles.js +18 -0
- package/dist/headless/components/inputs/composer/composerFiles.js.map +1 -0
- package/dist/headless/components/inputs/composer/composerKeys.js +7 -0
- package/dist/headless/components/inputs/composer/composerKeys.js.map +1 -0
- package/dist/headless/components/inputs/datePicker/datePicker.js +106 -95
- package/dist/headless/components/inputs/datePicker/datePicker.js.map +1 -1
- package/dist/headless/components/inputs/datePicker/datePickerActionLabel.js +19 -17
- package/dist/headless/components/inputs/datePicker/datePickerActionLabel.js.map +1 -1
- package/dist/headless/components/inputs/datePicker/datePickerDay.js +41 -25
- package/dist/headless/components/inputs/datePicker/datePickerDay.js.map +1 -1
- package/dist/headless/components/inputs/datePicker/datePickerIconButton.js +24 -14
- package/dist/headless/components/inputs/datePicker/datePickerIconButton.js.map +1 -1
- package/dist/headless/components/inputs/dateTimePicker/dateTimePicker.js +90 -79
- package/dist/headless/components/inputs/dateTimePicker/dateTimePicker.js.map +1 -1
- package/dist/headless/components/inputs/floatingButton/floatingButton.js +25 -15
- package/dist/headless/components/inputs/floatingButton/floatingButton.js.map +1 -1
- package/dist/headless/components/inputs/radioButton/radioButton.js +48 -34
- package/dist/headless/components/inputs/radioButton/radioButton.js.map +1 -1
- package/dist/headless/components/inputs/rating/rating.js +74 -53
- package/dist/headless/components/inputs/rating/rating.js.map +1 -1
- package/dist/headless/components/inputs/selectField/dropdownMenu.js +268 -143
- package/dist/headless/components/inputs/selectField/dropdownMenu.js.map +1 -1
- package/dist/headless/components/inputs/selectField/optionNavigation.js +37 -0
- package/dist/headless/components/inputs/selectField/optionNavigation.js.map +1 -0
- package/dist/headless/components/inputs/selectField/selectField.js +297 -126
- package/dist/headless/components/inputs/selectField/selectField.js.map +1 -1
- package/dist/headless/components/inputs/slider/slider.js +320 -197
- package/dist/headless/components/inputs/slider/slider.js.map +1 -1
- package/dist/headless/components/inputs/textField/textField.js +104 -51
- package/dist/headless/components/inputs/textField/textField.js.map +1 -1
- package/dist/headless/components/inputs/textField/textFieldWrapper.js +52 -45
- package/dist/headless/components/inputs/textField/textFieldWrapper.js.map +1 -1
- package/dist/headless/components/inputs/timePicker/timePicker.js +74 -63
- package/dist/headless/components/inputs/timePicker/timePicker.js.map +1 -1
- package/dist/headless/components/inputs/toggle/toggle.js +42 -30
- package/dist/headless/components/inputs/toggle/toggle.js.map +1 -1
- package/dist/headless/components/inputs/valueSlider/valueSlider.js +33 -28
- package/dist/headless/components/inputs/valueSlider/valueSlider.js.map +1 -1
- package/dist/headless/components/layout/appLayout/appLayout.js +29 -27
- package/dist/headless/components/layout/appLayout/appLayout.js.map +1 -1
- package/dist/headless/components/layout/divider/divider.js +19 -17
- package/dist/headless/components/layout/divider/divider.js.map +1 -1
- package/dist/headless/components/layout/floatingWindow/floatingWindow.js +185 -182
- package/dist/headless/components/layout/floatingWindow/floatingWindow.js.map +1 -1
- package/dist/headless/components/layout/grid/grid.js +54 -46
- package/dist/headless/components/layout/grid/grid.js.map +1 -1
- package/dist/headless/components/layout/page/page.js +12 -10
- package/dist/headless/components/layout/page/page.js.map +1 -1
- package/dist/headless/components/layout/pageHeader/pageHeader.js +22 -20
- package/dist/headless/components/layout/pageHeader/pageHeader.js.map +1 -1
- package/dist/headless/components/layout/sectionHeader/sectionHeader.js +39 -37
- package/dist/headless/components/layout/sectionHeader/sectionHeader.js.map +1 -1
- package/dist/headless/components/layout/sheet/sheet.js +101 -85
- package/dist/headless/components/layout/sheet/sheet.js.map +1 -1
- package/dist/headless/components/layout/stack/stack.js +23 -21
- package/dist/headless/components/layout/stack/stack.js.map +1 -1
- package/dist/headless/components/layout/tabGroups/tabGroups.js +893 -0
- package/dist/headless/components/layout/tabGroups/tabGroups.js.map +1 -0
- package/dist/headless/components/layout/tabGroups/tabGroupsFocus.js +192 -0
- package/dist/headless/components/layout/tabGroups/tabGroupsFocus.js.map +1 -0
- package/dist/headless/components/layout/tabGroups/tabGroupsLayout.js +480 -0
- package/dist/headless/components/layout/tabGroups/tabGroupsLayout.js.map +1 -0
- package/dist/headless/components/navigation/appBar/appBar.js +68 -28
- package/dist/headless/components/navigation/appBar/appBar.js.map +1 -1
- package/dist/headless/components/navigation/bottomBar/bottomBar.js +125 -120
- package/dist/headless/components/navigation/bottomBar/bottomBar.js.map +1 -1
- package/dist/headless/components/navigation/breadcrumbs/breadcrumbs.js +13 -9
- package/dist/headless/components/navigation/breadcrumbs/breadcrumbs.js.map +1 -1
- package/dist/headless/components/navigation/commandPalette/commandPalette.js +455 -0
- package/dist/headless/components/navigation/commandPalette/commandPalette.js.map +1 -0
- package/dist/headless/components/navigation/commandPalette/commandPaletteFilter.js +15 -0
- package/dist/headless/components/navigation/commandPalette/commandPaletteFilter.js.map +1 -0
- package/dist/headless/components/navigation/commandPalette/commandPaletteNavigation.js +38 -0
- package/dist/headless/components/navigation/commandPalette/commandPaletteNavigation.js.map +1 -0
- package/dist/headless/components/navigation/menu/menu.js.map +1 -1
- package/dist/headless/components/navigation/menu/menuComponent.js +12 -23
- package/dist/headless/components/navigation/menu/menuComponent.js.map +1 -1
- package/dist/headless/components/navigation/menu/menuContext.js.map +1 -1
- package/dist/headless/components/navigation/menu/menuFloating.js +54 -46
- package/dist/headless/components/navigation/menu/menuFloating.js.map +1 -1
- package/dist/headless/components/navigation/menu/menuItem.js +58 -33
- package/dist/headless/components/navigation/menu/menuItem.js.map +1 -1
- package/dist/headless/components/navigation/menu/menuList.js +34 -16
- package/dist/headless/components/navigation/menu/menuList.js.map +1 -1
- package/dist/headless/components/navigation/menu/menuSubmenu.js +58 -38
- package/dist/headless/components/navigation/menu/menuSubmenu.js.map +1 -1
- package/dist/headless/components/navigation/pagination/pagination.js +23 -19
- package/dist/headless/components/navigation/pagination/pagination.js.map +1 -1
- package/dist/headless/components/navigation/sidebar/sidebar.js +39 -35
- package/dist/headless/components/navigation/sidebar/sidebar.js.map +1 -1
- package/dist/headless/components/navigation/stepper/stepper.js +38 -34
- package/dist/headless/components/navigation/stepper/stepper.js.map +1 -1
- package/dist/headless/components/navigation/tabs/tab/tab.js +175 -44
- package/dist/headless/components/navigation/tabs/tab/tab.js.map +1 -1
- package/dist/headless/components/navigation/tabs/tabPanel/tabPanel.js +32 -0
- package/dist/headless/components/navigation/tabs/tabPanel/tabPanel.js.map +1 -0
- package/dist/headless/components/navigation/tabs/tabs.js +389 -147
- package/dist/headless/components/navigation/tabs/tabs.js.map +1 -1
- package/dist/headless/components/navigation/tabs/tabs.utils.js +11 -0
- package/dist/headless/components/navigation/tabs/tabs.utils.js.map +1 -0
- package/dist/headless/components/navigation/tabs/tabsContext.js.map +1 -1
- package/dist/headless/index.js +405 -363
- package/dist/headless/index.js.map +1 -1
- package/dist/headless/primitives/createDismissOnEscape.js +14 -0
- package/dist/headless/primitives/createDismissOnEscape.js.map +1 -0
- package/dist/headless/primitives/createFocusTrap.js +17 -16
- package/dist/headless/primitives/createFocusTrap.js.map +1 -1
- package/dist/headless/primitives/createHelperText.js +14 -0
- package/dist/headless/primitives/createHelperText.js.map +1 -0
- package/dist/headless/primitives/createKeyboardShortcut.js +16 -0
- package/dist/headless/primitives/createKeyboardShortcut.js.map +1 -0
- package/dist/headless/primitives/mergeStyle.js +9 -0
- package/dist/headless/primitives/mergeStyle.js.map +1 -0
- package/dist/headless/primitives/overlayLayer.js +14 -7
- package/dist/headless/primitives/overlayLayer.js.map +1 -1
- package/dist/headless/primitives/restoreFocus.js +10 -0
- package/dist/headless/primitives/restoreFocus.js.map +1 -0
- package/dist/headless/source/components/base/animateHeight/animateHeight.jsx +7 -11
- package/dist/headless/source/components/base/animateHeight/animateHeight.jsx.map +1 -1
- package/dist/headless/source/components/base/icon/icon.jsx +10 -12
- package/dist/headless/source/components/base/icon/icon.jsx.map +1 -1
- package/dist/headless/source/components/base/ripple/ripple.jsx +16 -4
- package/dist/headless/source/components/base/ripple/ripple.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/avatar/avatar.jsx +14 -7
- package/dist/headless/source/components/dataDisplay/avatar/avatar.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/card/card.jsx +31 -12
- package/dist/headless/source/components/dataDisplay/card/card.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/carousel/carousel.jsx +9 -3
- package/dist/headless/source/components/dataDisplay/carousel/carousel.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/chart/chart.jsx +5 -4
- package/dist/headless/source/components/dataDisplay/chart/chart.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/chat/chat.jsx +38 -4
- package/dist/headless/source/components/dataDisplay/chat/chat.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/chat/chatComposer.jsx +1 -0
- package/dist/headless/source/components/dataDisplay/chat/chatComposer.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/chat/chatIconButton.jsx +13 -3
- package/dist/headless/source/components/dataDisplay/chat/chatIconButton.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/chat/chatLayout.jsx +6 -7
- package/dist/headless/source/components/dataDisplay/chat/chatLayout.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/chat/chatOverlayLayout.jsx +5 -6
- package/dist/headless/source/components/dataDisplay/chat/chatOverlayLayout.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/chat/index.js.map +1 -1
- package/dist/headless/source/components/dataDisplay/chat/utils.js.map +2 -2
- package/dist/headless/source/components/dataDisplay/chip/chip.jsx +55 -19
- package/dist/headless/source/components/dataDisplay/chip/chip.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/chipGroup/chipGroup.jsx +14 -11
- package/dist/headless/source/components/dataDisplay/chipGroup/chipGroup.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/dagView/dagLayout.js +383 -0
- package/dist/headless/source/components/dataDisplay/dagView/dagLayout.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/dagView/dagView.jsx +648 -0
- package/dist/headless/source/components/dataDisplay/dagView/dagView.jsx.map +1 -0
- package/dist/headless/source/components/dataDisplay/dagView/index.js +10 -0
- package/dist/headless/source/components/dataDisplay/dagView/index.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/dagView/panZoom.js +247 -0
- package/dist/headless/source/components/dataDisplay/dagView/panZoom.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/descriptionList/descriptionList.jsx +4 -6
- package/dist/headless/source/components/dataDisplay/descriptionList/descriptionList.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/diffStat/diffStat.jsx +76 -0
- package/dist/headless/source/components/dataDisplay/diffStat/diffStat.jsx.map +1 -0
- package/dist/headless/source/components/dataDisplay/diffStat/index.js +19 -0
- package/dist/headless/source/components/dataDisplay/diffStat/index.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/expansionPanel/expansionPanel.jsx +83 -9
- package/dist/headless/source/components/dataDisplay/expansionPanel/expansionPanel.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/kanban/kanban.jsx +20 -10
- package/dist/headless/source/components/dataDisplay/kanban/kanban.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/kbd/index.js +9 -0
- package/dist/headless/source/components/dataDisplay/kbd/index.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/kbd/kbd.jsx +48 -0
- package/dist/headless/source/components/dataDisplay/kbd/kbd.jsx.map +1 -0
- package/dist/headless/source/components/dataDisplay/kbd/kbdKeys.js +79 -0
- package/dist/headless/source/components/dataDisplay/kbd/kbdKeys.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/lazyImage/lazyImage.jsx +1 -1
- package/dist/headless/source/components/dataDisplay/lazyImage/lazyImage.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/list/list.jsx +3 -3
- package/dist/headless/source/components/dataDisplay/list/list.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/list/listItem.jsx +47 -16
- package/dist/headless/source/components/dataDisplay/list/listItem.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/meter/meter.jsx +3 -2
- package/dist/headless/source/components/dataDisplay/meter/meter.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/personChip/personChip.jsx +3 -2
- package/dist/headless/source/components/dataDisplay/personChip/personChip.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/qrCode/index.js +6 -0
- package/dist/headless/source/components/dataDisplay/qrCode/index.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/qrCode/qrCode.jsx +94 -0
- package/dist/headless/source/components/dataDisplay/qrCode/qrCode.jsx.map +1 -0
- package/dist/headless/source/components/dataDisplay/qrCode/qrCodePath.js +24 -0
- package/dist/headless/source/components/dataDisplay/qrCode/qrCodePath.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/stat/stat.jsx +7 -8
- package/dist/headless/source/components/dataDisplay/stat/stat.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/statusDot/index.js +6 -0
- package/dist/headless/source/components/dataDisplay/statusDot/index.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/statusDot/statusDot.jsx +28 -0
- package/dist/headless/source/components/dataDisplay/statusDot/statusDot.jsx.map +1 -0
- package/dist/headless/source/components/dataDisplay/swimlanes/index.js +15 -0
- package/dist/headless/source/components/dataDisplay/swimlanes/index.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/swimlanes/swimlanes.jsx +450 -0
- package/dist/headless/source/components/dataDisplay/swimlanes/swimlanes.jsx.map +1 -0
- package/dist/headless/source/components/dataDisplay/table/table.jsx +18 -1
- package/dist/headless/source/components/dataDisplay/table/table.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/table/tableBody.jsx +6 -1
- package/dist/headless/source/components/dataDisplay/table/tableBody.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/table/tableCell.jsx +13 -4
- package/dist/headless/source/components/dataDisplay/table/tableCell.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/table/tableColumns.jsx +311 -0
- package/dist/headless/source/components/dataDisplay/table/tableColumns.jsx.map +1 -0
- package/dist/headless/source/components/dataDisplay/table/tableEntities.js +7 -0
- package/dist/headless/source/components/dataDisplay/table/tableEntities.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/table/tableHead.jsx +14 -1
- package/dist/headless/source/components/dataDisplay/table/tableHead.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/table/tableHeadCell.jsx +51 -33
- package/dist/headless/source/components/dataDisplay/table/tableHeadCell.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/table/tableHtmlText.js +140 -0
- package/dist/headless/source/components/dataDisplay/table/tableHtmlText.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/table/tableRow.jsx +11 -5
- package/dist/headless/source/components/dataDisplay/table/tableRow.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/thumbCard/thumbCard.jsx +48 -19
- package/dist/headless/source/components/dataDisplay/thumbCard/thumbCard.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/treeView/treeView.jsx +127 -39
- package/dist/headless/source/components/dataDisplay/treeView/treeView.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/typography/typography.jsx +2 -6
- package/dist/headless/source/components/dataDisplay/typography/typography.jsx.map +1 -1
- package/dist/headless/source/components/feedBack/emptyState/emptyState.jsx +12 -2
- package/dist/headless/source/components/feedBack/emptyState/emptyState.jsx.map +1 -1
- package/dist/headless/source/components/feedBack/message/message.jsx +5 -4
- package/dist/headless/source/components/feedBack/message/message.jsx.map +1 -1
- package/dist/headless/source/components/feedBack/modal/modal.jsx +39 -6
- package/dist/headless/source/components/feedBack/modal/modal.jsx.map +1 -1
- package/dist/headless/source/components/feedBack/skeleton/skeleton.jsx +12 -5
- package/dist/headless/source/components/feedBack/skeleton/skeleton.jsx.map +1 -1
- package/dist/headless/source/components/feedBack/snackbar/snackbar.jsx +3 -3
- package/dist/headless/source/components/feedBack/snackbar/snackbar.jsx.map +1 -1
- package/dist/headless/source/components/feedBack/tooltip/tooltip.jsx +52 -5
- package/dist/headless/source/components/feedBack/tooltip/tooltip.jsx.map +1 -1
- package/dist/headless/source/components/inputs/button/button.jsx +14 -5
- package/dist/headless/source/components/inputs/button/button.jsx.map +1 -1
- package/dist/headless/source/components/inputs/buttonGroups/buttonGroup.jsx +4 -3
- package/dist/headless/source/components/inputs/buttonGroups/buttonGroup.jsx.map +1 -1
- package/dist/headless/source/components/inputs/checkbox/checkbox.jsx +27 -4
- package/dist/headless/source/components/inputs/checkbox/checkbox.jsx.map +1 -1
- package/dist/headless/source/components/inputs/composer/composer.jsx +319 -0
- package/dist/headless/source/components/inputs/composer/composer.jsx.map +1 -0
- package/dist/headless/source/components/inputs/composer/composerFiles.js +27 -0
- package/dist/headless/source/components/inputs/composer/composerFiles.js.map +7 -0
- package/dist/headless/source/components/inputs/composer/composerKeys.js +11 -0
- package/dist/headless/source/components/inputs/composer/composerKeys.js.map +7 -0
- package/dist/headless/source/components/inputs/composer/index.js +5 -0
- package/dist/headless/source/components/inputs/composer/index.js.map +7 -0
- package/dist/headless/source/components/inputs/datePicker/datePicker.jsx +13 -0
- package/dist/headless/source/components/inputs/datePicker/datePicker.jsx.map +1 -1
- package/dist/headless/source/components/inputs/datePicker/datePickerActionLabel.jsx +4 -1
- package/dist/headless/source/components/inputs/datePicker/datePickerActionLabel.jsx.map +1 -1
- package/dist/headless/source/components/inputs/datePicker/datePickerDay.jsx +12 -12
- package/dist/headless/source/components/inputs/datePicker/datePickerDay.jsx.map +1 -1
- package/dist/headless/source/components/inputs/datePicker/datePickerIconButton.jsx +13 -3
- package/dist/headless/source/components/inputs/datePicker/datePickerIconButton.jsx.map +1 -1
- package/dist/headless/source/components/inputs/dateTimePicker/dateTimePicker.jsx +13 -0
- package/dist/headless/source/components/inputs/dateTimePicker/dateTimePicker.jsx.map +1 -1
- package/dist/headless/source/components/inputs/floatingButton/floatingButton.jsx +12 -1
- package/dist/headless/source/components/inputs/floatingButton/floatingButton.jsx.map +1 -1
- package/dist/headless/source/components/inputs/radioButton/radioButton.jsx +16 -4
- package/dist/headless/source/components/inputs/radioButton/radioButton.jsx.map +1 -1
- package/dist/headless/source/components/inputs/rating/rating.jsx +49 -20
- package/dist/headless/source/components/inputs/rating/rating.jsx.map +1 -1
- package/dist/headless/source/components/inputs/selectField/dropdownMenu.jsx +222 -61
- package/dist/headless/source/components/inputs/selectField/dropdownMenu.jsx.map +1 -1
- package/dist/headless/source/components/inputs/selectField/optionNavigation.js +51 -0
- package/dist/headless/source/components/inputs/selectField/optionNavigation.js.map +7 -0
- package/dist/headless/source/components/inputs/selectField/selectField.jsx +318 -92
- package/dist/headless/source/components/inputs/selectField/selectField.jsx.map +1 -1
- package/dist/headless/source/components/inputs/slider/slider.jsx +89 -18
- package/dist/headless/source/components/inputs/slider/slider.jsx.map +1 -1
- package/dist/headless/source/components/inputs/textField/textField.jsx +47 -9
- package/dist/headless/source/components/inputs/textField/textField.jsx.map +1 -1
- package/dist/headless/source/components/inputs/textField/textFieldWrapper.jsx +20 -6
- package/dist/headless/source/components/inputs/textField/textFieldWrapper.jsx.map +1 -1
- package/dist/headless/source/components/inputs/timePicker/timePicker.jsx +13 -0
- package/dist/headless/source/components/inputs/timePicker/timePicker.jsx.map +1 -1
- package/dist/headless/source/components/inputs/toggle/toggle.jsx +14 -2
- package/dist/headless/source/components/inputs/toggle/toggle.jsx.map +1 -1
- package/dist/headless/source/components/inputs/valueSlider/valueSlider.jsx +7 -2
- package/dist/headless/source/components/inputs/valueSlider/valueSlider.jsx.map +1 -1
- package/dist/headless/source/components/layout/appLayout/appLayout.jsx +8 -6
- package/dist/headless/source/components/layout/appLayout/appLayout.jsx.map +1 -1
- package/dist/headless/source/components/layout/divider/divider.jsx +6 -5
- package/dist/headless/source/components/layout/divider/divider.jsx.map +1 -1
- package/dist/headless/source/components/layout/floatingWindow/floatingWindow.jsx +17 -11
- package/dist/headless/source/components/layout/floatingWindow/floatingWindow.jsx.map +1 -1
- package/dist/headless/source/components/layout/grid/grid.jsx +20 -8
- package/dist/headless/source/components/layout/grid/grid.jsx.map +1 -1
- package/dist/headless/source/components/layout/page/page.jsx +10 -2
- package/dist/headless/source/components/layout/page/page.jsx.map +1 -1
- package/dist/headless/source/components/layout/pageHeader/pageHeader.jsx +3 -2
- package/dist/headless/source/components/layout/pageHeader/pageHeader.jsx.map +1 -1
- package/dist/headless/source/components/layout/sectionHeader/sectionHeader.jsx +5 -5
- package/dist/headless/source/components/layout/sectionHeader/sectionHeader.jsx.map +1 -1
- package/dist/headless/source/components/layout/sheet/sheet.jsx +39 -19
- package/dist/headless/source/components/layout/sheet/sheet.jsx.map +1 -1
- package/dist/headless/source/components/layout/stack/stack.jsx +15 -11
- package/dist/headless/source/components/layout/stack/stack.jsx.map +1 -1
- package/dist/headless/source/components/layout/tabGroups/index.js +8 -0
- package/dist/headless/source/components/layout/tabGroups/index.js.map +7 -0
- package/dist/headless/source/components/layout/tabGroups/tabGroups.jsx +1117 -0
- package/dist/headless/source/components/layout/tabGroups/tabGroups.jsx.map +1 -0
- package/dist/headless/source/components/layout/tabGroups/tabGroupsFocus.js +222 -0
- package/dist/headless/source/components/layout/tabGroups/tabGroupsFocus.js.map +7 -0
- package/dist/headless/source/components/layout/tabGroups/tabGroupsLayout.js +629 -0
- package/dist/headless/source/components/layout/tabGroups/tabGroupsLayout.js.map +7 -0
- package/dist/headless/source/components/navigation/appBar/appBar.jsx +30 -5
- package/dist/headless/source/components/navigation/appBar/appBar.jsx.map +1 -1
- package/dist/headless/source/components/navigation/bottomBar/bottomBar.jsx +48 -40
- package/dist/headless/source/components/navigation/bottomBar/bottomBar.jsx.map +1 -1
- package/dist/headless/source/components/navigation/breadcrumbs/breadcrumbs.jsx +9 -2
- package/dist/headless/source/components/navigation/breadcrumbs/breadcrumbs.jsx.map +1 -1
- package/dist/headless/source/components/navigation/commandPalette/commandPalette.jsx +506 -0
- package/dist/headless/source/components/navigation/commandPalette/commandPalette.jsx.map +1 -0
- package/dist/headless/source/components/navigation/commandPalette/commandPaletteFilter.js +16 -0
- package/dist/headless/source/components/navigation/commandPalette/commandPaletteFilter.js.map +7 -0
- package/dist/headless/source/components/navigation/commandPalette/commandPaletteNavigation.js +54 -0
- package/dist/headless/source/components/navigation/commandPalette/commandPaletteNavigation.js.map +7 -0
- package/dist/headless/source/components/navigation/commandPalette/commandPaletteTypes.js +1 -0
- package/dist/headless/source/components/navigation/commandPalette/commandPaletteTypes.js.map +7 -0
- package/dist/headless/source/components/navigation/commandPalette/index.js +11 -0
- package/dist/headless/source/components/navigation/commandPalette/index.js.map +7 -0
- package/dist/headless/source/components/navigation/menu/menu.jsx.map +1 -1
- package/dist/headless/source/components/navigation/menu/menuComponent.jsx +3 -4
- package/dist/headless/source/components/navigation/menu/menuComponent.jsx.map +1 -1
- package/dist/headless/source/components/navigation/menu/menuContext.js.map +2 -2
- package/dist/headless/source/components/navigation/menu/menuFloating.jsx +26 -4
- package/dist/headless/source/components/navigation/menu/menuFloating.jsx.map +1 -1
- package/dist/headless/source/components/navigation/menu/menuItem.jsx +22 -2
- package/dist/headless/source/components/navigation/menu/menuItem.jsx.map +1 -1
- package/dist/headless/source/components/navigation/menu/menuList.jsx +19 -7
- package/dist/headless/source/components/navigation/menu/menuList.jsx.map +1 -1
- package/dist/headless/source/components/navigation/menu/menuSubmenu.jsx +36 -4
- package/dist/headless/source/components/navigation/menu/menuSubmenu.jsx.map +1 -1
- package/dist/headless/source/components/navigation/pagination/pagination.jsx +4 -3
- package/dist/headless/source/components/navigation/pagination/pagination.jsx.map +1 -1
- package/dist/headless/source/components/navigation/sidebar/sidebar.jsx +6 -3
- package/dist/headless/source/components/navigation/sidebar/sidebar.jsx.map +1 -1
- package/dist/headless/source/components/navigation/stepper/stepper.jsx +14 -9
- package/dist/headless/source/components/navigation/stepper/stepper.jsx.map +1 -1
- package/dist/headless/source/components/navigation/tabs/index.js +2 -0
- package/dist/headless/source/components/navigation/tabs/index.js.map +2 -2
- package/dist/headless/source/components/navigation/tabs/tab/tab.jsx +144 -21
- package/dist/headless/source/components/navigation/tabs/tab/tab.jsx.map +1 -1
- package/dist/headless/source/components/navigation/tabs/tabPanel/tabPanel.jsx +28 -0
- package/dist/headless/source/components/navigation/tabs/tabPanel/tabPanel.jsx.map +1 -0
- package/dist/headless/source/components/navigation/tabs/tabs.jsx +392 -20
- package/dist/headless/source/components/navigation/tabs/tabs.jsx.map +1 -1
- package/dist/headless/source/components/navigation/tabs/tabs.utils.js +18 -0
- package/dist/headless/source/components/navigation/tabs/tabs.utils.js.map +7 -0
- package/dist/headless/source/components/navigation/tabs/tabsContext.js.map +2 -2
- package/dist/headless/source/connects/rt/table/table.jsx +7 -2
- package/dist/headless/source/connects/rt/table/table.jsx.map +1 -1
- package/dist/headless/source/index.js +44 -1
- package/dist/headless/source/index.js.map +2 -2
- package/dist/headless/source/primitives/createDismissOnEscape.js +17 -0
- package/dist/headless/source/primitives/createDismissOnEscape.js.map +7 -0
- package/dist/headless/source/primitives/createFocusTrap.js +9 -3
- package/dist/headless/source/primitives/createFocusTrap.js.map +2 -2
- package/dist/headless/source/primitives/createHelperText.js +16 -0
- package/dist/headless/source/primitives/createHelperText.js.map +7 -0
- package/dist/headless/source/primitives/createKeyboardShortcut.js +23 -0
- package/dist/headless/source/primitives/createKeyboardShortcut.js.map +7 -0
- package/dist/headless/source/primitives/mergeStyle.js +15 -0
- package/dist/headless/source/primitives/mergeStyle.js.map +7 -0
- package/dist/headless/source/primitives/overlayLayer.js +10 -2
- package/dist/headless/source/primitives/overlayLayer.js.map +2 -2
- package/dist/headless/source/primitives/restoreFocus.js +14 -0
- package/dist/headless/source/primitives/restoreFocus.js.map +7 -0
- package/dist/headless/source/utils/controlProps.js +22 -0
- package/dist/headless/source/utils/controlProps.js.map +7 -0
- package/dist/headless/source/utils/keyboardShortcut.js +74 -0
- package/dist/headless/source/utils/keyboardShortcut.js.map +7 -0
- package/dist/headless/source/utils/linkAttrs.js +16 -0
- package/dist/headless/source/utils/linkAttrs.js.map +7 -0
- package/dist/headless/source/utils/ownClick.js +41 -0
- package/dist/headless/source/utils/ownClick.js.map +7 -0
- package/dist/headless/utils/controlProps.js +20 -0
- package/dist/headless/utils/controlProps.js.map +1 -0
- package/dist/headless/utils/keyboardShortcut.js +48 -0
- package/dist/headless/utils/keyboardShortcut.js.map +1 -0
- package/dist/headless/utils/linkAttrs.js +13 -0
- package/dist/headless/utils/linkAttrs.js.map +1 -0
- package/dist/headless/utils/ownClick.js +39 -0
- package/dist/headless/utils/ownClick.js.map +1 -0
- package/dist/index.d.ts +26 -3
- package/dist/index.js +405 -363
- package/dist/index.js.map +1 -1
- package/dist/primitives/createDismissOnEscape.d.ts +12 -0
- package/dist/primitives/createDismissOnEscape.js +14 -0
- package/dist/primitives/createDismissOnEscape.js.map +1 -0
- package/dist/primitives/createFocusTrap.d.ts +7 -0
- package/dist/primitives/createFocusTrap.js +17 -16
- package/dist/primitives/createFocusTrap.js.map +1 -1
- package/dist/primitives/createHelperText.d.ts +26 -0
- package/dist/primitives/createHelperText.js +14 -0
- package/dist/primitives/createHelperText.js.map +1 -0
- package/dist/primitives/createKeyboardShortcut.d.ts +23 -0
- package/dist/primitives/createKeyboardShortcut.js +16 -0
- package/dist/primitives/createKeyboardShortcut.js.map +1 -0
- package/dist/primitives/mergeStyle.d.ts +19 -0
- package/dist/primitives/mergeStyle.js +9 -0
- package/dist/primitives/mergeStyle.js.map +1 -0
- package/dist/primitives/overlayLayer.d.ts +15 -3
- package/dist/primitives/overlayLayer.js +14 -7
- package/dist/primitives/overlayLayer.js.map +1 -1
- package/dist/primitives/restoreFocus.d.ts +8 -0
- package/dist/primitives/restoreFocus.js +10 -0
- package/dist/primitives/restoreFocus.js.map +1 -0
- package/dist/source/components/base/animateHeight/animateHeight.jsx +7 -11
- package/dist/source/components/base/animateHeight/animateHeight.jsx.map +1 -1
- package/dist/source/components/base/icon/icon.jsx +10 -12
- package/dist/source/components/base/icon/icon.jsx.map +1 -1
- package/dist/source/components/base/ripple/ripple.jsx +16 -4
- package/dist/source/components/base/ripple/ripple.jsx.map +1 -1
- package/dist/source/components/dataDisplay/avatar/avatar.jsx +14 -7
- package/dist/source/components/dataDisplay/avatar/avatar.jsx.map +1 -1
- package/dist/source/components/dataDisplay/card/card.jsx +31 -12
- package/dist/source/components/dataDisplay/card/card.jsx.map +1 -1
- package/dist/source/components/dataDisplay/carousel/carousel.jsx +9 -3
- package/dist/source/components/dataDisplay/carousel/carousel.jsx.map +1 -1
- package/dist/source/components/dataDisplay/chart/chart.jsx +5 -4
- package/dist/source/components/dataDisplay/chart/chart.jsx.map +1 -1
- package/dist/source/components/dataDisplay/chat/chat.jsx +38 -4
- package/dist/source/components/dataDisplay/chat/chat.jsx.map +1 -1
- package/dist/source/components/dataDisplay/chat/chatComposer.jsx +1 -0
- package/dist/source/components/dataDisplay/chat/chatComposer.jsx.map +1 -1
- package/dist/source/components/dataDisplay/chat/chatIconButton.jsx +13 -3
- package/dist/source/components/dataDisplay/chat/chatIconButton.jsx.map +1 -1
- package/dist/source/components/dataDisplay/chat/chatLayout.jsx +6 -7
- package/dist/source/components/dataDisplay/chat/chatLayout.jsx.map +1 -1
- package/dist/source/components/dataDisplay/chat/chatOverlayLayout.jsx +5 -6
- package/dist/source/components/dataDisplay/chat/chatOverlayLayout.jsx.map +1 -1
- package/dist/source/components/dataDisplay/chat/index.js.map +1 -1
- package/dist/source/components/dataDisplay/chat/utils.js.map +2 -2
- package/dist/source/components/dataDisplay/chip/chip.jsx +55 -19
- package/dist/source/components/dataDisplay/chip/chip.jsx.map +1 -1
- package/dist/source/components/dataDisplay/chipGroup/chipGroup.jsx +14 -11
- package/dist/source/components/dataDisplay/chipGroup/chipGroup.jsx.map +1 -1
- package/dist/source/components/dataDisplay/dagView/dagLayout.js +383 -0
- package/dist/source/components/dataDisplay/dagView/dagLayout.js.map +7 -0
- package/dist/source/components/dataDisplay/dagView/dagView.jsx +650 -0
- package/dist/source/components/dataDisplay/dagView/dagView.jsx.map +1 -0
- package/dist/source/components/dataDisplay/dagView/index.js +10 -0
- package/dist/source/components/dataDisplay/dagView/index.js.map +7 -0
- package/dist/source/components/dataDisplay/dagView/panZoom.js +247 -0
- package/dist/source/components/dataDisplay/dagView/panZoom.js.map +7 -0
- package/dist/source/components/dataDisplay/descriptionList/descriptionList.jsx +4 -6
- package/dist/source/components/dataDisplay/descriptionList/descriptionList.jsx.map +1 -1
- package/dist/source/components/dataDisplay/diffStat/diffStat.jsx +78 -0
- package/dist/source/components/dataDisplay/diffStat/diffStat.jsx.map +1 -0
- package/dist/source/components/dataDisplay/diffStat/index.js +19 -0
- package/dist/source/components/dataDisplay/diffStat/index.js.map +7 -0
- package/dist/source/components/dataDisplay/expansionPanel/expansionPanel.jsx +83 -9
- package/dist/source/components/dataDisplay/expansionPanel/expansionPanel.jsx.map +1 -1
- package/dist/source/components/dataDisplay/kanban/kanban.jsx +20 -10
- package/dist/source/components/dataDisplay/kanban/kanban.jsx.map +1 -1
- package/dist/source/components/dataDisplay/kbd/index.js +9 -0
- package/dist/source/components/dataDisplay/kbd/index.js.map +7 -0
- package/dist/source/components/dataDisplay/kbd/kbd.jsx +50 -0
- package/dist/source/components/dataDisplay/kbd/kbd.jsx.map +1 -0
- package/dist/source/components/dataDisplay/kbd/kbdKeys.js +79 -0
- package/dist/source/components/dataDisplay/kbd/kbdKeys.js.map +7 -0
- package/dist/source/components/dataDisplay/lazyImage/lazyImage.jsx +1 -1
- package/dist/source/components/dataDisplay/lazyImage/lazyImage.jsx.map +1 -1
- package/dist/source/components/dataDisplay/list/list.jsx +3 -3
- package/dist/source/components/dataDisplay/list/list.jsx.map +1 -1
- package/dist/source/components/dataDisplay/list/listItem.jsx +47 -16
- package/dist/source/components/dataDisplay/list/listItem.jsx.map +1 -1
- package/dist/source/components/dataDisplay/meter/meter.jsx +3 -2
- package/dist/source/components/dataDisplay/meter/meter.jsx.map +1 -1
- package/dist/source/components/dataDisplay/personChip/personChip.jsx +3 -2
- package/dist/source/components/dataDisplay/personChip/personChip.jsx.map +1 -1
- package/dist/source/components/dataDisplay/qrCode/index.js +6 -0
- package/dist/source/components/dataDisplay/qrCode/index.js.map +7 -0
- package/dist/source/components/dataDisplay/qrCode/qrCode.jsx +96 -0
- package/dist/source/components/dataDisplay/qrCode/qrCode.jsx.map +1 -0
- package/dist/source/components/dataDisplay/qrCode/qrCodePath.js +24 -0
- package/dist/source/components/dataDisplay/qrCode/qrCodePath.js.map +7 -0
- package/dist/source/components/dataDisplay/stat/stat.jsx +7 -8
- package/dist/source/components/dataDisplay/stat/stat.jsx.map +1 -1
- package/dist/source/components/dataDisplay/statusDot/index.js +6 -0
- package/dist/source/components/dataDisplay/statusDot/index.js.map +7 -0
- package/dist/source/components/dataDisplay/statusDot/statusDot.jsx +30 -0
- package/dist/source/components/dataDisplay/statusDot/statusDot.jsx.map +1 -0
- package/dist/source/components/dataDisplay/swimlanes/index.js +15 -0
- package/dist/source/components/dataDisplay/swimlanes/index.js.map +7 -0
- package/dist/source/components/dataDisplay/swimlanes/swimlanes.jsx +452 -0
- package/dist/source/components/dataDisplay/swimlanes/swimlanes.jsx.map +1 -0
- package/dist/source/components/dataDisplay/table/table.jsx +18 -1
- package/dist/source/components/dataDisplay/table/table.jsx.map +1 -1
- package/dist/source/components/dataDisplay/table/tableBody.jsx +6 -1
- package/dist/source/components/dataDisplay/table/tableBody.jsx.map +1 -1
- package/dist/source/components/dataDisplay/table/tableCell.jsx +13 -4
- package/dist/source/components/dataDisplay/table/tableCell.jsx.map +1 -1
- package/dist/source/components/dataDisplay/table/tableColumns.jsx +311 -0
- package/dist/source/components/dataDisplay/table/tableColumns.jsx.map +1 -0
- package/dist/source/components/dataDisplay/table/tableEntities.js +7 -0
- package/dist/source/components/dataDisplay/table/tableEntities.js.map +7 -0
- package/dist/source/components/dataDisplay/table/tableHead.jsx +14 -1
- package/dist/source/components/dataDisplay/table/tableHead.jsx.map +1 -1
- package/dist/source/components/dataDisplay/table/tableHeadCell.jsx +51 -33
- package/dist/source/components/dataDisplay/table/tableHeadCell.jsx.map +1 -1
- package/dist/source/components/dataDisplay/table/tableHtmlText.js +140 -0
- package/dist/source/components/dataDisplay/table/tableHtmlText.js.map +7 -0
- package/dist/source/components/dataDisplay/table/tableRow.jsx +11 -5
- package/dist/source/components/dataDisplay/table/tableRow.jsx.map +1 -1
- package/dist/source/components/dataDisplay/thumbCard/thumbCard.jsx +48 -19
- package/dist/source/components/dataDisplay/thumbCard/thumbCard.jsx.map +1 -1
- package/dist/source/components/dataDisplay/treeView/treeView.jsx +127 -39
- package/dist/source/components/dataDisplay/treeView/treeView.jsx.map +1 -1
- package/dist/source/components/dataDisplay/typography/typography.jsx +2 -6
- package/dist/source/components/dataDisplay/typography/typography.jsx.map +1 -1
- package/dist/source/components/feedBack/emptyState/emptyState.jsx +12 -2
- package/dist/source/components/feedBack/emptyState/emptyState.jsx.map +1 -1
- package/dist/source/components/feedBack/message/message.jsx +5 -4
- package/dist/source/components/feedBack/message/message.jsx.map +1 -1
- package/dist/source/components/feedBack/modal/modal.jsx +39 -6
- package/dist/source/components/feedBack/modal/modal.jsx.map +1 -1
- package/dist/source/components/feedBack/skeleton/skeleton.jsx +12 -5
- package/dist/source/components/feedBack/skeleton/skeleton.jsx.map +1 -1
- package/dist/source/components/feedBack/snackbar/snackbar.jsx +3 -3
- package/dist/source/components/feedBack/snackbar/snackbar.jsx.map +1 -1
- package/dist/source/components/feedBack/tooltip/tooltip.jsx +52 -5
- package/dist/source/components/feedBack/tooltip/tooltip.jsx.map +1 -1
- package/dist/source/components/inputs/button/button.jsx +14 -5
- package/dist/source/components/inputs/button/button.jsx.map +1 -1
- package/dist/source/components/inputs/buttonGroups/buttonGroup.jsx +4 -3
- package/dist/source/components/inputs/buttonGroups/buttonGroup.jsx.map +1 -1
- package/dist/source/components/inputs/checkbox/checkbox.jsx +27 -4
- package/dist/source/components/inputs/checkbox/checkbox.jsx.map +1 -1
- package/dist/source/components/inputs/composer/composer.jsx +321 -0
- package/dist/source/components/inputs/composer/composer.jsx.map +1 -0
- package/dist/source/components/inputs/composer/composerFiles.js +27 -0
- package/dist/source/components/inputs/composer/composerFiles.js.map +7 -0
- package/dist/source/components/inputs/composer/composerKeys.js +11 -0
- package/dist/source/components/inputs/composer/composerKeys.js.map +7 -0
- package/dist/source/components/inputs/composer/index.js +5 -0
- package/dist/source/components/inputs/composer/index.js.map +7 -0
- package/dist/source/components/inputs/datePicker/datePicker.jsx +13 -0
- package/dist/source/components/inputs/datePicker/datePicker.jsx.map +1 -1
- package/dist/source/components/inputs/datePicker/datePickerActionLabel.jsx +4 -1
- package/dist/source/components/inputs/datePicker/datePickerActionLabel.jsx.map +1 -1
- package/dist/source/components/inputs/datePicker/datePickerDay.jsx +12 -12
- package/dist/source/components/inputs/datePicker/datePickerDay.jsx.map +1 -1
- package/dist/source/components/inputs/datePicker/datePickerIconButton.jsx +13 -3
- package/dist/source/components/inputs/datePicker/datePickerIconButton.jsx.map +1 -1
- package/dist/source/components/inputs/dateTimePicker/dateTimePicker.jsx +13 -0
- package/dist/source/components/inputs/dateTimePicker/dateTimePicker.jsx.map +1 -1
- package/dist/source/components/inputs/floatingButton/floatingButton.jsx +12 -1
- package/dist/source/components/inputs/floatingButton/floatingButton.jsx.map +1 -1
- package/dist/source/components/inputs/radioButton/radioButton.jsx +16 -4
- package/dist/source/components/inputs/radioButton/radioButton.jsx.map +1 -1
- package/dist/source/components/inputs/rating/rating.jsx +49 -20
- package/dist/source/components/inputs/rating/rating.jsx.map +1 -1
- package/dist/source/components/inputs/selectField/dropdownMenu.jsx +222 -61
- package/dist/source/components/inputs/selectField/dropdownMenu.jsx.map +1 -1
- package/dist/source/components/inputs/selectField/optionNavigation.js +51 -0
- package/dist/source/components/inputs/selectField/optionNavigation.js.map +7 -0
- package/dist/source/components/inputs/selectField/selectField.jsx +318 -92
- package/dist/source/components/inputs/selectField/selectField.jsx.map +1 -1
- package/dist/source/components/inputs/slider/slider.jsx +89 -18
- package/dist/source/components/inputs/slider/slider.jsx.map +1 -1
- package/dist/source/components/inputs/textField/textField.jsx +47 -9
- package/dist/source/components/inputs/textField/textField.jsx.map +1 -1
- package/dist/source/components/inputs/textField/textFieldWrapper.jsx +20 -6
- package/dist/source/components/inputs/textField/textFieldWrapper.jsx.map +1 -1
- package/dist/source/components/inputs/timePicker/timePicker.jsx +13 -0
- package/dist/source/components/inputs/timePicker/timePicker.jsx.map +1 -1
- package/dist/source/components/inputs/toggle/toggle.jsx +14 -2
- package/dist/source/components/inputs/toggle/toggle.jsx.map +1 -1
- package/dist/source/components/inputs/valueSlider/valueSlider.jsx +7 -2
- package/dist/source/components/inputs/valueSlider/valueSlider.jsx.map +1 -1
- package/dist/source/components/layout/appLayout/appLayout.jsx +8 -6
- package/dist/source/components/layout/appLayout/appLayout.jsx.map +1 -1
- package/dist/source/components/layout/divider/divider.jsx +6 -5
- package/dist/source/components/layout/divider/divider.jsx.map +1 -1
- package/dist/source/components/layout/floatingWindow/floatingWindow.jsx +17 -11
- package/dist/source/components/layout/floatingWindow/floatingWindow.jsx.map +1 -1
- package/dist/source/components/layout/grid/grid.jsx +20 -8
- package/dist/source/components/layout/grid/grid.jsx.map +1 -1
- package/dist/source/components/layout/page/page.jsx +10 -2
- package/dist/source/components/layout/page/page.jsx.map +1 -1
- package/dist/source/components/layout/pageHeader/pageHeader.jsx +3 -2
- package/dist/source/components/layout/pageHeader/pageHeader.jsx.map +1 -1
- package/dist/source/components/layout/sectionHeader/sectionHeader.jsx +5 -5
- package/dist/source/components/layout/sectionHeader/sectionHeader.jsx.map +1 -1
- package/dist/source/components/layout/sheet/sheet.jsx +39 -19
- package/dist/source/components/layout/sheet/sheet.jsx.map +1 -1
- package/dist/source/components/layout/stack/stack.jsx +15 -11
- package/dist/source/components/layout/stack/stack.jsx.map +1 -1
- package/dist/source/components/layout/tabGroups/index.js +8 -0
- package/dist/source/components/layout/tabGroups/index.js.map +7 -0
- package/dist/source/components/layout/tabGroups/tabGroups.jsx +1119 -0
- package/dist/source/components/layout/tabGroups/tabGroups.jsx.map +1 -0
- package/dist/source/components/layout/tabGroups/tabGroupsFocus.js +222 -0
- package/dist/source/components/layout/tabGroups/tabGroupsFocus.js.map +7 -0
- package/dist/source/components/layout/tabGroups/tabGroupsLayout.js +629 -0
- package/dist/source/components/layout/tabGroups/tabGroupsLayout.js.map +7 -0
- package/dist/source/components/navigation/appBar/appBar.jsx +30 -5
- package/dist/source/components/navigation/appBar/appBar.jsx.map +1 -1
- package/dist/source/components/navigation/bottomBar/bottomBar.jsx +48 -40
- package/dist/source/components/navigation/bottomBar/bottomBar.jsx.map +1 -1
- package/dist/source/components/navigation/breadcrumbs/breadcrumbs.jsx +9 -2
- package/dist/source/components/navigation/breadcrumbs/breadcrumbs.jsx.map +1 -1
- package/dist/source/components/navigation/commandPalette/commandPalette.jsx +508 -0
- package/dist/source/components/navigation/commandPalette/commandPalette.jsx.map +1 -0
- package/dist/source/components/navigation/commandPalette/commandPaletteFilter.js +16 -0
- package/dist/source/components/navigation/commandPalette/commandPaletteFilter.js.map +7 -0
- package/dist/source/components/navigation/commandPalette/commandPaletteNavigation.js +54 -0
- package/dist/source/components/navigation/commandPalette/commandPaletteNavigation.js.map +7 -0
- package/dist/source/components/navigation/commandPalette/commandPaletteTypes.js +1 -0
- package/dist/source/components/navigation/commandPalette/commandPaletteTypes.js.map +7 -0
- package/dist/source/components/navigation/commandPalette/index.js +11 -0
- package/dist/source/components/navigation/commandPalette/index.js.map +7 -0
- package/dist/source/components/navigation/menu/menu.jsx.map +1 -1
- package/dist/source/components/navigation/menu/menuComponent.jsx +3 -4
- package/dist/source/components/navigation/menu/menuComponent.jsx.map +1 -1
- package/dist/source/components/navigation/menu/menuContext.js.map +2 -2
- package/dist/source/components/navigation/menu/menuFloating.jsx +26 -4
- package/dist/source/components/navigation/menu/menuFloating.jsx.map +1 -1
- package/dist/source/components/navigation/menu/menuItem.jsx +22 -2
- package/dist/source/components/navigation/menu/menuItem.jsx.map +1 -1
- package/dist/source/components/navigation/menu/menuList.jsx +19 -7
- package/dist/source/components/navigation/menu/menuList.jsx.map +1 -1
- package/dist/source/components/navigation/menu/menuSubmenu.jsx +36 -4
- package/dist/source/components/navigation/menu/menuSubmenu.jsx.map +1 -1
- package/dist/source/components/navigation/pagination/pagination.jsx +4 -3
- package/dist/source/components/navigation/pagination/pagination.jsx.map +1 -1
- package/dist/source/components/navigation/sidebar/sidebar.jsx +6 -3
- package/dist/source/components/navigation/sidebar/sidebar.jsx.map +1 -1
- package/dist/source/components/navigation/stepper/stepper.jsx +14 -9
- package/dist/source/components/navigation/stepper/stepper.jsx.map +1 -1
- package/dist/source/components/navigation/tabs/index.js +2 -0
- package/dist/source/components/navigation/tabs/index.js.map +2 -2
- package/dist/source/components/navigation/tabs/tab/tab.jsx +144 -21
- package/dist/source/components/navigation/tabs/tab/tab.jsx.map +1 -1
- package/dist/source/components/navigation/tabs/tabPanel/tabPanel.jsx +30 -0
- package/dist/source/components/navigation/tabs/tabPanel/tabPanel.jsx.map +1 -0
- package/dist/source/components/navigation/tabs/tabs.jsx +392 -20
- package/dist/source/components/navigation/tabs/tabs.jsx.map +1 -1
- package/dist/source/components/navigation/tabs/tabs.utils.js +18 -0
- package/dist/source/components/navigation/tabs/tabs.utils.js.map +7 -0
- package/dist/source/components/navigation/tabs/tabsContext.js.map +2 -2
- package/dist/source/connects/rt/table/table.jsx +7 -2
- package/dist/source/connects/rt/table/table.jsx.map +1 -1
- package/dist/source/index.js +44 -1
- package/dist/source/index.js.map +2 -2
- package/dist/source/primitives/createDismissOnEscape.js +17 -0
- package/dist/source/primitives/createDismissOnEscape.js.map +7 -0
- package/dist/source/primitives/createFocusTrap.js +9 -3
- package/dist/source/primitives/createFocusTrap.js.map +2 -2
- package/dist/source/primitives/createHelperText.js +16 -0
- package/dist/source/primitives/createHelperText.js.map +7 -0
- package/dist/source/primitives/createKeyboardShortcut.js +23 -0
- package/dist/source/primitives/createKeyboardShortcut.js.map +7 -0
- package/dist/source/primitives/mergeStyle.js +15 -0
- package/dist/source/primitives/mergeStyle.js.map +7 -0
- package/dist/source/primitives/overlayLayer.js +10 -2
- package/dist/source/primitives/overlayLayer.js.map +2 -2
- package/dist/source/primitives/restoreFocus.js +14 -0
- package/dist/source/primitives/restoreFocus.js.map +7 -0
- package/dist/source/utils/controlProps.js +22 -0
- package/dist/source/utils/controlProps.js.map +7 -0
- package/dist/source/utils/keyboardShortcut.js +74 -0
- package/dist/source/utils/keyboardShortcut.js.map +7 -0
- package/dist/source/utils/linkAttrs.js +16 -0
- package/dist/source/utils/linkAttrs.js.map +7 -0
- package/dist/source/utils/ownClick.js +41 -0
- package/dist/source/utils/ownClick.js.map +7 -0
- package/dist/utils/controlProps.d.ts +17 -0
- package/dist/utils/controlProps.js +20 -0
- package/dist/utils/controlProps.js.map +1 -0
- package/dist/utils/keyboardShortcut.d.ts +12 -0
- package/dist/utils/keyboardShortcut.js +48 -0
- package/dist/utils/keyboardShortcut.js.map +1 -0
- package/dist/utils/linkAttrs.d.ts +13 -0
- package/dist/utils/linkAttrs.js +13 -0
- package/dist/utils/linkAttrs.js.map +1 -0
- package/dist/utils/ownClick.d.ts +16 -0
- package/dist/utils/ownClick.js +39 -0
- package/dist/utils/ownClick.js.map +1 -0
- package/package.json +72 -3
|
@@ -6,6 +6,7 @@ import { FloatingButton } from "../../inputs/floatingButton";
|
|
|
6
6
|
import { Icon } from "../../base/icon";
|
|
7
7
|
import { createControllableState } from "../../../primitives/createControllableState";
|
|
8
8
|
import { createId } from "../../../primitives/createId";
|
|
9
|
+
import { Composer } from "../../inputs/composer/composer";
|
|
9
10
|
import { ChatComposer } from "./chatComposer";
|
|
10
11
|
import { ChatHeader } from "./chatHeader";
|
|
11
12
|
import { ChatMessages } from "./chatMessages";
|
|
@@ -68,12 +69,19 @@ function Chat(props) {
|
|
|
68
69
|
});
|
|
69
70
|
const attachInputId = createId();
|
|
70
71
|
const showComposer = () => Boolean(p.onSendMessage) || fileUpload.enabled();
|
|
72
|
+
const useLegacyComposer = () => Boolean(p.legacyComposer) || fileUpload.enabled() && !p.onSendMessage;
|
|
71
73
|
const fileInput = () => <Show when={fileUpload.enabled()}>
|
|
72
74
|
<input {...fileUpload.getInputProps({ id: attachInputId })} data-testid="chat-file-input" />
|
|
73
75
|
</Show>;
|
|
74
|
-
const
|
|
75
|
-
|
|
76
|
-
|
|
76
|
+
const sendText = (text) => {
|
|
77
|
+
void p.onSendMessage?.(text);
|
|
78
|
+
};
|
|
79
|
+
const uploadFiles = (files) => {
|
|
80
|
+
void p.onUploadFiles?.(files);
|
|
81
|
+
};
|
|
82
|
+
const legacyFooter = () => <>
|
|
83
|
+
{fileInput()}
|
|
84
|
+
<ChatComposer
|
|
77
85
|
onSendMessage={p.onSendMessage}
|
|
78
86
|
placeholder={p.composerPlaceholder}
|
|
79
87
|
disabled={p.composerDisabled}
|
|
@@ -83,7 +91,33 @@ function Chat(props) {
|
|
|
83
91
|
attachInputId={fileUpload.enabled() ? attachInputId : void 0}
|
|
84
92
|
attachAriaLabel={p.attachAriaLabel}
|
|
85
93
|
/>
|
|
86
|
-
|
|
94
|
+
</>;
|
|
95
|
+
const composerOnSend = createMemo(() => p.onSendMessage ? sendText : void 0);
|
|
96
|
+
const composerOnAttach = createMemo(() => fileUpload.enabled() ? uploadFiles : void 0);
|
|
97
|
+
const composerAccept = createMemo(() => fileUpload.enabled() ? p.fileUploadAccept : void 0);
|
|
98
|
+
const composerMaxFiles = createMemo(() => fileUpload.enabled() ? fileUpload.maxFiles : void 0);
|
|
99
|
+
const composerMultiple = createMemo(() => fileUpload.enabled() ? fileUpload.maxFiles > 1 : void 0);
|
|
100
|
+
const composerFooter = () => <Composer
|
|
101
|
+
{...p.composerProps}
|
|
102
|
+
class={cn("smwb-chat__composer", p.composerProps?.class)}
|
|
103
|
+
sendKey={p.composerProps?.sendKey ?? "enter"}
|
|
104
|
+
aria-label={p.composerProps?.["aria-label"] ?? (p.composerProps?.["aria-labelledby"] ? void 0 : "Message")}
|
|
105
|
+
sendLabel={p.composerProps?.sendLabel ?? "Send message"}
|
|
106
|
+
attachLabel={p.attachAriaLabel ?? p.composerProps?.attachLabel}
|
|
107
|
+
placeholder={p.composerPlaceholder}
|
|
108
|
+
disabled={p.composerDisabled}
|
|
109
|
+
busy={p.busy}
|
|
110
|
+
onStop={p.onStop}
|
|
111
|
+
onSend={composerOnSend()}
|
|
112
|
+
onAttach={composerOnAttach()}
|
|
113
|
+
accept={composerAccept()}
|
|
114
|
+
maxFiles={composerMaxFiles()}
|
|
115
|
+
multiple={composerMultiple()}
|
|
116
|
+
dropTarget={false}
|
|
117
|
+
/>;
|
|
118
|
+
const resolvedFooter = () => p.footer ?? p.children ?? (showComposer() ? <Show when={useLegacyComposer()} fallback={composerFooter()}>
|
|
119
|
+
{legacyFooter()}
|
|
120
|
+
</Show> : void 0);
|
|
87
121
|
const closeButtonVisible = () => shouldShowChatCloseButton({
|
|
88
122
|
floatingTrigger: p.floatingTrigger,
|
|
89
123
|
embedded: p.embedded,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/dataDisplay/chat/chat.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/tokens.entry.less\";\nimport \"@smwb/ui-styles/less/components/chat/chat.entry.less\";\nimport { type JSX, type ParentProps, Show, children, createMemo, mergeProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { FloatingButton } from \"../../inputs/floatingButton\";\nimport { Icon } from \"../../base/icon\";\nimport { createControllableState } from \"../../../primitives/createControllableState\";\nimport { createId } from \"../../../primitives/createId\";\nimport { ChatComposer } from \"./chatComposer\";\nimport { ChatHeader } from \"./chatHeader\";\nimport { ChatMessages } from \"./chatMessages\";\nimport { ChatShell } from \"./chatShell\";\nimport { createChatFileUpload } from \"./useChatFileUpload\";\nimport {\n type ChatAnchor,\n type ChatLayoutMode,\n type ChatMessage,\n type ChatMessageRenderContext,\n type ChatThemeMode,\n CHAT_EXPAND_LAYOUTS,\n} from \"./types\";\nimport { pickInitialLayout, resolveAllowedLayouts, shouldShowChatCloseButton } from \"./utils\";\n\nexport interface ChatProps extends ParentProps, Omit<ChatMessageRenderContext, \"showAvatars\" | \"showAttachments\"> {\n class?: string | undefined;\n messages: ChatMessage[];\n showAvatars?: boolean | undefined;\n showAttachments?: boolean | undefined;\n headerTitle?: JSX.Element;\n headerSubtitle?: JSX.Element;\n headerActions?: JSX.Element;\n footer?: JSX.Element;\n anchor?: ChatAnchor | undefined;\n themeMode?: ChatThemeMode | undefined;\n allowedLayouts?: ChatLayoutMode[] | undefined;\n layout?: ChatLayoutMode | undefined;\n defaultLayout?: ChatLayoutMode | undefined;\n onLayoutChange?: ((layout: ChatLayoutMode) => void) | undefined;\n open?: boolean | undefined;\n defaultOpen?: boolean | undefined;\n onOpenChange?: ((open: boolean) => void) | undefined;\n floatingTrigger?: boolean | undefined;\n triggerIcon?: JSX.Element;\n triggerLabel?: string | undefined;\n onLoadMore?: (() => void | Promise<void>) | undefined;\n hasMore?: boolean | undefined;\n onSendMessage?: ((text: string) => void | Promise<void>) | undefined;\n composerPlaceholder?: string | undefined;\n composerDisabled?: boolean | undefined;\n composerShiftEnterNewline?: boolean | undefined;\n composerCtrlEnterNewline?: boolean | undefined;\n fileUpload?: boolean | undefined;\n onUploadFiles?: ((files: File[]) => void | Promise<void>) | undefined;\n fileUploadAccept?: Record<string, string[]> | string | undefined;\n fileUploadMaxFiles?: number | undefined;\n attachAriaLabel?: string | undefined;\n loading?: boolean | undefined;\n loadingMore?: boolean | undefined;\n loadingSkeletonCount?: number | undefined;\n renderMessage?: ((message: ChatMessage, ctx: ChatMessageRenderContext) => JSX.Element) | undefined;\n embedded?: boolean | undefined;\n overlayContext?: boolean | undefined;\n showCloseButton?: boolean | undefined;\n}\n\nexport function Chat(props: ChatProps): JSX.Element {\n const p = mergeProps(\n {\n showAvatars: false,\n showAttachments: false,\n anchor: \"bottom-right\" as const,\n themeMode: \"inherit\" as const,\n defaultOpen: false,\n floatingTrigger: false,\n composerPlaceholder: \"message\",\n composerShiftEnterNewline: true,\n composerCtrlEnterNewline: true,\n fileUpload: false,\n embedded: false,\n overlayContext: false,\n showStatus: false,\n },\n props\n );\n\n const allowedLayouts = createMemo(() => resolveAllowedLayouts(p.allowedLayouts ?? CHAT_EXPAND_LAYOUTS));\n\n const [open, setOpen] = createControllableState<boolean>({\n value: () => p.open,\n defaultValue: p.defaultOpen,\n onChange: p.onOpenChange,\n });\n\n const [layout, setLayout] = createControllableState<ChatLayoutMode>({\n value: () => p.layout,\n defaultValue: pickInitialLayout(allowedLayouts(), p.defaultLayout),\n onChange: p.onLayoutChange,\n });\n\n const effectiveLayout = (): ChatLayoutMode =>\n p.embedded ? \"fullHeight\" : p.floatingTrigger ? (open() ? layout() : \"closed\") : layout();\n\n const handleOpen = (): void => {\n setOpen(true);\n if (layout() === \"closed\") {\n setLayout(pickInitialLayout(allowedLayouts(), p.defaultLayout));\n }\n };\n\n const handleClose = (): void => {\n setOpen(false);\n };\n\n const handleLayoutChange = (next: ChatLayoutMode): void => {\n setOpen(true);\n setLayout(next);\n };\n\n const fileUpload = createChatFileUpload({\n enabled: () => p.fileUpload,\n accept: p.fileUploadAccept,\n maxFiles: p.fileUploadMaxFiles,\n onUploadFiles: p.onUploadFiles,\n disabled: () => Boolean(p.composerDisabled),\n });\n\n const attachInputId = createId();\n\n const showComposer = (): boolean => Boolean(p.onSendMessage) || fileUpload.enabled();\n\n const fileInput = (): JSX.Element => (\n <Show when={fileUpload.enabled()}>\n <input {...fileUpload.getInputProps({ id: attachInputId })} data-testid=\"chat-file-input\" />\n </Show>\n );\n\n const resolvedFooter = (): JSX.Element =>\n p.footer ??\n p.children ??\n (showComposer() ? (\n <>\n {fileInput()}\n <ChatComposer\n onSendMessage={p.onSendMessage}\n placeholder={p.composerPlaceholder}\n disabled={p.composerDisabled}\n shiftEnterNewline={p.composerShiftEnterNewline}\n ctrlEnterNewline={p.composerCtrlEnterNewline}\n fileUpload={fileUpload.enabled()}\n attachInputId={fileUpload.enabled() ? attachInputId : undefined}\n attachAriaLabel={p.attachAriaLabel}\n />\n </>\n ) : undefined);\n\n const closeButtonVisible = (): boolean =>\n shouldShowChatCloseButton({\n floatingTrigger: p.floatingTrigger,\n embedded: p.embedded,\n overlayContext: p.overlayContext,\n effectiveLayout: effectiveLayout(),\n showCloseButton: p.showCloseButton,\n });\n\n // The trigger icon is read once, and only while the trigger is drawn: markup\n // passed as a prop is created anew on every read, and during hydration a copy\n // the server never rendered has no DOM node.\n const triggerIcon = children(() => (p.floatingTrigger && !p.embedded && !open() ? p.triggerIcon : undefined));\n\n return (\n <div\n class={cn(\n \"smwb-chat\",\n !p.embedded && `smwb-chat_${p.anchor}`,\n p.embedded && \"smwb-chat_embedded\",\n p.overlayContext && \"smwb-chat_overlay-context\",\n p.class\n )}\n data-testid=\"chat\"\n >\n <Show when={p.floatingTrigger && !p.embedded && !open()}>\n <FloatingButton\n class=\"smwb-chat__trigger\"\n aria-label={p.triggerLabel ?? \"Open chat\"}\n data-testid=\"chat-trigger\"\n onClick={handleOpen}\n >\n <Show when={triggerIcon()} fallback={<Icon name=\"chat\" size={24} />}>\n {triggerIcon()}\n </Show>\n </FloatingButton>\n </Show>\n <ChatShell\n layout={effectiveLayout()}\n anchor={p.anchor}\n themeMode={p.themeMode}\n embedded={p.embedded}\n overlayContext={p.overlayContext}\n fileDropzoneRootProps={fileUpload.enabled() ? fileUpload.getRootProps() : undefined}\n fileDropzoneActive={fileUpload.enabled() && fileUpload.isDragActive()}\n header={\n <ChatHeader\n title={p.headerTitle}\n subtitle={p.headerSubtitle}\n actions={p.headerActions}\n layout={effectiveLayout() === \"closed\" ? layout() : effectiveLayout()}\n allowedLayouts={allowedLayouts()}\n onLayoutChange={handleLayoutChange}\n onClose={closeButtonVisible() ? handleClose : undefined}\n />\n }\n footer={resolvedFooter()}\n >\n <ChatMessages\n messages={p.messages}\n showAvatars={p.showAvatars}\n showAttachments={p.showAttachments}\n showStatus={p.showStatus}\n statusIcons={p.statusIcons}\n renderStatus={p.renderStatus}\n onLoadMore={p.onLoadMore}\n hasMore={p.hasMore}\n loading={p.loading}\n loadingMore={p.loadingMore}\n loadingSkeletonCount={p.loadingSkeletonCount}\n renderMessage={p.renderMessage}\n />\n </ChatShell>\n </div>\n );\n}\n\nexport default Chat;\n"],"mappings":"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","names":[],"file":"chat.jsx"}
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/dataDisplay/chat/chat.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/tokens.entry.less\";\nimport \"@smwb/ui-styles/less/components/chat/chat.entry.less\";\nimport { type JSX, type ParentProps, Show, children, createMemo, mergeProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { FloatingButton } from \"../../inputs/floatingButton\";\nimport { Icon } from \"../../base/icon\";\nimport { createControllableState } from \"../../../primitives/createControllableState\";\nimport { createId } from \"../../../primitives/createId\";\nimport { Composer } from \"../../inputs/composer/composer\";\nimport type { ComposerProps } from \"../../inputs/composer/composer\";\nimport { ChatComposer } from \"./chatComposer\";\nimport { ChatHeader } from \"./chatHeader\";\nimport { ChatMessages } from \"./chatMessages\";\nimport { ChatShell } from \"./chatShell\";\nimport { createChatFileUpload } from \"./useChatFileUpload\";\nimport {\n type ChatAnchor,\n type ChatLayoutMode,\n type ChatMessage,\n type ChatMessageRenderContext,\n type ChatThemeMode,\n CHAT_EXPAND_LAYOUTS,\n} from \"./types\";\nimport { pickInitialLayout, resolveAllowedLayouts, shouldShowChatCloseButton } from \"./utils\";\n\n/**\n * Props for the `Composer` Chat draws as its footer. The props Chat owns itself — `onSendMessage` (the composer's\n * `onSend`), `busy`, `onStop`, `composerPlaceholder` (`placeholder`), `composerDisabled` (`disabled`), the file upload\n * props (`onAttach`, `accept`, `multiple`, `maxFiles`) and `dropTarget` (always `false`: the Chat shell is the drop\n * target) — are left out, Chat passes them and does not let a caller override them.\n */\nexport type ChatFooterComposerProps = Omit<\n ComposerProps,\n | \"onSend\"\n | \"busy\"\n | \"onStop\"\n | \"disabled\"\n | \"placeholder\"\n | \"onAttach\"\n | \"accept\"\n | \"multiple\"\n | \"maxFiles\"\n | \"dropTarget\"\n>;\n\nexport interface ChatProps extends ParentProps, Omit<ChatMessageRenderContext, \"showAvatars\" | \"showAttachments\"> {\n class?: string | undefined;\n messages: ChatMessage[];\n showAvatars?: boolean | undefined;\n showAttachments?: boolean | undefined;\n headerTitle?: JSX.Element;\n headerSubtitle?: JSX.Element;\n headerActions?: JSX.Element;\n footer?: JSX.Element;\n anchor?: ChatAnchor | undefined;\n themeMode?: ChatThemeMode | undefined;\n allowedLayouts?: ChatLayoutMode[] | undefined;\n layout?: ChatLayoutMode | undefined;\n defaultLayout?: ChatLayoutMode | undefined;\n onLayoutChange?: ((layout: ChatLayoutMode) => void) | undefined;\n open?: boolean | undefined;\n defaultOpen?: boolean | undefined;\n onOpenChange?: ((open: boolean) => void) | undefined;\n floatingTrigger?: boolean | undefined;\n triggerIcon?: JSX.Element;\n triggerLabel?: string | undefined;\n onLoadMore?: (() => void | Promise<void>) | undefined;\n hasMore?: boolean | undefined;\n onSendMessage?: ((text: string) => void | Promise<void>) | undefined;\n /**\n * The agent is replying: the composer's send button turns into Stop and calls `onStop`, the keys do not send, the\n * text stays editable. Not the same as `loading` (the message list skeleton). The default composer only.\n */\n busy?: boolean | undefined;\n /** Called when Stop is pressed while `busy` (and not `composerDisabled`). The default composer only. */\n onStop?: (() => void) | undefined;\n /**\n * More props for the built-in `Composer`: `toolbar`, `attachments`, `maxLength`, `counter`, `minRows`, `maxRows`,\n * `layout`, `sendKey` (default here `\"enter\"`), `value`/`defaultValue`/`onValueChange`, `clearOnSend`, `autofocus`,\n * `inputRef`, `aria-*`, `sendLabel`, `stopLabel`, `attachLabel`, `class`, `data-*`, … Chat's own props\n * (`onSendMessage`, `busy`, `onStop`, `composerPlaceholder`, `composerDisabled`, the file upload props) win.\n */\n composerProps?: ChatFooterComposerProps | undefined;\n /**\n * Deprecated: draws the old `ChatComposer` (Enter sends, TextField DOM, `chat-composer*` test ids) instead of the\n * built-in `Composer`. Kept for the migration and removed with `ChatComposer` in the next major; `busy`, `onStop`\n * and `composerProps` are ignored in this mode.\n *\n * @deprecated Migrate to the default `Composer`; see the README section \"Migrating from ChatComposer\".\n */\n legacyComposer?: boolean | undefined;\n composerPlaceholder?: string | undefined;\n composerDisabled?: boolean | undefined;\n /**\n * Deprecated: works with `legacyComposer` only — the built-in `Composer` always inserts a newline on Shift+Enter.\n * Pass it together with `legacyComposer` until that is removed.\n *\n * @deprecated Use `legacyComposer`; the default `Composer` has no equivalent flag.\n */\n composerShiftEnterNewline?: boolean | undefined;\n /**\n * Deprecated: works with `legacyComposer` only — with the built-in `Composer` Ctrl/⌘+Enter sends. Pass it together\n * with `legacyComposer` until that is removed.\n *\n * @deprecated Use `legacyComposer`; the default `Composer` has no equivalent flag.\n */\n composerCtrlEnterNewline?: boolean | undefined;\n fileUpload?: boolean | undefined;\n onUploadFiles?: ((files: File[]) => void | Promise<void>) | undefined;\n fileUploadAccept?: Record<string, string[]> | string | undefined;\n fileUploadMaxFiles?: number | undefined;\n attachAriaLabel?: string | undefined;\n loading?: boolean | undefined;\n loadingMore?: boolean | undefined;\n loadingSkeletonCount?: number | undefined;\n renderMessage?: ((message: ChatMessage, ctx: ChatMessageRenderContext) => JSX.Element) | undefined;\n embedded?: boolean | undefined;\n overlayContext?: boolean | undefined;\n showCloseButton?: boolean | undefined;\n}\n\nexport function Chat(props: ChatProps): JSX.Element {\n const p = mergeProps(\n {\n showAvatars: false,\n showAttachments: false,\n anchor: \"bottom-right\" as const,\n themeMode: \"inherit\" as const,\n defaultOpen: false,\n floatingTrigger: false,\n composerPlaceholder: \"message\",\n composerShiftEnterNewline: true,\n composerCtrlEnterNewline: true,\n fileUpload: false,\n embedded: false,\n overlayContext: false,\n showStatus: false,\n },\n props\n );\n\n const allowedLayouts = createMemo(() => resolveAllowedLayouts(p.allowedLayouts ?? CHAT_EXPAND_LAYOUTS));\n\n const [open, setOpen] = createControllableState<boolean>({\n value: () => p.open,\n defaultValue: p.defaultOpen,\n onChange: p.onOpenChange,\n });\n\n const [layout, setLayout] = createControllableState<ChatLayoutMode>({\n value: () => p.layout,\n defaultValue: pickInitialLayout(allowedLayouts(), p.defaultLayout),\n onChange: p.onLayoutChange,\n });\n\n const effectiveLayout = (): ChatLayoutMode =>\n p.embedded ? \"fullHeight\" : p.floatingTrigger ? (open() ? layout() : \"closed\") : layout();\n\n const handleOpen = (): void => {\n setOpen(true);\n if (layout() === \"closed\") {\n setLayout(pickInitialLayout(allowedLayouts(), p.defaultLayout));\n }\n };\n\n const handleClose = (): void => {\n setOpen(false);\n };\n\n const handleLayoutChange = (next: ChatLayoutMode): void => {\n setOpen(true);\n setLayout(next);\n };\n\n const fileUpload = createChatFileUpload({\n enabled: () => p.fileUpload,\n accept: p.fileUploadAccept,\n maxFiles: p.fileUploadMaxFiles,\n onUploadFiles: p.onUploadFiles,\n disabled: () => Boolean(p.composerDisabled),\n });\n\n const attachInputId = createId();\n\n const showComposer = (): boolean => Boolean(p.onSendMessage) || fileUpload.enabled();\n // Composer has no text-less mode, so an upload without a send handler keeps the old attach-only ChatComposer.\n const useLegacyComposer = (): boolean => Boolean(p.legacyComposer) || (fileUpload.enabled() && !p.onSendMessage);\n\n const fileInput = (): JSX.Element => (\n <Show when={fileUpload.enabled()}>\n <input {...fileUpload.getInputProps({ id: attachInputId })} data-testid=\"chat-file-input\" />\n </Show>\n );\n\n // The handlers are attached always and read the props when called: a handler that appears later still works.\n const sendText = (text: string): void => {\n void p.onSendMessage?.(text);\n };\n\n const uploadFiles = (files: File[]): void => {\n void p.onUploadFiles?.(files);\n };\n\n const legacyFooter = (): JSX.Element => (\n <>\n {fileInput()}\n <ChatComposer\n onSendMessage={p.onSendMessage}\n placeholder={p.composerPlaceholder}\n disabled={p.composerDisabled}\n shiftEnterNewline={p.composerShiftEnterNewline}\n ctrlEnterNewline={p.composerCtrlEnterNewline}\n fileUpload={fileUpload.enabled()}\n attachInputId={fileUpload.enabled() ? attachInputId : undefined}\n attachAriaLabel={p.attachAriaLabel}\n />\n </>\n );\n\n // Chat's own props are plain attributes after the spread, so they win; `dropTarget` is off because the shell\n // already takes the drops. Every prop Chat owns is omitted from `ChatFooterComposerProps`, so none of them can\n // leak back from the spread when its value is `undefined`.\n // The upload gate is resolved in memos rather than inline: a conditional prop compiles to a `memo` created\n // inside the prop getter, and Composer reads `onAttach`/`accept`/`maxFiles`/`multiple` from its pick and drop\n // handlers — outside any owner, where such a computation is never disposed.\n const composerOnSend = createMemo(() => (p.onSendMessage ? sendText : undefined));\n const composerOnAttach = createMemo(() => (fileUpload.enabled() ? uploadFiles : undefined));\n const composerAccept = createMemo(() => (fileUpload.enabled() ? p.fileUploadAccept : undefined));\n const composerMaxFiles = createMemo(() => (fileUpload.enabled() ? fileUpload.maxFiles : undefined));\n const composerMultiple = createMemo(() => (fileUpload.enabled() ? fileUpload.maxFiles > 1 : undefined));\n\n const composerFooter = (): JSX.Element => (\n <Composer\n {...p.composerProps}\n class={cn(\"smwb-chat__composer\", p.composerProps?.class)}\n sendKey={p.composerProps?.sendKey ?? \"enter\"}\n aria-label={p.composerProps?.[\"aria-label\"] ?? (p.composerProps?.[\"aria-labelledby\"] ? undefined : \"Message\")}\n sendLabel={p.composerProps?.sendLabel ?? \"Send message\"}\n attachLabel={p.attachAriaLabel ?? p.composerProps?.attachLabel}\n placeholder={p.composerPlaceholder}\n disabled={p.composerDisabled}\n busy={p.busy}\n onStop={p.onStop}\n onSend={composerOnSend()}\n onAttach={composerOnAttach()}\n accept={composerAccept()}\n maxFiles={composerMaxFiles()}\n multiple={composerMultiple()}\n dropTarget={false}\n />\n );\n\n const resolvedFooter = (): JSX.Element =>\n p.footer ??\n p.children ??\n (showComposer() ? (\n <Show when={useLegacyComposer()} fallback={composerFooter()}>\n {legacyFooter()}\n </Show>\n ) : undefined);\n\n const closeButtonVisible = (): boolean =>\n shouldShowChatCloseButton({\n floatingTrigger: p.floatingTrigger,\n embedded: p.embedded,\n overlayContext: p.overlayContext,\n effectiveLayout: effectiveLayout(),\n showCloseButton: p.showCloseButton,\n });\n\n // The trigger icon is read once, and only while the trigger is drawn: markup\n // passed as a prop is created anew on every read, and during hydration a copy\n // the server never rendered has no DOM node.\n const triggerIcon = children(() => (p.floatingTrigger && !p.embedded && !open() ? p.triggerIcon : undefined));\n\n return (\n <div\n class={cn(\n \"smwb-chat\",\n !p.embedded && `smwb-chat_${p.anchor}`,\n p.embedded && \"smwb-chat_embedded\",\n p.overlayContext && \"smwb-chat_overlay-context\",\n p.class\n )}\n data-testid=\"chat\"\n >\n <Show when={p.floatingTrigger && !p.embedded && !open()}>\n <FloatingButton\n class=\"smwb-chat__trigger\"\n aria-label={p.triggerLabel ?? \"Open chat\"}\n data-testid=\"chat-trigger\"\n onClick={handleOpen}\n >\n <Show when={triggerIcon()} fallback={<Icon name=\"chat\" size={24} />}>\n {triggerIcon()}\n </Show>\n </FloatingButton>\n </Show>\n <ChatShell\n layout={effectiveLayout()}\n anchor={p.anchor}\n themeMode={p.themeMode}\n embedded={p.embedded}\n overlayContext={p.overlayContext}\n fileDropzoneRootProps={fileUpload.enabled() ? fileUpload.getRootProps() : undefined}\n fileDropzoneActive={fileUpload.enabled() && fileUpload.isDragActive()}\n header={\n <ChatHeader\n title={p.headerTitle}\n subtitle={p.headerSubtitle}\n actions={p.headerActions}\n layout={effectiveLayout() === \"closed\" ? layout() : effectiveLayout()}\n allowedLayouts={allowedLayouts()}\n onLayoutChange={handleLayoutChange}\n onClose={closeButtonVisible() ? handleClose : undefined}\n />\n }\n footer={resolvedFooter()}\n >\n <ChatMessages\n messages={p.messages}\n showAvatars={p.showAvatars}\n showAttachments={p.showAttachments}\n showStatus={p.showStatus}\n statusIcons={p.statusIcons}\n renderStatus={p.renderStatus}\n onLoadMore={p.onLoadMore}\n hasMore={p.hasMore}\n loading={p.loading}\n loadingMore={p.loadingMore}\n loadingSkeletonCount={p.loadingSkeletonCount}\n renderMessage={p.renderMessage}\n />\n </ChatShell>\n </div>\n );\n}\n\nexport default Chat;\n"],"mappings":"AAAA,OAAO;AACP,OAAO;AACP,SAAqC,MAAM,UAAU,YAAY,kBAAkB;AACnF,OAAO,QAAQ;AACf,SAAS,sBAAsB;AAC/B,SAAS,YAAY;AACrB,SAAS,+BAA+B;AACxC,SAAS,gBAAgB;AACzB,SAAS,gBAAgB;AAEzB,SAAS,oBAAoB;AAC7B,SAAS,kBAAkB;AAC3B,SAAS,oBAAoB;AAC7B,SAAS,iBAAiB;AAC1B,SAAS,4BAA4B;AACrC;AAAA,EAME;AAAA,OACK;AACP,SAAS,mBAAmB,uBAAuB,iCAAiC;AAkG7E,SAAS,KAAK,OAA+B;AAClD,QAAM,IAAI;AAAA,IACR;AAAA,MACE,aAAa;AAAA,MACb,iBAAiB;AAAA,MACjB,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,aAAa;AAAA,MACb,iBAAiB;AAAA,MACjB,qBAAqB;AAAA,MACrB,2BAA2B;AAAA,MAC3B,0BAA0B;AAAA,MAC1B,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,gBAAgB;AAAA,MAChB,YAAY;AAAA,IACd;AAAA,IACA;AAAA,EACF;AAEA,QAAM,iBAAiB,WAAW,MAAM,sBAAsB,EAAE,kBAAkB,mBAAmB,CAAC;AAEtG,QAAM,CAAC,MAAM,OAAO,IAAI,wBAAiC;AAAA,IACvD,OAAO,MAAM,EAAE;AAAA,IACf,cAAc,EAAE;AAAA,IAChB,UAAU,EAAE;AAAA,EACd,CAAC;AAED,QAAM,CAAC,QAAQ,SAAS,IAAI,wBAAwC;AAAA,IAClE,OAAO,MAAM,EAAE;AAAA,IACf,cAAc,kBAAkB,eAAe,GAAG,EAAE,aAAa;AAAA,IACjE,UAAU,EAAE;AAAA,EACd,CAAC;AAED,QAAM,kBAAkB,MACtB,EAAE,WAAW,eAAe,EAAE,kBAAmB,KAAK,IAAI,OAAO,IAAI,WAAY,OAAO;AAE1F,QAAM,aAAa,MAAY;AAC7B,YAAQ,IAAI;AACZ,QAAI,OAAO,MAAM,UAAU;AACzB,gBAAU,kBAAkB,eAAe,GAAG,EAAE,aAAa,CAAC;AAAA,IAChE;AAAA,EACF;AAEA,QAAM,cAAc,MAAY;AAC9B,YAAQ,KAAK;AAAA,EACf;AAEA,QAAM,qBAAqB,CAAC,SAA+B;AACzD,YAAQ,IAAI;AACZ,cAAU,IAAI;AAAA,EAChB;AAEA,QAAM,aAAa,qBAAqB;AAAA,IACtC,SAAS,MAAM,EAAE;AAAA,IACjB,QAAQ,EAAE;AAAA,IACV,UAAU,EAAE;AAAA,IACZ,eAAe,EAAE;AAAA,IACjB,UAAU,MAAM,QAAQ,EAAE,gBAAgB;AAAA,EAC5C,CAAC;AAED,QAAM,gBAAgB,SAAS;AAE/B,QAAM,eAAe,MAAe,QAAQ,EAAE,aAAa,KAAK,WAAW,QAAQ;AAEnF,QAAM,oBAAoB,MAAe,QAAQ,EAAE,cAAc,KAAM,WAAW,QAAQ,KAAK,CAAC,EAAE;AAElG,QAAM,YAAY,MAChB,CAAC,KAAK,MAAM,WAAW,QAAQ,GAAG;AAAA,MAChC,CAAC,UAAU,WAAW,cAAc,EAAE,IAAI,cAAc,CAAC,GAAG,YAAY,kBAAkB,EAAE;AAAA,IAC9F,EAFC;AAMH,QAAM,WAAW,CAAC,SAAuB;AACvC,SAAK,EAAE,gBAAgB,IAAI;AAAA,EAC7B;AAEA,QAAM,cAAc,CAAC,UAAwB;AAC3C,SAAK,EAAE,gBAAgB,KAAK;AAAA,EAC9B;AAEA,QAAM,eAAe,MACnB,EAAE;AAAA,OACC,UAAU,EAAE;AAAA,MACb,CAAC;AAAA,IACC,eAAe,EAAE;AAAA,IACjB,aAAa,EAAE;AAAA,IACf,UAAU,EAAE;AAAA,IACZ,mBAAmB,EAAE;AAAA,IACrB,kBAAkB,EAAE;AAAA,IACpB,YAAY,WAAW,QAAQ;AAAA,IAC/B,eAAe,WAAW,QAAQ,IAAI,gBAAgB;AAAA,IACtD,iBAAiB,EAAE;AAAA,EACrB,EAAE;AAAA,IACJ;AASF,QAAM,iBAAiB,WAAW,MAAO,EAAE,gBAAgB,WAAW,MAAU;AAChF,QAAM,mBAAmB,WAAW,MAAO,WAAW,QAAQ,IAAI,cAAc,MAAU;AAC1F,QAAM,iBAAiB,WAAW,MAAO,WAAW,QAAQ,IAAI,EAAE,mBAAmB,MAAU;AAC/F,QAAM,mBAAmB,WAAW,MAAO,WAAW,QAAQ,IAAI,WAAW,WAAW,MAAU;AAClG,QAAM,mBAAmB,WAAW,MAAO,WAAW,QAAQ,IAAI,WAAW,WAAW,IAAI,MAAU;AAEtG,QAAM,iBAAiB,MACrB,CAAC;AAAA,QACK,EAAE;AAAA,IACN,OAAO,GAAG,uBAAuB,EAAE,eAAe,KAAK;AAAA,IACvD,SAAS,EAAE,eAAe,WAAW;AAAA,IACrC,YAAY,EAAE,gBAAgB,YAAY,MAAM,EAAE,gBAAgB,iBAAiB,IAAI,SAAY;AAAA,IACnG,WAAW,EAAE,eAAe,aAAa;AAAA,IACzC,aAAa,EAAE,mBAAmB,EAAE,eAAe;AAAA,IACnD,aAAa,EAAE;AAAA,IACf,UAAU,EAAE;AAAA,IACZ,MAAM,EAAE;AAAA,IACR,QAAQ,EAAE;AAAA,IACV,QAAQ,eAAe;AAAA,IACvB,UAAU,iBAAiB;AAAA,IAC3B,QAAQ,eAAe;AAAA,IACvB,UAAU,iBAAiB;AAAA,IAC3B,UAAU,iBAAiB;AAAA,IAC3B,YAAY;AAAA,EACd;AAGF,QAAM,iBAAiB,MACrB,EAAE,UACF,EAAE,aACD,aAAa,IACZ,CAAC,KAAK,MAAM,kBAAkB,GAAG,UAAU,eAAe,GAAG;AAAA,SAC1D,aAAa,EAAE;AAAA,MAClB,EAFC,QAGC;AAEN,QAAM,qBAAqB,MACzB,0BAA0B;AAAA,IACxB,iBAAiB,EAAE;AAAA,IACnB,UAAU,EAAE;AAAA,IACZ,gBAAgB,EAAE;AAAA,IAClB,iBAAiB,gBAAgB;AAAA,IACjC,iBAAiB,EAAE;AAAA,EACrB,CAAC;AAKH,QAAM,cAAc,SAAS,MAAO,EAAE,mBAAmB,CAAC,EAAE,YAAY,CAAC,KAAK,IAAI,EAAE,cAAc,MAAU;AAE5G,SACE,CAAC;AAAA,IACC,OAAO;AAAA,MACL;AAAA,MACA,CAAC,EAAE,YAAY,aAAa,EAAE,MAAM;AAAA,MACpC,EAAE,YAAY;AAAA,MACd,EAAE,kBAAkB;AAAA,MACpB,EAAE;AAAA,IACJ;AAAA,IACA,YAAY;AAAA,GACb;AAAA,MACC,CAAC,KAAK,MAAM,EAAE,mBAAmB,CAAC,EAAE,YAAY,CAAC,KAAK,GAAG;AAAA,QACvD,CAAC;AAAA,IACC,MAAM;AAAA,IACN,YAAY,EAAE,gBAAgB;AAAA,IAC9B,YAAY;AAAA,IACZ,SAAS;AAAA,GACV;AAAA,UACC,CAAC,KAAK,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,KAAK,OAAO,MAAM,IAAI,IAAI;AAAA,aAClE,YAAY,EAAE;AAAA,UACjB,EAFC,KAEM;AAAA,QACT,EATC,eASgB;AAAA,MACnB,EAXC,KAWM;AAAA,MACP,CAAC;AAAA,IACC,QAAQ,gBAAgB;AAAA,IACxB,QAAQ,EAAE;AAAA,IACV,WAAW,EAAE;AAAA,IACb,UAAU,EAAE;AAAA,IACZ,gBAAgB,EAAE;AAAA,IAClB,uBAAuB,WAAW,QAAQ,IAAI,WAAW,aAAa,IAAI;AAAA,IAC1E,oBAAoB,WAAW,QAAQ,KAAK,WAAW,aAAa;AAAA,IACpE,QACE,CAAC;AAAA,MACC,OAAO,EAAE;AAAA,MACT,UAAU,EAAE;AAAA,MACZ,SAAS,EAAE;AAAA,MACX,QAAQ,gBAAgB,MAAM,WAAW,OAAO,IAAI,gBAAgB;AAAA,MACpE,gBAAgB,eAAe;AAAA,MAC/B,gBAAgB;AAAA,MAChB,SAAS,mBAAmB,IAAI,cAAc;AAAA,IAChD;AAAA,IAEF,QAAQ,eAAe;AAAA,GACxB;AAAA,QACC,CAAC;AAAA,IACC,UAAU,EAAE;AAAA,IACZ,aAAa,EAAE;AAAA,IACf,iBAAiB,EAAE;AAAA,IACnB,YAAY,EAAE;AAAA,IACd,aAAa,EAAE;AAAA,IACf,cAAc,EAAE;AAAA,IAChB,YAAY,EAAE;AAAA,IACd,SAAS,EAAE;AAAA,IACX,SAAS,EAAE;AAAA,IACX,aAAa,EAAE;AAAA,IACf,sBAAsB,EAAE;AAAA,IACxB,eAAe,EAAE;AAAA,EACnB,EAAE;AAAA,MACJ,EAnCC,UAmCW;AAAA,IACd,EA1DC;AA4DL;AAEA,IAAO,eAAQ;","names":[],"file":"chat.jsx"}
|
|
@@ -48,6 +48,7 @@ function ChatComposer(props) {
|
|
|
48
48
|
setValue("");
|
|
49
49
|
};
|
|
50
50
|
const handleKeyDown = (event) => {
|
|
51
|
+
if (event.isComposing || event.keyCode === 229) return;
|
|
51
52
|
if (shouldComposerNewlineOnEnter(event, { shiftEnterNewline: merged.shiftEnterNewline, ctrlEnterNewline: merged.ctrlEnterNewline })) {
|
|
52
53
|
if (event.currentTarget instanceof HTMLTextAreaElement) {
|
|
53
54
|
event.preventDefault();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/dataDisplay/chat/chatComposer.tsx"],"sourcesContent":["import { type JSX, Show, createSignal, mergeProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Icon } from \"../../base/icon\";\nimport { TextField } from \"../../inputs/textField\";\nimport { TextFieldWrapper } from \"../../inputs/textField/textFieldWrapper\";\nimport { ChatIconButton } from \"./chatIconButton\";\nimport { createId } from \"../../../primitives/createId\";\nimport { shouldComposerNewlineOnEnter } from \"./utils\";\n\nexport interface ChatComposerProps {\n class?: string | undefined;\n onSendMessage?: ((text: string) => void | Promise<void>) | undefined;\n placeholder?: string | undefined;\n disabled?: boolean | undefined;\n sendAriaLabel?: string | undefined;\n shiftEnterNewline?: boolean | undefined;\n ctrlEnterNewline?: boolean | undefined;\n fileUpload?: boolean | undefined;\n attachInputId?: string | undefined;\n onAttachClick?: (() => void) | undefined;\n attachAriaLabel?: string | undefined;\n}\n\nfunction stopPropagation(event: Event): void {\n event.stopPropagation();\n}\n\nfunction insertNewlineAtCursor(element: HTMLTextAreaElement, value: string, setValue: (next: string) => void): void {\n const start = element.selectionStart ?? value.length;\n const end = element.selectionEnd ?? value.length;\n const nextValue = `${value.slice(0, start)}\\n${value.slice(end)}`;\n\n setValue(nextValue);\n\n requestAnimationFrame(() => {\n element.selectionStart = start + 1;\n element.selectionEnd = start + 1;\n });\n}\n\nexport function ChatComposer(props: ChatComposerProps): JSX.Element {\n const merged = mergeProps(\n {\n placeholder: \"message\",\n disabled: false,\n sendAriaLabel: \"Send message\",\n shiftEnterNewline: true,\n ctrlEnterNewline: true,\n fileUpload: false,\n attachAriaLabel: \"Attach file\",\n },\n props\n );\n\n const [value, setValue] = createSignal(\"\");\n const [isFocused, setIsFocused] = createSignal(false);\n const inputId = createId();\n let textareaRef: HTMLTextAreaElement | undefined;\n\n const multiline = (): boolean => merged.shiftEnterNewline || merged.ctrlEnterNewline;\n const canSend = (): boolean => Boolean(merged.onSendMessage) && value().trim().length > 0 && !merged.disabled;\n const showAttach = (): boolean => merged.fileUpload && Boolean(merged.attachInputId || merged.onAttachClick);\n\n const handleSend = (): void => {\n if (!merged.onSendMessage) return;\n const text = value().trim();\n if (!text || merged.disabled) return;\n void merged.onSendMessage(text);\n setValue(\"\");\n };\n\n const handleKeyDown = (event: KeyboardEvent & { currentTarget: HTMLElement }): void => {\n if (shouldComposerNewlineOnEnter(event, { shiftEnterNewline: merged.shiftEnterNewline, ctrlEnterNewline: merged.ctrlEnterNewline })) {\n if (event.currentTarget instanceof HTMLTextAreaElement) {\n event.preventDefault();\n insertNewlineAtCursor(event.currentTarget, value(), setValue);\n }\n return;\n }\n\n if (event.key !== \"Enter\") return;\n\n event.preventDefault();\n handleSend();\n };\n\n const attachClass = (): string =>\n cn(\"smwb-chat-icon-button\", \"smwb-chat-icon-button_edge-start\", merged.disabled && \"smwb-chat-icon-button_disabled\");\n\n const attachButton = (): JSX.Element => (\n <Show when={showAttach()}>\n <Show\n when={merged.attachInputId}\n fallback={\n <ChatIconButton\n edge=\"start\"\n aria-label={merged.attachAriaLabel}\n data-testid=\"chat-composer-attach\"\n disabled={merged.disabled}\n onClick={() => merged.onAttachClick?.()}\n onMouseDown={stopPropagation}\n >\n <Icon name=\"attach_file\" size={24} />\n </ChatIconButton>\n }\n >\n {(id) => (\n <label\n for={merged.disabled ? undefined : id()}\n class={attachClass()}\n aria-label={merged.attachAriaLabel}\n aria-disabled={merged.disabled || undefined}\n data-testid=\"chat-composer-attach\"\n onMouseDown={stopPropagation}\n >\n <Icon name=\"attach_file\" size={24} />\n </label>\n )}\n </Show>\n </Show>\n );\n\n const sendButton = (): JSX.Element => (\n <Show when={merged.onSendMessage}>\n <ChatIconButton\n edge=\"end\"\n color=\"primary\"\n aria-label={merged.sendAriaLabel}\n data-testid=\"chat-composer-send\"\n disabled={!canSend()}\n onClick={handleSend}\n onMouseDown={stopPropagation}\n >\n <Icon name=\"send\" size={24} />\n </ChatIconButton>\n </Show>\n );\n\n const onHolderMouseDown: JSX.EventHandler<HTMLDivElement, MouseEvent> = (event) => {\n if (textareaRef && event.currentTarget === event.target) {\n event.preventDefault();\n textareaRef.focus();\n }\n };\n\n return (\n <Show\n when={!(showAttach() && !merged.onSendMessage)}\n fallback={\n <div class={cn(\"smwb-chat-composer\", \"smwb-chat-composer_attach-only\", merged.class)} data-testid=\"chat-composer\">\n {attachButton()}\n </div>\n }\n >\n <Show\n when={multiline()}\n fallback={\n <TextField\n class={cn(\"smwb-chat-composer\", merged.class)}\n data-testid=\"chat-composer\"\n fullWidth\n value={value()}\n disabled={merged.disabled}\n placeholder={merged.placeholder}\n onChange={(event) => setValue(event.currentTarget.value)}\n startAdornment={attachButton()}\n endAdornment={sendButton()}\n onKeyDown={handleKeyDown}\n />\n }\n >\n <TextFieldWrapper\n class={cn(\"smwb-chat-composer\", merged.class)}\n data-testid=\"chat-composer\"\n fullWidth\n disabled={merged.disabled}\n isFilledState={value().length > 0}\n isFocused={isFocused()}\n for={inputId}\n shrink={Boolean(merged.attachInputId || merged.onAttachClick) && showAttach()}\n onHolderMouseDown={onHolderMouseDown}\n startAdornment={attachButton()}\n endAdornment={sendButton()}\n >\n <textarea\n id={inputId}\n ref={(el) => (textareaRef = el)}\n class={cn(\n \"smwb-text-field__input\",\n \"smwb-chat-composer__input\",\n \"smwb-text-field__input--show-placeholder\",\n showAttach() && \"smwb-text-field__input--adornment-start\",\n merged.onSendMessage && \"smwb-text-field__input--adornment-end\"\n )}\n value={value()}\n disabled={merged.disabled}\n placeholder={merged.placeholder}\n rows={1}\n onInput={(event) => setValue(event.currentTarget.value)}\n onFocus={() => setIsFocused(true)}\n onBlur={() => setIsFocused(false)}\n onKeyDown={handleKeyDown}\n />\n </TextFieldWrapper>\n </Show>\n </Show>\n );\n}\n\nexport default ChatComposer;\n"],"mappings":"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","names":[],"file":"chatComposer.jsx"}
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/dataDisplay/chat/chatComposer.tsx"],"sourcesContent":["import { type JSX, Show, createSignal, mergeProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Icon } from \"../../base/icon\";\nimport { TextField } from \"../../inputs/textField\";\nimport { TextFieldWrapper } from \"../../inputs/textField/textFieldWrapper\";\nimport { ChatIconButton } from \"./chatIconButton\";\nimport { createId } from \"../../../primitives/createId\";\nimport { shouldComposerNewlineOnEnter } from \"./utils\";\n\n/**\n * Deprecated: the props of the old chat input. Use `ComposerProps` — `Chat` now draws a `Composer` as its footer,\n * and the standalone `Composer` replaces these props (`onSendMessage` → `onSend`, `sendAriaLabel` → `sendLabel`,\n * `attachAriaLabel` → `attachLabel`, `fileUpload` + `attachInputId`/`onAttachClick` → `onAttach`,\n * `shiftEnterNewline` → `sendKey=\"enter\"`; `ctrlEnterNewline` has no equivalent — Ctrl/⌘+Enter always sends).\n * Removed in the next major.\n *\n * @deprecated Use `Composer` (`ComposerProps`); see the README section \"Migrating from ChatComposer\".\n */\nexport interface ChatComposerProps {\n class?: string | undefined;\n onSendMessage?: ((text: string) => void | Promise<void>) | undefined;\n placeholder?: string | undefined;\n disabled?: boolean | undefined;\n sendAriaLabel?: string | undefined;\n shiftEnterNewline?: boolean | undefined;\n ctrlEnterNewline?: boolean | undefined;\n fileUpload?: boolean | undefined;\n attachInputId?: string | undefined;\n onAttachClick?: (() => void) | undefined;\n attachAriaLabel?: string | undefined;\n}\n\nfunction stopPropagation(event: Event): void {\n event.stopPropagation();\n}\n\nfunction insertNewlineAtCursor(element: HTMLTextAreaElement, value: string, setValue: (next: string) => void): void {\n const start = element.selectionStart ?? value.length;\n const end = element.selectionEnd ?? value.length;\n const nextValue = `${value.slice(0, start)}\\n${value.slice(end)}`;\n\n setValue(nextValue);\n\n requestAnimationFrame(() => {\n element.selectionStart = start + 1;\n element.selectionEnd = start + 1;\n });\n}\n\n/**\n * Deprecated: the old chat input — Enter sends, a TextField-based DOM and the `chat-composer*` test ids.\n * `Chat` draws a `Composer` as its footer now, and the standalone `Composer` replaces this component\n * (`onSendMessage` → `onSend`, Enter-to-send → `sendKey=\"enter\"`). Kept for the migration and removed in the\n * next major; to keep this markup inside a Chat while migrating, pass `legacyComposer` to `Chat`.\n *\n * @deprecated Use `Composer`; see the README section \"Migrating from ChatComposer\".\n */\nexport function ChatComposer(props: ChatComposerProps): JSX.Element {\n const merged = mergeProps(\n {\n placeholder: \"message\",\n disabled: false,\n sendAriaLabel: \"Send message\",\n shiftEnterNewline: true,\n ctrlEnterNewline: true,\n fileUpload: false,\n attachAriaLabel: \"Attach file\",\n },\n props\n );\n\n const [value, setValue] = createSignal(\"\");\n const [isFocused, setIsFocused] = createSignal(false);\n const inputId = createId();\n let textareaRef: HTMLTextAreaElement | undefined;\n\n const multiline = (): boolean => merged.shiftEnterNewline || merged.ctrlEnterNewline;\n const canSend = (): boolean => Boolean(merged.onSendMessage) && value().trim().length > 0 && !merged.disabled;\n const showAttach = (): boolean => merged.fileUpload && Boolean(merged.attachInputId || merged.onAttachClick);\n\n const handleSend = (): void => {\n if (!merged.onSendMessage) return;\n const text = value().trim();\n if (!text || merged.disabled) return;\n void merged.onSendMessage(text);\n setValue(\"\");\n };\n\n const handleKeyDown = (event: KeyboardEvent & { currentTarget: HTMLElement }): void => {\n // Enter that commits or cancels an IME composition belongs to the IME, not to the composer.\n if (event.isComposing || event.keyCode === 229) return;\n\n if (shouldComposerNewlineOnEnter(event, { shiftEnterNewline: merged.shiftEnterNewline, ctrlEnterNewline: merged.ctrlEnterNewline })) {\n if (event.currentTarget instanceof HTMLTextAreaElement) {\n event.preventDefault();\n insertNewlineAtCursor(event.currentTarget, value(), setValue);\n }\n return;\n }\n\n if (event.key !== \"Enter\") return;\n\n event.preventDefault();\n handleSend();\n };\n\n const attachClass = (): string =>\n cn(\"smwb-chat-icon-button\", \"smwb-chat-icon-button_edge-start\", merged.disabled && \"smwb-chat-icon-button_disabled\");\n\n const attachButton = (): JSX.Element => (\n <Show when={showAttach()}>\n <Show\n when={merged.attachInputId}\n fallback={\n <ChatIconButton\n edge=\"start\"\n aria-label={merged.attachAriaLabel}\n data-testid=\"chat-composer-attach\"\n disabled={merged.disabled}\n onClick={() => merged.onAttachClick?.()}\n onMouseDown={stopPropagation}\n >\n <Icon name=\"attach_file\" size={24} />\n </ChatIconButton>\n }\n >\n {(id) => (\n <label\n for={merged.disabled ? undefined : id()}\n class={attachClass()}\n aria-label={merged.attachAriaLabel}\n aria-disabled={merged.disabled || undefined}\n data-testid=\"chat-composer-attach\"\n onMouseDown={stopPropagation}\n >\n <Icon name=\"attach_file\" size={24} />\n </label>\n )}\n </Show>\n </Show>\n );\n\n const sendButton = (): JSX.Element => (\n <Show when={merged.onSendMessage}>\n <ChatIconButton\n edge=\"end\"\n color=\"primary\"\n aria-label={merged.sendAriaLabel}\n data-testid=\"chat-composer-send\"\n disabled={!canSend()}\n onClick={handleSend}\n onMouseDown={stopPropagation}\n >\n <Icon name=\"send\" size={24} />\n </ChatIconButton>\n </Show>\n );\n\n const onHolderMouseDown: JSX.EventHandler<HTMLDivElement, MouseEvent> = (event) => {\n if (textareaRef && event.currentTarget === event.target) {\n event.preventDefault();\n textareaRef.focus();\n }\n };\n\n return (\n <Show\n when={!(showAttach() && !merged.onSendMessage)}\n fallback={\n <div class={cn(\"smwb-chat-composer\", \"smwb-chat-composer_attach-only\", merged.class)} data-testid=\"chat-composer\">\n {attachButton()}\n </div>\n }\n >\n <Show\n when={multiline()}\n fallback={\n <TextField\n class={cn(\"smwb-chat-composer\", merged.class)}\n data-testid=\"chat-composer\"\n fullWidth\n value={value()}\n disabled={merged.disabled}\n placeholder={merged.placeholder}\n onChange={(event) => setValue(event.currentTarget.value)}\n startAdornment={attachButton()}\n endAdornment={sendButton()}\n onKeyDown={handleKeyDown}\n />\n }\n >\n <TextFieldWrapper\n class={cn(\"smwb-chat-composer\", merged.class)}\n data-testid=\"chat-composer\"\n fullWidth\n disabled={merged.disabled}\n isFilledState={value().length > 0}\n isFocused={isFocused()}\n for={inputId}\n shrink={Boolean(merged.attachInputId || merged.onAttachClick) && showAttach()}\n onHolderMouseDown={onHolderMouseDown}\n startAdornment={attachButton()}\n endAdornment={sendButton()}\n >\n <textarea\n id={inputId}\n ref={(el) => (textareaRef = el)}\n class={cn(\n \"smwb-text-field__input\",\n \"smwb-chat-composer__input\",\n \"smwb-text-field__input--show-placeholder\",\n showAttach() && \"smwb-text-field__input--adornment-start\",\n merged.onSendMessage && \"smwb-text-field__input--adornment-end\"\n )}\n value={value()}\n disabled={merged.disabled}\n placeholder={merged.placeholder}\n rows={1}\n onInput={(event) => setValue(event.currentTarget.value)}\n onFocus={() => setIsFocused(true)}\n onBlur={() => setIsFocused(false)}\n onKeyDown={handleKeyDown}\n />\n </TextFieldWrapper>\n </Show>\n </Show>\n );\n}\n\nexport default ChatComposer;\n"],"mappings":"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","names":[],"file":"chatComposer.jsx"}
|
|
@@ -2,17 +2,27 @@ import { Show, mergeProps, splitProps } from "solid-js";
|
|
|
2
2
|
import cn from "clsx";
|
|
3
3
|
import { Ripple } from "../../base/ripple";
|
|
4
4
|
import { mergeRefs } from "../../../primitives/mergeRefs";
|
|
5
|
+
import { callHandler } from "../../../primitives/callHandler";
|
|
5
6
|
function ChatIconButton(props) {
|
|
6
|
-
const merged = mergeProps({ color: "default" }, props);
|
|
7
|
-
const [local, rest] = splitProps(merged, [
|
|
7
|
+
const merged = mergeProps({ color: "default", type: "button" }, props);
|
|
8
|
+
const [local, rest] = splitProps(merged, [
|
|
9
|
+
"class",
|
|
10
|
+
"children",
|
|
11
|
+
"disabled",
|
|
12
|
+
"edge",
|
|
13
|
+
"color",
|
|
14
|
+
"ref",
|
|
15
|
+
// The button sets this on its root too; its own handler calls the caller's first.
|
|
16
|
+
"onPointerDown"
|
|
17
|
+
]);
|
|
8
18
|
let rippleActions;
|
|
9
19
|
const onPointerDown = (event) => {
|
|
20
|
+
callHandler(local.onPointerDown, event);
|
|
10
21
|
if (!local.disabled) rippleActions?.onRipple(event);
|
|
11
22
|
};
|
|
12
23
|
return <button
|
|
13
24
|
{...rest}
|
|
14
25
|
ref={mergeRefs(local.ref)}
|
|
15
|
-
type="button"
|
|
16
26
|
class={cn(
|
|
17
27
|
"smwb-chat-icon-button",
|
|
18
28
|
local.edge === "start" && "smwb-chat-icon-button_edge-start",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/dataDisplay/chat/chatIconButton.tsx"],"sourcesContent":["import { type JSX, type ParentProps, Show, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Ripple, type RippleActionsRef } from \"../../base/ripple\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface ChatIconButtonProps extends JSX.ButtonHTMLAttributes<HTMLButtonElement> {\n edge?: \"start\" | \"end\" | undefined;\n color?: \"default\" | \"primary\" | undefined;\n ref?: Ref<HTMLButtonElement>;\n}\n\nexport function ChatIconButton(props: ParentProps<ChatIconButtonProps>): JSX.Element {\n const merged = mergeProps({ color: \"default\" as const }, props);\n const [local, rest] = splitProps(merged, [\"class\"
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/dataDisplay/chat/chatIconButton.tsx"],"sourcesContent":["import { type JSX, type ParentProps, Show, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Ripple, type RippleActionsRef } from \"../../base/ripple\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\nimport { callHandler } from \"../../../primitives/callHandler\";\n\nexport interface ChatIconButtonProps extends JSX.ButtonHTMLAttributes<HTMLButtonElement> {\n edge?: \"start\" | \"end\" | undefined;\n color?: \"default\" | \"primary\" | undefined;\n ref?: Ref<HTMLButtonElement>;\n}\n\nexport function ChatIconButton(props: ParentProps<ChatIconButtonProps>): JSX.Element {\n // `type` is a default: the caller's wins.\n const merged = mergeProps({ color: \"default\" as const, type: \"button\" as const }, props);\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"children\",\n \"disabled\",\n \"edge\",\n \"color\",\n \"ref\",\n // The button sets this on its root too; its own handler calls the caller's first.\n \"onPointerDown\",\n ]);\n\n let rippleActions: RippleActionsRef | undefined;\n\n const onPointerDown: JSX.EventHandler<HTMLButtonElement, PointerEvent> = (event) => {\n callHandler(local.onPointerDown, event);\n if (!local.disabled) rippleActions?.onRipple(event);\n };\n\n return (\n <button\n {...rest}\n ref={mergeRefs(local.ref)}\n class={cn(\n \"smwb-chat-icon-button\",\n local.edge === \"start\" && \"smwb-chat-icon-button_edge-start\",\n local.edge === \"end\" && \"smwb-chat-icon-button_edge-end\",\n local.color === \"primary\" && \"smwb-chat-icon-button_primary\",\n local.disabled && \"smwb-chat-icon-button_disabled\",\n local.class\n )}\n disabled={local.disabled}\n onPointerDown={onPointerDown}\n >\n {local.children}\n <Show when={!local.disabled}>\n <Ripple actionRef={(actions) => (rippleActions = actions)} center />\n </Show>\n </button>\n );\n}\n\nexport default ChatIconButton;\n"],"mappings":"AAAA,SAAqC,MAAM,YAAY,kBAAkB;AACzE,OAAO,QAAQ;AACf,SAAS,cAAqC;AAC9C,SAAS,iBAA2B;AACpC,SAAS,mBAAmB;AAQrB,SAAS,eAAe,OAAsD;AAEnF,QAAM,SAAS,WAAW,EAAE,OAAO,WAAoB,MAAM,SAAkB,GAAG,KAAK;AACvF,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,QAAQ;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,EACF,CAAC;AAED,MAAI;AAEJ,QAAM,gBAAmE,CAAC,UAAU;AAClF,gBAAY,MAAM,eAAe,KAAK;AACtC,QAAI,CAAC,MAAM,SAAU,gBAAe,SAAS,KAAK;AAAA,EACpD;AAEA,SACE,CAAC;AAAA,QACK;AAAA,IACJ,KAAK,UAAU,MAAM,GAAG;AAAA,IACxB,OAAO;AAAA,MACL;AAAA,MACA,MAAM,SAAS,WAAW;AAAA,MAC1B,MAAM,SAAS,SAAS;AAAA,MACxB,MAAM,UAAU,aAAa;AAAA,MAC7B,MAAM,YAAY;AAAA,MAClB,MAAM;AAAA,IACR;AAAA,IACA,UAAU,MAAM;AAAA,IAChB,eAAe;AAAA,GAChB;AAAA,OACE,MAAM,SAAS;AAAA,MAChB,CAAC,KAAK,MAAM,CAAC,MAAM,UAAU;AAAA,QAC3B,CAAC,OAAO,WAAW,CAAC,YAAa,gBAAgB,SAAU,OAAO,EAAE;AAAA,MACtE,EAFC,KAEM;AAAA,IACT,EAlBC;AAoBL;AAEA,IAAO,yBAAQ;","names":[],"file":"chatIconButton.jsx"}
|
|
@@ -3,6 +3,7 @@ import cn from "clsx";
|
|
|
3
3
|
import { Icon } from "../../base/icon";
|
|
4
4
|
import { ChatIconButton } from "./chatIconButton";
|
|
5
5
|
import { createControllableState } from "../../../primitives/createControllableState";
|
|
6
|
+
import { mergeStyle } from "../../../primitives/mergeStyle";
|
|
6
7
|
import { Chat } from "./chat";
|
|
7
8
|
const len = (value) => typeof value === "number" ? `${value}px` : value;
|
|
8
9
|
const floatingAnchorForSide = (side) => side === "left" ? "bottom-left" : "bottom-right";
|
|
@@ -31,7 +32,8 @@ function ChatLayout(props) {
|
|
|
31
32
|
"floatingAnchor",
|
|
32
33
|
"chat",
|
|
33
34
|
"children",
|
|
34
|
-
"style"
|
|
35
|
+
"style",
|
|
36
|
+
"data-testid"
|
|
35
37
|
]);
|
|
36
38
|
const [collapsed, setCollapsed] = createControllableState({
|
|
37
39
|
value: () => local.collapsed,
|
|
@@ -61,17 +63,14 @@ function ChatLayout(props) {
|
|
|
61
63
|
{local.chat.headerActions}
|
|
62
64
|
{expandButton()}
|
|
63
65
|
</>;
|
|
64
|
-
const rootStyle = () => ({
|
|
65
|
-
"--smwb-chat-layout-w": len(local.chatWidth),
|
|
66
|
-
...typeof local.style === "object" && local.style ? local.style : {}
|
|
67
|
-
});
|
|
66
|
+
const rootStyle = () => mergeStyle({ "--smwb-chat-layout-w": len(local.chatWidth) }, local.style);
|
|
68
67
|
return <Show
|
|
69
68
|
when={collapsed()}
|
|
70
69
|
fallback={<div
|
|
71
70
|
{...rest}
|
|
72
71
|
class={cn("smwb-chat-layout", `smwb-chat-layout_${local.side}`, local.class)}
|
|
73
72
|
style={rootStyle()}
|
|
74
|
-
data-testid="chat-layout"
|
|
73
|
+
data-testid={local["data-testid"] ?? "chat-layout"}
|
|
75
74
|
data-collapsed="false"
|
|
76
75
|
>
|
|
77
76
|
<Show when={local.side === "left"}>
|
|
@@ -93,7 +92,7 @@ function ChatLayout(props) {
|
|
|
93
92
|
{...rest}
|
|
94
93
|
class={cn("smwb-chat-layout", "smwb-chat-layout_collapsed", local.class)}
|
|
95
94
|
style={rootStyle()}
|
|
96
|
-
data-testid="chat-layout"
|
|
95
|
+
data-testid={local["data-testid"] ?? "chat-layout"}
|
|
97
96
|
data-collapsed="true"
|
|
98
97
|
>
|
|
99
98
|
<div class={cn("smwb-chat-layout__content", local.contentClass)} data-testid="chat-layout-content">
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/dataDisplay/chat/chatLayout.tsx"],"sourcesContent":["import { type JSX, type ParentProps, Show, createEffect, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Icon } from \"../../base/icon\";\nimport { ChatIconButton } from \"./chatIconButton\";\nimport { createControllableState } from \"../../../primitives/createControllableState\";\nimport { Chat, type ChatProps } from \"./chat\";\nimport type { ChatAnchor, ChatLayoutSide } from \"./types\";\n\nconst len = (value: number | string): 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 | \"class\"\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 ParentProps, JSX.HTMLAttributes<HTMLDivElement> {\n contentClass?: string | undefined;\n chatClass?: string | undefined;\n side?: ChatLayoutSide | undefined;\n chatWidth?: number | string | undefined;\n collapsed?: boolean | undefined;\n defaultCollapsed?: boolean | undefined;\n onCollapsedChange?: ((collapsed: boolean) => void) | undefined;\n collapseAriaLabel?: string | undefined;\n expandAriaLabel?: string | undefined;\n floatingAnchor?: ChatAnchor | undefined;\n chat: ChatLayoutChatProps;\n}\n\nexport function ChatLayout(props: ChatLayoutProps): JSX.Element {\n const merged = mergeProps(\n {\n side: \"right\" as const,\n chatWidth: 400 as number | string,\n defaultCollapsed: false,\n collapseAriaLabel: \"Collapse chat panel\",\n expandAriaLabel: \"Expand chat panel\",\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"contentClass\",\n \"chatClass\",\n \"side\",\n \"chatWidth\",\n \"collapsed\",\n \"defaultCollapsed\",\n \"onCollapsedChange\",\n \"collapseAriaLabel\",\n \"expandAriaLabel\",\n \"floatingAnchor\",\n \"chat\",\n \"children\",\n \"style\",\n ]);\n\n const [collapsed, setCollapsed] = createControllableState<boolean>({\n value: () => local.collapsed,\n defaultValue: local.defaultCollapsed,\n onChange: local.onCollapsedChange,\n });\n\n const [floatingOpen, setFloatingOpen] = createControllableState<boolean>({ defaultValue: false });\n\n createEffect(() => {\n if (!collapsed()) {\n setFloatingOpen(false);\n }\n });\n\n const anchor = (): ChatAnchor => local.floatingAnchor ?? floatingAnchorForSide(local.side);\n const dockIcon = (): string => (local.side === \"left\" ? \"dock_to_left\" : \"dock_to_right\");\n const collapseIcon = (): string => (local.side === \"left\" ? \"left_panel_close\" : \"right_panel_close\");\n\n const collapseButton = (): JSX.Element => (\n <ChatIconButton aria-label={local.collapseAriaLabel} data-testid=\"chat-layout-collapse\" onClick={() => setCollapsed(true)}>\n <Icon name={collapseIcon()} size={18} />\n </ChatIconButton>\n );\n\n const expandButton = (): JSX.Element => (\n <ChatIconButton aria-label={local.expandAriaLabel} data-testid=\"chat-layout-expand\" onClick={() => setCollapsed(false)}>\n <Icon name={dockIcon()} size={18} />\n </ChatIconButton>\n );\n\n const dockedHeaderActions = (): JSX.Element => (\n <>\n {local.chat.headerActions}\n {collapseButton()}\n </>\n );\n\n const floatingHeaderActions = (): JSX.Element => (\n <>\n {local.chat.headerActions}\n {expandButton()}\n </>\n );\n\n const rootStyle = (): JSX.CSSProperties
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/dataDisplay/chat/chatLayout.tsx"],"sourcesContent":["import { type JSX, type ParentProps, Show, createEffect, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Icon } from \"../../base/icon\";\nimport { ChatIconButton } from \"./chatIconButton\";\nimport { createControllableState } from \"../../../primitives/createControllableState\";\nimport { mergeStyle } from \"../../../primitives/mergeStyle\";\nimport { Chat, type ChatProps } from \"./chat\";\nimport type { ChatAnchor, ChatLayoutSide } from \"./types\";\n\nconst len = (value: number | string): 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 | \"class\"\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 ParentProps, JSX.HTMLAttributes<HTMLDivElement> {\n contentClass?: string | undefined;\n chatClass?: string | undefined;\n side?: ChatLayoutSide | undefined;\n chatWidth?: number | string | undefined;\n collapsed?: boolean | undefined;\n defaultCollapsed?: boolean | undefined;\n onCollapsedChange?: ((collapsed: boolean) => void) | undefined;\n collapseAriaLabel?: string | undefined;\n expandAriaLabel?: string | undefined;\n floatingAnchor?: ChatAnchor | undefined;\n chat: ChatLayoutChatProps;\n /** Test id of the root `<div>`; `chat-layout` unless given. */\n \"data-testid\"?: string | undefined;\n}\n\nexport function ChatLayout(props: ChatLayoutProps): JSX.Element {\n const merged = mergeProps(\n {\n side: \"right\" as const,\n chatWidth: 400 as number | string,\n defaultCollapsed: false,\n collapseAriaLabel: \"Collapse chat panel\",\n expandAriaLabel: \"Expand chat panel\",\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"contentClass\",\n \"chatClass\",\n \"side\",\n \"chatWidth\",\n \"collapsed\",\n \"defaultCollapsed\",\n \"onCollapsedChange\",\n \"collapseAriaLabel\",\n \"expandAriaLabel\",\n \"floatingAnchor\",\n \"chat\",\n \"children\",\n \"style\",\n \"data-testid\",\n ]);\n\n const [collapsed, setCollapsed] = createControllableState<boolean>({\n value: () => local.collapsed,\n defaultValue: local.defaultCollapsed,\n onChange: local.onCollapsedChange,\n });\n\n const [floatingOpen, setFloatingOpen] = createControllableState<boolean>({ defaultValue: false });\n\n createEffect(() => {\n if (!collapsed()) {\n setFloatingOpen(false);\n }\n });\n\n const anchor = (): ChatAnchor => local.floatingAnchor ?? floatingAnchorForSide(local.side);\n const dockIcon = (): string => (local.side === \"left\" ? \"dock_to_left\" : \"dock_to_right\");\n const collapseIcon = (): string => (local.side === \"left\" ? \"left_panel_close\" : \"right_panel_close\");\n\n const collapseButton = (): JSX.Element => (\n <ChatIconButton aria-label={local.collapseAriaLabel} data-testid=\"chat-layout-collapse\" onClick={() => setCollapsed(true)}>\n <Icon name={collapseIcon()} size={18} />\n </ChatIconButton>\n );\n\n const expandButton = (): JSX.Element => (\n <ChatIconButton aria-label={local.expandAriaLabel} data-testid=\"chat-layout-expand\" onClick={() => setCollapsed(false)}>\n <Icon name={dockIcon()} size={18} />\n </ChatIconButton>\n );\n\n const dockedHeaderActions = (): JSX.Element => (\n <>\n {local.chat.headerActions}\n {collapseButton()}\n </>\n );\n\n const floatingHeaderActions = (): JSX.Element => (\n <>\n {local.chat.headerActions}\n {expandButton()}\n </>\n );\n\n // The caller's style goes last: its own --smwb-chat-layout-w wins over chatWidth.\n const rootStyle = (): JSX.CSSProperties | string | undefined =>\n mergeStyle({ \"--smwb-chat-layout-w\": len(local.chatWidth) }, local.style);\n\n return (\n <Show\n when={collapsed()}\n fallback={\n <div\n {...rest}\n class={cn(\"smwb-chat-layout\", `smwb-chat-layout_${local.side}`, local.class)}\n style={rootStyle()}\n data-testid={local[\"data-testid\"] ?? \"chat-layout\"}\n data-collapsed=\"false\"\n >\n <Show when={local.side === \"left\"}>\n <aside class=\"smwb-chat-layout__panel\" data-testid=\"chat-layout-panel\">\n <Chat {...local.chat} class={local.chatClass} embedded allowedLayouts={[]} headerActions={dockedHeaderActions()} />\n </aside>\n </Show>\n <div class={cn(\"smwb-chat-layout__content\", local.contentClass)} data-testid=\"chat-layout-content\">\n {local.children}\n </div>\n <Show when={local.side === \"right\"}>\n <aside class=\"smwb-chat-layout__panel\" data-testid=\"chat-layout-panel\">\n <Chat {...local.chat} class={local.chatClass} embedded allowedLayouts={[]} headerActions={dockedHeaderActions()} />\n </aside>\n </Show>\n </div>\n }\n >\n <div\n {...rest}\n class={cn(\"smwb-chat-layout\", \"smwb-chat-layout_collapsed\", local.class)}\n style={rootStyle()}\n data-testid={local[\"data-testid\"] ?? \"chat-layout\"}\n data-collapsed=\"true\"\n >\n <div class={cn(\"smwb-chat-layout__content\", local.contentClass)} data-testid=\"chat-layout-content\">\n {local.children}\n </div>\n <Chat\n {...local.chat}\n class={local.chatClass}\n floatingTrigger\n anchor={anchor()}\n allowedLayouts={[\"floating\"]}\n layout=\"floating\"\n open={floatingOpen()}\n onOpenChange={setFloatingOpen}\n headerActions={floatingHeaderActions()}\n />\n </div>\n </Show>\n );\n}\n\nexport default ChatLayout;\n"],"mappings":"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","names":[],"file":"chatLayout.jsx"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { mergeProps, splitProps } from "solid-js";
|
|
2
2
|
import cn from "clsx";
|
|
3
|
+
import { mergeStyle } from "../../../primitives/mergeStyle";
|
|
3
4
|
import { Chat } from "./chat";
|
|
4
5
|
const len = (value) => typeof value === "number" ? `${value}px` : value;
|
|
5
6
|
const anchorForSide = (side) => side === "left" ? "bottom-left" : "bottom-right";
|
|
@@ -25,17 +26,15 @@ function ChatOverlayLayout(props) {
|
|
|
25
26
|
"defaultOpen",
|
|
26
27
|
"chat",
|
|
27
28
|
"children",
|
|
28
|
-
"style"
|
|
29
|
+
"style",
|
|
30
|
+
"data-testid"
|
|
29
31
|
]);
|
|
30
|
-
const rootStyle = () => ({
|
|
31
|
-
"--smwb-chat-overlay-w": len(local.chatWidth),
|
|
32
|
-
...typeof local.style === "object" && local.style ? local.style : {}
|
|
33
|
-
});
|
|
32
|
+
const rootStyle = () => mergeStyle({ "--smwb-chat-overlay-w": len(local.chatWidth) }, local.style);
|
|
34
33
|
return <div
|
|
35
34
|
{...rest}
|
|
36
35
|
class={cn("smwb-chat-overlay-layout", local.class)}
|
|
37
36
|
style={rootStyle()}
|
|
38
|
-
data-testid="chat-overlay-layout"
|
|
37
|
+
data-testid={local["data-testid"] ?? "chat-overlay-layout"}
|
|
39
38
|
>
|
|
40
39
|
<div class={cn("smwb-chat-overlay-layout__content", local.contentClass)} data-testid="chat-overlay-layout-content">
|
|
41
40
|
{local.children}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/dataDisplay/chat/chatOverlayLayout.tsx"],"sourcesContent":["import { type JSX, type ParentProps, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Chat, type ChatProps } from \"./chat\";\nimport type { ChatAnchor, ChatLayoutMode, ChatLayoutSide } from \"./types\";\n\nconst len = (value: number | string): string => (typeof value === \"number\" ? `${value}px` : value);\n\nconst anchorForSide = (side: ChatLayoutSide): ChatAnchor => (side === \"left\" ? \"bottom-left\" : \"bottom-right\");\n\nexport type ChatOverlayLayoutChatProps = Omit<\n ChatProps,\n | \"class\"\n | \"overlayContext\"\n | \"embedded\"\n | \"floatingTrigger\"\n | \"anchor\"\n | \"allowedLayouts\"\n | \"layout\"\n | \"defaultLayout\"\n | \"onLayoutChange\"\n | \"open\"\n | \"defaultOpen\"\n | \"onOpenChange\"\n>;\n\nexport interface ChatOverlayLayoutProps extends ParentProps, JSX.HTMLAttributes<HTMLDivElement> {\n contentClass?: string | undefined;\n chatClass?: string | undefined;\n side?: ChatLayoutSide | undefined;\n chatWidth?: number | string | undefined;\n allowedLayouts?: ChatLayoutMode[] | undefined;\n defaultLayout?: ChatLayoutMode | undefined;\n defaultOpen?: boolean | undefined;\n chat: ChatOverlayLayoutChatProps;\n}\n\nexport function ChatOverlayLayout(props: ChatOverlayLayoutProps): JSX.Element {\n const merged = mergeProps(\n {\n side: \"right\" as const,\n chatWidth: 400 as number | string,\n allowedLayouts: [\"fullHeight\", \"floating\"] as ChatLayoutMode[],\n defaultLayout: \"fullHeight\" as ChatLayoutMode,\n defaultOpen: true,\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"contentClass\",\n \"chatClass\",\n \"side\",\n \"chatWidth\",\n \"allowedLayouts\",\n \"defaultLayout\",\n \"defaultOpen\",\n \"chat\",\n \"children\",\n \"style\",\n ]);\n\n const rootStyle = (): JSX.CSSProperties
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/dataDisplay/chat/chatOverlayLayout.tsx"],"sourcesContent":["import { type JSX, type ParentProps, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { mergeStyle } from \"../../../primitives/mergeStyle\";\nimport { Chat, type ChatProps } from \"./chat\";\nimport type { ChatAnchor, ChatLayoutMode, ChatLayoutSide } from \"./types\";\n\nconst len = (value: number | string): string => (typeof value === \"number\" ? `${value}px` : value);\n\nconst anchorForSide = (side: ChatLayoutSide): ChatAnchor => (side === \"left\" ? \"bottom-left\" : \"bottom-right\");\n\nexport type ChatOverlayLayoutChatProps = Omit<\n ChatProps,\n | \"class\"\n | \"overlayContext\"\n | \"embedded\"\n | \"floatingTrigger\"\n | \"anchor\"\n | \"allowedLayouts\"\n | \"layout\"\n | \"defaultLayout\"\n | \"onLayoutChange\"\n | \"open\"\n | \"defaultOpen\"\n | \"onOpenChange\"\n>;\n\nexport interface ChatOverlayLayoutProps extends ParentProps, JSX.HTMLAttributes<HTMLDivElement> {\n contentClass?: string | undefined;\n chatClass?: string | undefined;\n side?: ChatLayoutSide | undefined;\n chatWidth?: number | string | undefined;\n allowedLayouts?: ChatLayoutMode[] | undefined;\n defaultLayout?: ChatLayoutMode | undefined;\n defaultOpen?: boolean | undefined;\n chat: ChatOverlayLayoutChatProps;\n /** Test id of the root `<div>`; `chat-overlay-layout` unless given. */\n \"data-testid\"?: string | undefined;\n}\n\nexport function ChatOverlayLayout(props: ChatOverlayLayoutProps): JSX.Element {\n const merged = mergeProps(\n {\n side: \"right\" as const,\n chatWidth: 400 as number | string,\n allowedLayouts: [\"fullHeight\", \"floating\"] as ChatLayoutMode[],\n defaultLayout: \"fullHeight\" as ChatLayoutMode,\n defaultOpen: true,\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"contentClass\",\n \"chatClass\",\n \"side\",\n \"chatWidth\",\n \"allowedLayouts\",\n \"defaultLayout\",\n \"defaultOpen\",\n \"chat\",\n \"children\",\n \"style\",\n \"data-testid\",\n ]);\n\n // The caller's style goes last: its own --smwb-chat-overlay-w wins over chatWidth.\n const rootStyle = (): JSX.CSSProperties | string | undefined =>\n mergeStyle({ \"--smwb-chat-overlay-w\": len(local.chatWidth) }, local.style);\n\n return (\n <div\n {...rest}\n class={cn(\"smwb-chat-overlay-layout\", local.class)}\n style={rootStyle()}\n data-testid={local[\"data-testid\"] ?? \"chat-overlay-layout\"}\n >\n <div class={cn(\"smwb-chat-overlay-layout__content\", local.contentClass)} data-testid=\"chat-overlay-layout-content\">\n {local.children}\n </div>\n <Chat\n {...local.chat}\n class={local.chatClass}\n overlayContext\n floatingTrigger\n anchor={anchorForSide(local.side)}\n allowedLayouts={local.allowedLayouts}\n defaultLayout={local.defaultLayout}\n defaultOpen={local.defaultOpen}\n />\n </div>\n );\n}\n\nexport default ChatOverlayLayout;\n"],"mappings":"AAAA,SAAqC,YAAY,kBAAkB;AACnE,OAAO,QAAQ;AACf,SAAS,kBAAkB;AAC3B,SAAS,YAA4B;AAGrC,MAAM,MAAM,CAAC,UAAoC,OAAO,UAAU,WAAW,GAAG,KAAK,OAAO;AAE5F,MAAM,gBAAgB,CAAC,SAAsC,SAAS,SAAS,gBAAgB;AA+BxF,SAAS,kBAAkB,OAA4C;AAC5E,QAAM,SAAS;AAAA,IACb;AAAA,MACE,MAAM;AAAA,MACN,WAAW;AAAA,MACX,gBAAgB,CAAC,cAAc,UAAU;AAAA,MACzC,eAAe;AAAA,MACf,aAAa;AAAA,IACf;AAAA,IACA;AAAA,EACF;AACA,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,QAAQ;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAGD,QAAM,YAAY,MAChB,WAAW,EAAE,yBAAyB,IAAI,MAAM,SAAS,EAAE,GAAG,MAAM,KAAK;AAE3E,SACE,CAAC;AAAA,QACK;AAAA,IACJ,OAAO,GAAG,4BAA4B,MAAM,KAAK;AAAA,IACjD,OAAO,UAAU;AAAA,IACjB,aAAa,MAAM,aAAa,KAAK;AAAA,GACtC;AAAA,MACC,CAAC,IAAI,OAAO,GAAG,qCAAqC,MAAM,YAAY,GAAG,YAAY,8BAA8B;AAAA,SAChH,MAAM,SAAS;AAAA,MAClB,EAFC,IAEK;AAAA,MACN,CAAC;AAAA,QACK,MAAM;AAAA,IACV,OAAO,MAAM;AAAA,IACb;AAAA,IACA;AAAA,IACA,QAAQ,cAAc,MAAM,IAAI;AAAA,IAChC,gBAAgB,MAAM;AAAA,IACtB,eAAe,MAAM;AAAA,IACrB,aAAa,MAAM;AAAA,EACrB,EAAE;AAAA,IACJ,EAnBC;AAqBL;AAEA,IAAO,4BAAQ;","names":[],"file":"chatOverlayLayout.jsx"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/components/dataDisplay/chat/index.ts"],
|
|
4
|
-
"sourcesContent": ["export { ChatLayout, default as ChatLayoutDefault } from \"./chatLayout\";\nexport type { ChatLayoutProps, ChatLayoutChatProps } from \"./chatLayout\";\nexport { ChatOverlayLayout } from \"./chatOverlayLayout\";\nexport type { ChatOverlayLayoutProps, ChatOverlayLayoutChatProps } from \"./chatOverlayLayout\";\nexport { Chat, default } from \"./chat\";\nexport type { ChatProps } from \"./chat\";\nexport { ChatShell } from \"./chatShell\";\nexport type { ChatShellProps } from \"./chatShell\";\nexport { ChatHeader } from \"./chatHeader\";\nexport type { ChatHeaderProps } from \"./chatHeader\";\nexport { ChatMessages } from \"./chatMessages\";\nexport type { ChatMessagesProps } from \"./chatMessages\";\nexport { ChatMessageItem } from \"./chatMessageItem\";\nexport type { ChatMessageItemProps } from \"./chatMessageItem\";\nexport { ChatMessageIncoming } from \"./chatMessageIncoming\";\nexport type { ChatMessageIncomingProps } from \"./chatMessageIncoming\";\nexport { ChatMessageOutgoing } from \"./chatMessageOutgoing\";\nexport type { ChatMessageOutgoingProps } from \"./chatMessageOutgoing\";\nexport { ChatMessageSystem } from \"./chatMessageSystem\";\nexport type { ChatMessageSystemProps } from \"./chatMessageSystem\";\nexport { ChatMessageBubble } from \"./chatMessageBubble\";\nexport type { ChatMessageBubbleProps } from \"./chatMessageBubble\";\nexport { ChatMessageSkeleton } from \"./chatMessageSkeleton\";\nexport type { ChatMessageSkeletonProps } from \"./chatMessageSkeleton\";\nexport { ChatMessageStatus } from \"./chatMessageStatus\";\nexport type { ChatMessageStatusProps } from \"./chatMessageStatus\";\nexport { ChatMessageAvatar } from \"./chatMessageAvatar\";\nexport type { ChatMessageAvatarProps } from \"./chatMessageAvatar\";\nexport { ChatAttachments } from \"./chatAttachments\";\nexport type { ChatAttachmentsProps } from \"./chatAttachments\";\nexport { ChatAttachmentImage } from \"./chatAttachmentImage\";\nexport type { ChatAttachmentImageProps } from \"./chatAttachmentImage\";\nexport { ChatIconButton } from \"./chatIconButton\";\nexport type { ChatIconButtonProps } from \"./chatIconButton\";\nexport { ChatComposer } from \"./chatComposer\";\nexport type { ChatComposerProps } from \"./chatComposer\";\nexport { createChatInfiniteScroll } from \"./useChatInfiniteScroll\";\nexport type { CreateChatInfiniteScrollParams } from \"./useChatInfiniteScroll\";\nexport { createChatFileUpload, resolveChatFileUploadMaxFiles } from \"./useChatFileUpload\";\nexport type { CreateChatFileUploadOptions, ChatFileUploadState } from \"./useChatFileUpload\";\nexport { createChatStickToBottom, isScrolledToBottom, scrollChatToBottom } from \"./useChatStickToBottom\";\nexport type { CreateChatStickToBottomParams } from \"./useChatStickToBottom\";\nexport type {\n ChatMessage,\n ChatAttachment,\n ChatAuthor,\n ChatMessageVariant,\n ChatLayoutMode,\n ChatAnchor,\n ChatThemeMode,\n ChatMessageRenderContext,\n ChatLayoutSide,\n ChatMessageDeliveryStatus,\n ChatMessageStatus as ChatMessageStatusValue,\n ChatMessageStatusIcons,\n ChatMessageStatusRenderContext,\n} from \"./types\";\nexport {\n CHAT_EXPAND_LAYOUTS,\n CHAT_DEFAULT_FILE_UPLOAD_MAX_FILES,\n CHAT_MESSAGE_DELIVERY_STATUSES,\n CHAT_MESSAGE_STATUS_ICONS,\n CHAT_MESSAGE_STATUS_LABELS,\n} from \"./types\";\nexport {\n isImageAttachment,\n formatChatTimestamp,\n resolveAllowedLayouts,\n isChatMessageDeliveryStatus,\n resolveChatMessageStatusIcon,\n resolveChatMessageStatusLabel,\n shouldComposerNewlineOnEnter,\n getChatLayoutActions,\n shouldShowChatCloseButton,\n} from \"./utils\";\nexport type { ChatComposerNewlineOptions } from \"./utils\";\n"],
|
|
4
|
+
"sourcesContent": ["export { ChatLayout, default as ChatLayoutDefault } from \"./chatLayout\";\nexport type { ChatLayoutProps, ChatLayoutChatProps } from \"./chatLayout\";\nexport { ChatOverlayLayout } from \"./chatOverlayLayout\";\nexport type { ChatOverlayLayoutProps, ChatOverlayLayoutChatProps } from \"./chatOverlayLayout\";\nexport { Chat, default } from \"./chat\";\nexport type { ChatProps, ChatFooterComposerProps } from \"./chat\";\nexport { ChatShell } from \"./chatShell\";\nexport type { ChatShellProps } from \"./chatShell\";\nexport { ChatHeader } from \"./chatHeader\";\nexport type { ChatHeaderProps } from \"./chatHeader\";\nexport { ChatMessages } from \"./chatMessages\";\nexport type { ChatMessagesProps } from \"./chatMessages\";\nexport { ChatMessageItem } from \"./chatMessageItem\";\nexport type { ChatMessageItemProps } from \"./chatMessageItem\";\nexport { ChatMessageIncoming } from \"./chatMessageIncoming\";\nexport type { ChatMessageIncomingProps } from \"./chatMessageIncoming\";\nexport { ChatMessageOutgoing } from \"./chatMessageOutgoing\";\nexport type { ChatMessageOutgoingProps } from \"./chatMessageOutgoing\";\nexport { ChatMessageSystem } from \"./chatMessageSystem\";\nexport type { ChatMessageSystemProps } from \"./chatMessageSystem\";\nexport { ChatMessageBubble } from \"./chatMessageBubble\";\nexport type { ChatMessageBubbleProps } from \"./chatMessageBubble\";\nexport { ChatMessageSkeleton } from \"./chatMessageSkeleton\";\nexport type { ChatMessageSkeletonProps } from \"./chatMessageSkeleton\";\nexport { ChatMessageStatus } from \"./chatMessageStatus\";\nexport type { ChatMessageStatusProps } from \"./chatMessageStatus\";\nexport { ChatMessageAvatar } from \"./chatMessageAvatar\";\nexport type { ChatMessageAvatarProps } from \"./chatMessageAvatar\";\nexport { ChatAttachments } from \"./chatAttachments\";\nexport type { ChatAttachmentsProps } from \"./chatAttachments\";\nexport { ChatAttachmentImage } from \"./chatAttachmentImage\";\nexport type { ChatAttachmentImageProps } from \"./chatAttachmentImage\";\nexport { ChatIconButton } from \"./chatIconButton\";\nexport type { ChatIconButtonProps } from \"./chatIconButton\";\nexport { ChatComposer } from \"./chatComposer\";\nexport type { ChatComposerProps } from \"./chatComposer\";\nexport { createChatInfiniteScroll } from \"./useChatInfiniteScroll\";\nexport type { CreateChatInfiniteScrollParams } from \"./useChatInfiniteScroll\";\nexport { createChatFileUpload, resolveChatFileUploadMaxFiles } from \"./useChatFileUpload\";\nexport type { CreateChatFileUploadOptions, ChatFileUploadState } from \"./useChatFileUpload\";\nexport { createChatStickToBottom, isScrolledToBottom, scrollChatToBottom } from \"./useChatStickToBottom\";\nexport type { CreateChatStickToBottomParams } from \"./useChatStickToBottom\";\nexport type {\n ChatMessage,\n ChatAttachment,\n ChatAuthor,\n ChatMessageVariant,\n ChatLayoutMode,\n ChatAnchor,\n ChatThemeMode,\n ChatMessageRenderContext,\n ChatLayoutSide,\n ChatMessageDeliveryStatus,\n ChatMessageStatus as ChatMessageStatusValue,\n ChatMessageStatusIcons,\n ChatMessageStatusRenderContext,\n} from \"./types\";\nexport {\n CHAT_EXPAND_LAYOUTS,\n CHAT_DEFAULT_FILE_UPLOAD_MAX_FILES,\n CHAT_MESSAGE_DELIVERY_STATUSES,\n CHAT_MESSAGE_STATUS_ICONS,\n CHAT_MESSAGE_STATUS_LABELS,\n} from \"./types\";\nexport {\n isImageAttachment,\n formatChatTimestamp,\n resolveAllowedLayouts,\n isChatMessageDeliveryStatus,\n resolveChatMessageStatusIcon,\n resolveChatMessageStatusLabel,\n shouldComposerNewlineOnEnter,\n getChatLayoutActions,\n shouldShowChatCloseButton,\n} from \"./utils\";\nexport type { ChatComposerNewlineOptions } from \"./utils\";\n"],
|
|
5
5
|
"mappings": "AAAA,SAAS,YAAuB,WAAXA,gBAAoC;AAEzD,SAAS,yBAAyB;AAElC,SAAS,MAAM,WAAAA,gBAAe;AAE9B,SAAS,iBAAiB;AAE1B,SAAS,kBAAkB;AAE3B,SAAS,oBAAoB;AAE7B,SAAS,uBAAuB;AAEhC,SAAS,2BAA2B;AAEpC,SAAS,2BAA2B;AAEpC,SAAS,yBAAyB;AAElC,SAAS,yBAAyB;AAElC,SAAS,2BAA2B;AAEpC,SAAS,yBAAyB;AAElC,SAAS,yBAAyB;AAElC,SAAS,uBAAuB;AAEhC,SAAS,2BAA2B;AAEpC,SAAS,sBAAsB;AAE/B,SAAS,oBAAoB;AAE7B,SAAS,gCAAgC;AAEzC,SAAS,sBAAsB,qCAAqC;AAEpE,SAAS,yBAAyB,oBAAoB,0BAA0B;AAiBhF;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;",
|
|
6
6
|
"names": ["default"]
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/components/dataDisplay/chat/utils.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n type ChatAttachment,\n type ChatLayoutMode,\n CHAT_EXPAND_LAYOUTS,\n CHAT_MESSAGE_DELIVERY_STATUSES,\n CHAT_MESSAGE_STATUS_ICONS,\n CHAT_MESSAGE_STATUS_LABELS,\n type ChatMessageDeliveryStatus,\n type ChatMessageStatus,\n type ChatMessageStatusIcons,\n} from \"./types\";\n\nexport function isChatMessageDeliveryStatus(status: ChatMessageStatus): status is ChatMessageDeliveryStatus {\n return CHAT_MESSAGE_DELIVERY_STATUSES.includes(status as ChatMessageDeliveryStatus);\n}\n\nexport function resolveChatMessageStatusIcon(\n status: ChatMessageStatus,\n icons?: ChatMessageStatusIcons & Record<string, string | undefined>\n): string | undefined {\n const custom = icons?.[status];\n if (custom) {\n return custom;\n }\n\n if (isChatMessageDeliveryStatus(status)) {\n return CHAT_MESSAGE_STATUS_ICONS[status];\n }\n\n return undefined;\n}\n\nexport function resolveChatMessageStatusLabel(status: ChatMessageStatus): string {\n if (isChatMessageDeliveryStatus(status)) {\n return CHAT_MESSAGE_STATUS_LABELS[status];\n }\n\n return String(status);\n}\n\nexport function isImageAttachment(attachment: ChatAttachment): boolean {\n if (attachment.mimeType?.startsWith(\"image/\")) {\n return true;\n }\n\n return /\\.(png|jpe?g|gif|webp|bmp|svg)$/i.test(attachment.name);\n}\n\nexport function formatChatTimestamp(value?: string | Date): string {\n if (!value) {\n return \"\";\n }\n\n const date = value instanceof Date ? value : new Date(value);\n\n if (Number.isNaN(date.getTime())) {\n return String(value);\n }\n\n return new Intl.DateTimeFormat(undefined, {\n hour: \"2-digit\",\n minute: \"2-digit\",\n }).format(date);\n}\n\nexport function resolveAllowedLayouts(input?: ChatLayoutMode[]): ChatLayoutMode[] {\n if (input == null) {\n return [\"floating\"];\n }\n\n if (input.length === 0) {\n return [];\n }\n\n return CHAT_EXPAND_LAYOUTS.filter((mode) => input.includes(mode));\n}\n\nexport function pickInitialLayout(allowed: ChatLayoutMode[], preferred?: ChatLayoutMode): ChatLayoutMode {\n if (preferred && preferred !== \"closed\" && allowed.includes(preferred)) {\n return preferred;\n }\n\n return allowed[0] ?? \"floating\";\n}\n\nexport function getChatLayoutActions(\n allowedLayouts: ChatLayoutMode[],\n currentLayout?: ChatLayoutMode\n): Exclude<ChatLayoutMode, \"closed\">[] {\n return resolveAllowedLayouts(allowedLayouts).filter(\n (mode): mode is Exclude<ChatLayoutMode, \"closed\"> => mode !== \"closed\" && mode !== currentLayout\n );\n}\n\nexport function shouldShowChatCloseButton(options: {\n floatingTrigger?: boolean | undefined;\n embedded?: boolean | undefined;\n overlayContext?: boolean | undefined;\n effectiveLayout?: ChatLayoutMode | undefined;\n showCloseButton?: boolean | undefined;\n}): boolean {\n if (options.showCloseButton === false) {\n return false;\n }\n\n if (options.showCloseButton === true) {\n return true;\n }\n\n if (\n options.overlayContext &&\n options.floatingTrigger &&\n !options.embedded &&\n (options.effectiveLayout === \"floating\" || options.effectiveLayout === \"fullHeight\")\n ) {\n return true;\n }\n\n return Boolean(options.floatingTrigger && !options.embedded && options.effectiveLayout === \"floating\");\n}\n\nexport interface ChatComposerNewlineOptions {\n shiftEnterNewline?: boolean;\n ctrlEnterNewline?: boolean;\n}\n\nexport function shouldComposerNewlineOnEnter(\n event: { key: string; shiftKey: boolean; ctrlKey: boolean; metaKey: boolean },\n options: ChatComposerNewlineOptions = {}\n): boolean {\n if (event.key !== \"Enter\") {\n return false;\n }\n\n const { shiftEnterNewline = true, ctrlEnterNewline = true } = options;\n const isCtrl = event.ctrlKey || event.metaKey;\n\n if (shiftEnterNewline && event.shiftKey && !isCtrl) {\n return true;\n }\n\n if (ctrlEnterNewline && isCtrl && !event.shiftKey) {\n return true;\n }\n\n return false;\n}\n"],
|
|
5
|
-
"mappings": "AAAA;AAAA,EAGE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AAEA,SAAS,4BAA4B,QAAgE;AAC1G,SAAO,+BAA+B,SAAS,MAAmC;AACpF;AAEO,SAAS,6BACd,QACA,OACoB;AACpB,QAAM,SAAS,QAAQ,MAAM;AAC7B,MAAI,QAAQ;AACV,WAAO;AAAA,EACT;AAEA,MAAI,4BAA4B,MAAM,GAAG;AACvC,WAAO,0BAA0B,MAAM;AAAA,EACzC;AAEA,SAAO;AACT;AAEO,SAAS,8BAA8B,QAAmC;AAC/E,MAAI,4BAA4B,MAAM,GAAG;AACvC,WAAO,2BAA2B,MAAM;AAAA,EAC1C;AAEA,SAAO,OAAO,MAAM;AACtB;AAEO,SAAS,kBAAkB,YAAqC;AACrE,MAAI,WAAW,UAAU,WAAW,QAAQ,GAAG;AAC7C,WAAO;AAAA,EACT;AAEA,SAAO,mCAAmC,KAAK,WAAW,IAAI;AAChE;AAEO,SAAS,oBAAoB,OAA+B;AACjE,MAAI,CAAC,OAAO;AACV,WAAO;AAAA,EACT;AAEA,QAAM,OAAO,iBAAiB,OAAO,QAAQ,IAAI,KAAK,KAAK;AAE3D,MAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,GAAG;AAChC,WAAO,OAAO,KAAK;AAAA,EACrB;AAEA,SAAO,IAAI,KAAK,eAAe,QAAW;AAAA,IACxC,MAAM;AAAA,IACN,QAAQ;AAAA,EACV,CAAC,EAAE,OAAO,IAAI;AAChB;AAEO,SAAS,sBAAsB,OAA4C;AAChF,MAAI,SAAS,MAAM;AACjB,WAAO,CAAC,UAAU;AAAA,EACpB;AAEA,MAAI,MAAM,WAAW,GAAG;AACtB,WAAO,CAAC;AAAA,EACV;AAEA,SAAO,oBAAoB,OAAO,CAAC,SAAS,MAAM,SAAS,IAAI,CAAC;AAClE;AAEO,SAAS,kBAAkB,SAA2B,WAA4C;AACvG,MAAI,aAAa,cAAc,YAAY,QAAQ,SAAS,SAAS,GAAG;AACtE,WAAO;AAAA,EACT;AAEA,SAAO,QAAQ,CAAC,KAAK;AACvB;AAEO,SAAS,qBACd,gBACA,eACqC;AACrC,SAAO,sBAAsB,cAAc,EAAE;AAAA,IAC3C,CAAC,SAAoD,SAAS,YAAY,SAAS;AAAA,EACrF;AACF;AAEO,SAAS,0BAA0B,SAM9B;AACV,MAAI,QAAQ,oBAAoB,OAAO;AACrC,WAAO;AAAA,EACT;AAEA,MAAI,QAAQ,oBAAoB,MAAM;AACpC,WAAO;AAAA,EACT;AAEA,MACE,QAAQ,kBACR,QAAQ,mBACR,CAAC,QAAQ,aACR,QAAQ,oBAAoB,cAAc,QAAQ,oBAAoB,eACvE;AACA,WAAO;AAAA,EACT;AAEA,SAAO,QAAQ,QAAQ,mBAAmB,CAAC,QAAQ,YAAY,QAAQ,oBAAoB,UAAU;AACvG;
|
|
4
|
+
"sourcesContent": ["import {\n type ChatAttachment,\n type ChatLayoutMode,\n CHAT_EXPAND_LAYOUTS,\n CHAT_MESSAGE_DELIVERY_STATUSES,\n CHAT_MESSAGE_STATUS_ICONS,\n CHAT_MESSAGE_STATUS_LABELS,\n type ChatMessageDeliveryStatus,\n type ChatMessageStatus,\n type ChatMessageStatusIcons,\n} from \"./types\";\n\nexport function isChatMessageDeliveryStatus(status: ChatMessageStatus): status is ChatMessageDeliveryStatus {\n return CHAT_MESSAGE_DELIVERY_STATUSES.includes(status as ChatMessageDeliveryStatus);\n}\n\nexport function resolveChatMessageStatusIcon(\n status: ChatMessageStatus,\n icons?: ChatMessageStatusIcons & Record<string, string | undefined>\n): string | undefined {\n const custom = icons?.[status];\n if (custom) {\n return custom;\n }\n\n if (isChatMessageDeliveryStatus(status)) {\n return CHAT_MESSAGE_STATUS_ICONS[status];\n }\n\n return undefined;\n}\n\nexport function resolveChatMessageStatusLabel(status: ChatMessageStatus): string {\n if (isChatMessageDeliveryStatus(status)) {\n return CHAT_MESSAGE_STATUS_LABELS[status];\n }\n\n return String(status);\n}\n\nexport function isImageAttachment(attachment: ChatAttachment): boolean {\n if (attachment.mimeType?.startsWith(\"image/\")) {\n return true;\n }\n\n return /\\.(png|jpe?g|gif|webp|bmp|svg)$/i.test(attachment.name);\n}\n\nexport function formatChatTimestamp(value?: string | Date): string {\n if (!value) {\n return \"\";\n }\n\n const date = value instanceof Date ? value : new Date(value);\n\n if (Number.isNaN(date.getTime())) {\n return String(value);\n }\n\n return new Intl.DateTimeFormat(undefined, {\n hour: \"2-digit\",\n minute: \"2-digit\",\n }).format(date);\n}\n\nexport function resolveAllowedLayouts(input?: ChatLayoutMode[]): ChatLayoutMode[] {\n if (input == null) {\n return [\"floating\"];\n }\n\n if (input.length === 0) {\n return [];\n }\n\n return CHAT_EXPAND_LAYOUTS.filter((mode) => input.includes(mode));\n}\n\nexport function pickInitialLayout(allowed: ChatLayoutMode[], preferred?: ChatLayoutMode): ChatLayoutMode {\n if (preferred && preferred !== \"closed\" && allowed.includes(preferred)) {\n return preferred;\n }\n\n return allowed[0] ?? \"floating\";\n}\n\nexport function getChatLayoutActions(\n allowedLayouts: ChatLayoutMode[],\n currentLayout?: ChatLayoutMode\n): Exclude<ChatLayoutMode, \"closed\">[] {\n return resolveAllowedLayouts(allowedLayouts).filter(\n (mode): mode is Exclude<ChatLayoutMode, \"closed\"> => mode !== \"closed\" && mode !== currentLayout\n );\n}\n\nexport function shouldShowChatCloseButton(options: {\n floatingTrigger?: boolean | undefined;\n embedded?: boolean | undefined;\n overlayContext?: boolean | undefined;\n effectiveLayout?: ChatLayoutMode | undefined;\n showCloseButton?: boolean | undefined;\n}): boolean {\n if (options.showCloseButton === false) {\n return false;\n }\n\n if (options.showCloseButton === true) {\n return true;\n }\n\n if (\n options.overlayContext &&\n options.floatingTrigger &&\n !options.embedded &&\n (options.effectiveLayout === \"floating\" || options.effectiveLayout === \"fullHeight\")\n ) {\n return true;\n }\n\n return Boolean(options.floatingTrigger && !options.embedded && options.effectiveLayout === \"floating\");\n}\n\n/**\n * Deprecated: the newline flags of the old `ChatComposer`. `Composer` picks the send key with `sendKey` instead\n * (`\"enter\"` = Enter sends, Shift+Enter makes a newline; `\"modEnter\"` = Ctrl/\u2318+Enter sends). Removed with\n * `ChatComposer` in the next major.\n *\n * @deprecated Use `Composer`'s `sendKey`; see the README section \"Migrating from ChatComposer\".\n */\nexport interface ChatComposerNewlineOptions {\n shiftEnterNewline?: boolean;\n ctrlEnterNewline?: boolean;\n}\n\n/**\n * Deprecated: the key rule of the old `ChatComposer` (which Enter sends, which makes a newline).\n * `Composer` resolves the same choice through `sendKey` in `resolveComposerKeyAction`, and `Chat` draws a `Composer`\n * by default. Kept for `ChatComposer` and `legacyComposer` only; removed in the next major.\n *\n * @deprecated Use `Composer`'s `sendKey`; see the README section \"Migrating from ChatComposer\".\n */\nexport function shouldComposerNewlineOnEnter(\n event: { key: string; shiftKey: boolean; ctrlKey: boolean; metaKey: boolean },\n options: ChatComposerNewlineOptions = {}\n): boolean {\n if (event.key !== \"Enter\") {\n return false;\n }\n\n const { shiftEnterNewline = true, ctrlEnterNewline = true } = options;\n const isCtrl = event.ctrlKey || event.metaKey;\n\n if (shiftEnterNewline && event.shiftKey && !isCtrl) {\n return true;\n }\n\n if (ctrlEnterNewline && isCtrl && !event.shiftKey) {\n return true;\n }\n\n return false;\n}\n"],
|
|
5
|
+
"mappings": "AAAA;AAAA,EAGE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AAEA,SAAS,4BAA4B,QAAgE;AAC1G,SAAO,+BAA+B,SAAS,MAAmC;AACpF;AAEO,SAAS,6BACd,QACA,OACoB;AACpB,QAAM,SAAS,QAAQ,MAAM;AAC7B,MAAI,QAAQ;AACV,WAAO;AAAA,EACT;AAEA,MAAI,4BAA4B,MAAM,GAAG;AACvC,WAAO,0BAA0B,MAAM;AAAA,EACzC;AAEA,SAAO;AACT;AAEO,SAAS,8BAA8B,QAAmC;AAC/E,MAAI,4BAA4B,MAAM,GAAG;AACvC,WAAO,2BAA2B,MAAM;AAAA,EAC1C;AAEA,SAAO,OAAO,MAAM;AACtB;AAEO,SAAS,kBAAkB,YAAqC;AACrE,MAAI,WAAW,UAAU,WAAW,QAAQ,GAAG;AAC7C,WAAO;AAAA,EACT;AAEA,SAAO,mCAAmC,KAAK,WAAW,IAAI;AAChE;AAEO,SAAS,oBAAoB,OAA+B;AACjE,MAAI,CAAC,OAAO;AACV,WAAO;AAAA,EACT;AAEA,QAAM,OAAO,iBAAiB,OAAO,QAAQ,IAAI,KAAK,KAAK;AAE3D,MAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,GAAG;AAChC,WAAO,OAAO,KAAK;AAAA,EACrB;AAEA,SAAO,IAAI,KAAK,eAAe,QAAW;AAAA,IACxC,MAAM;AAAA,IACN,QAAQ;AAAA,EACV,CAAC,EAAE,OAAO,IAAI;AAChB;AAEO,SAAS,sBAAsB,OAA4C;AAChF,MAAI,SAAS,MAAM;AACjB,WAAO,CAAC,UAAU;AAAA,EACpB;AAEA,MAAI,MAAM,WAAW,GAAG;AACtB,WAAO,CAAC;AAAA,EACV;AAEA,SAAO,oBAAoB,OAAO,CAAC,SAAS,MAAM,SAAS,IAAI,CAAC;AAClE;AAEO,SAAS,kBAAkB,SAA2B,WAA4C;AACvG,MAAI,aAAa,cAAc,YAAY,QAAQ,SAAS,SAAS,GAAG;AACtE,WAAO;AAAA,EACT;AAEA,SAAO,QAAQ,CAAC,KAAK;AACvB;AAEO,SAAS,qBACd,gBACA,eACqC;AACrC,SAAO,sBAAsB,cAAc,EAAE;AAAA,IAC3C,CAAC,SAAoD,SAAS,YAAY,SAAS;AAAA,EACrF;AACF;AAEO,SAAS,0BAA0B,SAM9B;AACV,MAAI,QAAQ,oBAAoB,OAAO;AACrC,WAAO;AAAA,EACT;AAEA,MAAI,QAAQ,oBAAoB,MAAM;AACpC,WAAO;AAAA,EACT;AAEA,MACE,QAAQ,kBACR,QAAQ,mBACR,CAAC,QAAQ,aACR,QAAQ,oBAAoB,cAAc,QAAQ,oBAAoB,eACvE;AACA,WAAO;AAAA,EACT;AAEA,SAAO,QAAQ,QAAQ,mBAAmB,CAAC,QAAQ,YAAY,QAAQ,oBAAoB,UAAU;AACvG;AAqBO,SAAS,6BACd,OACA,UAAsC,CAAC,GAC9B;AACT,MAAI,MAAM,QAAQ,SAAS;AACzB,WAAO;AAAA,EACT;AAEA,QAAM,EAAE,oBAAoB,MAAM,mBAAmB,KAAK,IAAI;AAC9D,QAAM,SAAS,MAAM,WAAW,MAAM;AAEtC,MAAI,qBAAqB,MAAM,YAAY,CAAC,QAAQ;AAClD,WAAO;AAAA,EACT;AAEA,MAAI,oBAAoB,UAAU,CAAC,MAAM,UAAU;AACjD,WAAO;AAAA,EACT;AAEA,SAAO;AACT;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|