UNPKG

storybook-readme

Version:

Storybook addon to show components README (for React and Vue)

131 lines (103 loc) 3.96 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf3 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _react = _interopRequireDefault(require("react")); var _components = require("@storybook/components"); var _coreEvents = require("@storybook/core-events"); var _ReadmeContent = _interopRequireDefault(require("../ReadmeContent")); var _const = require("../../const"); var SIDEBAR_LAYOUT_TYPES = [_const.LAYOUT_TYPE_PROPS_TABLE, _const.LAYOUT_TYPE_MD]; var ReadmeSidebar = /*#__PURE__*/ function (_React$Component) { (0, _inherits2.default)(ReadmeSidebar, _React$Component); function ReadmeSidebar() { var _getPrototypeOf2; var _this; (0, _classCallCheck2.default)(this, ReadmeSidebar); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = (0, _possibleConstructorReturn2.default)(this, (_getPrototypeOf2 = (0, _getPrototypeOf3.default)(ReadmeSidebar)).call.apply(_getPrototypeOf2, [this].concat(args))); _this.state = { theme: {}, codeTheme: null, layout: [] }; _this.mounted = false; _this.stopListeningOnStory = null; _this.setLayout = function (_ref) { var layout = _ref.layout, theme = _ref.theme, codeTheme = _ref.codeTheme; _this.setState({ theme: theme, layout: layout, codeTheme: codeTheme }); }; return _this; } (0, _createClass2.default)(ReadmeSidebar, [{ key: "componentDidMount", value: function componentDidMount() { var _this2 = this; this.mounted = true; var _this$props = this.props, channel = _this$props.channel, api = _this$props.api; channel.on(_const.CHANNEL_SET_SIDEBAR_DOCS, this.setLayout); this.stopListeningOnStory = api.on(_coreEvents.STORY_CHANGED, function () { if (_this2.mounted) { _this2.setLayout({ layout: [] }); } }); } }, { key: "componentWillUnmount", value: function componentWillUnmount() { this.mounted = false; var channel = this.props.channel; channel.removeListener(_const.CHANNEL_SET_SIDEBAR_DOCS, this.setLayout); if (this.stopListeningOnStory) { this.stopListeningOnStory(); } } }, { key: "render", value: function render() { if (!this.props.active) { return null; } if (this.state.layout.length === 0) { return _react.default.createElement(_components.Placeholder, null, _react.default.createElement(_react.default.Fragment, null, "No README found"), _react.default.createElement(_react.default.Fragment, null, "Learn how to", ' ', _react.default.createElement(_components.Link, { href: "https://github.com/tuchk4/storybook-readme", target: "_blank", withArrow: true }, "add component's docs"))); } return _react.default.createElement("div", { style: { padding: '8px' } }, _react.default.createElement(_ReadmeContent.default, { types: SIDEBAR_LAYOUT_TYPES, layout: this.state.layout, codeTheme: this.state.codeTheme, theme: this.state.theme })); } }]); return ReadmeSidebar; }(_react.default.Component); exports.default = ReadmeSidebar;