react-science 19.10.4 → 20.0.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/lib/components/accordion/accordion.d.ts +2 -2
- package/lib/components/accordion/accordion.d.ts.map +1 -1
- package/lib/components/accordion/accordion_context_provider.d.ts +1 -1
- package/lib/components/accordion/accordion_context_provider.d.ts.map +1 -1
- package/lib/components/activity_bar/activity_bar.d.ts +2 -2
- package/lib/components/activity_bar/activity_bar.d.ts.map +1 -1
- package/lib/components/activity_bar/activity_bar.js +5 -1
- package/lib/components/activity_bar/activity_bar.js.map +1 -1
- package/lib/components/activity_panel/activity_panel.d.ts +2 -2
- package/lib/components/activity_panel/activity_panel.d.ts.map +1 -1
- package/lib/components/button/Button.d.ts +1 -1
- package/lib/components/button/Button.d.ts.map +1 -1
- package/lib/components/button/Button.js +30 -22
- package/lib/components/button/Button.js.map +1 -1
- package/lib/components/color-picker/color-picker-dropdown/ColorPickerDropdown.d.ts +3 -3
- package/lib/components/color-picker/color-picker-dropdown/ColorPickerDropdown.d.ts.map +1 -1
- package/lib/components/color-picker/color-picker-dropdown/ColorPickerDropdown.js +2 -2
- package/lib/components/color-picker/color-picker-dropdown/ColorPickerDropdown.js.map +1 -1
- package/lib/components/color-picker/gradient_select/gradient_select.d.ts +1 -1
- package/lib/components/color-picker/gradient_select/gradient_select.d.ts.map +1 -1
- package/lib/components/color-picker/gradient_select/gradient_select.js +1 -1
- package/lib/components/color-picker/gradient_select/gradient_select.js.map +1 -1
- package/lib/components/color-picker/preview/ColorPreview.d.ts +1 -1
- package/lib/components/color-picker/preview/ColorPreview.d.ts.map +1 -1
- package/lib/components/color-picker/preview/FixedColorPreview.d.ts +1 -1
- package/lib/components/color-picker/preview/FixedColorPreview.d.ts.map +1 -1
- package/lib/components/color-picker/preview/FixedGradientPreview.d.ts +1 -1
- package/lib/components/color-picker/preview/FixedGradientPreview.d.ts.map +1 -1
- package/lib/components/color-picker/react-color/ColorPicker.d.ts +1 -1
- package/lib/components/color-picker/react-color/ColorPicker.d.ts.map +1 -1
- package/lib/components/color-picker/react-color/ColorPicker.js +2 -2
- package/lib/components/color-picker/react-color/ColorPicker.js.map +1 -1
- package/lib/components/color-picker/react-color/common/Alpha.d.ts +1 -1
- package/lib/components/color-picker/react-color/common/Alpha.d.ts.map +1 -1
- package/lib/components/color-picker/react-color/common/CheckBoard.d.ts +1 -1
- package/lib/components/color-picker/react-color/common/CheckBoard.d.ts.map +1 -1
- package/lib/components/color-picker/react-color/common/EditableInput.d.ts +1 -1
- package/lib/components/color-picker/react-color/common/EditableInput.d.ts.map +1 -1
- package/lib/components/color-picker/react-color/common/EditableInput.js +2 -3
- package/lib/components/color-picker/react-color/common/EditableInput.js.map +1 -1
- package/lib/components/color-picker/react-color/common/Hue.d.ts +1 -1
- package/lib/components/color-picker/react-color/common/Hue.d.ts.map +1 -1
- package/lib/components/color-picker/react-color/common/Hue.js +7 -7
- package/lib/components/color-picker/react-color/common/Hue.js.map +1 -1
- package/lib/components/color-picker/react-color/common/Saturation.d.ts +1 -1
- package/lib/components/color-picker/react-color/common/Saturation.d.ts.map +1 -1
- package/lib/components/color-picker/react-color/sketch/SketchFields.d.ts +2 -2
- package/lib/components/color-picker/react-color/sketch/SketchFields.d.ts.map +1 -1
- package/lib/components/color-picker/react-color/sketch/SketchPresetColors.d.ts +1 -1
- package/lib/components/color-picker/react-color/sketch/SketchPresetColors.d.ts.map +1 -1
- package/lib/components/dialog/ConfirmDialog.d.ts +1 -1
- package/lib/components/dialog/ConfirmDialog.d.ts.map +1 -1
- package/lib/components/doi/doi.d.ts +1 -1
- package/lib/components/doi/doi.d.ts.map +1 -1
- package/lib/components/doi/doi_logo.d.ts +1 -1
- package/lib/components/doi/doi_logo.d.ts.map +1 -1
- package/lib/components/drop-zone/DropZone.d.ts +2 -2
- package/lib/components/drop-zone/DropZone.d.ts.map +1 -1
- package/lib/components/form/components/input/checkbox.d.ts +1 -1
- package/lib/components/form/components/input/checkbox.d.ts.map +1 -1
- package/lib/components/form/components/input/color_picker.d.ts +1 -1
- package/lib/components/form/components/input/color_picker.d.ts.map +1 -1
- package/lib/components/form/components/input/input.d.ts +1 -1
- package/lib/components/form/components/input/input.d.ts.map +1 -1
- package/lib/components/form/components/input/numeric_input.d.ts +1 -1
- package/lib/components/form/components/input/numeric_input.d.ts.map +1 -1
- package/lib/components/form/components/input/radio_group.d.ts +1 -1
- package/lib/components/form/components/input/radio_group.d.ts.map +1 -1
- package/lib/components/form/components/input/radio_group.js.map +1 -1
- package/lib/components/form/components/input/reset_button.d.ts +1 -1
- package/lib/components/form/components/input/reset_button.d.ts.map +1 -1
- package/lib/components/form/components/input/select.d.ts +1 -1
- package/lib/components/form/components/input/select.d.ts.map +1 -1
- package/lib/components/form/components/input/submit_button.d.ts +1 -1
- package/lib/components/form/components/input/submit_button.d.ts.map +1 -1
- package/lib/components/form/components/input/switch.d.ts +1 -1
- package/lib/components/form/components/input/switch.d.ts.map +1 -1
- package/lib/components/form/components/input_groups/form.d.ts +1 -1
- package/lib/components/form/components/input_groups/form.d.ts.map +1 -1
- package/lib/components/form/components/input_groups/form_group.d.ts +1 -1
- package/lib/components/form/components/input_groups/form_group.d.ts.map +1 -1
- package/lib/components/form/components/layout/Section.d.ts +1 -1
- package/lib/components/form/components/layout/Section.d.ts.map +1 -1
- package/lib/components/fullscreen/fullscreen_context.provider.d.ts +3 -3
- package/lib/components/fullscreen/fullscreen_context.provider.d.ts.map +1 -1
- package/lib/components/fullscreen/fullscreen_toolbar_button.d.ts +1 -1
- package/lib/components/fullscreen/fullscreen_toolbar_button.d.ts.map +1 -1
- package/lib/components/header/Header.d.ts +1 -1
- package/lib/components/header/Header.d.ts.map +1 -1
- package/lib/components/header/PanelHeader.d.ts +1 -1
- package/lib/components/header/PanelHeader.d.ts.map +1 -1
- package/lib/components/icon.d.ts +1 -1
- package/lib/components/icon.d.ts.map +1 -1
- package/lib/components/info-panel/InfoPanel.d.ts +1 -1
- package/lib/components/info-panel/InfoPanel.d.ts.map +1 -1
- package/lib/components/info-panel/InfoPanel.js +13 -10
- package/lib/components/info-panel/InfoPanel.js.map +1 -1
- package/lib/components/inline_editable_renderer/inline_editable_renderer.d.ts +1 -1
- package/lib/components/inline_editable_renderer/inline_editable_renderer.d.ts.map +1 -1
- package/lib/components/input/radio-button-group/RadioButton.d.ts +1 -1
- package/lib/components/input/radio-button-group/RadioButton.d.ts.map +1 -1
- package/lib/components/input/radio-button-group/RadioButtonGroup.d.ts +1 -1
- package/lib/components/input/radio-button-group/RadioButtonGroup.d.ts.map +1 -1
- package/lib/components/input/radio-button-group/RadioButtonGroup.js +5 -4
- package/lib/components/input/radio-button-group/RadioButtonGroup.js.map +1 -1
- package/lib/components/input/utils/SubText.d.ts +1 -1
- package/lib/components/input/utils/SubText.d.ts.map +1 -1
- package/lib/components/logger/FifoLoggerDialog.d.ts +1 -1
- package/lib/components/logger/FifoLoggerDialog.d.ts.map +1 -1
- package/lib/components/logger/FifoLoggerProvider.d.ts +1 -1
- package/lib/components/logger/FifoLoggerProvider.d.ts.map +1 -1
- package/lib/components/logger/FifoLoggerToolbarItem.d.ts +1 -1
- package/lib/components/logger/FifoLoggerToolbarItem.d.ts.map +1 -1
- package/lib/components/root-layout/root_layout.d.ts +1 -1
- package/lib/components/root-layout/root_layout.d.ts.map +1 -1
- package/lib/components/root-layout/root_layout.js +1 -2
- package/lib/components/root-layout/root_layout.js.map +1 -1
- package/lib/components/root-layout/root_layout_context.provider.d.ts +1 -1
- package/lib/components/root-layout/root_layout_context.provider.d.ts.map +1 -1
- package/lib/components/selected-total/SelectedTotal.d.ts +1 -1
- package/lib/components/selected-total/SelectedTotal.d.ts.map +1 -1
- package/lib/components/split_pane/split_pane.d.ts +1 -1
- package/lib/components/split_pane/split_pane.d.ts.map +1 -1
- package/lib/components/split_pane/use_split_pane_size.d.ts +1 -1
- package/lib/components/split_pane/use_split_pane_size.d.ts.map +1 -1
- package/lib/components/svg/styled/svg_styled_line.d.ts +1 -1
- package/lib/components/svg/styled/svg_styled_line.d.ts.map +1 -1
- package/lib/components/svg/styled/svg_styled_path.d.ts +1 -1
- package/lib/components/svg/styled/svg_styled_path.d.ts.map +1 -1
- package/lib/components/svg/styled/svg_styled_text.d.ts +1 -1
- package/lib/components/svg/styled/svg_styled_text.d.ts.map +1 -1
- package/lib/components/table/default_table_cell.d.ts +1 -1
- package/lib/components/table/default_table_cell.d.ts.map +1 -1
- package/lib/components/table/flash_row/flashed_row_provider.d.ts +1 -1
- package/lib/components/table/flash_row/flashed_row_provider.d.ts.map +1 -1
- package/lib/components/table/flash_row/use_flash_row_effect.d.ts +1 -1
- package/lib/components/table/flash_row/use_flash_row_effect.d.ts.map +1 -1
- package/lib/components/table/flash_row/use_flash_row_effect.js.map +1 -1
- package/lib/components/table/preview_table.d.ts +1 -1
- package/lib/components/table/preview_table.d.ts.map +1 -1
- package/lib/components/table/reorder_rows/draggable_row_context.d.ts +1 -1
- package/lib/components/table/reorder_rows/draggable_row_context.d.ts.map +1 -1
- package/lib/components/table/reorder_rows/draggable_row_tr.d.ts +1 -1
- package/lib/components/table/reorder_rows/draggable_row_tr.d.ts.map +1 -1
- package/lib/components/table/reorder_rows/draggable_row_tr.js.map +1 -1
- package/lib/components/table/reorder_rows/item_data.d.ts +1 -1
- package/lib/components/table/reorder_rows/item_data.d.ts.map +1 -1
- package/lib/components/table/reorder_rows/item_data.js.map +1 -1
- package/lib/components/table/reorder_rows/item_order_provider.d.ts +1 -1
- package/lib/components/table/reorder_rows/item_order_provider.d.ts.map +1 -1
- package/lib/components/table/reorder_rows/item_order_provider.js +10 -5
- package/lib/components/table/reorder_rows/item_order_provider.js.map +1 -1
- package/lib/components/table/reorder_rows/table_drag_row_handler.d.ts +1 -1
- package/lib/components/table/reorder_rows/table_drag_row_handler.d.ts.map +1 -1
- package/lib/components/table/reorder_rows/use_drop_monitor.d.ts +1 -1
- package/lib/components/table/reorder_rows/use_drop_monitor.d.ts.map +1 -1
- package/lib/components/table/reorder_rows/use_drop_monitor.js.map +1 -1
- package/lib/components/table/table_body.d.ts +1 -1
- package/lib/components/table/table_body.d.ts.map +1 -1
- package/lib/components/table/table_body.js +1 -1
- package/lib/components/table/table_body.js.map +1 -1
- package/lib/components/table/table_header.d.ts +1 -1
- package/lib/components/table/table_header.d.ts.map +1 -1
- package/lib/components/table/table_header_cell.d.ts +1 -1
- package/lib/components/table/table_header_cell.d.ts.map +1 -1
- package/lib/components/table/table_root.d.ts +2 -2
- package/lib/components/table/table_root.d.ts.map +1 -1
- package/lib/components/table/table_root.js +4 -1
- package/lib/components/table/table_root.js.map +1 -1
- package/lib/components/table/table_row.d.ts +3 -3
- package/lib/components/table/table_row.d.ts.map +1 -1
- package/lib/components/table/table_row.js.map +1 -1
- package/lib/components/table/table_row_cell.d.ts +1 -1
- package/lib/components/table/table_row_cell.d.ts.map +1 -1
- package/lib/components/table/table_scroll_container.d.ts +2 -2
- package/lib/components/table/table_scroll_container.d.ts.map +1 -1
- package/lib/components/table/use_table_scroll.d.ts +1 -1
- package/lib/components/table/use_table_scroll.d.ts.map +1 -1
- package/lib/components/table/use_table_scroll.js +0 -1
- package/lib/components/table/use_table_scroll.js.map +1 -1
- package/lib/components/toolbar/OverflowButton.d.ts +3 -3
- package/lib/components/toolbar/OverflowButton.d.ts.map +1 -1
- package/lib/components/toolbar/OverflowButton.js +2 -4
- package/lib/components/toolbar/OverflowButton.js.map +1 -1
- package/lib/components/toolbar/PanelPreferencesToolbar.d.ts +1 -1
- package/lib/components/toolbar/PanelPreferencesToolbar.d.ts.map +1 -1
- package/lib/components/toolbar/Toolbar.d.ts +10 -303
- package/lib/components/toolbar/Toolbar.d.ts.map +1 -1
- package/lib/components/toolbar/Toolbar.js +16 -16
- package/lib/components/toolbar/Toolbar.js.map +1 -1
- package/lib/components/toolbar/TooltipHelpContent.d.ts +1 -1
- package/lib/components/toolbar/TooltipHelpContent.d.ts.map +1 -1
- package/lib/components/toolbar/TooltipHelpContent.js +1 -3
- package/lib/components/toolbar/TooltipHelpContent.js.map +1 -1
- package/lib/components/toolbar/useCheckOverflow.d.ts +2 -1
- package/lib/components/toolbar/useCheckOverflow.d.ts.map +1 -1
- package/lib/components/toolbar/useCheckOverflow.js.map +1 -1
- package/lib/components/utils/index.d.ts +1 -0
- package/lib/components/utils/index.d.ts.map +1 -1
- package/lib/components/utils/index.js +1 -0
- package/lib/components/utils/index.js.map +1 -1
- package/lib/components/utils/svg.d.ts +42 -0
- package/lib/components/utils/svg.d.ts.map +1 -0
- package/lib/components/utils/svg.js +60 -0
- package/lib/components/utils/svg.js.map +1 -0
- package/lib/components/value-renderers/Boolean.d.ts +1 -1
- package/lib/components/value-renderers/Boolean.d.ts.map +1 -1
- package/lib/components/value-renderers/Color.d.ts +1 -1
- package/lib/components/value-renderers/Color.d.ts.map +1 -1
- package/lib/components/value-renderers/Component.d.ts +1 -1
- package/lib/components/value-renderers/Component.d.ts.map +1 -1
- package/lib/components/value-renderers/Number.d.ts +1 -1
- package/lib/components/value-renderers/Number.d.ts.map +1 -1
- package/lib/components/value-renderers/ObjectRenderer.d.ts +1 -1
- package/lib/components/value-renderers/ObjectRenderer.d.ts.map +1 -1
- package/lib/components/value-renderers/Text.d.ts +1 -1
- package/lib/components/value-renderers/Text.d.ts.map +1 -1
- package/lib/components/value-renderers/Title.d.ts +1 -1
- package/lib/components/value-renderers/Title.d.ts.map +1 -1
- package/package.json +58 -61
- package/src/components/activity_bar/activity_bar.tsx +5 -1
- package/src/components/button/Button.tsx +39 -42
- package/src/components/color-picker/color-picker-dropdown/ColorPickerDropdown.tsx +8 -6
- package/src/components/color-picker/gradient_select/gradient_select.tsx +1 -1
- package/src/components/color-picker/react-color/ColorPicker.tsx +8 -4
- package/src/components/color-picker/react-color/common/EditableInput.tsx +2 -4
- package/src/components/color-picker/react-color/common/Hue.tsx +16 -9
- package/src/components/color-picker/react-color/sketch/SketchFields.tsx +1 -1
- package/src/components/form/components/input/radio_group.tsx +2 -2
- package/src/components/fullscreen/fullscreen_context.provider.tsx +2 -2
- package/src/components/info-panel/InfoPanel.tsx +13 -12
- package/src/components/input/radio-button-group/RadioButtonGroup.tsx +9 -4
- package/src/components/root-layout/root_layout.tsx +2 -4
- package/src/components/split_pane/split_pane.tsx +1 -1
- package/src/components/split_pane/use_split_pane_size.tsx +1 -1
- package/src/components/table/flash_row/use_flash_row_effect.ts +1 -1
- package/src/components/table/reorder_rows/draggable_row_context.ts +1 -1
- package/src/components/table/reorder_rows/draggable_row_tr.tsx +1 -1
- package/src/components/table/reorder_rows/item_data.ts +4 -1
- package/src/components/table/reorder_rows/item_order_provider.tsx +8 -6
- package/src/components/table/reorder_rows/use_drop_monitor.ts +1 -1
- package/src/components/table/table_body.tsx +4 -2
- package/src/components/table/table_root.tsx +3 -1
- package/src/components/table/table_row.tsx +3 -3
- package/src/components/table/table_scroll_container.tsx +3 -3
- package/src/components/table/use_table_scroll.ts +1 -2
- package/src/components/toolbar/OverflowButton.tsx +9 -10
- package/src/components/toolbar/Toolbar.tsx +48 -31
- package/src/components/toolbar/useCheckOverflow.tsx +2 -1
- package/src/components/utils/index.ts +1 -0
- package/src/components/utils/svg.ts +120 -0
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
import type {
|
|
2
2
|
ButtonGroupProps,
|
|
3
3
|
Intent,
|
|
4
|
-
|
|
4
|
+
PopoverNextProps,
|
|
5
5
|
TooltipProps,
|
|
6
6
|
} from '@blueprintjs/core';
|
|
7
|
-
import {
|
|
7
|
+
import {
|
|
8
|
+
ButtonGroup,
|
|
9
|
+
Classes,
|
|
10
|
+
Colors,
|
|
11
|
+
Icon,
|
|
12
|
+
PopoverNext,
|
|
13
|
+
} from '@blueprintjs/core';
|
|
14
|
+
import type { StyledComponent } from '@emotion/styled';
|
|
8
15
|
import styled from '@emotion/styled';
|
|
9
16
|
import type { MouseEvent, ReactNode } from 'react';
|
|
10
17
|
import { useLayoutEffect, useMemo, useRef } from 'react';
|
|
@@ -33,7 +40,9 @@ interface ToolbarBaseProps {
|
|
|
33
40
|
}
|
|
34
41
|
|
|
35
42
|
export interface ToolbarProps
|
|
36
|
-
extends
|
|
43
|
+
extends
|
|
44
|
+
ToolbarBaseProps,
|
|
45
|
+
Pick<ButtonGroupProps, 'children' | 'vertical' | 'aria-label'> {
|
|
37
46
|
/**
|
|
38
47
|
* The type of interaction which triggers a popover to open.
|
|
39
48
|
* This prop only affects children which are `Toolbar.PopoverItem`.
|
|
@@ -55,7 +64,10 @@ export interface ToolbarProps
|
|
|
55
64
|
export interface ToolbarItemProps
|
|
56
65
|
extends
|
|
57
66
|
ToolbarBaseProps,
|
|
58
|
-
Pick<
|
|
67
|
+
Pick<
|
|
68
|
+
ButtonProps,
|
|
69
|
+
'id' | 'icon' | 'active' | 'tag' | 'tagProps' | 'aria-label'
|
|
70
|
+
> {
|
|
59
71
|
tooltip?: TooltipProps['content'];
|
|
60
72
|
tooltipProps?: Omit<TooltipProps, 'content'>;
|
|
61
73
|
onClick?: (event: MouseEvent) => void;
|
|
@@ -66,7 +78,7 @@ interface ToolbarItemInternalProps extends ToolbarItemProps {
|
|
|
66
78
|
}
|
|
67
79
|
|
|
68
80
|
export interface ToolbarPopoverItemProps extends Omit<
|
|
69
|
-
|
|
81
|
+
PopoverNextProps,
|
|
70
82
|
'targetProps'
|
|
71
83
|
> {
|
|
72
84
|
itemProps: ToolbarItemProps;
|
|
@@ -91,7 +103,7 @@ const Container = styled.div<ContainerProps>`
|
|
|
91
103
|
width: 100%;
|
|
92
104
|
`;
|
|
93
105
|
|
|
94
|
-
export const ToolbarButton = styled(Button)`
|
|
106
|
+
export const ToolbarButton: StyledComponent<ButtonProps> = styled(Button)`
|
|
95
107
|
.${Classes.ICON} {
|
|
96
108
|
/* Color of icon in button is lighter in Blueprintjs. We want a better contrast in the toolbars */
|
|
97
109
|
color: ${Colors.DARK_GRAY3} !important;
|
|
@@ -117,6 +129,7 @@ export function Toolbar(props: ToolbarProps) {
|
|
|
117
129
|
popoverInteractionKind,
|
|
118
130
|
overflow = 'wrap',
|
|
119
131
|
overflowButtonProps,
|
|
132
|
+
'aria-label': ariaLabel,
|
|
120
133
|
} = props;
|
|
121
134
|
|
|
122
135
|
const { placement = 'end' } = overflowButtonProps || {};
|
|
@@ -148,7 +161,7 @@ export function Toolbar(props: ToolbarProps) {
|
|
|
148
161
|
|
|
149
162
|
function update() {
|
|
150
163
|
const lastElement = ref.current?.lastElementChild;
|
|
151
|
-
if (!lastElement) {
|
|
164
|
+
if (!ref.current || !lastElement) {
|
|
152
165
|
return;
|
|
153
166
|
}
|
|
154
167
|
ref.current.style.width = 'initial';
|
|
@@ -174,6 +187,8 @@ export function Toolbar(props: ToolbarProps) {
|
|
|
174
187
|
return (
|
|
175
188
|
<ToolbarProvider value={contextValue}>
|
|
176
189
|
<ButtonGroup
|
|
190
|
+
role="toolbar"
|
|
191
|
+
aria-label={ariaLabel}
|
|
177
192
|
ref={ref}
|
|
178
193
|
key={String(vertical)}
|
|
179
194
|
vertical={vertical}
|
|
@@ -193,6 +208,8 @@ export function Toolbar(props: ToolbarProps) {
|
|
|
193
208
|
<ToolbarProvider value={contextValue}>
|
|
194
209
|
<Container vertical={vertical} placement={placement}>
|
|
195
210
|
<ButtonGroup
|
|
211
|
+
role="toolbar"
|
|
212
|
+
aria-label={ariaLabel}
|
|
196
213
|
ref={ref}
|
|
197
214
|
// Reset because of layout effect above
|
|
198
215
|
// TODO: remove once the workaround is no longer needed
|
|
@@ -263,28 +280,26 @@ function ToolbarItemInternal(props: ToolbarItemInternalProps) {
|
|
|
263
280
|
width: 'fit-content',
|
|
264
281
|
}}
|
|
265
282
|
icon={
|
|
266
|
-
|
|
267
|
-
{
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
)}
|
|
287
|
-
</>
|
|
283
|
+
isPopover ? (
|
|
284
|
+
<div style={{ display: 'contents' }}>
|
|
285
|
+
{/*For the icon to be properly styled, it should not have any siblings*/}
|
|
286
|
+
<div style={{ display: 'contents' }}>{normalizedIcon}</div>
|
|
287
|
+
<Icon
|
|
288
|
+
icon="caret-right"
|
|
289
|
+
size={9}
|
|
290
|
+
style={{
|
|
291
|
+
transform: 'rotate(45deg)',
|
|
292
|
+
position: 'absolute',
|
|
293
|
+
bottom: 0,
|
|
294
|
+
right: 0,
|
|
295
|
+
width: 9,
|
|
296
|
+
height: 9,
|
|
297
|
+
}}
|
|
298
|
+
/>
|
|
299
|
+
</div>
|
|
300
|
+
) : (
|
|
301
|
+
normalizedIcon
|
|
302
|
+
)
|
|
288
303
|
}
|
|
289
304
|
onClick={onClick}
|
|
290
305
|
tooltipProps={
|
|
@@ -306,7 +321,7 @@ function ToolbarItemInternal(props: ToolbarItemInternalProps) {
|
|
|
306
321
|
|
|
307
322
|
Toolbar.Item = ToolbarItem;
|
|
308
323
|
|
|
309
|
-
const ToolbarPopover = styled(
|
|
324
|
+
const ToolbarPopover = styled(PopoverNext)`
|
|
310
325
|
.${Classes.ICON} {
|
|
311
326
|
color: ${Colors.DARK_GRAY3};
|
|
312
327
|
}
|
|
@@ -320,7 +335,9 @@ Toolbar.PopoverItem = function ToolbarPopoverItem(
|
|
|
320
335
|
|
|
321
336
|
return (
|
|
322
337
|
<ToolbarPopover
|
|
323
|
-
|
|
338
|
+
shouldReturnFocusOnClose={false}
|
|
339
|
+
animation="minimal"
|
|
340
|
+
arrow={false}
|
|
324
341
|
disabled={disabled}
|
|
325
342
|
placement={vertical ? 'right-start' : 'bottom-start'}
|
|
326
343
|
interactionKind={popoverInteractionKind}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import type { RefObject } from 'react';
|
|
1
2
|
import { useLayoutEffect, useState } from 'react';
|
|
2
3
|
|
|
3
4
|
import type { Overflow } from './Toolbar.tsx';
|
|
4
5
|
|
|
5
6
|
interface UseCheckOverflowOptions {
|
|
6
|
-
containerRef:
|
|
7
|
+
containerRef: RefObject<HTMLDivElement | null>;
|
|
7
8
|
vertical: boolean;
|
|
8
9
|
overflow: Overflow;
|
|
9
10
|
}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { assert } from './assert.ts';
|
|
2
|
+
|
|
3
|
+
export interface ExportSVGOptions {
|
|
4
|
+
/**
|
|
5
|
+
* CSS Selector to remove from the SVG.
|
|
6
|
+
*
|
|
7
|
+
* @example '[data-no-export="true"]' And add `data-no-export="true"` attribute to the elements you don't want in the exported SVG.
|
|
8
|
+
* @default undefined (Will not remove any elements)
|
|
9
|
+
*/
|
|
10
|
+
removeFromSelector?: string;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Add a background to the SVG. It can be useful to integrate exported svg in diapositive documents.
|
|
14
|
+
*
|
|
15
|
+
* @default false
|
|
16
|
+
*/
|
|
17
|
+
addBackground?: boolean;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Background color of the SVG. You can use any valid CSS color.
|
|
21
|
+
*
|
|
22
|
+
* @default 'white' (It needs `addBackground: true` to work)
|
|
23
|
+
*/
|
|
24
|
+
backgroundColor?: string;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Custom mutations to apply to the SVG.
|
|
28
|
+
*/
|
|
29
|
+
customMutations?: (svg: SVGSVGElement) => void;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Export an SVG element to a string.
|
|
34
|
+
*
|
|
35
|
+
* @param base
|
|
36
|
+
* @param options
|
|
37
|
+
*
|
|
38
|
+
* @return The outerHTML of the SVG element.
|
|
39
|
+
*/
|
|
40
|
+
export function exportSVG(
|
|
41
|
+
base: SVGSVGElement,
|
|
42
|
+
options: ExportSVGOptions = {},
|
|
43
|
+
): string {
|
|
44
|
+
const {
|
|
45
|
+
removeFromSelector,
|
|
46
|
+
addBackground = false,
|
|
47
|
+
backgroundColor = 'white',
|
|
48
|
+
customMutations,
|
|
49
|
+
} = options;
|
|
50
|
+
|
|
51
|
+
const svg = base.cloneNode(true) as SVGSVGElement;
|
|
52
|
+
|
|
53
|
+
// cleanup svg
|
|
54
|
+
if (removeFromSelector) {
|
|
55
|
+
const items = svg.querySelectorAll(removeFromSelector);
|
|
56
|
+
for (const item of items) {
|
|
57
|
+
item.remove();
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
if (addBackground) {
|
|
62
|
+
const background = document.createElementNS(
|
|
63
|
+
'http://www.w3.org/2000/svg',
|
|
64
|
+
'rect',
|
|
65
|
+
);
|
|
66
|
+
background.setAttribute('x', '0');
|
|
67
|
+
background.setAttribute('y', '0');
|
|
68
|
+
background.setAttribute('width', '100%');
|
|
69
|
+
background.setAttribute('height', '100%');
|
|
70
|
+
background.setAttribute('fill', backgroundColor);
|
|
71
|
+
svg.prepend(background);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
customMutations?.(svg);
|
|
75
|
+
|
|
76
|
+
return svg.outerHTML;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Export an SVG element to a PNG blob.
|
|
81
|
+
*
|
|
82
|
+
* @param base
|
|
83
|
+
* @param options
|
|
84
|
+
*/
|
|
85
|
+
export async function exportSVGAsPNG(
|
|
86
|
+
base: SVGSVGElement,
|
|
87
|
+
options: ExportSVGOptions = {},
|
|
88
|
+
): Promise<Blob> {
|
|
89
|
+
const {
|
|
90
|
+
removeFromSelector,
|
|
91
|
+
addBackground = false,
|
|
92
|
+
backgroundColor = 'white',
|
|
93
|
+
customMutations,
|
|
94
|
+
} = options;
|
|
95
|
+
|
|
96
|
+
const svg = exportSVG(base, {
|
|
97
|
+
removeFromSelector,
|
|
98
|
+
addBackground: false,
|
|
99
|
+
customMutations,
|
|
100
|
+
});
|
|
101
|
+
const svgBlob = new Blob([svg], { type: 'image/svg+xml' });
|
|
102
|
+
|
|
103
|
+
const img = new Image();
|
|
104
|
+
img.src = URL.createObjectURL(svgBlob);
|
|
105
|
+
await img.decode().finally(() => URL.revokeObjectURL(img.src));
|
|
106
|
+
|
|
107
|
+
const canvas = new OffscreenCanvas(img.naturalWidth, img.naturalHeight);
|
|
108
|
+
const ctx = canvas.getContext('2d');
|
|
109
|
+
assert(ctx);
|
|
110
|
+
|
|
111
|
+
if (addBackground) {
|
|
112
|
+
ctx.fillStyle = backgroundColor;
|
|
113
|
+
ctx.fillRect(0, 0, canvas.width, canvas.height);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
ctx.drawImage(img, 0, 0);
|
|
117
|
+
|
|
118
|
+
const png = await canvas.convertToBlob({ type: 'image/png' });
|
|
119
|
+
return png;
|
|
120
|
+
}
|