UNPKG

@danilandreev/material-docs

Version:

material-docs - react framework for easy creating documentation site in material design style.

636 lines (501 loc) 28.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.displayName = void 0; var _react = _interopRequireDefault(require("react")); var _styles = require("./styles"); var _reactHelmetAsync = require("react-helmet-async"); var _SearchField = _interopRequireDefault(require("../SearchField")); var _LanguageSelector = _interopRequireDefault(require("../LanguageSelector")); var _reactRouterDom = require("react-router-dom"); var _notistack = require("notistack"); var _PagesGroup = _interopRequireDefault(require("../PagesGroup")); var _Link = _interopRequireDefault(require("../Link/Link")); var _DefaultTheme = _interopRequireDefault(require("../../theme/DefaultTheme")); var _Toolbar = _interopRequireDefault(require("@material-ui/core/Toolbar")); var _Typography = _interopRequireDefault(require("@material-ui/core/Typography")); var _Divider = _interopRequireDefault(require("@material-ui/core/Divider")); var _IconButton = _interopRequireDefault(require("@material-ui/core/IconButton")); var _clsx2 = _interopRequireDefault(require("clsx")); var _styles2 = require("@material-ui/core/styles"); var _ListItemText = _interopRequireDefault(require("@material-ui/core/ListItemText")); var _Avatar = _interopRequireDefault(require("@material-ui/core/Avatar")); var _ListItemAvatar = _interopRequireDefault(require("@material-ui/core/ListItemAvatar")); var _Drawer = _interopRequireDefault(require("@material-ui/core/Drawer")); var _CssBaseline = _interopRequireDefault(require("@material-ui/core/CssBaseline")); var _AppBar = _interopRequireDefault(require("@material-ui/core/AppBar")); var _Box = _interopRequireDefault(require("@material-ui/core/Box")); var _Menu = _interopRequireDefault(require("@material-ui/icons/Menu")); var _ChevronLeft = _interopRequireDefault(require("@material-ui/icons/ChevronLeft")); var _ChevronRight = _interopRequireDefault(require("@material-ui/icons/ChevronRight")); var _propTypes = _interopRequireDefault(require("prop-types")); var _AppBarActionValidator = _interopRequireDefault(require("../../validators/AppBarActionValidator")); var _SearchDataItemValidator = _interopRequireDefault(require("../../validators/SearchDataItemValidator")); var _LangValidator = _interopRequireDefault(require("../../validators/LangValidator")); var _useLang = require("../../hooks/useLang/useLang"); var _useSearch = require("../../hooks/useSearch/useSearch"); var _getChildrenFromContainer = _interopRequireDefault(require("../../utils/getChildrenFromContainer")); var _getContainerByType = _interopRequireDefault(require("../../utils/getContainerByType")); var _generateHeaderIcon = _interopRequireDefault(require("./generateHeaderIcon")); var _core = require("@material-ui/core"); var _useMenu = require("../../hooks/useMenu/useMenu"); var _styles3 = require("@material-ui/styles"); var _ = _interopRequireWildcard(require("lodash")); var _routingManager = require("routing-manager"); var _DocsPages = require("../DocsPages"); var _Landing = require("../Landing"); var _DocsMenu = require("../DocsMenu"); var _goToPage = _interopRequireDefault(require("../../utils/goToPage")); var _useSwitchPage = require("../../hooks/useSwitchPage/useSwitchPage"); 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 _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } 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); } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } 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(n); 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; } function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } var displayName = "MatDocDocsLayout"; exports.displayName = displayName; var DocsLayoutF = /*#__PURE__*/_react.default.forwardRef(function (props, ref) { var children = props.children, _props$noGenerateAuto = props.noGenerateAutoSearch, noGenerateAutoSearch = _props$noGenerateAuto === void 0 ? false : _props$noGenerateAuto, defaultLang = props.defaultLang, langs = props.langs, onHelpToTranslate = props.onHelpToTranslate, width = props.width, _props$noSearchField = props.noSearchField, noSearchField = _props$noSearchField === void 0 ? false : _props$noSearchField, _props$noLanguageSele = props.noLanguageSelector, noLanguageSelector = _props$noLanguageSele === void 0 ? false : _props$noLanguageSele, _props$actions = props.actions, actions = _props$actions === void 0 ? [] : _props$actions, author = props.author, keywords = props.keywords, description = props.description, name = props.name, version = props.version, logo = props.logo, classes = props.classes, onNameClick = props.onNameClick, onVersionClick = props.onVersionClick, other = _objectWithoutProperties(props, ["children", "noGenerateAutoSearch", "defaultLang", "langs", "onHelpToTranslate", "width", "noSearchField", "noLanguageSelector", "actions", "author", "keywords", "description", "name", "version", "logo", "classes", "onNameClick", "onVersionClick"]); var theme = (0, _styles2.useTheme)(); var _useChangeRoute = (0, _routingManager.useChangeRoute)(), getQueryParams = _useChangeRoute.getQueryParams, getRouteParams = _useChangeRoute.getRouteParams, changeRoute = _useChangeRoute.changeRoute; var _React$useState = _react.default.useState((0, _core.isWidthUp)("md", width)), _React$useState2 = _slicedToArray(_React$useState, 2), open = _React$useState2[0], setOpen = _React$useState2[1]; var _React$useState3 = _react.default.useState({ pages: [], menu: null, landing: [] }), _React$useState4 = _slicedToArray(_React$useState3, 2), content = _React$useState4[0], setContent = _React$useState4[1]; var _React$useState5 = _react.default.useState(other.searchData ? new Set(other.searchData) : new Set()), _React$useState6 = _slicedToArray(_React$useState5, 2), searchData = _React$useState6[0], setSearchData = _React$useState6[1]; var _React$useState7 = _react.default.useState(null), _React$useState8 = _slicedToArray(_React$useState7, 2), lang = _React$useState8[0], setLang = _React$useState8[1]; var _React$useState9 = _react.default.useState(null), _React$useState10 = _slicedToArray(_React$useState9, 2), autoMenuData = _React$useState10[0], setAutoMenuData = _React$useState10[1]; var _getQueryParams = getQueryParams(), langName = _getQueryParams.l; var _getRouteParams = getRouteParams(), routePage = _getRouteParams.page; var history = (0, _reactRouterDom.useHistory)(); // Effect for drawer auto open/close on resize _react.default.useEffect(function () { if ((0, _core.isWidthUp)("md", width) && (0, _core.isWidthDown)("lg", width)) { setOpen(true); } else if ((0, _core.isWidthUp)("sm", width) && (0, _core.isWidthDown)("md", width)) { setOpen(false); } }, [width]); // Effect for language setup on startup and changing lang on url hash changing. _react.default.useEffect(function () { if (!langName) { changeRoute(null, { l: defaultLang.name }); } var newLang = langs.find(function (candidate) { return candidate.name === langName; }) || defaultLang; switchLang(newLang).then(); }, [langName]); // Effect for page scroll reset when changing page. _react.default.useEffect(function () { window.scrollTo(0, 0); }, [routePage]); function switchLangRoute(_x) { return _switchLangRoute.apply(this, arguments); } function _switchLangRoute() { _switchLangRoute = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(inputLang) { return regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: if (!(_typeof(inputLang) !== "object")) { _context.next = 2; break; } throw new TypeError("MaterialDocs: incorrect type of lang, expected Lang, got ".concat(_typeof(inputLang))); case 2: if (!(typeof inputLang.name !== "string")) { _context.next = 4; break; } throw new TypeError("MaterialDocs: incorrect type of lang.name, expected string, got ".concat(_typeof(inputLang.name))); case 4: changeRoute(null, { l: inputLang.name }); case 5: case "end": return _context.stop(); } } }, _callee); })); return _switchLangRoute.apply(this, arguments); } function switchLang(_x2) { return _switchLang.apply(this, arguments); } function _switchLang() { _switchLang = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(inputLang) { var newLang, locale; return regeneratorRuntime.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: newLang = _objectSpread({}, inputLang); if (!(_typeof(inputLang) !== "object")) { _context2.next = 3; break; } throw new TypeError("MaterialDocs: incorrect type of lang, expected Lang, got ".concat(_typeof(inputLang))); case 3: if (!(typeof inputLang.name !== "string")) { _context2.next = 5; break; } throw new TypeError("MaterialDocs: incorrect type of lang.name, expected string, got ".concat(_typeof(inputLang.name))); case 5: if (!(inputLang.locale && _typeof(inputLang.locale) !== "object")) { _context2.next = 9; break; } throw new TypeError("MaterialDocs: incorrect type of lang.locale, expected object, got ".concat(_typeof(inputLang.locale))); case 9: if (inputLang.locale) { _context2.next = 25; break; } if (!(typeof inputLang.loadLang !== "function")) { _context2.next = 12; break; } throw new TypeError("MaterialDocs: incorrect type of lang.loadLang, expected function, got ".concat(_typeof(inputLang.loadLang))); case 12: locale = {}; _context2.prev = 13; _context2.next = 16; return inputLang.loadLang(); case 16: locale = _context2.sent; _context2.next = 22; break; case 19: _context2.prev = 19; _context2.t0 = _context2["catch"](13); throw new Promise.Error("MaterialDocs: failed to load lang. loadLang error: ".concat(_context2.t0.message())); case 22: if (lang) { newLang.locale = _.cloneDeep(defaultLang.locale); _.merge(newLang.locale, locale); } else { newLang.locale = locale; } _context2.next = 26; break; case 25: if (lang) { newLang.locale = _.cloneDeep(defaultLang.locale); _.merge(newLang.locale, inputLang.locale); } case 26: setLang(newLang); case 27: case "end": return _context2.stop(); } } }, _callee2, null, [[13, 19]]); })); return _switchLang.apply(this, arguments); } var addSearchItem = function addSearchItem(item) { return !noGenerateAutoSearch && setSearchData(function (prev) { var newData = new Set(prev); newData.add(item); return newData; }); }; var removeSearchItem = function removeSearchItem(item) { return !noGenerateAutoSearch && setSearchData(function (prev) { var newData = new Set(prev); newData.delete(item); return newData; }); }; var getSearchData = function getSearchData() { return _toConsumableArray(searchData); }; var getMenuFromChildren = function getMenuFromChildren() { var menu = (0, _getContainerByType.default)(children, _DocsMenu.displayName); if (menu && /*#__PURE__*/_react.default.isValidElement(menu)) return /*#__PURE__*/_react.default.cloneElement(menu, { layoutData: autoMenuData }); return null; }; var getPagesFromChildren = function getPagesFromChildren() { return (0, _getChildrenFromContainer.default)(children, _DocsPages.displayName) || []; }; var getLanding = function getLanding() { return (0, _getChildrenFromContainer.default)(children, _Landing.displayName); }; var switchPage = function switchPage(page) { return (0, _goToPage.default)(page, changeRoute); }; // Effect, designed to get pages, menu and landing components from containers. _react.default.useEffect(function () { setContent({ menu: getMenuFromChildren(), pages: getPagesFromChildren(), landing: getLanding() }); }, [children, autoMenuData]); var handleDrawerOpen = function handleDrawerOpen() { setOpen(true); }; var handleDrawerClose = function handleDrawerClose() { setOpen(false); }; function defaultHandleVersionClick() { history.push(""); } return /*#__PURE__*/_react.default.createElement(_useLang.LangContext.Provider, { value: { lang: lang, switchLang: switchLangRoute, langs: langs, onHelpToTranslate: onHelpToTranslate } }, /*#__PURE__*/_react.default.createElement(_useSearch.SearchContext.Provider, { value: { addSearchItem: addSearchItem, removeSearchItem: removeSearchItem, getSearchData: getSearchData } }, /*#__PURE__*/_react.default.createElement(_useSwitchPage.SwitchPageContext.Provider, { value: { switchPage: switchPage, currentPage: null } }, /*#__PURE__*/_react.default.createElement(_reactHelmetAsync.HelmetProvider, null, /*#__PURE__*/_react.default.createElement(_reactHelmetAsync.Helmet, null, /*#__PURE__*/_react.default.createElement("title", null, name || "MaterialDocs"), typeof description === "string" && /*#__PURE__*/_react.default.createElement("meta", { name: "description", content: description }), typeof author === "string" && /*#__PURE__*/_react.default.createElement("meta", { name: "author", content: author }), /*#__PURE__*/_react.default.createElement("meta", { name: "viewport", content: "width=device-width, initial-scale=1.0" }), Array.isArray(keywords) && /*#__PURE__*/_react.default.createElement("meta", { name: "keywords", content: keywords.join(",") })), /*#__PURE__*/_react.default.createElement(_reactRouterDom.Switch, null, content.landing && /*#__PURE__*/_react.default.createElement(_reactRouterDom.Route, { path: "/", exact: true }, /*#__PURE__*/_react.default.createElement(_Box.default, null, content.landing)), /*#__PURE__*/_react.default.createElement(_reactRouterDom.Route, { path: "/" }, /*#__PURE__*/_react.default.createElement(_useMenu.MenuContext.Provider, { value: { openMenu: handleDrawerOpen, closeMenu: handleDrawerClose, menuOpened: open } }, /*#__PURE__*/_react.default.createElement("div", { className: classes.root, ref: ref }, /*#__PURE__*/_react.default.createElement(_CssBaseline.default, null), /*#__PURE__*/_react.default.createElement(_AppBar.default, { position: "fixed", className: (0, _clsx2.default)(classes.appBar, !(0, _core.isWidthDown)("md", width) && _defineProperty({}, classes.appBarShift, open)) }, /*#__PURE__*/_react.default.createElement(_Toolbar.default, { className: classes.toolbar }, /*#__PURE__*/_react.default.createElement(_IconButton.default, { color: "inherit", "aria-label": "open drawer", onClick: handleDrawerOpen, edge: "start", className: (0, _clsx2.default)(classes.menuButton, open && classes.hide) }, /*#__PURE__*/_react.default.createElement(_Menu.default, null)), /*#__PURE__*/_react.default.createElement(_Typography.default, { variant: "h6", noWrap: true, className: classes.headerText }, name || "Material Docs"), !noSearchField && (0, _core.isWidthUp)("md", width) && /*#__PURE__*/_react.default.createElement(_SearchField.default, { searchData: getSearchData() }), !noLanguageSelector && /*#__PURE__*/_react.default.createElement(_LanguageSelector.default, { size: (0, _core.isWidthDown)("xs", width) ? "small" : "large" }), Array.isArray(actions) && actions.map(function (action, index) { return (0, _generateHeaderIcon.default)(changeRoute, "".concat(index), action.icon, action.onClick, action.link, action.tooltip, classes.headerIcon); }))), /*#__PURE__*/_react.default.createElement(_Drawer.default, { className: classes.drawer, variant: (0, _core.isWidthUp)("md", width) ? "persistent" : "temporary", anchor: "left", open: open, classes: { paper: classes.drawerPaper }, onClose: function onClose(event) { return setOpen(false); } }, /*#__PURE__*/_react.default.createElement("div", { className: classes.drawerHeader }, logo && /*#__PURE__*/_react.default.createElement(_ListItemAvatar.default, null, /*#__PURE__*/_react.default.createElement(_Avatar.default, { src: logo, variant: "rounded", onClick: typeof onNameClick === "function" ? onNameClick : defaultHandleVersionClick })), /*#__PURE__*/_react.default.createElement(_ListItemText.default, { primary: /*#__PURE__*/_react.default.createElement(_Link.default, { style: { color: "inherit" }, onClick: typeof onNameClick === "function" ? onNameClick : defaultHandleVersionClick }, name), secondary: /*#__PURE__*/_react.default.createElement(_Link.default, { style: { color: "inherit" }, onClick: typeof onVersionClick === "function" && onVersionClick }, version), primaryTypographyProps: { variant: "h6", noWrap: true }, secondaryTypographyProps: { noWrap: true }, className: classes.version }), /*#__PURE__*/_react.default.createElement(_IconButton.default, { onClick: handleDrawerClose }, theme.direction === 'ltr' ? /*#__PURE__*/_react.default.createElement(_ChevronLeft.default, null) : /*#__PURE__*/_react.default.createElement(_ChevronRight.default, null))), /*#__PURE__*/_react.default.createElement(_Divider.default, null), content.menu), /*#__PURE__*/_react.default.createElement("main", { className: (0, _clsx2.default)(classes.content, _defineProperty({}, classes.contentShift, (0, _core.isWidthUp)("md", width) ? open : true)) }, /*#__PURE__*/_react.default.createElement("div", { className: classes.drawerHeader }), /*#__PURE__*/_react.default.createElement(_PagesGroup.default, { name: "root", getData: function getData(group) { setAutoMenuData(group); } }, content.pages)))))))))); }); DocsLayoutF.propTypes = { // DocsLayoutProps searchData: _propTypes.default.arrayOf(_SearchDataItemValidator.default), noGenerateAutoSearch: _propTypes.default.bool, defaultLang: _LangValidator.default, langs: _propTypes.default.arrayOf(_LangValidator.default), onHelpToTranslate: _propTypes.default.func, autoMenu: _propTypes.default.bool, autoMenuDense: _propTypes.default.bool, noSearchField: _propTypes.default.bool, noLanguageSelector: _propTypes.default.bool, actions: _propTypes.default.arrayOf(_AppBarActionValidator.default), author: _propTypes.default.string, keywords: _propTypes.default.arrayOf(_propTypes.default.string), description: _propTypes.default.string, name: _propTypes.default.string, version: _propTypes.default.string, logo: _propTypes.default.string, onNameClick: _propTypes.default.func, onVersionClick: _propTypes.default.func }; var DocsLayout = (0, _styles3.withStyles)(_styles.styles, { name: displayName })((0, _core.withWidth)()(DocsLayoutF)); var generateClassName = (0, _styles3.createGenerateClassName)({ productionPrefix: 'MaterialDocs' }); var DocsLayoutProviders = /*#__PURE__*/_react.default.forwardRef(function DocsLayoutProviders(props, ref) { var mask = props.mask, _props$router = props.router, router = _props$router === void 0 ? "browser-router" : _props$router, basename = props.basename, other = _objectWithoutProperties(props, ["mask", "router", "basename"]); var routeMask = typeof mask === "string" ? mask : "(/*page)"; var providers = /*#__PURE__*/_react.default.createElement(_routingManager.ChangeRouteProvider, { routeMask: routeMask }, /*#__PURE__*/_react.default.createElement(_styles2.ThemeProvider, { theme: _DefaultTheme.default }, /*#__PURE__*/_react.default.createElement(_styles3.StylesProvider, { generateClassName: generateClassName }, /*#__PURE__*/_react.default.createElement(_notistack.SnackbarProvider, { maxSnack: 3, anchorOrigin: { vertical: "bottom", horizontal: "center" } }, /*#__PURE__*/_react.default.createElement(DocsLayout, _extends({}, other, { ref: ref })))))); return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, router === "browser-router" && /*#__PURE__*/_react.default.createElement(_reactRouterDom.BrowserRouter, { basename: basename }, providers), router === "hash-router" && /*#__PURE__*/_react.default.createElement(_reactRouterDom.HashRouter, { basename: basename }, providers)); }); DocsLayoutProviders.displayName = displayName; DocsLayoutProviders.defaultProps = { noGenerateAutoSearch: false, noSearchField: false, noLanguageSelector: false, actions: [], router: "browser-router", mask: "/(*page)" }; DocsLayoutProviders.propTypes = { // DocsLayoutProps mask: _propTypes.default.string, router: _propTypes.default.oneOf(["hash-router", "browser-router"]), basename: _propTypes.default.string }; var _default = (0, _styles3.withStyles)({}, { name: displayName })(DocsLayoutProviders); exports.default = _default;