@yogiswara/honcho-editor-ui 2.11.0 → 2.11.2
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.
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
+
type SubTab = {
|
|
3
|
+
value: string;
|
|
4
|
+
label: string;
|
|
5
|
+
inactiveIcon?: string;
|
|
6
|
+
activeIcon?: string;
|
|
7
|
+
};
|
|
2
8
|
interface Props {
|
|
3
9
|
activePanelMobile: string;
|
|
4
10
|
activeSubPanel: string;
|
|
5
11
|
setActivePanelMobile: (tab: string) => void;
|
|
6
|
-
|
|
12
|
+
setActiveSubPanel: (subTab: string) => void;
|
|
13
|
+
subTabs: {
|
|
14
|
+
[key: string]: SubTab[];
|
|
15
|
+
};
|
|
7
16
|
panelContent: React.ReactNode;
|
|
8
17
|
panelRef: React.RefObject<HTMLDivElement>;
|
|
9
18
|
contentRef: React.RefObject<HTMLDivElement | null>;
|
|
@@ -1,11 +1,26 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Box, Paper, Stack } from "@mui/material";
|
|
3
|
-
// The hardcoded `subTabs` and `renderPanelContent` are now removed.
|
|
2
|
+
import { Box, Paper, Stack, BottomNavigation, BottomNavigationAction, CardMedia } from "@mui/material";
|
|
4
3
|
export default function HImageEditorMobile(props) {
|
|
5
|
-
// The handleChange function now only needs the renamed prop
|
|
6
4
|
const handleChange = (event, newValue) => {
|
|
7
5
|
props.setActivePanelMobile(newValue);
|
|
8
6
|
};
|
|
7
|
+
// This function is now back inside the component
|
|
8
|
+
const renderSubNavigation = () => {
|
|
9
|
+
const currentSubTabs = props.subTabs[props.activePanelMobile];
|
|
10
|
+
if (!currentSubTabs)
|
|
11
|
+
return null;
|
|
12
|
+
return (_jsx(Paper, { sx: { backgroundColor: 'black', borderRadius: "0px", px: "44px" }, elevation: 3, children: _jsx(BottomNavigation, { showLabels: true, sx: { backgroundColor: 'black', gap: '10px' }, children: currentSubTabs.map((tab) => {
|
|
13
|
+
const isActive = props.activeSubPanel === tab.value;
|
|
14
|
+
const iconSrc = isActive ? tab.activeIcon : tab.inactiveIcon;
|
|
15
|
+
return (_jsx(BottomNavigationAction, { label: tab.label, value: tab.value, onClick: () => props.setActiveSubPanel(isActive ? '' : tab.value), icon: iconSrc && _jsx(CardMedia, { component: "img", image: iconSrc, sx: { width: "20px", height: "20px", mb: "5px" } }), sx: {
|
|
16
|
+
color: isActive ? 'white' : 'grey',
|
|
17
|
+
minWidth: 'auto', p: 0,
|
|
18
|
+
'& .MuiBottomNavigationAction-label': {
|
|
19
|
+
color: isActive ? 'white' : 'grey',
|
|
20
|
+
}
|
|
21
|
+
} }, tab.value));
|
|
22
|
+
}) }) }));
|
|
23
|
+
};
|
|
9
24
|
return (_jsx(Paper, { elevation: 0, sx: {
|
|
10
25
|
id: 'HImageEditorMobile',
|
|
11
26
|
position: 'fixed',
|
|
@@ -38,5 +53,5 @@ export default function HImageEditorMobile(props) {
|
|
|
38
53
|
overflowY: 'auto',
|
|
39
54
|
scrollbarWidth: 'none',
|
|
40
55
|
'&::-webkit-scrollbar': { display: 'none' },
|
|
41
|
-
}, children: props.panelContent })] })),
|
|
56
|
+
}, children: props.panelContent })] })), renderSubNavigation()] }) }));
|
|
42
57
|
}
|
|
@@ -123,7 +123,7 @@ export default function HSliderColorMobile(props) {
|
|
|
123
123
|
color: colors.surface,
|
|
124
124
|
width: "40px", // Keep the fixed width for alignment
|
|
125
125
|
textAlign: "right", // Keep the text alignment
|
|
126
|
-
}, children: formatValue(props.tempScore) })] }), _jsx(Slider, {
|
|
126
|
+
}, children: formatValue(props.tempScore) })] }), _jsx(Slider, { sx: {
|
|
127
127
|
width: "100%",
|
|
128
128
|
color: colors.surface,
|
|
129
129
|
'& .MuiSlider-rail': {
|
|
@@ -140,12 +140,16 @@ export default function HSliderColorMobile(props) {
|
|
|
140
140
|
boxShadow: 'none',
|
|
141
141
|
pointerEvents: 'auto', // IMPORTANT: Re-enable interaction ONLY for the thumb
|
|
142
142
|
}
|
|
143
|
+
}, slotProps: {
|
|
144
|
+
thumb: {
|
|
145
|
+
ref: tempSliderRef
|
|
146
|
+
}
|
|
143
147
|
}, size: "small", value: props.tempScore, step: 1, min: -100, max: 100, onChange: (_event, newValue) => props.setTempScore("tempScore", newValue), onDoubleClick: tempInput.handleDoubleClick }), _jsxs(Stack, { direction: "row", justifyContent: "space-between", alignItems: "center", sx: { pt: '10px', pb: '0px', '&:focus-within .MuiFilledInput-input': focusedInputStyle }, children: [_jsx(Typography, { sx: { ...typography.bodyMedium, color: colors.surface }, onDoubleClick: tintInput.handleDoubleClick, children: "Tint" }), _jsx(Typography, { sx: {
|
|
144
148
|
...typography.bodyMedium, // Use your standard typography
|
|
145
149
|
color: colors.surface,
|
|
146
150
|
width: "40px", // Keep the fixed width for alignment
|
|
147
151
|
textAlign: "right", // Keep the text alignment
|
|
148
|
-
}, children: formatValue(props.tintScore) })] }), _jsx(Slider, {
|
|
152
|
+
}, children: formatValue(props.tintScore) })] }), _jsx(Slider, { sx: {
|
|
149
153
|
width: "100%",
|
|
150
154
|
color: colors.surface,
|
|
151
155
|
'& .MuiSlider-rail': {
|
|
@@ -162,12 +166,16 @@ export default function HSliderColorMobile(props) {
|
|
|
162
166
|
boxShadow: 'none',
|
|
163
167
|
pointerEvents: 'auto',
|
|
164
168
|
}
|
|
169
|
+
}, slotProps: {
|
|
170
|
+
thumb: {
|
|
171
|
+
ref: tintSliderRef
|
|
172
|
+
}
|
|
165
173
|
}, size: "small", value: props.tintScore, step: 1, min: -100, max: 100, onChange: (_event, newValue) => props.setTintScore("tintScore", newValue), onDoubleClick: tintInput.handleDoubleClick }), _jsxs(Stack, { direction: "row", justifyContent: "space-between", alignItems: "center", sx: { pt: '10px', pb: '0px', '&:focus-within .MuiFilledInput-input': focusedInputStyle }, children: [_jsx(Typography, { sx: { ...typography.bodyMedium, color: colors.surface }, onDoubleClick: vibranceInput.handleDoubleClick, children: "Vibrance" }), _jsx(Typography, { sx: {
|
|
166
174
|
...typography.bodyMedium, // Use your standard typography
|
|
167
175
|
color: colors.surface,
|
|
168
176
|
width: "40px", // Keep the fixed width for alignment
|
|
169
177
|
textAlign: "right", // Keep the text alignment
|
|
170
|
-
}, children: formatValue(props.vibranceScore) })] }), _jsx(Slider, {
|
|
178
|
+
}, children: formatValue(props.vibranceScore) })] }), _jsx(Slider, { sx: {
|
|
171
179
|
width: "100%",
|
|
172
180
|
color: colors.surface,
|
|
173
181
|
'& .MuiSlider-rail': {
|
|
@@ -184,12 +192,16 @@ export default function HSliderColorMobile(props) {
|
|
|
184
192
|
boxShadow: 'none',
|
|
185
193
|
pointerEvents: 'auto',
|
|
186
194
|
}
|
|
195
|
+
}, slotProps: {
|
|
196
|
+
thumb: {
|
|
197
|
+
ref: vibranceSliderRef
|
|
198
|
+
}
|
|
187
199
|
}, size: "small", value: props.vibranceScore, step: 1, min: -100, max: 100, onChange: (_event, newValue) => props.setVibranceScore("vibranceScore", newValue), onDoubleClick: vibranceInput.handleDoubleClick }), _jsxs(Stack, { direction: "row", justifyContent: "space-between", alignItems: "center", sx: { pt: '10px', pb: '0px', '&:focus-within .MuiFilledInput-input': focusedInputStyle }, children: [_jsx(Typography, { sx: { ...typography.bodyMedium, color: colors.surface }, onDoubleClick: saturationInput.handleDoubleClick, children: "Saturation" }), _jsx(Typography, { sx: {
|
|
188
200
|
...typography.bodyMedium, // Use your standard typography
|
|
189
201
|
color: colors.surface,
|
|
190
202
|
width: "40px", // Keep the fixed width for alignment
|
|
191
203
|
textAlign: "right", // Keep the text alignment
|
|
192
|
-
}, children: formatValue(props.saturationScore) })] }), _jsx(Slider, {
|
|
204
|
+
}, children: formatValue(props.saturationScore) })] }), _jsx(Slider, { sx: {
|
|
193
205
|
width: "100%",
|
|
194
206
|
color: colors.surface,
|
|
195
207
|
'& .MuiSlider-rail': {
|
|
@@ -206,5 +218,9 @@ export default function HSliderColorMobile(props) {
|
|
|
206
218
|
boxShadow: 'none',
|
|
207
219
|
pointerEvents: 'auto',
|
|
208
220
|
}
|
|
221
|
+
}, slotProps: {
|
|
222
|
+
thumb: {
|
|
223
|
+
ref: saturationSliderRef
|
|
224
|
+
}
|
|
209
225
|
}, size: "small", value: props.saturationScore, step: 1, min: -100, max: 100, onChange: (_event, newValue) => props.setSaturationScore("saturationScore", newValue), onDoubleClick: saturationInput.handleDoubleClick })] }) }));
|
|
210
226
|
}
|