UNPKG

@marvelapp/react-ab-test

Version:

A/B testing React components and debug tools. Isomorphic with a simple, universal interface. Well documented and lightweight. Tested in popular browsers and Node.js. Includes helpers for Mixpanel and Segment.com.

55 lines (48 loc) 1.81 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _emitter = _interopRequireDefault(require("../emitter")); var _ExecutionEnvironment = require("fbjs/lib/ExecutionEnvironment"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } var playSubscription, winSubscription; var _default = { enable: function enable() { if (_ExecutionEnvironment.canUseDOM) { if (typeof mixpanel === 'undefined') { var error = new Error("React A/B Test Mixpanel Helper: 'mixpanel' global is not defined."); error.type = 'PUSHTELL_HELPER_MISSING_GLOBAL'; throw error; } playSubscription = _emitter["default"].addPlayListener(function (experimentName, variantName) { mixpanel.track('Experiment Play', { Experiment: experimentName, Variant: variantName }, function () { _emitter["default"].emit('mixpanel-play', experimentName, variantName); }); }); winSubscription = _emitter["default"].addWinListener(function (experimentName, variantName) { mixpanel.track('Experiment Win', { Experiment: experimentName, Variant: variantName }, function () { _emitter["default"].emit('mixpanel-win', experimentName, variantName); }); }); } }, disable: function disable() { if (_ExecutionEnvironment.canUseDOM) { if (!playSubscription || !winSubscription) { var error = new Error('React A/B Test Mixpanel Helper: Helper was not enabled.'); error.type = 'PUSHTELL_HELPER_INVALID_DISABLE'; throw error; } playSubscription.remove(); winSubscription.remove(); } } }; exports["default"] = _default;