react-native-story-component
Version:
Story component for React Native.
97 lines (95 loc) • 4.58 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireWildcard(require("react"));
var _reactNative = require("react-native");
var _ValidationHelpers = require("../helpers/ValidationHelpers");
var _usePrevious = _interopRequireDefault(require("../helpers/usePrevious"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
/* eslint-disable react-native/no-inline-styles */
const StoryCircleListItem = props => {
var _props$item, _props$item2, _props$item5;
const {
item,
unPressedBorderColor,
pressedBorderColor,
avatarSize,
showText,
textStyle,
handleStoryItemPress
} = props;
const [isPressed, setIsPressed] = (0, _react.useState)(props === null || props === void 0 ? void 0 : (_props$item = props.item) === null || _props$item === void 0 ? void 0 : _props$item.seen);
const prevSeen = (0, _usePrevious.default)(props === null || props === void 0 ? void 0 : (_props$item2 = props.item) === null || _props$item2 === void 0 ? void 0 : _props$item2.seen);
(0, _react.useEffect)(() => {
var _props$item3;
if (prevSeen !== (props === null || props === void 0 ? void 0 : (_props$item3 = props.item) === null || _props$item3 === void 0 ? void 0 : _props$item3.seen)) {
var _props$item4;
setIsPressed(props === null || props === void 0 ? void 0 : (_props$item4 = props.item) === null || _props$item4 === void 0 ? void 0 : _props$item4.seen);
}
}, [prevSeen, props === null || props === void 0 ? void 0 : (_props$item5 = props.item) === null || _props$item5 === void 0 ? void 0 : _props$item5.seen]);
const _handleItemPress = story => {
if (handleStoryItemPress) handleStoryItemPress(story);
setIsPressed(true);
};
const size = avatarSize ?? 60;
return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
style: styles.container
}, /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
onPress: () => _handleItemPress(item),
style: [styles.avatarWrapper, {
height: size + 4,
width: size + 4
}, !isPressed ? {
borderColor: unPressedBorderColor ? unPressedBorderColor : '#FF0000'
} : {
borderColor: pressedBorderColor ? pressedBorderColor : '#808080'
}]
}, /*#__PURE__*/_react.default.createElement(_reactNative.Image, {
style: {
height: size,
width: size,
borderRadius: size / 2
},
source: (0, _ValidationHelpers.isUrl)(item.avatar) ? {
uri: item.avatar
} : item.avatar,
defaultSource: _reactNative.Platform.OS === 'ios' ? require('../assets/images/no_avatar.png') : null
})), showText && /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
numberOfLines: 1,
ellipsizeMode: "tail",
style: {
width: size + 4,
...styles.text,
...textStyle
}
}, item.name));
};
const styles = _reactNative.StyleSheet.create({
container: {
marginVertical: 5,
marginRight: 10
},
avatarWrapper: {
borderWidth: 2,
justifyContent: 'center',
alignItems: 'center',
alignSelf: 'center',
borderColor: '#FF0000',
borderRadius: 100,
height: 64,
width: 64
},
text: {
marginTop: 3,
textAlign: 'center',
alignItems: 'center',
fontSize: 11
}
});
var _default = StoryCircleListItem;
exports.default = _default;
//# sourceMappingURL=StoryCircleListItem.js.map