commit f542382e58931d165ea085e6862fcd9717e3a0f9b94e00d382672db6bfcace06 Author: gc-dev-afjd Date: Sat Jul 11 13:43:52 2026 +0200 Separation as Tool diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4ba3f18 --- /dev/null +++ b/.gitignore @@ -0,0 +1,29 @@ +# Visual Studio Code +.vscode/ + +# Visual Studio / MonoDevelop / Rider +.vs/ +*.suo +*.user +*.userosscache +*.rsuser +*.sln.docstates +*.userprefs +*.pidb + +# .NET / C# build outputs and caches +[Bb]in/ +[Oo]bj/ +TestResult*/ +artifacts/ + +# Generated site output +/dist/ + +# Machine-translation drafts (never commit) +.translation-drafts/ + +# Environment files +.env +.env.* +!.env.example diff --git a/.hermes/skills.md b/.hermes/skills.md new file mode 100644 index 0000000..56c3567 --- /dev/null +++ b/.hermes/skills.md @@ -0,0 +1,29 @@ +# GCBoK.WebStaticBuilder — Agent Skills + +Quelle der Wahrheit für Agenten-Kollaboration an diesem Tool. + +## Was das Tool ist +Eigenständiger Static-Site-Generator (C#/.NET 10, Assembly `webstatic`), MIT. +Kein Python. Suchindex via `npx pagefind` (optional). Früher Submodul der +GCBoK-Website (`www/build`), jetzt unter `/opt/GitCover/webstatic`. + +## Kanonischer Build/Verify +``` +dotnet build -c Release +dotnet bin/Release/net10.0/webstatic.dll build --env work --verbose +dotnet bin/Release/net10.0/webstatic.dll serve --port 8000 +``` + +## Konventionen +- Namespace `GCBoK.WebStaticBuilder`; `Program.cs` braucht `using GCBoK.WebStaticBuilder;`. +- Package-Versionen explizit pinnen; `false` gesetzt. +- Pfade generisch über `Directories` + `BuildConfig.Paths` (nie `www/` hartkodieren). +- i18n via `{{ i18n.* }}` + `i18n.json` (Fallback EN). +- Config-Priorität: CLI > `webstatic.json` > Defaults. + +## Bekannte Fallstricke +- NU1015 → Version pinnen. CS0103 in Program.cs → using. CS8361 → Ternär in Klammern. +- `BuildSectionsHtml` gibt `string` zurück (nicht `StringBuilder`) für `.Replace`. + +## Struktur +plans/ docs/ diary/ src/ tests/ webstatic.example/ install.sh LICENSE diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..d4963d6 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,36 @@ +# AGENTS — GCBoK.WebStaticBuilder + +Guidelines für KI-Agenten, die an diesem Tool (nicht an der GCBoK-Website) arbeiten. + +## Wesen des Projekts +- Eigenständiger **Static-Site-Generator** (C# / .NET 10, kompilierte Konsolen-App, Assembly `webstatic`). +- Früher: Submodul `OSS/build_webstatic` innerhalb der GCBoK-Website (`www/build/`). + Seit 2026-07 eigenständiges OSS-Tool unter `/opt/GitCover/webstatic` (KMU-fähig). +- **Kein Python.** Einzige externe Build-Abhängigkeit: `npx pagefind` (Suchindex, optional). +- Lizenz: **MIT** (`LICENSE`). + +## Build & Verify (kanonisch) +```bash +dotnet build -c Release # kompiliert src/ -> bin/Release/net10.0/webstatic.dll +dotnet bin/Release/net10.0/webstatic.dll build --env work --verbose # Beispiel in webstatic.example/ +dotnet bin/Release/net10.0/webstatic.dll serve --port 8000 # lokale Vorschau +``` + +## Konventionen +- **Namespace:** `GCBoK.WebStaticBuilder` (jede `.cs` in `src/` deklariert ihn; `Program.cs` nutzt `using GCBoK.WebStaticBuilder;`). +- **Packages:** `Markdig`, `YamlDotNet` (Versionen **explizit** gepinnt — CPM ist deaktiviert via `false`). +- **Keine unversionierten `PackageReference`** (führt zu NU1015). +- **Config-Priorität:** CLI-Flags > `webstatic.json` > eingebaute Defaults (`BuildConfig.Defaults()`). +- **Pfade generisch:** nie hartkodiert auf `www/` — alles über `Directories` (aus `BuildConfig.Paths` relativ zum Site-Root). +- **i18n:** UI-Texte über `{{ i18n.. }}` in Templates; Daten in `i18n.json`; Substitution via `I18n.cs` (Fallback Englisch). + +## Verzeichnisstruktur +`plans/` (Pläne), `docs/` (Anleitungen), `diary/` (Dev-Tagebuch), `src/` (Code), +`tests/` (Tests), `webstatic.example/` (KMU-Vorlage), `install.sh`, `LICENSE`. + +## Guardrails +- Umlaute in Prosa verwenden (`ä ö ü ß`), nicht `ae/oe/ue`. +- `§` (nicht ausgeschrieben) für Gesetzesparagraphen. +- **Kein Commit ohne expliziten Wunsch.** Bei Release: signierte Commits. +- `dist/`, `bin/`, `obj/`, `.translation-drafts/` sind gitignored. +- Machine-Translation liefert nur **Entwürfe** (`.translation-drafts/`), nie Auto-Überschreibung. diff --git a/GCBoK.WebStaticBuilder.csproj b/GCBoK.WebStaticBuilder.csproj new file mode 100644 index 0000000..0132cc3 --- /dev/null +++ b/GCBoK.WebStaticBuilder.csproj @@ -0,0 +1,20 @@ + + + + Exe + net10.0 + enable + enable + GCBoK.WebStaticBuilder + webstatic + 1.0.0 + false + GCBoK.WebStaticBuilder — Static site generator for multilingual, SEO-friendly, compliance-friendly websites (OSS, MIT). + + + + + + + + diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..adb7b50 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 GitCover Commons gUG + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/MEMORY.md b/MEMORY.md new file mode 100644 index 0000000..0d323c7 --- /dev/null +++ b/MEMORY.md @@ -0,0 +1,20 @@ +# MEMORY — GCBoK.WebStaticBuilder + +Persistentes Gedächtnis für das Tool-Projekt (nicht die GCBoK-Website). + +## Status (2026-07-11) +- Phase 0 + 1 abgeschlossen: Tool eigenständig unter `/mnt/brx5/work/OSS/build_webstatic`, + umbenannt zu `GCBoK.WebStaticBuilder`, Python/`build.csx` entfernt, Build verifiziert + (webstatic.example baut de/en/vi mit i18n, Pagefind, Mermaid). +- Phase 2–5 ausstehend (siehe plans/00-produkt-webstatic.md). + +## Architektur-Entscheidungen +- Assembly-Name `webstatic`; CLI-Subcommands: `build`, `translate`, `init`, `serve`. +- Umgebungen: `work`/`review`/`staging`/`deploy` (Aliase `--preview`/`--staging`/`--deploy`). +- MT über `System.Net.Http` (Azure/DeepL REST), kein Extra-NuGet; Key via Env (`WEBSTATIC_TRANSLATOR_KEY`). +- i18n-Port von `i18n.py` → `I18n.cs` (JSON `i18n.json`). + +## Wichtig +- CPM deaktiviert; Package-Versionen explizit pinnen (NU1015 sonst). +- `dist/`, `bin/`, `obj/`, `.translation-drafts/` gitignored. +- Submodul `www/build` der GCBoK-Website wird in Phase 3 entfernt; Website nutzt dann `/opt/GitCover/webstatic`. diff --git a/README.md b/README.md new file mode 100644 index 0000000..e7814a3 --- /dev/null +++ b/README.md @@ -0,0 +1,73 @@ +# GCBoK.WebStaticBuilder + +Eigenständiger, quelloffener **Static-Site-Generator** der GitCover Commons für +mehrsprachige, SEO-optimierte, compliance-freundliche Websites. Ersetzt den +früheren C#-Builderskript der GCBoK-Website durch ein generisches, für KMU +einsetzbares Werkzeug. + +- **Sprache:** C# / .NET 10 (kompilierte Konsole) +- **Lizenz:** MIT +- **Kein Python:** einzige externe Abhängigkeit ist `npx pagefind` (Suchindex, optional) +- **Funktionen:** Markdown + YAML-Frontmatter → statisches HTML pro Sprache, + Navigation, SEO-Kopf (OpenGraph/JSON-LD), `sitemap.xml`, `robots.txt`, + Mermaid-Diagramme, client-seitige Volltextsuche (Pagefind), UI-Lokalisierung + über `{{ i18n.* }}`, optionaler Machine-Translation-Helfer (Entwürfe). + +## Schnellstart + +```bash +# Tool bauen +dotnet build -c Release + +# Beispiel-Seite erzeugen und bauen +dotnet bin/Release/net10.0/webstatic.dll init mysite +cd mysite +dotnet ../../bin/Release/net10.0/webstatic.dll build --env work + +# Lokal ansehen +dotnet ../../bin/Release/net10.0/webstatic.dll serve --port 8000 +``` + +## Umgebungen + +| `--env` | baseUrl (Beispiel) | Zweck | +|----------|------------------------------|------------------------| +| `work` | `http://localhost:8000` | Lokale Entwicklung | +| `review` | `https://review.gitcover.org`| Freigabe/Vorschau | +| `staging`| `https://gcbok.gitcover.org` | Abnahme (brx5) | +| `deploy` | `https://gcbok.org` | Production | + +Aliase: `--preview` = `work`, `--staging` = `staging`, `--deploy` = `deploy`. + +## Konfiguration (`webstatic.json`) + +CLI-Flags haben Vorrang vor `webstatic.json`, dieses vor eingebauten Defaults. +Siehe `webstatic.example/webstatic.json` und `docs/getting-started.md`. + +## Installation für KMU + +```bash +./install.sh # -> /opt/GitCover/webstatic, Symlink /usr/local/bin/webstatic +``` + +## Machine Translation (optional) + +```bash +webstatic translate --check # fehlende Übersetzungen melden +export WEBSTATIC_TRANSLATOR_KEY=... # API-Key (Azure/DeepL) +webstatic translate --draft # Entwürfe nach .translation-drafts/ +``` + +Entwürfe überschreiben niemals Quelldateien. + +## Verzeichnisstruktur + +``` +plans/ Produktplan & Folgepläne +docs/ Anleitungen (KMU, Admin) +diary/ Entwicklungs-Tagebuch +src/ C#-Quellcode (GCBoK.WebStaticBuilder) +tests/ (künftig) Unit/Integrationstests +webstatic.example/ Vorlage-Site für KMU +install.sh KMU-Installation +``` diff --git a/SKILLS.md b/SKILLS.md new file mode 100644 index 0000000..b8133f1 --- /dev/null +++ b/SKILLS.md @@ -0,0 +1,21 @@ +# SKILLS — GCBoK.WebStaticBuilder + +Fähigkeiten und wiederkehrende Arbeitsmuster für dieses Tool. + +## Build & Test +- Immer `dotnet build -c Release` vor Verifikation. +- Smoke-Test: `webstatic build --env work` in `webstatic.example/`, dann `serve` prüfen. +- Pagefind-Index erwartet in `dist/pagefind/`; bei fehlendem Node nur Warnung. + +## Häufige Fehler +- **NU1015** (keine Package-Version): CPM aktiv → Versionen in csproj pinnen + `false`. +- **CS0103** in `Program.cs`: Typen aus `GCBoK.WebStaticBuilder` nicht sichtbar → `using GCBoK.WebStaticBuilder;` oben in `Program.cs`. +- **CS8361** (Ternär in String-Interpolation): Tertiär-Ausdruck in `(...)` setzen oder vorab in Variable auslagern. +- **StringBuilder statt string** bei `Replace(...)`: Rückgabe von `BuildSectionsHtml` ist `string`. + +## Dateien +- `src/BuildConfig.cs` — Config-Modell + Defaults + Merge + Load. +- `src/Directories.cs` — generische Pfade aus Config (Init vor Build). +- `src/Builder.cs` — Orchestrierung (Render, SEO, Sitemap, Pagefind). +- `src/I18n.cs` — `{{ i18n.* }}`-Substitution. +- `src/Translation/TranslationService.cs` — MT-Helfer (Azure/DeepL). diff --git a/diary/2026-07-11.md b/diary/2026-07-11.md new file mode 100644 index 0000000..fb695d6 --- /dev/null +++ b/diary/2026-07-11.md @@ -0,0 +1,15 @@ +# Entwicklungs-Tagebuch — GCBoK.WebStaticBuilder + +## 2026-07-11 — Phase 0/1: Eigenständiges Tool +- Dev-Repo `/mnt/brx5/work/OSS/build_webstatic` aus `www/build` (Submodul `OSS/build_webstatic`) angelegt. +- Python-Legacy (`build.py`, `i18n.py`, `sections.py`, `utils.py`, `simple_build.py`) und + `build.csx` entfernt; Verzeichnisstruktur `plans/ docs/ diary/ src/ tests/ webstatic.example/` erstellt. +- Umbenennung `GCBoK.Build` → `GCBoK.WebStaticBuilder` (csproj/Assembly `webstatic`). +- Config-Modell `BuildConfig` (CLI > webstatic.json > Defaults), generische Pfade (`Directories`), + Umgebungen `work/review/staging/deploy` (Aliase `--preview/--staging/--deploy`). +- i18n: `i18n.py` → `I18n.cs` (JSON `i18n.json`), `{{ i18n.* }}`-Substitution + `{{ lang_links }}`. +- MT-Helfer: `TranslationService` (Azure/DeepL via REST, kein Extra-NuGet), `translate --check/--draft`. +- Pagefind im Post-Build, per Config (`pagefind`) abschaltbar. +- `init`/`serve` (HttpListener) Subcommands; `webstatic.example/` KMU-Vorlage. +- `install.sh` (→ `/opt/GitCover/webstatic`), `LICENSE` (MIT), AGENTS/MEMORY/SKILLS/.hermes, plans/00. +- Verifiziert: `dotnet build -c Release` ✓; Beispiel baut de/en/vi mit i18n, Pagefind, Mermaid ✓. diff --git a/docs/getting-started.md b/docs/getting-started.md new file mode 100644 index 0000000..62e216a --- /dev/null +++ b/docs/getting-started.md @@ -0,0 +1,81 @@ +# Getting Started (KMU) + +Diese Anleitung beschreibt, wie Sie mit **GCBoK.WebStaticBuilder** eine eigene, +mehrsprachige, statische Website erstellen — ohne Server, Datenbank oder +JavaScript-Framework. + +## 1. Voraussetzungen +- **.NET 10 SDK** (`dotnet`) — https://dotnet.microsoft.com/download +- Optional: **Node.js** (für die Suchfunktion Pagefind). Ohne Node wird die Seite + gebaut, die Suche entfällt (nicht fatal). + +## 2. Installation +```bash +git clone build_webstatic +cd build_webstatic +./install.sh # installiert nach /opt/GitCover/webstatic +``` +Nach der Installation ist `webstatic` im PATH verfügbar. + +## 3. Neue Website anlegen +```bash +webstatic init mysite +cd mysite +``` +Das erzeugt eine Vorlage (`webstatic.example/`) mit: +- `webstatic.json` — Konfiguration (Sprachen, Umgebungen, Pfade) +- `i18n.json` — UI-Übersetzungen +- `content/` — Markdown-Inhalte +- `templates/layout.html` — HTML-Grundgerüst +- `assets/` — CSS, JS, Favicon + +## 4. Inhalte pflegen +Jede Seite ist eine Markdown-Datei mit YAML-Frontmatter am Anfang: + +```markdown +--- +section: start +order: 1 +eyebrow: "Startseite" +title: "Startseite" +description: "Die Landing-Page" +href: / +render: true +navbar: true +--- + +## Einführung +Ihr Inhalt … +``` + +- `order` steuert die Reihenfolge in Navigation und Sidebar. +- `order: 0` = Banner, der auf der Startseite (order 1) eingebettet wird. +- Sprachvarianten: `02-start.en.md`, `02-start.vi.md` (Fallback auf Basisdatei). + +## 5. Bauen & Vorschau +```bash +webstatic build --env work # localhost:8000 +webstatic serve --port 8000 # lokaler Server (Strg+C beendet) +``` + +## 6. Veröffentlichen +| Ziel | Befehl | +|------|--------| +| Review | `webstatic build --env review` | +| Staging | `webstatic build --env staging` | +| Production | `webstatic build --env deploy` | + +Die erzeugte `dist/`-Aufgabe wird auf den jeweiligen Webspace kopiert. + +## 7. UI übersetzen +Texte im Layout (`templates/layout.html`) nutzen Platzhalter `{{ i18n.. }}`. +Die Werte stehen in `i18n.json` (pro Sprache). Fehlende Schlüssel bleiben als +Platzhalter sichtbar — so erkennen Sie Lücken sofort. + +## 8. Machine Translation (optional) +```bash +webstatic translate --check # welche Sprachen fehlen? +export WEBSTATIC_TRANSLATOR_KEY= # Azure oder DeepL +webstatic translate --draft # Entwürfe in .translation-drafts/ +``` +Entwürfe überschreiben niemals Ihre Quelldateien — sie sind zum Nacharbeiten gedacht. diff --git a/install.sh b/install.sh new file mode 100644 index 0000000..a278db3 --- /dev/null +++ b/install.sh @@ -0,0 +1,50 @@ +#!/usr/bin/env bash +# GCBoK.WebStaticBuilder — KMU-Installationsskript +# Installiert das Tool nach /opt/GitCover/webstatic und legt einen Symlink +# `webstatic` nach /usr/local/bin. Idempotent. +set -euo pipefail + +INSTALL_DIR="${WEBSTATIC_INSTALL_DIR:-/opt/GitCover/webstatic}" +BIN_LINK="/usr/local/bin/webstatic" +REPO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +echo "== GCBoK.WebStaticBuilder Installer ==" +echo "Installationsziel: $INSTALL_DIR" + +# 1) .NET 10 pruefen +if ! command -v dotnet >/dev/null 2>&1; then + echo "FEHLER: .NET 10 (dotnet) ist nicht installiert." >&2 + echo "Installiere .NET 10 von https://dotnet.microsoft.com/download" >&2 + exit 1 +fi +DOTNET_VER="$(dotnet --version 2>/dev/null || echo 0)" +echo "Gefunden: dotnet $DOTNET_VER" + +# 2) Projekt bauen (Release) +echo "== Baue Release ==" +dotnet build "$REPO_DIR/GCBoK.WebStaticBuilder.csproj" -c Release -v minimal + +# 3) Nach /opt kopieren +echo "== Kopiere nach $INSTALL_DIR ==" +mkdir -p "$INSTALL_DIR" +rm -rf "$INSTALL_DIR/bin" "$INSTALL_DIR/webstatic.example" 2>/dev/null || true +cp -r "$REPO_DIR/bin/Release/net10.0/." "$INSTALL_DIR/" +cp -r "$REPO_DIR/webstatic.example" "$INSTALL_DIR/webstatic.example" 2>/dev/null || true +# Hilfsdateien auf oberster Ebene mitnehmen (LICENSE, README, docs) +for f in LICENSE README.md docs plans AGENTS.md MEMORY.md SKILLS.md; do + [ -e "$REPO_DIR/$f" ] && cp -r "$REPO_DIR/$f" "$INSTALL_DIR/" 2>/dev/null || true +done + +# 4) Symlink +echo "== Verknuepfe $BIN_LINK -> $INSTALL_DIR/webstatic.dll ==" +if [ -w "$(dirname "$BIN_LINK")" ]; then + ln -sf "$INSTALL_DIR/webstatic.dll" "$BIN_LINK" +else + echo "Hinweis: $BIN_LINK benoetigt Schreibrechte; erstelle Link via sudo." + sudo ln -sf "$INSTALL_DIR/webstatic.dll" "$BIN_LINK" +fi + +echo "" +echo "Fertig. Danach verfuegbar ueber: webstatic --help" +echo "Beispiel-Seite erzeugen: webstatic init mysite && cd mysite && webstatic build --env work" +echo "Umgebungsvariable (optional): WEBSTATIC_BUILDER=$INSTALL_DIR/webstatic.dll" diff --git a/plans/00-produkt-webstatic.md b/plans/00-produkt-webstatic.md new file mode 100644 index 0000000..22e651c --- /dev/null +++ b/plans/00-produkt-webstatic.md @@ -0,0 +1,99 @@ +# GCBoK.WebStaticBuilder — Produktbeschreibung & Umsetzungsplan + +> Status: Implementierung (Phase 1 abgeschlossen, Build verifiziert). Eigenständiges OSS-Static-Site-Tool der GitCover Commons. +> Lizenz: MIT. Sprachen: C# / .NET 10 (keine Python-Abhängigkeiten). + +## 1. Zweck +`GCBoK.WebStaticBuilder` (CLI-Befehl `webstatic`) ist ein schlanker, kompilierter Static-Site-Generator für mehrsprachige, SEO-optimierte, compliance-freundliche Websites. Er liest Markdown-Quellen mit YAML-Frontmatter, rendert sie pro Sprache zu statischem HTML, erzeugt Navigation, SEO-Kopf (OpenGraph/JSON-LD), Sitemap, robots.txt und einen client-seitigen Volltextindex (Pagefind) — ohne Server, Datenbank oder Build-Service. + +Das Tool ist die Verallgemeinerung des Builders, der die GCBoK-Website erzeugt, und soll es insbesondere **KMU-Anwendern** ermöglichen, eigene Websites nach derselben Funktionsweise zu erstellen. + +## 2. Zielgruppe +- **Primär:** KMU, die eine mehrsprachige, datenschutzfreundliche, revisionssichere Website/ Dokumentation betreiben wollen (kein JS-Framework, kein Tracking, statisch hostbar). +- **Sekundär:** OSS-Projekte, Behörden, gemeinnützige Träger mit BoK-/Compliance-Anspruch. + +## 3. Architektur & Technik +- **C# / .NET 10**, kompilierte Konsolen-App (`OutputType Exe`), Ziel-Framework `net10.0`, Assembly `webstatic`. +- **NuGet (alle MIT/BSD-2, lizenzkonform):** `Markdig` (BSD-2), `YamlDotNet` (MIT). Machine-Translation nutzt `System.Net.Http` (kein Extra-Paket). +- **Kein Python.** Einziger externer Build-Schritt: `npx pagefind` (Node, best-effort, per Config abschaltbar). +- Modulare `src/`-Struktur: `BuildConfig`, `Directories`, `Model`, `ContentLoader`, `MarkdownProcessor`, `SeoHelper`, `I18n`, `Builder`, `Translation/*`. + +## 4. Funktionsumfang +- Markdown + YAML-Frontmatter → statisches HTML pro Sprache (eigener Ordner je Sprache). +- Automatische Navigation (`.md`-Reihenfolge via `order`/`section`), Sidebar-TOC, Prev/Next. +- SEO: ``, Description, Canonical, OpenGraph, Twitter-Card, **JSON-LD**; `sitemap.xml`, `robots.txt`. +- Mermaid-Diagramme (CDN, saubere einmalige Initialisierung), responsives Layout. +- **Client-Suche:** Pagefind-Index im Post-Build (Mehrsprachigkeit via `<html lang>`). +- **i18n:** UI-Chrome (Nav/Footer/ARIA/Sprachumschalter) mehrsprachig über `I18n.cs` + `{{ i18n.* }}`-Platzhalter. +- **MT-Helfer:** `translate --check` meldet fehlende Übersetzungen; `translate --draft` erzeugt Entwürfe (nie auto-überschreiben). +- **Umgebungen:** deklarativ in Config, wählbar via `--env`. + +## 5. Mehrsprachigkeit +- Inhalte: pro Sprache eigene Datei (`<basis>.<lang>.md`), Fallback-Logik. +- UI-Strings: portiertes `i18n.py`-Wörterbuch nach `I18n.cs` (de/en/vi), zur Laufzeit pro Sprache injiziert. +- Kultur-korrekte Datums-/Zahlformate über `System.Globalization` (vorbereitet). +- Optional: MT-Provider (Azure/DeepL) erzeugt **Entwürfe** für fehlende Inhaltsübersetzungen (klar markiert, separater Ordner `.translation-drafts/`). + +## 6. Umgebungen (Arbeitsumgebung / Review / Staging / Public Deployment) +| Umgebung | `--env` | baseUrl (Beispiel) | cdn | Zweck / Ort | +|---|---|---|---|---| +| **Arbeitsumgebung** | `work` (`--preview`) | `http://localhost:8000` | `/assets` | Lokale Entwicklung; Build→lokales `dist/`, Vorschau via `serve` | +| **Review** | `review` | `https://review.gitcover.org` | CDN | Freigabe/Vorschau (Konzept) | +| **Staging** | `staging` | `https://gcbok.gitcover.org` | `https://gitcover.org/assets` | Abnahme (brx5 `/var/www/gcbok.gitcover.org`) | +| **Public Deployment** | `deploy` | `https://gcbok.org` | `https://gitcover.org/assets` | Production (manueller Upload WebFTP) | + +## 7. CLI-Referenz +``` +webstatic build --env <work|review|staging|deploy> [--content DIR] [--templates DIR] + [--assets DIR] [--output DIR] [--base-url URL] [--cdn PATH] + [--langs de,en,vi] [--default-lang de] [--config FILE] [--root DIR] + [--verbose] [--dry-run] +webstatic translate --check # fehlende Übersetzungen melden +webstatic translate --draft # Entwürfe erzeugen (MT, API-Key nötig) +webstatic init <sitename> # KMU-Onboarding: Site scaffolden +webstatic serve [--port 8000] # lokale Vorschau (.NET HttpListener) +``` +Aliase `--preview`=`work`, `--staging`=`staging`, `--deploy`=`deploy` bleiben erhalten. + +## 8. Konfiguration (`webstatic.json`) +- `site` (name/title/description je Sprache), `default_language`, `languages` (name/og_locale/href_lang/label), `paths` (content/templates/assets/output/legal/i18n), `glossary_section` + `glossary.href/label`, `pagefind` (bool), `translator` (provider/key_env/endpoint/region), `environments` (work/review/staging/deploy mit base_url/cdn). +- Priorität: CLI-Flags > `webstatic.json` > eingebaute Defaults. + +## 9. Installation für KMU (`install.sh`) +- Bash-Skript (kein Python): prüft .NET 10, `dotnet build -c Release`, kopiert nach **`/opt/GitCover/webstatic`**, Symlink `webstatic`→App nach `/usr/local/bin`, setzt `WEBSTATIC_BUILDER`. +- Idempotent; meldet Voraussetzungen. + +## 10. Onboarding-Flow für KMU +- `webstatic init <sitename>` scaffolder: kopiert `webstatic.example/` (content/templates/assets + Config), fragt Sprachen/Site-Titel. +- `webstatic serve` (lokale Vorschau) und `webstatic build --env staging` als Kern. +- Review-Gate/Konzept (Assistent, Freigabe) wird separat finalisiert. + +## 11. Repository-Struktur (Ziel) +``` +build_webstatic/ + plans/ # dieser Plan + Folgepläne + docs/ # Anleitungen (KMU, Admin) + diary/ # Entwicklungs-Tagebuch / Changelog + src/ # C#-Quellcode (GCBoK.WebStaticBuilder) + tests/ # (künftig) Unit/Integrationstests + webstatic.example/ # Vorlage-Site für KMU + install.sh README.md LICENSE (MIT) AGENTS.md MEMORY.md SKILLS.md +``` + +## 12. Lizenz & Compliance +- Code: **MIT** (`LICENSE`). Kompatibel mit allen genutzten NuGet-Paketen. +- Inhalte der GCBoK-Site: separat (angestrebt CC BY-SA 4.0) — betrifft das Tool nicht. + +## 13. Umsetzungsphasen +- **Phase 0 — Dev-Setup:** `build_webstatic` auf `/mnt/brx5/work/OSS/build_webstatic` (kopiert aus `www/build`, Python/`build.csx` entfernt, Verzeichnisstruktur plans/docs/diary/src/tests). +- **Phase 1 — Refactor (DONE):** Umbenennung `GCBoK.WebStaticBuilder`; Python entfernt; Config/Umgebungsmodell; i18n (`I18n.cs` + Platzhalter); MT-Helfer; Pagefind; `webstatic.example`; `install.sh`; Docs/LIZENZ. Build & Verify auf Beispielsite ✓. +- **Phase 2 — Install & Verify:** `install.sh` → `/opt/GitCover/webstatic`; Standalone-Smoke-Test. +- **Phase 3 — Website-Repo:** Submodul `www/build` entfernen; `www/build.sh` durch Bash ersetzen; alle Docs (AGENTS/MEMORY/SKILLS/CONTEXT/README/docs/DEPLOYMENT/oss/*/.hermes) auf neuen Pfad/Tool/Umgebungen/kein-Python aktualisieren; GCBoK-Preview-Build + Dead-Link-Check. +- **Phase 4 — Onboarding:** `init`/`serve`/`build` als KMU-Flow (Konzept finalisieren). +- **Phase 5 — Abschluss:** Zusammenfassung; Commit/Signierung nur auf Wunsch. + +## 14. Offen / Risiken +- **Review-Umgebung:** Konzept (Host/Subdomain/Freigabe) noch offen. +- **MT-Sicherheit:** Entwürfe nur als Draft, nie auto-übernommen. +- **Rückwärtskompat GCBoK:** Config-Defaults spiegeln GCBoK-Struktur. +- **Portabilität:** `/opt` maschinenspezifisch → `WEBSTATIC_BUILDER` + `install.sh` dokumentiert. diff --git a/src/BuildConfig.cs b/src/BuildConfig.cs new file mode 100644 index 0000000..b8b91f2 --- /dev/null +++ b/src/BuildConfig.cs @@ -0,0 +1,139 @@ +using System.Text.Json; + +namespace GCBoK.WebStaticBuilder; + +/// <summary>Per-language configuration.</summary> +public class LanguageConfig +{ + public string Name { get; set; } = ""; + public string OgLocale { get; set; } = ""; + public string? HrefLang { get; set; } + public string? Label { get; set; } +} + +/// <summary>Filesystem paths, relative to the site root unless absolute.</summary> +public class PathsConfig +{ + public string Content { get; set; } = "content"; + public string Templates { get; set; } = "templates"; + public string Assets { get; set; } = "assets"; + public string Output { get; set; } = "dist"; + public string Legal { get; set; } = "legal"; + public string I18n { get; set; } = "i18n.json"; +} + +/// <summary>Build environment (work/review/staging/deploy) with base URL and CDN.</summary> +public class EnvironmentConfig +{ + public string BaseUrl { get; set; } = "http://localhost:8000"; + public string Cdn { get; set; } = "/assets"; +} + +/// <summary>Machine-translation helper configuration (optional, behind an API key).</summary> +public class TranslatorConfig +{ + public string Provider { get; set; } = "azure"; // "azure" | "deepl" + public string? KeyEnv { get; set; } = "WEBSTATIC_TRANSLATOR_KEY"; + public string? Endpoint { get; set; } + public string? Region { get; set; } +} + +/// <summary>Per-language glossary link (slug without extension).</summary> +public class GlossaryConfig +{ + public Dictionary<string, string> Href { get; set; } = new(); + public Dictionary<string, string> Label { get; set; } = new(); +} + +/// <summary>Site-level metadata.</summary> +public class SiteConfig +{ + public string Name { get; set; } = "Site"; + public Dictionary<string, string> Title { get; set; } = new(); + public Dictionary<string, string> Description { get; set; } = new(); + public string? Publisher { get; set; } +} + +/// <summary> +/// Full build configuration. Loaded from <c>webstatic.json</c> (CLI > file > defaults). +/// </summary> +public class BuildConfig +{ + public SiteConfig Site { get; set; } = new(); + public string DefaultLanguage { get; set; } = "de"; + public Dictionary<string, LanguageConfig> Languages { get; set; } = new(); + public PathsConfig Paths { get; set; } = new(); + public GlossaryConfig Glossary { get; set; } = new(); + public string GlossarySection { get; set; } = "glossar"; + public bool Pagefind { get; set; } = true; + public TranslatorConfig Translator { get; set; } = new(); + public Dictionary<string, EnvironmentConfig> Environments { get; set; } = new(); + + public static BuildConfig Defaults() + { + var cfg = new BuildConfig + { + Languages = new() + { + ["de"] = new LanguageConfig { Name = "Deutsch", OgLocale = "de_DE", HrefLang = "de", Label = "Deutsch" }, + ["en"] = new LanguageConfig { Name = "English", OgLocale = "en_US", HrefLang = "en", Label = "English" }, + ["vi"] = new LanguageConfig { Name = "Tiếng Việt", OgLocale = "vi_VN", HrefLang = "vi", Label = "Tiếng Việt" }, + }, + Environments = new() + { + ["work"] = new EnvironmentConfig { BaseUrl = "http://localhost:8000", Cdn = "/assets" }, + ["review"] = new EnvironmentConfig { BaseUrl = "https://review.gitcover.org", Cdn = "https://gitcover.org/assets" }, + ["staging"] = new EnvironmentConfig { BaseUrl = "https://gcbok.gitcover.org", Cdn = "https://gitcover.org/assets" }, + ["deploy"] = new EnvironmentConfig { BaseUrl = "https://gcbok.org", Cdn = "https://gitcover.org/assets" }, + }, + }; + return cfg; + } + + /// <summary>Load config from a JSON file if present, merged over the built-in defaults.</summary> + public static BuildConfig Load(string? configPath) + { + var cfg = Defaults(); + if (string.IsNullOrEmpty(configPath)) return cfg; + if (!File.Exists(configPath)) return cfg; + + try + { + var json = File.ReadAllText(configPath); + var opts = new JsonSerializerOptions { PropertyNameCaseInsensitive = true }; + var fromFile = JsonSerializer.Deserialize<BuildConfig>(json, opts); + if (fromFile != null) + { + cfg = Merge(cfg, fromFile); + } + } + catch (Exception ex) + { + Console.WriteLine($"WARNING: could not read config '{configPath}': {ex.Message}"); + } + return cfg; + } + + private static BuildConfig Merge(BuildConfig d, BuildConfig f) + { + if (f.Site != null) d.Site = f.Site; + if (!string.IsNullOrEmpty(f.DefaultLanguage)) d.DefaultLanguage = f.DefaultLanguage; + if (f.Languages != null && f.Languages.Count > 0) d.Languages = f.Languages; + if (f.Paths != null) d.Paths = f.Paths; + if (f.Glossary != null) d.Glossary = f.Glossary; + if (!string.IsNullOrEmpty(f.GlossarySection)) d.GlossarySection = f.GlossarySection; + d.Pagefind = f.Pagefind; + if (f.Translator != null) d.Translator = f.Translator; + if (f.Environments != null && f.Environments.Count > 0) d.Environments = f.Environments; + return d; + } + + /// <summary>Ordered list of language codes to render.</summary> + public List<string> LanguageCodes() + { + if (Languages.Count == 0) return new() { DefaultLanguage }; + return Languages.Keys.ToList(); + } + + public bool HasLanguage(string lang) => Languages.ContainsKey(lang); +} diff --git a/src/Builder.cs b/src/Builder.cs new file mode 100644 index 0000000..1fee756 --- /dev/null +++ b/src/Builder.cs @@ -0,0 +1,503 @@ +using System.Diagnostics; +using System.Text; +using System.Text.RegularExpressions; + +namespace GCBoK.WebStaticBuilder; + +/// <summary>Main build orchestrator.</summary> +public static class Builder +{ + public static void Build(BuildConfig cfg, EnvironmentConfig env, string envName, bool verbose, bool dryRun) + { + File.WriteAllText(Directories.BuildLogPath, + $"=== Build Started: {DateTime.Now:yyyy-MM-dd HH:mm:ss.fff} ===\n"); + File.AppendAllText(Directories.BuildLogPath, + $"ENV: {envName}\nBASE_URL: {env.BaseUrl}\nCDN_ASSETS: {env.Cdn}\nROOT: {Directories.Root}\n\n"); + File.WriteAllText(Directories.RunLogPath, + $"\n=== Run Started: {DateTime.Now:yyyy-MM-dd HH:mm:ss.fff} ===\n"); + + if (verbose) + { + Console.WriteLine("Build configuration:"); + Console.WriteLine($" ENV: {envName}"); + Console.WriteLine($" BASE_URL: {env.BaseUrl}"); + Console.WriteLine($" CDN_ASSETS: {env.Cdn}"); + Console.WriteLine($" Content: {Directories.ContentDir}"); + Console.WriteLine($" Templates: {Directories.TemplateDir}"); + Console.WriteLine($" Output: {Directories.DistDir}"); + } + + // Load UI translations (best-effort; templates fall back to keys if absent) + I18n.Load(Directories.I18nFile); + if (verbose && I18n.Loaded) Console.WriteLine($" i18n: loaded {Directories.I18nFile}"); + + string layout = LoadLayout(); + + Directory.CreateDirectory(Directories.DistDir); + CopyAssets(verbose); + + var langLinksHtml = BuildLangLinksHtml(); + + foreach (var lang in cfg.LanguageCodes()) + { + try + { + var contents = ContentLoader.LoadContent(Directories.ContentDir, lang); + if (verbose) Console.WriteLine($"Rendering {contents.Count} content files for language {lang}"); + File.AppendAllText(Directories.RunLogPath, $"Language: {lang}, Files: {contents.Count}\n"); + + var sectionsHtml = BuildSectionsHtml(contents, lang); + var navLinksHtml = BuildNavLinksHtml(contents, lang); + var sidebarNavHtml = BuildSidebarNavHtml(contents, lang); + + var bannerPage = contents.FirstOrDefault(p => p.Meta.Order == 0); + var bannerHtml = ""; + if (bannerPage != null) + { + bannerHtml = MarkdownProcessor.RenderMarkdown(bannerPage.Content); + bannerHtml = MarkdownProcessor.MermaidPostprocess(bannerHtml); + bannerHtml = MarkdownProcessor.TablePostprocess(bannerHtml); + } + + foreach (var page in contents) + { + if (!page.Meta.Render) continue; + if (page.Meta.Order == 0) continue; + + var title = page.Meta.LocalizedTitle(lang, page.Meta.Title ?? Path.GetFileNameWithoutExtension(page.Path)); + var desc = page.Meta.LocalizedDescription(lang, ""); + + if (string.IsNullOrEmpty(title)) + title = Path.GetFileNameWithoutExtension(page.Path); + + var htmlContent = MarkdownProcessor.RenderMarkdown(page.Content); + htmlContent = MarkdownProcessor.MermaidPostprocess(htmlContent); + htmlContent = MarkdownProcessor.TablePostprocess(htmlContent); + + var fullBody = page.Meta.Order == 1 + ? bannerHtml + htmlContent + : htmlContent; + + var canonical = page.Href.StartsWith("/") ? page.Href : $"/{page.Href}"; + if (!canonical.EndsWith("/")) canonical += "/"; + + var defaultTitle = cfg.Site.Title.TryGetValue(lang, out var dt) ? dt : cfg.Site.Name; + var defaultDesc = cfg.Site.Description.TryGetValue(lang, out var dd) ? dd : ""; + + var seoHead = SeoHelper.RenderSeoHead(lang, title, desc, $"{env.BaseUrl}{canonical}", + env.Cdn, defaultTitle, defaultDesc); + + var sidebarTocHtml = BuildSidebarTocHtml(page.Content); + var pageNavHtml = (page.Meta.Order == 1) ? "" : BuildPageNavHtml(contents, page, lang); + + var pageHtml = layout + .Replace("{{seo_head}}", seoHead).Replace("{{ seo_head }}", seoHead) + .Replace("{{ json_ld }}", "").Replace("{{json_ld}}", "") + .Replace("{{sections}}", sectionsHtml).Replace("{{ sections }}", sectionsHtml) + .Replace("{{nav_links}}", navLinksHtml).Replace("{{ nav_links }}", navLinksHtml) + .Replace("{{sidebar_nav}}", sidebarNavHtml).Replace("{{ sidebar_nav }}", sidebarNavHtml) + .Replace("{{sidebar_toc}}", sidebarTocHtml).Replace("{{ sidebar_toc }}", sidebarTocHtml) + .Replace("{{page_nav}}", pageNavHtml).Replace("{{ page_nav }}", pageNavHtml) + .Replace("{{lang}}", lang).Replace("{{ lang }}", lang) + .Replace("{{lang_links}}", langLinksHtml).Replace("{{ lang_links }}", langLinksHtml) + .Replace("{{glossary_href}}", GlossaryHref(lang)).Replace("{{ glossary_href }}", GlossaryHref(lang)) + .Replace("{{glossary_label}}", GlossaryLabel(lang)).Replace("{{ glossary_label }}", GlossaryLabel(lang)) + .Replace("{{content}}", fullBody).Replace("{{ content }}", fullBody) + .Replace("{{body}}", fullBody).Replace("{{ body }}", fullBody); + + pageHtml = I18n.Substitute(pageHtml, lang); + + if (dryRun) + { + if (verbose) Console.WriteLine($" [dry-run] Would write {lang}/{page.Href}"); + continue; + } + + var ldir = Path.Combine(Directories.DistDir, lang); + Directory.CreateDirectory(ldir); + + var slug = page.Href.Trim('/'); + var outputFile = string.IsNullOrEmpty(slug) ? "index.html" : $"{slug}.html"; + var outputPath = Path.Combine(ldir, outputFile); + File.WriteAllText(outputPath, pageHtml); + + if (page.Meta.Order == 1) + { + var heroIndexPath = Path.Combine(ldir, "index.html"); + File.WriteAllText(heroIndexPath, pageHtml); + if (verbose) Console.WriteLine($" Written {heroIndexPath} (hero landing)"); + File.AppendAllText(Directories.BuildLogPath, $" Written: {heroIndexPath} (hero landing)\n"); + } + + if (verbose) Console.WriteLine($" Written {outputPath}"); + File.AppendAllText(Directories.BuildLogPath, $" Written: {outputPath}\n"); + } + } + catch (Exception ex) + { + Console.WriteLine($"ERROR rendering {lang}: {ex.Message}"); + File.AppendAllText(Directories.BuildLogPath, $"ERROR rendering {lang}: {ex.Message}\n{ex.StackTrace}\n\n"); + File.AppendAllText(Directories.RunLogPath, $"ERROR rendering {lang}: {ex.Message}\n{ex.StackTrace}\n\n"); + } + } + + BuildLegalPages(cfg, env, verbose); + File.WriteAllText(Path.Combine(Directories.DistDir, "index.html"), BuildRootIndex(cfg, env.BaseUrl)); + if (verbose) Console.WriteLine(" Written root index.html"); + + File.WriteAllText(Path.Combine(Directories.DistDir, "robots.txt"), + $"User-agent: *\nAllow: /\nSitemap: {env.BaseUrl}/sitemap.xml"); + + BuildSitemap(cfg, env.BaseUrl, verbose); + + if (cfg.Pagefind) BuildSearchIndex(verbose); + else if (verbose) Console.WriteLine(" Pagefind disabled (config)."); + } + + private static string LoadLayout() + { + var layoutPath = Path.Combine(Directories.TemplateDir, "layout.html"); + if (File.Exists(layoutPath)) return File.ReadAllText(layoutPath); + Console.WriteLine($"WARNING: Layout file not found: {layoutPath}"); + return "<html><body>{{body}}</body></html>"; + } + + private static void CopyAssets(bool verbose) + { + var srcDir = Directories.AssetsDir; + var dstDir = Path.Combine(Directories.DistDir, "assets"); + if (!Directory.Exists(srcDir)) + { + Console.WriteLine($"WARNING: Assets directory not found: {srcDir}"); + return; + } + if (Directory.Exists(dstDir)) Directory.Delete(dstDir, recursive: true); + Directory.CreateDirectory(dstDir); + foreach (var file in Directory.GetFiles(srcDir, "*", SearchOption.AllDirectories)) + { + var rel = Path.GetRelativePath(srcDir, file); + var target = Path.Combine(dstDir, rel); + Directory.CreateDirectory(Path.GetDirectoryName(target)!); + File.Copy(file, target, overwrite: true); + } + if (verbose) + { + var count = Directory.GetFiles(dstDir, "*", SearchOption.AllDirectories).Length; + Console.WriteLine($" Copied {count} asset files to {dstDir}"); + } + File.AppendAllText(Directories.BuildLogPath, $" Assets copied to: {dstDir}\n"); + } + + private static string BuildLangLinksHtml() + { + var sb = new StringBuilder(); + foreach (var kv in Directories.Config.Languages) + { + var lang = kv.Key; + var li = kv.Value; + var label = li.Label ?? li.Name; + var code = (li.HrefLang ?? lang).ToUpperInvariant(); + sb.AppendLine($" <li><a href=\"/{lang}/\" hreflang=\"{li.HrefLang ?? lang}\"><span>{HtmlEncode(label)}</span> <span class=\"lang-dropdown__code\">{code}</span></a></li>"); + } + return sb.ToString().Trim(); + } + + private static string BuildNavLinksHtml(List<PageInfo> contents, string lang) + { + var sb = new StringBuilder(); + foreach (var page in contents) + { + if (!page.Meta.Navbar) continue; + if (page.Meta.Order == 0 || page.Meta.Order == 1) continue; + var title = page.Meta.LocalizedTitle(lang, Path.GetFileNameWithoutExtension(page.Path)); + var navLabel = page.Meta.Eyebrow ?? title; + if (navLabel.Contains(" — ")) + navLabel = navLabel.Substring(navLabel.IndexOf(" — ") + 3); + var slug = page.Href.Trim('/'); + var href = string.IsNullOrEmpty(slug) ? "index.html" : $"{slug}.html"; + sb.AppendLine($" <a class=\"nav-gcbok__link\" href=\"{href}\">{HtmlEncode(navLabel)}</a>"); + } + return sb.ToString().Trim(); + } + + private static string BuildSidebarNavHtml(List<PageInfo> contents, string lang) + { + var sb = new StringBuilder(); + var navPages = contents.Where(p => p.Meta.Navbar && p.Meta.Order != 0 && p.Meta.Order != 1) + .OrderBy(p => p.Meta.Order ?? 999).ToList(); + var heroPage = contents.FirstOrDefault(p => p.Meta.Order == 1); + if (heroPage != null) + sb.AppendLine(" <li><a href=\"index.html\"><span class=\"nav-idx\">★</span> Startseite</a></li>"); + + foreach (var page in navPages) + { + var navLabel = page.Meta.Eyebrow ?? page.Meta.LocalizedTitle(lang, page.Meta.Title ?? ""); + if (navLabel.Contains(" — ")) + navLabel = navLabel.Substring(navLabel.IndexOf(" — ") + 3); + var slug = page.Href.Trim('/'); + var href = string.IsNullOrEmpty(slug) ? "index.html" : $"{slug}.html"; + var idx = page.Meta.Order?.ToString() ?? "·"; + sb.AppendLine($" <li><a href=\"{href}\"><span class=\"nav-idx\">{idx}</span> {HtmlEncode(navLabel)}</a></li>"); + } + return sb.ToString().Trim(); + } + + private static string BuildSidebarTocHtml(string markdownContent) + { + var sb = new StringBuilder(); + var lines = markdownContent.Split('\n'); + var inCodeBlock = false; + foreach (var line in lines) + { + if (line.TrimStart().StartsWith("```")) + { + inCodeBlock = !inCodeBlock; + continue; + } + if (inCodeBlock) continue; + var trimmed = line.TrimStart(); + if (trimmed.StartsWith("## ") && !trimmed.StartsWith("### ")) + { + var headingText = trimmed.Substring(3).Trim(); + headingText = Regex.Replace(headingText, @"\*\*(.+?)\*\*", "$1"); + headingText = Regex.Replace(headingText, @"\*(.+?)\*", "$1"); + headingText = Regex.Replace(headingText, @"`(.+?)`", "$1"); + var slug = Regex.Replace(headingText.ToLower(), @"[^a-z0-9äöüß\-]+", "-").Trim('-').TrimEnd(':'); + if (!string.IsNullOrEmpty(slug)) + sb.AppendLine($" <li><a href=\"#{slug}\">{HtmlEncode(headingText)}</a></li>"); + } + } + return sb.ToString().Trim(); + } + + private static string BuildPageNavHtml(List<PageInfo> contents, PageInfo currentPage, string lang) + { + var navPages = contents.Where(p => p.Meta.Navbar && p.Meta.Order != 0 && p.Meta.Order != 1) + .OrderBy(p => p.Meta.Order ?? 999).ToList(); + var currentIndex = navPages.FindIndex(p => p.Path == currentPage.Path); + if (currentIndex < 0) return ""; + + var sb = new StringBuilder(); + sb.AppendLine("<nav class=\"page-nav\" aria-label=\"Seitennavigation\">"); + if (currentIndex > 0) + { + var prev = navPages[currentIndex - 1]; + var prevLabel = (prev.Meta.Eyebrow ?? prev.Meta.LocalizedTitle(lang, prev.Meta.Title ?? "")); + if (prevLabel.Contains(" — ")) prevLabel = prevLabel.Substring(prevLabel.IndexOf(" — ") + 3); + sb.AppendLine($" <a class=\"page-nav__link\" href=\"{prev.Href.Trim('/')}.html\">"); + sb.AppendLine($" <span class=\"page-nav__label\">← Vorherige</span>"); + sb.AppendLine($" <span class=\"page-nav__title\">{HtmlEncode(prevLabel)}</span>"); + sb.AppendLine(" </a>"); + } + else sb.AppendLine(" <span class=\"page-nav__link\"> </span>"); + + if (currentIndex < navPages.Count - 1) + { + var next = navPages[currentIndex + 1]; + var nextLabel = (next.Meta.Eyebrow ?? next.Meta.LocalizedTitle(lang, next.Meta.Title ?? "")); + if (nextLabel.Contains(" — ")) nextLabel = nextLabel.Substring(nextLabel.IndexOf(" — ") + 3); + sb.AppendLine($" <a class=\"page-nav__link page-nav__link--next\" href=\"{next.Href.Trim('/')}.html\">"); + sb.AppendLine($" <span class=\"page-nav__label\">Nächste →</span>"); + sb.AppendLine($" <span class=\"page-nav__title\">{HtmlEncode(nextLabel)}</span>"); + sb.AppendLine(" </a>"); + } + else sb.AppendLine(" <span class=\"page-nav__link page-nav__link--next\"> </span>"); + + sb.AppendLine("</nav>"); + return sb.ToString().Trim(); + } + + private static string BuildSectionsHtml(List<PageInfo> contents, string lang) + { + var sb = new StringBuilder(); + foreach (var page in contents) + { + if (!page.Meta.Navbar) continue; + var title = page.Meta.LocalizedTitle(lang, Path.GetFileNameWithoutExtension(page.Path)); + sb.AppendLine($" <a href=\"{page.Href}\" data-lang=\"{lang}\">{HtmlEncode(title)}</a>"); + } + return sb.ToString().Trim(); + } + + private static void BuildLegalPages(BuildConfig cfg, EnvironmentConfig env, bool verbose) + { + var legalDir = Directories.LegalDir; + if (!Directory.Exists(legalDir)) return; + var layout = LoadLayout(); + var langLinksHtml = BuildLangLinksHtml(); + + foreach (var lang in cfg.LanguageCodes()) + { + var lld = Path.Combine(Directories.DistDir, lang); + Directory.CreateDirectory(lld); + var contents = ContentLoader.LoadContent(Directories.ContentDir, lang); + var navLinksHtml = BuildNavLinksHtml(contents, lang); + var sidebarNavHtml = BuildSidebarNavHtml(contents, lang); + + try + { + foreach (var lf in Directory.GetFiles(legalDir, "*.md")) + { + var bn = Path.GetFileName(lf); + if (bn.Contains(".")) + { + var match = Regex.Match(bn, @".+\.(de|en|vi)\.md$"); + if (match.Success && match.Groups[1].Value != lang) continue; + } + var text = File.ReadAllText(lf); + var (meta, content) = ContentLoader.ParseFrontmatter(text); + var title = meta.LocalizedTitle(lang, Path.GetFileNameWithoutExtension(bn)); + var htmlContent = MarkdownProcessor.RenderMarkdown(content); + htmlContent = MarkdownProcessor.MermaidPostprocess(htmlContent); + htmlContent = MarkdownProcessor.TablePostprocess(htmlContent); + + var baseName = Regex.Replace(bn, @"\.(de|en|vi)\.md$", ".html").Replace(".md", ".html"); + var canonical = $"/{Path.GetFileNameWithoutExtension(baseName)}/"; + var defaultTitle = cfg.Site.Title.TryGetValue(lang, out var dt) ? dt : cfg.Site.Name; + var defaultDesc = cfg.Site.Description.TryGetValue(lang, out var dd) ? dd : ""; + var seoHead = SeoHelper.RenderSeoHead(lang, title, "", $"{env.BaseUrl}{canonical}", + env.Cdn, defaultTitle, defaultDesc); + var sidebarTocHtml = BuildSidebarTocHtml(content); + + var pageHtml = layout + .Replace("{{seo_head}}", seoHead).Replace("{{ seo_head }}", seoHead) + .Replace("{{ json_ld }}", "").Replace("{{json_ld}}", "") + .Replace("{{sections}}", "").Replace("{{ sections }}", "") + .Replace("{{nav_links}}", navLinksHtml).Replace("{{ nav_links }}", navLinksHtml) + .Replace("{{sidebar_nav}}", sidebarNavHtml).Replace("{{ sidebar_nav }}", sidebarNavHtml) + .Replace("{{sidebar_toc}}", sidebarTocHtml).Replace("{{ sidebar_toc }}", sidebarTocHtml) + .Replace("{{page_nav}}", "").Replace("{{ page_nav }}", "") + .Replace("{{lang}}", lang).Replace("{{ lang }}", lang) + .Replace("{{lang_links}}", langLinksHtml).Replace("{{ lang_links }}", langLinksHtml) + .Replace("{{glossary_href}}", GlossaryHref(lang)).Replace("{{ glossary_href }}", GlossaryHref(lang)) + .Replace("{{glossary_label}}", GlossaryLabel(lang)).Replace("{{ glossary_label }}", GlossaryLabel(lang)) + .Replace("{{content}}", htmlContent).Replace("{{ content }}", htmlContent) + .Replace("{{body}}", htmlContent).Replace("{{ body }}", htmlContent); + pageHtml = I18n.Substitute(pageHtml, lang); + + var outputPath = Path.Combine(lld, baseName); + File.WriteAllText(outputPath, pageHtml); + if (verbose) Console.WriteLine($" Written {outputPath}"); + File.AppendAllText(Directories.BuildLogPath, $" Legal: {outputPath}\n"); + } + } + catch (Exception ex) + { + Console.WriteLine($"ERROR rendering legal {lang}: {ex.Message}"); + File.AppendAllText(Directories.BuildLogPath, $"ERROR rendering legal {lang}: {ex.Message}\n{ex.StackTrace}\n\n"); + File.AppendAllText(Directories.RunLogPath, $"ERROR rendering legal {lang}: {ex.Message}\n{ex.StackTrace}\n\n"); + } + } + } + + private static void BuildSitemap(BuildConfig cfg, string baseUrl, bool verbose) + { + var urls = new List<string>(); + foreach (var lang in cfg.LanguageCodes()) + { + urls.Add($"{baseUrl}/{lang}/"); + var contents = ContentLoader.LoadContent(Directories.ContentDir, lang); + foreach (var page in contents) + if (page.Meta.Render) urls.Add($"{baseUrl}{page.Href}"); + } + var sitemap = @"<?xml version=""1.0"" encoding=""UTF-8""?> +<urlset xmlns=""http://www.sitemaps.org/schemas/sitemap/0.9""> +{0} +</urlset>"; + var urlEntries = string.Join("\n", urls.Select(u => $" <url><loc>{u}</loc></url>")); + File.WriteAllText(Path.Combine(Directories.DistDir, "sitemap.xml"), string.Format(sitemap, urlEntries)); + if (verbose) Console.WriteLine(" Written sitemap.xml"); + } + + private static string GlossaryHref(string lang) + { + if (Directories.Config.Glossary.Href.TryGetValue(lang, out var h)) + return h.EndsWith(".html") ? h : h + ".html"; + return lang == "de" ? "glossar.html" : $"{Directories.Config.GlossarySection}.html"; + } + + private static string GlossaryLabel(string lang) + { + if (Directories.Config.Glossary.Label.TryGetValue(lang, out var l)) return l; + return lang == "de" ? "Glossar" : lang == "en" ? "Glossary" : "Bảng thuật ngữ"; + } + + private static void BuildSearchIndex(bool verbose) + { + try + { + var psi = new ProcessStartInfo + { + FileName = "npx", + Arguments = $"pagefind --site \"{Directories.DistDir}\"", + UseShellExecute = false, + RedirectStandardOutput = true, + RedirectStandardError = true, + CreateNoWindow = true + }; + using var proc = Process.Start(psi) + ?? throw new InvalidOperationException("Could not start npx."); + var sbOut = new StringBuilder(); + var sbErr = new StringBuilder(); + proc.OutputDataReceived += (_, e) => { if (e.Data != null) sbOut.AppendLine(e.Data); }; + proc.ErrorDataReceived += (_, e) => { if (e.Data != null) sbErr.AppendLine(e.Data); }; + proc.BeginOutputReadLine(); + proc.BeginErrorReadLine(); + proc.WaitForExit(); + File.AppendAllText(Directories.BuildLogPath, $" Pagefind (exit {proc.ExitCode}): {sbOut.ToString().Trim()}\n"); + if (proc.ExitCode != 0) + File.AppendAllText(Directories.BuildLogPath, $" Pagefind stderr: {sbErr.ToString().Trim()}\n"); + } + catch (Exception ex) + { + File.AppendAllText(Directories.BuildLogPath, $" Pagefind skipped (search index not built): {ex.Message}\n"); + } + } + + public static string HtmlEncode(string text) + { + if (string.IsNullOrEmpty(text)) return ""; + return text.Replace("&", "&").Replace("<", "<").Replace(">", ">").Replace("\"", """); + } + + private static string BuildRootIndex(BuildConfig cfg, string baseUrl) + { + var supportedArray = string.Join(",", cfg.LanguageCodes().Select(l => $"\"{l}\"")); + var defaultLang = cfg.DefaultLanguage; + var links = string.Join(" | ", cfg.LanguageCodes().Select(l => + { + var label = cfg.Languages.TryGetValue(l, out var li) ? (li.Label ?? li.Name) : l; + return $"<a href=\"/{l}/\">{label}</a>"; + })); + return $@"<!DOCTYPE html> +<html lang=""{defaultLang}""> +<head> +<meta charset=""UTF-8""> +<meta name=""viewport"" content=""width=device-width, initial-scale=1.0""> +<title>{HtmlEncode(cfg.Site.Name)} + + + + + +

Redirecting to {links}

+ +"; + } +} diff --git a/src/ContentLoader.cs b/src/ContentLoader.cs new file mode 100644 index 0000000..f654d16 --- /dev/null +++ b/src/ContentLoader.cs @@ -0,0 +1,108 @@ +using System.Text.RegularExpressions; +using YamlDotNet.Serialization; +using YamlDotNet.Serialization.NamingConventions; + +namespace GCBoK.WebStaticBuilder; + +/// Content loading and YAML frontmatter parsing. +public static class ContentLoader +{ + public static List LoadContent(string contentDir, string lang) + { + var results = new List(); + + foreach (var filepath in Directory.GetFiles(contentDir, "*.md", SearchOption.TopDirectoryOnly)) + { + var nameWithoutExt = Path.GetFileNameWithoutExtension(filepath); + + string? fileLang = null; + if (nameWithoutExt.Contains(".")) + { + var parts = nameWithoutExt.Split('.'); + if (parts.Length >= 2) + { + var lastPart = parts[^1].ToLowerInvariant(); + if (lastPart == "de" || lastPart == "en" || lastPart == "vi") + { + fileLang = lastPart; + if (fileLang != lang) continue; + } + else + { + continue; + } + } + } + + var text = File.ReadAllText(filepath); + var (meta, content) = ParseFrontmatter(text); + + var langs = meta.Langs ?? ""; + if (!string.IsNullOrEmpty(langs) && !langs.Split(',').Select(l => l.Trim()).Contains(lang)) + continue; + + if (fileLang == null && lang != "de") + { + var baseName = nameWithoutExt; + var langSpecificPath = Path.Combine(contentDir, $"{baseName}.{lang}.md"); + if (File.Exists(langSpecificPath)) + continue; + } + + results.Add(new PageInfo(filepath, meta, GetHref(meta), content)); + } + + return results.OrderBy(x => x.Meta.Order ?? 999).ToList(); + } + + public static (PageMeta Meta, string Content) ParseFrontmatter(string text) + { + var lines = text.Split('\n').ToList(); + + if (lines.Count < 2 || !lines[0].Trim().StartsWith("---")) + return (new PageMeta(), text); + + var yamlLines = new List(); + int i = 1; + while (i < lines.Count && lines[i].Trim() != "---") + { + yamlLines.Add(lines[i]); + i++; + } + + if (i < lines.Count) i++; + + var yamlText = string.Join("\n", yamlLines); + var content = string.Join("\n", lines.Skip(i)).Trim(); + + try + { + var deserializer = new DeserializerBuilder() + .WithNamingConvention(CamelCaseNamingConvention.Instance) + .IgnoreUnmatchedProperties() + .Build(); + var meta = deserializer.Deserialize(yamlText) ?? new PageMeta(); + return (meta, content); + } + catch (Exception ex) + { + Console.WriteLine($"Failed to parse frontmatter: {ex.Message}"); + return (new PageMeta(), text); + } + } + + public static string GetHref(PageMeta meta) + { + if (!string.IsNullOrEmpty(meta.Href)) + return meta.Href; + + var title = meta.Title ?? ""; + var slug = Regex.Replace( + title.ToLower(), @"[^a-z0-9äöüß\-]+", "-").Trim('-'); + + if (string.IsNullOrEmpty(slug)) + slug = "page"; + + return $"/{slug}/"; + } +} diff --git a/src/Directories.cs b/src/Directories.cs new file mode 100644 index 0000000..9331cc1 --- /dev/null +++ b/src/Directories.cs @@ -0,0 +1,37 @@ +namespace GCBoK.WebStaticBuilder; + +/// +/// Resolved filesystem paths for a build, derived from +/// relative to the site root. Generic — no longer tied to the GCBoK www/ layout. +/// +public static class Directories +{ + public static string Root { get; private set; } = AppContext.BaseDirectory; + public static string BuildDir { get; private set; } = AppContext.BaseDirectory; + + public static string ContentDir => Resolve(Config.Paths.Content); + public static string TemplateDir => Resolve(Config.Paths.Templates); + public static string AssetsDir => Resolve(Config.Paths.Assets); + public static string DistDir => Resolve(Config.Paths.Output); + public static string LegalDir => Resolve(Path.Combine(Config.Paths.Content, Config.Paths.Legal)); + public static string I18nFile => Resolve(Config.Paths.I18n); + + public static BuildConfig Config { get; private set; } = BuildConfig.Defaults(); + + private static string Resolve(string p) + { + if (Path.IsPathRooted(p)) return p; + return Path.GetFullPath(Path.Combine(Root, p)); + } + + /// Initialise paths for a build. + public static void Init(BuildConfig config, string rootDir) + { + Config = config; + Root = Path.GetFullPath(rootDir); + BuildDir = Root; + } + + public static string BuildLogPath => Path.Combine(BuildDir, "build_log.txt"); + public static string RunLogPath => Path.Combine(BuildDir, "run_log.txt"); +} diff --git a/src/I18n.cs b/src/I18n.cs new file mode 100644 index 0000000..914ea75 --- /dev/null +++ b/src/I18n.cs @@ -0,0 +1,67 @@ +using System.Text.Json; +using System.Text.Json.Nodes; +using System.Text.RegularExpressions; + +namespace GCBoK.WebStaticBuilder; + +/// +/// UI localization. Loads an i18n.json dictionary and substitutes +/// {{ i18n.<namespace>.<key> }} placeholders in templates. +/// Fallback language is English. Ported from the legacy i18n.py. +/// +public static class I18n +{ + private static JsonNode? _root; + private static readonly Regex Placeholder = + new(@"\{\{\s*i18n\.([\w.\-]+)\s*\}\}", RegexOptions.Compiled); + + public static void Load(string file) + { + _root = null; + if (!File.Exists(file)) return; + try + { + var json = File.ReadAllText(file); + _root = JsonNode.Parse(json); + } + catch (Exception ex) + { + Console.WriteLine($"WARNING: could not load i18n file '{file}': {ex.Message}"); + } + } + + public static bool Loaded => _root != null; + + /// Resolve a dotted key path for a language (fallback: English, then the key itself). + public static string Get(string lang, string keyPath) + { + var value = Resolve(lang, keyPath); + if (value != null) return value; + if (lang != "en") + { + value = Resolve("en", keyPath); + if (value != null) return value; + } + return keyPath; + } + + private static string? Resolve(string lang, string keyPath) + { + if (_root == null) return null; + JsonNode? node = _root[lang]; + if (node == null) return null; + foreach (var part in keyPath.Split('.')) + { + node = node[part]; + if (node == null) return null; + } + return node.GetValueKind() == JsonValueKind.String ? node.GetValue() : null; + } + + /// Replace all {{ i18n.* }} placeholders in a template for the given language. + public static string Substitute(string template, string lang) + { + if (_root == null) return template; + return Placeholder.Replace(template, m => Get(lang, m.Groups[1].Value)); + } +} diff --git a/src/MarkdownProcessor.cs b/src/MarkdownProcessor.cs new file mode 100644 index 0000000..5b22014 --- /dev/null +++ b/src/MarkdownProcessor.cs @@ -0,0 +1,45 @@ +using Markdig; +using System.Text.RegularExpressions; + +namespace GCBoK.WebStaticBuilder; + +/// Markdown processing with Markdig and post-processing. +public static class MarkdownProcessor +{ + private static readonly Lazy Pipeline = new(() => + new MarkdownPipelineBuilder().UseAdvancedExtensions().Build()); + + public static string RenderMarkdown(string content) + { + var pipeline = Pipeline.Value; + return Markdown.ToHtml(content, pipeline); + } + + public static string MermaidPostprocess(string html) + { + var pattern1 = @"
(.*?)
"; + var regex1 = new Regex(pattern1, RegexOptions.Singleline); + html = regex1.Replace(html, m => + { + var code = m.Groups[1].Value + .Replace("<", "<").Replace(">", ">").Replace("&", "&"); + return $"
{code}
"; + }); + + var pattern2 = @"
(.*?)
"; + var regex2 = new Regex(pattern2, RegexOptions.Singleline); + html = regex2.Replace(html, m => + { + var code = m.Groups[1].Value + .Replace("<", "<").Replace(">", ">").Replace("&", "&"); + return $"
{code}
"; + }); + + return html; + } + + public static string TablePostprocess(string html) + { + return html.Replace("", "
"); + } +} diff --git a/src/Model.cs b/src/Model.cs new file mode 100644 index 0000000..2588def --- /dev/null +++ b/src/Model.cs @@ -0,0 +1,61 @@ +using YamlDotNet.Serialization; + +namespace GCBoK.WebStaticBuilder; + +/// Metadata parsed from a Markdown file's YAML frontmatter. +public class PageMeta +{ + public string? Section { get; set; } + public int? Order { get; set; } + public string? Eyebrow { get; set; } + + public string? Title { get; set; } + public string? TitleDe { get; set; } + public string? TitleEn { get; set; } + public string? TitleVi { get; set; } + + public string? Description { get; set; } + public string? DescriptionDe { get; set; } + public string? DescriptionEn { get; set; } + public string? DescriptionVi { get; set; } + + public string? Href { get; set; } + public string? Langs { get; set; } + public bool Render { get; set; } = true; + public bool Navbar { get; set; } = true; + public string? Intro { get; set; } + public string? Positioning { get; set; } + public string? Publisher { get; set; } + public string? Anchor { get; set; } +} + +/// A loaded content page. +public record PageInfo(string Path, PageMeta Meta, string Href, string Content); + +/// Helpers to resolve language-specific metadata values. +public static class PageMetaExtensions +{ + public static string LocalizedTitle(this PageMeta meta, string lang, string fallback) + { + var v = lang.ToLowerInvariant() switch + { + "de" => meta.TitleDe ?? meta.Title, + "en" => meta.TitleEn ?? meta.Title, + "vi" => meta.TitleVi ?? meta.Title, + _ => meta.Title + }; + return string.IsNullOrEmpty(v) ? fallback : v; + } + + public static string LocalizedDescription(this PageMeta meta, string lang, string fallback) + { + var v = lang.ToLowerInvariant() switch + { + "de" => meta.DescriptionDe ?? meta.Description, + "en" => meta.DescriptionEn ?? meta.Description, + "vi" => meta.DescriptionVi ?? meta.Description, + _ => meta.Description + }; + return string.IsNullOrEmpty(v) ? fallback : v; + } +} diff --git a/src/Program.cs b/src/Program.cs new file mode 100644 index 0000000..3189b5c --- /dev/null +++ b/src/Program.cs @@ -0,0 +1,210 @@ +using System.Net; +using System.Text; +using GCBoK.WebStaticBuilder; + +var argsList = args.ToList(); + +bool Has(string f) => argsList.Contains(f) || argsList.Contains(f switch { "--verbose" => "-v", "--dry-run" => "-n", _ => f }); +string? Val(string f) +{ + var i = argsList.FindIndex(a => a == f); + return i >= 0 && i + 1 < argsList.Count ? argsList[i + 1] : null; +} + +var verbose = Has("--verbose") || Has("-v"); +var dryRun = Has("--dry-run") || Has("-n"); + +// Resolve config file + site root +var configPath = Val("--config"); +var root = Val("--root") ?? Directory.GetCurrentDirectory(); +if (!string.IsNullOrEmpty(configPath)) + root = Path.GetFullPath(Path.GetDirectoryName(Path.GetFullPath(configPath))!); + +var cfg = BuildConfig.Load(string.IsNullOrEmpty(configPath) ? Path.Combine(root, "webstatic.json") : configPath); + +// CLI overrides +if (Val("--content") is { } c) cfg.Paths.Content = c; +if (Val("--templates") is { } t) cfg.Paths.Templates = t; +if (Val("--assets") is { } a) cfg.Paths.Assets = a; +if (Val("--output") is { } o) cfg.Paths.Output = o; +if (Val("--default-lang") is { } dl) cfg.DefaultLanguage = dl; +if (Val("--langs") is { } langs) +{ + var wanted = langs.Split(',').Select(x => x.Trim()).Where(x => x.Length > 0).ToList(); + if (wanted.Count > 0) + { + var filtered = new Dictionary(); + foreach (var l in wanted) + if (cfg.Languages.TryGetValue(l, out var lc)) filtered[l] = lc; + else filtered[l] = new LanguageConfig { Name = l, OgLocale = $"{l}_{l.ToUpperInvariant()}" }; + cfg.Languages = filtered; + } +} +if (Val("--base-url") is { } bu) { /* applied to chosen env below */ } +if (Val("--cdn") is { } cdn) { /* applied to chosen env below */ } + +Directories.Init(cfg, root); + +// Subcommand: translate +if (argsList.Contains("translate")) +{ + if (Has("--draft")) + await TranslationService.GenerateDrafts(cfg); + else + await TranslationService.CheckMissing(cfg); + return; +} + +// Subcommand: serve +if (argsList.Contains("serve")) +{ + var port = int.TryParse(Val("--port"), out var p) ? p : 8000; + await ServeAsync(Directories.DistDir, port); + return; +} + +// Subcommand: init +if (argsList.Contains("init")) +{ + var nameIdx = argsList.IndexOf("init") + 1; + var siteName = nameIdx < argsList.Count ? argsList[nameIdx] : "mysite"; + InitSite(siteName, root); + return; +} + +// Build +var envName = "work"; +if (Has("--preview")) envName = "work"; +if (Has("--work")) envName = "work"; +if (Has("--review")) envName = "review"; +if (Has("--staging")) envName = "staging"; +if (Has("--deploy")) envName = "deploy"; +if (Val("--env") is { } ev) envName = ev; + +var env = cfg.Environments.TryGetValue(envName, out var e) + ? e + : new EnvironmentConfig { BaseUrl = "http://localhost:8000", Cdn = "/assets" }; + +if (Val("--base-url") is { } bu2) env.BaseUrl = bu2; +if (Val("--cdn") is { } cdn2) env.Cdn = cdn2; + +if (verbose) Console.WriteLine($"GCBoK.WebStaticBuilder — building (env={envName})"); +Builder.Build(cfg, env, envName, verbose, dryRun); +Console.WriteLine("Build completed successfully."); + +static string FindExampleDir() +{ + var candidates = new[] + { + Path.Combine(AppContext.BaseDirectory, "webstatic.example"), + Path.Combine(AppContext.BaseDirectory, "..", "..", "..", "webstatic.example"), + "/opt/GitCover/webstatic/webstatic.example", + }; + foreach (var c in candidates) + if (Directory.Exists(Path.GetFullPath(c))) return Path.GetFullPath(c); + return ""; +} + +static void InitSite(string name, string rootDir) +{ + var example = FindExampleDir(); + if (string.IsNullOrEmpty(example)) + { + Console.WriteLine("ERROR: webstatic.example template not found (expected next to the tool)."); + return; + } + var target = Path.Combine(rootDir, name); + if (Directory.Exists(target)) + { + Console.WriteLine($"ERROR: target '{target}' already exists."); + return; + } + CopyDir(example, target); + Console.WriteLine($"Initialized site scaffold at {target}"); + Console.WriteLine($"Next: cd {name} && webstatic build --env work"); +} + +static void CopyDir(string src, string dst) +{ + Directory.CreateDirectory(dst); + foreach (var dir in Directory.GetDirectories(src, "*", SearchOption.AllDirectories)) + Directory.CreateDirectory(dir.Replace(src, dst)); + foreach (var file in Directory.GetFiles(src, "*", SearchOption.AllDirectories)) + File.Copy(file, file.Replace(src, dst), true); +} + +static async Task ServeAsync(string distDir, int port) +{ + if (!Directory.Exists(distDir)) + { + Console.WriteLine($"ERROR: output directory '{distDir}' not found. Run a build first."); + return; + } + var prefix = $"http://localhost:{port}/"; + using var listener = new HttpListener(); + listener.Prefixes.Add(prefix); + listener.Start(); + Console.WriteLine($"Serving {distDir} at {prefix} (Ctrl+C to stop)"); + var cts = new CancellationTokenSource(); + Console.CancelKeyPress += (_, e) => { e.Cancel = true; cts.Cancel(); }; + + while (!cts.IsCancellationRequested) + { + var ctx = await listener.GetContextAsync(); + _ = Task.Run(async () => + { + try + { + var reqPath = Uri.UnescapeDataString(ctx.Request.Url!.LocalPath); + if (reqPath.EndsWith("/")) reqPath += "index.html"; + var file = Path.Combine(distDir, reqPath.TrimStart('/')); + if (!File.Exists(file)) + { + file = Path.Combine(distDir, reqPath.TrimStart('/') + "/index.html"); + if (!File.Exists(file)) file = Path.Combine(distDir, "404.html"); + } + if (File.Exists(file)) + { + var bytes = await File.ReadAllBytesAsync(file); + ctx.Response.ContentType = MimeType(file); + await ctx.Response.OutputStream.WriteAsync(bytes); + } + else + { + ctx.Response.StatusCode = 404; + } + } + catch (Exception ex) + { + ctx.Response.StatusCode = 500; + var msg = Encoding.UTF8.GetBytes(ex.Message); + await ctx.Response.OutputStream.WriteAsync(msg); + } + finally + { + ctx.Response.Close(); + } + }); + } + listener.Stop(); +} + +static string MimeType(string file) +{ + var ext = Path.GetExtension(file).ToLowerInvariant(); + return ext switch + { + ".html" => "text/html; charset=utf-8", + ".css" => "text/css; charset=utf-8", + ".js" => "text/javascript", + ".json" => "application/json", + ".svg" => "image/svg+xml", + ".png" => "image/png", + ".jpg" or ".jpeg" => "image/jpeg", + ".ico" => "image/x-icon", + ".webmanifest" => "application/manifest+json", + ".xml" => "application/xml", + ".txt" => "text/plain; charset=utf-8", + _ => "application/octet-stream", + }; +} diff --git a/src/SeoHelper.cs b/src/SeoHelper.cs new file mode 100644 index 0000000..225a16b --- /dev/null +++ b/src/SeoHelper.cs @@ -0,0 +1,54 @@ +using System.Text; + +namespace GCBoK.WebStaticBuilder; + +/// SEO header generation (title, meta, OpenGraph, Twitter, canonical, favicons). +public static class SeoHelper +{ + public static string RenderSeoHead(string lang, string title, string description, + string canonicalUrl, string cdnAssets, string defaultTitle, string defaultDescription) + { + var ogTitle = Localized(title, defaultTitle); + var ogDescription = Localized(description, defaultDescription); + + var ogLocale = Directories.Config.Languages.TryGetValue(lang, out var li) + ? li.OgLocale : "de_DE"; + + var cdn = cdnAssets.TrimEnd('/'); + + return $@" + +{HtmlEncode(ogTitle)} + + + + + + + + + + + + + + + + + +"; + } + + private static string Localized(string value, string fallback) + => string.IsNullOrEmpty(value) ? fallback : value; + + public static string HtmlEncode(string text) + { + if (string.IsNullOrEmpty(text)) return ""; + return text.Replace("&", "&") + .Replace("<", "<") + .Replace(">", ">") + .Replace("\"", """) + .Replace("'", "'"); + } +} diff --git a/src/Translation/ITranslator.cs b/src/Translation/ITranslator.cs new file mode 100644 index 0000000..d7781a7 --- /dev/null +++ b/src/Translation/ITranslator.cs @@ -0,0 +1,8 @@ +namespace GCBoK.WebStaticBuilder; + +/// Machine-translation provider (optional, requires an API key via environment). +public interface ITranslator +{ + /// Translate text from the site default language into . + Task TranslateAsync(string text, string targetLang); +} diff --git a/src/Translation/TranslationService.cs b/src/Translation/TranslationService.cs new file mode 100644 index 0000000..454ad62 --- /dev/null +++ b/src/Translation/TranslationService.cs @@ -0,0 +1,174 @@ +using System.Net.Http.Headers; +using System.Net.Http.Json; +using System.Text; +using System.Text.Json; + +namespace GCBoK.WebStaticBuilder; + +/// +/// Machine-translation helper. Talks to Azure Translator or DeepL over REST +/// (no extra NuGet packages). Keys are read from an environment variable. +/// Drafts are written to .translation-drafts/ and never overwrite source. +/// +public static class TranslationService +{ + public static ITranslator? Create(BuildConfig cfg) + { + var t = cfg.Translator; + var key = t.KeyEnv != null ? Environment.GetEnvironmentVariable(t.KeyEnv) : null; + if (string.IsNullOrEmpty(key)) + { + Console.WriteLine($"No translator key found in environment '{t.KeyEnv}' — translation skipped."); + return null; + } + + return t.Provider.ToLowerInvariant() switch + { + "deepl" => new DeeplTranslator(key, t.Endpoint), + _ => new AzureTranslator(key, t.Endpoint, t.Region), + }; + } + + public static async Task CheckMissing(BuildConfig cfg) + { + var root = Directories.ContentDir; + var langs = cfg.LanguageCodes().Where(l => l != cfg.DefaultLanguage).ToList(); + var files = Directory.GetFiles(root, "*.md", SearchOption.TopDirectoryOnly); + var missing = new List<(string File, string Lang)>(); + foreach (var f in files) + { + var name = Path.GetFileNameWithoutExtension(f); + if (name.Contains('.')) continue; // skip already language-specific + foreach (var lang in langs) + { + if (!File.Exists(Path.Combine(root, $"{name}.{lang}.md"))) + missing.Add((Path.GetFileName(f), lang)); + } + } + if (missing.Count == 0) + { + Console.WriteLine("All languages have content files. Nothing missing."); + return; + } + Console.WriteLine($"Missing translations ({missing.Count}):"); + foreach (var (file, lang) in missing) + Console.WriteLine($" [{lang}] {file}"); + } + + public static async Task GenerateDrafts(BuildConfig cfg) + { + var translator = Create(cfg); + if (translator == null) return; + + var root = Directories.ContentDir; + var draftRoot = Path.Combine(Directories.Root, ".translation-drafts"); + var langs = cfg.LanguageCodes().Where(l => l != cfg.DefaultLanguage).ToList(); + var files = Directory.GetFiles(root, "*.md", SearchOption.TopDirectoryOnly); + var count = 0; + + foreach (var f in files) + { + var name = Path.GetFileNameWithoutExtension(f); + if (name.Contains('.')) continue; + var (meta, body) = ContentLoader.ParseFrontmatter(File.ReadAllText(f)); + foreach (var lang in langs) + { + var targetFile = Path.Combine(draftRoot, lang, $"{name}.{lang}.md"); + if (File.Exists(Path.Combine(root, $"{name}.{lang}.md"))) continue; // already exists + if (File.Exists(targetFile)) continue; // draft already there + + var tTitle = await translator.TranslateAsync(meta.Title ?? "", lang); + var tDesc = await translator.TranslateAsync(meta.Description ?? "", lang); + var tEyebrow = await translator.TranslateAsync(meta.Eyebrow ?? "", lang); + var tBody = await translator.TranslateAsync(body, lang); + + var sb = new StringBuilder(); + sb.AppendLine("---"); + sb.AppendLine($"section: {meta.Section}"); + sb.AppendLine($"order: {meta.Order}"); + sb.AppendLine($"eyebrow: \"{tEyebrow}\""); + sb.AppendLine($"title: \"{tTitle}\""); + sb.AppendLine($"description: \"{tDesc}\""); + sb.AppendLine($"href: {meta.Href}"); + sb.AppendLine($"render: {meta.Render.ToString().ToLowerInvariant()}"); + sb.AppendLine($"navbar: {meta.Navbar.ToString().ToLowerInvariant()}"); + sb.AppendLine("---"); + sb.AppendLine(); + sb.AppendLine($""); + sb.AppendLine(tBody); + + Directory.CreateDirectory(Path.GetDirectoryName(targetFile)!); + File.WriteAllText(targetFile, sb.ToString()); + count++; + Console.WriteLine($" Draft -> {Path.GetRelativePath(Directories.Root, targetFile)}"); + } + } + Console.WriteLine($"Generated {count} translation draft(s) in {draftRoot}"); + } +} + +/// Azure Translator (Text Translation API) REST client. +public class AzureTranslator : ITranslator +{ + private readonly HttpClient _http = new(); + private readonly string _key; + private readonly string? _endpoint; + private readonly string? _region; + + public AzureTranslator(string key, string? endpoint, string? region) + { + _key = key; + _endpoint = string.IsNullOrEmpty(endpoint) ? "https://api.cognitive.microsofttranslator.com" : endpoint; + _region = region; + _http.Timeout = TimeSpan.FromSeconds(30); + } + + public async Task TranslateAsync(string text, string targetLang) + { + if (string.IsNullOrWhiteSpace(text)) return text; + var url = $"{_endpoint!.TrimEnd('/')}/translate?api-version=3.0&to={targetLang}"; + using var req = new HttpRequestMessage(HttpMethod.Post, url); + req.Headers.Add("Ocp-Apim-Subscription-Key", _key); + if (!string.IsNullOrEmpty(_region)) req.Headers.Add("Ocp-Apim-Subscription-Region", _region); + req.Content = new StringContent(JsonSerializer.Serialize(new[] { new { Text = text } }), + Encoding.UTF8, "application/json"); + using var resp = await _http.SendAsync(req); + resp.EnsureSuccessStatusCode(); + var doc = await resp.Content.ReadFromJsonAsync(); + var translated = doc[0].GetProperty("translations")[0].GetProperty("text").GetString(); + return translated ?? text; + } +} + +/// DeepL REST client. +public class DeeplTranslator : ITranslator +{ + private readonly HttpClient _http = new(); + private readonly string _key; + private readonly string _endpoint; + + public DeeplTranslator(string key, string? endpoint) + { + _key = key; + _endpoint = string.IsNullOrEmpty(endpoint) ? "https://api-free.deepl.com/v2" : endpoint.TrimEnd('/'); + _http.Timeout = TimeSpan.FromSeconds(30); + } + + public async Task TranslateAsync(string text, string targetLang) + { + if (string.IsNullOrWhiteSpace(text)) return text; + var target = targetLang.ToUpperInvariant(); + var content = new FormUrlEncodedContent(new Dictionary + { + ["text"] = text, + ["target_lang"] = target, + }); + using var req = new HttpRequestMessage(HttpMethod.Post, $"{_endpoint}/translate") { Content = content }; + req.Headers.Authorization = new AuthenticationHeaderValue("DeepL-Auth-Key", _key); + using var resp = await _http.SendAsync(req); + resp.EnsureSuccessStatusCode(); + var doc = await resp.Content.ReadFromJsonAsync(); + var translated = doc.GetProperty("translations")[0].GetProperty("text").GetString(); + return translated ?? text; + } +} diff --git a/webstatic.example/assets/css/main.css b/webstatic.example/assets/css/main.css new file mode 100644 index 0000000..a00b644 --- /dev/null +++ b/webstatic.example/assets/css/main.css @@ -0,0 +1,12 @@ +:root { color-scheme: light dark; } +body { font-family: system-ui, sans-serif; margin: 0; color: #1a1a1a; } +.container { max-width: 760px; margin: 0 auto; padding: 1.5rem; } +.skip-link { position: absolute; left: -999px; } +.skip-link:focus { left: 1rem; top: 1rem; background: #0b5fff; color: #fff; padding: .5rem; } +.site-header { display: flex; gap: 1rem; align-items: center; padding: .75rem 1.5rem; border-bottom: 1px solid #ddd; } +.site-nav { display: flex; gap: 1rem; } +.brand { font-weight: 700; text-decoration: none; color: #0b5fff; } +.lang-dropdown__menu { list-style: none; display: flex; gap: .5rem; } +.site-footer { border-top: 1px solid #ddd; padding: 1.5rem; margin-top: 2rem; color: #555; } +.muted { color: #777; } +.page-nav { display: flex; justify-content: space-between; margin-top: 2rem; } diff --git a/webstatic.example/assets/favicon/favicon.svg b/webstatic.example/assets/favicon/favicon.svg new file mode 100644 index 0000000..6bc2416 --- /dev/null +++ b/webstatic.example/assets/favicon/favicon.svg @@ -0,0 +1 @@ +G diff --git a/webstatic.example/assets/favicon/site.webmanifest b/webstatic.example/assets/favicon/site.webmanifest new file mode 100644 index 0000000..523056f --- /dev/null +++ b/webstatic.example/assets/favicon/site.webmanifest @@ -0,0 +1,9 @@ +{ + "name": "Meine Website", + "short_name": "Website", + "icons": [ + { "src": "/assets/favicon/favicon.svg", "sizes": "any", "type": "image/svg+xml" } + ], + "start_url": "/", + "display": "standalone" +} diff --git a/webstatic.example/assets/js/gcbok-theme.js b/webstatic.example/assets/js/gcbok-theme.js new file mode 100644 index 0000000..9d47516 --- /dev/null +++ b/webstatic.example/assets/js/gcbok-theme.js @@ -0,0 +1,12 @@ +// GCBoK.WebStaticBuilder example theme script. +(function () { + var t = localStorage.getItem('gc-theme') || 'light'; + document.documentElement.setAttribute('data-theme', t); + var btn = document.getElementById('themeToggle'); + if (btn) btn.addEventListener('click', function () { + var cur = document.documentElement.getAttribute('data-theme'); + var next = cur === 'light' ? 'dark' : 'light'; + document.documentElement.setAttribute('data-theme', next); + localStorage.setItem('gc-theme', next); + }); +})(); diff --git a/webstatic.example/build_log.txt b/webstatic.example/build_log.txt new file mode 100644 index 0000000..3357f88 --- /dev/null +++ b/webstatic.example/build_log.txt @@ -0,0 +1,34 @@ +=== Build Started: 2026-07-11 12:00:07.845 === +ENV: work +BASE_URL: http://localhost:8000 +CDN_ASSETS: /assets +ROOT: /mnt/brx5/work/OSS/build_webstatic/webstatic.example + + Assets copied to: /mnt/brx5/work/OSS/build_webstatic/webstatic.example/dist/assets + Legal: /mnt/brx5/work/OSS/build_webstatic/webstatic.example/dist/de/impressum.html + Legal: /mnt/brx5/work/OSS/build_webstatic/webstatic.example/dist/en/impressum.html + Legal: /mnt/brx5/work/OSS/build_webstatic/webstatic.example/dist/vi/impressum.html + Pagefind (exit 0): Running Pagefind v1.5.2 (Extended) +Running from: "/mnt/brx5/work/OSS/build_webstatic/webstatic.example" +Source: "dist" +Output: "dist/pagefind" + +[Walking source directory] +Found 10 files matching **/*.{html} + +[Parsing files] +Found a data-pagefind-body element on the site. +↳ Ignoring pages without this tag. + +[Reading languages] +Discovered 3 languages: vi, en, de + +[Building search indexes] +Total: + Indexed 3 languages + Indexed 9 pages + Indexed 337 words + Indexed 0 filters + Indexed 0 sorts + +Finished in 0.036 seconds diff --git a/webstatic.example/content/01-hero.md b/webstatic.example/content/01-hero.md new file mode 100644 index 0000000..d764f80 --- /dev/null +++ b/webstatic.example/content/01-hero.md @@ -0,0 +1,14 @@ +--- +section: hero +order: 0 +title: "Banner" +eyebrow: "Beispiel" +description: "Banner-Block für die Startseite" +href: / +render: true +navbar: false +--- + +# Willkommen bei GCBoK.WebStaticBuilder + +Dies ist der Banner-Block (order 0), der auf der Startseite (Hero/Landing) eingebettet wird. diff --git a/webstatic.example/content/02-start.md b/webstatic.example/content/02-start.md new file mode 100644 index 0000000..9f3d49c --- /dev/null +++ b/webstatic.example/content/02-start.md @@ -0,0 +1,27 @@ +--- +section: start +order: 1 +eyebrow: "Startseite" +title: "Startseite" +description: "Die Landing-Page dieser Beispiel-Website" +href: / +render: true +navbar: true +--- + +## Einführung + +Diese Seite wurde mit **GCBoK.WebStaticBuilder** erzeugt — einem statischen, mehrsprachigen +Generator für compliance-freundliche Websites (MIT, OSS). + +## Funktionen + +- Markdown mit YAML-Frontmatter +- Mehrsprachigkeit (de / en / vi) +- SEO-Kopf, Sitemap, robots.txt +- Client-Suche via Pagefind +- UI-Lokalisierung über `{{ i18n.* }}` + +## Nächste Schritte + +Siehe `docs/` im Repository für die Einrichtung. diff --git a/webstatic.example/content/03-about.md b/webstatic.example/content/03-about.md new file mode 100644 index 0000000..26886ad --- /dev/null +++ b/webstatic.example/content/03-about.md @@ -0,0 +1,22 @@ +--- +section: about +order: 2 +eyebrow: "Über" +title: "Über das Projekt" +description: "Hintergrund zum Beispiel-Projekt" +href: /ueber/ +render: true +navbar: true +--- + +## Über + +GCBoK.WebStaticBuilder ist ein eigenständiges OSS-Tool der GitCover Commons. +Es erzeugt statische Websites ohne Server, Datenbank oder Build-Service. + +```mermaid +graph TD + A[Markdown] --> B(Builder) + B --> C[HTML] + C --> D[Pagefind Index] +``` diff --git a/webstatic.example/content/legal/impressum.md b/webstatic.example/content/legal/impressum.md new file mode 100644 index 0000000..035592e --- /dev/null +++ b/webstatic.example/content/legal/impressum.md @@ -0,0 +1,16 @@ +--- +section: legal +order: 10 +eyebrow: "Rechtliches" +title: "Impressum" +description: "Impressum der Beispiel-Website" +href: /impressum/ +render: true +navbar: false +--- + +## Impressum + +Beispiel-Website · Ansprechpartner: webmaster@example.org + +© 2026 Beispiel-Website. Erstellt mit GCBoK.WebStaticBuilder (MIT). diff --git a/webstatic.example/dist/assets/css/main.css b/webstatic.example/dist/assets/css/main.css new file mode 100644 index 0000000..a00b644 --- /dev/null +++ b/webstatic.example/dist/assets/css/main.css @@ -0,0 +1,12 @@ +:root { color-scheme: light dark; } +body { font-family: system-ui, sans-serif; margin: 0; color: #1a1a1a; } +.container { max-width: 760px; margin: 0 auto; padding: 1.5rem; } +.skip-link { position: absolute; left: -999px; } +.skip-link:focus { left: 1rem; top: 1rem; background: #0b5fff; color: #fff; padding: .5rem; } +.site-header { display: flex; gap: 1rem; align-items: center; padding: .75rem 1.5rem; border-bottom: 1px solid #ddd; } +.site-nav { display: flex; gap: 1rem; } +.brand { font-weight: 700; text-decoration: none; color: #0b5fff; } +.lang-dropdown__menu { list-style: none; display: flex; gap: .5rem; } +.site-footer { border-top: 1px solid #ddd; padding: 1.5rem; margin-top: 2rem; color: #555; } +.muted { color: #777; } +.page-nav { display: flex; justify-content: space-between; margin-top: 2rem; } diff --git a/webstatic.example/dist/assets/favicon/favicon.svg b/webstatic.example/dist/assets/favicon/favicon.svg new file mode 100644 index 0000000..6bc2416 --- /dev/null +++ b/webstatic.example/dist/assets/favicon/favicon.svg @@ -0,0 +1 @@ +G diff --git a/webstatic.example/dist/assets/favicon/site.webmanifest b/webstatic.example/dist/assets/favicon/site.webmanifest new file mode 100644 index 0000000..523056f --- /dev/null +++ b/webstatic.example/dist/assets/favicon/site.webmanifest @@ -0,0 +1,9 @@ +{ + "name": "Meine Website", + "short_name": "Website", + "icons": [ + { "src": "/assets/favicon/favicon.svg", "sizes": "any", "type": "image/svg+xml" } + ], + "start_url": "/", + "display": "standalone" +} diff --git a/webstatic.example/dist/assets/js/gcbok-theme.js b/webstatic.example/dist/assets/js/gcbok-theme.js new file mode 100644 index 0000000..9d47516 --- /dev/null +++ b/webstatic.example/dist/assets/js/gcbok-theme.js @@ -0,0 +1,12 @@ +// GCBoK.WebStaticBuilder example theme script. +(function () { + var t = localStorage.getItem('gc-theme') || 'light'; + document.documentElement.setAttribute('data-theme', t); + var btn = document.getElementById('themeToggle'); + if (btn) btn.addEventListener('click', function () { + var cur = document.documentElement.getAttribute('data-theme'); + var next = cur === 'light' ? 'dark' : 'light'; + document.documentElement.setAttribute('data-theme', next); + localStorage.setItem('gc-theme', next); + }); +})(); diff --git a/webstatic.example/dist/de/impressum.html b/webstatic.example/dist/de/impressum.html new file mode 100644 index 0000000..31da39a --- /dev/null +++ b/webstatic.example/dist/de/impressum.html @@ -0,0 +1,73 @@ + + + + + + + +Impressum + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+

Impressum

+

Beispiel-Website · Ansprechpartner: webmaster@example.org

+

© 2026 Beispiel-Website. Erstellt mit GCBoK.WebStaticBuilder (MIT).

+ + +
+
+ +
+
+

MEINE WEBSITE

+

Ein Beispiel für GCBoK.WebStaticBuilder

+ +

© 2026 Meine Website

+
+
+ + + + diff --git a/webstatic.example/dist/de/index.html b/webstatic.example/dist/de/index.html new file mode 100644 index 0000000..16e59df --- /dev/null +++ b/webstatic.example/dist/de/index.html @@ -0,0 +1,85 @@ + + + + + + + +Startseite + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+

Willkommen bei GCBoK.WebStaticBuilder

+

Dies ist der Banner-Block (order 0), der auf der Startseite (Hero/Landing) eingebettet wird.

+

Einführung

+

Diese Seite wurde mit GCBoK.WebStaticBuilder erzeugt — einem statischen, mehrsprachigen +Generator für compliance-freundliche Websites (MIT, OSS).

+

Funktionen

+
    +
  • Markdown mit YAML-Frontmatter
  • +
  • Mehrsprachigkeit (de / en / vi)
  • +
  • SEO-Kopf, Sitemap, robots.txt
  • +
  • Client-Suche via Pagefind
  • +
  • UI-Lokalisierung über {{ i18n.* }}
  • +
+

Nächste Schritte

+

Siehe docs/ im Repository für die Einrichtung.

+ + +
+
+ +
+
+

MEINE WEBSITE

+

Ein Beispiel für GCBoK.WebStaticBuilder

+ +

© 2026 Meine Website

+
+
+ + + + diff --git a/webstatic.example/dist/de/ueber.html b/webstatic.example/dist/de/ueber.html new file mode 100644 index 0000000..a579a20 --- /dev/null +++ b/webstatic.example/dist/de/ueber.html @@ -0,0 +1,81 @@ + + + + + + + +Über das Projekt + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+

Über

+

GCBoK.WebStaticBuilder ist ein eigenständiges OSS-Tool der GitCover Commons. +Es erzeugt statische Websites ohne Server, Datenbank oder Build-Service.

+
graph TD + A[Markdown] --> B(Builder) + B --> C[HTML] + C --> D[Pagefind Index] +
+ + +
+
+ +
+
+

MEINE WEBSITE

+

Ein Beispiel für GCBoK.WebStaticBuilder

+ +

© 2026 Meine Website

+
+
+ + + + diff --git a/webstatic.example/dist/en/impressum.html b/webstatic.example/dist/en/impressum.html new file mode 100644 index 0000000..c6bbcda --- /dev/null +++ b/webstatic.example/dist/en/impressum.html @@ -0,0 +1,73 @@ + + + + + + + +Impressum + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+

Impressum

+

Beispiel-Website · Ansprechpartner: webmaster@example.org

+

© 2026 Beispiel-Website. Erstellt mit GCBoK.WebStaticBuilder (MIT).

+ + +
+
+ +
+
+

MY WEBSITE

+

An example for GCBoK.WebStaticBuilder

+ +

© 2026 My Website

+
+
+ + + + diff --git a/webstatic.example/dist/en/index.html b/webstatic.example/dist/en/index.html new file mode 100644 index 0000000..29b4e49 --- /dev/null +++ b/webstatic.example/dist/en/index.html @@ -0,0 +1,85 @@ + + + + + + + +Startseite + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+

Willkommen bei GCBoK.WebStaticBuilder

+

Dies ist der Banner-Block (order 0), der auf der Startseite (Hero/Landing) eingebettet wird.

+

Einführung

+

Diese Seite wurde mit GCBoK.WebStaticBuilder erzeugt — einem statischen, mehrsprachigen +Generator für compliance-freundliche Websites (MIT, OSS).

+

Funktionen

+
    +
  • Markdown mit YAML-Frontmatter
  • +
  • Mehrsprachigkeit (de / en / vi)
  • +
  • SEO-Kopf, Sitemap, robots.txt
  • +
  • Client-Suche via Pagefind
  • +
  • UI-Lokalisierung über {{ i18n.* }}
  • +
+

Nächste Schritte

+

Siehe docs/ im Repository für die Einrichtung.

+ + +
+
+ +
+
+

MY WEBSITE

+

An example for GCBoK.WebStaticBuilder

+ +

© 2026 My Website

+
+
+ + + + diff --git a/webstatic.example/dist/en/ueber.html b/webstatic.example/dist/en/ueber.html new file mode 100644 index 0000000..0015bc5 --- /dev/null +++ b/webstatic.example/dist/en/ueber.html @@ -0,0 +1,81 @@ + + + + + + + +Über das Projekt + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+

Über

+

GCBoK.WebStaticBuilder ist ein eigenständiges OSS-Tool der GitCover Commons. +Es erzeugt statische Websites ohne Server, Datenbank oder Build-Service.

+
graph TD + A[Markdown] --> B(Builder) + B --> C[HTML] + C --> D[Pagefind Index] +
+ + +
+
+ +
+
+

MY WEBSITE

+

An example for GCBoK.WebStaticBuilder

+ +

© 2026 My Website

+
+
+ + + + diff --git a/webstatic.example/dist/index.html b/webstatic.example/dist/index.html new file mode 100644 index 0000000..1f5693e --- /dev/null +++ b/webstatic.example/dist/index.html @@ -0,0 +1,30 @@ + + + + + +Meine Website + + + + + +

Redirecting to Deutsch | English | Tiếng Việt

+ + \ No newline at end of file diff --git a/webstatic.example/dist/pagefind/fragment/de_6e4775b.pf_fragment b/webstatic.example/dist/pagefind/fragment/de_6e4775b.pf_fragment new file mode 100644 index 0000000..87f4a58 Binary files /dev/null and b/webstatic.example/dist/pagefind/fragment/de_6e4775b.pf_fragment differ diff --git a/webstatic.example/dist/pagefind/fragment/de_86124f5.pf_fragment b/webstatic.example/dist/pagefind/fragment/de_86124f5.pf_fragment new file mode 100644 index 0000000..0cc52b3 Binary files /dev/null and b/webstatic.example/dist/pagefind/fragment/de_86124f5.pf_fragment differ diff --git a/webstatic.example/dist/pagefind/fragment/de_94a537a.pf_fragment b/webstatic.example/dist/pagefind/fragment/de_94a537a.pf_fragment new file mode 100644 index 0000000..035e484 Binary files /dev/null and b/webstatic.example/dist/pagefind/fragment/de_94a537a.pf_fragment differ diff --git a/webstatic.example/dist/pagefind/fragment/en_7bd8576.pf_fragment b/webstatic.example/dist/pagefind/fragment/en_7bd8576.pf_fragment new file mode 100644 index 0000000..49e605b Binary files /dev/null and b/webstatic.example/dist/pagefind/fragment/en_7bd8576.pf_fragment differ diff --git a/webstatic.example/dist/pagefind/fragment/en_a0ddc8b.pf_fragment b/webstatic.example/dist/pagefind/fragment/en_a0ddc8b.pf_fragment new file mode 100644 index 0000000..185667f Binary files /dev/null and b/webstatic.example/dist/pagefind/fragment/en_a0ddc8b.pf_fragment differ diff --git a/webstatic.example/dist/pagefind/fragment/en_fac1949.pf_fragment b/webstatic.example/dist/pagefind/fragment/en_fac1949.pf_fragment new file mode 100644 index 0000000..4d1d19e Binary files /dev/null and b/webstatic.example/dist/pagefind/fragment/en_fac1949.pf_fragment differ diff --git a/webstatic.example/dist/pagefind/fragment/vi_2c6f19e.pf_fragment b/webstatic.example/dist/pagefind/fragment/vi_2c6f19e.pf_fragment new file mode 100644 index 0000000..40bf33f Binary files /dev/null and b/webstatic.example/dist/pagefind/fragment/vi_2c6f19e.pf_fragment differ diff --git a/webstatic.example/dist/pagefind/fragment/vi_45e2b89.pf_fragment b/webstatic.example/dist/pagefind/fragment/vi_45e2b89.pf_fragment new file mode 100644 index 0000000..6c9ca61 Binary files /dev/null and b/webstatic.example/dist/pagefind/fragment/vi_45e2b89.pf_fragment differ diff --git a/webstatic.example/dist/pagefind/fragment/vi_de64bb4.pf_fragment b/webstatic.example/dist/pagefind/fragment/vi_de64bb4.pf_fragment new file mode 100644 index 0000000..467a3aa Binary files /dev/null and b/webstatic.example/dist/pagefind/fragment/vi_de64bb4.pf_fragment differ diff --git a/webstatic.example/dist/pagefind/index/de_cae4485.pf_index b/webstatic.example/dist/pagefind/index/de_cae4485.pf_index new file mode 100644 index 0000000..dd628db Binary files /dev/null and b/webstatic.example/dist/pagefind/index/de_cae4485.pf_index differ diff --git a/webstatic.example/dist/pagefind/index/en_b4dd925.pf_index b/webstatic.example/dist/pagefind/index/en_b4dd925.pf_index new file mode 100644 index 0000000..48df2bd Binary files /dev/null and b/webstatic.example/dist/pagefind/index/en_b4dd925.pf_index differ diff --git a/webstatic.example/dist/pagefind/index/vi_1d2975b.pf_index b/webstatic.example/dist/pagefind/index/vi_1d2975b.pf_index new file mode 100644 index 0000000..ddbc876 Binary files /dev/null and b/webstatic.example/dist/pagefind/index/vi_1d2975b.pf_index differ diff --git a/webstatic.example/dist/pagefind/pagefind-component-ui.css b/webstatic.example/dist/pagefind/pagefind-component-ui.css new file mode 100644 index 0000000..3362fe0 --- /dev/null +++ b/webstatic.example/dist/pagefind/pagefind-component-ui.css @@ -0,0 +1,1509 @@ +/* + * Why all the :is(*, #\#) prefixes? + * + * These components are embedded in who-knows-what sites with unpredictable CSS. + * We need our styles to win against host page selectors like `.content p` or + * `article a:hover` without using !important everywhere. + * + * The :is(*, #\#) trick adds ID-level specificity (0,1,0) without requiring + * an actual ID in the DOM. Chaining it (2x or 3x) builds enough specificity + * to beat most host selectors. + * + * The #\# is an escaped # character, creating an invalid-but-harmless ID + * selector that never matches, but still contributes specificity via :is(). + * + * We also need these overrides to only affect the Component UI elements themselves. + * Users can provide custom templates to the results and searchbox components, + * and these must inherit their styles without having to fight ours. + * + * It's admittedly a bit of a hack but it does provide best effort styling consistency + * for the Component UI out in the wild. + */ + +:root { + --pf-text: #1a1a1a; + --pf-text-secondary: #666; + --pf-text-muted: #767676; + --pf-background: #fff; + --pf-border: #e0e0e0; + --pf-border-focus: #999; + --pf-skeleton: #eee; + --pf-skeleton-shine: #f5f5f5; + --pf-hover: #f5f5f5; + --pf-mark: #1a1a1a; + --pf-scroll-shadow: rgba(0, 0, 0, 0.08); + + --pf-shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.06); + --pf-shadow-md: 0 4px 12px rgba(0, 0, 0, 0.1); + --pf-shadow-lg: 0 16px 48px rgba(0, 0, 0, 0.2); + + --pf-error-bg: #fef2f2; + --pf-error-border: #fecaca; + --pf-error-text: #dc2626; + --pf-error-text-secondary: #b91c1c; + + --pf-outline-focus: #0969da; + --pf-outline-width: 2px; + --pf-outline-offset: 2px; + + --pf-font: + -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, + sans-serif; + + --pf-input-height: 36px; + --pf-input-font-size: 16px; + --pf-summary-font-size: 12px; + --pf-result-title-font-size: 14px; + --pf-result-excerpt-font-size: 13px; + --pf-modal-backdrop: rgba(0, 0, 0, 0.5); + --pf-results-display: flex; + --pf-results-flex-direction: column; + --pf-results-flex-wrap: nowrap; + --pf-results-columns: none; + --pf-results-gap: 8px; + + --pf-border-radius: 6px; + --pf-image-width: 64px; + --pf-image-height: 48px; + + --pf-icon-search: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.7549 11.255H11.9649L11.6849 10.985C12.6649 9.845 13.2549 8.365 13.2549 6.755C13.2549 3.165 10.3449 0.255005 6.75488 0.255005C3.16488 0.255005 0.254883 3.165 0.254883 6.755C0.254883 10.345 3.16488 13.255 6.75488 13.255C8.36488 13.255 9.84488 12.665 10.9849 11.685L11.2549 11.965V12.755L16.2549 17.745L17.7449 16.255L12.7549 11.255ZM6.75488 11.255C4.26488 11.255 2.25488 9.245 2.25488 6.755C2.25488 4.26501 4.26488 2.255 6.75488 2.255C9.24488 2.255 11.2549 4.26501 11.2549 6.755C11.2549 9.245 9.24488 11.255 6.75488 11.255Z' fill='%23000000'/%3E%3C/svg%3E%0A"); + --pf-icon-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%23000' stroke-width='1.5' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); + + --pf-dropdown-z-index: 9999; + + --pf-modal-max-width: 560px; + --pf-modal-max-height: min(80dvh, 800px); + --pf-modal-top: 10dvh; + + --pf-searchbox-max-width: 480px; + --pf-searchbox-dropdown-max-height: 320px; + + --pf-dropdown-max-height: 280px; +} + +[data-pf-theme="dark"] { + --pf-text: #e5e5e5; + --pf-text-secondary: #a0a0a0; + --pf-text-muted: #949494; + --pf-background: #1a1a1a; + --pf-border: #333; + --pf-border-focus: #555; + --pf-skeleton: #2a2a2a; + --pf-skeleton-shine: #333; + --pf-hover: #252525; + --pf-mark: #e5e5e5; + --pf-scroll-shadow: rgba(255, 255, 255, 0.1); + + --pf-outline-focus: #58a6ff; + + --pf-shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.3); + --pf-shadow-md: 0 4px 12px rgba(0, 0, 0, 0.4); + --pf-shadow-lg: 0 16px 48px rgba(0, 0, 0, 0.5); + + --pf-error-bg: #2a1a1a; + --pf-error-border: #5c2828; + --pf-error-text: #f87171; + --pf-error-text-secondary: #ef4444; + + --pf-modal-backdrop: rgba(0, 0, 0, 0.7); +} + +pagefind-config, +pagefind-filter-dropdown, +pagefind-filter-pane, +pagefind-input, +pagefind-keyboard-hints, +pagefind-modal, +pagefind-modal-body, +pagefind-modal-footer, +pagefind-modal-header, +pagefind-modal-trigger, +pagefind-results, +pagefind-searchbox, +pagefind-summary { + all: initial; + display: block; + box-sizing: border-box; + + /* Typography baseline */ + font-family: + var(--pf-font, + system-ui, + -apple-system, + BlinkMacSystemFont, + "Segoe UI", + Roboto, + sans-serif); + font-size: 16px; + line-height: 1.5; + color: CanvasText; + contain: layout style; +} + +pagefind-searchbox, +pagefind-filter-dropdown { + position: relative; +} + +pagefind-searchbox:has(.pf-searchbox.open), +pagefind-filter-dropdown:has(.pf-dropdown-trigger.open) { + z-index: var(--pf-dropdown-z-index); +} + +pagefind-config { + display: none; +} + +pagefind-modal-trigger { + display: inline-block; +} + +:is(*, #\#):is(*, #\#) :is([class^="pf-"], [class*=" pf-"]):not(svg, svg *) { + all: revert; + box-sizing: border-box; +} + +:is(*, #\#):is(*, #\#) :is([class^="pf-"], [class*=" pf-"]):not(svg, svg *)::before, +:is(*, #\#):is(*, #\#) :is([class^="pf-"], [class*=" pf-"]):not(svg, svg *)::after { + box-sizing: border-box; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) [class^="pf-"][hidden], +:is(*, #\#):is(*, #\#):is(*, #\#) [class*=" pf-"][hidden] { + display: none; +} + +[data-pf-hidden] { + display: none !important; +} + +[data-pf-suppressed] { + opacity: 0 !important; + pointer-events: none !important; +} + +[data-pf-sr-hidden] { + clip: rect(0 0 0 0) !important; + -webkit-clip-path: inset(100%) !important; + clip-path: inset(100%) !important; + height: 1px !important; + overflow: hidden !important; + position: absolute !important; + white-space: nowrap !important; + width: 1px !important; +} + +/* +* Suppress native browser outlines. +* This is only okay because we exhaustively +* provide our own high-contrast custom focus styles. +*/ +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-input:focus, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-input:focus-visible, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-input:focus, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-input:focus-visible, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-input-clear:focus, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-input-clear:focus-visible, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-result-link:focus, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-result-link:focus-visible, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-heading-link:focus, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-heading-link:focus-visible, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-checkbox-input:focus, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-checkbox-input:focus-visible, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-trigger:focus, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-trigger:focus-visible, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-trigger-btn:focus, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-trigger-btn:focus-visible, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-modal-close:focus, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-modal-close:focus-visible, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-result:focus, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-result:focus-visible, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-options:focus, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-options:focus-visible { + outline: none; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-input-clear:focus-visible, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-trigger:focus-visible, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-clear:focus-visible, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-trigger-btn:focus-visible, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-modal-close:focus-visible { + outline: var(--pf-outline-width) solid var(--pf-outline-focus); + outline-offset: var(--pf-outline-offset); +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-key, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-trigger-key, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-modal-footer-key, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-keyboard-key, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-footer-key { + display: inline-flex; + align-items: center; + justify-content: center; + padding: 0 4px; + background: var(--pf-hover); + border: 1px solid var(--pf-border); + border-radius: 3px; + font-weight: 500; + color: var(--pf-text-secondary); + font-family: var(--pf-font); +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-key--sm, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-footer-key { + min-width: 16px; + height: 16px; + font-size: 9px; + padding: 0 3px; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-input-wrapper { + position: relative; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-input-wrapper::before, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-input-wrapper::before { + content: ""; + position: absolute; + background-color: var(--pf-text-muted); + width: 14px; + height: 14px; + top: calc((var(--pf-input-height) - 14px) / 2); + inset-inline-start: 10px; + -webkit-mask-image: var(--pf-icon-search); + mask-image: var(--pf-icon-search); + -webkit-mask-size: 100%; + mask-size: 100%; + pointer-events: none; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-input-wrapper::before { + z-index: 1; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-input, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-input { + width: 100%; + height: var(--pf-input-height); + background-color: var(--pf-background); + border: 1px solid var(--pf-border); + border-radius: var(--pf-border-radius); + font-family: var(--pf-font, inherit); + font-size: var(--pf-input-font-size); + color: var(--pf-text); + box-sizing: border-box; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-input { + padding: 0; + padding-inline-start: 32px; + padding-inline-end: 36px; + font-weight: 400; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-input:focus-visible, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-input:focus-visible { + border-color: var(--pf-outline-focus); + box-shadow: 0 0 0 var(--pf-outline-width) var(--pf-outline-focus); +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-input::placeholder, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-input::placeholder { + color: var(--pf-text-muted); +} + +/* Hide native search clear button - we have our own */ +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-input::-webkit-search-decoration, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-input::-webkit-search-cancel-button, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-input::-webkit-search-results-button, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-input::-webkit-search-results-decoration { + display: none; + appearance: none; + -webkit-appearance: none; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-input-clear { + position: absolute; + inset-inline-end: 2px; + top: 50%; + transform: translateY(-50%); + height: calc(100% - 4px); + min-width: 44px; + padding: 0 8px; + background: none; + border: none; + font-size: 12px; + color: var(--pf-text-muted); + cursor: pointer; + border-radius: 4px; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-input-clear:hover { + background: var(--pf-hover); + color: var(--pf-text-secondary); +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-input-clear[data-pf-suppressed] { + display: none; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-summary { + font-size: var(--pf-summary-font-size); + color: var(--pf-text-muted); +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-results { + list-style: none; + padding: 0; + margin: 0; + display: var(--pf-results-display); + flex-direction: var(--pf-results-flex-direction); + flex-wrap: var(--pf-results-flex-wrap); + grid-template-columns: var(--pf-results-columns); + gap: var(--pf-results-gap); +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-result { + display: flex; + flex-direction: column; + gap: 8px; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-result-card { + position: relative; + display: flex; + gap: 12px; + padding: 12px; + background: var(--pf-background); + border: 1px solid var(--pf-border); + border-radius: var(--pf-border-radius); + transition: + border-color 0.15s, + box-shadow 0.15s; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-result-card:hover { + border-color: var(--pf-border-focus); + box-shadow: var(--pf-shadow-sm); +} + +:is(*, #\#):is(*, #\#):is(*, #\#) + .pf-result-card:has(.pf-result-link:focus-visible) { + border-color: var(--pf-outline-focus); + box-shadow: 0 0 0 var(--pf-outline-width) var(--pf-outline-focus); +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-result-card:has([data-pf-selected]) { + border-color: var(--pf-border-focus); + background: var(--pf-hover); +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-result-image { + width: var(--pf-image-width); + height: var(--pf-image-height); + border-radius: 4px; + object-fit: cover; + background: var(--pf-skeleton); + flex-shrink: 0; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-result-content { + flex: 1; + min-width: 0; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-result-title { + font-size: var(--pf-result-title-font-size); + font-weight: 500; + margin: 0; + line-height: 1.4; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-result-link { + color: var(--pf-text); + text-decoration: none; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-result-link::after { + content: ""; + position: absolute; + inset: 0; + border-radius: inherit; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-result-link:hover { + text-decoration: underline; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-result-excerpt { + font-size: var(--pf-result-excerpt-font-size); + color: var(--pf-text-secondary); + margin: 4px 0 0 0; + line-height: 1.5; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-result-excerpt mark, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-heading-excerpt mark, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-result-excerpt mark { + background: transparent; + font-weight: 500; + color: var(--pf-mark); +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-skeleton { + background: var(--pf-skeleton); + border-radius: 4px; +} + +@media (prefers-reduced-motion: no-preference) { + :is(*, #\#):is(*, #\#):is(*, #\#) .pf-skeleton { + background: linear-gradient( + 90deg, + var(--pf-skeleton) 25%, + var(--pf-skeleton-shine) 50%, + var(--pf-skeleton) 75% + ); + background-size: 200% 100%; + animation: pf-shimmer 1.5s infinite; + } + + @keyframes pf-shimmer { + 0% { + background-position: 200% 0; + } + 100% { + background-position: -200% 0; + } + } +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-skeleton-title { + height: 14px; + width: 60%; + margin-bottom: 8px; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-skeleton-excerpt { + height: 13px; + width: 90%; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-skeleton-image { + width: var(--pf-image-width); + height: var(--pf-image-height); + flex-shrink: 0; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-empty { + text-align: center; + padding: 32px 16px; + color: var(--pf-text-muted); +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-empty-icon { + font-size: 24px; + margin-bottom: 8px; + opacity: 0.4; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-empty-text { + font-size: 14px; + margin: 0; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-error { + padding: 12px 16px; + background: var(--pf-error-bg); + border: 1px solid var(--pf-error-border); + border-radius: var(--pf-border-radius); + color: var(--pf-error-text); + font-size: 13px; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-error strong { + font-weight: 600; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-error small { + display: block; + margin-top: 4px; + color: var(--pf-error-text-secondary); + font-size: 12px; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-heading-chips { + display: flex; + flex-direction: column; + gap: 6px; + margin: 0; + padding: 0; + padding-inline-start: 12px; + list-style: none; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-heading-chip { + display: inline-flex; + flex-direction: column; + gap: 2px; + padding: 8px 10px; + background: var(--pf-background); + border: 1px solid var(--pf-border); + border-radius: 6px; + font-size: 12px; + transition: + border-color 0.15s, + box-shadow 0.15s; + position: relative; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-heading-chip:hover { + border-color: var(--pf-border-focus); +} + +:is(*, #\#):is(*, #\#):is(*, #\#) + .pf-heading-chip:has(.pf-heading-link:focus-visible) { + border-color: var(--pf-outline-focus); + box-shadow: 0 0 0 var(--pf-outline-width) var(--pf-outline-focus); +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-heading-chip:has([data-pf-selected]) { + border-color: var(--pf-border-focus); + background: var(--pf-hover); +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-heading-link { + color: var(--pf-text); + font-weight: 500; + text-decoration: none; + line-height: 1.3; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-heading-link::before { + content: "#"; + color: var(--pf-text-muted); + margin-inline-end: 4px; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-heading-link::after { + content: ""; + position: absolute; + inset: 0; + border-radius: inherit; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-heading-link:hover { + text-decoration: underline; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-heading-excerpt { + margin: 0; + font-size: 12px; + color: var(--pf-text-secondary); + line-height: 1.4; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-filter-pane { + display: flex; + flex-direction: column; + gap: 20px; + padding: 16px; + background: var(--pf-skeleton); + border-radius: var(--pf-border-radius); + border: 1px solid var(--pf-border); + overflow: hidden; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-filter-group { + display: flex; + flex-direction: column; + gap: 8px; + border: none; + padding: 0; + margin: 0; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) details.pf-filter-group { + display: block; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) details.pf-filter-group > .pf-filter-options { + margin-top: 8px; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) + details.pf-filter-group + > .pf-filter-fieldset { + margin-top: 8px; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-filter-fieldset { + border: none; + padding: 0; + margin: 0; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-filter-group-title { + font-size: 11px; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.3px; + color: var(--pf-text-muted); + margin: 0; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-filter-group-name, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-trigger-label, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-option-label { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + min-width: 0; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) summary.pf-filter-group-title { + cursor: pointer; + list-style: none; + display: flex; + align-items: center; + padding: 4px 0; + margin: -4px 0; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) + summary.pf-filter-group-title::-webkit-details-marker { + display: none; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) summary.pf-filter-group-title::after { + content: ""; + width: 10px; + height: 6px; + flex-shrink: 0; + margin-inline-start: 8px; + background: var(--pf-text-muted); + -webkit-mask-image: var(--pf-icon-arrow); + mask-image: var(--pf-icon-arrow); + -webkit-mask-size: 100% 100%; + mask-size: 100% 100%; + transition: transform 0.15s; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) + details.pf-filter-group:not([open]) + > summary.pf-filter-group-title::after { + transform: rotate(-90deg); +} + +:is(*, #\#):is(*, #\#):is(*, #\#) + [dir="rtl"] + details.pf-filter-group:not([open]) + > summary.pf-filter-group-title::after { + transform: rotate(90deg); +} + +:is(*, #\#):is(*, #\#):is(*, #\#) summary.pf-filter-group-title:hover { + color: var(--pf-text-secondary); +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-filter-group-count, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-selected-badge { + display: inline-flex; + align-items: center; + justify-content: center; + background: var(--pf-text); + color: var(--pf-background); + font-size: 11px; + font-weight: 500; + height: 18px; + min-width: 18px; + padding: 0 5px; + border-radius: 9px; + flex-shrink: 0; + box-sizing: border-box; + font-variant-numeric: tabular-nums; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-filter-group-count { + margin-inline-start: auto; + text-transform: none; +} + +:is(*, #\#):is(*, #\#):is(*, #\#):is(*, #\#) + .pf-filter-group-count[data-pf-hidden], +:is(*, #\#):is(*, #\#):is(*, #\#):is(*, #\#) + .pf-dropdown-selected-badge[data-pf-hidden] { + display: inline-flex !important; + visibility: hidden; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-filter-options { + display: flex; + flex-direction: column; + gap: 0; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-filter-checkbox { + display: flex; + align-items: center; + gap: 8px; + min-height: 30px; + cursor: pointer; + font-size: 13px; + color: var(--pf-text-secondary); +} + +@media (pointer: coarse) { + :is(*, #\#):is(*, #\#):is(*, #\#) .pf-filter-checkbox { + min-height: 44px; + } +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-filter-checkbox:hover { + color: var(--pf-text); +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-checkbox-input { + width: 16px; + height: 16px; + margin: 0; + accent-color: var(--pf-text); + cursor: pointer; + color-scheme: light; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) [data-pf-theme="dark"] .pf-checkbox-input { + color-scheme: dark; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) + .pf-filter-checkbox:has(.pf-checkbox-input:focus-visible) { + outline: var(--pf-outline-width) solid var(--pf-outline-focus); + outline-offset: var(--pf-outline-offset); + border-radius: 4px; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-filter-checkbox-count { + margin-inline-start: auto; + font-size: 11px; + color: var(--pf-text-muted); +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-wrapper { + position: relative; + display: inline-flex; + align-items: center; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-trigger { + display: inline-flex; + align-items: center; + gap: 8px; + height: var(--pf-input-height); + padding: 0 12px; + background: var(--pf-background); + border: 1px solid var(--pf-border); + border-radius: var(--pf-border-radius); + font-size: 13px; + color: var(--pf-text-secondary); + cursor: pointer; + transition: border-color 0.15s; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-trigger:hover { + border-color: var(--pf-border-focus); +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-trigger.open { + border-color: var(--pf-border-focus); +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-trigger.wrap { + height: auto; + min-height: var(--pf-input-height); + padding-top: 6px; + padding-bottom: 6px; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-trigger-label.wrap, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-option-label.wrap { + white-space: normal; + line-height: 1.3; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-arrow { + width: 10px; + height: 6px; + flex-shrink: 0; + background: var(--pf-text-muted); + -webkit-mask-image: var(--pf-icon-arrow); + mask-image: var(--pf-icon-arrow); + -webkit-mask-size: 100% 100%; + mask-size: 100% 100%; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-trigger.open .pf-dropdown-arrow { + transform: rotate(180deg); +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-menu { + position: absolute; + top: calc(100% + 4px); + inset-inline-start: 0; + min-width: 180px; + max-height: var(--pf-dropdown-max-height); + overflow-y: auto; + border: 1px solid var(--pf-border); + border-radius: var(--pf-border-radius); + box-shadow: var(--pf-shadow-md); + padding: 4px; + z-index: 100; + + background: + /* Top shadow cover (moves with content) */ + linear-gradient(var(--pf-background) 30%, transparent) center top, + /* Bottom shadow cover (moves with content) */ + linear-gradient(transparent, var(--pf-background) 70%) center bottom, + /* Top shadow (stays fixed) */ + linear-gradient(var(--pf-scroll-shadow), transparent) center top, + /* Bottom shadow (stays fixed) */ + linear-gradient(transparent, var(--pf-scroll-shadow)) center bottom, + var(--pf-background); + background-size: + 100% 40px, + 100% 40px, + 100% 14px, + 100% 14px, + 100% 100%; + background-repeat: no-repeat; + background-attachment: local, local, scroll, scroll, scroll; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-option { + display: flex; + align-items: center; + gap: 8px; + padding: 12px 10px; + min-height: 44px; + font-size: 13px; + color: var(--pf-text-secondary); + border-radius: 4px; + cursor: pointer; + box-sizing: border-box; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-option:hover { + background: var(--pf-hover); +} + +:is(*, #\#):is(*, #\#):is(*, #\#) + .pf-dropdown-option.pf-dropdown-option-focused { + outline: var(--pf-outline-width) solid var(--pf-outline-focus); + outline-offset: -2px; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-option.wrap { + align-items: flex-start; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-checkbox { + width: 16px; + height: 16px; + flex-shrink: 0; + border: 1px solid var(--pf-border); + border-radius: 3px; + background: var(--pf-background); + position: relative; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) + .pf-dropdown-option.wrap + .pf-dropdown-checkbox { + margin-top: 2px; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) + .pf-dropdown-option[aria-selected="true"] + .pf-dropdown-checkbox { + background: var(--pf-text); + border-color: var(--pf-text); +} + +:is(*, #\#):is(*, #\#):is(*, #\#) + .pf-dropdown-option[aria-selected="true"] + .pf-dropdown-checkbox::after { + content: ""; + position: absolute; + inset-inline-start: 5px; + top: 2px; + width: 4px; + height: 8px; + border: solid var(--pf-background); + border-width: 0 2px 2px 0; + transform: rotate(45deg); +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-option-label { + flex: 1; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-option-count { + margin-inline-start: auto; + font-size: 11px; + color: var(--pf-text-muted); + flex-shrink: 0; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) + .pf-dropdown-option.wrap + .pf-dropdown-option-count { + margin-top: 2px; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-option-loading { + pointer-events: none; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) + .pf-dropdown-option-loading + .pf-dropdown-checkbox { + width: 16px; + height: 16px; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) + .pf-dropdown-option-loading + .pf-dropdown-option-label { + height: 13px; + border-radius: 4px; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-error { + padding: 12px 10px; + font-size: 13px; + color: var(--pf-error-text); +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-clear { + display: inline-flex; + align-items: center; + height: 44px; + padding: 0 10px; + margin-inline-start: 4px; + background: transparent; + border: 1px solid transparent; + border-radius: var(--pf-border-radius); + font-size: 12px; + color: var(--pf-text-secondary); + cursor: pointer; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) + .pf-dropdown-clear:hover:not([aria-disabled="true"]) { + background: var(--pf-hover); + border-color: var(--pf-border); + color: var(--pf-text); +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-clear[aria-disabled="true"] { + color: var(--pf-text-muted); + cursor: default; + opacity: 0.4; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-options { + max-height: var(--pf-dropdown-max-height); + overflow-y: auto; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-trigger-btn { + display: inline-flex; + align-items: center; + gap: 8px; + width: 100%; + height: var(--pf-input-height); + padding: 0 14px; + background: var(--pf-background); + border: 1px solid var(--pf-border); + border-radius: var(--pf-border-radius); + font-size: 14px; + color: var(--pf-text-muted); + cursor: pointer; + transition: + border-color 0.15s, + box-shadow 0.15s; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-trigger-btn:hover { + border-color: var(--pf-border-focus); +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-trigger-icon { + width: 14px; + height: 14px; + background: var(--pf-text-muted); + -webkit-mask-image: var(--pf-icon-search); + mask-image: var(--pf-icon-search); + -webkit-mask-size: 100%; + mask-size: 100%; + flex-shrink: 0; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-trigger-text { + flex: 1; + text-align: start; + color: var(--pf-text-muted); +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-trigger-shortcut { + display: inline-flex; + align-items: center; + gap: 2px; + margin-inline-start: 8px; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-trigger-key { + min-width: 20px; + height: 18px; + font-size: 11px; + border-radius: 4px; +} + +/* + NB: Background scrolling is prevented with the overscroll-behavior: contain + values below, plus overflow: hidden on the backdrop. + As of writing, this only works on Chrome 144. Tracking: + https://bugzilla.mozilla.org/show_bug.cgi?id=1837436 + https://bugs.webkit.org/show_bug.cgi?id=243452 +*/ + +:is(*, #\#):is(*, #\#):is(*, #\#) dialog.pf-modal { + position: fixed; + width: 100%; + max-width: var(--pf-modal-max-width); + max-height: var(--pf-modal-max-height); + margin: var(--pf-modal-top) auto; + padding: 0; + background: var(--pf-background); + border: none; + border-radius: 12px; + box-shadow: var(--pf-shadow-lg); + flex-direction: column; + overflow: hidden; + overscroll-behavior: contain; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) dialog.pf-modal::backdrop { + background: var(--pf-modal-backdrop); + overflow: hidden; + overscroll-behavior: contain; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) dialog.pf-modal[open] { + display: flex; +} + +@media (prefers-reduced-motion: no-preference) { + :is(*, #\#):is(*, #\#):is(*, #\#) dialog.pf-modal[open] { + animation: pf-modal-appear 0.15s ease-out; + } + + @keyframes pf-modal-appear { + from { + opacity: 0; + transform: scale(0.95); + } + to { + opacity: 1; + transform: scale(1); + } + } +} + +@media (max-width: 640px) { + :is(*, #\#):is(*, #\#):is(*, #\#) dialog.pf-modal[open] { + top: 0; + left: 0; + width: 100vw; + height: 100dvh; + max-width: none; + max-height: none; + margin: 0; + padding: 0; + border-radius: 0; + animation: none; + } + + :is(*, #\#):is(*, #\#):is(*, #\#) pagefind-modal-header, + :is(*, #\#):is(*, #\#):is(*, #\#) .pf-modal-header { + padding-top: max(16px, env(safe-area-inset-top)); + padding-left: max(16px, env(safe-area-inset-left)); + padding-right: max(16px, env(safe-area-inset-right)); + } + + :is(*, #\#):is(*, #\#):is(*, #\#) pagefind-modal-body, + :is(*, #\#):is(*, #\#):is(*, #\#) .pf-modal-body { + padding-left: max(16px, env(safe-area-inset-left)); + padding-right: max(16px, env(safe-area-inset-right)); + } + + :is(*, #\#):is(*, #\#):is(*, #\#) pagefind-modal-footer, + :is(*, #\#):is(*, #\#):is(*, #\#) .pf-modal-footer { + padding-bottom: max(12px, env(safe-area-inset-bottom)); + padding-left: max(16px, env(safe-area-inset-left)); + padding-right: max(16px, env(safe-area-inset-right)); + } +} + +:is(*, #\#):is(*, #\#):is(*, #\#) pagefind-modal-header, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-modal-header { + display: flex; + align-items: center; + gap: 8px; + padding: 16px; + border-bottom: 1px solid var(--pf-border); + flex-shrink: 0; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-modal-header-content { + flex: 1; + min-width: 0; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-modal-close { + display: none; + align-items: center; + justify-content: center; + width: 40px; + height: 40px; + padding: 0; + background: transparent; + border: none; + border-radius: 8px; + color: var(--pf-text-secondary); + cursor: pointer; + flex-shrink: 0; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-modal-close:hover { + background: var(--pf-hover); + color: var(--pf-text); +} + +@media (max-width: 640px) { + :is(*, #\#):is(*, #\#):is(*, #\#) .pf-modal-close { + display: flex; + } +} + +:is(*, #\#):is(*, #\#):is(*, #\#) + pagefind-modal-header + .pf-input-wrapper::before, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-modal-header .pf-input-wrapper::before { + top: 50%; + transform: translateY(-50%); +} + +:is(*, #\#):is(*, #\#):is(*, #\#) pagefind-modal-header .pf-input, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-modal-header .pf-input { + border: none; + background: transparent; + font-size: var(--pf-input-font-size); + height: 40px; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) pagefind-modal-body, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-modal-body { + flex: 1 1 auto; + overflow-y: auto; + overscroll-behavior: contain; + padding: 8px 16px 16px; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) pagefind-modal-body .pf-summary, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-modal-body .pf-summary { + margin-bottom: 8px; +} + +/* Modal body uses the base card styles - only minor adjustments needed */ +:is(*, #\#):is(*, #\#):is(*, #\#) + pagefind-modal-body + .pf-result-card:has([data-pf-selected]), +:is(*, #\#):is(*, #\#):is(*, #\#) + .pf-modal-body + .pf-result-card:has([data-pf-selected]) { + background: var(--pf-skeleton); +} + +:is(*, #\#):is(*, #\#):is(*, #\#) pagefind-modal-footer, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-modal-footer { + padding: 10px 16px; + border-top: 1px solid var(--pf-border); + display: flex; + align-items: center; + gap: 16px; + font-size: 12px; + color: var(--pf-text-muted); + flex-shrink: 0; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-modal-footer-hint, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-keyboard-hint { + display: flex; + align-items: center; + gap: 6px; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-modal-footer-key, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-keyboard-key { + min-width: 18px; + height: 18px; + font-size: 10px; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) pagefind-keyboard-hints, +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-keyboard-hints { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 16px; + font-size: 12px; + color: var(--pf-text-muted); + min-height: 20px; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox { + position: relative; + display: inline-block; + width: 100%; + max-width: var(--pf-searchbox-max-width); +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-input-wrapper { + position: relative; +} + +/* Override trigger-shortcut positioning when inside searchbox */ +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-input-wrapper .pf-trigger-shortcut { + position: absolute; + inset-inline-end: 12px; + top: 50%; + transform: translateY(-50%); + pointer-events: none; + margin-inline-start: 0; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-input { + padding: 0; + padding-inline-start: 32px; + padding-inline-end: 12px; +} + +/* Add padding when shortcut is present */ +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-input-wrapper:has(.pf-trigger-shortcut) .pf-searchbox-input { + padding-inline-end: 72px; +} + +/* Hide shortcut badge when input is focused */ +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-input:focus ~ .pf-trigger-shortcut { + display: none; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-input:focus { + padding-inline-end: 12px; + border-color: var(--pf-border-focus); +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox.open .pf-searchbox-input { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + border-bottom-color: var(--pf-border); +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-dropdown { + display: none; + flex-direction: column; + position: absolute; + top: 100%; + left: 0; + right: 0; + background: var(--pf-background); + border: 1px solid var(--pf-border); + border-top: none; + border-radius: 0 0 var(--pf-border-radius) var(--pf-border-radius); + box-shadow: var(--pf-shadow-md); + max-height: var(--pf-searchbox-dropdown-max-height); + z-index: 100; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox.open .pf-searchbox-dropdown { + display: flex; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-results { + list-style: none; + padding: 4px; + margin: 0; + flex: 1; + overflow-y: auto; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-result { + display: block; + padding: 12px 10px; + min-height: 44px; + border-radius: 4px; + cursor: pointer; + text-decoration: none; + color: inherit; + box-sizing: border-box; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-result:hover { + background: var(--pf-hover); +} + +/* Placeholder skeleton - non-interactive */ +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-placeholder { + cursor: default; + pointer-events: none; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-placeholder:hover { + background: transparent; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-result[data-pf-selected] { + background: var(--pf-hover); + outline: var(--pf-outline-width) solid var(--pf-outline-focus); + outline-offset: -2px; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-result-title { + font-size: 13px; + font-weight: 500; + color: var(--pf-text); + margin: 0; + line-height: 1.3; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-result-excerpt { + font-size: 12px; + color: var(--pf-text-secondary); + margin: 2px 0 0 0; + line-height: 1.4; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-subresult { + padding-inline-start: 20px; + border-inline-start: 2px solid var(--pf-border); + margin-inline-start: 10px; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-result-meta { + display: flex; + align-items: center; + gap: 6px; + margin-top: 4px; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-footer { + padding: 8px 10px; + border-top: 1px solid var(--pf-border); + display: flex; + align-items: center; + justify-content: flex-end; + gap: 12px; + font-size: 11px; + color: var(--pf-text-muted); + flex-shrink: 0; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-footer-hint { + display: flex; + align-items: center; + gap: 4px; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-empty { + padding: 20px 10px; + text-align: center; + color: var(--pf-text-muted); + font-size: 13px; +} + +:is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-loading { + padding: 16px 10px; + display: flex; + align-items: center; + justify-content: center; + gap: 8px; + color: var(--pf-text-muted); + font-size: 13px; +} + +/* Ensure focus indicators are visible in Windows High Contrast Mode */ +@media (forced-colors: active) { + :is(*, #\#):is(*, #\#):is(*, #\#) .pf-input:focus-visible, + :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-input:focus-visible, + :is(*, #\#):is(*, #\#):is(*, #\#) .pf-input-clear:focus-visible, + :is(*, #\#):is(*, #\#):is(*, #\#) .pf-trigger-btn:focus-visible, + :is(*, #\#):is(*, #\#):is(*, #\#) .pf-modal-close:focus-visible, + :is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-trigger:focus-visible, + :is(*, #\#):is(*, #\#):is(*, #\#) + .pf-result-card:has(.pf-result-link:focus-visible), + :is(*, #\#):is(*, #\#):is(*, #\#) + .pf-heading-chip:has(.pf-heading-link:focus-visible), + :is(*, #\#):is(*, #\#):is(*, #\#) + .pf-filter-checkbox:has(.pf-checkbox-input:focus-visible), + :is(*, #\#):is(*, #\#):is(*, #\#) + .pf-dropdown-option.pf-dropdown-option-focused, + :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-result[data-pf-selected] { + outline: 2px solid CanvasText; + outline-offset: 2px; + } +} + +/* Hide keyboard hints on touch-only devices (no hover capability) */ +@media (hover: none) { + :is(*, #\#):is(*, #\#):is(*, #\#) pagefind-keyboard-hints, + :is(*, #\#):is(*, #\#):is(*, #\#) .pf-keyboard-hints, + :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-footer, + :is(*, #\#):is(*, #\#):is(*, #\#) .pf-modal-footer-hint { + display: none; + } +} + +@media (max-width: 640px) { + :is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-menu { + min-width: unset; + width: max(180px, calc(100vw - 32px)); + max-width: calc(100vw - 32px); + inset-inline-start: unset; + left: 50%; + transform: translateX(-50%); + max-height: min(var(--pf-dropdown-max-height), 50vh); + } + + :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-dropdown { + max-height: min(var(--pf-searchbox-dropdown-max-height), 60vh); + } + + :is(*, #\#):is(*, #\#):is(*, #\#) .pf-filter-pane { + padding: 12px; + gap: 16px; + } +} diff --git a/webstatic.example/dist/pagefind/pagefind-component-ui.js b/webstatic.example/dist/pagefind/pagefind-component-ui.js new file mode 100644 index 0000000..4eb2fce --- /dev/null +++ b/webstatic.example/dist/pagefind/pagefind-component-ui.js @@ -0,0 +1,56 @@ +"use strict";(()=>{var ls=Object.defineProperty;var h=(n,s)=>{for(var e in s)ls(n,e,{get:s[e],enumerable:!0})};var Bt={};h(Bt,{PagefindConfig:()=>Re,PagefindElement:()=>f,PagefindFilterDropdown:()=>Me,PagefindFilterPane:()=>Ne,PagefindInput:()=>ke,PagefindKeyboardHints:()=>Le,PagefindModal:()=>Oe,PagefindModalBody:()=>Ie,PagefindModalFooter:()=>Ue,PagefindModalHeader:()=>we,PagefindModalTrigger:()=>He,PagefindResults:()=>Se,PagefindSearchbox:()=>Fe,PagefindSummary:()=>Ae,configureInstance:()=>Qt,getInstanceManager:()=>Ce});var os="a[href], button, input, [tabindex]";function Kt(n){let s=n.querySelectorAll(os);for(let e of s)if(!(e.tabIndex<0)&&!e.disabled&&!e.hasAttribute("hidden")&&window.getComputedStyle(e).display!=="none")return!0;return!1}function $t(n,s){let e=null;for(let t of s)t.contains(n)||!(n.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING)||Kt(t)&&(e===null||t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING)&&(e=t);return e}function Pe(n,s){let e=null;for(let t of s)t.contains(n)||!(n.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_PRECEDING)||Kt(t)&&(e===null||t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_PRECEDING)&&(e=t);return e}var Ve={};h(Ve,{comments:()=>us,default:()=>ps,direction:()=>ds,strings:()=>hs,thanks_to:()=>cs});var cs="Jan Claasen ",us="",ds="ltr",hs={placeholder:"Soek",clear_search:"Opruim",load_more:"Laai nog resultate",search_label:"Soek hierdie webwerf",filters_label:"Filters",zero_results:"Geen resultate vir [SEARCH_TERM]",many_results:"[COUNT] resultate vir [SEARCH_TERM]",one_result:"[COUNT] resultate vir [SEARCH_TERM]",total_zero_results:"Geen resultate",total_one_result:"[COUNT] resultaat",total_many_results:"[COUNT] resultate",alt_search:"Geen resultate vir [SEARCH_TERM]. Toon resultate vir [DIFFERENT_TERM] in plaas daarvan",search_suggestion:"Geen resultate vir [SEARCH_TERM]. Probeer eerder een van die volgende terme:",searching:"Soek vir [SEARCH_TERM]",results_label:"Soekresultate",keyboard_navigate:"navigeer",keyboard_select:"kies",keyboard_clear:"wis",keyboard_close:"sluit",keyboard_search:"soek",error_search:"Soek het misluk",filter_selected_one:"[COUNT] gekies",filter_selected_many:"[COUNT] gekies",input_hint:"Resultate sal verskyn terwyl jy tik",loading:"Laai"},ps={thanks_to:cs,comments:us,direction:ds,strings:hs};var qe={};h(qe,{comments:()=>_s,default:()=>Es,direction:()=>fs,strings:()=>gs,thanks_to:()=>ms});var ms="Jermanuts",_s="",fs="rtl",gs={placeholder:"\u0628\u062D\u062B",clear_search:"\u0627\u0645\u0633\u062D",load_more:"\u062D\u0645\u0651\u0650\u0644 \u0627\u0644\u0645\u0632\u064A\u062F \u0645\u0646 \u0627\u0644\u0646\u062A\u0627\u0626\u062C",search_label:"\u0627\u0628\u062D\u062B \u0641\u064A \u0647\u0630\u0627 \u0627\u0644\u0645\u0648\u0642\u0639",filters_label:"\u062A\u0635\u0641\u064A\u0627\u062A",zero_results:"\u0644\u0627 \u062A\u0648\u062C\u062F \u0646\u062A\u0627\u0626\u062C \u0644 [SEARCH_TERM]",many_results:"[COUNT] \u0646\u062A\u0627\u0626\u062C \u0644 [SEARCH_TERM]",one_result:"[COUNT] \u0646\u062A\u064A\u062C\u0629 \u0644 [SEARCH_TERM]",total_zero_results:"\u0644\u0627 \u062A\u0648\u062C\u062F \u0646\u062A\u0627\u0626\u062C",total_one_result:"[COUNT] \u0646\u062A\u064A\u062C\u0629",total_many_results:"[COUNT] \u0646\u062A\u0627\u0626\u062C",alt_search:"\u0644\u0627 \u062A\u0648\u062C\u062F \u0646\u062A\u0627\u0626\u062C \u0644 [SEARCH_TERM]. \u064A\u0639\u0631\u0636 \u0627\u0644\u0646\u062A\u0627\u0626\u062C \u0644 [DIFFERENT_TERM] \u0628\u062F\u0644\u0627\u064B \u0645\u0646 \u0630\u0644\u0643",search_suggestion:"\u0644\u0627 \u062A\u0648\u062C\u062F \u0646\u062A\u0627\u0626\u062C \u0644 [SEARCH_TERM]. \u062C\u0631\u0628 \u0623\u062D\u062F \u0639\u0645\u0644\u064A\u0627\u062A \u0627\u0644\u0628\u062D\u062B \u0627\u0644\u062A\u0627\u0644\u064A\u0629:",searching:"\u064A\u0628\u062D\u062B \u0639\u0646 [SEARCH_TERM]...",results_label:"\u0646\u062A\u0627\u0626\u062C \u0627\u0644\u0628\u062D\u062B",keyboard_navigate:"\u062A\u0646\u0642\u0644",keyboard_select:"\u0627\u062E\u062A\u064A\u0627\u0631",keyboard_clear:"\u0627\u0645\u0633\u062D",keyboard_close:"\u0625\u063A\u0644\u0627\u0642",keyboard_search:"\u0628\u062D\u062B",error_search:"\u0641\u0634\u0644 \u0627\u0644\u0628\u062D\u062B",filter_selected_one:"[COUNT] \u0645\u062D\u062F\u062F",filter_selected_many:"[COUNT] \u0645\u062D\u062F\u062F",input_hint:"\u0633\u062A\u0638\u0647\u0631 \u0627\u0644\u0646\u062A\u0627\u0626\u062C \u0623\u062B\u0646\u0627\u0621 \u0627\u0644\u0643\u062A\u0627\u0628\u0629",loading:"\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u062D\u0645\u064A\u0644"},Es={thanks_to:ms,comments:_s,direction:fs,strings:gs};var Ge={};h(Ge,{comments:()=>Ts,default:()=>vs,direction:()=>Cs,strings:()=>ys,thanks_to:()=>bs});var bs="Maruf Alom ",Ts="",Cs="ltr",ys={placeholder:"\u0985\u09A8\u09C1\u09B8\u09A8\u09CD\u09A7\u09BE\u09A8 \u0995\u09B0\u09C1\u09A8",clear_search:"\u09AE\u09C1\u099B\u09C7 \u09AB\u09C7\u09B2\u09C1\u09A8",load_more:"\u0986\u09B0\u09CB \u09AB\u09B2\u09BE\u09AB\u09B2 \u09A6\u09C7\u0996\u09C1\u09A8",search_label:"\u098F\u0987 \u0993\u09AF\u09BC\u09C7\u09AC\u09B8\u09BE\u0987\u099F\u09C7 \u0985\u09A8\u09C1\u09B8\u09A8\u09CD\u09A7\u09BE\u09A8 \u0995\u09B0\u09C1\u09A8",filters_label:"\u09AB\u09BF\u09B2\u09CD\u099F\u09BE\u09B0",zero_results:"[SEARCH_TERM] \u098F\u09B0 \u099C\u09A8\u09CD\u09AF \u0995\u09BF\u099B\u09C1 \u0996\u09C1\u0981\u099C\u09C7 \u09AA\u09BE\u0993\u09AF\u09BC\u09BE \u09AF\u09BE\u09AF\u09BC\u09A8\u09BF",many_results:"[COUNT]-\u099F\u09BF \u09AB\u09B2\u09BE\u09AB\u09B2 \u09AA\u09BE\u0993\u09AF\u09BC\u09BE \u0997\u09BF\u09AF\u09BC\u09C7\u099B\u09C7 [SEARCH_TERM] \u098F\u09B0 \u099C\u09A8\u09CD\u09AF",one_result:"[COUNT]-\u099F\u09BF \u09AB\u09B2\u09BE\u09AB\u09B2 \u09AA\u09BE\u0993\u09AF\u09BC\u09BE \u0997\u09BF\u09AF\u09BC\u09C7\u099B\u09C7 [SEARCH_TERM] \u098F\u09B0 \u099C\u09A8\u09CD\u09AF",total_zero_results:"\u0995\u09CB\u09A8 \u09AB\u09B2\u09BE\u09AB\u09B2 \u09A8\u09C7\u0987",total_one_result:"[COUNT]-\u099F\u09BF \u09AB\u09B2\u09BE\u09AB\u09B2",total_many_results:"[COUNT]-\u099F\u09BF \u09AB\u09B2\u09BE\u09AB\u09B2",alt_search:"\u0995\u09CB\u09A8 \u0995\u09BF\u099B\u09C1 \u0996\u09C1\u0981\u099C\u09C7 \u09AA\u09BE\u0993\u09AF\u09BC\u09BE \u09AF\u09BE\u09AF\u09BC\u09A8\u09BF [SEARCH_TERM] \u098F\u09B0 \u099C\u09A8\u09CD\u09AF. \u09AA\u09B0\u09BF\u09AC\u09B0\u09CD\u09A4\u09C7 [DIFFERENT_TERM] \u098F\u09B0 \u099C\u09A8\u09CD\u09AF \u09A6\u09C7\u0996\u09BE\u09A8\u09CB \u09B9\u099A\u09CD\u099B\u09C7",search_suggestion:"\u0995\u09CB\u09A8 \u0995\u09BF\u099B\u09C1 \u0996\u09C1\u0981\u099C\u09C7 \u09AA\u09BE\u0993\u09AF\u09BC\u09BE \u09AF\u09BE\u09AF\u09BC\u09A8\u09BF [SEARCH_TERM] \u098F\u09B0 \u09AC\u09BF\u09B7\u09AF\u09BC\u09C7. \u09A8\u09BF\u09A8\u09CD\u09AE\u09C7\u09B0 \u09AC\u09BF\u09B7\u09AF\u09BC\u09AC\u09B8\u09CD\u09A4\u09C1 \u0996\u09C1\u0981\u099C\u09C7 \u09A6\u09C7\u0996\u09C1\u09A8:",searching:"\u0985\u09A8\u09C1\u09B8\u09A8\u09CD\u09A7\u09BE\u09A8 \u099A\u09B2\u099B\u09C7 [SEARCH_TERM]...",results_label:"\u0985\u09A8\u09C1\u09B8\u09A8\u09CD\u09A7\u09BE\u09A8\u09C7\u09B0 \u09AB\u09B2\u09BE\u09AB\u09B2",keyboard_navigate:"\u09A8\u09C7\u09AD\u09BF\u0997\u09C7\u099F",keyboard_select:"\u09A8\u09BF\u09B0\u09CD\u09AC\u09BE\u099A\u09A8",keyboard_clear:"\u09AE\u09C1\u099B\u09C1\u09A8",keyboard_close:"\u09AC\u09A8\u09CD\u09A7",keyboard_search:"\u0985\u09A8\u09C1\u09B8\u09A8\u09CD\u09A7\u09BE\u09A8",error_search:"\u0985\u09A8\u09C1\u09B8\u09A8\u09CD\u09A7\u09BE\u09A8 \u09AC\u09CD\u09AF\u09B0\u09CD\u09A5",filter_selected_one:"[COUNT]-\u099F\u09BF \u09A8\u09BF\u09B0\u09CD\u09AC\u09BE\u099A\u09BF\u09A4",filter_selected_many:"[COUNT]-\u099F\u09BF \u09A8\u09BF\u09B0\u09CD\u09AC\u09BE\u099A\u09BF\u09A4",input_hint:"\u099F\u09BE\u0987\u09AA \u0995\u09B0\u09BE\u09B0 \u09B8\u09BE\u09A5\u09C7 \u09B8\u09BE\u09A5\u09C7 \u09AB\u09B2\u09BE\u09AB\u09B2 \u09A6\u09C7\u0996\u09BE \u09AF\u09BE\u09AC\u09C7",loading:"\u09B2\u09CB\u09A1 \u09B9\u099A\u09CD\u099B\u09C7"},vs={thanks_to:bs,comments:Ts,direction:Cs,strings:ys};var We={};h(We,{comments:()=>ks,default:()=>Ns,direction:()=>As,strings:()=>Ss,thanks_to:()=>Rs});var Rs="Pablo Villaverde ",ks="",As="ltr",Ss={placeholder:"Cerca",clear_search:"Netejar",load_more:"Veure m\xE9s resultats",search_label:"Cerca en aquest lloc",filters_label:"Filtres",zero_results:"No es van trobar resultats per [SEARCH_TERM]",many_results:"[COUNT] resultats trobats per [SEARCH_TERM]",one_result:"[COUNT] resultat trobat per [SEARCH_TERM]",total_zero_results:"Sense resultats",total_one_result:"[COUNT] resultat",total_many_results:"[COUNT] resultats",alt_search:"No es van trobar resultats per [SEARCH_TERM]. Mostrant al seu lloc resultats per [DIFFERENT_TERM]",search_suggestion:"No es van trobar resultats per [SEARCH_TERM]. Proveu una de les cerques seg\xFCents:",searching:"Cercant [SEARCH_TERM]...",results_label:"Resultats de la cerca",keyboard_navigate:"navegar",keyboard_select:"triar",keyboard_clear:"netejar",keyboard_close:"tancar",keyboard_search:"cercar",error_search:"Error en la cerca",filter_selected_one:"[COUNT] seleccionat",filter_selected_many:"[COUNT] seleccionats",input_hint:"Els resultats apareixeran mentre escriviu",loading:"Carregant"},Ns={thanks_to:Rs,comments:ks,direction:As,strings:Ss};var Ye={};h(Ye,{comments:()=>Os,default:()=>ws,direction:()=>xs,strings:()=>Hs,thanks_to:()=>Ms});var Ms="Dalibor Hon ",Os="",xs="ltr",Hs={placeholder:"Hledat",clear_search:"Smazat",load_more:"Na\u010D\xEDst dal\u0161\xED v\xFDsledky",search_label:"Prohledat tuto str\xE1nku",filters_label:"Filtry",zero_results:"\u017D\xE1dn\xE9 v\xFDsledky pro [SEARCH_TERM]",many_results:"[COUNT] v\xFDsledk\u016F pro [SEARCH_TERM]",one_result:"[COUNT] v\xFDsledek pro [SEARCH_TERM]",total_zero_results:"\u017D\xE1dn\xE9 v\xFDsledky",total_one_result:"[COUNT] v\xFDsledek",total_many_results:"[COUNT] v\xFDsledk\u016F",alt_search:"\u017D\xE1dn\xE9 v\xFDsledky pro [SEARCH_TERM]. Zobrazuj\xED se v\xFDsledky pro [DIFFERENT_TERM]",search_suggestion:"\u017D\xE1dn\xE9 v\xFDsledky pro [SEARCH_TERM]. Souvisej\xEDc\xED v\xFDsledky hled\xE1n\xED:",searching:"Hled\xE1m [SEARCH_TERM]...",results_label:"V\xFDsledky hled\xE1n\xED",keyboard_navigate:"navigovat",keyboard_select:"vybrat",keyboard_clear:"smazat",keyboard_close:"zav\u0159\xEDt",keyboard_search:"hledat",error_search:"Hled\xE1n\xED selhalo",filter_selected_one:"[COUNT] vybran\xFD",filter_selected_many:"[COUNT] vybran\xFDch",input_hint:"V\xFDsledky se zobraz\xED b\u011Bhem psan\xED",loading:"Na\u010D\xEDt\xE1n\xED"},ws={thanks_to:Ms,comments:Os,direction:xs,strings:Hs};var Je={};h(Je,{comments:()=>Us,default:()=>Ps,direction:()=>Ls,strings:()=>Fs,thanks_to:()=>Is});var Is="Jonas Smedegaard ",Us="",Ls="ltr",Fs={placeholder:"S\xF8g",clear_search:"Nulstil",load_more:"Indl\xE6s flere resultater",search_label:"S\xF8g p\xE5 dette website",filters_label:"Filtre",zero_results:"Ingen resultater for [SEARCH_TERM]",many_results:"[COUNT] resultater for [SEARCH_TERM]",one_result:"[COUNT] resultat for [SEARCH_TERM]",total_zero_results:"Ingen resultater",total_one_result:"[COUNT] resultat",total_many_results:"[COUNT] resultater",alt_search:"Ingen resultater for [SEARCH_TERM]. Viser resultater for [DIFFERENT_TERM] i stedet",search_suggestion:"Ingen resultater for [SEARCH_TERM]. Pr\xF8v et af disse s\xF8geord i stedet:",searching:"S\xF8ger efter [SEARCH_TERM]...",results_label:"S\xF8geresultater",keyboard_navigate:"naviger",keyboard_select:"v\xE6lg",keyboard_clear:"ryd",keyboard_close:"luk",keyboard_search:"s\xF8g",error_search:"S\xF8gning mislykkedes",filter_selected_one:"[COUNT] valgt",filter_selected_many:"[COUNT] valgte",input_hint:"Resultater vises mens du skriver",loading:"Indl\xE6ser"},Ps={thanks_to:Is,comments:Us,direction:Ls,strings:Fs};var Ze={};h(Ze,{comments:()=>Ds,default:()=>Ks,direction:()=>js,strings:()=>Bs,thanks_to:()=>zs});var zs="Jan Claasen ",Ds="",js="ltr",Bs={placeholder:"Suche",clear_search:"L\xF6schen",load_more:"Mehr Ergebnisse laden",search_label:"Suche diese Seite",filters_label:"Filter",zero_results:"Keine Ergebnisse f\xFCr [SEARCH_TERM]",many_results:"[COUNT] Ergebnisse f\xFCr [SEARCH_TERM]",one_result:"[COUNT] Ergebnis f\xFCr [SEARCH_TERM]",total_zero_results:"Keine Ergebnisse",total_one_result:"[COUNT] Ergebnis",total_many_results:"[COUNT] Ergebnisse",alt_search:"Keine Ergebnisse f\xFCr [SEARCH_TERM]. Stattdessen werden Ergebnisse f\xFCr [DIFFERENT_TERM] angezeigt",search_suggestion:"Keine Ergebnisse f\xFCr [SEARCH_TERM]. Versuchen Sie eine der folgenden Suchen:",searching:"Suche nach [SEARCH_TERM]\u202F\u2026",results_label:"Suchergebnisse",keyboard_navigate:"navigieren",keyboard_select:"ausw\xE4hlen",keyboard_clear:"l\xF6schen",keyboard_close:"schlie\xDFen",keyboard_search:"suchen",error_search:"Suche fehlgeschlagen",filter_selected_one:"[COUNT] ausgew\xE4hlt",filter_selected_many:"[COUNT] ausgew\xE4hlt",input_hint:"Ergebnisse werden w\xE4hrend der Eingabe angezeigt",loading:"Wird geladen"},Ks={thanks_to:zs,comments:Ds,direction:js,strings:Bs};var Xe={};h(Xe,{comments:()=>Vs,default:()=>Ws,direction:()=>qs,strings:()=>Gs,thanks_to:()=>$s});var $s="George Papadopoulos",Vs="",qs="ltr",Gs={placeholder:"\u0391\u03BD\u03B1\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7",clear_search:"\u039A\u03B1\u03B8\u03B1\u03C1\u03B9\u03C3\u03BC\u03CC\u03C2",load_more:"\u03A6\u03CC\u03C1\u03C4\u03C9\u03C3\u03B7 \u03C0\u03B5\u03C1\u03B9\u03C3\u03C3\u03CC\u03C4\u03B5\u03C1\u03C9\u03BD \u03B1\u03C0\u03BF\u03C4\u03B5\u03BB\u03B5\u03C3\u03BC\u03AC\u03C4\u03C9\u03BD",search_label:"\u0391\u03BD\u03B1\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7 \u03C3\u03B5 \u03B1\u03C5\u03C4\u03CC\u03BD \u03C4\u03BF\u03BD \u03B9\u03C3\u03C4\u03CC\u03C4\u03BF\u03C0\u03BF",filters_label:"\u03A6\u03AF\u03BB\u03C4\u03C1\u03B1",zero_results:"\u0394\u03B5\u03BD \u03B2\u03C1\u03AD\u03B8\u03B7\u03BA\u03B1\u03BD \u03B1\u03C0\u03BF\u03C4\u03B5\u03BB\u03AD\u03C3\u03BC\u03B1\u03C4\u03B1 \u03B3\u03B9\u03B1 [SEARCH_TERM]",many_results:"[COUNT] \u03B1\u03C0\u03BF\u03C4\u03B5\u03BB\u03AD\u03C3\u03BC\u03B1\u03C4\u03B1 \u03B3\u03B9\u03B1 [SEARCH_TERM]",one_result:"[COUNT] \u03B1\u03C0\u03BF\u03C4\u03AD\u03BB\u03B5\u03C3\u03BC\u03B1 \u03B3\u03B9\u03B1 [SEARCH_TERM]",total_zero_results:"\u0394\u03B5\u03BD \u03B2\u03C1\u03AD\u03B8\u03B7\u03BA\u03B1\u03BD \u03B1\u03C0\u03BF\u03C4\u03B5\u03BB\u03AD\u03C3\u03BC\u03B1\u03C4\u03B1",total_one_result:"[COUNT] \u03B1\u03C0\u03BF\u03C4\u03AD\u03BB\u03B5\u03C3\u03BC\u03B1",total_many_results:"[COUNT] \u03B1\u03C0\u03BF\u03C4\u03B5\u03BB\u03AD\u03C3\u03BC\u03B1\u03C4\u03B1",alt_search:"\u0394\u03B5\u03BD \u03B2\u03C1\u03AD\u03B8\u03B7\u03BA\u03B1\u03BD \u03B1\u03C0\u03BF\u03C4\u03B5\u03BB\u03AD\u03C3\u03BC\u03B1\u03C4\u03B1 \u03B3\u03B9\u03B1 [SEARCH_TERM]. \u0395\u03BC\u03C6\u03B1\u03BD\u03AF\u03B6\u03BF\u03BD\u03C4\u03B1\u03B9 \u03B1\u03C0\u03BF\u03C4\u03B5\u03BB\u03AD\u03C3\u03BC\u03B1\u03C4\u03B1 \u03B3\u03B9\u03B1 [DIFFERENT_TERM]",search_suggestion:"\u0394\u03B5\u03BD \u03B2\u03C1\u03AD\u03B8\u03B7\u03BA\u03B1\u03BD \u03B1\u03C0\u03BF\u03C4\u03B5\u03BB\u03AD\u03C3\u03BC\u03B1\u03C4\u03B1 \u03B3\u03B9\u03B1 [SEARCH_TERM]. \u0394\u03BF\u03BA\u03B9\u03BC\u03AC\u03C3\u03C4\u03B5 \u03BC\u03AF\u03B1 \u03B1\u03C0\u03CC \u03C4\u03B9\u03C2 \u03C0\u03B1\u03C1\u03B1\u03BA\u03AC\u03C4\u03C9 \u03B1\u03BD\u03B1\u03B6\u03B7\u03C4\u03AE\u03C3\u03B5\u03B9\u03C2:",searching:"\u0391\u03BD\u03B1\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7 \u03B3\u03B9\u03B1 [SEARCH_TERM]...",results_label:"\u0391\u03C0\u03BF\u03C4\u03B5\u03BB\u03AD\u03C3\u03BC\u03B1\u03C4\u03B1 \u03B1\u03BD\u03B1\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7\u03C2",keyboard_navigate:"\u03C0\u03BB\u03BF\u03AE\u03B3\u03B7\u03C3\u03B7",keyboard_select:"\u03B5\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE",keyboard_clear:"\u03BA\u03B1\u03B8\u03B1\u03C1\u03B9\u03C3\u03BC\u03CC\u03C2",keyboard_close:"\u03BA\u03BB\u03B5\u03AF\u03C3\u03B9\u03BC\u03BF",keyboard_search:"\u03B1\u03BD\u03B1\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7",error_search:"\u0397 \u03B1\u03BD\u03B1\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7 \u03B1\u03C0\u03AD\u03C4\u03C5\u03C7\u03B5",filter_selected_one:"[COUNT] \u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03BF",filter_selected_many:"[COUNT] \u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03B1",input_hint:"\u03A4\u03B1 \u03B1\u03C0\u03BF\u03C4\u03B5\u03BB\u03AD\u03C3\u03BC\u03B1\u03C4\u03B1 \u03B8\u03B1 \u03B5\u03BC\u03C6\u03B1\u03BD\u03AF\u03B6\u03BF\u03BD\u03C4\u03B1\u03B9 \u03BA\u03B1\u03B8\u03CE\u03C2 \u03C0\u03BB\u03B7\u03BA\u03C4\u03C1\u03BF\u03BB\u03BF\u03B3\u03B5\u03AF\u03C4\u03B5",loading:"\u03A6\u03CC\u03C1\u03C4\u03C9\u03C3\u03B7"},Ws={thanks_to:$s,comments:Vs,direction:qs,strings:Gs};var Qe={};h(Qe,{comments:()=>Js,default:()=>Qs,direction:()=>Zs,strings:()=>Xs,thanks_to:()=>Ys});var Ys="Liam Bigelow ",Js="",Zs="ltr",Xs={placeholder:"Search",clear_search:"Clear",load_more:"Load more results",search_label:"Search this site",filters_label:"Filters",zero_results:"No results for [SEARCH_TERM]",many_results:"[COUNT] results for [SEARCH_TERM]",one_result:"[COUNT] result for [SEARCH_TERM]",total_zero_results:"No results",total_one_result:"[COUNT] result",total_many_results:"[COUNT] results",alt_search:"No results for [SEARCH_TERM]. Showing results for [DIFFERENT_TERM] instead",search_suggestion:"No results for [SEARCH_TERM]. Try one of the following searches:",searching:"Searching for [SEARCH_TERM]...",results_label:"Search results",keyboard_navigate:"navigate",keyboard_select:"select",keyboard_clear:"clear",keyboard_close:"close",keyboard_search:"search",error_search:"Search failed",filter_selected_one:"[COUNT] selected",filter_selected_many:"[COUNT] selected",input_hint:"Results will appear as you type",loading:"Loading"},Qs={thanks_to:Ys,comments:Js,direction:Zs,strings:Xs};var et={};h(et,{comments:()=>tr,default:()=>ir,direction:()=>sr,strings:()=>rr,thanks_to:()=>er});var er="Pablo Villaverde ",tr="",sr="ltr",rr={placeholder:"Buscar",clear_search:"Limpiar",load_more:"Ver m\xE1s resultados",search_label:"Buscar en este sitio",filters_label:"Filtros",zero_results:"No se encontraron resultados para [SEARCH_TERM]",many_results:"[COUNT] resultados encontrados para [SEARCH_TERM]",one_result:"[COUNT] resultado encontrado para [SEARCH_TERM]",total_zero_results:"Sin resultados",total_one_result:"[COUNT] resultado",total_many_results:"[COUNT] resultados",alt_search:"No se encontraron resultados para [SEARCH_TERM]. Mostrando en su lugar resultados para [DIFFERENT_TERM]",search_suggestion:"No se encontraron resultados para [SEARCH_TERM]. Prueba una de las siguientes b\xFAsquedas:",searching:"Buscando [SEARCH_TERM]...",results_label:"Resultados de b\xFAsqueda",keyboard_navigate:"navegar",keyboard_select:"elegir",keyboard_clear:"limpiar",keyboard_close:"cerrar",keyboard_search:"buscar",error_search:"Error en la b\xFAsqueda",filter_selected_one:"[COUNT] seleccionado",filter_selected_many:"[COUNT] seleccionados",input_hint:"Los resultados aparecer\xE1n mientras escribe",loading:"Cargando"},ir={thanks_to:er,comments:tr,direction:sr,strings:rr};var tt={};h(tt,{comments:()=>ar,default:()=>cr,direction:()=>lr,strings:()=>or,thanks_to:()=>nr});var nr="Mikel Larreategi ",ar="",lr="ltr",or={placeholder:"Bilatu",clear_search:"Garbitu",load_more:"Kargatu emaitza gehiagi",search_label:"Bilatu",filters_label:"Iragazkiak",zero_results:"Ez dago emaitzarik [SEARCH_TERM] bilaketarentzat",many_results:"[COUNT] emaitza [SEARCH_TERM] bilaketarentzat",one_result:"Emaitza bat [COUNT] [SEARCH_TERM] bilaketarentzat",total_zero_results:"Emaitzarik ez",total_one_result:"[COUNT] emaitza",total_many_results:"[COUNT] emaitza",alt_search:"Ez dago emaitzarik [SEARCH_TERM] bilaketarentzat. [DIFFERENT_TERM] bilaketaren emaitzak erakusten",search_suggestion:"Ez dago emaitzarik [SEARCH_TERM] bilaketarentzat. Saiatu hauetako beste bateikin:",searching:"[SEARCH_TERM] bilatzen...",results_label:"Bilaketaren emaitzak",keyboard_navigate:"nabigatu",keyboard_select:"hautatu",keyboard_clear:"garbitu",keyboard_close:"itxi",keyboard_search:"bilatu",error_search:"Bilaketak huts egin du",filter_selected_one:"[COUNT] hautatuta",filter_selected_many:"[COUNT] hautatuta",input_hint:"Emaitzak idatzi ahala agertuko dira",loading:"Kargatzen"},cr={thanks_to:nr,comments:ar,direction:lr,strings:or};var st={};h(st,{comments:()=>dr,default:()=>mr,direction:()=>hr,strings:()=>pr,thanks_to:()=>ur});var ur="Ali Khaleqi Yekta ",dr="",hr="rtl",pr={placeholder:"\u062C\u0633\u062A\u062C\u0648",clear_search:"\u067E\u0627\u06A9\u0633\u0627\u0632\u06CC",load_more:"\u0628\u0627\u0631\u06AF\u0630\u0627\u0631\u06CC \u0646\u062A\u0627\u06CC\u062C \u0628\u06CC\u0634\u062A\u0631",search_label:"\u062C\u0633\u062A\u062C\u0648 \u062F\u0631 \u0633\u0627\u06CC\u062A",filters_label:"\u0641\u06CC\u0644\u062A\u0631\u0647\u0627",zero_results:"\u0646\u062A\u06CC\u062C\u0647\u200C\u0627\u06CC \u0628\u0631\u0627\u06CC [SEARCH_TERM] \u06CC\u0627\u0641\u062A \u0646\u0634\u062F",many_results:"[COUNT] \u0646\u062A\u06CC\u062C\u0647 \u0628\u0631\u0627\u06CC [SEARCH_TERM] \u06CC\u0627\u0641\u062A \u0634\u062F",one_result:"[COUNT] \u0646\u062A\u06CC\u062C\u0647 \u0628\u0631\u0627\u06CC [SEARCH_TERM] \u06CC\u0627\u0641\u062A \u0634\u062F",total_zero_results:"\u0646\u062A\u06CC\u062C\u0647\u200C\u0627\u06CC \u06CC\u0627\u0641\u062A \u0646\u0634\u062F",total_one_result:"[COUNT] \u0646\u062A\u06CC\u062C\u0647",total_many_results:"[COUNT] \u0646\u062A\u06CC\u062C\u0647",alt_search:"\u0646\u062A\u06CC\u062C\u0647\u200C\u0627\u06CC \u0628\u0631\u0627\u06CC [SEARCH_TERM] \u06CC\u0627\u0641\u062A \u0646\u0634\u062F. \u062F\u0631 \u0639\u0648\u0636 \u0646\u062A\u0627\u06CC\u062C \u0628\u0631\u0627\u06CC [DIFFERENT_TERM] \u0646\u0645\u0627\u06CC\u0634 \u062F\u0627\u062F\u0647 \u0645\u06CC\u200C\u0634\u0648\u062F",search_suggestion:"\u0646\u062A\u06CC\u062C\u0647\u200C\u0627\u06CC \u0628\u0631\u0627\u06CC [SEARCH_TERM] \u06CC\u0627\u0641\u062A \u0646\u0634\u062F. \u06CC\u06A9\u06CC \u0627\u0632 \u062C\u0633\u062A\u062C\u0648\u0647\u0627\u06CC \u0632\u06CC\u0631 \u0631\u0627 \u0627\u0645\u062A\u062D\u0627\u0646 \u06A9\u0646\u06CC\u062F:",searching:"\u062F\u0631 \u062D\u0627\u0644 \u062C\u0633\u062A\u062C\u0648\u06CC [SEARCH_TERM]...",results_label:"\u0646\u062A\u0627\u06CC\u062C \u062C\u0633\u062A\u062C\u0648",keyboard_navigate:"\u067E\u06CC\u0645\u0627\u06CC\u0634",keyboard_select:"\u0627\u0646\u062A\u062E\u0627\u0628",keyboard_clear:"\u067E\u0627\u06A9\u0633\u0627\u0632\u06CC",keyboard_close:"\u0628\u0633\u062A\u0646",keyboard_search:"\u062C\u0633\u062A\u062C\u0648",error_search:"\u062C\u0633\u062A\u062C\u0648 \u0646\u0627\u0645\u0648\u0641\u0642 \u0628\u0648\u062F",filter_selected_one:"[COUNT] \u0627\u0646\u062A\u062E\u0627\u0628 \u0634\u062F\u0647",filter_selected_many:"[COUNT] \u0627\u0646\u062A\u062E\u0627\u0628 \u0634\u062F\u0647",input_hint:"\u0646\u062A\u0627\u06CC\u062C \u0647\u0646\u06AF\u0627\u0645 \u062A\u0627\u06CC\u067E \u0646\u0645\u0627\u06CC\u0634 \u062F\u0627\u062F\u0647 \u0645\u06CC\u200C\u0634\u0648\u0646\u062F",loading:"\u062F\u0631 \u062D\u0627\u0644 \u0628\u0627\u0631\u06AF\u0630\u0627\u0631\u06CC"},mr={thanks_to:ur,comments:dr,direction:hr,strings:pr};var rt={};h(rt,{comments:()=>fr,default:()=>br,direction:()=>gr,strings:()=>Er,thanks_to:()=>_r});var _r="Valtteri Laitinen ",fr="",gr="ltr",Er={placeholder:"Haku",clear_search:"Tyhjenn\xE4",load_more:"Lataa lis\xE4\xE4 tuloksia",search_label:"Hae t\xE4lt\xE4 sivustolta",filters_label:"Suodattimet",zero_results:"Ei tuloksia haulle [SEARCH_TERM]",many_results:"[COUNT] tulosta haulle [SEARCH_TERM]",one_result:"[COUNT] tulos haulle [SEARCH_TERM]",total_zero_results:"Ei tuloksia",total_one_result:"[COUNT] tulos",total_many_results:"[COUNT] tulosta",alt_search:"Ei tuloksia haulle [SEARCH_TERM]. N\xE4ytet\xE4\xE4n tulokset sen sijaan haulle [DIFFERENT_TERM]",search_suggestion:"Ei tuloksia haulle [SEARCH_TERM]. Kokeile jotain seuraavista:",searching:"Haetaan [SEARCH_TERM]...",results_label:"Hakutulokset",keyboard_navigate:"siirry",keyboard_select:"valitse",keyboard_clear:"tyhjenn\xE4",keyboard_close:"sulje",keyboard_search:"hae",error_search:"Haku ep\xE4onnistui",filter_selected_one:"[COUNT] valittu",filter_selected_many:"[COUNT] valittu",input_hint:"Tulokset n\xE4kyv\xE4t kirjoittaessasi",loading:"Ladataan"},br={thanks_to:_r,comments:fr,direction:gr,strings:Er};var it={};h(it,{comments:()=>Cr,default:()=>Rr,direction:()=>yr,strings:()=>vr,thanks_to:()=>Tr});var Tr="Nicolas Friedli ",Cr="",yr="ltr",vr={placeholder:"Rechercher",clear_search:"Nettoyer",load_more:"Charger plus de r\xE9sultats",search_label:"Recherche sur ce site",filters_label:"Filtres",zero_results:"Pas de r\xE9sultat pour [SEARCH_TERM]",many_results:"[COUNT] r\xE9sultats pour [SEARCH_TERM]",one_result:"[COUNT] r\xE9sultat pour [SEARCH_TERM]",total_zero_results:"Pas de r\xE9sultat",total_one_result:"[COUNT] r\xE9sultat",total_many_results:"[COUNT] r\xE9sultats",alt_search:"Pas de r\xE9sultat pour [SEARCH_TERM]. Montre les r\xE9sultats pour [DIFFERENT_TERM] \xE0 la place",search_suggestion:"Pas de r\xE9sultat pour [SEARCH_TERM]. Essayer une des recherches suivantes:",searching:"Recherche [SEARCH_TERM]...",results_label:"R\xE9sultats de recherche",keyboard_navigate:"naviguer",keyboard_select:"choisir",keyboard_clear:"effacer",keyboard_close:"fermer",keyboard_search:"rechercher",error_search:"\xC9chec de la recherche",filter_selected_one:"[COUNT] s\xE9lectionn\xE9",filter_selected_many:"[COUNT] s\xE9lectionn\xE9s",input_hint:"Les r\xE9sultats appara\xEEtront au fur et \xE0 mesure de la saisie",loading:"Chargement"},Rr={thanks_to:Tr,comments:Cr,direction:yr,strings:vr};var nt={};h(nt,{comments:()=>Ar,default:()=>Mr,direction:()=>Sr,strings:()=>Nr,thanks_to:()=>kr});var kr="Pablo Villaverde ",Ar="",Sr="ltr",Nr={placeholder:"Buscar",clear_search:"Limpar",load_more:"Ver m\xE1is resultados",search_label:"Buscar neste sitio",filters_label:"Filtros",zero_results:"Non se atoparon resultados para [SEARCH_TERM]",many_results:"[COUNT] resultados atopados para [SEARCH_TERM]",one_result:"[COUNT] resultado atopado para [SEARCH_TERM]",total_zero_results:"Sen resultados",total_one_result:"[COUNT] resultado",total_many_results:"[COUNT] resultados",alt_search:"Non se atoparon resultados para [SEARCH_TERM]. Amosando no seu lugar resultados para [DIFFERENT_TERM]",search_suggestion:"Non se atoparon resultados para [SEARCH_TERM]. Probe unha das seguintes pesquisas:",searching:"Buscando [SEARCH_TERM]...",results_label:"Resultados da busca",keyboard_navigate:"navegar",keyboard_select:"escoller",keyboard_clear:"limpar",keyboard_close:"pechar",keyboard_search:"buscar",error_search:"Erro na busca",filter_selected_one:"[COUNT] seleccionado",filter_selected_many:"[COUNT] seleccionados",input_hint:"Os resultados aparecer\xE1n mentres escribe",loading:"Cargando"},Mr={thanks_to:kr,comments:Ar,direction:Sr,strings:Nr};var at={};h(at,{comments:()=>xr,default:()=>Ir,direction:()=>Hr,strings:()=>wr,thanks_to:()=>Or});var Or="Nir Tamir ",xr="",Hr="rtl",wr={placeholder:"\u05D7\u05D9\u05E4\u05D5\u05E9",clear_search:"\u05E0\u05D9\u05E7\u05D5\u05D9",load_more:"\u05E2\u05D5\u05D3 \u05EA\u05D5\u05E6\u05D0\u05D5\u05EA",search_label:"\u05D7\u05D9\u05E4\u05D5\u05E9 \u05D1\u05D0\u05EA\u05E8 \u05D6\u05D4",filters_label:"\u05DE\u05E1\u05E0\u05E0\u05D9\u05DD",zero_results:"\u05DC\u05D0 \u05E0\u05DE\u05E6\u05D0\u05D5 \u05EA\u05D5\u05E6\u05D0\u05D5\u05EA \u05E2\u05D1\u05D5\u05E8 [SEARCH_TERM]",many_results:"\u05E0\u05DE\u05E6\u05D0\u05D5 [COUNT] \u05EA\u05D5\u05E6\u05D0\u05D5\u05EA \u05E2\u05D1\u05D5\u05E8 [SEARCH_TERM]",one_result:"\u05E0\u05DE\u05E6\u05D0\u05D4 \u05EA\u05D5\u05E6\u05D0\u05D4 \u05D0\u05D7\u05EA \u05E2\u05D1\u05D5\u05E8 [SEARCH_TERM]",total_zero_results:"\u05DC\u05D0 \u05E0\u05DE\u05E6\u05D0\u05D5 \u05EA\u05D5\u05E6\u05D0\u05D5\u05EA",total_one_result:"\u05EA\u05D5\u05E6\u05D0\u05D4 [COUNT]",total_many_results:"[COUNT] \u05EA\u05D5\u05E6\u05D0\u05D5\u05EA",alt_search:"\u05DC\u05D0 \u05E0\u05DE\u05E6\u05D0\u05D5 \u05EA\u05D5\u05E6\u05D0\u05D5\u05EA \u05E2\u05D1\u05D5\u05E8 [SEARCH_TERM]. \u05DE\u05D5\u05E6\u05D2\u05D5\u05EA \u05EA\u05D5\u05E6\u05D0\u05D5\u05EA \u05E2\u05D1\u05D5\u05E8 [DIFFERENT_TERM]",search_suggestion:"\u05DC\u05D0 \u05E0\u05DE\u05E6\u05D0\u05D5 \u05EA\u05D5\u05E6\u05D0\u05D5\u05EA \u05E2\u05D1\u05D5\u05E8 [SEARCH_TERM]. \u05E0\u05E1\u05D5 \u05D0\u05D7\u05D3 \u05DE\u05D4\u05D7\u05D9\u05E4\u05D5\u05E9\u05D9\u05DD \u05D4\u05D1\u05D0\u05D9\u05DD:",searching:"\u05DE\u05D7\u05E4\u05E9 \u05D0\u05EA [SEARCH_TERM]...",results_label:"\u05EA\u05D5\u05E6\u05D0\u05D5\u05EA \u05D7\u05D9\u05E4\u05D5\u05E9",keyboard_navigate:"\u05E0\u05D9\u05D5\u05D5\u05D8",keyboard_select:"\u05D1\u05D7\u05D9\u05E8\u05D4",keyboard_clear:"\u05E0\u05D9\u05E7\u05D5\u05D9",keyboard_close:"\u05E1\u05D2\u05D9\u05E8\u05D4",keyboard_search:"\u05D7\u05D9\u05E4\u05D5\u05E9",error_search:"\u05D4\u05D7\u05D9\u05E4\u05D5\u05E9 \u05E0\u05DB\u05E9\u05DC",filter_selected_one:"[COUNT] \u05E0\u05D1\u05D7\u05E8",filter_selected_many:"[COUNT] \u05E0\u05D1\u05D7\u05E8\u05D5",input_hint:"\u05D4\u05EA\u05D5\u05E6\u05D0\u05D5\u05EA \u05D9\u05D5\u05E4\u05D9\u05E2\u05D5 \u05EA\u05D5\u05DA \u05DB\u05D3\u05D9 \u05D4\u05E7\u05DC\u05D3\u05D4",loading:"\u05D8\u05D5\u05E2\u05DF"},Ir={thanks_to:Or,comments:xr,direction:Hr,strings:wr};var lt={};h(lt,{comments:()=>Lr,default:()=>zr,direction:()=>Fr,strings:()=>Pr,thanks_to:()=>Ur});var Ur="Amit Yadav ",Lr="",Fr="ltr",Pr={placeholder:"\u0916\u094B\u091C\u0947\u0902",clear_search:"\u0938\u093E\u092B \u0915\u0930\u0947\u0902",load_more:"\u0914\u0930 \u0905\u0927\u093F\u0915 \u092A\u0930\u093F\u0923\u093E\u092E \u0932\u094B\u0921 \u0915\u0930\u0947\u0902",search_label:"\u0907\u0938 \u0938\u093E\u0907\u091F \u092E\u0947\u0902 \u0916\u094B\u091C\u0947\u0902",filters_label:"\u092B\u093C\u093F\u0932\u094D\u091F\u0930",zero_results:"\u0915\u094B\u0908 \u092A\u0930\u093F\u0923\u093E\u092E [SEARCH_TERM] \u0915\u0947 \u0932\u093F\u090F \u0928\u0939\u0940\u0902 \u092E\u093F\u0932\u093E",many_results:"[COUNT] \u092A\u0930\u093F\u0923\u093E\u092E [SEARCH_TERM] \u0915\u0947 \u0932\u093F\u090F \u092E\u093F\u0932\u0947",one_result:"[COUNT] \u092A\u0930\u093F\u0923\u093E\u092E [SEARCH_TERM] \u0915\u0947 \u0932\u093F\u090F \u092E\u093F\u0932\u093E",total_zero_results:"\u0915\u094B\u0908 \u092A\u0930\u093F\u0923\u093E\u092E \u0928\u0939\u0940\u0902",total_one_result:"[COUNT] \u092A\u0930\u093F\u0923\u093E\u092E",total_many_results:"[COUNT] \u092A\u0930\u093F\u0923\u093E\u092E",alt_search:"[SEARCH_TERM] \u0915\u0947 \u0932\u093F\u090F \u0915\u094B\u0908 \u092A\u0930\u093F\u0923\u093E\u092E \u0928\u0939\u0940\u0902 \u092E\u093F\u0932\u093E\u0964 \u0907\u0938\u0915\u0947 \u092C\u091C\u093E\u092F [DIFFERENT_TERM] \u0915\u0947 \u0932\u093F\u090F \u092A\u0930\u093F\u0923\u093E\u092E \u0926\u093F\u0916\u093E \u0930\u0939\u093E \u0939\u0948",search_suggestion:"[SEARCH_TERM] \u0915\u0947 \u0932\u093F\u090F \u0915\u094B\u0908 \u092A\u0930\u093F\u0923\u093E\u092E \u0928\u0939\u0940\u0902 \u092E\u093F\u0932\u093E\u0964 \u0928\u093F\u092E\u094D\u0928\u0932\u093F\u0916\u093F\u0924 \u0916\u094B\u091C\u094B\u0902 \u092E\u0947\u0902 \u0938\u0947 \u0915\u094B\u0908 \u090F\u0915 \u0906\u091C\u093C\u092E\u093E\u090F\u0902:",searching:"[SEARCH_TERM] \u0915\u0940 \u0916\u094B\u091C \u0915\u0940 \u091C\u093E \u0930\u0939\u0940 \u0939\u0948...",results_label:"\u0916\u094B\u091C \u092A\u0930\u093F\u0923\u093E\u092E",keyboard_navigate:"\u0928\u0947\u0935\u093F\u0917\u0947\u091F",keyboard_select:"\u091A\u0941\u0928\u0947\u0902",keyboard_clear:"\u0938\u093E\u092B\u093C \u0915\u0930\u0947\u0902",keyboard_close:"\u092C\u0902\u0926 \u0915\u0930\u0947\u0902",keyboard_search:"\u0916\u094B\u091C\u0947\u0902",error_search:"\u0916\u094B\u091C \u0935\u093F\u092B\u0932",filter_selected_one:"[COUNT] \u091A\u092F\u0928\u093F\u0924",filter_selected_many:"[COUNT] \u091A\u092F\u0928\u093F\u0924",input_hint:"\u091F\u093E\u0907\u092A \u0915\u0930\u0924\u0947 \u0938\u092E\u092F \u092A\u0930\u093F\u0923\u093E\u092E \u0926\u093F\u0916\u093E\u0908 \u0926\u0947\u0902\u0917\u0947",loading:"\u0932\u094B\u0921 \u0939\u094B \u0930\u0939\u093E \u0939\u0948"},zr={thanks_to:Ur,comments:Lr,direction:Fr,strings:Pr};var ot={};h(ot,{comments:()=>jr,default:()=>$r,direction:()=>Br,strings:()=>Kr,thanks_to:()=>Dr});var Dr="Diomed ",jr="",Br="ltr",Kr={placeholder:"Tra\u017Ei",clear_search:"O\u010Disti",load_more:"U\u010Ditaj vi\u0161e rezultata",search_label:"Pretra\u017Ei ovu stranicu",filters_label:"Filteri",zero_results:"Nema rezultata za [SEARCH_TERM]",many_results:"[COUNT] rezultata za [SEARCH_TERM]",one_result:"[COUNT] rezultat za [SEARCH_TERM]",total_zero_results:"Nema rezultata",total_one_result:"[COUNT] rezultat",total_many_results:"[COUNT] rezultata",alt_search:"Nema rezultata za [SEARCH_TERM]. Prikazujem rezultate za [DIFFERENT_TERM]",search_suggestion:"Nema rezultata za [SEARCH_TERM]. Poku\u0161aj s jednom od ovih pretraga:",searching:"Pretra\u017Eujem [SEARCH_TERM]...",results_label:"Rezultati pretrage",keyboard_navigate:"navigiraj",keyboard_select:"odaberi",keyboard_clear:"o\u010Disti",keyboard_close:"zatvori",keyboard_search:"tra\u017Ei",error_search:"Pretraga nije uspjela",filter_selected_one:"[COUNT] odabran",filter_selected_many:"[COUNT] odabranih",input_hint:"Rezultati \u0107e se pojaviti dok tipkate",loading:"U\u010Ditavanje"},$r={thanks_to:Dr,comments:jr,direction:Br,strings:Kr};var ct={};h(ct,{comments:()=>qr,default:()=>Yr,direction:()=>Gr,strings:()=>Wr,thanks_to:()=>Vr});var Vr="Adam Laki ",qr="",Gr="ltr",Wr={placeholder:"Keres\xE9s",clear_search:"T\xF6rl\xE9s",load_more:"Tov\xE1bbi tal\xE1latok bet\xF6lt\xE9se",search_label:"Keres\xE9s az oldalon",filters_label:"Sz\u0171r\xE9s",zero_results:"Nincs tal\xE1lat a(z) [SEARCH_TERM] kifejez\xE9sre",many_results:"[COUNT] db tal\xE1lat a(z) [SEARCH_TERM] kifejez\xE9sre",one_result:"[COUNT] db tal\xE1lat a(z) [SEARCH_TERM] kifejez\xE9sre",total_zero_results:"Nincs tal\xE1lat",total_one_result:"[COUNT] tal\xE1lat",total_many_results:"[COUNT] tal\xE1lat",alt_search:"Nincs tal\xE1lat a(z) [SEARCH_TERM] kifejez\xE9sre. Tal\xE1latok mutat\xE1sa ink\xE1bb a(z) [DIFFERENT_TERM] kifejez\xE9sre",search_suggestion:"Nincs tal\xE1lat a(z) [SEARCH_TERM] kifejez\xE9sre. Pr\xF3b\xE1ld meg a k\xF6vetkez\u0151 keres\xE9sek egyik\xE9t:",searching:"Keres\xE9s a(z) [SEARCH_TERM] kifejez\xE9sre...",results_label:"Keres\xE9si tal\xE1latok",keyboard_navigate:"navig\xE1l\xE1s",keyboard_select:"kiv\xE1laszt\xE1s",keyboard_clear:"t\xF6rl\xE9s",keyboard_close:"bez\xE1r\xE1s",keyboard_search:"keres\xE9s",error_search:"A keres\xE9s sikertelen",filter_selected_one:"[COUNT] kiv\xE1lasztva",filter_selected_many:"[COUNT] kiv\xE1lasztva",input_hint:"A tal\xE1latok g\xE9pel\xE9s k\xF6zben jelennek meg",loading:"Bet\xF6lt\xE9s"},Yr={thanks_to:Vr,comments:qr,direction:Gr,strings:Wr};var ut={};h(ut,{comments:()=>Zr,default:()=>ei,direction:()=>Xr,strings:()=>Qr,thanks_to:()=>Jr});var Jr="Nixentric",Zr="",Xr="ltr",Qr={placeholder:"Cari",clear_search:"Bersihkan",load_more:"Muat lebih banyak hasil",search_label:"Telusuri situs ini",filters_label:"Filter",zero_results:"[SEARCH_TERM] tidak ditemukan",many_results:"Ditemukan [COUNT] hasil untuk [SEARCH_TERM]",one_result:"Ditemukan [COUNT] hasil untuk [SEARCH_TERM]",total_zero_results:"Tidak ada hasil",total_one_result:"[COUNT] hasil",total_many_results:"[COUNT] hasil",alt_search:"[SEARCH_TERM] tidak ditemukan. Menampilkan hasil [DIFFERENT_TERM] sebagai gantinya",search_suggestion:"[SEARCH_TERM] tidak ditemukan. Coba salah satu pencarian berikut ini:",searching:"Mencari [SEARCH_TERM]...",results_label:"Hasil pencarian",keyboard_navigate:"navigasi",keyboard_select:"pilih",keyboard_clear:"bersihkan",keyboard_close:"tutup",keyboard_search:"cari",error_search:"Pencarian gagal",filter_selected_one:"[COUNT] dipilih",filter_selected_many:"[COUNT] dipilih",input_hint:"Hasil akan muncul saat Anda mengetik",loading:"Memuat"},ei={thanks_to:Jr,comments:Zr,direction:Xr,strings:Qr};var dt={};h(dt,{comments:()=>si,default:()=>ni,direction:()=>ri,strings:()=>ii,thanks_to:()=>ti});var ti="Cosette Bruhns Alonso, Andrew Janco ",si="",ri="ltr",ii={placeholder:"Cerca",clear_search:"Cancella la cronologia",load_more:"Mostra pi\xF9 risultati",search_label:"Cerca nel sito",filters_label:"Filtri di ricerca",zero_results:"Nessun risultato per [SEARCH_TERM]",many_results:"[COUNT] risultati per [SEARCH_TERM]",one_result:"[COUNT] risultato per [SEARCH_TERM]",total_zero_results:"Nessun risultato",total_one_result:"[COUNT] risultato",total_many_results:"[COUNT] risultati",alt_search:"Nessun risultato per [SEARCH_TERM]. Mostrando risultati per [DIFFERENT_TERM] come alternativa.",search_suggestion:"Nessun risultato per [SEARCH_TERM]. Prova una delle seguenti ricerche:",searching:"Cercando [SEARCH_TERM]...",results_label:"Risultati della ricerca",keyboard_navigate:"naviga",keyboard_select:"seleziona",keyboard_clear:"cancella",keyboard_close:"chiudi",keyboard_search:"cerca",error_search:"Ricerca fallita",filter_selected_one:"[COUNT] selezionato",filter_selected_many:"[COUNT] selezionati",input_hint:"I risultati appariranno durante la digitazione",loading:"Caricamento"},ni={thanks_to:ti,comments:si,direction:ri,strings:ii};var ht={};h(ht,{comments:()=>li,default:()=>ui,direction:()=>oi,strings:()=>ci,thanks_to:()=>ai});var ai="Tate",li="",oi="ltr",ci={placeholder:"\u691C\u7D22",clear_search:"\u30AF\u30EA\u30A2",load_more:"\u6B21\u3092\u8AAD\u307F\u8FBC\u3080",search_label:"\u3053\u306E\u30B5\u30A4\u30C8\u3092\u691C\u7D22",filters_label:"\u30D5\u30A3\u30EB\u30BF",zero_results:"[SEARCH_TERM]\u306E\u691C\u7D22\u306B\u4E00\u81F4\u3059\u308B\u60C5\u5831\u306F\u3042\u308A\u307E\u305B\u3093\u3067\u3057\u305F",many_results:"[SEARCH_TERM]\u306E[COUNT]\u4EF6\u306E\u691C\u7D22\u7D50\u679C",one_result:"[SEARCH_TERM]\u306E[COUNT]\u4EF6\u306E\u691C\u7D22\u7D50\u679C",total_zero_results:"\u7D50\u679C\u306A\u3057",total_one_result:"[COUNT]\u4EF6\u306E\u7D50\u679C",total_many_results:"[COUNT]\u4EF6\u306E\u7D50\u679C",alt_search:"[SEARCH_TERM]\u306E\u691C\u7D22\u306B\u4E00\u81F4\u3059\u308B\u60C5\u5831\u306F\u3042\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002[DIFFERENT_TERM]\u306E\u691C\u7D22\u7D50\u679C\u3092\u8868\u793A\u3057\u3066\u3044\u307E\u3059",search_suggestion:"[SEARCH_TERM]\u306E\u691C\u7D22\u306B\u4E00\u81F4\u3059\u308B\u60C5\u5831\u306F\u3042\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u6B21\u306E\u3044\u305A\u308C\u304B\u306E\u691C\u7D22\u3092\u8A66\u3057\u3066\u304F\u3060\u3055\u3044",searching:"[SEARCH_TERM]\u3092\u691C\u7D22\u3057\u3066\u3044\u307E\u3059",results_label:"\u691C\u7D22\u7D50\u679C",keyboard_navigate:"\u79FB\u52D5",keyboard_select:"\u9078\u629E",keyboard_clear:"\u30AF\u30EA\u30A2",keyboard_close:"\u9589\u3058\u308B",keyboard_search:"\u691C\u7D22",error_search:"\u691C\u7D22\u306B\u5931\u6557\u3057\u307E\u3057\u305F",filter_selected_one:"[COUNT]\u4EF6\u9078\u629E\u4E2D",filter_selected_many:"[COUNT]\u4EF6\u9078\u629E\u4E2D",input_hint:"\u5165\u529B\u4E2D\u306B\u691C\u7D22\u7D50\u679C\u304C\u8868\u793A\u3055\u308C\u307E\u3059",loading:"\u8AAD\u307F\u8FBC\u307F\u4E2D"},ui={thanks_to:ai,comments:li,direction:oi,strings:ci};var pt={};h(pt,{comments:()=>hi,default:()=>_i,direction:()=>pi,strings:()=>mi,thanks_to:()=>di});var di="Seokho Son ",hi="",pi="ltr",mi={placeholder:"\uAC80\uC0C9\uC5B4",clear_search:"\uBE44\uC6B0\uAE30",load_more:"\uAC80\uC0C9 \uACB0\uACFC \uB354 \uBCF4\uAE30",search_label:"\uC0AC\uC774\uD2B8 \uAC80\uC0C9",filters_label:"\uD544\uD130",zero_results:"[SEARCH_TERM]\uC5D0 \uB300\uD55C \uACB0\uACFC \uC5C6\uC74C",many_results:"[SEARCH_TERM]\uC5D0 \uB300\uD55C \uACB0\uACFC [COUNT]\uAC74",one_result:"[SEARCH_TERM]\uC5D0 \uB300\uD55C \uACB0\uACFC [COUNT]\uAC74",total_zero_results:"\uACB0\uACFC \uC5C6\uC74C",total_one_result:"\uACB0\uACFC [COUNT]\uAC74",total_many_results:"\uACB0\uACFC [COUNT]\uAC74",alt_search:"[SEARCH_TERM]\uC5D0 \uB300\uD55C \uACB0\uACFC \uC5C6\uC74C. [DIFFERENT_TERM]\uC5D0 \uB300\uD55C \uACB0\uACFC",search_suggestion:"[SEARCH_TERM]\uC5D0 \uB300\uD55C \uACB0\uACFC \uC5C6\uC74C. \uCD94\uCC9C \uAC80\uC0C9\uC5B4: ",searching:"[SEARCH_TERM] \uAC80\uC0C9 \uC911...",results_label:"\uAC80\uC0C9 \uACB0\uACFC",keyboard_navigate:"\uC774\uB3D9",keyboard_select:"\uC120\uD0DD",keyboard_clear:"\uBE44\uC6B0\uAE30",keyboard_close:"\uB2EB\uAE30",keyboard_search:"\uAC80\uC0C9",error_search:"\uAC80\uC0C9 \uC2E4\uD328",filter_selected_one:"[COUNT]\uAC1C \uC120\uD0DD\uB428",filter_selected_many:"[COUNT]\uAC1C \uC120\uD0DD\uB428",input_hint:"\uC785\uB825\uD558\uB294 \uB3D9\uC548 \uACB0\uACFC\uAC00 \uD45C\uC2DC\uB429\uB2C8\uB2E4",loading:"\uB85C\uB529 \uC911"},_i={thanks_to:di,comments:hi,direction:pi,strings:mi};var mt={};h(mt,{comments:()=>gi,default:()=>Ti,direction:()=>Ei,strings:()=>bi,thanks_to:()=>fi});var fi="",gi="",Ei="ltr",bi={placeholder:"Rapu",clear_search:"Whakakore",load_more:"Whakauta \u0113tahi otinga k\u0113",search_label:"Rapu",filters_label:"T\u0101tari",zero_results:"Otinga kore ki [SEARCH_TERM]",many_results:"[COUNT] otinga ki [SEARCH_TERM]",one_result:"[COUNT] otinga ki [SEARCH_TERM]",total_zero_results:"K\u0101ore he otinga",total_one_result:"[COUNT] otinga",total_many_results:"[COUNT] ng\u0101 otinga",alt_search:"Otinga kore ki [SEARCH_TERM]. Otinga k\u0113 ki [DIFFERENT_TERM]",search_suggestion:"Otinga kore ki [SEARCH_TERM]. whakam\u0101tau ki ng\u0101 mea atu:",searching:"Rapu ki [SEARCH_TERM]...",results_label:"Ng\u0101 otinga rapu",keyboard_navigate:"whakatere",keyboard_select:"t\u012Bpako",keyboard_clear:"whakakore",keyboard_close:"kati",keyboard_search:"rapu",error_search:"K\u0101ore i eke te rapu",filter_selected_one:"[COUNT] kua t\u012Bpakohia",filter_selected_many:"[COUNT] kua t\u012Bpakohia",input_hint:"Ka puta ng\u0101 otinga i a koe e patopato ana",loading:"E uta ana"},Ti={thanks_to:fi,comments:gi,direction:Ei,strings:bi};var _t={};h(_t,{comments:()=>yi,default:()=>ki,direction:()=>vi,strings:()=>Ri,thanks_to:()=>Ci});var Ci="Harry Min Khant ",yi="",vi="ltr",Ri={placeholder:"\u101B\u103E\u102C\u101B\u1014\u103A",clear_search:"\u101B\u103E\u102C\u1016\u103D\u1031\u1019\u103E\u102F\u1000\u102D\u102F \u101B\u103E\u1004\u103A\u1038\u101C\u1004\u103A\u1038\u1015\u102B\u104B",load_more:"\u1014\u1031\u102C\u1000\u103A\u1011\u1015\u103A\u101B\u101C\u1012\u103A\u1019\u103B\u102C\u1038\u1000\u102D\u102F \u1010\u1004\u103A\u1015\u102B\u104B",search_label:"\u1024\u1006\u102D\u102F\u1000\u103A\u1010\u103D\u1004\u103A\u101B\u103E\u102C\u1016\u103D\u1031\u1015\u102B\u104B",filters_label:"\u1005\u1005\u103A\u1011\u102F\u1010\u103A\u1019\u103E\u102F\u1019\u103B\u102C\u1038",zero_results:"[SEARCH_TERM] \u1021\u1010\u103D\u1000\u103A \u101B\u101C\u1012\u103A\u1019\u103B\u102C\u1038 \u1019\u101B\u103E\u102D\u1015\u102B",many_results:"[SEARCH_TERM] \u1021\u1010\u103D\u1000\u103A \u101B\u101C\u1012\u103A [COUNT] \u1001\u102F",one_result:"[SEARCH_TERM] \u1021\u1010\u103D\u1000\u103A \u101B\u101C\u1012\u103A [COUNT]",total_zero_results:"\u101B\u101C\u1012\u103A\u1019\u103B\u102C\u1038 \u1019\u101B\u103E\u102D\u1015\u102B",total_one_result:"\u101B\u101C\u1012\u103A [COUNT] \u1001\u102F",total_many_results:"\u101B\u101C\u1012\u103A [COUNT] \u1001\u102F",alt_search:"[SEARCH_TERM] \u1021\u1010\u103D\u1000\u103A \u101B\u101C\u1012\u103A\u1019\u101B\u103E\u102D\u1015\u102B\u104B \u104E\u1004\u103A\u1038\u1021\u1005\u102C\u1038 [DIFFERENT_TERM] \u1021\u1010\u103D\u1000\u103A \u101B\u101C\u1012\u103A\u1019\u103B\u102C\u1038\u1000\u102D\u102F \u1015\u103C\u101E\u101E\u100A\u103A\u104B",search_suggestion:"[SEARCH_TERM] \u1021\u1010\u103D\u1000\u103A \u101B\u101C\u1012\u103A\u1019\u101B\u103E\u102D\u1015\u102B\u104B \u1021\u1031\u102C\u1000\u103A\u1015\u102B\u101B\u103E\u102C\u1016\u103D\u1031\u1019\u103E\u102F\u1019\u103B\u102C\u1038\u1011\u1032\u1019\u103E \u1010\u1005\u103A\u1001\u102F\u1000\u102D\u102F \u1005\u1019\u103A\u1038\u1000\u103C\u100A\u1037\u103A\u1015\u102B:",searching:"[SEARCH_TERM] \u1000\u102D\u102F \u101B\u103E\u102C\u1016\u103D\u1031\u1014\u1031\u101E\u100A\u103A...",results_label:"\u101B\u103E\u102C\u1016\u103D\u1031\u1019\u103E\u102F \u101B\u101C\u1012\u103A\u1019\u103B\u102C\u1038",keyboard_navigate:"\u101C\u1019\u103A\u1038\u100A\u103D\u103E\u1014\u103A",keyboard_select:"\u101B\u103D\u1031\u1038\u1001\u103B\u101A\u103A",keyboard_clear:"\u101B\u103E\u1004\u103A\u1038\u101C\u1004\u103A\u1038",keyboard_close:"\u1015\u102D\u1010\u103A",keyboard_search:"\u101B\u103E\u102C\u101B\u1014\u103A",error_search:"\u101B\u103E\u102C\u1016\u103D\u1031\u1019\u103E\u102F \u1019\u1021\u1031\u102C\u1004\u103A\u1019\u103C\u1004\u103A\u1015\u102B",filter_selected_one:"[COUNT] \u1001\u102F \u101B\u103D\u1031\u1038\u1001\u103B\u101A\u103A\u1011\u102C\u1038\u101E\u100A\u103A",filter_selected_many:"[COUNT] \u1001\u102F \u101B\u103D\u1031\u1038\u1001\u103B\u101A\u103A\u1011\u102C\u1038\u101E\u100A\u103A",input_hint:"\u101B\u102D\u102F\u1000\u103A\u1014\u1031\u1005\u1009\u103A \u101B\u101C\u1012\u103A\u1019\u103B\u102C\u1038 \u1015\u1031\u102B\u103A\u101C\u102C\u1015\u102B\u1019\u100A\u103A",loading:"\u1010\u1004\u103A\u1014\u1031\u101E\u100A\u103A"},ki={thanks_to:Ci,comments:yi,direction:vi,strings:Ri};var ft={};h(ft,{comments:()=>Si,default:()=>Oi,direction:()=>Ni,strings:()=>Mi,thanks_to:()=>Ai});var Ai="Eirik Mikkelsen",Si="",Ni="ltr",Mi={placeholder:"S\xF8k",clear_search:"Fjern",load_more:"Last flere resultater",search_label:"S\xF8k p\xE5 denne siden",filters_label:"Filtre",zero_results:"Ingen resultater for [SEARCH_TERM]",many_results:"[COUNT] resultater for [SEARCH_TERM]",one_result:"[COUNT] resultat for [SEARCH_TERM]",total_zero_results:"Ingen resultater",total_one_result:"[COUNT] resultat",total_many_results:"[COUNT] resultater",alt_search:"Ingen resultater for [SEARCH_TERM]. Viser resultater for [DIFFERENT_TERM] i stedet",search_suggestion:"Ingen resultater for [SEARCH_TERM]. Pr\xF8v en av disse s\xF8keordene i stedet:",searching:"S\xF8ker etter [SEARCH_TERM]",results_label:"S\xF8keresultater",keyboard_navigate:"naviger",keyboard_select:"velg",keyboard_clear:"fjern",keyboard_close:"lukk",keyboard_search:"s\xF8k",error_search:"S\xF8k feilet",filter_selected_one:"[COUNT] valgt",filter_selected_many:"[COUNT] valgte",input_hint:"Resultater vises mens du skriver",loading:"Laster"},Oi={thanks_to:Ai,comments:Si,direction:Ni,strings:Mi};var gt={};h(gt,{comments:()=>Hi,default:()=>Ui,direction:()=>wi,strings:()=>Ii,thanks_to:()=>xi});var xi="Paul van Brouwershaven",Hi="",wi="ltr",Ii={placeholder:"Zoeken",clear_search:"Reset",load_more:"Meer resultaten laden",search_label:"Doorzoek deze site",filters_label:"Filters",zero_results:"Geen resultaten voor [SEARCH_TERM]",many_results:"[COUNT] resultaten voor [SEARCH_TERM]",one_result:"[COUNT] resultaat voor [SEARCH_TERM]",total_zero_results:"Geen resultaten",total_one_result:"[COUNT] resultaat",total_many_results:"[COUNT] resultaten",alt_search:"Geen resultaten voor [SEARCH_TERM]. In plaats daarvan worden resultaten voor [DIFFERENT_TERM] weergegeven",search_suggestion:"Geen resultaten voor [SEARCH_TERM]. Probeer een van de volgende zoekopdrachten:",searching:"Zoeken naar [SEARCH_TERM]...",results_label:"Zoekresultaten",keyboard_navigate:"navigeren",keyboard_select:"selecteren",keyboard_clear:"wissen",keyboard_close:"sluiten",keyboard_search:"zoeken",error_search:"Zoeken mislukt",filter_selected_one:"[COUNT] geselecteerd",filter_selected_many:"[COUNT] geselecteerd",input_hint:"Resultaten verschijnen terwijl u typt",loading:"Laden"},Ui={thanks_to:xi,comments:Hi,direction:wi,strings:Ii};var Et={};h(Et,{comments:()=>Fi,default:()=>Di,direction:()=>Pi,strings:()=>zi,thanks_to:()=>Li});var Li="Eirik Mikkelsen",Fi="",Pi="ltr",zi={placeholder:"S\xF8k",clear_search:"Fjern",load_more:"Last fleire resultat",search_label:"S\xF8k p\xE5 denne sida",filters_label:"Filter",zero_results:"Ingen resultat for [SEARCH_TERM]",many_results:"[COUNT] resultat for [SEARCH_TERM]",one_result:"[COUNT] resultat for [SEARCH_TERM]",total_zero_results:"Ingen resultat",total_one_result:"[COUNT] resultat",total_many_results:"[COUNT] resultat",alt_search:"Ingen resultat for [SEARCH_TERM]. Viser resultat for [DIFFERENT_TERM] i staden",search_suggestion:"Ingen resultat for [SEARCH_TERM]. Pr\xF8v eitt av desse s\xF8keorda i staden:",searching:"S\xF8ker etter [SEARCH_TERM]",results_label:"S\xF8keresultat",keyboard_navigate:"naviger",keyboard_select:"vel",keyboard_clear:"fjern",keyboard_close:"lukk",keyboard_search:"s\xF8k",error_search:"S\xF8k feila",filter_selected_one:"[COUNT] vald",filter_selected_many:"[COUNT] valde",input_hint:"Resultat visast medan du skriv",loading:"Lastar"},Di={thanks_to:Li,comments:Fi,direction:Pi,strings:zi};var bt={};h(bt,{comments:()=>Bi,default:()=>Vi,direction:()=>Ki,strings:()=>$i,thanks_to:()=>ji});var ji="Christopher Wingate",Bi="",Ki="ltr",$i={placeholder:"S\xF8k",clear_search:"Fjern",load_more:"Last flere resultater",search_label:"S\xF8k p\xE5 denne siden",filters_label:"Filtre",zero_results:"Ingen resultater for [SEARCH_TERM]",many_results:"[COUNT] resultater for [SEARCH_TERM]",one_result:"[COUNT] resultat for [SEARCH_TERM]",total_zero_results:"Ingen resultater",total_one_result:"[COUNT] resultat",total_many_results:"[COUNT] resultater",alt_search:"Ingen resultater for [SEARCH_TERM]. Viser resultater for [DIFFERENT_TERM] i stedet",search_suggestion:"Ingen resultater for [SEARCH_TERM]. Pr\xF8v en av disse s\xF8keordene i stedet:",searching:"S\xF8ker etter [SEARCH_TERM]",results_label:"S\xF8keresultater",keyboard_navigate:"naviger",keyboard_select:"velg",keyboard_clear:"fjern",keyboard_close:"lukk",keyboard_search:"s\xF8k",error_search:"S\xF8k feilet",filter_selected_one:"[COUNT] valgt",filter_selected_many:"[COUNT] valgte",input_hint:"Resultater vises mens du skriver",loading:"Laster"},Vi={thanks_to:ji,comments:Bi,direction:Ki,strings:$i};var Tt={};h(Tt,{comments:()=>Gi,default:()=>Ji,direction:()=>Wi,strings:()=>Yi,thanks_to:()=>qi});var qi="",Gi="",Wi="ltr",Yi={placeholder:"Szukaj",clear_search:"Wyczy\u015B\u0107",load_more:"Za\u0142aduj wi\u0119cej",search_label:"Przeszukaj t\u0119 stron\u0119",filters_label:"Filtry",zero_results:"Brak wynik\xF3w dla [SEARCH_TERM]",many_results:"[COUNT] wynik\xF3w dla [SEARCH_TERM]",one_result:"[COUNT] wynik dla [SEARCH_TERM]",total_zero_results:"Brak wynik\xF3w",total_one_result:"[COUNT] wynik",total_many_results:"[COUNT] wynik\xF3w",alt_search:"Brak wynik\xF3w dla [SEARCH_TERM]. Wy\u015Bwietlam wyniki dla [DIFFERENT_TERM]",search_suggestion:"Brak wynik\xF3w dla [SEARCH_TERM]. Pokrewne wyniki wyszukiwania:",searching:"Szukam [SEARCH_TERM]...",results_label:"Wyniki wyszukiwania",keyboard_navigate:"nawiguj",keyboard_select:"wybierz",keyboard_clear:"wyczy\u015B\u0107",keyboard_close:"zamknij",keyboard_search:"szukaj",error_search:"Wyszukiwanie nie powiod\u0142o si\u0119",filter_selected_one:"[COUNT] wybrany",filter_selected_many:"[COUNT] wybranych",input_hint:"Wyniki pojawi\u0105 si\u0119 podczas pisania",loading:"\u0141adowanie"},Ji={thanks_to:qi,comments:Gi,direction:Wi,strings:Yi};var Ct={};h(Ct,{comments:()=>Xi,default:()=>tn,direction:()=>Qi,strings:()=>en,thanks_to:()=>Zi});var Zi="Jonatah",Xi="",Qi="ltr",en={placeholder:"Pesquisar",clear_search:"Limpar",load_more:"Ver mais resultados",search_label:"Pesquisar",filters_label:"Filtros",zero_results:"Nenhum resultado encontrado para [SEARCH_TERM]",many_results:"[COUNT] resultados encontrados para [SEARCH_TERM]",one_result:"[COUNT] resultado encontrado para [SEARCH_TERM]",total_zero_results:"Nenhum resultado",total_one_result:"[COUNT] resultado",total_many_results:"[COUNT] resultados",alt_search:"Nenhum resultado encontrado para [SEARCH_TERM]. Exibindo resultados para [DIFFERENT_TERM]",search_suggestion:"Nenhum resultado encontrado para [SEARCH_TERM]. Tente uma das seguintes pesquisas:",searching:"Pesquisando por [SEARCH_TERM]...",results_label:"Resultados da pesquisa",keyboard_navigate:"navegar",keyboard_select:"selecionar",keyboard_clear:"limpar",keyboard_close:"fechar",keyboard_search:"pesquisar",error_search:"Falha na pesquisa",filter_selected_one:"[COUNT] selecionado",filter_selected_many:"[COUNT] selecionados",input_hint:"Os resultados aparecer\xE3o enquanto voc\xEA digita",loading:"Carregando"},tn={thanks_to:Zi,comments:Xi,direction:Qi,strings:en};var yt={};h(yt,{comments:()=>rn,default:()=>ln,direction:()=>nn,strings:()=>an,thanks_to:()=>sn});var sn="Bogdan Mateescu ",rn="",nn="ltr",an={placeholder:"C\u0103utare",clear_search:"\u015Eterge\u0163i",load_more:"\xCEnc\u0103rca\u021Bi mai multe rezultate",search_label:"C\u0103uta\u021Bi \xEEn acest site",filters_label:"Filtre",zero_results:"Niciun rezultat pentru [SEARCH_TERM]",many_results:"[COUNT] rezultate pentru [SEARCH_TERM]",one_result:"[COUNT] rezultat pentru [SEARCH_TERM]",total_zero_results:"Niciun rezultat",total_one_result:"[COUNT] rezultat",total_many_results:"[COUNT] rezultate",alt_search:"Niciun rezultat pentru [SEARCH_TERM]. Se afi\u0219eaz\u0103 \xEEn schimb rezultatele pentru [DIFFERENT_TERM]",search_suggestion:"Niciun rezultat pentru [SEARCH_TERM]. \xCEncerca\u021Bi una dintre urm\u0103toarele c\u0103ut\u0103ri:",searching:"Se caut\u0103 dup\u0103: [SEARCH_TERM]...",results_label:"Rezultatele c\u0103ut\u0103rii",keyboard_navigate:"navigare",keyboard_select:"selectare",keyboard_clear:"\u0219tergere",keyboard_close:"\xEEnchidere",keyboard_search:"c\u0103utare",error_search:"C\u0103utarea a e\u0219uat",filter_selected_one:"[COUNT] selectat",filter_selected_many:"[COUNT] selectate",input_hint:"Rezultatele vor ap\u0103rea pe m\u0103sur\u0103 ce tasta\u021Bi",loading:"Se \xEEncarc\u0103"},ln={thanks_to:sn,comments:rn,direction:nn,strings:an};var vt={};h(vt,{comments:()=>cn,default:()=>hn,direction:()=>un,strings:()=>dn,thanks_to:()=>on});var on="Aleksandr Gordeev",cn="",un="ltr",dn={placeholder:"\u041F\u043E\u0438\u0441\u043A",clear_search:"\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u043F\u043E\u043B\u0435",load_more:"\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u0435\u0449\u0435",search_label:"\u041F\u043E\u0438\u0441\u043A \u043F\u043E \u0441\u0430\u0439\u0442\u0443",filters_label:"\u0424\u0438\u043B\u044C\u0442\u0440\u044B",zero_results:"\u041D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E \u043F\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0443: [SEARCH_TERM]",many_results:"[COUNT] \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u0432 \u043F\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0443: [SEARCH_TERM]",one_result:"[COUNT] \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442 \u043F\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0443: [SEARCH_TERM]",total_zero_results:"\u041D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E",total_one_result:"[COUNT] \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442",total_many_results:"[COUNT] \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u0432",alt_search:"\u041D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E \u043F\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0443: [SEARCH_TERM]. \u041F\u043E\u043A\u0430\u0437\u0430\u043D\u044B \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u044B \u043F\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0443: [DIFFERENT_TERM]",search_suggestion:"\u041D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E \u043F\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0443: [SEARCH_TERM]. \u041F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u043E\u0434\u0438\u043D \u0438\u0437 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0445 \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u043E\u0432",searching:"\u041F\u043E\u0438\u0441\u043A \u043F\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0443: [SEARCH_TERM]",results_label:"\u0420\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u044B \u043F\u043E\u0438\u0441\u043A\u0430",keyboard_navigate:"\u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044F",keyboard_select:"\u0432\u044B\u0431\u0440\u0430\u0442\u044C",keyboard_clear:"\u043E\u0447\u0438\u0441\u0442\u0438\u0442\u044C",keyboard_close:"\u0437\u0430\u043A\u0440\u044B\u0442\u044C",keyboard_search:"\u043F\u043E\u0438\u0441\u043A",error_search:"\u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u043E\u0438\u0441\u043A\u0430",filter_selected_one:"[COUNT] \u0432\u044B\u0431\u0440\u0430\u043D",filter_selected_many:"[COUNT] \u0432\u044B\u0431\u0440\u0430\u043D\u043E",input_hint:"\u0420\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u044B \u0431\u0443\u0434\u0443\u0442 \u043F\u043E\u044F\u0432\u043B\u044F\u0442\u044C\u0441\u044F \u043F\u043E \u043C\u0435\u0440\u0435 \u0432\u0432\u043E\u0434\u0430",loading:"\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430"},hn={thanks_to:on,comments:cn,direction:un,strings:dn};var Rt={};h(Rt,{comments:()=>mn,default:()=>gn,direction:()=>_n,strings:()=>fn,thanks_to:()=>pn});var pn="Andrija Sagicc",mn="",_n="ltr",fn={placeholder:"\u041F\u0440\u0435\u0442\u0440\u0430\u0433\u0430",clear_search:"\u0411\u0440\u0438\u0441\u0430\u045A\u0435",load_more:"\u041F\u0440\u0438\u043A\u0430\u0437 \u0432\u0438\u0448\u0435 \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0430",search_label:"\u041F\u0440\u0435\u0442\u0440\u0430\u0433\u0430 \u0441\u0430\u0458\u0442\u0430",filters_label:"\u0424\u0438\u043B\u0442\u0435\u0440\u0438",zero_results:"\u041D\u0435\u043C\u0430 \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0430 \u0437\u0430 [SEARCH_TERM]",many_results:"[COUNT] \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0430 \u0437\u0430 [SEARCH_TERM]",one_result:"[COUNT] \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0430 \u0437\u0430 [SEARCH_TERM]",total_zero_results:"\u041D\u0435\u043C\u0430 \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0430",total_one_result:"[COUNT] \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442",total_many_results:"[COUNT] \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0430",alt_search:"\u041D\u0435\u043C\u0430 \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0430 \u0437\u0430 [SEARCH_TERM]. \u041F\u0440\u0438\u043A\u0430\u0437 \u0434\u043E\u0434\u0430\u0442\u043D\u0438\u043A \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0430 \u0437\u0430 [DIFFERENT_TERM]",search_suggestion:"\u041D\u0435\u043C\u0430 \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0430 \u0437\u0430 [SEARCH_TERM]. \u041F\u043E\u043A\u0443\u0448\u0430\u0458\u0442\u0435 \u0441\u0430 \u043D\u0435\u043A\u043E\u043C \u043E\u0434 \u0441\u043B\u0435\u0434\u0435\u045B\u0438\u0445 \u043F\u0440\u0435\u0442\u0440\u0430\u0433\u0430:",searching:"\u041F\u0440\u0435\u0442\u0440\u0430\u0433\u0430 \u0442\u0435\u0440\u043C\u0438\u043D\u0430 [SEARCH_TERM]...",results_label:"\u0420\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0438 \u043F\u0440\u0435\u0442\u0440\u0430\u0433\u0435",keyboard_navigate:"\u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0458\u0430",keyboard_select:"\u0438\u0437\u0430\u0431\u0435\u0440\u0438",keyboard_clear:"\u043E\u0431\u0440\u0438\u0448\u0438",keyboard_close:"\u0437\u0430\u0442\u0432\u043E\u0440\u0438",keyboard_search:"\u043F\u0440\u0435\u0442\u0440\u0430\u0433\u0430",error_search:"\u041F\u0440\u0435\u0442\u0440\u0430\u0433\u0430 \u043D\u0438\u0458\u0435 \u0443\u0441\u043F\u0435\u043B\u0430",filter_selected_one:"[COUNT] \u0438\u0437\u0430\u0431\u0440\u0430\u043D",filter_selected_many:"[COUNT] \u0438\u0437\u0430\u0431\u0440\u0430\u043D\u0438\u0445",input_hint:"\u0420\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0438 \u045B\u0435 \u0441\u0435 \u043F\u043E\u0458\u0430\u0432\u0459\u0438\u0432\u0430\u0442\u0438 \u0434\u043E\u043A \u043A\u0443\u0446\u0430\u0442\u0435",loading:"\u0423\u0447\u0438\u0442\u0430\u0432\u0430\u045A\u0435"},gn={thanks_to:pn,comments:mn,direction:_n,strings:fn};var kt={};h(kt,{comments:()=>bn,default:()=>yn,direction:()=>Tn,strings:()=>Cn,thanks_to:()=>En});var En="Montazar Al-Jaber ",bn="",Tn="ltr",Cn={placeholder:"S\xF6k",clear_search:"Rensa",load_more:"Visa fler tr\xE4ffar",search_label:"S\xF6k p\xE5 denna sida",filters_label:"Filter",zero_results:"[SEARCH_TERM] gav inga tr\xE4ffar",many_results:"[SEARCH_TERM] gav [COUNT] tr\xE4ffar",one_result:"[SEARCH_TERM] gav [COUNT] tr\xE4ff",total_zero_results:"Inga tr\xE4ffar",total_one_result:"[COUNT] tr\xE4ff",total_many_results:"[COUNT] tr\xE4ffar",alt_search:"[SEARCH_TERM] gav inga tr\xE4ffar. Visar resultat f\xF6r [DIFFERENT_TERM] ist\xE4llet",search_suggestion:"[SEARCH_TERM] gav inga tr\xE4ffar. F\xF6rs\xF6k igen med en av f\xF6ljande s\xF6kord:",searching:"S\xF6ker efter [SEARCH_TERM]...",results_label:"S\xF6kresultat",keyboard_navigate:"navigera",keyboard_select:"v\xE4lj",keyboard_clear:"rensa",keyboard_close:"st\xE4ng",keyboard_search:"s\xF6k",error_search:"S\xF6kningen misslyckades",filter_selected_one:"[COUNT] vald",filter_selected_many:"[COUNT] valda",input_hint:"Resultat visas medan du skriver",loading:"L\xE4ser in"},yn={thanks_to:En,comments:bn,direction:Tn,strings:Cn};var At={};h(At,{comments:()=>Rn,default:()=>Sn,direction:()=>kn,strings:()=>An,thanks_to:()=>vn});var vn="Anonymous",Rn="",kn="ltr",An={placeholder:"Tafuta",clear_search:"Futa",load_more:"Pakia matokeo zaidi",search_label:"Tafuta tovuti hii",filters_label:"Vichujio",zero_results:"Hakuna matokeo ya [SEARCH_TERM]",many_results:"Matokeo [COUNT] ya [SEARCH_TERM]",one_result:"Tokeo [COUNT] la [SEARCH_TERM]",total_zero_results:"Hakuna matokeo",total_one_result:"Tokeo [COUNT]",total_many_results:"Matokeo [COUNT]",alt_search:"Hakuna mayokeo ya [SEARCH_TERM]. Badala yake, inaonyesha matokeo ya [DIFFERENT_TERM]",search_suggestion:"Hakuna matokeo ya [SEARCH_TERM]. Jaribu mojawapo ya utafutaji ufuatao:",searching:"Kutafuta [SEARCH_TERM]...",results_label:"Matokeo ya utafutaji",keyboard_navigate:"sogeza",keyboard_select:"chagua",keyboard_clear:"futa",keyboard_close:"funga",keyboard_search:"tafuta",error_search:"Utafutaji umeshindwa",filter_selected_one:"[COUNT] imechaguliwa",filter_selected_many:"[COUNT] zimechaguliwa",input_hint:"Matokeo yataonekana unapoandika",loading:"Inapakia"},Sn={thanks_to:vn,comments:Rn,direction:kn,strings:An};var St={};h(St,{comments:()=>Mn,default:()=>Hn,direction:()=>On,strings:()=>xn,thanks_to:()=>Nn});var Nn="",Mn="",On="ltr",xn={placeholder:"\u0BA4\u0BC7\u0B9F\u0BC1\u0B95",clear_search:"\u0B85\u0BB4\u0BBF\u0B95\u0BCD\u0B95\u0BC1\u0B95",load_more:"\u0BAE\u0BC7\u0BB2\u0BC1\u0BAE\u0BCD \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1\u0B95\u0BB3\u0BC8\u0B95\u0BCD \u0B95\u0BBE\u0B9F\u0BCD\u0B9F\u0BC1\u0B95",search_label:"\u0B87\u0BA8\u0BCD\u0BA4 \u0BA4\u0BB3\u0BA4\u0BCD\u0BA4\u0BBF\u0BB2\u0BCD \u0BA4\u0BC7\u0B9F\u0BC1\u0B95",filters_label:"\u0BB5\u0B9F\u0BBF\u0B95\u0B9F\u0BCD\u0B9F\u0BB2\u0BCD\u0B95\u0BB3\u0BCD",zero_results:"[SEARCH_TERM] \u0B95\u0BCD\u0B95\u0BBE\u0BA9 \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1\u0B95\u0BB3\u0BCD \u0B87\u0BB2\u0BCD\u0BB2\u0BC8",many_results:"[SEARCH_TERM] \u0B95\u0BCD\u0B95\u0BBE\u0BA9 [COUNT] \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1\u0B95\u0BB3\u0BCD",one_result:"[SEARCH_TERM] \u0B95\u0BCD\u0B95\u0BBE\u0BA9 \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1",total_zero_results:"\u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1\u0B95\u0BB3\u0BCD \u0B87\u0BB2\u0BCD\u0BB2\u0BC8",total_one_result:"[COUNT] \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1",total_many_results:"[COUNT] \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1\u0B95\u0BB3\u0BCD",alt_search:"[SEARCH_TERM] \u0B87\u0BA4\u0BCD\u0BA4\u0BC7\u0B9F\u0BB2\u0BC1\u0B95\u0BCD\u0B95\u0BBE\u0BA9 \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1\u0B95\u0BB3\u0BCD \u0B87\u0BB2\u0BCD\u0BB2\u0BC8, \u0B87\u0BA8\u0BCD\u0BA4 \u0BA4\u0BC7\u0B9F\u0BB2\u0BCD\u0B95\u0BB3\u0BC1\u0B95\u0BCD\u0B95\u0BBE\u0BA9 \u0B92\u0BA4\u0BCD\u0BA4 \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1\u0B95\u0BB3\u0BCD [DIFFERENT_TERM]",search_suggestion:"[SEARCH_TERM] \u0B87\u0BA4\u0BCD \u0BA4\u0BC7\u0B9F\u0BB2\u0BC1\u0B95\u0BCD\u0B95\u0BBE\u0BA9 \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1\u0B95\u0BB3\u0BCD \u0B87\u0BB2\u0BCD\u0BB2\u0BC8.\u0B87\u0BA4\u0BB1\u0BCD\u0B95\u0BC1 \u0BAA\u0BA4\u0BBF\u0BB2\u0BC0\u0B9F\u0BBE\u0BA9 \u0BA4\u0BC7\u0B9F\u0BB2\u0BCD\u0B95\u0BB3\u0BC8 \u0BA4\u0BC7\u0B9F\u0BC1\u0B95:",searching:"[SEARCH_TERM] \u0BA4\u0BC7\u0B9F\u0BAA\u0BCD\u0BAA\u0B9F\u0BC1\u0B95\u0BBF\u0BA9\u0BCD\u0BB1\u0BA4\u0BC1",results_label:"\u0BA4\u0BC7\u0B9F\u0BB2\u0BCD \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1\u0B95\u0BB3\u0BCD",keyboard_navigate:"\u0BB5\u0BB4\u0BBF\u0BA8\u0B9F\u0BA4\u0BCD\u0BA4\u0BC1",keyboard_select:"\u0BA4\u0BC7\u0BB0\u0BCD\u0BA8\u0BCD\u0BA4\u0BC6\u0B9F\u0BC1",keyboard_clear:"\u0B85\u0BB4\u0BBF",keyboard_close:"\u0BAE\u0BC2\u0B9F\u0BC1",keyboard_search:"\u0BA4\u0BC7\u0B9F\u0BC1",error_search:"\u0BA4\u0BC7\u0B9F\u0BB2\u0BCD \u0BA4\u0BCB\u0BB2\u0BCD\u0BB5\u0BBF",filter_selected_one:"[COUNT] \u0BA4\u0BC7\u0BB0\u0BCD\u0BA8\u0BCD\u0BA4\u0BC6\u0B9F\u0BC1\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1",filter_selected_many:"[COUNT] \u0BA4\u0BC7\u0BB0\u0BCD\u0BA8\u0BCD\u0BA4\u0BC6\u0B9F\u0BC1\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA9",input_hint:"\u0BA8\u0BC0\u0B99\u0BCD\u0B95\u0BB3\u0BCD \u0BA4\u0B9F\u0BCD\u0B9F\u0B9A\u0BCD\u0B9A\u0BC1 \u0B9A\u0BC6\u0BAF\u0BCD\u0BAF\u0BC1\u0BAE\u0BCD\u0BAA\u0BCB\u0BA4\u0BC1 \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1\u0B95\u0BB3\u0BCD \u0BA4\u0BCB\u0BA9\u0BCD\u0BB1\u0BC1\u0BAE\u0BCD",loading:"\u0B8F\u0BB1\u0BCD\u0BB1\u0BC1\u0B95\u0BBF\u0BB1\u0BA4\u0BC1"},Hn={thanks_to:Nn,comments:Mn,direction:On,strings:xn};var Nt={};h(Nt,{comments:()=>In,default:()=>Fn,direction:()=>Un,strings:()=>Ln,thanks_to:()=>wn});var wn="Patiphon Loetsuthakun ",In="",Un="ltr",Ln={placeholder:"\u0E04\u0E49\u0E19\u0E2B\u0E32",clear_search:"\u0E25\u0E49\u0E32\u0E07",load_more:"\u0E42\u0E2B\u0E25\u0E14\u0E1C\u0E25\u0E25\u0E31\u0E1E\u0E18\u0E4C\u0E40\u0E1E\u0E34\u0E48\u0E21\u0E40\u0E15\u0E34\u0E21",search_label:"\u0E04\u0E49\u0E19\u0E2B\u0E32\u0E1A\u0E19\u0E40\u0E27\u0E47\u0E1A\u0E44\u0E0B\u0E15\u0E4C",filters_label:"\u0E15\u0E31\u0E27\u0E01\u0E23\u0E2D\u0E07",zero_results:"\u0E44\u0E21\u0E48\u0E1E\u0E1A\u0E1C\u0E25\u0E25\u0E31\u0E1E\u0E18\u0E4C\u0E2A\u0E33\u0E2B\u0E23\u0E31\u0E1A [SEARCH_TERM]",many_results:"\u0E1E\u0E1A [COUNT] \u0E1C\u0E25\u0E01\u0E32\u0E23\u0E04\u0E49\u0E19\u0E2B\u0E32\u0E2A\u0E33\u0E2B\u0E23\u0E31\u0E1A [SEARCH_TERM]",one_result:"\u0E1E\u0E1A [COUNT] \u0E1C\u0E25\u0E01\u0E32\u0E23\u0E04\u0E49\u0E19\u0E2B\u0E32\u0E2A\u0E33\u0E2B\u0E23\u0E31\u0E1A [SEARCH_TERM]",total_zero_results:"\u0E44\u0E21\u0E48\u0E1E\u0E1A\u0E1C\u0E25\u0E25\u0E31\u0E1E\u0E18\u0E4C",total_one_result:"[COUNT] \u0E1C\u0E25\u0E25\u0E31\u0E1E\u0E18\u0E4C",total_many_results:"[COUNT] \u0E1C\u0E25\u0E25\u0E31\u0E1E\u0E18\u0E4C",alt_search:"\u0E44\u0E21\u0E48\u0E1E\u0E1A\u0E1C\u0E25\u0E25\u0E31\u0E1E\u0E18\u0E4C\u0E2A\u0E33\u0E2B\u0E23\u0E31\u0E1A [SEARCH_TERM] \u0E41\u0E2A\u0E14\u0E07\u0E1C\u0E25\u0E25\u0E31\u0E1E\u0E18\u0E4C\u0E08\u0E32\u0E01\u0E01\u0E32\u0E23\u0E04\u0E49\u0E19\u0E2B\u0E32 [DIFFERENT_TERM] \u0E41\u0E17\u0E19",search_suggestion:"\u0E44\u0E21\u0E48\u0E1E\u0E1A\u0E1C\u0E25\u0E25\u0E31\u0E1E\u0E18\u0E4C\u0E2A\u0E33\u0E2B\u0E23\u0E31\u0E1A [SEARCH_TERM] \u0E25\u0E2D\u0E07\u0E04\u0E33\u0E04\u0E49\u0E19\u0E2B\u0E32\u0E40\u0E2B\u0E25\u0E48\u0E32\u0E19\u0E35\u0E49\u0E41\u0E17\u0E19:",searching:"\u0E01\u0E33\u0E25\u0E31\u0E07\u0E04\u0E49\u0E19\u0E2B\u0E32 [SEARCH_TERM]...",results_label:"\u0E1C\u0E25\u0E01\u0E32\u0E23\u0E04\u0E49\u0E19\u0E2B\u0E32",keyboard_navigate:"\u0E19\u0E33\u0E17\u0E32\u0E07",keyboard_select:"\u0E40\u0E25\u0E37\u0E2D\u0E01",keyboard_clear:"\u0E25\u0E49\u0E32\u0E07",keyboard_close:"\u0E1B\u0E34\u0E14",keyboard_search:"\u0E04\u0E49\u0E19\u0E2B\u0E32",error_search:"\u0E01\u0E32\u0E23\u0E04\u0E49\u0E19\u0E2B\u0E32\u0E25\u0E49\u0E21\u0E40\u0E2B\u0E25\u0E27",filter_selected_one:"\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E41\u0E25\u0E49\u0E27 [COUNT] \u0E23\u0E32\u0E22\u0E01\u0E32\u0E23",filter_selected_many:"\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E41\u0E25\u0E49\u0E27 [COUNT] \u0E23\u0E32\u0E22\u0E01\u0E32\u0E23",input_hint:"\u0E1C\u0E25\u0E25\u0E31\u0E1E\u0E18\u0E4C\u0E08\u0E30\u0E1B\u0E23\u0E32\u0E01\u0E0F\u0E02\u0E13\u0E30\u0E17\u0E35\u0E48\u0E04\u0E38\u0E13\u0E1E\u0E34\u0E21\u0E1E\u0E4C",loading:"\u0E01\u0E33\u0E25\u0E31\u0E07\u0E42\u0E2B\u0E25\u0E14"},Fn={thanks_to:wn,comments:In,direction:Un,strings:Ln};var Mt={};h(Mt,{comments:()=>zn,default:()=>Bn,direction:()=>Dn,strings:()=>jn,thanks_to:()=>Pn});var Pn="Taylan \xD6zg\xFCr Bildik",zn="",Dn="ltr",jn={placeholder:"Ara\u015Ft\u0131r",clear_search:"Temizle",load_more:"Daha fazla sonu\xE7",search_label:"Site genelinde arama",filters_label:"Filtreler",zero_results:"[SEARCH_TERM] i\xE7in sonu\xE7 yok",many_results:"[SEARCH_TERM] i\xE7in [COUNT] sonu\xE7 bulundu",one_result:"[SEARCH_TERM] i\xE7in [COUNT] sonu\xE7 bulundu",total_zero_results:"Sonu\xE7 yok",total_one_result:"[COUNT] sonu\xE7",total_many_results:"[COUNT] sonu\xE7",alt_search:"[SEARCH_TERM] i\xE7in sonu\xE7 yok. Bunun yerine [DIFFERENT_TERM] i\xE7in sonu\xE7lar g\xF6steriliyor",search_suggestion:"[SEARCH_TERM] i\xE7in sonu\xE7 yok. Alternatif olarak a\u015Fa\u011F\u0131daki kelimelerden birini deneyebilirsiniz:",searching:"[SEARCH_TERM] ara\u015Ft\u0131r\u0131l\u0131yor...",results_label:"Arama sonu\xE7lar\u0131",keyboard_navigate:"gezin",keyboard_select:"se\xE7",keyboard_clear:"temizle",keyboard_close:"kapat",keyboard_search:"ara",error_search:"Arama ba\u015Far\u0131s\u0131z",filter_selected_one:"[COUNT] se\xE7ili",filter_selected_many:"[COUNT] se\xE7ili",input_hint:"Sonu\xE7lar siz yazarken g\xF6r\xFCnecektir",loading:"Y\xFCkleniyor"},Bn={thanks_to:Pn,comments:zn,direction:Dn,strings:jn};var Ot={};h(Ot,{comments:()=>$n,default:()=>Gn,direction:()=>Vn,strings:()=>qn,thanks_to:()=>Kn});var Kn="Vladyslav Lyshenko ",$n="",Vn="ltr",qn={placeholder:"\u041F\u043E\u0448\u0443\u043A",clear_search:"\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u0438 \u043F\u043E\u043B\u0435",load_more:"\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0438\u0442\u0438 \u0449\u0435",search_label:"\u041F\u043E\u0448\u0443\u043A \u043F\u043E \u0441\u0430\u0439\u0442\u0443",filters_label:"\u0424\u0456\u043B\u044C\u0442\u0440\u0438",zero_results:"\u041D\u0456\u0447\u043E\u0433\u043E \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u043E \u0437\u0430 \u0437\u0430\u043F\u0438\u0442\u043E\u043C: [SEARCH_TERM]",many_results:"[COUNT] \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0456\u0432 \u043D\u0430 \u0437\u0430\u043F\u0438\u0442: [SEARCH_TERM]",one_result:"[COUNT] \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442 \u0437\u0430 \u0437\u0430\u043F\u0438\u0442\u043E\u043C: [SEARCH_TERM]",total_zero_results:"\u041D\u0456\u0447\u043E\u0433\u043E \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u043E",total_one_result:"[COUNT] \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442",total_many_results:"[COUNT] \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0456\u0432",alt_search:"\u041D\u0456\u0447\u043E\u0433\u043E \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u043E \u043D\u0430 \u0437\u0430\u043F\u0438\u0442: [SEARCH_TERM]. \u041F\u043E\u043A\u0430\u0437\u0430\u043D\u043E \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0438 \u043D\u0430 \u0437\u0430\u043F\u0438\u0442: [DIFFERENT_TERM]",search_suggestion:"\u041D\u0456\u0447\u043E\u0433\u043E \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u043E \u043D\u0430 \u0437\u0430\u043F\u0438\u0442: [SEARCH_TERM]. \u0421\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u043E\u0434\u0438\u043D \u0456\u0437 \u0442\u0430\u043A\u0438\u0445 \u0432\u0430\u0440\u0456\u0430\u043D\u0442\u0456\u0432",searching:"\u041F\u043E\u0448\u0443\u043A \u0437\u0430 \u0437\u0430\u043F\u0438\u0442\u043E\u043C: [SEARCH_TERM]",results_label:"\u0420\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0438 \u043F\u043E\u0448\u0443\u043A\u0443",keyboard_navigate:"\u043D\u0430\u0432\u0456\u0433\u0430\u0446\u0456\u044F",keyboard_select:"\u0432\u0438\u0431\u0440\u0430\u0442\u0438",keyboard_clear:"\u043E\u0447\u0438\u0441\u0442\u0438\u0442\u0438",keyboard_close:"\u0437\u0430\u043A\u0440\u0438\u0442\u0438",keyboard_search:"\u043F\u043E\u0448\u0443\u043A",error_search:"\u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u043E\u0448\u0443\u043A\u0443",filter_selected_one:"[COUNT] \u0432\u0438\u0431\u0440\u0430\u043D\u043E",filter_selected_many:"[COUNT] \u0432\u0438\u0431\u0440\u0430\u043D\u043E",input_hint:"\u0420\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0438 \u0437'\u044F\u0432\u043B\u044F\u0442\u0438\u043C\u0443\u0442\u044C\u0441\u044F \u043F\u0456\u0434 \u0447\u0430\u0441 \u0432\u0432\u0435\u0434\u0435\u043D\u043D\u044F",loading:"\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F"},Gn={thanks_to:Kn,comments:$n,direction:Vn,strings:qn};var xt={};h(xt,{comments:()=>Yn,default:()=>Xn,direction:()=>Jn,strings:()=>Zn,thanks_to:()=>Wn});var Wn="Long Nhat Nguyen",Yn="",Jn="ltr",Zn={placeholder:"T\xECm ki\u1EBFm",clear_search:"X\xF3a",load_more:"Nhi\u1EC1u k\u1EBFt qu\u1EA3 h\u01A1n",search_label:"T\xECm ki\u1EBFm trong trang n\xE0y",filters_label:"B\u1ED9 l\u1ECDc",zero_results:"Kh\xF4ng t\xECm th\u1EA5y k\u1EBFt qu\u1EA3 cho [SEARCH_TERM]",many_results:"[COUNT] k\u1EBFt qu\u1EA3 cho [SEARCH_TERM]",one_result:"[COUNT] k\u1EBFt qu\u1EA3 cho [SEARCH_TERM]",total_zero_results:"Kh\xF4ng c\xF3 k\u1EBFt qu\u1EA3",total_one_result:"[COUNT] k\u1EBFt qu\u1EA3",total_many_results:"[COUNT] k\u1EBFt qu\u1EA3",alt_search:"Kh\xF4ng t\xECm th\u1EA5y k\u1EBFt qu\u1EA3 cho [SEARCH_TERM]. Ki\u1EC3m th\u1ECB k\u1EBFt qu\u1EA3 thay th\u1EBF v\u1EDBi [DIFFERENT_TERM]",search_suggestion:"Kh\xF4ng t\xECm th\u1EA5y k\u1EBFt qu\u1EA3 cho [SEARCH_TERM]. Th\u1EED m\u1ED9t trong c\xE1c t\xECm ki\u1EBFm:",searching:"\u0110ang t\xECm ki\u1EBFm cho [SEARCH_TERM]...",results_label:"K\u1EBFt qu\u1EA3 t\xECm ki\u1EBFm",keyboard_navigate:"chuy\u1EC3n",keyboard_select:"ch\u1ECDn",keyboard_clear:"x\xF3a",keyboard_close:"\u0111\xF3ng",keyboard_search:"t\xECm ki\u1EBFm",error_search:"T\xECm ki\u1EBFm th\u1EA5t b\u1EA1i",filter_selected_one:"\u0110\xE3 ch\u1ECDn [COUNT]",filter_selected_many:"\u0110\xE3 ch\u1ECDn [COUNT]",input_hint:"K\u1EBFt qu\u1EA3 s\u1EBD xu\u1EA5t hi\u1EC7n khi b\u1EA1n nh\u1EADp",loading:"\u0110ang t\u1EA3i"},Xn={thanks_to:Wn,comments:Yn,direction:Jn,strings:Zn};var Ht={};h(Ht,{comments:()=>ea,default:()=>ra,direction:()=>ta,strings:()=>sa,thanks_to:()=>Qn});var Qn="Amber Song",ea="",ta="ltr",sa={placeholder:"\u641C\u7D22",clear_search:"\u6E05\u9664",load_more:"\u52A0\u8F7D\u66F4\u591A\u7ED3\u679C",search_label:"\u7AD9\u5185\u641C\u7D22",filters_label:"\u7B5B\u9009",zero_results:"\u672A\u627E\u5230 [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C",many_results:"\u627E\u5230 [COUNT] \u4E2A [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C",one_result:"\u627E\u5230 [COUNT] \u4E2A [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C",total_zero_results:"\u65E0\u7ED3\u679C",total_one_result:"[COUNT] \u4E2A\u7ED3\u679C",total_many_results:"[COUNT] \u4E2A\u7ED3\u679C",alt_search:"\u672A\u627E\u5230 [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C\u3002\u6539\u4E3A\u663E\u793A [DIFFERENT_TERM] \u7684\u76F8\u5173\u7ED3\u679C",search_suggestion:"\u672A\u627E\u5230 [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C\u3002\u8BF7\u5C1D\u8BD5\u4EE5\u4E0B\u641C\u7D22\u3002",searching:"\u6B63\u5728\u641C\u7D22 [SEARCH_TERM]...",results_label:"\u641C\u7D22\u7ED3\u679C",keyboard_navigate:"\u5BFC\u822A",keyboard_select:"\u9009\u62E9",keyboard_clear:"\u6E05\u9664",keyboard_close:"\u5173\u95ED",keyboard_search:"\u641C\u7D22",error_search:"\u641C\u7D22\u5931\u8D25",filter_selected_one:"\u5DF2\u9009\u62E9 [COUNT] \u4E2A",filter_selected_many:"\u5DF2\u9009\u62E9 [COUNT] \u4E2A",input_hint:"\u8F93\u5165\u65F6\u5C06\u663E\u793A\u7ED3\u679C",loading:"\u52A0\u8F7D\u4E2D"},ra={thanks_to:Qn,comments:ea,direction:ta,strings:sa};var wt={};h(wt,{comments:()=>na,default:()=>oa,direction:()=>aa,strings:()=>la,thanks_to:()=>ia});var ia="Amber Song",na="",aa="ltr",la={placeholder:"\u641C\u5C0B",clear_search:"\u6E05\u9664",load_more:"\u8F09\u5165\u66F4\u591A\u7D50\u679C",search_label:"\u7AD9\u5167\u641C\u5C0B",filters_label:"\u7BE9\u9078",zero_results:"\u627E\u4E0D\u5230 [SEARCH_TERM] \u7684\u76F8\u95DC\u7D50\u679C",many_results:"\u627E\u5230 [COUNT] \u500B [SEARCH_TERM] \u7684\u76F8\u95DC\u7D50\u679C",one_result:"\u627E\u5230 [COUNT] \u500B [SEARCH_TERM] \u7684\u76F8\u95DC\u7D50\u679C",total_zero_results:"\u7121\u7D50\u679C",total_one_result:"[COUNT] \u500B\u7D50\u679C",total_many_results:"[COUNT] \u500B\u7D50\u679C",alt_search:"\u672A\u627E\u5230 [SEARCH_TERM] \u7684\u76F8\u95DC\u7D50\u679C\u3002\u6539\u70BA\u986F\u793A [DIFFERENT_TERM] \u7684\u76F8\u95DC\u7D50\u679C",search_suggestion:"\u627E\u4E0D\u5230 [SEARCH_TERM] \u7684\u76F8\u95DC\u7D50\u679C\u3002\u8ACB\u5617\u8A66\u4EE5\u4E0B\u7684\u5EFA\u8B70\u4E4B\u4E00\u3002",searching:"\u6B63\u5728\u641C\u5C0B[SEARCH_TERM]...",results_label:"\u641C\u5C0B\u7D50\u679C",keyboard_navigate:"\u5C0E\u89BD",keyboard_select:"\u9078\u64C7",keyboard_clear:"\u6E05\u9664",keyboard_close:"\u95DC\u9589",keyboard_search:"\u641C\u5C0B",error_search:"\u641C\u5C0B\u5931\u6557",filter_selected_one:"\u5DF2\u9078\u64C7 [COUNT] \u500B",filter_selected_many:"\u5DF2\u9078\u64C7 [COUNT] \u500B",input_hint:"\u8F38\u5165\u6642\u5C07\u986F\u793A\u7D50\u679C",loading:"\u8F09\u5165\u4E2D"},oa={thanks_to:ia,comments:na,direction:aa,strings:la};var It={};h(It,{comments:()=>ua,default:()=>pa,direction:()=>da,strings:()=>ha,thanks_to:()=>ca});var ca="Amber Song",ua="",da="ltr",ha={placeholder:"\u641C\u7D22",clear_search:"\u6E05\u9664",load_more:"\u52A0\u8F7D\u66F4\u591A\u7ED3\u679C",search_label:"\u7AD9\u5185\u641C\u7D22",filters_label:"\u7B5B\u9009",zero_results:"\u672A\u627E\u5230 [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C",many_results:"\u627E\u5230 [COUNT] \u4E2A [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C",one_result:"\u627E\u5230 [COUNT] \u4E2A [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C",total_zero_results:"\u65E0\u7ED3\u679C",total_one_result:"[COUNT] \u4E2A\u7ED3\u679C",total_many_results:"[COUNT] \u4E2A\u7ED3\u679C",alt_search:"\u672A\u627E\u5230 [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C\u3002\u6539\u4E3A\u663E\u793A [DIFFERENT_TERM] \u7684\u76F8\u5173\u7ED3\u679C",search_suggestion:"\u672A\u627E\u5230 [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C\u3002\u8BF7\u5C1D\u8BD5\u4EE5\u4E0B\u641C\u7D22\u3002",searching:"\u6B63\u5728\u641C\u7D22 [SEARCH_TERM]...",results_label:"\u641C\u7D22\u7ED3\u679C",keyboard_navigate:"\u5BFC\u822A",keyboard_select:"\u9009\u62E9",keyboard_clear:"\u6E05\u9664",keyboard_close:"\u5173\u95ED",keyboard_search:"\u641C\u7D22",error_search:"\u641C\u7D22\u5931\u8D25",filter_selected_one:"\u5DF2\u9009\u62E9 [COUNT] \u4E2A",filter_selected_many:"\u5DF2\u9009\u62E9 [COUNT] \u4E2A",input_hint:"\u8F93\u5165\u65F6\u5C06\u663E\u793A\u7ED3\u679C",loading:"\u52A0\u8F7D\u4E2D"},pa={thanks_to:ca,comments:ua,direction:da,strings:ha};var ma=[Ve,qe,Ge,We,Ye,Je,Ze,Xe,Qe,et,tt,st,rt,it,nt,at,lt,ot,ct,ut,dt,ht,pt,mt,_t,ft,gt,Et,bt,Tt,Ct,yt,vt,Rt,kt,At,St,Nt,Mt,Ot,xt,Ht,wt,It],Vt=ma,qt=["../../translations/af.json","../../translations/ar.json","../../translations/bn.json","../../translations/ca.json","../../translations/cs.json","../../translations/da.json","../../translations/de.json","../../translations/el.json","../../translations/en.json","../../translations/es.json","../../translations/eu.json","../../translations/fa.json","../../translations/fi.json","../../translations/fr.json","../../translations/gl.json","../../translations/he.json","../../translations/hi.json","../../translations/hr.json","../../translations/hu.json","../../translations/id.json","../../translations/it.json","../../translations/ja.json","../../translations/ko.json","../../translations/mi.json","../../translations/my.json","../../translations/nb.json","../../translations/nl.json","../../translations/nn.json","../../translations/no.json","../../translations/pl.json","../../translations/pt.json","../../translations/ro.json","../../translations/ru.json","../../translations/sr.json","../../translations/sv.json","../../translations/sw.json","../../translations/ta.json","../../translations/th.json","../../translations/tr.json","../../translations/uk.json","../../translations/vi.json","../../translations/zh-cn.json","../../translations/zh-tw.json","../../translations/zh.json"];function b(n){let s=typeof n=="string"?n.charCodeAt(0):n;return s>=97&&s<=122||s>=65&&s<=90}function A(n){let s=typeof n=="string"?n.charCodeAt(0):n;return s>=48&&s<=57}function k(n){return b(n)||A(n)}var Gt=["art-lojban","cel-gaulish","no-bok","no-nyn","zh-guoyu","zh-hakka","zh-min","zh-min-nan","zh-xiang"];var Ut={"en-gb-oed":"en-GB-oxendict","i-ami":"ami","i-bnn":"bnn","i-default":null,"i-enochian":null,"i-hak":"hak","i-klingon":"tlh","i-lux":"lb","i-mingo":null,"i-navajo":"nv","i-pwn":"pwn","i-tao":"tao","i-tay":"tay","i-tsu":"tsu","sgn-be-fr":"sfb","sgn-be-nl":"vgt","sgn-ch-de":"sgg","art-lojban":"jbo","cel-gaulish":null,"no-bok":"nb","no-nyn":"nn","zh-guoyu":"cmn","zh-hakka":"hak","zh-min":null,"zh-min-nan":"nan","zh-xiang":"hsn"};var fa={}.hasOwnProperty;function ze(n,s={}){let e=Wt(),t=String(n),r=t.toLowerCase(),i=0;if(n==null)throw new Error("Expected string, got `"+n+"`");if(fa.call(Ut,r)){let l=Ut[r];return(s.normalize===void 0||s.normalize===null||s.normalize)&&typeof l=="string"?ze(l):(e[Gt.includes(r)?"regular":"irregular"]=t,e)}for(;b(r.charCodeAt(i))&&i<9;)i++;if(i>1&&i<9){if(e.language=t.slice(0,i),i<4){let l=0;for(;r.charCodeAt(i)===45&&b(r.charCodeAt(i+1))&&b(r.charCodeAt(i+2))&&b(r.charCodeAt(i+3))&&!b(r.charCodeAt(i+4));){if(l>2)return a(i,3,"Too many extended language subtags, expected at most 3 subtags");e.extendedLanguageSubtags.push(t.slice(i+1,i+4)),i+=4,l++}}for(r.charCodeAt(i)===45&&b(r.charCodeAt(i+1))&&b(r.charCodeAt(i+2))&&b(r.charCodeAt(i+3))&&b(r.charCodeAt(i+4))&&!b(r.charCodeAt(i+5))&&(e.script=t.slice(i+1,i+5),i+=5),r.charCodeAt(i)===45&&(b(r.charCodeAt(i+1))&&b(r.charCodeAt(i+2))&&!b(r.charCodeAt(i+3))?(e.region=t.slice(i+1,i+3),i+=3):A(r.charCodeAt(i+1))&&A(r.charCodeAt(i+2))&&A(r.charCodeAt(i+3))&&!A(r.charCodeAt(i+4))&&(e.region=t.slice(i+1,i+4),i+=4));r.charCodeAt(i)===45;){let l=i+1,o=l;for(;k(r.charCodeAt(o));){if(o-l>7)return a(o,1,"Too long variant, expected at most 8 characters");o++}if(o-l>4||o-l>3&&A(r.charCodeAt(l)))e.variants.push(t.slice(l,o)),i=o;else break}for(;r.charCodeAt(i)===45&&!(r.charCodeAt(i+1)===120||!k(r.charCodeAt(i+1))||r.charCodeAt(i+2)!==45||!k(r.charCodeAt(i+3)));){let l=i+2,o=0;for(;r.charCodeAt(l)===45&&k(r.charCodeAt(l+1))&&k(r.charCodeAt(l+2));){let c=l+1;for(l=c+2,o++;k(r.charCodeAt(l));){if(l-c>7)return a(l,2,"Too long extension, expected at most 8 characters");l++}}if(!o)return a(l,4,"Empty extension, extensions must have at least 2 characters of content");e.extensions.push({singleton:t.charAt(i+1),extensions:t.slice(i+3,l).split("-")}),i=l}}else i=0;if(i===0&&r.charCodeAt(i)===120||r.charCodeAt(i)===45&&r.charCodeAt(i+1)===120){i=i?i+2:1;let l=i;for(;r.charCodeAt(l)===45&&k(r.charCodeAt(l+1));){let o=i+1;for(l=o;k(r.charCodeAt(l));){if(l-o>7)return a(l,5,"Too long private-use area, expected at most 8 characters");l++}e.privateuse.push(t.slice(i+1,l)),i=l}}if(i!==t.length)return a(i,6,"Found superfluous content after tag");return e;function a(l,o,c){return s.warning&&s.warning(c,o,l),s.forgiving?e:Wt()}}function Wt(){return{language:null,extendedLanguageSubtags:[],script:null,region:null,variants:[],extensions:[],privateuse:[],irregular:null,regular:null}}var be={},Yt=qt,Jt=Vt;for(let n=0;n"u")return;let s=document.createElement("div");s.id=this.containerId,s.setAttribute("data-pagefind-announcer","");let e=t=>{let r=[];for(let i=0;i<2;i++){let a=document.createElement("div");a.id=this.idGenerator(`pf-${t}-region`),a.setAttribute("role","status"),a.setAttribute("aria-live",t),a.setAttribute("aria-atomic","true"),a.setAttribute("data-pf-sr-hidden",""),s.appendChild(a),r.push(a)}return r};this.regions={polite:e("polite"),assertive:e("assertive")},document.body.appendChild(s)}announce(s,e="polite"){if(!this.regions||!s)return;this.clearTimeoutId&&(clearTimeout(this.clearTimeoutId),this.clearTimeoutId=null);let t=e==="polite"?this.politeIndex:this.assertiveIndex,r=this.regions[e][t];e==="polite"?this.politeIndex=t===0?1:0:this.assertiveIndex=t===0?1:0;let i=e==="polite"?this.politeIndex:this.assertiveIndex;this.regions[e][i].textContent="",setTimeout(()=>{r.textContent=s,this.clearTimeoutId=setTimeout(()=>{r.textContent="",this.clearTimeoutId=null},350)},100)}clear(){if(this.regions){this.clearTimeoutId&&(clearTimeout(this.clearTimeoutId),this.clearTimeoutId=null);for(let s of["polite","assertive"])for(let e of this.regions[s])e.textContent=""}}destroy(){if(this.clear(),typeof document<"u"){let s=document.getElementById(this.containerId);s&&s.remove()}this.regions=null}};var Lt;try{if(document?.currentScript&&document.currentScript.tagName.toUpperCase()==="SCRIPT"){let n=new URL(document.currentScript.src).pathname.match(/^(.*\/)(?:pagefind[-_])?component[-_]?ui.js.*$/);n&&(Lt=n[1])}}catch{Lt="/pagefind/"}var Te=class{constructor(s,e={}){this.__pagefind__=null;this.__loadPromise__=null;this.__searchID__=0;this._translations=null;this._userTranslations={};this._direction="ltr";this._languageSet=!1;this.components=[];this.componentsByType={};this.searchTerm="";this.searchFilters={};this.searchResult={results:[]};this.availableFilters=null;this.totalFilters=null;this.activeShortcuts=[];this.faceted=!1;this.generatedIds=new Set;this.name=s,this.__hooks__={search:[],filters:[],loading:[],results:[],error:[],translations:[]},this.options={bundlePath:e.bundlePath??Lt??"/pagefind/",mergeIndex:e.mergeIndex??[]};let t={...e};delete t.bundlePath,delete t.mergeIndex,this.pagefindOptions=t,this._announcer=new De(this.generateId.bind(this))}generateId(s,e=2){let t="abcdef",r=(o=3)=>{let c="";for(let u=0;ur()).join("-"),l=`${s}-${i}${a}`;return this.generatedIds.has(l)||document.getElementById(l)?this.generateId(s,e+1):(this.generatedIds.add(l),l)}add(s){s?.register?.(this),this.components.push(s)}registerInput(s,e={}){this._registerComponent(s,"input",null,e)}registerResults(s,e={}){this._registerComponent(s,"results",null,e)}registerSummary(s,e={}){this._registerComponent(s,"summary",null,e)}registerFilter(s,e={}){this._registerComponent(s,"filter",null,e)}registerSort(s,e={}){this._registerComponent(s,"sort",null,e)}registerUtility(s,e=null,t={}){this._registerComponent(s,"utility",e,t)}_registerComponent(s,e,t=null,r={}){if(this.componentsByType[e]||(this.componentsByType[e]=[]),this._languageSet||this.setLanguage(),this.components.includes(s)){s.capabilities=r,this.reconcileAria();return}s.componentType=e,s.componentSubtype=t,s.capabilities=r,this.componentsByType[e].push(s),this.components.push(s),this.reconcileAria()}getInputs(s=null){let e=this.componentsByType.input||[];return s?e.filter(t=>t.capabilities?.[s]):e}getResults(s=null){let e=this.componentsByType.results||[];return s?e.filter(t=>t.capabilities?.[s]):e}getSummaries(s=null){let e=this.componentsByType.summary||[];return s?e.filter(t=>t.capabilities?.[s]):e}getFilters(s=null){let e=this.componentsByType.filter||[];return s?e.filter(t=>t.capabilities?.[s]):e}getSorts(s=null){let e=this.componentsByType.sort||[];return s?e.filter(t=>t.capabilities?.[s]):e}getUtilities(s=null,e=null){let t=this.componentsByType.utility||[];return s!==null&&(t=t.filter(r=>r.componentSubtype===s)),e&&(t=t.filter(r=>r.capabilities?.[e])),t}hasAnnouncementCapability(){return this.components.some(s=>s.capabilities?.announcements===!0)}registerShortcut(s,e){let t={...s,owner:e};this.activeShortcuts.push(t),this.notifyShortcutsChanged()}deregisterShortcut(s,e){this.activeShortcuts=this.activeShortcuts.filter(t=>!(t.label===s&&t.owner===e)),this.notifyShortcutsChanged()}deregisterAllShortcuts(s){this.activeShortcuts=this.activeShortcuts.filter(e=>e.owner!==s),this.notifyShortcutsChanged()}getActiveShortcuts(){return this.activeShortcuts}notifyShortcutsChanged(){this.getUtilities("keyboard-hints").forEach(e=>e.render?.())}focusNextResults(s){let e=this.getResults("keyboardNavigation"),t=$t(s,e);if(!t)return!1;let r=t.querySelector("a");return r?(r.focus(),!0):!1}focusPreviousInput(s){let e=this.getInputs("keyboardNavigation"),t=Pe(s,e);if(!t)return!1;if(t.focus)return t.focus(),!0;let r=t.querySelector("input");return r?(r.focus(),!0):!1}focusInputAndType(s,e){let t=this.getInputs("keyboardNavigation"),r=Pe(s,t),i=r?.inputEl||r?.querySelector("input");i&&(i.value+=e,i.focus(),i.dispatchEvent(new Event("input",{bubbles:!0})))}focusInputAndDelete(s){let e=this.getInputs("keyboardNavigation"),t=Pe(s,e),r=t?.inputEl||t?.querySelector("input");r&&(r.value=r.value.slice(0,-1),r.focus(),r.dispatchEvent(new Event("input",{bubbles:!0})))}reconcileAria(){this.components.forEach(s=>s.reconcileAria?.())}get direction(){return this._direction}setLanguage(s){s||(s=document?.documentElement?.lang||"en"),this._translations=Zt(s),this._direction=this._translations.direction||"ltr",this._languageSet=!0,this.__dispatch__("translations",this._translations,this._direction)}setTranslations(s){this._userTranslations={...this._userTranslations,...s},this.__dispatch__("translations",this._translations,this._direction)}translate(s,e={}){let t=this._userTranslations[s]??this._translations?.[s];return Xt(typeof t=="string"?t:void 0,e,this._translations?.language)}announce(s,e={},t="polite"){let r=this.translate(s,e);r&&this._announcer.announce(r,t)}announceRaw(s,e="polite"){this._announcer.announce(s,e)}clearAnnouncements(){this._announcer.clear()}on(s,e,t=null){if(!this.__hooks__[s]){let r=Object.keys(this.__hooks__).join(", ");console.error(`[Pagefind Component UI]: Unknown event type ${s}. Supported events: [${r}]`);return}if(typeof e!="function"){console.error(`[Pagefind Component UI]: Expected callback to be a function, received ${typeof e}`);return}if(t){let r=this.__hooks__[s].findIndex(i=>typeof i=="object"&&i.owner===t);if(r!==-1){this.__hooks__[s][r]={callback:e,owner:t};return}this.__hooks__[s].push({callback:e,owner:t})}else this.__hooks__[s].push(e)}triggerLoad(){return this.__load__()}triggerSearch(s){this.searchTerm=s,this.__dispatch__("search",s,this.searchFilters),this.__search__(s,this.searchFilters)}triggerSearchWithFilters(s,e){this.searchTerm=s,this.searchFilters=e,this.__dispatch__("search",s,e),this.__search__(s,e)}triggerFilters(s){this.searchFilters=s,this.__dispatch__("search",this.searchTerm,s),this.__search__(this.searchTerm,s)}triggerFilter(s,e){this.searchFilters=this.searchFilters||{},this.searchFilters[s]=e,this.__dispatch__("search",this.searchTerm,this.searchFilters),this.__search__(this.searchTerm,this.searchFilters)}__dispatch__(s,...e){this.__hooks__[s]?.forEach(t=>{typeof t=="function"?t(...e):t?.callback&&t.callback(...e)})}async __clear__(){this.__dispatch__("results",{results:[],unfilteredTotalCount:0}),this.__pagefind__&&(this.availableFilters=await this.__pagefind__.filters(),this.totalFilters=this.availableFilters,this.__dispatch__("filters",{available:this.availableFilters,total:this.totalFilters}))}async __search__(s,e){this.__dispatch__("loading"),await this.__load__();let t=++this.__searchID__;if((!s||!s.length)&&!this.faceted)return this.__clear__();if(!this.__pagefind__)return;let r=s&&s.length?s:null,i=await this.__pagefind__.search(r,{filters:e});if(i&&this.__searchID__===t&&(i.filters&&Object.keys(i.filters)?.length&&(this.availableFilters=i.filters,this.totalFilters=i.totalFilters??null,this.__dispatch__("filters",{available:this.availableFilters,total:this.totalFilters})),this.searchResult=i,this.__dispatch__("results",this.searchResult),!this.hasAnnouncementCapability()&&s)){let a=i.results?.length??0,l=a===0?"zero_results":a===1?"one_result":"many_results",o=a===0?"assertive":"polite";this.announce(l,{SEARCH_TERM:s,COUNT:a},o)}}async __load__(){if(!this.__pagefind__){if(this.__loadPromise__)return this.__loadPromise__;this.__loadPromise__=this.__doLoad__();try{await this.__loadPromise__}finally{this.__loadPromise__=null}}}async __doLoad__(){if(this.__pagefind__)return;let s;try{s=await import(`${this.options.bundlePath}pagefind.js`)}catch(t){console.error(t),console.error([`Pagefind couldn't be loaded from ${this.options.bundlePath}pagefind.js`,"You can configure this by passing a bundlePath option to the Pagefind Component UI"].join(` +`)),document?.currentScript&&document.currentScript.tagName.toUpperCase()==="SCRIPT"?console.error(`[DEBUG: Loaded from ${document.currentScript?.src??"bad script location"}]`):console.error("no known script location"),this.__dispatch__("error",{type:"bundle_load_failed",message:"Could not load search bundle",bundlePath:this.options.bundlePath,error:t}),this.hasAnnouncementCapability()||this.announce("error_search",{},"assertive");return}let e=s.createInstance(this.pagefindOptions||{});for(let t of this.options.mergeIndex){if(!t.bundlePath)throw new Error("mergeIndex requires a bundlePath parameter");let{bundlePath:r,...i}=t;await e.mergeIndex(r,i)}this.__pagefind__=e,this.availableFilters=await this.__pagefind__.filters(),this.totalFilters=this.availableFilters,this.__dispatch__("filters",{available:this.availableFilters,total:this.totalFilters}),this.faceted&&this.__searchID__===0&&this.triggerSearch("")}thinSubResults(s,e=3){if(s.length<=e)return s;let t=[...s].sort((r,i)=>(i.locations?.length??0)-(r.locations?.length??0)).slice(0,e).map(r=>r.url);return s.filter(r=>t.includes(r.url))}getDisplaySubResults(s,e=3){if(!Array.isArray(s.sub_results))return[];let r=s.sub_results[0]?.url===(s.meta?.url||s.url)?s.sub_results.slice(1):s.sub_results;return this.thinSubResults(r,e)}};var Pt=class{constructor(){this.instances=new Map;this.defaultOptions={bundlePath:this.detectBundlePath()}}detectBundlePath(){try{if(document?.currentScript&&document.currentScript.tagName.toUpperCase()==="SCRIPT"){let s=new URL(document.currentScript.src).pathname.match(/^(.*\/)(?:pagefind[-_])?.*\.js.*$/);if(s)return s[1]}}catch{}return"/pagefind/"}getInstance(s="default",e={}){let t=this.instances.get(s);if(t)return t;let r={...this.defaultOptions,...e},i=new Te(s,r);return this.instances.set(s,i),i}hasInstance(s){return this.instances.has(s)}removeInstance(s){this.instances.delete(s)}getInstanceNames(){return Array.from(this.instances.keys())}},Ft=null;function Ce(){return Ft||(Ft=new Pt),Ft}function Qt(n,s){let e=Ce();return e.hasInstance(n)?(console.warn(`[Pagefind Component UI]: Instance "${n}" already exists, configuration ignored`),e.getInstance(n)):e.getInstance(n,s)}var ye=n=>!(n==null||n===!1||n===0||n===""||Number.isNaN(n)||Array.isArray(n)&&n.length===0||typeof n=="object"&&n!==null&&!Array.isArray(n)&&Object.keys(n).length===0),T=(n,s,e)=>n.lengthT(s,2,"eq")??m(s[0],n)===m(s[1],n),ne:(n,...s)=>T(s,2,"ne")??m(s[0],n)!==m(s[1],n),gt:(n,...s)=>T(s,2,"gt")??Number(m(s[0],n))>Number(m(s[1],n)),lt:(n,...s)=>T(s,2,"lt")??Number(m(s[0],n))T(s,2,"gte")??Number(m(s[0],n))>=Number(m(s[1],n)),lte:(n,...s)=>T(s,2,"lte")??Number(m(s[0],n))<=Number(m(s[1],n)),and:(n,...s)=>{let e=!0;for(let t of s)if(e=m(t,n),!ye(e))return e;return e},or:(n,...s)=>{let e=!1;for(let t of s)if(e=m(t,n),ye(e))return e;return e},not:(n,...s)=>T(s,1,"not")??!ye(m(s[0],n)),lowercase:(n,...s)=>String(m(s[0],n)).toLowerCase(),uppercase:(n,...s)=>String(m(s[0],n)).toUpperCase(),trim:(n,...s)=>String(m(s[0],n)).trim(),truncate:(n,...s)=>{let e=T(s,2,"truncate");if(e)return e;let t=String(m(s[0],n)),r=Number(m(s[1],n)),i=s[2]?String(m(s[2],n)):"...";return t.length>r?t.slice(0,r)+i:t},replace:(n,...s)=>T(s,3,"replace")??String(m(s[0],n)).split(String(m(s[1],n))).join(String(m(s[2],n))),limit:(n,...s)=>{let e=T(s,2,"limit");if(e)return e;let t=m(s[0],n),r=m(s[1],n);return Array.isArray(t)?t.slice(0,r<0?0:r):t},first:(n,...s)=>{let e=T(s,1,"first");if(e)return e;let t=m(s[0],n);return Array.isArray(t)?t[0]:t},last:(n,...s)=>{let e=T(s,1,"last");if(e)return e;let t=m(s[0],n);return Array.isArray(t)?t[t.length-1]:t},length:(n,...s)=>{let e=T(s,1,"length");if(e)return e;let t=m(s[0],n);return Array.isArray(t)?t.length:String(t).length},join:(n,...s)=>T(s,2,"join")??(e=>Array.isArray(e)?e.join(String(m(s[1],n))):String(e))(m(s[0],n)),default:(n,...s)=>{let e=T(s,2,"default");if(e)return e;let t=m(s[0],n);return ye(t)?t:m(s[1],n)},safeUrl:(n,...s)=>{let e=String(m(s[0],n)??"").trim();return e&&/^(?:\.{0,2}\/|[#?]|(?:https?|ftp):\/\/|(?:mailto|tel):)/i.test(e)?e:""}},m=(n,s)=>{if(!n)return;if(n.t==="L")return n.val;if(n.t==="V"){let t=(i,a)=>Object.prototype.hasOwnProperty.call(i,a),r=s;for(let i of n.path){if(r==null||!t(r,i))return;r=r[i]}return r}let e=es[n.fn];return e?n.t==="C"?e(s,...n.args):e(s,n.left,...n.args):`[Error: unknown ${n.fn}()]`},ga=n=>n.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'"),ve=(n,s)=>{let e="";for(let t of n){if(t.t==="T"){e+=t.val;continue}if(t.t==="I"){let r=m(t.expr,s);if(Array.isArray(r))e+="[Error: use #each for arrays]";else if(typeof r=="object"&&r!==null)e+="[Error: cannot render object]";else{let i=String(r??"");e+=t.raw?i:ga(i)}continue}if(t.t==="F"){let r=!1;for(let i of t.branches)if(ye(m(i.cond,s))){e+=ve(i.body,s),r=!0;break}!r&&t.else&&(e+=ve(t.else,s));continue}if(t.t==="E"){let r=m(t.arr,s);if(!Array.isArray(r)){e+="[Error: #each needs array]";continue}if(!r.length&&t.else)e+=ve(t.else,s);else for(let i=0;i{let s=n,e=0,t=()=>{for(;es.slice(e,e+u.length)===u,i=u=>{r(u)&&(e+=u.length)},a=()=>{let u="";for(;e{t();let u=e,d,_=s[e];if(_==='"'||_==="'"){let p=s[e++],g="";for(;e{let d=[];e:for(;eve(c,u)};var ts=(n,s)=>{es[n]=(e,...t)=>s(...t.map(r=>m(r,e)))};var f=class extends HTMLElement{constructor(){super();this.instance=null;this._initialized=!1}connectedCallback(){if(this._initialized)return;this._initialized=!0;let e=this.getAttribute("instance")||"default",t=Ce();this.instance=t.getInstance(e),this.init(),this.register&&typeof this.register=="function"&&this.register(this.instance)}disconnectedCallback(){this.cleanup&&typeof this.cleanup=="function"&&this.cleanup(),this._initialized=!1}attributeChangedCallback(e,t,r){if(!this._initialized||t===r)return;let i=this.kebabToCamel(e);r==="false"?this[i]=!1:r==="true"?this[i]=!0:r==null?this[i]=!1:this[i]=r,this.update&&typeof this.update=="function"&&this.update()}kebabToCamel(e){return e.replace(/-([a-z])/g,t=>t[1].toUpperCase())}ensureId(e="pagefind"){return!this.id&&this.instance&&(this.id=this.instance.generateId(e)),this.id}init(){}reconcileAria(){}register(e){}cleanup(){}update(){}showError(e){let t=document.createElement("div");t.className="pf-error",t.innerHTML=` + Pagefind Error: ${this.escapeHtml(e.message||"Unknown error")} + ${e.details?`
${this.escapeHtml(e.details)}`:""} + `,this.appendChild(t),this.dispatchEvent(new CustomEvent("pagefind-error",{detail:e,bubbles:!0,composed:!0}))}escapeHtml(e){let t=document.createElement("div");return t.textContent=e,t.innerHTML}};var Re=class extends f{init(){this.setAttribute("hidden","")}register(s){s.registerUtility(this);let e=this.getAttribute("bundle-path");e&&(s.options.bundlePath=e);let t=this.getAttribute("base-url");t&&(s.pagefindOptions.baseUrl=t);let r=this.getAttribute("excerpt-length");r&&(s.pagefindOptions.excerptLength=parseInt(r,10));let i=this.getAttribute("lang");i&&s.setLanguage(i);let a=this.getAttribute("meta-cache-tag");a&&(s.pagefindOptions.metaCacheTag=a);let l=this.getAttribute("highlight-param");l&&(s.pagefindOptions.highlightParam=l),this.hasAttribute("exact-diacritics")&&(s.pagefindOptions.exactDiacritics=!0),this.hasAttribute("no-worker")&&(s.pagefindOptions.noWorker=!0),this.hasAttribute("faceted")&&(s.faceted=!0),this.hasAttribute("preload")&&s.triggerLoad()}};customElements.get("pagefind-config")||customElements.define("pagefind-config",Re);var Ea=(n=100)=>new Promise(s=>setTimeout(s,n)),ke=class extends f{constructor(){super();this.inputEl=null;this.clearEl=null;this.searchID=0;this.placeholder="";this.debounce=300;this.autofocus=!1}static get observedAttributes(){return["placeholder","debounce","autofocus"]}readAttributes(){this.hasAttribute("placeholder")&&(this.placeholder=this.getAttribute("placeholder")||""),this.hasAttribute("debounce")&&(this.debounce=parseInt(this.getAttribute("debounce")||"300",10)||300),this.hasAttribute("autofocus")&&(this.autofocus=this.hasAttribute("autofocus"))}init(){this.readAttributes(),this.render()}render(){this.innerHTML="";let e=this.instance.generateId("pfmod-input"),t=this.instance?.translate("search_label")||"Search this site",r=this.instance?.translate("clear_search")||"Clear",i=this.placeholder||this.instance?.translate("placeholder")||"Search";this.instance?.direction==="rtl"?this.setAttribute("dir","rtl"):this.removeAttribute("dir");let a=document.createElement("search");a.className="pf-input-wrapper",a.setAttribute("role","search"),a.setAttribute("aria-label",t);let l=document.createElement("label");l.setAttribute("for",e),l.setAttribute("data-pf-sr-hidden","true"),l.textContent=t,a.appendChild(l),this.inputEl=document.createElement("input"),this.inputEl.id=e,this.inputEl.className="pf-input",this.inputEl.setAttribute("type","search"),this.inputEl.setAttribute("autocomplete","off"),this.inputEl.setAttribute("autocapitalize","none"),this.inputEl.setAttribute("enterkeyhint","search"),this.inputEl.setAttribute("placeholder",i),this.autofocus&&this.inputEl.setAttribute("autofocus","autofocus");let o=this.instance.generateId("pf-input-hint"),c=this.instance?.translate("input_hint")||"Results will appear as you type",u=document.createElement("span");u.id=o,u.setAttribute("data-pf-sr-hidden","true"),u.textContent=c,this.inputEl.setAttribute("aria-describedby",o),a.appendChild(this.inputEl),a.appendChild(u),this.clearEl=document.createElement("button"),this.clearEl.className="pf-input-clear",this.clearEl.setAttribute("type","button"),this.clearEl.setAttribute("data-pf-suppressed","true"),this.clearEl.textContent=r,a.appendChild(this.clearEl),this.appendChild(a),this.setupEventHandlers()}setupEventHandlers(){!this.inputEl||!this.clearEl||(this.inputEl.addEventListener("input",async e=>{let t=e.target;if(this.instance&&typeof t?.value=="string"){this.updateState(t.value);let r=++this.searchID;if(await Ea(this.debounce),r!==this.searchID)return;this.instance?.triggerSearch(t.value)}}),this.inputEl.addEventListener("keydown",e=>{e.key==="Escape"&&(++this.searchID,this.inputEl&&(this.inputEl.value=""),this.instance?.triggerSearch(""),this.updateState("")),e.key==="ArrowDown"&&(e.preventDefault(),this.inputEl&&this.instance?.focusNextResults(this.inputEl))}),this.inputEl.addEventListener("focus",()=>{this.instance?.triggerLoad();let e=this.instance?.translate("keyboard_navigate")||"navigate",t=this.instance?.translate("keyboard_clear")||"clear";this.instance?.registerShortcut({label:"\u2193",description:e},this),this.instance?.registerShortcut({label:"esc",description:t},this)}),this.inputEl.addEventListener("blur",()=>{this.instance?.deregisterAllShortcuts(this)}),this.clearEl.addEventListener("click",()=>{this.inputEl&&(this.inputEl.value="",this.instance?.triggerSearch(""),this.updateState(""),this.inputEl.focus())}))}updateState(e){this.clearEl&&(e&&e?.length?this.clearEl.removeAttribute("data-pf-suppressed"):this.clearEl.setAttribute("data-pf-suppressed","true"))}register(e){e.registerInput(this,{keyboardNavigation:!0}),e.on("search",t=>{this.inputEl&&document.activeElement!==this.inputEl&&(this.inputEl.value=t,this.updateState(t))},this),e.on("error",t=>{let r=t;this.showError({message:r.message||"Search initialization failed",details:r.bundlePath?`Bundle path: ${r.bundlePath}`:void 0})},this),e.on("translations",()=>{let t=this.inputEl?.value||"";this.render(),this.inputEl&&t&&(this.inputEl.value=t,this.updateState(t))},this)}update(){this.render()}focus(){this.inputEl&&this.inputEl.focus()}};customElements.get("pagefind-input")||customElements.define("pagefind-input",ke);var Ae=class extends f{constructor(){super();this.containerEl=null;this.term="";this.defaultMessage=""}static get observedAttributes(){return["default-message"]}init(){this.hasAttribute("default-message")&&(this.defaultMessage=this.getAttribute("default-message")||""),this.render()}render(){this.innerHTML="",this.instance?.direction==="rtl"?this.setAttribute("dir","rtl"):this.removeAttribute("dir"),this.containerEl=document.createElement("div"),this.containerEl.className="pf-summary",this.containerEl.textContent=this.defaultMessage,this.appendChild(this.containerEl)}reconcileAria(){}register(e){e.registerSummary(this),e.on("search",t=>{this.term=t},this),e.on("results",t=>{if(!this.containerEl||!t)return;let i=t?.results?.length??0;if(!this.term){if(e.faceted){let o=i===0?"total_zero_results":i===1?"total_one_result":"total_many_results",c=e.translate(o,{COUNT:i});this.containerEl.textContent=c||`${i} result${i===1?"":"s"}`}else this.containerEl.textContent=this.defaultMessage;return}let a=i===0?"zero_results":i===1?"one_result":"many_results",l=e.translate(a,{SEARCH_TERM:this.term,COUNT:i});this.containerEl.textContent=l||`${i} result${i===1?"":"s"} for ${this.term}`},this),e.on("loading",()=>{if(!this.containerEl)return;let t=e.translate("searching",{SEARCH_TERM:this.term});this.containerEl.textContent=t||`Searching for ${this.term}...`},this),e.on("error",t=>{if(!this.containerEl)return;let r=t,i=e.translate("error_search")||"Search failed";this.containerEl.textContent=`Error: ${r.message||i}`},this),e.on("translations",()=>{this.render()},this)}update(){this.hasAttribute("default-message")&&(this.defaultMessage=this.getAttribute("default-message")||"",!this.term&&this.containerEl&&(this.containerEl.textContent=this.defaultMessage))}};customElements.get("pagefind-summary")||customElements.define("pagefind-summary",Ae);var ss=n=>{if(n instanceof Element)return[n];if(Array.isArray(n)&&n.every(s=>s instanceof Element))return n;if(typeof n=="string"||n instanceof String){let s=document.createElement("div");return s.innerHTML=n,[...s.childNodes]}return console.error(`[Pagefind Results]: Expected template to return HTML element or string, got ${typeof n}`),[]},ba=`
  • +
    + {{#if and(options.show_images, meta.image)}} + {{ meta.image_alt | default(meta.title) }} + {{/if}} +
    +

    + {{ meta.title }} +

    + {{#if excerpt}} +

    {{+ excerpt +}}

    + {{/if}} +
    +
    + {{#if sub_results}} +
      + {{#each sub_results as sub}} +
    • + {{ sub.title }} +

      {{+ sub.excerpt +}}

      +
    • + {{/each}} +
    + {{/if}} +
  • `,Ta=``,Ca=R(ba),ya=R(Ta),rs=(n,s)=>{for(let e of n)if(e instanceof Element){e.setAttribute("data-pf-result-index",String(s));break}},zt=n=>{if(!(n instanceof HTMLElement))return null;let s=window.getComputedStyle(n).overflowY;return s!=="visible"&&s!=="hidden"?n:zt(n.parentNode)},Dt=class{constructor(s){this.result=null;this.loading=!1;this.observer=null;this.rawResult=s.result,this.index=s.index,this.placeholderNodes=s.placeholderNodes,this.resultFn=s.resultFn,this.intersectionEl=s.intersectionEl,this.showImages=s.showImages,this.showSubResults=s.showSubResults,this.maxSubResults=s.maxSubResults,this.linkTarget=s.linkTarget,this.onLoad=s.onLoad,this.setupObserver()}setupObserver(){if(this.result!==null||this.observer!==null||!this.placeholderNodes?.length)return;let s={root:this.intersectionEl,rootMargin:"50px",threshold:.01};this.observer=new IntersectionObserver((e,t)=>{this.result===null&&e?.[0]?.isIntersecting&&(this.load(),t.disconnect(),this.observer=null)},s),this.observer.observe(this.placeholderNodes[0])}async load(){if(this.placeholderNodes?.length&&!(this.result!==null||this.loading)){this.loading=!0;try{this.result=await this.rawResult.data();let s=this.resultFn(this.result,{showImages:this.showImages,showSubResults:this.showSubResults,maxSubResults:this.maxSubResults,linkTarget:this.linkTarget}),e=ss(s);for(rs(e,this.index);this.placeholderNodes.length>1;){let r=this.placeholderNodes.pop();r instanceof Element&&r.remove()}let t=this.placeholderNodes[0];t instanceof Element&&t.replaceWith(...e)}catch{this.loading=!1}this.onLoad?.()}}cleanup(){this.observer&&(this.observer.disconnect(),this.observer=null)}},Se=class extends f{constructor(){super();this.containerEl=null;this.intersectionEl=document.body;this.results=[];this.showImages=!1;this.hideSubResults=!1;this.maxSubResults=3;this.maxResults=0;this.linkTarget=null;this.resultTemplate=null;this.compiledResultTemplate=null;this.compiledPlaceholderTemplate=null;this.selectedIndex=-1;this.selectedAnchor=null;this.loadingAnnouncementTimeout=null}static get observedAttributes(){return["show-images","hide-sub-results","max-sub-results","max-results","link-target"]}init(){this.hasAttribute("show-images")&&(this.showImages=this.getAttribute("show-images")!=="false"),this.hasAttribute("hide-sub-results")&&(this.hideSubResults=this.getAttribute("hide-sub-results")!=="false"),this.hasAttribute("max-sub-results")&&(this.maxSubResults=parseInt(this.getAttribute("max-sub-results")||"3",10)||3),this.hasAttribute("max-results")&&(this.maxResults=parseInt(this.getAttribute("max-results")||"0",10)),this.hasAttribute("link-target")&&(this.linkTarget=this.getAttribute("link-target")),this.checkForTemplates(),this.render()}checkForTemplates(){let e=this.querySelector('script[type="text/pagefind-template"]:not([data-template]), script[type="text/pagefind-template"][data-template="result"]');e&&(this.compiledResultTemplate=R((e.textContent||"").trim()));let t=this.querySelector('script[type="text/pagefind-template"][data-template="placeholder"]');t&&(this.compiledPlaceholderTemplate=R((t.textContent||"").trim()))}buildTemplateData(e,t){let r=t.showSubResults?this.instance.getDisplaySubResults(e,t.maxSubResults):[];return{meta:e.meta||{},excerpt:e.excerpt||"",url:e.url||"",sub_results:r.map(i=>({title:i.title,url:i.url,excerpt:i.excerpt})),options:{link_target:t.linkTarget,show_images:t.showImages}}}getResultRenderer(){if(this.resultTemplate){let e=this.resultTemplate;return(t,r)=>e(t)}if(this.compiledResultTemplate){let e=this.compiledResultTemplate;return(t,r)=>{let i=this.buildTemplateData(t,r);return e(i)}}return(e,t)=>{let r=this.buildTemplateData(e,t);return Ca(r)}}getPlaceholder(){return this.compiledPlaceholderTemplate?this.compiledPlaceholderTemplate({}):ya({})}render(){let e=[];this.querySelectorAll('script[type="text/pagefind-template"]').forEach(r=>{e.push(r)}),this.innerHTML="",e.forEach(r=>this.appendChild(r));let t=this.instance?.translate("results_label")||"Search results";this.instance?.direction==="rtl"?this.setAttribute("dir","rtl"):this.removeAttribute("dir"),this.containerEl=document.createElement("ul"),this.containerEl.className="pf-results",this.containerEl.setAttribute("aria-label",t),this.containerEl.setAttribute("aria-busy","false"),this.appendChild(this.containerEl),this.setupKeyboardHandlers()}appendResults(e){if(this.containerEl)for(let t of e)this.containerEl.appendChild(t)}register(e){e.registerResults(this,{keyboardNavigation:!0,announcements:!0}),e.on("results",t=>{if(!this.containerEl)return;let r=t;for(let c of this.results)c.cleanup();this.containerEl.innerHTML="",this.containerEl.setAttribute("aria-busy","false"),this.intersectionEl=zt(this.containerEl),this.selectedIndex=-1,this.selectedAnchor=null;let i=this.maxResults>0?r.results.slice(0,this.maxResults):r.results,a=i.length,l=e.searchTerm;if(l){let c=a===0?"zero_results":a===1?"one_result":"many_results",u=a===0?"assertive":"polite";e.announce(c,{SEARCH_TERM:l,COUNT:a},u)}else if(e.faceted){let c=a===0?"total_zero_results":a===1?"total_one_result":"total_many_results",u=a===0?"assertive":"polite";e.announce(c,{COUNT:a},u)}let o=this.getResultRenderer();this.results=i.map((c,u)=>{let d=ss(this.getPlaceholder());rs(d,u),this.appendResults(d);let _=new Dt({result:c,index:u,placeholderNodes:d,resultFn:o,intersectionEl:this.intersectionEl,showImages:this.showImages,showSubResults:!this.hideSubResults,maxSubResults:this.maxSubResults,linkTarget:this.linkTarget,onLoad:()=>{_.result&&this.clearLoadingAnnouncement()}});return _})},this),e.on("loading",()=>{this.containerEl&&(this.containerEl.innerHTML="",this.containerEl.setAttribute("aria-busy","true"),this.selectedIndex=-1,this.selectedAnchor=null)},this),e.on("error",t=>{let r=t;this.containerEl&&this.containerEl.setAttribute("aria-busy","false"),e.announce("error_search",{},"assertive"),this.showError({message:r.message||e.translate("error_search")||"Failed to load search results",details:r.bundlePath?`Bundle path: ${r.bundlePath}`:void 0})},this),e.on("translations",()=>{this.render()},this)}findNeighborAnchor(e,t){if(!this.containerEl)return null;let r=document.createTreeWalker(this.containerEl,NodeFilter.SHOW_ELEMENT,{acceptNode:l=>l.tagName==="A"?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP});r.currentNode=e;let i=t>0?r.nextNode():r.previousNode();if(!i||!(i instanceof HTMLAnchorElement))return null;let a=this.resultIndexForNode(i);return{anchor:i,resultIndex:a}}resultIndexForNode(e){if(!this.containerEl)return-1;let t=e;for(;t&&t.parentNode!==this.containerEl;)t=t.parentNode;if(!t||!(t instanceof Element))return-1;let r=t.getAttribute("data-pf-result-index");if(r===null)return-1;let i=parseInt(r,10);return Number.isNaN(i)?-1:i}setupKeyboardHandlers(){this.containerEl&&(this.containerEl.addEventListener("keydown",e=>{let t=e.target.closest("a");if(t)if(e.key==="ArrowDown"){e.preventDefault();let r=this.findNeighborAnchor(t,1);if(r)r.anchor.focus(),this.scrollToCenter(r.anchor,e.repeat),r.resultIndex!==-1&&this.preloadAhead(r.resultIndex,1);else{let a=this.resultIndexForNode(t)+1;if(a>0&&a{let t=e.target.closest("a");if(!t)return;this.clearSelection(),t.setAttribute("data-pf-selected",""),this.selectedAnchor=t;let r=this.instance?.translate("keyboard_navigate")||"navigate",i=this.instance?.translate("keyboard_select")||"select",a=this.instance?.translate("keyboard_search")||"search";this.instance?.registerShortcut({label:"\u2191\u2193",description:r},this),this.instance?.registerShortcut({label:"\u21B5",description:i},this),this.instance?.registerShortcut({label:"/",description:a},this)}),this.containerEl.addEventListener("focusout",e=>{let t=e;this.containerEl?.contains(t.relatedTarget)||(this.clearSelection(),this.instance?.deregisterAllShortcuts(this))}))}scrollToCenter(e,t=!1){let r=this.intersectionEl||zt(e);if(!r||!(r instanceof HTMLElement)||r===document.body||r===document.documentElement)return;let i=e.getBoundingClientRect(),a=r.getBoundingClientRect(),o=i.top-a.top+r.scrollTop-r.clientHeight/2+e.offsetHeight/2;r.scrollTo({top:o,behavior:t?"instant":"smooth"})}preloadAhead(e,t){let r=t>0?1:-1;for(let i=1;i<=3;i++){let a=e+r*i;if(a>=0&&a{this.loadingAnnouncementTimeout=null,this.instance?.announce("loading",{},"polite")},800))}clearLoadingAnnouncement(){this.loadingAnnouncementTimeout&&(clearTimeout(this.loadingAnnouncementTimeout),this.loadingAnnouncementTimeout=null)}clearSelection(){this.selectedAnchor&&(this.selectedAnchor.removeAttribute("data-pf-selected"),this.selectedAnchor=null)}cleanup(){this.clearLoadingAnnouncement();for(let e of this.results)e.cleanup();this.results=[],this.selectedAnchor=null}update(){this.render()}};customElements.get("pagefind-results")||customElements.define("pagefind-results",Se);var Ne=class extends f{constructor(){super();this.containerEl=null;this.showEmpty=!1;this.expanded=!1;this.openFilters=[];this.sortOption="default";this.autoOpenThreshold=6;this.selectedFilters={};this.availableFilters=null;this.totalFilters=null;this.filterElements=new Map;this.groupElements=new Map;this.groupVisibleCounts=new Map;this.isRendered=!1}static get observedAttributes(){return["show-empty","expanded","open","sort","auto-open-threshold"]}init(){if(this.hasAttribute("show-empty")&&(this.showEmpty=this.getAttribute("show-empty")!=="false"),this.hasAttribute("expanded")&&(this.expanded=this.getAttribute("expanded")!=="false"),this.hasAttribute("open")&&(this.openFilters=(this.getAttribute("open")||"").split(",").map(e=>e.trim().toLowerCase()).filter(e=>e.length>0)),this.hasAttribute("sort")){let e=this.getAttribute("sort");["default","alphabetical","count-desc","count-asc"].includes(e)&&(this.sortOption=e)}this.hasAttribute("auto-open-threshold")&&(this.autoOpenThreshold=parseInt(this.getAttribute("auto-open-threshold")||"6",10)),this.render()}sortValues(e,t){if(this.sortOption==="default")return e;let r=[...e];switch(this.sortOption){case"alphabetical":r.sort((i,a)=>i[0].localeCompare(a[0]));break;case"count-desc":r.sort((i,a)=>{let l=t[i[0]]??i[1];return(t[a[0]]??a[1])-l});break;case"count-asc":r.sort((i,a)=>{let l=t[i[0]]??i[1],o=t[a[0]]??a[1];return l-o});break}return r}render(){this.innerHTML="",this.instance?.direction==="rtl"?this.setAttribute("dir","rtl"):this.removeAttribute("dir"),this.containerEl=document.createElement("div"),this.containerEl.className="pf-filter-pane",this.appendChild(this.containerEl)}getSelectedText(e){return String(e)}shouldGroupStartOpen(e,t,r){return this.openFilters.length>0?this.openFilters.includes(e.toLowerCase()):this.autoOpenThreshold>0&&r===1&&t<=this.autoOpenThreshold}hasStructureChanged(){if(!this.totalFilters)return!1;let e=new Set(Object.keys(this.totalFilters)),t=new Set(this.groupElements.keys());if(e.size!==t.size)return!0;for(let r of e)if(!t.has(r))return!0;for(let[r,i]of Object.entries(this.totalFilters)){let a=new Set(Object.keys(i));for(let l of a)if(!this.filterElements.has(`${r}:${l}`))return!0}return!1}handleFiltersUpdate(){if(!this.containerEl||!this.totalFilters)return;if(Object.keys(this.totalFilters).length===0){this.containerEl.setAttribute("data-pf-hidden","true");return}this.containerEl.removeAttribute("data-pf-hidden"),!this.isRendered||this.hasStructureChanged()?this.renderFilters():this.updateFilters()}renderFilters(){if(!this.containerEl||!this.totalFilters)return;this.containerEl.innerHTML="",this.filterElements.clear(),this.groupElements.clear(),this.groupVisibleCounts.clear();let e=Object.keys(this.totalFilters);for(let t of e){let r=this.totalFilters[t],i=this.availableFilters?.[t]||{},a=this.renderFilterGroup(t,r,i,e.length);a&&this.containerEl.appendChild(a)}this.isRendered=!0}updateFilters(){for(let[e,t]of this.filterElements){let r=e.indexOf(":"),i=e.slice(0,r),a=e.slice(r+1),l=this.availableFilters?.[i]?.[a]??0,o=this.totalFilters?.[i]?.[a]??0,c=this.selectedFilters[i]?.has(a),u=c?o:l;t.countSpan.textContent=String(u);let d=this.showEmpty||l>0||c,_=t.label.hasAttribute("data-pf-hidden");t.label.toggleAttribute("data-pf-hidden",!d),d&&_?this.groupVisibleCounts.set(i,(this.groupVisibleCounts.get(i)??0)+1):!d&&!_&&this.groupVisibleCounts.set(i,(this.groupVisibleCounts.get(i)??1)-1),t.checkbox.checked=c||!1}for(let[e,t]of this.groupElements){let r=this.selectedFilters[e]?.size||0;t.selectedCountSpan&&(r>0?(t.selectedCountSpan.textContent=this.getSelectedText(r),t.selectedCountSpan.removeAttribute("data-pf-hidden")):t.selectedCountSpan.setAttribute("data-pf-hidden","true"));let i=this.groupVisibleCounts.get(e)??0;t.group.toggleAttribute("data-pf-hidden",i===0)}}renderFilterGroup(e,t,r,i){let a=Object.entries(t);if(a.length===0)return null;let l=this.sortValues(a,r),o=e.charAt(0).toUpperCase()+e.slice(1),c=this.selectedFilters[e]?.size||0,u=this.expanded||this.shouldGroupStartOpen(e,l.length,i),d,_,p=null;if(this.expanded){d=document.createElement("fieldset"),d.className="pf-filter-group";let E=document.createElement("legend");E.className="pf-filter-group-title";let C=document.createElement("span");C.className="pf-filter-group-name",C.textContent=o,E.appendChild(C),d.appendChild(E),_=document.createElement("div"),_.className="pf-filter-options",d.appendChild(_)}else{d=document.createElement("details"),d.className="pf-filter-group",d.dataset.filterName=e,u&&(d.open=!0);let E=document.createElement("summary");E.className="pf-filter-group-title";let C=document.createElement("span");C.className="pf-filter-group-name",C.textContent=o,E.appendChild(C),p=document.createElement("span"),p.className="pf-filter-group-count",p.setAttribute("aria-hidden","true"),c>0?p.textContent=this.getSelectedText(c):p.setAttribute("data-pf-hidden","true"),E.appendChild(p),d.appendChild(E);let y=document.createElement("fieldset");y.className="pf-filter-fieldset";let v=document.createElement("legend");v.setAttribute("data-pf-sr-hidden",""),v.textContent=o,y.appendChild(v),_=document.createElement("div"),_.className="pf-filter-options",y.appendChild(_),d.appendChild(y)}this.groupElements.set(e,{group:d,optionsContainer:_,selectedCountSpan:p});let g=0;for(let[E,C]of l){let y=r[E]??0,v=this.selectedFilters[e]?.has(E)||!1,$e=v?C:y,N=this.showEmpty||y>0||v;N&&g++,this.renderCheckbox(_,e,E,$e,v,N)}return this.groupVisibleCounts.set(e,g),d}renderCheckbox(e,t,r,i,a,l){let o=this.instance.generateId(`pf-filter-${t}-${r}`),c=document.createElement("label");c.className="pf-filter-checkbox",c.setAttribute("for",o),l||c.setAttribute("data-pf-hidden","true");let u=document.createElement("input");u.type="checkbox",u.className="pf-checkbox-input",u.id=o,u.name=t,u.value=r,u.checked=a,u.addEventListener("change",p=>{this.handleCheckboxChange(t,r,p.target.checked)}),c.appendChild(u);let d=document.createTextNode(r);c.appendChild(d);let _=document.createElement("span");_.className="pf-filter-checkbox-count",_.textContent=String(i),c.appendChild(_),e.appendChild(c),this.filterElements.set(`${t}:${r}`,{label:c,countSpan:_,checkbox:u})}handleCheckboxChange(e,t,r){this.selectedFilters[e]||(this.selectedFilters[e]=new Set),r?this.selectedFilters[e].add(t):this.selectedFilters[e].delete(t);let i=this.groupElements.get(e);if(i?.selectedCountSpan){let l=this.selectedFilters[e].size;l>0?(i.selectedCountSpan.textContent=this.getSelectedText(l),i.selectedCountSpan.removeAttribute("data-pf-hidden")):i.selectedCountSpan.setAttribute("data-pf-hidden","true")}let a=Array.from(this.selectedFilters[e]);if(a.length===0){delete this.selectedFilters[e];let l={};for(let[o,c]of Object.entries(this.selectedFilters))l[o]=Array.from(c);this.instance?.triggerFilters(l)}else this.instance?.triggerFilter(e,a)}register(e){e.registerFilter(this),e.on("filters",t=>{let r=t;this.availableFilters=r.available,this.totalFilters=r.total,this.handleFiltersUpdate()},this),e.on("search",(t,r)=>{this.selectedFilters={};let i=r;if(i)for(let[a,l]of Object.entries(i))Array.isArray(l)&&l.length>0&&(this.selectedFilters[a]=new Set(l));this.isRendered&&this.updateFilters()},this),e.on("error",t=>{let r=t;this.showError({message:r.message||"Failed to load filters",details:r.bundlePath?`Bundle path: ${r.bundlePath}`:void 0})},this),e.on("translations",()=>{this.render(),this.isRendered=!1,this.handleFiltersUpdate()},this)}update(){this.hasAttribute("show-empty")&&(this.showEmpty=this.getAttribute("show-empty")!=="false"),this.hasAttribute("expanded")&&(this.expanded=this.getAttribute("expanded")!=="false"),this.hasAttribute("open")&&(this.openFilters=(this.getAttribute("open")||"").split(",").map(e=>e.trim().toLowerCase()).filter(e=>e.length>0)),this.isRendered&&(this.isRendered=!1,this.handleFiltersUpdate())}};customElements.get("pagefind-filter-pane")||customElements.define("pagefind-filter-pane",Ne);var Me=class extends f{constructor(){super();this.isOpen=!1;this.activeIndex=-1;this.selectedValues=new Set;this.isRendered=!1;this.filtersLoaded=!1;this.filterName=null;this.availableFilters={};this.totalFilters={};this.singleSelect=!1;this.showEmpty=!1;this.wrapLabels=!1;this.hideClear=!1;this.sortOption="default";this.wrapperEl=null;this.triggerEl=null;this.menuEl=null;this.optionsEl=null;this.clearEl=null;this.badgeEl=null;this.optionElements=[];this.focusedOptionEl=null;this.typeAheadBuffer="";this.typeAheadTimeout=null;this._handleClickOutside=this._handleClickOutside.bind(this)}static get observedAttributes(){return["filter","label","single-select","show-empty","wrap","sort","hide-clear"]}init(){if(this.filterName=this.getAttribute("filter"),!this.filterName){this.showError({message:"filter attribute is required on "});return}if(this.singleSelect=this.hasAttribute("single-select"),this.showEmpty=this.hasAttribute("show-empty"),this.wrapLabels=this.hasAttribute("wrap"),this.hideClear=this.hasAttribute("hide-clear"),this.hasAttribute("sort")){let e=this.getAttribute("sort");["default","alphabetical","count-desc","count-asc"].includes(e)&&(this.sortOption=e)}this.render()}sortValues(e){if(this.sortOption==="default")return e;let t=[...e];switch(this.sortOption){case"alphabetical":t.sort((r,i)=>r.localeCompare(i));break;case"count-desc":t.sort((r,i)=>{let a=this.availableFilters[r]??this.totalFilters[r]??0;return(this.availableFilters[i]??this.totalFilters[i]??0)-a});break;case"count-asc":t.sort((r,i)=>{let a=this.availableFilters[r]??this.totalFilters[r]??0,l=this.availableFilters[i]??this.totalFilters[i]??0;return a-l});break}return t}render(){this.innerHTML="";let e=this.ensureId("pf-dropdown"),t=`${e}-trigger`,r=`${e}-menu`;this.wrapperEl=document.createElement("div"),this.wrapperEl.className="pf-dropdown-wrapper",this.triggerEl=document.createElement("button"),this.triggerEl.type="button",this.triggerEl.id=t,this.triggerEl.className="pf-dropdown-trigger",this.wrapLabels&&this.triggerEl.classList.add("wrap"),this.triggerEl.setAttribute("role","combobox"),this.triggerEl.setAttribute("aria-haspopup","listbox"),this.triggerEl.setAttribute("aria-expanded","false"),this.triggerEl.setAttribute("aria-controls",r);let i=document.createElement("span");i.className="pf-dropdown-trigger-label",this.wrapLabels&&i.classList.add("wrap"),i.textContent=this.getAttribute("label")||this.filterName||"",this.triggerEl.appendChild(i),this.badgeEl=document.createElement("span"),this.badgeEl.className="pf-dropdown-selected-badge",this.badgeEl.setAttribute("data-pf-hidden","true"),this.badgeEl.setAttribute("aria-hidden","true"),this.badgeEl.textContent="0",this.triggerEl.appendChild(this.badgeEl);let a=document.createElement("span");a.className="pf-dropdown-arrow",a.setAttribute("aria-hidden","true"),this.triggerEl.appendChild(a),this.wrapperEl.appendChild(this.triggerEl),this.menuEl=document.createElement("div"),this.menuEl.id=r,this.menuEl.className="pf-dropdown-menu",this.menuEl.hidden=!0,this.optionsEl=document.createElement("div"),this.optionsEl.className="pf-dropdown-options",this.optionsEl.setAttribute("role","listbox"),this.optionsEl.setAttribute("aria-multiselectable",this.singleSelect?"false":"true"),this.optionsEl.setAttribute("aria-labelledby",t),this.menuEl.appendChild(this.optionsEl),this.wrapperEl.appendChild(this.menuEl),this.hideClear||(this.clearEl=document.createElement("button"),this.clearEl.type="button",this.clearEl.className="pf-dropdown-clear",this.clearEl.setAttribute("aria-disabled","true"),this.clearEl.setAttribute("aria-label",(this.instance?.translate("clear_search")||"Clear")+" "+(this.getAttribute("label")||this.filterName||"")),this.clearEl.textContent=this.instance?.translate("clear_search")||"Clear",this.wrapperEl.appendChild(this.clearEl),this.clearEl.addEventListener("click",()=>this.clearAll())),this.appendChild(this.wrapperEl),this.triggerEl.addEventListener("click",()=>this.toggle()),this.triggerEl.addEventListener("focus",()=>this.instance?.triggerLoad()),this.triggerEl.addEventListener("keydown",l=>{this.isOpen?this.handleMenuKeydown(l):this.handleTriggerKeydown(l)}),this.isRendered=!0}toggle(){this.isOpen?this.close():this.open()}open(){if(this.instance?.triggerLoad(),this.isOpen||!this.menuEl||!this.triggerEl||!this.optionsEl)return;if(this.isOpen=!0,this.filtersLoaded||this.showLoadingState(),this.menuEl.hidden=!1,this.triggerEl.setAttribute("aria-expanded","true"),this.triggerEl.classList.add("open"),this.optionElements.length>0){let i=this.activeIndex>=0?this.activeIndex:0;this.setActiveIndex(i)}let e=this.instance?.translate("keyboard_navigate")||"navigate",t=this.instance?.translate("keyboard_select")||"select",r=this.instance?.translate("keyboard_close")||"close";this.instance?.registerShortcut({label:"\u2191\u2193",description:e},this),this.instance?.registerShortcut({label:"\u21B5",description:t},this),this.instance?.registerShortcut({label:"esc",description:r},this),setTimeout(()=>{document.addEventListener("click",this._handleClickOutside)},0)}close(e=!0){!this.isOpen||!this.menuEl||!this.triggerEl||!this.optionsEl||(this.isOpen=!1,this.menuEl.hidden=!0,this.triggerEl.setAttribute("aria-expanded","false"),this.triggerEl.classList.remove("open"),this.triggerEl?.removeAttribute("aria-activedescendant"),this.focusedOptionEl&&(this.focusedOptionEl.classList.remove("pf-dropdown-option-focused"),this.focusedOptionEl=null),this.instance?.deregisterAllShortcuts(this),document.removeEventListener("click",this._handleClickOutside),e&&this.triggerEl.focus())}_handleClickOutside(e){this.wrapperEl&&!this.wrapperEl.contains(e.target)&&this.close(!1)}handleTriggerKeydown(e){switch(e.key){case"Enter":case" ":e.preventDefault(),this.open();break;case"ArrowDown":e.preventDefault(),this.open(),this.setActiveIndex(0);break;case"ArrowUp":e.preventDefault(),this.open(),this.setActiveIndex(this.optionElements.length-1);break}}handleMenuKeydown(e){switch(e.key){case"ArrowDown":e.preventDefault(),this.moveActiveIndex(1);break;case"ArrowUp":e.preventDefault(),this.moveActiveIndex(-1);break;case"Home":e.preventDefault(),this.setActiveIndex(0);break;case"End":e.preventDefault(),this.setActiveIndex(this.optionElements.length-1);break;case"Enter":case" ":if(e.preventDefault(),this.activeIndex>=0&&this.activeIndex=this.optionElements.length||!this.optionsEl)return;this.focusedOptionEl&&this.focusedOptionEl.classList.remove("pf-dropdown-option-focused"),this.activeIndex=e;let t=this.optionElements[e];t.el.classList.add("pf-dropdown-option-focused"),this.focusedOptionEl=t.el,this.triggerEl?.setAttribute("aria-activedescendant",t.el.id),this.scrollToCenter(t.el)}scrollToCenter(e){if(!this.optionsEl)return;let t=this.optionsEl,r=e.offsetTop,i=e.offsetHeight,a=t.clientHeight,l=r-a/2+i/2;t.scrollTo({top:l,behavior:"smooth"})}moveActiveIndex(e){let t=this.activeIndex+e;t<0?t=this.optionElements.length-1:t>=this.optionElements.length&&(t=0),this.setActiveIndex(t)}handleTypeAhead(e){this.typeAheadBuffer+=e.toLowerCase(),this.typeAheadTimeout&&clearTimeout(this.typeAheadTimeout);let t=this.optionElements.findIndex(({value:r})=>r.toLowerCase().startsWith(this.typeAheadBuffer));t>=0&&this.setActiveIndex(t),this.typeAheadTimeout=setTimeout(()=>{this.typeAheadBuffer=""},500)}showLoadingState(){if(!this.optionsEl)return;this.optionsEl.innerHTML="",this.optionsEl.setAttribute("aria-busy","true");let e=document.createElement("div");e.setAttribute("data-pf-sr-hidden","true"),e.textContent="Loading filter options...",this.optionsEl.appendChild(e);for(let t=0;t<3;t++){let r=document.createElement("div");r.className="pf-dropdown-option pf-dropdown-option-loading",r.setAttribute("aria-hidden","true");let i=document.createElement("span");i.className="pf-dropdown-checkbox pf-skeleton",r.appendChild(i);let a=document.createElement("span");a.className="pf-dropdown-option-label pf-skeleton",a.style.width=`${60+t*15}%`,a.innerHTML=" ",r.appendChild(a),this.optionsEl.appendChild(r)}}updateOptions(){if(!this.optionsEl)return;this.filtersLoaded=!0,this.optionsEl.removeAttribute("aria-busy");let e=Object.keys(this.totalFilters||{}),t=this.sortValues(e);if(e.length===0){this.optionsEl.innerHTML="";let i=document.createElement("div");i.className="pf-dropdown-error",i.setAttribute("role","alert"),i.textContent=`No filter "${this.filterName}" found`,this.optionsEl.appendChild(i),this.optionElements=[],this.focusedOptionEl=null;return}this.wrapperEl?.removeAttribute("data-pf-hidden"),this.optionsEl.innerHTML="",this.optionElements=[],this.focusedOptionEl=null;let r=this.id||this.ensureId("pf-dropdown");t.forEach((i,a)=>{let l=this.availableFilters?.[i]??0,o=this.totalFilters[i]??0,c=this.selectedValues.has(i);if(!(this.showEmpty||l>0||c))return;let d=c?o:l,_=`${r}-option-${a}`,p=this.createOption(_,i,d,c);this.optionsEl.appendChild(p),this.optionElements.push({el:p,value:i})}),this.isOpen&&this.optionElements.length>0&&(this.activeIndex>=this.optionElements.length?this.setActiveIndex(this.optionElements.length-1):this.activeIndex<0?this.setActiveIndex(0):this.setActiveIndex(this.activeIndex)),this.updateBadge()}createOption(e,t,r,i){let a=document.createElement("div");a.id=e,a.className="pf-dropdown-option",this.wrapLabels&&a.classList.add("wrap"),a.setAttribute("role","option"),a.setAttribute("aria-selected",String(i)),a.dataset.value=t;let l=document.createElement("span");l.className="pf-dropdown-checkbox",l.setAttribute("aria-hidden","true"),a.appendChild(l);let o=document.createElement("span");o.className="pf-dropdown-option-label",this.wrapLabels&&o.classList.add("wrap"),o.textContent=t,a.appendChild(o);let c=document.createElement("span");c.className="pf-dropdown-option-count",c.setAttribute("aria-hidden","true"),c.textContent=String(r),a.appendChild(c);let u=r===1?"result":"results";return a.setAttribute("aria-label",`${t}, ${r} ${u}`),a.addEventListener("click",d=>{d.stopPropagation(),this.toggleOption(t)}),a}toggleOption(e){let t=this.selectedValues.has(e);this.singleSelect?(this.selectedValues.has(e)?this.selectedValues.clear():(this.selectedValues.clear(),this.selectedValues.add(e)),this.close()):this.selectedValues.has(e)?this.selectedValues.delete(e):this.selectedValues.add(e);let r=this.selectedValues.has(e);if(r!==t){let i=r?"selected":"deselected";this.instance?.announceRaw(`${e} ${i}`)}this.updateOptionStates(),this.updateBadge(),this.dispatchFilterChange()}clearAll(){this.selectedValues.size!==0&&(this.selectedValues.clear(),this.updateOptionStates(),this.updateBadge(),this.dispatchFilterChange())}dispatchFilterChange(){if(!this.filterName)return;let e=Array.from(this.selectedValues);e.length===0?this.instance?.triggerFilter(this.filterName,[]):this.instance?.triggerFilter(this.filterName,e)}updateBadge(){if(!this.badgeEl||!this.triggerEl)return;let e=this.selectedValues.size;if(e>0){this.badgeEl.textContent=String(e),this.badgeEl.removeAttribute("data-pf-hidden");let t=this.getAttribute("label")||this.filterName||"",r=e===1?"filter":"filters";this.triggerEl.setAttribute("aria-label",`${t}, ${e} ${r} selected`),this.clearEl&&this.clearEl.removeAttribute("aria-disabled")}else this.badgeEl.setAttribute("data-pf-hidden","true"),this.triggerEl.removeAttribute("aria-label"),this.clearEl&&this.clearEl.setAttribute("aria-disabled","true")}updateOptionStates(){for(let{el:e,value:t}of this.optionElements){let r=this.selectedValues.has(t);e.setAttribute("aria-selected",String(r))}}register(e){this.filterName&&(e.registerFilter(this),e.on("filters",t=>{let r=t;this.availableFilters=r.available?.[this.filterName]||{},this.totalFilters=r.total?.[this.filterName]||{},this.isRendered&&this.updateOptions()},this),e.on("search",(t,r)=>{let a=r?.[this.filterName]||[];this.selectedValues=new Set(a),this.isRendered&&(this.updateOptionStates(),this.updateBadge())},this),e.on("error",t=>{let r=t;this.showError({message:r.message||"Failed to load filters",details:r.bundlePath?`Bundle path: ${r.bundlePath}`:void 0})},this))}update(){let e=this.getAttribute("filter");if(e!==this.filterName&&(this.filterName=e,this.selectedValues.clear(),this.updateOptions()),this.singleSelect=this.hasAttribute("single-select"),this.showEmpty=this.hasAttribute("show-empty"),this.wrapLabels=this.hasAttribute("wrap"),this.hideClear=this.hasAttribute("hide-clear"),this.hasAttribute("sort")){let r=this.getAttribute("sort");["default","alphabetical","count-desc","count-asc"].includes(r)&&(this.sortOption=r)}else this.sortOption="default";this.optionsEl&&this.optionsEl.setAttribute("aria-multiselectable",this.singleSelect?"false":"true");let t=this.triggerEl?.querySelector(".pf-dropdown-trigger-label");t&&(t.textContent=this.getAttribute("label")||this.filterName||""),this.updateOptions()}cleanup(){document.removeEventListener("click",this._handleClickOutside),this.instance?.deregisterAllShortcuts(this),this.focusedOptionEl=null,this.typeAheadTimeout&&clearTimeout(this.typeAheadTimeout)}};customElements.get("pagefind-filter-dropdown")||customElements.define("pagefind-filter-dropdown",Me);var Oe=class extends f{constructor(){super();this.dialogEl=null;this.resetOnClose=!1;this._isOpen=!1;this._closeHandler=null}static get observedAttributes(){return["reset-on-close"]}init(){this.hasAttribute("reset-on-close")&&(this.resetOnClose=this.getAttribute("reset-on-close")!=="false"),this.render()}render(){let e=this.children.length>0,t=e?Array.from(this.children):null;this.innerHTML="";let r=this.id||this.instance.generateId("pagefind-modal"),i=this.instance?.translate("keyboard_search")||"search";if(this.instance?.direction==="rtl"?this.setAttribute("dir","rtl"):this.removeAttribute("dir"),this.dialogEl=document.createElement("dialog"),this.dialogEl.className="pf-modal",this.dialogEl.id=r,this.dialogEl.setAttribute("aria-label",i),e&&t)t.forEach(a=>this.dialogEl.appendChild(a));else{let a=this.getAttribute("instance"),l=document.createElement("pagefind-modal-header"),o=document.createElement("pagefind-input");a&&o.setAttribute("instance",a),l.appendChild(o);let c=document.createElement("pagefind-modal-body"),u=document.createElement("pagefind-summary"),d=document.createElement("pagefind-results");a&&(u.setAttribute("instance",a),d.setAttribute("instance",a)),c.append(u,d);let _=document.createElement("pagefind-modal-footer"),p=document.createElement("pagefind-keyboard-hints");a&&p.setAttribute("instance",a),_.appendChild(p),this.dialogEl.append(l,c,_)}this.appendChild(this.dialogEl),this.setupEventHandlers()}setupEventHandlers(){this.dialogEl&&(this._closeHandler=()=>{this._isOpen=!1,this.handleClose()},this.dialogEl.addEventListener("close",this._closeHandler),this.dialogEl.addEventListener("keydown",e=>{e.key==="Escape"&&(e.preventDefault(),e.stopPropagation(),this.close())},!0),this.dialogEl.addEventListener("click",e=>{e.target===this.dialogEl&&this.close()}))}open(){if(this._isOpen||!this.dialogEl)return;this._isOpen=!0,this.dialogEl.showModal();let e=this.instance?.translate("keyboard_close")||"close";this.instance?.registerShortcut({label:"esc",description:e},this),requestAnimationFrame(()=>{let r=this.querySelector("pagefind-input");if(r&&typeof r.focus=="function")r.focus();else{let i=this.querySelector("input");i&&i.focus()}}),(this.instance?.getUtilities("modal-trigger")||[]).forEach(r=>r.buttonEl?.setAttribute("aria-expanded","true"))}close(){!this._isOpen||!this.dialogEl||this.dialogEl.close()}handleClose(){this.instance?.deregisterAllShortcuts(this),this.resetOnClose&&this.instance&&this.instance.triggerSearch("");let t=(this.instance?.getUtilities("modal-trigger")||[])[0];t&&typeof t.handleModalClose=="function"&&t.handleModalClose()}get isOpen(){return this._isOpen}register(e){e.registerUtility(this,"modal"),e.on("translations",()=>{let t=this._isOpen;this.render(),t&&this.open()},this)}reconcileAria(){(this.instance?.getUtilities("modal-trigger")||[]).forEach(t=>{t.buttonEl&&this.dialogEl?.id&&t.buttonEl.setAttribute("aria-controls",this.dialogEl.id)})}cleanup(){this.dialogEl&&this._closeHandler&&this.dialogEl.removeEventListener("close",this._closeHandler),this.instance?.deregisterAllShortcuts(this)}update(){this.hasAttribute("reset-on-close")&&(this.resetOnClose=this.getAttribute("reset-on-close")!=="false")}};customElements.get("pagefind-modal")||customElements.define("pagefind-modal",Oe);var S=null;function is(){if(S!==null)return S;try{let n=navigator.userAgentData;if(n?.platform)return S=n.platform.toLowerCase().includes("mac"),S}catch{}return S=/mac/i.test(navigator.userAgent),S}function je(n){let s=n.toLowerCase().split("+"),e={mod:!1,ctrl:!1,shift:!1,alt:!1,meta:!1,key:""};for(let t of s)switch(t){case"mod":e.mod=!0;break;case"ctrl":e.ctrl=!0;break;case"shift":e.shift=!0;break;case"alt":e.alt=!0;break;case"meta":case"cmd":case"command":e.meta=!0;break;default:e.key=t}return e}function Be(n,s){let e=is(),t=s.key.toLowerCase()===n.key,r=n.mod?!e:n.ctrl,i=n.mod?e:n.meta,a=r?s.ctrlKey:!s.ctrlKey,l=i?s.metaKey:!s.metaKey,o=n.shift?s.shiftKey:!s.shiftKey,c=n.alt?s.altKey:!s.altKey;return t&&a&&l&&o&&c}function xe(n){let s=is(),e=[],t=[];return n.mod&&(e.push(s?"\u2318":"Ctrl"),t.push(s?"Meta":"Control")),n.meta&&(e.push(s?"\u2318":"Win"),t.push("Meta")),n.ctrl&&(e.push("Ctrl"),t.push("Control")),n.shift&&(e.push("Shift"),t.push("Shift")),n.alt&&(e.push("Alt"),t.push("Alt")),e.push(n.key.toUpperCase()),t.push(n.key),{keys:e,aria:t.join("+")}}var He=class extends f{constructor(){super();this.buttonEl=null;this._userPlaceholder=null;this.shortcut="mod+k";this.hideShortcut=!1;this.compact=!1;this._keydownHandler=null;this._keyBinding=null}static get observedAttributes(){return["placeholder","shortcut","hide-shortcut","compact"]}get placeholder(){return this._userPlaceholder||this.instance?.translate("keyboard_search")||"Search"}init(){this.readAttributes(),this.render(),this.setupKeyboardShortcut()}readAttributes(){this.hasAttribute("placeholder")&&(this._userPlaceholder=this.getAttribute("placeholder")),this.hasAttribute("shortcut")&&(this.shortcut=this.getAttribute("shortcut")||"mod+k"),this.hasAttribute("hide-shortcut")&&(this.hideShortcut=this.getAttribute("hide-shortcut")!=="false"),this.hasAttribute("compact")&&(this.compact=this.getAttribute("compact")!=="false"),this._keyBinding=je(this.shortcut)}render(){if(this.innerHTML="",this.instance?.direction==="rtl"?this.setAttribute("dir","rtl"):this.removeAttribute("dir"),this.buttonEl=document.createElement("button"),this.buttonEl.className="pf-trigger-btn",this.buttonEl.type="button",this.buttonEl.setAttribute("aria-haspopup","dialog"),this.buttonEl.setAttribute("aria-expanded","false"),this.buttonEl.setAttribute("aria-label",this.placeholder||"Search"),this._keyBinding){let t=xe(this._keyBinding);this.buttonEl.setAttribute("aria-keyshortcuts",t.aria)}let e=document.createElement("span");if(e.className="pf-trigger-icon",e.setAttribute("aria-hidden","true"),this.buttonEl.appendChild(e),!this.compact){let t=document.createElement("span");t.className="pf-trigger-text",t.textContent=this.placeholder,this.buttonEl.appendChild(t)}if(!this.hideShortcut&&this._keyBinding){let t=document.createElement("span");t.className="pf-trigger-shortcut",t.setAttribute("aria-hidden","true");let r=xe(this._keyBinding);for(let i of r.keys){let a=document.createElement("span");a.className="pf-trigger-key",a.textContent=i,t.appendChild(a)}this.buttonEl.appendChild(t)}this.appendChild(this.buttonEl),this.buttonEl.addEventListener("click",()=>{this.openModal()})}setupKeyboardShortcut(){this._keydownHandler=e=>{if(!this._keyBinding||!Be(this._keyBinding,e))return;let t=document.activeElement;t&&(t.tagName==="INPUT"||t.tagName==="TEXTAREA"||t.isContentEditable)||(e.preventDefault(),this.openModal())},document.addEventListener("keydown",this._keydownHandler)}openModal(){let t=(this.instance?.getUtilities("modal")||[])[0];t&&typeof t.open=="function"&&(t.open(),this.buttonEl&&this.buttonEl.setAttribute("aria-expanded","true"))}handleModalClose(){this.buttonEl&&(this.buttonEl.setAttribute("aria-expanded","false"),this.buttonEl.focus())}register(e){e.registerUtility(this,"modal-trigger"),e.on("translations",()=>{this.render()},this)}reconcileAria(){let t=(this.instance?.getUtilities("modal")||[])[0];t?.dialogEl?.id&&this.buttonEl&&this.buttonEl.setAttribute("aria-controls",t.dialogEl.id)}cleanup(){this._keydownHandler&&(document.removeEventListener("keydown",this._keydownHandler),this._keydownHandler=null)}update(){this.readAttributes(),this.render()}};customElements.get("pagefind-modal-trigger")||customElements.define("pagefind-modal-trigger",He);var we=class extends f{constructor(){super(...arguments);this.closeBtn=null}init(){this.classList.add("pf-modal-header");let e=document.createElement("div");for(e.className="pf-modal-header-content";this.firstChild;)e.appendChild(this.firstChild);this.closeBtn=document.createElement("button"),this.closeBtn.type="button",this.closeBtn.className="pf-modal-close",this.closeBtn.setAttribute("aria-label",this.instance?.translate("keyboard_close")||"Close"),this.closeBtn.innerHTML='',this.closeBtn.addEventListener("click",()=>{let t=this.closest("pagefind-modal");t&&typeof t.close=="function"&&t.close()}),this.append(e,this.closeBtn)}register(e){e.registerUtility(this,"modal-header"),e.on("translations",()=>{this.closeBtn&&this.closeBtn.setAttribute("aria-label",e.translate("keyboard_close")||"Close")},this)}};customElements.get("pagefind-modal-header")||customElements.define("pagefind-modal-header",we);var Ie=class extends f{init(){this.classList.add("pf-modal-body"),this.setAttribute("tabindex","-1")}register(s){}};customElements.get("pagefind-modal-body")||customElements.define("pagefind-modal-body",Ie);var Ue=class extends f{init(){this.classList.add("pf-modal-footer")}register(s){}};customElements.get("pagefind-modal-footer")||customElements.define("pagefind-modal-footer",Ue);var Le=class extends f{init(){this.classList.add("pf-keyboard-hints"),this.setAttribute("aria-hidden","true")}render(){this.innerHTML="",this.instance?.direction==="rtl"?this.setAttribute("dir","rtl"):this.removeAttribute("dir");let s=this.instance?.getActiveShortcuts()||[];if(s.length===0)return;let e=new Set;for(let t of s){if(e.has(t.label))continue;e.add(t.label);let r=document.createElement("div");r.className="pf-keyboard-hint";let i=document.createElement("kbd");i.className="pf-keyboard-key",i.textContent=t.label,r.appendChild(i),r.appendChild(document.createTextNode(` ${t.description}`)),this.appendChild(r)}}register(s){s.registerUtility(this,"keyboard-hints"),this.render(),s.on("translations",()=>{this.render()},this)}};customElements.get("pagefind-keyboard-hints")||customElements.define("pagefind-keyboard-hints",Le);var va=(n=100)=>new Promise(s=>setTimeout(s,n)),as=(n,s)=>{let e=n.getAttribute("role")==="option"?[n]:Array.from(n.querySelectorAll('[role="option"]'));for(let t=0;t{if(n instanceof Element)return[n];if(Array.isArray(n)&&n.every(s=>s instanceof Element))return n;if(typeof n=="string"||n instanceof String){let s=document.createElement("div");return s.innerHTML=n,[...s.childNodes]}return console.error(`[Pagefind Searchbox]: Expected template to return HTML element or string, got ${typeof n}`),[]},Ra=`{{#if and(options.show_sub_results, sub_results)}}{{/if}}`,ns=R(Ra),ka=``,Aa=R(ka),jt=class{constructor(s){this.data=null;this.cachedOptions=null;this.loading=!1;this.retryDelay=0;this.observer=null;this.rawResult=s.rawResult,this.placeholderEl=s.placeholderEl,this.renderFn=s.renderFn,this.intersectionRoot=s.intersectionRoot,this.index=s.index,this.onLoad=s.onLoad,this.setupObserver()}setupObserver(){if(this.data!==null||this.observer!==null)return;let s={root:this.intersectionRoot,rootMargin:"50px",threshold:.01};this.observer=new IntersectionObserver((e,t)=>{this.data===null&&e?.[0]?.isIntersecting&&(this.load(),t.disconnect(),this.observer=null)},s),this.observer.observe(this.placeholderEl)}async load(){if(!(this.data!==null||this.loading)){this.loading=!0;try{this.data=await this.rawResult.data();let s=this.renderFn(this.data),e=Ke(s);if(e.length>0&&this.placeholderEl.parentNode){let t=e.find(r=>r instanceof Element);this.placeholderEl.replaceWith(...e),t instanceof Element&&(this.placeholderEl=t,as(t,this.index),this.cacheOptions())}}catch{await new Promise(s=>setTimeout(s,this.retryDelay||100)),this.retryDelay=Math.min((this.retryDelay||100)*2,1e4),this.loading=!1}this.onLoad?.()}}cacheOptions(){if(!this.data||!this.placeholderEl){this.cachedOptions=null;return}this.placeholderEl.getAttribute("role")==="group"?this.cachedOptions=Array.from(this.placeholderEl.querySelectorAll('[role="option"]')):this.placeholderEl.getAttribute("role")==="option"?this.cachedOptions=[this.placeholderEl]:this.cachedOptions=[]}cleanup(){this.observer&&(this.observer.disconnect(),this.observer=null),this.cachedOptions=null}},Fe=class extends f{constructor(){super();this.containerEl=null;this.inputEl=null;this.dropdownEl=null;this.resultsEl=null;this.statusEl=null;this.footerEl=null;this.isOpen=!1;this.isLoading=!1;this.results=[];this.activeIndex=-1;this.activeOptionOffset=0;this.searchID=0;this.searchTerm="";this.pendingNavigation=0;this.loadingAnnouncementTimeout=null;this.selectedEl=null;this._userPlaceholder=null;this.debounce=150;this.autofocus=!1;this.showSubResults=!1;this.maxResults=0;this.showKeyboardHints=!0;this.shortcut="mod+k";this.hideShortcut=!1;this.resultTemplate=null;this.compiledResultTemplate=null;this.compiledPlaceholderTemplate=null;this._documentClickHandler=null;this._shortcutKeyHandler=null;this._keyBinding=null;this._shortcutEl=null}static get observedAttributes(){return["placeholder","debounce","autofocus","show-sub-results","max-results","show-keyboard-hints","shortcut","hide-shortcut"]}get placeholder(){return this._userPlaceholder||this.instance?.translate("placeholder")||"Search..."}readAttributes(){this.hasAttribute("placeholder")&&(this._userPlaceholder=this.getAttribute("placeholder")),this.hasAttribute("debounce")&&(this.debounce=parseInt(this.getAttribute("debounce")||"150",10)||150),this.hasAttribute("autofocus")&&(this.autofocus=this.hasAttribute("autofocus")),this.hasAttribute("show-sub-results")&&(this.showSubResults=this.getAttribute("show-sub-results")!=="false"),this.hasAttribute("max-results")&&(this.maxResults=parseInt(this.getAttribute("max-results")||"0",10)),this.hasAttribute("show-keyboard-hints")&&(this.showKeyboardHints=this.getAttribute("show-keyboard-hints")!=="false"),this.hasAttribute("shortcut")&&(this.shortcut=this.getAttribute("shortcut")||"mod+k"),this.hasAttribute("hide-shortcut")&&(this.hideShortcut=this.getAttribute("hide-shortcut")!=="false"),this._keyBinding=je(this.shortcut)}init(){this.readAttributes(),this.checkForTemplates(),this.render(),this.setupOutsideClickHandler(),this.setupShortcutHandler()}checkForTemplates(){let e=this.querySelector('script[type="text/pagefind-template"]:not([data-template]), script[type="text/pagefind-template"][data-template="result"]');e&&(this.compiledResultTemplate=R((e.textContent||"").trim()));let t=this.querySelector('script[type="text/pagefind-template"][data-template="placeholder"]');t&&(this.compiledPlaceholderTemplate=R((t.textContent||"").trim()))}getPlaceholder(){return this.compiledPlaceholderTemplate?this.compiledPlaceholderTemplate({}):Aa({})}render(){let e=[];this.querySelectorAll('script[type="text/pagefind-template"]').forEach(l=>{e.push(l)}),this.innerHTML="",e.forEach(l=>this.appendChild(l));let t=this.instance.generateId("pf-sb-input"),r=this.instance.generateId("pf-sb-results");this.containerEl=document.createElement("div"),this.containerEl.className="pf-searchbox",this.appendChild(this.containerEl);let i=document.createElement("div");if(i.className="pf-searchbox-input-wrapper",this.containerEl.appendChild(i),this.inputEl=document.createElement("input"),this.inputEl.id=t,this.inputEl.className="pf-searchbox-input",this.inputEl.type="text",this.inputEl.setAttribute("role","combobox"),this.inputEl.setAttribute("aria-autocomplete","list"),this.inputEl.setAttribute("aria-controls",r),this.inputEl.setAttribute("aria-expanded","false"),this.inputEl.setAttribute("autocomplete","off"),this.inputEl.setAttribute("autocapitalize","none"),this.inputEl.placeholder=this.placeholder,this.autofocus&&this.inputEl.setAttribute("autofocus","autofocus"),i.appendChild(this.inputEl),!this.hideShortcut&&this._keyBinding){this._shortcutEl=document.createElement("span"),this._shortcutEl.className="pf-trigger-shortcut",this._shortcutEl.setAttribute("aria-hidden","true");let l=xe(this._keyBinding);for(let o of l.keys){let c=document.createElement("span");c.className="pf-trigger-key",c.textContent=o,this._shortcutEl.appendChild(c)}i.appendChild(this._shortcutEl),this.inputEl.setAttribute("aria-keyshortcuts",l.aria)}this.dropdownEl=document.createElement("div"),this.dropdownEl.className="pf-searchbox-dropdown",this.containerEl.appendChild(this.dropdownEl);let a=this.instance?.translate("results_label")||"Search results";this.instance?.direction==="rtl"?this.setAttribute("dir","rtl"):this.removeAttribute("dir"),this.resultsEl=document.createElement("div"),this.resultsEl.id=r,this.resultsEl.className="pf-searchbox-results",this.resultsEl.setAttribute("role","listbox"),this.resultsEl.setAttribute("aria-label",a),this.dropdownEl.appendChild(this.resultsEl),this.statusEl=document.createElement("div"),this.statusEl.className="pf-searchbox-status",this.statusEl.hidden=!0,this.dropdownEl.appendChild(this.statusEl),this.showKeyboardHints&&(this.footerEl=document.createElement("div"),this.footerEl.className="pf-searchbox-footer",this.footerEl.setAttribute("aria-hidden","true"),this.dropdownEl.appendChild(this.footerEl),this.renderFooterHints()),this.setupEventHandlers()}renderFooterHints(){if(!this.footerEl)return;this.footerEl.innerHTML="";let e=this.instance?.translate("keyboard_navigate")||"navigate",t=this.instance?.translate("keyboard_select")||"select",r=this.instance?.translate("keyboard_close")||"close",i=document.createElement("div");i.className="pf-searchbox-footer-hint";let a=document.createElement("span");a.className="pf-searchbox-footer-key",a.textContent="\u2191",i.appendChild(a);let l=document.createElement("span");l.className="pf-searchbox-footer-key",l.textContent="\u2193",i.appendChild(l),i.appendChild(document.createTextNode(` ${e}`)),this.footerEl.appendChild(i);let o=document.createElement("div");o.className="pf-searchbox-footer-hint";let c=document.createElement("span");c.className="pf-searchbox-footer-key",c.textContent="\u21B5",o.appendChild(c),o.appendChild(document.createTextNode(` ${t}`)),this.footerEl.appendChild(o);let u=document.createElement("div");u.className="pf-searchbox-footer-hint";let d=document.createElement("span");d.className="pf-searchbox-footer-key",d.textContent="esc",u.appendChild(d),u.appendChild(document.createTextNode(` ${r}`)),this.footerEl.appendChild(u)}setupEventHandlers(){!this.inputEl||!this.resultsEl||(this.inputEl.addEventListener("input",async e=>{let t=e.target.value;if(this.searchTerm=t,!t||!t.trim()){this.closeDropdown(),this.results=[],this.instance?.triggerSearch("");return}this.openDropdown(),this.showLoadingState();let r=++this.searchID;await va(this.debounce),r===this.searchID&&this.instance?.triggerSearch(t)}),this.inputEl.addEventListener("keydown",e=>{switch(e.key){case"ArrowDown":e.preventDefault(),!this.isOpen&&this.inputEl?.value.trim()&&this.openDropdown(),this.isOpen&&this.results.length>0&&this.moveSelection(1);break;case"ArrowUp":e.preventDefault(),this.isOpen&&this.results.length>0&&this.moveSelection(-1);break;case"Enter":this.isOpen&&this.activeIndex>=0?(e.preventDefault(),this.activateCurrentSelection(e)):!this.isOpen&&this.inputEl?.value.trim()&&(e.preventDefault(),this.openDropdown(),this.results.length>0?(this.rerenderLoadedResults(),this.activeIndex=0,this.activeOptionOffset=0,this.updateSelectionUI()):this.instance?.triggerSearch(this.inputEl.value));break;case"Escape":this.pendingNavigation=0,this.clearLoadingAnnouncement(),this.isOpen&&(e.preventDefault(),this.closeDropdown());break;case"Tab":this.pendingNavigation=0,this.clearLoadingAnnouncement(),this.isOpen&&this.closeDropdown();break}}),this.inputEl.addEventListener("focus",()=>{this.instance?.triggerLoad()}),this.resultsEl.addEventListener("click",e=>{e.target.closest("a")&&this.closeDropdown()}),this.resultsEl.addEventListener("mousemove",e=>{let t=e.target.closest("a");if(t){let r=this.getResultAndOffsetFromElement(t);r&&(r.resultIndex!==this.activeIndex||r.optionOffset!==this.activeOptionOffset)&&(this.activeIndex=r.resultIndex,this.activeOptionOffset=r.optionOffset,this.updateSelectionUI(!1))}}))}setupOutsideClickHandler(){this._documentClickHandler=e=>{this.isOpen&&!this.contains(e.target)&&this.closeDropdown()},document.addEventListener("click",this._documentClickHandler)}setupShortcutHandler(){this._keyBinding&&(this._shortcutKeyHandler=e=>{if(!this._keyBinding||!Be(this._keyBinding,e))return;let t=document.activeElement;t&&(t.tagName==="INPUT"||t.tagName==="TEXTAREA"||t.isContentEditable)||(e.preventDefault(),this.inputEl?.focus())},document.addEventListener("keydown",this._shortcutKeyHandler))}openDropdown(){this.isOpen||!this.containerEl||!this.inputEl||(this.isOpen=!0,this.containerEl.classList.add("open"),this.inputEl.setAttribute("aria-expanded","true"))}closeDropdown(){!this.isOpen||!this.containerEl||!this.inputEl||(this.isOpen=!1,this.pendingNavigation=0,this.clearLoadingAnnouncement(),this.containerEl.classList.remove("open"),this.inputEl.setAttribute("aria-expanded","false"),this.inputEl.removeAttribute("aria-activedescendant"),this.activeIndex=-1,this.activeOptionOffset=0,this.selectedEl=null)}showLoadingState(){if(!this.resultsEl||!this.statusEl)return;this.isLoading=!0,this.resultsEl.innerHTML="",this.selectedEl=null,this.resultsEl.setAttribute("aria-busy","true");let e=this.instance?.translate("searching",{SEARCH_TERM:this.searchTerm})||"Searching...";this.statusEl.textContent=e,this.statusEl.className="pf-searchbox-status pf-searchbox-loading",this.statusEl.hidden=!1}showEmptyState(){if(!this.resultsEl||!this.statusEl)return;this.resultsEl.innerHTML="",this.selectedEl=null,this.resultsEl.removeAttribute("aria-busy");let e=this.instance?.translate("zero_results",{SEARCH_TERM:this.searchTerm})||`No results for "${this.searchTerm}"`;this.statusEl.textContent=e,this.statusEl.className="pf-searchbox-status pf-searchbox-empty",this.statusEl.hidden=!1,this.instance?.announce("zero_results",{SEARCH_TERM:this.searchTerm},"assertive")}getOptionsForResult(e){return e.cachedOptions!==null?e.cachedOptions:!e.data||!e.placeholderEl?[]:e.placeholderEl.getAttribute("role")==="group"?Array.from(e.placeholderEl.querySelectorAll('[role="option"]')):e.placeholderEl.getAttribute("role")==="option"?[e.placeholderEl]:[]}moveSelection(e){let t=this.results.length;if(t===0)return;if(e<0){if(this.activeIndex===-1)return;if(this.activeOptionOffset>0){this.activeOptionOffset--,this.pendingNavigation=0,this.clearLoadingAnnouncement(),this.updateSelectionUI(!0);return}let o=this.activeIndex-1;if(o<0){this.pendingNavigation=0,this.clearLoadingAnnouncement(),this.activeIndex=-1,this.activeOptionOffset=0,this.updateSelectionUI(!0);return}let c=this.results[o];if(!c||!c.data)return;let u=this.getOptionsForResult(c);this.activeIndex=o,this.activeOptionOffset=Math.max(0,u.length-1),this.pendingNavigation=0,this.clearLoadingAnnouncement(),this.updateSelectionUI(!0),this.preloadAhead(o,e);return}if(this.activeIndex===-1){if(this.results[0]&&!this.results[0].data){this.pendingNavigation+=e,this.results[0].load(),this.scheduleLoadingAnnouncement(),this.preloadAhead(0,e);return}this.activeIndex=0,this.activeOptionOffset=0,this.pendingNavigation=0,this.clearLoadingAnnouncement(),this.updateSelectionUI(!0),this.preloadAhead(0,e);return}let r=this.results[this.activeIndex];if(!r?.data){r&&(this.pendingNavigation+=e,r.load(),this.scheduleLoadingAnnouncement(),this.preloadAhead(this.activeIndex,e));return}let i=this.getOptionsForResult(r);if(this.activeOptionOffset=t)return;let l=this.results[a];if(l&&!l.data){this.pendingNavigation+=e,l.load(),this.scheduleLoadingAnnouncement(),this.preloadAhead(a,e);return}this.activeIndex=a,this.activeOptionOffset=0,this.pendingNavigation=0,this.clearLoadingAnnouncement(),this.updateSelectionUI(!0),this.preloadAhead(a,e)}preloadAhead(e,t){let r=t>0?1:-1,i=Math.abs(this.pendingNavigation)+3;for(let a=1;a<=i;a++){let l=e+r*a;if(l>=0&&l{this.loadingAnnouncementTimeout=null,this.instance?.announce("loading",{},"polite")},800))}clearLoadingAnnouncement(){this.loadingAnnouncementTimeout&&(clearTimeout(this.loadingAnnouncementTimeout),this.loadingAnnouncementTimeout=null)}handleResultLoaded(){if(this.clearLoadingAnnouncement(),this.pendingNavigation===0){this.updateSelectionUI();return}let e=this.pendingNavigation>0?1:-1,t=this.activeIndex,r=this.activeOptionOffset;for(;this.pendingNavigation!==0;)if(e>0){let i=this.results[t];if(i?.data){let o=this.getOptionsForResult(i);if(r=this.results.length){this.pendingNavigation=0;break}let l=this.results[a];if(l?.data)t=a,r=0,this.pendingNavigation--;else{l&&(l.load(),this.scheduleLoadingAnnouncement(),this.preloadAhead(a,e));break}}else{if(r>0){r--,this.pendingNavigation++;continue}let i=t-1;if(i<0){this.pendingNavigation=0;break}let a=this.results[i];if(a?.data){let l=this.getOptionsForResult(a);t=i,r=Math.max(0,l.length-1),this.pendingNavigation++}else break}(t!==this.activeIndex||r!==this.activeOptionOffset)&&(this.activeIndex=t,this.activeOptionOffset=r,this.updateSelectionUI(!0))}updateSelectionUI(e=!1){if(!this.resultsEl||!this.inputEl)return;this.selectedEl&&(this.selectedEl.removeAttribute("data-pf-selected"),this.selectedEl.setAttribute("aria-selected","false"),this.selectedEl=null);let t=this.activeIndex>=0?this.results[this.activeIndex]:null,i=(t?this.getOptionsForResult(t):[])[this.activeOptionOffset];i?(i.setAttribute("data-pf-selected",""),i.setAttribute("aria-selected","true"),this.selectedEl=i,this.inputEl.setAttribute("aria-activedescendant",i.id),e&&this.scrollToCenter(i)):this.inputEl.removeAttribute("aria-activedescendant")}scrollToCenter(e){if(!this.resultsEl)return;let t=this.resultsEl,r=e.offsetTop,i=e.offsetHeight,a=t.clientHeight,l=r-a/2+i/2;t.scrollTo({top:l,behavior:"smooth"})}getResultAndOffsetFromElement(e){let t=e.closest("[data-pf-result-index]");if(!t)return null;let r=parseInt(t.getAttribute("data-pf-result-index"),10),i=parseInt(t.getAttribute("data-pf-option-offset")||"0",10);return Number.isNaN(r)||Number.isNaN(i)?null:{resultIndex:r,optionOffset:i}}activateCurrentSelection(e){if(this.activeIndex<0||this.activeIndex>=this.results.length)return;let t=this.results[this.activeIndex];if(!t||!t.data)return;let i=this.getOptionsForResult(t)[this.activeOptionOffset];!i||!i.href||(e.metaKey||e.ctrlKey||e.shiftKey?window.open(i.href,"_blank"):window.location.href=i.href,this.closeDropdown())}handleResults(e){this.isLoading=!1,this.resultsEl&&this.resultsEl.removeAttribute("aria-busy"),this.statusEl&&(this.statusEl.hidden=!0);for(let i of this.results)i.cleanup();if(this.pendingNavigation=0,this.clearLoadingAnnouncement(),!e.results||e.results.length===0){this.results=[],this.showEmptyState();return}let t=this.maxResults>0?e.results.slice(0,this.maxResults):e.results;this.resultsEl&&(this.resultsEl.innerHTML="",this.selectedEl=null);let r=this.getResultRenderer();this.results=t.map((i,a)=>{let l=this.getPlaceholder(),c=Ke(l)[0];this.resultsEl&&c&&this.resultsEl.appendChild(c);let u=new jt({rawResult:i,placeholderEl:c,renderFn:r,intersectionRoot:this.resultsEl,index:a,onLoad:()=>{this.results[a]===u&&this.handleResultLoaded()}});return u}),this.activeIndex=0,this.activeOptionOffset=0,this.updateSelectionUI(),this.announceResults()}buildTemplateData(e){let t=this.showSubResults?this.instance.getDisplaySubResults(e):[],r=this.instance.generateId("pf-sb-result");return{meta:e.meta||{},excerpt:e.excerpt||"",url:e.url||"",sub_results:t.map(i=>{let a=this.instance.generateId("pf-sb-result");return{title:i.title,url:i.url,excerpt:i.excerpt,aria:{result_id:a,title_id:`${a}-title`,excerpt_id:`${a}-excerpt`}}}),options:{show_sub_results:this.showSubResults},aria:{result_id:r,title_id:`${r}-title`,excerpt_id:`${r}-excerpt`}}}getResultRenderer(){if(this.resultTemplate)return this.resultTemplate;if(this.compiledResultTemplate){let e=this.compiledResultTemplate;return t=>{let r=this.buildTemplateData(t);return e(r)}}return e=>{let t=this.buildTemplateData(e);return ns(t)}}rerenderLoadedResults(){if(this.resultsEl){this.resultsEl.innerHTML="",this.selectedEl=null;for(let e=0;e{this.searchTerm&&this.searchTerm.trim()&&(this.openDropdown(),this.showLoadingState())},this),e.on("results",t=>{this.handleResults(t)},this),e.on("error",t=>{let r=t;this.isLoading=!1;let i=e.translate("error_search")||"Search failed";this.showError({message:r.message||i,details:r.bundlePath?`Bundle path: ${r.bundlePath}`:void 0}),e.announce("error_search",{},"assertive")},this),e.on("search",t=>{this.inputEl&&document.activeElement!==this.inputEl&&(this.inputEl.value=t,this.searchTerm=t)},this),e.on("translations",()=>{let t=this.inputEl?.value||"",r=this.isOpen;this.render(),this.inputEl&&t&&(this.inputEl.value=t),r&&(this.openDropdown(),this.results.length>0&&(this.rerenderLoadedResults(),this.updateSelectionUI()))},this)}cleanup(){this.clearLoadingAnnouncement();for(let e of this.results)e.cleanup();this.results=[],this.selectedEl=null,this._documentClickHandler&&(document.removeEventListener("click",this._documentClickHandler),this._documentClickHandler=null),this._shortcutKeyHandler&&(document.removeEventListener("keydown",this._shortcutKeyHandler),this._shortcutKeyHandler=null)}update(){this.readAttributes(),this._documentClickHandler&&(document.removeEventListener("click",this._documentClickHandler),this._documentClickHandler=null),this._shortcutKeyHandler&&(document.removeEventListener("keydown",this._shortcutKeyHandler),this._shortcutKeyHandler=null),this.render(),this.setupOutsideClickHandler(),this.setupShortcutHandler()}focus(){this.inputEl&&this.inputEl.focus()}};customElements.get("pagefind-searchbox")||customElements.define("pagefind-searchbox",Fe);ts("resolveUrl",(n,s)=>{let e=String(n??"");if(!e||/^[a-z][a-z0-9+.-]*:/i.test(e)||/^\/\//.test(e)||e.startsWith("/"))return e;try{return new URL(e,new URL(String(s??"/"),"https://p")).pathname}catch{return e}});typeof window<"u"&&(window.PagefindComponents=Bt);})(); diff --git a/webstatic.example/dist/pagefind/pagefind-entry.json b/webstatic.example/dist/pagefind/pagefind-entry.json new file mode 100644 index 0000000..c299e8c --- /dev/null +++ b/webstatic.example/dist/pagefind/pagefind-entry.json @@ -0,0 +1 @@ +{"version":"1.5.2","languages":{"de":{"hash":"de_8987bfa9ae","wasm":"de","page_count":3},"vi":{"hash":"vi_2270a45bad","wasm":null,"page_count":3},"en":{"hash":"en_9b2654cc0d","wasm":"en","page_count":3}},"include_characters":["_","‿","⁀","⁔","︳","︴","﹍","﹎","﹏","_"]} \ No newline at end of file diff --git a/webstatic.example/dist/pagefind/pagefind-highlight.js b/webstatic.example/dist/pagefind/pagefind-highlight.js new file mode 100644 index 0000000..debfd6d --- /dev/null +++ b/webstatic.example/dist/pagefind/pagefind-highlight.js @@ -0,0 +1,1070 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + +// node_modules/mark.js/dist/mark.js +var require_mark = __commonJS({ + "node_modules/mark.js/dist/mark.js"(exports, module) { + (function(global, factory) { + typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define(factory) : global.Mark = factory(); + })(exports, (function() { + "use strict"; + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function(obj) { + return typeof obj; + } : function(obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + var classCallCheck = function(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + }; + var createClass = /* @__PURE__ */ (function() { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + return function(Constructor, protoProps, staticProps) { + if (protoProps) defineProperties(Constructor.prototype, protoProps); + if (staticProps) defineProperties(Constructor, staticProps); + return Constructor; + }; + })(); + var _extends = Object.assign || function(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + return target; + }; + var DOMIterator = (function() { + function DOMIterator2(ctx) { + var iframes = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true; + var exclude = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : []; + var iframesTimeout = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 5e3; + classCallCheck(this, DOMIterator2); + this.ctx = ctx; + this.iframes = iframes; + this.exclude = exclude; + this.iframesTimeout = iframesTimeout; + } + createClass(DOMIterator2, [{ + key: "getContexts", + value: function getContexts() { + var ctx = void 0, filteredCtx = []; + if (typeof this.ctx === "undefined" || !this.ctx) { + ctx = []; + } else if (NodeList.prototype.isPrototypeOf(this.ctx)) { + ctx = Array.prototype.slice.call(this.ctx); + } else if (Array.isArray(this.ctx)) { + ctx = this.ctx; + } else if (typeof this.ctx === "string") { + ctx = Array.prototype.slice.call(document.querySelectorAll(this.ctx)); + } else { + ctx = [this.ctx]; + } + ctx.forEach(function(ctx2) { + var isDescendant = filteredCtx.filter(function(contexts) { + return contexts.contains(ctx2); + }).length > 0; + if (filteredCtx.indexOf(ctx2) === -1 && !isDescendant) { + filteredCtx.push(ctx2); + } + }); + return filteredCtx; + } + }, { + key: "getIframeContents", + value: function getIframeContents(ifr, successFn) { + var errorFn = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : function() { + }; + var doc = void 0; + try { + var ifrWin = ifr.contentWindow; + doc = ifrWin.document; + if (!ifrWin || !doc) { + throw new Error("iframe inaccessible"); + } + } catch (e) { + errorFn(); + } + if (doc) { + successFn(doc); + } + } + }, { + key: "isIframeBlank", + value: function isIframeBlank(ifr) { + var bl = "about:blank", src = ifr.getAttribute("src").trim(), href = ifr.contentWindow.location.href; + return href === bl && src !== bl && src; + } + }, { + key: "observeIframeLoad", + value: function observeIframeLoad(ifr, successFn, errorFn) { + var _this = this; + var called = false, tout = null; + var listener = function listener2() { + if (called) { + return; + } + called = true; + clearTimeout(tout); + try { + if (!_this.isIframeBlank(ifr)) { + ifr.removeEventListener("load", listener2); + _this.getIframeContents(ifr, successFn, errorFn); + } + } catch (e) { + errorFn(); + } + }; + ifr.addEventListener("load", listener); + tout = setTimeout(listener, this.iframesTimeout); + } + }, { + key: "onIframeReady", + value: function onIframeReady(ifr, successFn, errorFn) { + try { + if (ifr.contentWindow.document.readyState === "complete") { + if (this.isIframeBlank(ifr)) { + this.observeIframeLoad(ifr, successFn, errorFn); + } else { + this.getIframeContents(ifr, successFn, errorFn); + } + } else { + this.observeIframeLoad(ifr, successFn, errorFn); + } + } catch (e) { + errorFn(); + } + } + }, { + key: "waitForIframes", + value: function waitForIframes(ctx, done) { + var _this2 = this; + var eachCalled = 0; + this.forEachIframe(ctx, function() { + return true; + }, function(ifr) { + eachCalled++; + _this2.waitForIframes(ifr.querySelector("html"), function() { + if (!--eachCalled) { + done(); + } + }); + }, function(handled) { + if (!handled) { + done(); + } + }); + } + }, { + key: "forEachIframe", + value: function forEachIframe(ctx, filter, each) { + var _this3 = this; + var end = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : function() { + }; + var ifr = ctx.querySelectorAll("iframe"), open = ifr.length, handled = 0; + ifr = Array.prototype.slice.call(ifr); + var checkEnd = function checkEnd2() { + if (--open <= 0) { + end(handled); + } + }; + if (!open) { + checkEnd(); + } + ifr.forEach(function(ifr2) { + if (DOMIterator2.matches(ifr2, _this3.exclude)) { + checkEnd(); + } else { + _this3.onIframeReady(ifr2, function(con) { + if (filter(ifr2)) { + handled++; + each(con); + } + checkEnd(); + }, checkEnd); + } + }); + } + }, { + key: "createIterator", + value: function createIterator(ctx, whatToShow, filter) { + return document.createNodeIterator(ctx, whatToShow, filter, false); + } + }, { + key: "createInstanceOnIframe", + value: function createInstanceOnIframe(contents) { + return new DOMIterator2(contents.querySelector("html"), this.iframes); + } + }, { + key: "compareNodeIframe", + value: function compareNodeIframe(node, prevNode, ifr) { + var compCurr = node.compareDocumentPosition(ifr), prev = Node.DOCUMENT_POSITION_PRECEDING; + if (compCurr & prev) { + if (prevNode !== null) { + var compPrev = prevNode.compareDocumentPosition(ifr), after = Node.DOCUMENT_POSITION_FOLLOWING; + if (compPrev & after) { + return true; + } + } else { + return true; + } + } + return false; + } + }, { + key: "getIteratorNode", + value: function getIteratorNode(itr) { + var prevNode = itr.previousNode(); + var node = void 0; + if (prevNode === null) { + node = itr.nextNode(); + } else { + node = itr.nextNode() && itr.nextNode(); + } + return { + prevNode, + node + }; + } + }, { + key: "checkIframeFilter", + value: function checkIframeFilter(node, prevNode, currIfr, ifr) { + var key = false, handled = false; + ifr.forEach(function(ifrDict, i) { + if (ifrDict.val === currIfr) { + key = i; + handled = ifrDict.handled; + } + }); + if (this.compareNodeIframe(node, prevNode, currIfr)) { + if (key === false && !handled) { + ifr.push({ + val: currIfr, + handled: true + }); + } else if (key !== false && !handled) { + ifr[key].handled = true; + } + return true; + } + if (key === false) { + ifr.push({ + val: currIfr, + handled: false + }); + } + return false; + } + }, { + key: "handleOpenIframes", + value: function handleOpenIframes(ifr, whatToShow, eCb, fCb) { + var _this4 = this; + ifr.forEach(function(ifrDict) { + if (!ifrDict.handled) { + _this4.getIframeContents(ifrDict.val, function(con) { + _this4.createInstanceOnIframe(con).forEachNode(whatToShow, eCb, fCb); + }); + } + }); + } + }, { + key: "iterateThroughNodes", + value: function iterateThroughNodes(whatToShow, ctx, eachCb, filterCb, doneCb) { + var _this5 = this; + var itr = this.createIterator(ctx, whatToShow, filterCb); + var ifr = [], elements = [], node = void 0, prevNode = void 0, retrieveNodes = function retrieveNodes2() { + var _getIteratorNode = _this5.getIteratorNode(itr); + prevNode = _getIteratorNode.prevNode; + node = _getIteratorNode.node; + return node; + }; + while (retrieveNodes()) { + if (this.iframes) { + this.forEachIframe(ctx, function(currIfr) { + return _this5.checkIframeFilter(node, prevNode, currIfr, ifr); + }, function(con) { + _this5.createInstanceOnIframe(con).forEachNode(whatToShow, function(ifrNode) { + return elements.push(ifrNode); + }, filterCb); + }); + } + elements.push(node); + } + elements.forEach(function(node2) { + eachCb(node2); + }); + if (this.iframes) { + this.handleOpenIframes(ifr, whatToShow, eachCb, filterCb); + } + doneCb(); + } + }, { + key: "forEachNode", + value: function forEachNode(whatToShow, each, filter) { + var _this6 = this; + var done = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : function() { + }; + var contexts = this.getContexts(); + var open = contexts.length; + if (!open) { + done(); + } + contexts.forEach(function(ctx) { + var ready = function ready2() { + _this6.iterateThroughNodes(whatToShow, ctx, each, filter, function() { + if (--open <= 0) { + done(); + } + }); + }; + if (_this6.iframes) { + _this6.waitForIframes(ctx, ready); + } else { + ready(); + } + }); + } + }], [{ + key: "matches", + value: function matches(element, selector) { + var selectors = typeof selector === "string" ? [selector] : selector, fn = element.matches || element.matchesSelector || element.msMatchesSelector || element.mozMatchesSelector || element.oMatchesSelector || element.webkitMatchesSelector; + if (fn) { + var match = false; + selectors.every(function(sel) { + if (fn.call(element, sel)) { + match = true; + return false; + } + return true; + }); + return match; + } else { + return false; + } + } + }]); + return DOMIterator2; + })(); + var Mark$1 = (function() { + function Mark3(ctx) { + classCallCheck(this, Mark3); + this.ctx = ctx; + this.ie = false; + var ua = window.navigator.userAgent; + if (ua.indexOf("MSIE") > -1 || ua.indexOf("Trident") > -1) { + this.ie = true; + } + } + createClass(Mark3, [{ + key: "log", + value: function log(msg) { + var level = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "debug"; + var log2 = this.opt.log; + if (!this.opt.debug) { + return; + } + if ((typeof log2 === "undefined" ? "undefined" : _typeof(log2)) === "object" && typeof log2[level] === "function") { + log2[level]("mark.js: " + msg); + } + } + }, { + key: "escapeStr", + value: function escapeStr(str) { + return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); + } + }, { + key: "createRegExp", + value: function createRegExp(str) { + if (this.opt.wildcards !== "disabled") { + str = this.setupWildcardsRegExp(str); + } + str = this.escapeStr(str); + if (Object.keys(this.opt.synonyms).length) { + str = this.createSynonymsRegExp(str); + } + if (this.opt.ignoreJoiners || this.opt.ignorePunctuation.length) { + str = this.setupIgnoreJoinersRegExp(str); + } + if (this.opt.diacritics) { + str = this.createDiacriticsRegExp(str); + } + str = this.createMergedBlanksRegExp(str); + if (this.opt.ignoreJoiners || this.opt.ignorePunctuation.length) { + str = this.createJoinersRegExp(str); + } + if (this.opt.wildcards !== "disabled") { + str = this.createWildcardsRegExp(str); + } + str = this.createAccuracyRegExp(str); + return str; + } + }, { + key: "createSynonymsRegExp", + value: function createSynonymsRegExp(str) { + var syn = this.opt.synonyms, sens = this.opt.caseSensitive ? "" : "i", joinerPlaceholder = this.opt.ignoreJoiners || this.opt.ignorePunctuation.length ? "\0" : ""; + for (var index in syn) { + if (syn.hasOwnProperty(index)) { + var value = syn[index], k1 = this.opt.wildcards !== "disabled" ? this.setupWildcardsRegExp(index) : this.escapeStr(index), k2 = this.opt.wildcards !== "disabled" ? this.setupWildcardsRegExp(value) : this.escapeStr(value); + if (k1 !== "" && k2 !== "") { + str = str.replace(new RegExp("(" + this.escapeStr(k1) + "|" + this.escapeStr(k2) + ")", "gm" + sens), joinerPlaceholder + ("(" + this.processSynomyms(k1) + "|") + (this.processSynomyms(k2) + ")") + joinerPlaceholder); + } + } + } + return str; + } + }, { + key: "processSynomyms", + value: function processSynomyms(str) { + if (this.opt.ignoreJoiners || this.opt.ignorePunctuation.length) { + str = this.setupIgnoreJoinersRegExp(str); + } + return str; + } + }, { + key: "setupWildcardsRegExp", + value: function setupWildcardsRegExp(str) { + str = str.replace(/(?:\\)*\?/g, function(val) { + return val.charAt(0) === "\\" ? "?" : ""; + }); + return str.replace(/(?:\\)*\*/g, function(val) { + return val.charAt(0) === "\\" ? "*" : ""; + }); + } + }, { + key: "createWildcardsRegExp", + value: function createWildcardsRegExp(str) { + var spaces = this.opt.wildcards === "withSpaces"; + return str.replace(/\u0001/g, spaces ? "[\\S\\s]?" : "\\S?").replace(/\u0002/g, spaces ? "[\\S\\s]*?" : "\\S*"); + } + }, { + key: "setupIgnoreJoinersRegExp", + value: function setupIgnoreJoinersRegExp(str) { + return str.replace(/[^(|)\\]/g, function(val, indx, original) { + var nextChar = original.charAt(indx + 1); + if (/[(|)\\]/.test(nextChar) || nextChar === "") { + return val; + } else { + return val + "\0"; + } + }); + } + }, { + key: "createJoinersRegExp", + value: function createJoinersRegExp(str) { + var joiner = []; + var ignorePunctuation = this.opt.ignorePunctuation; + if (Array.isArray(ignorePunctuation) && ignorePunctuation.length) { + joiner.push(this.escapeStr(ignorePunctuation.join(""))); + } + if (this.opt.ignoreJoiners) { + joiner.push("\\u00ad\\u200b\\u200c\\u200d"); + } + return joiner.length ? str.split(/\u0000+/).join("[" + joiner.join("") + "]*") : str; + } + }, { + key: "createDiacriticsRegExp", + value: function createDiacriticsRegExp(str) { + var sens = this.opt.caseSensitive ? "" : "i", dct = this.opt.caseSensitive ? ["a\xE0\xE1\u1EA3\xE3\u1EA1\u0103\u1EB1\u1EAF\u1EB3\u1EB5\u1EB7\xE2\u1EA7\u1EA5\u1EA9\u1EAB\u1EAD\xE4\xE5\u0101\u0105", "A\xC0\xC1\u1EA2\xC3\u1EA0\u0102\u1EB0\u1EAE\u1EB2\u1EB4\u1EB6\xC2\u1EA6\u1EA4\u1EA8\u1EAA\u1EAC\xC4\xC5\u0100\u0104", "c\xE7\u0107\u010D", "C\xC7\u0106\u010C", "d\u0111\u010F", "D\u0110\u010E", "e\xE8\xE9\u1EBB\u1EBD\u1EB9\xEA\u1EC1\u1EBF\u1EC3\u1EC5\u1EC7\xEB\u011B\u0113\u0119", "E\xC8\xC9\u1EBA\u1EBC\u1EB8\xCA\u1EC0\u1EBE\u1EC2\u1EC4\u1EC6\xCB\u011A\u0112\u0118", "i\xEC\xED\u1EC9\u0129\u1ECB\xEE\xEF\u012B", "I\xCC\xCD\u1EC8\u0128\u1ECA\xCE\xCF\u012A", "l\u0142", "L\u0141", "n\xF1\u0148\u0144", "N\xD1\u0147\u0143", "o\xF2\xF3\u1ECF\xF5\u1ECD\xF4\u1ED3\u1ED1\u1ED5\u1ED7\u1ED9\u01A1\u1EDF\u1EE1\u1EDB\u1EDD\u1EE3\xF6\xF8\u014D", "O\xD2\xD3\u1ECE\xD5\u1ECC\xD4\u1ED2\u1ED0\u1ED4\u1ED6\u1ED8\u01A0\u1EDE\u1EE0\u1EDA\u1EDC\u1EE2\xD6\xD8\u014C", "r\u0159", "R\u0158", "s\u0161\u015B\u0219\u015F", "S\u0160\u015A\u0218\u015E", "t\u0165\u021B\u0163", "T\u0164\u021A\u0162", "u\xF9\xFA\u1EE7\u0169\u1EE5\u01B0\u1EEB\u1EE9\u1EED\u1EEF\u1EF1\xFB\xFC\u016F\u016B", "U\xD9\xDA\u1EE6\u0168\u1EE4\u01AF\u1EEA\u1EE8\u1EEC\u1EEE\u1EF0\xDB\xDC\u016E\u016A", "y\xFD\u1EF3\u1EF7\u1EF9\u1EF5\xFF", "Y\xDD\u1EF2\u1EF6\u1EF8\u1EF4\u0178", "z\u017E\u017C\u017A", "Z\u017D\u017B\u0179"] : ["a\xE0\xE1\u1EA3\xE3\u1EA1\u0103\u1EB1\u1EAF\u1EB3\u1EB5\u1EB7\xE2\u1EA7\u1EA5\u1EA9\u1EAB\u1EAD\xE4\xE5\u0101\u0105A\xC0\xC1\u1EA2\xC3\u1EA0\u0102\u1EB0\u1EAE\u1EB2\u1EB4\u1EB6\xC2\u1EA6\u1EA4\u1EA8\u1EAA\u1EAC\xC4\xC5\u0100\u0104", "c\xE7\u0107\u010DC\xC7\u0106\u010C", "d\u0111\u010FD\u0110\u010E", "e\xE8\xE9\u1EBB\u1EBD\u1EB9\xEA\u1EC1\u1EBF\u1EC3\u1EC5\u1EC7\xEB\u011B\u0113\u0119E\xC8\xC9\u1EBA\u1EBC\u1EB8\xCA\u1EC0\u1EBE\u1EC2\u1EC4\u1EC6\xCB\u011A\u0112\u0118", "i\xEC\xED\u1EC9\u0129\u1ECB\xEE\xEF\u012BI\xCC\xCD\u1EC8\u0128\u1ECA\xCE\xCF\u012A", "l\u0142L\u0141", "n\xF1\u0148\u0144N\xD1\u0147\u0143", "o\xF2\xF3\u1ECF\xF5\u1ECD\xF4\u1ED3\u1ED1\u1ED5\u1ED7\u1ED9\u01A1\u1EDF\u1EE1\u1EDB\u1EDD\u1EE3\xF6\xF8\u014DO\xD2\xD3\u1ECE\xD5\u1ECC\xD4\u1ED2\u1ED0\u1ED4\u1ED6\u1ED8\u01A0\u1EDE\u1EE0\u1EDA\u1EDC\u1EE2\xD6\xD8\u014C", "r\u0159R\u0158", "s\u0161\u015B\u0219\u015FS\u0160\u015A\u0218\u015E", "t\u0165\u021B\u0163T\u0164\u021A\u0162", "u\xF9\xFA\u1EE7\u0169\u1EE5\u01B0\u1EEB\u1EE9\u1EED\u1EEF\u1EF1\xFB\xFC\u016F\u016BU\xD9\xDA\u1EE6\u0168\u1EE4\u01AF\u1EEA\u1EE8\u1EEC\u1EEE\u1EF0\xDB\xDC\u016E\u016A", "y\xFD\u1EF3\u1EF7\u1EF9\u1EF5\xFFY\xDD\u1EF2\u1EF6\u1EF8\u1EF4\u0178", "z\u017E\u017C\u017AZ\u017D\u017B\u0179"]; + var handled = []; + str.split("").forEach(function(ch) { + dct.every(function(dct2) { + if (dct2.indexOf(ch) !== -1) { + if (handled.indexOf(dct2) > -1) { + return false; + } + str = str.replace(new RegExp("[" + dct2 + "]", "gm" + sens), "[" + dct2 + "]"); + handled.push(dct2); + } + return true; + }); + }); + return str; + } + }, { + key: "createMergedBlanksRegExp", + value: function createMergedBlanksRegExp(str) { + return str.replace(/[\s]+/gmi, "[\\s]+"); + } + }, { + key: "createAccuracyRegExp", + value: function createAccuracyRegExp(str) { + var _this = this; + var chars = "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~\xA1\xBF"; + var acc = this.opt.accuracy, val = typeof acc === "string" ? acc : acc.value, ls = typeof acc === "string" ? [] : acc.limiters, lsJoin = ""; + ls.forEach(function(limiter) { + lsJoin += "|" + _this.escapeStr(limiter); + }); + switch (val) { + case "partially": + default: + return "()(" + str + ")"; + case "complementary": + lsJoin = "\\s" + (lsJoin ? lsJoin : this.escapeStr(chars)); + return "()([^" + lsJoin + "]*" + str + "[^" + lsJoin + "]*)"; + case "exactly": + return "(^|\\s" + lsJoin + ")(" + str + ")(?=$|\\s" + lsJoin + ")"; + } + } + }, { + key: "getSeparatedKeywords", + value: function getSeparatedKeywords(sv) { + var _this2 = this; + var stack = []; + sv.forEach(function(kw) { + if (!_this2.opt.separateWordSearch) { + if (kw.trim() && stack.indexOf(kw) === -1) { + stack.push(kw); + } + } else { + kw.split(" ").forEach(function(kwSplitted) { + if (kwSplitted.trim() && stack.indexOf(kwSplitted) === -1) { + stack.push(kwSplitted); + } + }); + } + }); + return { + "keywords": stack.sort(function(a, b) { + return b.length - a.length; + }), + "length": stack.length + }; + } + }, { + key: "isNumeric", + value: function isNumeric(value) { + return Number(parseFloat(value)) == value; + } + }, { + key: "checkRanges", + value: function checkRanges(array) { + var _this3 = this; + if (!Array.isArray(array) || Object.prototype.toString.call(array[0]) !== "[object Object]") { + this.log("markRanges() will only accept an array of objects"); + this.opt.noMatch(array); + return []; + } + var stack = []; + var last = 0; + array.sort(function(a, b) { + return a.start - b.start; + }).forEach(function(item) { + var _callNoMatchOnInvalid = _this3.callNoMatchOnInvalidRanges(item, last), start = _callNoMatchOnInvalid.start, end = _callNoMatchOnInvalid.end, valid = _callNoMatchOnInvalid.valid; + if (valid) { + item.start = start; + item.length = end - start; + stack.push(item); + last = end; + } + }); + return stack; + } + }, { + key: "callNoMatchOnInvalidRanges", + value: function callNoMatchOnInvalidRanges(range, last) { + var start = void 0, end = void 0, valid = false; + if (range && typeof range.start !== "undefined") { + start = parseInt(range.start, 10); + end = start + parseInt(range.length, 10); + if (this.isNumeric(range.start) && this.isNumeric(range.length) && end - last > 0 && end - start > 0) { + valid = true; + } else { + this.log("Ignoring invalid or overlapping range: " + ("" + JSON.stringify(range))); + this.opt.noMatch(range); + } + } else { + this.log("Ignoring invalid range: " + JSON.stringify(range)); + this.opt.noMatch(range); + } + return { + start, + end, + valid + }; + } + }, { + key: "checkWhitespaceRanges", + value: function checkWhitespaceRanges(range, originalLength, string) { + var end = void 0, valid = true, max = string.length, offset = originalLength - max, start = parseInt(range.start, 10) - offset; + start = start > max ? max : start; + end = start + parseInt(range.length, 10); + if (end > max) { + end = max; + this.log("End range automatically set to the max value of " + max); + } + if (start < 0 || end - start < 0 || start > max || end > max) { + valid = false; + this.log("Invalid range: " + JSON.stringify(range)); + this.opt.noMatch(range); + } else if (string.substring(start, end).replace(/\s+/g, "") === "") { + valid = false; + this.log("Skipping whitespace only range: " + JSON.stringify(range)); + this.opt.noMatch(range); + } + return { + start, + end, + valid + }; + } + }, { + key: "getTextNodes", + value: function getTextNodes(cb) { + var _this4 = this; + var val = "", nodes = []; + this.iterator.forEachNode(NodeFilter.SHOW_TEXT, function(node) { + nodes.push({ + start: val.length, + end: (val += node.textContent).length, + node + }); + }, function(node) { + if (_this4.matchesExclude(node.parentNode)) { + return NodeFilter.FILTER_REJECT; + } else { + return NodeFilter.FILTER_ACCEPT; + } + }, function() { + cb({ + value: val, + nodes + }); + }); + } + }, { + key: "matchesExclude", + value: function matchesExclude(el) { + return DOMIterator.matches(el, this.opt.exclude.concat(["script", "style", "title", "head", "html"])); + } + }, { + key: "wrapRangeInTextNode", + value: function wrapRangeInTextNode(node, start, end) { + var hEl = !this.opt.element ? "mark" : this.opt.element, startNode = node.splitText(start), ret = startNode.splitText(end - start); + var repl = document.createElement(hEl); + repl.setAttribute("data-markjs", "true"); + if (this.opt.className) { + repl.setAttribute("class", this.opt.className); + } + repl.textContent = startNode.textContent; + startNode.parentNode.replaceChild(repl, startNode); + return ret; + } + }, { + key: "wrapRangeInMappedTextNode", + value: function wrapRangeInMappedTextNode(dict, start, end, filterCb, eachCb) { + var _this5 = this; + dict.nodes.every(function(n, i) { + var sibl = dict.nodes[i + 1]; + if (typeof sibl === "undefined" || sibl.start > start) { + if (!filterCb(n.node)) { + return false; + } + var s = start - n.start, e = (end > n.end ? n.end : end) - n.start, startStr = dict.value.substr(0, n.start), endStr = dict.value.substr(e + n.start); + n.node = _this5.wrapRangeInTextNode(n.node, s, e); + dict.value = startStr + endStr; + dict.nodes.forEach(function(k, j) { + if (j >= i) { + if (dict.nodes[j].start > 0 && j !== i) { + dict.nodes[j].start -= e; + } + dict.nodes[j].end -= e; + } + }); + end -= e; + eachCb(n.node.previousSibling, n.start); + if (end > n.end) { + start = n.end; + } else { + return false; + } + } + return true; + }); + } + }, { + key: "wrapMatches", + value: function wrapMatches(regex, ignoreGroups, filterCb, eachCb, endCb) { + var _this6 = this; + var matchIdx = ignoreGroups === 0 ? 0 : ignoreGroups + 1; + this.getTextNodes(function(dict) { + dict.nodes.forEach(function(node) { + node = node.node; + var match = void 0; + while ((match = regex.exec(node.textContent)) !== null && match[matchIdx] !== "") { + if (!filterCb(match[matchIdx], node)) { + continue; + } + var pos = match.index; + if (matchIdx !== 0) { + for (var i = 1; i < matchIdx; i++) { + pos += match[i].length; + } + } + node = _this6.wrapRangeInTextNode(node, pos, pos + match[matchIdx].length); + eachCb(node.previousSibling); + regex.lastIndex = 0; + } + }); + endCb(); + }); + } + }, { + key: "wrapMatchesAcrossElements", + value: function wrapMatchesAcrossElements(regex, ignoreGroups, filterCb, eachCb, endCb) { + var _this7 = this; + var matchIdx = ignoreGroups === 0 ? 0 : ignoreGroups + 1; + this.getTextNodes(function(dict) { + var match = void 0; + while ((match = regex.exec(dict.value)) !== null && match[matchIdx] !== "") { + var start = match.index; + if (matchIdx !== 0) { + for (var i = 1; i < matchIdx; i++) { + start += match[i].length; + } + } + var end = start + match[matchIdx].length; + _this7.wrapRangeInMappedTextNode(dict, start, end, function(node) { + return filterCb(match[matchIdx], node); + }, function(node, lastIndex) { + regex.lastIndex = lastIndex; + eachCb(node); + }); + } + endCb(); + }); + } + }, { + key: "wrapRangeFromIndex", + value: function wrapRangeFromIndex(ranges, filterCb, eachCb, endCb) { + var _this8 = this; + this.getTextNodes(function(dict) { + var originalLength = dict.value.length; + ranges.forEach(function(range, counter) { + var _checkWhitespaceRange = _this8.checkWhitespaceRanges(range, originalLength, dict.value), start = _checkWhitespaceRange.start, end = _checkWhitespaceRange.end, valid = _checkWhitespaceRange.valid; + if (valid) { + _this8.wrapRangeInMappedTextNode(dict, start, end, function(node) { + return filterCb(node, range, dict.value.substring(start, end), counter); + }, function(node) { + eachCb(node, range); + }); + } + }); + endCb(); + }); + } + }, { + key: "unwrapMatches", + value: function unwrapMatches(node) { + var parent = node.parentNode; + var docFrag = document.createDocumentFragment(); + while (node.firstChild) { + docFrag.appendChild(node.removeChild(node.firstChild)); + } + parent.replaceChild(docFrag, node); + if (!this.ie) { + parent.normalize(); + } else { + this.normalizeTextNode(parent); + } + } + }, { + key: "normalizeTextNode", + value: function normalizeTextNode(node) { + if (!node) { + return; + } + if (node.nodeType === 3) { + while (node.nextSibling && node.nextSibling.nodeType === 3) { + node.nodeValue += node.nextSibling.nodeValue; + node.parentNode.removeChild(node.nextSibling); + } + } else { + this.normalizeTextNode(node.firstChild); + } + this.normalizeTextNode(node.nextSibling); + } + }, { + key: "markRegExp", + value: function markRegExp(regexp, opt) { + var _this9 = this; + this.opt = opt; + this.log('Searching with expression "' + regexp + '"'); + var totalMatches = 0, fn = "wrapMatches"; + var eachCb = function eachCb2(element) { + totalMatches++; + _this9.opt.each(element); + }; + if (this.opt.acrossElements) { + fn = "wrapMatchesAcrossElements"; + } + this[fn](regexp, this.opt.ignoreGroups, function(match, node) { + return _this9.opt.filter(node, match, totalMatches); + }, eachCb, function() { + if (totalMatches === 0) { + _this9.opt.noMatch(regexp); + } + _this9.opt.done(totalMatches); + }); + } + }, { + key: "mark", + value: function mark(sv, opt) { + var _this10 = this; + this.opt = opt; + var totalMatches = 0, fn = "wrapMatches"; + var _getSeparatedKeywords = this.getSeparatedKeywords(typeof sv === "string" ? [sv] : sv), kwArr = _getSeparatedKeywords.keywords, kwArrLen = _getSeparatedKeywords.length, sens = this.opt.caseSensitive ? "" : "i", handler = function handler2(kw) { + var regex = new RegExp(_this10.createRegExp(kw), "gm" + sens), matches = 0; + _this10.log('Searching with expression "' + regex + '"'); + _this10[fn](regex, 1, function(term, node) { + return _this10.opt.filter(node, kw, totalMatches, matches); + }, function(element) { + matches++; + totalMatches++; + _this10.opt.each(element); + }, function() { + if (matches === 0) { + _this10.opt.noMatch(kw); + } + if (kwArr[kwArrLen - 1] === kw) { + _this10.opt.done(totalMatches); + } else { + handler2(kwArr[kwArr.indexOf(kw) + 1]); + } + }); + }; + if (this.opt.acrossElements) { + fn = "wrapMatchesAcrossElements"; + } + if (kwArrLen === 0) { + this.opt.done(totalMatches); + } else { + handler(kwArr[0]); + } + } + }, { + key: "markRanges", + value: function markRanges(rawRanges, opt) { + var _this11 = this; + this.opt = opt; + var totalMatches = 0, ranges = this.checkRanges(rawRanges); + if (ranges && ranges.length) { + this.log("Starting to mark with the following ranges: " + JSON.stringify(ranges)); + this.wrapRangeFromIndex(ranges, function(node, range, match, counter) { + return _this11.opt.filter(node, range, match, counter); + }, function(element, range) { + totalMatches++; + _this11.opt.each(element, range); + }, function() { + _this11.opt.done(totalMatches); + }); + } else { + this.opt.done(totalMatches); + } + } + }, { + key: "unmark", + value: function unmark(opt) { + var _this12 = this; + this.opt = opt; + var sel = this.opt.element ? this.opt.element : "*"; + sel += "[data-markjs]"; + if (this.opt.className) { + sel += "." + this.opt.className; + } + this.log('Removal selector "' + sel + '"'); + this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT, function(node) { + _this12.unwrapMatches(node); + }, function(node) { + var matchesSel = DOMIterator.matches(node, sel), matchesExclude = _this12.matchesExclude(node); + if (!matchesSel || matchesExclude) { + return NodeFilter.FILTER_REJECT; + } else { + return NodeFilter.FILTER_ACCEPT; + } + }, this.opt.done); + } + }, { + key: "opt", + set: function set$$1(val) { + this._opt = _extends({}, { + "element": "", + "className": "", + "exclude": [], + "iframes": false, + "iframesTimeout": 5e3, + "separateWordSearch": true, + "diacritics": true, + "synonyms": {}, + "accuracy": "partially", + "acrossElements": false, + "caseSensitive": false, + "ignoreJoiners": false, + "ignoreGroups": 0, + "ignorePunctuation": [], + "wildcards": "disabled", + "each": function each() { + }, + "noMatch": function noMatch() { + }, + "filter": function filter() { + return true; + }, + "done": function done() { + }, + "debug": false, + "log": window.console + }, val); + }, + get: function get$$1() { + return this._opt; + } + }, { + key: "iterator", + get: function get$$1() { + return new DOMIterator(this.ctx, this.opt.iframes, this.opt.exclude, this.opt.iframesTimeout); + } + }]); + return Mark3; + })(); + function Mark2(ctx) { + var _this = this; + var instance = new Mark$1(ctx); + this.mark = function(sv, opt) { + instance.mark(sv, opt); + return _this; + }; + this.markRegExp = function(sv, opt) { + instance.markRegExp(sv, opt); + return _this; + }; + this.markRanges = function(sv, opt) { + instance.markRanges(sv, opt); + return _this; + }; + this.unmark = function(opt) { + instance.unmark(opt); + return _this; + }; + return this; + } + return Mark2; + })); + } +}); + +// lib/highlight.ts +var import_mark = __toESM(require_mark(), 1); +var PagefindHighlight = class { + constructor(options = { + markContext: null, + highlightParam: "pagefind-highlight", + markOptions: { + className: "pagefind-highlight", + exclude: ["[data-pagefind-ignore]", "[data-pagefind-ignore] *"] + }, + addStyles: true + }) { + __publicField(this, "highlightParam"); + __publicField(this, "markContext"); + __publicField(this, "markOptions"); + __publicField(this, "addStyles"); + var _a, _b; + const { highlightParam, markContext, markOptions, addStyles } = options; + this.highlightParam = highlightParam ?? "pagefind-highlight"; + this.addStyles = addStyles ?? true; + this.markContext = markContext !== void 0 ? markContext : null; + this.markOptions = markOptions !== void 0 ? markOptions : { + className: "pagefind-highlight", + exclude: ["[data-pagefind-ignore]", "[data-pagefind-ignore] *"] + }; + (_a = this.markOptions).className ?? (_a.className = "pagefind__highlight"); + (_b = this.markOptions).exclude ?? (_b.exclude = [ + "[data-pagefind-ignore]", + "[data-pagefind-ignore] *" + ]); + this.markOptions.separateWordSearch = false; + this.highlight(); + } + getHighlightParams(paramName) { + const urlParams = new URLSearchParams(window.location.search); + return urlParams.getAll(paramName); + } + // Inline styles might be too hard to override + addHighlightStyles(className) { + if (!className) return; + const styleElement = document.createElement("style"); + styleElement.innerText = `:where(.${className}) { background-color: yellow; color: black; }`; + document.head.appendChild(styleElement); + } + createMarkInstance() { + if (this.markContext) { + return new import_mark.default(this.markContext); + } + const pagefindBody = document.querySelectorAll("[data-pagefind-body]"); + if (pagefindBody.length !== 0) { + return new import_mark.default(pagefindBody); + } else { + return new import_mark.default(document.body); + } + } + markText(instance, text) { + instance.mark(text, this.markOptions); + } + highlight() { + const params = this.getHighlightParams(this.highlightParam); + if (!params || params.length === 0) return; + this.addStyles && this.addHighlightStyles(this.markOptions.className); + const markInstance = this.createMarkInstance(); + this.markText(markInstance, params); + } +}; +window.PagefindHighlight = PagefindHighlight; +export { + PagefindHighlight as default +}; +/*! Bundled license information: + +mark.js/dist/mark.js: + (*!*************************************************** + * mark.js v8.11.1 + * https://markjs.io/ + * Copyright (c) 2014–2018, Julian Kühnel + * Released under the MIT license https://git.io/vwTVl + *****************************************************) +*/ diff --git a/webstatic.example/dist/pagefind/pagefind-modular-ui.css b/webstatic.example/dist/pagefind/pagefind-modular-ui.css new file mode 100644 index 0000000..dcf2c3f --- /dev/null +++ b/webstatic.example/dist/pagefind/pagefind-modular-ui.css @@ -0,0 +1,214 @@ +:root { + --pagefind-ui-scale: 0.8; + --pagefind-ui-primary: #034AD8; + --pagefind-ui-fade: #707070; + --pagefind-ui-text: #393939; + --pagefind-ui-background: #ffffff; + --pagefind-ui-border: #eeeeee; + --pagefind-ui-tag: #eeeeee; + --pagefind-ui-border-width: 2px; + --pagefind-ui-border-radius: 8px; + --pagefind-ui-image-border-radius: 8px; + --pagefind-ui-image-box-ratio: 3 / 2; + --pagefind-ui-font: system, -apple-system, ".SFNSText-Regular", + "San Francisco", "Roboto", "Segoe UI", "Helvetica Neue", + "Lucida Grande", sans-serif; +} + +[data-pfmod-hidden] { + display: none !important; +} + +[data-pfmod-suppressed] { + opacity: 0 !important; + pointer-events: none !important; +} + +[data-pfmod-sr-hidden] { + -webkit-clip: rect(0 0 0 0) !important; + clip: rect(0 0 0 0) !important; + -webkit-clip-path: inset(100%) !important; + clip-path: inset(100%) !important; + height: 1px !important; + overflow: hidden !important; + overflow: clip !important; + position: absolute !important; + white-space: nowrap !important; + width: 1px !important; +} + +[data-pfmod-loading] { + color: var(--pagefind-ui-text); + background-color: var(--pagefind-ui-text); + border-radius: var(--pagefind-ui-border-radius); + opacity: 0.1; + pointer-events: none; +} + +/* Input */ + +.pagefind-modular-input-wrapper { + position: relative; +} + +.pagefind-modular-input-wrapper::before { + background-color: var(--pagefind-ui-text); + width: calc(18px * var(--pagefind-ui-scale)); + height: calc(18px * var(--pagefind-ui-scale)); + top: calc(23px * var(--pagefind-ui-scale)); + left: calc(20px * var(--pagefind-ui-scale)); + content: ""; + position: absolute; + display: block; + opacity: 0.7; + -webkit-mask-image: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.7549 11.255H11.9649L11.6849 10.985C12.6649 9.845 13.2549 8.365 13.2549 6.755C13.2549 3.165 10.3449 0.255005 6.75488 0.255005C3.16488 0.255005 0.254883 3.165 0.254883 6.755C0.254883 10.345 3.16488 13.255 6.75488 13.255C8.36488 13.255 9.84488 12.665 10.9849 11.685L11.2549 11.965V12.755L16.2549 17.745L17.7449 16.255L12.7549 11.255ZM6.75488 11.255C4.26488 11.255 2.25488 9.245 2.25488 6.755C2.25488 4.26501 4.26488 2.255 6.75488 2.255C9.24488 2.255 11.2549 4.26501 11.2549 6.755C11.2549 9.245 9.24488 11.255 6.75488 11.255Z' fill='%23000000'/%3E%3C/svg%3E%0A"); + mask-image: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.7549 11.255H11.9649L11.6849 10.985C12.6649 9.845 13.2549 8.365 13.2549 6.755C13.2549 3.165 10.3449 0.255005 6.75488 0.255005C3.16488 0.255005 0.254883 3.165 0.254883 6.755C0.254883 10.345 3.16488 13.255 6.75488 13.255C8.36488 13.255 9.84488 12.665 10.9849 11.685L11.2549 11.965V12.755L16.2549 17.745L17.7449 16.255L12.7549 11.255ZM6.75488 11.255C4.26488 11.255 2.25488 9.245 2.25488 6.755C2.25488 4.26501 4.26488 2.255 6.75488 2.255C9.24488 2.255 11.2549 4.26501 11.2549 6.755C11.2549 9.245 9.24488 11.255 6.75488 11.255Z' fill='%23000000'/%3E%3C/svg%3E%0A"); + -webkit-mask-size: 100%; + mask-size: 100%; + z-index: 9; + pointer-events: none; +} + +.pagefind-modular-input { + height: calc(64px * var(--pagefind-ui-scale)); + padding: 0 calc(70px * var(--pagefind-ui-scale)) 0 calc(54px * var(--pagefind-ui-scale)); + background-color: var(--pagefind-ui-background); + border: var(--pagefind-ui-border-width) solid var(--pagefind-ui-border); + border-radius: var(--pagefind-ui-border-radius); + font-size: calc(21px * var(--pagefind-ui-scale)); + position: relative; + appearance: none; + -webkit-appearance: none; + display: flex; + width: 100%; + box-sizing: border-box; + font-weight: 700; +} + +.pagefind-modular-input::placeholder { + opacity: 0.2; +} + +.pagefind-modular-input-clear { + position: absolute; + top: calc(2px * var(--pagefind-ui-scale)); + right: calc(2px * var(--pagefind-ui-scale)); + height: calc(60px * var(--pagefind-ui-scale)); + border-radius: var(--pagefind-ui-border-radius); + padding: 0 calc(15px * var(--pagefind-ui-scale)) 0 calc(2px * var(--pagefind-ui-scale)); + color: var(--pagefind-ui-text); + font-size: calc(14px * var(--pagefind-ui-scale)); + cursor: pointer; + background-color: var(--pagefind-ui-background); + border: none; + appearance: none; +} + +/* ResultList */ + +.pagefind-modular-list-result { + list-style-type: none; + display: flex; + align-items: flex-start; + gap: min(calc(40px * var(--pagefind-ui-scale)), 3%); + padding: calc(30px * var(--pagefind-ui-scale)) 0 calc(40px * var(--pagefind-ui-scale)); + border-top: solid var(--pagefind-ui-border-width) var(--pagefind-ui-border); +} + +.pagefind-modular-list-result:last-of-type { + border-bottom: solid var(--pagefind-ui-border-width) var(--pagefind-ui-border); +} + +.pagefind-modular-list-thumb { + width: min(30%, + calc((30% - (100px * var(--pagefind-ui-scale))) * 100000)); + max-width: calc(120px * var(--pagefind-ui-scale)); + margin-top: calc(10px * var(--pagefind-ui-scale)); + aspect-ratio: var(--pagefind-ui-image-box-ratio); + position: relative; +} + +.pagefind-modular-list-image { + display: block; + position: absolute; + left: 50%; + transform: translateX(-50%); + font-size: 0; + width: auto; + height: auto; + max-width: 100%; + max-height: 100%; + border-radius: var(--pagefind-ui-image-border-radius); +} + +.pagefind-modular-list-inner { + flex: 1; + display: flex; + flex-direction: column; + align-items: flex-start; + margin-top: calc(10px * var(--pagefind-ui-scale)); +} + +.pagefind-modular-list-title { + display: inline-block; + font-weight: 700; + font-size: calc(21px * var(--pagefind-ui-scale)); + margin-top: 0; + margin-bottom: 0; +} + +.pagefind-modular-list-link { + color: var(--pagefind-ui-text); + text-decoration: none; +} + +.pagefind-modular-list-link:hover { + text-decoration: underline; +} + +.pagefind-modular-list-excerpt { + display: inline-block; + font-weight: 400; + font-size: calc(16px * var(--pagefind-ui-scale)); + margin-top: calc(4px * var(--pagefind-ui-scale)); + margin-bottom: 0; + min-width: calc(250px * var(--pagefind-ui-scale)); +} + +/* FilterPills */ + +.pagefind-modular-filter-pills-wrapper { + overflow-x: scroll; + padding: 15px 0; +} + +.pagefind-modular-filter-pills { + display: flex; + gap: 6px; +} + +.pagefind-modular-filter-pill { + display: flex; + justify-content: center; + align-items: center; + border: none; + appearance: none; + padding: 0 calc(24px * var(--pagefind-ui-scale)); + background-color: var(--pagefind-ui-background); + color: var(--pagefind-ui-fade); + border: var(--pagefind-ui-border-width) solid var(--pagefind-ui-border); + border-radius: calc(25px * var(--pagefind-ui-scale)); + font-size: calc(18px * var(--pagefind-ui-scale)); + height: calc(50px * var(--pagefind-ui-scale)); + cursor: pointer; + white-space: nowrap; +} + +.pagefind-modular-filter-pill:hover { + border-color: var(--pagefind-ui-primary); +} + +.pagefind-modular-filter-pill[aria-pressed="true"] { + border-color: var(--pagefind-ui-primary); + color: var(--pagefind-ui-primary); +} \ No newline at end of file diff --git a/webstatic.example/dist/pagefind/pagefind-modular-ui.js b/webstatic.example/dist/pagefind/pagefind-modular-ui.js new file mode 100644 index 0000000..922cf02 --- /dev/null +++ b/webstatic.example/dist/pagefind/pagefind-modular-ui.js @@ -0,0 +1,8 @@ +(()=>{var w=Object.defineProperty;var b=(i,e)=>{for(var t in e)w(i,t,{get:e[t],enumerable:!0})};var f={};b(f,{FilterPills:()=>c,Input:()=>a,Instance:()=>p,ResultList:()=>o,Summary:()=>h});var r=class i{constructor(e){this.element=document.createElement(e)}id(e){return this.element.id=e,this}class(e){return this.element.classList.add(e),this}attrs(e){for(let[t,s]of Object.entries(e))this.element.setAttribute(t,s);return this}text(e){return this.element.innerText=e,this}html(e){return this.element.innerHTML=e,this}handle(e,t){return this.element.addEventListener(e,t),this}addTo(e){return e instanceof i?e.element.appendChild(this.element):e.appendChild(this.element),this.element}};var T=async(i=100)=>new Promise(e=>setTimeout(e,i)),a=class{constructor(e={}){if(this.inputEl=null,this.clearEl=null,this.instance=null,this.searchID=0,this.debounceTimeoutMs=e.debounceTimeoutMs??300,e.inputElement){if(e.containerElement){console.warn("[Pagefind Input component]: inputElement and containerElement both supplied. Ignoring the container option.");return}this.initExisting(e.inputElement)}else if(e.containerElement)this.initContainer(e.containerElement);else{console.error("[Pagefind Input component]: No selector supplied for containerElement or inputElement");return}this.inputEl.addEventListener("input",async t=>{if(this.instance&&typeof t?.target?.value=="string"){this.updateState(t.target.value);let s=++this.searchID;if(await T(this.debounceTimeoutMs),s!==this.searchID)return null;this.instance?.triggerSearch(t.target.value)}}),this.inputEl.addEventListener("keydown",t=>{t.key==="Escape"&&(++this.searchID,this.inputEl.value="",this.instance?.triggerSearch(""),this.updateState("")),t.key==="Enter"&&t.preventDefault()}),this.inputEl.addEventListener("focus",()=>{this.instance?.triggerLoad()})}initContainer(e){let t=document.querySelector(e);if(!t){console.error(`[Pagefind Input component]: No container found for ${e} selector`);return}if(t.tagName==="INPUT")console.warn(`[Pagefind Input component]: Encountered input element for ${e} when a container was expected`),console.warn("[Pagefind Input component]: Treating containerElement option as inputElement and proceeding"),this.initExisting(e);else{t.innerHTML="";let s=0;for(;document.querySelector(`#pfmod-input-${s}`);)s+=1;let n=new r("form").class("pagefind-modular-input-wrapper").attrs({role:"search","aria-label":"Search this site",action:"javascript:void(0);"});new r("label").attrs({for:`pfmod-input-${s}`,"data-pfmod-sr-hidden":"true"}).text("Search this site").addTo(n),this.inputEl=new r("input").id(`pfmod-input-${s}`).class("pagefind-modular-input").attrs({autocapitalize:"none",enterkeyhint:"search"}).addTo(n),this.clearEl=new r("button").class("pagefind-modular-input-clear").attrs({"data-pfmod-suppressed":"true"}).text("Clear").handle("click",()=>{this.inputEl.value="",this.instance.triggerSearch(""),this.updateState("")}).addTo(n),n.addTo(t)}}initExisting(e){let t=document.querySelector(e);if(!t){console.error(`[Pagefind Input component]: No input element found for ${e} selector`);return}if(t.tagName!=="INPUT"){console.error(`[Pagefind Input component]: Expected ${e} to be an element`);return}this.inputEl=t}updateState(e){this.clearEl&&(e&&e?.length?this.clearEl.removeAttribute("data-pfmod-suppressed"):this.clearEl.setAttribute("data-pfmod-suppressed","true"))}register(e){this.instance=e,this.instance.on("search",(t,s)=>{this.inputEl&&document.activeElement!==this.inputEl&&(this.inputEl.value=t,this.updateState(t))})}focus(){this.inputEl&&this.inputEl.focus()}};var g=i=>{if(i instanceof Element)return[i];if(Array.isArray(i)&&i.every(e=>e instanceof Element))return i;if(typeof i=="string"||i instanceof String){let e=document.createElement("div");return e.innerHTML=i,[...e.childNodes]}else return console.error(`[Pagefind ResultList component]: Expected template function to return an HTML element or string, got ${typeof i}`),[]},v=()=>{let i=(e=30)=>". ".repeat(Math.floor(10+Math.random()*e));return`
  • +
    +
    +

    ${i(30)}

    +

    ${i(40)}

    +
    +
  • `},y=(i,e)=>{let t=new r("li").class("pagefind-modular-list-result");if(e){let l=new r("div").class("pagefind-modular-list-thumb").addTo(t);i?.meta?.image&&new r("img").class("pagefind-modular-list-image").attrs({src:i.meta.image,alt:i.meta.image_alt||i.meta.title}).addTo(l)}let s=new r("div").class("pagefind-modular-list-inner").addTo(t),n=new r("p").class("pagefind-modular-list-title").addTo(s);return new r("a").class("pagefind-modular-list-link").text(i.meta?.title).attrs({href:i.meta?.url||i.url}).addTo(n),new r("p").class("pagefind-modular-list-excerpt").html(i.excerpt).addTo(s),t.element},E=i=>{if(!(i instanceof HTMLElement))return null;let e=window.getComputedStyle(i).overflowY;return e!=="visible"&&e!=="hidden"?i:E(i.parentNode)},d=class{constructor(e={}){this.rawResult=e.result,this.placeholderNodes=e.placeholderNodes,this.resultFn=e.resultFn,this.intersectionEl=e.intersectionEl,this.showImages=e.showImages,this.result=null,this.waitForIntersection()}waitForIntersection(){if(!this.placeholderNodes?.length)return;let e={root:this.intersectionEl,rootMargin:"0px",threshold:.01};new IntersectionObserver((s,n)=>{this.result===null&&s?.[0]?.isIntersecting&&(this.load(),n.disconnect())},e).observe(this.placeholderNodes[0])}async load(){if(!this.placeholderNodes?.length)return;this.result=await this.rawResult.data();let e=this.resultFn(this.result,this.showImages),t=g(e);for(;this.placeholderNodes.length>1;)this.placeholderNodes.pop().remove();this.placeholderNodes[0].replaceWith(...t)}},o=class{constructor(e){if(this.intersectionEl=document.body,this.containerEl=null,this.results=[],this.placeholderTemplate=e.placeholderTemplate??v,this.resultTemplate=e.resultTemplate??y,this.showImages=e.showImages??!0,e.containerElement)this.initContainer(e.containerElement);else{console.error("[Pagefind ResultList component]: No selector supplied for containerElement");return}}initContainer(e){let t=document.querySelector(e);if(!t){console.error(`[Pagefind ResultList component]: No container found for ${e} selector`);return}this.containerEl=t}append(e){for(let t of e)this.containerEl.appendChild(t)}register(e){e.on("results",t=>{this.containerEl&&(this.containerEl.innerHTML="",this.intersectionEl=E(this.containerEl),this.results=t.results.map(s=>{let n=g(this.placeholderTemplate());return this.append(n),new d({result:s,placeholderNodes:n,resultFn:this.resultTemplate,intersectionEl:this.intersectionEl,showImages:this.showImages})}))}),e.on("loading",()=>{this.containerEl&&(this.containerEl.innerHTML="")})}};var h=class{constructor(e={}){if(this.containerEl=null,this.defaultMessage=e.defaultMessage??"",this.term="",e.containerElement)this.initContainer(e.containerElement);else{console.error("[Pagefind Summary component]: No selector supplied for containerElement");return}}initContainer(e){let t=document.querySelector(e);if(!t){console.error(`[Pagefind Summary component]: No container found for ${e} selector`);return}this.containerEl=t,this.containerEl.innerText=this.defaultMessage}register(e){e.on("search",(t,s)=>{this.term=t}),e.on("results",t=>{if(!this.containerEl||!t)return;if(!this.term){this.containerEl.innerText=this.defaultMessage;return}let s=t?.results?.length??0;this.containerEl.innerText=`${s} result${s===1?"":"s"} for ${this.term}`}),e.on("loading",()=>{this.containerEl&&(this.containerEl.innerText=`Searching for ${this.term}...`)})}};var c=class{constructor(e={}){if(this.instance=null,this.wrapper=null,this.pillContainer=null,this.available={},this.selected=["All"],this.total=0,this.filterMemo="",this.filter=e.filter,this.ordering=e.ordering??null,this.alwaysShow=e.alwaysShow??!1,this.selectMultiple=e.selectMultiple??!1,!this.filter?.length){console.error("[Pagefind FilterPills component]: No filter option supplied, nothing to display");return}if(e.containerElement)this.initContainer(e.containerElement);else{console.error("[Pagefind FilterPills component]: No selector supplied for containerElement");return}}initContainer(e){let t=document.querySelector(e);if(!t){console.error(`[Pagefind FilterPills component]: No container found for ${e} selector`);return}t.innerHTML="";let s=`pagefind_modular_filter_pills_${this.filter}`,n=new r("div").class("pagefind-modular-filter-pills-wrapper").attrs({role:"group","aria-labelledby":s});this.alwaysShow||n.attrs({"data-pfmod-hidden":!0}),new r("div").id(s).class("pagefind-modular-filter-pills-label").attrs({"data-pfmod-sr-hidden":!0}).text(`Filter results by ${this.filter}`).addTo(n),this.pillContainer=new r("div").class("pagefind-modular-filter-pills").addTo(n),this.wrapper=n.addTo(t)}update(){let e=this.available.map(t=>t[0]).join("~");e==this.filterMemo?this.updateExisting():(this.renderNew(),this.filterMemo=e)}pushFilters(){let e=this.selected.filter(t=>t!=="All");this.instance.triggerFilter(this.filter,e)}pillInner(e,t){return this.total?`${e} (${t})`:`${e}`}renderNew(){this.available.forEach(([e,t])=>{new r("button").class("pagefind-modular-filter-pill").html(this.pillInner(e,t)).attrs({"aria-pressed":this.selected.includes(e),type:"button"}).handle("click",()=>{e==="All"?this.selected=["All"]:this.selected.includes(e)?this.selected=this.selected.filter(s=>s!==e):this.selectMultiple?this.selected.push(e):this.selected=[e],this.selected?.length?this.selected?.length>1&&(this.selected=this.selected.filter(s=>s!=="All")):this.selected=["All"],this.update(),this.pushFilters()}).addTo(this.pillContainer)})}updateExisting(){let e=[...this.pillContainer.childNodes];this.available.forEach(([t,s],n)=>{e[n].innerHTML=this.pillInner(t,s),e[n].setAttribute("aria-pressed",this.selected.includes(t))})}register(e){this.instance=e,this.instance.on("filters",t=>{if(!this.pillContainer)return;this.selectMultiple?t=t.available:t=t.total;let s=t[this.filter];if(!s){console.warn(`[Pagefind FilterPills component]: No possible values found for the ${this.filter} filter`);return}this.available=Object.entries(s),Array.isArray(this.ordering)?this.available.sort((n,l)=>{let m=this.ordering.indexOf(n[0]),_=this.ordering.indexOf(l[0]);return(m===-1?1/0:m)-(_===-1?1/0:_)}):this.available.sort((n,l)=>n[0].localeCompare(l[0])),this.available.unshift(["All",this.total]),this.update()}),e.on("results",t=>{this.pillContainer&&(this.total=t?.unfilteredResultCount||0,this.available?.[0]?.[0]==="All"&&(this.available[0][1]=this.total),this.total||this.alwaysShow?this.wrapper.removeAttribute("data-pfmod-hidden"):this.wrapper.setAttribute("data-pfmod-hidden","true"),this.update())})}};var P=async(i=50)=>await new Promise(e=>setTimeout(e,i)),u;try{document?.currentScript&&document.currentScript.tagName.toUpperCase()==="SCRIPT"&&(u=new URL(document.currentScript.src).pathname.match(/^(.*\/)(?:pagefind-)?modular-ui.js.*$/)[1])}catch{u="/pagefind/"}var p=class{constructor(e={}){this.__pagefind__=null,this.__initializing__=null,this.__searchID__=0,this.__hooks__={search:[],filters:[],loading:[],results:[]},this.components=[],this.searchTerm="",this.searchFilters={},this.searchResult={},this.availableFilters=null,this.totalFilters=null,this.options={bundlePath:e.bundlePath??u,mergeIndex:e.mergeIndex??[]},delete e.bundlePath,delete e.resetStyles,delete e.processResult,delete e.processTerm,delete e.debounceTimeoutMs,delete e.mergeIndex,delete e.translations,this.pagefindOptions=e}add(e){e?.register?.(this),this.components.push(e)}on(e,t){if(!this.__hooks__[e]){let s=Object.keys(this.__hooks__).join(", ");console.error(`[Pagefind Composable]: Unknown event type ${e}. Supported events: [${s}]`);return}if(typeof t!="function"){console.error(`[Pagefind Composable]: Expected callback to be a function, received ${typeof t}`);return}this.__hooks__[e].push(t)}triggerLoad(){this.__load__()}triggerSearch(e){this.searchTerm=e,this.__dispatch__("search",e,this.searchFilters),this.__search__(e,this.searchFilters)}triggerSearchWithFilters(e,t){this.searchTerm=e,this.searchFilters=t,this.__dispatch__("search",e,t),this.__search__(e,t)}triggerFilters(e){this.searchFilters=e,this.__dispatch__("search",this.searchTerm,e),this.__search__(this.searchTerm,e)}triggerFilter(e,t){this.searchFilters=this.searchFilters||{},this.searchFilters[e]=t,this.__dispatch__("search",this.searchTerm,this.searchFilters),this.__search__(this.searchTerm,this.searchFilters)}__dispatch__(e,...t){this.__hooks__[e]?.forEach(s=>s?.(...t))}async __clear__(){this.__dispatch__("results",{results:[],unfilteredTotalCount:0}),this.availableFilters=await this.__pagefind__.filters(),this.totalFilters=this.availableFilters,this.__dispatch__("filters",{available:this.availableFilters,total:this.totalFilters})}async __search__(e,t){this.__dispatch__("loading"),await this.__load__();let s=++this.__searchID__;if(!e||!e.length)return this.__clear__();let n=await this.__pagefind__.search(e,{filters:t});n&&this.__searchID__===s&&(n.filters&&Object.keys(n.filters)?.length&&(this.availableFilters=n.filters,this.totalFilters=n.totalFilters,this.__dispatch__("filters",{available:this.availableFilters,total:this.totalFilters})),this.searchResult=n,this.__dispatch__("results",this.searchResult))}async __load__(){if(this.__initializing__){for(;!this.__pagefind__;)await P(50);return}if(this.__initializing__=!0,!this.__pagefind__){let e;try{e=await import(`${this.options.bundlePath}pagefind.js`)}catch(t){console.error(t),console.error([`Pagefind couldn't be loaded from ${this.options.bundlePath}pagefind.js`,"You can configure this by passing a bundlePath option to PagefindComposable Instance"].join(` +`)),document?.currentScript&&document.currentScript.tagName.toUpperCase()==="SCRIPT"?console.error(`[DEBUG: Loaded from ${document.currentScript?.src??"bad script location"}]`):console.error("no known script location")}await e.options(this.pagefindOptions||{});for(let t of this.options.mergeIndex){if(!t.bundlePath)throw new Error("mergeIndex requires a bundlePath parameter");let s=t.bundlePath;delete t.bundlePath,await e.mergeIndex(s,t)}this.__pagefind__=e}this.availableFilters=await this.__pagefind__.filters(),this.totalFilters=this.availableFilters,this.__dispatch__("filters",{available:this.availableFilters,total:this.totalFilters})}};window.PagefindModularUI=f;})(); diff --git a/webstatic.example/dist/pagefind/pagefind-ui.css b/webstatic.example/dist/pagefind/pagefind-ui.css new file mode 100644 index 0000000..ff15de4 --- /dev/null +++ b/webstatic.example/dist/pagefind/pagefind-ui.css @@ -0,0 +1 @@ +.pagefind-ui__result.svelte-j9e30.svelte-j9e30{list-style-type:none;display:flex;align-items:flex-start;gap:min(calc(40px * var(--pagefind-ui-scale)),3%);padding:calc(30px * var(--pagefind-ui-scale)) 0 calc(40px * var(--pagefind-ui-scale));border-top:solid var(--pagefind-ui-border-width) var(--pagefind-ui-border)}.pagefind-ui__result.svelte-j9e30.svelte-j9e30:last-of-type{border-bottom:solid var(--pagefind-ui-border-width) var(--pagefind-ui-border)}.pagefind-ui__result-thumb.svelte-j9e30.svelte-j9e30{width:min(30%,calc((30% - (100px * var(--pagefind-ui-scale))) * 100000));max-width:calc(120px * var(--pagefind-ui-scale));margin-top:calc(10px * var(--pagefind-ui-scale));aspect-ratio:var(--pagefind-ui-image-box-ratio);position:relative}.pagefind-ui__result-image.svelte-j9e30.svelte-j9e30{display:block;position:absolute;left:50%;transform:translate(-50%);font-size:0;width:auto;height:auto;max-width:100%;max-height:100%;border-radius:var(--pagefind-ui-image-border-radius)}.pagefind-ui__result-inner.svelte-j9e30.svelte-j9e30{flex:1;display:flex;flex-direction:column;align-items:flex-start;margin-top:calc(10px * var(--pagefind-ui-scale))}.pagefind-ui__result-title.svelte-j9e30.svelte-j9e30{display:inline-block;font-weight:700;font-size:calc(21px * var(--pagefind-ui-scale));margin-top:0;margin-bottom:0}.pagefind-ui__result-title.svelte-j9e30 .pagefind-ui__result-link.svelte-j9e30{color:var(--pagefind-ui-text);text-decoration:none}.pagefind-ui__result-title.svelte-j9e30 .pagefind-ui__result-link.svelte-j9e30:hover{text-decoration:underline}.pagefind-ui__result-excerpt.svelte-j9e30.svelte-j9e30{display:inline-block;font-weight:400;font-size:calc(16px * var(--pagefind-ui-scale));margin-top:calc(4px * var(--pagefind-ui-scale));margin-bottom:0;min-width:calc(250px * var(--pagefind-ui-scale))}.pagefind-ui__loading.svelte-j9e30.svelte-j9e30{color:var(--pagefind-ui-text);background-color:var(--pagefind-ui-text);border-radius:var(--pagefind-ui-border-radius);opacity:.1;pointer-events:none}.pagefind-ui__result-tags.svelte-j9e30.svelte-j9e30{list-style-type:none;padding:0;display:flex;gap:calc(20px * var(--pagefind-ui-scale));flex-wrap:wrap;margin-top:calc(20px * var(--pagefind-ui-scale))}.pagefind-ui__result-tag.svelte-j9e30.svelte-j9e30{padding:calc(4px * var(--pagefind-ui-scale)) calc(8px * var(--pagefind-ui-scale));font-size:calc(14px * var(--pagefind-ui-scale));border-radius:var(--pagefind-ui-border-radius);background-color:var(--pagefind-ui-tag)}.pagefind-ui__result.svelte-4xnkmf.svelte-4xnkmf{list-style-type:none;display:flex;align-items:flex-start;gap:min(calc(40px * var(--pagefind-ui-scale)),3%);padding:calc(30px * var(--pagefind-ui-scale)) 0 calc(40px * var(--pagefind-ui-scale));border-top:solid var(--pagefind-ui-border-width) var(--pagefind-ui-border)}.pagefind-ui__result.svelte-4xnkmf.svelte-4xnkmf:last-of-type{border-bottom:solid var(--pagefind-ui-border-width) var(--pagefind-ui-border)}.pagefind-ui__result-nested.svelte-4xnkmf.svelte-4xnkmf{display:flex;flex-direction:column;padding-left:calc(20px * var(--pagefind-ui-scale))}.pagefind-ui__result-nested.svelte-4xnkmf.svelte-4xnkmf:first-of-type{padding-top:calc(10px * var(--pagefind-ui-scale))}.pagefind-ui__result-nested.svelte-4xnkmf .pagefind-ui__result-link.svelte-4xnkmf{font-size:.9em;position:relative}.pagefind-ui__result-nested.svelte-4xnkmf .pagefind-ui__result-link.svelte-4xnkmf:before{content:"\2937 ";position:absolute;top:0;right:calc(100% + .1em)}.pagefind-ui__result-thumb.svelte-4xnkmf.svelte-4xnkmf{width:min(30%,calc((30% - (100px * var(--pagefind-ui-scale))) * 100000));max-width:calc(120px * var(--pagefind-ui-scale));margin-top:calc(10px * var(--pagefind-ui-scale));aspect-ratio:var(--pagefind-ui-image-box-ratio);position:relative}.pagefind-ui__result-image.svelte-4xnkmf.svelte-4xnkmf{display:block;position:absolute;left:50%;transform:translate(-50%);font-size:0;width:auto;height:auto;max-width:100%;max-height:100%;border-radius:var(--pagefind-ui-image-border-radius)}.pagefind-ui__result-inner.svelte-4xnkmf.svelte-4xnkmf{flex:1;display:flex;flex-direction:column;align-items:flex-start;margin-top:calc(10px * var(--pagefind-ui-scale))}.pagefind-ui__result-title.svelte-4xnkmf.svelte-4xnkmf{display:inline-block;font-weight:700;font-size:calc(21px * var(--pagefind-ui-scale));margin-top:0;margin-bottom:0}.pagefind-ui__result-title.svelte-4xnkmf .pagefind-ui__result-link.svelte-4xnkmf{color:var(--pagefind-ui-text);text-decoration:none}.pagefind-ui__result-title.svelte-4xnkmf .pagefind-ui__result-link.svelte-4xnkmf:hover{text-decoration:underline}.pagefind-ui__result-excerpt.svelte-4xnkmf.svelte-4xnkmf{display:inline-block;font-weight:400;font-size:calc(16px * var(--pagefind-ui-scale));margin-top:calc(4px * var(--pagefind-ui-scale));margin-bottom:0;min-width:calc(250px * var(--pagefind-ui-scale))}.pagefind-ui__loading.svelte-4xnkmf.svelte-4xnkmf{color:var(--pagefind-ui-text);background-color:var(--pagefind-ui-text);border-radius:var(--pagefind-ui-border-radius);opacity:.1;pointer-events:none}.pagefind-ui__result-tags.svelte-4xnkmf.svelte-4xnkmf{list-style-type:none;padding:0;display:flex;gap:calc(20px * var(--pagefind-ui-scale));flex-wrap:wrap;margin-top:calc(20px * var(--pagefind-ui-scale))}.pagefind-ui__result-tag.svelte-4xnkmf.svelte-4xnkmf{padding:calc(4px * var(--pagefind-ui-scale)) calc(8px * var(--pagefind-ui-scale));font-size:calc(14px * var(--pagefind-ui-scale));border-radius:var(--pagefind-ui-border-radius);background-color:var(--pagefind-ui-tag)}legend.svelte-1v2r7ls.svelte-1v2r7ls{position:absolute;clip:rect(0 0 0 0)}.pagefind-ui__filter-panel.svelte-1v2r7ls.svelte-1v2r7ls{min-width:min(calc(260px * var(--pagefind-ui-scale)),100%);flex:1;display:flex;flex-direction:column;margin-top:calc(20px * var(--pagefind-ui-scale))}.pagefind-ui__filter-group.svelte-1v2r7ls.svelte-1v2r7ls{border:0;padding:0}.pagefind-ui__filter-block.svelte-1v2r7ls.svelte-1v2r7ls{padding:0;display:block;border-bottom:solid calc(2px * var(--pagefind-ui-scale)) var(--pagefind-ui-border);padding:calc(20px * var(--pagefind-ui-scale)) 0}.pagefind-ui__filter-name.svelte-1v2r7ls.svelte-1v2r7ls{font-size:calc(16px * var(--pagefind-ui-scale));position:relative;display:flex;align-items:center;list-style:none;font-weight:700;cursor:pointer;height:calc(24px * var(--pagefind-ui-scale))}.pagefind-ui__filter-name.svelte-1v2r7ls.svelte-1v2r7ls::-webkit-details-marker{display:none}.pagefind-ui__filter-name.svelte-1v2r7ls.svelte-1v2r7ls:after{position:absolute;content:"";right:calc(6px * var(--pagefind-ui-scale));top:50%;width:calc(8px * var(--pagefind-ui-scale));height:calc(8px * var(--pagefind-ui-scale));border:solid calc(2px * var(--pagefind-ui-scale)) currentColor;border-right:0;border-top:0;transform:translateY(-70%) rotate(-45deg)}.pagefind-ui__filter-block[open].svelte-1v2r7ls .pagefind-ui__filter-name.svelte-1v2r7ls:after{transform:translateY(-70%) rotate(-225deg)}.pagefind-ui__filter-group.svelte-1v2r7ls.svelte-1v2r7ls{display:flex;flex-direction:column;gap:calc(20px * var(--pagefind-ui-scale));padding-top:calc(30px * var(--pagefind-ui-scale))}.pagefind-ui__filter-value.svelte-1v2r7ls.svelte-1v2r7ls{position:relative;display:flex;align-items:center;gap:calc(8px * var(--pagefind-ui-scale))}.pagefind-ui__filter-value.svelte-1v2r7ls.svelte-1v2r7ls:before{position:absolute;content:"";top:50%;left:calc(8px * var(--pagefind-ui-scale));width:0px;height:0px;border:solid 1px #fff;opacity:0;transform:translate(calc(4.5px * var(--pagefind-ui-scale) * -1),calc(.8px * var(--pagefind-ui-scale))) skew(-5deg) rotate(-45deg);transform-origin:top left;border-top:0;border-right:0;pointer-events:none}.pagefind-ui__filter-value.pagefind-ui__filter-value--checked.svelte-1v2r7ls.svelte-1v2r7ls:before{opacity:1;width:calc(9px * var(--pagefind-ui-scale));height:calc(4px * var(--pagefind-ui-scale));transition:width .1s ease-out .1s,height .1s ease-in}.pagefind-ui__filter-checkbox.svelte-1v2r7ls.svelte-1v2r7ls{margin:0;width:calc(16px * var(--pagefind-ui-scale));height:calc(16px * var(--pagefind-ui-scale));border:solid 1px var(--pagefind-ui-border);appearance:none;-webkit-appearance:none;border-radius:calc(var(--pagefind-ui-border-radius) / 2);background-color:var(--pagefind-ui-background);cursor:pointer}.pagefind-ui__filter-checkbox.svelte-1v2r7ls.svelte-1v2r7ls:checked{background-color:var(--pagefind-ui-primary);border:solid 1px var(--pagefind-ui-primary)}.pagefind-ui__filter-label.svelte-1v2r7ls.svelte-1v2r7ls{cursor:pointer;font-size:calc(16px * var(--pagefind-ui-scale));font-weight:400}.pagefind-ui--reset *:where(:not(html,iframe,canvas,img,svg,video):not(svg *,symbol *)){all:unset;display:revert;outline:revert}.pagefind-ui--reset *,.pagefind-ui--reset *:before,.pagefind-ui--reset *:after{box-sizing:border-box}.pagefind-ui--reset a,.pagefind-ui--reset button{cursor:revert}.pagefind-ui--reset ol,.pagefind-ui--reset ul,.pagefind-ui--reset menu{list-style:none}.pagefind-ui--reset img{max-width:100%}.pagefind-ui--reset table{border-collapse:collapse}.pagefind-ui--reset input,.pagefind-ui--reset textarea{-webkit-user-select:auto}.pagefind-ui--reset textarea{white-space:revert}.pagefind-ui--reset meter{-webkit-appearance:revert;appearance:revert}.pagefind-ui--reset ::placeholder{color:unset}.pagefind-ui--reset :where([hidden]){display:none}.pagefind-ui--reset :where([contenteditable]:not([contenteditable=false])){-moz-user-modify:read-write;-webkit-user-modify:read-write;overflow-wrap:break-word;-webkit-line-break:after-white-space;-webkit-user-select:auto}.pagefind-ui--reset :where([draggable=true]){-webkit-user-drag:element}.pagefind-ui--reset mark{all:revert}:root{--pagefind-ui-scale:.8;--pagefind-ui-primary:#393939;--pagefind-ui-text:#393939;--pagefind-ui-background:#ffffff;--pagefind-ui-border:#eeeeee;--pagefind-ui-tag:#eeeeee;--pagefind-ui-border-width:2px;--pagefind-ui-border-radius:8px;--pagefind-ui-image-border-radius:8px;--pagefind-ui-image-box-ratio:3 / 2;--pagefind-ui-font:system, -apple-system, "BlinkMacSystemFont", ".SFNSText-Regular", "San Francisco", "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", "Ubuntu", "arial", sans-serif}.pagefind-ui.svelte-e9gkc3{width:100%;color:var(--pagefind-ui-text);font-family:var(--pagefind-ui-font)}.pagefind-ui__hidden.svelte-e9gkc3{display:none!important}.pagefind-ui__suppressed.svelte-e9gkc3{opacity:0;pointer-events:none}.pagefind-ui__form.svelte-e9gkc3{position:relative}.pagefind-ui__form.svelte-e9gkc3:before{background-color:var(--pagefind-ui-text);width:calc(18px * var(--pagefind-ui-scale));height:calc(18px * var(--pagefind-ui-scale));top:calc(23px * var(--pagefind-ui-scale));left:calc(20px * var(--pagefind-ui-scale));content:"";position:absolute;display:block;opacity:.7;-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.7549 11.255H11.9649L11.6849 10.985C12.6649 9.845 13.2549 8.365 13.2549 6.755C13.2549 3.165 10.3449 0.255005 6.75488 0.255005C3.16488 0.255005 0.254883 3.165 0.254883 6.755C0.254883 10.345 3.16488 13.255 6.75488 13.255C8.36488 13.255 9.84488 12.665 10.9849 11.685L11.2549 11.965V12.755L16.2549 17.745L17.7449 16.255L12.7549 11.255ZM6.75488 11.255C4.26488 11.255 2.25488 9.245 2.25488 6.755C2.25488 4.26501 4.26488 2.255 6.75488 2.255C9.24488 2.255 11.2549 4.26501 11.2549 6.755C11.2549 9.245 9.24488 11.255 6.75488 11.255Z' fill='%23000000'/%3E%3C/svg%3E%0A");mask-image:url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.7549 11.255H11.9649L11.6849 10.985C12.6649 9.845 13.2549 8.365 13.2549 6.755C13.2549 3.165 10.3449 0.255005 6.75488 0.255005C3.16488 0.255005 0.254883 3.165 0.254883 6.755C0.254883 10.345 3.16488 13.255 6.75488 13.255C8.36488 13.255 9.84488 12.665 10.9849 11.685L11.2549 11.965V12.755L16.2549 17.745L17.7449 16.255L12.7549 11.255ZM6.75488 11.255C4.26488 11.255 2.25488 9.245 2.25488 6.755C2.25488 4.26501 4.26488 2.255 6.75488 2.255C9.24488 2.255 11.2549 4.26501 11.2549 6.755C11.2549 9.245 9.24488 11.255 6.75488 11.255Z' fill='%23000000'/%3E%3C/svg%3E%0A");-webkit-mask-size:100%;mask-size:100%;z-index:9;pointer-events:none}.pagefind-ui__search-input.svelte-e9gkc3{height:calc(64px * var(--pagefind-ui-scale));padding:0 calc(70px * var(--pagefind-ui-scale)) 0 calc(54px * var(--pagefind-ui-scale));background-color:var(--pagefind-ui-background);border:var(--pagefind-ui-border-width) solid var(--pagefind-ui-border);border-radius:var(--pagefind-ui-border-radius);font-size:calc(21px * var(--pagefind-ui-scale));position:relative;appearance:none;-webkit-appearance:none;display:flex;width:100%;box-sizing:border-box;font-weight:700}.pagefind-ui__search-input.svelte-e9gkc3::placeholder{opacity:.2}.pagefind-ui__search-clear.svelte-e9gkc3{position:absolute;top:calc(3px * var(--pagefind-ui-scale));right:calc(3px * var(--pagefind-ui-scale));height:calc(58px * var(--pagefind-ui-scale));padding:0 calc(15px * var(--pagefind-ui-scale)) 0 calc(2px * var(--pagefind-ui-scale));color:var(--pagefind-ui-text);font-size:calc(14px * var(--pagefind-ui-scale));cursor:pointer;background-color:var(--pagefind-ui-background);border-radius:var(--pagefind-ui-border-radius)}.pagefind-ui__drawer.svelte-e9gkc3{gap:calc(60px * var(--pagefind-ui-scale));display:flex;flex-direction:row;flex-wrap:wrap}.pagefind-ui__results-area.svelte-e9gkc3{min-width:min(calc(400px * var(--pagefind-ui-scale)),100%);flex:1000;margin-top:calc(20px * var(--pagefind-ui-scale))}.pagefind-ui__results.svelte-e9gkc3{padding:0}.pagefind-ui__message.svelte-e9gkc3{box-sizing:content-box;font-size:calc(16px * var(--pagefind-ui-scale));height:calc(24px * var(--pagefind-ui-scale));padding:calc(20px * var(--pagefind-ui-scale)) 0;display:flex;align-items:center;font-weight:700;margin-top:0}.pagefind-ui__button.svelte-e9gkc3{margin-top:calc(40px * var(--pagefind-ui-scale));border:var(--pagefind-ui-border-width) solid var(--pagefind-ui-border);border-radius:var(--pagefind-ui-border-radius);height:calc(48px * var(--pagefind-ui-scale));padding:0 calc(12px * var(--pagefind-ui-scale));font-size:calc(16px * var(--pagefind-ui-scale));color:var(--pagefind-ui-primary);background:var(--pagefind-ui-background);width:100%;text-align:center;font-weight:700;cursor:pointer}.pagefind-ui__button.svelte-e9gkc3:hover{border-color:var(--pagefind-ui-primary);color:var(--pagefind-ui-primary);background:var(--pagefind-ui-background)} diff --git a/webstatic.example/dist/pagefind/pagefind-ui.js b/webstatic.example/dist/pagefind/pagefind-ui.js new file mode 100644 index 0000000..fdeb12a --- /dev/null +++ b/webstatic.example/dist/pagefind/pagefind-ui.js @@ -0,0 +1,2 @@ +(()=>{var Os=Object.defineProperty;var x=(l,e)=>{for(var t in e)Os(l,t,{get:e[t],enumerable:!0})};function R(){}function Bt(l){return l()}function ct(){return Object.create(null)}function H(l){l.forEach(Bt)}function ut(l){return typeof l=="function"}function O(l,e){return l!=l?e==e:l!==e||l&&typeof l=="object"||typeof l=="function"}var ot;function ge(l,e){return l===e?!0:(ot||(ot=document.createElement("a")),ot.href=e,l===ot.href)}function Wl(l){return Object.keys(l).length===0}var ht=typeof window<"u"?window:typeof globalThis<"u"?globalThis:global;var Ct=class l{_listeners="WeakMap"in ht?new WeakMap:void 0;_observer=void 0;options;constructor(e){this.options=e}observe(e,t){return this._listeners.set(e,t),this._getObserver().observe(e,this.options),()=>{this._listeners.delete(e),this._observer.unobserve(e)}}_getObserver(){return this._observer??(this._observer=new ResizeObserver(e=>{for(let t of e)l.entries.set(t.target,t),this._listeners.get(t.target)?.(t)}))}};Ct.entries="WeakMap"in ht?new WeakMap:void 0;var Sl=!1;function Vl(){Sl=!0}function Dl(){Sl=!1}function b(l,e){l.appendChild(e)}function h(l,e,t){l.insertBefore(e,t||null)}function B(l){l.parentNode&&l.parentNode.removeChild(l)}function $(l,e){for(let t=0;tl.removeEventListener(e,t,s)}function _(l,e,t){t==null?l.removeAttribute(e):l.getAttribute(e)!==t&&l.setAttribute(e,t)}function Tl(l){return Array.from(l.childNodes)}function W(l,e){e=""+e,l.data!==e&&(l.data=e)}function oe(l,e){l.value=e??""}function z(l,e,t){l.classList.toggle(e,!!t)}var It=class{is_svg=!1;e=void 0;n=void 0;t=void 0;a=void 0;constructor(e=!1){this.is_svg=e,this.e=this.n=null}c(e){this.h(e)}m(e,t,s=null){this.e||(this.is_svg?this.e=Ps(t.nodeName):this.e=F(t.nodeType===11?"TEMPLATE":t.nodeName),this.t=t.tagName!=="TEMPLATE"?t:t.content,this.c(e)),this.i(s)}h(e){this.e.innerHTML=e,this.n=Array.from(this.e.nodeName==="TEMPLATE"?this.e.content.childNodes:this.e.childNodes)}i(e){for(let t=0;t{e[t.slot||"default"]=!0}),e}var te;function j(l){te=l}function Ut(){if(!te)throw new Error("Function called outside component initialization");return te}function xt(l){Ut().$$.on_mount.push(l)}function yt(l){Ut().$$.on_destroy.push(l)}var se=[];var Ce=[],ue=[],Gt=[],sa=Promise.resolve(),Nt=!1;function Ml(){Nt||(Nt=!0,sa.then(dt))}function Ae(l){ue.push(l)}function Yl(l){Gt.push(l)}var Zt=new Set,ce=0;function dt(){if(ce!==0)return;let l=te;do{try{for(;cel.indexOf(s)===-1?e.push(s):t.push(s)),t.forEach(s=>s()),ue=e}var At=new Set,ae;function re(){ae={r:0,c:[],p:ae}}function ie(){ae.r||H(ae.c),ae=ae.p}function k(l,e){l&&l.i&&(At.delete(l),l.i(e))}function D(l,e,t,s){if(l&&l.o){if(At.has(l))return;At.add(l),ae.c.push(()=>{At.delete(l),s&&(t&&l.d(1),s())}),l.o(e)}else s&&s()}function V(l){return l?.length!==void 0?l:Array.from(l)}function zl(l,e){D(l,1,1,()=>{e.delete(l.key)})}function Jl(l,e,t,s,a,r,i,n,g,C,u,A){let c=l.length,d=r.length,o=c,I={};for(;o--;)I[l[o].key]=o;let m=[],f=new Map,p=new Map,U=[];for(o=d;o--;){let N=A(a,r,o),S=t(N),E=i.get(S);E?s&&U.push(()=>E.p(N,e)):(E=C(S,N),E.c()),f.set(S,m[o]=E),S in I&&p.set(S,Math.abs(o-I[S]))}let y=new Set,q=new Set;function J(N){k(N,1),N.m(n,u),i.set(N.key,N),u=N.first,d--}for(;c&&d;){let N=m[d-1],S=l[c-1],E=N.key,v=S.key;N===S?(u=N.first,c--,d--):f.has(v)?!i.has(E)||y.has(E)?J(N):q.has(v)?c--:p.get(E)>p.get(v)?(q.add(E),J(N)):(y.add(v),c--):(g(S,i),c--)}for(;c--;){let N=l[c];f.has(N.key)||g(N,i)}for(;d;)J(m[d-1]);return H(U),m}var ra=["allowfullscreen","allowpaymentrequest","async","autofocus","autoplay","checked","controls","default","defer","disabled","formnovalidate","hidden","inert","ismap","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","selected"],ia=new Set([...ra]);function Ol(l,e,t){let s=l.$$.props[e];s!==void 0&&(l.$$.bound[s]=t,t(l.$$.ctx[s]))}function _t(l){l&&l.c()}function _e(l,e,t){let{fragment:s,after_update:a}=l.$$;s&&s.m(e,t),Ae(()=>{let r=l.$$.on_mount.map(Bt).filter(ut);l.$$.on_destroy?l.$$.on_destroy.push(...r):H(r),l.$$.on_mount=[]}),a.forEach(Ae)}function Qe(l,e){let t=l.$$;t.fragment!==null&&(wl(t.after_update),H(t.on_destroy),t.fragment&&t.fragment.d(e),t.on_destroy=t.fragment=null,t.ctx=[])}function ga(l,e){l.$$.dirty[0]===-1&&(se.push(l),Ml(),l.$$.dirty.fill(0)),l.$$.dirty[e/31|0]|=1<{let o=d.length?d[0]:c;return C.ctx&&a(C.ctx[A],C.ctx[A]=o)&&(!C.skip_bound&&C.bound[A]&&C.bound[A](o),u&&ga(l,A)),c}):[],C.update(),u=!0,H(C.before_update),C.fragment=s?s(C.ctx):!1,e.target){if(e.hydrate){Vl();let A=Tl(e.target);C.fragment&&C.fragment.l(A),A.forEach(B)}else C.fragment&&C.fragment.c();e.intro&&k(l.$$.fragment),_e(l,e.target,e.anchor),Dl(),dt()}j(g)}var oa;typeof HTMLElement=="function"&&(oa=class extends HTMLElement{$$ctor;$$s;$$c;$$cn=!1;$$d={};$$r=!1;$$p_d={};$$l={};$$l_u=new Map;constructor(l,e,t){super(),this.$$ctor=l,this.$$s=e,t&&this.attachShadow({mode:"open"})}addEventListener(l,e,t){if(this.$$l[l]=this.$$l[l]||[],this.$$l[l].push(e),this.$$c){let s=this.$$c.$on(l,e);this.$$l_u.set(e,s)}super.addEventListener(l,e,t)}removeEventListener(l,e,t){if(super.removeEventListener(l,e,t),this.$$c){let s=this.$$l_u.get(e);s&&(s(),this.$$l_u.delete(e))}if(this.$$l[l]){let s=this.$$l[l].indexOf(e);s>=0&&this.$$l[l].splice(s,1)}}async connectedCallback(){if(this.$$cn=!0,!this.$$c){let l=function(a){return()=>{let r;return{c:function(){r=F("slot"),a!=="default"&&_(r,"name",a)},m:function(g,C){h(g,r,C)},d:function(g){g&&B(r)}}}};if(await Promise.resolve(),!this.$$cn||this.$$c)return;let e={},t=vl(this);for(let a of this.$$s)a in t&&(e[a]=[l(a)]);for(let a of this.attributes){let r=this.$$g_p(a.name);r in this.$$d||(this.$$d[r]=Xt(r,a.value,this.$$p_d,"toProp"))}for(let a in this.$$p_d)!(a in this.$$d)&&this[a]!==void 0&&(this.$$d[a]=this[a],delete this[a]);this.$$c=new this.$$ctor({target:this.shadowRoot||this,props:{...this.$$d,$$slots:e,$$scope:{ctx:[]}}});let s=()=>{this.$$r=!0;for(let a in this.$$p_d)if(this.$$d[a]=this.$$c.$$.ctx[this.$$c.$$.props[a]],this.$$p_d[a].reflect){let r=Xt(a,this.$$d[a],this.$$p_d,"toAttribute");r==null?this.removeAttribute(this.$$p_d[a].attribute||a):this.setAttribute(this.$$p_d[a].attribute||a,r)}this.$$r=!1};this.$$c.$$.after_update.push(s),s();for(let a in this.$$l)for(let r of this.$$l[a]){let i=this.$$c.$on(a,r);this.$$l_u.set(r,i)}this.$$l={}}}attributeChangedCallback(l,e,t){this.$$r||(l=this.$$g_p(l),this.$$d[l]=Xt(l,t,this.$$p_d,"toProp"),this.$$c?.$set({[l]:this.$$d[l]}))}disconnectedCallback(){this.$$cn=!1,Promise.resolve().then(()=>{!this.$$cn&&this.$$c&&(this.$$c.$destroy(),this.$$c=void 0)})}$$g_p(l){return Object.keys(this.$$p_d).find(e=>this.$$p_d[e].attribute===l||!this.$$p_d[e].attribute&&e.toLowerCase()===l)||l}});function Xt(l,e,t,s){let a=t[l]?.type;if(e=a==="Boolean"&&typeof e!="boolean"?e!=null:e,!s||!t[l])return e;if(s==="toAttribute")switch(a){case"Object":case"Array":return e==null?null:JSON.stringify(e);case"Boolean":return e?"":null;case"Number":return e??null;default:return e}else switch(a){case"Object":case"Array":return e&&JSON.parse(e);case"Boolean":return e;case"Number":return e!=null?+e:e;default:return e}}var M=class{$$=void 0;$$set=void 0;$destroy(){Qe(this,1),this.$destroy=R}$on(e,t){if(!ut(t))return R;let s=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return s.push(t),()=>{let a=s.indexOf(t);a!==-1&&s.splice(a,1)}}$set(e){this.$$set&&!Wl(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}};typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add("4");function T(l){let e=typeof l=="string"?l.charCodeAt(0):l;return e>=97&&e<=122||e>=65&&e<=90}function le(l){let e=typeof l=="string"?l.charCodeAt(0):l;return e>=48&&e<=57}function P(l){return T(l)||le(l)}var jl=["art-lojban","cel-gaulish","no-bok","no-nyn","zh-guoyu","zh-hakka","zh-min","zh-min-nan","zh-xiang"];var Et={"en-gb-oed":"en-GB-oxendict","i-ami":"ami","i-bnn":"bnn","i-default":null,"i-enochian":null,"i-hak":"hak","i-klingon":"tlh","i-lux":"lb","i-mingo":null,"i-navajo":"nv","i-pwn":"pwn","i-tao":"tao","i-tay":"tay","i-tsu":"tsu","sgn-be-fr":"sfb","sgn-be-nl":"vgt","sgn-ch-de":"sgg","art-lojban":"jbo","cel-gaulish":null,"no-bok":"nb","no-nyn":"nn","zh-guoyu":"cmn","zh-hakka":"hak","zh-min":null,"zh-min-nan":"nan","zh-xiang":"hsn"};var ua={}.hasOwnProperty;function Qt(l,e={}){let t=Kl(),s=String(l),a=s.toLowerCase(),r=0;if(l==null)throw new Error("Expected string, got `"+l+"`");if(ua.call(Et,a)){let n=Et[a];return(e.normalize===void 0||e.normalize===null||e.normalize)&&typeof n=="string"?Qt(n):(t[jl.includes(a)?"regular":"irregular"]=s,t)}for(;T(a.charCodeAt(r))&&r<9;)r++;if(r>1&&r<9){if(t.language=s.slice(0,r),r<4){let n=0;for(;a.charCodeAt(r)===45&&T(a.charCodeAt(r+1))&&T(a.charCodeAt(r+2))&&T(a.charCodeAt(r+3))&&!T(a.charCodeAt(r+4));){if(n>2)return i(r,3,"Too many extended language subtags, expected at most 3 subtags");t.extendedLanguageSubtags.push(s.slice(r+1,r+4)),r+=4,n++}}for(a.charCodeAt(r)===45&&T(a.charCodeAt(r+1))&&T(a.charCodeAt(r+2))&&T(a.charCodeAt(r+3))&&T(a.charCodeAt(r+4))&&!T(a.charCodeAt(r+5))&&(t.script=s.slice(r+1,r+5),r+=5),a.charCodeAt(r)===45&&(T(a.charCodeAt(r+1))&&T(a.charCodeAt(r+2))&&!T(a.charCodeAt(r+3))?(t.region=s.slice(r+1,r+3),r+=3):le(a.charCodeAt(r+1))&&le(a.charCodeAt(r+2))&&le(a.charCodeAt(r+3))&&!le(a.charCodeAt(r+4))&&(t.region=s.slice(r+1,r+4),r+=4));a.charCodeAt(r)===45;){let n=r+1,g=n;for(;P(a.charCodeAt(g));){if(g-n>7)return i(g,1,"Too long variant, expected at most 8 characters");g++}if(g-n>4||g-n>3&&le(a.charCodeAt(n)))t.variants.push(s.slice(n,g)),r=g;else break}for(;a.charCodeAt(r)===45&&!(a.charCodeAt(r+1)===120||!P(a.charCodeAt(r+1))||a.charCodeAt(r+2)!==45||!P(a.charCodeAt(r+3)));){let n=r+2,g=0;for(;a.charCodeAt(n)===45&&P(a.charCodeAt(n+1))&&P(a.charCodeAt(n+2));){let C=n+1;for(n=C+2,g++;P(a.charCodeAt(n));){if(n-C>7)return i(n,2,"Too long extension, expected at most 8 characters");n++}}if(!g)return i(n,4,"Empty extension, extensions must have at least 2 characters of content");t.extensions.push({singleton:s.charAt(r+1),extensions:s.slice(r+3,n).split("-")}),r=n}}else r=0;if(r===0&&a.charCodeAt(r)===120||a.charCodeAt(r)===45&&a.charCodeAt(r+1)===120){r=r?r+2:1;let n=r;for(;a.charCodeAt(n)===45&&P(a.charCodeAt(n+1));){let g=r+1;for(n=g;P(a.charCodeAt(n));){if(n-g>7)return i(n,5,"Too long private-use area, expected at most 8 characters");n++}t.privateuse.push(s.slice(r+1,n)),r=n}}if(r!==s.length)return i(r,6,"Found superfluous content after tag");return t;function i(n,g,C){return e.warning&&e.warning(C,g,n),e.forgiving?t:Kl()}}function Kl(){return{language:null,extendedLanguageSubtags:[],script:null,region:null,variants:[],extensions:[],privateuse:[],irregular:null,regular:null}}function Pl(l,e,t){let s=l.slice();return s[9]=e[t][0],s[10]=e[t][1],s}function Ca(l){let e,t,s,a,r,i=l[0]&&ql(l);return{c(){i&&i.c(),e=Z(),t=F("div"),s=F("p"),s.textContent=`${l[3](30)}`,a=Z(),r=F("p"),r.textContent=`${l[3](40)}`,_(s,"class","pagefind-ui__result-title pagefind-ui__loading svelte-j9e30"),_(r,"class","pagefind-ui__result-excerpt pagefind-ui__loading svelte-j9e30"),_(t,"class","pagefind-ui__result-inner svelte-j9e30")},m(n,g){i&&i.m(n,g),h(n,e,g),h(n,t,g),b(t,s),b(t,a),b(t,r)},p(n,g){n[0]?i||(i=ql(n),i.c(),i.m(e.parentNode,e)):i&&(i.d(1),i=null)},d(n){n&&(B(e),B(t)),i&&i.d(n)}}}function Ia(l){let e,t,s,a,r=l[1].meta?.title+"",i,n,g,C,u=l[1].excerpt+"",A,c=l[0]&&$l(l),d=l[2].length&&ts(l);return{c(){c&&c.c(),e=Z(),t=F("div"),s=F("p"),a=F("a"),i=G(r),g=Z(),C=F("p"),A=Z(),d&&d.c(),_(a,"class","pagefind-ui__result-link svelte-j9e30"),_(a,"href",n=l[1].meta?.url||l[1].url),_(s,"class","pagefind-ui__result-title svelte-j9e30"),_(C,"class","pagefind-ui__result-excerpt svelte-j9e30"),_(t,"class","pagefind-ui__result-inner svelte-j9e30")},m(o,I){c&&c.m(o,I),h(o,e,I),h(o,t,I),b(t,s),b(s,a),b(a,i),b(t,g),b(t,C),C.innerHTML=u,b(t,A),d&&d.m(t,null)},p(o,I){o[0]?c?c.p(o,I):(c=$l(o),c.c(),c.m(e.parentNode,e)):c&&(c.d(1),c=null),I&2&&r!==(r=o[1].meta?.title+"")&&W(i,r),I&2&&n!==(n=o[1].meta?.url||o[1].url)&&_(a,"href",n),I&2&&u!==(u=o[1].excerpt+"")&&(C.innerHTML=u),o[2].length?d?d.p(o,I):(d=ts(o),d.c(),d.m(t,null)):d&&(d.d(1),d=null)},d(o){o&&(B(e),B(t)),c&&c.d(o),d&&d.d()}}}function ql(l){let e;return{c(){e=F("div"),_(e,"class","pagefind-ui__result-thumb pagefind-ui__loading svelte-j9e30")},m(t,s){h(t,e,s)},d(t){t&&B(e)}}}function $l(l){let e,t=l[1].meta.image&&es(l);return{c(){e=F("div"),t&&t.c(),_(e,"class","pagefind-ui__result-thumb svelte-j9e30")},m(s,a){h(s,e,a),t&&t.m(e,null)},p(s,a){s[1].meta.image?t?t.p(s,a):(t=es(s),t.c(),t.m(e,null)):t&&(t.d(1),t=null)},d(s){s&&B(e),t&&t.d()}}}function es(l){let e,t,s;return{c(){e=F("img"),_(e,"class","pagefind-ui__result-image svelte-j9e30"),ge(e.src,t=l[1].meta?.image)||_(e,"src",t),_(e,"alt",s=l[1].meta?.image_alt||l[1].meta?.title)},m(a,r){h(a,e,r)},p(a,r){r&2&&!ge(e.src,t=a[1].meta?.image)&&_(e,"src",t),r&2&&s!==(s=a[1].meta?.image_alt||a[1].meta?.title)&&_(e,"alt",s)},d(a){a&&B(e)}}}function ts(l){let e,t=V(l[2]),s=[];for(let a=0;al.toLocaleUpperCase();function Aa(l,e,t){let{show_images:s=!0}=e,{process_result:a=null}=e,{result:r={data:async()=>{}}}=e,i=["title","image","image_alt","url"],n,g=[],C=(c,d)=>{if(!c||/^[a-z][a-z0-9+.-]*:/i.test(c)||/^\/\//.test(c)||c.startsWith("/"))return c;try{return new URL(c,new URL(d||"/","https://p")).pathname}catch{return c}},u=async c=>{t(1,n=await c.data()),t(1,n=a?.(n)??n),n.meta?.image&&t(1,n={...n,meta:{...n.meta,image:C(n.meta.image,n.meta.url||n.url)}}),t(2,g=Object.entries(n.meta).filter(([d])=>!i.includes(d)))},A=(c=30)=>". ".repeat(Math.floor(10+Math.random()*c));return l.$$set=c=>{"show_images"in c&&t(0,s=c.show_images),"process_result"in c&&t(4,a=c.process_result),"result"in c&&t(5,r=c.result)},l.$$.update=()=>{l.$$.dirty&32&&u(r)},[s,n,g,A,a,r]}var kt=class extends M{constructor(e){super(),K(this,e,Aa,da,O,{show_images:0,process_result:4,result:5})}},as=kt;function rs(l,e,t){let s=l.slice();return s[11]=e[t][0],s[12]=e[t][1],s}function is(l,e,t){let s=l.slice();return s[15]=e[t],s}function _a(l){let e,t,s,a,r,i=l[0]&&ns(l);return{c(){i&&i.c(),e=Z(),t=F("div"),s=F("p"),s.textContent=`${l[5](30)}`,a=Z(),r=F("p"),r.textContent=`${l[5](40)}`,_(s,"class","pagefind-ui__result-title pagefind-ui__loading svelte-4xnkmf"),_(r,"class","pagefind-ui__result-excerpt pagefind-ui__loading svelte-4xnkmf"),_(t,"class","pagefind-ui__result-inner svelte-4xnkmf")},m(n,g){i&&i.m(n,g),h(n,e,g),h(n,t,g),b(t,s),b(t,a),b(t,r)},p(n,g){n[0]?i||(i=ns(n),i.c(),i.m(e.parentNode,e)):i&&(i.d(1),i=null)},d(n){n&&(B(e),B(t)),i&&i.d(n)}}}function Qa(l){let e,t,s,a,r=l[1].meta?.title+"",i,n,g,C,u,A=l[0]&&gs(l),c=l[4]&&cs(l),d=V(l[3]),o=[];for(let m=0;ml.toLocaleUpperCase();function ba(l,e,t){let{show_images:s=!0}=e,{process_result:a=null}=e,{result:r={data:async()=>{}}}=e,i=["title","image","image_alt","url"],n,g=[],C=[],u=!1,A=(o,I)=>{if(o.length<=I)return o;let m=[...o].sort((f,p)=>p.locations.length-f.locations.length).slice(0,3).map(f=>f.url);return o.filter(f=>m.includes(f.url))},c=async o=>{t(1,n=await o.data()),t(1,n=a?.(n)??n),t(2,g=Object.entries(n.meta).filter(([I])=>!i.includes(I))),Array.isArray(n.sub_results)&&(t(4,u=n.sub_results?.[0]?.url===(n.meta?.url||n.url)),u?t(3,C=A(n.sub_results.slice(1),3)):t(3,C=A([...n.sub_results],3)))},d=(o=30)=>". ".repeat(Math.floor(10+Math.random()*o));return l.$$set=o=>{"show_images"in o&&t(0,s=o.show_images),"process_result"in o&&t(6,a=o.process_result),"result"in o&&t(7,r=o.result)},l.$$.update=()=>{l.$$.dirty&128&&c(r)},[s,n,g,C,u,d,a,r]}var Lt=class extends M{constructor(e){super(),K(this,e,ba,ma,O,{show_images:0,process_result:6,result:7})}},As=Lt;function _s(l,e,t){let s=l.slice();return s[10]=e[t][0],s[11]=e[t][1],s[12]=e,s[13]=t,s}function Qs(l,e,t){let s=l.slice();return s[14]=e[t][0],s[15]=e[t][1],s[16]=e,s[17]=t,s}function ms(l){let e,t,s=l[4]("filters_label",l[5],l[6])+"",a,r,i=V(Object.entries(l[1])),n=[];for(let g=0;gl.toLocaleUpperCase(),Bs=l=>l.toLowerCase();function Fa(l,e,t){let{available_filters:s=null}=e,{show_empty_filters:a=!0}=e,{open_filters:r=[]}=e,{translate:i=()=>""}=e,{automatic_translations:n={}}=e,{translations:g={}}=e,{selected_filters:C={}}=e,u=!1,A=!1;function c(d,o){C[`${d}:${o}`]=this.checked,t(0,C)}return l.$$set=d=>{"available_filters"in d&&t(1,s=d.available_filters),"show_empty_filters"in d&&t(2,a=d.show_empty_filters),"open_filters"in d&&t(3,r=d.open_filters),"translate"in d&&t(4,i=d.translate),"automatic_translations"in d&&t(5,n=d.automatic_translations),"translations"in d&&t(6,g=d.translations),"selected_filters"in d&&t(0,C=d.selected_filters)},l.$$.update=()=>{if(l.$$.dirty&258&&s&&!u){t(8,u=!0);let d=Object.entries(s||{});d.length===1&&Object.entries(d[0][1])?.length<=6&&t(7,A=!0)}},[C,s,a,r,i,n,g,A,u,c]}var Rt=class extends M{constructor(e){super(),K(this,e,Fa,fa,O,{available_filters:1,show_empty_filters:2,open_filters:3,translate:4,automatic_translations:5,translations:6,selected_filters:0})}},hs=Rt;var Wt={};x(Wt,{comments:()=>Ba,default:()=>xa,direction:()=>ha,strings:()=>Ua,thanks_to:()=>pa});var pa="Jan Claasen ",Ba="",ha="ltr",Ua={placeholder:"Soek",clear_search:"Opruim",load_more:"Laai nog resultate",search_label:"Soek hierdie webwerf",filters_label:"Filters",zero_results:"Geen resultate vir [SEARCH_TERM]",many_results:"[COUNT] resultate vir [SEARCH_TERM]",one_result:"[COUNT] resultate vir [SEARCH_TERM]",total_zero_results:"Geen resultate",total_one_result:"[COUNT] resultaat",total_many_results:"[COUNT] resultate",alt_search:"Geen resultate vir [SEARCH_TERM]. Toon resultate vir [DIFFERENT_TERM] in plaas daarvan",search_suggestion:"Geen resultate vir [SEARCH_TERM]. Probeer eerder een van die volgende terme:",searching:"Soek vir [SEARCH_TERM]",results_label:"Soekresultate",keyboard_navigate:"navigeer",keyboard_select:"kies",keyboard_clear:"wis",keyboard_close:"sluit",keyboard_search:"soek",error_search:"Soek het misluk",filter_selected_one:"[COUNT] gekies",filter_selected_many:"[COUNT] gekies",input_hint:"Resultate sal verskyn terwyl jy tik",loading:"Laai"},xa={thanks_to:pa,comments:Ba,direction:ha,strings:Ua};var St={};x(St,{comments:()=>Za,default:()=>Xa,direction:()=>Ga,strings:()=>Na,thanks_to:()=>ya});var ya="Jermanuts",Za="",Ga="rtl",Na={placeholder:"\u0628\u062D\u062B",clear_search:"\u0627\u0645\u0633\u062D",load_more:"\u062D\u0645\u0651\u0650\u0644 \u0627\u0644\u0645\u0632\u064A\u062F \u0645\u0646 \u0627\u0644\u0646\u062A\u0627\u0626\u062C",search_label:"\u0627\u0628\u062D\u062B \u0641\u064A \u0647\u0630\u0627 \u0627\u0644\u0645\u0648\u0642\u0639",filters_label:"\u062A\u0635\u0641\u064A\u0627\u062A",zero_results:"\u0644\u0627 \u062A\u0648\u062C\u062F \u0646\u062A\u0627\u0626\u062C \u0644 [SEARCH_TERM]",many_results:"[COUNT] \u0646\u062A\u0627\u0626\u062C \u0644 [SEARCH_TERM]",one_result:"[COUNT] \u0646\u062A\u064A\u062C\u0629 \u0644 [SEARCH_TERM]",total_zero_results:"\u0644\u0627 \u062A\u0648\u062C\u062F \u0646\u062A\u0627\u0626\u062C",total_one_result:"[COUNT] \u0646\u062A\u064A\u062C\u0629",total_many_results:"[COUNT] \u0646\u062A\u0627\u0626\u062C",alt_search:"\u0644\u0627 \u062A\u0648\u062C\u062F \u0646\u062A\u0627\u0626\u062C \u0644 [SEARCH_TERM]. \u064A\u0639\u0631\u0636 \u0627\u0644\u0646\u062A\u0627\u0626\u062C \u0644 [DIFFERENT_TERM] \u0628\u062F\u0644\u0627\u064B \u0645\u0646 \u0630\u0644\u0643",search_suggestion:"\u0644\u0627 \u062A\u0648\u062C\u062F \u0646\u062A\u0627\u0626\u062C \u0644 [SEARCH_TERM]. \u062C\u0631\u0628 \u0623\u062D\u062F \u0639\u0645\u0644\u064A\u0627\u062A \u0627\u0644\u0628\u062D\u062B \u0627\u0644\u062A\u0627\u0644\u064A\u0629:",searching:"\u064A\u0628\u062D\u062B \u0639\u0646 [SEARCH_TERM]...",results_label:"\u0646\u062A\u0627\u0626\u062C \u0627\u0644\u0628\u062D\u062B",keyboard_navigate:"\u062A\u0646\u0642\u0644",keyboard_select:"\u0627\u062E\u062A\u064A\u0627\u0631",keyboard_clear:"\u0627\u0645\u0633\u062D",keyboard_close:"\u0625\u063A\u0644\u0627\u0642",keyboard_search:"\u0628\u062D\u062B",error_search:"\u0641\u0634\u0644 \u0627\u0644\u0628\u062D\u062B",filter_selected_one:"[COUNT] \u0645\u062D\u062F\u062F",filter_selected_many:"[COUNT] \u0645\u062D\u062F\u062F",input_hint:"\u0633\u062A\u0638\u0647\u0631 \u0627\u0644\u0646\u062A\u0627\u0626\u062C \u0623\u062B\u0646\u0627\u0621 \u0627\u0644\u0643\u062A\u0627\u0628\u0629",loading:"\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u062D\u0645\u064A\u0644"},Xa={thanks_to:ya,comments:Za,direction:Ga,strings:Na};var Vt={};x(Vt,{comments:()=>ka,default:()=>Wa,direction:()=>La,strings:()=>Ra,thanks_to:()=>Ea});var Ea="Maruf Alom ",ka="",La="ltr",Ra={placeholder:"\u0985\u09A8\u09C1\u09B8\u09A8\u09CD\u09A7\u09BE\u09A8 \u0995\u09B0\u09C1\u09A8",clear_search:"\u09AE\u09C1\u099B\u09C7 \u09AB\u09C7\u09B2\u09C1\u09A8",load_more:"\u0986\u09B0\u09CB \u09AB\u09B2\u09BE\u09AB\u09B2 \u09A6\u09C7\u0996\u09C1\u09A8",search_label:"\u098F\u0987 \u0993\u09AF\u09BC\u09C7\u09AC\u09B8\u09BE\u0987\u099F\u09C7 \u0985\u09A8\u09C1\u09B8\u09A8\u09CD\u09A7\u09BE\u09A8 \u0995\u09B0\u09C1\u09A8",filters_label:"\u09AB\u09BF\u09B2\u09CD\u099F\u09BE\u09B0",zero_results:"[SEARCH_TERM] \u098F\u09B0 \u099C\u09A8\u09CD\u09AF \u0995\u09BF\u099B\u09C1 \u0996\u09C1\u0981\u099C\u09C7 \u09AA\u09BE\u0993\u09AF\u09BC\u09BE \u09AF\u09BE\u09AF\u09BC\u09A8\u09BF",many_results:"[COUNT]-\u099F\u09BF \u09AB\u09B2\u09BE\u09AB\u09B2 \u09AA\u09BE\u0993\u09AF\u09BC\u09BE \u0997\u09BF\u09AF\u09BC\u09C7\u099B\u09C7 [SEARCH_TERM] \u098F\u09B0 \u099C\u09A8\u09CD\u09AF",one_result:"[COUNT]-\u099F\u09BF \u09AB\u09B2\u09BE\u09AB\u09B2 \u09AA\u09BE\u0993\u09AF\u09BC\u09BE \u0997\u09BF\u09AF\u09BC\u09C7\u099B\u09C7 [SEARCH_TERM] \u098F\u09B0 \u099C\u09A8\u09CD\u09AF",total_zero_results:"\u0995\u09CB\u09A8 \u09AB\u09B2\u09BE\u09AB\u09B2 \u09A8\u09C7\u0987",total_one_result:"[COUNT]-\u099F\u09BF \u09AB\u09B2\u09BE\u09AB\u09B2",total_many_results:"[COUNT]-\u099F\u09BF \u09AB\u09B2\u09BE\u09AB\u09B2",alt_search:"\u0995\u09CB\u09A8 \u0995\u09BF\u099B\u09C1 \u0996\u09C1\u0981\u099C\u09C7 \u09AA\u09BE\u0993\u09AF\u09BC\u09BE \u09AF\u09BE\u09AF\u09BC\u09A8\u09BF [SEARCH_TERM] \u098F\u09B0 \u099C\u09A8\u09CD\u09AF. \u09AA\u09B0\u09BF\u09AC\u09B0\u09CD\u09A4\u09C7 [DIFFERENT_TERM] \u098F\u09B0 \u099C\u09A8\u09CD\u09AF \u09A6\u09C7\u0996\u09BE\u09A8\u09CB \u09B9\u099A\u09CD\u099B\u09C7",search_suggestion:"\u0995\u09CB\u09A8 \u0995\u09BF\u099B\u09C1 \u0996\u09C1\u0981\u099C\u09C7 \u09AA\u09BE\u0993\u09AF\u09BC\u09BE \u09AF\u09BE\u09AF\u09BC\u09A8\u09BF [SEARCH_TERM] \u098F\u09B0 \u09AC\u09BF\u09B7\u09AF\u09BC\u09C7. \u09A8\u09BF\u09A8\u09CD\u09AE\u09C7\u09B0 \u09AC\u09BF\u09B7\u09AF\u09BC\u09AC\u09B8\u09CD\u09A4\u09C1 \u0996\u09C1\u0981\u099C\u09C7 \u09A6\u09C7\u0996\u09C1\u09A8:",searching:"\u0985\u09A8\u09C1\u09B8\u09A8\u09CD\u09A7\u09BE\u09A8 \u099A\u09B2\u099B\u09C7 [SEARCH_TERM]...",results_label:"\u0985\u09A8\u09C1\u09B8\u09A8\u09CD\u09A7\u09BE\u09A8\u09C7\u09B0 \u09AB\u09B2\u09BE\u09AB\u09B2",keyboard_navigate:"\u09A8\u09C7\u09AD\u09BF\u0997\u09C7\u099F",keyboard_select:"\u09A8\u09BF\u09B0\u09CD\u09AC\u09BE\u099A\u09A8",keyboard_clear:"\u09AE\u09C1\u099B\u09C1\u09A8",keyboard_close:"\u09AC\u09A8\u09CD\u09A7",keyboard_search:"\u0985\u09A8\u09C1\u09B8\u09A8\u09CD\u09A7\u09BE\u09A8",error_search:"\u0985\u09A8\u09C1\u09B8\u09A8\u09CD\u09A7\u09BE\u09A8 \u09AC\u09CD\u09AF\u09B0\u09CD\u09A5",filter_selected_one:"[COUNT]-\u099F\u09BF \u09A8\u09BF\u09B0\u09CD\u09AC\u09BE\u099A\u09BF\u09A4",filter_selected_many:"[COUNT]-\u099F\u09BF \u09A8\u09BF\u09B0\u09CD\u09AC\u09BE\u099A\u09BF\u09A4",input_hint:"\u099F\u09BE\u0987\u09AA \u0995\u09B0\u09BE\u09B0 \u09B8\u09BE\u09A5\u09C7 \u09B8\u09BE\u09A5\u09C7 \u09AB\u09B2\u09BE\u09AB\u09B2 \u09A6\u09C7\u0996\u09BE \u09AF\u09BE\u09AC\u09C7",loading:"\u09B2\u09CB\u09A1 \u09B9\u099A\u09CD\u099B\u09C7"},Wa={thanks_to:Ea,comments:ka,direction:La,strings:Ra};var Dt={};x(Dt,{comments:()=>Va,default:()=>va,direction:()=>Da,strings:()=>Ta,thanks_to:()=>Sa});var Sa="Pablo Villaverde ",Va="",Da="ltr",Ta={placeholder:"Cerca",clear_search:"Netejar",load_more:"Veure m\xE9s resultats",search_label:"Cerca en aquest lloc",filters_label:"Filtres",zero_results:"No es van trobar resultats per [SEARCH_TERM]",many_results:"[COUNT] resultats trobats per [SEARCH_TERM]",one_result:"[COUNT] resultat trobat per [SEARCH_TERM]",total_zero_results:"Sense resultats",total_one_result:"[COUNT] resultat",total_many_results:"[COUNT] resultats",alt_search:"No es van trobar resultats per [SEARCH_TERM]. Mostrant al seu lloc resultats per [DIFFERENT_TERM]",search_suggestion:"No es van trobar resultats per [SEARCH_TERM]. Proveu una de les cerques seg\xFCents:",searching:"Cercant [SEARCH_TERM]...",results_label:"Resultats de la cerca",keyboard_navigate:"navegar",keyboard_select:"triar",keyboard_clear:"netejar",keyboard_close:"tancar",keyboard_search:"cercar",error_search:"Error en la cerca",filter_selected_one:"[COUNT] seleccionat",filter_selected_many:"[COUNT] seleccionats",input_hint:"Els resultats apareixeran mentre escriviu",loading:"Carregant"},va={thanks_to:Sa,comments:Va,direction:Da,strings:Ta};var Tt={};x(Tt,{comments:()=>Ma,default:()=>za,direction:()=>Ya,strings:()=>wa,thanks_to:()=>Ha});var Ha="Dalibor Hon ",Ma="",Ya="ltr",wa={placeholder:"Hledat",clear_search:"Smazat",load_more:"Na\u010D\xEDst dal\u0161\xED v\xFDsledky",search_label:"Prohledat tuto str\xE1nku",filters_label:"Filtry",zero_results:"\u017D\xE1dn\xE9 v\xFDsledky pro [SEARCH_TERM]",many_results:"[COUNT] v\xFDsledk\u016F pro [SEARCH_TERM]",one_result:"[COUNT] v\xFDsledek pro [SEARCH_TERM]",total_zero_results:"\u017D\xE1dn\xE9 v\xFDsledky",total_one_result:"[COUNT] v\xFDsledek",total_many_results:"[COUNT] v\xFDsledk\u016F",alt_search:"\u017D\xE1dn\xE9 v\xFDsledky pro [SEARCH_TERM]. Zobrazuj\xED se v\xFDsledky pro [DIFFERENT_TERM]",search_suggestion:"\u017D\xE1dn\xE9 v\xFDsledky pro [SEARCH_TERM]. Souvisej\xEDc\xED v\xFDsledky hled\xE1n\xED:",searching:"Hled\xE1m [SEARCH_TERM]...",results_label:"V\xFDsledky hled\xE1n\xED",keyboard_navigate:"navigovat",keyboard_select:"vybrat",keyboard_clear:"smazat",keyboard_close:"zav\u0159\xEDt",keyboard_search:"hledat",error_search:"Hled\xE1n\xED selhalo",filter_selected_one:"[COUNT] vybran\xFD",filter_selected_many:"[COUNT] vybran\xFDch",input_hint:"V\xFDsledky se zobraz\xED b\u011Bhem psan\xED",loading:"Na\u010D\xEDt\xE1n\xED"},za={thanks_to:Ha,comments:Ma,direction:Ya,strings:wa};var vt={};x(vt,{comments:()=>Oa,default:()=>Pa,direction:()=>ja,strings:()=>Ka,thanks_to:()=>Ja});var Ja="Jonas Smedegaard ",Oa="",ja="ltr",Ka={placeholder:"S\xF8g",clear_search:"Nulstil",load_more:"Indl\xE6s flere resultater",search_label:"S\xF8g p\xE5 dette website",filters_label:"Filtre",zero_results:"Ingen resultater for [SEARCH_TERM]",many_results:"[COUNT] resultater for [SEARCH_TERM]",one_result:"[COUNT] resultat for [SEARCH_TERM]",total_zero_results:"Ingen resultater",total_one_result:"[COUNT] resultat",total_many_results:"[COUNT] resultater",alt_search:"Ingen resultater for [SEARCH_TERM]. Viser resultater for [DIFFERENT_TERM] i stedet",search_suggestion:"Ingen resultater for [SEARCH_TERM]. Pr\xF8v et af disse s\xF8geord i stedet:",searching:"S\xF8ger efter [SEARCH_TERM]...",results_label:"S\xF8geresultater",keyboard_navigate:"naviger",keyboard_select:"v\xE6lg",keyboard_clear:"ryd",keyboard_close:"luk",keyboard_search:"s\xF8g",error_search:"S\xF8gning mislykkedes",filter_selected_one:"[COUNT] valgt",filter_selected_many:"[COUNT] valgte",input_hint:"Resultater vises mens du skriver",loading:"Indl\xE6ser"},Pa={thanks_to:Ja,comments:Oa,direction:ja,strings:Ka};var Ht={};x(Ht,{comments:()=>$a,default:()=>lr,direction:()=>er,strings:()=>tr,thanks_to:()=>qa});var qa="Jan Claasen ",$a="",er="ltr",tr={placeholder:"Suche",clear_search:"L\xF6schen",load_more:"Mehr Ergebnisse laden",search_label:"Suche diese Seite",filters_label:"Filter",zero_results:"Keine Ergebnisse f\xFCr [SEARCH_TERM]",many_results:"[COUNT] Ergebnisse f\xFCr [SEARCH_TERM]",one_result:"[COUNT] Ergebnis f\xFCr [SEARCH_TERM]",total_zero_results:"Keine Ergebnisse",total_one_result:"[COUNT] Ergebnis",total_many_results:"[COUNT] Ergebnisse",alt_search:"Keine Ergebnisse f\xFCr [SEARCH_TERM]. Stattdessen werden Ergebnisse f\xFCr [DIFFERENT_TERM] angezeigt",search_suggestion:"Keine Ergebnisse f\xFCr [SEARCH_TERM]. Versuchen Sie eine der folgenden Suchen:",searching:"Suche nach [SEARCH_TERM]\u202F\u2026",results_label:"Suchergebnisse",keyboard_navigate:"navigieren",keyboard_select:"ausw\xE4hlen",keyboard_clear:"l\xF6schen",keyboard_close:"schlie\xDFen",keyboard_search:"suchen",error_search:"Suche fehlgeschlagen",filter_selected_one:"[COUNT] ausgew\xE4hlt",filter_selected_many:"[COUNT] ausgew\xE4hlt",input_hint:"Ergebnisse werden w\xE4hrend der Eingabe angezeigt",loading:"Wird geladen"},lr={thanks_to:qa,comments:$a,direction:er,strings:tr};var Mt={};x(Mt,{comments:()=>ar,default:()=>nr,direction:()=>rr,strings:()=>ir,thanks_to:()=>sr});var sr="George Papadopoulos",ar="",rr="ltr",ir={placeholder:"\u0391\u03BD\u03B1\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7",clear_search:"\u039A\u03B1\u03B8\u03B1\u03C1\u03B9\u03C3\u03BC\u03CC\u03C2",load_more:"\u03A6\u03CC\u03C1\u03C4\u03C9\u03C3\u03B7 \u03C0\u03B5\u03C1\u03B9\u03C3\u03C3\u03CC\u03C4\u03B5\u03C1\u03C9\u03BD \u03B1\u03C0\u03BF\u03C4\u03B5\u03BB\u03B5\u03C3\u03BC\u03AC\u03C4\u03C9\u03BD",search_label:"\u0391\u03BD\u03B1\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7 \u03C3\u03B5 \u03B1\u03C5\u03C4\u03CC\u03BD \u03C4\u03BF\u03BD \u03B9\u03C3\u03C4\u03CC\u03C4\u03BF\u03C0\u03BF",filters_label:"\u03A6\u03AF\u03BB\u03C4\u03C1\u03B1",zero_results:"\u0394\u03B5\u03BD \u03B2\u03C1\u03AD\u03B8\u03B7\u03BA\u03B1\u03BD \u03B1\u03C0\u03BF\u03C4\u03B5\u03BB\u03AD\u03C3\u03BC\u03B1\u03C4\u03B1 \u03B3\u03B9\u03B1 [SEARCH_TERM]",many_results:"[COUNT] \u03B1\u03C0\u03BF\u03C4\u03B5\u03BB\u03AD\u03C3\u03BC\u03B1\u03C4\u03B1 \u03B3\u03B9\u03B1 [SEARCH_TERM]",one_result:"[COUNT] \u03B1\u03C0\u03BF\u03C4\u03AD\u03BB\u03B5\u03C3\u03BC\u03B1 \u03B3\u03B9\u03B1 [SEARCH_TERM]",total_zero_results:"\u0394\u03B5\u03BD \u03B2\u03C1\u03AD\u03B8\u03B7\u03BA\u03B1\u03BD \u03B1\u03C0\u03BF\u03C4\u03B5\u03BB\u03AD\u03C3\u03BC\u03B1\u03C4\u03B1",total_one_result:"[COUNT] \u03B1\u03C0\u03BF\u03C4\u03AD\u03BB\u03B5\u03C3\u03BC\u03B1",total_many_results:"[COUNT] \u03B1\u03C0\u03BF\u03C4\u03B5\u03BB\u03AD\u03C3\u03BC\u03B1\u03C4\u03B1",alt_search:"\u0394\u03B5\u03BD \u03B2\u03C1\u03AD\u03B8\u03B7\u03BA\u03B1\u03BD \u03B1\u03C0\u03BF\u03C4\u03B5\u03BB\u03AD\u03C3\u03BC\u03B1\u03C4\u03B1 \u03B3\u03B9\u03B1 [SEARCH_TERM]. \u0395\u03BC\u03C6\u03B1\u03BD\u03AF\u03B6\u03BF\u03BD\u03C4\u03B1\u03B9 \u03B1\u03C0\u03BF\u03C4\u03B5\u03BB\u03AD\u03C3\u03BC\u03B1\u03C4\u03B1 \u03B3\u03B9\u03B1 [DIFFERENT_TERM]",search_suggestion:"\u0394\u03B5\u03BD \u03B2\u03C1\u03AD\u03B8\u03B7\u03BA\u03B1\u03BD \u03B1\u03C0\u03BF\u03C4\u03B5\u03BB\u03AD\u03C3\u03BC\u03B1\u03C4\u03B1 \u03B3\u03B9\u03B1 [SEARCH_TERM]. \u0394\u03BF\u03BA\u03B9\u03BC\u03AC\u03C3\u03C4\u03B5 \u03BC\u03AF\u03B1 \u03B1\u03C0\u03CC \u03C4\u03B9\u03C2 \u03C0\u03B1\u03C1\u03B1\u03BA\u03AC\u03C4\u03C9 \u03B1\u03BD\u03B1\u03B6\u03B7\u03C4\u03AE\u03C3\u03B5\u03B9\u03C2:",searching:"\u0391\u03BD\u03B1\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7 \u03B3\u03B9\u03B1 [SEARCH_TERM]...",results_label:"\u0391\u03C0\u03BF\u03C4\u03B5\u03BB\u03AD\u03C3\u03BC\u03B1\u03C4\u03B1 \u03B1\u03BD\u03B1\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7\u03C2",keyboard_navigate:"\u03C0\u03BB\u03BF\u03AE\u03B3\u03B7\u03C3\u03B7",keyboard_select:"\u03B5\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE",keyboard_clear:"\u03BA\u03B1\u03B8\u03B1\u03C1\u03B9\u03C3\u03BC\u03CC\u03C2",keyboard_close:"\u03BA\u03BB\u03B5\u03AF\u03C3\u03B9\u03BC\u03BF",keyboard_search:"\u03B1\u03BD\u03B1\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7",error_search:"\u0397 \u03B1\u03BD\u03B1\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7 \u03B1\u03C0\u03AD\u03C4\u03C5\u03C7\u03B5",filter_selected_one:"[COUNT] \u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03BF",filter_selected_many:"[COUNT] \u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03B1",input_hint:"\u03A4\u03B1 \u03B1\u03C0\u03BF\u03C4\u03B5\u03BB\u03AD\u03C3\u03BC\u03B1\u03C4\u03B1 \u03B8\u03B1 \u03B5\u03BC\u03C6\u03B1\u03BD\u03AF\u03B6\u03BF\u03BD\u03C4\u03B1\u03B9 \u03BA\u03B1\u03B8\u03CE\u03C2 \u03C0\u03BB\u03B7\u03BA\u03C4\u03C1\u03BF\u03BB\u03BF\u03B3\u03B5\u03AF\u03C4\u03B5",loading:"\u03A6\u03CC\u03C1\u03C4\u03C9\u03C3\u03B7"},nr={thanks_to:sr,comments:ar,direction:rr,strings:ir};var Yt={};x(Yt,{comments:()=>or,default:()=>Cr,direction:()=>cr,strings:()=>ur,thanks_to:()=>gr});var gr="Liam Bigelow ",or="",cr="ltr",ur={placeholder:"Search",clear_search:"Clear",load_more:"Load more results",search_label:"Search this site",filters_label:"Filters",zero_results:"No results for [SEARCH_TERM]",many_results:"[COUNT] results for [SEARCH_TERM]",one_result:"[COUNT] result for [SEARCH_TERM]",total_zero_results:"No results",total_one_result:"[COUNT] result",total_many_results:"[COUNT] results",alt_search:"No results for [SEARCH_TERM]. Showing results for [DIFFERENT_TERM] instead",search_suggestion:"No results for [SEARCH_TERM]. Try one of the following searches:",searching:"Searching for [SEARCH_TERM]...",results_label:"Search results",keyboard_navigate:"navigate",keyboard_select:"select",keyboard_clear:"clear",keyboard_close:"close",keyboard_search:"search",error_search:"Search failed",filter_selected_one:"[COUNT] selected",filter_selected_many:"[COUNT] selected",input_hint:"Results will appear as you type",loading:"Loading"},Cr={thanks_to:gr,comments:or,direction:cr,strings:ur};var wt={};x(wt,{comments:()=>dr,default:()=>Qr,direction:()=>Ar,strings:()=>_r,thanks_to:()=>Ir});var Ir="Pablo Villaverde ",dr="",Ar="ltr",_r={placeholder:"Buscar",clear_search:"Limpiar",load_more:"Ver m\xE1s resultados",search_label:"Buscar en este sitio",filters_label:"Filtros",zero_results:"No se encontraron resultados para [SEARCH_TERM]",many_results:"[COUNT] resultados encontrados para [SEARCH_TERM]",one_result:"[COUNT] resultado encontrado para [SEARCH_TERM]",total_zero_results:"Sin resultados",total_one_result:"[COUNT] resultado",total_many_results:"[COUNT] resultados",alt_search:"No se encontraron resultados para [SEARCH_TERM]. Mostrando en su lugar resultados para [DIFFERENT_TERM]",search_suggestion:"No se encontraron resultados para [SEARCH_TERM]. Prueba una de las siguientes b\xFAsquedas:",searching:"Buscando [SEARCH_TERM]...",results_label:"Resultados de b\xFAsqueda",keyboard_navigate:"navegar",keyboard_select:"elegir",keyboard_clear:"limpiar",keyboard_close:"cerrar",keyboard_search:"buscar",error_search:"Error en la b\xFAsqueda",filter_selected_one:"[COUNT] seleccionado",filter_selected_many:"[COUNT] seleccionados",input_hint:"Los resultados aparecer\xE1n mientras escribe",loading:"Cargando"},Qr={thanks_to:Ir,comments:dr,direction:Ar,strings:_r};var zt={};x(zt,{comments:()=>br,default:()=>pr,direction:()=>fr,strings:()=>Fr,thanks_to:()=>mr});var mr="Mikel Larreategi ",br="",fr="ltr",Fr={placeholder:"Bilatu",clear_search:"Garbitu",load_more:"Kargatu emaitza gehiagi",search_label:"Bilatu",filters_label:"Iragazkiak",zero_results:"Ez dago emaitzarik [SEARCH_TERM] bilaketarentzat",many_results:"[COUNT] emaitza [SEARCH_TERM] bilaketarentzat",one_result:"Emaitza bat [COUNT] [SEARCH_TERM] bilaketarentzat",total_zero_results:"Emaitzarik ez",total_one_result:"[COUNT] emaitza",total_many_results:"[COUNT] emaitza",alt_search:"Ez dago emaitzarik [SEARCH_TERM] bilaketarentzat. [DIFFERENT_TERM] bilaketaren emaitzak erakusten",search_suggestion:"Ez dago emaitzarik [SEARCH_TERM] bilaketarentzat. Saiatu hauetako beste bateikin:",searching:"[SEARCH_TERM] bilatzen...",results_label:"Bilaketaren emaitzak",keyboard_navigate:"nabigatu",keyboard_select:"hautatu",keyboard_clear:"garbitu",keyboard_close:"itxi",keyboard_search:"bilatu",error_search:"Bilaketak huts egin du",filter_selected_one:"[COUNT] hautatuta",filter_selected_many:"[COUNT] hautatuta",input_hint:"Emaitzak idatzi ahala agertuko dira",loading:"Kargatzen"},pr={thanks_to:mr,comments:br,direction:fr,strings:Fr};var Jt={};x(Jt,{comments:()=>hr,default:()=>yr,direction:()=>Ur,strings:()=>xr,thanks_to:()=>Br});var Br="Ali Khaleqi Yekta ",hr="",Ur="rtl",xr={placeholder:"\u062C\u0633\u062A\u062C\u0648",clear_search:"\u067E\u0627\u06A9\u0633\u0627\u0632\u06CC",load_more:"\u0628\u0627\u0631\u06AF\u0630\u0627\u0631\u06CC \u0646\u062A\u0627\u06CC\u062C \u0628\u06CC\u0634\u062A\u0631",search_label:"\u062C\u0633\u062A\u062C\u0648 \u062F\u0631 \u0633\u0627\u06CC\u062A",filters_label:"\u0641\u06CC\u0644\u062A\u0631\u0647\u0627",zero_results:"\u0646\u062A\u06CC\u062C\u0647\u200C\u0627\u06CC \u0628\u0631\u0627\u06CC [SEARCH_TERM] \u06CC\u0627\u0641\u062A \u0646\u0634\u062F",many_results:"[COUNT] \u0646\u062A\u06CC\u062C\u0647 \u0628\u0631\u0627\u06CC [SEARCH_TERM] \u06CC\u0627\u0641\u062A \u0634\u062F",one_result:"[COUNT] \u0646\u062A\u06CC\u062C\u0647 \u0628\u0631\u0627\u06CC [SEARCH_TERM] \u06CC\u0627\u0641\u062A \u0634\u062F",total_zero_results:"\u0646\u062A\u06CC\u062C\u0647\u200C\u0627\u06CC \u06CC\u0627\u0641\u062A \u0646\u0634\u062F",total_one_result:"[COUNT] \u0646\u062A\u06CC\u062C\u0647",total_many_results:"[COUNT] \u0646\u062A\u06CC\u062C\u0647",alt_search:"\u0646\u062A\u06CC\u062C\u0647\u200C\u0627\u06CC \u0628\u0631\u0627\u06CC [SEARCH_TERM] \u06CC\u0627\u0641\u062A \u0646\u0634\u062F. \u062F\u0631 \u0639\u0648\u0636 \u0646\u062A\u0627\u06CC\u062C \u0628\u0631\u0627\u06CC [DIFFERENT_TERM] \u0646\u0645\u0627\u06CC\u0634 \u062F\u0627\u062F\u0647 \u0645\u06CC\u200C\u0634\u0648\u062F",search_suggestion:"\u0646\u062A\u06CC\u062C\u0647\u200C\u0627\u06CC \u0628\u0631\u0627\u06CC [SEARCH_TERM] \u06CC\u0627\u0641\u062A \u0646\u0634\u062F. \u06CC\u06A9\u06CC \u0627\u0632 \u062C\u0633\u062A\u062C\u0648\u0647\u0627\u06CC \u0632\u06CC\u0631 \u0631\u0627 \u0627\u0645\u062A\u062D\u0627\u0646 \u06A9\u0646\u06CC\u062F:",searching:"\u062F\u0631 \u062D\u0627\u0644 \u062C\u0633\u062A\u062C\u0648\u06CC [SEARCH_TERM]...",results_label:"\u0646\u062A\u0627\u06CC\u062C \u062C\u0633\u062A\u062C\u0648",keyboard_navigate:"\u067E\u06CC\u0645\u0627\u06CC\u0634",keyboard_select:"\u0627\u0646\u062A\u062E\u0627\u0628",keyboard_clear:"\u067E\u0627\u06A9\u0633\u0627\u0632\u06CC",keyboard_close:"\u0628\u0633\u062A\u0646",keyboard_search:"\u062C\u0633\u062A\u062C\u0648",error_search:"\u062C\u0633\u062A\u062C\u0648 \u0646\u0627\u0645\u0648\u0641\u0642 \u0628\u0648\u062F",filter_selected_one:"[COUNT] \u0627\u0646\u062A\u062E\u0627\u0628 \u0634\u062F\u0647",filter_selected_many:"[COUNT] \u0627\u0646\u062A\u062E\u0627\u0628 \u0634\u062F\u0647",input_hint:"\u0646\u062A\u0627\u06CC\u062C \u0647\u0646\u06AF\u0627\u0645 \u062A\u0627\u06CC\u067E \u0646\u0645\u0627\u06CC\u0634 \u062F\u0627\u062F\u0647 \u0645\u06CC\u200C\u0634\u0648\u0646\u062F",loading:"\u062F\u0631 \u062D\u0627\u0644 \u0628\u0627\u0631\u06AF\u0630\u0627\u0631\u06CC"},yr={thanks_to:Br,comments:hr,direction:Ur,strings:xr};var Ot={};x(Ot,{comments:()=>Gr,default:()=>Er,direction:()=>Nr,strings:()=>Xr,thanks_to:()=>Zr});var Zr="Valtteri Laitinen ",Gr="",Nr="ltr",Xr={placeholder:"Haku",clear_search:"Tyhjenn\xE4",load_more:"Lataa lis\xE4\xE4 tuloksia",search_label:"Hae t\xE4lt\xE4 sivustolta",filters_label:"Suodattimet",zero_results:"Ei tuloksia haulle [SEARCH_TERM]",many_results:"[COUNT] tulosta haulle [SEARCH_TERM]",one_result:"[COUNT] tulos haulle [SEARCH_TERM]",total_zero_results:"Ei tuloksia",total_one_result:"[COUNT] tulos",total_many_results:"[COUNT] tulosta",alt_search:"Ei tuloksia haulle [SEARCH_TERM]. N\xE4ytet\xE4\xE4n tulokset sen sijaan haulle [DIFFERENT_TERM]",search_suggestion:"Ei tuloksia haulle [SEARCH_TERM]. Kokeile jotain seuraavista:",searching:"Haetaan [SEARCH_TERM]...",results_label:"Hakutulokset",keyboard_navigate:"siirry",keyboard_select:"valitse",keyboard_clear:"tyhjenn\xE4",keyboard_close:"sulje",keyboard_search:"hae",error_search:"Haku ep\xE4onnistui",filter_selected_one:"[COUNT] valittu",filter_selected_many:"[COUNT] valittu",input_hint:"Tulokset n\xE4kyv\xE4t kirjoittaessasi",loading:"Ladataan"},Er={thanks_to:Zr,comments:Gr,direction:Nr,strings:Xr};var jt={};x(jt,{comments:()=>Lr,default:()=>Sr,direction:()=>Rr,strings:()=>Wr,thanks_to:()=>kr});var kr="Nicolas Friedli ",Lr="",Rr="ltr",Wr={placeholder:"Rechercher",clear_search:"Nettoyer",load_more:"Charger plus de r\xE9sultats",search_label:"Recherche sur ce site",filters_label:"Filtres",zero_results:"Pas de r\xE9sultat pour [SEARCH_TERM]",many_results:"[COUNT] r\xE9sultats pour [SEARCH_TERM]",one_result:"[COUNT] r\xE9sultat pour [SEARCH_TERM]",total_zero_results:"Pas de r\xE9sultat",total_one_result:"[COUNT] r\xE9sultat",total_many_results:"[COUNT] r\xE9sultats",alt_search:"Pas de r\xE9sultat pour [SEARCH_TERM]. Montre les r\xE9sultats pour [DIFFERENT_TERM] \xE0 la place",search_suggestion:"Pas de r\xE9sultat pour [SEARCH_TERM]. Essayer une des recherches suivantes:",searching:"Recherche [SEARCH_TERM]...",results_label:"R\xE9sultats de recherche",keyboard_navigate:"naviguer",keyboard_select:"choisir",keyboard_clear:"effacer",keyboard_close:"fermer",keyboard_search:"rechercher",error_search:"\xC9chec de la recherche",filter_selected_one:"[COUNT] s\xE9lectionn\xE9",filter_selected_many:"[COUNT] s\xE9lectionn\xE9s",input_hint:"Les r\xE9sultats appara\xEEtront au fur et \xE0 mesure de la saisie",loading:"Chargement"},Sr={thanks_to:kr,comments:Lr,direction:Rr,strings:Wr};var Kt={};x(Kt,{comments:()=>Dr,default:()=>Hr,direction:()=>Tr,strings:()=>vr,thanks_to:()=>Vr});var Vr="Pablo Villaverde ",Dr="",Tr="ltr",vr={placeholder:"Buscar",clear_search:"Limpar",load_more:"Ver m\xE1is resultados",search_label:"Buscar neste sitio",filters_label:"Filtros",zero_results:"Non se atoparon resultados para [SEARCH_TERM]",many_results:"[COUNT] resultados atopados para [SEARCH_TERM]",one_result:"[COUNT] resultado atopado para [SEARCH_TERM]",total_zero_results:"Sen resultados",total_one_result:"[COUNT] resultado",total_many_results:"[COUNT] resultados",alt_search:"Non se atoparon resultados para [SEARCH_TERM]. Amosando no seu lugar resultados para [DIFFERENT_TERM]",search_suggestion:"Non se atoparon resultados para [SEARCH_TERM]. Probe unha das seguintes pesquisas:",searching:"Buscando [SEARCH_TERM]...",results_label:"Resultados da busca",keyboard_navigate:"navegar",keyboard_select:"escoller",keyboard_clear:"limpar",keyboard_close:"pechar",keyboard_search:"buscar",error_search:"Erro na busca",filter_selected_one:"[COUNT] seleccionado",filter_selected_many:"[COUNT] seleccionados",input_hint:"Os resultados aparecer\xE1n mentres escribe",loading:"Cargando"},Hr={thanks_to:Vr,comments:Dr,direction:Tr,strings:vr};var Pt={};x(Pt,{comments:()=>Yr,default:()=>Jr,direction:()=>wr,strings:()=>zr,thanks_to:()=>Mr});var Mr="Nir Tamir ",Yr="",wr="rtl",zr={placeholder:"\u05D7\u05D9\u05E4\u05D5\u05E9",clear_search:"\u05E0\u05D9\u05E7\u05D5\u05D9",load_more:"\u05E2\u05D5\u05D3 \u05EA\u05D5\u05E6\u05D0\u05D5\u05EA",search_label:"\u05D7\u05D9\u05E4\u05D5\u05E9 \u05D1\u05D0\u05EA\u05E8 \u05D6\u05D4",filters_label:"\u05DE\u05E1\u05E0\u05E0\u05D9\u05DD",zero_results:"\u05DC\u05D0 \u05E0\u05DE\u05E6\u05D0\u05D5 \u05EA\u05D5\u05E6\u05D0\u05D5\u05EA \u05E2\u05D1\u05D5\u05E8 [SEARCH_TERM]",many_results:"\u05E0\u05DE\u05E6\u05D0\u05D5 [COUNT] \u05EA\u05D5\u05E6\u05D0\u05D5\u05EA \u05E2\u05D1\u05D5\u05E8 [SEARCH_TERM]",one_result:"\u05E0\u05DE\u05E6\u05D0\u05D4 \u05EA\u05D5\u05E6\u05D0\u05D4 \u05D0\u05D7\u05EA \u05E2\u05D1\u05D5\u05E8 [SEARCH_TERM]",total_zero_results:"\u05DC\u05D0 \u05E0\u05DE\u05E6\u05D0\u05D5 \u05EA\u05D5\u05E6\u05D0\u05D5\u05EA",total_one_result:"\u05EA\u05D5\u05E6\u05D0\u05D4 [COUNT]",total_many_results:"[COUNT] \u05EA\u05D5\u05E6\u05D0\u05D5\u05EA",alt_search:"\u05DC\u05D0 \u05E0\u05DE\u05E6\u05D0\u05D5 \u05EA\u05D5\u05E6\u05D0\u05D5\u05EA \u05E2\u05D1\u05D5\u05E8 [SEARCH_TERM]. \u05DE\u05D5\u05E6\u05D2\u05D5\u05EA \u05EA\u05D5\u05E6\u05D0\u05D5\u05EA \u05E2\u05D1\u05D5\u05E8 [DIFFERENT_TERM]",search_suggestion:"\u05DC\u05D0 \u05E0\u05DE\u05E6\u05D0\u05D5 \u05EA\u05D5\u05E6\u05D0\u05D5\u05EA \u05E2\u05D1\u05D5\u05E8 [SEARCH_TERM]. \u05E0\u05E1\u05D5 \u05D0\u05D7\u05D3 \u05DE\u05D4\u05D7\u05D9\u05E4\u05D5\u05E9\u05D9\u05DD \u05D4\u05D1\u05D0\u05D9\u05DD:",searching:"\u05DE\u05D7\u05E4\u05E9 \u05D0\u05EA [SEARCH_TERM]...",results_label:"\u05EA\u05D5\u05E6\u05D0\u05D5\u05EA \u05D7\u05D9\u05E4\u05D5\u05E9",keyboard_navigate:"\u05E0\u05D9\u05D5\u05D5\u05D8",keyboard_select:"\u05D1\u05D7\u05D9\u05E8\u05D4",keyboard_clear:"\u05E0\u05D9\u05E7\u05D5\u05D9",keyboard_close:"\u05E1\u05D2\u05D9\u05E8\u05D4",keyboard_search:"\u05D7\u05D9\u05E4\u05D5\u05E9",error_search:"\u05D4\u05D7\u05D9\u05E4\u05D5\u05E9 \u05E0\u05DB\u05E9\u05DC",filter_selected_one:"[COUNT] \u05E0\u05D1\u05D7\u05E8",filter_selected_many:"[COUNT] \u05E0\u05D1\u05D7\u05E8\u05D5",input_hint:"\u05D4\u05EA\u05D5\u05E6\u05D0\u05D5\u05EA \u05D9\u05D5\u05E4\u05D9\u05E2\u05D5 \u05EA\u05D5\u05DA \u05DB\u05D3\u05D9 \u05D4\u05E7\u05DC\u05D3\u05D4",loading:"\u05D8\u05D5\u05E2\u05DF"},Jr={thanks_to:Mr,comments:Yr,direction:wr,strings:zr};var qt={};x(qt,{comments:()=>jr,default:()=>qr,direction:()=>Kr,strings:()=>Pr,thanks_to:()=>Or});var Or="Amit Yadav ",jr="",Kr="ltr",Pr={placeholder:"\u0916\u094B\u091C\u0947\u0902",clear_search:"\u0938\u093E\u092B \u0915\u0930\u0947\u0902",load_more:"\u0914\u0930 \u0905\u0927\u093F\u0915 \u092A\u0930\u093F\u0923\u093E\u092E \u0932\u094B\u0921 \u0915\u0930\u0947\u0902",search_label:"\u0907\u0938 \u0938\u093E\u0907\u091F \u092E\u0947\u0902 \u0916\u094B\u091C\u0947\u0902",filters_label:"\u092B\u093C\u093F\u0932\u094D\u091F\u0930",zero_results:"\u0915\u094B\u0908 \u092A\u0930\u093F\u0923\u093E\u092E [SEARCH_TERM] \u0915\u0947 \u0932\u093F\u090F \u0928\u0939\u0940\u0902 \u092E\u093F\u0932\u093E",many_results:"[COUNT] \u092A\u0930\u093F\u0923\u093E\u092E [SEARCH_TERM] \u0915\u0947 \u0932\u093F\u090F \u092E\u093F\u0932\u0947",one_result:"[COUNT] \u092A\u0930\u093F\u0923\u093E\u092E [SEARCH_TERM] \u0915\u0947 \u0932\u093F\u090F \u092E\u093F\u0932\u093E",total_zero_results:"\u0915\u094B\u0908 \u092A\u0930\u093F\u0923\u093E\u092E \u0928\u0939\u0940\u0902",total_one_result:"[COUNT] \u092A\u0930\u093F\u0923\u093E\u092E",total_many_results:"[COUNT] \u092A\u0930\u093F\u0923\u093E\u092E",alt_search:"[SEARCH_TERM] \u0915\u0947 \u0932\u093F\u090F \u0915\u094B\u0908 \u092A\u0930\u093F\u0923\u093E\u092E \u0928\u0939\u0940\u0902 \u092E\u093F\u0932\u093E\u0964 \u0907\u0938\u0915\u0947 \u092C\u091C\u093E\u092F [DIFFERENT_TERM] \u0915\u0947 \u0932\u093F\u090F \u092A\u0930\u093F\u0923\u093E\u092E \u0926\u093F\u0916\u093E \u0930\u0939\u093E \u0939\u0948",search_suggestion:"[SEARCH_TERM] \u0915\u0947 \u0932\u093F\u090F \u0915\u094B\u0908 \u092A\u0930\u093F\u0923\u093E\u092E \u0928\u0939\u0940\u0902 \u092E\u093F\u0932\u093E\u0964 \u0928\u093F\u092E\u094D\u0928\u0932\u093F\u0916\u093F\u0924 \u0916\u094B\u091C\u094B\u0902 \u092E\u0947\u0902 \u0938\u0947 \u0915\u094B\u0908 \u090F\u0915 \u0906\u091C\u093C\u092E\u093E\u090F\u0902:",searching:"[SEARCH_TERM] \u0915\u0940 \u0916\u094B\u091C \u0915\u0940 \u091C\u093E \u0930\u0939\u0940 \u0939\u0948...",results_label:"\u0916\u094B\u091C \u092A\u0930\u093F\u0923\u093E\u092E",keyboard_navigate:"\u0928\u0947\u0935\u093F\u0917\u0947\u091F",keyboard_select:"\u091A\u0941\u0928\u0947\u0902",keyboard_clear:"\u0938\u093E\u092B\u093C \u0915\u0930\u0947\u0902",keyboard_close:"\u092C\u0902\u0926 \u0915\u0930\u0947\u0902",keyboard_search:"\u0916\u094B\u091C\u0947\u0902",error_search:"\u0916\u094B\u091C \u0935\u093F\u092B\u0932",filter_selected_one:"[COUNT] \u091A\u092F\u0928\u093F\u0924",filter_selected_many:"[COUNT] \u091A\u092F\u0928\u093F\u0924",input_hint:"\u091F\u093E\u0907\u092A \u0915\u0930\u0924\u0947 \u0938\u092E\u092F \u092A\u0930\u093F\u0923\u093E\u092E \u0926\u093F\u0916\u093E\u0908 \u0926\u0947\u0902\u0917\u0947",loading:"\u0932\u094B\u0921 \u0939\u094B \u0930\u0939\u093E \u0939\u0948"},qr={thanks_to:Or,comments:jr,direction:Kr,strings:Pr};var $t={};x($t,{comments:()=>ei,default:()=>si,direction:()=>ti,strings:()=>li,thanks_to:()=>$r});var $r="Diomed ",ei="",ti="ltr",li={placeholder:"Tra\u017Ei",clear_search:"O\u010Disti",load_more:"U\u010Ditaj vi\u0161e rezultata",search_label:"Pretra\u017Ei ovu stranicu",filters_label:"Filteri",zero_results:"Nema rezultata za [SEARCH_TERM]",many_results:"[COUNT] rezultata za [SEARCH_TERM]",one_result:"[COUNT] rezultat za [SEARCH_TERM]",total_zero_results:"Nema rezultata",total_one_result:"[COUNT] rezultat",total_many_results:"[COUNT] rezultata",alt_search:"Nema rezultata za [SEARCH_TERM]. Prikazujem rezultate za [DIFFERENT_TERM]",search_suggestion:"Nema rezultata za [SEARCH_TERM]. Poku\u0161aj s jednom od ovih pretraga:",searching:"Pretra\u017Eujem [SEARCH_TERM]...",results_label:"Rezultati pretrage",keyboard_navigate:"navigiraj",keyboard_select:"odaberi",keyboard_clear:"o\u010Disti",keyboard_close:"zatvori",keyboard_search:"tra\u017Ei",error_search:"Pretraga nije uspjela",filter_selected_one:"[COUNT] odabran",filter_selected_many:"[COUNT] odabranih",input_hint:"Rezultati \u0107e se pojaviti dok tipkate",loading:"U\u010Ditavanje"},si={thanks_to:$r,comments:ei,direction:ti,strings:li};var el={};x(el,{comments:()=>ri,default:()=>gi,direction:()=>ii,strings:()=>ni,thanks_to:()=>ai});var ai="Adam Laki ",ri="",ii="ltr",ni={placeholder:"Keres\xE9s",clear_search:"T\xF6rl\xE9s",load_more:"Tov\xE1bbi tal\xE1latok bet\xF6lt\xE9se",search_label:"Keres\xE9s az oldalon",filters_label:"Sz\u0171r\xE9s",zero_results:"Nincs tal\xE1lat a(z) [SEARCH_TERM] kifejez\xE9sre",many_results:"[COUNT] db tal\xE1lat a(z) [SEARCH_TERM] kifejez\xE9sre",one_result:"[COUNT] db tal\xE1lat a(z) [SEARCH_TERM] kifejez\xE9sre",total_zero_results:"Nincs tal\xE1lat",total_one_result:"[COUNT] tal\xE1lat",total_many_results:"[COUNT] tal\xE1lat",alt_search:"Nincs tal\xE1lat a(z) [SEARCH_TERM] kifejez\xE9sre. Tal\xE1latok mutat\xE1sa ink\xE1bb a(z) [DIFFERENT_TERM] kifejez\xE9sre",search_suggestion:"Nincs tal\xE1lat a(z) [SEARCH_TERM] kifejez\xE9sre. Pr\xF3b\xE1ld meg a k\xF6vetkez\u0151 keres\xE9sek egyik\xE9t:",searching:"Keres\xE9s a(z) [SEARCH_TERM] kifejez\xE9sre...",results_label:"Keres\xE9si tal\xE1latok",keyboard_navigate:"navig\xE1l\xE1s",keyboard_select:"kiv\xE1laszt\xE1s",keyboard_clear:"t\xF6rl\xE9s",keyboard_close:"bez\xE1r\xE1s",keyboard_search:"keres\xE9s",error_search:"A keres\xE9s sikertelen",filter_selected_one:"[COUNT] kiv\xE1lasztva",filter_selected_many:"[COUNT] kiv\xE1lasztva",input_hint:"A tal\xE1latok g\xE9pel\xE9s k\xF6zben jelennek meg",loading:"Bet\xF6lt\xE9s"},gi={thanks_to:ai,comments:ri,direction:ii,strings:ni};var tl={};x(tl,{comments:()=>ci,default:()=>Ii,direction:()=>ui,strings:()=>Ci,thanks_to:()=>oi});var oi="Nixentric",ci="",ui="ltr",Ci={placeholder:"Cari",clear_search:"Bersihkan",load_more:"Muat lebih banyak hasil",search_label:"Telusuri situs ini",filters_label:"Filter",zero_results:"[SEARCH_TERM] tidak ditemukan",many_results:"Ditemukan [COUNT] hasil untuk [SEARCH_TERM]",one_result:"Ditemukan [COUNT] hasil untuk [SEARCH_TERM]",total_zero_results:"Tidak ada hasil",total_one_result:"[COUNT] hasil",total_many_results:"[COUNT] hasil",alt_search:"[SEARCH_TERM] tidak ditemukan. Menampilkan hasil [DIFFERENT_TERM] sebagai gantinya",search_suggestion:"[SEARCH_TERM] tidak ditemukan. Coba salah satu pencarian berikut ini:",searching:"Mencari [SEARCH_TERM]...",results_label:"Hasil pencarian",keyboard_navigate:"navigasi",keyboard_select:"pilih",keyboard_clear:"bersihkan",keyboard_close:"tutup",keyboard_search:"cari",error_search:"Pencarian gagal",filter_selected_one:"[COUNT] dipilih",filter_selected_many:"[COUNT] dipilih",input_hint:"Hasil akan muncul saat Anda mengetik",loading:"Memuat"},Ii={thanks_to:oi,comments:ci,direction:ui,strings:Ci};var ll={};x(ll,{comments:()=>Ai,default:()=>mi,direction:()=>_i,strings:()=>Qi,thanks_to:()=>di});var di="Cosette Bruhns Alonso, Andrew Janco ",Ai="",_i="ltr",Qi={placeholder:"Cerca",clear_search:"Cancella la cronologia",load_more:"Mostra pi\xF9 risultati",search_label:"Cerca nel sito",filters_label:"Filtri di ricerca",zero_results:"Nessun risultato per [SEARCH_TERM]",many_results:"[COUNT] risultati per [SEARCH_TERM]",one_result:"[COUNT] risultato per [SEARCH_TERM]",total_zero_results:"Nessun risultato",total_one_result:"[COUNT] risultato",total_many_results:"[COUNT] risultati",alt_search:"Nessun risultato per [SEARCH_TERM]. Mostrando risultati per [DIFFERENT_TERM] come alternativa.",search_suggestion:"Nessun risultato per [SEARCH_TERM]. Prova una delle seguenti ricerche:",searching:"Cercando [SEARCH_TERM]...",results_label:"Risultati della ricerca",keyboard_navigate:"naviga",keyboard_select:"seleziona",keyboard_clear:"cancella",keyboard_close:"chiudi",keyboard_search:"cerca",error_search:"Ricerca fallita",filter_selected_one:"[COUNT] selezionato",filter_selected_many:"[COUNT] selezionati",input_hint:"I risultati appariranno durante la digitazione",loading:"Caricamento"},mi={thanks_to:di,comments:Ai,direction:_i,strings:Qi};var sl={};x(sl,{comments:()=>fi,default:()=>Bi,direction:()=>Fi,strings:()=>pi,thanks_to:()=>bi});var bi="Tate",fi="",Fi="ltr",pi={placeholder:"\u691C\u7D22",clear_search:"\u30AF\u30EA\u30A2",load_more:"\u6B21\u3092\u8AAD\u307F\u8FBC\u3080",search_label:"\u3053\u306E\u30B5\u30A4\u30C8\u3092\u691C\u7D22",filters_label:"\u30D5\u30A3\u30EB\u30BF",zero_results:"[SEARCH_TERM]\u306E\u691C\u7D22\u306B\u4E00\u81F4\u3059\u308B\u60C5\u5831\u306F\u3042\u308A\u307E\u305B\u3093\u3067\u3057\u305F",many_results:"[SEARCH_TERM]\u306E[COUNT]\u4EF6\u306E\u691C\u7D22\u7D50\u679C",one_result:"[SEARCH_TERM]\u306E[COUNT]\u4EF6\u306E\u691C\u7D22\u7D50\u679C",total_zero_results:"\u7D50\u679C\u306A\u3057",total_one_result:"[COUNT]\u4EF6\u306E\u7D50\u679C",total_many_results:"[COUNT]\u4EF6\u306E\u7D50\u679C",alt_search:"[SEARCH_TERM]\u306E\u691C\u7D22\u306B\u4E00\u81F4\u3059\u308B\u60C5\u5831\u306F\u3042\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002[DIFFERENT_TERM]\u306E\u691C\u7D22\u7D50\u679C\u3092\u8868\u793A\u3057\u3066\u3044\u307E\u3059",search_suggestion:"[SEARCH_TERM]\u306E\u691C\u7D22\u306B\u4E00\u81F4\u3059\u308B\u60C5\u5831\u306F\u3042\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u6B21\u306E\u3044\u305A\u308C\u304B\u306E\u691C\u7D22\u3092\u8A66\u3057\u3066\u304F\u3060\u3055\u3044",searching:"[SEARCH_TERM]\u3092\u691C\u7D22\u3057\u3066\u3044\u307E\u3059",results_label:"\u691C\u7D22\u7D50\u679C",keyboard_navigate:"\u79FB\u52D5",keyboard_select:"\u9078\u629E",keyboard_clear:"\u30AF\u30EA\u30A2",keyboard_close:"\u9589\u3058\u308B",keyboard_search:"\u691C\u7D22",error_search:"\u691C\u7D22\u306B\u5931\u6557\u3057\u307E\u3057\u305F",filter_selected_one:"[COUNT]\u4EF6\u9078\u629E\u4E2D",filter_selected_many:"[COUNT]\u4EF6\u9078\u629E\u4E2D",input_hint:"\u5165\u529B\u4E2D\u306B\u691C\u7D22\u7D50\u679C\u304C\u8868\u793A\u3055\u308C\u307E\u3059",loading:"\u8AAD\u307F\u8FBC\u307F\u4E2D"},Bi={thanks_to:bi,comments:fi,direction:Fi,strings:pi};var al={};x(al,{comments:()=>Ui,default:()=>Zi,direction:()=>xi,strings:()=>yi,thanks_to:()=>hi});var hi="Seokho Son ",Ui="",xi="ltr",yi={placeholder:"\uAC80\uC0C9\uC5B4",clear_search:"\uBE44\uC6B0\uAE30",load_more:"\uAC80\uC0C9 \uACB0\uACFC \uB354 \uBCF4\uAE30",search_label:"\uC0AC\uC774\uD2B8 \uAC80\uC0C9",filters_label:"\uD544\uD130",zero_results:"[SEARCH_TERM]\uC5D0 \uB300\uD55C \uACB0\uACFC \uC5C6\uC74C",many_results:"[SEARCH_TERM]\uC5D0 \uB300\uD55C \uACB0\uACFC [COUNT]\uAC74",one_result:"[SEARCH_TERM]\uC5D0 \uB300\uD55C \uACB0\uACFC [COUNT]\uAC74",total_zero_results:"\uACB0\uACFC \uC5C6\uC74C",total_one_result:"\uACB0\uACFC [COUNT]\uAC74",total_many_results:"\uACB0\uACFC [COUNT]\uAC74",alt_search:"[SEARCH_TERM]\uC5D0 \uB300\uD55C \uACB0\uACFC \uC5C6\uC74C. [DIFFERENT_TERM]\uC5D0 \uB300\uD55C \uACB0\uACFC",search_suggestion:"[SEARCH_TERM]\uC5D0 \uB300\uD55C \uACB0\uACFC \uC5C6\uC74C. \uCD94\uCC9C \uAC80\uC0C9\uC5B4: ",searching:"[SEARCH_TERM] \uAC80\uC0C9 \uC911...",results_label:"\uAC80\uC0C9 \uACB0\uACFC",keyboard_navigate:"\uC774\uB3D9",keyboard_select:"\uC120\uD0DD",keyboard_clear:"\uBE44\uC6B0\uAE30",keyboard_close:"\uB2EB\uAE30",keyboard_search:"\uAC80\uC0C9",error_search:"\uAC80\uC0C9 \uC2E4\uD328",filter_selected_one:"[COUNT]\uAC1C \uC120\uD0DD\uB428",filter_selected_many:"[COUNT]\uAC1C \uC120\uD0DD\uB428",input_hint:"\uC785\uB825\uD558\uB294 \uB3D9\uC548 \uACB0\uACFC\uAC00 \uD45C\uC2DC\uB429\uB2C8\uB2E4",loading:"\uB85C\uB529 \uC911"},Zi={thanks_to:hi,comments:Ui,direction:xi,strings:yi};var rl={};x(rl,{comments:()=>Ni,default:()=>ki,direction:()=>Xi,strings:()=>Ei,thanks_to:()=>Gi});var Gi="",Ni="",Xi="ltr",Ei={placeholder:"Rapu",clear_search:"Whakakore",load_more:"Whakauta \u0113tahi otinga k\u0113",search_label:"Rapu",filters_label:"T\u0101tari",zero_results:"Otinga kore ki [SEARCH_TERM]",many_results:"[COUNT] otinga ki [SEARCH_TERM]",one_result:"[COUNT] otinga ki [SEARCH_TERM]",total_zero_results:"K\u0101ore he otinga",total_one_result:"[COUNT] otinga",total_many_results:"[COUNT] ng\u0101 otinga",alt_search:"Otinga kore ki [SEARCH_TERM]. Otinga k\u0113 ki [DIFFERENT_TERM]",search_suggestion:"Otinga kore ki [SEARCH_TERM]. whakam\u0101tau ki ng\u0101 mea atu:",searching:"Rapu ki [SEARCH_TERM]...",results_label:"Ng\u0101 otinga rapu",keyboard_navigate:"whakatere",keyboard_select:"t\u012Bpako",keyboard_clear:"whakakore",keyboard_close:"kati",keyboard_search:"rapu",error_search:"K\u0101ore i eke te rapu",filter_selected_one:"[COUNT] kua t\u012Bpakohia",filter_selected_many:"[COUNT] kua t\u012Bpakohia",input_hint:"Ka puta ng\u0101 otinga i a koe e patopato ana",loading:"E uta ana"},ki={thanks_to:Gi,comments:Ni,direction:Xi,strings:Ei};var il={};x(il,{comments:()=>Ri,default:()=>Vi,direction:()=>Wi,strings:()=>Si,thanks_to:()=>Li});var Li="Harry Min Khant ",Ri="",Wi="ltr",Si={placeholder:"\u101B\u103E\u102C\u101B\u1014\u103A",clear_search:"\u101B\u103E\u102C\u1016\u103D\u1031\u1019\u103E\u102F\u1000\u102D\u102F \u101B\u103E\u1004\u103A\u1038\u101C\u1004\u103A\u1038\u1015\u102B\u104B",load_more:"\u1014\u1031\u102C\u1000\u103A\u1011\u1015\u103A\u101B\u101C\u1012\u103A\u1019\u103B\u102C\u1038\u1000\u102D\u102F \u1010\u1004\u103A\u1015\u102B\u104B",search_label:"\u1024\u1006\u102D\u102F\u1000\u103A\u1010\u103D\u1004\u103A\u101B\u103E\u102C\u1016\u103D\u1031\u1015\u102B\u104B",filters_label:"\u1005\u1005\u103A\u1011\u102F\u1010\u103A\u1019\u103E\u102F\u1019\u103B\u102C\u1038",zero_results:"[SEARCH_TERM] \u1021\u1010\u103D\u1000\u103A \u101B\u101C\u1012\u103A\u1019\u103B\u102C\u1038 \u1019\u101B\u103E\u102D\u1015\u102B",many_results:"[SEARCH_TERM] \u1021\u1010\u103D\u1000\u103A \u101B\u101C\u1012\u103A [COUNT] \u1001\u102F",one_result:"[SEARCH_TERM] \u1021\u1010\u103D\u1000\u103A \u101B\u101C\u1012\u103A [COUNT]",total_zero_results:"\u101B\u101C\u1012\u103A\u1019\u103B\u102C\u1038 \u1019\u101B\u103E\u102D\u1015\u102B",total_one_result:"\u101B\u101C\u1012\u103A [COUNT] \u1001\u102F",total_many_results:"\u101B\u101C\u1012\u103A [COUNT] \u1001\u102F",alt_search:"[SEARCH_TERM] \u1021\u1010\u103D\u1000\u103A \u101B\u101C\u1012\u103A\u1019\u101B\u103E\u102D\u1015\u102B\u104B \u104E\u1004\u103A\u1038\u1021\u1005\u102C\u1038 [DIFFERENT_TERM] \u1021\u1010\u103D\u1000\u103A \u101B\u101C\u1012\u103A\u1019\u103B\u102C\u1038\u1000\u102D\u102F \u1015\u103C\u101E\u101E\u100A\u103A\u104B",search_suggestion:"[SEARCH_TERM] \u1021\u1010\u103D\u1000\u103A \u101B\u101C\u1012\u103A\u1019\u101B\u103E\u102D\u1015\u102B\u104B \u1021\u1031\u102C\u1000\u103A\u1015\u102B\u101B\u103E\u102C\u1016\u103D\u1031\u1019\u103E\u102F\u1019\u103B\u102C\u1038\u1011\u1032\u1019\u103E \u1010\u1005\u103A\u1001\u102F\u1000\u102D\u102F \u1005\u1019\u103A\u1038\u1000\u103C\u100A\u1037\u103A\u1015\u102B:",searching:"[SEARCH_TERM] \u1000\u102D\u102F \u101B\u103E\u102C\u1016\u103D\u1031\u1014\u1031\u101E\u100A\u103A...",results_label:"\u101B\u103E\u102C\u1016\u103D\u1031\u1019\u103E\u102F \u101B\u101C\u1012\u103A\u1019\u103B\u102C\u1038",keyboard_navigate:"\u101C\u1019\u103A\u1038\u100A\u103D\u103E\u1014\u103A",keyboard_select:"\u101B\u103D\u1031\u1038\u1001\u103B\u101A\u103A",keyboard_clear:"\u101B\u103E\u1004\u103A\u1038\u101C\u1004\u103A\u1038",keyboard_close:"\u1015\u102D\u1010\u103A",keyboard_search:"\u101B\u103E\u102C\u101B\u1014\u103A",error_search:"\u101B\u103E\u102C\u1016\u103D\u1031\u1019\u103E\u102F \u1019\u1021\u1031\u102C\u1004\u103A\u1019\u103C\u1004\u103A\u1015\u102B",filter_selected_one:"[COUNT] \u1001\u102F \u101B\u103D\u1031\u1038\u1001\u103B\u101A\u103A\u1011\u102C\u1038\u101E\u100A\u103A",filter_selected_many:"[COUNT] \u1001\u102F \u101B\u103D\u1031\u1038\u1001\u103B\u101A\u103A\u1011\u102C\u1038\u101E\u100A\u103A",input_hint:"\u101B\u102D\u102F\u1000\u103A\u1014\u1031\u1005\u1009\u103A \u101B\u101C\u1012\u103A\u1019\u103B\u102C\u1038 \u1015\u1031\u102B\u103A\u101C\u102C\u1015\u102B\u1019\u100A\u103A",loading:"\u1010\u1004\u103A\u1014\u1031\u101E\u100A\u103A"},Vi={thanks_to:Li,comments:Ri,direction:Wi,strings:Si};var nl={};x(nl,{comments:()=>Ti,default:()=>Mi,direction:()=>vi,strings:()=>Hi,thanks_to:()=>Di});var Di="Eirik Mikkelsen",Ti="",vi="ltr",Hi={placeholder:"S\xF8k",clear_search:"Fjern",load_more:"Last flere resultater",search_label:"S\xF8k p\xE5 denne siden",filters_label:"Filtre",zero_results:"Ingen resultater for [SEARCH_TERM]",many_results:"[COUNT] resultater for [SEARCH_TERM]",one_result:"[COUNT] resultat for [SEARCH_TERM]",total_zero_results:"Ingen resultater",total_one_result:"[COUNT] resultat",total_many_results:"[COUNT] resultater",alt_search:"Ingen resultater for [SEARCH_TERM]. Viser resultater for [DIFFERENT_TERM] i stedet",search_suggestion:"Ingen resultater for [SEARCH_TERM]. Pr\xF8v en av disse s\xF8keordene i stedet:",searching:"S\xF8ker etter [SEARCH_TERM]",results_label:"S\xF8keresultater",keyboard_navigate:"naviger",keyboard_select:"velg",keyboard_clear:"fjern",keyboard_close:"lukk",keyboard_search:"s\xF8k",error_search:"S\xF8k feilet",filter_selected_one:"[COUNT] valgt",filter_selected_many:"[COUNT] valgte",input_hint:"Resultater vises mens du skriver",loading:"Laster"},Mi={thanks_to:Di,comments:Ti,direction:vi,strings:Hi};var gl={};x(gl,{comments:()=>wi,default:()=>Oi,direction:()=>zi,strings:()=>Ji,thanks_to:()=>Yi});var Yi="Paul van Brouwershaven",wi="",zi="ltr",Ji={placeholder:"Zoeken",clear_search:"Reset",load_more:"Meer resultaten laden",search_label:"Doorzoek deze site",filters_label:"Filters",zero_results:"Geen resultaten voor [SEARCH_TERM]",many_results:"[COUNT] resultaten voor [SEARCH_TERM]",one_result:"[COUNT] resultaat voor [SEARCH_TERM]",total_zero_results:"Geen resultaten",total_one_result:"[COUNT] resultaat",total_many_results:"[COUNT] resultaten",alt_search:"Geen resultaten voor [SEARCH_TERM]. In plaats daarvan worden resultaten voor [DIFFERENT_TERM] weergegeven",search_suggestion:"Geen resultaten voor [SEARCH_TERM]. Probeer een van de volgende zoekopdrachten:",searching:"Zoeken naar [SEARCH_TERM]...",results_label:"Zoekresultaten",keyboard_navigate:"navigeren",keyboard_select:"selecteren",keyboard_clear:"wissen",keyboard_close:"sluiten",keyboard_search:"zoeken",error_search:"Zoeken mislukt",filter_selected_one:"[COUNT] geselecteerd",filter_selected_many:"[COUNT] geselecteerd",input_hint:"Resultaten verschijnen terwijl u typt",loading:"Laden"},Oi={thanks_to:Yi,comments:wi,direction:zi,strings:Ji};var ol={};x(ol,{comments:()=>Ki,default:()=>$i,direction:()=>Pi,strings:()=>qi,thanks_to:()=>ji});var ji="Eirik Mikkelsen",Ki="",Pi="ltr",qi={placeholder:"S\xF8k",clear_search:"Fjern",load_more:"Last fleire resultat",search_label:"S\xF8k p\xE5 denne sida",filters_label:"Filter",zero_results:"Ingen resultat for [SEARCH_TERM]",many_results:"[COUNT] resultat for [SEARCH_TERM]",one_result:"[COUNT] resultat for [SEARCH_TERM]",total_zero_results:"Ingen resultat",total_one_result:"[COUNT] resultat",total_many_results:"[COUNT] resultat",alt_search:"Ingen resultat for [SEARCH_TERM]. Viser resultat for [DIFFERENT_TERM] i staden",search_suggestion:"Ingen resultat for [SEARCH_TERM]. Pr\xF8v eitt av desse s\xF8keorda i staden:",searching:"S\xF8ker etter [SEARCH_TERM]",results_label:"S\xF8keresultat",keyboard_navigate:"naviger",keyboard_select:"vel",keyboard_clear:"fjern",keyboard_close:"lukk",keyboard_search:"s\xF8k",error_search:"S\xF8k feila",filter_selected_one:"[COUNT] vald",filter_selected_many:"[COUNT] valde",input_hint:"Resultat visast medan du skriv",loading:"Lastar"},$i={thanks_to:ji,comments:Ki,direction:Pi,strings:qi};var cl={};x(cl,{comments:()=>tn,default:()=>an,direction:()=>ln,strings:()=>sn,thanks_to:()=>en});var en="Christopher Wingate",tn="",ln="ltr",sn={placeholder:"S\xF8k",clear_search:"Fjern",load_more:"Last flere resultater",search_label:"S\xF8k p\xE5 denne siden",filters_label:"Filtre",zero_results:"Ingen resultater for [SEARCH_TERM]",many_results:"[COUNT] resultater for [SEARCH_TERM]",one_result:"[COUNT] resultat for [SEARCH_TERM]",total_zero_results:"Ingen resultater",total_one_result:"[COUNT] resultat",total_many_results:"[COUNT] resultater",alt_search:"Ingen resultater for [SEARCH_TERM]. Viser resultater for [DIFFERENT_TERM] i stedet",search_suggestion:"Ingen resultater for [SEARCH_TERM]. Pr\xF8v en av disse s\xF8keordene i stedet:",searching:"S\xF8ker etter [SEARCH_TERM]",results_label:"S\xF8keresultater",keyboard_navigate:"naviger",keyboard_select:"velg",keyboard_clear:"fjern",keyboard_close:"lukk",keyboard_search:"s\xF8k",error_search:"S\xF8k feilet",filter_selected_one:"[COUNT] valgt",filter_selected_many:"[COUNT] valgte",input_hint:"Resultater vises mens du skriver",loading:"Laster"},an={thanks_to:en,comments:tn,direction:ln,strings:sn};var ul={};x(ul,{comments:()=>nn,default:()=>cn,direction:()=>gn,strings:()=>on,thanks_to:()=>rn});var rn="",nn="",gn="ltr",on={placeholder:"Szukaj",clear_search:"Wyczy\u015B\u0107",load_more:"Za\u0142aduj wi\u0119cej",search_label:"Przeszukaj t\u0119 stron\u0119",filters_label:"Filtry",zero_results:"Brak wynik\xF3w dla [SEARCH_TERM]",many_results:"[COUNT] wynik\xF3w dla [SEARCH_TERM]",one_result:"[COUNT] wynik dla [SEARCH_TERM]",total_zero_results:"Brak wynik\xF3w",total_one_result:"[COUNT] wynik",total_many_results:"[COUNT] wynik\xF3w",alt_search:"Brak wynik\xF3w dla [SEARCH_TERM]. Wy\u015Bwietlam wyniki dla [DIFFERENT_TERM]",search_suggestion:"Brak wynik\xF3w dla [SEARCH_TERM]. Pokrewne wyniki wyszukiwania:",searching:"Szukam [SEARCH_TERM]...",results_label:"Wyniki wyszukiwania",keyboard_navigate:"nawiguj",keyboard_select:"wybierz",keyboard_clear:"wyczy\u015B\u0107",keyboard_close:"zamknij",keyboard_search:"szukaj",error_search:"Wyszukiwanie nie powiod\u0142o si\u0119",filter_selected_one:"[COUNT] wybrany",filter_selected_many:"[COUNT] wybranych",input_hint:"Wyniki pojawi\u0105 si\u0119 podczas pisania",loading:"\u0141adowanie"},cn={thanks_to:rn,comments:nn,direction:gn,strings:on};var Cl={};x(Cl,{comments:()=>Cn,default:()=>An,direction:()=>In,strings:()=>dn,thanks_to:()=>un});var un="Jonatah",Cn="",In="ltr",dn={placeholder:"Pesquisar",clear_search:"Limpar",load_more:"Ver mais resultados",search_label:"Pesquisar",filters_label:"Filtros",zero_results:"Nenhum resultado encontrado para [SEARCH_TERM]",many_results:"[COUNT] resultados encontrados para [SEARCH_TERM]",one_result:"[COUNT] resultado encontrado para [SEARCH_TERM]",total_zero_results:"Nenhum resultado",total_one_result:"[COUNT] resultado",total_many_results:"[COUNT] resultados",alt_search:"Nenhum resultado encontrado para [SEARCH_TERM]. Exibindo resultados para [DIFFERENT_TERM]",search_suggestion:"Nenhum resultado encontrado para [SEARCH_TERM]. Tente uma das seguintes pesquisas:",searching:"Pesquisando por [SEARCH_TERM]...",results_label:"Resultados da pesquisa",keyboard_navigate:"navegar",keyboard_select:"selecionar",keyboard_clear:"limpar",keyboard_close:"fechar",keyboard_search:"pesquisar",error_search:"Falha na pesquisa",filter_selected_one:"[COUNT] selecionado",filter_selected_many:"[COUNT] selecionados",input_hint:"Os resultados aparecer\xE3o enquanto voc\xEA digita",loading:"Carregando"},An={thanks_to:un,comments:Cn,direction:In,strings:dn};var Il={};x(Il,{comments:()=>Qn,default:()=>fn,direction:()=>mn,strings:()=>bn,thanks_to:()=>_n});var _n="Bogdan Mateescu ",Qn="",mn="ltr",bn={placeholder:"C\u0103utare",clear_search:"\u015Eterge\u0163i",load_more:"\xCEnc\u0103rca\u021Bi mai multe rezultate",search_label:"C\u0103uta\u021Bi \xEEn acest site",filters_label:"Filtre",zero_results:"Niciun rezultat pentru [SEARCH_TERM]",many_results:"[COUNT] rezultate pentru [SEARCH_TERM]",one_result:"[COUNT] rezultat pentru [SEARCH_TERM]",total_zero_results:"Niciun rezultat",total_one_result:"[COUNT] rezultat",total_many_results:"[COUNT] rezultate",alt_search:"Niciun rezultat pentru [SEARCH_TERM]. Se afi\u0219eaz\u0103 \xEEn schimb rezultatele pentru [DIFFERENT_TERM]",search_suggestion:"Niciun rezultat pentru [SEARCH_TERM]. \xCEncerca\u021Bi una dintre urm\u0103toarele c\u0103ut\u0103ri:",searching:"Se caut\u0103 dup\u0103: [SEARCH_TERM]...",results_label:"Rezultatele c\u0103ut\u0103rii",keyboard_navigate:"navigare",keyboard_select:"selectare",keyboard_clear:"\u0219tergere",keyboard_close:"\xEEnchidere",keyboard_search:"c\u0103utare",error_search:"C\u0103utarea a e\u0219uat",filter_selected_one:"[COUNT] selectat",filter_selected_many:"[COUNT] selectate",input_hint:"Rezultatele vor ap\u0103rea pe m\u0103sur\u0103 ce tasta\u021Bi",loading:"Se \xEEncarc\u0103"},fn={thanks_to:_n,comments:Qn,direction:mn,strings:bn};var dl={};x(dl,{comments:()=>pn,default:()=>Un,direction:()=>Bn,strings:()=>hn,thanks_to:()=>Fn});var Fn="Aleksandr Gordeev",pn="",Bn="ltr",hn={placeholder:"\u041F\u043E\u0438\u0441\u043A",clear_search:"\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u043F\u043E\u043B\u0435",load_more:"\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u0435\u0449\u0435",search_label:"\u041F\u043E\u0438\u0441\u043A \u043F\u043E \u0441\u0430\u0439\u0442\u0443",filters_label:"\u0424\u0438\u043B\u044C\u0442\u0440\u044B",zero_results:"\u041D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E \u043F\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0443: [SEARCH_TERM]",many_results:"[COUNT] \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u0432 \u043F\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0443: [SEARCH_TERM]",one_result:"[COUNT] \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442 \u043F\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0443: [SEARCH_TERM]",total_zero_results:"\u041D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E",total_one_result:"[COUNT] \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442",total_many_results:"[COUNT] \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u0432",alt_search:"\u041D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E \u043F\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0443: [SEARCH_TERM]. \u041F\u043E\u043A\u0430\u0437\u0430\u043D\u044B \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u044B \u043F\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0443: [DIFFERENT_TERM]",search_suggestion:"\u041D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E \u043F\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0443: [SEARCH_TERM]. \u041F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u043E\u0434\u0438\u043D \u0438\u0437 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0445 \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u043E\u0432",searching:"\u041F\u043E\u0438\u0441\u043A \u043F\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0443: [SEARCH_TERM]",results_label:"\u0420\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u044B \u043F\u043E\u0438\u0441\u043A\u0430",keyboard_navigate:"\u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044F",keyboard_select:"\u0432\u044B\u0431\u0440\u0430\u0442\u044C",keyboard_clear:"\u043E\u0447\u0438\u0441\u0442\u0438\u0442\u044C",keyboard_close:"\u0437\u0430\u043A\u0440\u044B\u0442\u044C",keyboard_search:"\u043F\u043E\u0438\u0441\u043A",error_search:"\u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u043E\u0438\u0441\u043A\u0430",filter_selected_one:"[COUNT] \u0432\u044B\u0431\u0440\u0430\u043D",filter_selected_many:"[COUNT] \u0432\u044B\u0431\u0440\u0430\u043D\u043E",input_hint:"\u0420\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u044B \u0431\u0443\u0434\u0443\u0442 \u043F\u043E\u044F\u0432\u043B\u044F\u0442\u044C\u0441\u044F \u043F\u043E \u043C\u0435\u0440\u0435 \u0432\u0432\u043E\u0434\u0430",loading:"\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430"},Un={thanks_to:Fn,comments:pn,direction:Bn,strings:hn};var Al={};x(Al,{comments:()=>yn,default:()=>Nn,direction:()=>Zn,strings:()=>Gn,thanks_to:()=>xn});var xn="Andrija Sagicc",yn="",Zn="ltr",Gn={placeholder:"\u041F\u0440\u0435\u0442\u0440\u0430\u0433\u0430",clear_search:"\u0411\u0440\u0438\u0441\u0430\u045A\u0435",load_more:"\u041F\u0440\u0438\u043A\u0430\u0437 \u0432\u0438\u0448\u0435 \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0430",search_label:"\u041F\u0440\u0435\u0442\u0440\u0430\u0433\u0430 \u0441\u0430\u0458\u0442\u0430",filters_label:"\u0424\u0438\u043B\u0442\u0435\u0440\u0438",zero_results:"\u041D\u0435\u043C\u0430 \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0430 \u0437\u0430 [SEARCH_TERM]",many_results:"[COUNT] \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0430 \u0437\u0430 [SEARCH_TERM]",one_result:"[COUNT] \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0430 \u0437\u0430 [SEARCH_TERM]",total_zero_results:"\u041D\u0435\u043C\u0430 \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0430",total_one_result:"[COUNT] \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442",total_many_results:"[COUNT] \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0430",alt_search:"\u041D\u0435\u043C\u0430 \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0430 \u0437\u0430 [SEARCH_TERM]. \u041F\u0440\u0438\u043A\u0430\u0437 \u0434\u043E\u0434\u0430\u0442\u043D\u0438\u043A \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0430 \u0437\u0430 [DIFFERENT_TERM]",search_suggestion:"\u041D\u0435\u043C\u0430 \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0430 \u0437\u0430 [SEARCH_TERM]. \u041F\u043E\u043A\u0443\u0448\u0430\u0458\u0442\u0435 \u0441\u0430 \u043D\u0435\u043A\u043E\u043C \u043E\u0434 \u0441\u043B\u0435\u0434\u0435\u045B\u0438\u0445 \u043F\u0440\u0435\u0442\u0440\u0430\u0433\u0430:",searching:"\u041F\u0440\u0435\u0442\u0440\u0430\u0433\u0430 \u0442\u0435\u0440\u043C\u0438\u043D\u0430 [SEARCH_TERM]...",results_label:"\u0420\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0438 \u043F\u0440\u0435\u0442\u0440\u0430\u0433\u0435",keyboard_navigate:"\u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0458\u0430",keyboard_select:"\u0438\u0437\u0430\u0431\u0435\u0440\u0438",keyboard_clear:"\u043E\u0431\u0440\u0438\u0448\u0438",keyboard_close:"\u0437\u0430\u0442\u0432\u043E\u0440\u0438",keyboard_search:"\u043F\u0440\u0435\u0442\u0440\u0430\u0433\u0430",error_search:"\u041F\u0440\u0435\u0442\u0440\u0430\u0433\u0430 \u043D\u0438\u0458\u0435 \u0443\u0441\u043F\u0435\u043B\u0430",filter_selected_one:"[COUNT] \u0438\u0437\u0430\u0431\u0440\u0430\u043D",filter_selected_many:"[COUNT] \u0438\u0437\u0430\u0431\u0440\u0430\u043D\u0438\u0445",input_hint:"\u0420\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0438 \u045B\u0435 \u0441\u0435 \u043F\u043E\u0458\u0430\u0432\u0459\u0438\u0432\u0430\u0442\u0438 \u0434\u043E\u043A \u043A\u0443\u0446\u0430\u0442\u0435",loading:"\u0423\u0447\u0438\u0442\u0430\u0432\u0430\u045A\u0435"},Nn={thanks_to:xn,comments:yn,direction:Zn,strings:Gn};var _l={};x(_l,{comments:()=>En,default:()=>Rn,direction:()=>kn,strings:()=>Ln,thanks_to:()=>Xn});var Xn="Montazar Al-Jaber ",En="",kn="ltr",Ln={placeholder:"S\xF6k",clear_search:"Rensa",load_more:"Visa fler tr\xE4ffar",search_label:"S\xF6k p\xE5 denna sida",filters_label:"Filter",zero_results:"[SEARCH_TERM] gav inga tr\xE4ffar",many_results:"[SEARCH_TERM] gav [COUNT] tr\xE4ffar",one_result:"[SEARCH_TERM] gav [COUNT] tr\xE4ff",total_zero_results:"Inga tr\xE4ffar",total_one_result:"[COUNT] tr\xE4ff",total_many_results:"[COUNT] tr\xE4ffar",alt_search:"[SEARCH_TERM] gav inga tr\xE4ffar. Visar resultat f\xF6r [DIFFERENT_TERM] ist\xE4llet",search_suggestion:"[SEARCH_TERM] gav inga tr\xE4ffar. F\xF6rs\xF6k igen med en av f\xF6ljande s\xF6kord:",searching:"S\xF6ker efter [SEARCH_TERM]...",results_label:"S\xF6kresultat",keyboard_navigate:"navigera",keyboard_select:"v\xE4lj",keyboard_clear:"rensa",keyboard_close:"st\xE4ng",keyboard_search:"s\xF6k",error_search:"S\xF6kningen misslyckades",filter_selected_one:"[COUNT] vald",filter_selected_many:"[COUNT] valda",input_hint:"Resultat visas medan du skriver",loading:"L\xE4ser in"},Rn={thanks_to:Xn,comments:En,direction:kn,strings:Ln};var Ql={};x(Ql,{comments:()=>Sn,default:()=>Tn,direction:()=>Vn,strings:()=>Dn,thanks_to:()=>Wn});var Wn="Anonymous",Sn="",Vn="ltr",Dn={placeholder:"Tafuta",clear_search:"Futa",load_more:"Pakia matokeo zaidi",search_label:"Tafuta tovuti hii",filters_label:"Vichujio",zero_results:"Hakuna matokeo ya [SEARCH_TERM]",many_results:"Matokeo [COUNT] ya [SEARCH_TERM]",one_result:"Tokeo [COUNT] la [SEARCH_TERM]",total_zero_results:"Hakuna matokeo",total_one_result:"Tokeo [COUNT]",total_many_results:"Matokeo [COUNT]",alt_search:"Hakuna mayokeo ya [SEARCH_TERM]. Badala yake, inaonyesha matokeo ya [DIFFERENT_TERM]",search_suggestion:"Hakuna matokeo ya [SEARCH_TERM]. Jaribu mojawapo ya utafutaji ufuatao:",searching:"Kutafuta [SEARCH_TERM]...",results_label:"Matokeo ya utafutaji",keyboard_navigate:"sogeza",keyboard_select:"chagua",keyboard_clear:"futa",keyboard_close:"funga",keyboard_search:"tafuta",error_search:"Utafutaji umeshindwa",filter_selected_one:"[COUNT] imechaguliwa",filter_selected_many:"[COUNT] zimechaguliwa",input_hint:"Matokeo yataonekana unapoandika",loading:"Inapakia"},Tn={thanks_to:Wn,comments:Sn,direction:Vn,strings:Dn};var ml={};x(ml,{comments:()=>Hn,default:()=>wn,direction:()=>Mn,strings:()=>Yn,thanks_to:()=>vn});var vn="",Hn="",Mn="ltr",Yn={placeholder:"\u0BA4\u0BC7\u0B9F\u0BC1\u0B95",clear_search:"\u0B85\u0BB4\u0BBF\u0B95\u0BCD\u0B95\u0BC1\u0B95",load_more:"\u0BAE\u0BC7\u0BB2\u0BC1\u0BAE\u0BCD \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1\u0B95\u0BB3\u0BC8\u0B95\u0BCD \u0B95\u0BBE\u0B9F\u0BCD\u0B9F\u0BC1\u0B95",search_label:"\u0B87\u0BA8\u0BCD\u0BA4 \u0BA4\u0BB3\u0BA4\u0BCD\u0BA4\u0BBF\u0BB2\u0BCD \u0BA4\u0BC7\u0B9F\u0BC1\u0B95",filters_label:"\u0BB5\u0B9F\u0BBF\u0B95\u0B9F\u0BCD\u0B9F\u0BB2\u0BCD\u0B95\u0BB3\u0BCD",zero_results:"[SEARCH_TERM] \u0B95\u0BCD\u0B95\u0BBE\u0BA9 \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1\u0B95\u0BB3\u0BCD \u0B87\u0BB2\u0BCD\u0BB2\u0BC8",many_results:"[SEARCH_TERM] \u0B95\u0BCD\u0B95\u0BBE\u0BA9 [COUNT] \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1\u0B95\u0BB3\u0BCD",one_result:"[SEARCH_TERM] \u0B95\u0BCD\u0B95\u0BBE\u0BA9 \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1",total_zero_results:"\u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1\u0B95\u0BB3\u0BCD \u0B87\u0BB2\u0BCD\u0BB2\u0BC8",total_one_result:"[COUNT] \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1",total_many_results:"[COUNT] \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1\u0B95\u0BB3\u0BCD",alt_search:"[SEARCH_TERM] \u0B87\u0BA4\u0BCD\u0BA4\u0BC7\u0B9F\u0BB2\u0BC1\u0B95\u0BCD\u0B95\u0BBE\u0BA9 \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1\u0B95\u0BB3\u0BCD \u0B87\u0BB2\u0BCD\u0BB2\u0BC8, \u0B87\u0BA8\u0BCD\u0BA4 \u0BA4\u0BC7\u0B9F\u0BB2\u0BCD\u0B95\u0BB3\u0BC1\u0B95\u0BCD\u0B95\u0BBE\u0BA9 \u0B92\u0BA4\u0BCD\u0BA4 \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1\u0B95\u0BB3\u0BCD [DIFFERENT_TERM]",search_suggestion:"[SEARCH_TERM] \u0B87\u0BA4\u0BCD \u0BA4\u0BC7\u0B9F\u0BB2\u0BC1\u0B95\u0BCD\u0B95\u0BBE\u0BA9 \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1\u0B95\u0BB3\u0BCD \u0B87\u0BB2\u0BCD\u0BB2\u0BC8.\u0B87\u0BA4\u0BB1\u0BCD\u0B95\u0BC1 \u0BAA\u0BA4\u0BBF\u0BB2\u0BC0\u0B9F\u0BBE\u0BA9 \u0BA4\u0BC7\u0B9F\u0BB2\u0BCD\u0B95\u0BB3\u0BC8 \u0BA4\u0BC7\u0B9F\u0BC1\u0B95:",searching:"[SEARCH_TERM] \u0BA4\u0BC7\u0B9F\u0BAA\u0BCD\u0BAA\u0B9F\u0BC1\u0B95\u0BBF\u0BA9\u0BCD\u0BB1\u0BA4\u0BC1",results_label:"\u0BA4\u0BC7\u0B9F\u0BB2\u0BCD \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1\u0B95\u0BB3\u0BCD",keyboard_navigate:"\u0BB5\u0BB4\u0BBF\u0BA8\u0B9F\u0BA4\u0BCD\u0BA4\u0BC1",keyboard_select:"\u0BA4\u0BC7\u0BB0\u0BCD\u0BA8\u0BCD\u0BA4\u0BC6\u0B9F\u0BC1",keyboard_clear:"\u0B85\u0BB4\u0BBF",keyboard_close:"\u0BAE\u0BC2\u0B9F\u0BC1",keyboard_search:"\u0BA4\u0BC7\u0B9F\u0BC1",error_search:"\u0BA4\u0BC7\u0B9F\u0BB2\u0BCD \u0BA4\u0BCB\u0BB2\u0BCD\u0BB5\u0BBF",filter_selected_one:"[COUNT] \u0BA4\u0BC7\u0BB0\u0BCD\u0BA8\u0BCD\u0BA4\u0BC6\u0B9F\u0BC1\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1",filter_selected_many:"[COUNT] \u0BA4\u0BC7\u0BB0\u0BCD\u0BA8\u0BCD\u0BA4\u0BC6\u0B9F\u0BC1\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA9",input_hint:"\u0BA8\u0BC0\u0B99\u0BCD\u0B95\u0BB3\u0BCD \u0BA4\u0B9F\u0BCD\u0B9F\u0B9A\u0BCD\u0B9A\u0BC1 \u0B9A\u0BC6\u0BAF\u0BCD\u0BAF\u0BC1\u0BAE\u0BCD\u0BAA\u0BCB\u0BA4\u0BC1 \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1\u0B95\u0BB3\u0BCD \u0BA4\u0BCB\u0BA9\u0BCD\u0BB1\u0BC1\u0BAE\u0BCD",loading:"\u0B8F\u0BB1\u0BCD\u0BB1\u0BC1\u0B95\u0BBF\u0BB1\u0BA4\u0BC1"},wn={thanks_to:vn,comments:Hn,direction:Mn,strings:Yn};var bl={};x(bl,{comments:()=>Jn,default:()=>Kn,direction:()=>On,strings:()=>jn,thanks_to:()=>zn});var zn="Patiphon Loetsuthakun ",Jn="",On="ltr",jn={placeholder:"\u0E04\u0E49\u0E19\u0E2B\u0E32",clear_search:"\u0E25\u0E49\u0E32\u0E07",load_more:"\u0E42\u0E2B\u0E25\u0E14\u0E1C\u0E25\u0E25\u0E31\u0E1E\u0E18\u0E4C\u0E40\u0E1E\u0E34\u0E48\u0E21\u0E40\u0E15\u0E34\u0E21",search_label:"\u0E04\u0E49\u0E19\u0E2B\u0E32\u0E1A\u0E19\u0E40\u0E27\u0E47\u0E1A\u0E44\u0E0B\u0E15\u0E4C",filters_label:"\u0E15\u0E31\u0E27\u0E01\u0E23\u0E2D\u0E07",zero_results:"\u0E44\u0E21\u0E48\u0E1E\u0E1A\u0E1C\u0E25\u0E25\u0E31\u0E1E\u0E18\u0E4C\u0E2A\u0E33\u0E2B\u0E23\u0E31\u0E1A [SEARCH_TERM]",many_results:"\u0E1E\u0E1A [COUNT] \u0E1C\u0E25\u0E01\u0E32\u0E23\u0E04\u0E49\u0E19\u0E2B\u0E32\u0E2A\u0E33\u0E2B\u0E23\u0E31\u0E1A [SEARCH_TERM]",one_result:"\u0E1E\u0E1A [COUNT] \u0E1C\u0E25\u0E01\u0E32\u0E23\u0E04\u0E49\u0E19\u0E2B\u0E32\u0E2A\u0E33\u0E2B\u0E23\u0E31\u0E1A [SEARCH_TERM]",total_zero_results:"\u0E44\u0E21\u0E48\u0E1E\u0E1A\u0E1C\u0E25\u0E25\u0E31\u0E1E\u0E18\u0E4C",total_one_result:"[COUNT] \u0E1C\u0E25\u0E25\u0E31\u0E1E\u0E18\u0E4C",total_many_results:"[COUNT] \u0E1C\u0E25\u0E25\u0E31\u0E1E\u0E18\u0E4C",alt_search:"\u0E44\u0E21\u0E48\u0E1E\u0E1A\u0E1C\u0E25\u0E25\u0E31\u0E1E\u0E18\u0E4C\u0E2A\u0E33\u0E2B\u0E23\u0E31\u0E1A [SEARCH_TERM] \u0E41\u0E2A\u0E14\u0E07\u0E1C\u0E25\u0E25\u0E31\u0E1E\u0E18\u0E4C\u0E08\u0E32\u0E01\u0E01\u0E32\u0E23\u0E04\u0E49\u0E19\u0E2B\u0E32 [DIFFERENT_TERM] \u0E41\u0E17\u0E19",search_suggestion:"\u0E44\u0E21\u0E48\u0E1E\u0E1A\u0E1C\u0E25\u0E25\u0E31\u0E1E\u0E18\u0E4C\u0E2A\u0E33\u0E2B\u0E23\u0E31\u0E1A [SEARCH_TERM] \u0E25\u0E2D\u0E07\u0E04\u0E33\u0E04\u0E49\u0E19\u0E2B\u0E32\u0E40\u0E2B\u0E25\u0E48\u0E32\u0E19\u0E35\u0E49\u0E41\u0E17\u0E19:",searching:"\u0E01\u0E33\u0E25\u0E31\u0E07\u0E04\u0E49\u0E19\u0E2B\u0E32 [SEARCH_TERM]...",results_label:"\u0E1C\u0E25\u0E01\u0E32\u0E23\u0E04\u0E49\u0E19\u0E2B\u0E32",keyboard_navigate:"\u0E19\u0E33\u0E17\u0E32\u0E07",keyboard_select:"\u0E40\u0E25\u0E37\u0E2D\u0E01",keyboard_clear:"\u0E25\u0E49\u0E32\u0E07",keyboard_close:"\u0E1B\u0E34\u0E14",keyboard_search:"\u0E04\u0E49\u0E19\u0E2B\u0E32",error_search:"\u0E01\u0E32\u0E23\u0E04\u0E49\u0E19\u0E2B\u0E32\u0E25\u0E49\u0E21\u0E40\u0E2B\u0E25\u0E27",filter_selected_one:"\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E41\u0E25\u0E49\u0E27 [COUNT] \u0E23\u0E32\u0E22\u0E01\u0E32\u0E23",filter_selected_many:"\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E41\u0E25\u0E49\u0E27 [COUNT] \u0E23\u0E32\u0E22\u0E01\u0E32\u0E23",input_hint:"\u0E1C\u0E25\u0E25\u0E31\u0E1E\u0E18\u0E4C\u0E08\u0E30\u0E1B\u0E23\u0E32\u0E01\u0E0F\u0E02\u0E13\u0E30\u0E17\u0E35\u0E48\u0E04\u0E38\u0E13\u0E1E\u0E34\u0E21\u0E1E\u0E4C",loading:"\u0E01\u0E33\u0E25\u0E31\u0E07\u0E42\u0E2B\u0E25\u0E14"},Kn={thanks_to:zn,comments:Jn,direction:On,strings:jn};var fl={};x(fl,{comments:()=>qn,default:()=>tg,direction:()=>$n,strings:()=>eg,thanks_to:()=>Pn});var Pn="Taylan \xD6zg\xFCr Bildik",qn="",$n="ltr",eg={placeholder:"Ara\u015Ft\u0131r",clear_search:"Temizle",load_more:"Daha fazla sonu\xE7",search_label:"Site genelinde arama",filters_label:"Filtreler",zero_results:"[SEARCH_TERM] i\xE7in sonu\xE7 yok",many_results:"[SEARCH_TERM] i\xE7in [COUNT] sonu\xE7 bulundu",one_result:"[SEARCH_TERM] i\xE7in [COUNT] sonu\xE7 bulundu",total_zero_results:"Sonu\xE7 yok",total_one_result:"[COUNT] sonu\xE7",total_many_results:"[COUNT] sonu\xE7",alt_search:"[SEARCH_TERM] i\xE7in sonu\xE7 yok. Bunun yerine [DIFFERENT_TERM] i\xE7in sonu\xE7lar g\xF6steriliyor",search_suggestion:"[SEARCH_TERM] i\xE7in sonu\xE7 yok. Alternatif olarak a\u015Fa\u011F\u0131daki kelimelerden birini deneyebilirsiniz:",searching:"[SEARCH_TERM] ara\u015Ft\u0131r\u0131l\u0131yor...",results_label:"Arama sonu\xE7lar\u0131",keyboard_navigate:"gezin",keyboard_select:"se\xE7",keyboard_clear:"temizle",keyboard_close:"kapat",keyboard_search:"ara",error_search:"Arama ba\u015Far\u0131s\u0131z",filter_selected_one:"[COUNT] se\xE7ili",filter_selected_many:"[COUNT] se\xE7ili",input_hint:"Sonu\xE7lar siz yazarken g\xF6r\xFCnecektir",loading:"Y\xFCkleniyor"},tg={thanks_to:Pn,comments:qn,direction:$n,strings:eg};var Fl={};x(Fl,{comments:()=>sg,default:()=>ig,direction:()=>ag,strings:()=>rg,thanks_to:()=>lg});var lg="Vladyslav Lyshenko ",sg="",ag="ltr",rg={placeholder:"\u041F\u043E\u0448\u0443\u043A",clear_search:"\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u0438 \u043F\u043E\u043B\u0435",load_more:"\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0438\u0442\u0438 \u0449\u0435",search_label:"\u041F\u043E\u0448\u0443\u043A \u043F\u043E \u0441\u0430\u0439\u0442\u0443",filters_label:"\u0424\u0456\u043B\u044C\u0442\u0440\u0438",zero_results:"\u041D\u0456\u0447\u043E\u0433\u043E \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u043E \u0437\u0430 \u0437\u0430\u043F\u0438\u0442\u043E\u043C: [SEARCH_TERM]",many_results:"[COUNT] \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0456\u0432 \u043D\u0430 \u0437\u0430\u043F\u0438\u0442: [SEARCH_TERM]",one_result:"[COUNT] \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442 \u0437\u0430 \u0437\u0430\u043F\u0438\u0442\u043E\u043C: [SEARCH_TERM]",total_zero_results:"\u041D\u0456\u0447\u043E\u0433\u043E \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u043E",total_one_result:"[COUNT] \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442",total_many_results:"[COUNT] \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0456\u0432",alt_search:"\u041D\u0456\u0447\u043E\u0433\u043E \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u043E \u043D\u0430 \u0437\u0430\u043F\u0438\u0442: [SEARCH_TERM]. \u041F\u043E\u043A\u0430\u0437\u0430\u043D\u043E \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0438 \u043D\u0430 \u0437\u0430\u043F\u0438\u0442: [DIFFERENT_TERM]",search_suggestion:"\u041D\u0456\u0447\u043E\u0433\u043E \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u043E \u043D\u0430 \u0437\u0430\u043F\u0438\u0442: [SEARCH_TERM]. \u0421\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u043E\u0434\u0438\u043D \u0456\u0437 \u0442\u0430\u043A\u0438\u0445 \u0432\u0430\u0440\u0456\u0430\u043D\u0442\u0456\u0432",searching:"\u041F\u043E\u0448\u0443\u043A \u0437\u0430 \u0437\u0430\u043F\u0438\u0442\u043E\u043C: [SEARCH_TERM]",results_label:"\u0420\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0438 \u043F\u043E\u0448\u0443\u043A\u0443",keyboard_navigate:"\u043D\u0430\u0432\u0456\u0433\u0430\u0446\u0456\u044F",keyboard_select:"\u0432\u0438\u0431\u0440\u0430\u0442\u0438",keyboard_clear:"\u043E\u0447\u0438\u0441\u0442\u0438\u0442\u0438",keyboard_close:"\u0437\u0430\u043A\u0440\u0438\u0442\u0438",keyboard_search:"\u043F\u043E\u0448\u0443\u043A",error_search:"\u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u043E\u0448\u0443\u043A\u0443",filter_selected_one:"[COUNT] \u0432\u0438\u0431\u0440\u0430\u043D\u043E",filter_selected_many:"[COUNT] \u0432\u0438\u0431\u0440\u0430\u043D\u043E",input_hint:"\u0420\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0438 \u0437'\u044F\u0432\u043B\u044F\u0442\u0438\u043C\u0443\u0442\u044C\u0441\u044F \u043F\u0456\u0434 \u0447\u0430\u0441 \u0432\u0432\u0435\u0434\u0435\u043D\u043D\u044F",loading:"\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F"},ig={thanks_to:lg,comments:sg,direction:ag,strings:rg};var pl={};x(pl,{comments:()=>gg,default:()=>ug,direction:()=>og,strings:()=>cg,thanks_to:()=>ng});var ng="Long Nhat Nguyen",gg="",og="ltr",cg={placeholder:"T\xECm ki\u1EBFm",clear_search:"X\xF3a",load_more:"Nhi\u1EC1u k\u1EBFt qu\u1EA3 h\u01A1n",search_label:"T\xECm ki\u1EBFm trong trang n\xE0y",filters_label:"B\u1ED9 l\u1ECDc",zero_results:"Kh\xF4ng t\xECm th\u1EA5y k\u1EBFt qu\u1EA3 cho [SEARCH_TERM]",many_results:"[COUNT] k\u1EBFt qu\u1EA3 cho [SEARCH_TERM]",one_result:"[COUNT] k\u1EBFt qu\u1EA3 cho [SEARCH_TERM]",total_zero_results:"Kh\xF4ng c\xF3 k\u1EBFt qu\u1EA3",total_one_result:"[COUNT] k\u1EBFt qu\u1EA3",total_many_results:"[COUNT] k\u1EBFt qu\u1EA3",alt_search:"Kh\xF4ng t\xECm th\u1EA5y k\u1EBFt qu\u1EA3 cho [SEARCH_TERM]. Ki\u1EC3m th\u1ECB k\u1EBFt qu\u1EA3 thay th\u1EBF v\u1EDBi [DIFFERENT_TERM]",search_suggestion:"Kh\xF4ng t\xECm th\u1EA5y k\u1EBFt qu\u1EA3 cho [SEARCH_TERM]. Th\u1EED m\u1ED9t trong c\xE1c t\xECm ki\u1EBFm:",searching:"\u0110ang t\xECm ki\u1EBFm cho [SEARCH_TERM]...",results_label:"K\u1EBFt qu\u1EA3 t\xECm ki\u1EBFm",keyboard_navigate:"chuy\u1EC3n",keyboard_select:"ch\u1ECDn",keyboard_clear:"x\xF3a",keyboard_close:"\u0111\xF3ng",keyboard_search:"t\xECm ki\u1EBFm",error_search:"T\xECm ki\u1EBFm th\u1EA5t b\u1EA1i",filter_selected_one:"\u0110\xE3 ch\u1ECDn [COUNT]",filter_selected_many:"\u0110\xE3 ch\u1ECDn [COUNT]",input_hint:"K\u1EBFt qu\u1EA3 s\u1EBD xu\u1EA5t hi\u1EC7n khi b\u1EA1n nh\u1EADp",loading:"\u0110ang t\u1EA3i"},ug={thanks_to:ng,comments:gg,direction:og,strings:cg};var Bl={};x(Bl,{comments:()=>Ig,default:()=>_g,direction:()=>dg,strings:()=>Ag,thanks_to:()=>Cg});var Cg="Amber Song",Ig="",dg="ltr",Ag={placeholder:"\u641C\u7D22",clear_search:"\u6E05\u9664",load_more:"\u52A0\u8F7D\u66F4\u591A\u7ED3\u679C",search_label:"\u7AD9\u5185\u641C\u7D22",filters_label:"\u7B5B\u9009",zero_results:"\u672A\u627E\u5230 [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C",many_results:"\u627E\u5230 [COUNT] \u4E2A [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C",one_result:"\u627E\u5230 [COUNT] \u4E2A [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C",total_zero_results:"\u65E0\u7ED3\u679C",total_one_result:"[COUNT] \u4E2A\u7ED3\u679C",total_many_results:"[COUNT] \u4E2A\u7ED3\u679C",alt_search:"\u672A\u627E\u5230 [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C\u3002\u6539\u4E3A\u663E\u793A [DIFFERENT_TERM] \u7684\u76F8\u5173\u7ED3\u679C",search_suggestion:"\u672A\u627E\u5230 [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C\u3002\u8BF7\u5C1D\u8BD5\u4EE5\u4E0B\u641C\u7D22\u3002",searching:"\u6B63\u5728\u641C\u7D22 [SEARCH_TERM]...",results_label:"\u641C\u7D22\u7ED3\u679C",keyboard_navigate:"\u5BFC\u822A",keyboard_select:"\u9009\u62E9",keyboard_clear:"\u6E05\u9664",keyboard_close:"\u5173\u95ED",keyboard_search:"\u641C\u7D22",error_search:"\u641C\u7D22\u5931\u8D25",filter_selected_one:"\u5DF2\u9009\u62E9 [COUNT] \u4E2A",filter_selected_many:"\u5DF2\u9009\u62E9 [COUNT] \u4E2A",input_hint:"\u8F93\u5165\u65F6\u5C06\u663E\u793A\u7ED3\u679C",loading:"\u52A0\u8F7D\u4E2D"},_g={thanks_to:Cg,comments:Ig,direction:dg,strings:Ag};var hl={};x(hl,{comments:()=>mg,default:()=>Fg,direction:()=>bg,strings:()=>fg,thanks_to:()=>Qg});var Qg="Amber Song",mg="",bg="ltr",fg={placeholder:"\u641C\u5C0B",clear_search:"\u6E05\u9664",load_more:"\u8F09\u5165\u66F4\u591A\u7D50\u679C",search_label:"\u7AD9\u5167\u641C\u5C0B",filters_label:"\u7BE9\u9078",zero_results:"\u627E\u4E0D\u5230 [SEARCH_TERM] \u7684\u76F8\u95DC\u7D50\u679C",many_results:"\u627E\u5230 [COUNT] \u500B [SEARCH_TERM] \u7684\u76F8\u95DC\u7D50\u679C",one_result:"\u627E\u5230 [COUNT] \u500B [SEARCH_TERM] \u7684\u76F8\u95DC\u7D50\u679C",total_zero_results:"\u7121\u7D50\u679C",total_one_result:"[COUNT] \u500B\u7D50\u679C",total_many_results:"[COUNT] \u500B\u7D50\u679C",alt_search:"\u672A\u627E\u5230 [SEARCH_TERM] \u7684\u76F8\u95DC\u7D50\u679C\u3002\u6539\u70BA\u986F\u793A [DIFFERENT_TERM] \u7684\u76F8\u95DC\u7D50\u679C",search_suggestion:"\u627E\u4E0D\u5230 [SEARCH_TERM] \u7684\u76F8\u95DC\u7D50\u679C\u3002\u8ACB\u5617\u8A66\u4EE5\u4E0B\u7684\u5EFA\u8B70\u4E4B\u4E00\u3002",searching:"\u6B63\u5728\u641C\u5C0B[SEARCH_TERM]...",results_label:"\u641C\u5C0B\u7D50\u679C",keyboard_navigate:"\u5C0E\u89BD",keyboard_select:"\u9078\u64C7",keyboard_clear:"\u6E05\u9664",keyboard_close:"\u95DC\u9589",keyboard_search:"\u641C\u5C0B",error_search:"\u641C\u5C0B\u5931\u6557",filter_selected_one:"\u5DF2\u9078\u64C7 [COUNT] \u500B",filter_selected_many:"\u5DF2\u9078\u64C7 [COUNT] \u500B",input_hint:"\u8F38\u5165\u6642\u5C07\u986F\u793A\u7D50\u679C",loading:"\u8F09\u5165\u4E2D"},Fg={thanks_to:Qg,comments:mg,direction:bg,strings:fg};var Ul={};x(Ul,{comments:()=>Bg,default:()=>xg,direction:()=>hg,strings:()=>Ug,thanks_to:()=>pg});var pg="Amber Song",Bg="",hg="ltr",Ug={placeholder:"\u641C\u7D22",clear_search:"\u6E05\u9664",load_more:"\u52A0\u8F7D\u66F4\u591A\u7ED3\u679C",search_label:"\u7AD9\u5185\u641C\u7D22",filters_label:"\u7B5B\u9009",zero_results:"\u672A\u627E\u5230 [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C",many_results:"\u627E\u5230 [COUNT] \u4E2A [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C",one_result:"\u627E\u5230 [COUNT] \u4E2A [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C",total_zero_results:"\u65E0\u7ED3\u679C",total_one_result:"[COUNT] \u4E2A\u7ED3\u679C",total_many_results:"[COUNT] \u4E2A\u7ED3\u679C",alt_search:"\u672A\u627E\u5230 [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C\u3002\u6539\u4E3A\u663E\u793A [DIFFERENT_TERM] \u7684\u76F8\u5173\u7ED3\u679C",search_suggestion:"\u672A\u627E\u5230 [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C\u3002\u8BF7\u5C1D\u8BD5\u4EE5\u4E0B\u641C\u7D22\u3002",searching:"\u6B63\u5728\u641C\u7D22 [SEARCH_TERM]...",results_label:"\u641C\u7D22\u7ED3\u679C",keyboard_navigate:"\u5BFC\u822A",keyboard_select:"\u9009\u62E9",keyboard_clear:"\u6E05\u9664",keyboard_close:"\u5173\u95ED",keyboard_search:"\u641C\u7D22",error_search:"\u641C\u7D22\u5931\u8D25",filter_selected_one:"\u5DF2\u9009\u62E9 [COUNT] \u4E2A",filter_selected_many:"\u5DF2\u9009\u62E9 [COUNT] \u4E2A",input_hint:"\u8F93\u5165\u65F6\u5C06\u663E\u793A\u7ED3\u679C",loading:"\u52A0\u8F7D\u4E2D"},xg={thanks_to:pg,comments:Bg,direction:hg,strings:Ug};var yg=[Wt,St,Vt,Dt,Tt,vt,Ht,Mt,Yt,wt,zt,Jt,Ot,jt,Kt,Pt,qt,$t,el,tl,ll,sl,al,rl,il,nl,gl,ol,cl,ul,Cl,Il,dl,Al,_l,Ql,ml,bl,fl,Fl,pl,Bl,hl,Ul],Us=yg,xs=["../../translations/af.json","../../translations/ar.json","../../translations/bn.json","../../translations/ca.json","../../translations/cs.json","../../translations/da.json","../../translations/de.json","../../translations/el.json","../../translations/en.json","../../translations/es.json","../../translations/eu.json","../../translations/fa.json","../../translations/fi.json","../../translations/fr.json","../../translations/gl.json","../../translations/he.json","../../translations/hi.json","../../translations/hr.json","../../translations/hu.json","../../translations/id.json","../../translations/it.json","../../translations/ja.json","../../translations/ko.json","../../translations/mi.json","../../translations/my.json","../../translations/nb.json","../../translations/nl.json","../../translations/nn.json","../../translations/no.json","../../translations/pl.json","../../translations/pt.json","../../translations/ro.json","../../translations/ru.json","../../translations/sr.json","../../translations/sv.json","../../translations/sw.json","../../translations/ta.json","../../translations/th.json","../../translations/tr.json","../../translations/uk.json","../../translations/vi.json","../../translations/zh-cn.json","../../translations/zh-tw.json","../../translations/zh.json"];function ys(l,e,t){let s=l.slice();return s[53]=e[t],s}function Zs(l){let e,t,s;function a(i){l[38](i)}let r={show_empty_filters:l[5],open_filters:l[6],available_filters:l[18],translate:l[20],automatic_translations:l[19],translations:l[7]};return l[0]!==void 0&&(r.selected_filters=l[0]),e=new hs({props:r}),Ce.push(()=>Ol(e,"selected_filters",a)),{c(){_t(e.$$.fragment)},m(i,n){_e(e,i,n),s=!0},p(i,n){let g={};n[0]&32&&(g.show_empty_filters=i[5]),n[0]&64&&(g.open_filters=i[6]),n[0]&262144&&(g.available_filters=i[18]),n[0]&524288&&(g.automatic_translations=i[19]),n[0]&128&&(g.translations=i[7]),!t&&n[0]&1&&(t=!0,g.selected_filters=i[0],Yl(()=>t=!1)),e.$set(g)},i(i){s||(k(e.$$.fragment,i),s=!0)},o(i){D(e.$$.fragment,i),s=!1},d(i){Qe(e,i)}}}function Gs(l){let e,t,s,a,r=[Ng,Gg],i=[];function n(g,C){return g[14]?0:1}return t=n(l,[-1,-1]),s=i[t]=r[t](l),{c(){e=F("div"),s.c(),_(e,"class","pagefind-ui__results-area svelte-e9gkc3")},m(g,C){h(g,e,C),i[t].m(e,null),a=!0},p(g,C){let u=t;t=n(g,C),t===u?i[t].p(g,C):(re(),D(i[u],1,1,()=>{i[u]=null}),ie(),s=i[t],s?s.p(g,C):(s=i[t]=r[t](g),s.c()),k(s,1),s.m(e,null))},i(g){a||(k(s),a=!0)},o(g){D(s),a=!1},d(g){g&&B(e),i[t].d()}}}function Gg(l){let e,t,s,a=[],r=new Map,i,n,g;function C(I,m){return I[13].results.length===0?kg:I[13].results.length===1?Eg:Xg}let u=C(l,[-1,-1]),A=u(l),c=V(l[13].results.slice(0,l[17])),d=I=>I[53].id;for(let I=0;Il[17]&&Xs(l);return{c(){e=F("p"),A.c(),t=Z(),s=F("ol");for(let I=0;II[17]?o?o.p(I,m):(o=Xs(I),o.c(),o.m(n.parentNode,n)):o&&(o.d(1),o=null)},i(I){if(!g){for(let m=0;m{g[c]=null}),ie(),a=g[s],a?a.p(e,A):(a=g[s]=n[s](e),a.c()),k(a,1),a.m(r.parentNode,r))},i(u){i||(k(a),i=!0)},o(u){D(a),i=!1},d(u){u&&(B(t),B(r)),g[s].d(u)}}}function Xs(l){let e,t=l[20]("load_more",l[19],l[7])+"",s,a,r;return{c(){e=F("button"),s=G(t),_(e,"type","button"),_(e,"class","pagefind-ui__button svelte-e9gkc3")},m(i,n){h(i,e,n),b(e,s),a||(r=w(e,"click",l[22]),a=!0)},p(i,n){n[0]&524416&&t!==(t=i[20]("load_more",i[19],i[7])+"")&&W(s,t)},d(i){i&&B(e),a=!1,r()}}}function Es(l){let e,t=l[20]("searching",l[19],l[7]).replace(/\[SEARCH_TERM\]/,l[16])+"",s;return{c(){e=F("p"),s=G(t),_(e,"class","pagefind-ui__message svelte-e9gkc3")},m(a,r){h(a,e,r),b(e,s)},p(a,r){r[0]&589952&&t!==(t=a[20]("searching",a[19],a[7]).replace(/\[SEARCH_TERM\]/,a[16])+"")&&W(s,t)},d(a){a&&B(e)}}}function Wg(l){let e,t,s,a,r,i,n,g=l[20]("clear_search",l[19],l[7])+"",C,u,A,c,d,o,I,m,f=l[12]&&Zs(l),p=l[15]&&Gs(l);return{c(){e=F("div"),t=F("form"),s=F("input"),i=Z(),n=F("button"),C=G(g),u=Z(),A=F("div"),f&&f.c(),c=Z(),p&&p.c(),_(s,"class","pagefind-ui__search-input svelte-e9gkc3"),_(s,"type","text"),_(s,"placeholder",a=l[20]("placeholder",l[19],l[7])),_(s,"title",r=l[20]("placeholder",l[19],l[7])),_(s,"autocapitalize","none"),_(s,"enterkeyhint","search"),s.autofocus=l[8],_(n,"class","pagefind-ui__search-clear svelte-e9gkc3"),z(n,"pagefind-ui__suppressed",!l[9]),_(A,"class","pagefind-ui__drawer svelte-e9gkc3"),z(A,"pagefind-ui__hidden",!l[15]),_(t,"class","pagefind-ui__form svelte-e9gkc3"),_(t,"role","search"),_(t,"aria-label",d=l[20]("search_label",l[19],l[7])),_(t,"action","javascript:void(0);"),_(e,"class","pagefind-ui svelte-e9gkc3"),z(e,"pagefind-ui--reset",l[1])},m(U,y){h(U,e,y),b(e,t),b(t,s),oe(s,l[9]),l[35](s),b(t,i),b(t,n),b(n,C),l[36](n),b(t,u),b(t,A),f&&f.m(A,null),b(A,c),p&&p.m(A,null),o=!0,l[8]&&s.focus(),I||(m=[w(s,"focus",l[21]),w(s,"keydown",l[33]),w(s,"input",l[34]),w(n,"click",l[37]),w(t,"submit",Sg)],I=!0)},p(U,y){(!o||y[0]&524416&&a!==(a=U[20]("placeholder",U[19],U[7])))&&_(s,"placeholder",a),(!o||y[0]&524416&&r!==(r=U[20]("placeholder",U[19],U[7])))&&_(s,"title",r),(!o||y[0]&256)&&(s.autofocus=U[8]),y[0]&512&&s.value!==U[9]&&oe(s,U[9]),(!o||y[0]&524416)&&g!==(g=U[20]("clear_search",U[19],U[7])+"")&&W(C,g),(!o||y[0]&512)&&z(n,"pagefind-ui__suppressed",!U[9]),U[12]?f?(f.p(U,y),y[0]&4096&&k(f,1)):(f=Zs(U),f.c(),k(f,1),f.m(A,c)):f&&(re(),D(f,1,1,()=>{f=null}),ie()),U[15]?p?(p.p(U,y),y[0]&32768&&k(p,1)):(p=Gs(U),p.c(),k(p,1),p.m(A,null)):p&&(re(),D(p,1,1,()=>{p=null}),ie()),(!o||y[0]&32768)&&z(A,"pagefind-ui__hidden",!U[15]),(!o||y[0]&524416&&d!==(d=U[20]("search_label",U[19],U[7])))&&_(t,"aria-label",d),(!o||y[0]&2)&&z(e,"pagefind-ui--reset",U[1])},i(U){o||(k(f),k(p),o=!0)},o(U){D(f),D(p),o=!1},d(U){U&&B(e),l[35](null),l[36](null),f&&f.d(),p&&p.d(),I=!1,H(m)}}}var Sg=l=>l.preventDefault();function Vg(l,e,t){let s={},a=xs.map(Q=>Q.match(/([^\/]+)\.json$/)[1]);for(let Q=0;QL[Q]??X[Q]??"",kl=Q=>{if(!q)return;let X=document.activeElement,L=X&&(X.tagName==="INPUT"||X.tagName==="TEXTAREA"||X.isContentEditable);Q.key==="/"&&!L&&(Q.preventDefault(),v?.focus())};xt(()=>{let Q=document?.querySelector?.("html")?.getAttribute?.("lang")||"en",X=Qt(Q.toLocaleLowerCase());t(19,El=s[`${X.language}-${X.script}-${X.region}`]||s[`${X.language}-${X.region}`]||s[`${X.language}`]||s.en),q&&document.addEventListener("keydown",kl)}),yt(()=>{E?.destroy?.(),E=null,q&&document.removeEventListener("keydown",kl)});let Ll=async()=>{if(!bt&&(t(12,bt=!0),!E)){let Q;try{Q=await import(`${r}pagefind.js`)}catch(L){console.error(L),console.error([`Pagefind couldn't be loaded from ${this.options.bundlePath}pagefind.js`,"You can configure this by passing a bundlePath option to PagefindUI"].join(` +`)),document?.currentScript&&document.currentScript.tagName.toUpperCase()==="SCRIPT"?console.error(`[DEBUG: Loaded from ${document.currentScript.src??"bad script location"}]`):console.error("no known script location")}u||t(24,u=C?12:30);let X={...m||{},excerptLength:u};await Q.options(X);for(let L of f){if(!L.bundlePath)throw new Error("mergeIndex requires a bundlePath parameter");let Y=L.bundlePath;delete L.bundlePath,await Q.mergeIndex(Y,L)}E=Q,Ws()}},Ws=async()=>{E&&(Xl=await E.filters(),(!Ie||!Object.keys(Ie).length)&&t(18,Ie=Xl))},Ss=Q=>{let X={};return Object.entries(Q).filter(([,L])=>L).forEach(([L])=>{let[Y,ne]=L.split(/:(.*)$/);X[Y]=X[Y]||[],X[Y].push(ne)}),X},de,Vs=async(Q,X)=>{if(!Q){t(15,Ft=!1),de&&clearTimeout(de);return}let L=Ss(X),Y=()=>Ds(Q,L);I>0&&Q?(de&&clearTimeout(de),de=setTimeout(Y,I),await Rl(),E.preload(Q,{filters:L})):Y(),Ts()},Rl=async()=>{for(;!E;)Ll(),await new Promise(Q=>setTimeout(Q,50))},Ds=async(Q,X)=>{t(16,Nl=Q||""),typeof c=="function"&&(Q=c(Q)),t(14,ft=!0),t(15,Ft=!0),await Rl();let L=++Gl,Y={filters:X};J&&typeof J=="object"&&(Y.sort=J);let ne=await E.search(Q,Y);Gl===L&&(ne.filters&&Object.keys(ne.filters)?.length&&t(18,Ie=ne.filters),t(13,Zl=ne),t(14,ft=!1),t(17,pt=i))},Ts=()=>{let Q=gt.offsetWidth;Q!=Ls&&t(10,v.style.paddingRight=`${Q+2}px`,v)},vs=Q=>{Q?.preventDefault(),t(17,pt+=i)},Hs=Q=>{Q.key==="Escape"&&(t(9,S=""),v.blur()),Q.key==="Enter"&&Q.preventDefault()};function Ms(){S=this.value,t(9,S),t(23,p)}function Ys(Q){Ce[Q?"unshift":"push"](()=>{v=Q,t(10,v)})}function ws(Q){Ce[Q?"unshift":"push"](()=>{gt=Q,t(11,gt)})}let zs=()=>{t(9,S=""),v.blur()};function Js(Q){N=Q,t(0,N)}return l.$$set=Q=>{"base_path"in Q&&t(25,r=Q.base_path),"page_size"in Q&&t(26,i=Q.page_size),"reset_styles"in Q&&t(1,n=Q.reset_styles),"show_images"in Q&&t(2,g=Q.show_images),"show_sub_results"in Q&&t(3,C=Q.show_sub_results),"excerpt_length"in Q&&t(24,u=Q.excerpt_length),"process_result"in Q&&t(4,A=Q.process_result),"process_term"in Q&&t(27,c=Q.process_term),"show_empty_filters"in Q&&t(5,d=Q.show_empty_filters),"open_filters"in Q&&t(6,o=Q.open_filters),"debounce_timeout_ms"in Q&&t(28,I=Q.debounce_timeout_ms),"pagefind_options"in Q&&t(29,m=Q.pagefind_options),"merge_index"in Q&&t(30,f=Q.merge_index),"trigger_search_term"in Q&&t(23,p=Q.trigger_search_term),"translations"in Q&&t(7,U=Q.translations),"autofocus"in Q&&t(8,y=Q.autofocus),"focus_on_slash"in Q&&t(31,q=Q.focus_on_slash),"sort"in Q&&t(32,J=Q.sort),"selected_filters"in Q&&t(0,N=Q.selected_filters)},l.$$.update=()=>{l.$$.dirty[0]&8388608&&p&&(t(9,S=p),t(23,p="")),l.$$.dirty[0]&513&&Vs(S,N)},[N,n,g,C,A,d,o,U,y,S,v,gt,bt,Zl,ft,Ft,Nl,pt,Ie,El,Rs,Ll,vs,p,u,r,i,c,I,m,f,q,J,Hs,Ms,Ys,ws,zs,Js]}var xl=class extends M{constructor(e){super(),K(this,e,Vg,Wg,O,{base_path:25,page_size:26,reset_styles:1,show_images:2,show_sub_results:3,excerpt_length:24,process_result:4,process_term:27,show_empty_filters:5,open_filters:6,debounce_timeout_ms:28,pagefind_options:29,merge_index:30,trigger_search_term:23,translations:7,autofocus:8,focus_on_slash:31,sort:32,selected_filters:0},null,[-1,-1])}},ks=xl;var yl;try{document?.currentScript&&document.currentScript.tagName.toUpperCase()==="SCRIPT"&&(yl=new URL(document.currentScript.src).pathname.match(/^(.*\/)(?:pagefind-)?ui.js.*$/)[1])}catch{yl="/pagefind/"}var mt=class{constructor(e){this._pfs=null;let t=e.element??"[data-pagefind-ui]",s=e.bundlePath??yl,a=e.pageSize??5,r=e.resetStyles??!0,i=e.showImages??!0,n=e.showSubResults??!1,g=e.excerptLength??0,C=e.processResult??null,u=e.processTerm??null,A=e.showEmptyFilters??!0,c=e.openFilters??[],d=e.debounceTimeoutMs??300,o=e.mergeIndex??[],I=e.translations??[],m=e.autofocus??!1,f=e.focusOnSlash??!1,p=e.sort??null;delete e.element,delete e.bundlePath,delete e.pageSize,delete e.resetStyles,delete e.showImages,delete e.showSubResults,delete e.excerptLength,delete e.processResult,delete e.processTerm,delete e.showEmptyFilters,delete e.openFilters,delete e.debounceTimeoutMs,delete e.mergeIndex,delete e.translations,delete e.autofocus,delete e.focusOnSlash,delete e.sort;let U=t instanceof HTMLElement?t:document.querySelector(t);U?this._pfs=new ks({target:U,props:{base_path:s,page_size:a,reset_styles:r,show_images:i,show_sub_results:n,excerpt_length:g,process_result:C,process_term:u,show_empty_filters:A,open_filters:c,debounce_timeout_ms:d,merge_index:o,translations:I,autofocus:m,focus_on_slash:f,sort:p,pagefind_options:e}}):console.error(`Pagefind UI couldn't find the selector ${t}`)}triggerSearch(e){this._pfs.$$set({trigger_search_term:e})}triggerFilters(e){let t={};for(let[s,a]of Object.entries(e))if(Array.isArray(a))for(let r of a)t[`${s}:${r}`]=!0;else t[`${s}:${a}`]=!0;this._pfs.$$set({selected_filters:t})}destroy(){this._pfs.$destroy()}};window.PagefindUI=mt;})(); diff --git a/webstatic.example/dist/pagefind/pagefind-worker.js b/webstatic.example/dist/pagefind/pagefind-worker.js new file mode 100644 index 0000000..68abc17 --- /dev/null +++ b/webstatic.example/dist/pagefind/pagefind-worker.js @@ -0,0 +1,6 @@ +const pagefind_version="1.5.2";let wasm_bindgen=(function(exports){let script_src;if(typeof document!=='undefined'&&document.currentScript!==null){script_src=new URL("UNHANDLED",location.href).toString();}function add_synthetic_filter(ptr,filter){const ptr0=passStringToWasm0(filter,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc);const len0=WASM_VECTOR_LEN;const ret=wasm.add_synthetic_filter(ptr,ptr0,len0);return ret>>>0;}exports.add_synthetic_filter=add_synthetic_filter;function enter_playground_mode(ptr){const ret=wasm.enter_playground_mode(ptr);return ret>>>0;}exports.enter_playground_mode=enter_playground_mode;function filters(ptr){let deferred1_0;let deferred1_1;try{const ret=wasm.filters(ptr);deferred1_0=ret[0];deferred1_1=ret[1];return getStringFromWasm0(ret[0],ret[1]);}finally{wasm.__wbindgen_free(deferred1_0,deferred1_1,1);}}exports.filters=filters;function init_pagefind(metadata_bytes){const ptr0=passArray8ToWasm0(metadata_bytes,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;const ret=wasm.init_pagefind(ptr0,len0);return ret>>>0;}exports.init_pagefind=init_pagefind;function load_filter_chunk(ptr,chunk_bytes){const ptr0=passArray8ToWasm0(chunk_bytes,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;const ret=wasm.load_filter_chunk(ptr,ptr0,len0);return ret>>>0;}exports.load_filter_chunk=load_filter_chunk;function load_index_chunk(ptr,chunk_bytes){const ptr0=passArray8ToWasm0(chunk_bytes,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;const ret=wasm.load_index_chunk(ptr,ptr0,len0);return ret>>>0;}exports.load_index_chunk=load_index_chunk;function request_all_filter_indexes(ptr){let deferred1_0;let deferred1_1;try{const ret=wasm.request_all_filter_indexes(ptr);deferred1_0=ret[0];deferred1_1=ret[1];return getStringFromWasm0(ret[0],ret[1]);}finally{wasm.__wbindgen_free(deferred1_0,deferred1_1,1);}}exports.request_all_filter_indexes=request_all_filter_indexes;function request_filter_indexes(ptr,filters){let deferred2_0;let deferred2_1;try{const ptr0=passStringToWasm0(filters,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc);const len0=WASM_VECTOR_LEN;const ret=wasm.request_filter_indexes(ptr,ptr0,len0);deferred2_0=ret[0];deferred2_1=ret[1];return getStringFromWasm0(ret[0],ret[1]);}finally{wasm.__wbindgen_free(deferred2_0,deferred2_1,1);}}exports.request_filter_indexes=request_filter_indexes;function request_indexes(ptr,query){let deferred2_0;let deferred2_1;try{const ptr0=passStringToWasm0(query,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc);const len0=WASM_VECTOR_LEN;const ret=wasm.request_indexes(ptr,ptr0,len0);deferred2_0=ret[0];deferred2_1=ret[1];return getStringFromWasm0(ret[0],ret[1]);}finally{wasm.__wbindgen_free(deferred2_0,deferred2_1,1);}}exports.request_indexes=request_indexes;function search(ptr,query,original_query,filter,sort,exact,exact_diacritics){let deferred5_0;let deferred5_1;try{const ptr0=passStringToWasm0(query,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc);const len0=WASM_VECTOR_LEN;const ptr1=passStringToWasm0(original_query,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc);const len1=WASM_VECTOR_LEN;const ptr2=passStringToWasm0(filter,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc);const len2=WASM_VECTOR_LEN;const ptr3=passStringToWasm0(sort,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc);const len3=WASM_VECTOR_LEN;const ret=wasm.search(ptr,ptr0,len0,ptr1,len1,ptr2,len2,ptr3,len3,exact,exact_diacritics);deferred5_0=ret[0];deferred5_1=ret[1];return getStringFromWasm0(ret[0],ret[1]);}finally{wasm.__wbindgen_free(deferred5_0,deferred5_1,1);}}exports.search=search;function set_ranking_weights(ptr,weights){const ptr0=passStringToWasm0(weights,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc);const len0=WASM_VECTOR_LEN;const ret=wasm.set_ranking_weights(ptr,ptr0,len0);return ret>>>0;}exports.set_ranking_weights=set_ranking_weights;function __wbg_get_imports(){const import0={__proto__:null,__wbindgen_init_externref_table:function(){const table=wasm.__wbindgen_externrefs;const offset=table.grow(4);table.set(0,undefined);table.set(offset+0,undefined);table.set(offset+1,null);table.set(offset+2,true);table.set(offset+3,false);},};return{__proto__:null,"./pagefind_web_bg.js":import0,};}function getStringFromWasm0(ptr,len){ptr=ptr>>>0;return decodeText(ptr,len);}let cachedUint8ArrayMemory0=null;function getUint8ArrayMemory0(){if(cachedUint8ArrayMemory0===null||cachedUint8ArrayMemory0.byteLength===0){cachedUint8ArrayMemory0=new Uint8Array(wasm.memory.buffer);}return cachedUint8ArrayMemory0;}function passArray8ToWasm0(arg,malloc){const ptr=malloc(arg.length*1,1)>>>0;getUint8ArrayMemory0().set(arg,ptr/1);WASM_VECTOR_LEN=arg.length;return ptr;}function passStringToWasm0(arg,malloc,realloc){if(realloc===undefined){const buf=cachedTextEncoder.encode(arg);const ptr=malloc(buf.length,1)>>>0;getUint8ArrayMemory0().subarray(ptr,ptr+buf.length).set(buf);WASM_VECTOR_LEN=buf.length;return ptr;}let len=arg.length;let ptr=malloc(len,1)>>>0;const mem=getUint8ArrayMemory0();let offset=0;for(;offset0x7F)break;mem[ptr+offset]=code;}if(offset!==len){if(offset!==0){arg=arg.slice(offset);}ptr=realloc(ptr,len,len=offset+arg.length*3,1)>>>0;const view=getUint8ArrayMemory0().subarray(ptr+offset,ptr+len);const ret=cachedTextEncoder.encodeInto(arg,view);offset+=ret.written;ptr=realloc(ptr,len,offset,1)>>>0;}WASM_VECTOR_LEN=offset;return ptr;}let cachedTextDecoder=new TextDecoder('utf-8',{ignoreBOM:true,fatal:true});cachedTextDecoder.decode();function decodeText(ptr,len){return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr,ptr+len));}const cachedTextEncoder=new TextEncoder();if(!('encodeInto'in cachedTextEncoder)){cachedTextEncoder.encodeInto=function(arg,view){const buf=cachedTextEncoder.encode(arg);view.set(buf);return{read:arg.length,written:buf.length};};}let WASM_VECTOR_LEN=0;let wasmModule,wasm;function __wbg_finalize_init(instance,module){wasm=instance.exports;wasmModule=module;cachedUint8ArrayMemory0=null;wasm.__wbindgen_start();return wasm;}async function __wbg_load(module,imports){if(typeof Response==='function'&&module instanceof Response){if(typeof WebAssembly.instantiateStreaming==='function'){try{return await WebAssembly.instantiateStreaming(module,imports);}catch(e){const validResponse=module.ok&&expectedResponseType(module.type);if(validResponse&&module.headers.get('Content-Type')!=='application/wasm'){console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",e);}else{throw e;}}}const bytes=await module.arrayBuffer();return await WebAssembly.instantiate(bytes,imports);}else{const instance=await WebAssembly.instantiate(module,imports);if(instance instanceof WebAssembly.Instance){return{instance,module};}else{return instance;}}function expectedResponseType(type){switch(type){case'basic':case'cors':case'default':return true;}return false;}}function initSync(module){if(wasm!==undefined)return wasm;if(module!==undefined){if(Object.getPrototypeOf(module)===Object.prototype){({module}=module)}else{console.warn('using deprecated parameters for `initSync()`; pass a single object instead')}}const imports=__wbg_get_imports();if(!(module instanceof WebAssembly.Module)){module=new WebAssembly.Module(module);}const instance=new WebAssembly.Instance(module,imports);return __wbg_finalize_init(instance,module);}async function __wbg_init(module_or_path){if(wasm!==undefined)return wasm;if(module_or_path!==undefined){if(Object.getPrototypeOf(module_or_path)===Object.prototype){({module_or_path}=module_or_path)}else{console.warn('using deprecated parameters for the initialization function; pass a single object instead')}}if(module_or_path===undefined&&script_src!==undefined){module_or_path=script_src.replace(/\.js$/,"_bg.wasm");}const imports=__wbg_get_imports();if(typeof module_or_path==='string'||(typeof Request==='function'&&module_or_path instanceof Request)||(typeof URL==='function'&&module_or_path instanceof URL)){module_or_path=fetch(module_or_path);}const{instance,module}=await __wbg_load(await module_or_path,imports);return __wbg_finalize_init(instance,module);}return Object.assign(__wbg_init,{initSync},exports);})({__proto__:null});"use strict";(()=>{var __defProp=Object.defineProperty;var __defNormalProp=(obj,key,value)=>key in obj?__defProp(obj,key,{enumerable:true,configurable:true,writable:true,value}):obj[key]=value;var __publicField=(obj,key,value)=>__defNormalProp(obj,typeof key!=="symbol"?key+"":key,value);var u8=Uint8Array;var u16=Uint16Array;var u32=Uint32Array;var fleb=new u8([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]);var fdeb=new u8([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]);var clim=new u8([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);var freb=function(eb,start){var b=new u16(31);for(var i2=0;i2<31;++i2){b[i2]=start+=1<>>1|(i&21845)<<1;x=(x&52428)>>>2|(x&13107)<<2;x=(x&61680)>>>4|(x&3855)<<4;rev[i]=((x&65280)>>>8|(x&255)<<8)>>>1;}var x;var i;var hMap=function(cd,mb,r){var s=cd.length;var i2=0;var l=new u16(mb);for(;i2>>rvb]=sv;}}}}else{co=new u16(s);for(i2=0;i2>>15-cd[i2];}}}return co;};var flt=new u8(288);for(i=0;i<144;++i)flt[i]=8;var i;for(i=144;i<256;++i)flt[i]=9;var i;for(i=256;i<280;++i)flt[i]=7;var i;for(i=280;i<288;++i)flt[i]=8;var i;var fdt=new u8(32);for(i=0;i<32;++i)fdt[i]=5;var i;var flrm=hMap(flt,9,1);var fdrm=hMap(fdt,5,1);var max=function(a){var m=a[0];for(var i2=1;i2m)m=a[i2];}return m;};var bits=function(d,p,m){var o=p/8|0;return(d[o]|d[o+1]<<8)>>(p&7)&m;};var bits16=function(d,p){var o=p/8|0;return(d[o]|d[o+1]<<8|d[o+2]<<16)>>(p&7);};var shft=function(p){return(p+7)/8|0;};var slc=function(v,s,e){if(s==null||s<0)s=0;if(e==null||e>v.length)e=v.length;var n=new(v.BYTES_PER_ELEMENT==2?u16:v.BYTES_PER_ELEMENT==4?u32:u8)(e-s);n.set(v.subarray(s,e));return n;};var ec=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"];var err=function(ind,msg,nt){var e=new Error(msg||ec[ind]);e.code=ind;if(Error.captureStackTrace)Error.captureStackTrace(e,err);if(!nt)throw e;return e;};var inflt=function(dat,buf,st){var sl=dat.length;if(!sl||st&&st.f&&!st.l)return buf||new u8(0);var noBuf=!buf||st;var noSt=!st||st.i;if(!st)st={};if(!buf)buf=new u8(sl*3);var cbuf=function(l2){var bl=buf.length;if(l2>bl){var nbuf=new u8(Math.max(bl*2,l2));nbuf.set(buf);buf=nbuf;}};var final=st.f||0,pos=st.p||0,bt=st.b||0,lm=st.l,dm=st.d,lbt=st.m,dbt=st.n;var tbts=sl*8;do{if(!lm){final=bits(dat,pos,1);var type=bits(dat,pos+1,3);pos+=3;if(!type){var s=shft(pos)+4,l=dat[s-4]|dat[s-3]<<8,t=s+l;if(t>sl){if(noSt)err(0);break;}if(noBuf)cbuf(bt+l);buf.set(dat.subarray(s,t),bt);st.b=bt+=l,st.p=pos=t*8,st.f=final;continue;}else if(type==1)lm=flrm,dm=fdrm,lbt=9,dbt=5;else if(type==2){var hLit=bits(dat,pos,31)+257,hcLen=bits(dat,pos+10,15)+4;var tl=hLit+bits(dat,pos+5,31)+1;pos+=14;var ldt=new u8(tl);var clt=new u8(19);for(var i2=0;i2>>4;if(s<16){ldt[i2++]=s;}else{var c=0,n=0;if(s==16)n=3+bits(dat,pos,3),pos+=2,c=ldt[i2-1];else if(s==17)n=3+bits(dat,pos,7),pos+=3;else if(s==18)n=11+bits(dat,pos,127),pos+=7;while(n--)ldt[i2++]=c;}}var lt=ldt.subarray(0,hLit),dt=ldt.subarray(hLit);lbt=max(lt);dbt=max(dt);lm=hMap(lt,lbt,1);dm=hMap(dt,dbt,1);}else err(1);if(pos>tbts){if(noSt)err(0);break;}}if(noBuf)cbuf(bt+131072);var lms=(1<>>4;pos+=c&15;if(pos>tbts){if(noSt)err(0);break;}if(!c)err(2);if(sym<256)buf[bt++]=sym;else if(sym==256){lpos=pos,lm=null;break;}else{var add=sym-254;if(sym>264){var i2=sym-257,b=fleb[i2];add=bits(dat,pos,(1<>>4;if(!d)err(3);pos+=d&15;var dt=fd[dsym];if(dsym>3){var b=fdeb[dsym];dt+=bits16(dat,pos)&(1<tbts){if(noSt)err(0);break;}if(noBuf)cbuf(bt+131072);var end=bt+add;for(;bt>3&1)+(flg>>4&1);zs>0;zs-=!d[st++]);return st+(flg&2);};var gzl=function(d){var l=d.length;return(d[l-4]|d[l-3]<<8|d[l-2]<<16|d[l-1]<<24)>>>0;};function gunzipSync(data,out){return inflt(data.subarray(gzs(data),-8),out||new u8(gzl(data)));}var td=typeof TextDecoder!="undefined"&&new TextDecoder();var tds=0;try{td.decode(et,{stream:true});tds=1;}catch(e){}var gz_default=gunzipSync;var calculate_excerpt_region=(word_positions,excerpt_length)=>{if(word_positions.length===0){return 0;}let words=[];for(const word of word_positions){words[word.location]=words[word.location]||0;words[word.location]+=word.balanced_score;}if(words.length<=excerpt_length){return 0;}let densest=words.slice(0,excerpt_length).reduce((partialSum,a)=>partialSum+a,0);let working_sum=densest;let densest_at=[0];for(let i2=0;i2densest){densest=working_sum;densest_at=[i2];}else if(working_sum===densest&&densest_at[densest_at.length-1]===i2-1){densest_at.push(i2);}}let midpoint=densest_at[Math.floor(densest_at.length/2)];return midpoint;};var build_excerpt=(content,start,length,locations,not_before,not_from)=>{let is_zws_delimited=content.includes("\u200B");let fragment_words=[];if(is_zws_delimited){fragment_words=content.split("\u200B");}else{fragment_words=content.split(/[\r\n\s]+/g);}let endcap=not_from??fragment_words.length;let startcap=not_before??0;if(endcap-startcapendcap){start=endcap-length;}if(start`)){continue;}fragment_words[word]=`${fragment_words[word]}`;}const excerpt=fragment_words.slice(start,start+length).join(joiner).trim();return{excerpt,plain_excerpt};};var calculate_sub_results=(fragment,desired_excerpt_length)=>{const effective_url=fragment.meta?.url||fragment.url;const anchors=fragment.anchors.filter((a)=>/h\d/i.test(a.element)&&a.text?.length&&/\S/.test(a.text)).sort((a,b)=>a.location-b.location);const results=[];let current_anchor_position=0;let current_anchor={title:fragment.meta["title"],url:effective_url,weighted_locations:[],locations:[],excerpt:"",plain_excerpt:""};const add_result=(end_range)=>{if(current_anchor.locations.length){const relative_weighted_locations=current_anchor.weighted_locations.map((l)=>{return{weight:l.weight,balanced_score:l.balanced_score,location:l.location-current_anchor_position};});const excerpt_start=calculate_excerpt_region(relative_weighted_locations,desired_excerpt_length)+current_anchor_position;const excerpt_length=end_range?Math.min(end_range-excerpt_start,desired_excerpt_length):desired_excerpt_length;const excerpts=build_excerpt(fragment.raw_content??"",excerpt_start,excerpt_length,current_anchor.locations,current_anchor_position,end_range);current_anchor.excerpt=excerpts.excerpt;current_anchor.plain_excerpt=excerpts.plain_excerpt;results.push(current_anchor);}};for(let word of fragment.weighted_locations){if(!anchors.length||word.location=anchors[0].location){next_anchor=anchors.shift();}let anchored_url=effective_url;try{const url_is_fq=/^((https?:)?\/\/)/.test(anchored_url);if(url_is_fq){let fq_url=new URL(anchored_url);fq_url.hash=next_anchor.id;anchored_url=fq_url.toString();}else{if(!/^\//.test(anchored_url)){anchored_url=`/${anchored_url}`;}let fq_url=new URL(`https://example.com${anchored_url}`);fq_url.hash=next_anchor.id;anchored_url=fq_url.toString().replace(/^https:\/\/example.com/,"");}}catch(e){console.error(`Pagefind: Couldn't process ${anchored_url} for a search result`);}current_anchor_position=next_anchor.location;current_anchor={title:next_anchor.text,url:anchored_url,anchor:next_anchor,weighted_locations:[word],locations:[word.location],excerpt:"",plain_excerpt:""};}}add_result(anchors[0]?.location);return results;};var import_meta={};var asyncSleep=async(ms=100)=>{return new Promise((r)=>setTimeout(r,ms));};var normalizeDiacritics=(str)=>{return str.normalize("NFD").replace(/\p{M}/gu,"");};var isBrowser=()=>typeof window!=="undefined"&&typeof document!=="undefined";var needsWordSegmentation=(lang)=>{if(!lang)return false;const primaryLang=lang.split("-")[0].toLowerCase();return["zh","ja","th"].includes(primaryLang);};var PagefindInstance=class{constructor(opts={}){__publicField(this,"backend");__publicField(this,"decoder");__publicField(this,"wasm");__publicField(this,"basePath");__publicField(this,"baseUrl");__publicField(this,"primary");__publicField(this,"indexWeight");__publicField(this,"excerptLength");__publicField(this,"mergeFilter");__publicField(this,"ranking");__publicField(this,"highlightParam");__publicField(this,"exactDiacritics");__publicField(this,"metaCacheTag");__publicField(this,"loaded_chunks");__publicField(this,"loaded_filters");__publicField(this,"loaded_fragments");__publicField(this,"fetchQueue",[]);__publicField(this,"activeFetches",0);__publicField(this,"maxConcurrentFetches",100);__publicField(this,"raw_ptr");__publicField(this,"initError");__publicField(this,"searchMeta");__publicField(this,"languages");__publicField(this,"loadedLanguage");__publicField(this,"includeCharacters");__publicField(this,"version");__publicField(this,"loadedVersion");this.version=pagefind_version;this.backend=wasm_bindgen;this.decoder=new TextDecoder("utf-8");this.wasm=null;let basePath=opts.basePath||"/pagefind/";let primary=opts.primary||false;if(primary&&!opts.basePath&&isBrowser()){basePath=this.initPrimaryBasePath(basePath);}if(/[^\/]$/.test(basePath)){basePath=`${basePath}/`;}if(isBrowser()&&window?.location?.origin&&basePath.startsWith(window.location.origin)){basePath=basePath.replace(window.location.origin,"");}this.basePath=basePath;this.baseUrl=opts.baseUrl||this.getDefaultBaseUrl(basePath);if(!/^(\/|https?:\/\/)/.test(this.baseUrl)){this.baseUrl=`/${this.baseUrl}`;}this.primary=primary;this.indexWeight=opts.indexWeight??1;this.excerptLength=opts.excerptLength??30;this.mergeFilter=opts.mergeFilter??{};this.ranking=opts.ranking;this.highlightParam=opts.highlightParam??null;this.exactDiacritics=opts.exactDiacritics??false;this.metaCacheTag=opts.metaCacheTag??null;this.loaded_chunks={};this.loaded_filters={};this.loaded_fragments={};this.raw_ptr=null;this.initError=null;this.searchMeta=null;this.languages=null;}throttledFetch(input){return new Promise((resolve,reject)=>{this.fetchQueue.push({resolve,reject,input});this.dequeueNextFetch();});}dequeueNextFetch(){while(this.fetchQueue.length>0&&this.activeFetchesb.page_count-a.page_count);if(topLang[0])return topLang[0];}throw new Error("Pagefind Error: No language indexes found.");}async loadMeta(index){try{let compressed_resp=await this.throttledFetch(`${this.basePath}pagefind.${index}.pf_meta`);let compressed_meta=await compressed_resp.arrayBuffer();this.searchMeta=this.decompress(new Uint8Array(compressed_meta),"Pagefind metadata");}catch(e){console.error(`Failed to load the meta index: +${e?.toString()}`);}}async loadWasm(language){try{const wasm_url=`${this.basePath}wasm.${language}.pagefind`;let compressed_resp=await this.throttledFetch(wasm_url);let compressed_wasm=await compressed_resp.arrayBuffer();const final_wasm=this.decompress(new Uint8Array(compressed_wasm),"Pagefind WebAssembly");if(!final_wasm){throw new Error("No WASM after decompression");}this.wasm=await this.backend({module_or_path:final_wasm});}catch(e){console.error(`Failed to load the Pagefind WASM: +${e?.toString()}`);throw new Error(`Failed to load the Pagefind WASM: +${e?.toString()}`);}}async _loadGenericChunk(url,method){try{let compressed_resp=await this.throttledFetch(url);let compressed_chunk=await compressed_resp.arrayBuffer();let chunk=this.decompress(new Uint8Array(compressed_chunk),url);let ptr=await this.getPtr();this.raw_ptr=this.backend[method](ptr,chunk);}catch(e){console.error(`Failed to load the index chunk ${url}: +${e?.toString()}`);}}async loadChunk(hash){if(!this.loaded_chunks[hash]){const url=`${this.basePath}index/${hash}.pf_index`;this.loaded_chunks[hash]=this._loadGenericChunk(url,"load_index_chunk");}return await this.loaded_chunks[hash];}async loadFilterChunk(hash){if(!this.loaded_filters[hash]){const url=`${this.basePath}filter/${hash}.pf_filter`;this.loaded_filters[hash]=this._loadGenericChunk(url,"load_filter_chunk");}return await this.loaded_filters[hash];}async _loadFragment(hash){let compressed_resp=await this.throttledFetch(`${this.basePath}fragment/${hash}.pf_fragment`);let compressed_fragment=await compressed_resp.arrayBuffer();let fragment=this.decompress(new Uint8Array(compressed_fragment),`Fragment ${hash}`);return JSON.parse(new TextDecoder().decode(fragment));}async loadFragment(hash,weighted_locations=[],search_term){if(!this.loaded_fragments[hash]){this.loaded_fragments[hash]=this._loadFragment(hash);}let fragment=await this.loaded_fragments[hash];fragment.weighted_locations=weighted_locations;fragment.locations=weighted_locations.map((l)=>l.location);if(!fragment.raw_content){fragment.raw_content=fragment.content.replace(//g,">");fragment.content=fragment.content.replace(/\u200B/g,"");}if(!fragment.raw_url){fragment.raw_url=fragment.url;}fragment.url=this.processedUrl(fragment.raw_url,search_term);const excerpt_start=calculate_excerpt_region(weighted_locations,this.excerptLength);const excerpts=build_excerpt(fragment.raw_content,excerpt_start,this.excerptLength,fragment.locations);fragment.excerpt=excerpts.excerpt;fragment.plain_excerpt=excerpts.plain_excerpt;fragment.sub_results=calculate_sub_results(fragment,this.excerptLength);return fragment;}fullUrl(raw){if(/^(https?:)?\/\//.test(raw)){return raw;}return`${this.baseUrl}/${raw}`.replace(/\/+/g,"/").replace(/^(https?:\/)/,"$1/");}processedUrl(url,search_term){const normalized=this.fullUrl(url);if(this.highlightParam===null){return normalized;}let individual_terms=search_term.split(/\s+/);try{let processed=new URL(normalized);for(const term of individual_terms){processed.searchParams.append(this.highlightParam,term);}return processed.toString();}catch(e){try{let processed=new URL(`https://example.com${normalized}`);for(const term of individual_terms){processed.searchParams.append(this.highlightParam,term);}return processed.toString().replace(/^https:\/\/example\.com/,"");}catch(e2){return normalized;}}}async getPtr(){while(this.raw_ptr===null){if(this.initError){throw this.initError;}await asyncSleep(50);}if(!this.raw_ptr){console.error("Pagefind: WASM Error (No pointer)");throw new Error("Pagefind: WASM Error (No pointer)");}return this.raw_ptr;}stringifyFilters(obj={}){return JSON.stringify(obj);}stringifySorts(obj={}){let sorts=Object.entries(obj);for(let[sort,direction]of sorts){if(sorts.length>1){console.warn(`Pagefind was provided multiple sort options in this search, but can only operate on one. Using the ${sort} sort.`);}if(direction!=="asc"&&direction!=="desc"){console.warn(`Pagefind was provided a sort with unknown direction ${direction}. Supported: [asc, desc]`);}return`${sort}:${direction}`;}return``;}async filters(){let ptr=await this.getPtr();let filters=this.backend.request_all_filter_indexes(ptr);let filter_array=JSON.parse(filters);if(Array.isArray(filter_array)){let filter_chunks=filter_array.filter((v)=>v).map((chunk)=>this.loadFilterChunk(chunk));await Promise.all([...filter_chunks]);}ptr=await this.getPtr();let results=this.backend.filters(ptr);return JSON.parse(results);}async preload(term,options={}){await this.search(term,{...options,preload:true});}async search(term,options={}){options={verbose:false,filters:{},sort:{},...options};const log=(str)=>{if(options.verbose)console.log(str);};log(`Starting search on ${this.basePath}`);let start=Date.now();let ptr=await this.getPtr();let filter_only=term===null;term=term??"";let exact_search=/^\s*".+"\s*$/.test(term);if(exact_search){log(`Running an exact search`);}let trueLanguage=null;try{trueLanguage=Intl.getCanonicalLocales(this.loadedLanguage)[0];}catch(err2){}const term_chunks=[];if(trueLanguage&&typeof Intl.Segmenter!=="undefined"){const graphemeSegmenter=new Intl.Segmenter(trueLanguage,{granularity:"grapheme"});if(needsWordSegmentation(trueLanguage)){const wordSegmenter=new Intl.Segmenter(trueLanguage,{granularity:"word"});for(const{segment:word}of wordSegmenter.segment(term)){const wordChunks=[];for(const{segment:grapheme}of graphemeSegmenter.segment(word)){if(this.includeCharacters?.includes(grapheme)){wordChunks.push(grapheme);}else if(!/^\p{Pd}|\p{Pe}|\p{Pf}|\p{Pi}|\p{Po}|\p{Ps}$/u.test(grapheme)){wordChunks.push(grapheme.toLocaleLowerCase());}}if(wordChunks.length>0){term_chunks.push(wordChunks.join(""));}}term=term_chunks.join(" ").replace(/\s{2,}/g," ").trim();}else{for(const{segment:grapheme}of graphemeSegmenter.segment(term)){if(this.includeCharacters?.includes(grapheme)){term_chunks.push(grapheme);}else if(!/^\p{Pd}|\p{Pe}|\p{Pf}|\p{Pi}|\p{Po}|\p{Ps}$/u.test(grapheme)){term_chunks.push(grapheme.toLocaleLowerCase());}}term=term_chunks.join("").replace(/\s{2,}/g," ").trim();}}else{for(const char of term){if(this.includeCharacters?.includes(char)){term_chunks.push(char);}else if(!/^\p{Pd}|\p{Pe}|\p{Pf}|\p{Pi}|\p{Po}|\p{Ps}$/u.test(char)){term_chunks.push(char.toLocaleLowerCase());}}term=term_chunks.join("").replace(/\s{2,}/g," ").trim();}const originalTerm=term;term=normalizeDiacritics(term);log(`Normalized search term to ${term}`);if(!term?.length&&!filter_only){return{results:[],unfilteredResultCount:0,filters:{},totalFilters:{},timings:{preload:Date.now()-start,search:Date.now()-start,total:Date.now()-start}};}let sort_list=this.stringifySorts(options.sort);log(`Stringified sort to ${sort_list}`);const filter_list=this.stringifyFilters(options.filters);log(`Stringified filters to ${filter_list}`);let index_resp=this.backend.request_indexes(ptr,term);let index_array=JSON.parse(index_resp);let filter_resp=this.backend.request_filter_indexes(ptr,filter_list);let filter_array=JSON.parse(filter_resp);let chunks=index_array.filter((v)=>v).map((chunk)=>this.loadChunk(chunk));let filter_chunks=filter_array.filter((v)=>v).map((chunk)=>this.loadFilterChunk(chunk));await Promise.all([...chunks,...filter_chunks]);log(`Loaded necessary chunks to run search`);if(options.preload){log(`Preload \u2014 bailing out of search operation now.`);return null;}ptr=await this.getPtr();let searchStart=Date.now();let result=this.backend.search(ptr,term,originalTerm,filter_list,sort_list,exact_search,this.exactDiacritics);log(`Got the raw search result: ${result}`);let{filtered_counts,total_counts,results,unfiltered_total,search_keywords,query_term_idfs}=JSON.parse(result);let resultsInterface=results.map((result2)=>{let weighted_locations=result2.l.map((l)=>{let loc={weight:l.w/24,balanced_score:l.s,location:l.l};if(l.v){loc.verbose={word_string:l.v.ws,length_bonus:l.v.lb};}return loc;});let locations=weighted_locations.map((l)=>l.location);let res={id:result2.p,score:result2.s*this.indexWeight,words:locations,data:async()=>await this.loadFragment(result2.p,weighted_locations,term)};if(result2.params){res.params={document_length:result2.params.dl,average_page_length:result2.params.apl,total_pages:result2.params.tp};}if(result2.scores){res.scores=result2.scores.map((r)=>{return{search_term:r.w,idf:r.idf,saturating_tf:r.b_tf,raw_tf:r.r_tf,pagefind_tf:r.p_tf,score:r.s,params:{weighted_term_frequency:r.params.w_tf,pages_containing_term:r.params.pct,length_bonus:r.params.lb}};});}if(result2.mf&&result2.mf.length>0){res.matchedMetaFields=result2.mf;}if(result2.vms&&result2.vms.length>0){res.verbose_meta_scores=result2.vms.map((s)=>({field_name:s.fn,field_weight:s.fw,matched_terms:s.mt,matched_idf:s.mi,query_total_idf:s.ti,coverage:s.cv,coverage_boost:s.cb}));}return res;});const searchTime=Date.now()-searchStart;const realTime=Date.now()-start;log(`Found ${results.length} result${results.length == 1 ? "" : "s"} for "${term}" in ${Date.now() - searchStart}ms (${Date.now() - start}ms realtime)`);let response={results:resultsInterface,unfilteredResultCount:unfiltered_total,filters:filtered_counts,totalFilters:total_counts,timings:{preload:realTime-searchTime,search:searchTime,total:realTime}};if(search_keywords){response.search_keywords=search_keywords;}if(query_term_idfs){response.query_term_idfs=query_term_idfs.map((q)=>({term:q.t,idf:q.i}));}return response;}};var Pagefind=class{constructor(options={}){__publicField(this,"primaryLanguage");__publicField(this,"searchID");__publicField(this,"primary");__publicField(this,"instances");this.primaryLanguage="unknown";this.searchID=0;this.primary=new PagefindInstance({...options,primary:true});this.instances=[this.primary];this.init(options?.language);}async options(options){await this.primary.options(options);}async enterPlaygroundMode(){await this.primary.enterPlaygroundMode();}async init(overrideLanguage){if(isBrowser()&&document?.querySelector){const langCode=document.querySelector("html")?.getAttribute("lang")||"unknown";this.primaryLanguage=langCode.toLocaleLowerCase();}if(overrideLanguage){this.primaryLanguage=overrideLanguage;}await this.primary.init(overrideLanguage?overrideLanguage:this.primaryLanguage,{load_wasm:true});}async mergeIndex(indexPath,options={}){if(this.primary.basePath.startsWith(indexPath)){console.warn(`Skipping mergeIndex ${indexPath} that appears to be the same as the primary index (${this.primary.basePath})`);return;}let newInstance=new PagefindInstance({primary:false,basePath:indexPath,...options});this.instances.push(newInstance);while(this.primary.wasm===null){await asyncSleep(50);}await newInstance.init(options.language||this.primaryLanguage,{load_wasm:false});const{language,...remainingOptions}=options;await newInstance.options(remainingOptions);}mergeFilters(filters){const merged={};for(const searchFilter of filters){for(const[filterKey,values]of Object.entries(searchFilter)){if(!merged[filterKey]){merged[filterKey]=values;continue;}else{const filter=merged[filterKey];for(const[valueKey,count]of Object.entries(values)){filter[valueKey]=(filter[valueKey]||0)+count;}}}}return merged;}async filters(){let filters=await Promise.all(this.instances.map((i2)=>i2.filters()));return this.mergeFilters(filters);}async preload(term,options={}){await Promise.all(this.instances.map((i2)=>i2.preload(term,options)));}async debouncedSearch(term,options,debounceTimeoutMs){const thisSearchID=++this.searchID;this.preload(term,options);await asyncSleep(debounceTimeoutMs);if(thisSearchID!==this.searchID){return null;}const searchResult=await this.search(term,options);if(thisSearchID!==this.searchID){return null;}return searchResult;}async search(term,options={}){let search=await Promise.all(this.instances.map((i2)=>i2.search(term,options)));const filters=this.mergeFilters(search.map((s)=>s.filters));const totalFilters=this.mergeFilters(search.map((s)=>s.totalFilters));const results=search.map((s)=>s.results).flat().sort((a,b)=>b.score-a.score);const timings=search.map((s)=>s.timings);const unfilteredResultCount=search.reduce((sum,s)=>sum+s.unfilteredResultCount,0);let response={results,unfilteredResultCount,filters,totalFilters,timings};if(search[0].search_keywords){response.search_keywords=search[0].search_keywords;}if(search[0].query_term_idfs){response.query_term_idfs=search[0].query_term_idfs;}return response;}};var dataCallbacks=new Map();var instanceDataIds=new Map();var instances=new Map();var DEFAULT_INSTANCE="default";var getInstance=(instanceId)=>{const instance=instances.get(instanceId);if(!instance){throw new Error(`Pagefind instance "${instanceId}" not initialized`);}return instance;};var registerDataCallback=(instanceId,dataId,dataFn)=>{dataCallbacks.set(dataId,{getData:dataFn});if(!instanceDataIds.has(instanceId)){instanceDataIds.set(instanceId,new Set());}instanceDataIds.get(instanceId).add(dataId);};var handleMessage=async(message)=>{const{id,method,args}=message;const instanceId=message.instanceId??DEFAULT_INSTANCE;try{switch(method){case"init":{const[options]=args;instances.set(instanceId,new Pagefind(options));return{id,result:true};}case"options":{const pagefindInstance=getInstance(instanceId);const[options]=args;await pagefindInstance.options(options);return{id,result:true};}case"enterPlaygroundMode":{const pagefindInstance=getInstance(instanceId);await pagefindInstance.enterPlaygroundMode();return{id,result:true};}case"mergeIndex":{const pagefindInstance=getInstance(instanceId);const[indexPath,options]=args;await pagefindInstance.mergeIndex(indexPath,options);return{id,result:true};}case"search":{const pagefindInstance=getInstance(instanceId);const[term,options]=args;const results=await pagefindInstance.search(term,options);if(results&&results.results){for(let i2=0;i2{const message=event.data;const response=await handleMessage(message);self.postMessage(response);});})(); \ No newline at end of file diff --git a/webstatic.example/dist/pagefind/pagefind.de_8987bfa9ae.pf_meta b/webstatic.example/dist/pagefind/pagefind.de_8987bfa9ae.pf_meta new file mode 100644 index 0000000..1a481fc Binary files /dev/null and b/webstatic.example/dist/pagefind/pagefind.de_8987bfa9ae.pf_meta differ diff --git a/webstatic.example/dist/pagefind/pagefind.en_9b2654cc0d.pf_meta b/webstatic.example/dist/pagefind/pagefind.en_9b2654cc0d.pf_meta new file mode 100644 index 0000000..91dc2be Binary files /dev/null and b/webstatic.example/dist/pagefind/pagefind.en_9b2654cc0d.pf_meta differ diff --git a/webstatic.example/dist/pagefind/pagefind.js b/webstatic.example/dist/pagefind/pagefind.js new file mode 100644 index 0000000..47bb26a --- /dev/null +++ b/webstatic.example/dist/pagefind/pagefind.js @@ -0,0 +1,6 @@ +const pagefind_version="1.5.2";let wasm_bindgen=(function(exports){let script_src;if(typeof document!=='undefined'&&document.currentScript!==null){script_src=new URL("UNHANDLED",location.href).toString();}function add_synthetic_filter(ptr,filter){const ptr0=passStringToWasm0(filter,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc);const len0=WASM_VECTOR_LEN;const ret=wasm.add_synthetic_filter(ptr,ptr0,len0);return ret>>>0;}exports.add_synthetic_filter=add_synthetic_filter;function enter_playground_mode(ptr){const ret=wasm.enter_playground_mode(ptr);return ret>>>0;}exports.enter_playground_mode=enter_playground_mode;function filters(ptr){let deferred1_0;let deferred1_1;try{const ret=wasm.filters(ptr);deferred1_0=ret[0];deferred1_1=ret[1];return getStringFromWasm0(ret[0],ret[1]);}finally{wasm.__wbindgen_free(deferred1_0,deferred1_1,1);}}exports.filters=filters;function init_pagefind(metadata_bytes){const ptr0=passArray8ToWasm0(metadata_bytes,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;const ret=wasm.init_pagefind(ptr0,len0);return ret>>>0;}exports.init_pagefind=init_pagefind;function load_filter_chunk(ptr,chunk_bytes){const ptr0=passArray8ToWasm0(chunk_bytes,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;const ret=wasm.load_filter_chunk(ptr,ptr0,len0);return ret>>>0;}exports.load_filter_chunk=load_filter_chunk;function load_index_chunk(ptr,chunk_bytes){const ptr0=passArray8ToWasm0(chunk_bytes,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;const ret=wasm.load_index_chunk(ptr,ptr0,len0);return ret>>>0;}exports.load_index_chunk=load_index_chunk;function request_all_filter_indexes(ptr){let deferred1_0;let deferred1_1;try{const ret=wasm.request_all_filter_indexes(ptr);deferred1_0=ret[0];deferred1_1=ret[1];return getStringFromWasm0(ret[0],ret[1]);}finally{wasm.__wbindgen_free(deferred1_0,deferred1_1,1);}}exports.request_all_filter_indexes=request_all_filter_indexes;function request_filter_indexes(ptr,filters){let deferred2_0;let deferred2_1;try{const ptr0=passStringToWasm0(filters,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc);const len0=WASM_VECTOR_LEN;const ret=wasm.request_filter_indexes(ptr,ptr0,len0);deferred2_0=ret[0];deferred2_1=ret[1];return getStringFromWasm0(ret[0],ret[1]);}finally{wasm.__wbindgen_free(deferred2_0,deferred2_1,1);}}exports.request_filter_indexes=request_filter_indexes;function request_indexes(ptr,query){let deferred2_0;let deferred2_1;try{const ptr0=passStringToWasm0(query,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc);const len0=WASM_VECTOR_LEN;const ret=wasm.request_indexes(ptr,ptr0,len0);deferred2_0=ret[0];deferred2_1=ret[1];return getStringFromWasm0(ret[0],ret[1]);}finally{wasm.__wbindgen_free(deferred2_0,deferred2_1,1);}}exports.request_indexes=request_indexes;function search(ptr,query,original_query,filter,sort,exact,exact_diacritics){let deferred5_0;let deferred5_1;try{const ptr0=passStringToWasm0(query,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc);const len0=WASM_VECTOR_LEN;const ptr1=passStringToWasm0(original_query,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc);const len1=WASM_VECTOR_LEN;const ptr2=passStringToWasm0(filter,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc);const len2=WASM_VECTOR_LEN;const ptr3=passStringToWasm0(sort,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc);const len3=WASM_VECTOR_LEN;const ret=wasm.search(ptr,ptr0,len0,ptr1,len1,ptr2,len2,ptr3,len3,exact,exact_diacritics);deferred5_0=ret[0];deferred5_1=ret[1];return getStringFromWasm0(ret[0],ret[1]);}finally{wasm.__wbindgen_free(deferred5_0,deferred5_1,1);}}exports.search=search;function set_ranking_weights(ptr,weights){const ptr0=passStringToWasm0(weights,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc);const len0=WASM_VECTOR_LEN;const ret=wasm.set_ranking_weights(ptr,ptr0,len0);return ret>>>0;}exports.set_ranking_weights=set_ranking_weights;function __wbg_get_imports(){const import0={__proto__:null,__wbindgen_init_externref_table:function(){const table=wasm.__wbindgen_externrefs;const offset=table.grow(4);table.set(0,undefined);table.set(offset+0,undefined);table.set(offset+1,null);table.set(offset+2,true);table.set(offset+3,false);},};return{__proto__:null,"./pagefind_web_bg.js":import0,};}function getStringFromWasm0(ptr,len){ptr=ptr>>>0;return decodeText(ptr,len);}let cachedUint8ArrayMemory0=null;function getUint8ArrayMemory0(){if(cachedUint8ArrayMemory0===null||cachedUint8ArrayMemory0.byteLength===0){cachedUint8ArrayMemory0=new Uint8Array(wasm.memory.buffer);}return cachedUint8ArrayMemory0;}function passArray8ToWasm0(arg,malloc){const ptr=malloc(arg.length*1,1)>>>0;getUint8ArrayMemory0().set(arg,ptr/1);WASM_VECTOR_LEN=arg.length;return ptr;}function passStringToWasm0(arg,malloc,realloc){if(realloc===undefined){const buf=cachedTextEncoder.encode(arg);const ptr=malloc(buf.length,1)>>>0;getUint8ArrayMemory0().subarray(ptr,ptr+buf.length).set(buf);WASM_VECTOR_LEN=buf.length;return ptr;}let len=arg.length;let ptr=malloc(len,1)>>>0;const mem=getUint8ArrayMemory0();let offset=0;for(;offset0x7F)break;mem[ptr+offset]=code;}if(offset!==len){if(offset!==0){arg=arg.slice(offset);}ptr=realloc(ptr,len,len=offset+arg.length*3,1)>>>0;const view=getUint8ArrayMemory0().subarray(ptr+offset,ptr+len);const ret=cachedTextEncoder.encodeInto(arg,view);offset+=ret.written;ptr=realloc(ptr,len,offset,1)>>>0;}WASM_VECTOR_LEN=offset;return ptr;}let cachedTextDecoder=new TextDecoder('utf-8',{ignoreBOM:true,fatal:true});cachedTextDecoder.decode();function decodeText(ptr,len){return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr,ptr+len));}const cachedTextEncoder=new TextEncoder();if(!('encodeInto'in cachedTextEncoder)){cachedTextEncoder.encodeInto=function(arg,view){const buf=cachedTextEncoder.encode(arg);view.set(buf);return{read:arg.length,written:buf.length};};}let WASM_VECTOR_LEN=0;let wasmModule,wasm;function __wbg_finalize_init(instance,module){wasm=instance.exports;wasmModule=module;cachedUint8ArrayMemory0=null;wasm.__wbindgen_start();return wasm;}async function __wbg_load(module,imports){if(typeof Response==='function'&&module instanceof Response){if(typeof WebAssembly.instantiateStreaming==='function'){try{return await WebAssembly.instantiateStreaming(module,imports);}catch(e){const validResponse=module.ok&&expectedResponseType(module.type);if(validResponse&&module.headers.get('Content-Type')!=='application/wasm'){console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",e);}else{throw e;}}}const bytes=await module.arrayBuffer();return await WebAssembly.instantiate(bytes,imports);}else{const instance=await WebAssembly.instantiate(module,imports);if(instance instanceof WebAssembly.Instance){return{instance,module};}else{return instance;}}function expectedResponseType(type){switch(type){case'basic':case'cors':case'default':return true;}return false;}}function initSync(module){if(wasm!==undefined)return wasm;if(module!==undefined){if(Object.getPrototypeOf(module)===Object.prototype){({module}=module)}else{console.warn('using deprecated parameters for `initSync()`; pass a single object instead')}}const imports=__wbg_get_imports();if(!(module instanceof WebAssembly.Module)){module=new WebAssembly.Module(module);}const instance=new WebAssembly.Instance(module,imports);return __wbg_finalize_init(instance,module);}async function __wbg_init(module_or_path){if(wasm!==undefined)return wasm;if(module_or_path!==undefined){if(Object.getPrototypeOf(module_or_path)===Object.prototype){({module_or_path}=module_or_path)}else{console.warn('using deprecated parameters for the initialization function; pass a single object instead')}}if(module_or_path===undefined&&script_src!==undefined){module_or_path=script_src.replace(/\.js$/,"_bg.wasm");}const imports=__wbg_get_imports();if(typeof module_or_path==='string'||(typeof Request==='function'&&module_or_path instanceof Request)||(typeof URL==='function'&&module_or_path instanceof URL)){module_or_path=fetch(module_or_path);}const{instance,module}=await __wbg_load(await module_or_path,imports);return __wbg_finalize_init(instance,module);}return Object.assign(__wbg_init,{initSync},exports);})({__proto__:null});var __defProp=Object.defineProperty;var __defNormalProp=(obj,key,value)=>key in obj?__defProp(obj,key,{enumerable:true,configurable:true,writable:true,value}):obj[key]=value;var __publicField=(obj,key,value)=>__defNormalProp(obj,typeof key!=="symbol"?key+"":key,value);var u8=Uint8Array;var u16=Uint16Array;var u32=Uint32Array;var fleb=new u8([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]);var fdeb=new u8([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]);var clim=new u8([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);var freb=function(eb,start){var b=new u16(31);for(var i2=0;i2<31;++i2){b[i2]=start+=1<>>1|(i&21845)<<1;x=(x&52428)>>>2|(x&13107)<<2;x=(x&61680)>>>4|(x&3855)<<4;rev[i]=((x&65280)>>>8|(x&255)<<8)>>>1;}var x;var i;var hMap=function(cd,mb,r){var s=cd.length;var i2=0;var l=new u16(mb);for(;i2>>rvb]=sv;}}}}else{co=new u16(s);for(i2=0;i2>>15-cd[i2];}}}return co;};var flt=new u8(288);for(i=0;i<144;++i)flt[i]=8;var i;for(i=144;i<256;++i)flt[i]=9;var i;for(i=256;i<280;++i)flt[i]=7;var i;for(i=280;i<288;++i)flt[i]=8;var i;var fdt=new u8(32);for(i=0;i<32;++i)fdt[i]=5;var i;var flrm=hMap(flt,9,1);var fdrm=hMap(fdt,5,1);var max=function(a){var m=a[0];for(var i2=1;i2m)m=a[i2];}return m;};var bits=function(d,p,m){var o=p/8|0;return(d[o]|d[o+1]<<8)>>(p&7)&m;};var bits16=function(d,p){var o=p/8|0;return(d[o]|d[o+1]<<8|d[o+2]<<16)>>(p&7);};var shft=function(p){return(p+7)/8|0;};var slc=function(v,s,e){if(s==null||s<0)s=0;if(e==null||e>v.length)e=v.length;var n=new(v.BYTES_PER_ELEMENT==2?u16:v.BYTES_PER_ELEMENT==4?u32:u8)(e-s);n.set(v.subarray(s,e));return n;};var ec=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"];var err=function(ind,msg,nt){var e=new Error(msg||ec[ind]);e.code=ind;if(Error.captureStackTrace)Error.captureStackTrace(e,err);if(!nt)throw e;return e;};var inflt=function(dat,buf,st){var sl=dat.length;if(!sl||st&&st.f&&!st.l)return buf||new u8(0);var noBuf=!buf||st;var noSt=!st||st.i;if(!st)st={};if(!buf)buf=new u8(sl*3);var cbuf=function(l2){var bl=buf.length;if(l2>bl){var nbuf=new u8(Math.max(bl*2,l2));nbuf.set(buf);buf=nbuf;}};var final=st.f||0,pos=st.p||0,bt=st.b||0,lm=st.l,dm=st.d,lbt=st.m,dbt=st.n;var tbts=sl*8;do{if(!lm){final=bits(dat,pos,1);var type=bits(dat,pos+1,3);pos+=3;if(!type){var s=shft(pos)+4,l=dat[s-4]|dat[s-3]<<8,t=s+l;if(t>sl){if(noSt)err(0);break;}if(noBuf)cbuf(bt+l);buf.set(dat.subarray(s,t),bt);st.b=bt+=l,st.p=pos=t*8,st.f=final;continue;}else if(type==1)lm=flrm,dm=fdrm,lbt=9,dbt=5;else if(type==2){var hLit=bits(dat,pos,31)+257,hcLen=bits(dat,pos+10,15)+4;var tl=hLit+bits(dat,pos+5,31)+1;pos+=14;var ldt=new u8(tl);var clt=new u8(19);for(var i2=0;i2>>4;if(s<16){ldt[i2++]=s;}else{var c=0,n=0;if(s==16)n=3+bits(dat,pos,3),pos+=2,c=ldt[i2-1];else if(s==17)n=3+bits(dat,pos,7),pos+=3;else if(s==18)n=11+bits(dat,pos,127),pos+=7;while(n--)ldt[i2++]=c;}}var lt=ldt.subarray(0,hLit),dt=ldt.subarray(hLit);lbt=max(lt);dbt=max(dt);lm=hMap(lt,lbt,1);dm=hMap(dt,dbt,1);}else err(1);if(pos>tbts){if(noSt)err(0);break;}}if(noBuf)cbuf(bt+131072);var lms=(1<>>4;pos+=c&15;if(pos>tbts){if(noSt)err(0);break;}if(!c)err(2);if(sym<256)buf[bt++]=sym;else if(sym==256){lpos=pos,lm=null;break;}else{var add=sym-254;if(sym>264){var i2=sym-257,b=fleb[i2];add=bits(dat,pos,(1<>>4;if(!d)err(3);pos+=d&15;var dt=fd[dsym];if(dsym>3){var b=fdeb[dsym];dt+=bits16(dat,pos)&(1<tbts){if(noSt)err(0);break;}if(noBuf)cbuf(bt+131072);var end=bt+add;for(;bt>3&1)+(flg>>4&1);zs>0;zs-=!d[st++]);return st+(flg&2);};var gzl=function(d){var l=d.length;return(d[l-4]|d[l-3]<<8|d[l-2]<<16|d[l-1]<<24)>>>0;};function gunzipSync(data,out){return inflt(data.subarray(gzs(data),-8),out||new u8(gzl(data)));}var td=typeof TextDecoder!="undefined"&&new TextDecoder();var tds=0;try{td.decode(et,{stream:true});tds=1;}catch(e){}var gz_default=gunzipSync;var calculate_excerpt_region=(word_positions,excerpt_length)=>{if(word_positions.length===0){return 0;}let words=[];for(const word of word_positions){words[word.location]=words[word.location]||0;words[word.location]+=word.balanced_score;}if(words.length<=excerpt_length){return 0;}let densest=words.slice(0,excerpt_length).reduce((partialSum,a)=>partialSum+a,0);let working_sum=densest;let densest_at=[0];for(let i2=0;i2densest){densest=working_sum;densest_at=[i2];}else if(working_sum===densest&&densest_at[densest_at.length-1]===i2-1){densest_at.push(i2);}}let midpoint=densest_at[Math.floor(densest_at.length/2)];return midpoint;};var build_excerpt=(content,start,length,locations,not_before,not_from)=>{let is_zws_delimited=content.includes("\u200B");let fragment_words=[];if(is_zws_delimited){fragment_words=content.split("\u200B");}else{fragment_words=content.split(/[\r\n\s]+/g);}let endcap=not_from??fragment_words.length;let startcap=not_before??0;if(endcap-startcapendcap){start=endcap-length;}if(start`)){continue;}fragment_words[word]=`${fragment_words[word]}`;}const excerpt=fragment_words.slice(start,start+length).join(joiner).trim();return{excerpt,plain_excerpt};};var calculate_sub_results=(fragment,desired_excerpt_length)=>{const effective_url=fragment.meta?.url||fragment.url;const anchors=fragment.anchors.filter((a)=>/h\d/i.test(a.element)&&a.text?.length&&/\S/.test(a.text)).sort((a,b)=>a.location-b.location);const results=[];let current_anchor_position=0;let current_anchor={title:fragment.meta["title"],url:effective_url,weighted_locations:[],locations:[],excerpt:"",plain_excerpt:""};const add_result=(end_range)=>{if(current_anchor.locations.length){const relative_weighted_locations=current_anchor.weighted_locations.map((l)=>{return{weight:l.weight,balanced_score:l.balanced_score,location:l.location-current_anchor_position};});const excerpt_start=calculate_excerpt_region(relative_weighted_locations,desired_excerpt_length)+current_anchor_position;const excerpt_length=end_range?Math.min(end_range-excerpt_start,desired_excerpt_length):desired_excerpt_length;const excerpts=build_excerpt(fragment.raw_content??"",excerpt_start,excerpt_length,current_anchor.locations,current_anchor_position,end_range);current_anchor.excerpt=excerpts.excerpt;current_anchor.plain_excerpt=excerpts.plain_excerpt;results.push(current_anchor);}};for(let word of fragment.weighted_locations){if(!anchors.length||word.location=anchors[0].location){next_anchor=anchors.shift();}let anchored_url=effective_url;try{const url_is_fq=/^((https?:)?\/\/)/.test(anchored_url);if(url_is_fq){let fq_url=new URL(anchored_url);fq_url.hash=next_anchor.id;anchored_url=fq_url.toString();}else{if(!/^\//.test(anchored_url)){anchored_url=`/${anchored_url}`;}let fq_url=new URL(`https://example.com${anchored_url}`);fq_url.hash=next_anchor.id;anchored_url=fq_url.toString().replace(/^https:\/\/example.com/,"");}}catch(e){console.error(`Pagefind: Couldn't process ${anchored_url} for a search result`);}current_anchor_position=next_anchor.location;current_anchor={title:next_anchor.text,url:anchored_url,anchor:next_anchor,weighted_locations:[word],locations:[word.location],excerpt:"",plain_excerpt:""};}}add_result(anchors[0]?.location);return results;};var asyncSleep=async(ms=100)=>{return new Promise((r)=>setTimeout(r,ms));};var normalizeDiacritics=(str)=>{return str.normalize("NFD").replace(/\p{M}/gu,"");};var isBrowser=()=>typeof window!=="undefined"&&typeof document!=="undefined";var needsWordSegmentation=(lang)=>{if(!lang)return false;const primaryLang=lang.split("-")[0].toLowerCase();return["zh","ja","th"].includes(primaryLang);};var PagefindInstance=class{constructor(opts={}){__publicField(this,"backend");__publicField(this,"decoder");__publicField(this,"wasm");__publicField(this,"basePath");__publicField(this,"baseUrl");__publicField(this,"primary");__publicField(this,"indexWeight");__publicField(this,"excerptLength");__publicField(this,"mergeFilter");__publicField(this,"ranking");__publicField(this,"highlightParam");__publicField(this,"exactDiacritics");__publicField(this,"metaCacheTag");__publicField(this,"loaded_chunks");__publicField(this,"loaded_filters");__publicField(this,"loaded_fragments");__publicField(this,"fetchQueue",[]);__publicField(this,"activeFetches",0);__publicField(this,"maxConcurrentFetches",100);__publicField(this,"raw_ptr");__publicField(this,"initError");__publicField(this,"searchMeta");__publicField(this,"languages");__publicField(this,"loadedLanguage");__publicField(this,"includeCharacters");__publicField(this,"version");__publicField(this,"loadedVersion");this.version=pagefind_version;this.backend=wasm_bindgen;this.decoder=new TextDecoder("utf-8");this.wasm=null;let basePath=opts.basePath||"/pagefind/";let primary=opts.primary||false;if(primary&&!opts.basePath&&isBrowser()){basePath=this.initPrimaryBasePath(basePath);}if(/[^\/]$/.test(basePath)){basePath=`${basePath}/`;}if(isBrowser()&&window?.location?.origin&&basePath.startsWith(window.location.origin)){basePath=basePath.replace(window.location.origin,"");}this.basePath=basePath;this.baseUrl=opts.baseUrl||this.getDefaultBaseUrl(basePath);if(!/^(\/|https?:\/\/)/.test(this.baseUrl)){this.baseUrl=`/${this.baseUrl}`;}this.primary=primary;this.indexWeight=opts.indexWeight??1;this.excerptLength=opts.excerptLength??30;this.mergeFilter=opts.mergeFilter??{};this.ranking=opts.ranking;this.highlightParam=opts.highlightParam??null;this.exactDiacritics=opts.exactDiacritics??false;this.metaCacheTag=opts.metaCacheTag??null;this.loaded_chunks={};this.loaded_filters={};this.loaded_fragments={};this.raw_ptr=null;this.initError=null;this.searchMeta=null;this.languages=null;}throttledFetch(input){return new Promise((resolve,reject)=>{this.fetchQueue.push({resolve,reject,input});this.dequeueNextFetch();});}dequeueNextFetch(){while(this.fetchQueue.length>0&&this.activeFetchesb.page_count-a.page_count);if(topLang[0])return topLang[0];}throw new Error("Pagefind Error: No language indexes found.");}async loadMeta(index){try{let compressed_resp=await this.throttledFetch(`${this.basePath}pagefind.${index}.pf_meta`);let compressed_meta=await compressed_resp.arrayBuffer();this.searchMeta=this.decompress(new Uint8Array(compressed_meta),"Pagefind metadata");}catch(e){console.error(`Failed to load the meta index: +${e?.toString()}`);}}async loadWasm(language){try{const wasm_url=`${this.basePath}wasm.${language}.pagefind`;let compressed_resp=await this.throttledFetch(wasm_url);let compressed_wasm=await compressed_resp.arrayBuffer();const final_wasm=this.decompress(new Uint8Array(compressed_wasm),"Pagefind WebAssembly");if(!final_wasm){throw new Error("No WASM after decompression");}this.wasm=await this.backend({module_or_path:final_wasm});}catch(e){console.error(`Failed to load the Pagefind WASM: +${e?.toString()}`);throw new Error(`Failed to load the Pagefind WASM: +${e?.toString()}`);}}async _loadGenericChunk(url,method){try{let compressed_resp=await this.throttledFetch(url);let compressed_chunk=await compressed_resp.arrayBuffer();let chunk=this.decompress(new Uint8Array(compressed_chunk),url);let ptr=await this.getPtr();this.raw_ptr=this.backend[method](ptr,chunk);}catch(e){console.error(`Failed to load the index chunk ${url}: +${e?.toString()}`);}}async loadChunk(hash){if(!this.loaded_chunks[hash]){const url=`${this.basePath}index/${hash}.pf_index`;this.loaded_chunks[hash]=this._loadGenericChunk(url,"load_index_chunk");}return await this.loaded_chunks[hash];}async loadFilterChunk(hash){if(!this.loaded_filters[hash]){const url=`${this.basePath}filter/${hash}.pf_filter`;this.loaded_filters[hash]=this._loadGenericChunk(url,"load_filter_chunk");}return await this.loaded_filters[hash];}async _loadFragment(hash){let compressed_resp=await this.throttledFetch(`${this.basePath}fragment/${hash}.pf_fragment`);let compressed_fragment=await compressed_resp.arrayBuffer();let fragment=this.decompress(new Uint8Array(compressed_fragment),`Fragment ${hash}`);return JSON.parse(new TextDecoder().decode(fragment));}async loadFragment(hash,weighted_locations=[],search_term){if(!this.loaded_fragments[hash]){this.loaded_fragments[hash]=this._loadFragment(hash);}let fragment=await this.loaded_fragments[hash];fragment.weighted_locations=weighted_locations;fragment.locations=weighted_locations.map((l)=>l.location);if(!fragment.raw_content){fragment.raw_content=fragment.content.replace(//g,">");fragment.content=fragment.content.replace(/\u200B/g,"");}if(!fragment.raw_url){fragment.raw_url=fragment.url;}fragment.url=this.processedUrl(fragment.raw_url,search_term);const excerpt_start=calculate_excerpt_region(weighted_locations,this.excerptLength);const excerpts=build_excerpt(fragment.raw_content,excerpt_start,this.excerptLength,fragment.locations);fragment.excerpt=excerpts.excerpt;fragment.plain_excerpt=excerpts.plain_excerpt;fragment.sub_results=calculate_sub_results(fragment,this.excerptLength);return fragment;}fullUrl(raw){if(/^(https?:)?\/\//.test(raw)){return raw;}return`${this.baseUrl}/${raw}`.replace(/\/+/g,"/").replace(/^(https?:\/)/,"$1/");}processedUrl(url,search_term){const normalized=this.fullUrl(url);if(this.highlightParam===null){return normalized;}let individual_terms=search_term.split(/\s+/);try{let processed=new URL(normalized);for(const term of individual_terms){processed.searchParams.append(this.highlightParam,term);}return processed.toString();}catch(e){try{let processed=new URL(`https://example.com${normalized}`);for(const term of individual_terms){processed.searchParams.append(this.highlightParam,term);}return processed.toString().replace(/^https:\/\/example\.com/,"");}catch(e2){return normalized;}}}async getPtr(){while(this.raw_ptr===null){if(this.initError){throw this.initError;}await asyncSleep(50);}if(!this.raw_ptr){console.error("Pagefind: WASM Error (No pointer)");throw new Error("Pagefind: WASM Error (No pointer)");}return this.raw_ptr;}stringifyFilters(obj={}){return JSON.stringify(obj);}stringifySorts(obj={}){let sorts=Object.entries(obj);for(let[sort,direction]of sorts){if(sorts.length>1){console.warn(`Pagefind was provided multiple sort options in this search, but can only operate on one. Using the ${sort} sort.`);}if(direction!=="asc"&&direction!=="desc"){console.warn(`Pagefind was provided a sort with unknown direction ${direction}. Supported: [asc, desc]`);}return`${sort}:${direction}`;}return``;}async filters(){let ptr=await this.getPtr();let filters2=this.backend.request_all_filter_indexes(ptr);let filter_array=JSON.parse(filters2);if(Array.isArray(filter_array)){let filter_chunks=filter_array.filter((v)=>v).map((chunk)=>this.loadFilterChunk(chunk));await Promise.all([...filter_chunks]);}ptr=await this.getPtr();let results=this.backend.filters(ptr);return JSON.parse(results);}async preload(term,options2={}){await this.search(term,{...options2,preload:true});}async search(term,options2={}){options2={verbose:false,filters:{},sort:{},...options2};const log=(str)=>{if(options2.verbose)console.log(str);};log(`Starting search on ${this.basePath}`);let start=Date.now();let ptr=await this.getPtr();let filter_only=term===null;term=term??"";let exact_search=/^\s*".+"\s*$/.test(term);if(exact_search){log(`Running an exact search`);}let trueLanguage=null;try{trueLanguage=Intl.getCanonicalLocales(this.loadedLanguage)[0];}catch(err2){}const term_chunks=[];if(trueLanguage&&typeof Intl.Segmenter!=="undefined"){const graphemeSegmenter=new Intl.Segmenter(trueLanguage,{granularity:"grapheme"});if(needsWordSegmentation(trueLanguage)){const wordSegmenter=new Intl.Segmenter(trueLanguage,{granularity:"word"});for(const{segment:word}of wordSegmenter.segment(term)){const wordChunks=[];for(const{segment:grapheme}of graphemeSegmenter.segment(word)){if(this.includeCharacters?.includes(grapheme)){wordChunks.push(grapheme);}else if(!/^\p{Pd}|\p{Pe}|\p{Pf}|\p{Pi}|\p{Po}|\p{Ps}$/u.test(grapheme)){wordChunks.push(grapheme.toLocaleLowerCase());}}if(wordChunks.length>0){term_chunks.push(wordChunks.join(""));}}term=term_chunks.join(" ").replace(/\s{2,}/g," ").trim();}else{for(const{segment:grapheme}of graphemeSegmenter.segment(term)){if(this.includeCharacters?.includes(grapheme)){term_chunks.push(grapheme);}else if(!/^\p{Pd}|\p{Pe}|\p{Pf}|\p{Pi}|\p{Po}|\p{Ps}$/u.test(grapheme)){term_chunks.push(grapheme.toLocaleLowerCase());}}term=term_chunks.join("").replace(/\s{2,}/g," ").trim();}}else{for(const char of term){if(this.includeCharacters?.includes(char)){term_chunks.push(char);}else if(!/^\p{Pd}|\p{Pe}|\p{Pf}|\p{Pi}|\p{Po}|\p{Ps}$/u.test(char)){term_chunks.push(char.toLocaleLowerCase());}}term=term_chunks.join("").replace(/\s{2,}/g," ").trim();}const originalTerm=term;term=normalizeDiacritics(term);log(`Normalized search term to ${term}`);if(!term?.length&&!filter_only){return{results:[],unfilteredResultCount:0,filters:{},totalFilters:{},timings:{preload:Date.now()-start,search:Date.now()-start,total:Date.now()-start}};}let sort_list=this.stringifySorts(options2.sort);log(`Stringified sort to ${sort_list}`);const filter_list=this.stringifyFilters(options2.filters);log(`Stringified filters to ${filter_list}`);let index_resp=this.backend.request_indexes(ptr,term);let index_array=JSON.parse(index_resp);let filter_resp=this.backend.request_filter_indexes(ptr,filter_list);let filter_array=JSON.parse(filter_resp);let chunks=index_array.filter((v)=>v).map((chunk)=>this.loadChunk(chunk));let filter_chunks=filter_array.filter((v)=>v).map((chunk)=>this.loadFilterChunk(chunk));await Promise.all([...chunks,...filter_chunks]);log(`Loaded necessary chunks to run search`);if(options2.preload){log(`Preload \u2014 bailing out of search operation now.`);return null;}ptr=await this.getPtr();let searchStart=Date.now();let result=this.backend.search(ptr,term,originalTerm,filter_list,sort_list,exact_search,this.exactDiacritics);log(`Got the raw search result: ${result}`);let{filtered_counts,total_counts,results,unfiltered_total,search_keywords,query_term_idfs}=JSON.parse(result);let resultsInterface=results.map((result2)=>{let weighted_locations=result2.l.map((l)=>{let loc={weight:l.w/24,balanced_score:l.s,location:l.l};if(l.v){loc.verbose={word_string:l.v.ws,length_bonus:l.v.lb};}return loc;});let locations=weighted_locations.map((l)=>l.location);let res={id:result2.p,score:result2.s*this.indexWeight,words:locations,data:async()=>await this.loadFragment(result2.p,weighted_locations,term)};if(result2.params){res.params={document_length:result2.params.dl,average_page_length:result2.params.apl,total_pages:result2.params.tp};}if(result2.scores){res.scores=result2.scores.map((r)=>{return{search_term:r.w,idf:r.idf,saturating_tf:r.b_tf,raw_tf:r.r_tf,pagefind_tf:r.p_tf,score:r.s,params:{weighted_term_frequency:r.params.w_tf,pages_containing_term:r.params.pct,length_bonus:r.params.lb}};});}if(result2.mf&&result2.mf.length>0){res.matchedMetaFields=result2.mf;}if(result2.vms&&result2.vms.length>0){res.verbose_meta_scores=result2.vms.map((s)=>({field_name:s.fn,field_weight:s.fw,matched_terms:s.mt,matched_idf:s.mi,query_total_idf:s.ti,coverage:s.cv,coverage_boost:s.cb}));}return res;});const searchTime=Date.now()-searchStart;const realTime=Date.now()-start;log(`Found ${results.length} result${results.length == 1 ? "" : "s"} for "${term}" in ${Date.now() - searchStart}ms (${Date.now() - start}ms realtime)`);let response={results:resultsInterface,unfilteredResultCount:unfiltered_total,filters:filtered_counts,totalFilters:total_counts,timings:{preload:realTime-searchTime,search:searchTime,total:realTime}};if(search_keywords){response.search_keywords=search_keywords;}if(query_term_idfs){response.query_term_idfs=query_term_idfs.map((q)=>({term:q.t,idf:q.i}));}return response;}};var Pagefind=class{constructor(options2={}){__publicField(this,"primaryLanguage");__publicField(this,"searchID");__publicField(this,"primary");__publicField(this,"instances");this.primaryLanguage="unknown";this.searchID=0;this.primary=new PagefindInstance({...options2,primary:true});this.instances=[this.primary];this.init(options2?.language);}async options(options2){await this.primary.options(options2);}async enterPlaygroundMode(){await this.primary.enterPlaygroundMode();}async init(overrideLanguage){if(isBrowser()&&document?.querySelector){const langCode=document.querySelector("html")?.getAttribute("lang")||"unknown";this.primaryLanguage=langCode.toLocaleLowerCase();}if(overrideLanguage){this.primaryLanguage=overrideLanguage;}await this.primary.init(overrideLanguage?overrideLanguage:this.primaryLanguage,{load_wasm:true});}async mergeIndex(indexPath,options2={}){if(this.primary.basePath.startsWith(indexPath)){console.warn(`Skipping mergeIndex ${indexPath} that appears to be the same as the primary index (${this.primary.basePath})`);return;}let newInstance=new PagefindInstance({primary:false,basePath:indexPath,...options2});this.instances.push(newInstance);while(this.primary.wasm===null){await asyncSleep(50);}await newInstance.init(options2.language||this.primaryLanguage,{load_wasm:false});const{language,...remainingOptions}=options2;await newInstance.options(remainingOptions);}mergeFilters(filters2){const merged={};for(const searchFilter of filters2){for(const[filterKey,values]of Object.entries(searchFilter)){if(!merged[filterKey]){merged[filterKey]=values;continue;}else{const filter=merged[filterKey];for(const[valueKey,count]of Object.entries(values)){filter[valueKey]=(filter[valueKey]||0)+count;}}}}return merged;}async filters(){let filters2=await Promise.all(this.instances.map((i2)=>i2.filters()));return this.mergeFilters(filters2);}async preload(term,options2={}){await Promise.all(this.instances.map((i2)=>i2.preload(term,options2)));}async debouncedSearch(term,options2,debounceTimeoutMs){const thisSearchID=++this.searchID;this.preload(term,options2);await asyncSleep(debounceTimeoutMs);if(thisSearchID!==this.searchID){return null;}const searchResult=await this.search(term,options2);if(thisSearchID!==this.searchID){return null;}return searchResult;}async search(term,options2={}){let search2=await Promise.all(this.instances.map((i2)=>i2.search(term,options2)));const filters2=this.mergeFilters(search2.map((s)=>s.filters));const totalFilters=this.mergeFilters(search2.map((s)=>s.totalFilters));const results=search2.map((s)=>s.results).flat().sort((a,b)=>b.score-a.score);const timings=search2.map((s)=>s.timings);const unfilteredResultCount=search2.reduce((sum,s)=>sum+s.unfilteredResultCount,0);let response={results,unfilteredResultCount,filters:filters2,totalFilters,timings};if(search2[0].search_keywords){response.search_keywords=search2[0].search_keywords;}if(search2[0].query_term_idfs){response.query_term_idfs=search2[0].query_term_idfs;}return response;}};var hasWorkerSupport=typeof window!=="undefined"&&typeof document!=="undefined"&&typeof Worker!=="undefined";var sharedWorker=null;var sharedWorkerRefCount=0;var sharedMessageHandlers=new Map();var nextInstanceId=0;var generateInstanceId=()=>`pf_${nextInstanceId++}`;function initSharedWorker(basePath){if(sharedWorker)return true;try{const workerUrl=`${basePath}pagefind-worker.js`;sharedWorker=new Worker(workerUrl);sharedWorker.addEventListener("error",(error)=>{console.warn("The Pagefind web worker encountered an error, falling back to main thread:",error);sharedWorker=null;const pending=Array.from(sharedMessageHandlers.values());sharedMessageHandlers.clear();for(const{reject}of pending){reject(new Error("Worker failed, falling back to main thread"));}});sharedWorker.addEventListener("message",(event)=>{const{id,result,error}=event.data;const pending=sharedMessageHandlers.get(id);if(pending){sharedMessageHandlers.delete(id);if(error){pending.reject(new Error(error));}else{pending.resolve(result);}}});return true;}catch(e){return false;}}function releaseSharedWorker(){sharedWorkerRefCount--;if(sharedWorkerRefCount<=0&&sharedWorker){sharedWorker.terminate();sharedWorker=null;sharedWorkerRefCount=0;const pending=Array.from(sharedMessageHandlers.values());sharedMessageHandlers.clear();for(const{reject}of pending){reject(new Error("Pagefind worker terminated"));}}}var globalMessageId=0;function sendWorkerMessage(instanceId,method,args){if(!sharedWorker){return Promise.reject(new Error("Worker not available"));}return new Promise((resolve,reject)=>{const id=`msg_${globalMessageId++}`;sharedMessageHandlers.set(id,{resolve,reject});sharedWorker.postMessage({id,instanceId,method,args});});}var PagefindWrapper=class{constructor(options2={}){__publicField(this,"instanceId");__publicField(this,"fallback",null);__publicField(this,"basePath");__publicField(this,"initOptions");__publicField(this,"cleanup");__publicField(this,"initPromise",null);__publicField(this,"initialized",false);__publicField(this,"useWorker",false);this.instanceId=generateInstanceId();this.basePath=options2.basePath||"/pagefind/";this.initOptions=options2;if(/[^\/]$/.test(this.basePath)){this.basePath=`${this.basePath}/`;}if(hasWorkerSupport&&window?.location?.origin&&this.basePath.startsWith(window.location.origin)){this.basePath=this.basePath.replace(window.location.origin,"");}this.initOptions={...this.initOptions,basePath:this.basePath};this.initCleanup();this.initPromise=this.init();}initCleanup(){if(typeof FinalizationRegistry!=="undefined"){this.cleanup=new FinalizationRegistry((dataId)=>{if(this.useWorker&&sharedWorker){try{sendWorkerMessage(this.instanceId,"releaseData",[dataId]).catch(()=>{});}catch(e){}}});}}async init(){if(hasWorkerSupport&&!this.initOptions.noWorker){const workerAvailable=initSharedWorker(this.basePath);if(workerAvailable){try{sharedWorkerRefCount++;this.useWorker=true;await Promise.race([sendWorkerMessage(this.instanceId,"init",[this.initOptions]),new Promise((_,reject)=>setTimeout(()=>reject(new Error("Worker initialization timeout")),5e3))]);this.initialized=true;}catch(error){console.warn("Failed to initialize Pagefind in the web worker, falling back to main thread:",error);sendWorkerMessage(this.instanceId,"destroy",[]).catch(()=>{});this.useWorker=false;sharedWorkerRefCount--;this.initFallback();this.initialized=true;}}else{this.initFallback();this.initialized=true;}}else{this.initFallback();this.initialized=true;}}waitForInit(){return this.initPromise??Promise.resolve();}initFallback(){if(!this.fallback){this.fallback=new Pagefind(this.initOptions);}}async sendMessage(method,args){if(!this.initialized&&method!=="init"){if(this.initPromise){await this.initPromise;}}if(this.fallback){const fn=this.fallback[method];if(typeof fn==="function"){const result=await fn.apply(this.fallback,args);if((method==="search"||method==="debouncedSearch")&&result&&args[1]&&args[1].verbose){result.search_environment="mainthread";}return result;}throw new Error(`Method ${method} not found on fallback`);}if(!this.useWorker||!sharedWorker){throw new Error("Worker not initialized");}return sendWorkerMessage(this.instanceId,method,args);}async options(options2){return this.sendMessage("options",[options2]);}async enterPlaygroundMode(){return this.sendMessage("enterPlaygroundMode",[]);}async mergeIndex(indexPath,options2={}){return this.sendMessage("mergeIndex",[indexPath,options2]);}async search(term,options2={}){const results=await this.sendMessage("search",[term,options2]);if(results&&results.results){for(const result of results.results){if(typeof result.data==="string"){const dataId=result.data;if(this.cleanup){this.cleanup.register(result,dataId);}result.data=async()=>{return this.sendMessage("getData",[dataId]);};}}}return results;}async debouncedSearch(term,options2,debounceTimeoutMs){const results=await this.sendMessage("debouncedSearch",[term,options2,debounceTimeoutMs]);if(results&&results.results){for(const result of results.results){if(typeof result.data==="string"){const dataId=result.data;if(this.cleanup){this.cleanup.register(result,dataId);}result.data=async()=>{return this.sendMessage("getData",[dataId]);};}}}return results;}async preload(term,options2={}){return this.sendMessage("preload",[term,options2]);}async filters(){return this.sendMessage("filters",[]);}async destroy(){if(this.useWorker){try{await sendWorkerMessage(this.instanceId,"destroy",[]);}catch(e){}this.useWorker=false;releaseSharedWorker();}if(this.fallback){this.fallback=null;}}};var pagefind=void 0;var initial_options=void 0;var deriveBasePath=(explicit)=>{if(explicit)return explicit;if(typeof import.meta.url!=="undefined"){return import.meta.url.match(/^(.*\/)pagefind.js.*$/)?.[1];}};var detectLanguage=()=>{if(typeof document!=="undefined"&&document?.querySelector){return(document.querySelector("html")?.getAttribute("lang")||"unknown").toLowerCase();}return"unknown";};var init_pagefind=()=>{if(!pagefind){pagefind=new PagefindWrapper({...initial_options,basePath:deriveBasePath(initial_options?.basePath),language:detectLanguage(),primary:true});}};var options=async(new_options)=>{if(pagefind){await pagefind.options(new_options);}else{initial_options=new_options;}};var init=async()=>{init_pagefind();};var destroy=async()=>{if(pagefind){await pagefind.destroy();}pagefind=void 0;initial_options=void 0;};var mergeIndex=async(indexPath,options2)=>{init_pagefind();return await pagefind.mergeIndex(indexPath,options2);};var search=async(term,options2)=>{init_pagefind();return await pagefind.search(term,options2);};var debouncedSearch=async(term,options2,debounceTimeoutMs=300)=>{init_pagefind();return await pagefind.debouncedSearch(term,options2,debounceTimeoutMs);};var preload=async(term,options2)=>{init_pagefind();return await pagefind.preload(term,options2);};var filters=async()=>{init_pagefind();return await pagefind.filters();};var createInstance=(instanceOptions)=>{const wrapper=new PagefindWrapper({...instanceOptions,basePath:deriveBasePath(instanceOptions?.basePath),language:detectLanguage(),primary:true});return{options:(opts)=>wrapper.options(opts),init:()=>wrapper.waitForInit(),destroy:()=>wrapper.destroy(),mergeIndex:(indexPath,options2)=>wrapper.mergeIndex(indexPath,options2),search:(term,options2={})=>wrapper.search(term,options2),debouncedSearch:(term,options2,debounceTimeoutMs=300)=>wrapper.debouncedSearch(term,options2,debounceTimeoutMs),preload:(term,options2={})=>wrapper.preload(term,options2),filters:()=>wrapper.filters()};};export{createInstance,debouncedSearch,destroy,filters,init,mergeIndex,options,preload,search}; \ No newline at end of file diff --git a/webstatic.example/dist/pagefind/pagefind.vi_2270a45bad.pf_meta b/webstatic.example/dist/pagefind/pagefind.vi_2270a45bad.pf_meta new file mode 100644 index 0000000..2441ab9 Binary files /dev/null and b/webstatic.example/dist/pagefind/pagefind.vi_2270a45bad.pf_meta differ diff --git a/webstatic.example/dist/pagefind/wasm.de.pagefind b/webstatic.example/dist/pagefind/wasm.de.pagefind new file mode 100644 index 0000000..57ed993 Binary files /dev/null and b/webstatic.example/dist/pagefind/wasm.de.pagefind differ diff --git a/webstatic.example/dist/pagefind/wasm.en.pagefind b/webstatic.example/dist/pagefind/wasm.en.pagefind new file mode 100644 index 0000000..8693a66 Binary files /dev/null and b/webstatic.example/dist/pagefind/wasm.en.pagefind differ diff --git a/webstatic.example/dist/pagefind/wasm.unknown.pagefind b/webstatic.example/dist/pagefind/wasm.unknown.pagefind new file mode 100644 index 0000000..0726f05 Binary files /dev/null and b/webstatic.example/dist/pagefind/wasm.unknown.pagefind differ diff --git a/webstatic.example/dist/robots.txt b/webstatic.example/dist/robots.txt new file mode 100644 index 0000000..2a2191d --- /dev/null +++ b/webstatic.example/dist/robots.txt @@ -0,0 +1,3 @@ +User-agent: * +Allow: / +Sitemap: http://localhost:8000/sitemap.xml \ No newline at end of file diff --git a/webstatic.example/dist/sitemap.xml b/webstatic.example/dist/sitemap.xml new file mode 100644 index 0000000..e34efa9 --- /dev/null +++ b/webstatic.example/dist/sitemap.xml @@ -0,0 +1,15 @@ + + + http://localhost:8000/de/ + http://localhost:8000/ + http://localhost:8000/ + http://localhost:8000/ueber/ + http://localhost:8000/en/ + http://localhost:8000/ + http://localhost:8000/ + http://localhost:8000/ueber/ + http://localhost:8000/vi/ + http://localhost:8000/ + http://localhost:8000/ + http://localhost:8000/ueber/ + \ No newline at end of file diff --git a/webstatic.example/dist/vi/impressum.html b/webstatic.example/dist/vi/impressum.html new file mode 100644 index 0000000..3617122 --- /dev/null +++ b/webstatic.example/dist/vi/impressum.html @@ -0,0 +1,73 @@ + + + + + + + +Impressum + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +

    Impressum

    +

    Beispiel-Website · Ansprechpartner: webmaster@example.org

    +

    © 2026 Beispiel-Website. Erstellt mit GCBoK.WebStaticBuilder (MIT).

    + + +
    +
    + + + + + + diff --git a/webstatic.example/dist/vi/index.html b/webstatic.example/dist/vi/index.html new file mode 100644 index 0000000..b67ad08 --- /dev/null +++ b/webstatic.example/dist/vi/index.html @@ -0,0 +1,85 @@ + + + + + + + +Startseite + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +

    Willkommen bei GCBoK.WebStaticBuilder

    +

    Dies ist der Banner-Block (order 0), der auf der Startseite (Hero/Landing) eingebettet wird.

    +

    Einführung

    +

    Diese Seite wurde mit GCBoK.WebStaticBuilder erzeugt — einem statischen, mehrsprachigen +Generator für compliance-freundliche Websites (MIT, OSS).

    +

    Funktionen

    +
      +
    • Markdown mit YAML-Frontmatter
    • +
    • Mehrsprachigkeit (de / en / vi)
    • +
    • SEO-Kopf, Sitemap, robots.txt
    • +
    • Client-Suche via Pagefind
    • +
    • UI-Lokalisierung über {{ i18n.* }}
    • +
    +

    Nächste Schritte

    +

    Siehe docs/ im Repository für die Einrichtung.

    + + +
    +
    + + + + + + diff --git a/webstatic.example/dist/vi/ueber.html b/webstatic.example/dist/vi/ueber.html new file mode 100644 index 0000000..d8bb7e8 --- /dev/null +++ b/webstatic.example/dist/vi/ueber.html @@ -0,0 +1,81 @@ + + + + + + + +Über das Projekt + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +

    Über

    +

    GCBoK.WebStaticBuilder ist ein eigenständiges OSS-Tool der GitCover Commons. +Es erzeugt statische Websites ohne Server, Datenbank oder Build-Service.

    +
    graph TD + A[Markdown] --> B(Builder) + B --> C[HTML] + C --> D[Pagefind Index] +
    + + +
    +
    + + + + + + diff --git a/webstatic.example/i18n.json b/webstatic.example/i18n.json new file mode 100644 index 0000000..da8bf9b --- /dev/null +++ b/webstatic.example/i18n.json @@ -0,0 +1,53 @@ +{ + "de": { + "aria": { + "skip": "Zum Hauptinhalt springen", + "brand": "Zur Startseite", + "main_nav": "Hauptnavigation", + "lang_switcher": "Sprachumschalter" + }, + "nav": { + "brand": "Meine Website" + }, + "footer": { + "col1_heading": "MEINE WEBSITE", + "col1_line2": "Ein Beispiel für GCBoK.WebStaticBuilder", + "col4_imprint": "Impressum", + "bottom_copyright": "© 2026 Meine Website" + } + }, + "en": { + "aria": { + "skip": "Skip to main content", + "brand": "Back to home", + "main_nav": "Main navigation", + "lang_switcher": "Language switcher" + }, + "nav": { + "brand": "My Website" + }, + "footer": { + "col1_heading": "MY WEBSITE", + "col1_line2": "An example for GCBoK.WebStaticBuilder", + "col4_imprint": "Imprint", + "bottom_copyright": "© 2026 My Website" + } + }, + "vi": { + "aria": { + "skip": "Đến nội dung chính", + "brand": "Về trang chủ", + "main_nav": "Điều hướng chính", + "lang_switcher": "Chuyển ngôn ngữ" + }, + "nav": { + "brand": "Trang web của tôi" + }, + "footer": { + "col1_heading": "TRANG WEB CỦA TÔI", + "col1_line2": "Một ví dụ cho GCBoK.WebStaticBuilder", + "col4_imprint": "Thông tin pháp lý", + "bottom_copyright": "© 2026 Trang web của tôi" + } + } +} diff --git a/webstatic.example/run_log.txt b/webstatic.example/run_log.txt new file mode 100644 index 0000000..ee2152c --- /dev/null +++ b/webstatic.example/run_log.txt @@ -0,0 +1,5 @@ + +=== Run Started: 2026-07-11 12:00:07.880 === +Language: de, Files: 3 +Language: en, Files: 3 +Language: vi, Files: 3 diff --git a/webstatic.example/templates/layout.html b/webstatic.example/templates/layout.html new file mode 100644 index 0000000..dc86dbe --- /dev/null +++ b/webstatic.example/templates/layout.html @@ -0,0 +1,48 @@ + + + + + + {{ seo_head }} + {{ json_ld }} + + + + + + + + + +
    +
    +{{ body }} +{{ page_nav }} +
    +
    + + + + + + diff --git a/webstatic.example/webstatic.json b/webstatic.example/webstatic.json new file mode 100644 index 0000000..08654b1 --- /dev/null +++ b/webstatic.example/webstatic.json @@ -0,0 +1,38 @@ +{ + "site": { + "name": "Meine Website", + "title": { "de": "Meine Website", "en": "My Website", "vi": "Trang web của tôi" }, + "description": { + "de": "Eine mehrsprachige, statische Website.", + "en": "A multilingual, static website.", + "vi": "Một trang web tĩnh, đa ngôn ngữ." + } + }, + "default_language": "de", + "languages": { + "de": { "name": "Deutsch", "og_locale": "de_DE", "href_lang": "de", "label": "Deutsch" }, + "en": { "name": "English", "og_locale": "en_US", "href_lang": "en", "label": "English" }, + "vi": { "name": "Tiếng Việt", "og_locale": "vi_VN", "href_lang": "vi", "label": "Tiếng Việt" } + }, + "paths": { + "content": "content", + "templates": "templates", + "assets": "assets", + "output": "dist", + "legal": "legal", + "i18n": "i18n.json" + }, + "glossary_section": "glossar", + "glossary": { + "href": { "de": "glossar.html", "en": "glossary.html", "vi": "b-ng-thu-t-ng.html" }, + "label": { "de": "Glossar", "en": "Glossary", "vi": "Bảng thuật ngữ" } + }, + "pagefind": true, + "translator": { "provider": "azure", "key_env": "WEBSTATIC_TRANSLATOR_KEY" }, + "environments": { + "work": { "base_url": "http://localhost:8000", "cdn": "/assets" }, + "review": { "base_url": "https://review.gitcover.org", "cdn": "https://gitcover.org/assets" }, + "staging": { "base_url": "https://gcbok.gitcover.org", "cdn": "https://gitcover.org/assets" }, + "deploy": { "base_url": "https://gcbok.org", "cdn": "https://gitcover.org/assets" } + } +}