UNPKG

@skbkontur/storybook-addon-live-examples

Version:

Storybook live examples plugin

48 lines (46 loc) 2.63 kB
"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;