Makes the documentation searchable from <mmo-app>'s command palette, the one search box of the application: the search endpoint (SearchController::routeSearch) is declared in MMO.config.searches, and the palette lists what it answers under its own heading, next to the pages and the commands.
function addSearchSource(MMO\core\documents\Document $document, ?string $page = null): void
Namespace
MMO\doc
The first call wins: [`DocPageController`](https://mmoframework.fr/documentation/mmo.doc/php/controllers/DocPageController.md#docpagecontroller) calls it first with the page the reader is on, so what is
documented on that page comes first; the listener every html page goes through only adds it when missing.
The canonical in-page anchor for a symbol or member name.
function anchor(string $name): string
Namespace
MMO\doc
Every renderer goes through this one function, so a link built by [`MarkdownPrinter`](https://mmoframework.fr/documentation/mmo.doc/php/MarkdownPrinter.md#markdownprinter)
and one built by [`DocPageController`](https://mmoframework.fr/documentation/mmo.doc/php/controllers/DocPageController.md#docpagecontroller) always agree: lowercased, namespace/path
separators and sigils dropped, anything else that is not a letter, a digit or a `-` folded into a `-`.
Compiles src/styles/documentation.scs to {bin}/mmo.doc.css, recompiling only when the source is newer (dev mode only -- like MMO\client\Theme's own asset jobs, a production deploy is expected to build this ahead of time).
function compileDocumentationCss(): ?string
Namespace
MMO\doc
It is Simple CSS, compiled by [`SCSCompiler`](https://mmoframework.fr/documentation/mmo.client/php/SCSCompiler.md#scscompiler) with `emitThemes` off: the design tokens are
already declared on `:root` by the app's own `mmo.client.css`, and this stylesheet only *references* them,
so a theme switch reaches the documentation pages like any other page.
Copies mmo.client's vendored vendor/prism/prism.js (a Prism.js build already bundling the markup/js/scss/ css/markdown/php grammars) out to {bin}/prism.js, so it's actually servable -- Theme's own asset pipeline never picks up files under a package's vendor/ folder. Only copies when missing/stale.
Replace every @see reference of a markdown text with a link to its target, or with inline code when the target is documented nowhere. Fenced code blocks are left alone.
function linkSees(string $text, array $sees, callable $href): string
Every target the @see references of a text point at, cleaned of the punctuation the sentence around it glued on (@see stop., (stop)), and split when several are written as one (@see getFilename/getUrl).