UNPKG

@chargeover/docusaurus-theme-redoc

Version:
65 lines 2.74 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.useSpec = void 0; const react_1 = require("react"); const useBaseUrl_1 = __importDefault(require("@docusaurus/useBaseUrl")); const useIsBrowser_1 = __importDefault(require("@docusaurus/useIsBrowser")); const useGlobalData_1 = require("@docusaurus/useGlobalData"); const theme_common_1 = require("@docusaurus/theme-common"); const merge_1 = __importDefault(require("lodash/merge")); require("../global"); const redoc_1 = require("@chargeover/redoc"); /** * Redocusaurus * https://rohit-gohri.github.io/redocusaurus/ * (c) 2022 Rohit Gohri * Released under the MIT License */ function useSpec({ spec, url, themeId }, optionsOverrides) { const fullUrl = (0, useBaseUrl_1.default)(url, { absolute: true }); const isBrowser = (0, useIsBrowser_1.default)(); const isDarkTheme = (0, theme_common_1.useColorMode)().colorMode === 'dark'; const themeOptions = (0, useGlobalData_1.usePluginData)('docusaurus-theme-redoc', themeId); const stores = (0, react_1.useMemo)(() => { const { lightTheme, darkTheme, options: redocOptions } = themeOptions; const commonOptions = { // Disable offset when server rendering and set to selector scrollYOffset: !isBrowser && typeof redocOptions.scrollYOffset === 'string' ? 0 : redocOptions.scrollYOffset, }; const darkStore = new redoc_1.AppStore( // eslint-disable-next-line @typescript-eslint/no-explicit-any spec, fullUrl, (0, merge_1.default)({ ...redocOptions, ...commonOptions, theme: darkTheme, }, optionsOverrides)); const lightStore = new redoc_1.AppStore( // eslint-disable-next-line @typescript-eslint/no-explicit-any spec, fullUrl, (0, merge_1.default)({ ...redocOptions, ...commonOptions, theme: lightTheme, }, optionsOverrides)); return { darkStore, lightStore, }; }, [isBrowser, spec, fullUrl, themeOptions, optionsOverrides]); const result = (0, react_1.useMemo)(() => { var _a; return { ...stores, // @ts-expect-error extra prop hasLogo: !!((_a = spec.info) === null || _a === void 0 ? void 0 : _a['x-logo']), store: isBrowser && isDarkTheme ? stores.darkStore : stores.lightStore, }; }, [isBrowser, isDarkTheme, spec, stores]); return result; } exports.useSpec = useSpec; //# sourceMappingURL=useSpec.js.map