Fix sidebar selection and Unistyles warnings

Forward selection state into native draggable lists so virtualized workspace rows update when the active route changes.

Keep floating caller styles array-shaped and strip Unistyles metadata from owned inline geometry to avoid runtime style warnings.
This commit is contained in:
Mohamed Boudra
2026-06-04 14:17:08 +07:00
parent 0b62e3bd7f
commit cd8e0a5e08
6 changed files with 71 additions and 16 deletions
+29 -3
View File
@@ -21,9 +21,12 @@ export const FloatingSurface = forwardRef<View, FloatingSurfaceProps>(function F
): ReactElement {
const inlineFrameStyle = useMemo(() => {
const flattened = StyleSheet.flatten(frameStyle);
return flattened ? inlineUnistylesStyle(flattened) : undefined;
return flattened ? inlineUnistylesStyle(stripUnistylesMetadata(flattened)) : undefined;
}, [frameStyle]);
const surfaceStyle = useMemo(() => [style, inlineFrameStyle], [inlineFrameStyle, style]);
const surfaceStyle = useMemo(
() => appendStyle(style, inlineFrameStyle),
[inlineFrameStyle, style],
);
return <Animated.View {...props} ref={ref} style={surfaceStyle} />;
});
@@ -46,7 +49,7 @@ export function FloatingScrollView({
}: FloatingScrollViewProps): ReactElement {
const inlineStyle = useMemo(() => {
const flattened = StyleSheet.flatten(style);
return flattened ? inlineUnistylesStyle(flattened) : undefined;
return flattened ? inlineUnistylesStyle(stripUnistylesMetadata(flattened)) : undefined;
}, [style]);
return (
@@ -61,3 +64,26 @@ export function FloatingScrollView({
</ScrollView>
);
}
function appendStyle(
style: StyleProp<ViewStyle>,
extraStyle: ViewStyle | undefined,
): StyleProp<ViewStyle> {
if (!extraStyle) {
return style;
}
if (Array.isArray(style)) {
return [...style, extraStyle];
}
return [style, extraStyle];
}
function stripUnistylesMetadata(style: ViewStyle): ViewStyle {
const cleanStyle: Record<string, unknown> = { ...style };
for (const key of Object.keys(cleanStyle)) {
if (key.startsWith("unistyles_")) {
delete cleanStyle[key];
}
}
return cleanStyle as ViewStyle;
}