UNPKG

docusaurus-theme-redoc

Version:
48 lines 2.01 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 = useSpec; const react_1 = require("react"); const useBaseUrl_1 = __importDefault(require("@docusaurus/useBaseUrl")); const useIsBrowser_1 = __importDefault(require("@docusaurus/useIsBrowser")); const theme_common_1 = require("@docusaurus/theme-common"); require("../global"); const redoc_1 = require("redoc"); const useSpecOptions_1 = require("./useSpecOptions"); // the current store singleton in the app's instance let currentStore = null; /** * Redocusaurus * https://redocusaurus.vercel.app/ * (c) 2024 Rohit Gohri * Released under the MIT License */ function useSpec({ spec, url, themeId, normalizeUrl }, optionsOverrides) { const specOptions = (0, useSpecOptions_1.useSpecOptions)(themeId, optionsOverrides); const absoluteUrl = (0, useBaseUrl_1.default)(url, { absolute: true }); const fullUrl = normalizeUrl ? absoluteUrl : url; const isBrowser = (0, useIsBrowser_1.default)(); const isDarkTheme = (0, theme_common_1.useColorMode)().colorMode === 'dark'; const result = (0, react_1.useMemo)(() => { var _a; if (currentStore !== null && isBrowser) { currentStore.dispose(); } currentStore = new redoc_1.AppStore(spec, fullUrl, specOptions.options); return { ...specOptions, // @ts-expect-error extra prop hasLogo: !!((_a = spec.info) === null || _a === void 0 ? void 0 : _a['x-logo']), store: currentStore, }; }, [isBrowser, spec, fullUrl, specOptions]); (0, react_1.useEffect)(() => { // to ensure that menu is properly loaded when theme gets changed // or when first load result.store.onDidMount(); }, [result, isBrowser, isDarkTheme]); return result; } //# sourceMappingURL=useSpec.js.map