Psyche est une solution d'accueil pour la recherche de documentation, inspirée de la recherche DoTearch d'Algolia.
Consultez la documentation de notion-enhancer pour une démo en direct.

AVERTISSEMENT: Psyché est construit spécifiquement pour la recherche de documentation. Il n'est pas conçu pour l'implémentation dans d'autres interfaces (par exemple, le commerce électronique) ou l'utilisation avec des schémas de données personnalisés.
Le client Psyché nécessite un index pré-généré des résultats pour rechercher. Il devrait s'agir d'un tableau d'enregistrements Result (voir types.d.ts). Des index sont fournis au client par programme, mais doivent prendre la forme d'un fichier .json non formaté / minifié.
Les indexers sont des plugins / middleware qui explorent un site et génèrent un index, soit pendant un processus de construction, soit à la volée si le site est servi dynamiquement.
Les index pour certains générateurs de documentation sont fournis ci-dessous. Si votre générateur de choix n'est pas encore pris en charge, ouvrez une demande de fonctionnalité ou écrivez votre propre et ouvrez une demande de traction.
Ajoutez ce qui suit à votre fichier _config.ts :
import psyche from 'https://deno.land/x/psyche/indexers/lume.ts' ;
site . use ( psyche ( ) ) ; L'indexeur peut être configuré en fournissant un objet LumeConfig comme premier argument de l'appel psyche() (voir types.d.ts).
Par défaut:
/search.json .data.section ou où data.draft = true sera ignorée.data.section_order et triées par data.order .data.title .data.section . SECTION.<article></article> d'une page sont indexés en fonction du HTML sémantique. D'autres éléments (par exemple <blockquote></blockquote> ) sont traités comme des paragraphes. Cela fonctionne mieux avec la sortie de Markdown.Lisez les données de la page et / ou les pages de données partagées de la documentation de Lume pour voir comment définir ces propriétés.
Le client Psyché est écrit en dactylographie. Vous pouvez soit l'importer directement si les actifs de votre site seront regroupés par EG Esbuild, soit importer la version JavaScript pré-transpirée et minifiée.
import psyche from 'https://deno.land/x/psyche/client/mod.ts' ;
// or
import psyche from 'https://deno.land/x/psyche/client/psyche.min.mjs' ; L'exportation par défaut psyche est une fonction qui, lorsqu'elle est fournie avec un objet ClientConfig (voir Types.D.ts), renvoie une ClientInstance (voir types.d.ts).
L'appel .register() sur une instance client insérera le composant dans le document et écoutera les pressions de pots-de-vin. Le composant peut ensuite être ouvert soit en appelant .open() ou en appuyant sur CTRL/⌘ + K .
Par exemple
const searchInstance = psyche ( {
theme : { scrollbarStyle : 'square' } ,
index : await fetch ( '/search.json' ) . then ( ( res ) => res . json ( ) ) ,
} ) ;
searchInstance . register ( ) ;
searchInstance . open ( ) ; Pour ajouter une touche de putain à la liste dans le modal de recherche, ajoutez-le à la table hotkeys de l'objet ClientConfig de Psyche (voir types.d.ts).
Pour les raccourcis clavier dépendant de la plate-forme, le platformModifier d'exportation nommé sera équivalent à la clé ⌘ sur macOS ou à la clé CTRL sur d'autres plates-formes.
Pour gérer les raccourcis clavier, fournissez un objet ClientHotkey (voir Types.D.ts) à l'exportation nommée registerHotkey . Il s'agit d'un KeyboardEvent en jeu avec quelques propriétés supplémentaires:
platformModifier équivaut à metaKey sur macOS ou ctrlKey sur d'autres plates-formes.onkeydown sera appelée lorsque la combinaison de touches sera appuyée vers le bas, passant le KeyboardEvent déclenché comme premier argument.onkeyup sera appelée lorsque la combinaison de clés sera publiée, a passé le KeyboardEvent déclenché comme premier argument.Par exemple
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 ( ) ;Les modifications apportées à ce projet sont enregistrées dans le Changelog.
Ce projet est autorisé sous la licence du MIT.
Pour soutenir le développement futur de ce projet, veuillez envisager de parrainer l'auteur.