@topwrite/reader 1.0.58 → 1.0.59-alpha.1

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 (46) hide show
  1. package/dist/267-61a847.js +1 -0
  2. package/dist/273-ca3c65.js +2 -0
  3. package/dist/273-ca3c65.js.map +1 -0
  4. package/dist/277-07a022.js.map +1 -1
  5. package/dist/613-c7697a.js +2 -0
  6. package/dist/613-c7697a.js.map +1 -0
  7. package/dist/613.css +1 -0
  8. package/dist/7-646b8c.js +1 -0
  9. package/dist/913-aa0313.js +56 -0
  10. package/dist/913-aa0313.js.map +1 -0
  11. package/dist/913.css +1 -0
  12. package/dist/index.js +8 -8
  13. package/dist/index.js.map +1 -1
  14. package/package.json +5 -3
  15. package/types/components/loading-bar/index.d.ts +2 -0
  16. package/types/components/loading-bar/loading-bar.d.ts +3 -0
  17. package/types/components/search/constants.d.ts +1 -0
  18. package/types/components/search/doc-search-button.d.ts +3 -0
  19. package/types/components/search/doc-search-modal.d.ts +6 -0
  20. package/types/components/search/doc-search.d.ts +8 -0
  21. package/types/components/search/footer.d.ts +2 -0
  22. package/types/components/search/hooks/use-keyboard-events.d.ts +9 -0
  23. package/types/components/search/hooks/use-trap-focus.d.ts +5 -0
  24. package/types/components/search/icons/content-icon.d.ts +2 -0
  25. package/types/components/search/icons/control-key-icon.d.ts +2 -0
  26. package/types/components/search/icons/error-icon.d.ts +2 -0
  27. package/types/components/search/icons/go-to-external-icon.d.ts +2 -0
  28. package/types/components/search/icons/index.d.ts +11 -0
  29. package/types/components/search/icons/loading-icon.d.ts +2 -0
  30. package/types/components/search/icons/no-results-icon.d.ts +2 -0
  31. package/types/components/search/icons/recent-icon.d.ts +2 -0
  32. package/types/components/search/icons/reset-icon.d.ts +2 -0
  33. package/types/components/search/icons/search-icon.d.ts +2 -0
  34. package/types/components/search/icons/select-icon.d.ts +2 -0
  35. package/types/components/search/icons/star-icon.d.ts +2 -0
  36. package/types/components/search/index.d.ts +3 -0
  37. package/types/components/search/results.d.ts +14 -0
  38. package/types/components/search/screen-state.d.ts +10 -0
  39. package/types/components/search/screens/error-screen.d.ts +2 -0
  40. package/types/components/search/screens/no-result-screen.d.ts +2 -0
  41. package/types/components/search/screens/results-screen.d.ts +11 -0
  42. package/types/components/search/screens/start-screen.d.ts +6 -0
  43. package/types/components/search/search-box.d.ts +11 -0
  44. package/types/index.d.ts +2 -0
  45. package/dist/267-b5c5b0.js +0 -1
  46. package/dist/7-7d6f45.js +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"913-aa0313.js","mappings":"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","sources":["webpack://@topwrite/reader/./src/components/search/icons/loading-icon.tsx","webpack://@topwrite/reader/./src/components/search/icons/reset-icon.tsx","webpack://@topwrite/reader/./src/components/search/icons/search-icon.tsx","webpack://@topwrite/reader/./src/components/search/icons/select-icon.tsx","webpack://@topwrite/reader/./src/components/search/icons/content-icon.tsx","webpack://@topwrite/reader/./src/components/search/icons/error-icon.tsx","webpack://@topwrite/reader/./src/components/search/icons/no-results-icon.tsx","webpack://@topwrite/reader/./src/components/search/icons/control-key-icon.tsx","webpack://@topwrite/reader/./src/components/search/doc-search-button.tsx","webpack://@topwrite/reader/./src/components/search/constants.ts","webpack://@topwrite/reader/./src/components/search/footer.tsx","webpack://@topwrite/reader/./src/components/search/search-box.tsx","webpack://@topwrite/reader/./src/components/search/screens/error-screen.tsx","webpack://@topwrite/reader/./src/components/search/screens/no-result-screen.tsx","webpack://@topwrite/reader/./src/components/search/results.tsx","webpack://@topwrite/reader/./src/components/search/screens/results-screen.tsx","webpack://@topwrite/reader/./src/components/search/screens/start-screen.tsx","webpack://@topwrite/reader/./src/components/search/screen-state.tsx","webpack://@topwrite/reader/./src/components/search/doc-search-modal.tsx","webpack://@topwrite/reader/./src/components/search/hooks/use-trap-focus.ts","webpack://@topwrite/reader/./src/components/search/doc-search.tsx","webpack://@topwrite/reader/./src/components/search/hooks/use-keyboard-events.ts"],"sourcesContent":["export function LoadingIcon() {\r\n return (\r\n <svg viewBox='0 0 38 38' stroke='currentColor' strokeOpacity='.5'>\r\n <g fill='none' fillRule='evenodd'>\r\n <g transform='translate(1 1)' strokeWidth='2'>\r\n <circle strokeOpacity='.3' cx='18' cy='18' r='18' />\r\n <path d='M36 18c0-9.94-8.06-18-18-18'>\r\n <animateTransform\r\n attributeName='transform'\r\n type='rotate'\r\n from='0 18 18'\r\n to='360 18 18'\r\n dur='1s'\r\n repeatCount='indefinite'\r\n />\r\n </path>\r\n </g>\r\n </g>\r\n </svg>\r\n );\r\n}\r\n","export function ResetIcon() {\r\n return (\r\n <svg width='20' height='20' viewBox='0 0 20 20'>\r\n <path\r\n d='M10 10l5.09-5.09L10 10l5.09 5.09L10 10zm0 0L4.91 4.91 10 10l-5.09 5.09L10 10z'\r\n stroke='currentColor'\r\n fill='none'\r\n fillRule='evenodd'\r\n strokeLinecap='round'\r\n strokeLinejoin='round'\r\n />\r\n </svg>\r\n );\r\n}\r\n","export function SearchIcon() {\r\n return (\r\n <svg\r\n width='20'\r\n height='20'\r\n className='DocSearch-Search-Icon'\r\n viewBox='0 0 20 20'\r\n >\r\n <path\r\n d='M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z'\r\n stroke='currentColor'\r\n fill='none'\r\n fillRule='evenodd'\r\n strokeLinecap='round'\r\n strokeLinejoin='round'\r\n />\r\n </svg>\r\n );\r\n}\r\n","export function SelectIcon() {\r\n return (\r\n <svg\r\n className='DocSearch-Hit-Select-Icon'\r\n width='20'\r\n height='20'\r\n viewBox='0 0 20 20'\r\n >\r\n <g\r\n stroke='currentColor'\r\n fill='none'\r\n fillRule='evenodd'\r\n strokeLinecap='round'\r\n strokeLinejoin='round'\r\n >\r\n <path d='M18 3v4c0 2-2 4-4 4H2' />\r\n <path d='M8 17l-6-6 6-6' />\r\n </g>\r\n </svg>\r\n );\r\n}\r\n","export function ContentIcon() {\r\n return (\r\n <svg width='20' height='20' viewBox='0 0 20 20'>\r\n <path\r\n d='M17 6v12c0 .52-.2 1-1 1H4c-.7 0-1-.33-1-1V2c0-.55.42-1 1-1h8l5 5zM14 8h-3.13c-.51 0-.87-.34-.87-.87V4'\r\n stroke='currentColor'\r\n fill='none'\r\n fillRule='evenodd'\r\n strokeLinejoin='round'\r\n />\r\n </svg>\r\n );\r\n}\r\n","export function ErrorIcon() {\r\n return (\r\n <svg\r\n width='40'\r\n height='40'\r\n viewBox='0 0 20 20'\r\n fill='none'\r\n fillRule='evenodd'\r\n stroke='currentColor'\r\n strokeLinecap='round'\r\n strokeLinejoin='round'\r\n >\r\n <path\r\n d='M19 4.8a16 16 0 00-2-1.2m-3.3-1.2A16 16 0 001.1 4.7M16.7 8a12 12 0 00-2.8-1.4M10 6a12 12 0 00-6.7 2M12.3 14.7a4 4 0 00-4.5 0M14.5 11.4A8 8 0 0010 10M3 16L18 2M10 18h0'></path>\r\n </svg>\r\n );\r\n}\r\n","export function NoResultsIcon() {\r\n return (\r\n <svg\r\n width='40'\r\n height='40'\r\n viewBox='0 0 20 20'\r\n fill='none'\r\n fillRule='evenodd'\r\n stroke='currentColor'\r\n strokeLinecap='round'\r\n strokeLinejoin='round'\r\n >\r\n <path\r\n d='M15.5 4.8c2 3 1.7 7-1 9.7h0l4.3 4.3-4.3-4.3a7.8 7.8 0 01-9.8 1m-2.2-2.2A7.8 7.8 0 0113.2 2.4M2 18L18 2'></path>\r\n </svg>\r\n );\r\n}\r\n","export function ControlKeyIcon() {\r\n return (\r\n <svg width='15' height='15' className='DocSearch-Control-Key-Icon'>\r\n <path\r\n d='M4.505 4.496h2M5.505 5.496v5M8.216 4.496l.055 5.993M10 7.5c.333.333.5.667.5 1v2M12.326 4.5v5.996M8.384 4.496c1.674 0 2.116 0 2.116 1.5s-.442 1.5-2.116 1.5M3.205 9.303c-.09.448-.277 1.21-1.241 1.203C1 10.5.5 9.513.5 8V7c0-1.57.5-2.5 1.464-2.494.964.006 1.134.598 1.24 1.342M12.553 10.5h1.953'\r\n strokeWidth='1.2'\r\n stroke='currentColor'\r\n fill='none'\r\n strokeLinecap='square'\r\n />\r\n </svg>\r\n );\r\n}\r\n","import { ComponentProps, forwardRef, useEffect, useState } from 'react';\r\nimport { ControlKeyIcon, SearchIcon } from './icons';\r\nimport { styled, useIntl } from '@topwrite/common';\r\n\r\nexport type DocSearchButtonProps = ComponentProps<'button'>\r\n\r\nconst ACTION_KEY_DEFAULT = 'Ctrl' as const;\r\nconst ACTION_KEY_APPLE = '⌘' as const;\r\n\r\nfunction isAppleDevice() {\r\n return /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform);\r\n}\r\n\r\nexport const DocSearchButton = forwardRef<HTMLButtonElement, DocSearchButtonProps>(({ className, ...props }, ref) => {\r\n const [key, setKey] = useState<typeof ACTION_KEY_APPLE | typeof ACTION_KEY_DEFAULT | null>(null);\r\n\r\n useEffect(() => {\r\n if (typeof navigator !== 'undefined') {\r\n setKey(isAppleDevice() ? ACTION_KEY_APPLE : ACTION_KEY_DEFAULT);\r\n }\r\n }, []);\r\n\r\n const intl = useIntl();\r\n\r\n return <Button\r\n type='button'\r\n className='DocSearch DocSearch-Button'\r\n {...props}\r\n ref={ref}\r\n >\r\n <span className='DocSearch-Button-Container'>\r\n <SearchIcon />\r\n <span className='DocSearch-Button-Placeholder'>{intl.$t({ defaultMessage: '搜索' })}</span>\r\n </span>\r\n {key !== null && (\r\n <span className='DocSearch-Button-Keys'>\r\n <span className='DocSearch-Button-Key'>\r\n {key === ACTION_KEY_DEFAULT ? <ControlKeyIcon /> : key}\r\n </span>\r\n <span className='DocSearch-Button-Key'>K</span>\r\n </span>\r\n )}\r\n </Button>;\r\n});\r\n\r\nconst Button = styled.button`\r\n .DocSearch-Button-Keys {\r\n min-width: 0;\r\n padding: .125rem .25rem;\r\n background: rgba(0, 0, 0, 0.08);\r\n border-radius: .25rem;\r\n }\r\n\r\n .DocSearch-Button-Key {\r\n top: 1px;\r\n width: auto;\r\n height: 1.25rem;\r\n padding-right: .125rem;\r\n padding-left: .125rem;\r\n margin-right: 0;\r\n font-size: .875rem;\r\n background: none;\r\n box-shadow: none;\r\n }\r\n`\r\n","export const MAX_QUERY_SIZE = 64;\r\n","import React from 'react';\r\nimport { useIntl } from '@topwrite/common';\r\n\r\nexport function Footer() {\r\n const intl = useIntl();\r\n\r\n return (\r\n <>\r\n <div className='DocSearch-Logo'></div>\r\n <ul className='DocSearch-Commands'>\r\n <li>\r\n <span className='DocSearch-Commands-Key'>\r\n <CommandIcon>\r\n <path d='M12 3.53088v3c0 1-1 2-2 2H4M7 11.53088l-3-3 3-3' />\r\n </CommandIcon>\r\n </span>\r\n <span className='DocSearch-Label'>{intl.$t({ defaultMessage: '选中' })}</span>\r\n </li>\r\n <li>\r\n <span className='DocSearch-Commands-Key'>\r\n <CommandIcon>\r\n <path d='M7.5 3.5v8M10.5 8.5l-3 3-3-3' />\r\n </CommandIcon>\r\n </span>\r\n <span className='DocSearch-Commands-Key'>\r\n <CommandIcon>\r\n <path d='M7.5 11.5v-8M10.5 6.5l-3-3-3 3' />\r\n </CommandIcon>\r\n </span>\r\n <span className='DocSearch-Label'>{intl.$t({ defaultMessage: '导航' })}</span>\r\n </li>\r\n <li>\r\n <span className='DocSearch-Commands-Key'>\r\n <CommandIcon>\r\n <path\r\n d='M13.6167 8.936c-.1065.3583-.6883.962-1.4875.962-.7993 0-1.653-.9165-1.653-2.1258v-.5678c0-1.2548.7896-2.1016 1.653-2.1016.8634 0 1.3601.4778 1.4875 1.0724M9 6c-.1352-.4735-.7506-.9219-1.46-.8972-.7092.0246-1.344.57-1.344 1.2166s.4198.8812 1.3445.9805C8.465 7.3992 8.968 7.9337 9 8.5c.032.5663-.454 1.398-1.4595 1.398C6.6593 9.898 6 9 5.963 8.4851m-1.4748.5368c-.2635.5941-.8099.876-1.5443.876s-1.7073-.6248-1.7073-2.204v-.4603c0-1.0416.721-2.131 1.7073-2.131.9864 0 1.6425 1.031 1.5443 2.2492h-2.956' />\r\n </CommandIcon>\r\n </span>\r\n <span className='DocSearch-Label'>{intl.$t({ defaultMessage: '关闭' })}</span>\r\n </li>\r\n </ul>\r\n </>\r\n );\r\n}\r\n\r\ninterface CommandIconProps {\r\n children: React.ReactNode;\r\n}\r\n\r\nfunction CommandIcon(props: CommandIconProps) {\r\n return (\r\n <svg width='15' height='15'>\r\n <g\r\n fill='none'\r\n stroke='currentColor'\r\n strokeLinecap='round'\r\n strokeLinejoin='round'\r\n strokeWidth='1.2'\r\n >\r\n {props.children}\r\n </g>\r\n </svg>\r\n );\r\n}\r\n","import React, { MutableRefObject, useCallback, useMemo } from 'react';\r\nimport { MAX_QUERY_SIZE } from './constants';\r\nimport { LoadingIcon, ResetIcon, SearchIcon } from './icons';\r\nimport { debounce } from 'lodash';\r\nimport { useIntl, useModel } from '@topwrite/common';\r\n\r\ninterface SearchBoxProps {\r\n autoFocus: boolean;\r\n inputRef: MutableRefObject<HTMLInputElement | null>;\r\n isFromSelection: boolean;\r\n placeholder?: string;\r\n initialQuery: string;\r\n\r\n onClose(): void;\r\n}\r\n\r\nexport function SearchBox({\r\n autoFocus,\r\n inputRef,\r\n isFromSelection,\r\n initialQuery,\r\n onClose,\r\n placeholder\r\n\r\n}: SearchBoxProps) {\r\n\r\n const [{ query }, { fetch }] = useModel('search');\r\n\r\n React.useEffect(() => {\r\n if (autoFocus && inputRef.current) {\r\n inputRef.current.focus();\r\n }\r\n }, [autoFocus, inputRef]);\r\n\r\n React.useEffect(() => {\r\n if (isFromSelection && inputRef.current) {\r\n inputRef.current.select();\r\n fetch(initialQuery);\r\n }\r\n }, [isFromSelection, inputRef]);\r\n\r\n\r\n const onReset = useCallback(() => {\r\n if (inputRef.current) {\r\n inputRef.current.value = '';\r\n fetch('');\r\n }\r\n }, [fetch]);\r\n\r\n const debounced = useMemo(() => debounce(fetch, 300), [fetch]);\r\n\r\n const handleSearch = useCallback((e) => {\r\n debounced(e.target.value);\r\n }, [debounced]);\r\n\r\n const intl = useIntl();\r\n\r\n return (\r\n <>\r\n <form\r\n className='DocSearch-Form'\r\n onSubmit={(event) => {\r\n event.preventDefault();\r\n }}\r\n >\r\n <label className='DocSearch-MagnifierLabel'>\r\n <SearchIcon />\r\n </label>\r\n <div className='DocSearch-LoadingIndicator'>\r\n <LoadingIcon />\r\n </div>\r\n <input\r\n defaultValue={initialQuery}\r\n placeholder={placeholder}\r\n className='DocSearch-Input'\r\n ref={inputRef}\r\n autoFocus={autoFocus}\r\n maxLength={MAX_QUERY_SIZE}\r\n onChange={handleSearch}\r\n />\r\n <button\r\n title='Clear the query'\r\n className='DocSearch-Reset'\r\n hidden={!query}\r\n onClick={onReset}\r\n >\r\n <ResetIcon />\r\n </button>\r\n </form>\r\n <button className='DocSearch-Cancel' onClick={onClose}>\r\n {intl.$t({ defaultMessage: '取消' })}\r\n </button>\r\n </>\r\n );\r\n}\r\n","import { ErrorIcon } from '../icons';\r\n\r\nexport function ErrorScreen() {\r\n return (\r\n <div className='DocSearch-ErrorScreen'>\r\n <div className='DocSearch-Screen-Icon'>\r\n <ErrorIcon />\r\n </div>\r\n <p className='DocSearch-Title'>Unable to fetch results</p>\r\n <p className='DocSearch-Help'>\r\n You might want to check your network connection.\r\n </p>\r\n </div>\r\n );\r\n}\r\n","import { NoResultsIcon } from '../icons';\r\nimport { useIntl, useSelector } from '@topwrite/common';\r\n\r\nexport function NoResultsScreen() {\r\n\r\n const { query } = useSelector('search');\r\n const intl = useIntl();\r\n\r\n return (\r\n <div className='DocSearch-NoResults'>\r\n <div className='DocSearch-Screen-Icon'>\r\n <NoResultsIcon />\r\n </div>\r\n <p className='DocSearch-Title'>\r\n {intl.$t({ defaultMessage: '没有结果:' })} \"<strong>{query}</strong>\"\r\n </p>\r\n </div>\r\n );\r\n}\r\n","import { useCallback } from 'react';\r\nimport { SearchResult } from '../../models/search';\r\nimport Link from '../link';\r\nimport { ContentIcon, SelectIcon } from './icons';\r\n\r\nexport interface ResultItem extends SearchResult {\r\n id: number;\r\n}\r\n\r\ninterface ResultsProps {\r\n items: ResultItem[];\r\n title: string;\r\n activeIndex?: number;\r\n\r\n onItemClick(item: ResultItem): void;\r\n\r\n onActive(index: number): void;\r\n}\r\n\r\nexport function Results({ title, items, ...props }: ResultsProps) {\r\n return <section className='DocSearch-Hits'>\r\n <div className='DocSearch-Hit-source'>{title}</div>\r\n <ul>\r\n {items.map((item, index) => {\r\n return <Result\r\n key={index}\r\n item={item}\r\n {...props}\r\n />;\r\n })}\r\n </ul>\r\n </section>;\r\n}\r\n\r\ninterface ResultProps {\r\n activeIndex?: number;\r\n\r\n onItemClick(item: ResultItem): void;\r\n\r\n onActive(index: number): void;\r\n\r\n item: ResultItem;\r\n}\r\n\r\nfunction Result({\r\n item,\r\n onItemClick,\r\n onActive,\r\n activeIndex\r\n}: ResultProps) {\r\n\r\n const onMouseMove = useCallback(() => {\r\n onActive(item.id);\r\n }, [onActive, item]);\r\n\r\n return <li\r\n className='DocSearch-Hit'\r\n onClick={() => {\r\n onItemClick(item);\r\n }}\r\n onMouseMove={onMouseMove}\r\n aria-selected={activeIndex === item.id}\r\n >\r\n <Link to={item.path}>\r\n <div className='DocSearch-Hit-Container'>\r\n <div className='DocSearch-Hit-icon'>\r\n <ContentIcon />\r\n </div>\r\n <div className='DocSearch-Hit-content-wrapper'>\r\n <span className='DocSearch-Hit-title'>{item.title}</span>\r\n {item.body && <span className='DocSearch-Hit-path'>{item.body}</span>}\r\n </div>\r\n <div className='DocSearch-Hit-action'>\r\n <SelectIcon />\r\n </div>\r\n </div>\r\n </Link>\r\n </li>;\r\n}\r\n","import { Results } from '../results';\r\nimport React from 'react';\r\nimport { SearchResult } from '../../../models/search';\r\n\r\ninterface ResultsScreenProps {\r\n activeIndex?: number;\r\n inputRef: React.MutableRefObject<null | HTMLInputElement>;\r\n onItemClick: (item: SearchResult) => void;\r\n onActive: (index: number) => void;\r\n collections: any;\r\n}\r\n\r\nexport function ResultsScreen({ collections, ...props }: ResultsScreenProps) {\r\n return <div className='DocSearch-Dropdown-Container'>\r\n {collections.map((collection, index) => {\r\n return <Results\r\n key={index}\r\n title={collection.title}\r\n items={collection.items}\r\n {...props}\r\n />;\r\n })}\r\n </div>;\r\n}\r\n","import { useIntl, useSelector } from '@topwrite/common';\r\n\r\ninterface StartScreenProps {\r\n hasCollections: boolean;\r\n}\r\n\r\nexport function StartScreen(props: StartScreenProps) {\r\n\r\n const { status } = useSelector('search');\r\n const intl = useIntl();\r\n\r\n if (status === 'idle' && !props.hasCollections) {\r\n return (\r\n <div className='DocSearch-StartScreen'>\r\n <p className='DocSearch-Help'>{intl.$t({ defaultMessage: '没有最近搜索' })}</p>\r\n </div>\r\n );\r\n }\r\n\r\n return null;\r\n}\r\n","import React, { useMemo } from 'react';\r\nimport { ErrorScreen } from './screens/error-screen';\r\nimport { NoResultsScreen } from './screens/no-result-screen';\r\nimport { ResultsScreen } from './screens/results-screen';\r\nimport { StartScreen } from './screens/start-screen';\r\nimport { SearchResult } from '../../models/search';\r\nimport { useBook, useIntl, useSelector } from '@topwrite/common';\r\nimport useArticle from '../../lib/use-article';\r\n\r\nexport interface ScreenStateProps {\r\n onlyCurrentPart: boolean;\r\n activeIndex?: number;\r\n inputRef: React.MutableRefObject<null | HTMLInputElement>;\r\n onItemClick: (item: SearchResult) => void;\r\n onActive: (index: number) => void;\r\n}\r\n\r\nexport const ScreenState = ({ onlyCurrentPart, ...props }: ScreenStateProps) => {\r\n\r\n const { status, query, results } = useSelector('search');\r\n\r\n const { summary } = useBook();\r\n const intl = useIntl();\r\n const article = useArticle();\r\n\r\n const collections = useMemo(() => {\r\n let id = 0;\r\n let collections;\r\n if (summary.isSinglePart()) {\r\n collections = [{\r\n title: '',\r\n items: results,\r\n }];\r\n } else {\r\n const currentPart = article ? summary.getArticlePart(article) : null;\r\n let parts = summary.getParts();\r\n if (currentPart && onlyCurrentPart) {\r\n parts = parts.filter(part => part.level === currentPart.level);\r\n }\r\n\r\n collections = parts.map((part) => {\r\n return {\r\n level: part.level,\r\n title: onlyCurrentPart ? '' : (part.title || intl.$t({ defaultMessage: '未命名分组' })),\r\n items: results.filter((result) => {\r\n const article = summary.getArticle(article => article.path === result.path);\r\n if (article) {\r\n const articlePart = summary.getArticlePart(article);\r\n return articlePart === part;\r\n }\r\n return false;\r\n })\r\n };\r\n });\r\n\r\n if (currentPart && !onlyCurrentPart) {\r\n collections = collections.sort((a) => {\r\n return a.level === currentPart.level ? -1 : 1;\r\n });\r\n }\r\n }\r\n return collections.filter(collection => collection.items.length > 0).map((collection) => {\r\n return {\r\n ...collection,\r\n items: collection.items.map((item) => {\r\n return {\r\n ...item,\r\n id: id++\r\n };\r\n })\r\n };\r\n });\r\n }, [results]);\r\n\r\n if (status === 'error') {\r\n return <ErrorScreen />;\r\n }\r\n\r\n const hasCollections = collections.length > 0;\r\n\r\n if (!query) {\r\n return <StartScreen hasCollections={hasCollections} />;\r\n }\r\n\r\n if (!hasCollections) {\r\n return <NoResultsScreen />;\r\n }\r\n\r\n return <ResultsScreen {...props} collections={collections} />;\r\n};\r\n","import { useCallback, useEffect, useRef, useState } from 'react';\r\nimport { MAX_QUERY_SIZE } from './constants';\r\nimport { DocSearchProps } from './doc-search';\r\nimport { Footer } from './footer';\r\nimport { SearchBox } from './search-box';\r\nimport { noop } from 'lodash';\r\nimport { ScreenState } from './screen-state';\r\nimport { useTrapFocus } from './hooks/use-trap-focus';\r\nimport { styled, useIntl, useSelector } from '@topwrite/common';\r\n\r\nexport interface DocSearchModalProps extends DocSearchProps {\r\n onClose?(): void;\r\n}\r\n\r\nexport function DocSearchModal({\r\n onClose = noop,\r\n onlyCurrentPart = false,\r\n}: DocSearchModalProps) {\r\n\r\n const { query, results } = useSelector('search');\r\n const intl = useIntl();\r\n const [activeIndex, setActiveIndex] = useState<number | undefined>(undefined);\r\n\r\n const containerRef = useRef<HTMLDivElement | null>(null);\r\n const modalRef = useRef<HTMLDivElement | null>(null);\r\n const formElementRef = useRef<HTMLDivElement | null>(null);\r\n const dropdownRef = useRef<HTMLDivElement | null>(null);\r\n const inputRef = useRef<HTMLInputElement | null>(null);\r\n\r\n const initialQueryFromSelection = useRef(\r\n typeof window !== 'undefined'\r\n ? window.getSelection()!.toString().slice(0, MAX_QUERY_SIZE)\r\n : ''\r\n ).current;\r\n\r\n const initialQuery = useRef(\r\n query || initialQueryFromSelection\r\n ).current;\r\n\r\n const onActive = useCallback((index) => {\r\n setActiveIndex(index);\r\n }, [setActiveIndex]);\r\n\r\n useTrapFocus({ container: containerRef.current });\r\n\r\n useEffect(() => {\r\n document.body.classList.add('DocSearch--active');\r\n\r\n return () => {\r\n document.body.classList.remove('DocSearch--active');\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (dropdownRef.current) {\r\n dropdownRef.current.scrollTop = 0;\r\n }\r\n }, [query]);\r\n\r\n useEffect(() => {\r\n if (initialQuery.length > 0) {\r\n if (inputRef.current) {\r\n inputRef.current.focus();\r\n }\r\n }\r\n }, [initialQuery]);\r\n\r\n useEffect(() => {\r\n function setFullViewportHeight() {\r\n if (modalRef.current) {\r\n const vh = window.innerHeight * 0.01;\r\n modalRef.current.style.setProperty('--docsearch-vh', `${vh}px`);\r\n }\r\n }\r\n\r\n setFullViewportHeight();\r\n\r\n window.addEventListener('resize', setFullViewportHeight);\r\n\r\n return () => {\r\n window.removeEventListener('resize', setFullViewportHeight);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n\r\n const getActiveItem = (activeIndex: number) => {\r\n return dropdownRef.current?.getElementsByClassName('DocSearch-Hit').item(activeIndex);\r\n };\r\n\r\n const onKeyDown = (event: KeyboardEvent) => {\r\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\r\n event.preventDefault();\r\n setActiveIndex((activeIndex = -1) => {\r\n if (event.key === 'ArrowUp') {\r\n --activeIndex;\r\n } else {\r\n ++activeIndex;\r\n }\r\n if (activeIndex < 0) {\r\n activeIndex = results.length - 1;\r\n }\r\n if (activeIndex >= results.length) {\r\n activeIndex = 0;\r\n }\r\n\r\n const activeItem = getActiveItem(activeIndex);\r\n if (activeItem) {\r\n if ((activeItem as any).scrollIntoViewIfNeeded) {\r\n (activeItem as any).scrollIntoViewIfNeeded(false);\r\n } else {\r\n activeItem.scrollIntoView(false);\r\n }\r\n }\r\n\r\n return activeIndex;\r\n });\r\n } else if (event.key === 'Enter') {\r\n event.preventDefault();\r\n setActiveIndex((activeIndex = -1) => {\r\n const activeItem = getActiveItem(activeIndex);\r\n if (activeItem) {\r\n requestAnimationFrame(() => {\r\n activeItem.getElementsByTagName('a').item(0)\r\n ?.dispatchEvent(new Event('click', { bubbles: true }));\r\n });\r\n }\r\n return activeIndex;\r\n });\r\n }\r\n };\r\n window.addEventListener('keydown', onKeyDown);\r\n\r\n return () => {\r\n window.removeEventListener('keydown', onKeyDown);\r\n };\r\n }, [setActiveIndex, results]);\r\n\r\n return (\r\n <Container\r\n ref={containerRef}\r\n className='DocSearch DocSearch-Container'\r\n onMouseDown={(event) => {\r\n if (event.target === event.currentTarget) {\r\n onClose();\r\n }\r\n }}\r\n >\r\n <div className='DocSearch-Modal' ref={modalRef}>\r\n <header className='DocSearch-SearchBar' ref={formElementRef}>\r\n <SearchBox\r\n initialQuery={initialQuery}\r\n placeholder={intl.$t({ defaultMessage: '搜索文档' })}\r\n autoFocus={initialQuery.length === 0}\r\n onClose={onClose}\r\n inputRef={inputRef}\r\n isFromSelection={\r\n Boolean(initialQuery) &&\r\n initialQuery === initialQueryFromSelection\r\n }\r\n />\r\n </header>\r\n <div className='DocSearch-Dropdown' ref={dropdownRef}>\r\n <ScreenState\r\n onlyCurrentPart={onlyCurrentPart}\r\n onActive={onActive}\r\n activeIndex={activeIndex}\r\n onItemClick={() => {\r\n onClose();\r\n }}\r\n inputRef={inputRef}\r\n />\r\n </div>\r\n <footer className='DocSearch-Footer'>\r\n <Footer />\r\n </footer>\r\n </div>\r\n </Container>\r\n );\r\n}\r\n\r\nconst Container = styled.div`\r\n .DocSearch-Commands-Key {\r\n padding-left: 1px;\r\n font-size: .875rem;\r\n background-color: rgba(0, 0, 0, 0.1);\r\n background-image: none;\r\n box-shadow: none;\r\n }\r\n\r\n .DocSearch-Hit-content-wrapper {\r\n line-height: 1.3;\r\n }\r\n\r\n .DocSearch-Hit-title {\r\n font-size: 1em;\r\n }\r\n\r\n .DocSearch-Help {\r\n font-size: 1em;\r\n }\r\n\r\n @media (max-width: 750px) {\r\n .DocSearch-Footer {\r\n display: none;\r\n }\r\n }\r\n\r\n .DocSearch-Label {\r\n line-height: 1;\r\n }\r\n\r\n`;\r\n","import React from 'react';\r\n\r\ninterface UseTrapFocusProps {\r\n container: HTMLElement | null;\r\n}\r\n\r\nexport function useTrapFocus({ container }: UseTrapFocusProps) {\r\n React.useEffect(() => {\r\n if (!container) {\r\n return undefined;\r\n }\r\n\r\n const focusableElements = container.querySelectorAll<HTMLElement>(\r\n 'a[href]:not([disabled]), button:not([disabled]), input:not([disabled])'\r\n );\r\n const firstElement = focusableElements[0];\r\n const lastElement = focusableElements[focusableElements.length - 1];\r\n\r\n function trapFocus(event: KeyboardEvent) {\r\n if (event.key !== 'Tab') {\r\n return;\r\n }\r\n\r\n if (event.shiftKey) {\r\n if (document.activeElement === firstElement) {\r\n event.preventDefault();\r\n lastElement.focus();\r\n }\r\n } else if (document.activeElement === lastElement) {\r\n event.preventDefault();\r\n firstElement.focus();\r\n }\r\n }\r\n\r\n container.addEventListener('keydown', trapFocus);\r\n\r\n return () => {\r\n container.removeEventListener('keydown', trapFocus);\r\n };\r\n }, [container]);\r\n}\r\n","import { useKeyboardEvents } from './hooks/use-keyboard-events';\r\nimport { ElementType, useCallback, useRef, useState } from 'react';\r\nimport { DocSearchButton } from './doc-search-button';\r\nimport { createPortal } from 'react-dom';\r\nimport { DocSearchModal } from './doc-search-modal';\r\nimport { createGlobalStyle } from '@topwrite/common';\r\nimport '@docsearch/css';\r\n\r\nexport interface DocSearchProps {\r\n as?: ElementType;\r\n className?: string;\r\n onlyCurrentPart?: boolean;\r\n}\r\n\r\nexport default function DocSearch({ as, className, ...props }: DocSearchProps) {\r\n const searchButtonRef = useRef<HTMLButtonElement>(null);\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const onOpen = useCallback(() => {\r\n setIsOpen(true);\r\n }, [setIsOpen]);\r\n\r\n const onClose = useCallback(() => {\r\n setIsOpen(false);\r\n }, [setIsOpen]);\r\n\r\n const onInput = useCallback(() => {\r\n setIsOpen(true);\r\n }, [setIsOpen]);\r\n\r\n useKeyboardEvents({\r\n isOpen,\r\n onOpen,\r\n onClose,\r\n onInput,\r\n searchButtonRef,\r\n });\r\n\r\n const Component = as || DocSearchButton;\r\n\r\n return <>\r\n <GlobalStyle />\r\n <Component onClick={onOpen} className={className} ref={searchButtonRef} />\r\n {isOpen && createPortal(\r\n <DocSearchModal\r\n {...props}\r\n onClose={onClose}\r\n />,\r\n document.body\r\n )}\r\n </>;\r\n}\r\n\r\nconst GlobalStyle = createGlobalStyle`\r\n :root {\r\n --docsearch-primary-color: var(--ttw-primary-color);\r\n }\r\n`;\r\n","import React from 'react';\r\n\r\nexport interface UseDocSearchKeyboardEventsProps {\r\n isOpen: boolean;\r\n\r\n onOpen(): void;\r\n\r\n onClose(): void;\r\n\r\n onInput?(event: KeyboardEvent): void;\r\n\r\n searchButtonRef?: React.RefObject<HTMLButtonElement>;\r\n}\r\n\r\nfunction isEditingContent(event: KeyboardEvent): boolean {\r\n const element = event.target as HTMLElement;\r\n const tagName = element.tagName;\r\n\r\n return (\r\n element.isContentEditable ||\r\n tagName === 'INPUT' ||\r\n tagName === 'SELECT' ||\r\n tagName === 'TEXTAREA'\r\n );\r\n}\r\n\r\nexport function useKeyboardEvents({\r\n isOpen,\r\n onOpen,\r\n onClose,\r\n onInput,\r\n searchButtonRef,\r\n}: UseDocSearchKeyboardEventsProps) {\r\n React.useEffect(() => {\r\n function onKeyDown(event: KeyboardEvent) {\r\n function open() {\r\n // We check that no other DocSearch modal is showing before opening\r\n // another one.\r\n if (!document.body.classList.contains('DocSearch--active')) {\r\n onOpen();\r\n }\r\n }\r\n\r\n if (\r\n (event.keyCode === 27 && isOpen) ||\r\n // The `Cmd+K` shortcut both opens and closes the modal.\r\n (event.key === 'k' && (event.metaKey || event.ctrlKey)) ||\r\n // The `/` shortcut opens but doesn't close the modal because it's\r\n // a character.\r\n (!isEditingContent(event) && event.key === '/' && !isOpen)\r\n ) {\r\n event.preventDefault();\r\n\r\n if (isOpen) {\r\n onClose();\r\n } else if (!document.body.classList.contains('DocSearch--active')) {\r\n open();\r\n }\r\n }\r\n\r\n if (\r\n searchButtonRef &&\r\n searchButtonRef.current === document.activeElement &&\r\n onInput\r\n ) {\r\n if (/[a-zA-Z0-9]/.test(String.fromCharCode(event.keyCode))) {\r\n onInput(event);\r\n }\r\n }\r\n }\r\n\r\n window.addEventListener('keydown', onKeyDown);\r\n\r\n return () => {\r\n window.removeEventListener('keydown', onKeyDown);\r\n };\r\n }, [isOpen, onOpen, onClose, onInput, searchButtonRef]);\r\n}\r\n"],"names":["LoadingIcon","_jsx","viewBox","stroke","strokeOpacity","children","fill","fillRule","_jsxs","transform","strokeWidth","cx","cy","r","d","attributeName","type","from","to","dur","repeatCount","ResetIcon","width","height","strokeLinecap","strokeLinejoin","SearchIcon","className","SelectIcon","ContentIcon","ErrorIcon","NoResultsIcon","ControlKeyIcon","ACTION_KEY_DEFAULT","DocSearchButton","forwardRef","_ref","ref","props","key","setKey","useState","useEffect","navigator","test","platform","intl","useIntl","Button","$t","id","defaultMessage","styled","MAX_QUERY_SIZE","Footer","_Fragment","CommandIcon","SearchBox","autoFocus","inputRef","isFromSelection","initialQuery","onClose","placeholder","query","fetch","useModel","React","current","focus","select","onReset","useCallback","value","debounced","useMemo","debounce","handleSearch","e","target","onSubmit","event","preventDefault","defaultValue","maxLength","onChange","title","hidden","onClick","ErrorScreen","NoResultsScreen","useSelector","Results","items","map","item","index","Result","_ref2","onItemClick","onActive","activeIndex","onMouseMove","Link","path","body","ResultsScreen","collections","collection","StartScreen","status","hasCollections","ScreenState","onlyCurrentPart","results","summary","useBook","article","useArticle","isSinglePart","currentPart","getArticlePart","parts","getParts","filter","part","level","result","getArticle","sort","a","length","DocSearchModal","noop","setActiveIndex","undefined","containerRef","useRef","modalRef","formElementRef","dropdownRef","initialQueryFromSelection","window","getSelection","toString","slice","container","focusableElements","querySelectorAll","firstElement","lastElement","trapFocus","shiftKey","document","activeElement","addEventListener","removeEventListener","useTrapFocus","classList","add","remove","scrollTop","setFullViewportHeight","vh","innerHeight","style","setProperty","getActiveItem","getElementsByClassName","onKeyDown","arguments","activeItem","scrollIntoViewIfNeeded","scrollIntoView","requestAnimationFrame","getElementsByTagName","dispatchEvent","Event","bubbles","Container","onMouseDown","currentTarget","Boolean","DocSearch","as","searchButtonRef","isOpen","setIsOpen","onOpen","onInput","keyCode","metaKey","ctrlKey","element","tagName","isContentEditable","isEditingContent","contains","String","fromCharCode","useKeyboardEvents","Component","GlobalStyle","createPortal","createGlobalStyle"],"sourceRoot":""}
package/dist/913.css ADDED
@@ -0,0 +1 @@
1
+ :root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 2px;position:relative;top:-1px;width:20px}@media(max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1 1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::-moz-placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{stroke-width:var(--docsearch-icon-stroke-width);animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0}}.DocSearch-Reset{stroke-width:var(--docsearch-icon-stroke-width);animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{stroke-width:var(--docsearch-icon-stroke-width);color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{stroke-width:var(--docsearch-icon-stroke-width);color:var(--docsearch-muted-color)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:2px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;width:20px}@media(max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}