Psyche adalah solusi drop-in untuk mencari dokumentasi, terinspirasi oleh DocSearch Algolia.
Lihatlah dokumentasi penambah gagasan untuk demo langsung.

PERINGATAN: PSYCE dibangun khusus untuk pencarian dokumentasi. Ini tidak dibangun untuk implementasi ke antarmuka lain (misalnya eCommerce) atau digunakan dengan skema data khusus.
Klien Psyche membutuhkan indeks hasil yang telah dihasilkan sebelumnya untuk dicari. Ini harus berupa array catatan Result (lihat type.d.ts). Indeks disediakan untuk klien secara terprogram, tetapi harus mengambil bentuk file .json yang tidak diformat/diminifikasi.
Pengindeks adalah plugin/middleware yang merangkak situs dan menghasilkan indeks, baik selama proses build atau on-the-lalat jika situs tersebut dilayani secara dinamis.
Pengindeks untuk beberapa generator dokumentasi disediakan di bawah ini. Jika generator pilihan Anda belum didukung, baik buka permintaan fitur atau tulis sendiri dan buka permintaan tarik.
Tambahkan yang berikut ke file _config.ts Anda:
import psyche from 'https://deno.land/x/psyche/indexers/lume.ts' ;
site . use ( psyche ( ) ) ; Pengindeks dapat dikonfigurasi dengan memberikan objek LumeConfig sebagai argumen pertama panggilan psyche() (lihat type.d.ts).
Secara default:
/search.json .data.section atau di mana data.draft = true akan diabaikan.data.section_order & diurutkan berdasarkan data.order .data.title .data.section .<article></article> dalam halaman diindeks sesuai dengan HTML semantik. Elemen lain (misalnya <blockquote></blockquote> ) diperlakukan sebagai paragraf. Ini bekerja paling baik dengan output penurunan harga.Baca data halaman dan/atau halaman data bersama dari dokumentasi Lume untuk melihat cara mengatur properti ini.
Klien Psyche ditulis dalam naskah. Anda dapat secara langsung mengimpornya jika aset situs Anda akan dibundel oleh EG Esbuild, atau mengimpor javascript build yang pra-transpil dan minified.
import psyche from 'https://deno.land/x/psyche/client/mod.ts' ;
// or
import psyche from 'https://deno.land/x/psyche/client/psyche.min.mjs' ; Ekspor default psyche adalah fungsi yang ketika dilengkapi dengan objek ClientConfig (lihat type.d.ts) akan mengembalikan ClientInstance (lihat type.d.ts).
Memanggil .register() pada instance klien akan memasukkan komponen ke dalam dokumen dan mendengarkan tekan hotkey. Komponen kemudian dapat dibuka baik dengan menelepon .open() atau dengan menekan CTRL/⌘ + K .
Misalnya
const searchInstance = psyche ( {
theme : { scrollbarStyle : 'square' } ,
index : await fetch ( '/search.json' ) . then ( ( res ) => res . json ( ) ) ,
} ) ;
searchInstance . register ( ) ;
searchInstance . open ( ) ; Untuk menambahkan hotkey ke daftar di modal pencarian, tambahkan ke array hotkeys objek ClientConfig Psyche (lihat type.d.ts).
Untuk hotkey yang bergantung pada platform, platformModifier Ekspor yang disebutkan akan setara dengan kunci ⌘ pada macOS atau kunci CTRL pada platform lain.
Untuk menangani hotkey, berikan objek ClientHotkey (lihat Type.D.TS) ke Named Export registerHotkey . Ini adalah parsial KeyboardEvent dengan beberapa properti tambahan:
platformModifier setara dengan metaKey pada MacOS atau ctrlKey di platform lain.onkeydown akan dipanggil ketika kombinasi kunci ditekan, melewati KeyboardEvent yang dipicu sebagai argumen pertama.onkeyup akan dipanggil ketika kombinasi kunci dirilis, melewati KeyboardEvent yang dipicu sebagai argumen pertama.Misalnya
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 ( ) ;Perubahan pada proyek ini dicatat dalam changelog.
Proyek ini dilisensikan di bawah lisensi MIT.
Untuk mendukung pengembangan proyek ini di masa depan, harap pertimbangkan untuk mensponsori penulis.