UNPKG

react-abtest

Version:

A simple React and React Native AB test component.

49 lines (38 loc) 1.45 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 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;