emoji-mart-native
Version:
Customizable Slack-like emoji picker for React Native
1 lines • 7.93 kB
JavaScript
"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _assertThisInitialized2=_interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));var _inherits2=_interopRequireDefault(require("@babel/runtime/helpers/inherits"));var _possibleConstructorReturn2=_interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));var _getPrototypeOf2=_interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var _react=_interopRequireDefault(require("react"));var _propTypes=_interopRequireDefault(require("prop-types"));var _reactNative=require("react-native");var _utils=require("../../utils");var _data=require("../../utils/data");var _sharedProps=require("../../utils/shared-props");var _sharedDefaultProps=require("../../utils/shared-default-props");function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);enumerableOnly&&(symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable;})),keys.push.apply(keys,symbols);}return keys;}function _objectSpread(target){for(var i=1;i<arguments.length;i++){var source=null!=arguments[i]?arguments[i]:{};i%2?ownKeys(Object(source),!0).forEach(function(key){(0,_defineProperty2["default"])(target,key,source[key]);}):Object.getOwnPropertyDescriptors?Object.defineProperties(target,Object.getOwnPropertyDescriptors(source)):ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key));});}return target;}function _createSuper(Derived){var hasNativeReflectConstruct=_isNativeReflectConstruct();return function _createSuperInternal(){var Super=(0,_getPrototypeOf2["default"])(Derived),result;if(hasNativeReflectConstruct){var NewTarget=(0,_getPrototypeOf2["default"])(this).constructor;result=Reflect.construct(Super,arguments,NewTarget);}else{result=Super.apply(this,arguments);}return(0,_possibleConstructorReturn2["default"])(this,result);};}function _isNativeReflectConstruct(){if(typeof Reflect==="undefined"||!Reflect.construct)return false;if(Reflect.construct.sham)return false;if(typeof Proxy==="function")return true;try{Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}));return true;}catch(e){return false;}}var styles=_reactNative.StyleSheet.create({emojiWrapper:{position:'relative',overflow:'hidden'},labelStyle:{textAlign:'center',color:'#ae65c5'}});var NimbleEmoji=function(_React$PureComponent){(0,_inherits2["default"])(NimbleEmoji,_React$PureComponent);var _super=_createSuper(NimbleEmoji);function NimbleEmoji(){var _this;(0,_classCallCheck2["default"])(this,NimbleEmoji);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this=_super.call.apply(_super,[this].concat(args));(0,_defineProperty2["default"])((0,_assertThisInitialized2["default"])(_this),"_getData",function(props){var emoji=props.emoji,skin=props.skin,set=props.set,data=props.data;return(0,_utils.getData)(emoji,skin,set,data);});(0,_defineProperty2["default"])((0,_assertThisInitialized2["default"])(_this),"_getPosition",function(props){var _this$_getData=_this._getData(props),sheet_x=_this$_getData.sheet_x,sheet_y=_this$_getData.sheet_y;return{x:"-".concat(sheet_x*100,"%"),y:"-".concat(sheet_y*100,"%")};});(0,_defineProperty2["default"])((0,_assertThisInitialized2["default"])(_this),"_getSanitizedData",function(props){var emoji=props.emoji,skin=props.skin,set=props.set,data=props.data;return(0,_utils.getSanitizedData)(emoji,skin,set,data);});(0,_defineProperty2["default"])((0,_assertThisInitialized2["default"])(_this),"_handlePress",function(e){var onPress=_this.props.onPress;if(!onPress){return;}var emoji=_this._getSanitizedData(_this.props);onPress(emoji,e);});(0,_defineProperty2["default"])((0,_assertThisInitialized2["default"])(_this),"_handleLongPress",function(e){var onLongPress=_this.props.onLongPress;if(!onLongPress){return;}var emoji=_this._getSanitizedData(_this.props);onLongPress(emoji,e);});return _this;}(0,_createClass2["default"])(NimbleEmoji,[{key:"render",value:function render(){if(this.props.data.compressed){(0,_data.uncompress)(this.props.data);}for(var k in NimbleEmoji.defaultProps){if(this.props[k]===undefined&&NimbleEmoji.defaultProps[k]!=undefined){this.props[k]=NimbleEmoji.defaultProps[k];}}var data=this._getData(this.props);if(!data){if(this.props.fallback){return this.props.fallback(null,this.props);}else{return null;}}var unified=data.unified,custom=data.custom,short_names=data.short_names,image=data.image,style={},imageStyle={},labelStyle={},children=this.props.children,emojiImage,emojiImageSource;if(!unified&&!custom){if(this.props.fallback){return this.props.fallback(data,this.props);}else{return null;}}if(this.props["native"]&&unified){var fontSize=this.props.size;labelStyle={fontSize:fontSize};children=(0,_utils.unifiedToNative)(unified);style.width=this.props.size+this.props.margin;style.height=this.props.size+this.props.margin;}else if(custom){style={width:this.props.size,height:this.props.size,margin:this.props.noMargin?0:this.props.margin/2};if(data.spriteSheet){var emojiPosition=this._getPosition(this.props);imageStyle={position:'absolute',top:emojiPosition.y,left:emojiPosition.x,width:"".concat(100*this.props.sheetColumns,"%"),height:"".concat(100*this.props.sheetRows,"%")};emojiImage=_react["default"].createElement(_reactNative.Image,{style:imageStyle,source:data.spriteSheet});}else{imageStyle={width:this.props.size,height:this.props.size};emojiImage=_react["default"].createElement(_reactNative.Image,{style:imageStyle,source:this.props.emojiImageFn(image)});}}else{var setHasEmoji=data["has_img_".concat(this.props.set)]==undefined||data["has_img_".concat(this.props.set)];if(!setHasEmoji){if(this.props.fallback){return this.props.fallback(data,this.props);}else{return null;}}style={width:this.props.size,height:this.props.size,margin:this.props.noMargin?0:this.props.margin/2};var useLocalImages=this.props.useLocalImages;var emoji=this._getSanitizedData(this.props);if(useLocalImages&&useLocalImages[emoji.id]){imageStyle={width:this.props.size,height:this.props.size};emojiImageSource=useLocalImages[emoji.id].localImages[this.props.set][(emoji.skin||NimbleEmoji.defaultProps.skin)-1];}else{var _emojiPosition=this._getPosition(this.props);imageStyle={position:'absolute',top:_emojiPosition.y,left:_emojiPosition.x,width:"".concat(100*this.props.sheetColumns,"%"),height:"".concat(100*this.props.sheetRows,"%")};emojiImageSource=this.props.spriteSheetFn(this.props.set,this.props.sheetSize);}emojiImage=_react["default"].createElement(_reactNative.Image,{style:imageStyle,source:emojiImageSource});}var emojiComponent=_react["default"].createElement(_reactNative.View,{style:[styles.emojiWrapper,style]},emojiImage||_react["default"].createElement(_reactNative.Text,{style:[styles.labelStyle,labelStyle]},children));return this.props.onPress||this.props.onLongPress?_react["default"].createElement(_reactNative.TouchableWithoutFeedback,{onPress:this._handlePress,onLongPress:this._handleLongPress},emojiComponent):emojiComponent;}}]);return NimbleEmoji;}(_react["default"].PureComponent);(0,_defineProperty2["default"])(NimbleEmoji,"propTypes",_objectSpread({},_sharedProps.EmojiPropTypes,{data:_propTypes["default"].object.isRequired}));(0,_defineProperty2["default"])(NimbleEmoji,"defaultProps",_sharedDefaultProps.EmojiDefaultProps);var _default=NimbleEmoji;exports["default"]=_default;