@mdn/fred 2.6.1 → 2.6.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/components/compat-table/element.js +1 -6
  3. package/components/content-section/server.css +16 -0
  4. package/l10n/fluent.js +35 -5
  5. package/l10n/locales/de.ftl +17 -17
  6. package/l10n/locales/en-US.ftl +15 -15
  7. package/l10n/locales/fr.ftl +17 -17
  8. package/l10n/locales/zh-CN.ftl +17 -17
  9. package/l10n/template.ftl +17 -17
  10. package/out/service-worker.js +1 -1
  11. package/out/static/client/{1111.53dba753dc3eb961.js → 1111.c87a899e1dfa66e2.js} +3 -3
  12. package/out/static/client/{1111.53dba753dc3eb961.js.map → 1111.c87a899e1dfa66e2.js.map} +1 -1
  13. package/out/static/client/{1550.c301ea407e875fce.js → 1550.28c1604f8ddeb85d.js} +19 -19
  14. package/out/static/client/1550.28c1604f8ddeb85d.js.map +1 -0
  15. package/out/static/client/{6002.a03e92074fe12303.js → 6002.b8ee179b783a6ed9.js} +7 -8
  16. package/out/static/client/6002.b8ee179b783a6ed9.js.map +1 -0
  17. package/out/static/client/6216.96bf25a9941b1705.js +2 -0
  18. package/out/static/client/6216.96bf25a9941b1705.js.map +1 -0
  19. package/out/static/client/{6333.530138f4b30df5a7.js → 6333.d2c9af5b65988046.js} +18 -18
  20. package/out/static/client/6333.d2c9af5b65988046.js.map +1 -0
  21. package/out/static/client/6703.19836388dfba3a26.js +3 -0
  22. package/out/static/client/6703.19836388dfba3a26.js.map +1 -0
  23. package/out/static/client/{9456.a17794342ff9086a.js → 9456.c664136cffa5c45c.js} +18 -18
  24. package/out/static/client/9456.c664136cffa5c45c.js.map +1 -0
  25. package/out/static/client/{index.1aa902f2877f6169.js → index.8d9d3fc7007ac6c9.js} +24 -24
  26. package/out/static/client/index.8d9d3fc7007ac6c9.js.map +1 -0
  27. package/out/static/client/{runtime.dc0d40fc704cab38.js → runtime.b626b01b6203a207.js} +2 -2
  28. package/out/static/client/{runtime.dc0d40fc704cab38.js.map → runtime.b626b01b6203a207.js.map} +1 -1
  29. package/out/static/client/stats.json +197 -197
  30. package/out/static/client/{styles-content-section.447b2154ef6d091d.css → styles-content-section.64d82cff4db3bf61.css} +2 -2
  31. package/out/static/client/styles-content-section.64d82cff4db3bf61.css.map +1 -0
  32. package/out/static/client/{styles-global.64aa0c760d2688b4.js → styles-global.bbe62c66bfdbcd4d.js} +1 -1
  33. package/out/static/client/styles-global.e9f66980fd6d9827.css +2 -0
  34. package/out/static/client/styles-global.e9f66980fd6d9827.css.map +1 -0
  35. package/out/static/legacy/{1689.9711944d8ca293fe.js → 1689.c0b991fb10a9e7cb.js} +3 -3
  36. package/out/static/legacy/{1689.9711944d8ca293fe.js.map → 1689.c0b991fb10a9e7cb.js.map} +1 -1
  37. package/out/static/legacy/{1745.98ac3d247214830b.js → 1745.82a1f10c1503c733.js} +3 -3
  38. package/out/static/legacy/{1745.98ac3d247214830b.js.map → 1745.82a1f10c1503c733.js.map} +1 -1
  39. package/out/static/legacy/{6186.d28521fe744f5fce.js → 6186.b6bdcd96fbe2e1b9.js} +3 -3
  40. package/out/static/legacy/{6186.d28521fe744f5fce.js.map → 6186.b6bdcd96fbe2e1b9.js.map} +1 -1
  41. package/out/static/legacy/6753.b8ce73a4530c7c97.js +27 -0
  42. package/out/static/legacy/6753.b8ce73a4530c7c97.js.map +1 -0
  43. package/out/static/legacy/asset-manifest.json +13 -13
  44. package/out/static/legacy/{index.9dc3c2419a5a39a3.js → index.3434d57e71ba6934.js} +4 -4
  45. package/out/static/legacy/{index.9dc3c2419a5a39a3.js.map → index.3434d57e71ba6934.js.map} +1 -1
  46. package/out/static/legacy/{index.e64d272f9892581a.html → index.c93dd3065fbda85c.html} +1 -1
  47. package/out/static/legacy/stats.json +10 -10
  48. package/out/static/legacy/{yari.c83cdb7dea1873d5.js → yari.04fc2a81492d16ef.js} +4 -4
  49. package/out/static/legacy/{yari.c83cdb7dea1873d5.js.map → yari.04fc2a81492d16ef.js.map} +1 -1
  50. package/out/static/ssr/1550.js +18 -18
  51. package/out/static/ssr/1550.js.map +1 -1
  52. package/out/static/ssr/6333.js +17 -17
  53. package/out/static/ssr/6333.js.map +1 -1
  54. package/out/static/ssr/9456.js +17 -17
  55. package/out/static/ssr/9456.js.map +1 -1
  56. package/out/static/ssr/index.js +31 -32
  57. package/out/static/ssr/index.js.map +1 -1
  58. package/out/static/ssr/stats.json +4 -4
  59. package/package.json +18 -18
  60. package/scripts/tests.js +90 -113
  61. package/test/README.md +7 -9
  62. package/out/static/client/1550.c301ea407e875fce.js.map +0 -1
  63. package/out/static/client/6002.a03e92074fe12303.js.map +0 -1
  64. package/out/static/client/6216.78a5cbef9a158ef8.js +0 -2
  65. package/out/static/client/6216.78a5cbef9a158ef8.js.map +0 -1
  66. package/out/static/client/6333.530138f4b30df5a7.js.map +0 -1
  67. package/out/static/client/6703.145548dea2dbb16d.js +0 -3
  68. package/out/static/client/6703.145548dea2dbb16d.js.map +0 -1
  69. package/out/static/client/9456.a17794342ff9086a.js.map +0 -1
  70. package/out/static/client/index.1aa902f2877f6169.js.map +0 -1
  71. package/out/static/client/styles-content-section.447b2154ef6d091d.css.map +0 -1
  72. package/out/static/client/styles-global.653c021fe5dca598.css +0 -2
  73. package/out/static/client/styles-global.653c021fe5dca598.css.map +0 -1
  74. package/out/static/legacy/6753.c3e5bc5b6a088f28.js +0 -27
  75. package/out/static/legacy/6753.c3e5bc5b6a088f28.js.map +0 -1
  76. /package/out/static/client/{1111.53dba753dc3eb961.js.LICENSE.txt → 1111.c87a899e1dfa66e2.js.LICENSE.txt} +0 -0
  77. /package/out/static/client/{6703.145548dea2dbb16d.js.LICENSE.txt → 6703.19836388dfba3a26.js.LICENSE.txt} +0 -0
  78. /package/out/static/client/{index.1aa902f2877f6169.js.LICENSE.txt → index.8d9d3fc7007ac6c9.js.LICENSE.txt} +0 -0
  79. /package/out/static/legacy/{1689.9711944d8ca293fe.js.LICENSE.txt → 1689.c0b991fb10a9e7cb.js.LICENSE.txt} +0 -0
  80. /package/out/static/legacy/{1745.98ac3d247214830b.js.LICENSE.txt → 1745.82a1f10c1503c733.js.LICENSE.txt} +0 -0
  81. /package/out/static/legacy/{6186.d28521fe744f5fce.js.LICENSE.txt → 6186.b6bdcd96fbe2e1b9.js.LICENSE.txt} +0 -0
  82. /package/out/static/legacy/{6753.c3e5bc5b6a088f28.js.LICENSE.txt → 6753.b8ce73a4530c7c97.js.LICENSE.txt} +0 -0
  83. /package/out/static/legacy/{index.9dc3c2419a5a39a3.js.LICENSE.txt → index.3434d57e71ba6934.js.LICENSE.txt} +0 -0
  84. /package/out/static/legacy/{yari.c83cdb7dea1873d5.js.LICENSE.txt → yari.04fc2a81492d16ef.js.LICENSE.txt} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"6333.530138f4b30df5a7.js","sources":["webpack://@mdn/fred/./l10n/locales/de.ftl"],"sourcesContent":["export default `content-feedback-question = War diese Übersetzung hilfreich?\ncontent-feedback-reason = Warum war diese Übersetzung nicht hilfreich?\ncontent-feedback-thanks = Vielen Dank für die Rückmeldung!\n\nfooter-tagline = Der Bauplan für ein besseres Internet.\nfooter-mofo = Besuche die gemeinnützige Muttergesellschaft der <a data-l10n-name=\"moco\">Mozilla Corporation</a>, die <a data-l10n-name=\"mofo\">Mozilla Foundation</a>.\nfooter-copyright = Teile dieses Inhalts sind ©1998–{ \\$year } von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfügbar unter <a data-l10n-name=\"cc\">einer Creative-Commons-Lizenz</a>.\n\nsearch-modal-site-search = Website-Suche nach <em>{ \\$query }</em>\n\nsite-search-search-stats = { \\$results } Dokumente gefunden.\nsite-search-suggestion-matches = { \\$relation ->\n [gt] mehr als { \\$matches ->\n [one] { \\$matches } Übereinstimmung\n *[other] { \\$matches } Übereinstimmungen\n }\n *[eq] { \\$matches ->\n [one] { \\$matches } Übereinstimmung\n *[other] { \\$matches } Übereinstimmungen\n }\n}\n\nblog-time-to-read = { \\$minutes ->\n [one] { \\$minutes } Minute Lesezeit\n *[other] { \\$minutes } Minuten Lesezeit\n}\n\n-brand-name-obs = HTTP Observatory\nobs-report = Bericht\nobs-title = { -brand-name-obs }\nobs-landing-intro = Seit 2016 verbessert { -brand-name-obs } die Sicherheit durch Analyse der Einhaltung bewährter Sicherheitspraktiken. Es hat durch 47 Millionen Scans Einblicke in über 6,9 Millionen Websites geliefert.\nobs-assessment = Das von Mozilla entwickelte { -brand-name-obs } führt eine umfassende Bewertung der HTTP-Header und weiterer zentraler Sicherheitskonfigurationen einer Website durch.\nobs-scanning = Der automatisierte Scan-Prozess liefert detailliertes, handlungsorientiertes Feedback für Entwicklungsteams und Website-Administration und konzentriert sich darauf, potenzielle Sicherheitslücken zu erkennen und zu beheben.\nobs-security = Das Tool unterstützt Entwicklungsteams und Website-Administration dabei, Websites in einem sich stetig weiterentwickelnden digitalen Umfeld gegen häufige Sicherheitsbedrohungen abzusichern.\nobs-mdn = Das { -brand-name-obs } bietet wirksame Sicherheitseinblicke auf Grundlage von Mozillas Expertise und Engagement für ein sichereres Internet sowie basierend auf etablierten Trends und Richtlinien.\n\narticle-footer-last-modified = Diese Seite wurde zuletzt am <time data-l10n-name=\"date\">{ \\$date }</time> von <a data-l10n-name=\"contributors\">MDN-Mitwirkenden</a> bearbeitet.\narticle-footer-source-title = Ordner: { \\$folder } (öffnet in neuem Tab)\nbaseline-asterisk = Einige Teile dieser Funktion werden möglicherweise unterschiedlich gut unterstützt.\nbaseline-high-extra = Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit { \\$date } browserübergreifend verfügbar.\nbaseline-low-extra = Seit { \\$date } funktioniert diese Funktion auf aktuellen Geräten und in aktuellen Browserversionen. Auf älteren Geräten oder in älteren Browsern funktioniert sie möglicherweise nicht.\nbaseline-not-extra = Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.\nbaseline-supported-in = Unterstützt in { \\$browsers }\nbaseline-unsupported-in = In { \\$browsers } nicht weitgehend unterstützt\nbaseline-supported-and-unsupported-in = Unterstützt in { \\$supported }, aber in { \\$unsupported } nicht weitgehend unterstützt\nhomepage-hero-title = Ressourcen für Entwickelnde,<br> von Entwickelnden\nhomepage-hero-description = Dokumentation zu <a data-l10n-name=\"css\">CSS</a>, <a data-l10n-name=\"html\">HTML</a> und <a data-l10n-name=\"js\">JavaScript</a> – seit 2005.\nnot-found-title = Seite nicht gefunden\nnot-found-description = Entschuldigung, die Seite <code data-l10n-name=\"url\">{ \\$url }</code> wurde nicht gefunden.\nnot-found-fallback-english = <strong data-l10n-name=\"strong\">Gute Nachricht:</strong> Die angeforderte Seite existiert auf <em data-l10n-name=\"em\">Englisch</em>.\nnot-found-fallback-search = Die angeforderte Seite existiert nicht, aber Sie könnten eine Website-Suche versuchen nach:\nnot-found-back = Zurück zur Startseite\ncompat-browser-version-date = { \\$browser } { \\$version } – Veröffentlichungsdatum: { \\$date }\ncompat-browser-version-released = Veröffentlichungsdatum: { \\$date }\ncompat-link-source-title = Datei: { \\$filename }\ncompat-support-prefix = Implementiert mit dem Hersteller-Präfix: { \\$prefix }\ncompat-support-altname = Alternativer Name: { \\$altname }\ncompat-support-removed = Ab { \\$version } entfernt\ncompat-support-see-impl-url = Siehe <a data-l10n-name=\"impl_url\">{ \\$label }</a>\ncompat-support-flags =\n { NUMBER(\\$has_added) ->\n [one] Ab Version { \\$version_added }\n *[other] { \"\" }\n }{ \\$has_last ->\n [one]\n { NUMBER(\\$has_added) ->\n *[zero] Bis { \\$versionLast } muss\n [one] { \" \" }bis { \\$versionLast } muss\n }\n *[zero]\n { NUMBER(\\$has_added) ->\n *[zero] muss\n [one] { \" \" }muss\n }\n }\n { \" \" }die Einstellung <code data-l10n-name=\"name\">{ \\$flag_name }</code>{ \" \" }\n { \\$flag_type ->\n *[preference] explizit festgelegt werden\n [runtime_flag] als Laufzeit-Flag explizit festgelegt werden\n\n }{ NUMBER(\\$has_value) ->\n [one] { \" \" }auf <code data-l10n-name=\"value\">{ \\$flag_value }</code>\n *[other] { \"\" }\n }{ \".\" }\n { NUMBER(\\$has_pref_url) ->\n [one]\n { \\$flag_type ->\n [preference] Um die Einstellungen in { \\$browser_name } zu ändern, besuchen Sie { \\$browser_pref_url }.\n *[other] { \"\" }\n }\n *[other] { \"\" }\n }\ncompat-legend-yes = { compat-support-full }\ncompat-legend-partial = { compat-support-partial }\ncompat-legend-preview = In Entwicklung. In einer Vorabversion unterstützt.\ncompat-legend-no = { compat-support-no }\ncompat-legend-unknown = Kompatibilität unbekannt\ncompat-legend-experimental = { compat-experimental }. Verhaltensänderungen in der Zukunft sind zu erwarten.\ncompat-legend-nonstandard = { compat-nonstandard }. Überprüfen Sie die browserübergreifende Unterstützung vor der Verwendung.\ncompat-legend-deprecated = { compat-deprecated }. Nicht für neue Websites verwenden.\ncompat-legend-footnote = Implementierungshinweise ansehen.\ncompat-legend-disabled = Diese Funktion muss explizit aktiviert werden.\ncompat-legend-altname = Verwendet einen nicht standardmäßigen Namen.\ncompat-legend-prefix = Erfordert ein Hersteller-Präfix oder einen anderen Namen zur Verwendung.\ncompat-legend-more = Hat mehr Kompatibilitätsinformationen.\nplacement-note = Anzeige\nplacement-no = Keine Werbung erwünscht?\npagination-next = Nächste Seite\npagination-prev = Vorherige Seite\npagination-current = Aktuelle Seite\npagination-goto = Zur Seite { \\$page }\nlogout = Abmelden\nlogin = Anmelden\nexample-play-button-label = Abspielen\nexample-play-button-title = Beispiel im MDN Playground ausführen (öffnet in neuem Tab)\nwriter-reload-polling = Aktualisierung alle { \\$seconds } s\na11y-menu-skip-to-main-content = Zum Hauptinhalt springen\na11y-menu-skip-to-search = Zur Suche springen\narticle-footer-learn-how-to-contribute = Erfahren Sie, wie Sie beitragen können\narticle-footer-view-this-page-on-github = Diese Seite auf GitHub ansehen\narticle-footer-this-will-take-you-to-github-to = Dies führt Sie zu GitHub, um ein neues Problem zu melden.\narticle-footer-report-a-problem-with-this-conte = Ein Problem mit diesem Inhalt melden\nbaseline-indicator-baseline-cross = Baseline (nicht erfüllt)\nbaseline-indicator-baseline-check = Baseline (erfüllt)\nbaseline-indicator-limited-availability = Eingeschränkt verfügbar\nbaseline-indicator-baseline = Baseline\nbaseline-indicator-widely-available = Weitgehend verfügbar\nbaseline-indicator-newly-available = Neu verfügbar\nbaseline-indicator-check = Häkchen\nbaseline-indicator-cross = Kreuz\nbaseline-indicator-learn-more = Mehr erfahren\nbaseline-indicator-see-full-compatibility = Vollständige Kompatibilität anzeigen\nbaseline-indicator-report-feedback = Feedback geben\nblog-previous = Vorheriger Beitrag\nblog-next = Nächster Beitrag\nblog-index-blog-it-better = Blog it better\nreference-toc-header = In diesem Artikel\nblog-post-not-found = Blogartikel nicht gefunden.\ncollection-save-button-save-in-collection = In einer Sammlung speichern\ncollection-save-button-remove = Entfernen\ncollection-save-button-save = Speichern\ncollection-save-button-add-to-collection = Zur Sammlung hinzufügen\ncollection-save-button-collection = Sammlung:\ncollection-save-button-saved-articles = Gespeicherte Artikel\ncollection-save-button-new-collection = Neue Sammlung\ncollection-save-button-name = Name:\ncollection-save-button-note = Notiz:\ncollection-save-button-saving = Wird gespeichert…\ncollection-save-button-cancel = Abbrechen\ncollection-save-button-deleting = Wird gelöscht…\ncollection-save-button-delete = Löschen\ntheme-default = Systemeinstellung\ncolor-theme-light = Hell\ncolor-theme-dark = Dunkel\ncolor-theme-switch-color-theme = Farbschema wechseln\ncolor-theme-theme = Farbschema\ncompat-link-report-issue-title = Ein Problem mit diesen Kompatibilitätsdaten melden\ncompat-link-report-issue = Probleme mit diesen Kompatibilitätsdaten melden\ncompat-link-source = Daten auf GitHub ansehen\ncompat-experimental = Experimentell\ncompat-deprecated = Veraltet\ncompat-nonstandard = Nicht standardisiert\ncompat-support-partial = Teilweise unterstützt\ncompat-support-preview-browser = Unterstützung in einer Vorabversion des Browsers\ncompat-support-full = Vollständig unterstützt\ncompat-support-no = Nicht unterstützt\ncompat-support-unknown = Unterstützung unbekannt\ncompat-yes = Ja\ncompat-partial = Teilweise\ncompat-no = Nein\ncompat-support-preview = Unterstützt in Vorabversion\ncompat-legend = Legende\ncompat-legend-tip = Tipp: Sie können auf eine Zelle klicken oder tippen, um weitere Informationen zu erhalten.\ncompat-link-report-missing-title = Fehlende Kompatibilitätsdaten melden\ncompat-link-report-missing = Dieses Problem melden\ncompat-js-required = JavaScript aktivieren, um diese Browser-Kompatibilitätstabelle anzuzeigen.\ncompat-loading = Wird geladen…\ncontent-feedback-content-is-out-of-date = Inhalt ist veraltet\ncontent-feedback-missing-information = Fehlende Informationen\ncontent-feedback-code-examples-not-working-as-exp = Codebeispiele funktionieren nicht wie erwartet\ncontent-feedback-other = Sonstiges\ncontent-feedback-yes = Ja\ncontent-feedback-no = Nein\ncontent-feedback-submit = Absenden\ncontributor-spotlight-want-to-be-part-of-the-journey = Möchten Sie Teil der Reise sein?\ncontributor-spotlight-our-constant-quest-for-innovatio = Unsere ständige Suche nach Innovation beginnt hier, mit Ihnen. Jeder Teil von MDN (Dokumentationen, Demos und die Website selbst) entsteht aus unserer großartigen offenen Entwicklergemeinschaft. Bitte machen Sie mit!\ncontributor-spotlight-get-involved = Mitmachen\ncontributor-spotlight-contributor-profile = Mitwirkendenprofil\ncopy-button-copied = Kopiert\ncopy-button-copy-failed = Kopieren fehlgeschlagen!\ncopy-button-copy = Kopieren\nfooter-mdn-on-github = MDN auf GitHub\nfooter-mdn-on-bluesky = MDN auf Bluesky\nfooter-mdn-on-x = MDN auf X\nfooter-mdn-on-mastodon = MDN auf Mastodon\nfooter-mdn-blog-rss-feed = MDN-Blog-RSS-Feed\nfooter-mdn = MDN\nfooter-about = Über uns\nfooter-blog = Blog\nfooter-mozilla-careers = Jobs bei Mozilla\nfooter-advertise-with-us = Mit uns werben\nfooter-mdn-plus = MDN Plus\nfooter-product-help = Produkthilfe\nfooter-contribute = Mitmachen\nfooter-mdn-community = MDN-Community\nfooter-community-resources = Community-Ressourcen\nfooter-writing-guidelines = Schreibrichtlinien\nfooter-mdn-discord = MDN-Discord\nfooter-developers = Entwicklung\nfooter-web-technologies = Webtechnologien\nfooter-learn-web-development = Webentwicklung lernen\nfooter-guides = Leitfäden\nfooter-tutorials = Tutorials\nfooter-glossary = Glossar\nfooter-hacks-blog = Hacks-Blog\nfooter-website-privacy-notice = Datenschutzerklärung der Website\nfooter-telemetry-settings = Telemetrie-Einstellungen\nfooter-legal = Rechtliches\nfooter-community-participation-guidelin = Community-Teilnahmerichtlinien\nfooter-mdn-logo = MDN-Logo\nfooter-mozilla-logo = Mozilla-Logo\ngeneric-toc__header = In diesem Artikel\nhomepage-body-featured-articles = Ausgewählte Artikel\nhomepage-body-latest-news = Neuigkeiten\nhomepage-body-recent-contributions = Neueste Beiträge\nhomepage-contributor-spotlight-contributor-spotlight = Mitwirkende im Fokus\nhomepage-contributor-spotlight-get-involved = Mitmachen\nhomepage-search-search-the-site = Website durchsuchen\nhomepage-search-search = Suche\ninteractive-example-reset = Zurücksetzen\ninteractive-example-value-select = Wertauswahl\ninteractive-example-the-current-value-is-not-support = Der aktuelle Wert wird von Ihrem Browser nicht unterstützt.\ninteractive-example-run-example-and-show-console-ou = Beispiel ausführen und Konsolenausgabe anzeigen\ninteractive-example-run = Ausführen\ninteractive-example-reset-example-and-clear-console = Beispiel zurücksetzen und Konsolenausgabe löschen\ninteractive-example-console-output = Konsolenausgabe\ninteractive-example-output = Ausgabe\nissues-table-loading-issues = GitHub-Issues werden geladen…\nissues-table-title = Titel\nissues-table-repository = Repository\nlanguage-switcher-remember-language = Sprache merken\nlanguage-switcher-enable-this-setting-to-always-sw = Aktivieren Sie diese Einstellung, um immer zur aktuell ausgewählten Sprache zu wechseln, wenn sie verfügbar ist. (Klicken Sie hier, um mehr zu erfahren.)\nlanguage-switcher-learn-more = Mehr erfahren\nlogin-button-login = Anmelden\nmodal-exit-modal = Modal schließen\nnavigation-toggle-navigation = Navigation umschalten\nobs-about-title = Über das HTTP Observatory\nobservatory-landing-read-our-faq = FAQ lesen\nobservatory-landing-report-feedback = Feedback geben\nobservatory-rescan-button-rescan = Erneut scannen\nobservatory-rescan-button-wait-a-minute-to-rescan = Warten Sie eine Minute, um erneut zu scannen\nobservatory-results-report-feedback = Feedback geben\nobservatory-results-faq = FAQ\nobservatory-tests-and-scores-loading-tests-and-scoring-data = Tests und Bewertungsdaten werden geladen…\nobservatory-tests-and-scores-see = Siehe\nobservatory-tests-and-scores-for-guidance = für weitere Hinweise.\nobservatory-tests-and-scores-test-result = Testergebnis\nobservatory-tests-and-scores-description = Beschreibung\nobservatory-tests-and-scores-modifier = Modifikator\nobservatory-tests-and-scores-failed-to-load-tests-and-scoring = Tests und Bewertungsdaten konnten nicht geladen werden. Bitte versuchen Sie es später erneut.\npagination-pagination = Seitennavigation\nplayground-do-you-really-want-to-clear-ever = Wirklich alles löschen?\nplayground-do-you-really-want-to-revert-you = Alle Änderungen zurücksetzen?\nplayground-playground = Playground\nplayground-format = Formatieren\nplayground-run = Ausführen\nplayground-share = Teilen\nplayground-clear = Leeren\nplayground-reset = Zurücksetzen\nplayground-seeing-something-inappropriate = Sehen Sie etwas Unangemessenes?\nplayground-console = Konsole\nplayground-share-markdown = Markdown teilen\nplayground-copy-markdown-to-clipboard = Markdown in die Zwischenablage kopieren\nplayground-share-data-url = Code via Daten-URL teilen\nplayground-copy-data-url-to-clipboard = Daten-URL in die Zwischenablage kopieren\nplayground-share-your-code-via-permalink = Code via Permalink teilen\nplayground-copy-to-clipboard = In die Zwischenablage kopieren\nplayground-create-link = Link erstellen\nplayground-report-this-malicious-or-inappro = Diesen Playground wegen schädlicher oder unangemessener Inhalte melden\nplayground-can-you-please-share-some-detail = Bitte beschreiben Sie kurz, was an diesem Inhalt problematisch ist:\nplayground-cancel = Abbrechen\nplayground-report = Melden\nrecently-visited-recently-visited = Zuletzt besucht\nscrim-inline-clicking-will-load-content-from = Durch Klicken werden Inhalte von scrimba.com geladen\nscrim-inline-toggle-fullscreen = Vollbild umschalten\nscrim-inline-open-on-scrimba = Auf Scrimba öffnen\nscrim-inline-load-scrim-and-open-dialog = Scrim laden und Dialog öffnen.\nsearch-button-search-the-site = Website durchsuchen\nsearch-modal-loading-search-index = Suchindex wird geladen…\nsearch-modal-search = Suche\nsearch-modal-exit-search = Suche schließen\nsidebar-filter-filter-sidebar = Seitenleiste filtern\nsidebar-filter-filter = Filtern\nsidebar-filter-clear-filter-input = Filterfeld leeren\nsite-search-search = Suchen\nsite-search-previous = Zurück\nsite-search-next = Weiter\nsite-search-suggestions-text = Meinten Sie:\nsite-search-searching = Suche läuft…\nsite-search-language = Sprache\nsite-search-both = Beides\nspecifications-list-this-feature-does-not-appear-to = Diese Funktion scheint in keiner Spezifikation definiert zu sein.\nspecifications-list-specification = Spezifikation\nsurvey-hide-this-survey = Diese Umfrage ausblenden\nsurvey-take-survey-opens-in-a-new-tab = An der Umfrage teilnehmen (öffnet in neuem Tab)\ntoggle-sidebar-toggle-sidebar = Seitenleiste umschalten\nuser-menu-ai-help = KI-Hilfe\nuser-menu-collections = Sammlungen\nuser-menu-updates = Updates\nuser-menu-settings = Meine Einstellungen\nuser-menu-help = Hilfe\nuser-menu-feedback = Feedback\nuser-menu-user = Konto\nwriter-open-editor-open-in-editor = Im Editor öffnen\nwriter-toolbar-view-on-mdn = Auf MDN anzeigen\n`;"],"names":[],"mappings":"iJAAA,MAAe,CAAC;AAChB;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,A"}
@@ -1,3 +0,0 @@
1
- /*! For license information please see 6703.145548dea2dbb16d.js.LICENSE.txt */
2
- export const __rspack_esm_id="6703";export const __rspack_esm_ids=["6703"];export const __webpack_modules__={52258(t,e,s){s.d(e,{K:()=>A,_:()=>$});var i=s(36752),h=s(18504),o=s(7804);let n=(t,e)=>{let s=t._$AN;if(void 0===s)return!1;for(let t of s)t._$AO?.(e,!1),n(t,e);return!0},l=t=>{let e,s;do{if(void 0===(e=t._$AM))break;(s=e._$AN).delete(t),t=e}while(0===s?.size)},_=t=>{for(let e;e=t._$AM;t=e){let s=e._$AN;if(void 0===s)e._$AN=s=new Set;else if(s.has(t))break;s.add(t),c(e)}};function r(t){void 0!==this._$AN?(l(this),this._$AM=t,_(this)):this._$AM=t}function d(t,e=!1,s=0){let i=this._$AH,h=this._$AN;if(void 0!==h&&0!==h.size)if(e)if(Array.isArray(i))for(let t=s;t<i.length;t++)n(i[t],!1),l(i[t]);else null!=i&&(n(i,!1),l(i));else n(this,t)}let c=t=>{t.type==o.OA.CHILD&&(t._$AP??=d,t._$AQ??=r)};let f=class f extends o.WL{constructor(){super(...arguments),this._$AN=void 0}_$AT(t,e,s){super._$AT(t,e,s),_(this),this.isConnected=t._$AU}_$AO(t,e=!0){t!==this.isConnected&&(this.isConnected=t,t?this.reconnected?.():this.disconnected?.()),e&&(n(this,t),l(this))}setValue(t){if((0,h.Rt)(this._$Ct))this._$Ct._$AI(t,this);else{let e=[...this._$Ct._$AH];e[this._$Ci]=t,this._$Ct._$AI(e,this,0)}}disconnected(){}reconnected(){}};let $=()=>new ref_h;let ref_h=class ref_h{};let a=new WeakMap,A=(0,o.u$)(class extends f{render(t){return i.s6}update(t,[e]){let s=e!==this.G;return s&&void 0!==this.G&&this.rt(void 0),(s||this.lt!==this.ct)&&(this.G=e,this.ht=t.options?.host,this.rt(this.ct=t.element)),i.s6}rt(t){if(this.isConnected||(t=void 0),"function"==typeof this.G){let e=this.ht??globalThis,s=a.get(e);void 0===s&&(s=new WeakMap,a.set(e,s)),void 0!==s.get(this.G)&&this.G.call(this.ht,void 0),s.set(this.G,t),void 0!==t&&this.G.call(this.ht,t)}else this.G.value=t}get lt(){return"function"==typeof this.G?a.get(this.ht??globalThis)?.get(this.G):this.G?.value}disconnected(){this.lt===this.ct&&this.rt(void 0)}reconnected(){this.rt(this.ct)}})}};
3
- //# sourceMappingURL=6703.145548dea2dbb16d.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"6703.145548dea2dbb16d.js","sources":["webpack://@mdn/fred/./node_modules/lit-html/async-directive.js","webpack://@mdn/fred/./node_modules/lit-html/directives/ref.js"],"sourcesContent":["import{isSingleExpression as i}from\"./directive-helpers.js\";import{Directive as t,PartType as e}from\"./directive.js\";export{directive}from\"./directive.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const s=(i,t)=>{const e=i._$AN;if(void 0===e)return!1;for(const i of e)i._$AO?.(t,!1),s(i,t);return!0},o=i=>{let t,e;do{if(void 0===(t=i._$AM))break;e=t._$AN,e.delete(i),i=t}while(0===e?.size)},r=i=>{for(let t;t=i._$AM;i=t){let e=t._$AN;if(void 0===e)t._$AN=e=new Set;else if(e.has(i))break;e.add(i),c(t)}};function h(i){void 0!==this._$AN?(o(this),this._$AM=i,r(this)):this._$AM=i}function n(i,t=!1,e=0){const r=this._$AH,h=this._$AN;if(void 0!==h&&0!==h.size)if(t)if(Array.isArray(r))for(let i=e;i<r.length;i++)s(r[i],!1),o(r[i]);else null!=r&&(s(r,!1),o(r));else s(this,i)}const c=i=>{i.type==e.CHILD&&(i._$AP??=n,i._$AQ??=h)};class f extends t{constructor(){super(...arguments),this._$AN=void 0}_$AT(i,t,e){super._$AT(i,t,e),r(this),this.isConnected=i._$AU}_$AO(i,t=!0){i!==this.isConnected&&(this.isConnected=i,i?this.reconnected?.():this.disconnected?.()),t&&(s(this,i),o(this))}setValue(t){if(i(this._$Ct))this._$Ct._$AI(t,this);else{const i=[...this._$Ct._$AH];i[this._$Ci]=t,this._$Ct._$AI(i,this,0)}}disconnected(){}reconnected(){}}export{f as AsyncDirective,t as Directive,e as PartType};\n//# sourceMappingURL=async-directive.js.map\n","import{nothing as t}from\"../lit-html.js\";import{AsyncDirective as i}from\"../async-directive.js\";import{directive as s}from\"../directive.js\";\n/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const e=()=>new h;class h{}const o=new WeakMap,n=s(class extends i{render(i){return t}update(i,[s]){const e=s!==this.G;return e&&void 0!==this.G&&this.rt(void 0),(e||this.lt!==this.ct)&&(this.G=s,this.ht=i.options?.host,this.rt(this.ct=i.element)),t}rt(t){if(this.isConnected||(t=void 0),\"function\"==typeof this.G){const i=this.ht??globalThis;let s=o.get(i);void 0===s&&(s=new WeakMap,o.set(i,s)),void 0!==s.get(this.G)&&this.G.call(this.ht,void 0),s.set(this.G,t),void 0!==t&&this.G.call(this.ht,t)}else this.G.value=t}get lt(){return\"function\"==typeof this.G?o.get(this.ht??globalThis)?.get(this.G):this.G?.value}disconnected(){this.lt===this.ct&&this.rt(void 0)}reconnected(){this.rt(this.ct)}});export{e as createRef,n as ref};\n//# sourceMappingURL=ref.js.map\n"],"names":["Set","c","h","Array","f","arguments","t","WeakMap","globalThis","s"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"9456.a17794342ff9086a.js","sources":["webpack://@mdn/fred/./l10n/locales/zh-CN.ftl"],"sourcesContent":["export default `article-footer-last-modified = 此页面最后更新于 <time data-l10n-name=\"date\">{ \\$date }</time>,由 <a data-l10n-name=\"contributors\">MDN 贡献者</a>更新。\narticle-footer-source-title = 文件夹:{ \\$folder }(在新标签页中打开)\nbaseline-asterisk = 此特性的某些部分的支持程度可能有所不同。\nbaseline-high-extra = 自 { \\$date } 起,此特性已在主流浏览器中得到支持,可在大多数设备和浏览器版本中正常使用。\nbaseline-low-extra = 自 { \\$date } 起,此特性已在最新浏览器中得到支持。但在较旧的设备或浏览器中可能无法运行。\nbaseline-not-extra = 此特性不属于基线,因为它尚未在主流浏览器中得到支持。\nbaseline-supported-in = 在 { \\$browsers } 中得到广泛支持\nbaseline-unsupported-in = 在 { \\$browsers } 中未被广泛支持\nbaseline-supported-and-unsupported-in = 在 { \\$supported } 中得到广泛支持,但在 { \\$unsupported } 中未被广泛支持\nhomepage-hero-title = 开发者的资源,<br>由开发者打造\nhomepage-hero-description = 自 2005 年以来,持续记录 <a data-l10n-name=\"css\">CSS</a>、<a data-l10n-name=\"html\">HTML</a> 和 <a data-l10n-name=\"js\">JavaScript</a>。\nnot-found-title = 找不到页面\nnot-found-description = 抱歉,找不到页面 <code data-l10n-name=\"url\">{ \\$url }</code>。\nnot-found-fallback-english = <strong data-l10n-name=\"strong\">好消息:</strong>您请求的页面存在<em data-l10n-name=\"em\">英文版本</em>。\nnot-found-fallback-search = 您请求的页面不存在,但您可以尝试站内搜索:\nnot-found-back = 返回首页\nfooter-mofo = 访问 <a data-l10n-name=\"moco\">Mozilla 公司</a>的非营利母机构 <a data-l10n-name=\"mofo\">Mozilla 基金会</a>。\nfooter-copyright = 本内容的部分版权归 mozilla.org 贡献者所有,©1998–{ \\$year }。内容依据<a data-l10n-name=\"cc\">知识共享许可协议</a>提供。\nsearch-modal-site-search = 站内搜索 <em>{ \\$query }</em>\nsite-search-search-stats = 找到 { \\$results } 个文档。\nsite-search-suggestion-matches =\n { \\$relation ->\n [gt]\n 超过 { \\$matches ->\n [one] { \\$matches } 个匹配项\n *[other] { \\$matches } 个匹配项\n }\n *[eq]\n { \\$matches ->\n [one] { \\$matches } 个匹配项\n *[other] { \\$matches } 个匹配项\n }\n }\nblog-time-to-read =\n { \\$minutes ->\n [one] 阅读需 { \\$minutes } 分钟\n *[other] 阅读需 { \\$minutes } 分钟\n }\n-brand-name-obs = HTTP Observatory\nobs-report = 报告\nobs-title = { -brand-name-obs }\nobs-landing-intro = { -brand-name-obs } 于 2016 年推出,通过分析网站对安全最佳实践的符合情况来提升 Web 安全性。它已通过 4700 万次扫描为超过 690 万个网站提供了洞察。\nobs-assessment = 由 Mozilla 开发的 { -brand-name-obs } 会对网站的 HTTP 标头及其他关键安全配置进行深入分析。\nobs-scanning = 其自动化扫描流程会为开发者和网站管理员提供详细且可执行的反馈,重点在于识别并解决潜在的安全漏洞。\nobs-security = 在不断发展的数字环境中,该工具对于帮助开发者和网站管理员提升网站抵御常见安全威胁的能力至关重要。\nobs-mdn = { -brand-name-obs } 依托 Mozilla 的专业知识及其对更安全互联网的承诺,并基于成熟的趋势和指南,提供有效的安全洞察。\ncompat-browser-version-date = { \\$browser } { \\$version }——发布日期:{ \\$date }\ncompat-browser-version-released = 发布日期:{ \\$date }\ncompat-link-source-title = 文件:{ \\$filename }\ncompat-support-prefix = 使用了厂商前缀实现:{ \\$prefix }\ncompat-support-altname = 备用名称:{ \\$altname }\ncompat-support-removed = 已在 { \\$version } 及更高版本中移除\ncompat-support-see-impl-url = 参见 <a data-l10n-name=\"impl_url\">{ \\$label }</a>\ncompat-support-flags =\n { NUMBER(\\$has_added) ->\n [one] 自版本 { \\$version_added } 起\n *[other] { \"\" }\n }{ \\$has_last ->\n [one]\n { NUMBER(\\$has_added) ->\n *[zero] 截至 { \\$versionLast },用户\n [one] { \" \" }截至 { \\$versionLast },用户\n }\n *[zero]\n { NUMBER(\\$has_added) ->\n *[zero] 用户\n [one] { \" \" }用户\n }\n }\n { \" \" }必须显式将 <code data-l10n-name=\"name\">{ \\$flag_name }</code>{ \" \" }\n { \\$flag_type ->\n *[preference] 首选项\n [runtime_flag] 运行时标志\n }{ NUMBER(\\$has_value) ->\n [one] { \" \" }设置为 <code data-l10n-name=\"value\">{ \\$flag_value }</code>\n *[other] { \"\" }\n }{ \"。\" }\n { NUMBER(\\$has_pref_url) ->\n [one]\n { \\$flag_type ->\n [preference] 要更改 { \\$browser_name } 中的首选项,请访问 { \\$browser_pref_url }。\n *[other] { \"\" }\n }\n *[other] { \"\" }\n }\ncompat-legend-yes = { compat-support-full }\ncompat-legend-partial = { compat-support-partial }\ncompat-legend-preview = 开发中。在预发布版本中受支持。\ncompat-legend-no = { compat-support-no }\ncompat-legend-unknown = 兼容性未知\ncompat-legend-experimental = { compat-experimental }。预计未来行为可能会发生变化。\ncompat-legend-nonstandard = { compat-nonstandard }。使用前请检查跨浏览器支持情况。\ncompat-legend-deprecated = { compat-deprecated }。不建议在新网站中使用。\ncompat-legend-footnote = 参见实现说明。\ncompat-legend-disabled = 用户必须显式启用此特性。\ncompat-legend-altname = 使用了非标准名称。\ncompat-legend-prefix = 使用时需要厂商前缀或不同名称。\ncompat-legend-more = 含有更多兼容性信息。\nplacement-note = 广告\nplacement-no = 不想看到广告?\npagination-next = 下一页\npagination-prev = 上一页\npagination-current = 当前页\npagination-goto = 前往第 { \\$page } 页\nlogout = 退出登录\nlogin = 登录\nexample-play-button-label = 运行\nexample-play-button-title = 在 MDN 演练场中运行示例(将在新标签页中打开)\nwriter-reload-polling = 每 { \\$seconds } 秒轮询一次\na11y-menu-skip-to-main-content = 跳转到主要内容\na11y-menu-skip-to-search = 跳转到搜索\narticle-footer-title = 帮助改进 MDN\narticle-footer-learn-how-to-contribute = 了解如何参与贡献\narticle-footer-view-this-page-on-github = 在 GitHub 上查看此页面\narticle-footer-this-will-take-you-to-github-to = 这将带您前往 GitHub 提交新问题。\narticle-footer-report-a-problem-with-this-conte = 报告此内容的问题\nbaseline-indicator-baseline-cross = 基线(不可用)\nbaseline-indicator-baseline-check = 基线(可用)\nbaseline-indicator-limited-availability = 有限可用\nbaseline-indicator-baseline = 基线\nbaseline-indicator-widely-available = 广泛可用\nbaseline-indicator-newly-available = 最近可用\nbaseline-indicator-check = 可用\nbaseline-indicator-cross = 不可用\nbaseline-indicator-learn-more = 了解更多\nbaseline-indicator-see-full-compatibility = 查看完整兼容性\nbaseline-indicator-report-feedback = 提交反馈\nblog-previous = 上一篇文章\nblog-next = 下一篇文章\nblog-index-blog-it-better = Blog it better\nreference-toc-header = 本文内容\nblog-post-not-found = 找不到博客文章。\ncollection-save-button-save-in-collection = 保存到收藏集\ncollection-save-button-remove = 移除\ncollection-save-button-save = 保存\ncollection-save-button-add-to-collection = 添加到收藏集\ncollection-save-button-collection = 收藏集:\ncollection-save-button-saved-articles = 已收藏文章\ncollection-save-button-new-collection = 新建收藏集\ncollection-save-button-name = 名称:\ncollection-save-button-note = 备注:\ncollection-save-button-saving = 正在保存……\ncollection-save-button-cancel = 取消\ncollection-save-button-deleting = 正在删除……\ncollection-save-button-delete = 删除\ntheme-default = 跟随系统\ncolor-theme-light = 浅色\ncolor-theme-dark = 深色\ncolor-theme-switch-color-theme = 切换主题颜色\ncolor-theme-theme = 主题\ncompat-link-report-issue-title = 报告此兼容性数据中的问题\ncompat-link-report-issue = 报告此兼容性数据的问题\ncompat-link-source = 在 GitHub 上查看数据\ncompat-experimental = 实验性\ncompat-deprecated = 已弃用\ncompat-nonstandard = 非标准\ncompat-support-partial = 部分支持\ncompat-support-preview-browser = 预览版浏览器支持\ncompat-support-full = 完全支持\ncompat-support-no = 不支持\ncompat-support-unknown = 支持情况未知\ncompat-yes = 是\ncompat-partial = 部分\ncompat-no = 否\ncompat-support-preview = 预览支持\ncompat-legend = 图例\ncompat-legend-tip = 提示:您可以点击/轻触单元格以获取更多信息。\ncompat-link-report-missing-title = 报告缺失的兼容性数据\ncompat-link-report-missing = 报告此问题\ncompat-js-required = 启用 JavaScript 以查看此浏览器兼容性表。\ncompat-loading = 加载中……\ncontent-feedback-content-is-out-of-date = 内容已过时\ncontent-feedback-missing-information = 缺少信息\ncontent-feedback-code-examples-not-working-as-exp = 代码示例未按预期工作\ncontent-feedback-other = 其他\ncontent-feedback-question = 此页面对您有帮助吗?\ncontent-feedback-yes = 是\ncontent-feedback-no = 否\ncontent-feedback-reason = 为什么此页面对您没有帮助?\ncontent-feedback-submit = 提交\ncontent-feedback-thanks = 感谢您的反馈!\ncontributor-spotlight-want-to-be-part-of-the-journey = 想成为这段旅程的一部分吗?\ncontributor-spotlight-our-constant-quest-for-innovatio = 我们对创新的不懈追求始于此,也始于您。MDN 的每一部分(文档、演示以及网站本身)都源于我们了不起的开放开发者社区。欢迎加入我们!\ncontributor-spotlight-get-involved = 参与进来\ncontributor-spotlight-contributor-profile = 贡献者资料\ncopy-button-copied = 已复制\ncopy-button-copy-failed = 复制失败!\ncopy-button-copy = 复制\nfooter-mdn-on-github = MDN GitHub 主页\nfooter-mdn-on-bluesky = MDN Bluesky 账号\nfooter-mdn-on-x = MDN X 账号\nfooter-mdn-on-mastodon = MDN Mastodon 账号\nfooter-mdn-blog-rss-feed = MDN 博客 RSS 订阅源\nfooter-mdn = MDN\nfooter-about = 关于\nfooter-blog = 博客\nfooter-mozilla-careers = Mozilla 招聘\nfooter-advertise-with-us = 与我们合作投放广告\nfooter-mdn-plus = MDN Plus\nfooter-product-help = 产品帮助\nfooter-contribute = 参与贡献\nfooter-mdn-community = MDN 社区\nfooter-community-resources = 社区资源\nfooter-writing-guidelines = 写作指南\nfooter-mdn-discord = MDN Discord\nfooter-developers = 开发者\nfooter-web-technologies = Web 技术\nfooter-learn-web-development = 学习 Web 开发\nfooter-guides = 指南\nfooter-tutorials = 教程\nfooter-glossary = 术语表\nfooter-hacks-blog = Hacks 博客\nfooter-website-privacy-notice = 网站隐私声明\nfooter-telemetry-settings = 遥测设置\nfooter-legal = 法律声明\nfooter-community-participation-guidelin = 社区参与准则\nfooter-mdn-logo = MDN 标志\nfooter-tagline = 构建更美好互联网的蓝图。\nfooter-mozilla-logo = Mozilla 标志\ngeneric-toc__header = 本文内容\nhomepage-body-featured-articles = 精选文章\nhomepage-body-latest-news = 最新消息\nhomepage-body-recent-contributions = 最近贡献\nhomepage-contributor-spotlight-contributor-spotlight = 贡献者聚焦\nhomepage-contributor-spotlight-get-involved = 参与进来\nhomepage-search-search-the-site = 搜索本站\nhomepage-search-search = 搜索\ninteractive-example-reset = 重置\ninteractive-example-value-select = 值选择\ninteractive-example-the-current-value-is-not-support = 当前值不受您的浏览器支持。\ninteractive-example-run-example-and-show-console-ou = 运行示例并显示控制台输出\ninteractive-example-run = 运行\ninteractive-example-reset-example-and-clear-console = 重置示例并清空控制台输出\ninteractive-example-console-output = 控制台输出\ninteractive-example-output = 输出\nissues-table-loading-issues = 正在加载问题……\nissues-table-title = 标题\nissues-table-repository = 仓库\nlanguage-switcher-remember-language = 记住语言\nlanguage-switcher-enable-this-setting-to-always-sw = 启用此设置后,在当前语言可用时将始终切换到该语言。(点击了解更多。)\nlanguage-switcher-learn-more = 了解更多\nlogin-button-login = 登录\nmodal-exit-modal = 关闭对话框\nnavigation-toggle-navigation = 切换导航\nobs-about-title = 关于 HTTP Observatory\nobservatory-landing-read-our-faq = 阅读我们的常见问题解答\nobservatory-landing-report-feedback = 提交反馈\nobservatory-rescan-button-rescan = 重新扫描\nobservatory-rescan-button-wait-a-minute-to-rescan = 请稍等一分钟后再重新扫描\nobservatory-results-report-feedback = 提交反馈\nobservatory-results-faq = 常见问题解答\nobservatory-tests-and-scores-loading-tests-and-scoring-data = 正在加载测试和评分数据……\nobservatory-tests-and-scores-see = 参见\nobservatory-tests-and-scores-for-guidance = 获取指导\nobservatory-tests-and-scores-test-result = 测试结果\nobservatory-tests-and-scores-description = 说明\nobservatory-tests-and-scores-modifier = 分数调整\nobservatory-tests-and-scores-failed-to-load-tests-and-scoring = 加载测试和评分数据失败,请稍后再试。\nbrand-web-docs = MDN Web Docs\nblog-rss-title = MDN 博客 RSS 订阅源\nmeta-description = MDN Web Docs 网站提供有关开放 Web 技术的信息,包括 HTML、CSS 以及适用于网站和渐进式 Web 应用的 API。\nlogo-alt = MDN 标志\npagination-pagination = 分页\nplayground-do-you-really-want-to-clear-ever = 您确定要清空所有内容吗?\nplayground-do-you-really-want-to-revert-you = 您确定要撤销您的更改吗?\nplayground-playground = 演练场\nplayground-format = 格式化\nplayground-run = 运行\nplayground-share = 分享\nplayground-clear = 清空\nplayground-reset = 重置\nplayground-seeing-something-inappropriate = 看到不当内容?\nplayground-console = 控制台\nplayground-share-markdown = 分享 Markdown\nplayground-copy-markdown-to-clipboard = 复制 Markdown 到剪贴板\nplayground-share-data-url = 分享 Data URL\nplayground-copy-data-url-to-clipboard = 复制 Data URL 到剪贴板\nplayground-share-your-code-via-permalink = 通过永久链接分享您的代码\nplayground-copy-to-clipboard = 复制到剪贴板\nplayground-create-link = 创建链接\nplayground-report-this-malicious-or-inappro = 举报此恶意或不当的共享演练场内容。\nplayground-can-you-please-share-some-detail = 您能否详细说明此内容存在的问题?\nplayground-cancel = 取消\nplayground-report = 举报\nrecently-visited-recently-visited = 最近访问\nscrim-inline-clicking-will-load-content-from = 点击后将从 scrimba.com 加载内容\nscrim-inline-toggle-fullscreen = 切换全屏\nscrim-inline-open-on-scrimba = 在 Scrimba 上打开\nscrim-inline-load-scrim-and-open-dialog = 加载 Scrimba 并打开对话框\nsearch-button-search-the-site = 搜索本站\nsearch-modal-loading-search-index = 正在加载搜索索引……\nsearch-modal-search = 搜索\nsearch-modal-exit-search = 退出搜索\nsidebar-filter-filter-sidebar = 筛选侧边栏\nsidebar-filter-filter = 筛选\nsidebar-filter-clear-filter-input = 清除筛选输入\nsite-search-search = 搜索\nsite-search-previous = 上一页\nsite-search-next = 下一页\nsite-search-suggestions-text = 您是否在找……\nsite-search-searching = 搜索中……\nsite-search-language = 语言\nsite-search-both = 两者\nspecifications-list-this-feature-does-not-appear-to = 此特性似乎未在任何规范中定义。\nspecifications-list-specification = 规范\nsurvey-hide-this-survey = 隐藏此调查\nsurvey-take-survey-opens-in-a-new-tab = 参与调查(在新标签页中打开)\ntoggle-sidebar-toggle-sidebar = 切换侧边栏\nuser-menu-ai-help = AI 助手\nuser-menu-collections = 收藏集\nuser-menu-updates = 更新\nuser-menu-settings = 我的设置\nuser-menu-help = 帮助\nuser-menu-feedback = 反馈\nuser-menu-user = 用户\nwriter-open-editor-open-in-editor = 在编辑器中打开\nwriter-toolbar-view-on-mdn = 在 MDN 上查看\n`;"],"names":[],"mappings":"iJAAA,MAAe,CAAC;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,A"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.1aa902f2877f6169.js","sources":["webpack://@mdn/fred/./l10n/locales/en-US.ftl","webpack://@mdn/fred/./components/search-modal/element.css","webpack://@mdn/fred/./components/icon/cancel.svg","webpack://@mdn/fred/./components|lazy|/^\\.\\/.*\\/element\\.js$/|groupOptions: {}|strict namespace object","webpack://@mdn/fred/./l10n/locales|lazy|/^\\.\\/.*\\.ftl$/|referencedExports: default|groupOptions: {}|strict namespace object","webpack://@mdn/fred/./components/baseline-indicator/hook.js","webpack://@mdn/fred/./components/env/runtime.js","webpack://@mdn/fred/./components/env/utils.js","webpack://@mdn/fred/./components/env/index.js","webpack://@mdn/fred/./components/navigation/hook.js","webpack://@mdn/fred/./components/search-modal/element.js","webpack://@mdn/fred/./components/user/context.js","webpack://@mdn/fred/./components/viewed-controller/viewed-observer.js","webpack://@mdn/fred/./hooks/code-examples.js","webpack://@mdn/fred/./hooks/dialog-closedby.js","webpack://@mdn/fred/./hooks/glean-init.js","webpack://@mdn/fred/./utils/telemetry-opt-out.js","webpack://@mdn/fred/./hooks/live-samples.js","webpack://@mdn/fred/./hooks/load-elements.js","webpack://@mdn/fred/./hooks/sidebar-scroll-to-current.js","webpack://@mdn/fred/./hooks/skip-to-search.js","webpack://@mdn/fred/./hooks/toc-highlight.js","webpack://@mdn/fred/./hooks/user-ping.js","webpack://@mdn/fred/./l10n/fluent.js","webpack://@mdn/fred/./l10n/hook.js","webpack://@mdn/fred/./l10n/mixin.js","webpack://@mdn/fred/./symmetric-context/both.js","webpack://@mdn/fred/./symmetric-context/client.js","webpack://@mdn/fred/./utils/glean.js","webpack://@mdn/fred/./utils/mdn-url2breadcrumb.js"],"sourcesContent":["export default `# WARNING: don't use this file as a source for strings requiring l10n, use ../template.ftl instead:\n# this file only contains manually added strings, not ones inlined in code. See ../README.md for more details.\n\n# TODO Use comments, see: https://firefox-source-docs.mozilla.org/l10n/fluent/review.html#comments\n# TODO Consider using terms, see: https://firefox-source-docs.mozilla.org/l10n/fluent/review.html#terms and https://projectfluent.org/fluent/guide/references.html#message-references\n\narticle-footer-last-modified = This page was last modified on <time data-l10n-name=\"date\">{ \\$date }</time> by <a data-l10n-name=\"contributors\">MDN contributors</a>.\narticle-footer-source-title = Folder: { \\$folder } (Opens in a new tab)\n\nbaseline-asterisk = Some parts of this feature may have varying levels of support.\nbaseline-high-extra = This feature is well established and works across many devices and browser versions. It’s been available across browsers since { \\$date }.\nbaseline-low-extra = Since { \\$date }, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\nbaseline-not-extra = This feature is not Baseline because it does not work in some of the most widely-used browsers.\nbaseline-supported-in = Supported in { \\$browsers }\nbaseline-unsupported-in = Not widely supported in { \\$browsers }\nbaseline-supported-and-unsupported-in = Supported in { \\$supported }, but not widely supported in { \\$unsupported }\n\nhomepage-hero-title = Resources for Developers,<br> by Developers\n\nplayground-user-shared-warning = This is a user-shared playground.<br>Always inspect the code before running it.\nhomepage-hero-description = Documenting <a data-l10n-name=\"css\">CSS</a>, <a data-l10n-name=\"html\">HTML</a>, and <a data-l10n-name=\"js\">JavaScript</a>, since 2005.\n\nnot-found-title = Page not found\nnot-found-description = Sorry, the page <code data-l10n-name=\"url\">{ \\$url }</code> could not be found.\nnot-found-fallback-english = <strong data-l10n-name=\"strong\">Good news:</strong> The page you requested exists in <em data-l10n-name=\"em\">English</em>.\nnot-found-fallback-search = The page you requested doesn't exist, but you could try a site search for:\nnot-found-back = Go back to the home page\n\nreference-toc-header = In this article\n\nfooter-mofo = Visit <a data-l10n-name=\"moco\">Mozilla Corporation’s</a> not-for-profit parent, the <a data-l10n-name=\"mofo\">Mozilla Foundation</a>.\nfooter-copyright = Portions of this content are ©1998–{ \\$year } by individual mozilla.org contributors. Content available under <a data-l10n-name=\"cc\">a Creative Commons license</a>.\n\nsearch-modal-site-search = Site search for <em>{ \\$query }</em>\n\nsite-search-search-stats = Found { \\$results } documents.\nsite-search-suggestion-matches = { \\$relation ->\n [gt] more than { \\$matches ->\n [one] { \\$matches } match\n *[other] { \\$matches } matches\n }\n *[eq] { \\$matches ->\n [one] { \\$matches } match\n *[other] { \\$matches } matches\n }\n}\n\nblog-time-to-read = { \\$minutes ->\n [one] { \\$minutes } minute read\n *[other] { \\$minutes } minutes read\n}\nblog-post-not-found = Blog post not found.\n\nblog-previous = Previous post\nblog-next = Next post\n\n-brand-name-obs = HTTP Observatory\nobs-report = Report\nobs-title = { -brand-name-obs }\nobs-landing-intro = Launched in 2016, the { -brand-name-obs } enhances web security by analyzing compliance with best security practices. It has provided insights to over 6.9 million websites through 47 million scans.\nobs-assessment = Developed by Mozilla, the { -brand-name-obs } performs an in-depth assessment of a site’s HTTP headers and other key security configurations.\nobs-scanning = Its automated scanning process provides developers and website administrators with detailed, actionable feedback, focusing on identifying and addressing potential security vulnerabilities.\nobs-security = The tool is instrumental in helping developers and website administrators strengthen their sites against common security threats in a constantly advancing digital environment.\nobs-mdn = The { -brand-name-obs } provides effective security insights, guided by Mozilla's expertise and commitment to a safer and more secure internet and based on well-established trends and guidelines.\n\n\ncompat-loading = Loading…\ncompat-js-required = Enable JavaScript to view this browser compatibility table.\n\ncompat-browser-version-date = { \\$browser } { \\$version } – Release date: { \\$date }\ncompat-browser-version-released = Release date: { \\$date }\n\ncompat-link-report-issue = Report problems with this compatibility data\ncompat-link-report-issue-title = Report an issue with this compatibility data\ncompat-link-report-missing-title = Report missing compatibility data\ncompat-link-report-missing = Report this issue\ncompat-link-source = View data on GitHub\ncompat-link-source-title = File: { \\$filename }\n\ncompat-deprecated = Deprecated\ncompat-experimental = Experimental\ncompat-nonstandard = Non-standard\ncompat-no = No\n\ncompat-support-full = Full support\ncompat-support-partial = Partial support\ncompat-support-no = No support\ncompat-support-unknown = Support unknown\ncompat-support-prefix = Implemented with the vendor prefix: { \\$prefix }\ncompat-support-altname = Alternate name: { \\$altname }\ncompat-support-removed = Removed in { \\$version } and later\ncompat-support-see-impl-url = See <a data-l10n-name=\"impl_url\">{ \\$label }</a>\ncompat-support-flags =\n { NUMBER(\\$has_added) ->\n [one] From version { \\$version_added }\n *[other] {\"\"}\n }{ \\$has_last ->\n [one] { NUMBER(\\$has_added) ->\n *[zero] Until { \\$versionLast } users\n [one] {\" \"}until { \\$versionLast } users\n }\n *[zero] { NUMBER(\\$has_added) ->\n *[zero] Users\n [one] {\" \"}users\n }\n }\n {\" \"}must explicitly set the <code data-l10n-name=\"name\">{ \\$flag_name }</code>{\" \"}\n { \\$flag_type ->\n *[preference] preference\n [runtime_flag] runtime flag\n }{ NUMBER(\\$has_value) ->\n [one] {\" \"}to <code data-l10n-name=\"value\">{ \\$flag_value }</code>\n *[other] {\"\"}\n }{\".\"}\n { NUMBER(\\$has_pref_url) ->\n [one] { \\$flag_type ->\n [preference] To change preferences in { \\$browser_name }, visit { \\$browser_pref_url }.\n *[other] {\"\"}\n }\n *[other] {\"\"}\n }\n\ncompat-legend = Legend\ncompat-legend-tip = Tip: you can click/tap on a cell for more information.\ncompat-legend-yes = { compat-support-full }\ncompat-legend-partial = { compat-support-partial }\ncompat-legend-preview = In development. Supported in a pre-release version.\ncompat-legend-no = { compat-support-no }\ncompat-legend-unknown = Compatibility unknown\ncompat-legend-experimental = { compat-experimental }. Expect behavior to change in the future.\ncompat-legend-nonstandard = { compat-nonstandard }. Check cross-browser support before using.\ncompat-legend-deprecated = { compat-deprecated }. Not for use in new websites.\ncompat-legend-footnote = See implementation notes.\ncompat-legend-disabled = User must explicitly enable this feature.\ncompat-legend-altname = Uses a non-standard name.\ncompat-legend-prefix = Requires a vendor prefix or different name for use.\ncompat-legend-more = Has more compatibility info.\n\nplacement-note = Ad\nplacement-no = Don't want to see ads?\n\npagination-next = Next page\npagination-prev = Previous page\npagination-current = Current page\npagination-goto = Go to page { \\$page }\n\nlogout = Sign out\nlogin = Log in\n\nexample-play-button-label = Play\nexample-play-button-title = Run example in MDN Playground (opens in new tab)\n\ncontent-feedback-question = Was this page helpful to you?\ncontent-feedback-reason = Why was this page not helpful to you?\ncontent-feedback-thanks = Thank you for your feedback!\n\nwriter-reload-polling = Polling every { \\$seconds }s\n`;","import { css } from \"lit\";\n// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../icon/search.svg\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `*,:after,:before{box-sizing:border-box}dialog{border:0;overscroll-behavior:contain;padding:0}@media (width > 1044px){dialog{background-color:var(--color-background-primary);border:1px solid var(--color-border-primary);border-radius:.5rem;font-size:var(--font-size-large);margin:calc(var(--sticky-header-height) + 1rem) auto 1rem;max-height:calc(100% - var(--sticky-header-height) - 2rem);width:calc(var(--layout-content-max) + 1rem)}dialog::backdrop{--csstools-light-dark-toggle-dee8eb9e-0:var(--csstools-color-scheme--light) var(--color-black-alpha-75);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background-color:var(--csstools-light-dark-toggle-dee8eb9e-0,var(--color-white-alpha-75))}@supports (color:light-dark(red,red)){dialog::backdrop{background-color:light-dark(var(--color-white-alpha-75),var(--color-black-alpha-75))}}}@media (width <= 1044px){dialog{font-size:var(--font-size-normal);height:100%;margin:0;max-height:100%;max-width:100%;width:100%}}dialog[open]{display:grid;grid-template-areas:\"search close\" \"progress progress\" \"results results\";grid-template-columns:1fr min-content;grid-template-rows:var(--navigation-height) min-content min-content}progress{grid-area:progress;margin:0 1rem .5rem}@media (width <= 1044px){progress{margin-inline:.3rem}}.close{font-size:1.37rem;grid-area:close}@media (width > 1044px){.close{display:none}}form{display:grid;gap:.5rem;grid-area:search;grid-template-columns:min-content 1fr;padding:1rem;place-items:center}@media (width <= 1044px){form{align-self:center;background-color:var(--color-background-primary);border:1px solid var(--color-border-primary);border-radius:.5rem;margin-left:.3rem;padding:.5rem}}form:before{background-color:var(--color-border-secondary);content:\"\";height:1em;mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});mask-size:contain;width:1em}input{background-color:initial;border:none;font-size:inherit;margin:0;outline:none;padding:0;width:100%}input::placeholder{color:var(--color-text-secondary)}ul{grid-area:results;margin:0;overflow:auto;padding:0}ul:has(li){border-top:1px solid var(--color-border-primary)}li[data-selected]{background:var(--color-background-blue);border-color:var(--color-blue-50)}li{border-inline-start:2px solid #0000;list-style-type:none}li:not([data-selected]):hover{background-color:var(--color-background-secondary)}li>*{padding:.5rem 1.5rem;width:100%}a{color:var(--color-link-normal);display:grid;-webkit-text-decoration:none;text-decoration:none}a:visited{color:var(--color-link-visited)}.slug{color:var(--color-text-secondary);font-size:var(--font-size-small)}mark{background-color:var(--color-background-yellow);color:var(--color-text-primary)}`, \"\"]);\n// Exports\nexport default css([___CSS_LOADER_EXPORT___.toString()]);\n","import { svg } from \"lit\"; export default svg`<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M18 6 6 18M6 6l12 12\"/></svg>`;","var map = {\n \"./code-example/element.js\": [\n \"84352\",\n \"6703\",\n \"6203\",\n \"1861\",\n \"6475\",\n \"7065\",\n \"7517\"\n ],\n \"./dropdown/element.js\": [\n \"58623\",\n \"2868\",\n \"4740\"\n ],\n \"./live-sample-result/element.js\": [\n \"47849\",\n \"6703\",\n \"3611\",\n \"6203\",\n \"5950\",\n \"4098\",\n \"1861\",\n \"5330\"\n ],\n \"./observatory-tests-and-scores/element.js\": [\n \"56538\",\n \"6407\"\n ],\n \"./play-runner/element.js\": [\n \"63657\",\n \"6703\",\n \"5950\",\n \"4098\",\n \"4074\"\n ],\n \"./search-button/element.js\": [\n \"23745\",\n \"3690\"\n ],\n \"./survey/element.js\": [\n \"70134\",\n \"6703\",\n \"6203\",\n \"2105\",\n \"2283\"\n ],\n \"./ix-tab-wrapper/element.js\": [\n \"49979\",\n \"2568\"\n ],\n \"./placement-sidebar/element.js\": [\n \"57468\",\n \"6703\",\n \"3611\",\n \"8280\",\n \"1477\",\n \"4249\",\n \"2173\"\n ],\n \"./placement-hp-main/element.js\": [\n \"44394\",\n \"6703\",\n \"3611\",\n \"8280\",\n \"1477\",\n \"4249\",\n \"4759\"\n ],\n \"./record-visit/element.js\": [\n \"55237\",\n \"5562\",\n \"3094\"\n ],\n \"./toggle-sidebar/element.js\": [\n \"27486\",\n \"6203\",\n \"2415\"\n ],\n \"./user-menu/element.js\": [\n \"76706\",\n \"6203\",\n \"2105\",\n \"3775\"\n ],\n \"./interactive-example/element.js\": [\n \"81505\",\n \"6703\",\n \"749\",\n \"3730\",\n \"3106\",\n \"993\",\n \"6216\",\n \"2080\",\n \"640\",\n \"9515\",\n \"1356\",\n \"6203\",\n \"5950\",\n \"4098\",\n \"6760\",\n \"3047\",\n \"1861\",\n \"2448\",\n \"6475\",\n \"4419\",\n \"7065\",\n \"2568\",\n \"5338\",\n \"5722\"\n ],\n \"./copy-button/element.js\": [\n \"38262\",\n \"6203\",\n \"6475\",\n \"4660\"\n ],\n \"./observatory-comparison-table/element.js\": [\n \"50117\",\n \"9410\",\n \"2006\"\n ],\n \"./sidebar-filter/element.js\": [\n \"83703\",\n \"9324\"\n ],\n \"./issues-table/element.js\": [\n \"37511\",\n \"4204\"\n ],\n \"./scrim-inline/element.js\": [\n \"43602\",\n \"6703\",\n \"3611\",\n \"5183\"\n ],\n \"./switch/element.js\": [\n \"41798\",\n \"9099\"\n ],\n \"./collection-save-button/element.js\": [\n \"1355\",\n \"6203\",\n \"3000\",\n \"4920\"\n ],\n \"./contributor-list/element.js\": [\n \"23082\",\n \"9127\"\n ],\n \"./button/element.js\": [\n \"17398\",\n \"6203\",\n \"9898\"\n ],\n \"./homepage-search/element.js\": [\n \"27373\",\n \"7678\"\n ],\n \"./modal/element.js\": [\n \"14903\",\n \"6203\",\n \"3000\"\n ],\n \"./color-theme/element.js\": [\n \"55269\",\n \"2868\",\n \"544\"\n ],\n \"./about-team-member/element.js\": [\n \"612\",\n \"8981\"\n ],\n \"./content-feedback/element.js\": [\n \"83818\",\n \"6203\",\n \"4891\"\n ],\n \"./play-console/element.js\": [\n \"71787\",\n \"6760\"\n ],\n \"./ix-tab/element.js\": [\n \"18977\",\n \"4419\",\n \"5338\"\n ],\n \"./observatory-header-link/element.js\": [\n \"1879\",\n \"9410\",\n \"3676\"\n ],\n \"./curriculum-tabs/element.js\": [\n \"52500\",\n \"9717\"\n ],\n \"./placement-bottom/element.js\": [\n \"7895\",\n \"6703\",\n \"3611\",\n \"8280\",\n \"1477\",\n \"4249\",\n \"4060\"\n ],\n \"./image-history/element.js\": [\n \"47706\",\n \"1975\"\n ],\n \"./not-found/element.js\": [\n \"2622\",\n \"8926\",\n \"3555\"\n ],\n \"./placement-note/element.js\": [\n \"47764\",\n \"1477\"\n ],\n \"./compat-table-lazy/element.js\": [\n \"96678\",\n \"6703\",\n \"2105\",\n \"6002\",\n \"251\"\n ],\n \"./site-search/element.js\": [\n \"41425\",\n \"6203\",\n \"9578\"\n ],\n \"./placement-no/element.js\": [\n \"13755\",\n \"8280\"\n ],\n \"./play-controller/element.js\": [\n \"23731\",\n \"2448\"\n ],\n \"./placement-top/element.js\": [\n \"9951\",\n \"6703\",\n \"3611\",\n \"8280\",\n \"1477\",\n \"4249\",\n \"9204\"\n ],\n \"./observatory-form/element.js\": [\n \"17547\",\n \"6703\",\n \"6203\",\n \"6110\",\n \"8364\"\n ],\n \"./observatory-results/element.js\": [\n \"13430\",\n \"6203\",\n \"9410\",\n \"2868\",\n \"6110\",\n \"2006\",\n \"7593\",\n \"3676\",\n \"4070\",\n \"3259\"\n ],\n \"./about-tabs/element.js\": [\n \"54842\",\n \"7047\"\n ],\n \"./observatory-human-duration/element.js\": [\n \"37077\",\n \"9410\",\n \"4070\"\n ],\n \"./playground/element.js\": [\n \"71026\",\n \"6703\",\n \"749\",\n \"3730\",\n \"3106\",\n \"993\",\n \"6216\",\n \"2080\",\n \"640\",\n \"9515\",\n \"6203\",\n \"5950\",\n \"4098\",\n \"6760\",\n \"3047\",\n \"2448\",\n \"3000\",\n \"893\"\n ],\n \"./ix-tab-panel/element.js\": [\n \"89854\",\n \"4419\"\n ],\n \"./play-editor/element.js\": [\n \"63386\",\n \"749\",\n \"3730\",\n \"3106\",\n \"993\",\n \"6216\",\n \"2080\",\n \"640\",\n \"9515\",\n \"5950\",\n \"3047\"\n ],\n \"./themed-image/element.js\": [\n \"48125\",\n \"5102\"\n ],\n \"./writer-open-editor/element.js\": [\n \"51310\",\n \"6203\",\n \"9967\"\n ],\n \"./progress-bar/element.js\": [\n \"20141\",\n \"6110\"\n ],\n \"./compat-table/element.js\": [\n \"12969\",\n \"6703\",\n \"2105\",\n \"6002\"\n ],\n \"./login-button/element.js\": [\n \"70242\",\n \"6203\",\n \"6067\"\n ],\n \"./observatory-rescan-button/element.js\": [\n \"14416\",\n \"6203\",\n \"7593\",\n \"3140\"\n ],\n \"./recently-visited/element.js\": [\n \"95821\",\n \"5562\",\n \"5246\"\n ],\n \"./language-always-redirect-button/element.js\": [\n \"77108\",\n \"8300\",\n \"5685\"\n ],\n \"./language-switcher/element.js\": [\n \"64786\",\n \"2868\",\n \"9099\",\n \"8300\",\n \"8926\",\n \"5667\"\n ],\n \"./search-modal/element.js\": [\n \"97154\"\n ],\n \"./writer-reload/element.js\": [\n \"14925\",\n \"4366\"\n ]\n};\nfunction __rspack_async_context(req) {\n if(!__webpack_require__.o(map, req)) {\n return Promise.resolve().then(function() {\n var e = new Error(\"Cannot find module '\" + req + \"'\");\n e.code = 'MODULE_NOT_FOUND';\n throw e;\n });\n }\n\n var ids = map[req], id = ids[0];\n return Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {\n return __webpack_require__(id);\n });\n}\n\n__rspack_async_context.keys = () => (Object.keys(map));\n__rspack_async_context.id = 98693;\nmodule.exports = __rspack_async_context;\n","var map = {\n \"./en-US.ftl\": [\n \"537\"\n ],\n \"./es.ftl\": [\n \"59137\",\n \"7898\"\n ],\n \"./de.ftl\": [\n \"89516\",\n \"6333\"\n ],\n \"./pt-BR.ftl\": [\n \"27146\",\n \"8839\"\n ],\n \"./ja.ftl\": [\n \"68942\",\n \"7027\"\n ],\n \"./zh-TW.ftl\": [\n \"81023\",\n \"8964\"\n ],\n \"./fr.ftl\": [\n \"23293\",\n \"1550\"\n ],\n \"./ru.ftl\": [\n \"40730\",\n \"3255\"\n ],\n \"./zh-CN.ftl\": [\n \"39555\",\n \"9456\"\n ],\n \"./ko.ftl\": [\n \"45687\",\n \"8604\"\n ]\n};\nfunction __rspack_async_context(req) {\n if(!__webpack_require__.o(map, req)) {\n return Promise.resolve().then(function() {\n var e = new Error(\"Cannot find module '\" + req + \"'\");\n e.code = 'MODULE_NOT_FOUND';\n throw e;\n });\n }\n\n var ids = map[req], id = ids[0];\n return Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {\n return __webpack_require__(id);\n });\n}\n\n__rspack_async_context.keys = () => (Object.keys(map));\n__rspack_async_context.id = 9177;\nmodule.exports = __rspack_async_context;\n","try {\n const indicator = document.querySelector(\".baseline-indicator\");\n if (indicator instanceof HTMLDetailsElement) {\n indicator.addEventListener(\"toggle\", () => {\n saveState(indicator.open);\n });\n saveState(indicator.open);\n }\n\n /**\n * @param {boolean} open\n */\n function saveState(open) {\n if (open) {\n localStorage.setItem(\"baseline-indicator\", \"open\");\n } else {\n localStorage.removeItem(\"baseline-indicator\");\n }\n }\n} catch (error) {\n console.warn(\"Unable to attach to baseline indicator\", error);\n}\n","import { parseBool } from \"./utils.js\";\n\n/** @type {string[]} */\nexport const runtimeVariables = [];\n/** Overriden to prod default (false) in rspack config, set to true so it works in dev server by default. */\nexport const RUNTIME_ENV = parseBool(\"RUNTIME_ENV\", true);\n","import { RUNTIME_ENV, runtimeVariables } from \"./runtime.js\";\n\n/**\n * @typedef {object} Options\n * @property {boolean} [runtime] Allow setting this value at runtime\n */\n\n/**\n * @param {string} name\n * @param {boolean} fallback\n * @param {Options} [options]\n */\nexport function parseBool(name, fallback, options) {\n try {\n return Boolean(\n JSON.parse(getEnv(name, options) || JSON.stringify(fallback)),\n );\n } catch {\n return fallback;\n }\n}\n\n/**\n * @param {string} name\n * @param {number} fallback\n * @param {Options} [options]\n */\nexport function parseInt(name, fallback, options) {\n const stringValue = getEnv(name, options);\n const numberValue = stringValue ? Number.parseInt(stringValue, 10) : fallback;\n return Number.isNaN(numberValue) ? fallback : numberValue;\n}\n\n/**\n * @param {string} name\n * @param {string} fallback\n * @param {Options} [options]\n */\nexport function parseString(name, fallback, options) {\n return getEnv(name, options) || fallback;\n}\n\n/**\n * @param {string} name\n * @param {Options} [options]\n * @returns {string | undefined}\n */\nfunction getEnv(name, options = {}) {\n const { runtime } = { runtime: false, ...options };\n const fullName = `FRED_${name}`;\n if (runtime && RUNTIME_ENV) {\n runtimeVariables.push(fullName);\n // safely navigate if process is not defined\n return globalThis.process?.env[fullName] || getEnv(name);\n }\n return globalThis.__MDNEnv?.[fullName];\n}\n","import { parseBool, parseInt, parseString } from \"./utils.js\";\n\nexport const PLAYGROUND_BASE_HOST = parseString(\n \"PLAYGROUND_BASE_HOST\",\n \"mdnplay.dev\",\n);\nexport const PLAYGROUND_LOCAL = parseBool(\"PLAYGROUND_LOCAL\", false, {\n runtime: true,\n});\nexport const PORT = parseInt(\"PORT\", 3000, { runtime: true });\nexport const OPEN_BROWSER_ON_START = parseBool(\"OPEN_BROWSER_ON_START\", false, {\n runtime: true,\n});\nexport const PLAYGROUND_PORT = parseInt(\"PLAYGROUND_PORT\", 3001, {\n runtime: true,\n});\n\nexport const FXA_SIGNIN_URL = parseString(\n \"FXA_SIGNIN_URL\",\n \"/users/fxa/login/authenticate/\",\n);\nexport const FXA_SIGNOUT_URL = parseString(\n \"FXA_SIGNOUT_URL\",\n \"/users/fxa/login/logout/\",\n);\n\n/** Set to non-prod default, because we don't want glean to run without explicitly enabling. */\nexport const GLEAN_ENABLED = parseBool(\"GLEAN_ENABLED\", false);\n/** Set to non-prod default, because we don't want glean to run without explicitly enabling. */\nexport const GLEAN_CHANNEL = parseString(\"GLEAN_CHANNEL\", \"dev\");\nexport const GLEAN_DEBUG = parseBool(\"GLEAN_DEBUG\", false);\n\n/**\n * While there is a risk from not including the `noindex` meta tag on stage etc, we have a\n * `robots.txt` in place, and the effect of accidentally including it on prod is far worse:\n * so this must be the prod default.\n */\nexport const ROBOTS_GLOBAL_ALLOW = parseBool(\"ROBOTS_GLOBAL_ALLOW\", true);\n\nexport const WRITER_MODE = parseBool(\"WRITER_MODE\", false, { runtime: true });\n\nexport const BCD_BASE_URL = parseString(\n \"BCD_BASE_URL\",\n \"https://bcd.developer.mozilla.org\",\n);\n\nexport const OBSERVATORY_API_URL = parseString(\n \"OBSERVATORY_API_URL\",\n \"https://observatory-api.mdn.mozilla.net\",\n);\n\n// Transcend Consent Management - https://docs.transcend.io/docs/consent\nexport const TRANSCEND_AIRGAP_URL = parseString(\"TRANSCEND_AIRGAP_URL\", \"\");\n","const button = document.querySelector(`[aria-controls=\"navigation__popup\"]`);\nconst navigation = document.querySelector(\".navigation\");\nif (button instanceof HTMLElement && navigation instanceof HTMLElement) {\n button.addEventListener(\"click\", () => {\n const open = (!(navigation.dataset.open === \"true\")).toString();\n navigation.dataset.open = open;\n button.setAttribute(\"aria-expanded\", open);\n });\n}\n","import { Task } from \"@lit/task\";\nimport { LitElement, html, nothing } from \"lit\";\n\nimport { L10nMixin } from \"../../l10n/mixin.js\";\n\nimport { gleanClick } from \"../../utils/glean.js\";\nimport { mdnUrl2Breadcrumb } from \"../../utils/mdn-url2breadcrumb.js\";\n\nimport exitIcon from \"../icon/cancel.svg?lit\";\n\nimport styles from \"./element.css?lit\";\n\nexport class MDNSearchModal extends L10nMixin(LitElement) {\n static ssr = false;\n static styles = styles;\n\n static properties = {\n _index: { state: true },\n _query: { state: true },\n _selected: { state: true },\n _shiftFocus: { state: true },\n };\n\n constructor() {\n super();\n /** @type {Promise<import(\"./types.js\").SearchIndex> | undefined} */\n this._index = undefined;\n this._query = \"\";\n this._selected = 0;\n this._shiftFocus = false;\n /** Capture whether user has engaged with the search. */\n this._hasEngaged = false;\n }\n\n async _loadIndex() {\n if (this._index) {\n return;\n }\n\n this._index = this._fetchIndex();\n }\n\n async _fetchIndex() {\n const res = await fetch(`/${this.locale}/search-index.json`);\n /** @type {import(\"./types.js\").SearchIndexItem[]} */\n const items = await res.json();\n /** @type {import(\"./types.js\").SearchIndexFlexItem[]} */\n const flex = items.map(({ title, url }, index) => ({\n index,\n title: title.toLowerCase(),\n slugTail: url.split(\"/\").pop()?.toLowerCase() || \"\",\n }));\n\n return {\n flex,\n items,\n };\n }\n\n showModal() {\n this._loadIndex();\n this.shadowRoot?.querySelector(\"dialog\")?.showModal();\n this.shadowRoot?.querySelector(\"input\")?.select();\n }\n\n /** @param {InputEvent} event */\n _input({ inputType, target }) {\n if (target instanceof HTMLInputElement) {\n this._query = target.value;\n if (!this._hasEngaged && inputType.startsWith(\"insert\")) {\n this._hasEngaged = true;\n gleanClick(\n `quick-search-change: ${inputType === \"insertFromPaste\" ? \"paste\" : \"type\"}`,\n );\n }\n }\n }\n\n /** @param {KeyboardEvent} event */\n _keydown(event) {\n switch (event.key) {\n case \"ArrowUp\": {\n event.preventDefault();\n this._select(this._selected - 1);\n break;\n }\n case \"ArrowDown\":\n event.preventDefault();\n this._select(this._selected + 1);\n break;\n\n case \"Enter\": {\n const { ctrlKey, shiftKey, altKey, metaKey } = event;\n const item = this._getSelectedItem();\n if (item instanceof HTMLElement) {\n event.preventDefault();\n item.dispatchEvent(\n new MouseEvent(\"click\", {\n bubbles: true,\n composed: true,\n // we attempt to pass modifier keys through\n // but browser support is incredibly varied:\n ctrlKey,\n shiftKey,\n altKey,\n metaKey,\n }),\n );\n }\n break;\n }\n\n default:\n return;\n }\n }\n\n /** @returns {HTMLElement|null} */\n _getSelectedItem() {\n return this.shadowRoot?.querySelector(\"[data-selected] a\") ?? null;\n }\n\n /** @param {number} index */\n _select(index) {\n const results = (this._queryIndex.value?.length || 0) + 1;\n const value = index % results;\n this._selected = value < 0 ? results + index : value;\n setTimeout(() => {\n const item = this._getSelectedItem();\n if (item instanceof HTMLElement) {\n item.scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n });\n }\n }, 0);\n }\n\n /** @param {SubmitEvent} event */\n _submit(event) {\n event.preventDefault();\n const item = this._getSelectedItem();\n if (item instanceof HTMLElement) {\n item.click();\n }\n }\n\n /** @param {FocusEvent} event */\n _focus({ target }) {\n if (target instanceof HTMLElement) {\n const focused = target.closest(\"[data-result]\");\n if (focused instanceof HTMLElement) {\n const index = Number.parseInt(focused.dataset.result || \"NaN\", 10);\n if (!Number.isNaN(index)) {\n this._selected = index;\n this._shiftFocus = true;\n }\n } else {\n this._shiftFocus = false;\n }\n }\n }\n\n /** @param {KeyboardEvent} event */\n _globalKeydown(event) {\n const target = event.composedPath()?.[0] || event.target;\n const isTextField =\n target instanceof HTMLElement &&\n ([\"TEXTAREA\", \"INPUT\"].includes(target.tagName) ||\n target.isContentEditable);\n\n if (isTextField) {\n return;\n }\n\n const selection = globalThis.getSelection()?.toString();\n const keyPressed = event.key;\n const ctrlOrMetaPressed = event.ctrlKey || event.metaKey;\n const isSlash = keyPressed === \"/\" && !ctrlOrMetaPressed;\n const isCtrlK = keyPressed === \"k\" && ctrlOrMetaPressed && !event.shiftKey;\n\n if (isSlash || isCtrlK) {\n event.preventDefault();\n gleanClick(\n `quick-search-open: keyboard -> ${isSlash ? \"slash\" : \"ctrl-k\"}`,\n );\n this.showModal();\n if (selection) {\n this._query = selection;\n if (!this._hasEngaged) {\n this._hasEngaged = true;\n gleanClick(\"quick-search-change: selection\");\n }\n }\n }\n }\n\n _queryIndex = new Task(this, {\n args: () => [this._index, this._query],\n task: async ([index, query]) => {\n if (!index || !query) {\n return;\n }\n return quickSearch(query, await index);\n },\n });\n\n _close() {\n this.shadowRoot?.querySelector(\"dialog\")?.close();\n }\n\n /** @param {ToggleEvent} event */\n _toggle({ newState }) {\n document.documentElement.classList.toggle(\n \"search-modal-open\",\n newState === \"open\",\n );\n }\n\n connectedCallback() {\n super.connectedCallback();\n this._globalKeydown = this._globalKeydown.bind(this);\n document.addEventListener(\"keydown\", this._globalKeydown);\n this._loadIndex = this._loadIndex.bind(this);\n this.renderRoot.addEventListener(\"mouseover\", this._loadIndex);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.renderRoot.removeEventListener(\"mouseover\", this._loadIndex);\n document.removeEventListener(\"keydown\", this._globalKeydown);\n document.documentElement.classList.remove(\"search-modal-open\");\n }\n\n _renderLoadingSearchIndex() {\n return html`<progress\n aria-label=${this.l10n(\n \"search-modal-loading-search-index\",\n )`Loading search index…`}\n ></progress>`;\n }\n\n render() {\n const siteSearchIndex = this._queryIndex.value?.length || 0;\n const searchUrl = this._query\n ? `/${this.locale}/search?${new URLSearchParams({ q: this._query })}`\n : null;\n return html`\n <dialog\n @keydown=${this._keydown}\n @focusin=${this._focus}\n @toggle=${this._toggle}\n closedby=\"any\"\n >\n <form\n method=\"get\"\n action=${`/${this.locale}/search`}\n @submit=${this._submit}\n >\n <input\n type=\"search\"\n name=\"q\"\n .value=${this._query}\n autocomplete=\"off\"\n autofocus\n @input=${this._input}\n placeholder=${this.l10n(\"search-modal-search\")`Search`}\n aria-label=${this.l10n(\"search-modal-search\")`Search`}\n />\n </form>\n <mdn-button\n class=\"close\"\n variant=\"plain\"\n icon-only\n .icon=${exitIcon}\n @click=${this._close}\n >${this.l10n(\"search-modal-exit-search\")`Exit search`}</mdn-button\n >\n ${this._queryIndex.render({\n initial: this._renderLoadingSearchIndex.bind(this),\n pending: this._renderLoadingSearchIndex.bind(this),\n })}\n <ul>\n ${this._queryIndex.render({\n complete: (results) =>\n results?.map(\n ({ title, url }, i) => html`\n <li ?data-selected=${this._selected === i} data-result=${i}>\n <a\n href=${url}\n data-glean-id=${`quick-search: results[${1 + i}] -> ${this._query} -> ${url}`}\n ><span class=\"slug\"\n >${mdnUrl2Breadcrumb(url, this.locale)}</span\n >\n <span class=\"title\"\n >${HighlightMatch(title, this._query)}</span\n ></a\n >\n </li>\n `,\n ),\n })}\n ${searchUrl\n ? html`<li\n ?data-selected=${this._selected === siteSearchIndex}\n data-result=${siteSearchIndex}\n >\n <a\n href=${searchUrl}\n data-glean-id=${`quick-search: site-search -> ${this._query}`}\n ><span class=\"title\"\n >${this.l10n.raw({\n id: \"search-modal-site-search\",\n args: {\n query: this._query,\n },\n elements: {\n query: { tag: \"code\" },\n },\n })}</span\n ></a\n >\n </li>`\n : nothing}\n </ul>\n </dialog>\n `;\n }\n\n updated() {\n if (this._shiftFocus) {\n const selected = this._getSelectedItem();\n if (selected instanceof HTMLElement) {\n selected.focus();\n }\n }\n }\n}\n\ncustomElements.define(\"mdn-search-modal\", MDNSearchModal);\n\n/**\n * @param {string} input\n * @param {import(\"./types.js\").SearchIndex} index\n * @returns {import(\"./types.js\").SearchResultItem[]}\n */\nfunction quickSearch(input, index) {\n const inputValueLC = input.toLowerCase().trim();\n const q = splitQuery(input);\n const indexResults = index.flex\n .filter(({ title }) => q.every((q) => title.includes(q)))\n .map(({ index, title, slugTail }) => {\n const exact = Number([title, slugTail].includes(inputValueLC));\n return /** @type {const} */ ([exact, index]);\n })\n .sort(([aExact], [bExact]) => bExact - aExact) // Boost exact matches.\n .map(([_, i]) => i)\n .slice(0, 10);\n\n return indexResults.map((i) => i && (index.items || [])[i]).filter(Boolean);\n}\n\n/**\n * Used by quicksearch and sidebar filters.\n * @param {string} term\n * @returns {string[]}\n */\nexport function splitQuery(term) {\n term = term.trim().toLowerCase();\n return term.startsWith(\".\") || term.endsWith(\".\")\n ? // Dot is probably meaningful.\n term.split(/[ ,]+/)\n : // Dot is probably just a word separator.\n term.split(/[ ,.]+/);\n}\n\n/**\n * @param {string} title\n * @param {string} query\n */\nfunction HighlightMatch(title, query) {\n // Split on highlight term and include term into parts, ignore case.\n const words = splitQuery(query);\n // $& means the whole matched string\n const regexWords = words.map((s) =>\n s.replaceAll(/[.*+?^${}()|[\\]\\\\]/g, String.raw`\\$&`),\n );\n const regex = regexWords.map((word) => `(${word})`).join(\"|\");\n const parts = title.split(new RegExp(regex, \"gi\"));\n return parts\n .filter(Boolean)\n .map((part) =>\n words.includes(part.toLowerCase()) ? html`<mark>${part}</mark>` : part,\n );\n}\n","/**\n * @import * as User from \"../user/types.js\";\n */\n\nimport { WRITER_MODE } from \"../env/index.js\";\n\nconst DEFAULT_GEO = { country: \"United States\", country_iso: \"US\" };\n\n/**\n * @type {User.User}\n */\nconst DEFAULT_USER = {\n username: null,\n isAuthenticated: false,\n avatarUrl: null,\n isSubscriber: false,\n subscriptionType: null,\n email: null,\n geo: DEFAULT_GEO,\n settings: null,\n};\n\n/**\n * @type {Promise<User.User> | undefined}\n */\nlet USER;\n\n/**\n *\n * @returns {Promise<User.User>}\n */\nexport function globalUser() {\n if (WRITER_MODE) {\n return new Promise(() => {});\n }\n if (!USER) {\n USER = fetchUserData().catch((error) => {\n console.error(error);\n return DEFAULT_USER;\n });\n }\n return USER;\n}\n\n/**\n *\n * @returns {Promise<User.User>}\n */\nasync function fetchUserData() {\n const response = await fetch(\"/api/v1/whoami\");\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n\n try {\n /**\n * @type {User.WhoamiResponse}\n */\n const data = await response.json();\n const settings = data?.settings\n ? {\n aiHelpHistory:\n typeof data.settings?.ai_help_history === \"boolean\"\n ? data.settings.ai_help_history\n : null,\n noAds: data.settings?.no_ads ?? null,\n }\n : DEFAULT_USER.settings;\n Settings.noAds = settings?.noAds || false;\n return {\n username: data.username ?? DEFAULT_USER.username,\n isAuthenticated: data.is_authenticated ?? DEFAULT_USER.isAuthenticated,\n avatarUrl: data.avatar_url ?? DEFAULT_USER.avatarUrl,\n isSubscriber: data.is_subscriber ?? DEFAULT_USER.isSubscriber,\n subscriptionType:\n data.subscription_type === \"core\"\n ? \"mdn_core\"\n : (data.subscription_type ?? DEFAULT_USER.subscriptionType),\n email: data.email ?? DEFAULT_USER.email,\n geo: {\n country: (data.geo && data.geo.country) ?? DEFAULT_GEO.country,\n country_iso:\n (data.geo && data.geo.country_iso) ?? DEFAULT_GEO.country_iso,\n },\n settings,\n };\n } catch {\n throw new Error(response.statusText);\n }\n}\n\nexport const Settings = {\n set noAds(value) {\n if (value) {\n globalThis.localStorage.setItem(\"nop\", \"yes\");\n } else {\n globalThis.localStorage.removeItem(\"nop\");\n }\n },\n\n get noAds() {\n return globalThis.localStorage?.getItem?.(\"nop\") === \"yes\";\n },\n};\n","const OPTIONS = {\n threshold: 0.5,\n};\n\nexport class ViewedObserver {\n #element;\n #callback;\n #options;\n\n /** @type {IntersectionObserver | null} */\n #observer = null;\n /** @type {ReturnType<typeof setTimeout> | null} */\n #timer = null;\n #hasViewed = false;\n #visible = !globalThis.document?.hidden;\n #onVisibilityChange = this.#handleVisibilityChange.bind(this);\n\n /**\n * @param {Element} element\n * @param {Function} callback\n * @param {IntersectionObserverInit} [options]\n */\n constructor(element, callback, options = OPTIONS) {\n this.#element = element;\n this.#callback = callback;\n this.#options = options;\n }\n\n connect() {\n document.addEventListener(\"visibilitychange\", this.#onVisibilityChange);\n this.#observer = new IntersectionObserver((entries) => {\n for (const entry of entries) {\n this.#checkAndSetTimer(entry.isIntersecting);\n }\n }, this.#options);\n this.#observer.observe(this.#element);\n }\n\n disconnect() {\n if (this.#observer) {\n this.#observer.disconnect();\n this.#observer = null;\n }\n if (this.#timer !== null) {\n clearTimeout(this.#timer);\n this.#timer = null;\n }\n document.removeEventListener(\"visibilitychange\", this.#onVisibilityChange);\n }\n\n #handleVisibilityChange() {\n this.#visible = !document.hidden;\n this.#checkAndSetTimer();\n }\n\n /**\n * If the page is visible and the element is intersecting, start a 1-second timer\n * to dispatch the \"view\" event.\n *\n * If conditions are not met before the timer fires, clear the timer.\n *\n * @param {boolean} isIntersecting\n */\n #checkAndSetTimer(isIntersecting = false) {\n if (!this.#hasViewed && this.#visible && isIntersecting) {\n if (this.#timer === null) {\n this.#timer = globalThis.setTimeout(() => {\n this.#hasViewed = true;\n this.#callback();\n }, 1000);\n }\n } else {\n if (this.#timer !== null) {\n clearTimeout(this.#timer);\n this.#timer = null;\n }\n }\n }\n}\n","for (const pre of document.querySelectorAll(\n `div.code-example pre:not(.hidden):not([class*=\"live-sample\"]):not([class*=\"interactive-example\"])`,\n)) {\n const { upgradePre } = await import(\"../components/code-example/element.js\");\n upgradePre(pre);\n}\n","/**\n * dialog closedby polyfill based on https://github.com/tak-dcxi/dialog-closedby-polyfill\n *\n * @license MIT\n *\n * Copyright (c) 2025 Takahiro Arai\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\nif (!(\"closedBy\" in HTMLDialogElement.prototype)) {\n addEventListener(\"click\", (event) => {\n const source = event.composedPath()[0];\n if (\n source instanceof HTMLDialogElement &&\n source.getAttribute(\"closedby\") === \"any\"\n ) {\n const rect = source.getBoundingClientRect();\n const { clientX: x, clientY: y } = event;\n const inside =\n rect.top <= y && y <= rect.bottom && rect.left <= x && x <= rect.right;\n\n if (!inside) source.close();\n }\n });\n}\n","import Glean from \"@mozilla/glean/web\";\n\nimport {\n GLEAN_CHANNEL,\n GLEAN_DEBUG,\n GLEAN_ENABLED,\n} from \"../components/env/index.js\";\nimport { ViewedObserver } from \"../components/viewed-controller/viewed-observer.js\";\nimport { gleanClick } from \"../utils/glean.js\";\nimport { userIsOptedOut } from \"../utils/telemetry-opt-out.js\";\n\nconst GLEAN_APP_ID = \"mdn-fred\";\n\nconst uploadEnabled = !userIsOptedOut() && GLEAN_ENABLED;\n\nif (GLEAN_DEBUG) {\n Glean.setDebugViewTag(\"mdn-dev\");\n Glean.setLogPings(true);\n}\n\nGlean.initialize(GLEAN_APP_ID, uploadEnabled, {\n enableAutoPageLoadEvents: true,\n enableAutoElementClickEvents: true,\n channel: GLEAN_CHANNEL,\n});\n\n// data-glean-toggle-open\ndocument.addEventListener(\"toggle\", (event) => {\n const composedPath = event.composedPath();\n for (const el of composedPath) {\n if (\n el instanceof HTMLElement &&\n typeof el.dataset.gleanToggleOpen === \"string\" &&\n \"open\" in el &&\n el.open\n ) {\n gleanClick(el.dataset.gleanToggleOpen);\n }\n }\n});\n\n// data-glean-view\nfor (const element of /** @type {NodeListOf<HTMLElement>} */ (\n document.querySelectorAll(\"[data-glean-view]\")\n)) {\n // Excludes shadow DOM, and elements added after page load.\n // For custom elements, use `ViewedController()` instead.\n const gleanId = element.dataset.gleanView;\n if (gleanId) {\n const observer = new ViewedObserver(element, () => {\n gleanClick(gleanId);\n observer.disconnect();\n });\n observer.connect();\n }\n}\n\n// data-glean-id\ndocument.addEventListener(\"click\", (event) => {\n const composedPath = event.composedPath();\n const composedTarget = composedPath?.[0];\n if (composedTarget !== event.target && composedTarget instanceof Element) {\n // Workaround for automatic click events in shadow DOM.\n // See: https://bugzil.la/1988206\n\n // Measure click for all `data-glean-id`s along the path.\n for (const el of composedPath) {\n if (el instanceof HTMLElement && typeof el.dataset.gleanId === \"string\") {\n gleanClick(el.dataset.gleanId);\n }\n }\n }\n\n const target = composedTarget ?? event.target;\n if (target instanceof Element) {\n // External link measurement.\n const anchor = target.closest(\"a\");\n if (\n anchor instanceof HTMLAnchorElement &&\n anchor.href &&\n anchor.origin &&\n anchor.origin !== document.location.origin\n ) {\n gleanClick(`external-link: ${anchor.href}`);\n }\n\n // Sidebar click measurement.\n if (anchor instanceof HTMLAnchorElement && anchor.href) {\n const sidebar = anchor.closest(\".left-sidebar\");\n if (sidebar) {\n const href = anchor.getAttribute(\"href\") || anchor.href;\n gleanClick(`sidebar_click: sidebar ${href}`);\n }\n }\n }\n});\n","const FIRST_PARTY_DATA_OPT_OUT_COOKIE_NAME = \"moz-1st-party-data-opt-out\";\n\n/**\n * Checks if user has opted out of first-party data collection.\n * @param {string} [cookie] - An optional mock cookie string to ease unit testing.\n * @returns {boolean} True if user has opted out, false otherwise\n */\nexport function userIsOptedOut(cookie) {\n return (cookie || document.cookie)\n .split(\"; \")\n .includes(`${FIRST_PARTY_DATA_OPT_OUT_COOKIE_NAME}=true`);\n}\n","/**\n * @import { MDNCodeExample } from \"../components/code-example/element.js\";\n */\n\nfor (const iframe of document.querySelectorAll(\"iframe[data-live-id]\")) {\n if (iframe instanceof HTMLIFrameElement) {\n const { liveId, livePath } = iframe.dataset;\n if (liveId) {\n /** @type {Record<string, string>} */\n const liveSampleCode = {};\n /** @type {MDNCodeExample[]} */\n const codeExamples = [];\n\n const escapedId = liveId.replaceAll(\".\", String.raw`\\.`);\n for (const element of document.querySelectorAll(\n `.live-sample___${escapedId}, .live-sample---${escapedId}`,\n )) {\n const { MDNCodeExample, upgradePre } =\n await import(\"../components/code-example/element.js\");\n const codeExample =\n element instanceof MDNCodeExample ? element : upgradePre(element);\n if (codeExample) {\n codeExamples.push(codeExample);\n const { language, code } = codeExample;\n if (liveSampleCode[language]) {\n liveSampleCode[language] += code;\n } else {\n liveSampleCode[language] = code;\n }\n }\n }\n\n await import(\"../components/live-sample-result/element.js\");\n const result = document.createElement(\"mdn-live-sample-result\");\n result.liveId = liveId;\n result.code = liveSampleCode;\n result.srcPrefix = livePath;\n result.allow = iframe.allow || undefined;\n result.sandbox = iframe.sandbox.toString();\n result.height = iframe.height;\n iframe.closest(\".code-example\")?.replaceWith(result);\n\n for (const codeExample of codeExamples) {\n codeExample.liveSample ||= result;\n }\n }\n }\n}\n","const loaded = new Set();\nfor (const element of document.querySelectorAll(\"*\")) {\n const tag = element.tagName.toLowerCase();\n if (tag.startsWith(\"mdn-\") || tag === \"interactive-example\") {\n const component = tag.replace(\"mdn-\", \"\");\n if (!loaded.has(component)) {\n loaded.add(component);\n // we don't want to await, because we want these to load in parallel\n // eslint-disable-next-line unicorn/prefer-top-level-await\n import(`../components/${component}/element.js`).catch((error) => {\n console.error(\n `couldn't load code for <${component}>: does the element's code not match the naming schema?`,\n error,\n );\n });\n }\n }\n}\n","const sidebar = document.querySelector(\"#main-sidebar\");\nconst current = sidebar?.querySelector('[aria-current=\"page\"]');\nif (sidebar && current instanceof HTMLElement) {\n sidebar.scrollTo({\n top: current.offsetTop - window.innerHeight / 4,\n });\n}\n","import { MDNSearchModal } from \"../components/search-modal/element.js\";\n\nconst skipToSearch = document.querySelector(`.a11y-menu a[href=\"#search\"]`);\n\nif (skipToSearch instanceof HTMLAnchorElement) {\n const search = document.querySelector(\"#search\");\n\n if (search instanceof MDNSearchModal) {\n skipToSearch.addEventListener(\"click\", (event) => {\n const { target } = event;\n\n if (target instanceof HTMLElement) {\n target.blur();\n event.preventDefault();\n }\n\n search.showModal();\n });\n } else {\n console.error(\"MDNSearchModal not found!\");\n skipToSearch.hidden = true;\n }\n}\n","/**\n * @param {HTMLElement} toc\n * @returns {void}\n */\nfunction highlightTOC(toc) {\n // 1. Collect TOC items\n const tocItems = [...toc.querySelectorAll(\"a\")];\n\n // 2. Map sections to TOC item\n /** @type {Map<HTMLElement, HTMLAnchorElement>} */\n const tocItemBySection = new Map();\n for (const item of tocItems.reverse()) {\n const target = document.querySelector(\n `[id=\"${decodeURIComponent(item.hash).slice(1)}\"]`,\n );\n\n if (!target) {\n continue;\n }\n\n /** @type {Element|null} */\n let section = target.closest(\"section\");\n\n while (\n section &&\n section instanceof HTMLElement &&\n !tocItemBySection.has(section)\n ) {\n tocItemBySection.set(section, item);\n const next = section.nextElementSibling;\n section = next;\n }\n }\n\n /** @type {WeakMap<HTMLElement,number>} */\n const visibleSectionsByItem = new WeakMap();\n\n /** @type {Set<HTMLElement>} */\n const everVisibleSections = new Set();\n\n // 3. Handle visibility transitions\n const onIntersect = (/** @type {IntersectionObserverEntry[]} */ entries) => {\n for (const { target, isIntersecting } of entries) {\n if (!(target instanceof HTMLElement)) {\n continue;\n }\n\n if (!everVisibleSections.has(target)) {\n if (isIntersecting) {\n everVisibleSections.add(target);\n } else {\n continue;\n }\n }\n\n const item = tocItemBySection.get(target);\n\n if (!item) {\n continue;\n }\n\n const visibleCount =\n (visibleSectionsByItem.get(item) ?? 0) + (isIntersecting ? 1 : -1);\n\n item.ariaCurrent = visibleCount > 0 ? \"true\" : null;\n visibleSectionsByItem.set(item, visibleCount);\n }\n };\n\n // 5. Determine options.\n /** @type {IntersectionObserverInit} */\n const options = {\n threshold: 0,\n };\n const header = document.querySelector(\"header\");\n if (header instanceof HTMLElement) {\n options.rootMargin = `-${header.clientHeight}px 0px 0px 0px`;\n }\n\n // 5. Init observer.\n const observer = new IntersectionObserver(onIntersect, options);\n\n // 6. Observe sections.\n for (const section of tocItemBySection.keys()) {\n observer.observe(section);\n }\n}\n\nfor (const toc of document.querySelectorAll(\n \".generic-toc, .reference-toc, .document-toc, .blog-toc\",\n)) {\n if (toc instanceof HTMLElement) {\n highlightTOC(toc);\n }\n}\n","import { globalUser } from \"../components/user/context.js\";\n\ntry {\n const user = await globalUser();\n const nextPing = new Date(localStorage.getItem(\"next-ping\") || 0);\n if (navigator.sendBeacon && user.isAuthenticated && nextPing < new Date()) {\n const params = new URLSearchParams();\n\n navigator.sendBeacon(\"/api/v1/ping\", params);\n\n const newNextPing = new Date();\n newNextPing.setUTCDate(newNextPing.getUTCDate() + 1);\n newNextPing.setUTCHours(0);\n newNextPing.setUTCMinutes(0);\n newNextPing.setUTCSeconds(0);\n newNextPing.setUTCMilliseconds(0);\n localStorage.setItem(\"next-ping\", newNextPing.toISOString());\n }\n} catch (error) {\n console.error(\"Failed to send ping\", error);\n}\n","import { FluentBundle, FluentResource } from \"@fluent/bundle\";\nimport insane from \"insane\";\nimport { unsafeHTML } from \"lit/directives/unsafe-html.js\";\n\nimport enUS_ftl from \"./locales/en-US.ftl\";\n\n/**\n * @import { AllowedTags } from \"insane\";\n */\n\n/** @type {Record<string, string>} */\nconst ftlMap = {\n \"en-US\": enUS_ftl,\n};\n\nconst ALLOWED_TAGS = [\"i\", \"strong\", \"br\", \"em\"];\nconst ALLOWED_ATTRIBUTES = [\"title\", \"aria-label\"];\n\nexport class Fluent {\n /**\n * @param {string} locale\n * @param {string[]} resources\n */\n constructor(locale = \"en-US\", resources = []) {\n this.locale = locale;\n\n this.usBundle = Fluent.constructBundle(\n new FluentBundle(locale, { useIsolating: false }),\n [enUS_ftl],\n );\n\n if (resources.length > 0) {\n this.bundle = Fluent.constructBundle(\n new FluentBundle(locale, { useIsolating: false }),\n [enUS_ftl, ...resources],\n );\n }\n }\n\n /**\n * @param {FluentBundle} bundle\n * @param {string[]} resources\n */\n static constructBundle(bundle, resources = []) {\n for (const r of resources) {\n const errors = bundle.addResource(new FluentResource(r), {\n allowOverrides: true,\n });\n if (errors.length > 0) {\n console.error(errors);\n }\n }\n return bundle;\n }\n\n /**\n * @param {string} id\n * @param {string} [attr]\n * @param {Record<string, any>} [args]\n * @param {Record<string, import(\"../types/fluent.js\").Element>} [elements]\n * @returns {string | ReturnType<typeof unsafeHTML> | undefined}\n */\n get(id, attr, args, elements) {\n const message = this.getMessage(id, attr, args);\n if (!message) {\n return;\n }\n return Fluent.sanitize(message, elements);\n }\n\n /**\n * @param {string} message\n * @param {Record<string, import(\"../types/fluent.js\").Element>} [elements]\n * @returns {string | ReturnType<typeof unsafeHTML>}\n */\n static sanitize(message, elements = {}) {\n /** @type { Record<string, string[]> } */\n const allowedAttributes = {};\n for (const t of Object.values(elements)) {\n allowedAttributes[t.tag] = [\n ...Object.keys(t).filter((x) => x !== \"tag\"),\n ...ALLOWED_ATTRIBUTES,\n ];\n }\n\n const allowedTags = [\n ...Object.values(elements).map((t) => t.tag),\n ...ALLOWED_TAGS,\n ];\n\n let safe = true;\n const sanitized = insane(\n message,\n {\n allowedAttributes,\n allowedTags: /** @type {AllowedTags[]} */ (allowedTags),\n allowedSchemes: [\"http\", \"https\", \"mailto\"],\n filter(token) {\n // TODO: use element names directly\n const name = token.attrs[\"data-l10n-name\"];\n if (name) {\n for (const [k, v] of Object.entries(elements[name] || {})) {\n token.attrs[k] = v;\n }\n }\n if (\n ALLOWED_TAGS.includes(token.tag) ||\n (name &&\n Object.keys(elements).includes(name) &&\n elements[name]?.tag === token.tag)\n ) {\n safe = false;\n return true;\n }\n return false;\n },\n },\n true,\n );\n return safe ? sanitized : unsafeHTML(sanitized);\n }\n\n /**\n * @param {string} id\n * @param {string} [attr]\n * @param {Record<string, any>} [args]\n * @param {FluentBundle | undefined} [bundle]\n * @param {boolean} [us]\n * @returns {string | undefined}\n */\n getMessage(id, attr, args = {}, bundle = this.bundle, us = false) {\n const parentMessage = bundle ? bundle.getMessage(id) : undefined;\n let message;\n\n if (this.locale === \"qai\") {\n return `[${id}${attr ? `.${attr}` : \"\"}]`;\n }\n\n if (!parentMessage) {\n if (us) {\n // console.error(`string ${id} doesn't exist`);\n // return `[${id}${attr ? `.${attr}` : \"\"}]`;\n return;\n }\n return this.getMessage(id, attr, args, this.usBundle, true);\n }\n\n if (attr) {\n message = parentMessage.attributes[attr];\n if (!message) {\n if (us) {\n // console.error(`string ${id} with ${attr} attribute doesn't exist`);\n // return `[${id}.${attr}]`;\n return;\n }\n return this.getMessage(id, attr, args, this.usBundle, true);\n }\n } else if (parentMessage.value) {\n message = parentMessage.value;\n }\n\n if (!message || !bundle) {\n return \"\";\n }\n\n /** @type {Error[]} */\n const errors = [];\n const formatted = bundle?.formatPattern(message, args, errors);\n if (errors.length > 0) {\n console.error(errors);\n }\n return formatted;\n }\n}\n\n/** @type {Map<string, Fluent>} */\nconst fluent = new Map();\n\n/**\n * @param {string} [locale]\n */\nfunction getLocale(locale) {\n if (!locale) {\n return;\n }\n if (!fluent.has(locale)) {\n const ftl = ftlMap[locale];\n if (!ftl) {\n return new Fluent(locale);\n }\n const localeF = new Fluent(locale, [ftl]);\n fluent.set(locale, localeF);\n }\n return fluent.get(locale);\n}\n\n/**\n * @param {string} locale\n */\nexport async function loadFluentFile(locale) {\n if (locale !== \"qai\" && !ftlMap[locale]) {\n try {\n const { default: localeStrings } = await import(\n `./locales/${locale}.ftl`\n );\n ftlMap[locale] = localeStrings;\n } catch (error) {\n console.error(error);\n }\n }\n}\n\n/**\n * @param {string} locale\n */\nexport default function getFluentContext(locale) {\n /**\n * @param {string} id\n * @param {string} [_comment]\n * @returns {import(\"../types/fluent.js\").L10nTag}\n */\n function l10n(id, _comment) {\n // called as a function, returning a template tag:\n // l10n(\"foobar\")`Foobar`\n const localizedStringOrHtml = getLocale(locale)?.get(id);\n // if fluent has returned a lit html template, discard it\n const localizedString =\n typeof localizedStringOrHtml === \"string\"\n ? localizedStringOrHtml\n : undefined;\n const fallbackString = `[${id}]`;\n /** @type {import(\"../types/fluent.js\").L10nTag} */\n const tag = (strings) => {\n // we don't currently support any expressions in the template string\n // we might in the future, if we use l10n.raw a lot\n const templateString = strings[0];\n return localizedString || templateString || fallbackString;\n };\n tag.toString = () => {\n // called as a function, used as a function:\n // ${l10n(\"foobar\")}\n return localizedString || fallbackString;\n };\n return tag;\n }\n\n /**\n * @param {{ id: string, attr?: string, args?: Record<string, any>, elements?: Record<string, import(\"../types/fluent.js\").Element> }} param0\n */\n l10n.raw = function ({ id, attr, args, elements }) {\n const fluent = getLocale(locale);\n if (fluent) {\n return fluent.get(id, attr, args, elements);\n }\n return `[${id}]`;\n };\n\n return l10n;\n}\n\n// const l10n = getFluentContext(\"en-US\");\n\n// console.log(l10n`Hello`);\n// console.log(l10n(\"hello\")`Hello`);\n// console.log(l10n(\"hello\", \"a greeting to the user\")`Hello`);\n// console.log(l10n.raw({ id: \"hello\" }));\n// console.log(`${l10n(\"hello\")}`);\n\n// should show error:\n// l10n(\"hello\")`Hello ${\"world\"}`;\n","import { getSymmetricContext } from \"../symmetric-context/both.js\";\n\nimport { loadFluentFile } from \"./fluent.js\";\n\nconst locale = getSymmetricContext().locale;\nif (locale) await loadFluentFile(locale);\n","import { getSymmetricContext } from \"../symmetric-context/both.js\";\n\nimport getFluentContext from \"./fluent.js\";\n\n/**\n * @import { LitElement } from \"lit\";\n */\n\n/**\n * @template {new (...args: any[]) => LitElement} TBase\n * @param {TBase} Base\n */\nexport const L10nMixin = (Base) =>\n class LocalizedElement extends Base {\n /**\n * @param {...any} args\n */\n constructor(...args) {\n super(...args);\n const context = getSymmetricContext();\n this.locale = context.locale;\n this.l10n = getFluentContext(this.locale);\n }\n };\n","/**\n * Runs on either client or server,\n * and returns the client or server context respectively\n * @returns {import(\"./types.js\").SymmetricContext}\n */\nexport function getSymmetricContext() {\n const serverStore = globalThis.__MDNServerContext?.getStore();\n const clientStore = globalThis.__MDNClientContext;\n return serverStore || clientStore;\n}\n","/**\n * The client-derived values of the symmetric context:\n * this will run within a user's web browser\n * @type {import(\"./types.js\").SymmetricContext}\n */\nglobalThis.__MDNClientContext = {\n locale: globalThis.location.pathname.split(\"/\")[1] || \"en-US\",\n};\n","import GleanMetrics from \"@mozilla/glean/metrics\";\n\n/**\n * Records a click event.\n *\n * Use only if automatic click events are not an option.\n * See: https://mozilla.github.io/glean.js/automatic_instrumentation/click_events/\n *\n * @param {string} source\n */\nexport function gleanClick(source) {\n GleanMetrics.recordElementClick({\n id: source,\n url: globalThis.location.href,\n referrer: document.referrer,\n title: document.title,\n });\n}\n","/**\n * Returns an MDN URL into a Breadcrumb-like string representation.\n *\n * @param {string} url - the full MDN URL (e.g. \"/en-US/docs/Web/HTML/Reference/Elements/a\").\n * @param {string} locale - the locale (to omit)\n * @returns {string} the breadcrumb-like string for the URL.\n */\nexport function mdnUrl2Breadcrumb(url, locale) {\n let parents = url\n .replaceAll(\"_\", \" \")\n .split(\"/\")\n .filter((p) => ![\"\", locale, \"docs\"].includes(p));\n\n // Replace \"API\" for clarity.\n parents = parents.map((p) => (p === \"API\" ? \"Web APIs\" : p));\n\n if (parents.length > 1 && parents.at(0) === \"Web\") {\n // Remove virtual \"Web\" path.\n parents.splice(0, 1);\n }\n\n if (parents.length > 1) {\n // Remove current item.\n parents.splice(-1, 1);\n }\n\n return parents.join(\" / \");\n}\n"],"names":["Promise","Error","Object","document","localStorage","HTMLDetailsElement","e","console","o","JSON","Number","globalThis","HTMLElement","MDNSearchModal","fetch","t","HTMLInputElement","MouseEvent","setTimeout","i","Boolean","URLSearchParams","String","RegExp","customElements","value","ViewedObserver","IntersectionObserver","clearTimeout","HTMLDialogElement","addEventListener","Element","HTMLAnchorElement","HTMLIFrameElement","Set","window","Map","decodeURIComponent","WeakMap","Date","navigator","Fluent","s"],"mappings":";+IAAA,MAAe,CAAC;AAChB;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,yGCxJG,EAAgC,kBAChC,EAA0B,IAA4B,KACtD,EAAqC,IAAgC,GAEzE,EAAwB,IAAI,CAAC,CAAC,EAAO,EAAE,CAAE,CAAC,mvDAAmvD,EAAE,EAAmC,m2BAAm2B,CAAC,CAAE,GAAG,EAE3qF,MAAe,SAAI,CAAC,EAAwB,QAAQ,GAAG,gDCX5B,MAAe,QAAG,CAAC,2NAA2N,CAAC,eCA1Q,IAAI,EAAM,CACR,4BAA6B,CAC3B,QACA,OACA,OACA,OACA,OACA,OACA,OACD,CACD,wBAAyB,CACvB,QACA,OACA,OACD,CACD,kCAAmC,CACjC,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACD,CACD,4CAA6C,CAC3C,QACA,OACD,CACD,2BAA4B,CAC1B,QACA,OACA,OACA,OACA,OACD,CACD,6BAA8B,CAC5B,QACA,OACD,CACD,sBAAuB,CACrB,QACA,OACA,OACA,OACA,OACD,CACD,8BAA+B,CAC7B,QACA,OACD,CACD,iCAAkC,CAChC,QACA,OACA,OACA,OACA,OACA,OACA,OACD,CACD,iCAAkC,CAChC,QACA,OACA,OACA,OACA,OACA,OACA,OACD,CACD,4BAA6B,CAC3B,QACA,OACA,OACD,CACD,8BAA+B,CAC7B,QACA,OACA,OACD,CACD,yBAA0B,CACxB,QACA,OACA,OACA,OACD,CACD,mCAAoC,CAClC,QACA,OACA,MACA,OACA,OACA,MACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACD,CACD,2BAA4B,CAC1B,QACA,OACA,OACA,OACD,CACD,4CAA6C,CAC3C,QACA,OACA,OACD,CACD,8BAA+B,CAC7B,QACA,OACD,CACD,4BAA6B,CAC3B,QACA,OACD,CACD,4BAA6B,CAC3B,QACA,OACA,OACA,OACD,CACD,sBAAuB,CACrB,QACA,OACD,CACD,sCAAuC,CACrC,OACA,OACA,OACA,OACD,CACD,gCAAiC,CAC/B,QACA,OACD,CACD,sBAAuB,CACrB,QACA,OACA,OACD,CACD,+BAAgC,CAC9B,QACA,OACD,CACD,qBAAsB,CACpB,QACA,OACA,OACD,CACD,2BAA4B,CAC1B,QACA,OACA,MACD,CACD,iCAAkC,CAChC,MACA,OACD,CACD,gCAAiC,CAC/B,QACA,OACA,OACD,CACD,4BAA6B,CAC3B,QACA,OACD,CACD,sBAAuB,CACrB,QACA,OACA,OACD,CACD,uCAAwC,CACtC,OACA,OACA,OACD,CACD,+BAAgC,CAC9B,QACA,OACD,CACD,gCAAiC,CAC/B,OACA,OACA,OACA,OACA,OACA,OACA,OACD,CACD,6BAA8B,CAC5B,QACA,OACD,CACD,yBAA0B,CACxB,OACA,OACA,OACD,CACD,8BAA+B,CAC7B,QACA,OACD,CACD,iCAAkC,CAChC,QACA,OACA,OACA,OACA,MACD,CACD,2BAA4B,CAC1B,QACA,OACA,OACD,CACD,4BAA6B,CAC3B,QACA,OACD,CACD,+BAAgC,CAC9B,QACA,OACD,CACD,6BAA8B,CAC5B,OACA,OACA,OACA,OACA,OACA,OACA,OACD,CACD,gCAAiC,CAC/B,QACA,OACA,OACA,OACA,OACD,CACD,mCAAoC,CAClC,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACD,CACD,0BAA2B,CACzB,QACA,OACD,CACD,0CAA2C,CACzC,QACA,OACA,OACD,CACD,0BAA2B,CACzB,QACA,OACA,MACA,OACA,OACA,MACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACD,CACD,4BAA6B,CAC3B,QACA,OACD,CACD,2BAA4B,CAC1B,QACA,MACA,OACA,OACA,MACA,OACA,OACA,MACA,OACA,OACA,OACD,CACD,4BAA6B,CAC3B,QACA,OACD,CACD,kCAAmC,CACjC,QACA,OACA,OACD,CACD,4BAA6B,CAC3B,QACA,OACD,CACD,4BAA6B,CAC3B,QACA,OACA,OACA,OACD,CACD,4BAA6B,CAC3B,QACA,OACA,OACD,CACD,yCAA0C,CACxC,QACA,OACA,OACA,OACD,CACD,gCAAiC,CAC/B,QACA,OACA,OACD,CACD,+CAAgD,CAC9C,QACA,OACA,OACD,CACD,iCAAkC,CAChC,QACA,OACA,OACA,OACA,OACA,OACD,CACD,4BAA6B,CAC3B,QACD,CACD,6BAA8B,CAC5B,QACA,OACD,AACH,EACA,SAAS,EAAuB,CAAG,EACjC,GAAG,CAAC,EAAoB,CAAC,CAAC,EAAK,GAC7B,OAAOA,QAAQ,OAAO,GAAG,IAAI,CAAC,WAC5B,IAAI,EAAI,AAAIC,MAAM,uBAAyB,EAAM,IAEjD,OADA,EAAE,IAAI,CAAG,mBACH,CACR,GAGF,IAAI,EAAM,CAAG,CAAC,EAAI,CAAE,EAAK,CAAG,CAAC,EAAE,CAC/B,OAAOD,QAAQ,GAAG,CAAC,EAAI,KAAK,CAAC,GAAG,GAAG,CAAC,EAAoB,CAAC,GAAG,IAAI,CAAC,WAC/D,OAAO,EAAoB,EAC7B,EACF,CAEA,EAAuB,IAAI,CAAG,IA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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"styles-content-section.447b2154ef6d091d.css","sources":["webpack://@mdn/fred/./components/code-example/common.css","webpack://@mdn/fred/./components/prev-next/index.css","webpack://@mdn/fred/./components/notecard/index.css","webpack://@mdn/fred/./components/code-example/prism.css","webpack://@mdn/fred/./components/content-section/server.css"],"sourcesContent":[".code-example {\n --border: 1px solid var(--color-border-primary);\n overflow: hidden;\n border: var(--border);\n border-radius: 0.25rem;\n}.code-example .example-header {\n display: flex;\n\n align-items: center;\n\n min-height: 3.1rem;\n\n padding: 0.5rem 1rem;\n\n line-height: var(--font-line-ui);\n\n border-bottom: var(--border);\n }:is(.code-example .example-header) .language-name {\n text-transform: uppercase;\n }.code-example pre {\n display: flex;\n\n margin: 0;\n\n white-space: pre-wrap;\n\n background-color: var(--color-background-secondary);\n }:is(.code-example pre) code {\n flex-grow: 1;\n flex-shrink: 1;\n\n padding: 1rem;\n\n overflow: auto;\n\n font-family: var(--font-family-code);\n\n background-color: transparent;\n }.hidden:is(.code-example pre),[class*=\"interactive-example\"]:is(.code-example pre) {\n display: none;\n }:is(.example-good:is(.code-example pre),.example-bad:is(.code-example pre))::after {\n display: inline-block;\n\n flex-shrink: 0;\n\n width: var(--font-size-medium);\n height: var(--font-size-medium);\n\n margin: 1.255rem 1rem;\n\n content: \"\";\n\n mask-size: cover;\n }.example-good:is(.code-example pre) {\n background-color: var(--color-background-green);\n }.example-good:is(.code-example pre)::after {\n background-color: var(--color-text-green);\n mask-image: url(\"../icon/circle-check.svg\");\n }.example-bad:is(.code-example pre) {\n background-color: var(--color-background-red);\n }.example-bad:is(.code-example pre)::after {\n background-color: var(--color-text-red);\n mask-image: url(\"../icon/circle-x.svg\");\n }.code-example:has(.hidden,[class*=\"interactive-example\"]) {\n /* TODO: we might want to fix this in rari */\n display: none;\n }.code-example iframe,.code-example mdn-play-runner {\n box-sizing: content-box;\n display: block;\n\n padding: 1rem;\n\n border: none;\n }\n","/* Tutorial nav. */\n.prev-next {\n display: flex;\n\n flex-wrap: nowrap;\n\n gap: 1rem;\n justify-content: space-between;\n\n width: 100%;\n\n padding: 0.5rem;\n margin: 0;\n\n list-style: none;\n\n border: 1px solid var(--color-border-primary);\n border-width: 1px 0;\n}\n.prev-next a {\n color: var(--color-link-normal) !important;\n text-wrap: balance;\n }\n:is(.prev-next a):visited {\n color: var(--color-link-visited) !important;\n }\n@media (width <= 426px) {\n.prev-next {\n display: grid;\n grid-template-areas:\n \"title title\"\n \"prev next\";\n}\n\n .prev-next li.menu {\n grid-area: title;\n justify-self: center;\n }\n\n .prev-next li.prev {\n grid-area: prev;\n justify-self: start;\n }\n\n .prev-next li.next {\n grid-area: next;\n justify-self: end;\n }\n }\n.prev-next .prev a,.prev-next .next a {\n display: flex;\n gap: 0.25rem;\n align-items: center;\n }\n.prev-next li {\n display: flex;\n\n flex-wrap: nowrap;\n\n place-items: center;\n\n background: none;\n }\n:is(.prev-next li) .button {\n color: inherit;\n background-color: inherit;\n border: inherit;\n }\n:is(:is(.prev-next li) .button):hover {\n -webkit-text-decoration: underline;\n text-decoration: underline;\n }\n.prev:is(.prev-next li) a::before,.next:is(.prev-next li) a::after {\n display: inline-block;\n\n width: 1em;\n height: 1em;\n\n vertical-align: middle;\n\n content: \"\";\n\n background-color: currentcolor;\n\n mask-size: cover;\n }\n.prev:is(.prev-next li) {\n margin-right: auto;\n }\n.prev:is(.prev-next li) a::before {\n mask-image: url(\"../icon/arrow-left.svg\");\n }\n.prev:is(.prev-next li) ~ .menu:is(.prev-next li) {\n margin-right: auto;\n margin-left: auto;\n text-align: center;\n }\n.next:is(.prev-next li) {\n margin-left: auto;\n }\n.next:is(.prev-next li) a::after {\n mask-image: url(\"../icon/arrow-right.svg\");\n }\n",".notecard,\n.callout {\n position: relative;\n\n padding-block: 1px;\n padding-inline: 1em;\n padding-inline-start: 3em;\n margin-block: 1em;\n\n color: var(--color-text-primary);\n\n background-color: var(--color-background-secondary);\n border-inline-start: 2px solid\n var(--accent-color, var(--color-text-secondary));\n border-radius: 0.25em;\n}.note:is(.notecard,.callout),.secure:is(.notecard,.callout),.experimental:is(.notecard,.callout) {\n background-color: var(--color-background-blue);\n --accent-color: var(--color-text-blue);\n }.warning:is(.notecard,.callout),.deprecated:is(.notecard,.callout),.nonstandard:is(.notecard,.callout) {\n background-color: var(--color-background-red);\n --accent-color: var(--color-text-red);\n }.tip:is(.notecard,.callout) {\n background-color: var(--color-background-green);\n --accent-color: var(--color-text-green);\n }:is(.deprecated:is(.notecard,.callout),.experimental:is(.notecard,.callout),.nonstandard:is(.notecard,.callout),.note:is(.notecard,.callout),.secure:is(.notecard,.callout),.tip:is(.notecard,.callout),.warning:is(.notecard,.callout),.worker:is(.notecard,.callout))::before {\n position: absolute;\n top: 1.45em;\n left: 1em;\n\n display: block;\n\n width: 1em;\n height: 1em;\n\n content: \"\";\n\n background-color: var(--accent-color, var(--color-text-secondary));\n\n mask-size: cover;\n }.deprecated:is(.notecard,.callout)::before {\n /* e.g. Window: blur() method */\n mask-image: url(\"../icon/trash-2.svg\");\n }.experimental:is(.notecard,.callout)::before {\n /* e.g. Barcode Detection API */\n mask-image: url(\"../icon/flask-conical.svg\");\n }.nonstandard:is(.notecard,.callout)::before {\n /* e.g. Document: caretRangeFromPoint() method */\n mask-image: url(\"../icon/triangle-alert.svg\");\n }.note:is(.notecard,.callout)::before {\n /* e.g. Barcode Detection API */\n mask-image: url(\"../icon/info.svg\");\n }.secure:is(.notecard,.callout)::before {\n /* e.g. Barcode Detection API */\n mask-image: url(\"../icon/lock.svg\");\n }.tip:is(.notecard,.callout)::before {\n /* (Not used in content yet) */\n mask-image: url(\"../icon/lightbulb.svg\");\n }.warning:is(.notecard,.callout)::before {\n /* e.g. Navigator: scheduling property */\n mask-image: url(\"../icon/triangle-alert.svg\");\n }.worker:is(.notecard,.callout)::before {\n /* e.g. Worker: Worker() constructor (needs rari change) */\n mask-image: url(\"../icon/cog.svg\");\n }\n","\n :is(.code-example,.css-formal-syntax) .token.comment,:is(.code-example,.css-formal-syntax) .token.prolog,:is(.code-example,.css-formal-syntax) .token.doctype,:is(.code-example,.css-formal-syntax) .token.cdata {\n --csstools-light-dark-toggle-360cf513-0: var(--csstools-color-scheme--light) #b3b3b3;\n color: var(--csstools-light-dark-toggle-360cf513-0, #51565d);\n color: light-dark(#51565d, #b3b3b3);\n }:is(.code-example,.css-formal-syntax) .token.punctuation {\n --csstools-light-dark-toggle-360cf513-1: var(--csstools-color-scheme--light) #b3b3b3;\n color: var(--csstools-light-dark-toggle-360cf513-1, #51565d);\n color: light-dark(#51565d, #b3b3b3);\n }:is(.code-example,.css-formal-syntax) .token.attr-name,:is(.code-example,.css-formal-syntax) .token.builtin,:is(.code-example,.css-formal-syntax) .token.inserted,:is(.code-example,.css-formal-syntax) .token.selector,:is(.code-example,.css-formal-syntax) .token.property,:is(.code-example,.css-formal-syntax) .token.class-name,:is(.code-example,.css-formal-syntax) .token.function {\n --csstools-light-dark-toggle-360cf513-2: var(--csstools-color-scheme--light) #ff97a0;\n color: var(--csstools-light-dark-toggle-360cf513-2, #d30038);\n color: light-dark(#d30038, #ff97a0);\n }:is(.code-example,.css-formal-syntax) .token.atrule,:is(.code-example,.css-formal-syntax) .token.attr-value {\n --csstools-light-dark-toggle-360cf513-3: var(--csstools-color-scheme--light) #00d061;\n color: var(--csstools-light-dark-toggle-360cf513-3, #007936);\n color: light-dark(#007936, #00d061);\n }:is(.code-example,.css-formal-syntax) .token.keyword {\n --csstools-light-dark-toggle-360cf513-4: var(--csstools-color-scheme--light) #c1cff1;\n color: var(--csstools-light-dark-toggle-360cf513-4, #0069c2);\n color: light-dark(#0069c2, #c1cff1);\n }:is(.code-example,.css-formal-syntax) .token.tag,:is(.code-example,.css-formal-syntax) .token.char,:is(.code-example,.css-formal-syntax) .token.string,:is(.code-example,.css-formal-syntax) .token.boolean,:is(.code-example,.css-formal-syntax) .token.number,:is(.code-example,.css-formal-syntax) .token.constant,:is(.code-example,.css-formal-syntax) .token.symbol,:is(.code-example,.css-formal-syntax) .token.deleted {\n --csstools-light-dark-toggle-360cf513-5: var(--csstools-color-scheme--light) #00d061;\n color: var(--csstools-light-dark-toggle-360cf513-5, #007936);\n color: light-dark(#007936, #00d061);\n }:is(.code-example,.css-formal-syntax) .token.selector,:is(.code-example,.css-formal-syntax) .token.builtin,:is(.code-example,.css-formal-syntax) .token.template-string > .token.string,:is(.code-example,.css-formal-syntax) .token.inserted {\n --csstools-light-dark-toggle-360cf513-6: var(--csstools-color-scheme--light) #bea5ff;\n color: var(--csstools-light-dark-toggle-360cf513-6, #872bff);\n color: light-dark(#872bff, #bea5ff);\n }:is(.code-example,.css-formal-syntax) .token.important,:is(.code-example,.css-formal-syntax) .token.bold {\n font-weight: bold;\n }:is(.code-example,.css-formal-syntax) .token.italic {\n font-style: italic;\n }:is(.code-example,.css-formal-syntax) .token.entity {\n cursor: help;\n }\n","@import url(\"../code-example/common.css\");\n@import url(\"../prev-next/index.css\");\n@import url(\"../notecard/index.css\");\n@import url(\"../code-example/prism.css\");\n\n.content-section {\n line-height: var(--font-line-content);\n}\n\n.content-section :target {\n scroll-margin-top: var(--sticky-header-height);\n }\n\n.content-section h2,.content-section h3,.content-section h4,.content-section h5,.content-section h6 {\n margin: 1rem 0 0;\n font-weight: var(--font-weight-normal);\n line-height: var(--font-line-header);\n }\n\n.content-section h2 {\n font-size: var(--font-size-larger);\n }\n\n.content-section h3 {\n font-size: var(--font-size-large);\n }\n\n.content-section h4 {\n font-size: var(--font-size-medium);\n }\n\n.content-section h5,.content-section h6 {\n font-size: var(--font-size-normal);\n font-weight: var(--font-weight-bold);\n }\n\n:is(.content-section a):visited {\n color: var(--color-link-visited);\n }\n\n/* Regular links */\n\n:is(.content-section a):not([href^=\"#\"]) {\n -webkit-text-decoration: underline;\n text-decoration: underline;\n }\n\n:is(.content-section a):not([href^=\"#\"]):hover {\n -webkit-text-decoration: none;\n text-decoration: none;\n }\n\n/* Anchor links */\n\n[href^=\"#\"]:is(.content-section a) {\n -webkit-text-decoration: none;\n text-decoration: none;\n }\n\n[href^=\"#\"]:is(.content-section a):hover {\n -webkit-text-decoration: underline;\n text-decoration: underline;\n }\n\n.content-section blockquote {\n margin-inline: 0;\n color: var(--color-text-secondary);\n border-inline-start: 0.25rem solid var(--color-border-primary);\n }\n\n:is(.content-section blockquote) > p {\n padding: 1rem 2rem;\n }\n\n.content-section pre,.content-section code {\n font-family: var(--font-family-code);\n background-color: var(--color-background-secondary);\n }\n\n.content-section pre {\n white-space: pre-wrap;\n }\n\n.content-section pre:not(.code-example pre) {\n padding: 1rem;\n\n overflow: auto;\n\n border: 1px solid var(--color-border-primary);\n border-radius: 0.25rem;\n }\n\n.css-formal-syntax:is(.content-section pre:not(.code-example pre)) {\n margin-bottom: 0;\n\n text-wrap: wrap;\n\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n }\n\n.css-formal-syntax:is(.content-section pre:not(.code-example pre)) ~ footer {\n padding: 0.5rem 1rem;\n margin-bottom: 1rem;\n\n border: 1px solid var(--color-border-primary);\n border-top: 0;\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n }\n\n.example-good:is(.content-section pre:not(.code-example pre)),.example-bad:is(.content-section pre:not(.code-example pre)) {\n display: flex;\n justify-content: space-between;\n }\n\n:is(.example-good:is(.content-section pre:not(.code-example pre)),.example-bad:is(.content-section pre:not(.code-example pre)))::after {\n display: inline-block;\n\n flex-shrink: 0;\n\n width: var(--font-size-medium);\n height: var(--font-size-medium);\n\n content: \"\";\n\n mask-size: cover;\n }\n\n.example-good:is(.content-section pre:not(.code-example pre)) {\n background-color: var(--color-background-green);\n }\n\n.example-good:is(.content-section pre:not(.code-example pre))::after {\n background-color: var(--color-text-green);\n mask-image: url(\"../icon/circle-check.svg\");\n }\n\n.example-bad:is(.content-section pre:not(.code-example pre)) {\n background-color: var(--color-background-red);\n }\n\n.example-bad:is(.content-section pre:not(.code-example pre))::after {\n background-color: var(--color-text-red);\n mask-image: url(\"../icon/circle-x.svg\");\n }\n\n.content-section code {\n padding: 0.125em 0.25em;\n border-radius: var(--radius-normal);\n }\n\n.content-section kbd {\n padding: 0.0625em 0.125em;\n\n font-family: var(--font-family-code);\n\n color: var(--color-text-secondary);\n\n background-color: var(--color-background-primary);\n border: 1px solid var(--color-border-primary);\n border-bottom-width: 2px;\n border-radius: var(--radius-normal);\n }\n\n.content-section img {\n display: block;\n\n margin: 2rem auto;\n\n background-color: var(--color-white);\n border: 1px solid var(--color-border-primary);\n border-radius: 0.25rem;\n }\n\n.content-section iframe {\n border: 1px solid var(--color-border-primary);\n border-radius: 0.25rem;\n }\n\n.content-section table {\n width: 100%;\n border-collapse: collapse;\n }\n\n:is(.content-section table) tr {\n background-color: var(--color-background-primary);\n }\n\n:is(.content-section table) thead tr,:is(.content-section table) tr:nth-of-type(2n) {\n background-color: var(--color-background-page);\n }\n\n:is(.content-section table) th,:is(.content-section table) td {\n padding: 0.5rem 0.75rem;\n border: 1px solid var(--color-border-primary);\n }\n\n:is(.content-section table) th {\n font-weight: var(--font-weight-bold);\n text-align: left;\n }\n\n.properties:is(.content-section table) th,.properties:is(.content-section table) td {\n border-width: 1px 0;\n }\n\n.properties:is(.content-section table) th {\n min-width: 25%;\n font-weight: var(--font-weight-bold);\n background-color: transparent;\n }\n\n.content-section .code-example,.content-section mdn-code-example,.content-section mdn-live-sample-result {\n margin: 1rem 0;\n }\n\n:is(.content-section .code-example,.content-section mdn-code-example,.content-section mdn-live-sample-result) + :is(.content-section .code-example,.content-section mdn-code-example,.content-section mdn-live-sample-result) {\n margin-top: 1.5rem;\n }\n\n.content-section interactive-example {\n display: block;\n height: 375px;\n margin: 1rem 0;\n }\n\n[name^=\"JavaScript Demo:\" i]:is(.content-section interactive-example) {\n height: 444px;\n }\n\n[height=\"shorter\"]:is(.content-section interactive-example) {\n height: 364px;\n }\n\n[height=\"taller\"]:is(.content-section interactive-example) {\n height: 654px;\n }\n\n[height=\"tabbed-shorter\"]:is(.content-section interactive-example) {\n height: 351px;\n margin-top: 1.5rem;\n }\n\n[height=\"tabbed-standard\"]:is(.content-section interactive-example) {\n height: 421px;\n }\n\n[height=\"tabbed-taller\"]:is(.content-section interactive-example) {\n height: 631px;\n }\n\n@media (width <= 992px) {\n\n.content-section interactive-example {\n height: 675px;\n }\n\n [name^=\"JavaScript Demo:\" i]:is(.content-section interactive-example) {\n height: 513px;\n }\n\n [height=\"shorter\"]:is(.content-section interactive-example) {\n height: 433px;\n }\n\n [height=\"taller\"]:is(.content-section interactive-example) {\n height: 725px;\n }\n\n [height=\"tabbed-shorter\"]:is(.content-section interactive-example) {\n height: 487px;\n }\n\n [height=\"tabbed-standard\"]:is(.content-section interactive-example) {\n height: 548px;\n }\n\n [height=\"tabbed-taller\"]:is(.content-section interactive-example) {\n height: 774px;\n }\n }\n\n/* Definition list */\n\n:is(.content-section dl) dl {\n padding-left: 1rem;\n border-left: 1px solid var(--color-border-primary);\n }\n\n:is(.content-section dl) dd {\n margin-left: 1rem;\n\n /* Move description closer to term. */\n }\n\n:is(:is(.content-section dl) dd) p:first-child {\n margin-top: 0.5rem;\n }\n\n:is(.content-section dl) ul {\n margin: 1rem 0 2rem;\n }\n\n:is(.content-section dl) dt a[href^=\"#\"] {\n color: inherit;\n }\n\n:is(:is(.content-section dl) dt a[href^=\"#\"]):hover::before {\n position: absolute;\n\n margin-top: 0.3em;\n margin-left: -0.9em;\n\n font-size: var(--font-size-small);\n\n color: var(--color-text-secondary);\n\n content: \"#\";\n }\n\n:is(.content-section ul.specifications-list) li:has(details) {\n margin-left: -1.25rem;\n list-style: none;\n }\n\n:is(.content-section ul.specifications-list) details {\n width: 100%;\n }\n\n[open]:is(:is(.content-section ul.specifications-list) details) > summary {\n margin-bottom: 0.5rem;\n }\n\n:is([open]:is(:is(.content-section ul.specifications-list) details) > summary)::before {\n transform: rotate(90deg);\n }\n\n:is(:is(.content-section ul.specifications-list) details) summary {\n display: flex;\n align-items: center;\n cursor: pointer;\n }\n\n:is(:is(:is(.content-section ul.specifications-list) details) summary)::before {\n display: inline-block;\n\n flex-shrink: 0;\n\n width: 1rem;\n height: 1rem;\n\n margin: 0.125rem;\n\n content: \"\";\n\n background-color: currentcolor;\n\n mask-image: url(\"../icon/chevron-right.svg\");\n mask-size: cover;\n }\n\n:is(:is(:is(.content-section ul.specifications-list) details) summary):hover {\n background-color: var(--color-background-secondary);\n }\n\n:is(:is(:is(.content-section ul.specifications-list) details) summary):hover:has(a:hover) {\n /* Don't highlight, as link click doesn't toggle. */\n background-color: unset;\n }\n\n/* Article footer */\n\n.content-section.article-footer {\n margin: 2rem 0;\n }\n"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- .badge.inline.optional,.badge.inline.readonly,.badge.inline.secure{border:1px solid var(--color-border-primary);border-radius:1em;color:var(--color-text-secondary);font-size:var(--font-size-small);padding:.25em .5em;vertical-align:text-top;white-space:nowrap}mdn-button{display:inline-flex;vertical-align:middle}mdn-code-example{display:block}html[data-theme=light]{--csstools-color-scheme--light:initial;color-scheme:light}html[data-theme=dark]{--csstools-color-scheme--light: ;color-scheme:dark}:root{--csstools-light-dark-toggle-baa18a82-0:var(--csstools-color-scheme--light) var(--color-gray-40);--color-border-primary:var(--csstools-light-dark-toggle-baa18a82-0,var(--color-gray-60));--csstools-light-dark-toggle-baa18a82-1:var(--csstools-color-scheme--light) var(--color-gray-60);--color-border-secondary:var(--csstools-light-dark-toggle-baa18a82-1,var(--color-gray-40));--csstools-light-dark-toggle-baa18a82-2:var(--csstools-color-scheme--light) var(--color-blue-80);--color-border-active:var(--csstools-light-dark-toggle-baa18a82-2,var(--color-blue-50))}@supports (color:light-dark(red,red)){:root{--color-border-primary:light-dark(var(--color-gray-60),var(--color-gray-40));--color-border-secondary:light-dark(var(--color-gray-40),var(--color-gray-60));--color-border-active:light-dark(var(--color-blue-50),var(--color-blue-80))}}@supports not (color:light-dark(tan,tan)){:root *{--csstools-light-dark-toggle-baa18a82-0:var(--csstools-color-scheme--light) var(--color-gray-40);--color-border-primary:var(--csstools-light-dark-toggle-baa18a82-0,var(--color-gray-60));--csstools-light-dark-toggle-baa18a82-1:var(--csstools-color-scheme--light) var(--color-gray-60);--color-border-secondary:var(--csstools-light-dark-toggle-baa18a82-1,var(--color-gray-40));--csstools-light-dark-toggle-baa18a82-2:var(--csstools-color-scheme--light) var(--color-blue-80);--color-border-active:var(--csstools-light-dark-toggle-baa18a82-2,var(--color-blue-50))}}:root{--csstools-light-dark-toggle-29c9dff5-0:var(--csstools-color-scheme--light) var(--color-gray-05);--color-background-page:var(--csstools-light-dark-toggle-29c9dff5-0,var(--color-white));--csstools-light-dark-toggle-29c9dff5-1:var(--csstools-color-scheme--light) var(--color-gray-10);--color-background-primary:var(--csstools-light-dark-toggle-29c9dff5-1,var(--color-gray-90));--csstools-light-dark-toggle-29c9dff5-2:var(--csstools-color-scheme--light) var(--color-gray-20);--color-background-secondary:var(--csstools-light-dark-toggle-29c9dff5-2,var(--color-gray-80))}@supports (color:light-dark(red,red)){:root{--color-background-page:light-dark(var(--color-white),var(--color-gray-05));--color-background-primary:light-dark(var(--color-gray-90),var(--color-gray-10));--color-background-secondary:light-dark(var(--color-gray-80),var(--color-gray-20))}}@supports not (color:light-dark(tan,tan)){:root *{--csstools-light-dark-toggle-29c9dff5-0:var(--csstools-color-scheme--light) var(--color-gray-05);--color-background-page:var(--csstools-light-dark-toggle-29c9dff5-0,var(--color-white));--csstools-light-dark-toggle-29c9dff5-1:var(--csstools-color-scheme--light) var(--color-gray-10);--color-background-primary:var(--csstools-light-dark-toggle-29c9dff5-1,var(--color-gray-90));--csstools-light-dark-toggle-29c9dff5-2:var(--csstools-color-scheme--light) var(--color-gray-20);--color-background-secondary:var(--csstools-light-dark-toggle-29c9dff5-2,var(--color-gray-80))}}:root{--csstools-light-dark-toggle-29c9dff5-3:var(--csstools-color-scheme--light) var(--color-red-10);--color-background-red:var(--csstools-light-dark-toggle-29c9dff5-3,var(--color-red-90));--csstools-light-dark-toggle-29c9dff5-4:var(--csstools-color-scheme--light) var(--color-orange-10);--color-background-orange:var(--csstools-light-dark-toggle-29c9dff5-4,var(--color-orange-90));--csstools-light-dark-toggle-29c9dff5-5:var(--csstools-color-scheme--light) var(--color-yellow-10);--color-background-yellow:var(--csstools-light-dark-toggle-29c9dff5-5,var(--color-yellow-90));--csstools-light-dark-toggle-29c9dff5-6:var(--csstools-color-scheme--light) var(--color-green-10);--color-background-green:var(--csstools-light-dark-toggle-29c9dff5-6,var(--color-green-90));--csstools-light-dark-toggle-29c9dff5-7:var(--csstools-color-scheme--light) var(--color-blue-10);--color-background-blue:var(--csstools-light-dark-toggle-29c9dff5-7,var(--color-blue-90));--csstools-light-dark-toggle-29c9dff5-8:var(--csstools-color-scheme--light) var(--color-purple-10);--color-background-purple:var(--csstools-light-dark-toggle-29c9dff5-8,var(--color-purple-90))}@supports (color:light-dark(red,red)){:root{--color-background-red:light-dark(var(--color-red-90),var(--color-red-10));--color-background-orange:light-dark(var(--color-orange-90),var(--color-orange-10));--color-background-yellow:light-dark(var(--color-yellow-90),var(--color-yellow-10));--color-background-green:light-dark(var(--color-green-90),var(--color-green-10));--color-background-blue:light-dark(var(--color-blue-90),var(--color-blue-10));--color-background-purple:light-dark(var(--color-purple-90),var(--color-purple-10))}}@supports not (color:light-dark(tan,tan)){:root *{--csstools-light-dark-toggle-29c9dff5-3:var(--csstools-color-scheme--light) var(--color-red-10);--color-background-red:var(--csstools-light-dark-toggle-29c9dff5-3,var(--color-red-90));--csstools-light-dark-toggle-29c9dff5-4:var(--csstools-color-scheme--light) var(--color-orange-10);--color-background-orange:var(--csstools-light-dark-toggle-29c9dff5-4,var(--color-orange-90));--csstools-light-dark-toggle-29c9dff5-5:var(--csstools-color-scheme--light) var(--color-yellow-10);--color-background-yellow:var(--csstools-light-dark-toggle-29c9dff5-5,var(--color-yellow-90));--csstools-light-dark-toggle-29c9dff5-6:var(--csstools-color-scheme--light) var(--color-green-10);--color-background-green:var(--csstools-light-dark-toggle-29c9dff5-6,var(--color-green-90));--csstools-light-dark-toggle-29c9dff5-7:var(--csstools-color-scheme--light) var(--color-blue-10);--color-background-blue:var(--csstools-light-dark-toggle-29c9dff5-7,var(--color-blue-90));--csstools-light-dark-toggle-29c9dff5-8:var(--csstools-color-scheme--light) var(--color-purple-10);--color-background-purple:var(--csstools-light-dark-toggle-29c9dff5-8,var(--color-purple-90))}}:root{--csstools-light-dark-toggle-e9dfdd1f-0:var(--csstools-color-scheme--light) var(--color-white);--color-text-primary:var(--csstools-light-dark-toggle-e9dfdd1f-0,var(--color-black));--csstools-light-dark-toggle-e9dfdd1f-1:var(--csstools-color-scheme--light) var(--color-gray-60);--color-text-secondary:var(--csstools-light-dark-toggle-e9dfdd1f-1,var(--color-gray-40))}@supports (color:light-dark(red,red)){:root{--color-text-primary:light-dark(var(--color-black),var(--color-white));--color-text-secondary:light-dark(var(--color-gray-40),var(--color-gray-60))}}@supports not (color:light-dark(tan,tan)){:root *{--csstools-light-dark-toggle-e9dfdd1f-0:var(--csstools-color-scheme--light) var(--color-white);--color-text-primary:var(--csstools-light-dark-toggle-e9dfdd1f-0,var(--color-black));--csstools-light-dark-toggle-e9dfdd1f-1:var(--csstools-color-scheme--light) var(--color-gray-60);--color-text-secondary:var(--csstools-light-dark-toggle-e9dfdd1f-1,var(--color-gray-40))}}:root{--csstools-light-dark-toggle-e9dfdd1f-2:var(--csstools-color-scheme--light) var(--color-red-80);--color-text-red:var(--csstools-light-dark-toggle-e9dfdd1f-2,var(--color-red-20));--csstools-light-dark-toggle-e9dfdd1f-3:var(--csstools-color-scheme--light) var(--color-orange-80);--color-text-orange:var(--csstools-light-dark-toggle-e9dfdd1f-3,var(--color-orange-20));--csstools-light-dark-toggle-e9dfdd1f-4:var(--csstools-color-scheme--light) var(--color-yellow-80);--color-text-yellow:var(--csstools-light-dark-toggle-e9dfdd1f-4,var(--color-yellow-20));--csstools-light-dark-toggle-e9dfdd1f-5:var(--csstools-color-scheme--light) var(--color-green-80);--color-text-green:var(--csstools-light-dark-toggle-e9dfdd1f-5,var(--color-green-20));--csstools-light-dark-toggle-e9dfdd1f-6:var(--csstools-color-scheme--light) var(--color-blue-80);--color-text-blue:var(--csstools-light-dark-toggle-e9dfdd1f-6,var(--color-blue-20));--csstools-light-dark-toggle-e9dfdd1f-7:var(--csstools-color-scheme--light) var(--color-purple-80);--color-text-purple:var(--csstools-light-dark-toggle-e9dfdd1f-7,var(--color-purple-20))}@supports (color:light-dark(red,red)){:root{--color-text-red:light-dark(var(--color-red-20),var(--color-red-80));--color-text-orange:light-dark(var(--color-orange-20),var(--color-orange-80));--color-text-yellow:light-dark(var(--color-yellow-20),var(--color-yellow-80));--color-text-green:light-dark(var(--color-green-20),var(--color-green-80));--color-text-blue:light-dark(var(--color-blue-20),var(--color-blue-80));--color-text-purple:light-dark(var(--color-purple-20),var(--color-purple-80))}}@supports not (color:light-dark(tan,tan)){:root *{--csstools-light-dark-toggle-e9dfdd1f-2:var(--csstools-color-scheme--light) var(--color-red-80);--color-text-red:var(--csstools-light-dark-toggle-e9dfdd1f-2,var(--color-red-20));--csstools-light-dark-toggle-e9dfdd1f-3:var(--csstools-color-scheme--light) var(--color-orange-80);--color-text-orange:var(--csstools-light-dark-toggle-e9dfdd1f-3,var(--color-orange-20));--csstools-light-dark-toggle-e9dfdd1f-4:var(--csstools-color-scheme--light) var(--color-yellow-80);--color-text-yellow:var(--csstools-light-dark-toggle-e9dfdd1f-4,var(--color-yellow-20));--csstools-light-dark-toggle-e9dfdd1f-5:var(--csstools-color-scheme--light) var(--color-green-80);--color-text-green:var(--csstools-light-dark-toggle-e9dfdd1f-5,var(--color-green-20));--csstools-light-dark-toggle-e9dfdd1f-6:var(--csstools-color-scheme--light) var(--color-blue-80);--color-text-blue:var(--csstools-light-dark-toggle-e9dfdd1f-6,var(--color-blue-20));--csstools-light-dark-toggle-e9dfdd1f-7:var(--csstools-color-scheme--light) var(--color-purple-80);--color-text-purple:var(--csstools-light-dark-toggle-e9dfdd1f-7,var(--color-purple-20))}}:root{--csstools-light-dark-toggle-e40c6b49-0:var(--csstools-color-scheme--light) var(--color-blue-80);--color-link-normal:var(--csstools-light-dark-toggle-e40c6b49-0,var(--color-blue-20));--csstools-light-dark-toggle-e40c6b49-1:var(--csstools-color-scheme--light) var(--color-purple-80);--color-link-visited:var(--csstools-light-dark-toggle-e40c6b49-1,var(--color-purple-20))}@supports (color:light-dark(red,red)){:root{--color-link-normal:light-dark(var(--color-blue-20),var(--color-blue-80));--color-link-visited:light-dark(var(--color-purple-20),var(--color-purple-80))}}@supports not (color:light-dark(tan,tan)){:root *{--csstools-light-dark-toggle-e40c6b49-0:var(--csstools-color-scheme--light) var(--color-blue-80);--color-link-normal:var(--csstools-light-dark-toggle-e40c6b49-0,var(--color-blue-20));--csstools-light-dark-toggle-e40c6b49-1:var(--csstools-color-scheme--light) var(--color-purple-80);--color-link-visited:var(--csstools-light-dark-toggle-e40c6b49-1,var(--color-purple-20))}}:root{--color-scrollbar-track:#0000;--csstools-light-dark-toggle-a81cd71e-0:var(--csstools-color-scheme--light) var(--color-white-alpha-25);--color-scrollbar-thumb:var(--csstools-light-dark-toggle-a81cd71e-0,var(--color-black-alpha-25))}@supports (color:light-dark(red,red)){:root{--color-scrollbar-thumb:light-dark(var(--color-black-alpha-25),var(--color-white-alpha-25))}}@supports not (color:light-dark(tan,tan)){:root *{--csstools-light-dark-toggle-a81cd71e-0:var(--csstools-color-scheme--light) var(--color-white-alpha-25);--color-scrollbar-thumb:var(--csstools-light-dark-toggle-a81cd71e-0,var(--color-black-alpha-25))}}:root{--color-area-background:var(--color-background-blue);--color-area-highlight-border:var(--color-blue-50);--color-area-link:var(--color-link-normal)}:root[data-current-area=learn]{--color-area-background:var(--color-background-orange);--color-area-highlight-border:var(--color-orange-50);--csstools-light-dark-toggle-9cb2d9c1-0:var(--csstools-color-scheme--light) var(--color-orange-80);--color-area-link:var(--csstools-light-dark-toggle-9cb2d9c1-0,var(--color-orange-20))}@supports (color:light-dark(red,red)){:root[data-current-area=learn]{--color-area-link:light-dark(var(--color-orange-20),var(--color-orange-80))}}@supports not (color:light-dark(tan,tan)){[data-current-area=learn]:root *{--csstools-light-dark-toggle-9cb2d9c1-0:var(--csstools-color-scheme--light) var(--color-orange-80);--color-area-link:var(--csstools-light-dark-toggle-9cb2d9c1-0,var(--color-orange-20))}}:root{--color-white:#fff;--color-white-alpha-25:#ffffff40;--color-white-alpha-75:#ffffffbf;--color-black:#000;--color-black-alpha-25:#00000040;--color-black-alpha-75:#000000bf;--color-gray-90:#f7f7f8;--color-gray-80:#edeef0;--color-gray-60:#c3c7cb;--color-gray-40:#51565d;--color-gray-20:#2d3034;--color-gray-10:#212426;--color-gray-05:#18191b;--color-red-90:#ffe6ea;--color-red-80:#fc7d92;--color-red-50:#d31232;--color-red-20:#b7102c;--color-red-10:#4b0b16;--color-orange-90:#fef3eb;--color-orange-80:#febe8f;--color-orange-50:#e2782c;--color-orange-20:#c2570a;--color-orange-10:#3f220d;--color-yellow-90:#fef0c3;--color-yellow-80:#fae49e;--color-yellow-50:#e6b30a;--color-yellow-20:#97770c;--color-yellow-10:#574405;--color-green-90:#eaf6ef;--color-green-80:#70eba3;--color-green-50:#089141;--color-green-20:#065b29;--color-green-10:#0c311c;--color-blue-90:#ecf4fe;--color-blue-80:#a4cefe;--color-blue-50:#0a5dbd;--color-blue-20:#044c9f;--color-blue-10:#072446;--color-purple-90:#f7f0ff;--color-purple-80:#d8b8ff;--color-purple-50:#863ae4;--color-purple-20:#5f1fad;--color-purple-10:#260e43}mdn-dropdown{display:contents}mdn-dropdown:not([loaded],:focus-within) [slot=dropdown]{display:none}.external:after{background-color:currentcolor;content:"\200b" " (external)";content:"\200b"/" (external)";display:inline-block;height:1em;margin-left:.25em;mask-image:url(/static/client/external-link.4f3a2dc8e402cae5.svg);mask-size:cover;vertical-align:text-top;width:1em}@font-feature-values "Inter"{@styleset{disambiguation:2}}@font-face{font-display:swap;font-family:Inter;font-feature-settings:"calt" 0;font-style:normal;font-weight:100 900;src:url(/static/client/inter-latin.9a3b1bc220d426ef.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-display:swap;font-family:Inter;font-feature-settings:"calt" 0;font-style:italic;font-weight:100 900;src:url(/static/client/inter-italic-latin.fd2627ec16333c05.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-display:swap;font-family:Inter;font-feature-settings:"calt" 0;font-style:normal;font-weight:100 900;src:url(/static/client/inter-latin-extended.02dc98170ff37b88.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-display:swap;font-family:Inter;font-feature-settings:"calt" 0;font-style:italic;font-weight:100 900;src:url(/static/client/inter-italic-latin-extended.0a7409875db33654.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-display:swap;font-family:Inter;font-feature-settings:"calt" 0;font-style:normal;font-weight:100 900;src:url(/static/client/inter-cyrillic.eecfbd79d522303a.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-display:swap;font-family:Inter;font-feature-settings:"calt" 0;font-style:italic;font-weight:100 900;src:url(/static/client/inter-italic-cyrillic.d153dcd2916c4842.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-display:swap;font-family:JetBrains Mono;font-style:normal;font-weight:100 800;size-adjust:95%;src:url(/static/client/jetbrains-mono-latin.119994ed445212c7.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-display:swap;font-family:JetBrains Mono;font-style:italic;font-weight:100 800;size-adjust:95%;src:url(/static/client/jetbrains-mono-italic-latin.55b330522e5e3ed9.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-display:swap;font-family:JetBrains Mono;font-style:normal;font-weight:100 800;size-adjust:95%;src:url(/static/client/jetbrains-mono-latin-extended.01c891f9c832ce28.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-display:swap;font-family:JetBrains Mono;font-style:italic;font-weight:100 800;size-adjust:95%;src:url(/static/client/jetbrains-mono-italic-latin-extended.c25d5e1f309ed948.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-display:swap;font-family:JetBrains Mono;font-style:normal;font-weight:100 800;size-adjust:95%;src:url(/static/client/jetbrains-mono-cyrillic.577e793cdf179ae1.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-display:swap;font-family:JetBrains Mono;font-style:italic;font-weight:100 800;size-adjust:95%;src:url(/static/client/jetbrains-mono-italic-cyrillic.8d00711fdb1702e0.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}:root{--font-family-text:"Inter",sans-serif;--font-family-code:"JetBrains Mono",monospace;--font-line-content:1.75;--font-line-normal:1.5;--font-line-header:1.25;--font-line-ui:1;--font-size-largest:2.5rem;--font-size-larger:2rem;--font-size-large:1.5rem;--font-size-medium:1.25rem;--font-size-normal:1rem;--font-size-small:0.8rem;--font-weight-normal:400;--font-weight-bold:600}*,:after,:before{box-sizing:border-box}button,input,select,textarea{font:inherit}button{color:inherit;cursor:pointer}img{height:auto;max-width:100%}a{color:var(--color-link-normal)}[hidden]{display:none!important}html{color:var(--color-text-primary);font-family:var(--font-family-text);font-feature-settings:"calt" 0;font-size:var(--font-size-normal);font-variant-alternates:styleset(disambiguation);line-height:var(--font-line-normal);overflow-wrap:break-word;scroll-behavior:smooth;--csstools-color-scheme--light:initial;background-color:var(--color-background-page);color-scheme:light dark}@media (prefers-color-scheme:dark){html{--csstools-color-scheme--light: }}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}.icon.icon-deprecated,.icon.icon-experimental,.icon.icon-nonstandard{background-color:var(--color-text-secondary);display:inline-block;flex-shrink:0;height:1em;mask-size:cover;vertical-align:middle;width:1em}.icon.icon-deprecated{mask-image:url(/static/client/trash-2.73b28bc66fb8543c.svg)}.icon.icon-experimental{mask-image:url(/static/client/flask-conical.c16b3d71f14f31d1.svg)}.icon.icon-nonstandard{mask-image:url(/static/client/triangle-alert.cff4c57ccef57da3.svg)}:root{--layout-side-padding-min:1rem;--layout-side-padding:max(var(--layout-side-padding-min),calc(50vw - 720px + 1rem));--layout-full-width:calc(100vw - var(--layout-side-padding)*2);--layout-sidebar-min:15rem;--layout-sidebar-gap:2rem;--layout-sidebar-padding:1rem;--layout-content-min:31rem;--layout-content-max:48rem;--layout-2-sidebars:[full-start left-sidebar-start] minmax(var(--layout-sidebar-min),1fr) [left-sidebar-end] var(--layout-sidebar-gap) [content-start] minmax(0,var(--layout-content-max)) [content-end] var(--layout-sidebar-gap) [right-sidebar-start] minmax(var(--layout-sidebar-min),1fr) [full-end right-sidebar-end];--layout-1-sidebar-left:[full-start sidebar-start left-sidebar-start] minmax(var(--layout-sidebar-min),1fr) [sidebar-end left-sidebar-end] var(--layout-sidebar-gap) [content-start] minmax(0,var(--layout-content-max)) [full-end content-end] minmax(0,1fr);--layout-1-sidebar-right:minmax(0,1fr) [full-start content-start] minmax(0,var(--layout-content-max)) [content-end] var(--layout-sidebar-gap) [sidebar-start right-sidebar-start] minmax(var(--layout-sidebar-min),1fr) [full-end sidebar-end right-sidebar-end];--layout-no-sidebar:[full-start] 1fr [content-start] minmax(0,var(--layout-content-max)) [content-end] 1fr [full-end];--layout-no-sidebar-extended:[extended-full-start] var(--layout-side-padding) [full-start] 1fr [content-start] minmax(0,var(--layout-content-max)) [content-end] 1fr [full-end] var(--layout-side-padding) [extended-full-end]}mdn-live-sample-result{display:block}html a.only-in-en-us:after{content:"(en-US)";display:inline-block;font-size:.7rem;margin-left:.5ch;vertical-align:super}html[lang=de] a.only-in-en-us:after{content:"(engl.)"}html[lang=es] a.only-in-en-us:after{content:"(inglés)"}html[lang=fr] a.only-in-en-us:after{content:"(angl.)"}html[lang=ja] a.only-in-en-us:after{content:"(英語)"}html[lang=ko] a.only-in-en-us:after{content:"(영어)"}html[lang=ru] a.only-in-en-us:after{content:"(англ.)"}html[lang=pt-BR] a.only-in-en-us:after{content:"(inglês)"}html[lang=zh-CN] a.only-in-en-us:after{content:"(英语)";margin-left:unset;vertical-align:initial}html[lang=zh-TW] a.only-in-en-us:after{content:"(英語)";margin-left:unset;vertical-align:initial}.page-not-created{color:var(--color-text-red);text-decoration:underline!important;-webkit-text-decoration:underline wavy!important;text-decoration:underline wavy!important}@media print{*{-webkit-print-color-adjust:exact;print-color-adjust:exact}:root{--csstools-color-scheme--light:initial;color-scheme:light;--layout-2-sidebars:minmax(0,1fr)!important;--layout-1-sidebar-left:minmax(0,1fr)!important;--layout-no-sidebar:minmax(0,1fr)!important}body{font-size:9pt;line-height:1.5;margin:0;padding:0}.page-layout{display:block!important;grid-template-rows:none!important;height:auto!important;min-height:auto!important}.page-layout__header{position:static!important;top:auto!important;z-index:auto!important}:root{--sticky-header-height:0!important}.article-footer,.content-section.article-footer,.footer__links,.footer__mozilla,.footer__socials,.layout__left-sidebar,.layout__right-sidebar,.navigation__button,.navigation__menu,.page-layout__banner,mdn-collection-save-button,mdn-color-theme,mdn-placement-bottom,mdn-search-button,mdn-toggle-sidebar,mdn-user-menu{display:none!important}.reference-layout{grid-template-areas:"header" "body"!important;grid-template-columns:auto!important;grid-template-rows:auto!important}a{-webkit-text-decoration:none!important;text-decoration:none!important}details.baseline-indicator>:not(summary),details.baseline-indicator[open]>:not(summary){display:none!important}details.baseline-indicator>summary::marker{display:none!important}.code-example,.default-example,.example-container,.interactive,[class*=example]{break-inside:avoid!important;display:block!important;float:none!important;height:auto!important;margin-bottom:1rem!important;overflow:visible!important;page-break-inside:avoid!important;position:static!important;width:100%!important}.footer__mdn{row-gap:0!important}interactive-example,section{clear:both!important;display:block!important;position:static!important}interactive-example{break-inside:avoid!important;page-break-inside:avoid!important}[style*="position: absolute"],[style*="position: fixed"]{position:static!important}}:root{--radius-normal:0.25rem;--radius-full:9999px}@font-face{font-display:block;font-family:BarlowCondensed-SemiBold;font-weight:var(--font-weight-bold);src:local("BarlowCondensed-SemiBold"),url(/static/client/BarlowCondensed-SemiBold.199288b668a15dc1.woff2) format("woff2")}mdn-scrim-inline{aspect-ratio:1.5;display:block;margin:.5rem auto;max-width:36rem;width:100%}:root{scrollbar-gutter:stable}.search-modal-open:root{overflow:hidden}.table-container{margin:0;overflow-x:auto}:root{--top-banner-height:3.375rem;--sticky-header-height:calc(var(--navigation-height) + var(--breadcrumbs-bar-height));--z-index-sticky-header:100;--z-index-sidebar-mobile:90}.visually-hidden{border:0!important;clip-path:inset(50%)!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:1px!important}
2
- /*# sourceMappingURL=styles-global.653c021fe5dca598.css.map*/
@@ -1 +0,0 @@
1
- {"version":3,"file":"styles-global.653c021fe5dca598.css","sources":["webpack://@mdn/fred/./components/badge/global.css","webpack://@mdn/fred/./components/button/global.css","webpack://@mdn/fred/./components/code-example/global.css","webpack://@mdn/fred/./components/color-theme/global.css","webpack://@mdn/fred/./components/color/border.css","webpack://@mdn/fred/./components/color/background.css","webpack://@mdn/fred/./components/color/text.css","webpack://@mdn/fred/./components/color/link.css","webpack://@mdn/fred/./components/color/scrollbar.css","webpack://@mdn/fred/./components/color/area.css","webpack://@mdn/fred/./components/color/global.css","webpack://@mdn/fred/./components/dropdown/global.css","webpack://@mdn/fred/./components/external-link/global.css","webpack://@mdn/fred/./components/font/inter.css","webpack://@mdn/fred/./components/font/jetbrains-mono.css","webpack://@mdn/fred/./components/font/global.css","webpack://@mdn/fred/./components/global/global.css","webpack://@mdn/fred/./components/html/global.css","webpack://@mdn/fred/./components/icon/global.css","webpack://@mdn/fred/./components/layout/global.css","webpack://@mdn/fred/./components/live-sample-result/global.css","webpack://@mdn/fred/./components/only-in-en-us/global.css","webpack://@mdn/fred/./components/page-not-created/global.css","webpack://@mdn/fred/./components/print/global.css","webpack://@mdn/fred/./components/radius/global.css","webpack://@mdn/fred/./components/scrim-inline/global.css","webpack://@mdn/fred/./components/search-modal/global.css","webpack://@mdn/fred/./components/table-container/global.css","webpack://@mdn/fred/./components/vars/global.css","webpack://@mdn/fred/./components/visually-hidden/global.css"],"sourcesContent":["/*\n Badge legacy.\n\n To be removed when rari no longer renders these.\n\n Note: The selectors are intentionally explicit to discourage use.\n*/\n/* See https://github.com/mdn/rari/blob/5a2ead64bb8d4f46f9c548b942072838fb686281/crates/rari-doc/src/templ/templs/inline_labels.rs#L16-L21 */\n.badge.inline.optional,.badge.inline.readonly,.badge.inline.secure {\n padding: 0.25em 0.5em;\n\n font-size: var(--font-size-small);\n\n vertical-align: text-top;\n\n color: var(--color-text-secondary);\n\n white-space: nowrap;\n\n border: 1px solid var(--color-border-primary);\n border-radius: 1em;\n }\n","mdn-button {\n display: inline-flex;\n vertical-align: middle;\n}\n","mdn-code-example {\n display: block;\n}\n","html[data-theme=\"light\"] {\n --csstools-color-scheme--light: initial;\n color-scheme: light;\n}\n\nhtml[data-theme=\"dark\"] {\n --csstools-color-scheme--light: ;\n color-scheme: dark;\n}\n","/* Border */\n\n:root {\n --csstools-light-dark-toggle-baa18a82-0: var(--csstools-color-scheme--light) var(--color-gray-40);\n --color-border-primary: var(--csstools-light-dark-toggle-baa18a82-0, var(--color-gray-60));\n --csstools-light-dark-toggle-baa18a82-1: var(--csstools-color-scheme--light) var(--color-gray-60);\n --color-border-secondary: var(--csstools-light-dark-toggle-baa18a82-1, var(--color-gray-40));\n --csstools-light-dark-toggle-baa18a82-2: var(--csstools-color-scheme--light) var(--color-blue-80);\n --color-border-active: var(--csstools-light-dark-toggle-baa18a82-2, var(--color-blue-50));\n}\n\n@supports (color: light-dark(red, red)) {\n:root {\n --color-border-primary: light-dark(\n var(--color-gray-60),\n var(--color-gray-40)\n );\n --color-border-secondary: light-dark(\n var(--color-gray-40),\n var(--color-gray-60)\n );\n --color-border-active: light-dark(var(--color-blue-50), var(--color-blue-80));\n}\n}\n\n@supports not (color: light-dark(tan, tan)) {\n\n:root * {\n --csstools-light-dark-toggle-baa18a82-0: var(--csstools-color-scheme--light) var(--color-gray-40);\n --color-border-primary: var(--csstools-light-dark-toggle-baa18a82-0, var(--color-gray-60));\n --csstools-light-dark-toggle-baa18a82-1: var(--csstools-color-scheme--light) var(--color-gray-60);\n --color-border-secondary: var(--csstools-light-dark-toggle-baa18a82-1, var(--color-gray-40));\n --csstools-light-dark-toggle-baa18a82-2: var(--csstools-color-scheme--light) var(--color-blue-80);\n --color-border-active: var(--csstools-light-dark-toggle-baa18a82-2, var(--color-blue-50));\n }\n}\n","/* Background */\n\n/* Basic */\n\n:root {\n --csstools-light-dark-toggle-29c9dff5-0: var(--csstools-color-scheme--light) var(--color-gray-05);\n --color-background-page: var(--csstools-light-dark-toggle-29c9dff5-0, var(--color-white));\n --csstools-light-dark-toggle-29c9dff5-1: var(--csstools-color-scheme--light) var(--color-gray-10);\n --color-background-primary: var(--csstools-light-dark-toggle-29c9dff5-1, var(--color-gray-90));\n --csstools-light-dark-toggle-29c9dff5-2: var(--csstools-color-scheme--light) var(--color-gray-20);\n --color-background-secondary: var(--csstools-light-dark-toggle-29c9dff5-2, var(--color-gray-80));\n}\n\n@supports (color: light-dark(red, red)) {\n:root {\n --color-background-page: light-dark(var(--color-white), var(--color-gray-05));\n --color-background-primary: light-dark(\n var(--color-gray-90),\n var(--color-gray-10)\n );\n --color-background-secondary: light-dark(\n var(--color-gray-80),\n var(--color-gray-20)\n );\n}\n}\n\n@supports not (color: light-dark(tan, tan)) {\n\n:root * {\n --csstools-light-dark-toggle-29c9dff5-0: var(--csstools-color-scheme--light) var(--color-gray-05);\n --color-background-page: var(--csstools-light-dark-toggle-29c9dff5-0, var(--color-white));\n --csstools-light-dark-toggle-29c9dff5-1: var(--csstools-color-scheme--light) var(--color-gray-10);\n --color-background-primary: var(--csstools-light-dark-toggle-29c9dff5-1, var(--color-gray-90));\n --csstools-light-dark-toggle-29c9dff5-2: var(--csstools-color-scheme--light) var(--color-gray-20);\n --color-background-secondary: var(--csstools-light-dark-toggle-29c9dff5-2, var(--color-gray-80));\n }\n}\n\n/* Tinted */\n\n:root {\n --csstools-light-dark-toggle-29c9dff5-3: var(--csstools-color-scheme--light) var(--color-red-10);\n --color-background-red: var(--csstools-light-dark-toggle-29c9dff5-3, var(--color-red-90));\n --csstools-light-dark-toggle-29c9dff5-4: var(--csstools-color-scheme--light) var(--color-orange-10);\n --color-background-orange: var(--csstools-light-dark-toggle-29c9dff5-4, var(--color-orange-90));\n --csstools-light-dark-toggle-29c9dff5-5: var(--csstools-color-scheme--light) var(--color-yellow-10);\n --color-background-yellow: var(--csstools-light-dark-toggle-29c9dff5-5, var(--color-yellow-90));\n --csstools-light-dark-toggle-29c9dff5-6: var(--csstools-color-scheme--light) var(--color-green-10);\n --color-background-green: var(--csstools-light-dark-toggle-29c9dff5-6, var(--color-green-90));\n --csstools-light-dark-toggle-29c9dff5-7: var(--csstools-color-scheme--light) var(--color-blue-10);\n --color-background-blue: var(--csstools-light-dark-toggle-29c9dff5-7, var(--color-blue-90));\n --csstools-light-dark-toggle-29c9dff5-8: var(--csstools-color-scheme--light) var(--color-purple-10);\n --color-background-purple: var(--csstools-light-dark-toggle-29c9dff5-8, var(--color-purple-90));\n}\n\n@supports (color: light-dark(red, red)) {\n:root {\n --color-background-red: light-dark(var(--color-red-90), var(--color-red-10));\n --color-background-orange: light-dark(\n var(--color-orange-90),\n var(--color-orange-10)\n );\n --color-background-yellow: light-dark(\n var(--color-yellow-90),\n var(--color-yellow-10)\n );\n --color-background-green: light-dark(\n var(--color-green-90),\n var(--color-green-10)\n );\n --color-background-blue: light-dark(\n var(--color-blue-90),\n var(--color-blue-10)\n );\n --color-background-purple: light-dark(\n var(--color-purple-90),\n var(--color-purple-10)\n );\n}\n}\n\n@supports not (color: light-dark(tan, tan)) {\n\n:root * {\n --csstools-light-dark-toggle-29c9dff5-3: var(--csstools-color-scheme--light) var(--color-red-10);\n --color-background-red: var(--csstools-light-dark-toggle-29c9dff5-3, var(--color-red-90));\n --csstools-light-dark-toggle-29c9dff5-4: var(--csstools-color-scheme--light) var(--color-orange-10);\n --color-background-orange: var(--csstools-light-dark-toggle-29c9dff5-4, var(--color-orange-90));\n --csstools-light-dark-toggle-29c9dff5-5: var(--csstools-color-scheme--light) var(--color-yellow-10);\n --color-background-yellow: var(--csstools-light-dark-toggle-29c9dff5-5, var(--color-yellow-90));\n --csstools-light-dark-toggle-29c9dff5-6: var(--csstools-color-scheme--light) var(--color-green-10);\n --color-background-green: var(--csstools-light-dark-toggle-29c9dff5-6, var(--color-green-90));\n --csstools-light-dark-toggle-29c9dff5-7: var(--csstools-color-scheme--light) var(--color-blue-10);\n --color-background-blue: var(--csstools-light-dark-toggle-29c9dff5-7, var(--color-blue-90));\n --csstools-light-dark-toggle-29c9dff5-8: var(--csstools-color-scheme--light) var(--color-purple-10);\n --color-background-purple: var(--csstools-light-dark-toggle-29c9dff5-8, var(--color-purple-90));\n }\n}\n","/* Text */\n\n/* Basic */\n\n:root {\n --csstools-light-dark-toggle-e9dfdd1f-0: var(--csstools-color-scheme--light) var(--color-white);\n --color-text-primary: var(--csstools-light-dark-toggle-e9dfdd1f-0, var(--color-black));\n --csstools-light-dark-toggle-e9dfdd1f-1: var(--csstools-color-scheme--light) var(--color-gray-60);\n --color-text-secondary: var(--csstools-light-dark-toggle-e9dfdd1f-1, var(--color-gray-40));\n}\n\n@supports (color: light-dark(red, red)) {\n:root {\n --color-text-primary: light-dark(var(--color-black), var(--color-white));\n --color-text-secondary: light-dark(\n var(--color-gray-40),\n var(--color-gray-60)\n );\n}\n}\n\n@supports not (color: light-dark(tan, tan)) {\n\n:root * {\n --csstools-light-dark-toggle-e9dfdd1f-0: var(--csstools-color-scheme--light) var(--color-white);\n --color-text-primary: var(--csstools-light-dark-toggle-e9dfdd1f-0, var(--color-black));\n --csstools-light-dark-toggle-e9dfdd1f-1: var(--csstools-color-scheme--light) var(--color-gray-60);\n --color-text-secondary: var(--csstools-light-dark-toggle-e9dfdd1f-1, var(--color-gray-40));\n }\n}\n\n/* Tinted */\n\n:root {\n --csstools-light-dark-toggle-e9dfdd1f-2: var(--csstools-color-scheme--light) var(--color-red-80);\n --color-text-red: var(--csstools-light-dark-toggle-e9dfdd1f-2, var(--color-red-20));\n --csstools-light-dark-toggle-e9dfdd1f-3: var(--csstools-color-scheme--light) var(--color-orange-80);\n --color-text-orange: var(--csstools-light-dark-toggle-e9dfdd1f-3, var(--color-orange-20));\n --csstools-light-dark-toggle-e9dfdd1f-4: var(--csstools-color-scheme--light) var(--color-yellow-80);\n --color-text-yellow: var(--csstools-light-dark-toggle-e9dfdd1f-4, var(--color-yellow-20));\n --csstools-light-dark-toggle-e9dfdd1f-5: var(--csstools-color-scheme--light) var(--color-green-80);\n --color-text-green: var(--csstools-light-dark-toggle-e9dfdd1f-5, var(--color-green-20));\n --csstools-light-dark-toggle-e9dfdd1f-6: var(--csstools-color-scheme--light) var(--color-blue-80);\n --color-text-blue: var(--csstools-light-dark-toggle-e9dfdd1f-6, var(--color-blue-20));\n --csstools-light-dark-toggle-e9dfdd1f-7: var(--csstools-color-scheme--light) var(--color-purple-80);\n --color-text-purple: var(--csstools-light-dark-toggle-e9dfdd1f-7, var(--color-purple-20));\n}\n\n@supports (color: light-dark(red, red)) {\n:root {\n --color-text-red: light-dark(var(--color-red-20), var(--color-red-80));\n --color-text-orange: light-dark(\n var(--color-orange-20),\n var(--color-orange-80)\n );\n --color-text-yellow: light-dark(\n var(--color-yellow-20),\n var(--color-yellow-80)\n );\n --color-text-green: light-dark(var(--color-green-20), var(--color-green-80));\n --color-text-blue: light-dark(var(--color-blue-20), var(--color-blue-80));\n --color-text-purple: light-dark(\n var(--color-purple-20),\n var(--color-purple-80)\n );\n}\n}\n\n@supports not (color: light-dark(tan, tan)) {\n\n:root * {\n --csstools-light-dark-toggle-e9dfdd1f-2: var(--csstools-color-scheme--light) var(--color-red-80);\n --color-text-red: var(--csstools-light-dark-toggle-e9dfdd1f-2, var(--color-red-20));\n --csstools-light-dark-toggle-e9dfdd1f-3: var(--csstools-color-scheme--light) var(--color-orange-80);\n --color-text-orange: var(--csstools-light-dark-toggle-e9dfdd1f-3, var(--color-orange-20));\n --csstools-light-dark-toggle-e9dfdd1f-4: var(--csstools-color-scheme--light) var(--color-yellow-80);\n --color-text-yellow: var(--csstools-light-dark-toggle-e9dfdd1f-4, var(--color-yellow-20));\n --csstools-light-dark-toggle-e9dfdd1f-5: var(--csstools-color-scheme--light) var(--color-green-80);\n --color-text-green: var(--csstools-light-dark-toggle-e9dfdd1f-5, var(--color-green-20));\n --csstools-light-dark-toggle-e9dfdd1f-6: var(--csstools-color-scheme--light) var(--color-blue-80);\n --color-text-blue: var(--csstools-light-dark-toggle-e9dfdd1f-6, var(--color-blue-20));\n --csstools-light-dark-toggle-e9dfdd1f-7: var(--csstools-color-scheme--light) var(--color-purple-80);\n --color-text-purple: var(--csstools-light-dark-toggle-e9dfdd1f-7, var(--color-purple-20));\n }\n}\n","/* Link */\n\n:root {\n --csstools-light-dark-toggle-e40c6b49-0: var(--csstools-color-scheme--light) var(--color-blue-80);\n --color-link-normal: var(--csstools-light-dark-toggle-e40c6b49-0, var(--color-blue-20));\n --csstools-light-dark-toggle-e40c6b49-1: var(--csstools-color-scheme--light) var(--color-purple-80);\n --color-link-visited: var(--csstools-light-dark-toggle-e40c6b49-1, var(--color-purple-20));\n}\n\n@supports (color: light-dark(red, red)) {\n:root {\n --color-link-normal: light-dark(var(--color-blue-20), var(--color-blue-80));\n --color-link-visited: light-dark(\n var(--color-purple-20),\n var(--color-purple-80)\n );\n}\n}\n\n@supports not (color: light-dark(tan, tan)) {\n\n:root * {\n --csstools-light-dark-toggle-e40c6b49-0: var(--csstools-color-scheme--light) var(--color-blue-80);\n --color-link-normal: var(--csstools-light-dark-toggle-e40c6b49-0, var(--color-blue-20));\n --csstools-light-dark-toggle-e40c6b49-1: var(--csstools-color-scheme--light) var(--color-purple-80);\n --color-link-visited: var(--csstools-light-dark-toggle-e40c6b49-1, var(--color-purple-20));\n }\n}\n","/* Scrollbar */\n\n:root {\n --color-scrollbar-track: transparent;\n --csstools-light-dark-toggle-a81cd71e-0: var(--csstools-color-scheme--light) var(--color-white-alpha-25);\n --color-scrollbar-thumb: var(--csstools-light-dark-toggle-a81cd71e-0, var(--color-black-alpha-25));\n}\n\n@supports (color: light-dark(red, red)) {\n:root {\n --color-scrollbar-thumb: light-dark(\n var(--color-black-alpha-25),\n var(--color-white-alpha-25)\n );\n}\n}\n\n@supports not (color: light-dark(tan, tan)) {\n\n:root * {\n --csstools-light-dark-toggle-a81cd71e-0: var(--csstools-color-scheme--light) var(--color-white-alpha-25);\n --color-scrollbar-thumb: var(--csstools-light-dark-toggle-a81cd71e-0, var(--color-black-alpha-25));\n }\n}\n",":root {\n --color-area-background: var(--color-background-blue);\n --color-area-highlight-border: var(--color-blue-50);\n --color-area-link: var(--color-link-normal);\n}\n\n:root[data-current-area=\"learn\"] {\n --color-area-background: var(--color-background-orange);\n --color-area-highlight-border: var(--color-orange-50);\n --csstools-light-dark-toggle-9cb2d9c1-0: var(--csstools-color-scheme--light) var(--color-orange-80);\n --color-area-link: var(--csstools-light-dark-toggle-9cb2d9c1-0, var(--color-orange-20));\n}\n\n@supports (color: light-dark(red, red)) {\n:root[data-current-area=\"learn\"] {\n --color-area-link: light-dark(var(--color-orange-20), var(--color-orange-80));\n}\n}\n\n@supports not (color: light-dark(tan, tan)) {\n\n[data-current-area=\"learn\"]:root * {\n --csstools-light-dark-toggle-9cb2d9c1-0: var(--csstools-color-scheme--light) var(--color-orange-80);\n --color-area-link: var(--csstools-light-dark-toggle-9cb2d9c1-0, var(--color-orange-20));\n }\n}\n","/* Color */\n\n@import url(\"border.css\");\n@import url(\"background.css\");\n@import url(\"text.css\");\n@import url(\"link.css\");\n@import url(\"scrollbar.css\");\n@import url(\"area.css\");\n\n/* Basic */\n\n:root {\n --color-white: hsl(0deg 0% 100%);\n --color-white-alpha-25: hsl(0deg 0% 100% / 25%);\n --color-white-alpha-75: hsl(0deg 0% 100% / 75%);\n\n --color-black: hsl(0deg 0% 0%);\n --color-black-alpha-25: hsl(0deg 0% 0% / 25%);\n --color-black-alpha-75: hsl(0deg 0% 0% / 75%);\n}\n\n/* Gray */\n\n:root {\n --color-gray-90: hsl(212deg 7% 97%);\n --color-gray-80: hsl(212deg 7% 93.5%);\n --color-gray-60: hsl(212deg 7% 78%);\n --color-gray-40: hsl(212deg 7% 34%);\n --color-gray-20: hsl(212deg 7% 19%);\n --color-gray-10: hsl(212deg 7% 14%);\n --color-gray-05: hsl(212deg 7% 10%);\n}\n\n/* Tinted */\n\n:root {\n --color-red-90: hsl(350deg 100% 95%);\n --color-red-80: hsl(350deg 96% 74%);\n --color-red-50: hsl(350deg 84% 45%);\n --color-red-20: hsl(350deg 84% 39%);\n --color-red-10: hsl(350deg 74% 17%);\n\n --color-orange-90: hsl(25deg 92% 96%);\n --color-orange-80: hsl(25deg 99% 78%);\n --color-orange-50: hsl(25deg 76% 53%);\n --color-orange-20: hsl(25deg 90% 40%);\n --color-orange-10: hsl(25deg 65% 15%);\n\n --color-yellow-90: hsl(46deg 97% 88%);\n --color-yellow-80: hsl(46deg 90% 80%);\n --color-yellow-50: hsl(46deg 92% 47%);\n --color-yellow-20: hsl(46deg 85% 32%);\n --color-yellow-10: hsl(46deg 90% 18%);\n\n --color-green-90: hsl(145deg 40% 94%);\n --color-green-80: hsl(145deg 75% 68%);\n --color-green-50: hsl(145deg 90% 30%);\n --color-green-20: hsl(145deg 88% 19%);\n --color-green-10: hsl(145deg 60% 12%);\n\n --color-blue-90: hsl(212deg 91% 96%);\n --color-blue-80: hsl(212deg 98% 82%);\n --color-blue-50: hsl(212deg 90% 39%);\n --color-blue-20: hsl(212deg 95% 32%);\n --color-blue-10: hsl(212deg 82% 15%);\n\n --color-purple-90: hsl(267deg 99% 97%);\n --color-purple-80: hsl(267deg 99% 86%);\n --color-purple-50: hsl(267deg 76% 56%);\n --color-purple-20: hsl(267deg 70% 40%);\n --color-purple-10: hsl(267deg 65% 16%);\n}\n","mdn-dropdown {\n display: contents;\n}mdn-dropdown:not([loaded],:focus-within) [slot=\"dropdown\"] {\n display: none;\n }\n",".external::after {\n display: inline-block;\n\n width: 1em;\n height: 1em;\n\n margin-left: 0.25em;\n\n vertical-align: text-top;\n\n /*\n Unicode zero width space as `<content replacement>` to expose the alt text in the a11y tree.\n See: https://bugzilla.mozilla.org/show_bug.cgi?id=1976574\n */\n content: \"\\200b\" \" (external)\";\n content: \"\\200b\" / \" (external)\";\n\n background-color: currentcolor;\n\n mask-image: url(\"../icon/external-link.svg\");\n mask-size: cover;\n}\n","/* Inter */\n\n@font-feature-values \"Inter\" {\n @styleset {\n /* stylelint-disable-next-line at-rule-descriptor-no-unknown */\n disambiguation: 2;\n }\n}\n\n/* Latin */\n\n@font-face {\n font-family: \"Inter\";\n font-style: normal;\n font-weight: 100 900;\n font-feature-settings: \"calt\" 0;\n\n src: url(\"fonts/inter-latin.woff2\") format(\"woff2\");\n font-display: swap;\n unicode-range:\n U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,\n U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212,\n U+2215, U+FEFF, U+FFFD;\n}\n\n@font-face {\n font-family: \"Inter\";\n font-style: italic;\n font-weight: 100 900;\n font-feature-settings: \"calt\" 0;\n\n src: url(\"fonts/inter-italic-latin.woff2\") format(\"woff2\");\n font-display: swap;\n unicode-range:\n U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,\n U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212,\n U+2215, U+FEFF, U+FFFD;\n}\n\n/* Latin extended */\n\n@font-face {\n font-family: \"Inter\";\n font-style: normal;\n font-weight: 100 900;\n font-feature-settings: \"calt\" 0;\n\n src: url(\"fonts/inter-latin-extended.woff2\") format(\"woff2\");\n font-display: swap;\n unicode-range:\n U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304,\n U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB,\n U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n\n@font-face {\n font-family: \"Inter\";\n font-style: italic;\n font-weight: 100 900;\n font-feature-settings: \"calt\" 0;\n\n src: url(\"fonts/inter-italic-latin-extended.woff2\") format(\"woff2\");\n font-display: swap;\n unicode-range:\n U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304,\n U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB,\n U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n\n/* Cyrillic */\n\n@font-face {\n font-family: \"Inter\";\n font-style: normal;\n font-weight: 100 900;\n font-feature-settings: \"calt\" 0;\n\n src: url(\"fonts/inter-cyrillic.woff2\") format(\"woff2\");\n font-display: swap;\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n\n@font-face {\n font-family: \"Inter\";\n font-style: italic;\n font-weight: 100 900;\n font-feature-settings: \"calt\" 0;\n\n src: url(\"fonts/inter-italic-cyrillic.woff2\") format(\"woff2\");\n font-display: swap;\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n","/* JetBrain Mono */\n\n/* Latin */\n\n@font-face {\n font-family: \"JetBrains Mono\";\n font-style: normal;\n font-weight: 100 800;\n\n src: url(\"fonts/jetbrains-mono-latin.woff2\") format(\"woff2\");\n font-display: swap;\n unicode-range:\n U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,\n U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212,\n U+2215, U+FEFF, U+FFFD;\n size-adjust: 95%;\n}\n\n@font-face {\n font-family: \"JetBrains Mono\";\n font-style: italic;\n font-weight: 100 800;\n\n src: url(\"fonts/jetbrains-mono-italic-latin.woff2\") format(\"woff2\");\n font-display: swap;\n unicode-range:\n U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,\n U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212,\n U+2215, U+FEFF, U+FFFD;\n size-adjust: 95%;\n}\n\n/* Latin extended */\n\n@font-face {\n font-family: \"JetBrains Mono\";\n font-style: normal;\n font-weight: 100 800;\n\n src: url(\"fonts/jetbrains-mono-latin-extended.woff2\") format(\"woff2\");\n font-display: swap;\n unicode-range:\n U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304,\n U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB,\n U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;\n size-adjust: 95%;\n}\n\n@font-face {\n font-family: \"JetBrains Mono\";\n font-style: italic;\n font-weight: 100 800;\n\n src: url(\"fonts/jetbrains-mono-italic-latin-extended.woff2\") format(\"woff2\");\n font-display: swap;\n unicode-range:\n U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304,\n U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB,\n U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;\n size-adjust: 95%;\n}\n\n/* Cyrillic */\n\n@font-face {\n font-family: \"JetBrains Mono\";\n font-style: normal;\n font-weight: 100 800;\n\n src: url(\"fonts/jetbrains-mono-cyrillic.woff2\") format(\"woff2\");\n font-display: swap;\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n size-adjust: 95%;\n}\n\n@font-face {\n font-family: \"JetBrains Mono\";\n font-style: italic;\n font-weight: 100 800;\n\n src: url(\"fonts/jetbrains-mono-italic-cyrillic.woff2\") format(\"woff2\");\n font-display: swap;\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n size-adjust: 95%;\n}\n","@import url(\"inter.css\");\n@import url(\"jetbrains-mono.css\");\n\n/* Font size */\n\n:root {\n --font-family-text: \"Inter\", sans-serif;\n --font-family-code: \"JetBrains Mono\", monospace;\n\n --font-line-content: 1.75;\n --font-line-normal: 1.5;\n --font-line-header: 1.25;\n --font-line-ui: 1;\n\n --font-size-largest: 2.5rem;\n --font-size-larger: 2rem;\n --font-size-large: 1.5rem;\n --font-size-medium: 1.25rem;\n --font-size-normal: 1rem;\n --font-size-small: 0.8rem;\n\n --font-weight-normal: 400;\n --font-weight-bold: 600;\n}\n","/* Global */\n\n*,\n::before,\n::after {\n box-sizing: border-box;\n}\n\ninput,\nbutton,\ntextarea,\nselect {\n font: inherit;\n}\n\nbutton {\n color: inherit;\n cursor: pointer;\n}\n\nimg {\n max-width: 100%;\n height: auto;\n}\n\na {\n color: var(--color-link-normal);\n}\n\n[hidden] {\n display: none !important;\n}\n","/* HTML */\n\nhtml {\n scroll-behavior: smooth;\n\n font-family: var(--font-family-text);\n font-size: var(--font-size-normal);\n font-feature-settings: \"calt\" 0;\n font-variant-alternates: styleset(disambiguation);\n\n line-height: var(--font-line-normal);\n\n color: var(--color-text-primary);\n\n overflow-wrap: break-word;\n\n --csstools-color-scheme--light: initial;\n\n color-scheme: light dark;\n\n background-color: var(--color-background-page);\n}\n\n@media (prefers-color-scheme: dark) {\n\nhtml {\n\n --csstools-color-scheme--light: ;\n}\n}\n\n@media (prefers-reduced-motion: reduce) {\n\nhtml {\n scroll-behavior: auto;\n}\n }\n","/*\n Icon legacy.\n\n To be removed when rari no longer renders these.\n\n Note: The selectors are intentionally explicit to discourage use.\n*/\n.icon.icon-deprecated,.icon.icon-experimental,.icon.icon-nonstandard {\n display: inline-block;\n\n flex-shrink: 0;\n\n width: 1em;\n height: 1em;\n\n vertical-align: middle;\n\n background-color: var(--color-text-secondary);\n\n mask-size: cover;\n }\n/* See https://github.com/mdn/rari/blob/927fac7cb89c7f7e49dd3ff265c3d74ad89d6490/crates/rari-doc/src/templ/templs/badges.rs#L43-L47 */\n.icon.icon-deprecated {\n mask-image: url(\"../icon/trash-2.svg\");\n }\n/* See https://github.com/mdn/rari/blob/927fac7cb89c7f7e49dd3ff265c3d74ad89d6490/crates/rari-doc/src/templ/templs/badges.rs#L36-L41 */\n.icon.icon-experimental {\n mask-image: url(\"../icon/flask-conical.svg\");\n }\n/* See https://github.com/mdn/rari/blob/927fac7cb89c7f7e49dd3ff265c3d74ad89d6490/crates/rari-doc/src/templ/templs/badges.rs#L43-L47 */\n.icon.icon-nonstandard {\n mask-image: url(\"../icon/triangle-alert.svg\");\n }\n","/* --layout-side-padding-min * 2 + (--layout-sidebar-min + --layout-sidebar-gap) * 2 + --layout-content-min */\n\n/* --layout-side-padding-min * 2 + --layout-sidebar-min + --layout-sidebar-gap + --layout-content-min */\n\n:root {\n --layout-side-padding-min: 1rem;\n --layout-side-padding: max(\n var(--layout-side-padding-min),\n calc((100vw - 1440px + (2rem)) / 2)\n );\n --layout-full-width: calc(100vw - 2 * var(--layout-side-padding));\n\n --layout-sidebar-min: 15rem;\n --layout-sidebar-gap: 2rem;\n --layout-sidebar-padding: 1rem;\n --layout-content-min: 31rem;\n --layout-content-max: 48rem;\n\n /* prettier-ignore */\n --layout-2-sidebars:\n [full-start left-sidebar-start]\n minmax(var(--layout-sidebar-min), 1fr)\n [left-sidebar-end]\n var(--layout-sidebar-gap)\n [content-start]\n minmax(0, var(--layout-content-max))\n [content-end]\n var(--layout-sidebar-gap)\n [right-sidebar-start]\n minmax(var(--layout-sidebar-min), 1fr)\n [full-end right-sidebar-end];\n\n /* prettier-ignore */\n --layout-1-sidebar-left:\n [full-start sidebar-start left-sidebar-start]\n minmax(var(--layout-sidebar-min), 1fr)\n [sidebar-end left-sidebar-end]\n var(--layout-sidebar-gap)\n [content-start]\n minmax(0, var(--layout-content-max))\n [full-end content-end]\n minmax(0, 1fr);\n\n /* prettier-ignore */\n --layout-1-sidebar-right:\n minmax(0, 1fr)\n [full-start content-start]\n minmax(0, var(--layout-content-max))\n [content-end]\n var(--layout-sidebar-gap)\n [sidebar-start right-sidebar-start]\n minmax(var(--layout-sidebar-min), 1fr)\n [full-end sidebar-end right-sidebar-end];\n\n /* prettier-ignore */\n --layout-no-sidebar:\n [full-start]\n 1fr\n [content-start]\n minmax(0, var(--layout-content-max))\n [content-end]\n 1fr\n [full-end];\n\n /* prettier-ignore */\n --layout-no-sidebar-extended:\n [extended-full-start]\n var(--layout-side-padding)\n [full-start]\n 1fr\n [content-start]\n minmax(0, var(--layout-content-max))\n [content-end]\n 1fr\n [full-end]\n var(--layout-side-padding)\n [extended-full-end];\n}\n","mdn-live-sample-result {\n display: block;\n}\n","html a.only-in-en-us::after {\n display: inline-block;\n\n margin-left: 0.5ch;\n\n font-size: 0.7rem;\n\n vertical-align: super;\n\n content: \"(en-US)\";\n}\n\nhtml[lang=\"de\"] a.only-in-en-us::after {\n content: \"(engl.)\";\n}\n\nhtml[lang=\"es\"] a.only-in-en-us::after {\n content: \"(inglés)\";\n}\n\nhtml[lang=\"fr\"] a.only-in-en-us::after {\n content: \"(angl.)\";\n}\n\nhtml[lang=\"ja\"] a.only-in-en-us::after {\n content: \"(英語)\";\n}\n\nhtml[lang=\"ko\"] a.only-in-en-us::after {\n content: \"(영어)\";\n}\n\nhtml[lang=\"ru\"] a.only-in-en-us::after {\n content: \"(англ.)\";\n}\n\nhtml[lang=\"pt-BR\"] a.only-in-en-us::after {\n content: \"(inglês)\";\n}\n\nhtml[lang=\"zh-CN\"] a.only-in-en-us::after {\n margin-left: unset;\n vertical-align: baseline;\n content: \"(英语)\";\n}\n\nhtml[lang=\"zh-TW\"] a.only-in-en-us::after {\n margin-left: unset;\n vertical-align: baseline;\n content: \"(英語)\";\n}\n",".page-not-created {\n color: var(--color-text-red);\n text-decoration: underline !important;\n -webkit-text-decoration: underline wavy !important;\n text-decoration: underline wavy !important;\n}\n","@media print {\n * {\n -webkit-print-color-adjust: exact;\n print-color-adjust: exact;\n }\n\n :root {\n --csstools-color-scheme--light: initial;\n color-scheme: light;\n\n /* Force desktop layout for print by overriding layout variables */\n --layout-2-sidebars: minmax(0, 1fr) !important;\n --layout-1-sidebar-left: minmax(0, 1fr) !important;\n --layout-no-sidebar: minmax(0, 1fr) !important;\n }\n\n body {\n padding: 0;\n margin: 0;\n\n font-size: 9pt;\n\n line-height: 1.5;\n }\n\n .page-layout {\n display: block !important;\n\n grid-template-rows: none !important;\n\n height: auto !important;\n min-height: auto !important;\n }\n\n .page-layout__header {\n position: static !important;\n top: auto !important;\n z-index: auto !important;\n }\n\n /* Reset sticky header height variable */\n :root {\n --sticky-header-height: 0 !important;\n }\n\n .page-layout__banner,\n .layout__left-sidebar,\n .layout__right-sidebar,\n .footer__socials,\n .footer__links,\n .footer__mozilla,\n .article-footer,\n .navigation__button,\n .navigation__menu,\n .content-section.article-footer,\n mdn-toggle-sidebar,\n mdn-collection-save-button,\n mdn-color-theme,\n mdn-search-button,\n mdn-user-menu,\n mdn-placement-bottom {\n display: none !important;\n }\n\n .reference-layout {\n grid-template-areas:\n \"header\"\n \"body\" !important;\n grid-template-rows: auto !important;\n grid-template-columns: auto !important;\n }\n\n a {\n -webkit-text-decoration: none !important;\n text-decoration: none !important;\n }\n\n details.baseline-indicator > *:not(summary) {\n display: none !important;\n }\n\n details.baseline-indicator[open] > *:not(summary) {\n display: none !important;\n }\n\n details.baseline-indicator > summary::marker {\n display: none !important;\n }\n\n .example-container,\n .default-example,\n [class*=\"example\"],\n .interactive,\n .code-example {\n position: static !important;\n float: none !important;\n\n display: block !important;\n\n width: 100% !important;\n height: auto !important;\n\n margin-bottom: 1rem !important;\n\n overflow: visible !important;\n\n page-break-inside: avoid !important;\n\n break-inside: avoid !important;\n }\n\n .footer__mdn {\n row-gap: 0 !important;\n }\n\n section,\n interactive-example {\n position: static !important;\n clear: both !important;\n display: block !important;\n }\n\n interactive-example {\n page-break-inside: avoid !important;\n break-inside: avoid !important;\n }\n\n [style*=\"position: absolute\"],\n [style*=\"position: fixed\"] {\n position: static !important;\n }\n}\n","/* Radius */\n\n:root {\n --radius-normal: 0.25rem;\n --radius-full: 9999px;\n}\n","@font-face {\n font-family: \"BarlowCondensed-SemiBold\";\n font-weight: var(--font-weight-bold);\n\n src:\n local(\"BarlowCondensed-SemiBold\"),\n url(\"./assets/BarlowCondensed-SemiBold.woff2\") format(\"woff2\");\n font-display: block;\n}\n\nmdn-scrim-inline {\n display: block;\n\n width: 100%;\n max-width: 36rem;\n aspect-ratio: 1.5;\n\n margin: 0.5rem auto;\n}\n",":root {\n scrollbar-gutter: stable;\n}.search-modal-open:root {\n overflow: hidden;\n }\n",".table-container {\n margin: 0;\n overflow-x: auto;\n}\n",":root {\n --top-banner-height: 3.375rem;\n --sticky-header-height: calc(\n var(--navigation-height) + var(--breadcrumbs-bar-height)\n );\n\n --z-index-sticky-header: 100;\n --z-index-sidebar-mobile: 90;\n}\n",".visually-hidden {\n position: absolute !important;\n\n width: 1px !important;\n height: 1px !important;\n\n padding: 0 !important;\n margin: -1px !important;\n\n overflow: hidden !important;\n\n white-space: nowrap !important;\n\n border: 0 !important;\n\n clip-path: inset(50%) !important;\n}\n"],"names":[],"mappings":"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"}