@100mslive/react-native-room-kit
Version:
100ms Room Kit provides simple & easy to use UI components to build Live Streaming & Video Conferencing experiences in your apps.
51 lines • 1.79 kB
JavaScript
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
import * as React from 'react';
import { StyleSheet, TouchableOpacity } from 'react-native';
import { GestureDetector, Gesture } from 'react-native-gesture-handler';
import { useHMSRoomStyleSheet, useIsHLSViewer } from '../hooks-util';
export const PressableIcon = ({
children,
style,
active = false,
rounded = false,
border = true,
...restProps
}) => {
const isHLSViewer = useIsHLSViewer();
const hmsRoomStyles = useHMSRoomStyleSheet(theme => ({
pressable: {
backgroundColor: isHLSViewer ? theme.palette.surface_default : undefined
},
border: {
borderColor: theme.palette.border_bright
},
active: {
backgroundColor: theme.palette.surface_brighter,
borderColor: theme.palette.surface_brighter
}
}), [isHLSViewer]);
const tapGesture = React.useMemo(() => Gesture.Tap(), []);
return /*#__PURE__*/React.createElement(GestureDetector, {
gesture: tapGesture
}, /*#__PURE__*/React.createElement(TouchableOpacity, _extends({
style: [styles.pressable, hmsRoomStyles.pressable, {
borderRadius: rounded ? 20 : 8,
...(border && !isHLSViewer ? {
...styles.withBorder,
...hmsRoomStyles.border
} : undefined),
...(active ? hmsRoomStyles.active : undefined)
}, style]
}, restProps), children));
};
const styles = StyleSheet.create({
pressable: {
borderRadius: 8,
padding: 8,
alignSelf: 'flex-start'
},
withBorder: {
borderWidth: 1
}
});
//# sourceMappingURL=PressableIcon.js.map