synapse-react-client
Version:
[](https://travis-ci.com/Sage-Bionetworks/Synapse-React-Client) [](https://badge.fury.io/js/synaps
48 lines • 2.77 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var React = (0, tslib_1.__importStar)(require("react"));
var react_bootstrap_1 = require("react-bootstrap");
var react_1 = require("react");
var universal_cookie_1 = (0, tslib_1.__importDefault)(require("universal-cookie"));
var SynapseClient_1 = require("../utils/SynapseClient");
var SynapseConstants_1 = require("../utils/SynapseConstants");
var icons_1 = require("@material-ui/icons");
var ExperimentalMode = function () {
var _a = (0, react_1.useState)(false), isExperimentalModeOn = _a[0], setIsExperimentalModeOn = _a[1];
var cookies = new universal_cookie_1.default();
var mounted = true;
(0, react_1.useEffect)(function () {
if (mounted) {
if ((0, SynapseClient_1.isInSynapseExperimentalMode)()) {
setIsExperimentalModeOn(true);
}
}
return function () {
mounted = false;
};
}, []);
var createExperimentalModeCookie = function () {
cookies.set(SynapseConstants_1.EXPERIMENTAL_MODE_COOKIE, { path: '/' });
setIsExperimentalModeOn(true);
};
var deleteExperimentalModeCookie = function () {
// cookie.remove requires to re-calculate date obj each time, this is more straightforward
document.cookie = SynapseConstants_1.EXPERIMENTAL_MODE_COOKIE + "= ; expires = Thu, 01 Jan 1970 00:00:00 GMT";
setIsExperimentalModeOn(false);
};
var popover = function (_a) {
var props = (0, tslib_1.__rest)(_a, []);
return (React.createElement("div", { className: "bootstrap-4-backport" },
React.createElement(react_bootstrap_1.Popover, (0, tslib_1.__assign)({ id: "experimental-mode-popover" }, props),
React.createElement(react_bootstrap_1.Popover.Content, null, "This mode gives you early access to features that are still in development. Please note that we do not guarantee an absence of errors, and that the data created using these features may be lost during product upgrade."))));
};
return (React.createElement("span", { className: "experimental-mode-wrapper" },
React.createElement(react_bootstrap_1.Button, { className: "experimental-mode", variant: "link", onClick: isExperimentalModeOn ? deleteExperimentalModeCookie : createExperimentalModeCookie },
"Experimental mode is ",
isExperimentalModeOn ? "on" : "off"),
React.createElement(react_bootstrap_1.OverlayTrigger, { trigger: "click", placement: "top", overlay: popover },
React.createElement(icons_1.InfoOutlined, { style: { verticalAlign: 'middle' } }))));
};
exports.default = ExperimentalMode;
//# sourceMappingURL=ExperimentalMode.js.map