react-abtest
Version:
A simple React and React Native AB test component.
49 lines (38 loc) • 1.45 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 ExperimentUniqueIdWeighed = function ExperimentUniqueIdWeighed(_ref) {
var experimentName = _ref.experimentName,
uid = _ref.uid,
weights = _ref.weights,
variants = _ref.variants,
logger = _ref.logger;
if (variants.length === 0) {
return null;
}
var hash = (0, _utils.createHash)(uid + experimentName);
var totWeight = (0, _utils.totalWeight)(weights);
var hashFloat = parseFloat("0.".concat(hash));
var rangeVal = (0, _utils.customRange)(hashFloat, 0.0, totWeight);
var variant = (0, _utils.getWeighedIndex)(weights, rangeVal);
var VariantComponent = variants[variant];
if (logger && typeof logger === 'function') {
logger(variant);
}
return VariantComponent;
};
ExperimentUniqueIdWeighed.propTypes = {
experimentName: _propTypes["default"].string.isRequired,
uid: _propTypes["default"].string.isRequired,
weights: _propTypes["default"].array.isRequired,
variants: _propTypes["default"].array.isRequired,
logger: _propTypes["default"].func
};
var _default = ExperimentUniqueIdWeighed;
exports["default"] = _default;