@topwrite/reader 1.0.85 → 1.0.86-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.
- package/dist/{101-f52e60.js → 101-393660.js} +2 -2
- package/dist/{101-f52e60.js.map → 101-393660.js.map} +1 -1
- package/dist/368-c60600.js +2 -0
- package/dist/368-c60600.js.map +1 -0
- package/dist/{848-537c13.js → 848-146a0f.js} +2 -2
- package/dist/{848-537c13.js.map → 848-146a0f.js.map} +1 -1
- package/dist/index.js +25 -10
- package/dist/index.js.map +1 -1
- package/package.json +4 -5
- package/types/components/tooltip.d.ts +9 -0
- package/types/index.d.ts +1 -0
- package/types/lib/extend-entities.d.ts +1 -1
- package/dist/154-07a8f6.js +0 -17
- package/dist/154-07a8f6.js.map +0 -1
- package/dist/368-75537b.js +0 -2
- package/dist/368-75537b.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"848-537c13.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/icons/ask-icon.tsx","webpack://@topwrite/reader/./src/components/search/doc-search-button.tsx","webpack://@topwrite/reader/./src/components/search/mode-provider.tsx","webpack://@topwrite/reader/./src/components/search/footer.tsx","webpack://@topwrite/reader/./src/components/search/constants.ts","webpack://@topwrite/reader/./src/components/search/search-box/form.tsx","webpack://@topwrite/reader/./src/components/search/search-box/screens/error-screen.tsx","webpack://@topwrite/reader/./src/components/search/search-box/screens/start-screen.tsx","webpack://@topwrite/reader/./src/components/search/search-box/screens/no-result-screen.tsx","webpack://@topwrite/reader/./src/components/search/search-box/results.tsx","webpack://@topwrite/reader/./src/components/search/search-box/screens/results-screen.tsx","webpack://@topwrite/reader/./src/components/search/search-box/state.tsx","webpack://@topwrite/reader/./src/components/search/search-box/index.tsx","webpack://@topwrite/reader/./src/components/search/ask-box/form.tsx","webpack://@topwrite/reader/./src/components/search/ask-box/screens/start-screen.tsx","webpack://@topwrite/reader/./src/components/search/ask-box/state.tsx","webpack://@topwrite/reader/./src/components/search/ask-box/index.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","webpack://@topwrite/reader/../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/delete-property-or-throw.js","webpack://@topwrite/reader/../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/engine-ff-version.js","webpack://@topwrite/reader/../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/engine-is-ie-or-edge.js","webpack://@topwrite/reader/../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/engine-webkit-version.js","webpack://@topwrite/reader/../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/modules/es.array.sort.js"],"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","export function AskIcon() {\r\n return <svg width='16' height='16' viewBox='0 0 16 16' fill='none' preserveAspectRatio='xMidYMid meet'>\r\n <path fillRule='evenodd' clipRule='evenodd' d='M8 2.491A1.246 1.246 0 108 0a1.246 1.246 0 000 2.491zm0 2.436a.858.858 0 100-1.716.858.858 0 000 1.716zm.858 7.004a.858.858 0 11-1.716 0 .858.858 0 011.716 0zM11.073 8a.858.858 0 101.716 0 .858.858 0 00-1.716 0zm-7.004.858a.858.858 0 110-1.716.858.858 0 010 1.716zm6.104-3.03a.858.858 0 101.213-1.214.858.858 0 00-1.213 1.213zm-4.346 5.558a.858.858 0 11-1.213-1.213.858.858 0 011.213 1.213zm4.346-1.213a.858.858 0 101.213 1.213.858.858 0 00-1.213-1.213zm-5.56-4.346a.858.858 0 111.214-1.213.858.858 0 01-1.213 1.213zM8 16a1.246 1.246 0 100-2.491A1.246 1.246 0 008 16zm6.754-6.754a1.246 1.246 0 110-2.492 1.246 1.246 0 010 2.492zM0 8a1.246 1.246 0 102.491 0A1.246 1.246 0 000 8zm14.472-2.298a1.246 1.246 0 11-1.245-2.158 1.246 1.246 0 011.245 2.158zM1.072 12a1.246 1.246 0 102.157-1.246A1.246 1.246 0 001.072 12zm9.226 2.472a1.246 1.246 0 112.158-1.245 1.246 1.246 0 01-2.158 1.245zM4 1.072a1.246 1.246 0 101.246 2.157A1.246 1.246 0 004 1.072zm8.456 1.701a1.246 1.246 0 11-2.158-1.245 1.246 1.246 0 012.158 1.245zM4 14.928a1.246 1.246 0 101.246-2.158A1.246 1.246 0 004 14.928zm9.226-2.472a1.246 1.246 0 111.246-2.157 1.246 1.246 0 01-1.245 2.157zM1.072 4a1.246 1.246 0 102.157 1.246A1.246 1.246 0 001.072 4z' fill='currentColor'></path>\r\n </svg>;\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","import { createContext, Dispatch, ReactNode, SetStateAction, useContext, useState } from 'react';\r\n\r\nconst Context = createContext<[string, Dispatch<SetStateAction<string>>]>(['search', () => (void 0)]);\r\n\r\nexport default function({ children }: { children: ReactNode }) {\r\n const [mode, setMode] = useState('search');\r\n\r\n return <Context.Provider value={[mode, setMode]}>\r\n {children}\r\n </Context.Provider>;\r\n}\r\n\r\nexport const useMode = () => {\r\n return useContext(Context);\r\n};\r\n","import React from 'react';\r\nimport { css, styled, useIntl, useSelector } from '@topwrite/common';\r\nimport { useMode } from './mode-provider';\r\n\r\ninterface CommandIconProps {\r\n children: React.ReactNode;\r\n}\r\n\r\nfunction CommandIcon(props: CommandIconProps) {\r\n return <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\nexport function Footer() {\r\n const intl = useIntl();\r\n const [mode, setMode] = useMode();\r\n const { enable } = useSelector('ask');\r\n\r\n const commands = mode == 'search' ? [\r\n <li key='select'>\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 key='navigate'>\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 ] : [\r\n <li key='send'>\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 ];\r\n\r\n commands.push(\r\n <li key='close'>\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 );\r\n\r\n return <Container className='DocSearch-Footer'>\r\n <ul className='DocSearch-Commands'>\r\n {commands}\r\n </ul>\r\n {enable && <ModeSwitcher>\r\n <SwitcherButton $active={mode === 'search'} onClick={() => setMode('search')}>{intl.$t({ defaultMessage: '搜索' })}</SwitcherButton>\r\n <SwitcherButton $active={mode === 'ask'} onClick={() => setMode('ask')}>{intl.$t({ defaultMessage: '智问' })}</SwitcherButton>\r\n </ModeSwitcher>}\r\n </Container>;\r\n}\r\n\r\nconst SwitcherButton = styled.div<{ $active?: boolean }>`\r\n padding: 0 8px;\r\n border-radius: 2px;\r\n cursor: pointer;\r\n font-weight: 500;\r\n font-size: 14px;\r\n line-height: 22px;\r\n color: var(--docsearch-muted-color);\r\n\r\n ${props => props.$active && css`\r\n background-color: rgba(0, 0, 0, 0.1);\r\n `};\r\n`;\r\n\r\nconst ModeSwitcher = styled.div`\r\n height: 32px;\r\n padding: 4px;\r\n border-radius: 2px;\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n border: 1px solid rgb(212, 217, 225, 0.4);\r\n`;\r\n\r\nconst Container = styled.footer`\r\n flex-direction: row !important;\r\n`;\r\n","export const MAX_QUERY_SIZE = 64;\r\n","import { LoadingIcon, ResetIcon, SearchIcon } from '../icons';\r\nimport { MAX_QUERY_SIZE } from '../constants';\r\nimport React, { useCallback, useMemo, useRef } from 'react';\r\nimport { useIntl, useModel } from '@topwrite/common';\r\nimport { debounce } from 'lodash';\r\n\r\ninterface Props {\r\n onClose(): void;\r\n}\r\n\r\nexport default function Form({ onClose }: Props) {\r\n\r\n const [{ query, status }, { fetch }] = useModel('search');\r\n const intl = useIntl();\r\n const inputRef = useRef<HTMLInputElement | null>(null);\r\n const initialQuery = useRef(query).current;\r\n\r\n React.useEffect(() => {\r\n if (inputRef.current) {\r\n inputRef.current.focus();\r\n }\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, 500), [fetch]);\r\n\r\n const handleSearch = useCallback((e) => {\r\n debounced(e.target.value);\r\n }, [debounced]);\r\n\r\n return <header className='DocSearch-SearchBar'>\r\n <form\r\n className={[\r\n 'DocSearch-Form',\r\n status === 'loading' && 'DocSearch-Container--Stalled',\r\n ].filter(Boolean).join(' ')}\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={intl.$t({ defaultMessage: '搜索文档...' })}\r\n className='DocSearch-Input'\r\n enterKeyHint='done'\r\n ref={inputRef}\r\n 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 </header>;\r\n}\r\n","import { ErrorIcon } from '../../icons';\r\n\r\nexport function ErrorScreen() {\r\n return <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","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 { 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 { ResultItem, Results } from '../results';\r\nimport { SearchResult } from '../../../../models/search';\r\n\r\ninterface ResultsScreenProps {\r\n activeIndex?: number;\r\n onItemClick: (item: SearchResult) => void;\r\n onActive: (index: number) => void;\r\n collections: { title: string, items: ResultItem[] }[];\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 { useMemo } from 'react';\r\nimport { SearchResult } from '../../../models/search';\r\nimport { useBook, useIntl, useSelector } from '@topwrite/common';\r\nimport { ErrorScreen } from './screens/error-screen';\r\nimport { StartScreen } from './screens/start-screen';\r\nimport { NoResultsScreen } from './screens/no-result-screen';\r\nimport { ResultsScreen } from './screens/results-screen';\r\nimport { usePart } from '../../../lib/use-article';\r\n\r\nexport interface StateProps {\r\n activeIndex?: number;\r\n onItemClick: (item: SearchResult) => void;\r\n onActive: (index: number) => void;\r\n}\r\n\r\nexport default function State(props: StateProps) {\r\n\r\n const { status, part: searchPart, query, results } = useSelector('search');\r\n const currentPart = usePart();\r\n const { summary } = useBook();\r\n const intl = useIntl();\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 let parts = summary.getParts();\r\n if (searchPart) {\r\n parts = parts.filter(part => part.level.toString() === searchPart);\r\n }\r\n\r\n collections = parts.map((part) => {\r\n return {\r\n level: part.level,\r\n title: searchPart ? '' : (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 && !searchPart) {\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 Form from './form';\r\nimport { useCallback, useEffect, useRef, useState } from 'react';\r\nimport { useSelector } from '@topwrite/common';\r\nimport State from './state';\r\n\r\ninterface SearchBoxProps {\r\n onClose(): void;\r\n}\r\n\r\nexport default function SearchBox({ onClose }: SearchBoxProps) {\r\n const { query, results } = useSelector('search');\r\n const [activeIndex, setActiveIndex] = useState<number | undefined>(undefined);\r\n const dropdownRef = useRef<HTMLDivElement | null>(null);\r\n\r\n const onActive = useCallback((index) => {\r\n setActiveIndex(index);\r\n }, [setActiveIndex]);\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 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 <Form onClose={onClose} />\r\n <div className='DocSearch-Dropdown' ref={dropdownRef}>\r\n <State\r\n onActive={onActive}\r\n activeIndex={activeIndex}\r\n onItemClick={() => {\r\n onClose();\r\n }}\r\n />\r\n </div>\r\n </>;\r\n}\r\n","import { FormEvent, useCallback, useEffect, useRef } from 'react';\r\nimport { useIntl, useModel } from '@topwrite/common';\r\nimport { AskIcon, LoadingIcon } from '../icons';\r\nimport { MAX_QUERY_SIZE } from '../constants';\r\n\r\ninterface Props {\r\n onClose(): void;\r\n}\r\n\r\nexport default function Form({ onClose }: Props) {\r\n const [{ status }, { fetch }] = useModel('ask');\r\n const intl = useIntl();\r\n const inputRef = useRef<HTMLInputElement | null>(null);\r\n\r\n useEffect(() => {\r\n if (inputRef.current) {\r\n inputRef.current.focus();\r\n }\r\n }, []);\r\n\r\n const handleAsk = useCallback((event: FormEvent) => {\r\n event.preventDefault();\r\n if (inputRef.current) {\r\n fetch(inputRef.current.value);\r\n inputRef.current.value = '';\r\n }\r\n }, [inputRef, fetch]);\r\n\r\n return <header className='DocSearch-SearchBar'>\r\n <form\r\n className={[\r\n 'DocSearch-Form',\r\n status === 'loading' || status === 'stalled' && 'DocSearch-Container--Stalled',\r\n ].filter(Boolean).join(' ')}\r\n onSubmit={handleAsk}\r\n >\r\n <label className='DocSearch-MagnifierLabel'>\r\n <AskIcon />\r\n </label>\r\n <div className='DocSearch-LoadingIndicator'>\r\n <LoadingIcon />\r\n </div>\r\n <input\r\n placeholder={intl.$t({ defaultMessage: '问一个问题...' })}\r\n className='DocSearch-Input'\r\n ref={inputRef}\r\n autoFocus\r\n enterKeyHint='send'\r\n disabled={status === 'loading' || status === 'stalled'}\r\n maxLength={MAX_QUERY_SIZE}\r\n />\r\n </form>\r\n <button className='DocSearch-Cancel' onClick={onClose}>\r\n {intl.$t({ defaultMessage: '取消' })}\r\n </button>\r\n </header>;\r\n}\r\n","import { useIntl } from '@topwrite/common';\r\n\r\n\r\nexport function StartScreen() {\r\n\r\n const intl = useIntl();\r\n\r\n return <div className='DocSearch-StartScreen'>\r\n <p className='DocSearch-Help'>{intl.$t({ defaultMessage: '我是一个智能AI助理,你可以向我提问关于本文档的任何问题' })}</p>\r\n </div>;\r\n}\r\n","import { Markdown, styled, useSelector } from '@topwrite/common';\r\nimport { StartScreen } from './screens/start-screen';\r\nimport { ErrorScreen } from '../search-box/screens/error-screen';\r\nimport { LoadingIcon } from '../icons';\r\nimport { useMemo } from 'react';\r\nimport Anchor from '../../anchor';\r\n\r\ninterface Props {\r\n onClose(): void;\r\n}\r\n\r\nexport default function State({ onClose }: Props) {\r\n const { status, query, answer } = useSelector('ask');\r\n\r\n const components = useMemo(() => {\r\n return {\r\n a: Anchor\r\n };\r\n }, []);\r\n\r\n if (status === 'error') {\r\n return <ErrorScreen />;\r\n }\r\n\r\n if (!query) {\r\n return <StartScreen />;\r\n }\r\n\r\n return <div className='DocSearch-Dropdown-Container'>\r\n <Answer onClick={(e) => {\r\n if (e.target instanceof HTMLAnchorElement) {\r\n onClose();\r\n }\r\n }}>\r\n <h2>{query}</h2>\r\n {status === 'loading' ?\r\n <Loading><LoadingIcon /></Loading> :\r\n <Markdown\r\n aside={false}\r\n inject={false}\r\n components={components}\r\n >\r\n {answer}\r\n </Markdown>}\r\n </Answer>\r\n </div>;\r\n}\r\n\r\nconst Loading = styled.div`\r\n align-items: center;\r\n color: var(--docsearch-highlight-color);\r\n display: flex;\r\n justify-content: center;\r\n\r\n svg {\r\n height: 24px;\r\n width: 24px\r\n }\r\n`;\r\n\r\nconst Answer = styled.div`\r\n margin-top: 16px;\r\n margin-bottom: 16px;\r\n background: var(--docsearch-hit-background);\r\n padding: 16px;\r\n box-shadow: var(--docsearch-hit-shadow);\r\n border-radius: 4px;\r\n\r\n h2 {\r\n padding-bottom: .4em;\r\n font-size: 1.3em;\r\n line-height: 1.2;\r\n border-bottom: 1px solid #eeeeee;\r\n margin-top: 0;\r\n margin-bottom: 1em;\r\n }\r\n`;\r\n","import Form from './form';\r\nimport State from './state';\r\nimport { useEffect, useRef } from 'react';\r\nimport { styled, useSelector } from '@topwrite/common';\r\n\r\ninterface AskBoxProps {\r\n onClose(): void;\r\n}\r\n\r\nexport default function AskBox({ onClose }: AskBoxProps) {\r\n\r\n const { query, status, answer } = useSelector('ask');\r\n const dropdownRef = useRef<HTMLDivElement | null>(null);\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 (dropdownRef.current && status === 'stalled') {\r\n dropdownRef.current.scrollTop = dropdownRef.current.scrollHeight;\r\n }\r\n }, [answer, status]);\r\n\r\n return <>\r\n <Form onClose={onClose} />\r\n <Container ref={dropdownRef}>\r\n <State onClose={onClose} />\r\n </Container>\r\n </>;\r\n}\r\n\r\nconst Container = styled.div`\r\n max-height: calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));\r\n min-height: var(--docsearch-spacing);\r\n overflow-y: auto;\r\n padding: 0 var(--docsearch-spacing);\r\n scrollbar-color: var(--docsearch-muted-color) var(--docsearch-modal-background);\r\n scrollbar-width: thin;\r\n\r\n @media (max-width: 768px) {\r\n max-height: calc(var(--docsearch-vh, 1vh) * 100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));\r\n }\r\n @media (max-width: 768px) {\r\n height: 100%;\r\n }\r\n`;\r\n","import { useEffect, useRef } from 'react';\r\nimport { Footer } from './footer';\r\nimport SearchBox from './search-box';\r\nimport { useTrapFocus } from './hooks/use-trap-focus';\r\nimport { styled } from '@topwrite/common';\r\nimport AskBox from './ask-box';\r\nimport { useMode } from './mode-provider';\r\n\r\nexport interface DocSearchModalProps {\r\n onClose(): void;\r\n}\r\n\r\nexport function DocSearchModal({ onClose }: DocSearchModalProps) {\r\n const [mode] = useMode();\r\n const containerRef = useRef<HTMLDivElement | null>(null);\r\n const modalRef = useRef<HTMLDivElement | null>(null);\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 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 return <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 {mode === 'search' ? <SearchBox onClose={onClose} /> : <AskBox onClose={onClose} />}\r\n <Footer />\r\n </div>\r\n </Container>;\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-Title {\r\n &:not(:last-child) {\r\n margin-bottom: 16px;\r\n }\r\n }\r\n\r\n .DocSearch-Hits {\r\n ul {\r\n box-shadow: var(--docsearch-hit-shadow);\r\n border-radius: 4px;\r\n margin-bottom: 4px;\r\n margin-top: 3px;\r\n }\r\n }\r\n\r\n .DocSearch-Hit {\r\n padding-bottom: 0;\r\n border-radius: 0;\r\n\r\n a {\r\n border-radius: 0;\r\n border-top: 1px solid rgb(212, 217, 225, 0.4);\r\n box-shadow: none;\r\n }\r\n\r\n &:first-child {\r\n a {\r\n border-top-left-radius: 4px;\r\n border-top-right-radius: 4px;\r\n border-top-width: 0;\r\n }\r\n }\r\n\r\n &:last-child {\r\n a {\r\n border-bottom-left-radius: 4px;\r\n border-bottom-right-radius: 4px;\r\n }\r\n }\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 .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, useEffect, 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, useActions } from '@topwrite/common';\r\nimport '@docsearch/css';\r\nimport ModeProvider from './mode-provider';\r\nimport { usePart } from '../../lib/use-article';\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, onlyCurrentPart, ...props }: DocSearchProps) {\r\n const searchButtonRef = useRef<HTMLButtonElement>(null);\r\n const [isOpen, setIsOpen] = useState(false);\r\n const { setPart: setSearchPart } = useActions('search');\r\n const { setPart: setAskPart } = useActions('ask');\r\n const part = usePart();\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 useEffect(() => {\r\n setSearchPart(onlyCurrentPart ? part?.level.toString() : undefined);\r\n setAskPart(onlyCurrentPart ? part?.level.toString() : undefined);\r\n }, [onlyCurrentPart, part]);\r\n\r\n const Component = as || DocSearchButton;\r\n\r\n return <ModeProvider>\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 </ModeProvider>;\r\n}\r\n\r\nconst GlobalStyle = createGlobalStyle`\r\n :root:root {\r\n --docsearch-primary-color: var(--ttw-primary-color, #3c60ff);\r\n --docsearch-hit-height: 48px;\r\n --docsearch-searchbox-height: 48px;\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","'use strict';\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (O, P) {\n if (!delete O[P]) throw $TypeError('Cannot delete property ' + tryToString(P) + ' of ' + tryToString(O));\n};\n","var userAgent = require('../internals/engine-user-agent');\n\nvar firefox = userAgent.match(/firefox\\/(\\d+)/i);\n\nmodule.exports = !!firefox && +firefox[1];\n","var UA = require('../internals/engine-user-agent');\n\nmodule.exports = /MSIE|Trident/.test(UA);\n","var userAgent = require('../internals/engine-user-agent');\n\nvar webkit = userAgent.match(/AppleWebKit\\/(\\d+)\\./);\n\nmodule.exports = !!webkit && +webkit[1];\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\nvar toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar internalSort = require('../internals/array-sort');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar FF = require('../internals/engine-ff-version');\nvar IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');\nvar V8 = require('../internals/engine-v8-version');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\nvar test = [];\nvar nativeSort = uncurryThis(test.sort);\nvar push = uncurryThis(test.push);\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar STABLE_SORT = !fails(function () {\n // feature detection can be too slow, so check engines versions\n if (V8) return V8 < 70;\n if (FF && FF > 3) return;\n if (IE_OR_EDGE) return true;\n if (WEBKIT) return WEBKIT < 603;\n\n var result = '';\n var code, chr, value, index;\n\n // generate an array with more 512 elements (Chakra and old V8 fails only in this case)\n for (code = 65; code < 76; code++) {\n chr = String.fromCharCode(code);\n\n switch (code) {\n case 66: case 69: case 70: case 72: value = 3; break;\n case 68: case 71: value = 4; break;\n default: value = 2;\n }\n\n for (index = 0; index < 47; index++) {\n test.push({ k: chr + index, v: value });\n }\n }\n\n test.sort(function (a, b) { return b.v - a.v; });\n\n for (index = 0; index < test.length; index++) {\n chr = test[index].k.charAt(0);\n if (result.charAt(result.length - 1) !== chr) result += chr;\n }\n\n return result !== 'DGBEFHACIJK';\n});\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT;\n\nvar getSortCompare = function (comparefn) {\n return function (x, y) {\n if (y === undefined) return -1;\n if (x === undefined) return 1;\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\n return toString(x) > toString(y) ? 1 : -1;\n };\n};\n\n// `Array.prototype.sort` method\n// https://tc39.es/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n sort: function sort(comparefn) {\n if (comparefn !== undefined) aCallable(comparefn);\n\n var array = toObject(this);\n\n if (STABLE_SORT) return comparefn === undefined ? nativeSort(array) : nativeSort(array, comparefn);\n\n var items = [];\n var arrayLength = lengthOfArrayLike(array);\n var itemsLength, index;\n\n for (index = 0; index < arrayLength; index++) {\n if (index in array) push(items, array[index]);\n }\n\n internalSort(items, getSortCompare(comparefn));\n\n itemsLength = lengthOfArrayLike(items);\n index = 0;\n\n while (index < itemsLength) array[index] = items[index++];\n while (index < arrayLength) deletePropertyOrThrow(array, index++);\n\n return array;\n }\n});\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","AskIcon","preserveAspectRatio","clipRule","ACTION_KEY_DEFAULT","DocSearchButton","forwardRef","_ref","ref","props","_objectWithoutProperties","_excluded","_useState","useState","_useState2","_slicedToArray","key","setKey","useEffect","navigator","test","platform","intl","useIntl","Button","_objectSpread","$t","id","defaultMessage","styled","_templateObject","_taggedTemplateLiteral","Context","createContext","mode","setMode","Provider","value","useMode","useContext","CommandIcon","Footer","_useMode","_useMode2","enable","useSelector","commands","push","Container","ModeSwitcher","SwitcherButton","onClick","$active","css","_templateObject2","_templateObject3","_templateObject4","MAX_QUERY_SIZE","Form","onClose","_useModel","useModel","_useModel2","_useModel2$","query","status","fetch","inputRef","useRef","initialQuery","current","React","focus","onReset","useCallback","debounced","useMemo","debounce","handleSearch","e","target","filter","Boolean","join","onSubmit","event","preventDefault","defaultValue","placeholder","enterKeyHint","autoFocus","maxLength","onChange","title","hidden","ErrorScreen","StartScreen","hasCollections","NoResultsScreen","Results","items","map","item","index","Result","_ref2","onItemClick","onActive","activeIndex","onMouseMove","Link","path","body","ResultsScreen","collections","collection","State","_useSelector","searchPart","part","results","currentPart","usePart","summary","useBook","isSinglePart","parts","getParts","level","toString","result","article","getArticle","getArticlePart","sort","a","length","SearchBox","undefined","setActiveIndex","dropdownRef","scrollTop","getActiveItem","_dropdownRef$current","getElementsByClassName","onKeyDown","arguments","activeItem","scrollIntoViewIfNeeded","scrollIntoView","requestAnimationFrame","_activeItem$getElemen","getElementsByTagName","dispatchEvent","Event","bubbles","window","addEventListener","removeEventListener","_Fragment","handleAsk","disabled","answer","components","Anchor","Answer","HTMLAnchorElement","Loading","Markdown","aside","inject","AskBox","scrollHeight","DocSearchModal","containerRef","modalRef","container","focusableElements","querySelectorAll","firstElement","lastElement","trapFocus","shiftKey","document","activeElement","useTrapFocus","classList","add","remove","setFullViewportHeight","vh","innerHeight","style","setProperty","concat","onMouseDown","currentTarget","DocSearch","as","onlyCurrentPart","searchButtonRef","isOpen","setIsOpen","setSearchPart","useActions","setPart","setAskPart","onOpen","onInput","keyCode","metaKey","ctrlKey","element","tagName","isContentEditable","isEditingContent","contains","String","fromCharCode","useKeyboardEvents","Component","ModeProvider","GlobalStyle","createPortal","createGlobalStyle","tryToString","$TypeError","TypeError","module","exports","O","P","firefox","match","UA","webkit","$","uncurryThis","aCallable","toObject","lengthOfArrayLike","deletePropertyOrThrow","fails","internalSort","arrayMethodIsStrict","FF","IE_OR_EDGE","V8","WEBKIT","nativeSort","FAILS_ON_UNDEFINED","FAILS_ON_NULL","STRICT_METHOD","STABLE_SORT","code","chr","k","v","b","charAt","proto","forced","comparefn","array","this","itemsLength","arrayLength","x","y","getSortCompare"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"848-146a0f.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/icons/ask-icon.tsx","webpack://@topwrite/reader/./src/components/search/doc-search-button.tsx","webpack://@topwrite/reader/./src/components/search/mode-provider.tsx","webpack://@topwrite/reader/./src/components/search/footer.tsx","webpack://@topwrite/reader/./src/components/search/constants.ts","webpack://@topwrite/reader/./src/components/search/search-box/form.tsx","webpack://@topwrite/reader/./src/components/search/search-box/screens/error-screen.tsx","webpack://@topwrite/reader/./src/components/search/search-box/screens/start-screen.tsx","webpack://@topwrite/reader/./src/components/search/search-box/screens/no-result-screen.tsx","webpack://@topwrite/reader/./src/components/search/search-box/results.tsx","webpack://@topwrite/reader/./src/components/search/search-box/screens/results-screen.tsx","webpack://@topwrite/reader/./src/components/search/search-box/state.tsx","webpack://@topwrite/reader/./src/components/search/search-box/index.tsx","webpack://@topwrite/reader/./src/components/search/ask-box/form.tsx","webpack://@topwrite/reader/./src/components/search/ask-box/screens/start-screen.tsx","webpack://@topwrite/reader/./src/components/search/ask-box/state.tsx","webpack://@topwrite/reader/./src/components/search/ask-box/index.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","webpack://@topwrite/reader/../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/delete-property-or-throw.js","webpack://@topwrite/reader/../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/engine-ff-version.js","webpack://@topwrite/reader/../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/engine-is-ie-or-edge.js","webpack://@topwrite/reader/../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/internals/engine-webkit-version.js","webpack://@topwrite/reader/../node_modules/.pnpm/core-js@3.31.0/node_modules/core-js/modules/es.array.sort.js"],"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","export function AskIcon() {\r\n return <svg width='16' height='16' viewBox='0 0 16 16' fill='none' preserveAspectRatio='xMidYMid meet'>\r\n <path fillRule='evenodd' clipRule='evenodd' d='M8 2.491A1.246 1.246 0 108 0a1.246 1.246 0 000 2.491zm0 2.436a.858.858 0 100-1.716.858.858 0 000 1.716zm.858 7.004a.858.858 0 11-1.716 0 .858.858 0 011.716 0zM11.073 8a.858.858 0 101.716 0 .858.858 0 00-1.716 0zm-7.004.858a.858.858 0 110-1.716.858.858 0 010 1.716zm6.104-3.03a.858.858 0 101.213-1.214.858.858 0 00-1.213 1.213zm-4.346 5.558a.858.858 0 11-1.213-1.213.858.858 0 011.213 1.213zm4.346-1.213a.858.858 0 101.213 1.213.858.858 0 00-1.213-1.213zm-5.56-4.346a.858.858 0 111.214-1.213.858.858 0 01-1.213 1.213zM8 16a1.246 1.246 0 100-2.491A1.246 1.246 0 008 16zm6.754-6.754a1.246 1.246 0 110-2.492 1.246 1.246 0 010 2.492zM0 8a1.246 1.246 0 102.491 0A1.246 1.246 0 000 8zm14.472-2.298a1.246 1.246 0 11-1.245-2.158 1.246 1.246 0 011.245 2.158zM1.072 12a1.246 1.246 0 102.157-1.246A1.246 1.246 0 001.072 12zm9.226 2.472a1.246 1.246 0 112.158-1.245 1.246 1.246 0 01-2.158 1.245zM4 1.072a1.246 1.246 0 101.246 2.157A1.246 1.246 0 004 1.072zm8.456 1.701a1.246 1.246 0 11-2.158-1.245 1.246 1.246 0 012.158 1.245zM4 14.928a1.246 1.246 0 101.246-2.158A1.246 1.246 0 004 14.928zm9.226-2.472a1.246 1.246 0 111.246-2.157 1.246 1.246 0 01-1.245 2.157zM1.072 4a1.246 1.246 0 102.157 1.246A1.246 1.246 0 001.072 4z' fill='currentColor'></path>\r\n </svg>;\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","import { createContext, Dispatch, ReactNode, SetStateAction, useContext, useState } from 'react';\r\n\r\nconst Context = createContext<[string, Dispatch<SetStateAction<string>>]>(['search', () => (void 0)]);\r\n\r\nexport default function({ children }: { children: ReactNode }) {\r\n const [mode, setMode] = useState('search');\r\n\r\n return <Context.Provider value={[mode, setMode]}>\r\n {children}\r\n </Context.Provider>;\r\n}\r\n\r\nexport const useMode = () => {\r\n return useContext(Context);\r\n};\r\n","import React from 'react';\r\nimport { css, styled, useIntl, useSelector } from '@topwrite/common';\r\nimport { useMode } from './mode-provider';\r\n\r\ninterface CommandIconProps {\r\n children: React.ReactNode;\r\n}\r\n\r\nfunction CommandIcon(props: CommandIconProps) {\r\n return <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\nexport function Footer() {\r\n const intl = useIntl();\r\n const [mode, setMode] = useMode();\r\n const { enable } = useSelector('ask');\r\n\r\n const commands = mode == 'search' ? [\r\n <li key='select'>\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 key='navigate'>\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 ] : [\r\n <li key='send'>\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 ];\r\n\r\n commands.push(\r\n <li key='close'>\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 );\r\n\r\n return <Container className='DocSearch-Footer'>\r\n <ul className='DocSearch-Commands'>\r\n {commands}\r\n </ul>\r\n {enable && <ModeSwitcher>\r\n <SwitcherButton $active={mode === 'search'} onClick={() => setMode('search')}>{intl.$t({ defaultMessage: '搜索' })}</SwitcherButton>\r\n <SwitcherButton $active={mode === 'ask'} onClick={() => setMode('ask')}>{intl.$t({ defaultMessage: '智问' })}</SwitcherButton>\r\n </ModeSwitcher>}\r\n </Container>;\r\n}\r\n\r\nconst SwitcherButton = styled.div<{ $active?: boolean }>`\r\n padding: 0 8px;\r\n border-radius: 2px;\r\n cursor: pointer;\r\n font-weight: 500;\r\n font-size: 14px;\r\n line-height: 22px;\r\n color: var(--docsearch-muted-color);\r\n\r\n ${props => props.$active && css`\r\n background-color: rgba(0, 0, 0, 0.1);\r\n `};\r\n`;\r\n\r\nconst ModeSwitcher = styled.div`\r\n height: 32px;\r\n padding: 4px;\r\n border-radius: 2px;\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n border: 1px solid rgb(212, 217, 225, 0.4);\r\n`;\r\n\r\nconst Container = styled.footer`\r\n flex-direction: row !important;\r\n`;\r\n","export const MAX_QUERY_SIZE = 64;\r\n","import { LoadingIcon, ResetIcon, SearchIcon } from '../icons';\r\nimport { MAX_QUERY_SIZE } from '../constants';\r\nimport React, { useCallback, useMemo, useRef } from 'react';\r\nimport { useIntl, useModel } from '@topwrite/common';\r\nimport { debounce } from 'lodash';\r\n\r\ninterface Props {\r\n onClose(): void;\r\n}\r\n\r\nexport default function Form({ onClose }: Props) {\r\n\r\n const [{ query, status }, { fetch }] = useModel('search');\r\n const intl = useIntl();\r\n const inputRef = useRef<HTMLInputElement | null>(null);\r\n const initialQuery = useRef(query).current;\r\n\r\n React.useEffect(() => {\r\n if (inputRef.current) {\r\n inputRef.current.focus();\r\n }\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, 500), [fetch]);\r\n\r\n const handleSearch = useCallback((e) => {\r\n debounced(e.target.value);\r\n }, [debounced]);\r\n\r\n return <header className='DocSearch-SearchBar'>\r\n <form\r\n className={[\r\n 'DocSearch-Form',\r\n status === 'loading' && 'DocSearch-Container--Stalled',\r\n ].filter(Boolean).join(' ')}\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={intl.$t({ defaultMessage: '搜索文档...' })}\r\n className='DocSearch-Input'\r\n enterKeyHint='done'\r\n ref={inputRef}\r\n 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 </header>;\r\n}\r\n","import { ErrorIcon } from '../../icons';\r\n\r\nexport function ErrorScreen() {\r\n return <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","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 { 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 { ResultItem, Results } from '../results';\r\nimport { SearchResult } from '../../../../models/search';\r\n\r\ninterface ResultsScreenProps {\r\n activeIndex?: number;\r\n onItemClick: (item: SearchResult) => void;\r\n onActive: (index: number) => void;\r\n collections: { title: string, items: ResultItem[] }[];\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 { useMemo } from 'react';\r\nimport { SearchResult } from '../../../models/search';\r\nimport { useBook, useIntl, useSelector } from '@topwrite/common';\r\nimport { ErrorScreen } from './screens/error-screen';\r\nimport { StartScreen } from './screens/start-screen';\r\nimport { NoResultsScreen } from './screens/no-result-screen';\r\nimport { ResultsScreen } from './screens/results-screen';\r\nimport { usePart } from '../../../lib/use-article';\r\n\r\nexport interface StateProps {\r\n activeIndex?: number;\r\n onItemClick: (item: SearchResult) => void;\r\n onActive: (index: number) => void;\r\n}\r\n\r\nexport default function State(props: StateProps) {\r\n\r\n const { status, part: searchPart, query, results } = useSelector('search');\r\n const currentPart = usePart();\r\n const { summary } = useBook();\r\n const intl = useIntl();\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 let parts = summary.getParts();\r\n if (searchPart) {\r\n parts = parts.filter(part => part.level.toString() === searchPart);\r\n }\r\n\r\n collections = parts.map((part) => {\r\n return {\r\n level: part.level,\r\n title: searchPart ? '' : (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 && !searchPart) {\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 Form from './form';\r\nimport { useCallback, useEffect, useRef, useState } from 'react';\r\nimport { useSelector } from '@topwrite/common';\r\nimport State from './state';\r\n\r\ninterface SearchBoxProps {\r\n onClose(): void;\r\n}\r\n\r\nexport default function SearchBox({ onClose }: SearchBoxProps) {\r\n const { query, results } = useSelector('search');\r\n const [activeIndex, setActiveIndex] = useState<number | undefined>(undefined);\r\n const dropdownRef = useRef<HTMLDivElement | null>(null);\r\n\r\n const onActive = useCallback((index) => {\r\n setActiveIndex(index);\r\n }, [setActiveIndex]);\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 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 <Form onClose={onClose} />\r\n <div className='DocSearch-Dropdown' ref={dropdownRef}>\r\n <State\r\n onActive={onActive}\r\n activeIndex={activeIndex}\r\n onItemClick={() => {\r\n onClose();\r\n }}\r\n />\r\n </div>\r\n </>;\r\n}\r\n","import { FormEvent, useCallback, useEffect, useRef } from 'react';\r\nimport { useIntl, useModel } from '@topwrite/common';\r\nimport { AskIcon, LoadingIcon } from '../icons';\r\nimport { MAX_QUERY_SIZE } from '../constants';\r\n\r\ninterface Props {\r\n onClose(): void;\r\n}\r\n\r\nexport default function Form({ onClose }: Props) {\r\n const [{ status }, { fetch }] = useModel('ask');\r\n const intl = useIntl();\r\n const inputRef = useRef<HTMLInputElement | null>(null);\r\n\r\n useEffect(() => {\r\n if (inputRef.current) {\r\n inputRef.current.focus();\r\n }\r\n }, []);\r\n\r\n const handleAsk = useCallback((event: FormEvent) => {\r\n event.preventDefault();\r\n if (inputRef.current) {\r\n fetch(inputRef.current.value);\r\n inputRef.current.value = '';\r\n }\r\n }, [inputRef, fetch]);\r\n\r\n return <header className='DocSearch-SearchBar'>\r\n <form\r\n className={[\r\n 'DocSearch-Form',\r\n status === 'loading' || status === 'stalled' && 'DocSearch-Container--Stalled',\r\n ].filter(Boolean).join(' ')}\r\n onSubmit={handleAsk}\r\n >\r\n <label className='DocSearch-MagnifierLabel'>\r\n <AskIcon />\r\n </label>\r\n <div className='DocSearch-LoadingIndicator'>\r\n <LoadingIcon />\r\n </div>\r\n <input\r\n placeholder={intl.$t({ defaultMessage: '问一个问题...' })}\r\n className='DocSearch-Input'\r\n ref={inputRef}\r\n autoFocus\r\n enterKeyHint='send'\r\n disabled={status === 'loading' || status === 'stalled'}\r\n maxLength={MAX_QUERY_SIZE}\r\n />\r\n </form>\r\n <button className='DocSearch-Cancel' onClick={onClose}>\r\n {intl.$t({ defaultMessage: '取消' })}\r\n </button>\r\n </header>;\r\n}\r\n","import { useIntl } from '@topwrite/common';\r\n\r\n\r\nexport function StartScreen() {\r\n\r\n const intl = useIntl();\r\n\r\n return <div className='DocSearch-StartScreen'>\r\n <p className='DocSearch-Help'>{intl.$t({ defaultMessage: '我是一个智能AI助理,你可以向我提问关于本文档的任何问题' })}</p>\r\n </div>;\r\n}\r\n","import { Markdown, styled, useSelector } from '@topwrite/common';\r\nimport { StartScreen } from './screens/start-screen';\r\nimport { ErrorScreen } from '../search-box/screens/error-screen';\r\nimport { LoadingIcon } from '../icons';\r\nimport { useMemo } from 'react';\r\nimport Anchor from '../../anchor';\r\n\r\ninterface Props {\r\n onClose(): void;\r\n}\r\n\r\nexport default function State({ onClose }: Props) {\r\n const { status, query, answer } = useSelector('ask');\r\n\r\n const components = useMemo(() => {\r\n return {\r\n a: Anchor\r\n };\r\n }, []);\r\n\r\n if (status === 'error') {\r\n return <ErrorScreen />;\r\n }\r\n\r\n if (!query) {\r\n return <StartScreen />;\r\n }\r\n\r\n return <div className='DocSearch-Dropdown-Container'>\r\n <Answer onClick={(e) => {\r\n if (e.target instanceof HTMLAnchorElement) {\r\n onClose();\r\n }\r\n }}>\r\n <h2>{query}</h2>\r\n {status === 'loading' ?\r\n <Loading><LoadingIcon /></Loading> :\r\n <Markdown\r\n aside={false}\r\n inject={false}\r\n components={components}\r\n >\r\n {answer}\r\n </Markdown>}\r\n </Answer>\r\n </div>;\r\n}\r\n\r\nconst Loading = styled.div`\r\n align-items: center;\r\n color: var(--docsearch-highlight-color);\r\n display: flex;\r\n justify-content: center;\r\n\r\n svg {\r\n height: 24px;\r\n width: 24px\r\n }\r\n`;\r\n\r\nconst Answer = styled.div`\r\n margin-top: 16px;\r\n margin-bottom: 16px;\r\n background: var(--docsearch-hit-background);\r\n padding: 16px;\r\n box-shadow: var(--docsearch-hit-shadow);\r\n border-radius: 4px;\r\n\r\n h2 {\r\n padding-bottom: .4em;\r\n font-size: 1.3em;\r\n line-height: 1.2;\r\n border-bottom: 1px solid #eeeeee;\r\n margin-top: 0;\r\n margin-bottom: 1em;\r\n }\r\n`;\r\n","import Form from './form';\r\nimport State from './state';\r\nimport { useEffect, useRef } from 'react';\r\nimport { styled, useSelector } from '@topwrite/common';\r\n\r\ninterface AskBoxProps {\r\n onClose(): void;\r\n}\r\n\r\nexport default function AskBox({ onClose }: AskBoxProps) {\r\n\r\n const { query, status, answer } = useSelector('ask');\r\n const dropdownRef = useRef<HTMLDivElement | null>(null);\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 (dropdownRef.current && status === 'stalled') {\r\n dropdownRef.current.scrollTop = dropdownRef.current.scrollHeight;\r\n }\r\n }, [answer, status]);\r\n\r\n return <>\r\n <Form onClose={onClose} />\r\n <Container ref={dropdownRef}>\r\n <State onClose={onClose} />\r\n </Container>\r\n </>;\r\n}\r\n\r\nconst Container = styled.div`\r\n max-height: calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));\r\n min-height: var(--docsearch-spacing);\r\n overflow-y: auto;\r\n padding: 0 var(--docsearch-spacing);\r\n scrollbar-color: var(--docsearch-muted-color) var(--docsearch-modal-background);\r\n scrollbar-width: thin;\r\n\r\n @media (max-width: 768px) {\r\n max-height: calc(var(--docsearch-vh, 1vh) * 100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));\r\n }\r\n @media (max-width: 768px) {\r\n height: 100%;\r\n }\r\n`;\r\n","import { useEffect, useRef } from 'react';\r\nimport { Footer } from './footer';\r\nimport SearchBox from './search-box';\r\nimport { useTrapFocus } from './hooks/use-trap-focus';\r\nimport { styled } from '@topwrite/common';\r\nimport AskBox from './ask-box';\r\nimport { useMode } from './mode-provider';\r\n\r\nexport interface DocSearchModalProps {\r\n onClose(): void;\r\n}\r\n\r\nexport function DocSearchModal({ onClose }: DocSearchModalProps) {\r\n const [mode] = useMode();\r\n const containerRef = useRef<HTMLDivElement | null>(null);\r\n const modalRef = useRef<HTMLDivElement | null>(null);\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 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 return <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 {mode === 'search' ? <SearchBox onClose={onClose} /> : <AskBox onClose={onClose} />}\r\n <Footer />\r\n </div>\r\n </Container>;\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-Title {\r\n &:not(:last-child) {\r\n margin-bottom: 16px;\r\n }\r\n }\r\n\r\n .DocSearch-Hits {\r\n ul {\r\n box-shadow: var(--docsearch-hit-shadow);\r\n border-radius: 4px;\r\n margin-bottom: 4px;\r\n margin-top: 3px;\r\n }\r\n }\r\n\r\n .DocSearch-Hit {\r\n padding-bottom: 0;\r\n border-radius: 0;\r\n\r\n a {\r\n border-radius: 0;\r\n border-top: 1px solid rgb(212, 217, 225, 0.4);\r\n box-shadow: none;\r\n }\r\n\r\n &:first-child {\r\n a {\r\n border-top-left-radius: 4px;\r\n border-top-right-radius: 4px;\r\n border-top-width: 0;\r\n }\r\n }\r\n\r\n &:last-child {\r\n a {\r\n border-bottom-left-radius: 4px;\r\n border-bottom-right-radius: 4px;\r\n }\r\n }\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 .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, useEffect, 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, useActions } from '@topwrite/common';\r\nimport '@docsearch/css';\r\nimport ModeProvider from './mode-provider';\r\nimport { usePart } from '../../lib/use-article';\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, onlyCurrentPart, ...props }: DocSearchProps) {\r\n const searchButtonRef = useRef<HTMLButtonElement>(null);\r\n const [isOpen, setIsOpen] = useState(false);\r\n const { setPart: setSearchPart } = useActions('search');\r\n const { setPart: setAskPart } = useActions('ask');\r\n const part = usePart();\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 useEffect(() => {\r\n setSearchPart(onlyCurrentPart ? part?.level.toString() : undefined);\r\n setAskPart(onlyCurrentPart ? part?.level.toString() : undefined);\r\n }, [onlyCurrentPart, part]);\r\n\r\n const Component = as || DocSearchButton;\r\n\r\n return <ModeProvider>\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 </ModeProvider>;\r\n}\r\n\r\nconst GlobalStyle = createGlobalStyle`\r\n :root:root {\r\n --docsearch-primary-color: var(--ttw-primary-color, #3c60ff);\r\n --docsearch-hit-height: 48px;\r\n --docsearch-searchbox-height: 48px;\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","'use strict';\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (O, P) {\n if (!delete O[P]) throw $TypeError('Cannot delete property ' + tryToString(P) + ' of ' + tryToString(O));\n};\n","var userAgent = require('../internals/engine-user-agent');\n\nvar firefox = userAgent.match(/firefox\\/(\\d+)/i);\n\nmodule.exports = !!firefox && +firefox[1];\n","var UA = require('../internals/engine-user-agent');\n\nmodule.exports = /MSIE|Trident/.test(UA);\n","var userAgent = require('../internals/engine-user-agent');\n\nvar webkit = userAgent.match(/AppleWebKit\\/(\\d+)\\./);\n\nmodule.exports = !!webkit && +webkit[1];\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\nvar toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar internalSort = require('../internals/array-sort');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar FF = require('../internals/engine-ff-version');\nvar IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');\nvar V8 = require('../internals/engine-v8-version');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\nvar test = [];\nvar nativeSort = uncurryThis(test.sort);\nvar push = uncurryThis(test.push);\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar STABLE_SORT = !fails(function () {\n // feature detection can be too slow, so check engines versions\n if (V8) return V8 < 70;\n if (FF && FF > 3) return;\n if (IE_OR_EDGE) return true;\n if (WEBKIT) return WEBKIT < 603;\n\n var result = '';\n var code, chr, value, index;\n\n // generate an array with more 512 elements (Chakra and old V8 fails only in this case)\n for (code = 65; code < 76; code++) {\n chr = String.fromCharCode(code);\n\n switch (code) {\n case 66: case 69: case 70: case 72: value = 3; break;\n case 68: case 71: value = 4; break;\n default: value = 2;\n }\n\n for (index = 0; index < 47; index++) {\n test.push({ k: chr + index, v: value });\n }\n }\n\n test.sort(function (a, b) { return b.v - a.v; });\n\n for (index = 0; index < test.length; index++) {\n chr = test[index].k.charAt(0);\n if (result.charAt(result.length - 1) !== chr) result += chr;\n }\n\n return result !== 'DGBEFHACIJK';\n});\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT;\n\nvar getSortCompare = function (comparefn) {\n return function (x, y) {\n if (y === undefined) return -1;\n if (x === undefined) return 1;\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\n return toString(x) > toString(y) ? 1 : -1;\n };\n};\n\n// `Array.prototype.sort` method\n// https://tc39.es/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n sort: function sort(comparefn) {\n if (comparefn !== undefined) aCallable(comparefn);\n\n var array = toObject(this);\n\n if (STABLE_SORT) return comparefn === undefined ? nativeSort(array) : nativeSort(array, comparefn);\n\n var items = [];\n var arrayLength = lengthOfArrayLike(array);\n var itemsLength, index;\n\n for (index = 0; index < arrayLength; index++) {\n if (index in array) push(items, array[index]);\n }\n\n internalSort(items, getSortCompare(comparefn));\n\n itemsLength = lengthOfArrayLike(items);\n index = 0;\n\n while (index < itemsLength) array[index] = items[index++];\n while (index < arrayLength) deletePropertyOrThrow(array, index++);\n\n return array;\n }\n});\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","AskIcon","preserveAspectRatio","clipRule","ACTION_KEY_DEFAULT","DocSearchButton","forwardRef","_ref","ref","props","_objectWithoutProperties","_excluded","_useState","useState","_useState2","_slicedToArray","key","setKey","useEffect","navigator","test","platform","intl","useIntl","Button","_objectSpread","$t","id","defaultMessage","styled","_templateObject","_taggedTemplateLiteral","Context","createContext","mode","setMode","Provider","value","useMode","useContext","CommandIcon","Footer","_useMode","_useMode2","enable","useSelector","commands","push","Container","ModeSwitcher","SwitcherButton","onClick","$active","css","_templateObject2","_templateObject3","_templateObject4","MAX_QUERY_SIZE","Form","onClose","_useModel","useModel","_useModel2","_useModel2$","query","status","fetch","inputRef","useRef","initialQuery","current","React","focus","onReset","useCallback","debounced","useMemo","debounce","handleSearch","e","target","filter","Boolean","join","onSubmit","event","preventDefault","defaultValue","placeholder","enterKeyHint","autoFocus","maxLength","onChange","title","hidden","ErrorScreen","StartScreen","hasCollections","NoResultsScreen","Results","items","map","item","index","Result","_ref2","onItemClick","onActive","activeIndex","onMouseMove","Link","path","body","ResultsScreen","collections","collection","State","_useSelector","searchPart","part","results","currentPart","usePart","summary","useBook","isSinglePart","parts","getParts","level","toString","result","article","getArticle","getArticlePart","sort","a","length","SearchBox","undefined","setActiveIndex","dropdownRef","scrollTop","getActiveItem","_dropdownRef$current","getElementsByClassName","onKeyDown","arguments","activeItem","scrollIntoViewIfNeeded","scrollIntoView","requestAnimationFrame","_activeItem$getElemen","getElementsByTagName","dispatchEvent","Event","bubbles","window","addEventListener","removeEventListener","_Fragment","handleAsk","disabled","answer","components","Anchor","Answer","HTMLAnchorElement","Loading","Markdown","aside","inject","AskBox","scrollHeight","DocSearchModal","containerRef","modalRef","container","focusableElements","querySelectorAll","firstElement","lastElement","trapFocus","shiftKey","document","activeElement","useTrapFocus","classList","add","remove","setFullViewportHeight","vh","innerHeight","style","setProperty","concat","onMouseDown","currentTarget","DocSearch","as","onlyCurrentPart","searchButtonRef","isOpen","setIsOpen","setSearchPart","useActions","setPart","setAskPart","onOpen","onInput","keyCode","metaKey","ctrlKey","element","tagName","isContentEditable","isEditingContent","contains","String","fromCharCode","useKeyboardEvents","Component","ModeProvider","GlobalStyle","createPortal","createGlobalStyle","tryToString","$TypeError","TypeError","module","exports","O","P","firefox","match","UA","webkit","$","uncurryThis","aCallable","toObject","lengthOfArrayLike","deletePropertyOrThrow","fails","internalSort","arrayMethodIsStrict","FF","IE_OR_EDGE","V8","WEBKIT","nativeSort","FAILS_ON_UNDEFINED","FAILS_ON_NULL","STRICT_METHOD","STABLE_SORT","code","chr","k","v","b","charAt","proto","forced","comparefn","array","this","itemsLength","arrayLength","x","y","getSortCompare"],"sourceRoot":""}
|