@diplodoc/client 3.10.3 → 3.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/build/client/app-2c83962500db98f3.js +2 -0
  3. package/build/client/app-2c83962500db98f3.js.map +1 -0
  4. package/build/client/app-34c68624e23be7ce.css.map +1 -1
  5. package/build/client/manifest.json +8 -8
  6. package/build/client/search-7dc3bfe50645287d.js +2 -0
  7. package/build/client/search-7dc3bfe50645287d.js.map +1 -0
  8. package/build/client/search-b82629d53f2e437c.css.map +1 -1
  9. package/build/client/{vendor-9aa0609c11103fb0.rtl.css → vendor-133b7f840d4bd15c.rtl.css} +1 -1
  10. package/build/client/{vendor-5c42c2d82fe19c6e.css → vendor-14432c0205e2d1bb.css} +2 -2
  11. package/build/client/vendor-14432c0205e2d1bb.css.map +1 -0
  12. package/build/client/{vendor-0ca3ecbd78ee745e.js → vendor-f38539851c503793.js} +4 -4
  13. package/build/client/vendor-f38539851c503793.js.map +1 -0
  14. package/build/components/App/useAvailableLangs.d.ts +3 -0
  15. package/build/components/HeaderControls/index.d.ts +2 -1
  16. package/build/components/Search/Page.d.ts +3 -0
  17. package/build/components/Search/index.d.ts +9 -3
  18. package/build/server/app.js +462 -352
  19. package/build/server/app.js.map +1 -1
  20. package/build/server/vendor.js +38 -14
  21. package/build/server/vendor.js.map +1 -1
  22. package/package.json +2 -2
  23. package/build/client/app-5320a31c05d20641.js +0 -2
  24. package/build/client/app-5320a31c05d20641.js.map +0 -1
  25. package/build/client/search-81a7f828ef481c84.js +0 -2
  26. package/build/client/search-81a7f828ef481c84.js.map +0 -1
  27. package/build/client/vendor-0ca3ecbd78ee745e.js.map +0 -1
  28. package/build/client/vendor-5c42c2d82fe19c6e.css.map +0 -1
  29. package/build/components/Search/Search.d.ts +0 -3
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sources":["webpack://@diplodoc/client/./src/components/Router/index.ts","webpack://@diplodoc/client/./src/components/index.ts","webpack://@diplodoc/client/./src/hooks/useLang.ts","webpack://@diplodoc/client/./src/components/Search/provider/utils/searchLink.ts","webpack://@diplodoc/client/./src/components/Search/provider/index.ts","webpack://@diplodoc/client/./src/components/Search/useProvider.ts","webpack://@diplodoc/client/./src/components/Search/Search.tsx","webpack://@diplodoc/client/./src/components/Search/index.ts","webpack://@diplodoc/client/./src/constants.ts","webpack://@diplodoc/client/./src/utils.ts","webpack://@diplodoc/client/./src/components/Layout/index.tsx","webpack://@diplodoc/client/./src/components/ConstructorPage/index.tsx","webpack://@diplodoc/client/./src/components/ConstructorPage/useContent.tsx","webpack://@diplodoc/client/./src/components/Search/Suggest.tsx","webpack://@diplodoc/client/./src/components/HeaderControls/index.tsx","webpack://@diplodoc/client/./src/components/ConstructorPage/useNavigation.tsx","webpack://@diplodoc/client/./src/components/App/Page.tsx","webpack://@diplodoc/client/./src/components/App/Runtime.tsx","webpack://@diplodoc/client/./src/components/App/useLangs.ts","webpack://@diplodoc/client/./src/components/App/useSettings.ts","webpack://@diplodoc/client/./src/components/App/useMobile.ts","webpack://@diplodoc/client/./src/components/App/withMdxInit.tsx","webpack://@diplodoc/client/./src/components/App/index.tsx","webpack://@diplodoc/client/./src/preprocess.ts","webpack://@diplodoc/client/./src/index.server.tsx","webpack://@diplodoc/client/./src/interceptors/leading-page-links.js","webpack://@diplodoc/client/./src/stub/empty-module.js","webpack://@diplodoc/client/webpack/runtime/compat_get_default_export","webpack://@diplodoc/client/webpack/runtime/create_fake_namespace_object","webpack://@diplodoc/client/webpack/runtime/define_property_getters","webpack://@diplodoc/client/webpack/runtime/ensure_chunk","webpack://@diplodoc/client/webpack/runtime/get javascript chunk filename","webpack://@diplodoc/client/webpack/runtime/has_own_property","webpack://@diplodoc/client/webpack/runtime/make_namespace_object","webpack://@diplodoc/client/webpack/runtime/node_module_decorator","webpack://@diplodoc/client/webpack/runtime/on_chunk_loaded","webpack://@diplodoc/client/webpack/runtime/public_path","webpack://@diplodoc/client/webpack/runtime/startup_chunk_dependencies","webpack://@diplodoc/client/webpack/runtime/require_chunk_loading"],"sourcesContent":["import type {Router} from '@diplodoc/components';\n\nimport {createContext, useContext} from 'react';\n\nexport interface RouterConfig extends Router {\n depth: number;\n}\n\nexport const RouterContext = createContext<RouterConfig>({\n pathname: '/',\n depth: 0,\n});\n\nRouterContext.displayName = 'RouterContext';\n\nexport const RouterProvider = RouterContext.Provider;\n\nexport function useRouter() {\n return useContext(RouterContext);\n}\n","export {SearchContext, SearchProvider, useSearch} from './Search';\nexport {RouterContext, RouterProvider, useRouter} from './Router';\n\nexport {App} from './App';\n","import {createContext, useContext} from 'react';\nimport {Lang} from '@diplodoc/components';\n\nconst LangContext = createContext<`${Lang}` | Lang>(Lang.En);\n\nLangContext.displayName = 'Lang';\n\nexport const LangProvider = LangContext.Provider;\n\nexport function useLang() {\n return useContext(LangContext);\n}\n","import type {SearchConfig} from '../../types';\n\nexport function buildSearchLink(base: string, config: SearchConfig, query?: string, page = 1) {\n const searchParams = new URLSearchParams();\n\n if (query) searchParams.set('query', query);\n if (page > 1) searchParams.set('page', page.toString());\n\n const params = searchParams.toString() ? `?${searchParams.toString()}` : '';\n const link = `${base}/${config.link}${params}`;\n\n return link;\n}\n","import type {ISearchProvider, ISearchResult} from '@diplodoc/components';\nimport type {SearchConfig, SearchProviderExtended, WorkerConfig} from '../types';\n\nimport {buildSearchLink} from './utils/searchLink';\n\nexport class DefaultSearchProvider implements ISearchProvider, SearchProviderExtended {\n private worker!: Promise<Worker>;\n\n private config: SearchConfig;\n\n constructor(config: SearchConfig) {\n this.config = config;\n }\n\n init = () => {\n this.worker = initWorker({\n ...this.config,\n base: this.base,\n mark: 'Suggest__Item__Marker',\n });\n };\n\n async suggest(query: string) {\n return this.request({\n type: 'suggest',\n query,\n }) as Promise<ISearchResult[]>;\n }\n\n async search(query: string, page = 1, count = 10) {\n return this.request({\n type: 'search',\n query,\n page,\n count,\n }) as Promise<{items: ISearchResult[]; total: number}>;\n }\n\n link = (query: string, page = 1) => buildSearchLink(this.base, this.config, query, page);\n\n private get base() {\n return window.location.href.split('/').slice(0, -this.config.depth).join('/');\n }\n\n private async request(message: object) {\n return request(await this.worker, message);\n }\n}\n\nconst BAD_ORIGIN_ERROR = /Script at '(.*?)' cannot be accessed from origin/;\n\nasync function loadWorker() {\n try {\n return new Worker(new URL('../worker/index.ts', import.meta.url));\n } catch (error) {\n if (error instanceof DOMException) {\n const match = BAD_ORIGIN_ERROR.exec(error.message);\n if (match) {\n const url = match[1];\n const blob = new Blob([`importScripts('${url}');`], {type: 'text/javascript'});\n\n return new Worker(URL.createObjectURL(blob));\n }\n }\n\n throw error;\n }\n}\n\nasync function initWorker(config: WorkerConfig) {\n const worker = await loadWorker();\n\n await request(worker, {...config, type: 'init'});\n\n return worker;\n}\n\nfunction request(worker: Worker, message: object) {\n const channel = new MessageChannel();\n\n return new Promise((resolve, reject) => {\n channel.port1.onmessage = (message) => {\n if (message.data.error) {\n reject(message.data.error);\n } else {\n resolve(message.data.result);\n }\n };\n\n channel.port1.onmessageerror = (message) => {\n reject(message.data.error);\n };\n\n worker.postMessage(message, [channel.port2]);\n });\n}\n\nexport function createProvider(config: SearchConfig): ISearchProvider | null {\n if (!config) {\n return null;\n }\n\n return new DefaultSearchProvider(config);\n}\n\nexport const SearchProvider = DefaultSearchProvider;\n","import type {ISearchProvider} from '@diplodoc/components';\n\nimport {useContext, useEffect, useMemo, useState} from 'react';\n\nimport {RouterContext, SearchContext} from '../index';\nimport {useLang} from '../../hooks/useLang';\n\nimport {createProvider} from './provider';\n\nexport function useProvider() {\n const lang = useLang();\n const {depth = 0} = useContext(RouterContext);\n const search = useContext(SearchContext);\n const [provider, setProvider] = useState<ISearchProvider | null>(null);\n\n const config = useMemo(() => {\n if (!search) {\n return null;\n }\n\n return {\n ...search,\n depth,\n lang,\n };\n }, [lang, depth, search]);\n\n useEffect(() => {\n if (config) {\n setProvider(createProvider(config));\n }\n }, [config]);\n\n return provider;\n}\n","import type {FormattedSearchResultData, SearchProviderExtended, SearchResultData} from './types';\n\nimport React, {useCallback, useEffect, useRef, useState} from 'react';\nimport {SearchPage} from '@diplodoc/components';\nimport block from 'bem-cn-lite';\n\nimport {useRouter} from '../Router';\n\nimport {useProvider} from './useProvider';\nimport './Search.scss';\n\nconst b = block('Search');\n\nfunction getUrlParams() {\n const params = new URLSearchParams(window.location.search);\n return {\n query: params.get('query') || '',\n page: Number(params.get('page')) || 1,\n };\n}\n\nfunction setUrlParams(query: string, page: number) {\n const params = new URLSearchParams();\n if (query) params.set('query', query);\n if (page > 1) params.set('page', String(page));\n window.history.pushState({}, '', `?${params.toString()}`);\n}\n\nfunction formatResults(searchResults: SearchResultData[]): FormattedSearchResultData {\n if (!Array.isArray(searchResults)) return [];\n return searchResults.map((result) => ({\n title: result?.title || result?.hierarchy?.lvl0 || result?.hierarchy?.lvl1 || '',\n url: result?.url || result?.link || '#',\n description: result?.description || result?.content || result?.text || '',\n section: result?.section || result?.hierarchy?.lvl1 || '',\n }));\n}\n\nconst ITEMS_PER_PAGE = 10;\n\nexport const Search: React.FC = () => {\n const provider = useProvider();\n const router = useRouter();\n\n const [query, setQuery] = useState<string>('');\n const [page, setPage] = useState<number>(1);\n const [results, setResults] = useState<FormattedSearchResultData>([]);\n const [total, setTotal] = useState<number>(0);\n const [loading, setLoading] = useState<boolean>(false);\n\n const providerRef = useRef<SearchProviderExtended | null>(null);\n\n useEffect(() => {\n providerRef.current = provider as SearchProviderExtended;\n provider?.init?.();\n }, [provider]);\n\n useEffect(() => {\n const {query: q, page: p} = getUrlParams();\n\n setQuery(q);\n setPage(p);\n }, [router]);\n\n useEffect(() => {\n if (query && providerRef.current) {\n setLoading(true);\n\n providerRef.current\n .search(query, page, ITEMS_PER_PAGE)\n .then((searchResults) => {\n const {items, total} = searchResults;\n const formatted = formatResults(items ?? []);\n\n setResults(formatted);\n setTotal(total);\n })\n .catch(() => {\n setResults([]);\n setTotal(0);\n })\n .finally(() => setLoading(false));\n } else {\n setResults([]);\n setTotal(0);\n }\n }, [query, page, provider]);\n\n const handlePageChange = useCallback(\n (newPage: number) => {\n setUrlParams(query, newPage);\n setPage(newPage);\n },\n [query],\n );\n\n const handleQueryChange = useCallback((newQuery: string) => {\n setUrlParams(newQuery, 1);\n setQuery(newQuery);\n setPage(1);\n }, []);\n\n return (\n <div className={b()}>\n <SearchPage\n query={query}\n items={results}\n page={page}\n totalItems={total}\n onPageChange={handlePageChange}\n onSubmit={handleQueryChange}\n loading={loading}\n />\n </div>\n );\n};\n","import type {SearchConfig, SearchData, WorkerApi, WorkerConfig} from './types';\n\nimport {createContext, useContext} from 'react';\n\nexport type {SearchConfig, WorkerConfig, WorkerApi};\n\nexport const SearchContext = createContext<SearchConfig | SearchData | null | undefined>(null);\n\nSearchContext.displayName = 'SearchContext';\n\nexport const SearchProvider = SearchContext.Provider;\n\nexport {Search} from './Search';\n\nexport function useSearch() {\n return useContext(SearchContext);\n}\n","import {TextSizes, Theme} from '@diplodoc/components';\n\nexport const HEADER_HEIGHT = 64;\n\nexport const MOBILE_VIEW_WIDTH_BREAKPOINT = 769;\n\nexport const DEFAULT_USER_SETTINGS = {\n theme: Theme.Light,\n textSize: TextSizes.M,\n showMiniToc: true,\n wideFormat: true,\n fullScreen: false,\n};\n\nexport const RTL_LANGS = [\n 'ar',\n 'arc',\n 'ckb',\n 'dv',\n 'fa',\n 'ha',\n 'he',\n 'khw',\n 'ks',\n 'ps',\n 'sd',\n 'ur',\n 'uz_AF',\n 'yi',\n];\n\nexport enum TextDirection {\n RTL = 'rtl',\n LTR = 'ltr',\n}\n\nexport const LINK_KEYS_LEADING_CONFIG = ['href'];\nexport const LINK_KEYS_PAGE_CONSTRUCTOR_CONFIG = [\n 'src',\n 'url',\n 'href',\n 'icon',\n 'image',\n 'desktop',\n 'mobile',\n 'tablet',\n 'previewImg',\n 'image',\n 'avatar',\n 'logo',\n 'light',\n 'dark',\n];\n\nexport const LINK_KEYS = [\n ...new Set([...LINK_KEYS_LEADING_CONFIG, ...LINK_KEYS_PAGE_CONSTRUCTOR_CONFIG]),\n];\n","import type {PageData} from './components/App';\nimport type {Lang, Theme} from '@diplodoc/components';\n\nimport {getPageType} from '@diplodoc/components';\n\nimport {\n DEFAULT_USER_SETTINGS,\n MOBILE_VIEW_WIDTH_BREAKPOINT,\n RTL_LANGS,\n TextDirection,\n} from './constants';\n\nexport function isBrowser() {\n return typeof document !== 'undefined';\n}\n\nexport function updateThemeClassName({theme}: {theme: Theme}) {\n if (typeof document === 'undefined') {\n return;\n }\n\n document.querySelectorAll('.g-root').forEach((el) => {\n el.classList.toggle('g-root_theme_light', theme === 'light');\n el.classList.toggle('g-root_theme_dark', theme === 'dark');\n });\n}\n\nexport function updateRootClassName(states: {\n mobileView?: boolean;\n wideFormat?: boolean;\n fullScreen?: boolean;\n focusSearch?: boolean;\n landingPage?: boolean;\n}) {\n if (!isBrowser()) {\n return;\n }\n\n document.body.classList.add('g-root');\n\n const toggle = (name: string, state: unknown) =>\n document.body.classList.toggle(name, Boolean(state));\n\n Object.keys(states).forEach((state) => {\n switch (state) {\n case 'wideFormat':\n toggle('dc-root_wide-format', states[state]);\n break;\n case 'focusSearch':\n toggle('dc-root_focused-search', states[state]);\n break;\n case 'fullScreen':\n toggle('dc-root_full-screen', states[state]);\n break;\n case 'landingPage':\n toggle('dc-root_document-page', !states[state]);\n toggle('dc-root_landing-page', states[state]);\n break;\n case 'mobileView':\n toggle('mobile', states[state]);\n toggle('desktop', !states[state]);\n break;\n }\n });\n}\n\nexport function getDirection(lang: `${Lang}` | Lang): TextDirection {\n const isRTL = RTL_LANGS.includes(lang);\n\n return isRTL ? TextDirection.RTL : TextDirection.LTR;\n}\n\nconst toBoolean = (str: string | boolean) => {\n if (typeof str === 'boolean') {\n return str;\n }\n\n return str ? str === 'true' : false;\n};\n\nexport type Settings = typeof DEFAULT_USER_SETTINGS;\n\nexport function getSettings() {\n const theme = getSetting('theme');\n const textSize = getSetting('textSize');\n const showMiniToc = getSetting('showMiniToc');\n const wideFormat = getSetting('wideFormat');\n const fullScreen = getSetting('fullScreen');\n\n return {\n theme,\n textSize,\n showMiniToc: toBoolean(showMiniToc),\n wideFormat: toBoolean(wideFormat),\n fullScreen: toBoolean(fullScreen),\n };\n}\n\nexport function getLandingPage(data: PageData) {\n return getPageType(data) === 'PAGE_CONSTRUCTOR';\n}\n\nexport function getMobileView() {\n if (!isBrowser()) {\n return false;\n }\n\n return document.body.clientWidth < MOBILE_VIEW_WIDTH_BREAKPOINT;\n}\n\nfunction getSetting<T extends keyof Settings>(name: T): Settings[T] {\n if (!isBrowser()) {\n return DEFAULT_USER_SETTINGS[name];\n }\n\n try {\n return (sessionStorage.getItem(name) as Settings[T]) || DEFAULT_USER_SETTINGS[name];\n } catch {\n return DEFAULT_USER_SETTINGS[name];\n }\n}\n\nexport function setSetting<T>(name: string, value: T) {\n if (!isBrowser()) {\n return;\n }\n\n try {\n sessionStorage.setItem(name, String(value));\n } catch {}\n}\n\nexport function isDetailsTag(el: HTMLElement): el is HTMLDetailsElement {\n return el?.tagName.toLowerCase() === 'details';\n}\n\nexport function isHeaderTag(el: HTMLElement) {\n return ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'].indexOf(el.tagName) !== -1;\n}\n\n/**\n * Scrolls to the element.\n * If the element is a heading - simply scrolls to it, since needed offset is already in css.\n * If the element is of any other type - calculate the offset form the element position in heading and scroll to it.\n * @param {HTMLElement} el\n */\n\nexport function scrollToElement(el: HTMLElement, offset = 200) {\n if (isInViewport(el)) {\n return;\n }\n\n if (isHeaderTag(el)) {\n // Header already includes the offset in css\n // That puts it where we want it when it's scrolled to\n el.scrollIntoView();\n } else {\n const elementPosition = el.getBoundingClientRect().top;\n const offsetPosition = elementPosition + window.scrollY - offset;\n\n window.scrollTo({\n top: offsetPosition,\n });\n }\n}\n\nexport function getLangPath(lang: string, href: string) {\n const path = href.replace(/^https?:\\/\\/[^/]+/, '').replace(/^\\/[a-z]{2}\\//, '/');\n\n return `${lang}${path}`;\n}\n\nfunction isInViewport(el: HTMLElement) {\n const rect = el.getBoundingClientRect();\n\n return (\n rect.top >= 0 &&\n rect.bottom <= (window.innerHeight || document.documentElement.clientHeight)\n );\n}\n\nexport function scrollToHash() {\n const hash = window.location.hash.substring(1);\n\n if (!hash) {\n return;\n }\n\n const element = document.getElementById(hash);\n\n if (!element) {\n return;\n }\n\n let node = element?.parentElement;\n while (node) {\n if (isDetailsTag(node)) {\n node.open = true;\n }\n node = node.parentElement;\n }\n\n element.focus();\n\n setTimeout(() => {\n scrollToElement(element);\n }, 10);\n}\n","import type {FC, PropsWithChildren, ReactElement} from 'react';\n\nimport React from 'react';\nimport block from 'bem-cn-lite';\n\nimport './Layout.scss';\n\nconst b = block('Layout');\n\nfunction Header() {\n return null;\n}\n\nfunction Content() {\n return null;\n}\n\nfunction Footer() {\n return null;\n}\n\ntype LayoutStatics = {\n Header: FC<PropsWithChildren>;\n Content: FC<PropsWithChildren>;\n Footer: FC<PropsWithChildren>;\n};\n\ntype LayoutProps = {\n doc?: boolean;\n headerHeight?: number;\n};\n\nconst defaults = {\n doc: false,\n};\n\nexport const Layout: LayoutStatics & FC<PropsWithChildren<LayoutProps>> = (props) => {\n const {children, doc, headerHeight = 0} = {...defaults, ...props};\n let header, content, footer;\n\n React.Children.forEach(children as ReactElement[], (child: ReactElement) => {\n switch (child.type) {\n case Header:\n header = child.props.children;\n break;\n case Content:\n content = child.props.children;\n break;\n case Footer:\n footer = child.props.children;\n break;\n }\n });\n\n return (\n <div className={b({'full-header': headerHeight > 0})}>\n {header && <div className={b('header')}>{header}</div>}\n <div className={b('body')}>\n {content && <div className={b('content')}>{content}</div>}\n {footer && <div className={b('footer', {doc})}>{footer}</div>}\n </div>\n </div>\n );\n};\n\nLayout.displayName = 'Layout';\n\nLayout.Header = Header;\nLayout.Content = Content;\nLayout.Footer = Footer;\n","import type {PropsWithChildren} from 'react';\nimport type {PageContent} from '@gravity-ui/page-constructor';\n\nimport React from 'react';\nimport block from 'bem-cn-lite';\nimport {\n BackgroundMedia,\n Col,\n ConstructorBlocks,\n Grid,\n Row,\n getThemedValue,\n useTheme,\n} from '@gravity-ui/page-constructor';\n\nconst bPC = block('pc-page-constructor');\nconst bPCRow = block('pc-constructor-row');\n\nexport const ConstructorRow = ({children}: PropsWithChildren) =>\n children ? (\n <Row className={bPCRow()}>\n <Col>{children}</Col>\n </Row>\n ) : null;\n\nexport function ConstructorPage({background, blocks}: PageContent) {\n const theme = useTheme();\n const themedBackground = getThemedValue(background, theme);\n\n return (\n <div className={bPC('docs')}>\n <div className={bPC('wrapper')}>\n {blocks && themedBackground && (\n <BackgroundMedia {...themedBackground} className={bPC('background')} />\n )}\n <Grid>\n <ConstructorRow>\n <ConstructorBlocks items={blocks} />\n </ConstructorRow>\n </Grid>\n </div>\n </div>\n );\n}\n","import type {ReactNode} from 'react';\nimport type {PageContent} from '@gravity-ui/page-constructor';\nimport type {DocContentPageData} from '@diplodoc/components';\n\nimport {DocumentType, getPageType} from '@diplodoc/components';\nimport {useMemo} from 'react';\n\nexport const useContent = (data: DocContentPageData, CustomPage: () => ReactNode) => {\n const type = getPageType(data);\n const fullScreen =\n type === DocumentType.PageConstructor &&\n 'data' in data &&\n 'fullScreen' in data.data &&\n data.data.fullScreen;\n\n const layout = useMemo(\n () =>\n fullScreen\n ? (data.data as PageContent)\n : {\n blocks: [\n {\n type: 'page',\n resetPaddings: true,\n },\n ],\n },\n [fullScreen, data],\n );\n\n const config = useMemo(\n () => ({\n custom: {\n page: CustomPage,\n },\n layout,\n }),\n [CustomPage, layout],\n );\n\n return config;\n};\n","import type {ISearchProvider, SearchSuggestApi} from '@diplodoc/components';\n\nimport React, {useCallback, useRef} from 'react';\nimport {SearchSuggest, useInterface} from '@diplodoc/components';\nimport {Icon} from '@gravity-ui/uikit';\nimport {Magnifier} from '@gravity-ui/icons';\nimport block from 'bem-cn-lite';\n\nimport {updateRootClassName} from '../../utils';\n\nimport {useProvider} from './useProvider';\nimport './Suggest.scss';\n\nconst b = block('Suggest');\n\nfunction SearchButton() {\n return <Icon data={Magnifier} className={b('end')} size={24} />;\n}\n\nexport function Suggest() {\n const provider: ISearchProvider | null = useProvider();\n const suggest = useRef<SearchSuggestApi>(null);\n const isSearchHidden = useInterface('search');\n\n const onFocus = useCallback(() => {\n updateRootClassName({focusSearch: true});\n }, []);\n\n const onBlur = useCallback(() => {\n updateRootClassName({focusSearch: false});\n setTimeout(() => {\n if (suggest.current) {\n suggest.current.close();\n }\n }, 100);\n }, []);\n\n if (!provider || isSearchHidden) {\n return null;\n }\n\n return (\n <SearchSuggest\n ref={suggest}\n provider={provider}\n onFocus={onFocus}\n onBlur={onBlur}\n endContent={<SearchButton />}\n className={b('input')}\n classNameContainer={b()}\n classNameClose={b('close')}\n closeButton={true}\n />\n );\n}\n","import type {Lang, TextSizes, Theme} from '@diplodoc/components';\n\nimport React, {memo} from 'react';\nimport {ControlSizes, Controls, ControlsLayout} from '@diplodoc/components';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype OnChangeCallback = (value: any) => void;\n\nexport type Props = {\n mobileView: boolean;\n\n theme: Theme;\n onChangeTheme: OnChangeCallback;\n textSize: TextSizes;\n onChangeTextSize: OnChangeCallback;\n wideFormat: boolean;\n onChangeWideFormat: OnChangeCallback;\n showMiniToc: boolean;\n onChangeShowMiniToc: OnChangeCallback;\n lang: Lang | `${Lang}`;\n langs: (Lang | `${Lang}`)[];\n onChangeLang?: (lang: `${Lang}` | Lang) => void;\n};\n\nexport const HeaderControls = memo<Props>(\n ({\n mobileView,\n\n theme,\n onChangeTheme,\n\n textSize,\n onChangeTextSize,\n\n wideFormat,\n onChangeWideFormat,\n\n showMiniToc,\n onChangeShowMiniToc,\n\n lang,\n langs,\n onChangeLang,\n }) => {\n return (\n <ControlsLayout\n controlClassName={'Control'}\n controlSize={ControlSizes.L}\n isWideView={mobileView}\n isMobileView={mobileView}\n >\n <Controls\n className={'Controls'}\n theme={theme}\n onChangeTheme={onChangeTheme}\n wideFormat={wideFormat}\n onChangeWideFormat={onChangeWideFormat}\n showMiniToc={showMiniToc}\n onChangeShowMiniToc={onChangeShowMiniToc}\n textSize={textSize}\n onChangeTextSize={onChangeTextSize}\n lang={lang}\n langs={langs}\n onChangeLang={onChangeLang}\n />\n </ControlsLayout>\n );\n },\n);\n\nHeaderControls.displayName = 'HeaderControls';\n","import type {ReactNode} from 'react';\nimport type {NavigationData, NavigationItemModel} from '@gravity-ui/page-constructor';\nimport type {DocBasePageData} from '@diplodoc/components';\nimport type {WithNavigation} from '../App';\nimport type {Props as HeaderControlsProps} from '../HeaderControls';\n\nimport React, {useMemo} from 'react';\nimport {ControlSizes, CustomNavigation, MobileDropdown} from '@diplodoc/components';\n\nimport {HEADER_HEIGHT} from '../../constants';\nimport {useRouter, useSearch} from '../';\n\nfunction findItem(right: NavigationItemModel[], left: NavigationItemModel[], type: string) {\n return right.some((item) => item.type === type) || left.some((item) => item.type === type);\n}\n\ntype NavigationDataWithOptionalLogo = Omit<NavigationData, 'logo'> & {\n logo?: NavigationData['logo'];\n};\n\nexport const useNavigation = (\n data: DocBasePageData<WithNavigation>,\n controls: HeaderControlsProps,\n CustomControls: () => ReactNode,\n CustomSuggest: () => ReactNode,\n viewerInterface?: Record<string, boolean>,\n) => {\n const {toc} = data;\n const {navigation} = toc;\n const {header = {} as NavigationData['header'], logo}: NavigationDataWithOptionalLogo =\n navigation;\n const {leftItems = [], rightItems = []} = header as NavigationData['header'];\n\n const withControls = findItem(rightItems, leftItems, 'controls');\n const withSearch = findItem(rightItems, leftItems, 'search');\n\n const search = useSearch();\n const router = useRouter();\n\n if (search && !withSearch) {\n rightItems.unshift({type: 'search'} as unknown as NavigationItemModel);\n }\n\n const navigationData = useMemo(\n () => ({\n withBorder: true,\n leftItems: leftItems,\n rightItems: rightItems,\n customMobileHeaderItems: [{type: 'search'} as unknown as NavigationItemModel],\n }),\n [leftItems, rightItems],\n );\n const navigationTocData = useMemo(\n () => ({\n toc,\n router,\n headerHeight: HEADER_HEIGHT,\n }),\n [toc, router],\n );\n const mobileControlsData = useMemo(\n () => ({\n controlSize: ControlSizes.L,\n userSettings: controls,\n viewerInterface,\n }),\n [controls, viewerInterface],\n );\n\n const layout = useMemo(\n () => ({\n header: {\n leftItems: [],\n },\n renderNavigation: () => (\n <CustomNavigation\n logo={{...logo, icon: logo?.icon ?? ''}}\n data={navigationData}\n navigationTocData={navigationTocData}\n mobileControlsData={mobileControlsData}\n />\n ),\n logo: {...logo, icon: logo?.icon ?? ''},\n }),\n [navigationData, navigationTocData, mobileControlsData, logo],\n );\n\n const config = useMemo(\n () => ({\n custom: {\n search: CustomSuggest,\n controls: CustomControls,\n MobileDropdown: MobileDropdown,\n },\n layout,\n withControls,\n }),\n [CustomSuggest, CustomControls, layout, withControls],\n );\n\n return config;\n};\n","import type {PropsWithChildren} from 'react';\nimport type {AppProps, DocContentPageData, PageData, WithNavigation} from './index';\nimport type {Settings} from '../../utils';\nimport type {DocBasePageData} from '@diplodoc/components';\nimport type {Props as HeaderControlsProps} from '../HeaderControls';\n\nimport React, {useCallback, useMemo} from 'react';\nimport {PageConstructor, PageConstructorProvider} from '@gravity-ui/page-constructor';\nimport {getPageByType, getPageType} from '@diplodoc/components';\n\nimport {Layout} from '../Layout';\nimport {ConstructorPage} from '../ConstructorPage';\nimport {useContent} from '../ConstructorPage/useContent';\nimport {Suggest} from '../Search/Suggest';\nimport {HeaderControls} from '../HeaderControls';\nimport {useNavigation} from '../ConstructorPage/useNavigation';\n\ntype Props = PropsWithChildren<Partial<AppProps> & {data: PageData; headerHeight: number}>;\n\nexport function Page({data, ...pageProps}: Props) {\n const type = getPageType(data);\n const Page = getPageByType(type);\n\n return (\n <Layout headerHeight={pageProps.headerHeight}>\n <Layout.Content>\n {/*@ts-ignore*/}\n <Page {...data} {...pageProps} />\n </Layout.Content>\n </Layout>\n );\n}\n\ntype PageProps<T extends {} = {}> = {\n data: DocBasePageData<T> & PageData;\n props: {\n router: AppProps['router'];\n } & Settings;\n controls: HeaderControlsProps;\n};\n\nexport function LegacyNavPage({data, props, controls}: PageProps) {\n const {theme} = props;\n\n const CustomPage = useCallback(\n () => <ConstructorPage {...(data as DocContentPageData).data} />,\n [data],\n );\n const content = useContent(data as DocContentPageData, CustomPage);\n\n const custom = useMemo(\n () => ({\n blocks: content.custom,\n }),\n [content],\n );\n\n return (\n <Page data={data} headerHeight={0} {...props} {...controls}>\n <PageConstructorProvider\n theme={theme}\n projectSettings={{disableCompress: true}}\n ssrConfig={{\n isServer: Boolean(process.env.BROWSER),\n }}\n >\n <PageConstructor custom={custom} content={content.layout} />\n </PageConstructorProvider>\n </Page>\n );\n}\n\nexport function RichNavPage({data, props, controls}: PageProps<WithNavigation>) {\n const {theme, fullScreen} = props;\n\n const CustomSuggest = useCallback(() => <Suggest />, []);\n const CustomControls = useCallback(() => <HeaderControls {...controls} />, [controls]);\n const navigation = useNavigation(data, controls, CustomControls, CustomSuggest);\n\n const CustomPage = useCallback(\n () => (\n <Page\n data={data}\n headerHeight={fullScreen ? 0 : 64}\n {...props}\n {...(navigation.withControls\n ? filterControls(controls, [\n 'theme',\n 'onChangeTheme',\n 'textSize',\n 'onChangeTextSize',\n 'wideFormat',\n 'onChangeWideFormat',\n 'showMiniToc',\n 'onChangeShowMiniToc',\n 'langs',\n 'onChangeLang',\n ])\n : controls)}\n >\n <ConstructorPage {...(data as DocContentPageData).data} />\n </Page>\n ),\n [data, navigation, props, controls, fullScreen],\n );\n const content = useContent(data as DocContentPageData, CustomPage);\n\n const custom = useMemo(\n () => ({\n navigation: navigation.custom,\n blocks: content.custom,\n }),\n [navigation, content],\n );\n\n return (\n <PageConstructorProvider\n theme={theme}\n projectSettings={{disableCompress: true}}\n ssrConfig={{\n isServer: Boolean(process.env.BROWSER),\n }}\n >\n <PageConstructor\n custom={custom}\n content={content.layout}\n navigation={fullScreen ? undefined : navigation.layout}\n />\n </PageConstructorProvider>\n );\n}\n\nfunction filterControls(controls: HeaderControlsProps, omitProps: string[]) {\n return Object.keys(controls).reduce(\n (acc, key) => {\n if (!omitProps.includes(key)) {\n acc[key] = controls[key as keyof HeaderControlsProps];\n }\n\n return acc;\n },\n {} as Record<string, unknown>,\n ) as Partial<HeaderControlsProps>;\n}\n","import React from 'react';\nimport {MermaidRuntime} from '@diplodoc/mermaid-extension/react';\nimport {LatexRuntime} from '@diplodoc/latex-extension/react';\nimport {Runtime as OpenapiSandbox} from '@diplodoc/openapi-extension/runtime';\nimport {Theme} from '@diplodoc/components';\nimport {useTheme} from '@gravity-ui/uikit';\nimport {TabsRuntime} from '@diplodoc/tabs-extension/react';\nimport {PageConstructorRuntime} from '@diplodoc/page-constructor-extension/react';\n\nexport function Runtime() {\n const theme = useTheme();\n\n return (\n <>\n <OpenapiSandbox />\n <LatexRuntime />\n <MermaidRuntime\n theme={theme === Theme.Dark ? 'dark' : 'neutral'}\n zoom={{\n showMenu: true,\n bindKeys: true,\n }}\n />\n <TabsRuntime saveTabsToLocalStorage={true} saveTabsToQueryStateMode=\"page\" />\n <PageConstructorRuntime />\n </>\n );\n}\n","import type {AppProps} from './index';\nimport type {Lang} from '@diplodoc/components';\n\nimport {useCallback, useMemo} from 'react';\n\nimport {getLangPath} from '../../utils';\n\nexport function useLangs({lang, langs}: AppProps) {\n const onChangeLang = useCallback((newLang: `${Lang}` | Lang) => {\n window.location.replace(getLangPath(newLang, window.location.href));\n }, []);\n\n return useMemo(\n () => ({\n lang,\n langs,\n onChangeLang,\n }),\n [lang, langs, onChangeLang],\n );\n}\n","import type {Settings} from '../../utils';\n\nimport {useMemo, useState} from 'react';\n\nimport {getSettings, setSetting} from '../../utils';\n\nconst capitalize = <T extends string>(string: T): Capitalize<T> =>\n string.replace(/^./, (ch) => ch.toUpperCase()) as Capitalize<T>;\n\nexport function useSettings() {\n const settings = getSettings();\n\n const theme = useSetting('theme', settings);\n const textSize = useSetting('textSize', settings);\n const wideFormat = useSetting('wideFormat', settings);\n const fullScreen = useSetting('fullScreen', settings);\n const showMiniToc = useSetting('showMiniToc', settings);\n\n const controls = useMemo(\n () => ({\n ...theme,\n ...textSize,\n ...wideFormat,\n ...showMiniToc,\n ...fullScreen,\n }),\n [theme, textSize, wideFormat, showMiniToc, fullScreen],\n );\n\n return controls;\n}\n\ntype State<P extends keyof Settings> = Record<P, Settings[P]> &\n Record<`onChange${Capitalize<P>}`, (value: Settings[P]) => void>;\n\nfunction useSetting<P extends keyof Settings>(name: P, settings: Settings): State<P> {\n const [setting, setSetting] = useState<Settings[P]>(settings[name]);\n const onChangeSetting = useMemo(() => withSavingSetting(name, setSetting), [name, setSetting]);\n\n return useMemo(\n () =>\n ({\n [name]: setting,\n ['onChange' + capitalize(name)]: onChangeSetting,\n }) as State<P>,\n [name, setting, onChangeSetting],\n );\n}\n\nfunction withSavingSetting<T>(settingName: string, onChange: (value: T) => void) {\n return (value: T) => {\n setSetting<T>(settingName, value);\n\n onChange(value);\n };\n}\n","import {useCallback, useEffect, useState} from 'react';\n\nimport {getMobileView} from '../../utils';\n\nexport function useMobile() {\n const [mobileView, setMobileView] = useState<boolean>(getMobileView());\n\n const onResizeHandler = useCallback(() => {\n setMobileView(getMobileView());\n }, []);\n\n useEffect(onResizeHandler, [onResizeHandler]);\n\n useEffect(() => {\n window.addEventListener('resize', onResizeHandler);\n\n return () => window.removeEventListener('resize', onResizeHandler);\n }, [onResizeHandler]);\n\n return mobileView;\n}\n","import type {RenderBodyHook} from '@diplodoc/components';\n\nimport React, {useCallback, useRef} from 'react';\nimport {type MdxArtifacts, type UseMdxSsrProps, useMdxSsr} from '@diplodoc/mdx-extension';\n\nexport type WithMdxInitProps = Pick<UseMdxSsrProps, 'components' | 'pureComponents'>;\n\nexport const withMdxInit = ({components, pureComponents}: WithMdxInitProps) => {\n const withMdx: RenderBodyHook = (Component) => {\n return function MdxWrapper(props) {\n const {forwardRef, mdxArtifacts, html} = props;\n const refCtr = useRef<HTMLDivElement | null>(null);\n refCtr.current = null;\n\n const forwardRefWrap = useCallback(\n (v: HTMLDivElement) => {\n refCtr.current = v;\n return forwardRef(v);\n },\n [forwardRef],\n );\n\n const node = useMdxSsr({\n refCtr,\n components,\n pureComponents,\n mdxArtifacts: mdxArtifacts as MdxArtifacts | undefined,\n html,\n });\n\n return React.createElement(\n React.Fragment,\n null,\n React.createElement(Component, {...props, forwardRef: forwardRefWrap}),\n node,\n );\n };\n };\n return withMdx;\n};\n","import type {NavigationData, PageContent} from '@gravity-ui/page-constructor';\nimport type {Props as HeaderControlsProps} from '../HeaderControls';\nimport type {SearchConfig} from '../Search';\nimport type {RouterConfig} from '../Router';\nimport type {ReactElement} from 'react';\nimport type {\n DocBasePageData,\n DocContentPageData as DocContentPageDataBase,\n DocLeadingPageData,\n DocPageData,\n RenderBodyHook,\n} from '@diplodoc/components';\n\nimport React, {useEffect, useMemo} from 'react';\nimport {ThemeProvider} from '@gravity-ui/uikit';\nimport {\n ConsentPopup,\n InterfaceProvider,\n Lang,\n RenderBodyHooksContext,\n SUPPORTED_LANGS,\n configure,\n} from '@diplodoc/components';\nimport '@diplodoc/transform/dist/js/yfm';\n\nimport {SearchProvider} from '../Search';\nimport {RouterProvider} from '../Router';\nimport {\n getDirection,\n getLandingPage,\n scrollToHash,\n updateRootClassName,\n updateThemeClassName,\n} from '../../utils';\nimport {LangProvider} from '../../hooks/useLang';\nimport '../../interceptors/leading-page-links';\n\nimport {LegacyNavPage, RichNavPage} from './Page';\nimport {Runtime} from './Runtime';\nimport {useLangs} from './useLangs';\nimport {useSettings} from './useSettings';\nimport {useMobile} from './useMobile';\nimport {withMdxInit} from './withMdxInit';\nimport './App.scss';\n\nexport type DocAnalytics = {\n gtm?: {\n id?: string;\n mode?: 'base' | 'notification';\n };\n};\n\nexport interface AppProps {\n lang: `${Lang}` | Lang;\n langs: (`${Lang}` | Lang)[];\n router: RouterConfig;\n search?: SearchConfig;\n analytics?: DocAnalytics;\n viewerInterface?: Record<string, boolean>;\n}\n\nexport type WithNavigation = {\n navigation: NavigationData;\n};\n\nexport type DocContentPageData = DocContentPageDataBase<PageContent>;\n\nexport type PageData = DocPageData | DocLeadingPageData | DocContentPageData;\n\nexport type DocInnerProps<Data extends PageData = PageData> = {\n data: Data;\n} & AppProps;\n\nexport type {DocLeadingPageData, DocPageData};\n\nfunction hasNavigation(\n data: DocBasePageData<Partial<WithNavigation>>,\n): data is DocBasePageData<WithNavigation> {\n return Boolean(data.toc.navigation);\n}\n\nexport function App(props: DocInnerProps): ReactElement {\n const {data, router, lang, search, analytics, viewerInterface} = props;\n const settings = useSettings();\n const langData = useLangs(props);\n const mobileView = useMobile();\n const fixedLang = SUPPORTED_LANGS.includes(lang) ? lang : Lang.En;\n\n configure({\n lang: fixedLang,\n localeCode: fixedLang,\n });\n\n const renderHooks = useMemo(() => {\n const hooks: RenderBodyHook[] = [];\n const getMdxInitProps = global && 'getMdxInitProps' in global && global.getMdxInitProps;\n if (typeof getMdxInitProps === 'function') {\n hooks.push(withMdxInit(getMdxInitProps({dependencies: {react: React}})));\n }\n return hooks;\n }, []);\n\n const {theme, textSize, wideFormat, fullScreen, showMiniToc} = settings;\n\n const page = useMemo(\n () => ({\n router,\n theme,\n textSize,\n wideFormat,\n fullScreen,\n showMiniToc,\n isMobile: mobileView,\n }),\n [router, theme, textSize, wideFormat, fullScreen, showMiniToc, mobileView],\n );\n const controls: HeaderControlsProps = useMemo(\n () => ({\n ...settings,\n ...langData,\n mobileView,\n }),\n [langData, settings, mobileView],\n );\n const direction = getDirection(lang);\n const landingPage = getLandingPage(data);\n\n useEffect(() => {\n updateRootClassName({mobileView, wideFormat, fullScreen, landingPage});\n updateThemeClassName({theme});\n scrollToHash();\n }, [theme, mobileView, wideFormat, fullScreen, landingPage]);\n\n return (\n <div className=\"App\">\n <ThemeProvider theme={theme} direction={direction}>\n <LangProvider value={lang}>\n <RouterProvider value={router}>\n <SearchProvider value={search}>\n <InterfaceProvider interface={viewerInterface || {}}>\n <RenderBodyHooksContext.Provider value={renderHooks}>\n {hasNavigation(data) ? (\n <RichNavPage data={data} props={page} controls={controls} />\n ) : (\n <LegacyNavPage\n data={data}\n props={page}\n controls={controls}\n />\n )}\n </RenderBodyHooksContext.Provider>\n {analytics && (\n <ConsentPopup\n router={router}\n gtmId={analytics?.gtm?.id || ''}\n consentMode={analytics?.gtm?.mode}\n />\n )}\n <Runtime />\n </InterfaceProvider>\n </SearchProvider>\n </RouterProvider>\n </LangProvider>\n </ThemeProvider>\n </div>\n );\n}\n","import type {\n Block,\n ConstructorBlock,\n NavigationData as ConstructorNavigaitonData,\n PageContent as ConstructorPageContentBase,\n} from '@gravity-ui/page-constructor';\nimport type {BlocksConfig, Parser, TransformerRaw} from '@gravity-ui/page-constructor/server';\n\nimport {config, contentTransformer} from '@gravity-ui/page-constructor/server';\n\nexport interface MetaData {\n title: string;\n description?: string;\n}\n\nexport interface PageContentBase {\n meta?: MetaData;\n}\n\nexport enum Lang {\n RU = 'ru',\n EN = 'en',\n}\n\nexport type PageContent<T> = T & PageContentBase;\nexport type ConstructorPageContent = PageContent<ConstructorPageContentBase>;\nexport type NavigationData = PageContent<ConstructorNavigaitonData>;\nexport type ConfigData = ConstructorPageContent | NavigationData;\n\nexport interface PreloadParams {\n lang: `${Lang}` | Lang;\n pageName: string;\n pageReferer?: string;\n}\n\ninterface BlockConfig {\n transformer: TransformerRaw;\n fields?: string[];\n parser?: Parser;\n}\n\nexport function isPageConfig(config: ConfigData): config is ConstructorPageContent {\n return 'blocks' in config;\n}\n\nexport function preprocess(\n content: ConfigData,\n params: PreloadParams,\n customYfmTransformer: TransformerRaw,\n) {\n const {lang} = params;\n\n if (isPageConfig(content) && content.blocks) {\n return {\n ...content,\n blocks: transformBlocks(content.blocks, lang, customYfmTransformer),\n };\n }\n\n return content;\n}\n\nfunction replaceTransformer(config: BlocksConfig, newTransformer: TransformerRaw): BlocksConfig {\n return Object.keys(config).reduce((newConfig, subBlockType) => {\n const subBlock = config[subBlockType];\n\n if (Array.isArray(subBlock)) {\n newConfig[subBlockType] = subBlock.map((block: {transformer: {name: string}}) => {\n return block.transformer.name === 'yfmTransformer'\n ? {...block, transformer: newTransformer}\n : block;\n }) as BlockConfig[];\n } else {\n newConfig[subBlockType] =\n subBlock.transformer.name === 'yfmTransformer'\n ? {...subBlock, transformer: newTransformer}\n : subBlock;\n }\n\n return newConfig;\n }, {} as BlocksConfig);\n}\n\nfunction transformBlocks(\n blocks: ConstructorBlock[],\n lang: `${Lang}` | Lang,\n customYfmTransformer: TransformerRaw,\n) {\n const customConfig = replaceTransformer(config, customYfmTransformer);\n\n return contentTransformer({\n content: {blocks},\n options: {\n lang,\n customConfig,\n },\n }).blocks as Block[];\n}\n","import type {DocAnalytics, DocInnerProps, DocLeadingPageData, DocPageData} from './components/App';\nimport type {ConfigData, PreloadParams} from './preprocess';\n\nimport React from 'react';\nimport {renderToString} from 'react-dom/server';\n\nimport {App} from './components/App';\nimport {LINK_KEYS, LINK_KEYS_LEADING_CONFIG, LINK_KEYS_PAGE_CONSTRUCTOR_CONFIG} from './constants';\nimport {preprocess} from './preprocess';\n\nexport type {\n DocInnerProps,\n DocPageData,\n DocLeadingPageData,\n DocAnalytics,\n ConfigData,\n PreloadParams,\n};\nexport type {\n SearchConfig as ISearchProviderConfig,\n WorkerConfig as ISearchWorkerConfig,\n WorkerApi as ISearchWorkerApi,\n} from './components/Search';\nexport {LINK_KEYS, LINK_KEYS_LEADING_CONFIG, LINK_KEYS_PAGE_CONSTRUCTOR_CONFIG, preprocess};\n\nexport const render = (props: DocInnerProps) => renderToString(<App {...props} />);\n","(function () {\n /**\n * Element.matches() polyfill.\n * @link https://developer.mozilla.org/ru/docs/Web/API/Element/matches\n */\n if (typeof Element !== 'undefined') {\n (function (e) {\n const matches =\n e.matches ||\n e.matchesSelector ||\n e.webkitMatchesSelector ||\n e.mozMatchesSelector ||\n e.msMatchesSelector ||\n e.oMatchesSelector;\n\n if (matches) {\n e.matches = e.matchesSelector = matches;\n } else {\n e.matches = e.matchesSelector = function (selector) {\n const th = this;\n return Array.prototype.some.call(document.querySelectorAll(selector), (el) => {\n return el === th;\n });\n };\n }\n })(Element.prototype);\n }\n})();\n","export default function () {}\n","// getDefaultExport function for compatibility with non-ESM modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};\n","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n __webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => { def[key] = () => (value[key]) });\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(\n\t\tObject.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t\t__webpack_require__.f[key](chunkId, promises);\n\t\t\treturn promises;\n\t\t}, [])\n\t);\n};","// This function allow to reference chunks\n__webpack_require__.u = (chunkId) => {\n // return url for filenames not based on template\n \n // return url for filenames based on template\n return \"\" + ({\"966\": \"react\",\"971\": \"vendor\",}[chunkId] || chunkId) + \".js\"\n}","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n module.paths = [];\n if (!module.children) module.children = [];\n return module;\n};","var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif (chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor (var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--)\n\t\t\tdeferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif (\n\t\t\t\t(priority & (1 === 0) || notFulfilled >= priority) &&\n\t\t\t\tObject.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))\n\t\t\t) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif (priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif (fulfilled) {\n\t\t\tdeferred.splice(i--, 1);\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};\n","__webpack_require__.p = \"\";","var next = __webpack_require__.x\n__webpack_require__.x = () => {\n __webpack_require__.e(\"966\");\n__webpack_require__.e(\"971\");\nreturn next();\n}","__webpack_require__.b = require(\"url\").pathToFileURL(__filename);\nvar installedChunks = {\"387\": 1,};\n__webpack_require__.O.require = (chunkId) => (installedChunks[chunkId])// object to store loaded chunks\n// \"1\" means \"loaded\", otherwise not loaded yet\nvar installChunk = (chunk) => {\n\tvar moreModules = chunk.modules, chunkIds = chunk.ids, runtime = chunk.runtime;\n\tfor (var moduleId in moreModules) {\n\t\tif (__webpack_require__.o(moreModules, moduleId)) {\n\t\t __webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif (runtime) runtime(__webpack_require__);\n\tfor (var i = 0; i < chunkIds.length; i++) installedChunks[chunkIds[i]] = 1;\n\t__webpack_require__.O();\n};// require() chunk loading for javascript\n__webpack_require__.f.require = (chunkId, promises) => {\n\t// \"1\" is the signal for \"already loaded\"\n\tif (!installedChunks[chunkId]) {\n\t\tif (true) {\n\t\t\tinstallChunk(require(\"./\" + __webpack_require__.u(chunkId)));\n\t\t} else installedChunks[chunkId] = 1;\n\t}\n};"],"names":["createContext","useContext","RouterContext","RouterProvider","useRouter","SearchContext","SearchProvider","useSearch","App","Lang","LangContext","LangProvider","useLang","buildSearchLink","base","config","query","page","searchParams","URLSearchParams","params","link","DefaultSearchProvider","initWorker","suggest","search","count","window","request1","message","request","BAD_ORIGIN_ERROR","loadWorker","match","url","blob","Worker","URL","error","_instanceof","DOMException","Blob","worker","channel","MessageChannel","Promise","resolve","reject","createProvider","useEffect","useMemo","useState","useProvider","lang","_useContext","depth","_useState","provider","setProvider","React","useCallback","useRef","SearchPage","block","b","getUrlParams","Number","setUrlParams","String","formatResults","searchResults","Array","result","_result_hierarchy","_result_hierarchy1","_result_hierarchy2","ITEMS_PER_PAGE","Search","router","setQuery","_useState1","setPage","_useState2","results","setResults","_useState3","total","setTotal","_useState4","loading","setLoading","providerRef","_getUrlParams","q","p","items","formatted","handlePageChange","newPage","handleQueryChange","newQuery","TextSizes","Theme","HEADER_HEIGHT","MOBILE_VIEW_WIDTH_BREAKPOINT","DEFAULT_USER_SETTINGS","RTL_LANGS","TextDirection","LINK_KEYS_LEADING_CONFIG","LINK_KEYS_PAGE_CONSTRUCTOR_CONFIG","LINK_KEYS","Set","getPageType","isBrowser","document","updateThemeClassName","param","theme","el","updateRootClassName","states","toggle","name","state","Boolean","Object","getDirection","isRTL","toBoolean","str","getSettings","getSetting","textSize","showMiniToc","wideFormat","fullScreen","getLandingPage","data","getMobileView","sessionStorage","setSetting","value","isDetailsTag","isHeaderTag","scrollToElement","offset","isInViewport","elementPosition","offsetPosition","getLangPath","href","path","rect","scrollToHash","hash","element","node","setTimeout","Header","Content","Footer","defaults","Layout","props","_$_object_spread","children","doc","headerHeight","header","content","footer","child","BackgroundMedia","Col","ConstructorBlocks","Grid","Row","getThemedValue","useTheme","bPC","bPCRow","ConstructorRow","ConstructorPage","background","blocks","themedBackground","DocumentType","useContent","CustomPage","type","layout","SearchSuggest","useInterface","Icon","Magnifier","SearchButton","Suggest","isSearchHidden","onFocus","onBlur","memo","ControlSizes","Controls","ControlsLayout","HeaderControls","mobileView","onChangeTheme","onChangeTextSize","onChangeWideFormat","onChangeShowMiniToc","langs","onChangeLang","CustomNavigation","MobileDropdown","findItem","right","left","item","useNavigation","controls","CustomControls","CustomSuggest","viewerInterface","toc","navigation","logo","leftItems","rightItems","withControls","withSearch","navigationData","navigationTocData","mobileControlsData","_logo_icon","PageConstructor","PageConstructorProvider","getPageByType","Page","_param","pageProps","LegacyNavPage","custom","process","RichNavPage","filterControls","undefined","omitProps","acc","key","MermaidRuntime","LatexRuntime","Runtime","OpenapiSandbox","TabsRuntime","PageConstructorRuntime","useLangs","newLang","capitalize","string","ch","useSettings","settings","useSetting","setting","onChangeSetting","withSavingSetting","_obj","settingName","onChange","useMobile","setMobileView","onResizeHandler","useMdxSsr","withMdxInit","components","pureComponents","withMdx","Component","MdxWrapper","forwardRef","mdxArtifacts","html","refCtr","forwardRefWrap","v","ThemeProvider","ConsentPopup","InterfaceProvider","RenderBodyHooksContext","SUPPORTED_LANGS","configure","hasNavigation","_analytics_gtm","_analytics_gtm1","analytics","langData","fixedLang","renderHooks","hooks","getMdxInitProps","global","direction","landingPage","contentTransformer","isPageConfig","preprocess","customYfmTransformer","transformBlocks","replaceTransformer","newTransformer","newConfig","subBlockType","subBlock","customConfig","renderToString","render","Element","e","matches","selector","th"],"mappings":"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CA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;;ACVA;AACA;AACA;AACA;AACA;AACA,gBAAgB,gCAAgC;AAChD;;;;ACNA;;;;ACAA;AACA;AACA;AACA,uDAAuD,iBAAiB;AACxE;AACA,gDAAgD,aAAa;AAC7D;;;;ACNA;AACA;AACA;AACA;AACA;;;;ACJA;AACA;AACA;AACA;AACA,gCAAgC,wCAAwC;AACxE;AACA;AACA;AACA;AACA;AACA,iBAAiB,qBAAqB;AACtC;AACA;AACA,kBAAkB,qBAAqB;AACvC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AC/BA;;;;ACAA;AACA;AACA;AACA;AACA;AACA;;;;ACLA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,qBAAqB;AACtC;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA"}
1
+ {"version":3,"file":"app.js","sources":["webpack://@diplodoc/client/./src/components/Router/index.ts","webpack://@diplodoc/client/./src/hooks/useLang.ts","webpack://@diplodoc/client/./src/constants.ts","webpack://@diplodoc/client/./src/utils.ts","webpack://@diplodoc/client/./src/components/App/useSettings.ts","webpack://@diplodoc/client/./src/components/App/useMobile.ts","webpack://@diplodoc/client/./src/components/index.ts","webpack://@diplodoc/client/./src/components/Search/provider/utils/searchLink.ts","webpack://@diplodoc/client/./src/components/Search/provider/index.ts","webpack://@diplodoc/client/./src/components/Search/useProvider.ts","webpack://@diplodoc/client/./src/components/Search/Page.tsx","webpack://@diplodoc/client/./src/components/Search/index.tsx","webpack://@diplodoc/client/./src/components/Layout/index.tsx","webpack://@diplodoc/client/./src/components/ConstructorPage/index.tsx","webpack://@diplodoc/client/./src/components/ConstructorPage/useContent.tsx","webpack://@diplodoc/client/./src/components/Search/Suggest.tsx","webpack://@diplodoc/client/./src/components/HeaderControls/index.tsx","webpack://@diplodoc/client/./src/components/ConstructorPage/useNavigation.tsx","webpack://@diplodoc/client/./src/components/App/Page.tsx","webpack://@diplodoc/client/./src/components/App/Runtime.tsx","webpack://@diplodoc/client/./src/components/App/useLangs.ts","webpack://@diplodoc/client/./src/components/App/useAvailableLangs.ts","webpack://@diplodoc/client/./src/components/App/withMdxInit.tsx","webpack://@diplodoc/client/./src/components/App/index.tsx","webpack://@diplodoc/client/./src/preprocess.ts","webpack://@diplodoc/client/./src/index.server.tsx","webpack://@diplodoc/client/./src/interceptors/leading-page-links.js","webpack://@diplodoc/client/./src/stub/empty-module.js","webpack://@diplodoc/client/webpack/runtime/compat_get_default_export","webpack://@diplodoc/client/webpack/runtime/create_fake_namespace_object","webpack://@diplodoc/client/webpack/runtime/define_property_getters","webpack://@diplodoc/client/webpack/runtime/ensure_chunk","webpack://@diplodoc/client/webpack/runtime/get javascript chunk filename","webpack://@diplodoc/client/webpack/runtime/has_own_property","webpack://@diplodoc/client/webpack/runtime/make_namespace_object","webpack://@diplodoc/client/webpack/runtime/node_module_decorator","webpack://@diplodoc/client/webpack/runtime/on_chunk_loaded","webpack://@diplodoc/client/webpack/runtime/public_path","webpack://@diplodoc/client/webpack/runtime/startup_chunk_dependencies","webpack://@diplodoc/client/webpack/runtime/require_chunk_loading"],"sourcesContent":["import type {Router} from '@diplodoc/components';\n\nimport {createContext, useContext} from 'react';\n\nexport interface RouterConfig extends Router {\n depth: number;\n}\n\nexport const RouterContext = createContext<RouterConfig>({\n pathname: '/',\n depth: 0,\n});\n\nRouterContext.displayName = 'RouterContext';\n\nexport const RouterProvider = RouterContext.Provider;\n\nexport function useRouter() {\n return useContext(RouterContext);\n}\n","import {createContext, useContext} from 'react';\nimport {Lang} from '@diplodoc/components';\n\nconst LangContext = createContext<`${Lang}` | Lang>(Lang.En);\n\nLangContext.displayName = 'Lang';\n\nexport const LangProvider = LangContext.Provider;\n\nexport function useLang() {\n return useContext(LangContext);\n}\n","import {TextSizes, Theme} from '@diplodoc/components';\n\nexport const HEADER_HEIGHT = 64;\n\nexport const MOBILE_VIEW_WIDTH_BREAKPOINT = 769;\n\nexport const DEFAULT_USER_SETTINGS = {\n theme: Theme.Light,\n textSize: TextSizes.M,\n showMiniToc: true,\n wideFormat: true,\n fullScreen: false,\n};\n\nexport const RTL_LANGS = [\n 'ar',\n 'arc',\n 'ckb',\n 'dv',\n 'fa',\n 'ha',\n 'he',\n 'khw',\n 'ks',\n 'ps',\n 'sd',\n 'ur',\n 'uz_AF',\n 'yi',\n];\n\nexport enum TextDirection {\n RTL = 'rtl',\n LTR = 'ltr',\n}\n\nexport const LINK_KEYS_LEADING_CONFIG = ['href'];\nexport const LINK_KEYS_PAGE_CONSTRUCTOR_CONFIG = [\n 'src',\n 'url',\n 'href',\n 'icon',\n 'image',\n 'desktop',\n 'mobile',\n 'tablet',\n 'previewImg',\n 'image',\n 'avatar',\n 'logo',\n 'light',\n 'dark',\n];\n\nexport const LINK_KEYS = [\n ...new Set([...LINK_KEYS_LEADING_CONFIG, ...LINK_KEYS_PAGE_CONSTRUCTOR_CONFIG]),\n];\n","import type {PageData} from './components/App';\nimport type {Lang, Theme} from '@diplodoc/components';\n\nimport {getPageType} from '@diplodoc/components';\n\nimport {\n DEFAULT_USER_SETTINGS,\n MOBILE_VIEW_WIDTH_BREAKPOINT,\n RTL_LANGS,\n TextDirection,\n} from './constants';\n\nexport function isBrowser() {\n return typeof document !== 'undefined';\n}\n\nexport function updateThemeClassName({theme}: {theme: Theme}) {\n if (typeof document === 'undefined') {\n return;\n }\n\n document.querySelectorAll('.g-root').forEach((el) => {\n el.classList.toggle('g-root_theme_light', theme === 'light');\n el.classList.toggle('g-root_theme_dark', theme === 'dark');\n });\n}\n\nexport function updateRootClassName(states: {\n mobileView?: boolean;\n wideFormat?: boolean;\n fullScreen?: boolean;\n focusSearch?: boolean;\n landingPage?: boolean;\n}) {\n if (!isBrowser()) {\n return;\n }\n\n document.body.classList.add('g-root');\n\n const toggle = (name: string, state: unknown) =>\n document.body.classList.toggle(name, Boolean(state));\n\n Object.keys(states).forEach((state) => {\n switch (state) {\n case 'wideFormat':\n toggle('dc-root_wide-format', states[state]);\n break;\n case 'focusSearch':\n toggle('dc-root_focused-search', states[state]);\n break;\n case 'fullScreen':\n toggle('dc-root_full-screen', states[state]);\n break;\n case 'landingPage':\n toggle('dc-root_document-page', !states[state]);\n toggle('dc-root_landing-page', states[state]);\n break;\n case 'mobileView':\n toggle('mobile', states[state]);\n toggle('desktop', !states[state]);\n break;\n }\n });\n}\n\nexport function getDirection(lang: `${Lang}` | Lang): TextDirection {\n const isRTL = RTL_LANGS.includes(lang);\n\n return isRTL ? TextDirection.RTL : TextDirection.LTR;\n}\n\nconst toBoolean = (str: string | boolean) => {\n if (typeof str === 'boolean') {\n return str;\n }\n\n return str ? str === 'true' : false;\n};\n\nexport type Settings = typeof DEFAULT_USER_SETTINGS;\n\nexport function getSettings() {\n const theme = getSetting('theme');\n const textSize = getSetting('textSize');\n const showMiniToc = getSetting('showMiniToc');\n const wideFormat = getSetting('wideFormat');\n const fullScreen = getSetting('fullScreen');\n\n return {\n theme,\n textSize,\n showMiniToc: toBoolean(showMiniToc),\n wideFormat: toBoolean(wideFormat),\n fullScreen: toBoolean(fullScreen),\n };\n}\n\nexport function getLandingPage(data: PageData) {\n return getPageType(data) === 'PAGE_CONSTRUCTOR';\n}\n\nexport function getMobileView() {\n if (!isBrowser()) {\n return false;\n }\n\n return document.body.clientWidth < MOBILE_VIEW_WIDTH_BREAKPOINT;\n}\n\nfunction getSetting<T extends keyof Settings>(name: T): Settings[T] {\n if (!isBrowser()) {\n return DEFAULT_USER_SETTINGS[name];\n }\n\n try {\n return (sessionStorage.getItem(name) as Settings[T]) || DEFAULT_USER_SETTINGS[name];\n } catch {\n return DEFAULT_USER_SETTINGS[name];\n }\n}\n\nexport function setSetting<T>(name: string, value: T) {\n if (!isBrowser()) {\n return;\n }\n\n try {\n sessionStorage.setItem(name, String(value));\n } catch {}\n}\n\nexport function isDetailsTag(el: HTMLElement): el is HTMLDetailsElement {\n return el?.tagName.toLowerCase() === 'details';\n}\n\nexport function isHeaderTag(el: HTMLElement) {\n return ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'].indexOf(el.tagName) !== -1;\n}\n\n/**\n * Scrolls to the element.\n * If the element is a heading - simply scrolls to it, since needed offset is already in css.\n * If the element is of any other type - calculate the offset form the element position in heading and scroll to it.\n * @param {HTMLElement} el\n */\n\nexport function scrollToElement(el: HTMLElement, offset = 200) {\n if (isInViewport(el)) {\n return;\n }\n\n if (isHeaderTag(el)) {\n // Header already includes the offset in css\n // That puts it where we want it when it's scrolled to\n el.scrollIntoView();\n } else {\n const elementPosition = el.getBoundingClientRect().top;\n const offsetPosition = elementPosition + window.scrollY - offset;\n\n window.scrollTo({\n top: offsetPosition,\n });\n }\n}\n\nexport function getLangPath(lang: string, href: string) {\n const path = href.replace(/^https?:\\/\\/[^/]+/, '').replace(/^\\/[a-z]{2}\\//, '/');\n\n return `${lang}${path}`;\n}\n\nfunction isInViewport(el: HTMLElement) {\n const rect = el.getBoundingClientRect();\n\n return (\n rect.top >= 0 &&\n rect.bottom <= (window.innerHeight || document.documentElement.clientHeight)\n );\n}\n\nexport function scrollToHash() {\n const hash = window.location.hash.substring(1);\n\n if (!hash) {\n return;\n }\n\n const element = document.getElementById(hash);\n\n if (!element) {\n return;\n }\n\n let node = element?.parentElement;\n while (node) {\n if (isDetailsTag(node)) {\n node.open = true;\n }\n node = node.parentElement;\n }\n\n element.focus();\n\n setTimeout(() => {\n scrollToElement(element);\n }, 10);\n}\n","import type {Settings} from '../../utils';\n\nimport {useMemo, useState} from 'react';\n\nimport {getSettings, setSetting} from '../../utils';\n\nconst capitalize = <T extends string>(string: T): Capitalize<T> =>\n string.replace(/^./, (ch) => ch.toUpperCase()) as Capitalize<T>;\n\nexport function useSettings() {\n const settings = getSettings();\n\n const theme = useSetting('theme', settings);\n const textSize = useSetting('textSize', settings);\n const wideFormat = useSetting('wideFormat', settings);\n const fullScreen = useSetting('fullScreen', settings);\n const showMiniToc = useSetting('showMiniToc', settings);\n\n const controls = useMemo(\n () => ({\n ...theme,\n ...textSize,\n ...wideFormat,\n ...showMiniToc,\n ...fullScreen,\n }),\n [theme, textSize, wideFormat, showMiniToc, fullScreen],\n );\n\n return controls;\n}\n\ntype State<P extends keyof Settings> = Record<P, Settings[P]> &\n Record<`onChange${Capitalize<P>}`, (value: Settings[P]) => void>;\n\nfunction useSetting<P extends keyof Settings>(name: P, settings: Settings): State<P> {\n const [setting, setSetting] = useState<Settings[P]>(settings[name]);\n const onChangeSetting = useMemo(() => withSavingSetting(name, setSetting), [name, setSetting]);\n\n return useMemo(\n () =>\n ({\n [name]: setting,\n ['onChange' + capitalize(name)]: onChangeSetting,\n }) as State<P>,\n [name, setting, onChangeSetting],\n );\n}\n\nfunction withSavingSetting<T>(settingName: string, onChange: (value: T) => void) {\n return (value: T) => {\n setSetting<T>(settingName, value);\n\n onChange(value);\n };\n}\n","import {useCallback, useEffect, useState} from 'react';\n\nimport {getMobileView} from '../../utils';\n\nexport function useMobile() {\n const [mobileView, setMobileView] = useState<boolean>(getMobileView());\n\n const onResizeHandler = useCallback(() => {\n setMobileView(getMobileView());\n }, []);\n\n useEffect(onResizeHandler, [onResizeHandler]);\n\n useEffect(() => {\n window.addEventListener('resize', onResizeHandler);\n\n return () => window.removeEventListener('resize', onResizeHandler);\n }, [onResizeHandler]);\n\n return mobileView;\n}\n","export {SearchContext, SearchProvider, useSearch} from './Search';\nexport {RouterContext, RouterProvider, useRouter} from './Router';\n\nexport {App} from './App';\n","import type {SearchConfig} from '../../types';\n\nexport function buildSearchLink(base: string, config: SearchConfig, query?: string, page = 1) {\n const searchParams = new URLSearchParams();\n\n if (query) searchParams.set('query', query);\n if (page > 1) searchParams.set('page', page.toString());\n\n const params = searchParams.toString() ? `?${searchParams.toString()}` : '';\n const link = `${base}/${config.link}${params}`;\n\n return link;\n}\n","import type {ISearchProvider, ISearchResult} from '@diplodoc/components';\nimport type {SearchConfig, SearchProviderExtended, WorkerConfig} from '../types';\n\nimport {buildSearchLink} from './utils/searchLink';\n\nexport class DefaultSearchProvider implements ISearchProvider, SearchProviderExtended {\n private worker!: Promise<Worker>;\n\n private config: SearchConfig;\n\n constructor(config: SearchConfig) {\n this.config = config;\n }\n\n init = () => {\n this.worker = initWorker({\n ...this.config,\n base: this.base,\n mark: 'Suggest__Item__Marker',\n });\n };\n\n async suggest(query: string) {\n return this.request({\n type: 'suggest',\n query,\n }) as Promise<ISearchResult[]>;\n }\n\n async search(query: string, page = 1, count = 10) {\n return this.request({\n type: 'search',\n query,\n page,\n count,\n }) as Promise<{items: ISearchResult[]; total: number}>;\n }\n\n link = (query: string, page = 1) => buildSearchLink(this.base, this.config, query, page);\n\n private get base() {\n return window.location.href.split('/').slice(0, -this.config.depth).join('/');\n }\n\n private async request(message: object) {\n return request(await this.worker, message);\n }\n}\n\nconst BAD_ORIGIN_ERROR = /Script at '(.*?)' cannot be accessed from origin/;\n\nasync function loadWorker() {\n try {\n return new Worker(new URL('../worker/index.ts', import.meta.url));\n } catch (error) {\n if (error instanceof DOMException) {\n const match = BAD_ORIGIN_ERROR.exec(error.message);\n if (match) {\n const url = match[1];\n const blob = new Blob([`importScripts('${url}');`], {type: 'text/javascript'});\n\n return new Worker(URL.createObjectURL(blob));\n }\n }\n\n throw error;\n }\n}\n\nasync function initWorker(config: WorkerConfig) {\n const worker = await loadWorker();\n\n await request(worker, {...config, type: 'init'});\n\n return worker;\n}\n\nfunction request(worker: Worker, message: object) {\n const channel = new MessageChannel();\n\n return new Promise((resolve, reject) => {\n channel.port1.onmessage = (message) => {\n if (message.data.error) {\n reject(message.data.error);\n } else {\n resolve(message.data.result);\n }\n };\n\n channel.port1.onmessageerror = (message) => {\n reject(message.data.error);\n };\n\n worker.postMessage(message, [channel.port2]);\n });\n}\n\nexport function createProvider(config: SearchConfig): ISearchProvider | null {\n if (!config) {\n return null;\n }\n\n return new DefaultSearchProvider(config);\n}\n\nexport const SearchProvider = DefaultSearchProvider;\n","import type {ISearchProvider} from '@diplodoc/components';\n\nimport {useContext, useEffect, useMemo, useState} from 'react';\n\nimport {RouterContext, SearchContext} from '../index';\nimport {useLang} from '../../hooks/useLang';\n\nimport {createProvider} from './provider';\n\nexport function useProvider() {\n const lang = useLang();\n const {depth = 0} = useContext(RouterContext);\n const search = useContext(SearchContext);\n const [provider, setProvider] = useState<ISearchProvider | null>(null);\n\n const config = useMemo(() => {\n if (!search) {\n return null;\n }\n\n return {\n ...search,\n depth,\n lang,\n };\n }, [lang, depth, search]);\n\n useEffect(() => {\n if (config) {\n setProvider(createProvider(config));\n }\n }, [config]);\n\n return provider;\n}\n","import type {FormattedSearchResultData, SearchProviderExtended, SearchResultData} from './types';\n\nimport React, {useCallback, useEffect, useRef, useState} from 'react';\nimport {SearchPage} from '@diplodoc/components';\nimport block from 'bem-cn-lite';\n\nimport {useRouter} from '../Router';\n\nimport {useProvider} from './useProvider';\nimport './Page.scss';\n\nconst b = block('Search');\n\nfunction getUrlParams() {\n const params = new URLSearchParams(window.location.search);\n return {\n query: params.get('query') || '',\n page: Number(params.get('page')) || 1,\n };\n}\n\nfunction setUrlParams(query: string, page: number) {\n const params = new URLSearchParams();\n if (query) params.set('query', query);\n if (page > 1) params.set('page', String(page));\n window.history.pushState({}, '', `?${params.toString()}`);\n}\n\nfunction formatResults(searchResults: SearchResultData[]): FormattedSearchResultData {\n if (!Array.isArray(searchResults)) return [];\n return searchResults.map((result) => ({\n title: result?.title || result?.hierarchy?.lvl0 || result?.hierarchy?.lvl1 || '',\n url: result?.url || result?.link || '#',\n description: result?.description || result?.content || result?.text || '',\n section: result?.section || result?.hierarchy?.lvl1 || '',\n }));\n}\n\nconst ITEMS_PER_PAGE = 10;\n\nexport const Page: React.FC = () => {\n const provider = useProvider();\n const router = useRouter();\n\n const [query, setQuery] = useState<string>('');\n const [page, setPage] = useState<number>(1);\n const [results, setResults] = useState<FormattedSearchResultData>([]);\n const [total, setTotal] = useState<number>(0);\n const [loading, setLoading] = useState<boolean>(false);\n\n const providerRef = useRef<SearchProviderExtended | null>(null);\n\n useEffect(() => {\n providerRef.current = provider as SearchProviderExtended;\n provider?.init?.();\n }, [provider]);\n\n useEffect(() => {\n const {query: q, page: p} = getUrlParams();\n\n setQuery(q);\n setPage(p);\n }, [router]);\n\n useEffect(() => {\n if (query && providerRef.current) {\n setLoading(true);\n\n providerRef.current\n .search(query, page, ITEMS_PER_PAGE)\n .then((searchResults) => {\n const {items, total} = searchResults;\n const formatted = formatResults(items ?? []);\n\n setResults(formatted);\n setTotal(total);\n })\n .catch(() => {\n setResults([]);\n setTotal(0);\n })\n .finally(() => setLoading(false));\n } else {\n setResults([]);\n setTotal(0);\n }\n }, [query, page, provider]);\n\n const handlePageChange = useCallback(\n (newPage: number) => {\n setUrlParams(query, newPage);\n setPage(newPage);\n },\n [query],\n );\n\n const handleQueryChange = useCallback((newQuery: string) => {\n setUrlParams(newQuery, 1);\n setQuery(newQuery);\n setPage(1);\n }, []);\n\n return (\n <div className={b()}>\n <SearchPage\n query={query}\n items={results}\n page={page}\n totalItems={total}\n onPageChange={handlePageChange}\n onSubmit={handleQueryChange}\n loading={loading}\n />\n </div>\n );\n};\n","import type {ReactElement} from 'react';\nimport type {SearchConfig, SearchData, WorkerApi, WorkerConfig} from './types';\n\nimport React, {createContext, useContext, useEffect} from 'react';\nimport {ThemeProvider} from '@gravity-ui/uikit';\nimport {Lang, SUPPORTED_LANGS, configure} from '@diplodoc/components';\n\nimport {RouterProvider} from '../Router';\nimport {LangProvider} from '../../hooks/useLang';\nimport {getDirection, updateRootClassName, updateThemeClassName} from '../../utils';\nimport {useSettings} from '../App/useSettings';\nimport {useMobile} from '../App/useMobile';\n\nimport {Page} from './Page';\n\nexport type {SearchConfig, WorkerConfig, WorkerApi};\n\nexport const SearchContext = createContext<SearchConfig | SearchData | null | undefined>(null);\n\nSearchContext.displayName = 'SearchContext';\n\nexport const SearchProvider = SearchContext.Provider;\n\nexport interface SearchProps {\n data: SearchConfig;\n url: URL;\n}\n\nexport function Search(props: SearchProps): ReactElement {\n const {data, url} = props;\n\n const searchData = data.search;\n const lang = (searchData?.lang as Lang) || Lang.En;\n const settings = useSettings();\n const mobileView = useMobile();\n const fixedLang = SUPPORTED_LANGS.includes(lang) ? lang : Lang.En;\n const direction = getDirection(fixedLang);\n\n configure({\n lang: fixedLang,\n localeCode: fixedLang,\n });\n\n const routerConfig = {\n pathname: url.pathname,\n depth: 3,\n };\n\n const {theme, wideFormat} = settings;\n\n useEffect(() => {\n updateRootClassName({mobileView, wideFormat});\n updateThemeClassName({theme});\n }, [theme, mobileView, wideFormat]);\n\n return (\n <ThemeProvider theme={theme} direction={direction}>\n <LangProvider value={fixedLang}>\n <RouterProvider value={routerConfig}>\n <SearchProvider value={searchData}>\n <Page />\n </SearchProvider>\n </RouterProvider>\n </LangProvider>\n </ThemeProvider>\n );\n}\n\nexport function useSearch() {\n return useContext(SearchContext);\n}\n","import type {FC, PropsWithChildren, ReactElement} from 'react';\n\nimport React from 'react';\nimport block from 'bem-cn-lite';\n\nimport './Layout.scss';\n\nconst b = block('Layout');\n\nfunction Header() {\n return null;\n}\n\nfunction Content() {\n return null;\n}\n\nfunction Footer() {\n return null;\n}\n\ntype LayoutStatics = {\n Header: FC<PropsWithChildren>;\n Content: FC<PropsWithChildren>;\n Footer: FC<PropsWithChildren>;\n};\n\ntype LayoutProps = {\n doc?: boolean;\n headerHeight?: number;\n};\n\nconst defaults = {\n doc: false,\n};\n\nexport const Layout: LayoutStatics & FC<PropsWithChildren<LayoutProps>> = (props) => {\n const {children, doc, headerHeight = 0} = {...defaults, ...props};\n let header, content, footer;\n\n React.Children.forEach(children as ReactElement[], (child: ReactElement) => {\n switch (child.type) {\n case Header:\n header = child.props.children;\n break;\n case Content:\n content = child.props.children;\n break;\n case Footer:\n footer = child.props.children;\n break;\n }\n });\n\n return (\n <div className={b({'full-header': headerHeight > 0})}>\n {header && <div className={b('header')}>{header}</div>}\n <div className={b('body')}>\n {content && <div className={b('content')}>{content}</div>}\n {footer && <div className={b('footer', {doc})}>{footer}</div>}\n </div>\n </div>\n );\n};\n\nLayout.displayName = 'Layout';\n\nLayout.Header = Header;\nLayout.Content = Content;\nLayout.Footer = Footer;\n","import type {PropsWithChildren} from 'react';\nimport type {PageContent} from '@gravity-ui/page-constructor';\n\nimport React from 'react';\nimport block from 'bem-cn-lite';\nimport {\n BackgroundMedia,\n Col,\n ConstructorBlocks,\n Grid,\n Row,\n getThemedValue,\n useTheme,\n} from '@gravity-ui/page-constructor';\n\nconst bPC = block('pc-page-constructor');\nconst bPCRow = block('pc-constructor-row');\n\nexport const ConstructorRow = ({children}: PropsWithChildren) =>\n children ? (\n <Row className={bPCRow()}>\n <Col>{children}</Col>\n </Row>\n ) : null;\n\nexport function ConstructorPage({background, blocks}: PageContent) {\n const theme = useTheme();\n const themedBackground = getThemedValue(background, theme);\n\n return (\n <div className={bPC('docs')}>\n <div className={bPC('wrapper')}>\n {blocks && themedBackground && (\n <BackgroundMedia {...themedBackground} className={bPC('background')} />\n )}\n <Grid>\n <ConstructorRow>\n <ConstructorBlocks items={blocks} />\n </ConstructorRow>\n </Grid>\n </div>\n </div>\n );\n}\n","import type {ReactNode} from 'react';\nimport type {PageContent} from '@gravity-ui/page-constructor';\nimport type {DocContentPageData} from '@diplodoc/components';\n\nimport {DocumentType, getPageType} from '@diplodoc/components';\nimport {useMemo} from 'react';\n\nexport const useContent = (data: DocContentPageData, CustomPage: () => ReactNode) => {\n const type = getPageType(data);\n const fullScreen =\n type === DocumentType.PageConstructor &&\n 'data' in data &&\n 'fullScreen' in data.data &&\n data.data.fullScreen;\n\n const layout = useMemo(\n () =>\n fullScreen\n ? (data.data as PageContent)\n : {\n blocks: [\n {\n type: 'page',\n resetPaddings: true,\n },\n ],\n },\n [fullScreen, data],\n );\n\n const config = useMemo(\n () => ({\n custom: {\n page: CustomPage,\n },\n layout,\n }),\n [CustomPage, layout],\n );\n\n return config;\n};\n","import type {ISearchProvider, SearchSuggestApi} from '@diplodoc/components';\n\nimport React, {useCallback, useRef} from 'react';\nimport {SearchSuggest, useInterface} from '@diplodoc/components';\nimport {Icon} from '@gravity-ui/uikit';\nimport {Magnifier} from '@gravity-ui/icons';\nimport block from 'bem-cn-lite';\n\nimport {updateRootClassName} from '../../utils';\n\nimport {useProvider} from './useProvider';\nimport './Suggest.scss';\n\nconst b = block('Suggest');\n\nfunction SearchButton() {\n return <Icon data={Magnifier} className={b('end')} size={24} />;\n}\n\nexport function Suggest() {\n const provider: ISearchProvider | null = useProvider();\n const suggest = useRef<SearchSuggestApi>(null);\n const isSearchHidden = useInterface('search');\n\n const onFocus = useCallback(() => {\n updateRootClassName({focusSearch: true});\n }, []);\n\n const onBlur = useCallback(() => {\n updateRootClassName({focusSearch: false});\n setTimeout(() => {\n if (suggest.current) {\n suggest.current.close();\n }\n }, 100);\n }, []);\n\n if (!provider || isSearchHidden) {\n return null;\n }\n\n return (\n <SearchSuggest\n ref={suggest}\n provider={provider}\n onFocus={onFocus}\n onBlur={onBlur}\n endContent={<SearchButton />}\n className={b('input')}\n classNameContainer={b()}\n classNameClose={b('close')}\n closeButton={true}\n />\n );\n}\n","import type {AvailableLangs, Lang, TextSizes, Theme} from '@diplodoc/components';\n\nimport React, {memo} from 'react';\nimport {ControlSizes, Controls, ControlsLayout} from '@diplodoc/components';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype OnChangeCallback = (value: any) => void;\n\nexport type Props = {\n mobileView: boolean;\n\n theme: Theme;\n onChangeTheme: OnChangeCallback;\n textSize: TextSizes;\n onChangeTextSize: OnChangeCallback;\n wideFormat: boolean;\n onChangeWideFormat: OnChangeCallback;\n showMiniToc: boolean;\n onChangeShowMiniToc: OnChangeCallback;\n lang: Lang | `${Lang}`;\n langs: (Lang | `${Lang}`)[];\n onChangeLang?: (lang: `${Lang}` | Lang) => void;\n availableLangs?: AvailableLangs;\n};\n\nexport const HeaderControls = memo<Props>(\n ({\n mobileView,\n\n theme,\n onChangeTheme,\n\n textSize,\n onChangeTextSize,\n\n wideFormat,\n onChangeWideFormat,\n\n showMiniToc,\n onChangeShowMiniToc,\n\n lang,\n langs,\n onChangeLang,\n\n availableLangs = [],\n }) => {\n return (\n <ControlsLayout\n controlClassName={'Control'}\n controlSize={ControlSizes.L}\n isWideView={mobileView}\n isMobileView={mobileView}\n >\n <Controls\n className={'Controls'}\n theme={theme}\n onChangeTheme={onChangeTheme}\n wideFormat={wideFormat}\n onChangeWideFormat={onChangeWideFormat}\n showMiniToc={showMiniToc}\n onChangeShowMiniToc={onChangeShowMiniToc}\n textSize={textSize}\n onChangeTextSize={onChangeTextSize}\n lang={lang}\n langs={langs}\n onChangeLang={onChangeLang}\n availableLangs={availableLangs}\n />\n </ControlsLayout>\n );\n },\n);\n\nHeaderControls.displayName = 'HeaderControls';\n","import type {ReactNode} from 'react';\nimport type {NavigationData, NavigationItemModel} from '@gravity-ui/page-constructor';\nimport type {DocBasePageData} from '@diplodoc/components';\nimport type {WithNavigation} from '../App';\nimport type {Props as HeaderControlsProps} from '../HeaderControls';\n\nimport React, {useMemo} from 'react';\nimport {ControlSizes, CustomNavigation, MobileDropdown} from '@diplodoc/components';\n\nimport {HEADER_HEIGHT} from '../../constants';\nimport {useRouter, useSearch} from '../';\n\nfunction findItem(right: NavigationItemModel[], left: NavigationItemModel[], type: string) {\n return right.some((item) => item.type === type) || left.some((item) => item.type === type);\n}\n\ntype NavigationDataWithOptionalLogo = Omit<NavigationData, 'logo'> & {\n logo?: NavigationData['logo'];\n};\n\nexport const useNavigation = (\n data: DocBasePageData<WithNavigation>,\n controls: HeaderControlsProps,\n CustomControls: () => ReactNode,\n CustomSuggest: () => ReactNode,\n viewerInterface?: Record<string, boolean>,\n) => {\n const {toc} = data;\n const {navigation} = toc;\n const {header = {} as NavigationData['header'], logo}: NavigationDataWithOptionalLogo =\n navigation;\n const {leftItems = [], rightItems = []} = header as NavigationData['header'];\n\n const withControls = findItem(rightItems, leftItems, 'controls');\n const withSearch = findItem(rightItems, leftItems, 'search');\n\n const search = useSearch();\n const router = useRouter();\n\n if (search && !withSearch) {\n rightItems.unshift({type: 'search'} as unknown as NavigationItemModel);\n }\n\n const navigationData = useMemo(\n () => ({\n withBorder: true,\n leftItems: leftItems,\n rightItems: rightItems,\n customMobileHeaderItems: [{type: 'search'} as unknown as NavigationItemModel],\n }),\n [leftItems, rightItems],\n );\n const navigationTocData = useMemo(\n () => ({\n toc,\n router,\n headerHeight: HEADER_HEIGHT,\n }),\n [toc, router],\n );\n const mobileControlsData = useMemo(\n () => ({\n controlSize: ControlSizes.L,\n userSettings: controls,\n viewerInterface,\n }),\n [controls, viewerInterface],\n );\n\n const layout = useMemo(\n () => ({\n header: {\n leftItems: [],\n },\n renderNavigation: () => (\n <CustomNavigation\n logo={{...logo, icon: logo?.icon ?? ''}}\n data={navigationData}\n navigationTocData={navigationTocData}\n mobileControlsData={mobileControlsData}\n />\n ),\n logo: {...logo, icon: logo?.icon ?? ''},\n }),\n [navigationData, navigationTocData, mobileControlsData, logo],\n );\n\n const config = useMemo(\n () => ({\n custom: {\n search: CustomSuggest,\n controls: CustomControls,\n MobileDropdown: MobileDropdown,\n },\n layout,\n withControls,\n }),\n [CustomSuggest, CustomControls, layout, withControls],\n );\n\n return config;\n};\n","import type {PropsWithChildren} from 'react';\nimport type {AppProps, DocContentPageData, PageData, WithNavigation} from './index';\nimport type {Settings} from '../../utils';\nimport type {DocBasePageData} from '@diplodoc/components';\nimport type {Props as HeaderControlsProps} from '../HeaderControls';\n\nimport React, {useCallback, useMemo} from 'react';\nimport {PageConstructor, PageConstructorProvider} from '@gravity-ui/page-constructor';\nimport {getPageByType, getPageType} from '@diplodoc/components';\n\nimport {Layout} from '../Layout';\nimport {ConstructorPage} from '../ConstructorPage';\nimport {useContent} from '../ConstructorPage/useContent';\nimport {Suggest} from '../Search/Suggest';\nimport {HeaderControls} from '../HeaderControls';\nimport {useNavigation} from '../ConstructorPage/useNavigation';\n\ntype Props = PropsWithChildren<Partial<AppProps> & {data: PageData; headerHeight: number}>;\n\nexport function Page({data, ...pageProps}: Props) {\n const type = getPageType(data);\n const Page = getPageByType(type);\n\n return (\n <Layout headerHeight={pageProps.headerHeight}>\n <Layout.Content>\n {/*@ts-ignore*/}\n <Page {...data} {...pageProps} />\n </Layout.Content>\n </Layout>\n );\n}\n\ntype PageProps<T extends {} = {}> = {\n data: DocBasePageData<T> & PageData;\n props: {\n router: AppProps['router'];\n } & Settings;\n controls: HeaderControlsProps;\n};\n\nexport function LegacyNavPage({data, props, controls}: PageProps) {\n const {theme} = props;\n\n const CustomPage = useCallback(\n () => <ConstructorPage {...(data as DocContentPageData).data} />,\n [data],\n );\n const content = useContent(data as DocContentPageData, CustomPage);\n\n const custom = useMemo(\n () => ({\n blocks: content.custom,\n }),\n [content],\n );\n\n return (\n <Page data={data} headerHeight={0} {...props} {...controls}>\n <PageConstructorProvider\n theme={theme}\n projectSettings={{disableCompress: true}}\n ssrConfig={{\n isServer: Boolean(process.env.BROWSER),\n }}\n >\n <PageConstructor custom={custom} content={content.layout} />\n </PageConstructorProvider>\n </Page>\n );\n}\n\nexport function RichNavPage({data, props, controls}: PageProps<WithNavigation>) {\n const {theme, fullScreen} = props;\n\n const CustomSuggest = useCallback(() => <Suggest />, []);\n const CustomControls = useCallback(() => <HeaderControls {...controls} />, [controls]);\n const navigation = useNavigation(data, controls, CustomControls, CustomSuggest);\n\n const CustomPage = useCallback(\n () => (\n <Page\n data={data}\n headerHeight={fullScreen ? 0 : 64}\n {...props}\n {...(navigation.withControls\n ? filterControls(controls, [\n 'theme',\n 'onChangeTheme',\n 'textSize',\n 'onChangeTextSize',\n 'wideFormat',\n 'onChangeWideFormat',\n 'showMiniToc',\n 'onChangeShowMiniToc',\n 'langs',\n 'onChangeLang',\n ])\n : controls)}\n >\n <ConstructorPage {...(data as DocContentPageData).data} />\n </Page>\n ),\n [data, navigation, props, controls, fullScreen],\n );\n const content = useContent(data as DocContentPageData, CustomPage);\n\n const custom = useMemo(\n () => ({\n navigation: navigation.custom,\n blocks: content.custom,\n }),\n [navigation, content],\n );\n\n return (\n <PageConstructorProvider\n theme={theme}\n projectSettings={{disableCompress: true}}\n ssrConfig={{\n isServer: Boolean(process.env.BROWSER),\n }}\n >\n <PageConstructor\n custom={custom}\n content={content.layout}\n navigation={fullScreen ? undefined : navigation.layout}\n />\n </PageConstructorProvider>\n );\n}\n\nfunction filterControls(controls: HeaderControlsProps, omitProps: string[]) {\n return Object.keys(controls).reduce(\n (acc, key) => {\n if (!omitProps.includes(key)) {\n acc[key] = controls[key as keyof HeaderControlsProps];\n }\n\n return acc;\n },\n {} as Record<string, unknown>,\n ) as Partial<HeaderControlsProps>;\n}\n","import React from 'react';\nimport {MermaidRuntime} from '@diplodoc/mermaid-extension/react';\nimport {LatexRuntime} from '@diplodoc/latex-extension/react';\nimport {Runtime as OpenapiSandbox} from '@diplodoc/openapi-extension/runtime';\nimport {Theme} from '@diplodoc/components';\nimport {useTheme} from '@gravity-ui/uikit';\nimport {TabsRuntime} from '@diplodoc/tabs-extension/react';\nimport {PageConstructorRuntime} from '@diplodoc/page-constructor-extension/react';\n\nexport function Runtime() {\n const theme = useTheme();\n\n return (\n <>\n <OpenapiSandbox />\n <LatexRuntime />\n <MermaidRuntime\n theme={theme === Theme.Dark ? 'dark' : 'neutral'}\n zoom={{\n showMenu: true,\n bindKeys: true,\n }}\n />\n <TabsRuntime saveTabsToLocalStorage={true} saveTabsToQueryStateMode=\"page\" />\n <PageConstructorRuntime />\n </>\n );\n}\n","import type {AppProps} from './index';\nimport type {Lang} from '@diplodoc/components';\n\nimport {useCallback, useMemo} from 'react';\n\nimport {getLangPath} from '../../utils';\n\nexport function useLangs({lang, langs}: AppProps) {\n const onChangeLang = useCallback((newLang: `${Lang}` | Lang) => {\n window.location.replace(getLangPath(newLang, window.location.href));\n }, []);\n\n return useMemo(\n () => ({\n lang,\n langs,\n onChangeLang,\n }),\n [lang, langs, onChangeLang],\n );\n}\n","import type {PageData} from './index';\n\nimport {type Lang, isExternalHref} from '@diplodoc/components';\nimport {useMemo} from 'react';\n\nexport function useAvailableLangs(data: PageData, langs: (`${Lang}` | Lang)[]) {\n return useMemo(() => {\n if (!('meta' in data)) {\n return [];\n }\n\n const {canonical, alternate = []} = data.meta;\n\n if (!canonical) {\n return [];\n }\n\n const langsSet = new Set<Lang>();\n\n const [canonicalLang] = canonical.split('/');\n\n if (langs.includes(canonicalLang as Lang)) {\n langsSet.add(canonicalLang as Lang);\n }\n\n for (const alt of alternate) {\n const href = alt.href;\n\n if (!href || isExternalHref(href)) {\n continue;\n }\n\n const [altLang] = href.split('/');\n\n if (langs.includes(altLang as Lang)) {\n langsSet.add(altLang as Lang);\n }\n }\n\n return Array.from(langsSet);\n }, [data, langs]);\n}\n","import type {RenderBodyHook} from '@diplodoc/components';\n\nimport React, {useCallback, useRef} from 'react';\nimport {type MdxArtifacts, type UseMdxSsrProps, useMdxSsr} from '@diplodoc/mdx-extension';\n\nexport type WithMdxInitProps = Pick<UseMdxSsrProps, 'components' | 'pureComponents'>;\n\nexport const withMdxInit = ({components, pureComponents}: WithMdxInitProps) => {\n const withMdx: RenderBodyHook = (Component) => {\n return function MdxWrapper(props) {\n const {forwardRef, mdxArtifacts, html} = props;\n const refCtr = useRef<HTMLDivElement | null>(null);\n refCtr.current = null;\n\n const forwardRefWrap = useCallback(\n (v: HTMLDivElement) => {\n refCtr.current = v;\n return forwardRef(v);\n },\n [forwardRef],\n );\n\n const node = useMdxSsr({\n refCtr,\n components,\n pureComponents,\n mdxArtifacts: mdxArtifacts as MdxArtifacts | undefined,\n html,\n });\n\n return React.createElement(\n React.Fragment,\n null,\n React.createElement(Component, {...props, forwardRef: forwardRefWrap}),\n node,\n );\n };\n };\n return withMdx;\n};\n","import type {NavigationData, PageContent} from '@gravity-ui/page-constructor';\nimport type {Props as HeaderControlsProps} from '../HeaderControls';\nimport type {SearchConfig} from '../Search';\nimport type {RouterConfig} from '../Router';\nimport type {ReactElement} from 'react';\nimport type {\n DocBasePageData,\n DocContentPageData as DocContentPageDataBase,\n DocLeadingPageData,\n DocPageData,\n RenderBodyHook,\n} from '@diplodoc/components';\n\nimport React, {useEffect, useMemo} from 'react';\nimport {ThemeProvider} from '@gravity-ui/uikit';\nimport {\n ConsentPopup,\n InterfaceProvider,\n Lang,\n RenderBodyHooksContext,\n SUPPORTED_LANGS,\n configure,\n} from '@diplodoc/components';\nimport '@diplodoc/transform/dist/js/yfm';\n\nimport {SearchProvider} from '../Search';\nimport {RouterProvider} from '../Router';\nimport {\n getDirection,\n getLandingPage,\n scrollToHash,\n updateRootClassName,\n updateThemeClassName,\n} from '../../utils';\nimport {LangProvider} from '../../hooks/useLang';\nimport '../../interceptors/leading-page-links';\n\nimport {LegacyNavPage, RichNavPage} from './Page';\nimport {Runtime} from './Runtime';\nimport {useLangs} from './useLangs';\nimport {useSettings} from './useSettings';\nimport {useMobile} from './useMobile';\nimport {useAvailableLangs} from './useAvailableLangs';\nimport {withMdxInit} from './withMdxInit';\nimport './App.scss';\n\nexport type DocAnalytics = {\n gtm?: {\n id?: string;\n mode?: 'base' | 'notification';\n };\n};\n\nexport interface AppProps {\n lang: `${Lang}` | Lang;\n langs: (`${Lang}` | Lang)[];\n router: RouterConfig;\n search?: SearchConfig;\n analytics?: DocAnalytics;\n viewerInterface?: Record<string, boolean>;\n}\n\nexport type WithNavigation = {\n navigation: NavigationData;\n};\n\nexport type DocContentPageData = DocContentPageDataBase<PageContent>;\n\nexport type PageData = DocPageData | DocLeadingPageData | DocContentPageData;\n\nexport type DocInnerProps<Data extends PageData = PageData> = {\n data: Data;\n} & AppProps;\n\nexport type {DocLeadingPageData, DocPageData};\n\nfunction hasNavigation(\n data: DocBasePageData<Partial<WithNavigation>>,\n): data is DocBasePageData<WithNavigation> {\n return Boolean(data.toc.navigation);\n}\n\nexport function App(props: DocInnerProps): ReactElement {\n const {data, router, lang, langs, search, analytics, viewerInterface} = props;\n const settings = useSettings();\n const langData = useLangs(props);\n const mobileView = useMobile();\n const availableLangs = useAvailableLangs(data, langs) as (`${Lang}` | Lang)[];\n const fixedLang = SUPPORTED_LANGS.includes(lang) ? lang : Lang.En;\n\n configure({\n lang: fixedLang,\n localeCode: fixedLang,\n });\n\n const renderHooks = useMemo(() => {\n const hooks: RenderBodyHook[] = [];\n const getMdxInitProps = global && 'getMdxInitProps' in global && global.getMdxInitProps;\n if (typeof getMdxInitProps === 'function') {\n hooks.push(withMdxInit(getMdxInitProps({dependencies: {react: React}})));\n }\n return hooks;\n }, []);\n\n const {theme, textSize, wideFormat, fullScreen, showMiniToc} = settings;\n\n const page = useMemo(\n () => ({\n router,\n theme,\n textSize,\n wideFormat,\n fullScreen,\n showMiniToc,\n isMobile: mobileView,\n }),\n [router, theme, textSize, wideFormat, fullScreen, showMiniToc, mobileView],\n );\n const controls: HeaderControlsProps = useMemo(\n () => ({\n ...settings,\n ...langData,\n mobileView,\n availableLangs,\n }),\n [langData, settings, mobileView, availableLangs],\n );\n const direction = getDirection(lang);\n const landingPage = getLandingPage(data);\n\n useEffect(() => {\n updateRootClassName({mobileView, wideFormat, fullScreen, landingPage});\n updateThemeClassName({theme});\n scrollToHash();\n }, [theme, mobileView, wideFormat, fullScreen, landingPage]);\n\n return (\n <div className=\"App\">\n <ThemeProvider theme={theme} direction={direction}>\n <LangProvider value={lang}>\n <RouterProvider value={router}>\n <SearchProvider value={search}>\n <InterfaceProvider interface={viewerInterface || {}}>\n <RenderBodyHooksContext.Provider value={renderHooks}>\n {hasNavigation(data) ? (\n <RichNavPage data={data} props={page} controls={controls} />\n ) : (\n <LegacyNavPage\n data={data}\n props={page}\n controls={controls}\n />\n )}\n </RenderBodyHooksContext.Provider>\n {analytics && (\n <ConsentPopup\n router={router}\n gtmId={analytics?.gtm?.id || ''}\n consentMode={analytics?.gtm?.mode}\n />\n )}\n <Runtime />\n </InterfaceProvider>\n </SearchProvider>\n </RouterProvider>\n </LangProvider>\n </ThemeProvider>\n </div>\n );\n}\n","import type {\n Block,\n ConstructorBlock,\n NavigationData as ConstructorNavigaitonData,\n PageContent as ConstructorPageContentBase,\n} from '@gravity-ui/page-constructor';\nimport type {BlocksConfig, Parser, TransformerRaw} from '@gravity-ui/page-constructor/server';\n\nimport {config, contentTransformer} from '@gravity-ui/page-constructor/server';\n\nexport interface MetaData {\n title: string;\n description?: string;\n}\n\nexport interface PageContentBase {\n meta?: MetaData;\n}\n\nexport enum Lang {\n RU = 'ru',\n EN = 'en',\n}\n\nexport type PageContent<T> = T & PageContentBase;\nexport type ConstructorPageContent = PageContent<ConstructorPageContentBase>;\nexport type NavigationData = PageContent<ConstructorNavigaitonData>;\nexport type ConfigData = ConstructorPageContent | NavigationData;\n\nexport interface PreloadParams {\n lang: `${Lang}` | Lang;\n pageName: string;\n pageReferer?: string;\n}\n\ninterface BlockConfig {\n transformer: TransformerRaw;\n fields?: string[];\n parser?: Parser;\n}\n\nexport function isPageConfig(config: ConfigData): config is ConstructorPageContent {\n return 'blocks' in config;\n}\n\nexport function preprocess(\n content: ConfigData,\n params: PreloadParams,\n customYfmTransformer: TransformerRaw,\n) {\n const {lang} = params;\n\n if (isPageConfig(content) && content.blocks) {\n return {\n ...content,\n blocks: transformBlocks(content.blocks, lang, customYfmTransformer),\n };\n }\n\n return content;\n}\n\nfunction replaceTransformer(config: BlocksConfig, newTransformer: TransformerRaw): BlocksConfig {\n return Object.keys(config).reduce((newConfig, subBlockType) => {\n const subBlock = config[subBlockType];\n\n if (Array.isArray(subBlock)) {\n newConfig[subBlockType] = subBlock.map((block: {transformer: {name: string}}) => {\n return block.transformer.name === 'yfmTransformer'\n ? {...block, transformer: newTransformer}\n : block;\n }) as BlockConfig[];\n } else {\n newConfig[subBlockType] =\n subBlock.transformer.name === 'yfmTransformer'\n ? {...subBlock, transformer: newTransformer}\n : subBlock;\n }\n\n return newConfig;\n }, {} as BlocksConfig);\n}\n\nfunction transformBlocks(\n blocks: ConstructorBlock[],\n lang: `${Lang}` | Lang,\n customYfmTransformer: TransformerRaw,\n) {\n const customConfig = replaceTransformer(config, customYfmTransformer);\n\n return contentTransformer({\n content: {blocks},\n options: {\n lang,\n customConfig,\n },\n }).blocks as Block[];\n}\n","import type {DocAnalytics, DocInnerProps, DocLeadingPageData, DocPageData} from './components/App';\nimport type {ConfigData, PreloadParams} from './preprocess';\n\nimport React from 'react';\nimport {renderToString} from 'react-dom/server';\n\nimport {App} from './components/App';\nimport {LINK_KEYS, LINK_KEYS_LEADING_CONFIG, LINK_KEYS_PAGE_CONSTRUCTOR_CONFIG} from './constants';\nimport {preprocess} from './preprocess';\n\nexport type {\n DocInnerProps,\n DocPageData,\n DocLeadingPageData,\n DocAnalytics,\n ConfigData,\n PreloadParams,\n};\nexport type {\n SearchConfig as ISearchProviderConfig,\n WorkerConfig as ISearchWorkerConfig,\n WorkerApi as ISearchWorkerApi,\n} from './components/Search';\nexport {LINK_KEYS, LINK_KEYS_LEADING_CONFIG, LINK_KEYS_PAGE_CONSTRUCTOR_CONFIG, preprocess};\n\nexport const render = (props: DocInnerProps) => renderToString(<App {...props} />);\n","(function () {\n /**\n * Element.matches() polyfill.\n * @link https://developer.mozilla.org/ru/docs/Web/API/Element/matches\n */\n if (typeof Element !== 'undefined') {\n (function (e) {\n const matches =\n e.matches ||\n e.matchesSelector ||\n e.webkitMatchesSelector ||\n e.mozMatchesSelector ||\n e.msMatchesSelector ||\n e.oMatchesSelector;\n\n if (matches) {\n e.matches = e.matchesSelector = matches;\n } else {\n e.matches = e.matchesSelector = function (selector) {\n const th = this;\n return Array.prototype.some.call(document.querySelectorAll(selector), (el) => {\n return el === th;\n });\n };\n }\n })(Element.prototype);\n }\n})();\n","export default function () {}\n","// getDefaultExport function for compatibility with non-ESM modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};\n","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n __webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => { def[key] = () => (value[key]) });\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(\n\t\tObject.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t\t__webpack_require__.f[key](chunkId, promises);\n\t\t\treturn promises;\n\t\t}, [])\n\t);\n};","// This function allow to reference chunks\n__webpack_require__.u = (chunkId) => {\n // return url for filenames not based on template\n \n // return url for filenames based on template\n return \"\" + ({\"966\": \"react\",\"971\": \"vendor\",}[chunkId] || chunkId) + \".js\"\n}","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n module.paths = [];\n if (!module.children) module.children = [];\n return module;\n};","var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif (chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor (var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--)\n\t\t\tdeferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif (\n\t\t\t\t(priority & (1 === 0) || notFulfilled >= priority) &&\n\t\t\t\tObject.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))\n\t\t\t) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif (priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif (fulfilled) {\n\t\t\tdeferred.splice(i--, 1);\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};\n","__webpack_require__.p = \"\";","var next = __webpack_require__.x\n__webpack_require__.x = () => {\n __webpack_require__.e(\"966\");\n__webpack_require__.e(\"971\");\nreturn next();\n}","__webpack_require__.b = require(\"url\").pathToFileURL(__filename);\nvar installedChunks = {\"387\": 1,};\n__webpack_require__.O.require = (chunkId) => (installedChunks[chunkId])// object to store loaded chunks\n// \"1\" means \"loaded\", otherwise not loaded yet\nvar installChunk = (chunk) => {\n\tvar moreModules = chunk.modules, chunkIds = chunk.ids, runtime = chunk.runtime;\n\tfor (var moduleId in moreModules) {\n\t\tif (__webpack_require__.o(moreModules, moduleId)) {\n\t\t __webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif (runtime) runtime(__webpack_require__);\n\tfor (var i = 0; i < chunkIds.length; i++) installedChunks[chunkIds[i]] = 1;\n\t__webpack_require__.O();\n};// require() chunk loading for javascript\n__webpack_require__.f.require = (chunkId, promises) => {\n\t// \"1\" is the signal for \"already loaded\"\n\tif (!installedChunks[chunkId]) {\n\t\tif (true) {\n\t\t\tinstallChunk(require(\"./\" + __webpack_require__.u(chunkId)));\n\t\t} else installedChunks[chunkId] = 1;\n\t}\n};"],"names":["createContext","useContext","RouterContext","RouterProvider","useRouter","Lang","LangContext","LangProvider","useLang","TextSizes","Theme","HEADER_HEIGHT","MOBILE_VIEW_WIDTH_BREAKPOINT","DEFAULT_USER_SETTINGS","RTL_LANGS","TextDirection","LINK_KEYS_LEADING_CONFIG","LINK_KEYS_PAGE_CONSTRUCTOR_CONFIG","LINK_KEYS","Set","getPageType","isBrowser","document","updateThemeClassName","param","theme","el","updateRootClassName","states","toggle","name","state","Boolean","Object","getDirection","lang","isRTL","toBoolean","str","getSettings","getSetting","textSize","showMiniToc","wideFormat","fullScreen","getLandingPage","data","getMobileView","sessionStorage","setSetting","value","String","isDetailsTag","isHeaderTag","scrollToElement","offset","isInViewport","elementPosition","offsetPosition","window","getLangPath","href","path","rect","scrollToHash","hash","element","node","setTimeout","useMemo","useState","capitalize","string","ch","useSettings","settings","useSetting","controls","_useState","setting","onChangeSetting","withSavingSetting","_obj","settingName","onChange","useCallback","useEffect","useMobile","mobileView","setMobileView","onResizeHandler","SearchContext","SearchProvider","useSearch","App","buildSearchLink","base","config","query","page","searchParams","URLSearchParams","params","link","DefaultSearchProvider","initWorker","suggest","search","count","request1","message","request","BAD_ORIGIN_ERROR","loadWorker","match","url","blob","Worker","URL","error","_instanceof","DOMException","Blob","worker","channel","MessageChannel","Promise","resolve","reject","createProvider","useProvider","_useContext","depth","provider","setProvider","React","useRef","SearchPage","block","b","getUrlParams","Number","setUrlParams","formatResults","searchResults","Array","result","_result_hierarchy","_result_hierarchy1","_result_hierarchy2","ITEMS_PER_PAGE","Page","router","setQuery","_useState1","setPage","_useState2","results","setResults","_useState3","total","setTotal","_useState4","loading","setLoading","providerRef","_getUrlParams","q","p","items","formatted","handlePageChange","newPage","handleQueryChange","newQuery","ThemeProvider","SUPPORTED_LANGS","configure","Search","props","searchData","fixedLang","direction","routerConfig","Header","Content","Footer","defaults","Layout","_$_object_spread","children","doc","headerHeight","header","content","footer","child","BackgroundMedia","Col","ConstructorBlocks","Grid","Row","getThemedValue","useTheme","bPC","bPCRow","ConstructorRow","ConstructorPage","background","blocks","themedBackground","DocumentType","useContent","CustomPage","type","layout","SearchSuggest","useInterface","Icon","Magnifier","SearchButton","Suggest","isSearchHidden","onFocus","onBlur","memo","ControlSizes","Controls","ControlsLayout","HeaderControls","onChangeTheme","onChangeTextSize","onChangeWideFormat","onChangeShowMiniToc","langs","onChangeLang","availableLangs","CustomNavigation","MobileDropdown","findItem","right","left","item","useNavigation","CustomControls","CustomSuggest","viewerInterface","toc","navigation","logo","leftItems","rightItems","withControls","withSearch","navigationData","navigationTocData","mobileControlsData","_logo_icon","PageConstructor","PageConstructorProvider","getPageByType","_param","pageProps","LegacyNavPage","custom","process","RichNavPage","filterControls","undefined","omitProps","acc","key","MermaidRuntime","LatexRuntime","Runtime","OpenapiSandbox","TabsRuntime","PageConstructorRuntime","useLangs","newLang","isExternalHref","useAvailableLangs","_data_meta","canonical","alternate","langsSet","_canonical_split","canonicalLang","_iteratorError","alt","_href_split","altLang","useMdxSsr","withMdxInit","components","pureComponents","withMdx","Component","MdxWrapper","forwardRef","mdxArtifacts","html","refCtr","forwardRefWrap","v","ConsentPopup","InterfaceProvider","RenderBodyHooksContext","hasNavigation","_analytics_gtm","_analytics_gtm1","analytics","langData","renderHooks","hooks","getMdxInitProps","global","landingPage","contentTransformer","isPageConfig","preprocess","customYfmTransformer","transformBlocks","replaceTransformer","newTransformer","newConfig","subBlockType","subBlock","customConfig","renderToString","render","Element","e","matches","selector","th"],"mappings":"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;gBACJ;YACJ;QACJ,GAAGJ,QAAQ,SAAS;IACxB;AACJ;;;;;;;;;;AC3BA,yBAAe,uCAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACA5B;AACA;AACA;AACA;AACA;AACA,iCAAiC,WAAW;AAC5C;AACA;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD,sCAAsC,iEAAiE;AACvG,yDAAyD,+BAA+B;AACxF;AACA;AACA;AACA;AACA;;;;ACzBA;AACA;AACA;AACA,kDAAkD,wCAAwC;AAC1F;AACA;AACA;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;;ACVA;AACA;AACA;AACA;AACA;AACA,gBAAgB,gCAAgC;AAChD;;;;ACNA;;;;ACAA;AACA;AACA;AACA,uDAAuD,iBAAiB;AACxE;AACA,gDAAgD,aAAa;AAC7D;;;;ACNA;AACA;AACA;AACA;AACA;;;;ACJA;AACA;AACA;AACA;AACA,gCAAgC,wCAAwC;AACxE;AACA;AACA;AACA;AACA;AACA,iBAAiB,qBAAqB;AACtC;AACA;AACA,kBAAkB,qBAAqB;AACvC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AC/BA;;;;ACAA;AACA;AACA;AACA;AACA;AACA;;;;ACLA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,qBAAqB;AACtC;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA"}
@@ -2197,24 +2197,28 @@ var constants = __webpack_require__(53816);
2197
2197
 
2198
2198
 
2199
2199
 
2200
+
2200
2201
  var LangControl_b = (0,lib["default"])("dc-lang-control");
2201
2202
  var LangControl_LIST_ITEM_HEIGHT = 36;
2202
2203
  var LangControl = (props) => {
2203
2204
  const { t } = (0,useTranslation/* .useTranslation */.$)("controls");
2204
2205
  const { controlClassName, controlSize, isVerticalView, popupPosition } = (0,react.useContext)(ControlsLayout/* .ControlsLayoutContext */.q);
2205
- const { lang, langs = constants/* .DEFAULT_LANGS */.rc, onChangeLang } = props;
2206
+ const { lang, langs = constants/* .DEFAULT_LANGS */.rc, availableLangs, onChangeLang } = props;
2206
2207
  const controlRef = (0,react.useRef)(null);
2207
2208
  const popupState = (0,usePopupState/* .usePopupState */.o)();
2208
2209
  const langItems = (0,react.useMemo)(() => {
2209
2210
  const preparedLangs = langs.map((code) => {
2210
2211
  const langData = langs_default().where("1", code);
2212
+ const lang2 = (langData == null ? void 0 : langData["1"]) || models/* .Lang.En */.Uo.En;
2213
+ const disabled = availableLangs.length && !availableLangs.includes(lang2);
2211
2214
  return langData ? {
2212
2215
  text: langData.local,
2213
- value: langData["1"]
2216
+ value: lang2,
2217
+ disabled
2214
2218
  } : void 0;
2215
2219
  }).filter(Boolean);
2216
2220
  return preparedLangs.length ? preparedLangs : constants/* .LEGACY_LANG_ITEMS */.Yl;
2217
- }, [langs]);
2221
+ }, [langs, availableLangs]);
2218
2222
  const renderItem = (0,react.useCallback)((item) => {
2219
2223
  return /* @__PURE__ */ react.createElement("button", { className: LangControl_b("list-item") }, item.text);
2220
2224
  }, []);
@@ -2487,7 +2491,8 @@ var ControlsList = (props) => {
2487
2491
  vcsType,
2488
2492
  isLiked,
2489
2493
  isDisliked,
2490
- isHiddenFeedback
2494
+ isHiddenFeedback,
2495
+ availableLangs = []
2491
2496
  } = props;
2492
2497
  const withFullscreenControl = Boolean(onChangeFullScreen);
2493
2498
  const withSettingsControl = Boolean(
@@ -2530,6 +2535,7 @@ var ControlsList = (props) => {
2530
2535
  key: "lang-control",
2531
2536
  lang,
2532
2537
  langs,
2538
+ availableLangs,
2533
2539
  onChangeLang
2534
2540
  }
2535
2541
  ),
@@ -5326,11 +5332,22 @@ var MobileControlSheet = (0,react.memo)(
5326
5332
  onItemClick,
5327
5333
  isVisible,
5328
5334
  onClose,
5329
- selectedItemIndex
5335
+ selectedItemIndex,
5336
+ availableLangs
5330
5337
  }) => {
5331
5338
  const renderItem = (0,react.useCallback)(
5332
- (item) => /* @__PURE__ */ react.createElement("button", { className: b("list-item") }, item.text),
5333
- []
5339
+ (item) => {
5340
+ const isDisabled = availableLangs && !availableLangs.includes(item.value);
5341
+ return /* @__PURE__ */ react.createElement(
5342
+ "button",
5343
+ {
5344
+ className: b("list-item", { disabled: isDisabled }),
5345
+ disabled: isDisabled
5346
+ },
5347
+ item.text
5348
+ );
5349
+ },
5350
+ [availableLangs]
5334
5351
  );
5335
5352
  return /* @__PURE__ */ react.createElement(Sheet, { title, className: b(), visible: isVisible, onClose }, /* @__PURE__ */ react.createElement(
5336
5353
  List/* .List */.a,
@@ -5373,6 +5390,7 @@ var MobileControl = (0,react.memo)(
5373
5390
  selectedItem,
5374
5391
  selectedItemIndex,
5375
5392
  displayItems,
5393
+ availableLangs,
5376
5394
  onChangeValue
5377
5395
  }) => {
5378
5396
  const labelText = (0,react.useMemo)(
@@ -5396,7 +5414,8 @@ var MobileControl = (0,react.memo)(
5396
5414
  onItemClick,
5397
5415
  isVisible: sheetIsVisible,
5398
5416
  onClose: onSheetClose,
5399
- selectedItemIndex
5417
+ selectedItemIndex,
5418
+ availableLangs
5400
5419
  }
5401
5420
  ), /* @__PURE__ */ react.createElement(
5402
5421
  Button/* .Button */.z,
@@ -5432,7 +5451,7 @@ var MobileControl_default = MobileControl;
5432
5451
 
5433
5452
 
5434
5453
  var MobileControls_b = (0,lib["default"])("dc-mobile-controls");
5435
- var useLangControl = (t, lang, langs, onChangeLang) => {
5454
+ var useLangControl = (t, lang, availableLangs, langs, onChangeLang) => {
5436
5455
  const langItems = (0,react.useMemo)(() => {
5437
5456
  const preparedLangs = (langs != null ? langs : constants/* .DEFAULT_LANGS */.rc).map((code) => {
5438
5457
  const langData = langs_default().where("1", code);
@@ -5453,6 +5472,7 @@ var useLangControl = (t, lang, langs, onChangeLang) => {
5453
5472
  selectedItem: lang,
5454
5473
  selectedItemIndex,
5455
5474
  displayItems: langItems,
5475
+ availableLangs,
5456
5476
  onChangeValue: onChangeLang
5457
5477
  }
5458
5478
  );
@@ -5495,8 +5515,8 @@ var useThemeControl = (t, theme, onChangeTheme) => {
5495
5515
  };
5496
5516
  var MobileControls = (0,react.memo)(({ controlSize, userSettings }) => {
5497
5517
  const { t } = (0,useTranslation/* .useTranslation */.$)("controls");
5498
- const { onChangeLang, lang, langs, onChangeTheme, theme } = userSettings;
5499
- const langControl = useLangControl(t, lang != null ? lang : esm_models/* .Lang.En */.Uo.En, langs, onChangeLang);
5518
+ const { onChangeLang, lang, langs, availableLangs = [], onChangeTheme, theme } = userSettings;
5519
+ const langControl = useLangControl(t, lang != null ? lang : esm_models/* .Lang.En */.Uo.En, availableLangs, langs, onChangeLang);
5500
5520
  const themeControl = useThemeControl(t, theme != null ? theme : esm_models/* .Theme.Light */.Q2.Light, onChangeTheme);
5501
5521
  if (!onChangeTheme && !onChangeLang) {
5502
5522
  return null;
@@ -11982,7 +12002,8 @@ var DocPage = class extends react.Component {
11982
12002
  onMiniTocItemClick,
11983
12003
  legacyToc,
11984
12004
  notification,
11985
- notificationCb
12005
+ notificationCb,
12006
+ availableLangs = []
11986
12007
  } = this.props;
11987
12008
  const hideBurger = typeof headerHeight !== "undefined" && headerHeight > 0;
11988
12009
  const modes = {
@@ -11995,6 +12016,7 @@ var DocPage = class extends react.Component {
11995
12016
  lang,
11996
12017
  userSettings: {
11997
12018
  langs,
12019
+ availableLangs,
11998
12020
  onChangeLang,
11999
12021
  theme,
12000
12022
  onChangeTheme
@@ -12274,7 +12296,8 @@ var DocPage = class extends react.Component {
12274
12296
  isDisliked,
12275
12297
  hideControls,
12276
12298
  hideEditControl,
12277
- hideFeedbackControls
12299
+ hideFeedbackControls,
12300
+ availableLangs = []
12278
12301
  } = this.props;
12279
12302
  if (hideControls) {
12280
12303
  return null;
@@ -12304,7 +12327,8 @@ var DocPage = class extends react.Component {
12304
12327
  onSendFeedback,
12305
12328
  onSubscribe,
12306
12329
  hideEditControl: hideEditControl || fullScreen || !this.isEditable(),
12307
- hideFeedbackControls
12330
+ hideFeedbackControls,
12331
+ availableLangs
12308
12332
  }
12309
12333
  )));
12310
12334
  }