@skbkontur/storybook-addon-live-examples
Version:
Storybook live examples plugin
48 lines (46 loc) • 2.63 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
exports.storyBookLiveExampleDecorator = storyBookLiveExampleDecorator;
var _managerApi = require("@storybook/manager-api");
var _react = _interopRequireDefault(require("react"));
var _components = require("./components");
var _utils = require("./components/utils");
var _config = require("./config");
function storyBookLiveExampleDecorator(storyFn, context) {
var _docs$source, _context$globals$them, _context$globals$them2, _addonConfig$decorato;
var story = storyFn();
var addonConfig = _managerApi.addons.getConfig()[_config.LIVE_EXAMPLES_ADDON_ID];
if (context.viewMode !== 'docs' || context.parameters.defaultCanvas || addonConfig.defaultCanvas) return story;
var _context$parameters = context.parameters,
_context$parameters$l = _context$parameters.live,
live = _context$parameters$l === void 0 ? true : _context$parameters$l,
_context$parameters$e = _context$parameters.expanded,
expanded = _context$parameters$e === void 0 ? false : _context$parameters$e,
docs = _context$parameters.docs,
scope = _context$parameters.scope;
var code = docs !== null && docs !== void 0 && (_docs$source = docs.source) !== null && _docs$source !== void 0 && _docs$source.originalSource ? "render(".concat(docs.source.originalSource, ")") : 'No code available';
var isDarkTheme = Boolean((_context$globals$them = context.globals["theme"]) === null || _context$globals$them === void 0 ? void 0 : (_context$globals$them2 = _context$globals$them.match(/dark/gi)) === null || _context$globals$them2 === void 0 ? void 0 : _context$globals$them2.length); // todo вынести в конфиг
var example = /*#__PURE__*/_react["default"].createElement(_components.Example, {
code: code,
live: live,
expanded: expanded,
scope: scope,
isDarkTheme: isDarkTheme,
language: typeof context.parameters.fileName === 'string' ? (0, _utils.extractLanguageFromFilename)(context.parameters.fileName) : undefined
});
var decorators = (_addonConfig$decorato = addonConfig.decorators) !== null && _addonConfig$decorato !== void 0 ? _addonConfig$decorato : [];
var result = decorators.reduce(function (acc, decorator) {
return decorator(function () {
return acc;
}, context);
}, example);
return /*#__PURE__*/_react["default"].createElement(_components.CanvasReplacer, {
id: context.id
}, result);
}
var _default = storyBookLiveExampleDecorator;
exports["default"] = _default;