react-abtest
Version:
A simple React and React Native AB test component.
47 lines (35 loc) • 1.24 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _propTypes = _interopRequireDefault(require("prop-types"));
var _react = _interopRequireDefault(require("react"));
var _utils = require("./utils");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var ExperimentRandomWeighed = function ExperimentRandomWeighed(_ref) {
var weights = _ref.weights,
variants = _ref.variants,
logger = _ref.logger;
if (variants.length === 0 || weights.length === 0) {
return null;
}
if (variants.length !== weights.length) {
return null;
}
var totWeight = (0, _utils.totalWeight)(weights);
var random = (0, _utils.randomFloat)(0, totWeight);
var variant = (0, _utils.getWeighedIndex)(weights, random);
var VariantComponent = variants[variant];
if (logger && typeof logger === 'function') {
logger(variant);
}
return VariantComponent;
};
ExperimentRandomWeighed.propTypes = {
weights: _propTypes["default"].array.isRequired,
variants: _propTypes["default"].array.isRequired,
logger: _propTypes["default"].func
};
var _default = ExperimentRandomWeighed;
exports["default"] = _default;