sonner-native
Version:
An opinionated toast component for React Native. A port of @emilkowalski's sonner.
66 lines (65 loc) • 1.79 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Positioner = void 0;
var _react = _interopRequireDefault(require("react"));
var _reactNative = require("react-native");
var _reactNativeSafeAreaContext = require("react-native-safe-area-context");
var _context = require("./context.js");
var _jsxRuntime = require("react/jsx-runtime");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
const Positioner = ({
children,
position,
style,
...props
}) => {
const {
offset
} = (0, _context.useToastContext)();
const {
top,
bottom
} = (0, _reactNativeSafeAreaContext.useSafeAreaInsets)();
const containerStyle = _react.default.useMemo(() => {
if (position === 'center') {
return {
position: 'absolute',
top: 0,
bottom: 0,
left: 0,
right: 0,
justifyContent: 'center',
alignItems: 'center'
};
}
return {
position: 'absolute',
width: '100%',
alignItems: 'center'
};
}, [position]);
const insetValues = _react.default.useMemo(() => {
if (position === 'bottom-center') {
return {
bottom: offset || bottom || 40
};
}
if (position === 'top-center') {
return {
top: offset || top || 40
};
}
return {};
}, [position, bottom, top, offset]);
const hasChildren = _react.default.Children.count(children) > 0;
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
style: [containerStyle, insetValues, style],
pointerEvents: _reactNative.Platform.OS === 'android' && !hasChildren ? 'none' : 'box-none',
...props,
children: children
});
};
exports.Positioner = Positioner;
//# sourceMappingURL=positioner.js.map