UNPKG

react-abtest

Version:

A simple React and React Native AB test component.

47 lines (35 loc) 1.24 kB
"use strict"; 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;