UNPKG

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.

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