storybook-addon-javascript-toggler
Version:
Storybook addon to toggle javascript in the preview area
56 lines (38 loc) • 6.85 kB
JavaScript
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.withJSToggler = void 0;
var React = _interopRequireWildcard(require("react"));
var _addons = _interopRequireWildcard(require("@storybook/addons"));
var _constants = require("./constants");
var _SandBoxedIFrame = require("./components/SandBoxedIFrame");
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
var withJSToggler = (0, _addons.makeDecorator)({
name: _constants.ADDON_ID,
parameterName: _constants.PARAM_KEY,
skipIfNoParametersOrOptions: false,
wrapper: function JSToggler_StoryWrapper(getStory, context) {
var _useState = (0, React.useState)(_constants.JS_START_ENABLED),
_useState2 = _slicedToArray(_useState, 2),
hasJS = _useState2[0],
setJSEnability = _useState2[1];
var channel = _addons["default"].getChannel(); // TODO: get back to activated whenever the story change. Or at least, rerender.
// channel.addListener( STORY_RENDERED, () => setJSEnability( true ))
channel.addListener("".concat(_constants.ADDON_ID, "/setJS"), function (hasJS) {
return setJSEnability(hasJS);
});
var renderedStory = getStory(context);
return hasJS ? renderedStory : /*#__PURE__*/React.createElement(_SandBoxedIFrame.SandBoxedIFrame, null, renderedStory);
}
});
exports.withJSToggler = withJSToggler;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50c3giXSwibmFtZXMiOlsid2l0aEpTVG9nZ2xlciIsIm5hbWUiLCJBRERPTl9JRCIsInBhcmFtZXRlck5hbWUiLCJQQVJBTV9LRVkiLCJza2lwSWZOb1BhcmFtZXRlcnNPck9wdGlvbnMiLCJ3cmFwcGVyIiwiSlNUb2dnbGVyX1N0b3J5V3JhcHBlciIsImdldFN0b3J5IiwiY29udGV4dCIsIkpTX1NUQVJUX0VOQUJMRUQiLCJoYXNKUyIsInNldEpTRW5hYmlsaXR5IiwiY2hhbm5lbCIsImFkZG9ucyIsImdldENoYW5uZWwiLCJhZGRMaXN0ZW5lciIsInJlbmRlcmVkU3RvcnkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUdBOztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFTyxJQUFNQSxhQUFhLEdBQUcsMkJBQWM7QUFDekNDLEVBQUFBLElBQUksRUFBRUMsbUJBRG1DO0FBRXpDQyxFQUFBQSxhQUFhLEVBQUVDLG9CQUYwQjtBQUd6Q0MsRUFBQUEsMkJBQTJCLEVBQUUsS0FIWTtBQUl6Q0MsRUFBQUEsT0FBTyxFQUFFLFNBQVNDLHNCQUFULENBQWdDQyxRQUFoQyxFQUEwQ0MsT0FBMUMsRUFBbUQ7QUFBQSxvQkFDMUIsb0JBQVNDLDJCQUFULENBRDBCO0FBQUE7QUFBQSxRQUNuREMsS0FEbUQ7QUFBQSxRQUM1Q0MsY0FENEM7O0FBRzFELFFBQU1DLE9BQU8sR0FBR0MsbUJBQU9DLFVBQVAsRUFBaEIsQ0FIMEQsQ0FJMUQ7QUFDQTs7O0FBQ0FGLElBQUFBLE9BQU8sQ0FBQ0csV0FBUixXQUF3QmQsbUJBQXhCLGFBQTBDLFVBQUFTLEtBQUs7QUFBQSxhQUFJQyxjQUFjLENBQUVELEtBQUYsQ0FBbEI7QUFBQSxLQUEvQztBQUVBLFFBQU1NLGFBQWEsR0FBR1QsUUFBUSxDQUFDQyxPQUFELENBQTlCO0FBQ0EsV0FBT0UsS0FBSyxHQUFHTSxhQUFILGdCQUFtQixvQkFBQyxnQ0FBRCxRQUFrQkEsYUFBbEIsQ0FBL0I7QUFDRDtBQWR3QyxDQUFkLENBQXRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgYWRkb25zLCB7IG1ha2VEZWNvcmF0b3IgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9ucydcbi8vIGltcG9ydCB7IFNUT1JZX1JFTkRFUkVEIH0gZnJvbSAnQHN0b3J5Ym9vay9jb3JlLWV2ZW50cyc7XG5cbmltcG9ydCB7IFBBUkFNX0tFWSwgQURET05fSUQsIEpTX1NUQVJUX0VOQUJMRUQgfSBmcm9tICcuL2NvbnN0YW50cydcbmltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBTYW5kQm94ZWRJRnJhbWUgfSBmcm9tICcuL2NvbXBvbmVudHMvU2FuZEJveGVkSUZyYW1lJ1xuXG5leHBvcnQgY29uc3Qgd2l0aEpTVG9nZ2xlciA9IG1ha2VEZWNvcmF0b3Ioe1xuICBuYW1lOiBBRERPTl9JRCxcbiAgcGFyYW1ldGVyTmFtZTogUEFSQU1fS0VZLFxuICBza2lwSWZOb1BhcmFtZXRlcnNPck9wdGlvbnM6IGZhbHNlLFxuICB3cmFwcGVyOiBmdW5jdGlvbiBKU1RvZ2dsZXJfU3RvcnlXcmFwcGVyKGdldFN0b3J5LCBjb250ZXh0KSB7XG4gICAgY29uc3QgW2hhc0pTLCBzZXRKU0VuYWJpbGl0eV0gPSB1c2VTdGF0ZShKU19TVEFSVF9FTkFCTEVEKVxuXG4gICAgY29uc3QgY2hhbm5lbCA9IGFkZG9ucy5nZXRDaGFubmVsKClcbiAgICAvLyBUT0RPOiBnZXQgYmFjayB0byBhY3RpdmF0ZWQgd2hlbmV2ZXIgdGhlIHN0b3J5IGNoYW5nZS4gT3IgYXQgbGVhc3QsIHJlcmVuZGVyLlxuICAgIC8vIGNoYW5uZWwuYWRkTGlzdGVuZXIoIFNUT1JZX1JFTkRFUkVELCAoKSA9PiBzZXRKU0VuYWJpbGl0eSggdHJ1ZSApKVxuICAgIGNoYW5uZWwuYWRkTGlzdGVuZXIoIGAke0FERE9OX0lEfS9zZXRKU2AsIGhhc0pTID0+IHNldEpTRW5hYmlsaXR5KCBoYXNKUyApKVxuXG4gICAgY29uc3QgcmVuZGVyZWRTdG9yeSA9IGdldFN0b3J5KGNvbnRleHQpXG4gICAgcmV0dXJuIGhhc0pTID8gcmVuZGVyZWRTdG9yeSA6IDxTYW5kQm94ZWRJRnJhbWU+e3JlbmRlcmVkU3Rvcnl9PC9TYW5kQm94ZWRJRnJhbWU+XG4gIH1cbn0pXG4iXX0=
;