UNPKG

@redocly/theme

Version:

Shared UI components lib

43 lines 2.09 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.useSearchDialog = useSearchDialog; const react_1 = require("react"); const react_router_dom_1 = require("react-router-dom"); const hotkeys_js_1 = __importDefault(require("hotkeys-js")); const hooks_1 = require("../../../core/hooks"); function useSearchDialog() { var _a, _b; const [isOpen, setIsOpen] = (0, react_1.useState)(false); const themeSettings = (0, hooks_1.useThemeConfig)(); const location = (0, react_router_dom_1.useLocation)(); const { useOtelTelemetry } = (0, hooks_1.useThemeHooks)(); const otelTelemetry = useOtelTelemetry(); const keyShortcuts = (_b = (_a = themeSettings === null || themeSettings === void 0 ? void 0 : themeSettings.search) === null || _a === void 0 ? void 0 : _a.shortcuts) !== null && _b !== void 0 ? _b : ['/']; const hotKeys = keyShortcuts === null || keyShortcuts === void 0 ? void 0 : keyShortcuts.join(','); (0, react_1.useEffect)(() => { if (hotKeys) { (0, hotkeys_js_1.default)(hotKeys, (ev) => { setIsOpen(true); otelTelemetry.send({ type: 'search.opened', payload: { method: 'shortcut' } }); ev.preventDefault(); }); return () => hotkeys_js_1.default.unbind(hotKeys); } // eslint-disable-next-line react-hooks/exhaustive-deps }, [hotKeys]); const onOpen = (0, react_1.useCallback)(function () { otelTelemetry.send({ type: 'search.opened', payload: { method: 'click' } }); setIsOpen(true); // eslint-disable-next-line react-hooks/exhaustive-deps }, []); const onClose = (0, react_1.useCallback)(() => { setIsOpen(false); }, []); // eslint-disable-next-line react-hooks/exhaustive-deps (0, react_1.useEffect)(onClose, [location]); return { isOpen, onOpen, onClose }; } //# sourceMappingURL=use-search-dialog.js.map