@smwb/ui-solid 0.12.1 → 0.13.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 +74 -0
- package/dist/assets/styles/less/components/avatar/avatar.entry.css +1 -1
- package/dist/assets/styles/less/components/card/card.entry.css +1 -1
- package/dist/assets/styles/less/components/checkbox/checkbox.entry.css +1 -1
- package/dist/assets/styles/less/components/chip/chip.entry.css +1 -1
- package/dist/assets/styles/less/components/dagView/dagView.entry.css +1 -0
- package/dist/assets/styles/less/components/menu/menu.entry.css +1 -1
- package/dist/assets/styles/less/components/personChip/personChip.entry.css +1 -1
- package/dist/assets/styles/less/components/radioButton/radioButton.entry.css +1 -1
- package/dist/assets/styles/less/components/rating/rating.entry.css +1 -1
- package/dist/assets/styles/less/components/selectField/selectField.entry.css +1 -1
- package/dist/assets/styles/less/components/table/table.entry.css +1 -1
- package/dist/assets/styles/less/components/thumbCard/thumbCard.entry.css +1 -1
- package/dist/assets/styles/less/components/toggle/toggle.entry.css +1 -1
- package/dist/assets/styles/less/components/typography/typography.entry.css +1 -1
- package/dist/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/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/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 +488 -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/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/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.js +20 -18
- 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/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/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 +2 -0
- package/dist/components/dataDisplay/treeView/treeView.js +4 -2
- 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.js +20 -16
- 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 +2 -0
- package/dist/components/inputs/button/button.js +48 -20
- 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/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 +2 -0
- package/dist/components/layout/sheet/sheet.js +50 -48
- 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/navigation/appBar/appBar.d.ts +2 -0
- package/dist/components/navigation/appBar/appBar.js +18 -16
- 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/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.js +27 -25
- 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/tab/tab.js +46 -35
- package/dist/components/navigation/tabs/tab/tab.js.map +1 -1
- package/dist/components/navigation/tabs/tabs.d.ts +7 -0
- package/dist/components/navigation/tabs/tabs.js +90 -75
- package/dist/components/navigation/tabs/tabs.js.map +1 -1
- package/dist/components/navigation/tabs/tabsContext.d.ts +6 -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/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/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 +486 -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/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/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 +20 -18
- 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/stat/stat.js +43 -45
- package/dist/headless/components/dataDisplay/stat/stat.js.map +1 -1
- 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 +4 -2
- 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 +20 -16
- 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 +51 -23
- 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/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 +50 -48
- 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/navigation/appBar/appBar.js +15 -13
- 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/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 +14 -12
- 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 +48 -37
- package/dist/headless/components/navigation/tabs/tab/tab.js.map +1 -1
- package/dist/headless/components/navigation/tabs/tabs.js +91 -76
- package/dist/headless/components/navigation/tabs/tabs.js.map +1 -1
- package/dist/headless/components/navigation/tabs/tabsContext.js.map +1 -1
- package/dist/headless/index.js +224 -220
- 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 +1 -0
- 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/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/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/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/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 +639 -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/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/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 +11 -10
- 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/stat/stat.jsx +7 -8
- package/dist/headless/source/components/dataDisplay/stat/stat.jsx.map +1 -1
- 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 +9 -2
- 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 +5 -2
- 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 +8 -3
- 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/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 +6 -8
- 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/navigation/appBar/appBar.jsx +3 -2
- 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/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 +1 -1
- 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/tab/tab.jsx +12 -16
- package/dist/headless/source/components/navigation/tabs/tab/tab.jsx.map +1 -1
- package/dist/headless/source/components/navigation/tabs/tabs.jsx +34 -10
- package/dist/headless/source/components/navigation/tabs/tabs.jsx.map +1 -1
- 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 +3 -0
- 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 +1 -0
- 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/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/utils/controlProps.js +22 -0
- package/dist/headless/source/utils/controlProps.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/ownClick.js +39 -0
- package/dist/headless/utils/ownClick.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +224 -220
- 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 +2 -0
- package/dist/primitives/createFocusTrap.js +1 -0
- 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/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/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/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/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 +641 -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/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/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 +11 -10
- 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/stat/stat.jsx +7 -8
- package/dist/source/components/dataDisplay/stat/stat.jsx.map +1 -1
- 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 +9 -2
- 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 +5 -2
- 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 +8 -3
- 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/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 +6 -8
- 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/navigation/appBar/appBar.jsx +3 -2
- 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/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 +1 -1
- 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/tab/tab.jsx +12 -16
- package/dist/source/components/navigation/tabs/tab/tab.jsx.map +1 -1
- package/dist/source/components/navigation/tabs/tabs.jsx +34 -10
- package/dist/source/components/navigation/tabs/tabs.jsx.map +1 -1
- 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 +3 -0
- 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 +1 -0
- 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/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/utils/controlProps.js +22 -0
- package/dist/source/utils/controlProps.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/ownClick.d.ts +16 -0
- package/dist/utils/ownClick.js +39 -0
- package/dist/utils/ownClick.js.map +1 -0
- package/package.json +9 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/components/dataDisplay/chip/chip.tsx"],"sourcesContent":["import { type JSX, Show, children, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Ripple, type RippleActionsRef } from \"../../base/ripple\";\nimport { Icon } from \"../../base/icon\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\nimport { callHandler } from \"../../../primitives/callHandler\";\n\nexport type ChipColor = \"default\" | \"primary\" | \"secondary\" | \"error\" | \"success\" | \"warning\" | \"info\";\n\nexport interface ChipProps extends JSX.HTMLAttributes<HTMLSpanElement | HTMLAnchorElement> {\n variant?: \"filled\" | \"outlined\";\n size?: \"small\" | \"medium\";\n color?: ChipColor;\n onDelete?: (event: MouseEvent & { currentTarget: HTMLButtonElement; target: Element }) => void;\n icon?: JSX.Element;\n deleteIcon?: JSX.Element;\n label: string;\n onClick?: () => void;\n onDeleteMouseDown?: JSX.EventHandlerUnion<HTMLButtonElement, MouseEvent>;\n disabled?: boolean;\n asLink?: boolean;\n href?: string;\n /** Open the link in a new tab (asLink only). */\n target?: string;\n selected?: boolean;\n /** Accessible label for the delete control. */\n deleteAriaLabel?: string;\n ref?: Ref<HTMLSpanElement | HTMLAnchorElement>;\n}\n\n/**\n * The delete control's icon: a custom one or the default. It is read here, only\n * when the control renders — markup created and not rendered has no server node\n * to hydrate against either.\n */\nfunction DeleteIcon(props: { icon: JSX.Element }): JSX.Element {\n const icon = children(() => props.icon);\n return (\n <Show when={icon()} fallback={<Icon name=\"cancel\" size={18} fill={1} />}>\n {icon()}\n </Show>\n );\n}\n\nexport function Chip(props: ChipProps): JSX.Element {\n const merged = mergeProps(\n {\n target: \"_blank\",\n variant: \"filled\" as const,\n size: \"medium\" as const,\n color: \"default\" as ChipColor,\n disabled: false,\n deleteAriaLabel: \"Remove\",\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"label\",\n \"class\",\n \"deleteIcon\",\n \"icon\",\n \"onDelete\",\n \"onDeleteMouseDown\",\n \"asLink\",\n \"href\",\n \"target\",\n \"selected\",\n \"variant\",\n \"size\",\n \"color\",\n \"disabled\",\n \"onClick\",\n \"deleteAriaLabel\",\n \"ref\",\n ]);\n\n // Read the icon once: markup passed as a prop is created anew on every read,\n // and during hydration the copy made for the <Show> test has no server DOM\n // node to adopt (\"Unable to find DOM nodes for hydration key\").\n const icon = children(() => local.icon);\n\n let rippleActions: RippleActionsRef | undefined;\n\n const onPointerDown = (event: PointerEvent): void => {\n if (!local.disabled) {\n rippleActions?.onRipple(event);\n }\n };\n\n const onDeleteMouseDown: JSX.EventHandler<HTMLButtonElement, MouseEvent> = (event) => {\n callHandler(local.onDeleteMouseDown, event);\n event.stopPropagation();\n };\n\n const classes = (): string =>\n cn(\n \"smwb-chip\",\n `smwb-${local.variant}`,\n `smwb-chip_size-${local.size}`,\n local.color !== \"default\" && `smwb-chip_color-${local.color}`,\n local.class,\n { \"smwb-disabled\": local.disabled, \"smwb-selected\": local.selected }\n );\n\n const clickable = (): boolean => !!local.onClick && !local.disabled;\n\n const inner = (): JSX.Element => (\n <>\n <Show when={icon()}>\n <span class=\"smwb-chip__icon\">{icon()}</span>\n </Show>\n <span class=\"smwb-chip__label\">{local.label}</span>\n <Show when={local.onDelete}>\n <button\n type=\"button\"\n class=\"smwb-chip__delete-icon\"\n aria-label={local.deleteAriaLabel}\n disabled={local.disabled}\n onClick={local.onDelete}\n onMouseDown={onDeleteMouseDown}\n >\n <DeleteIcon icon={local.deleteIcon} />\n </button>\n </Show>\n <Ripple actionRef={(actions) => (rippleActions = actions)} />\n </>\n );\n\n return (\n <Show\n when={local.asLink && local.href}\n fallback={\n <span\n {...rest}\n ref={mergeRefs(local.ref)}\n data-testid=\"chip\"\n class={classes()}\n role={clickable() ? \"button\" : undefined}\n tabindex={clickable() ? 0 : undefined}\n aria-disabled={local.disabled || undefined}\n onClick={clickable() ? () => local.onClick?.() : undefined}\n onKeyDown={\n clickable()\n ? (event) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n local.onClick?.();\n }\n }\n : undefined\n }\n onPointerDown={onPointerDown}\n >\n {inner()}\n </span>\n }\n >\n <a\n {...rest}\n ref={mergeRefs(local.ref)}\n data-testid=\"chip-link\"\n class={classes()}\n href={local.href}\n onPointerDown={onPointerDown}\n target={local.target}\n rel=\"noreferrer\"\n >\n {inner()}\n </a>\n </Show>\n );\n}\n\nexport default Chip;\n"],"mappings":"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","names":[],"file":"chip.jsx"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/components/dataDisplay/chip/chip.tsx"],"sourcesContent":["import { type JSX, Show, children, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Ripple, type RippleActionsRef } from \"../../base/ripple\";\nimport { Icon } from \"../../base/icon\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\nimport { callHandler } from \"../../../primitives/callHandler\";\nimport { isOwnClick } from \"../../../utils/ownClick\";\nimport { splitControlProps } from \"../../../utils/controlProps\";\n\nexport type ChipColor = \"default\" | \"primary\" | \"secondary\" | \"error\" | \"success\" | \"warning\" | \"info\";\n\nexport interface ChipProps extends JSX.HTMLAttributes<HTMLSpanElement | HTMLAnchorElement> {\n /**\n * Class name(s) for the chip's root, a `<span>` (an `<a>` with `asLink`). `style`, `id`, `data-*`, `aria-hidden`,\n * `ref` and event handlers go to the root too. In a clickable chip (`onClick`), `role`, `tabindex`, `onFocus`,\n * `onBlur` and the other `aria-*` attributes go to its button, `.smwb-chip__content` (the icon and the label), which\n * is also the element to focus. Otherwise they stay on the root, which holds the delete button too.\n */\n class?: string | undefined;\n variant?: \"filled\" | \"outlined\";\n size?: \"small\" | \"medium\";\n color?: ChipColor;\n /**\n * Shows a delete button in the chip and runs when it is pressed: a click, or\n * Enter / Space while the button has focus. In a clickable chip it sits\n * beside the chip's button, not inside it, and pressing it does not run the\n * chip's `onClick`.\n */\n onDelete?: (event: MouseEvent & { currentTarget: HTMLButtonElement; target: Element }) => void;\n icon?: JSX.Element;\n deleteIcon?: JSX.Element;\n label: string;\n /**\n * Makes the chip clickable: its icon and label become a button, named by\n * them, with a focus ring around the whole chip. The delete button is not\n * part of that button but its sibling, so it keeps its own name.\n *\n * Runs on a click on the chip and on Enter / Space while the chip's button\n * has focus, but not on a click or key on the delete button.\n */\n onClick?: () => void;\n onDeleteMouseDown?: JSX.EventHandlerUnion<HTMLButtonElement, MouseEvent>;\n /**\n * Disables the chip: it is dimmed, takes no pointer input and says `aria-disabled`, and its delete button is\n * disabled too. With `onClick` the chip is still a button, out of the tab order.\n */\n disabled?: boolean;\n asLink?: boolean;\n href?: string;\n /** Open the link in a new tab (asLink only). */\n target?: string;\n selected?: boolean;\n /**\n * Id of the label's element, for another element to take the chip's text as\n * its name (`aria-labelledby`) without the delete button's name.\n */\n labelId?: string | undefined;\n /** Accessible label for the delete control. */\n deleteAriaLabel?: string;\n /** Test id of the root; `chip`, or `chip-link` for a link, unless given. */\n \"data-testid\"?: string | undefined;\n ref?: Ref<HTMLSpanElement | HTMLAnchorElement>;\n}\n\n/**\n * The delete control's icon: a custom one or the default. It is read here, only\n * when the control renders — markup created and not rendered has no server node\n * to hydrate against either.\n */\nfunction DeleteIcon(props: { icon: JSX.Element }): JSX.Element {\n const icon = children(() => props.icon);\n return (\n <Show when={icon()} fallback={<Icon name=\"cancel\" size={18} fill={1} />}>\n {icon()}\n </Show>\n );\n}\n\nexport function Chip(props: ChipProps): JSX.Element {\n const merged = mergeProps(\n {\n target: \"_blank\",\n variant: \"filled\" as const,\n size: \"medium\" as const,\n color: \"default\" as ChipColor,\n disabled: false,\n deleteAriaLabel: \"Remove\",\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"label\",\n \"labelId\",\n \"class\",\n \"deleteIcon\",\n \"icon\",\n \"onDelete\",\n \"onDeleteMouseDown\",\n \"asLink\",\n \"href\",\n \"target\",\n \"selected\",\n \"variant\",\n \"size\",\n \"color\",\n \"disabled\",\n \"onClick\",\n // The chip sets these on its root too; its own handlers call the caller's first.\n \"onKeyDown\",\n \"onPointerDown\",\n \"deleteAriaLabel\",\n \"ref\",\n \"data-testid\",\n ]);\n\n // Read the icon once: markup passed as a prop is created anew on every read,\n // and during hydration the copy made for the <Show> test has no server DOM\n // node to adopt (\"Unable to find DOM nodes for hydration key\").\n const icon = children(() => local.icon);\n\n let rippleActions: RippleActionsRef | undefined;\n\n const onPointerDown: JSX.EventHandler<HTMLSpanElement | HTMLAnchorElement, PointerEvent> = (event) => {\n callHandler(local.onPointerDown, event);\n if (!local.disabled) {\n rippleActions?.onRipple(event);\n }\n };\n\n // Reads onDelete on each click. Solid binds event handlers once, and <Show>\n // builds the button in a tracked scope, so binding onDelete itself there\n // would rebuild the button for each new onDelete.\n const onDeleteClick: JSX.EventHandler<HTMLButtonElement, MouseEvent> = (event) => {\n local.onDelete?.(event);\n };\n\n const onDeleteMouseDown: JSX.EventHandler<HTMLButtonElement, MouseEvent> = (event) => {\n callHandler(local.onDeleteMouseDown, event);\n event.stopPropagation();\n };\n\n const classes = (): string =>\n cn(\n \"smwb-chip\",\n `smwb-${local.variant}`,\n `smwb-chip_size-${local.size}`,\n local.color !== \"default\" && `smwb-chip_color-${local.color}`,\n local.class,\n { \"smwb-disabled\": local.disabled, \"smwb-selected\": local.selected }\n );\n\n const clickable = (): boolean => !!local.onClick && !local.disabled;\n // With onClick the chip's content is its button, and what the chip is to the\n // keyboard and to assistive tech goes there. Without it the chip is not a\n // control: the caller's role and ARIA attributes stay on the root, around\n // the delete button too.\n const [control, box] = splitControlProps(rest, () => !!local.onClick);\n let content: HTMLSpanElement | undefined;\n\n // Keys pressed on the delete button bubble up here too; only the keys of the\n // chip's button activate it.\n const onKeyDown: JSX.EventHandler<HTMLSpanElement, KeyboardEvent> = (event) => {\n callHandler(local.onKeyDown, event);\n if (!clickable() || event.target !== content) return;\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n local.onClick?.();\n }\n };\n\n // A click on the chip's button, or on its padding, activates the chip: not\n // one on the delete button, nor one in a Portal rendered inside, which Solid\n // delivers here too.\n const onChipClick: JSX.EventHandler<HTMLSpanElement, MouseEvent> = (event) => {\n if (isOwnClick(event, content ?? null)) local.onClick?.();\n };\n\n // The chip's own content: its button when it is clickable.\n const iconAndLabel = (): JSX.Element => (\n <>\n <Show when={icon()}>\n <span class=\"smwb-chip__icon\">{icon()}</span>\n </Show>\n <span id={local.labelId} class=\"smwb-chip__label\">\n {local.label}\n </span>\n </>\n );\n // After the content: in a clickable chip, beside its button, not in it.\n const trailing = (): JSX.Element => (\n <>\n <Show when={local.onDelete}>\n <button\n type=\"button\"\n class=\"smwb-chip__delete-icon\"\n aria-label={local.deleteAriaLabel}\n disabled={local.disabled}\n onClick={onDeleteClick}\n onMouseDown={onDeleteMouseDown}\n >\n <DeleteIcon icon={local.deleteIcon} />\n </button>\n </Show>\n <Ripple actionRef={(actions) => (rippleActions = actions)} />\n </>\n );\n\n return (\n <Show\n when={local.asLink && local.href}\n fallback={\n <span\n {...box}\n ref={mergeRefs(local.ref)}\n data-testid={local[\"data-testid\"] ?? \"chip\"}\n class={classes()}\n // A disabled chip says so where the caller's ARIA attributes are: on\n // its button with onClick, on the root without. Where it sets none\n // (undefined), the caller's stay.\n aria-disabled={(!local.onClick && local.disabled) || undefined}\n onClick={clickable() ? onChipClick : undefined}\n onKeyDown={onKeyDown}\n onPointerDown={onPointerDown}\n >\n <span\n {...control}\n ref={(el) => (content = el)}\n class=\"smwb-chip__content\"\n // With onClick the content is the chip's button, and a disabled chip\n // says so: these win over the caller's, and where the chip sets none\n // (undefined), the caller's stay. Its tabindex is a default: the\n // caller's wins, e.g. for roving focus.\n role={local.onClick ? \"button\" : undefined}\n tabindex={control.tabindex ?? (clickable() ? 0 : undefined)}\n aria-disabled={(!!local.onClick && local.disabled) || undefined}\n >\n {iconAndLabel()}\n </span>\n {/* Beside the button, not in it: the delete button keeps its name and input. */}\n {trailing()}\n </span>\n }\n >\n <a\n {...rest}\n ref={mergeRefs(local.ref)}\n data-testid={local[\"data-testid\"] ?? \"chip-link\"}\n class={classes()}\n href={local.href}\n onKeyDown={local.onKeyDown}\n onPointerDown={onPointerDown}\n target={local.target}\n rel=\"noreferrer\"\n >\n {iconAndLabel()}\n {trailing()}\n </a>\n </Show>\n );\n}\n\nexport default Chip;\n"],"mappings":"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","names":[],"file":"chip.jsx"}
|
|
@@ -27,20 +27,23 @@ function ChipGroup(props) {
|
|
|
27
27
|
local.onChange?.(value);
|
|
28
28
|
}
|
|
29
29
|
};
|
|
30
|
-
return
|
|
30
|
+
return (
|
|
31
|
+
// role="group" is a default: the caller's own wins, and an explicit undefined keeps it.
|
|
32
|
+
<div {...rest} role={rest.role ?? "group"} class={cn("smwb-chip-group", local.class)}>
|
|
31
33
|
<For each={local.options}>
|
|
32
34
|
{(option) => <Chip
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
35
|
+
label={option.label}
|
|
36
|
+
size={local.size}
|
|
37
|
+
color={local.color}
|
|
38
|
+
selected={isSelected(option.value)}
|
|
39
|
+
variant={isSelected(option.value) ? "filled" : "outlined"}
|
|
40
|
+
disabled={!!(local.disabled || option.disabled)}
|
|
41
|
+
onClick={() => toggle(option.value)}
|
|
42
|
+
{...option.icon ? { icon: option.icon } : {}}
|
|
43
|
+
/>}
|
|
42
44
|
</For>
|
|
43
|
-
</div
|
|
45
|
+
</div>
|
|
46
|
+
);
|
|
44
47
|
}
|
|
45
48
|
var chipGroup_default = ChipGroup;
|
|
46
49
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/components/dataDisplay/chipGroup/chipGroup.tsx"],"sourcesContent":["import { type JSX, For, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Chip, type ChipColor } from \"../chip\";\n\nexport interface ChipGroupOption {\n value: string;\n label: string;\n icon?: JSX.Element;\n disabled?: boolean;\n}\n\nexport interface ChipGroupProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n options: ChipGroupOption[];\n /** Selected value (single) or values (when `multiple`). */\n value?: string | string[];\n /** Allow more than one selected chip (value becomes a string[]). */\n multiple?: boolean;\n onChange?: (value: string | string[]) => void;\n size?: \"small\" | \"medium\";\n color?: ChipColor;\n disabled?: boolean;\n}\n\n/**\n * A multi/single-select toggle group built on `Chip` — the \"chip as a toggle\"\n * loop (selected → filled, else outlined; `role=group`) that apps re-hand-roll\n * for filters / segmented controls. Pass an `options` array and a controlled\n * `value`; `onChange` returns the next value (string, or string[] when multiple).\n */\nexport function ChipGroup(props: ChipGroupProps): JSX.Element {\n const merged = mergeProps({ size: \"medium\" as const, color: \"primary\" as ChipColor }, props);\n const [local, rest] = splitProps(merged, [\n \"options\",\n \"value\",\n \"multiple\",\n \"onChange\",\n \"size\",\n \"color\",\n \"disabled\",\n \"class\",\n ]);\n\n const selectedValues = (): string[] => {\n if (local.value == null) return [];\n return Array.isArray(local.value) ? local.value : [local.value];\n };\n const isSelected = (value: string): boolean => selectedValues().includes(value);\n\n const toggle = (value: string): void => {\n if (local.multiple) {\n const current = selectedValues();\n const next = current.includes(value) ? current.filter((v) => v !== value) : [...current, value];\n local.onChange?.(next);\n } else {\n local.onChange?.(value);\n }\n };\n\n return (\n <div {...rest} role
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/components/dataDisplay/chipGroup/chipGroup.tsx"],"sourcesContent":["import { type JSX, For, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Chip, type ChipColor } from \"../chip\";\n\nexport interface ChipGroupOption {\n value: string;\n label: string;\n icon?: JSX.Element;\n disabled?: boolean;\n}\n\nexport interface ChipGroupProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n options: ChipGroupOption[];\n /** Selected value (single) or values (when `multiple`). */\n value?: string | string[];\n /** Allow more than one selected chip (value becomes a string[]). */\n multiple?: boolean;\n onChange?: (value: string | string[]) => void;\n size?: \"small\" | \"medium\";\n color?: ChipColor;\n disabled?: boolean;\n}\n\n/**\n * A multi/single-select toggle group built on `Chip` — the \"chip as a toggle\"\n * loop (selected → filled, else outlined; `role=group`) that apps re-hand-roll\n * for filters / segmented controls. Pass an `options` array and a controlled\n * `value`; `onChange` returns the next value (string, or string[] when multiple).\n */\nexport function ChipGroup(props: ChipGroupProps): JSX.Element {\n const merged = mergeProps({ size: \"medium\" as const, color: \"primary\" as ChipColor }, props);\n const [local, rest] = splitProps(merged, [\n \"options\",\n \"value\",\n \"multiple\",\n \"onChange\",\n \"size\",\n \"color\",\n \"disabled\",\n \"class\",\n ]);\n\n const selectedValues = (): string[] => {\n if (local.value == null) return [];\n return Array.isArray(local.value) ? local.value : [local.value];\n };\n const isSelected = (value: string): boolean => selectedValues().includes(value);\n\n const toggle = (value: string): void => {\n if (local.multiple) {\n const current = selectedValues();\n const next = current.includes(value) ? current.filter((v) => v !== value) : [...current, value];\n local.onChange?.(next);\n } else {\n local.onChange?.(value);\n }\n };\n\n return (\n // role=\"group\" is a default: the caller's own wins, and an explicit undefined keeps it.\n <div {...rest} role={rest.role ?? \"group\"} class={cn(\"smwb-chip-group\", local.class)}>\n <For each={local.options}>\n {(option) => (\n <Chip\n label={option.label}\n size={local.size}\n color={local.color}\n selected={isSelected(option.value)}\n variant={isSelected(option.value) ? \"filled\" : \"outlined\"}\n disabled={!!(local.disabled || option.disabled)}\n onClick={() => toggle(option.value)}\n {...(option.icon ? { icon: option.icon } : {})}\n />\n )}\n </For>\n </div>\n );\n}\n\nexport default ChipGroup;\n"],"mappings":"AAAA,SAAmB,KAAK,YAAY,kBAAkB;AACtD,OAAO,QAAQ;AACf,SAAS,YAA4B;AA2B9B,SAAS,UAAU,OAAoC;AAC5D,QAAM,SAAS,WAAW,EAAE,MAAM,UAAmB,OAAO,UAAuB,GAAG,KAAK;AAC3F,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,QAAQ;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,QAAM,iBAAiB,MAAgB;AACrC,QAAI,MAAM,SAAS,KAAM,QAAO,CAAC;AACjC,WAAO,MAAM,QAAQ,MAAM,KAAK,IAAI,MAAM,QAAQ,CAAC,MAAM,KAAK;AAAA,EAChE;AACA,QAAM,aAAa,CAAC,UAA2B,eAAe,EAAE,SAAS,KAAK;AAE9E,QAAM,SAAS,CAAC,UAAwB;AACtC,QAAI,MAAM,UAAU;AAClB,YAAM,UAAU,eAAe;AAC/B,YAAM,OAAO,QAAQ,SAAS,KAAK,IAAI,QAAQ,OAAO,CAAC,MAAM,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,KAAK;AAC9F,YAAM,WAAW,IAAI;AAAA,IACvB,OAAO;AACL,YAAM,WAAW,KAAK;AAAA,IACxB;AAAA,EACF;AAEA;AAAA;AAAA,IAEE,CAAC,QAAQ,MAAM,MAAM,KAAK,QAAQ,SAAS,OAAO,GAAG,mBAAmB,MAAM,KAAK,GAAG;AAAA,MACpF,CAAC,IAAI,MAAM,MAAM,SAAS;AAAA,SACvB,CAAC,WACA,CAAC;AAAA,MACC,OAAO,OAAO;AAAA,MACd,MAAM,MAAM;AAAA,MACZ,OAAO,MAAM;AAAA,MACb,UAAU,WAAW,OAAO,KAAK;AAAA,MACjC,SAAS,WAAW,OAAO,KAAK,IAAI,WAAW;AAAA,MAC/C,UAAU,CAAC,EAAE,MAAM,YAAY,OAAO;AAAA,MACtC,SAAS,MAAM,OAAO,OAAO,KAAK;AAAA,UAC7B,OAAO,OAAO,EAAE,MAAM,OAAO,KAAK,IAAI,CAAC;AAAA,IAC9C,GACA;AAAA,MACJ,EAbC,IAaK;AAAA,IACR,EAfC;AAAA;AAiBL;AAEA,IAAO,oBAAQ;","names":[],"file":"chipGroup.jsx"}
|
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
const dagEdgeId = (edge) => edge.id ?? `${edge.source}->${edge.target}`;
|
|
2
|
+
function normalise(input) {
|
|
3
|
+
const warn = input.warn ?? (() => void 0);
|
|
4
|
+
const nodes = [];
|
|
5
|
+
const index = /* @__PURE__ */ new Map();
|
|
6
|
+
for (const node of input.nodes) {
|
|
7
|
+
if (index.has(node.id)) {
|
|
8
|
+
warn(`node "${node.id}" is listed twice; the second is dropped.`);
|
|
9
|
+
continue;
|
|
10
|
+
}
|
|
11
|
+
index.set(node.id, nodes.length);
|
|
12
|
+
nodes.push(node);
|
|
13
|
+
}
|
|
14
|
+
const edges = [];
|
|
15
|
+
const pairs = /* @__PURE__ */ new Set();
|
|
16
|
+
const ids = /* @__PURE__ */ new Set();
|
|
17
|
+
for (const edge of input.edges) {
|
|
18
|
+
const from = index.get(edge.source);
|
|
19
|
+
const to = index.get(edge.target);
|
|
20
|
+
if (from === void 0 || to === void 0) {
|
|
21
|
+
const missing = from === void 0 ? edge.source : edge.target;
|
|
22
|
+
warn(`edge ${edge.source} -> ${edge.target} names an unknown node "${missing}"; it is dropped.`);
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
if (from === to) {
|
|
26
|
+
warn(`edge ${edge.source} -> ${edge.target} is a self-loop; it is dropped.`);
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
const pair = `${from} ${to}`;
|
|
30
|
+
const id = dagEdgeId(edge);
|
|
31
|
+
if (pairs.has(pair) || ids.has(id)) {
|
|
32
|
+
warn(`edge ${edge.source} -> ${edge.target} is listed twice; the second is dropped.`);
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
pairs.add(pair);
|
|
36
|
+
ids.add(id);
|
|
37
|
+
edges.push({ id, source: edge.source, target: edge.target, from, to, reversed: false });
|
|
38
|
+
}
|
|
39
|
+
const out = nodes.map(() => []);
|
|
40
|
+
edges.forEach((edge, i) => out[edge.from].push(i));
|
|
41
|
+
const state = new Uint8Array(nodes.length);
|
|
42
|
+
for (let root = 0; root < nodes.length; root++) {
|
|
43
|
+
if (state[root]) continue;
|
|
44
|
+
const stack = [[root, 0]];
|
|
45
|
+
state[root] = 1;
|
|
46
|
+
while (stack.length) {
|
|
47
|
+
const top = stack[stack.length - 1];
|
|
48
|
+
const [v, next] = top;
|
|
49
|
+
const list = out[v];
|
|
50
|
+
if (next >= list.length) {
|
|
51
|
+
state[v] = 2;
|
|
52
|
+
stack.pop();
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
top[1] = next + 1;
|
|
56
|
+
const edge = edges[list[next]];
|
|
57
|
+
if (state[edge.to] === 1) edge.reversed = true;
|
|
58
|
+
else if (state[edge.to] === 0) {
|
|
59
|
+
state[edge.to] = 1;
|
|
60
|
+
stack.push([edge.to, 0]);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return { nodes, index, edges };
|
|
65
|
+
}
|
|
66
|
+
function assignLayers(count, arcs) {
|
|
67
|
+
const out = Array.from({ length: count }, () => []);
|
|
68
|
+
const inDegree = new Array(count).fill(0);
|
|
69
|
+
for (const [u, v] of arcs) {
|
|
70
|
+
out[u].push(v);
|
|
71
|
+
inDegree[v]++;
|
|
72
|
+
}
|
|
73
|
+
const hasPred = inDegree.map((d) => d > 0);
|
|
74
|
+
const layer = new Array(count).fill(0);
|
|
75
|
+
const order = [];
|
|
76
|
+
const queue = [];
|
|
77
|
+
for (let v = 0; v < count; v++) if (inDegree[v] === 0) queue.push(v);
|
|
78
|
+
for (let head = 0; head < queue.length; head++) {
|
|
79
|
+
const u = queue[head];
|
|
80
|
+
order.push(u);
|
|
81
|
+
for (const v of out[u]) {
|
|
82
|
+
layer[v] = Math.max(layer[v], layer[u] + 1);
|
|
83
|
+
if (--inDegree[v] === 0) queue.push(v);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
for (let i = order.length - 1; i >= 0; i--) {
|
|
87
|
+
const v = order[i];
|
|
88
|
+
const succs = out[v];
|
|
89
|
+
if (succs.length === 0 || hasPred[v]) continue;
|
|
90
|
+
layer[v] = Math.min(...succs.map((s) => layer[s])) - 1;
|
|
91
|
+
}
|
|
92
|
+
return layer;
|
|
93
|
+
}
|
|
94
|
+
function crossingsBetween(upper, vertices, position) {
|
|
95
|
+
const pairs = [];
|
|
96
|
+
for (const u of upper) for (const v of vertices[u].succs) pairs.push([position[u], position[v]]);
|
|
97
|
+
pairs.sort((a, b) => a[0] - b[0] || a[1] - b[1]);
|
|
98
|
+
let size = 1;
|
|
99
|
+
for (const [, b] of pairs) size = Math.max(size, b + 2);
|
|
100
|
+
const tree = new Int32Array(size + 1);
|
|
101
|
+
let crossings = 0;
|
|
102
|
+
for (let i = pairs.length - 1; i >= 0; i--) {
|
|
103
|
+
const b = pairs[i][1];
|
|
104
|
+
for (let j = b; j > 0; j -= j & -j) crossings += tree[j];
|
|
105
|
+
for (let j = b + 1; j <= size; j += j & -j) tree[j]++;
|
|
106
|
+
}
|
|
107
|
+
return crossings;
|
|
108
|
+
}
|
|
109
|
+
function totalCrossings(layers, vertices, position) {
|
|
110
|
+
let sum = 0;
|
|
111
|
+
for (let l = 0; l + 1 < layers.length; l++) sum += crossingsBetween(layers[l], vertices, position);
|
|
112
|
+
return sum;
|
|
113
|
+
}
|
|
114
|
+
function reorder(layer, vertices, position, down) {
|
|
115
|
+
const key = /* @__PURE__ */ new Map();
|
|
116
|
+
for (const v of layer) {
|
|
117
|
+
const neighbours = down ? vertices[v].preds : vertices[v].succs;
|
|
118
|
+
if (neighbours.length === 0) key.set(v, position[v]);
|
|
119
|
+
else key.set(v, neighbours.reduce((sum, n) => sum + position[n], 0) / neighbours.length);
|
|
120
|
+
}
|
|
121
|
+
layer.sort((a, b) => key.get(a) - key.get(b) || position[a] - position[b]);
|
|
122
|
+
layer.forEach((v, i) => position[v] = i);
|
|
123
|
+
}
|
|
124
|
+
function orderLayers(layers, vertices, sweeps) {
|
|
125
|
+
const position = new Int32Array(vertices.length);
|
|
126
|
+
for (const layer of layers) layer.forEach((v, i) => position[v] = i);
|
|
127
|
+
let best = layers.map((layer) => layer.slice());
|
|
128
|
+
let bestCrossings = totalCrossings(layers, vertices, position);
|
|
129
|
+
let stale = 0;
|
|
130
|
+
for (let sweep = 0; sweep < sweeps && bestCrossings > 0; sweep++) {
|
|
131
|
+
const down = sweep % 2 === 0;
|
|
132
|
+
if (down) for (let l = 1; l < layers.length; l++) reorder(layers[l], vertices, position, true);
|
|
133
|
+
else for (let l = layers.length - 2; l >= 0; l--) reorder(layers[l], vertices, position, false);
|
|
134
|
+
const crossings = totalCrossings(layers, vertices, position);
|
|
135
|
+
if (crossings < bestCrossings) {
|
|
136
|
+
bestCrossings = crossings;
|
|
137
|
+
best = layers.map((layer) => layer.slice());
|
|
138
|
+
stale = 0;
|
|
139
|
+
} else if (++stale >= 2) break;
|
|
140
|
+
}
|
|
141
|
+
best.forEach((layer, l) => layers[l] = layer);
|
|
142
|
+
}
|
|
143
|
+
function place(desired, gaps, weights) {
|
|
144
|
+
const offset = [0];
|
|
145
|
+
for (let i = 1; i < desired.length; i++) offset.push(offset[i - 1] + gaps[i - 1]);
|
|
146
|
+
const blocks = [];
|
|
147
|
+
desired.forEach((d, i) => {
|
|
148
|
+
let block = { value: d - offset[i], weight: weights[i], count: 1 };
|
|
149
|
+
while (blocks.length && blocks[blocks.length - 1].value > block.value) {
|
|
150
|
+
const last = blocks.pop();
|
|
151
|
+
const weight = last.weight + block.weight;
|
|
152
|
+
block = {
|
|
153
|
+
value: (last.value * last.weight + block.value * block.weight) / weight,
|
|
154
|
+
weight,
|
|
155
|
+
count: last.count + block.count
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
blocks.push(block);
|
|
159
|
+
});
|
|
160
|
+
const result = [];
|
|
161
|
+
for (const block of blocks) for (let k = 0; k < block.count; k++) result.push(block.value + offset[result.length]);
|
|
162
|
+
return result;
|
|
163
|
+
}
|
|
164
|
+
function assignCross(layers, vertices, nodeGap) {
|
|
165
|
+
const gapBetween = (a, b) => {
|
|
166
|
+
const va = vertices[a];
|
|
167
|
+
const vb = vertices[b];
|
|
168
|
+
const gap = va.node < 0 && vb.node < 0 ? nodeGap / 2 : nodeGap;
|
|
169
|
+
return va.crossSize / 2 + gap + vb.crossSize / 2;
|
|
170
|
+
};
|
|
171
|
+
for (const layer of layers) {
|
|
172
|
+
let at = 0;
|
|
173
|
+
layer.forEach((v, i) => {
|
|
174
|
+
if (i > 0) at += gapBetween(layer[i - 1], v);
|
|
175
|
+
vertices[v].cross = at;
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
const passes = ["down", "up", "down", "up", "both", "both"];
|
|
179
|
+
for (const pass of passes) {
|
|
180
|
+
const range = pass === "up" ? layers.map((_, l) => layers.length - 1 - l) : layers.map((_, l) => l);
|
|
181
|
+
for (const l of range) {
|
|
182
|
+
const layer = layers[l];
|
|
183
|
+
if (layer.length === 0) continue;
|
|
184
|
+
const desired = layer.map((v) => {
|
|
185
|
+
const vertex = vertices[v];
|
|
186
|
+
const neighbours = pass === "down" ? vertex.preds : pass === "up" ? vertex.succs : [...vertex.preds, ...vertex.succs];
|
|
187
|
+
if (neighbours.length === 0) return vertex.cross;
|
|
188
|
+
return neighbours.reduce((sum, n) => sum + vertices[n].cross, 0) / neighbours.length;
|
|
189
|
+
});
|
|
190
|
+
const gaps = layer.slice(1).map((v, i) => gapBetween(layer[i], v));
|
|
191
|
+
const weights = layer.map((v) => vertices[v].node < 0 ? 2 : 1);
|
|
192
|
+
place(desired, gaps, weights).forEach((cross, i) => vertices[layer[i]].cross = cross);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
function layoutPart(members, graph, edgeList, rankSizeOf, crossSizeOf, rankGap, nodeGap, sweeps) {
|
|
197
|
+
const local = /* @__PURE__ */ new Map();
|
|
198
|
+
members.forEach((n, i) => local.set(n, i));
|
|
199
|
+
const arcs = edgeList.map((e) => {
|
|
200
|
+
const edge = graph.edges[e];
|
|
201
|
+
const from = local.get(edge.from);
|
|
202
|
+
const to = local.get(edge.to);
|
|
203
|
+
return edge.reversed ? [to, from] : [from, to];
|
|
204
|
+
});
|
|
205
|
+
const layerOf = assignLayers(members.length, arcs);
|
|
206
|
+
const vertices = members.map((n, i) => ({
|
|
207
|
+
node: n,
|
|
208
|
+
rankSize: rankSizeOf(n),
|
|
209
|
+
crossSize: crossSizeOf(n),
|
|
210
|
+
layer: layerOf[i],
|
|
211
|
+
cross: 0,
|
|
212
|
+
preds: [],
|
|
213
|
+
succs: []
|
|
214
|
+
}));
|
|
215
|
+
const segments = edgeList.map((e, k) => {
|
|
216
|
+
const [from, to] = arcs[k];
|
|
217
|
+
const chain = [from];
|
|
218
|
+
let previous = from;
|
|
219
|
+
for (let l = vertices[from].layer + 1; l < vertices[to].layer; l++) {
|
|
220
|
+
const dummy = vertices.length;
|
|
221
|
+
vertices.push({ node: -1, rankSize: 0, crossSize: 0, layer: l, cross: 0, preds: [], succs: [] });
|
|
222
|
+
vertices[previous].succs.push(dummy);
|
|
223
|
+
vertices[dummy].preds.push(previous);
|
|
224
|
+
chain.push(dummy);
|
|
225
|
+
previous = dummy;
|
|
226
|
+
}
|
|
227
|
+
vertices[previous].succs.push(to);
|
|
228
|
+
vertices[to].preds.push(previous);
|
|
229
|
+
chain.push(to);
|
|
230
|
+
return { edge: e, chain };
|
|
231
|
+
});
|
|
232
|
+
const layerCount = vertices.reduce((max, v) => Math.max(max, v.layer + 1), 0);
|
|
233
|
+
const layers = Array.from({ length: layerCount }, () => []);
|
|
234
|
+
vertices.forEach((v, i) => layers[v.layer].push(i));
|
|
235
|
+
orderLayers(layers, vertices, sweeps);
|
|
236
|
+
assignCross(layers, vertices, nodeGap);
|
|
237
|
+
const thickness = layers.map((layer) => layer.reduce((max, v) => Math.max(max, vertices[v].rankSize), 0));
|
|
238
|
+
const start = [];
|
|
239
|
+
let rank = 0;
|
|
240
|
+
thickness.forEach((t, l) => {
|
|
241
|
+
start[l] = rank;
|
|
242
|
+
rank += t + (l + 1 < thickness.length ? rankGap : 0);
|
|
243
|
+
});
|
|
244
|
+
let minCross = Infinity;
|
|
245
|
+
let maxCross = -Infinity;
|
|
246
|
+
for (const v of vertices) {
|
|
247
|
+
minCross = Math.min(minCross, v.cross - v.crossSize / 2);
|
|
248
|
+
maxCross = Math.max(maxCross, v.cross + v.crossSize / 2);
|
|
249
|
+
}
|
|
250
|
+
const shift = Number.isFinite(minCross) ? -minCross : 0;
|
|
251
|
+
const nodes = /* @__PURE__ */ new Map();
|
|
252
|
+
layers.forEach(
|
|
253
|
+
(layer, l) => layer.forEach((v, order) => {
|
|
254
|
+
const vertex = vertices[v];
|
|
255
|
+
if (vertex.node < 0) return;
|
|
256
|
+
nodes.set(vertex.node, {
|
|
257
|
+
rank: start[l] + (thickness[l] - vertex.rankSize) / 2,
|
|
258
|
+
cross: vertex.cross - vertex.crossSize / 2 + shift,
|
|
259
|
+
layer: l,
|
|
260
|
+
order
|
|
261
|
+
});
|
|
262
|
+
})
|
|
263
|
+
);
|
|
264
|
+
const edges = /* @__PURE__ */ new Map();
|
|
265
|
+
for (const { edge, chain } of segments) {
|
|
266
|
+
const points = [];
|
|
267
|
+
chain.forEach((v, i) => {
|
|
268
|
+
const vertex = vertices[v];
|
|
269
|
+
const l = vertex.layer;
|
|
270
|
+
const cross = vertex.cross + shift;
|
|
271
|
+
const bandStart = start[l] + (thickness[l] - vertex.rankSize) / 2;
|
|
272
|
+
if (i === 0) points.push({ rank: bandStart + vertex.rankSize, cross });
|
|
273
|
+
else if (i === chain.length - 1) points.push({ rank: bandStart, cross });
|
|
274
|
+
else {
|
|
275
|
+
points.push({ rank: start[l], cross }, { rank: start[l] + thickness[l], cross });
|
|
276
|
+
}
|
|
277
|
+
});
|
|
278
|
+
if (graph.edges[edge].reversed) points.reverse();
|
|
279
|
+
edges.set(edge, points);
|
|
280
|
+
}
|
|
281
|
+
return {
|
|
282
|
+
nodes,
|
|
283
|
+
edges,
|
|
284
|
+
rankExtent: rank,
|
|
285
|
+
crossExtent: Number.isFinite(maxCross) ? maxCross - minCross : 0
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
function dagLayout(input) {
|
|
289
|
+
const direction = input.direction ?? "LR";
|
|
290
|
+
const rankGap = input.rankGap ?? 64;
|
|
291
|
+
const nodeGap = input.nodeGap ?? 24;
|
|
292
|
+
const sweeps = input.sweeps ?? 8;
|
|
293
|
+
const graph = normalise(input);
|
|
294
|
+
const lr = direction === "LR";
|
|
295
|
+
const rankSizeOf = (n) => lr ? graph.nodes[n].width : graph.nodes[n].height;
|
|
296
|
+
const crossSizeOf = (n) => lr ? graph.nodes[n].height : graph.nodes[n].width;
|
|
297
|
+
const parent = graph.nodes.map((_, i) => i);
|
|
298
|
+
const find = (v) => {
|
|
299
|
+
while (parent[v] !== v) {
|
|
300
|
+
parent[v] = parent[parent[v]];
|
|
301
|
+
v = parent[v];
|
|
302
|
+
}
|
|
303
|
+
return v;
|
|
304
|
+
};
|
|
305
|
+
for (const edge of graph.edges) {
|
|
306
|
+
const a = find(edge.from);
|
|
307
|
+
const b = find(edge.to);
|
|
308
|
+
if (a !== b) parent[Math.max(a, b)] = Math.min(a, b);
|
|
309
|
+
}
|
|
310
|
+
const parts = /* @__PURE__ */ new Map();
|
|
311
|
+
graph.nodes.forEach((_, i) => {
|
|
312
|
+
const root = find(i);
|
|
313
|
+
if (!parts.has(root)) parts.set(root, { members: [], edges: [] });
|
|
314
|
+
parts.get(root).members.push(i);
|
|
315
|
+
});
|
|
316
|
+
graph.edges.forEach((edge, e) => parts.get(find(edge.from)).edges.push(e));
|
|
317
|
+
const placedNodes = /* @__PURE__ */ new Map();
|
|
318
|
+
const placedEdges = /* @__PURE__ */ new Map();
|
|
319
|
+
const toPoint = (rank, cross) => lr ? { x: rank, y: cross } : { x: cross, y: rank };
|
|
320
|
+
let crossAt = 0;
|
|
321
|
+
let rankExtent = 0;
|
|
322
|
+
for (const part of parts.values()) {
|
|
323
|
+
const laid = layoutPart(part.members, graph, part.edges, rankSizeOf, crossSizeOf, rankGap, nodeGap, sweeps);
|
|
324
|
+
for (const [n, p] of laid.nodes) {
|
|
325
|
+
const node = graph.nodes[n];
|
|
326
|
+
placedNodes.set(n, {
|
|
327
|
+
id: node.id,
|
|
328
|
+
...toPoint(p.rank, p.cross + crossAt),
|
|
329
|
+
width: node.width,
|
|
330
|
+
height: node.height,
|
|
331
|
+
layer: p.layer,
|
|
332
|
+
order: p.order
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
for (const [e, points] of laid.edges) {
|
|
336
|
+
placedEdges.set(
|
|
337
|
+
e,
|
|
338
|
+
points.map((p) => toPoint(p.rank, p.cross + crossAt))
|
|
339
|
+
);
|
|
340
|
+
}
|
|
341
|
+
rankExtent = Math.max(rankExtent, laid.rankExtent);
|
|
342
|
+
crossAt += laid.crossExtent + nodeGap * 2;
|
|
343
|
+
}
|
|
344
|
+
const crossExtent = Math.max(0, crossAt - nodeGap * 2);
|
|
345
|
+
const nodes = /* @__PURE__ */ new Map();
|
|
346
|
+
graph.nodes.forEach((node, i) => nodes.set(node.id, placedNodes.get(i)));
|
|
347
|
+
const pairs = new Set(graph.edges.map((edge) => `${edge.from} ${edge.to}`));
|
|
348
|
+
const edges = graph.edges.map((edge, e) => {
|
|
349
|
+
let points = placedEdges.get(e);
|
|
350
|
+
if (edge.reversed && pairs.has(`${edge.to} ${edge.from}`)) {
|
|
351
|
+
const across = (n) => lr ? graph.nodes[n].height : graph.nodes[n].width;
|
|
352
|
+
const offset = Math.min(8, across(edge.from) / 4, across(edge.to) / 4);
|
|
353
|
+
points = points.map((p) => lr ? { x: p.x, y: p.y + offset } : { x: p.x + offset, y: p.y });
|
|
354
|
+
}
|
|
355
|
+
return { id: edge.id, source: edge.source, target: edge.target, points, reversed: edge.reversed };
|
|
356
|
+
});
|
|
357
|
+
const extent = toPoint(rankExtent, crossExtent);
|
|
358
|
+
return { nodes, edges, width: extent.x, height: extent.y };
|
|
359
|
+
}
|
|
360
|
+
function dagEdgePath(points, direction = "LR") {
|
|
361
|
+
if (points.length === 0) return "";
|
|
362
|
+
const round = (n) => Math.round(n * 10) / 10;
|
|
363
|
+
const first = points[0];
|
|
364
|
+
let d = `M${round(first.x)},${round(first.y)}`;
|
|
365
|
+
for (let i = 1; i < points.length; i++) {
|
|
366
|
+
const a = points[i - 1];
|
|
367
|
+
const b = points[i];
|
|
368
|
+
if (direction === "LR") {
|
|
369
|
+
const mid = (a.x + b.x) / 2;
|
|
370
|
+
d += ` C${round(mid)},${round(a.y)} ${round(mid)},${round(b.y)} ${round(b.x)},${round(b.y)}`;
|
|
371
|
+
} else {
|
|
372
|
+
const mid = (a.y + b.y) / 2;
|
|
373
|
+
d += ` C${round(a.x)},${round(mid)} ${round(b.x)},${round(mid)} ${round(b.x)},${round(b.y)}`;
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
return d;
|
|
377
|
+
}
|
|
378
|
+
export {
|
|
379
|
+
dagEdgeId,
|
|
380
|
+
dagEdgePath,
|
|
381
|
+
dagLayout
|
|
382
|
+
};
|
|
383
|
+
//# sourceMappingURL=dagLayout.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/components/dataDisplay/dagView/dagLayout.ts"],
|
|
4
|
+
"sourcesContent": ["// A layered (Sugiyama-style) layout for directed graphs: pure, synchronous and\n// deterministic, with no imports from Solid or the DOM, so the server and the\n// browser compute the same picture and a React port can copy the file as is.\n//\n// Steps: normalise the input; reverse the back edges of cycles; put each node\n// in a layer by the longest path from the sources; split edges that span\n// several layers with dummy points; order each layer by barycenter sweeps to\n// cut crossings; place nodes along the layer, pulled toward their neighbours\n// without overlapping; lay disconnected parts side by side; route each edge as\n// a list of points through its dummies.\n\n/** Which way the layers run: left to right, or top to bottom. */\nexport type DagDirection = \"LR\" | \"TB\";\n\nexport interface DagLayoutInputNode {\n id: string;\n width: number;\n height: number;\n}\n\nexport interface DagLayoutInputEdge {\n /** `source->target` unless given. */\n id?: string | undefined;\n source: string;\n target: string;\n}\n\nexport interface DagLayoutInput {\n nodes: readonly DagLayoutInputNode[];\n edges: readonly DagLayoutInputEdge[];\n /** \"LR\" by default. */\n direction?: DagDirection | undefined;\n /** The space between layers; 64 by default. */\n rankGap?: number | undefined;\n /** The space between nodes in a layer, and twice it between disconnected parts; 24 by default. */\n nodeGap?: number | undefined;\n /** Ordering sweeps (down and up count as one each); 8 by default. */\n sweeps?: number | undefined;\n /** Told what was dropped from the input: unknown ids, self-loops, duplicates. */\n warn?: ((message: string) => void) | undefined;\n}\n\nexport interface DagPoint {\n x: number;\n y: number;\n}\n\nexport interface DagLayoutNode {\n id: string;\n /** The left edge. */\n x: number;\n /** The top edge. */\n y: number;\n width: number;\n height: number;\n /** The node's layer, 0 for the first. */\n layer: number;\n /** The node's place in its layer, 0 for the first (dummies included). */\n order: number;\n}\n\nexport interface DagLayoutEdge {\n id: string;\n source: string;\n target: string;\n /** From the source's side to the target's side, through the layers between. */\n points: DagPoint[];\n /** The edge closes a cycle and was drawn against the layer direction. */\n reversed: boolean;\n}\n\nexport interface DagLayoutResult {\n /** Every node drawn, in input order. */\n nodes: Map<string, DagLayoutNode>;\n /** Every edge drawn, in input order. */\n edges: DagLayoutEdge[];\n width: number;\n height: number;\n}\n\n/** The id an edge is drawn and highlighted by. */\nexport const dagEdgeId = (edge: DagLayoutInputEdge): string => edge.id ?? `${edge.source}->${edge.target}`;\n\ninterface Vertex {\n /** Index into the real nodes, or -1 for a dummy. */\n node: number;\n /** Size along the layer axis (width in LR) and across it. */\n rankSize: number;\n crossSize: number;\n layer: number;\n /** Centre across the layer axis. */\n cross: number;\n preds: number[];\n succs: number[];\n}\n\ninterface Segment {\n /** The edge's index in the normalised list. */\n edge: number;\n /** Vertices from the layered source to the layered target, dummies between. */\n chain: number[];\n}\n\n// ---- Steps 1-2: normalise, break cycles ----\n\ninterface Normalised {\n nodes: DagLayoutInputNode[];\n index: Map<string, number>;\n edges: Array<{ id: string; source: string; target: string; from: number; to: number; reversed: boolean }>;\n}\n\nfunction normalise(input: DagLayoutInput): Normalised {\n const warn = input.warn ?? (() => undefined);\n const nodes: DagLayoutInputNode[] = [];\n const index = new Map<string, number>();\n for (const node of input.nodes) {\n if (index.has(node.id)) {\n warn(`node \"${node.id}\" is listed twice; the second is dropped.`);\n continue;\n }\n index.set(node.id, nodes.length);\n nodes.push(node);\n }\n const edges: Normalised[\"edges\"] = [];\n const pairs = new Set<string>();\n const ids = new Set<string>();\n for (const edge of input.edges) {\n const from = index.get(edge.source);\n const to = index.get(edge.target);\n if (from === undefined || to === undefined) {\n const missing = from === undefined ? edge.source : edge.target;\n warn(`edge ${edge.source} -> ${edge.target} names an unknown node \"${missing}\"; it is dropped.`);\n continue;\n }\n if (from === to) {\n warn(`edge ${edge.source} -> ${edge.target} is a self-loop; it is dropped.`);\n continue;\n }\n const pair = `${from} ${to}`;\n const id = dagEdgeId(edge);\n if (pairs.has(pair) || ids.has(id)) {\n warn(`edge ${edge.source} -> ${edge.target} is listed twice; the second is dropped.`);\n continue;\n }\n pairs.add(pair);\n ids.add(id);\n edges.push({ id, source: edge.source, target: edge.target, from, to, reversed: false });\n }\n\n // A depth-first walk in input order: an edge to a node still on the stack\n // closes a cycle, and is turned around so the rest can be layered.\n const out: number[][] = nodes.map(() => []);\n edges.forEach((edge, i) => out[edge.from]!.push(i));\n const state = new Uint8Array(nodes.length); // 0 new, 1 on the stack, 2 done\n for (let root = 0; root < nodes.length; root++) {\n if (state[root]) continue;\n const stack: Array<[number, number]> = [[root, 0]];\n state[root] = 1;\n while (stack.length) {\n const top = stack[stack.length - 1]!;\n const [v, next] = top;\n const list = out[v]!;\n if (next >= list.length) {\n state[v] = 2;\n stack.pop();\n continue;\n }\n top[1] = next + 1;\n const edge = edges[list[next]!]!;\n if (state[edge.to] === 1) edge.reversed = true;\n else if (state[edge.to] === 0) {\n state[edge.to] = 1;\n stack.push([edge.to, 0]);\n }\n }\n }\n return { nodes, index, edges };\n}\n\n// ---- Step 3: layers by the longest path ----\n\nfunction assignLayers(count: number, arcs: Array<[number, number]>): number[] {\n const out: number[][] = Array.from({ length: count }, () => []);\n const inDegree = new Array<number>(count).fill(0);\n for (const [u, v] of arcs) {\n out[u]!.push(v);\n inDegree[v]!++;\n }\n const hasPred = inDegree.map((d) => d > 0);\n const layer = new Array<number>(count).fill(0);\n const order: number[] = [];\n const queue: number[] = [];\n for (let v = 0; v < count; v++) if (inDegree[v] === 0) queue.push(v);\n for (let head = 0; head < queue.length; head++) {\n const u = queue[head]!;\n order.push(u);\n for (const v of out[u]!) {\n layer[v] = Math.max(layer[v]!, layer[u]! + 1);\n if (--inDegree[v]! === 0) queue.push(v);\n }\n }\n // A source sits just before the first layer it feeds, not in layer 0 with a\n // long edge across: a late input stays next to the step that reads it.\n for (let i = order.length - 1; i >= 0; i--) {\n const v = order[i]!;\n const succs = out[v]!;\n if (succs.length === 0 || hasPred[v]) continue;\n layer[v] = Math.min(...succs.map((s) => layer[s]!)) - 1;\n }\n return layer;\n}\n\n// ---- Step 5: ordering ----\n\n/** Crossings between two neighbouring layers, by counting inversions. */\nfunction crossingsBetween(upper: number[], vertices: Vertex[], position: Int32Array): number {\n const pairs: Array<[number, number]> = [];\n for (const u of upper) for (const v of vertices[u]!.succs) pairs.push([position[u]!, position[v]!]);\n pairs.sort((a, b) => a[0] - b[0] || a[1] - b[1]);\n // Inversions of the lower ends, with a Fenwick tree.\n let size = 1;\n for (const [, b] of pairs) size = Math.max(size, b + 2);\n const tree = new Int32Array(size + 1);\n let crossings = 0;\n for (let i = pairs.length - 1; i >= 0; i--) {\n const b = pairs[i]![1];\n for (let j = b; j > 0; j -= j & -j) crossings += tree[j]!;\n for (let j = b + 1; j <= size; j += j & -j) tree[j]!++;\n }\n return crossings;\n}\n\nfunction totalCrossings(layers: number[][], vertices: Vertex[], position: Int32Array): number {\n let sum = 0;\n for (let l = 0; l + 1 < layers.length; l++) sum += crossingsBetween(layers[l]!, vertices, position);\n return sum;\n}\n\nfunction reorder(layer: number[], vertices: Vertex[], position: Int32Array, down: boolean): void {\n const key = new Map<number, number>();\n for (const v of layer) {\n const neighbours = down ? vertices[v]!.preds : vertices[v]!.succs;\n if (neighbours.length === 0) key.set(v, position[v]!);\n else key.set(v, neighbours.reduce((sum, n) => sum + position[n]!, 0) / neighbours.length);\n }\n // Ties keep the current order, so the result is the same on every run.\n layer.sort((a, b) => key.get(a)! - key.get(b)! || position[a]! - position[b]!);\n layer.forEach((v, i) => (position[v] = i));\n}\n\nfunction orderLayers(layers: number[][], vertices: Vertex[], sweeps: number): void {\n const position = new Int32Array(vertices.length);\n for (const layer of layers) layer.forEach((v, i) => (position[v] = i));\n let best = layers.map((layer) => layer.slice());\n let bestCrossings = totalCrossings(layers, vertices, position);\n let stale = 0;\n for (let sweep = 0; sweep < sweeps && bestCrossings > 0; sweep++) {\n const down = sweep % 2 === 0;\n if (down) for (let l = 1; l < layers.length; l++) reorder(layers[l]!, vertices, position, true);\n else for (let l = layers.length - 2; l >= 0; l--) reorder(layers[l]!, vertices, position, false);\n const crossings = totalCrossings(layers, vertices, position);\n if (crossings < bestCrossings) {\n bestCrossings = crossings;\n best = layers.map((layer) => layer.slice());\n stale = 0;\n } else if (++stale >= 2) break;\n }\n best.forEach((layer, l) => (layers[l] = layer));\n}\n\n// ---- Step 6: positions across the layer ----\n\n/**\n * Centres as close to `desired` as they can get, in order, at least `gap`\n * apart: an isotonic regression by pooling adjacent violators.\n */\nfunction place(desired: number[], gaps: number[], weights: number[]): number[] {\n // Shift out the gaps, so the constraint becomes \"non-decreasing\".\n const offset: number[] = [0];\n for (let i = 1; i < desired.length; i++) offset.push(offset[i - 1]! + gaps[i - 1]!);\n const blocks: Array<{ value: number; weight: number; count: number }> = [];\n desired.forEach((d, i) => {\n let block = { value: d - offset[i]!, weight: weights[i]!, count: 1 };\n while (blocks.length && blocks[blocks.length - 1]!.value > block.value) {\n const last = blocks.pop()!;\n const weight = last.weight + block.weight;\n block = {\n value: (last.value * last.weight + block.value * block.weight) / weight,\n weight,\n count: last.count + block.count,\n };\n }\n blocks.push(block);\n });\n const result: number[] = [];\n for (const block of blocks) for (let k = 0; k < block.count; k++) result.push(block.value + offset[result.length]!);\n return result;\n}\n\nfunction assignCross(layers: number[][], vertices: Vertex[], nodeGap: number): void {\n const gapBetween = (a: number, b: number): number => {\n const va = vertices[a]!;\n const vb = vertices[b]!;\n // Dummies keep less room between each other than real nodes do.\n const gap = va.node < 0 && vb.node < 0 ? nodeGap / 2 : nodeGap;\n return va.crossSize / 2 + gap + vb.crossSize / 2;\n };\n for (const layer of layers) {\n let at = 0;\n layer.forEach((v, i) => {\n if (i > 0) at += gapBetween(layer[i - 1]!, v);\n vertices[v]!.cross = at;\n });\n }\n // Pull toward the neighbours: down from the layer before, up from the layer\n // after, and once more from both sides. Dummies weigh more, so long edges run straight.\n const passes: Array<\"down\" | \"up\" | \"both\"> = [\"down\", \"up\", \"down\", \"up\", \"both\", \"both\"];\n for (const pass of passes) {\n const range = pass === \"up\" ? layers.map((_, l) => layers.length - 1 - l) : layers.map((_, l) => l);\n for (const l of range) {\n const layer = layers[l]!;\n if (layer.length === 0) continue;\n const desired = layer.map((v) => {\n const vertex = vertices[v]!;\n const neighbours =\n pass === \"down\" ? vertex.preds : pass === \"up\" ? vertex.succs : [...vertex.preds, ...vertex.succs];\n if (neighbours.length === 0) return vertex.cross;\n return neighbours.reduce((sum, n) => sum + vertices[n]!.cross, 0) / neighbours.length;\n });\n const gaps = layer.slice(1).map((v, i) => gapBetween(layer[i]!, v));\n const weights = layer.map((v) => (vertices[v]!.node < 0 ? 2 : 1));\n place(desired, gaps, weights).forEach((cross, i) => (vertices[layer[i]!]!.cross = cross));\n }\n }\n}\n\n// ---- Steps 4, 7, 8: one connected part, then all of them ----\n\ninterface PartLayout {\n /** Real node index \u2192 its rectangle in part coordinates (rank, cross). */\n nodes: Map<number, { rank: number; cross: number; layer: number; order: number }>;\n /** Edge index \u2192 points in part coordinates (rank, cross). */\n edges: Map<number, Array<{ rank: number; cross: number }>>;\n rankExtent: number;\n crossExtent: number;\n}\n\nfunction layoutPart(\n members: number[],\n graph: Normalised,\n edgeList: number[],\n rankSizeOf: (n: number) => number,\n crossSizeOf: (n: number) => number,\n rankGap: number,\n nodeGap: number,\n sweeps: number\n): PartLayout {\n const local = new Map<number, number>();\n members.forEach((n, i) => local.set(n, i));\n const arcs: Array<[number, number]> = edgeList.map((e) => {\n const edge = graph.edges[e]!;\n const from = local.get(edge.from)!;\n const to = local.get(edge.to)!;\n return edge.reversed ? [to, from] : [from, to];\n });\n const layerOf = assignLayers(members.length, arcs);\n\n const vertices: Vertex[] = members.map((n, i) => ({\n node: n,\n rankSize: rankSizeOf(n),\n crossSize: crossSizeOf(n),\n layer: layerOf[i]!,\n cross: 0,\n preds: [],\n succs: [],\n }));\n const segments: Segment[] = edgeList.map((e, k) => {\n const [from, to] = arcs[k]!;\n const chain = [from];\n let previous = from;\n for (let l = vertices[from]!.layer + 1; l < vertices[to]!.layer; l++) {\n const dummy = vertices.length;\n vertices.push({ node: -1, rankSize: 0, crossSize: 0, layer: l, cross: 0, preds: [], succs: [] });\n vertices[previous]!.succs.push(dummy);\n vertices[dummy]!.preds.push(previous);\n chain.push(dummy);\n previous = dummy;\n }\n vertices[previous]!.succs.push(to);\n vertices[to]!.preds.push(previous);\n chain.push(to);\n return { edge: e, chain };\n });\n\n // Each layer starts in the order of first appearance in a walk from the\n // sources in input order; the sweeps take it from there.\n const layerCount = vertices.reduce((max, v) => Math.max(max, v.layer + 1), 0);\n const layers: number[][] = Array.from({ length: layerCount }, () => []);\n vertices.forEach((v, i) => layers[v.layer]!.push(i));\n orderLayers(layers, vertices, sweeps);\n assignCross(layers, vertices, nodeGap);\n\n // Layer bands along the rank axis: each as thick as its thickest node.\n const thickness = layers.map((layer) => layer.reduce((max, v) => Math.max(max, vertices[v]!.rankSize), 0));\n const start: number[] = [];\n let rank = 0;\n thickness.forEach((t, l) => {\n start[l] = rank;\n rank += t + (l + 1 < thickness.length ? rankGap : 0);\n });\n\n let minCross = Infinity;\n let maxCross = -Infinity;\n for (const v of vertices) {\n minCross = Math.min(minCross, v.cross - v.crossSize / 2);\n maxCross = Math.max(maxCross, v.cross + v.crossSize / 2);\n }\n const shift = Number.isFinite(minCross) ? -minCross : 0;\n\n const nodes: PartLayout[\"nodes\"] = new Map();\n layers.forEach((layer, l) =>\n layer.forEach((v, order) => {\n const vertex = vertices[v]!;\n if (vertex.node < 0) return;\n nodes.set(vertex.node, {\n rank: start[l]! + (thickness[l]! - vertex.rankSize) / 2,\n cross: vertex.cross - vertex.crossSize / 2 + shift,\n layer: l,\n order,\n });\n })\n );\n\n const edges: PartLayout[\"edges\"] = new Map();\n for (const { edge, chain } of segments) {\n const points: Array<{ rank: number; cross: number }> = [];\n chain.forEach((v, i) => {\n const vertex = vertices[v]!;\n const l = vertex.layer;\n const cross = vertex.cross + shift;\n const bandStart = start[l]! + (thickness[l]! - vertex.rankSize) / 2;\n if (i === 0) points.push({ rank: bandStart + vertex.rankSize, cross });\n else if (i === chain.length - 1) points.push({ rank: bandStart, cross });\n else {\n // Straight through the band of a layer it skips, so it never cuts a node.\n points.push({ rank: start[l]!, cross }, { rank: start[l]! + thickness[l]!, cross });\n }\n });\n if (graph.edges[edge]!.reversed) points.reverse();\n edges.set(edge, points);\n }\n\n return {\n nodes,\n edges,\n rankExtent: rank,\n crossExtent: Number.isFinite(maxCross) ? maxCross - minCross : 0,\n };\n}\n\n/**\n * Lays out a directed graph in layers. Never throws: unknown ids, self-loops\n * and duplicates are dropped (and reported through `warn`), and the edges that\n * close a cycle are drawn against the layer direction, marked `reversed`.\n */\nexport function dagLayout(input: DagLayoutInput): DagLayoutResult {\n const direction = input.direction ?? \"LR\";\n const rankGap = input.rankGap ?? 64;\n const nodeGap = input.nodeGap ?? 24;\n const sweeps = input.sweeps ?? 8;\n const graph = normalise(input);\n const lr = direction === \"LR\";\n const rankSizeOf = (n: number): number => (lr ? graph.nodes[n]!.width : graph.nodes[n]!.height);\n const crossSizeOf = (n: number): number => (lr ? graph.nodes[n]!.height : graph.nodes[n]!.width);\n\n // Connected parts (edges taken both ways), in the order of their first node.\n const parent = graph.nodes.map((_, i) => i);\n const find = (v: number): number => {\n while (parent[v] !== v) {\n parent[v] = parent[parent[v]!]!;\n v = parent[v]!;\n }\n return v;\n };\n for (const edge of graph.edges) {\n const a = find(edge.from);\n const b = find(edge.to);\n if (a !== b) parent[Math.max(a, b)] = Math.min(a, b);\n }\n const parts = new Map<number, { members: number[]; edges: number[] }>();\n graph.nodes.forEach((_, i) => {\n const root = find(i);\n if (!parts.has(root)) parts.set(root, { members: [], edges: [] });\n parts.get(root)!.members.push(i);\n });\n graph.edges.forEach((edge, e) => parts.get(find(edge.from))!.edges.push(e));\n\n const placedNodes = new Map<number, DagLayoutNode>();\n const placedEdges = new Map<number, DagPoint[]>();\n const toPoint = (rank: number, cross: number): DagPoint => (lr ? { x: rank, y: cross } : { x: cross, y: rank });\n let crossAt = 0;\n let rankExtent = 0;\n for (const part of parts.values()) {\n const laid = layoutPart(part.members, graph, part.edges, rankSizeOf, crossSizeOf, rankGap, nodeGap, sweeps);\n for (const [n, p] of laid.nodes) {\n const node = graph.nodes[n]!;\n placedNodes.set(n, {\n id: node.id,\n ...toPoint(p.rank, p.cross + crossAt),\n width: node.width,\n height: node.height,\n layer: p.layer,\n order: p.order,\n });\n }\n for (const [e, points] of laid.edges) {\n placedEdges.set(\n e,\n points.map((p) => toPoint(p.rank, p.cross + crossAt))\n );\n }\n rankExtent = Math.max(rankExtent, laid.rankExtent);\n crossAt += laid.crossExtent + nodeGap * 2;\n }\n const crossExtent = Math.max(0, crossAt - nodeGap * 2);\n\n const nodes = new Map<string, DagLayoutNode>();\n graph.nodes.forEach((node, i) => nodes.set(node.id, placedNodes.get(i)!));\n // A two-cycle (a->b and b->a) would draw both edges on one curve: the\n // turned-around one moves across, still ending on both nodes.\n const pairs = new Set(graph.edges.map((edge) => `${edge.from} ${edge.to}`));\n const edges = graph.edges.map((edge, e) => {\n let points = placedEdges.get(e)!;\n if (edge.reversed && pairs.has(`${edge.to} ${edge.from}`)) {\n const across = (n: number): number => (lr ? graph.nodes[n]!.height : graph.nodes[n]!.width);\n const offset = Math.min(8, across(edge.from) / 4, across(edge.to) / 4);\n points = points.map((p) => (lr ? { x: p.x, y: p.y + offset } : { x: p.x + offset, y: p.y }));\n }\n return { id: edge.id, source: edge.source, target: edge.target, points, reversed: edge.reversed };\n });\n const extent = toPoint(rankExtent, crossExtent);\n return { nodes, edges, width: extent.x, height: extent.y };\n}\n\n/**\n * An SVG path through an edge's points: a smooth S-curve between layers, a\n * straight line through the layers it skips.\n */\nexport function dagEdgePath(points: readonly DagPoint[], direction: DagDirection = \"LR\"): string {\n if (points.length === 0) return \"\";\n const round = (n: number): number => Math.round(n * 10) / 10;\n const first = points[0]!;\n let d = `M${round(first.x)},${round(first.y)}`;\n for (let i = 1; i < points.length; i++) {\n const a = points[i - 1]!;\n const b = points[i]!;\n if (direction === \"LR\") {\n const mid = (a.x + b.x) / 2;\n d += ` C${round(mid)},${round(a.y)} ${round(mid)},${round(b.y)} ${round(b.x)},${round(b.y)}`;\n } else {\n const mid = (a.y + b.y) / 2;\n d += ` C${round(a.x)},${round(mid)} ${round(b.x)},${round(mid)} ${round(b.x)},${round(b.y)}`;\n }\n }\n return d;\n}\n"],
|
|
5
|
+
"mappings": "AAiFO,MAAM,YAAY,CAAC,SAAqC,KAAK,MAAM,GAAG,KAAK,MAAM,KAAK,KAAK,MAAM;AA8BxG,SAAS,UAAU,OAAmC;AACpD,QAAM,OAAO,MAAM,SAAS,MAAM;AAClC,QAAM,QAA8B,CAAC;AACrC,QAAM,QAAQ,oBAAI,IAAoB;AACtC,aAAW,QAAQ,MAAM,OAAO;AAC9B,QAAI,MAAM,IAAI,KAAK,EAAE,GAAG;AACtB,WAAK,SAAS,KAAK,EAAE,2CAA2C;AAChE;AAAA,IACF;AACA,UAAM,IAAI,KAAK,IAAI,MAAM,MAAM;AAC/B,UAAM,KAAK,IAAI;AAAA,EACjB;AACA,QAAM,QAA6B,CAAC;AACpC,QAAM,QAAQ,oBAAI,IAAY;AAC9B,QAAM,MAAM,oBAAI,IAAY;AAC5B,aAAW,QAAQ,MAAM,OAAO;AAC9B,UAAM,OAAO,MAAM,IAAI,KAAK,MAAM;AAClC,UAAM,KAAK,MAAM,IAAI,KAAK,MAAM;AAChC,QAAI,SAAS,UAAa,OAAO,QAAW;AAC1C,YAAM,UAAU,SAAS,SAAY,KAAK,SAAS,KAAK;AACxD,WAAK,QAAQ,KAAK,MAAM,OAAO,KAAK,MAAM,2BAA2B,OAAO,mBAAmB;AAC/F;AAAA,IACF;AACA,QAAI,SAAS,IAAI;AACf,WAAK,QAAQ,KAAK,MAAM,OAAO,KAAK,MAAM,iCAAiC;AAC3E;AAAA,IACF;AACA,UAAM,OAAO,GAAG,IAAI,IAAI,EAAE;AAC1B,UAAM,KAAK,UAAU,IAAI;AACzB,QAAI,MAAM,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE,GAAG;AAClC,WAAK,QAAQ,KAAK,MAAM,OAAO,KAAK,MAAM,0CAA0C;AACpF;AAAA,IACF;AACA,UAAM,IAAI,IAAI;AACd,QAAI,IAAI,EAAE;AACV,UAAM,KAAK,EAAE,IAAI,QAAQ,KAAK,QAAQ,QAAQ,KAAK,QAAQ,MAAM,IAAI,UAAU,MAAM,CAAC;AAAA,EACxF;AAIA,QAAM,MAAkB,MAAM,IAAI,MAAM,CAAC,CAAC;AAC1C,QAAM,QAAQ,CAAC,MAAM,MAAM,IAAI,KAAK,IAAI,EAAG,KAAK,CAAC,CAAC;AAClD,QAAM,QAAQ,IAAI,WAAW,MAAM,MAAM;AACzC,WAAS,OAAO,GAAG,OAAO,MAAM,QAAQ,QAAQ;AAC9C,QAAI,MAAM,IAAI,EAAG;AACjB,UAAM,QAAiC,CAAC,CAAC,MAAM,CAAC,CAAC;AACjD,UAAM,IAAI,IAAI;AACd,WAAO,MAAM,QAAQ;AACnB,YAAM,MAAM,MAAM,MAAM,SAAS,CAAC;AAClC,YAAM,CAAC,GAAG,IAAI,IAAI;AAClB,YAAM,OAAO,IAAI,CAAC;AAClB,UAAI,QAAQ,KAAK,QAAQ;AACvB,cAAM,CAAC,IAAI;AACX,cAAM,IAAI;AACV;AAAA,MACF;AACA,UAAI,CAAC,IAAI,OAAO;AAChB,YAAM,OAAO,MAAM,KAAK,IAAI,CAAE;AAC9B,UAAI,MAAM,KAAK,EAAE,MAAM,EAAG,MAAK,WAAW;AAAA,eACjC,MAAM,KAAK,EAAE,MAAM,GAAG;AAC7B,cAAM,KAAK,EAAE,IAAI;AACjB,cAAM,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;AAAA,MACzB;AAAA,IACF;AAAA,EACF;AACA,SAAO,EAAE,OAAO,OAAO,MAAM;AAC/B;AAIA,SAAS,aAAa,OAAe,MAAyC;AAC5E,QAAM,MAAkB,MAAM,KAAK,EAAE,QAAQ,MAAM,GAAG,MAAM,CAAC,CAAC;AAC9D,QAAM,WAAW,IAAI,MAAc,KAAK,EAAE,KAAK,CAAC;AAChD,aAAW,CAAC,GAAG,CAAC,KAAK,MAAM;AACzB,QAAI,CAAC,EAAG,KAAK,CAAC;AACd,aAAS,CAAC;AAAA,EACZ;AACA,QAAM,UAAU,SAAS,IAAI,CAAC,MAAM,IAAI,CAAC;AACzC,QAAM,QAAQ,IAAI,MAAc,KAAK,EAAE,KAAK,CAAC;AAC7C,QAAM,QAAkB,CAAC;AACzB,QAAM,QAAkB,CAAC;AACzB,WAAS,IAAI,GAAG,IAAI,OAAO,IAAK,KAAI,SAAS,CAAC,MAAM,EAAG,OAAM,KAAK,CAAC;AACnE,WAAS,OAAO,GAAG,OAAO,MAAM,QAAQ,QAAQ;AAC9C,UAAM,IAAI,MAAM,IAAI;AACpB,UAAM,KAAK,CAAC;AACZ,eAAW,KAAK,IAAI,CAAC,GAAI;AACvB,YAAM,CAAC,IAAI,KAAK,IAAI,MAAM,CAAC,GAAI,MAAM,CAAC,IAAK,CAAC;AAC5C,UAAI,EAAE,SAAS,CAAC,MAAO,EAAG,OAAM,KAAK,CAAC;AAAA,IACxC;AAAA,EACF;AAGA,WAAS,IAAI,MAAM,SAAS,GAAG,KAAK,GAAG,KAAK;AAC1C,UAAM,IAAI,MAAM,CAAC;AACjB,UAAM,QAAQ,IAAI,CAAC;AACnB,QAAI,MAAM,WAAW,KAAK,QAAQ,CAAC,EAAG;AACtC,UAAM,CAAC,IAAI,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,MAAM,CAAC,CAAE,CAAC,IAAI;AAAA,EACxD;AACA,SAAO;AACT;AAKA,SAAS,iBAAiB,OAAiB,UAAoB,UAA8B;AAC3F,QAAM,QAAiC,CAAC;AACxC,aAAW,KAAK,MAAO,YAAW,KAAK,SAAS,CAAC,EAAG,MAAO,OAAM,KAAK,CAAC,SAAS,CAAC,GAAI,SAAS,CAAC,CAAE,CAAC;AAClG,QAAM,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;AAE/C,MAAI,OAAO;AACX,aAAW,CAAC,EAAE,CAAC,KAAK,MAAO,QAAO,KAAK,IAAI,MAAM,IAAI,CAAC;AACtD,QAAM,OAAO,IAAI,WAAW,OAAO,CAAC;AACpC,MAAI,YAAY;AAChB,WAAS,IAAI,MAAM,SAAS,GAAG,KAAK,GAAG,KAAK;AAC1C,UAAM,IAAI,MAAM,CAAC,EAAG,CAAC;AACrB,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK,IAAI,CAAC,EAAG,cAAa,KAAK,CAAC;AACvD,aAAS,IAAI,IAAI,GAAG,KAAK,MAAM,KAAK,IAAI,CAAC,EAAG,MAAK,CAAC;AAAA,EACpD;AACA,SAAO;AACT;AAEA,SAAS,eAAe,QAAoB,UAAoB,UAA8B;AAC5F,MAAI,MAAM;AACV,WAAS,IAAI,GAAG,IAAI,IAAI,OAAO,QAAQ,IAAK,QAAO,iBAAiB,OAAO,CAAC,GAAI,UAAU,QAAQ;AAClG,SAAO;AACT;AAEA,SAAS,QAAQ,OAAiB,UAAoB,UAAsB,MAAqB;AAC/F,QAAM,MAAM,oBAAI,IAAoB;AACpC,aAAW,KAAK,OAAO;AACrB,UAAM,aAAa,OAAO,SAAS,CAAC,EAAG,QAAQ,SAAS,CAAC,EAAG;AAC5D,QAAI,WAAW,WAAW,EAAG,KAAI,IAAI,GAAG,SAAS,CAAC,CAAE;AAAA,QAC/C,KAAI,IAAI,GAAG,WAAW,OAAO,CAAC,KAAK,MAAM,MAAM,SAAS,CAAC,GAAI,CAAC,IAAI,WAAW,MAAM;AAAA,EAC1F;AAEA,QAAM,KAAK,CAAC,GAAG,MAAM,IAAI,IAAI,CAAC,IAAK,IAAI,IAAI,CAAC,KAAM,SAAS,CAAC,IAAK,SAAS,CAAC,CAAE;AAC7E,QAAM,QAAQ,CAAC,GAAG,MAAO,SAAS,CAAC,IAAI,CAAE;AAC3C;AAEA,SAAS,YAAY,QAAoB,UAAoB,QAAsB;AACjF,QAAM,WAAW,IAAI,WAAW,SAAS,MAAM;AAC/C,aAAW,SAAS,OAAQ,OAAM,QAAQ,CAAC,GAAG,MAAO,SAAS,CAAC,IAAI,CAAE;AACrE,MAAI,OAAO,OAAO,IAAI,CAAC,UAAU,MAAM,MAAM,CAAC;AAC9C,MAAI,gBAAgB,eAAe,QAAQ,UAAU,QAAQ;AAC7D,MAAI,QAAQ;AACZ,WAAS,QAAQ,GAAG,QAAQ,UAAU,gBAAgB,GAAG,SAAS;AAChE,UAAM,OAAO,QAAQ,MAAM;AAC3B,QAAI,KAAM,UAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,IAAK,SAAQ,OAAO,CAAC,GAAI,UAAU,UAAU,IAAI;AAAA,QACzF,UAAS,IAAI,OAAO,SAAS,GAAG,KAAK,GAAG,IAAK,SAAQ,OAAO,CAAC,GAAI,UAAU,UAAU,KAAK;AAC/F,UAAM,YAAY,eAAe,QAAQ,UAAU,QAAQ;AAC3D,QAAI,YAAY,eAAe;AAC7B,sBAAgB;AAChB,aAAO,OAAO,IAAI,CAAC,UAAU,MAAM,MAAM,CAAC;AAC1C,cAAQ;AAAA,IACV,WAAW,EAAE,SAAS,EAAG;AAAA,EAC3B;AACA,OAAK,QAAQ,CAAC,OAAO,MAAO,OAAO,CAAC,IAAI,KAAM;AAChD;AAQA,SAAS,MAAM,SAAmB,MAAgB,SAA6B;AAE7E,QAAM,SAAmB,CAAC,CAAC;AAC3B,WAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,IAAK,QAAO,KAAK,OAAO,IAAI,CAAC,IAAK,KAAK,IAAI,CAAC,CAAE;AAClF,QAAM,SAAkE,CAAC;AACzE,UAAQ,QAAQ,CAAC,GAAG,MAAM;AACxB,QAAI,QAAQ,EAAE,OAAO,IAAI,OAAO,CAAC,GAAI,QAAQ,QAAQ,CAAC,GAAI,OAAO,EAAE;AACnE,WAAO,OAAO,UAAU,OAAO,OAAO,SAAS,CAAC,EAAG,QAAQ,MAAM,OAAO;AACtE,YAAM,OAAO,OAAO,IAAI;AACxB,YAAM,SAAS,KAAK,SAAS,MAAM;AACnC,cAAQ;AAAA,QACN,QAAQ,KAAK,QAAQ,KAAK,SAAS,MAAM,QAAQ,MAAM,UAAU;AAAA,QACjE;AAAA,QACA,OAAO,KAAK,QAAQ,MAAM;AAAA,MAC5B;AAAA,IACF;AACA,WAAO,KAAK,KAAK;AAAA,EACnB,CAAC;AACD,QAAM,SAAmB,CAAC;AAC1B,aAAW,SAAS,OAAQ,UAAS,IAAI,GAAG,IAAI,MAAM,OAAO,IAAK,QAAO,KAAK,MAAM,QAAQ,OAAO,OAAO,MAAM,CAAE;AAClH,SAAO;AACT;AAEA,SAAS,YAAY,QAAoB,UAAoB,SAAuB;AAClF,QAAM,aAAa,CAAC,GAAW,MAAsB;AACnD,UAAM,KAAK,SAAS,CAAC;AACrB,UAAM,KAAK,SAAS,CAAC;AAErB,UAAM,MAAM,GAAG,OAAO,KAAK,GAAG,OAAO,IAAI,UAAU,IAAI;AACvD,WAAO,GAAG,YAAY,IAAI,MAAM,GAAG,YAAY;AAAA,EACjD;AACA,aAAW,SAAS,QAAQ;AAC1B,QAAI,KAAK;AACT,UAAM,QAAQ,CAAC,GAAG,MAAM;AACtB,UAAI,IAAI,EAAG,OAAM,WAAW,MAAM,IAAI,CAAC,GAAI,CAAC;AAC5C,eAAS,CAAC,EAAG,QAAQ;AAAA,IACvB,CAAC;AAAA,EACH;AAGA,QAAM,SAAwC,CAAC,QAAQ,MAAM,QAAQ,MAAM,QAAQ,MAAM;AACzF,aAAW,QAAQ,QAAQ;AACzB,UAAM,QAAQ,SAAS,OAAO,OAAO,IAAI,CAAC,GAAG,MAAM,OAAO,SAAS,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,GAAG,MAAM,CAAC;AAClG,eAAW,KAAK,OAAO;AACrB,YAAM,QAAQ,OAAO,CAAC;AACtB,UAAI,MAAM,WAAW,EAAG;AACxB,YAAM,UAAU,MAAM,IAAI,CAAC,MAAM;AAC/B,cAAM,SAAS,SAAS,CAAC;AACzB,cAAM,aACJ,SAAS,SAAS,OAAO,QAAQ,SAAS,OAAO,OAAO,QAAQ,CAAC,GAAG,OAAO,OAAO,GAAG,OAAO,KAAK;AACnG,YAAI,WAAW,WAAW,EAAG,QAAO,OAAO;AAC3C,eAAO,WAAW,OAAO,CAAC,KAAK,MAAM,MAAM,SAAS,CAAC,EAAG,OAAO,CAAC,IAAI,WAAW;AAAA,MACjF,CAAC;AACD,YAAM,OAAO,MAAM,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,MAAM,WAAW,MAAM,CAAC,GAAI,CAAC,CAAC;AAClE,YAAM,UAAU,MAAM,IAAI,CAAC,MAAO,SAAS,CAAC,EAAG,OAAO,IAAI,IAAI,CAAE;AAChE,YAAM,SAAS,MAAM,OAAO,EAAE,QAAQ,CAAC,OAAO,MAAO,SAAS,MAAM,CAAC,CAAE,EAAG,QAAQ,KAAM;AAAA,IAC1F;AAAA,EACF;AACF;AAaA,SAAS,WACP,SACA,OACA,UACA,YACA,aACA,SACA,SACA,QACY;AACZ,QAAM,QAAQ,oBAAI,IAAoB;AACtC,UAAQ,QAAQ,CAAC,GAAG,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC;AACzC,QAAM,OAAgC,SAAS,IAAI,CAAC,MAAM;AACxD,UAAM,OAAO,MAAM,MAAM,CAAC;AAC1B,UAAM,OAAO,MAAM,IAAI,KAAK,IAAI;AAChC,UAAM,KAAK,MAAM,IAAI,KAAK,EAAE;AAC5B,WAAO,KAAK,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AAAA,EAC/C,CAAC;AACD,QAAM,UAAU,aAAa,QAAQ,QAAQ,IAAI;AAEjD,QAAM,WAAqB,QAAQ,IAAI,CAAC,GAAG,OAAO;AAAA,IAChD,MAAM;AAAA,IACN,UAAU,WAAW,CAAC;AAAA,IACtB,WAAW,YAAY,CAAC;AAAA,IACxB,OAAO,QAAQ,CAAC;AAAA,IAChB,OAAO;AAAA,IACP,OAAO,CAAC;AAAA,IACR,OAAO,CAAC;AAAA,EACV,EAAE;AACF,QAAM,WAAsB,SAAS,IAAI,CAAC,GAAG,MAAM;AACjD,UAAM,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC;AACzB,UAAM,QAAQ,CAAC,IAAI;AACnB,QAAI,WAAW;AACf,aAAS,IAAI,SAAS,IAAI,EAAG,QAAQ,GAAG,IAAI,SAAS,EAAE,EAAG,OAAO,KAAK;AACpE,YAAM,QAAQ,SAAS;AACvB,eAAS,KAAK,EAAE,MAAM,IAAI,UAAU,GAAG,WAAW,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC;AAC/F,eAAS,QAAQ,EAAG,MAAM,KAAK,KAAK;AACpC,eAAS,KAAK,EAAG,MAAM,KAAK,QAAQ;AACpC,YAAM,KAAK,KAAK;AAChB,iBAAW;AAAA,IACb;AACA,aAAS,QAAQ,EAAG,MAAM,KAAK,EAAE;AACjC,aAAS,EAAE,EAAG,MAAM,KAAK,QAAQ;AACjC,UAAM,KAAK,EAAE;AACb,WAAO,EAAE,MAAM,GAAG,MAAM;AAAA,EAC1B,CAAC;AAID,QAAM,aAAa,SAAS,OAAO,CAAC,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC;AAC5E,QAAM,SAAqB,MAAM,KAAK,EAAE,QAAQ,WAAW,GAAG,MAAM,CAAC,CAAC;AACtE,WAAS,QAAQ,CAAC,GAAG,MAAM,OAAO,EAAE,KAAK,EAAG,KAAK,CAAC,CAAC;AACnD,cAAY,QAAQ,UAAU,MAAM;AACpC,cAAY,QAAQ,UAAU,OAAO;AAGrC,QAAM,YAAY,OAAO,IAAI,CAAC,UAAU,MAAM,OAAO,CAAC,KAAK,MAAM,KAAK,IAAI,KAAK,SAAS,CAAC,EAAG,QAAQ,GAAG,CAAC,CAAC;AACzG,QAAM,QAAkB,CAAC;AACzB,MAAI,OAAO;AACX,YAAU,QAAQ,CAAC,GAAG,MAAM;AAC1B,UAAM,CAAC,IAAI;AACX,YAAQ,KAAK,IAAI,IAAI,UAAU,SAAS,UAAU;AAAA,EACpD,CAAC;AAED,MAAI,WAAW;AACf,MAAI,WAAW;AACf,aAAW,KAAK,UAAU;AACxB,eAAW,KAAK,IAAI,UAAU,EAAE,QAAQ,EAAE,YAAY,CAAC;AACvD,eAAW,KAAK,IAAI,UAAU,EAAE,QAAQ,EAAE,YAAY,CAAC;AAAA,EACzD;AACA,QAAM,QAAQ,OAAO,SAAS,QAAQ,IAAI,CAAC,WAAW;AAEtD,QAAM,QAA6B,oBAAI,IAAI;AAC3C,SAAO;AAAA,IAAQ,CAAC,OAAO,MACrB,MAAM,QAAQ,CAAC,GAAG,UAAU;AAC1B,YAAM,SAAS,SAAS,CAAC;AACzB,UAAI,OAAO,OAAO,EAAG;AACrB,YAAM,IAAI,OAAO,MAAM;AAAA,QACrB,MAAM,MAAM,CAAC,KAAM,UAAU,CAAC,IAAK,OAAO,YAAY;AAAA,QACtD,OAAO,OAAO,QAAQ,OAAO,YAAY,IAAI;AAAA,QAC7C,OAAO;AAAA,QACP;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAEA,QAAM,QAA6B,oBAAI,IAAI;AAC3C,aAAW,EAAE,MAAM,MAAM,KAAK,UAAU;AACtC,UAAM,SAAiD,CAAC;AACxD,UAAM,QAAQ,CAAC,GAAG,MAAM;AACtB,YAAM,SAAS,SAAS,CAAC;AACzB,YAAM,IAAI,OAAO;AACjB,YAAM,QAAQ,OAAO,QAAQ;AAC7B,YAAM,YAAY,MAAM,CAAC,KAAM,UAAU,CAAC,IAAK,OAAO,YAAY;AAClE,UAAI,MAAM,EAAG,QAAO,KAAK,EAAE,MAAM,YAAY,OAAO,UAAU,MAAM,CAAC;AAAA,eAC5D,MAAM,MAAM,SAAS,EAAG,QAAO,KAAK,EAAE,MAAM,WAAW,MAAM,CAAC;AAAA,WAClE;AAEH,eAAO,KAAK,EAAE,MAAM,MAAM,CAAC,GAAI,MAAM,GAAG,EAAE,MAAM,MAAM,CAAC,IAAK,UAAU,CAAC,GAAI,MAAM,CAAC;AAAA,MACpF;AAAA,IACF,CAAC;AACD,QAAI,MAAM,MAAM,IAAI,EAAG,SAAU,QAAO,QAAQ;AAChD,UAAM,IAAI,MAAM,MAAM;AAAA,EACxB;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ,aAAa,OAAO,SAAS,QAAQ,IAAI,WAAW,WAAW;AAAA,EACjE;AACF;AAOO,SAAS,UAAU,OAAwC;AAChE,QAAM,YAAY,MAAM,aAAa;AACrC,QAAM,UAAU,MAAM,WAAW;AACjC,QAAM,UAAU,MAAM,WAAW;AACjC,QAAM,SAAS,MAAM,UAAU;AAC/B,QAAM,QAAQ,UAAU,KAAK;AAC7B,QAAM,KAAK,cAAc;AACzB,QAAM,aAAa,CAAC,MAAuB,KAAK,MAAM,MAAM,CAAC,EAAG,QAAQ,MAAM,MAAM,CAAC,EAAG;AACxF,QAAM,cAAc,CAAC,MAAuB,KAAK,MAAM,MAAM,CAAC,EAAG,SAAS,MAAM,MAAM,CAAC,EAAG;AAG1F,QAAM,SAAS,MAAM,MAAM,IAAI,CAAC,GAAG,MAAM,CAAC;AAC1C,QAAM,OAAO,CAAC,MAAsB;AAClC,WAAO,OAAO,CAAC,MAAM,GAAG;AACtB,aAAO,CAAC,IAAI,OAAO,OAAO,CAAC,CAAE;AAC7B,UAAI,OAAO,CAAC;AAAA,IACd;AACA,WAAO;AAAA,EACT;AACA,aAAW,QAAQ,MAAM,OAAO;AAC9B,UAAM,IAAI,KAAK,KAAK,IAAI;AACxB,UAAM,IAAI,KAAK,KAAK,EAAE;AACtB,QAAI,MAAM,EAAG,QAAO,KAAK,IAAI,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC;AAAA,EACrD;AACA,QAAM,QAAQ,oBAAI,IAAoD;AACtE,QAAM,MAAM,QAAQ,CAAC,GAAG,MAAM;AAC5B,UAAM,OAAO,KAAK,CAAC;AACnB,QAAI,CAAC,MAAM,IAAI,IAAI,EAAG,OAAM,IAAI,MAAM,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC;AAChE,UAAM,IAAI,IAAI,EAAG,QAAQ,KAAK,CAAC;AAAA,EACjC,CAAC;AACD,QAAM,MAAM,QAAQ,CAAC,MAAM,MAAM,MAAM,IAAI,KAAK,KAAK,IAAI,CAAC,EAAG,MAAM,KAAK,CAAC,CAAC;AAE1E,QAAM,cAAc,oBAAI,IAA2B;AACnD,QAAM,cAAc,oBAAI,IAAwB;AAChD,QAAM,UAAU,CAAC,MAAc,UAA6B,KAAK,EAAE,GAAG,MAAM,GAAG,MAAM,IAAI,EAAE,GAAG,OAAO,GAAG,KAAK;AAC7G,MAAI,UAAU;AACd,MAAI,aAAa;AACjB,aAAW,QAAQ,MAAM,OAAO,GAAG;AACjC,UAAM,OAAO,WAAW,KAAK,SAAS,OAAO,KAAK,OAAO,YAAY,aAAa,SAAS,SAAS,MAAM;AAC1G,eAAW,CAAC,GAAG,CAAC,KAAK,KAAK,OAAO;AAC/B,YAAM,OAAO,MAAM,MAAM,CAAC;AAC1B,kBAAY,IAAI,GAAG;AAAA,QACjB,IAAI,KAAK;AAAA,QACT,GAAG,QAAQ,EAAE,MAAM,EAAE,QAAQ,OAAO;AAAA,QACpC,OAAO,KAAK;AAAA,QACZ,QAAQ,KAAK;AAAA,QACb,OAAO,EAAE;AAAA,QACT,OAAO,EAAE;AAAA,MACX,CAAC;AAAA,IACH;AACA,eAAW,CAAC,GAAG,MAAM,KAAK,KAAK,OAAO;AACpC,kBAAY;AAAA,QACV;AAAA,QACA,OAAO,IAAI,CAAC,MAAM,QAAQ,EAAE,MAAM,EAAE,QAAQ,OAAO,CAAC;AAAA,MACtD;AAAA,IACF;AACA,iBAAa,KAAK,IAAI,YAAY,KAAK,UAAU;AACjD,eAAW,KAAK,cAAc,UAAU;AAAA,EAC1C;AACA,QAAM,cAAc,KAAK,IAAI,GAAG,UAAU,UAAU,CAAC;AAErD,QAAM,QAAQ,oBAAI,IAA2B;AAC7C,QAAM,MAAM,QAAQ,CAAC,MAAM,MAAM,MAAM,IAAI,KAAK,IAAI,YAAY,IAAI,CAAC,CAAE,CAAC;AAGxE,QAAM,QAAQ,IAAI,IAAI,MAAM,MAAM,IAAI,CAAC,SAAS,GAAG,KAAK,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;AAC1E,QAAM,QAAQ,MAAM,MAAM,IAAI,CAAC,MAAM,MAAM;AACzC,QAAI,SAAS,YAAY,IAAI,CAAC;AAC9B,QAAI,KAAK,YAAY,MAAM,IAAI,GAAG,KAAK,EAAE,IAAI,KAAK,IAAI,EAAE,GAAG;AACzD,YAAM,SAAS,CAAC,MAAuB,KAAK,MAAM,MAAM,CAAC,EAAG,SAAS,MAAM,MAAM,CAAC,EAAG;AACrF,YAAM,SAAS,KAAK,IAAI,GAAG,OAAO,KAAK,IAAI,IAAI,GAAG,OAAO,KAAK,EAAE,IAAI,CAAC;AACrE,eAAS,OAAO,IAAI,CAAC,MAAO,KAAK,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,IAAI,OAAO,IAAI,EAAE,GAAG,EAAE,IAAI,QAAQ,GAAG,EAAE,EAAE,CAAE;AAAA,IAC7F;AACA,WAAO,EAAE,IAAI,KAAK,IAAI,QAAQ,KAAK,QAAQ,QAAQ,KAAK,QAAQ,QAAQ,UAAU,KAAK,SAAS;AAAA,EAClG,CAAC;AACD,QAAM,SAAS,QAAQ,YAAY,WAAW;AAC9C,SAAO,EAAE,OAAO,OAAO,OAAO,OAAO,GAAG,QAAQ,OAAO,EAAE;AAC3D;AAMO,SAAS,YAAY,QAA6B,YAA0B,MAAc;AAC/F,MAAI,OAAO,WAAW,EAAG,QAAO;AAChC,QAAM,QAAQ,CAAC,MAAsB,KAAK,MAAM,IAAI,EAAE,IAAI;AAC1D,QAAM,QAAQ,OAAO,CAAC;AACtB,MAAI,IAAI,IAAI,MAAM,MAAM,CAAC,CAAC,IAAI,MAAM,MAAM,CAAC,CAAC;AAC5C,WAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACtC,UAAM,IAAI,OAAO,IAAI,CAAC;AACtB,UAAM,IAAI,OAAO,CAAC;AAClB,QAAI,cAAc,MAAM;AACtB,YAAM,OAAO,EAAE,IAAI,EAAE,KAAK;AAC1B,WAAK,KAAK,MAAM,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC;AAAA,IAC5F,OAAO;AACL,YAAM,OAAO,EAAE,IAAI,EAAE,KAAK;AAC1B,WAAK,KAAK,MAAM,EAAE,CAAC,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC;AAAA,IAC5F;AAAA,EACF;AACA,SAAO;AACT;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|