Psyche -это решение для поиска документации, вдохновленное DocSearch Algolia.
Проверьте документацию по понятию-enhancer для живой демонстрации.

ПРЕДУПРЕЖДЕНИЕ: Психика построена специально для поиска документации. Он не создан для реализации в другие интерфейсы (например, электронная коммерция) или использует с схемами данных.
Клиент Psyche требует предварительно сгенерированного индекса результатов для поиска. Это должно быть массив записей Result (см. Types.d.ts). Индексы предоставляются клиентскому программно, но должны принимать форму неформатированного/мини -мини -файла .json .
Индексерами являются плагины/промежуточное программное обеспечение, которое сканирует сайт и генерирует индекс, либо во время процесса сборки, либо на летании, если сайт динамически обслуживается.
Индексеры для некоторых генераторов документов приведены ниже. Если ваш генератор выбора еще не поддерживается, откройте запрос на функцию, либо напишите свой собственный и откройте запрос на тягу.
Добавьте следующее в свой файл _config.ts :
import psyche from 'https://deno.land/x/psyche/indexers/lume.ts' ;
site . use ( psyche ( ) ) ; Индексер может быть настроен, предоставив объект LumeConfig в качестве первого аргумента вызова psyche() .
По умолчанию:
/search.json .data.section data.draft = truedata.section_order и отсортированы по data.order .data.title .data.section .<article></article> на странице индексируются в соответствии с Semantic HTML. Другие элементы (например, <blockquote></blockquote> ) рассматриваются как параграфы. Это лучше всего работает с выводом Marckdown.Прочитайте данные страницы и/или общие страницы данных о документации Lume, чтобы увидеть, как установить эти свойства.
Клиент Psyche написан в TypeScript. Вы можете либо непосредственно импортировать его, если активы вашего сайта будут объединены EG Esbuild, либо импортировать предварительно транспилированную и мини-минимуму сборку JavaScript.
import psyche from 'https://deno.land/x/psyche/client/mod.ts' ;
// or
import psyche from 'https://deno.land/x/psyche/client/psyche.min.mjs' ; Экспорт psyche по умолчанию - это функция, которая, если он предоставлен с объектом ClientConfig (см. Tipes.d.ts), вернет ClientInstance (см. Типы.D.TS).
Calln .register() в экземпляре клиента вставит компонент в документ и прослушивает прессы Hotkey. Затем компонент можно открыть либо путем вызова .open() или нажатием CTRL/⌘ + K .
Например
const searchInstance = psyche ( {
theme : { scrollbarStyle : 'square' } ,
index : await fetch ( '/search.json' ) . then ( ( res ) => res . json ( ) ) ,
} ) ;
searchInstance . register ( ) ;
searchInstance . open ( ) ; Чтобы добавить горячую клавишу в список в модале поиска, добавьте ее в массив hotkeys объекта Psyche ClientConfig (см. Типы.D.TS).
Для платформы, зависящих от горячих, именованная экспортная platformModifier будет эквивалентно ключу ⌘ на MacOS или ключ CTRL на других платформах.
Чтобы обрабатывать Hotkeys, предоставьте объект ClientHotkey (см. Типы. registerHotkey ). Это частичный KeyboardEvent с несколькими дополнительными свойствами:
platformModifier эквивалентно metaKey на MacOS или ctrlKey на других платформах.onkeydown будет вызвано, когда комбинация клавиш будет нажата, передавалась запускаемой KeyboardEvent в качестве первого аргумента.onkeyup будет вызвано при выпуске комбинации ключей, передавав запускаемой KeyboardEvent в качестве первого аргумента.Например
import psyche , {
registerHotkey ,
platformModifier ,
} from 'https://deno.land/x/psyche/client/psyche.min.mjs' ;
registerHotkey ( {
key : 'l' ,
platformModifier : true ,
shiftKey : true ,
onkeydown : ( event ) => {
event . preventDefault ( ) ;
toggleTheme ( ) ;
} ,
} ) ;
const searchInstance = psyche ( {
hotkeys : [ { kbd : ` ${ platformModifier } + SHIFT + L` , label : 'to toggle theme' } ] ,
} ) ;
searchInstance . register ( ) ;Изменения в этом проекте записаны в ChangeLog.
Этот проект лицензирован по лицензии MIT.
Чтобы поддержать будущее развитие этого проекта, пожалуйста, рассмотрите возможность спонсировать автора.