@gunkin/uiify 0.0.25-alpha → 0.0.27-alpha
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 +59 -0
- package/agents/components.md +2 -0
- package/agents/index.md +1 -0
- package/agents/reference/components/accordion.md +4 -4
- package/agents/reference/components/alert-modal.md +10 -10
- package/agents/reference/components/alert.md +1 -1
- package/agents/reference/components/aspect-ratio.md +1 -1
- package/agents/reference/components/avatar.md +2 -2
- package/agents/reference/components/breadcrumb.md +9 -10
- package/agents/reference/components/candle-chart.md +35 -35
- package/agents/reference/components/carousel.md +10 -14
- package/agents/reference/components/collapsible.md +3 -3
- package/agents/reference/components/color-picker.md +6 -6
- package/agents/reference/components/combobox.md +7 -17
- package/agents/reference/components/context-menu.md +5 -26
- package/agents/reference/components/date-picker.md +2 -1
- package/agents/reference/components/drawer.md +17 -31
- package/agents/reference/components/dropdown-menu.md +2 -3
- package/agents/reference/components/field.md +11 -11
- package/agents/reference/components/form-error-summary.md +4 -4
- package/agents/reference/components/input-group.md +1 -0
- package/agents/reference/components/input.md +1 -0
- package/agents/reference/components/line-chart.md +29 -29
- package/agents/reference/components/modal.md +13 -15
- package/agents/reference/components/number-field.md +1 -1
- package/agents/reference/components/otp-input.md +2 -1
- package/agents/reference/components/pagination.md +7 -8
- package/agents/reference/components/rating.md +1 -1
- package/agents/reference/components/segmented-control.md +1 -0
- package/agents/reference/components/select.md +1 -0
- package/agents/reference/components/slider.md +4 -4
- package/agents/reference/components/spinner.md +1 -1
- package/agents/reference/components/table.md +1 -1
- package/agents/reference/components/tabs.md +6 -6
- package/agents/reference/components/tags-input.md +5 -12
- package/agents/reference/components/toast.md +8 -15
- package/agents/reference/components/toggle.md +4 -3
- package/agents/reference/components/virtual-scroll.md +4 -5
- package/agents/reference/elements/choice.md +3 -3
- package/agents/reference/elements/details.md +2 -2
- package/agents/reference/elements/popover.md +3 -3
- package/dist/ai/UiDocument.d.ts +16 -0
- package/dist/ai/UiDocument.d.ts.map +1 -0
- package/dist/ai/UiDocument.js +33 -0
- package/dist/ai/UiDocument.js.map +1 -0
- package/dist/ai/catalog.generated.d.ts +2766 -0
- package/dist/ai/catalog.generated.d.ts.map +1 -0
- package/dist/ai/catalog.generated.js +214 -0
- package/dist/ai/catalog.generated.js.map +1 -0
- package/dist/ai/index.d.ts +9 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +13 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/ai/issues.d.ts +10 -0
- package/dist/ai/issues.d.ts.map +1 -0
- package/dist/ai/issues.js +178 -0
- package/dist/ai/issues.js.map +1 -0
- package/dist/ai/layout.d.ts +26 -0
- package/dist/ai/layout.d.ts.map +1 -0
- package/dist/ai/layout.js +46 -0
- package/dist/ai/layout.js.map +1 -0
- package/dist/ai/limits.d.ts +16 -0
- package/dist/ai/limits.d.ts.map +1 -0
- package/dist/ai/limits.js +99 -0
- package/dist/ai/limits.js.map +1 -0
- package/dist/ai/load.d.ts +16 -0
- package/dist/ai/load.d.ts.map +1 -0
- package/dist/ai/load.js +69 -0
- package/dist/ai/load.js.map +1 -0
- package/dist/ai/loaders.generated.d.ts +5 -0
- package/dist/ai/loaders.generated.d.ts.map +1 -0
- package/dist/ai/loaders.generated.js +122 -0
- package/dist/ai/loaders.generated.js.map +1 -0
- package/dist/ai/rules.d.ts +11 -0
- package/dist/ai/rules.d.ts.map +1 -0
- package/dist/ai/rules.js +126 -0
- package/dist/ai/rules.js.map +1 -0
- package/dist/ai/schema.generated.d.ts +8 -0
- package/dist/ai/schema.generated.d.ts.map +1 -0
- package/dist/ai/schema.generated.js +3316 -0
- package/dist/ai/schema.generated.js.map +1 -0
- package/dist/ai/types.d.ts +33 -0
- package/dist/ai/types.d.ts.map +1 -0
- package/dist/ai/types.js +14 -0
- package/dist/ai/types.js.map +1 -0
- package/dist/ai/validate.d.ts +15 -0
- package/dist/ai/validate.d.ts.map +1 -0
- package/dist/ai/validate.js +32 -0
- package/dist/ai/validate.js.map +1 -0
- package/dist/ai/validator.generated.d.ts +13 -0
- package/dist/ai/validator.generated.d.ts.map +1 -0
- package/dist/ai/validator.generated.js +49133 -0
- package/dist/ai/validator.generated.js.map +1 -0
- package/dist/components/accordion/Accordion.d.ts.map +1 -1
- package/dist/components/accordion/Accordion.js +20 -46
- package/dist/components/accordion/Accordion.js.map +1 -1
- package/dist/components/accordion/types.d.ts +6 -15
- package/dist/components/accordion/types.d.ts.map +1 -1
- package/dist/components/alert/Alert.d.ts.map +1 -1
- package/dist/components/alert/Alert.js +5 -14
- package/dist/components/alert/Alert.js.map +1 -1
- package/dist/components/alert/types.d.ts +3 -7
- package/dist/components/alert/types.d.ts.map +1 -1
- package/dist/components/alert-modal/AlertModal.d.ts.map +1 -1
- package/dist/components/alert-modal/AlertModal.js +28 -137
- package/dist/components/alert-modal/AlertModal.js.map +1 -1
- package/dist/components/alert-modal/AlertModalParts.d.ts.map +1 -1
- package/dist/components/alert-modal/AlertModalParts.js +4 -37
- package/dist/components/alert-modal/AlertModalParts.js.map +1 -1
- package/dist/components/alert-modal/types.d.ts +15 -33
- package/dist/components/alert-modal/types.d.ts.map +1 -1
- package/dist/components/aspect-ratio/AspectRatio.d.ts.map +1 -1
- package/dist/components/aspect-ratio/AspectRatio.js +4 -12
- package/dist/components/aspect-ratio/AspectRatio.js.map +1 -1
- package/dist/components/aspect-ratio/types.d.ts +3 -6
- package/dist/components/aspect-ratio/types.d.ts.map +1 -1
- package/dist/components/avatar/Avatar.d.ts.map +1 -1
- package/dist/components/avatar/Avatar.js +4 -21
- package/dist/components/avatar/Avatar.js.map +1 -1
- package/dist/components/avatar/types.d.ts +4 -14
- package/dist/components/avatar/types.d.ts.map +1 -1
- package/dist/components/breadcrumb/Breadcrumb.d.ts.map +1 -1
- package/dist/components/breadcrumb/Breadcrumb.js +43 -123
- package/dist/components/breadcrumb/Breadcrumb.js.map +1 -1
- package/dist/components/breadcrumb/types.d.ts +12 -35
- package/dist/components/breadcrumb/types.d.ts.map +1 -1
- package/dist/components/candle-chart/CandleChart.d.ts.map +1 -1
- package/dist/components/candle-chart/CandleChart.js +122 -186
- package/dist/components/candle-chart/CandleChart.js.map +1 -1
- package/dist/components/candle-chart/client/CandleChartClient.d.ts.map +1 -1
- package/dist/components/candle-chart/client/CandleChartClient.js +8 -15
- package/dist/components/candle-chart/client/CandleChartClient.js.map +1 -1
- package/dist/components/candle-chart/types.d.ts +42 -116
- package/dist/components/candle-chart/types.d.ts.map +1 -1
- package/dist/components/carousel/CarouselMarkup.d.ts.map +1 -1
- package/dist/components/carousel/CarouselMarkup.js +55 -142
- package/dist/components/carousel/CarouselMarkup.js.map +1 -1
- package/dist/components/carousel/types.d.ts +13 -80
- package/dist/components/carousel/types.d.ts.map +1 -1
- package/dist/components/collapsible/Collapsible.d.ts +1 -5
- package/dist/components/collapsible/Collapsible.d.ts.map +1 -1
- package/dist/components/collapsible/Collapsible.js +3 -33
- package/dist/components/collapsible/Collapsible.js.map +1 -1
- package/dist/components/collapsible/types.d.ts +4 -18
- package/dist/components/collapsible/types.d.ts.map +1 -1
- package/dist/components/color-picker/ColorPicker.d.ts.map +1 -1
- package/dist/components/color-picker/ColorPicker.js +28 -123
- package/dist/components/color-picker/ColorPicker.js.map +1 -1
- package/dist/components/color-picker/types.d.ts +11 -30
- package/dist/components/color-picker/types.d.ts.map +1 -1
- package/dist/components/combobox/Combobox.d.ts.map +1 -1
- package/dist/components/combobox/Combobox.js +30 -23
- package/dist/components/combobox/Combobox.js.map +1 -1
- package/dist/components/combobox/types.d.ts +9 -29
- package/dist/components/combobox/types.d.ts.map +1 -1
- package/dist/components/context-menu/ContextMenu.d.ts.map +1 -1
- package/dist/components/context-menu/ContextMenu.js +30 -53
- package/dist/components/context-menu/ContextMenu.js.map +1 -1
- package/dist/components/context-menu/types.d.ts +6 -31
- package/dist/components/context-menu/types.d.ts.map +1 -1
- package/dist/components/date-picker/DatePicker.d.ts +1 -1
- package/dist/components/date-picker/DatePicker.d.ts.map +1 -1
- package/dist/components/date-picker/DatePicker.js +2 -1
- package/dist/components/date-picker/DatePicker.js.map +1 -1
- package/dist/components/date-picker/types.d.ts +4 -1
- package/dist/components/date-picker/types.d.ts.map +1 -1
- package/dist/components/drawer/Drawer.d.ts.map +1 -1
- package/dist/components/drawer/Drawer.js +12 -12
- package/dist/components/drawer/Drawer.js.map +1 -1
- package/dist/components/drawer/DrawerNative.d.ts.map +1 -1
- package/dist/components/drawer/DrawerNative.js +47 -252
- package/dist/components/drawer/DrawerNative.js.map +1 -1
- package/dist/components/drawer/types.d.ts +25 -30
- package/dist/components/drawer/types.d.ts.map +1 -1
- package/dist/components/dropdown-menu/DropdownMenu.d.ts.map +1 -1
- package/dist/components/dropdown-menu/DropdownMenu.js +30 -27
- package/dist/components/dropdown-menu/DropdownMenu.js.map +1 -1
- package/dist/components/dropdown-menu/DropdownMenuBar.d.ts.map +1 -1
- package/dist/components/dropdown-menu/DropdownMenuBar.js +3 -7
- package/dist/components/dropdown-menu/DropdownMenuBar.js.map +1 -1
- package/dist/components/dropdown-menu/types.d.ts +2 -5
- package/dist/components/dropdown-menu/types.d.ts.map +1 -1
- package/dist/components/field/Field.js +7 -7
- package/dist/components/field/Field.js.map +1 -1
- package/dist/components/field/types.d.ts +11 -11
- package/dist/components/field/types.d.ts.map +1 -1
- package/dist/components/form-error-summary/FormErrorSummary.d.ts.map +1 -1
- package/dist/components/form-error-summary/FormErrorSummary.js +20 -34
- package/dist/components/form-error-summary/FormErrorSummary.js.map +1 -1
- package/dist/components/form-error-summary/types.d.ts +6 -16
- package/dist/components/form-error-summary/types.d.ts.map +1 -1
- package/dist/components/hover-card/HoverCard.d.ts.map +1 -1
- package/dist/components/hover-card/HoverCard.js +9 -9
- package/dist/components/hover-card/HoverCard.js.map +1 -1
- package/dist/components/input/Input.d.ts.map +1 -1
- package/dist/components/input/Input.js +2 -0
- package/dist/components/input/Input.js.map +1 -1
- package/dist/components/input/types.d.ts +3 -0
- package/dist/components/input/types.d.ts.map +1 -1
- package/dist/components/input-group/InputGroup.d.ts.map +1 -1
- package/dist/components/input-group/InputGroup.js +2 -1
- package/dist/components/input-group/InputGroup.js.map +1 -1
- package/dist/components/input-group/types.d.ts +3 -0
- package/dist/components/input-group/types.d.ts.map +1 -1
- package/dist/components/internal/chart-scrollbar/use-scrollbar-reserve.d.ts +2 -2
- package/dist/components/internal/chart-scrollbar/use-scrollbar-reserve.d.ts.map +1 -1
- package/dist/components/internal/chart-scrollbar/use-scrollbar-reserve.js +11 -3
- package/dist/components/internal/chart-scrollbar/use-scrollbar-reserve.js.map +1 -1
- package/dist/components/internal/choice-family/ChoiceGroup.d.ts.map +1 -1
- package/dist/components/internal/choice-family/ChoiceGroup.js +14 -51
- package/dist/components/internal/choice-family/ChoiceGroup.js.map +1 -1
- package/dist/components/internal/choice-family/types.d.ts +8 -40
- package/dist/components/internal/choice-family/types.d.ts.map +1 -1
- package/dist/components/internal/control-size/types.d.ts +3 -0
- package/dist/components/internal/control-size/types.d.ts.map +1 -0
- package/dist/components/internal/control-size/types.js +1 -0
- package/dist/components/internal/control-size/types.js.map +1 -0
- package/dist/components/internal/live-chart/types.d.ts +3 -1
- package/dist/components/internal/live-chart/types.d.ts.map +1 -1
- package/dist/components/internal/live-chart/use-live-chart-window.d.ts.map +1 -1
- package/dist/components/internal/live-chart/use-live-chart-window.js +21 -5
- package/dist/components/internal/live-chart/use-live-chart-window.js.map +1 -1
- package/dist/components/internal/menu/menu-parts.d.ts.map +1 -1
- package/dist/components/internal/menu/menu-parts.js +3 -3
- package/dist/components/internal/menu/menu-parts.js.map +1 -1
- package/dist/components/internal/native-check-control/NativeCheckControl.d.ts.map +1 -1
- package/dist/components/internal/native-check-control/NativeCheckControl.js +8 -32
- package/dist/components/internal/native-check-control/NativeCheckControl.js.map +1 -1
- package/dist/components/internal/native-check-control/types.d.ts +4 -18
- package/dist/components/internal/native-check-control/types.d.ts.map +1 -1
- package/dist/components/line-chart/LineChart.d.ts.map +1 -1
- package/dist/components/line-chart/LineChart.js +134 -208
- package/dist/components/line-chart/LineChart.js.map +1 -1
- package/dist/components/line-chart/client/LineChartClient.d.ts.map +1 -1
- package/dist/components/line-chart/client/LineChartClient.js +8 -15
- package/dist/components/line-chart/client/LineChartClient.js.map +1 -1
- package/dist/components/line-chart/types.d.ts +36 -103
- package/dist/components/line-chart/types.d.ts.map +1 -1
- package/dist/components/modal/Modal.d.ts.map +1 -1
- package/dist/components/modal/Modal.js +34 -115
- package/dist/components/modal/Modal.js.map +1 -1
- package/dist/components/modal/ModalAnatomy.js +6 -6
- package/dist/components/modal/ModalAnatomy.js.map +1 -1
- package/dist/components/modal/ModalParts.js +1 -1
- package/dist/components/modal/ModalParts.js.map +1 -1
- package/dist/components/modal/client/ModalClientContent.d.ts.map +1 -1
- package/dist/components/modal/client/ModalClientContent.js +2 -2
- package/dist/components/modal/client/ModalClientContent.js.map +1 -1
- package/dist/components/modal/types.d.ts +19 -19
- package/dist/components/modal/types.d.ts.map +1 -1
- package/dist/components/number-field/NumberField.d.ts.map +1 -1
- package/dist/components/number-field/NumberField.js +13 -11
- package/dist/components/number-field/NumberField.js.map +1 -1
- package/dist/components/number-field/types.d.ts +1 -1
- package/dist/components/number-field/types.d.ts.map +1 -1
- package/dist/components/otp-input/OtpInput.d.ts.map +1 -1
- package/dist/components/otp-input/OtpInput.js +9 -9
- package/dist/components/otp-input/OtpInput.js.map +1 -1
- package/dist/components/otp-input/types.d.ts +4 -1
- package/dist/components/otp-input/types.d.ts.map +1 -1
- package/dist/components/pagination/Pagination.d.ts.map +1 -1
- package/dist/components/pagination/Pagination.js +26 -69
- package/dist/components/pagination/Pagination.js.map +1 -1
- package/dist/components/pagination/PaginationShell.d.ts.map +1 -1
- package/dist/components/pagination/PaginationShell.js +5 -6
- package/dist/components/pagination/PaginationShell.js.map +1 -1
- package/dist/components/pagination/types.d.ts +9 -32
- package/dist/components/pagination/types.d.ts.map +1 -1
- package/dist/components/rating/types.d.ts +1 -5
- package/dist/components/rating/types.d.ts.map +1 -1
- package/dist/components/segmented-control/SegmentedControl.d.ts +1 -1
- package/dist/components/segmented-control/SegmentedControl.d.ts.map +1 -1
- package/dist/components/segmented-control/SegmentedControl.js +4 -2
- package/dist/components/segmented-control/SegmentedControl.js.map +1 -1
- package/dist/components/segmented-control/client/SegmentedControlClient.d.ts +1 -1
- package/dist/components/segmented-control/client/SegmentedControlClient.d.ts.map +1 -1
- package/dist/components/segmented-control/client/SegmentedControlClient.js +4 -2
- package/dist/components/segmented-control/client/SegmentedControlClient.js.map +1 -1
- package/dist/components/segmented-control/types.d.ts +3 -0
- package/dist/components/segmented-control/types.d.ts.map +1 -1
- package/dist/components/select/Select.d.ts.map +1 -1
- package/dist/components/select/Select.js +2 -0
- package/dist/components/select/Select.js.map +1 -1
- package/dist/components/select/types.d.ts +3 -0
- package/dist/components/select/types.d.ts.map +1 -1
- package/dist/components/slider/Slider.d.ts.map +1 -1
- package/dist/components/slider/Slider.js +12 -7
- package/dist/components/slider/Slider.js.map +1 -1
- package/dist/components/slider/client/SliderClient.d.ts.map +1 -1
- package/dist/components/slider/client/SliderClient.js +53 -100
- package/dist/components/slider/client/SliderClient.js.map +1 -1
- package/dist/components/slider/types.d.ts +8 -38
- package/dist/components/slider/types.d.ts.map +1 -1
- package/dist/components/spinner/Spinner.d.ts.map +1 -1
- package/dist/components/spinner/Spinner.js +2 -10
- package/dist/components/spinner/Spinner.js.map +1 -1
- package/dist/components/spinner/types.d.ts +3 -6
- package/dist/components/spinner/types.d.ts.map +1 -1
- package/dist/components/table/client/TableColumnHeader.d.ts.map +1 -1
- package/dist/components/table/client/TableColumnHeader.js +1 -15
- package/dist/components/table/client/TableColumnHeader.js.map +1 -1
- package/dist/components/table/types.d.ts +2 -6
- package/dist/components/table/types.d.ts.map +1 -1
- package/dist/components/tabs/Tabs.d.ts.map +1 -1
- package/dist/components/tabs/Tabs.js +9 -43
- package/dist/components/tabs/Tabs.js.map +1 -1
- package/dist/components/tabs/types.d.ts +8 -21
- package/dist/components/tabs/types.d.ts.map +1 -1
- package/dist/components/tags-input/TagsInput.d.ts.map +1 -1
- package/dist/components/tags-input/TagsInput.js +16 -27
- package/dist/components/tags-input/TagsInput.js.map +1 -1
- package/dist/components/tags-input/types.d.ts +8 -23
- package/dist/components/tags-input/types.d.ts.map +1 -1
- package/dist/components/toast/Toast.d.ts.map +1 -1
- package/dist/components/toast/Toast.js +13 -62
- package/dist/components/toast/Toast.js.map +1 -1
- package/dist/components/toast/ToastElements.d.ts.map +1 -1
- package/dist/components/toast/ToastElements.js +20 -57
- package/dist/components/toast/ToastElements.js.map +1 -1
- package/dist/components/toast/types.d.ts +9 -36
- package/dist/components/toast/types.d.ts.map +1 -1
- package/dist/components/toggle/Toggle.d.ts +1 -1
- package/dist/components/toggle/Toggle.d.ts.map +1 -1
- package/dist/components/toggle/Toggle.js +36 -61
- package/dist/components/toggle/Toggle.js.map +1 -1
- package/dist/components/toggle/types.d.ts +5 -24
- package/dist/components/toggle/types.d.ts.map +1 -1
- package/dist/components/tooltip/Tooltip.d.ts.map +1 -1
- package/dist/components/tooltip/Tooltip.js +4 -4
- package/dist/components/tooltip/Tooltip.js.map +1 -1
- package/dist/components/virtual-scroll/VirtualScroll.d.ts.map +1 -1
- package/dist/components/virtual-scroll/VirtualScroll.js +66 -44
- package/dist/components/virtual-scroll/VirtualScroll.js.map +1 -1
- package/dist/components/virtual-scroll/VirtualScrollRowShell.js +2 -2
- package/dist/components/virtual-scroll/VirtualScrollRowShell.js.map +1 -1
- package/dist/components/virtual-scroll/types.d.ts +7 -20
- package/dist/components/virtual-scroll/types.d.ts.map +1 -1
- package/dist/components/virtual-scroll/types.js.map +1 -1
- package/dist/components/virtual-scroll/virtual-scroll-scroll-sync.d.ts +3 -0
- package/dist/components/virtual-scroll/virtual-scroll-scroll-sync.d.ts.map +1 -1
- package/dist/components/virtual-scroll/virtual-scroll-scroll-sync.js +11 -2
- package/dist/components/virtual-scroll/virtual-scroll-scroll-sync.js.map +1 -1
- package/dist/core/class-names.d.ts +3 -0
- package/dist/core/class-names.d.ts.map +1 -0
- package/dist/core/class-names.js +7 -0
- package/dist/core/class-names.js.map +1 -0
- package/dist/core/part-names.d.ts +8 -0
- package/dist/core/part-names.d.ts.map +1 -0
- package/dist/core/part-names.js +111 -0
- package/dist/core/part-names.js.map +1 -0
- package/dist/core/polymorphic.d.ts +10 -3
- package/dist/core/polymorphic.d.ts.map +1 -1
- package/dist/core/render-native-invoker.d.ts +1 -0
- package/dist/core/render-native-invoker.d.ts.map +1 -1
- package/dist/core/render-native-invoker.js +6 -6
- package/dist/core/render-native-invoker.js.map +1 -1
- package/dist/core/roving-focus.d.ts +2 -2
- package/dist/core/roving-focus.d.ts.map +1 -1
- package/dist/core/roving-focus.js +6 -7
- package/dist/core/roving-focus.js.map +1 -1
- package/dist/core/slot-props.d.ts +9 -7
- package/dist/core/slot-props.d.ts.map +1 -1
- package/dist/core/slot-props.js +4 -14
- package/dist/core/slot-props.js.map +1 -1
- package/dist/elements/choice/Choice.d.ts.map +1 -1
- package/dist/elements/choice/Choice.js +5 -42
- package/dist/elements/choice/Choice.js.map +1 -1
- package/dist/elements/choice/types.d.ts +4 -11
- package/dist/elements/choice/types.d.ts.map +1 -1
- package/dist/elements/details/Details.d.ts.map +1 -1
- package/dist/elements/details/Details.js +4 -5
- package/dist/elements/details/Details.js.map +1 -1
- package/dist/elements/details/types.d.ts +3 -3
- package/dist/elements/details/types.d.ts.map +1 -1
- package/dist/elements/dialog/Dialog.d.ts.map +1 -1
- package/dist/elements/dialog/Dialog.js +1 -1
- package/dist/elements/dialog/Dialog.js.map +1 -1
- package/dist/elements/invoker/Invoker.js +3 -3
- package/dist/elements/invoker/Invoker.js.map +1 -1
- package/dist/elements/popover/Popover.d.ts.map +1 -1
- package/dist/elements/popover/Popover.js +3 -3
- package/dist/elements/popover/Popover.js.map +1 -1
- package/dist/elements/popover/types.d.ts +6 -4
- package/dist/elements/popover/types.d.ts.map +1 -1
- package/dist/styles/index.css +1 -1
- package/dist/styles/tailwind.css +2 -2
- package/dist/styles/tokens.css +1 -1
- package/package.json +10 -1
- package/skills/uiify/SKILL.md +14 -10
- package/skills/uiify/references/elements/aspect-ratio.md +1 -1
- package/skills/uiify/references/elements/field.md +1 -1
- package/skills/uiify/references/elements/toggle.md +1 -0
- package/skills/uiify/references/guides/verification.md +13 -2
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { composeEventHandlers } from "@gunkin/uiify/core/compose-event-handlers";
|
|
2
3
|
import { useRenderElement } from "@gunkin/uiify/core/render";
|
|
3
|
-
import { mergeRepeatedSlotProps
|
|
4
|
+
import { mergeRepeatedSlotProps } from "../../core/slot-props.js";
|
|
4
5
|
import { assignRef } from "../../hooks/utils/assign-ref.js";
|
|
5
6
|
import {
|
|
6
7
|
axisLabelsFor,
|
|
@@ -15,21 +16,12 @@ import {
|
|
|
15
16
|
slotCrosshairStyle,
|
|
16
17
|
valueLabelsFor
|
|
17
18
|
} from "./line-chart-geometry.js";
|
|
18
|
-
function
|
|
19
|
-
return omitProps(props, ["children", "dangerouslySetInnerHTML", ...protectedKeys]);
|
|
20
|
-
}
|
|
21
|
-
function getIndexedPartProps(props, index, protectedKeys = []) {
|
|
19
|
+
function getIndexedPartProps(props, index) {
|
|
22
20
|
const { byItemIndex, ...common } = props ?? {};
|
|
23
|
-
|
|
24
|
-
return omitProps(merged, [
|
|
25
|
-
"children",
|
|
26
|
-
"dangerouslySetInnerHTML",
|
|
27
|
-
"byItemIndex",
|
|
28
|
-
...protectedKeys
|
|
29
|
-
]);
|
|
21
|
+
return mergeRepeatedSlotProps(common, byItemIndex?.[index]);
|
|
30
22
|
}
|
|
31
23
|
function withGeneratedStyle(props, generatedStyle) {
|
|
32
|
-
return { ...props, style: { ...props.style
|
|
24
|
+
return { ...props, style: { ...generatedStyle, ...props.style } };
|
|
33
25
|
}
|
|
34
26
|
function forwardPointRef(ref) {
|
|
35
27
|
return (element) => {
|
|
@@ -58,25 +50,10 @@ function LineChartPoint({
|
|
|
58
50
|
slotProps
|
|
59
51
|
}) {
|
|
60
52
|
const geometry = geometryFor(point, previousPoint, index, count, min, max);
|
|
61
|
-
const pointSlotProps = getIndexedPartProps(slotProps?.point, index
|
|
62
|
-
"aria-hidden",
|
|
63
|
-
"data-crosshair-active",
|
|
64
|
-
"data-first",
|
|
65
|
-
"data-part",
|
|
66
|
-
"data-point-selected",
|
|
67
|
-
"data-time",
|
|
68
|
-
"data-trend"
|
|
69
|
-
]);
|
|
53
|
+
const pointSlotProps = getIndexedPartProps(slotProps?.point, index);
|
|
70
54
|
const { ref: pointRef, ...pointProps } = pointSlotProps;
|
|
71
|
-
const pointHitSlotProps = getIndexedPartProps(slotProps?.pointHit, index
|
|
72
|
-
"aria-label",
|
|
73
|
-
"aria-pressed",
|
|
74
|
-
"data-part",
|
|
75
|
-
"type"
|
|
76
|
-
]);
|
|
55
|
+
const pointHitSlotProps = getIndexedPartProps(slotProps?.pointHit, index);
|
|
77
56
|
const handleKeyDown = (event) => {
|
|
78
|
-
pointHitSlotProps.onKeyDown?.(event);
|
|
79
|
-
if (event.defaultPrevented) return;
|
|
80
57
|
if (event.key !== "Enter" && event.key !== " ") return;
|
|
81
58
|
event.preventDefault();
|
|
82
59
|
onPointClick?.(index);
|
|
@@ -84,8 +61,6 @@ function LineChartPoint({
|
|
|
84
61
|
return /* @__PURE__ */ jsx(
|
|
85
62
|
Tag,
|
|
86
63
|
{
|
|
87
|
-
...pointProps,
|
|
88
|
-
...pointRef ? { ref: forwardPointRef(pointRef) } : {},
|
|
89
64
|
"aria-hidden": interactive ? void 0 : true,
|
|
90
65
|
"data-part": "point",
|
|
91
66
|
"data-first": previousPoint === void 0 ? "" : void 0,
|
|
@@ -93,32 +68,30 @@ function LineChartPoint({
|
|
|
93
68
|
"data-point-selected": interactive && isSelected ? "" : void 0,
|
|
94
69
|
"data-time": String(point.time),
|
|
95
70
|
"data-trend": geometry.trend,
|
|
71
|
+
...pointProps,
|
|
72
|
+
...pointRef ? { ref: forwardPointRef(pointRef) } : {},
|
|
96
73
|
style: {
|
|
97
|
-
...
|
|
98
|
-
...
|
|
74
|
+
...pointStyle(geometry, isActive ? cursorY : void 0),
|
|
75
|
+
...pointSlotProps.style
|
|
99
76
|
},
|
|
100
77
|
children: interactive ? /* @__PURE__ */ jsx(
|
|
101
78
|
"button",
|
|
102
79
|
{
|
|
103
|
-
...pointHitSlotProps,
|
|
104
80
|
"data-part": "point-hit",
|
|
105
81
|
type: "button",
|
|
106
82
|
"aria-label": `Point ${String(point.time)}`,
|
|
107
83
|
"aria-pressed": isSelected,
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
if (!event.defaultPrevented)
|
|
120
|
-
onPointPointerMove?.({ index, offsetY: event.nativeEvent.offsetY });
|
|
121
|
-
}
|
|
84
|
+
...pointHitSlotProps,
|
|
85
|
+
onClick: composeEventHandlers(pointHitSlotProps.onClick, () => onPointClick?.(index)),
|
|
86
|
+
onKeyDown: composeEventHandlers(pointHitSlotProps.onKeyDown, handleKeyDown),
|
|
87
|
+
onPointerLeave: composeEventHandlers(
|
|
88
|
+
pointHitSlotProps.onPointerLeave,
|
|
89
|
+
() => onPointPointerLeave?.()
|
|
90
|
+
),
|
|
91
|
+
onPointerMove: composeEventHandlers(
|
|
92
|
+
pointHitSlotProps.onPointerMove,
|
|
93
|
+
(event) => onPointPointerMove?.({ index, offsetY: event.nativeEvent.offsetY })
|
|
94
|
+
)
|
|
122
95
|
}
|
|
123
96
|
) : null
|
|
124
97
|
}
|
|
@@ -132,7 +105,6 @@ function LineChart(props) {
|
|
|
132
105
|
data,
|
|
133
106
|
xAxis,
|
|
134
107
|
yAxis,
|
|
135
|
-
"aria-label": ariaLabel,
|
|
136
108
|
activePointIndex,
|
|
137
109
|
cursorY,
|
|
138
110
|
interactive = false,
|
|
@@ -149,7 +121,7 @@ function LineChart(props) {
|
|
|
149
121
|
...consumerProps
|
|
150
122
|
} = props;
|
|
151
123
|
const { min, max } = getValueBounds(data);
|
|
152
|
-
const label =
|
|
124
|
+
const label = consumerProps["aria-label"] ?? "Line chart";
|
|
153
125
|
const timeLabels = axisLabelsFor(xAxis, monthLabelsFor(data, locale));
|
|
154
126
|
const valueLabels = axisLabelsFor(yAxis, valueLabelsFor(min, max, locale));
|
|
155
127
|
const readoutIndex = activePointIndex ?? selectedPointIndex ?? (data.length > 0 ? data.length - 1 : void 0);
|
|
@@ -158,10 +130,10 @@ function LineChart(props) {
|
|
|
158
130
|
const points = pointLayer ?? /* @__PURE__ */ jsx(
|
|
159
131
|
"ol",
|
|
160
132
|
{
|
|
161
|
-
...getPartProps(slotProps?.points, ["aria-label", "data-part"]),
|
|
162
133
|
"data-part": "points",
|
|
163
134
|
"aria-label": `${label} points`,
|
|
164
|
-
|
|
135
|
+
...slotProps?.points,
|
|
136
|
+
style: { ...pointsStyle(data.length), ...slotProps?.points?.style },
|
|
165
137
|
children: data.map((point, index) => /* @__PURE__ */ jsx(
|
|
166
138
|
LineChartPoint,
|
|
167
139
|
{
|
|
@@ -190,179 +162,133 @@ function LineChart(props) {
|
|
|
190
162
|
as,
|
|
191
163
|
defaultTag: "figure",
|
|
192
164
|
props: {
|
|
193
|
-
...consumerProps,
|
|
194
165
|
"aria-label": label,
|
|
195
166
|
"data-uiify-line-chart": "",
|
|
196
167
|
"data-interactive": interactive ? "" : void 0,
|
|
168
|
+
...consumerProps,
|
|
197
169
|
children: /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
198
|
-
/* @__PURE__ */ jsx("figcaption", { ...
|
|
170
|
+
/* @__PURE__ */ jsx("figcaption", { ...slotProps?.caption, children: label }),
|
|
199
171
|
interactive && readoutPoint ? /* @__PURE__ */ jsxs(
|
|
200
172
|
"div",
|
|
201
173
|
{
|
|
202
|
-
...getPartProps(slotProps?.readout, ["aria-live", "data-part"]),
|
|
203
174
|
"data-part": "readout",
|
|
204
175
|
"aria-live": announceReadout ? "polite" : "off",
|
|
176
|
+
...slotProps?.readout,
|
|
205
177
|
children: [
|
|
206
|
-
/* @__PURE__ */ jsx(
|
|
207
|
-
|
|
208
|
-
{
|
|
209
|
-
...getPartProps(slotProps?.readoutTime, ["data-part"]),
|
|
210
|
-
"data-part": "readout-time",
|
|
211
|
-
children: String(readoutPoint.time)
|
|
212
|
-
}
|
|
213
|
-
),
|
|
214
|
-
/* @__PURE__ */ jsx("span", { ...getPartProps(slotProps?.readoutValue), children: readoutPoint.value })
|
|
178
|
+
/* @__PURE__ */ jsx("span", { "data-part": "readout-time", ...slotProps?.readoutTime, children: String(readoutPoint.time) }),
|
|
179
|
+
/* @__PURE__ */ jsx("span", { ...slotProps?.readoutValue, children: readoutPoint.value })
|
|
215
180
|
]
|
|
216
181
|
}
|
|
217
182
|
) : null,
|
|
218
|
-
/* @__PURE__ */ jsxs(
|
|
219
|
-
"div",
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
"aria-hidden": interactive ? void 0 : true,
|
|
224
|
-
children: [
|
|
225
|
-
/* @__PURE__ */ jsx(
|
|
183
|
+
/* @__PURE__ */ jsxs("div", { "data-part": "plot", "aria-hidden": interactive ? void 0 : true, ...slotProps?.plot, children: [
|
|
184
|
+
/* @__PURE__ */ jsx("div", { "data-part": "scroll-viewport", ...slotProps?.scrollViewport, children: /* @__PURE__ */ jsxs("div", { "data-part": "canvas", ...slotProps?.canvas, children: [
|
|
185
|
+
/* @__PURE__ */ jsxs("div", { "data-part": "viewport", ...slotProps?.viewport, children: [
|
|
186
|
+
points,
|
|
187
|
+
interactive && crosshairPoint && activePointIndex !== void 0 ? /* @__PURE__ */ jsx(
|
|
226
188
|
"div",
|
|
227
189
|
{
|
|
228
|
-
|
|
229
|
-
"
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
...getPartProps(slotProps?.crosshair, ["aria-hidden", "data-part"]),
|
|
237
|
-
"data-part": "crosshair",
|
|
238
|
-
"aria-hidden": "true",
|
|
239
|
-
style: {
|
|
240
|
-
...slotProps?.crosshair?.style,
|
|
241
|
-
...crosshairFor(activePointIndex, cursorY)
|
|
242
|
-
},
|
|
243
|
-
children: /* @__PURE__ */ jsx(
|
|
244
|
-
"span",
|
|
245
|
-
{
|
|
246
|
-
...getPartProps(slotProps?.crosshairMarker, ["data-part"]),
|
|
247
|
-
"data-part": "crosshair-marker",
|
|
248
|
-
children: "+"
|
|
249
|
-
}
|
|
250
|
-
)
|
|
251
|
-
}
|
|
252
|
-
) : null
|
|
253
|
-
] }),
|
|
254
|
-
/* @__PURE__ */ jsx(
|
|
255
|
-
"div",
|
|
256
|
-
{
|
|
257
|
-
...getPartProps(slotProps?.timeViewport, ["data-part"]),
|
|
258
|
-
"data-part": "time-viewport",
|
|
259
|
-
children: /* @__PURE__ */ jsxs(
|
|
260
|
-
"ol",
|
|
261
|
-
{
|
|
262
|
-
...getPartProps(slotProps?.timeAxis, ["aria-label", "data-axis", "data-part"]),
|
|
263
|
-
"data-part": "time-axis",
|
|
264
|
-
"data-axis": "time",
|
|
265
|
-
"aria-label": `${label} dates`,
|
|
266
|
-
children: [
|
|
267
|
-
timeLabels.map((axisLabel, index) => /* @__PURE__ */ jsx(
|
|
268
|
-
"li",
|
|
269
|
-
{
|
|
270
|
-
...withGeneratedStyle(
|
|
271
|
-
getIndexedPartProps(slotProps?.timeAxisLabel, index, ["data-part"]),
|
|
272
|
-
axisStyle("x", axisLabel.position)
|
|
273
|
-
),
|
|
274
|
-
children: axisLabel.label
|
|
275
|
-
},
|
|
276
|
-
`${axisLabel.position}-${index}`
|
|
277
|
-
)),
|
|
278
|
-
interactive && crosshairPoint && activePointIndex !== void 0 ? /* @__PURE__ */ jsx(
|
|
279
|
-
"li",
|
|
280
|
-
{
|
|
281
|
-
...getPartProps(slotProps?.crosshairTime, ["data-part"]),
|
|
282
|
-
"data-part": "crosshair-time",
|
|
283
|
-
style: {
|
|
284
|
-
...slotProps?.crosshairTime?.style,
|
|
285
|
-
...crosshairFor(activePointIndex, void 0)
|
|
286
|
-
},
|
|
287
|
-
children: String(crosshairPoint.time)
|
|
288
|
-
}
|
|
289
|
-
) : null
|
|
290
|
-
]
|
|
291
|
-
}
|
|
292
|
-
)
|
|
293
|
-
}
|
|
294
|
-
)
|
|
295
|
-
] })
|
|
190
|
+
"data-part": "crosshair",
|
|
191
|
+
"aria-hidden": "true",
|
|
192
|
+
...slotProps?.crosshair,
|
|
193
|
+
style: {
|
|
194
|
+
...crosshairFor(activePointIndex, cursorY),
|
|
195
|
+
...slotProps?.crosshair?.style
|
|
196
|
+
},
|
|
197
|
+
children: /* @__PURE__ */ jsx("span", { "data-part": "crosshair-marker", ...slotProps?.crosshairMarker, children: "+" })
|
|
296
198
|
}
|
|
297
|
-
)
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
)
|
|
313
|
-
|
|
199
|
+
) : null
|
|
200
|
+
] }),
|
|
201
|
+
/* @__PURE__ */ jsx("div", { "data-part": "time-viewport", ...slotProps?.timeViewport, children: /* @__PURE__ */ jsxs(
|
|
202
|
+
"ol",
|
|
203
|
+
{
|
|
204
|
+
"data-part": "time-axis",
|
|
205
|
+
"data-axis": "time",
|
|
206
|
+
"aria-label": `${label} dates`,
|
|
207
|
+
...slotProps?.timeAxis,
|
|
208
|
+
children: [
|
|
209
|
+
timeLabels.map((axisLabel, index) => /* @__PURE__ */ jsx(
|
|
210
|
+
"li",
|
|
211
|
+
{
|
|
212
|
+
...withGeneratedStyle(
|
|
213
|
+
getIndexedPartProps(slotProps?.timeAxisLabel, index),
|
|
214
|
+
axisStyle("x", axisLabel.position)
|
|
215
|
+
),
|
|
216
|
+
children: axisLabel.label
|
|
217
|
+
},
|
|
218
|
+
`${axisLabel.position}-${index}`
|
|
219
|
+
)),
|
|
220
|
+
interactive && crosshairPoint && activePointIndex !== void 0 ? /* @__PURE__ */ jsx(
|
|
221
|
+
"li",
|
|
222
|
+
{
|
|
223
|
+
"data-part": "crosshair-time",
|
|
224
|
+
...slotProps?.crosshairTime,
|
|
225
|
+
style: {
|
|
226
|
+
...crosshairFor(activePointIndex, void 0),
|
|
227
|
+
...slotProps?.crosshairTime?.style
|
|
314
228
|
},
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
"data-part": "data",
|
|
337
|
-
"aria-label": `${label} data`,
|
|
338
|
-
children: [
|
|
339
|
-
/* @__PURE__ */ jsx("thead", { ...getPartProps(slotProps?.dataTableHead), children: /* @__PURE__ */ jsxs("tr", { ...getPartProps(slotProps?.dataTableHeaderRow), children: [
|
|
340
|
-
/* @__PURE__ */ jsx("th", { ...getPartProps(slotProps?.dataTableTimeHeader, ["scope"]), scope: "col", children: "Time" }),
|
|
341
|
-
/* @__PURE__ */ jsx("th", { ...getPartProps(slotProps?.dataTableValueHeader, ["scope"]), scope: "col", children: "Value" })
|
|
342
|
-
] }) }),
|
|
343
|
-
/* @__PURE__ */ jsx("tbody", { ...getPartProps(slotProps?.dataTableBody), children: data.map((point, index) => /* @__PURE__ */ jsxs(
|
|
344
|
-
"tr",
|
|
345
|
-
{
|
|
346
|
-
...getIndexedPartProps(slotProps?.dataTableRow, slotOffset + index),
|
|
347
|
-
children: [
|
|
348
|
-
/* @__PURE__ */ jsx(
|
|
349
|
-
"th",
|
|
350
|
-
{
|
|
351
|
-
...getIndexedPartProps(slotProps?.dataTableTimeCell, slotOffset + index, [
|
|
352
|
-
"scope"
|
|
353
|
-
]),
|
|
354
|
-
scope: "row",
|
|
355
|
-
children: String(point.time)
|
|
356
|
-
}
|
|
229
|
+
children: String(crosshairPoint.time)
|
|
230
|
+
}
|
|
231
|
+
) : null
|
|
232
|
+
]
|
|
233
|
+
}
|
|
234
|
+
) })
|
|
235
|
+
] }) }),
|
|
236
|
+
/* @__PURE__ */ jsxs(
|
|
237
|
+
"ol",
|
|
238
|
+
{
|
|
239
|
+
"data-part": "value-axis",
|
|
240
|
+
"data-axis": "value",
|
|
241
|
+
"aria-label": `${label} values`,
|
|
242
|
+
...slotProps?.valueAxis,
|
|
243
|
+
children: [
|
|
244
|
+
valueLabels.map((axisLabel, index) => /* @__PURE__ */ jsx(
|
|
245
|
+
"li",
|
|
246
|
+
{
|
|
247
|
+
...withGeneratedStyle(
|
|
248
|
+
getIndexedPartProps(slotProps?.valueAxisLabel, index),
|
|
249
|
+
axisStyle("y", axisLabel.position)
|
|
357
250
|
),
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
251
|
+
children: axisLabel.label
|
|
252
|
+
},
|
|
253
|
+
`${axisLabel.position}-${index}`
|
|
254
|
+
)),
|
|
255
|
+
interactive && crosshairPoint && activePointIndex !== void 0 ? /* @__PURE__ */ jsx(
|
|
256
|
+
"li",
|
|
257
|
+
{
|
|
258
|
+
"data-part": "crosshair-value",
|
|
259
|
+
...slotProps?.crosshairValue,
|
|
260
|
+
style: { ...cursorStyle(cursorY), ...slotProps?.crosshairValue?.style },
|
|
261
|
+
children: crosshairPoint.value
|
|
262
|
+
}
|
|
263
|
+
) : null
|
|
264
|
+
]
|
|
265
|
+
}
|
|
266
|
+
)
|
|
267
|
+
] }),
|
|
268
|
+
/* @__PURE__ */ jsxs("table", { "data-part": "data", "aria-label": `${label} data`, ...slotProps?.dataTable, children: [
|
|
269
|
+
/* @__PURE__ */ jsx("thead", { ...slotProps?.dataTableHead, children: /* @__PURE__ */ jsxs("tr", { ...slotProps?.dataTableHeaderRow, children: [
|
|
270
|
+
/* @__PURE__ */ jsx("th", { scope: "col", ...slotProps?.dataTableTimeHeader, children: "Time" }),
|
|
271
|
+
/* @__PURE__ */ jsx("th", { scope: "col", ...slotProps?.dataTableValueHeader, children: "Value" })
|
|
272
|
+
] }) }),
|
|
273
|
+
/* @__PURE__ */ jsx("tbody", { ...slotProps?.dataTableBody, children: data.map((point, index) => /* @__PURE__ */ jsxs(
|
|
274
|
+
"tr",
|
|
275
|
+
{
|
|
276
|
+
...getIndexedPartProps(slotProps?.dataTableRow, slotOffset + index),
|
|
277
|
+
children: [
|
|
278
|
+
/* @__PURE__ */ jsx(
|
|
279
|
+
"th",
|
|
280
|
+
{
|
|
281
|
+
scope: "row",
|
|
282
|
+
...getIndexedPartProps(slotProps?.dataTableTimeCell, slotOffset + index),
|
|
283
|
+
children: String(point.time)
|
|
284
|
+
}
|
|
285
|
+
),
|
|
286
|
+
/* @__PURE__ */ jsx("td", { ...getIndexedPartProps(slotProps?.dataTableValueCell, slotOffset + index), children: point.value })
|
|
287
|
+
]
|
|
288
|
+
},
|
|
289
|
+
`${point.time}-${index}`
|
|
290
|
+
)) })
|
|
291
|
+
] })
|
|
366
292
|
] })
|
|
367
293
|
},
|
|
368
294
|
render,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/line-chart/LineChart.tsx"],"sourcesContent":["import type { ElementType, KeyboardEvent, PointerEvent, ReactElement, Ref } from \"react\";\nimport { useRenderElement } from \"@gunkin/uiify/core/render\";\nimport { mergeRepeatedSlotProps, omitProps } from \"../../core/slot-props.js\";\nimport { assignRef } from \"../../hooks/utils/assign-ref.js\";\nimport {\n axisLabelsFor,\n axisStyle,\n crosshairStyle,\n cursorStyle,\n geometryFor,\n getValueBounds,\n monthLabelsFor,\n pointStyle,\n pointsStyle,\n slotCrosshairStyle,\n valueLabelsFor,\n} from \"./line-chart-geometry.js\";\nimport type { LineChartPointProps, LineChartProps, LineChartViewProps } from \"./types.js\";\n\nfunction getPartProps<T extends object>(\n props: T | undefined,\n protectedKeys: readonly string[] = [],\n): T {\n return omitProps(props, [\"children\", \"dangerouslySetInnerHTML\", ...protectedKeys]);\n}\n\nfunction getIndexedPartProps<T extends object>(\n props: (T & { readonly byItemIndex?: Readonly<Record<number, T>> }) | undefined,\n index: number,\n protectedKeys: readonly string[] = [],\n): T {\n const { byItemIndex, ...common } = props ?? {};\n const merged = mergeRepeatedSlotProps(common as T, byItemIndex?.[index]);\n return omitProps(merged, [\n \"children\",\n \"dangerouslySetInnerHTML\",\n \"byItemIndex\",\n ...protectedKeys,\n ]);\n}\n\nfunction withGeneratedStyle<T extends { readonly style?: object | undefined }>(\n props: T,\n generatedStyle: object,\n): T {\n return { ...props, style: { ...props.style, ...generatedStyle } };\n}\n\nfunction forwardPointRef(ref: Ref<HTMLElement> | undefined) {\n return (element: HTMLLIElement | HTMLDivElement | null): void | (() => void) => {\n const cleanup = assignRef(ref, element);\n if (typeof cleanup === \"function\") return cleanup;\n if (ref && typeof ref !== \"function\" && element !== null) {\n return () => assignRef(ref, null);\n }\n };\n}\n\n/** One point and the segment from its predecessor; shared by the static list and virtual rows. */\nexport function LineChartPoint({\n as: Tag,\n point,\n previousPoint,\n index,\n count,\n min,\n max,\n interactive,\n isActive,\n isSelected,\n cursorY,\n onPointClick,\n onPointPointerLeave,\n onPointPointerMove,\n slotProps,\n}: LineChartPointProps): ReactElement {\n const geometry = geometryFor(point, previousPoint, index, count, min, max);\n const pointSlotProps = getIndexedPartProps(slotProps?.point, index, [\n \"aria-hidden\",\n \"data-crosshair-active\",\n \"data-first\",\n \"data-part\",\n \"data-point-selected\",\n \"data-time\",\n \"data-trend\",\n ]);\n const { ref: pointRef, ...pointProps } = pointSlotProps;\n const pointHitSlotProps = getIndexedPartProps(slotProps?.pointHit, index, [\n \"aria-label\",\n \"aria-pressed\",\n \"data-part\",\n \"type\",\n ]);\n const handleKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n pointHitSlotProps.onKeyDown?.(event);\n if (event.defaultPrevented) return;\n if (event.key !== \"Enter\" && event.key !== \" \") return;\n event.preventDefault();\n onPointClick?.(index);\n };\n\n return (\n <Tag\n {...pointProps}\n {...(pointRef ? { ref: forwardPointRef(pointRef) } : {})}\n aria-hidden={interactive ? undefined : true}\n data-part=\"point\"\n data-first={previousPoint === undefined ? \"\" : undefined}\n data-crosshair-active={interactive && isActive ? \"\" : undefined}\n data-point-selected={interactive && isSelected ? \"\" : undefined}\n data-time={String(point.time)}\n data-trend={geometry.trend}\n style={{\n ...pointSlotProps.style,\n ...pointStyle(geometry, isActive ? cursorY : undefined),\n }}\n >\n {interactive ? (\n <button\n {...pointHitSlotProps}\n data-part=\"point-hit\"\n type=\"button\"\n aria-label={`Point ${String(point.time)}`}\n aria-pressed={isSelected}\n onClick={(event) => {\n pointHitSlotProps.onClick?.(event);\n if (!event.defaultPrevented) onPointClick?.(index);\n }}\n onKeyDown={handleKeyDown}\n onPointerLeave={(event) => {\n pointHitSlotProps.onPointerLeave?.(event);\n if (!event.defaultPrevented) onPointPointerLeave?.();\n }}\n onPointerMove={(event: PointerEvent<HTMLButtonElement>) => {\n pointHitSlotProps.onPointerMove?.(event);\n if (!event.defaultPrevented)\n onPointPointerMove?.({ index, offsetY: event.nativeEvent.offsetY });\n }}\n />\n ) : null}\n </Tag>\n );\n}\nLineChartPoint.displayName = \"LineChartPoint\";\n\nexport function LineChart<TAs extends ElementType = \"figure\">(\n props: LineChartProps<TAs>,\n): ReactElement | null {\n const {\n as,\n render,\n data,\n xAxis,\n yAxis,\n \"aria-label\": ariaLabel,\n activePointIndex,\n cursorY,\n interactive = false,\n locale = \"en-US\",\n onPointClick,\n onPointPointerLeave,\n onPointPointerMove,\n selectedPointIndex,\n slotProps,\n pointLayer,\n announceReadout = true,\n slotCount,\n slotOffset = 0,\n ...consumerProps\n } = props as LineChartProps<\"figure\"> & LineChartViewProps;\n const { min, max } = getValueBounds(data);\n const label = ariaLabel ?? \"Line chart\";\n const timeLabels = axisLabelsFor(xAxis, monthLabelsFor(data, locale));\n const valueLabels = axisLabelsFor(yAxis, valueLabelsFor(min, max, locale));\n const readoutIndex =\n activePointIndex ?? selectedPointIndex ?? (data.length > 0 ? data.length - 1 : undefined);\n const readoutPoint = readoutIndex === undefined ? undefined : data[readoutIndex];\n const crosshairPoint = activePointIndex === undefined ? undefined : data[activePointIndex];\n const points = pointLayer ?? (\n <ol\n {...getPartProps(slotProps?.points, [\"aria-label\", \"data-part\"])}\n data-part=\"points\"\n aria-label={`${label} points`}\n style={{ ...slotProps?.points?.style, ...pointsStyle(data.length) }}\n >\n {data.map((point, index) => (\n <LineChartPoint\n key={`${point.time}-${index}`}\n as=\"li\"\n point={point}\n previousPoint={data[index - 1]}\n index={index}\n count={data.length}\n min={min}\n max={max}\n interactive={interactive}\n isActive={activePointIndex === index}\n isSelected={selectedPointIndex === index}\n cursorY={cursorY}\n onPointClick={onPointClick}\n onPointPointerLeave={onPointPointerLeave}\n onPointPointerMove={onPointPointerMove}\n slotProps={slotProps}\n />\n ))}\n </ol>\n );\n const crosshairFor = (index: number, y: number | undefined) =>\n slotCount === undefined\n ? crosshairStyle(index, data.length, y)\n : slotCrosshairStyle(slotOffset + index, slotCount, y);\n\n return useRenderElement({\n as,\n defaultTag: \"figure\",\n props: {\n ...consumerProps,\n \"aria-label\": label,\n \"data-uiify-line-chart\": \"\",\n \"data-interactive\": interactive ? \"\" : undefined,\n children: (\n <>\n <figcaption {...getPartProps(slotProps?.caption)}>{label}</figcaption>\n {interactive && readoutPoint ? (\n <div\n {...getPartProps(slotProps?.readout, [\"aria-live\", \"data-part\"])}\n data-part=\"readout\"\n aria-live={announceReadout ? \"polite\" : \"off\"}\n >\n <span\n {...getPartProps(slotProps?.readoutTime, [\"data-part\"])}\n data-part=\"readout-time\"\n >\n {String(readoutPoint.time)}\n </span>\n <span {...getPartProps(slotProps?.readoutValue)}>{readoutPoint.value}</span>\n </div>\n ) : null}\n <div\n {...getPartProps(slotProps?.plot, [\"aria-hidden\", \"data-part\"])}\n data-part=\"plot\"\n aria-hidden={interactive ? undefined : true}\n >\n <div\n {...getPartProps(slotProps?.scrollViewport, [\"data-part\"])}\n data-part=\"scroll-viewport\"\n >\n <div {...getPartProps(slotProps?.canvas, [\"data-part\"])} data-part=\"canvas\">\n <div {...getPartProps(slotProps?.viewport, [\"data-part\"])} data-part=\"viewport\">\n {points}\n {interactive && crosshairPoint && activePointIndex !== undefined ? (\n <div\n {...getPartProps(slotProps?.crosshair, [\"aria-hidden\", \"data-part\"])}\n data-part=\"crosshair\"\n aria-hidden=\"true\"\n style={{\n ...slotProps?.crosshair?.style,\n ...crosshairFor(activePointIndex, cursorY),\n }}\n >\n <span\n {...getPartProps(slotProps?.crosshairMarker, [\"data-part\"])}\n data-part=\"crosshair-marker\"\n >\n +\n </span>\n </div>\n ) : null}\n </div>\n <div\n {...getPartProps(slotProps?.timeViewport, [\"data-part\"])}\n data-part=\"time-viewport\"\n >\n <ol\n {...getPartProps(slotProps?.timeAxis, [\"aria-label\", \"data-axis\", \"data-part\"])}\n data-part=\"time-axis\"\n data-axis=\"time\"\n aria-label={`${label} dates`}\n >\n {timeLabels.map((axisLabel, index) => (\n <li\n key={`${axisLabel.position}-${index}`}\n {...withGeneratedStyle(\n getIndexedPartProps(slotProps?.timeAxisLabel, index, [\"data-part\"]),\n axisStyle(\"x\", axisLabel.position),\n )}\n >\n {axisLabel.label}\n </li>\n ))}\n {interactive && crosshairPoint && activePointIndex !== undefined ? (\n <li\n {...getPartProps(slotProps?.crosshairTime, [\"data-part\"])}\n data-part=\"crosshair-time\"\n style={{\n ...slotProps?.crosshairTime?.style,\n ...crosshairFor(activePointIndex, undefined),\n }}\n >\n {String(crosshairPoint.time)}\n </li>\n ) : null}\n </ol>\n </div>\n </div>\n </div>\n <ol\n {...getPartProps(slotProps?.valueAxis, [\"aria-label\", \"data-axis\", \"data-part\"])}\n data-part=\"value-axis\"\n data-axis=\"value\"\n aria-label={`${label} values`}\n >\n {valueLabels.map((axisLabel, index) => (\n <li\n key={`${axisLabel.position}-${index}`}\n {...withGeneratedStyle(\n getIndexedPartProps(slotProps?.valueAxisLabel, index, [\"data-part\"]),\n axisStyle(\"y\", axisLabel.position),\n )}\n >\n {axisLabel.label}\n </li>\n ))}\n {interactive && crosshairPoint && activePointIndex !== undefined ? (\n <li\n {...getPartProps(slotProps?.crosshairValue, [\"data-part\"])}\n data-part=\"crosshair-value\"\n style={{ ...slotProps?.crosshairValue?.style, ...cursorStyle(cursorY) }}\n >\n {crosshairPoint.value}\n </li>\n ) : null}\n </ol>\n </div>\n <table\n {...getPartProps(slotProps?.dataTable, [\"aria-label\", \"data-part\"])}\n data-part=\"data\"\n aria-label={`${label} data`}\n >\n <thead {...getPartProps(slotProps?.dataTableHead)}>\n <tr {...getPartProps(slotProps?.dataTableHeaderRow)}>\n <th {...getPartProps(slotProps?.dataTableTimeHeader, [\"scope\"])} scope=\"col\">\n Time\n </th>\n <th {...getPartProps(slotProps?.dataTableValueHeader, [\"scope\"])} scope=\"col\">\n Value\n </th>\n </tr>\n </thead>\n <tbody {...getPartProps(slotProps?.dataTableBody)}>\n {data.map((point, index) => (\n <tr\n key={`${point.time}-${index}`}\n {...getIndexedPartProps(slotProps?.dataTableRow, slotOffset + index)}\n >\n <th\n {...getIndexedPartProps(slotProps?.dataTableTimeCell, slotOffset + index, [\n \"scope\",\n ])}\n scope=\"row\"\n >\n {String(point.time)}\n </th>\n <td {...getIndexedPartProps(slotProps?.dataTableValueCell, slotOffset + index)}>\n {point.value}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </>\n ),\n },\n render,\n state: {},\n });\n}\nLineChart.displayName = \"LineChart\";\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/line-chart/LineChart.tsx"],"sourcesContent":["import type { ElementType, KeyboardEvent, PointerEvent, ReactElement, Ref } from \"react\";\nimport { composeEventHandlers } from \"@gunkin/uiify/core/compose-event-handlers\";\nimport { useRenderElement } from \"@gunkin/uiify/core/render\";\nimport { mergeRepeatedSlotProps } from \"../../core/slot-props.js\";\nimport { assignRef } from \"../../hooks/utils/assign-ref.js\";\nimport {\n axisLabelsFor,\n axisStyle,\n crosshairStyle,\n cursorStyle,\n geometryFor,\n getValueBounds,\n monthLabelsFor,\n pointStyle,\n pointsStyle,\n slotCrosshairStyle,\n valueLabelsFor,\n} from \"./line-chart-geometry.js\";\nimport type { LineChartPointProps, LineChartProps, LineChartViewProps } from \"./types.js\";\n\nfunction getIndexedPartProps<T extends object>(\n props: (T & { readonly byItemIndex?: Readonly<Record<number, T>> }) | undefined,\n index: number,\n): T {\n const { byItemIndex, ...common } = props ?? {};\n return mergeRepeatedSlotProps(common as T, byItemIndex?.[index]);\n}\n\nfunction withGeneratedStyle<T extends { readonly style?: object | undefined }>(\n props: T,\n generatedStyle: object,\n): T {\n return { ...props, style: { ...generatedStyle, ...props.style } };\n}\n\nfunction forwardPointRef(ref: Ref<HTMLElement> | undefined) {\n return (element: HTMLLIElement | HTMLDivElement | null): void | (() => void) => {\n const cleanup = assignRef(ref, element);\n if (typeof cleanup === \"function\") return cleanup;\n if (ref && typeof ref !== \"function\" && element !== null) {\n return () => assignRef(ref, null);\n }\n };\n}\n\n/** One point and the segment from its predecessor; shared by the static list and virtual rows. */\nexport function LineChartPoint({\n as: Tag,\n point,\n previousPoint,\n index,\n count,\n min,\n max,\n interactive,\n isActive,\n isSelected,\n cursorY,\n onPointClick,\n onPointPointerLeave,\n onPointPointerMove,\n slotProps,\n}: LineChartPointProps): ReactElement {\n const geometry = geometryFor(point, previousPoint, index, count, min, max);\n const pointSlotProps = getIndexedPartProps(slotProps?.point, index);\n const { ref: pointRef, ...pointProps } = pointSlotProps;\n const pointHitSlotProps = getIndexedPartProps(slotProps?.pointHit, index);\n const handleKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n if (event.key !== \"Enter\" && event.key !== \" \") return;\n event.preventDefault();\n onPointClick?.(index);\n };\n\n return (\n <Tag\n aria-hidden={interactive ? undefined : true}\n data-part=\"point\"\n data-first={previousPoint === undefined ? \"\" : undefined}\n data-crosshair-active={interactive && isActive ? \"\" : undefined}\n data-point-selected={interactive && isSelected ? \"\" : undefined}\n data-time={String(point.time)}\n data-trend={geometry.trend}\n {...pointProps}\n {...(pointRef ? { ref: forwardPointRef(pointRef) } : {})}\n style={{\n ...pointStyle(geometry, isActive ? cursorY : undefined),\n ...pointSlotProps.style,\n }}\n >\n {interactive ? (\n <button\n data-part=\"point-hit\"\n type=\"button\"\n aria-label={`Point ${String(point.time)}`}\n aria-pressed={isSelected}\n {...pointHitSlotProps}\n onClick={composeEventHandlers(pointHitSlotProps.onClick, () => onPointClick?.(index))}\n onKeyDown={composeEventHandlers(pointHitSlotProps.onKeyDown, handleKeyDown)}\n onPointerLeave={composeEventHandlers(pointHitSlotProps.onPointerLeave, () =>\n onPointPointerLeave?.(),\n )}\n onPointerMove={composeEventHandlers(\n pointHitSlotProps.onPointerMove,\n (event: PointerEvent<HTMLButtonElement>) =>\n onPointPointerMove?.({ index, offsetY: event.nativeEvent.offsetY }),\n )}\n />\n ) : null}\n </Tag>\n );\n}\nLineChartPoint.displayName = \"LineChartPoint\";\n\nexport function LineChart<TAs extends ElementType = \"figure\">(\n props: LineChartProps<TAs>,\n): ReactElement | null {\n const {\n as,\n render,\n data,\n xAxis,\n yAxis,\n activePointIndex,\n cursorY,\n interactive = false,\n locale = \"en-US\",\n onPointClick,\n onPointPointerLeave,\n onPointPointerMove,\n selectedPointIndex,\n slotProps,\n pointLayer,\n announceReadout = true,\n slotCount,\n slotOffset = 0,\n ...consumerProps\n } = props as LineChartProps<\"figure\"> & LineChartViewProps;\n const { min, max } = getValueBounds(data);\n const label = consumerProps[\"aria-label\"] ?? \"Line chart\";\n const timeLabels = axisLabelsFor(xAxis, monthLabelsFor(data, locale));\n const valueLabels = axisLabelsFor(yAxis, valueLabelsFor(min, max, locale));\n const readoutIndex =\n activePointIndex ?? selectedPointIndex ?? (data.length > 0 ? data.length - 1 : undefined);\n const readoutPoint = readoutIndex === undefined ? undefined : data[readoutIndex];\n const crosshairPoint = activePointIndex === undefined ? undefined : data[activePointIndex];\n const points = pointLayer ?? (\n <ol\n data-part=\"points\"\n aria-label={`${label} points`}\n {...slotProps?.points}\n style={{ ...pointsStyle(data.length), ...slotProps?.points?.style }}\n >\n {data.map((point, index) => (\n <LineChartPoint\n key={`${point.time}-${index}`}\n as=\"li\"\n point={point}\n previousPoint={data[index - 1]}\n index={index}\n count={data.length}\n min={min}\n max={max}\n interactive={interactive}\n isActive={activePointIndex === index}\n isSelected={selectedPointIndex === index}\n cursorY={cursorY}\n onPointClick={onPointClick}\n onPointPointerLeave={onPointPointerLeave}\n onPointPointerMove={onPointPointerMove}\n slotProps={slotProps}\n />\n ))}\n </ol>\n );\n const crosshairFor = (index: number, y: number | undefined) =>\n slotCount === undefined\n ? crosshairStyle(index, data.length, y)\n : slotCrosshairStyle(slotOffset + index, slotCount, y);\n\n return useRenderElement({\n as,\n defaultTag: \"figure\",\n props: {\n \"aria-label\": label,\n \"data-uiify-line-chart\": \"\",\n \"data-interactive\": interactive ? \"\" : undefined,\n ...consumerProps,\n children: (\n <>\n <figcaption {...slotProps?.caption}>{label}</figcaption>\n {interactive && readoutPoint ? (\n <div\n data-part=\"readout\"\n aria-live={announceReadout ? \"polite\" : \"off\"}\n {...slotProps?.readout}\n >\n <span data-part=\"readout-time\" {...slotProps?.readoutTime}>\n {String(readoutPoint.time)}\n </span>\n <span {...slotProps?.readoutValue}>{readoutPoint.value}</span>\n </div>\n ) : null}\n <div data-part=\"plot\" aria-hidden={interactive ? undefined : true} {...slotProps?.plot}>\n <div data-part=\"scroll-viewport\" {...slotProps?.scrollViewport}>\n <div data-part=\"canvas\" {...slotProps?.canvas}>\n <div data-part=\"viewport\" {...slotProps?.viewport}>\n {points}\n {interactive && crosshairPoint && activePointIndex !== undefined ? (\n <div\n data-part=\"crosshair\"\n aria-hidden=\"true\"\n {...slotProps?.crosshair}\n style={{\n ...crosshairFor(activePointIndex, cursorY),\n ...slotProps?.crosshair?.style,\n }}\n >\n <span data-part=\"crosshair-marker\" {...slotProps?.crosshairMarker}>\n +\n </span>\n </div>\n ) : null}\n </div>\n <div data-part=\"time-viewport\" {...slotProps?.timeViewport}>\n <ol\n data-part=\"time-axis\"\n data-axis=\"time\"\n aria-label={`${label} dates`}\n {...slotProps?.timeAxis}\n >\n {timeLabels.map((axisLabel, index) => (\n <li\n key={`${axisLabel.position}-${index}`}\n {...withGeneratedStyle(\n getIndexedPartProps(slotProps?.timeAxisLabel, index),\n axisStyle(\"x\", axisLabel.position),\n )}\n >\n {axisLabel.label}\n </li>\n ))}\n {interactive && crosshairPoint && activePointIndex !== undefined ? (\n <li\n data-part=\"crosshair-time\"\n {...slotProps?.crosshairTime}\n style={{\n ...crosshairFor(activePointIndex, undefined),\n ...slotProps?.crosshairTime?.style,\n }}\n >\n {String(crosshairPoint.time)}\n </li>\n ) : null}\n </ol>\n </div>\n </div>\n </div>\n <ol\n data-part=\"value-axis\"\n data-axis=\"value\"\n aria-label={`${label} values`}\n {...slotProps?.valueAxis}\n >\n {valueLabels.map((axisLabel, index) => (\n <li\n key={`${axisLabel.position}-${index}`}\n {...withGeneratedStyle(\n getIndexedPartProps(slotProps?.valueAxisLabel, index),\n axisStyle(\"y\", axisLabel.position),\n )}\n >\n {axisLabel.label}\n </li>\n ))}\n {interactive && crosshairPoint && activePointIndex !== undefined ? (\n <li\n data-part=\"crosshair-value\"\n {...slotProps?.crosshairValue}\n style={{ ...cursorStyle(cursorY), ...slotProps?.crosshairValue?.style }}\n >\n {crosshairPoint.value}\n </li>\n ) : null}\n </ol>\n </div>\n <table data-part=\"data\" aria-label={`${label} data`} {...slotProps?.dataTable}>\n <thead {...slotProps?.dataTableHead}>\n <tr {...slotProps?.dataTableHeaderRow}>\n <th scope=\"col\" {...slotProps?.dataTableTimeHeader}>\n Time\n </th>\n <th scope=\"col\" {...slotProps?.dataTableValueHeader}>\n Value\n </th>\n </tr>\n </thead>\n <tbody {...slotProps?.dataTableBody}>\n {data.map((point, index) => (\n <tr\n key={`${point.time}-${index}`}\n {...getIndexedPartProps(slotProps?.dataTableRow, slotOffset + index)}\n >\n <th\n scope=\"row\"\n {...getIndexedPartProps(slotProps?.dataTableTimeCell, slotOffset + index)}\n >\n {String(point.time)}\n </th>\n <td {...getIndexedPartProps(slotProps?.dataTableValueCell, slotOffset + index)}>\n {point.value}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </>\n ),\n },\n render,\n state: {},\n });\n}\nLineChart.displayName = \"LineChart\";\n"],"mappings":"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","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LineChartClient.d.ts","sourceRoot":"","sources":["../../../../src/components/line-chart/client/LineChartClient.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAiB,WAAW,EAAE,YAAY,EAAO,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"LineChartClient.d.ts","sourceRoot":"","sources":["../../../../src/components/line-chart/client/LineChartClient.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAiB,WAAW,EAAE,YAAY,EAAO,MAAM,OAAO,CAAC;AAY3E,OAAO,KAAK,EACV,oBAAoB,EAKrB,MAAM,aAAa,CAAC;AAwBrB,wBAAgB,eAAe,CAAC,GAAG,SAAS,WAAW,GAAG,QAAQ,EAChE,KAAK,EAAE,oBAAoB,CAAC,GAAG,CAAC,GAC/B,YAAY,GAAG,IAAI,CAkKrB;yBApKe,eAAe"}
|
|
@@ -9,7 +9,6 @@ import {
|
|
|
9
9
|
useLiveChartWindow
|
|
10
10
|
} from "../../internal/live-chart/use-live-chart-window.js";
|
|
11
11
|
import { useScrollbarReserve } from "../../internal/chart-scrollbar/use-scrollbar-reserve.js";
|
|
12
|
-
import { omitProps } from "../../../core/slot-props.js";
|
|
13
12
|
import { VirtualScroll } from "../../virtual-scroll/VirtualScroll.js";
|
|
14
13
|
import { LineChart, LineChartPoint } from "../LineChart.js";
|
|
15
14
|
import { getValueBounds } from "../line-chart-geometry.js";
|
|
@@ -42,9 +41,10 @@ function LineChartClient(props) {
|
|
|
42
41
|
visibleCount,
|
|
43
42
|
itemWidth: viewport.itemWidth,
|
|
44
43
|
figureHeight: figureSize?.height,
|
|
45
|
-
scrollVariable: "--line-scroll-x"
|
|
44
|
+
scrollVariable: "--line-scroll-x",
|
|
45
|
+
consumerStyle
|
|
46
46
|
});
|
|
47
|
-
useScrollbarReserve(liveWindow.chartRef, "--line-scrollbar-size");
|
|
47
|
+
useScrollbarReserve(liveWindow.chartRef, "--line-scrollbar-size", consumerStyle);
|
|
48
48
|
const [cursor, setCursor] = useState(null);
|
|
49
49
|
const [selectedPointIndex, setSelectedPointIndex] = useState();
|
|
50
50
|
const chartRef = useMergedRefs(viewport.ref, consumerRef, liveWindow.chartRef);
|
|
@@ -71,8 +71,8 @@ function LineChartClient(props) {
|
|
|
71
71
|
[data, live]
|
|
72
72
|
);
|
|
73
73
|
const style = {
|
|
74
|
-
|
|
75
|
-
|
|
74
|
+
"--line-scale": String(viewport.scale),
|
|
75
|
+
...consumerStyle
|
|
76
76
|
};
|
|
77
77
|
if (!live) {
|
|
78
78
|
const chartProps2 = {
|
|
@@ -131,15 +131,7 @@ function LineChartClient(props) {
|
|
|
131
131
|
}
|
|
132
132
|
);
|
|
133
133
|
},
|
|
134
|
-
...
|
|
135
|
-
"children",
|
|
136
|
-
"dangerouslySetInnerHTML",
|
|
137
|
-
"data-dynamic-layout",
|
|
138
|
-
"data-orientation",
|
|
139
|
-
"data-part",
|
|
140
|
-
"data-uiify-virtual-scroll",
|
|
141
|
-
"role"
|
|
142
|
-
]),
|
|
134
|
+
...liveScrollportProps,
|
|
143
135
|
...liveScrollportRef ? { ref: liveScrollportRef } : {},
|
|
144
136
|
slotProps: {
|
|
145
137
|
...slotProps?.liveSpacer ? { spacer: slotProps.liveSpacer } : {},
|
|
@@ -152,7 +144,8 @@ function LineChartClient(props) {
|
|
|
152
144
|
"--line-content-size": `${contentSize}px`,
|
|
153
145
|
"--line-plot-height": `${plotHeight}px`,
|
|
154
146
|
// One virtual row: the viewport holds `visibleCount` of them.
|
|
155
|
-
"--line-run": String(100 / visibleCount)
|
|
147
|
+
"--line-run": String(100 / visibleCount),
|
|
148
|
+
...consumerStyle
|
|
156
149
|
};
|
|
157
150
|
const chartProps = {
|
|
158
151
|
...consumerProps,
|