react-native-firebase-compiled
Version:
A well tested, feature rich Firebase implementation for React Native, supporting iOS & Android. Individual module support for Admob, Analytics, Auth, Crash Reporting, Cloud Firestore, Database, Dynamic Links, Functions, Messaging (FCM), Remote Config, Sto
125 lines (96 loc) • 4.35 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
var _reactNative = require("react-native");
var _propTypes = _interopRequireDefault(require("prop-types"));
var _EventTypes = _interopRequireWildcard(require("./EventTypes"));
var _utils = require("../../utils");
var _AdRequest = _interopRequireDefault(require("./AdRequest"));
var _VideoOptions = _interopRequireDefault(require("./VideoOptions"));
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
const adMobPropTypes = _objectSpread({}, _reactNative.ViewPropTypes, {
size: _propTypes.default.string.isRequired,
unitId: _propTypes.default.string.isRequired,
/* eslint-disable react/forbid-prop-types */
request: _propTypes.default.object,
video: _propTypes.default.object
/* eslint-enable react/forbid-prop-types */
});
Object.keys(_EventTypes.default).forEach(eventType => {
adMobPropTypes[eventType] = _propTypes.default.func;
});
Object.keys(_EventTypes.NativeExpressEventTypes).forEach(eventType => {
adMobPropTypes[eventType] = _propTypes.default.func;
});
const nativeComponents = {};
function getNativeComponent(name) {
if (nativeComponents[name]) return nativeComponents[name];
const component = (0, _reactNative.requireNativeComponent)(name, AdMobComponent, {
nativeOnly: {
onBannerEvent: true
}
});
nativeComponents[name] = component;
return component;
}
class AdMobComponent extends _react.default.Component {
constructor(_props) {
super(_props);
_defineProperty(this, "onBannerEvent", ({
nativeEvent
}) => {
const props = this.props;
if (props[nativeEvent.type]) {
if (nativeEvent.type === 'onAdFailedToLoad') {
const _nativeEvent$payload = nativeEvent.payload,
code = _nativeEvent$payload.code,
message = _nativeEvent$payload.message;
props[nativeEvent.type]((0, _utils.nativeToJSError)(code, message));
} else {
props[nativeEvent.type](nativeEvent.payload || {});
}
}
if (nativeEvent.type === 'onSizeChange') this.updateSize(nativeEvent.payload);
});
_defineProperty(this, "updateSize", ({
width,
height
}) => {
this.setState({
width,
height
});
});
this.state = {
width: 0,
height: 0
};
this.nativeView = getNativeComponent(_props.class);
}
/**
* Handle a single banner event and pass to
* any props watching it
* @param nativeEvent
*/
/**
* Render the native component
* @returns {XML}
*/
render() {
const style = this.props.style;
return <this.nativeView {...this.props} style={[style, _objectSpread({}, this.state)]} onBannerEvent={this.onBannerEvent} />;
}
}
_defineProperty(AdMobComponent, "propTypes", adMobPropTypes);
_defineProperty(AdMobComponent, "defaultProps", {
request: new _AdRequest.default().addTestDevice().build(),
video: new _VideoOptions.default().build()
});
var _default = AdMobComponent;
exports.default = _default;
;