@mdn/fred 2.3.0 → 2.4.0

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 (195) hide show
  1. package/.env-dist +0 -4
  2. package/CHANGELOG.md +40 -0
  3. package/components/article-footer/server.js +3 -1
  4. package/components/code-example/types.d.ts +1 -1
  5. package/components/env/index.js +0 -3
  6. package/components/issues-table/element.js +1 -1
  7. package/components/left-sidebar/server.css +14 -2
  8. package/components/live-sample-result/element.js +2 -0
  9. package/components/menu/tabs.json +4 -0
  10. package/components/outer-layout/server.js +8 -6
  11. package/components/placement/mixin.js +2 -2
  12. package/components/play-console/element.js +5 -1
  13. package/components/play-console/types.d.ts +1 -1
  14. package/components/record-visit/element.js +1 -1
  15. package/components/reference-layout/server.css +10 -0
  16. package/components/reference-layout/server.js +3 -1
  17. package/entry.client.js +0 -1
  18. package/hooks/live-samples.js +5 -3
  19. package/l10n/locales/de.ftl +288 -22
  20. package/l10n/locales/fr.ftl +256 -91
  21. package/l10n/parser/transform.js +0 -1
  22. package/l10n/template.ftl +5 -0
  23. package/legacy/index.tsx +2 -0
  24. package/out/service-worker.js +1 -1
  25. package/out/service-worker.js.map +1 -1
  26. package/out/static/client/1550.317cf910e7937050.js +321 -0
  27. package/out/static/client/1550.317cf910e7937050.js.map +1 -0
  28. package/out/static/client/{3094.58da3996c52b5264.js → 3094.ad202726cd671cc6.js} +2 -2
  29. package/out/static/client/3094.ad202726cd671cc6.js.map +1 -0
  30. package/out/static/client/{4204.c77e84ea2f8c359a.js → 4204.082860f577e883b1.js} +2 -2
  31. package/out/static/client/{4204.c77e84ea2f8c359a.js.map → 4204.082860f577e883b1.js.map} +1 -1
  32. package/out/static/client/{5330.8d5173f308b639bc.js → 5330.0fa70a944297da04.js} +7 -7
  33. package/out/static/client/{5330.8d5173f308b639bc.js.map → 5330.0fa70a944297da04.js.map} +1 -1
  34. package/out/static/client/5649.00f25ce181894101.js +2 -0
  35. package/out/static/client/5649.00f25ce181894101.js.map +1 -0
  36. package/out/static/client/6333.530138f4b30df5a7.js +317 -0
  37. package/out/static/client/6333.530138f4b30df5a7.js.map +1 -0
  38. package/out/static/client/6760.d97440f1ca6690c6.js.map +1 -1
  39. package/out/static/client/{8903.ce3ee42276c345b9.js → 8903.f870aafb338b203a.js} +2 -2
  40. package/out/static/client/{8903.ce3ee42276c345b9.js.map → 8903.f870aafb338b203a.js.map} +1 -1
  41. package/out/static/client/{index.880284fd3bb87ecf.js → index.3d355ddb095f80e1.js} +4 -4
  42. package/out/static/client/index.3d355ddb095f80e1.js.map +1 -0
  43. package/out/static/client/{runtime.9d7da16d8104c706.js → runtime.5998abbd768bf4b4.js} +2 -2
  44. package/out/static/client/{runtime.9d7da16d8104c706.js.map → runtime.5998abbd768bf4b4.js.map} +1 -1
  45. package/out/static/client/stats.json +284 -284
  46. package/out/static/client/styles-a11y-menu.e450c80bdecd73b0.js +1 -0
  47. package/out/static/client/styles-advertising.8680d559dfd1e6da.js +1 -0
  48. package/out/static/client/styles-article-footer.4c924cfce86cefb1.js +1 -0
  49. package/out/static/client/styles-banner.b2fd6f3f4890f119.js +1 -0
  50. package/out/static/client/styles-baseline-indicator.7bda150efbd00e44.js +1 -0
  51. package/out/static/client/styles-blog-index.ed9148eebbd54874.js +1 -0
  52. package/out/static/client/styles-blog-post.e23d949d4b39893e.js +1 -0
  53. package/out/static/client/styles-breadcrumbs-bar.e72110560a2a2d11.js +1 -0
  54. package/out/static/client/styles-breadcrumbs.3e8f4af57730f539.js +1 -0
  55. package/out/static/client/styles-button.4529576beae298ca.js +1 -0
  56. package/out/static/client/styles-content-section.6e6c01c92b1ef20d.js +1 -0
  57. package/out/static/client/styles-contributor-spotlight.b7bc7bc60baf8578.js +1 -0
  58. package/out/static/client/styles-curriculum-about.a146120bd6d81d2b.js +1 -0
  59. package/out/static/client/styles-curriculum-default.f9cffbec77bd6a2a.js +1 -0
  60. package/out/static/client/styles-curriculum-landing.64b11fc6617af9bf.js +1 -0
  61. package/out/static/client/styles-curriculum-module.a96942f28d9841bd.js +1 -0
  62. package/out/static/client/styles-curriculum-overview.62ec696fa6196a83.js +1 -0
  63. package/out/static/client/styles-featured-articles.aaed3d1876c9083b.js +1 -0
  64. package/out/static/client/styles-footer.c3e8b1950387a3f8.js +1 -0
  65. package/out/static/client/styles-generic-about.13ddd8305fa7ad8e.js +1 -0
  66. package/out/static/client/styles-generic-community.f60b231a4a172157.js +1 -0
  67. package/out/static/client/styles-generic-content.5124855e59a283a5.js +1 -0
  68. package/out/static/client/styles-generic-layout.813a99dd507e1bab.js +1 -0
  69. package/out/static/client/styles-generic-sidebar.1d92203f2d9da43d.js +1 -0
  70. package/out/static/client/styles-generic-toc.61b41b9e9f5f85d0.js +1 -0
  71. package/out/static/client/{styles-global.d51198f5229746cf.js → styles-global.aa9d5defd4680e6c.js} +1 -1
  72. package/out/static/client/styles-heading-anchor.df83d71ad077415d.js +1 -0
  73. package/out/static/client/styles-homepage-body.0df30491a320f9c7.js +1 -0
  74. package/out/static/client/styles-homepage-contributor-spotlight.b879a173e860f6a9.js +1 -0
  75. package/out/static/client/styles-homepage-footer.99f5e147d6f2b9ed.js +1 -0
  76. package/out/static/client/styles-homepage-header.43271f37ca9a57df.js +1 -0
  77. package/out/static/client/styles-homepage-hero.ae60620a6fed0008.js +1 -0
  78. package/out/static/client/styles-homepage.3dfe53192c32e305.js +1 -0
  79. package/out/static/client/styles-latest-news.8a03d3fba6e1cd47.js +1 -0
  80. package/out/static/client/{styles-left-sidebar.dc1db5a87a982579.css → styles-left-sidebar.6f954e8939555f77.css} +2 -2
  81. package/out/static/client/{styles-left-sidebar.dc1db5a87a982579.css.map → styles-left-sidebar.6f954e8939555f77.css.map} +1 -1
  82. package/out/static/client/styles-left-sidebar.c36264a47e1805b1.js +1 -0
  83. package/out/static/client/styles-logo.8f20fe059f2d43b6.js +1 -0
  84. package/out/static/client/styles-mandala.926fd25378dd7542.js +1 -0
  85. package/out/static/client/styles-menu.1d5ef33019535538.js +1 -0
  86. package/out/static/client/styles-navigation.5caf382b2b53c3c1.js +1 -0
  87. package/out/static/client/styles-not-found.7fa9aeb622dc059e.js +1 -0
  88. package/out/static/client/styles-observatory-landing.34dc1b73c5e94907.js +1 -0
  89. package/out/static/client/styles-observatory-results.74448918bd9b8126.js +1 -0
  90. package/out/static/client/styles-page-layout.fd2f866f258a840d.js +1 -0
  91. package/out/static/client/styles-pagination.6a917bf99443fbe0.js +1 -0
  92. package/out/static/client/styles-playground.f6d77d4376f8103b.js +1 -0
  93. package/out/static/client/styles-recent-contributions.05e0168e43678c69.js +1 -0
  94. package/out/static/client/styles-reference-layout.01f91b57466bc3d8.css +2 -0
  95. package/out/static/client/styles-reference-layout.01f91b57466bc3d8.css.map +1 -0
  96. package/out/static/client/styles-reference-layout.c225b05af4a496ec.js +1 -0
  97. package/out/static/client/styles-reference-toc.cefa20df1f0b9e55.js +1 -0
  98. package/out/static/client/styles-sandbox.39a70a5ffa12a531.js +1 -0
  99. package/out/static/client/styles-site-search.bb29f36fdd646b10.js +1 -0
  100. package/out/static/client/styles-social-image.29ca61210c11848e.js +1 -0
  101. package/out/static/client/styles-translation-banner.f7da234674dc43ff.js +1 -0
  102. package/out/static/client/styles-writer-toolbar.4743aa6e3fa72415.js +1 -0
  103. package/out/static/client/{styles.7ccaeb561f3fb889.js → styles.37aa6c605abf6990.js} +2 -2
  104. package/out/static/client/{styles.7ccaeb561f3fb889.js.map → styles.37aa6c605abf6990.js.map} +1 -1
  105. package/out/static/legacy/asset-manifest.json +5 -5
  106. package/out/static/legacy/{index.f31b95b1d9fb620a.js → index.3fd784dd246fb28b.js} +3 -3
  107. package/out/static/legacy/{index.f31b95b1d9fb620a.js.map → index.3fd784dd246fb28b.js.map} +1 -1
  108. package/out/static/legacy/{index.fb9f65c469ca30a7.html → index.b72bb30bdf1cb6b9.html} +1 -1
  109. package/out/static/legacy/stats.json +13 -13
  110. package/out/static/legacy/{yari.5a79950ba25352de.js → yari.4560ee30606e8a90.js} +3 -3
  111. package/out/static/legacy/{yari.5a79950ba25352de.js.map → yari.4560ee30606e8a90.js.map} +1 -1
  112. package/out/static/ssr/1550.js +256 -91
  113. package/out/static/ssr/1550.js.map +1 -1
  114. package/out/static/ssr/6333.js +288 -22
  115. package/out/static/ssr/6333.js.map +1 -1
  116. package/out/static/ssr/index.js +14 -12
  117. package/out/static/ssr/index.js.map +1 -1
  118. package/out/static/ssr/stats.json +4 -4
  119. package/package.json +16 -16
  120. package/server.js +5 -1
  121. package/test/unit/l10n/fixtures/simple-different.js +1 -1
  122. package/test/unit/l10n/fixtures/simple.js +1 -1
  123. package/test/unit/l10n/fixtures/tags-with-duplicates.js +1 -1
  124. package/test/unit/l10n/fixtures/tags-with-substitutions.js +1 -1
  125. package/test/unit/l10n/fixtures/tags.js +1 -1
  126. package/types/lit.ts +1 -1
  127. package/hooks/ga-init.d.ts +0 -5
  128. package/hooks/ga-init.js +0 -28
  129. package/out/static/client/1550.1bc9bf6c1f4edb2b.js +0 -156
  130. package/out/static/client/1550.1bc9bf6c1f4edb2b.js.map +0 -1
  131. package/out/static/client/3094.58da3996c52b5264.js.map +0 -1
  132. package/out/static/client/5649.0e40dc56a97136d2.js +0 -2
  133. package/out/static/client/5649.0e40dc56a97136d2.js.map +0 -1
  134. package/out/static/client/6333.4df091fca06fdbe0.js +0 -51
  135. package/out/static/client/6333.4df091fca06fdbe0.js.map +0 -1
  136. package/out/static/client/index.880284fd3bb87ecf.js.map +0 -1
  137. package/out/static/client/styles-a11y-menu.bf0e970df3199f5d.js +0 -1
  138. package/out/static/client/styles-advertising.d17c1cc85ea68d89.js +0 -1
  139. package/out/static/client/styles-article-footer.da648fa126c9ef35.js +0 -1
  140. package/out/static/client/styles-banner.3a9c208a543e4e08.js +0 -1
  141. package/out/static/client/styles-baseline-indicator.de2ebbf5d4d6d2c6.js +0 -1
  142. package/out/static/client/styles-blog-index.db438e20391403c5.js +0 -1
  143. package/out/static/client/styles-blog-post.4f8200c9e59f9064.js +0 -1
  144. package/out/static/client/styles-breadcrumbs-bar.56117b372f98e1bb.js +0 -1
  145. package/out/static/client/styles-breadcrumbs.31fef62b20adf891.js +0 -1
  146. package/out/static/client/styles-button.fd5bf1d0d6b9e233.js +0 -1
  147. package/out/static/client/styles-content-section.a196f33b9d9e316d.js +0 -1
  148. package/out/static/client/styles-contributor-spotlight.9e6a6225135a95e4.js +0 -1
  149. package/out/static/client/styles-curriculum-about.1596c8f7f696ec0b.js +0 -1
  150. package/out/static/client/styles-curriculum-default.6688b5588b7bb474.js +0 -1
  151. package/out/static/client/styles-curriculum-landing.978bdf31fe767e6b.js +0 -1
  152. package/out/static/client/styles-curriculum-module.22ad33bd781fedea.js +0 -1
  153. package/out/static/client/styles-curriculum-overview.73290072eaf98c47.js +0 -1
  154. package/out/static/client/styles-featured-articles.2426db4e569be912.js +0 -1
  155. package/out/static/client/styles-footer.9b7a6e88180fe92d.js +0 -1
  156. package/out/static/client/styles-generic-about.fbdd35941b30ecb4.js +0 -1
  157. package/out/static/client/styles-generic-community.0460f98e8202cbc3.js +0 -1
  158. package/out/static/client/styles-generic-content.d7ba09d8d6784d92.js +0 -1
  159. package/out/static/client/styles-generic-layout.4e8f7141d77a3d0a.js +0 -1
  160. package/out/static/client/styles-generic-sidebar.9a19341f843e26dc.js +0 -1
  161. package/out/static/client/styles-generic-toc.313908c6a50cd4f4.js +0 -1
  162. package/out/static/client/styles-heading-anchor.6f4f5ad03a7f9308.js +0 -1
  163. package/out/static/client/styles-homepage-body.0a3bdcbec90af911.js +0 -1
  164. package/out/static/client/styles-homepage-contributor-spotlight.d2b96c96fc38fcf8.js +0 -1
  165. package/out/static/client/styles-homepage-footer.f1c1120fd9eb434a.js +0 -1
  166. package/out/static/client/styles-homepage-header.cbe6e6608152438d.js +0 -1
  167. package/out/static/client/styles-homepage-hero.5b6ca92aaffb33ad.js +0 -1
  168. package/out/static/client/styles-homepage.3ed301c8c4ebaa04.js +0 -1
  169. package/out/static/client/styles-latest-news.9fcf156fdb6f0099.js +0 -1
  170. package/out/static/client/styles-left-sidebar.8afa4a0c07dc390a.js +0 -1
  171. package/out/static/client/styles-logo.4f1e847c0fafc690.js +0 -1
  172. package/out/static/client/styles-mandala.b5bc9b1e26685615.js +0 -1
  173. package/out/static/client/styles-menu.cdaed3d488edc7e5.js +0 -1
  174. package/out/static/client/styles-navigation.c30010b963de146d.js +0 -1
  175. package/out/static/client/styles-not-found.1931cd41c663a211.js +0 -1
  176. package/out/static/client/styles-observatory-landing.cfcf2761ceece549.js +0 -1
  177. package/out/static/client/styles-observatory-results.851694fe2b9402e8.js +0 -1
  178. package/out/static/client/styles-page-layout.242bde5d7a8b2118.js +0 -1
  179. package/out/static/client/styles-pagination.91d95daa63d13fc6.js +0 -1
  180. package/out/static/client/styles-playground.68430c102865ae2c.js +0 -1
  181. package/out/static/client/styles-recent-contributions.5d2b8bc44c3385b9.js +0 -1
  182. package/out/static/client/styles-reference-layout.f17861486ef2423f.css +0 -2
  183. package/out/static/client/styles-reference-layout.f17861486ef2423f.css.map +0 -1
  184. package/out/static/client/styles-reference-layout.fcb22f6809bd2f5b.js +0 -1
  185. package/out/static/client/styles-reference-toc.f1e6afe3660e67a1.js +0 -1
  186. package/out/static/client/styles-sandbox.939050c7574b6369.js +0 -1
  187. package/out/static/client/styles-site-search.712ba523882ce36e.js +0 -1
  188. package/out/static/client/styles-social-image.1f1abcf5b04e3219.js +0 -1
  189. package/out/static/client/styles-translation-banner.cae413f93f1335b6.js +0 -1
  190. package/out/static/client/styles-writer-toolbar.796f905329fa62ff.js +0 -1
  191. package/utils/dnt-helper.js +0 -59
  192. /package/out/static/client/{5330.8d5173f308b639bc.js.LICENSE.txt → 5330.0fa70a944297da04.js.LICENSE.txt} +0 -0
  193. /package/out/static/client/{index.880284fd3bb87ecf.js.LICENSE.txt → index.3d355ddb095f80e1.js.LICENSE.txt} +0 -0
  194. /package/out/static/legacy/{index.f31b95b1d9fb620a.js.LICENSE.txt → index.3fd784dd246fb28b.js.LICENSE.txt} +0 -0
  195. /package/out/static/legacy/{yari.5a79950ba25352de.js.LICENSE.txt → yari.4560ee30606e8a90.js.LICENSE.txt} +0 -0
@@ -0,0 +1,321 @@
1
+ export const __rspack_esm_id="1550";export const __rspack_esm_ids=["1550"];export const __webpack_modules__={23293(e,t,o){o.d(t,{default:()=>r});let r=`article-footer-last-modified = Cette page a \xe9t\xe9 modifi\xe9e le <time data-l10n-name="date">{ $date }</time> par les <a data-l10n-name="contributors">contributeur\xb7ice\xb7s du MDN</a>.
2
+ article-footer-source-title = Dossier : { $folder } (Ouvre un onglet)
3
+ baseline-asterisk = Certaines parties de cette fonctionnalit\xe9 peuvent b\xe9n\xe9ficier de prise en charge variables.
4
+ baseline-high-extra = Cette fonctionnalit\xe9 est bien \xe9tablie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis { $date }.
5
+ baseline-low-extra = Depuis { $date }, cette fonctionnalit\xe9 fonctionne sur les appareils et les versions de navigateur les plus r\xe9cents. Elle peut ne pas fonctionner sur les appareils ou navigateurs plus anciens.
6
+ baseline-not-extra = Cette fonctionnalit\xe9 n'est pas Compatible car elle ne fonctionne pas dans certains des navigateurs les plus utilis\xe9s.
7
+ baseline-supported-in = Pris en charge dans { $browsers }
8
+ baseline-unsupported-in = Pas compl\xe8tement pris en charge dans { $browsers }
9
+ baseline-supported-and-unsupported-in = Pris en charge dans { $supported }, mais pas compl\xe8tement pris en charge dans { $unsupported }
10
+ homepage-hero-title = Des ressources pour les D\xe9veloppeuses et D\xe9veloppeurs,<br> par des D\xe9veloppeuses et D\xe9veloppeurs
11
+ homepage-hero-description = Documenter le <a data-l10n-name="css">CSS</a>, le <a data-l10n-name="html">HTML</a> et le <a data-l10n-name="js">JavaScript</a>, depuis 2005.
12
+ not-found-title = Page non trouv\xe9e
13
+ not-found-description = D\xe9sol\xe9, la page <code data-l10n-name="url">{ $url }</code> n'a pas \xe9t\xe9 trouv\xe9e.
14
+ not-found-fallback-english = <strong data-l10n-name="strong">Bonne nouvelle :</strong> La page que vous cherchez existe en <em data-l10n-name="em">Anglais</em>.
15
+ not-found-fallback-search = La page que vous avez demand\xe9e n'existe pas, mais vous pouvez essayer une recherche sur le site pour :
16
+ not-found-back = Retour \xe0 la page d'accueil
17
+ footer-mofo = Visitez la soci\xe9t\xe9 m\xe8re \xe0 but non lucratif de <a data-l10n-name="moco">Mozilla Corporation</a>, la <a data-l10n-name="mofo">Fondation Mozilla</a>.
18
+ footer-copyright = Certaines parties de ce contenu sont prot\xe9g\xe9es par le droit d'auteur \xa91998—{ $year } des contributeurs individuels de mozilla.org. Contenu disponible sous <a data-l10n-name="cc">une licence Creative Commons</a>.
19
+ search-modal-site-search = Rechercher sur le site <em>{ $query }</em>
20
+ site-search-search-stats = { $results } documents trouv\xe9s.
21
+ site-search-suggestion-matches =
22
+ { $relation ->
23
+ [gt]
24
+ plus que { $matches ->
25
+ [one] { $matches } trouv\xe9
26
+ *[other] { $matches } trouv\xe9s
27
+ }
28
+ *[eq]
29
+ { $matches ->
30
+ [one] { $matches } trouv\xe9
31
+ *[other] { $matches } trouv\xe9s
32
+ }
33
+ }
34
+ blog-time-to-read =
35
+ { $minutes ->
36
+ [one] { $minutes } minute de lecture
37
+ *[other] { $minutes } minutes de lecture
38
+ }
39
+ -brand-name-obs = HTTP Observatory
40
+ obs-report = Rapport
41
+ obs-title = { -brand-name-obs }
42
+ obs-landing-intro = Lanc\xe9 en 2016, { -brand-name-obs } am\xe9liore la s\xe9curit\xe9 du Web en analysant la conformit\xe9 aux meilleures pratiques en mati\xe8re de s\xe9curit\xe9. Il a fourni des informations \xe0 plus de 6,9 millions de sites web gr\xe2ce \xe0 47 millions d'analyses.
43
+ obs-assessment = D\xe9velopp\xe9 par Mozilla, { -brand-name-obs } effectue une \xe9valuation approfondie des en-t\xeates HTTP d'un site et d'autres configurations de s\xe9curit\xe9 cl\xe9s.
44
+ obs-scanning = Son processus d'analyse automatis\xe9 fournit aux d\xe9veloppeur\xb7euse\xb7s et aux administrateur\xb7ice\xb7s de sites web des commentaires d\xe9taill\xe9s et exploitables, ax\xe9s sur l'identification et la r\xe9solution des failles de s\xe9curit\xe9 potentielles.
45
+ obs-security = Cet outil aide les d\xe9veloppeur\xb7euse\xb7s et les administrateur\xb7ice\xb7s de sites web \xe0 renforcer la s\xe9curit\xe9 de leurs sites contre les menaces courantes dans un environnement num\xe9rique en constante \xe9volution.
46
+ obs-mdn = { -brand-name-obs } fournit des informations efficaces en mati\xe8re de s\xe9curit\xe9, guid\xe9es par l'expertise et l'engagement de Mozilla en faveur d'un Internet plus s\xfbr et plus s\xe9curis\xe9, et bas\xe9es sur des tendances et des directives bien \xe9tablies.
47
+ compat-browser-version-date = { $browser } { $version } — Date de sortie : { $date }
48
+ compat-browser-version-released = Date de sortie : { $date }
49
+ compat-link-source-title = Fichier : { $filename }
50
+ compat-support-prefix = Impl\xe9ment\xe9 avec le pr\xe9fixe vendeur : { $prefix }
51
+ compat-support-altname = Nom alternatif : { $altname }
52
+ compat-support-removed = Supprim\xe9 en version { $version } et sup\xe9rieure
53
+ compat-support-see-impl-url = Voir <a data-l10n-name="impl_url">{ $label }</a>
54
+ compat-support-flags =
55
+ { NUMBER($has_added) ->
56
+ [one] De la version { $version_added }
57
+ *[other] { "" }
58
+ }{ $has_last ->
59
+ [one]
60
+ { NUMBER($has_added) ->
61
+ *[zero] Jusqu'\xe0 la version { $versionLast }, les utilisateur\xb7ice\xb7s
62
+ [one] { " " }jusqu'\xe0 { $versionLast }, les utilisateur\xb7ice\xb7s
63
+ }
64
+ *[zero]
65
+ { NUMBER($has_added) ->
66
+ *[zero] Les utilisateur\xb7ice\xb7s
67
+ [one] {" "}les utilisateur\xb7ice\xb7s
68
+ }
69
+ }
70
+ { " " }doivent explicitement d\xe9finir
71
+ { $flag_type ->
72
+ *[preference] la pr\xe9f\xe9rence
73
+ [runtime_flag] l'indicateur d'ex\xe9cution
74
+ }
75
+ { " " }<code data-l10n-name="name">{ $flag_name }</code>
76
+ { NUMBER($has_value) ->
77
+ [one] { " " }\xe0 <code data-l10n-name="value">{ $flag_value }</code>
78
+ *[other] { "" }
79
+ }{"."}
80
+ { NUMBER($has_pref_url) ->
81
+ [one]
82
+ { $flag_type ->
83
+ [preference] Pour changer vos pr\xe9f\xe9rences sur le navigateur { $browser_name }, visitez { $browser_pref_url }.
84
+ *[other] { "" }
85
+ }
86
+ *[other] { "" }
87
+ }
88
+ compat-legend-yes = { compat-support-full }
89
+ compat-legend-partial = { compat-support-partial }
90
+ compat-legend-preview = En cours de d\xe9veloppement. Pris en charge dans une pr\xe9-version.
91
+ compat-legend-no = { compat-support-no }
92
+ compat-legend-unknown = Compatibilit\xe9 inconnue
93
+ compat-legend-experimental = { compat-experimental }. Attendez-vous \xe0 ce que les comportements changent \xe0 l'avenir.
94
+ compat-legend-nonstandard = { compat-nonstandard }. V\xe9rifiez la compatibilit\xe9 entre les navigateurs avant utilisation.
95
+ compat-legend-deprecated = { compat-deprecated }. Ne pas utiliser dans les nouveaux sites web.
96
+ compat-legend-footnote = Voir les notes de mise en application.
97
+ compat-legend-disabled = L'utilisateur\xb7ice doit explicitement activer cette fonctionnalit\xe9.
98
+ compat-legend-altname = Utilise un nom hors standard.
99
+ compat-legend-prefix = N\xe9cessite un pr\xe9fixe vendeur ou un nom diff\xe9rent pour \xeatre utilis\xe9.
100
+ compat-legend-more = Contient davantage d'informations sur la compatibilit\xe9.
101
+ placement-note = Publicit\xe9
102
+ placement-no = Vous ne voulez pas voir de publicit\xe9s ?
103
+ pagination-next = Page suivante
104
+ pagination-prev = Page pr\xe9c\xe9dente
105
+ pagination-current = Page actuelle
106
+ pagination-goto = Aller \xe0 la page { $page }
107
+ logout = Se d\xe9connecter
108
+ login = Se connecter
109
+ example-play-button-label = Ex\xe9cuter
110
+ example-play-button-title = Ex\xe9cutez l'exemple dans MDN Playground (ouvre un nouvel onglet)
111
+ writer-reload-polling = Analyse toutes les { $seconds }s
112
+ a11y-menu-skip-to-main-content = Passer au contenu principal
113
+ a11y-menu-skip-to-search = Passer \xe0 la recherche
114
+ article-footer-title = Aider \xe0 am\xe9liorer MDN
115
+ article-footer-learn-how-to-contribute = Apprendre \xe0 contribuer
116
+ article-footer-view-this-page-on-github = Voir cette page sur GitHub
117
+ article-footer-this-will-take-you-to-github-to = Cela vous m\xe8nera \xe0 GitHub pour cr\xe9er un nouveau probl\xe8me.
118
+ article-footer-report-a-problem-with-this-conte = Signaler un probl\xe8me avec ce contenu
119
+ baseline-indicator-baseline-cross = Croix de Baseline
120
+ baseline-indicator-baseline-check = Coche de Baseline
121
+ baseline-indicator-limited-availability = Disponibilit\xe9 limit\xe9e
122
+ baseline-indicator-baseline = Baseline
123
+ baseline-indicator-widely-available = Large disponibilit\xe9
124
+ baseline-indicator-newly-available = Nouvellement disponible
125
+ baseline-indicator-check = coche
126
+ baseline-indicator-cross = croix
127
+ baseline-indicator-learn-more = En savoir plus
128
+ baseline-indicator-see-full-compatibility = Voir la compatibilit\xe9 compl\xe8te
129
+ baseline-indicator-report-feedback = Faire un retour
130
+ blog-previous = Article pr\xe9c\xe9dent
131
+ blog-next = Article suivant
132
+ blog-index-blog-it-better = Bloguez mieux
133
+ reference-toc-header = Dans cet article
134
+ blog-post-not-found = Article de blog introuvable.
135
+ collection-save-button-save-in-collection = Enregistrer dans la collection
136
+ collection-save-button-remove = Supprimer
137
+ collection-save-button-save = Enregistrer
138
+ collection-save-button-add-to-collection = Ajouter \xe0 la collection
139
+ collection-save-button-collection = Collection :
140
+ collection-save-button-saved-articles = Articles enregistr\xe9s
141
+ collection-save-button-new-collection = Nouvelle collection
142
+ collection-save-button-name = Nom :
143
+ collection-save-button-note = Note :
144
+ collection-save-button-saving = Enregistrement…
145
+ collection-save-button-cancel = Annuler
146
+ collection-save-button-deleting = Suppression…
147
+ collection-save-button-delete = Supprimer
148
+ theme-default = Automatique
149
+ color-theme-light = Clair
150
+ color-theme-dark = Sombre
151
+ color-theme-switch-color-theme = Changer le th\xe8me de couleur
152
+ color-theme-theme = Th\xe8me
153
+ compat-link-report-issue-title = Signaler un probl\xe8me avec ces donn\xe9es de compatibilit\xe9
154
+ compat-link-report-issue = Signaler des probl\xe8mes avec ces donn\xe9es de compatibilit\xe9
155
+ compat-link-source = Voir les donn\xe9es sur GitHub
156
+ compat-experimental = Exp\xe9rimental
157
+ compat-deprecated = Obsol\xe8te
158
+ compat-nonstandard = Non standard
159
+ compat-support-partial = Prise en charge partielle
160
+ compat-support-preview-browser = Pris en charge dans une pr\xe9-version du navigateur
161
+ compat-support-full = Prise en charge compl\xe8te
162
+ compat-support-no = Pas de prise en charge
163
+ compat-support-unknown = Prise en charge inconnue
164
+ compat-support-preview = Pris en charge dans une pr\xe9-version.
165
+ compat-yes = Oui
166
+ compat-partial = Partiel
167
+ compat-no = Non
168
+ compat-legend = L\xe9gende
169
+ compat-legend-tip = Astuce : cliquer/appuyer sur une cellule pour obtenir plus d'informations.
170
+ compat-link-report-missing-title = Signaler des donn\xe9es de compatibilit\xe9 manquantes
171
+ compat-link-report-missing = Signaler le probl\xe8me
172
+ compat-js-required = Activez JavaScript pour afficher ce tableau de compatibilit\xe9 des navigateurs.
173
+ compat-loading = Chargement…
174
+ content-feedback-content-is-out-of-date = Le contenu n'est pas \xe0 jour
175
+ content-feedback-missing-information = Informations manquantes
176
+ content-feedback-code-examples-not-working-as-exp = Les exemples de code ne fonctionnent pas comme pr\xe9vu
177
+ content-feedback-other = Autre
178
+ content-feedback-question = Cette page vous a-t-elle \xe9t\xe9 utile ?
179
+ content-feedback-yes = Oui
180
+ content-feedback-no = Non
181
+ content-feedback-reason = Pourquoi cette page ne vous a-t-elle pas \xe9t\xe9 utile ?
182
+ content-feedback-submit = Envoyer
183
+ content-feedback-thanks = Merci pour votre commentaire !
184
+ contributor-spotlight-want-to-be-part-of-the-journey = Voulez-vous faire partie de l'aventure ?
185
+ contributor-spotlight-our-constant-quest-for-innovatio = Notre qu\xeate constante d'innovation commence ici, avec vous. Chaque partie de MDN (docs, d\xe9mos et le site lui-m\xeame) provient de notre incroyable communaut\xe9 ouverte de d\xe9veloppeur\xb7euse\xb7s. Rejoignez-nous !
186
+ contributor-spotlight-get-involved = Participez
187
+ contributor-spotlight-contributor-profile = Profil de contributeur\xb7ice
188
+ copy-button-copied = Copi\xe9
189
+ copy-button-copy-failed = \xc9chec de la copie !
190
+ copy-button-copy = Copier
191
+ footer-mdn-on-github = MDN sur GitHub
192
+ footer-mdn-on-bluesky = MDN sur Bluesky
193
+ footer-mdn-on-x = MDN sur X
194
+ footer-mdn-on-mastodon = MDN sur Mastodon
195
+ footer-mdn-blog-rss-feed = Flux RSS du blog MDN
196
+ footer-mdn = MDN
197
+ footer-about = \xc0 propos
198
+ footer-blog = Blog
199
+ footer-mozilla-careers = Offres d'emploi chez Mozilla
200
+ footer-advertise-with-us = Faites de la publicit\xe9 avec nous
201
+ footer-mdn-plus = MDN Plus
202
+ footer-product-help = Assistance produit
203
+ footer-contribute = Contribuer
204
+ footer-mdn-community = Communaut\xe9 MDN
205
+ footer-community-resources = Ressources communautaires
206
+ footer-writing-guidelines = Directives de r\xe9daction
207
+ footer-mdn-discord = Discord MDN
208
+ footer-developers = D\xe9veloppeur\xb7euse\xb7s
209
+ footer-web-technologies = Technologies web
210
+ footer-learn-web-development = Apprendre le d\xe9veloppement web
211
+ footer-guides = Guides
212
+ footer-tutorials = Tutoriels
213
+ footer-glossary = Glossaire
214
+ footer-hacks-blog = Blog Hacks
215
+ footer-website-privacy-notice = Politique de confidentialit\xe9 du site web
216
+ footer-telemetry-settings = Param\xe8tres de t\xe9l\xe9m\xe9trie
217
+ footer-legal = Mentions l\xe9gales
218
+ footer-community-participation-guidelin = Directives de participation communautaire
219
+ footer-mdn-logo = Logo MDN
220
+ footer-tagline = Votre mod\xe8le pour un internet meilleur.
221
+ footer-mozilla-logo = Logo Mozilla
222
+ generic-toc__header = Dans cet article
223
+ homepage-body-featured-articles = Articles en vedette
224
+ homepage-body-latest-news = Derni\xe8res nouvelles
225
+ homepage-body-recent-contributions = Contributions r\xe9centes
226
+ homepage-contributor-spotlight-contributor-spotlight = Projecteur sur les contributeur\xb7ice\xb7s
227
+ homepage-contributor-spotlight-get-involved = Participez
228
+ homepage-search-search-the-site = Rechercher sur le site
229
+ homepage-search-search = Rechercher
230
+ interactive-example-reset = R\xe9initialiser
231
+ interactive-example-value-select = S\xe9lectionner une valeur
232
+ interactive-example-the-current-value-is-not-support = La valeur actuelle n'est pas prise en charge par votre navigateur.
233
+ interactive-example-run-example-and-show-console-ou = Ex\xe9cuter l'exemple et afficher la sortie de la console
234
+ interactive-example-run = Ex\xe9cuter
235
+ interactive-example-reset-example-and-clear-console = R\xe9initialiser l'exemple et effacer la console
236
+ interactive-example-console-output = Sortie de la console
237
+ interactive-example-output = Sortie
238
+ issues-table-loading-issues = chargement des probl\xe8mes…
239
+ issues-table-title = Titre
240
+ issues-table-repository = D\xe9p\xf4t
241
+ language-switcher-remember-language = Se souvenir de la langue
242
+ language-switcher-enable-this-setting-to-always-sw = Activez ce param\xe8tre pour toujours passer \xe0 la langue actuelle lorsque disponible. (Cliquez pour en savoir plus.)
243
+ language-switcher-learn-more = En savoir plus
244
+ login-button-login = Se connecter
245
+ modal-exit-modal = Quitter la fen\xeatre contextuelle
246
+ navigation-toggle-navigation = Basculer la navigation
247
+ obs-about-title = \xc0 propos de l'HTTP Observatory
248
+ observatory-landing-read-our-faq = Lire notre FAQ
249
+ observatory-landing-report-feedback = Faire un retour
250
+ observatory-rescan-button-rescan = Re-scanner
251
+ observatory-rescan-button-wait-a-minute-to-rescan = Attendez une minute pour re-scanner
252
+ observatory-results-report-feedback = Faire un retour
253
+ observatory-results-faq = FAQ
254
+ observatory-tests-and-scores-loading-tests-and-scoring-data = Chargement des tests et des donn\xe9es de notation...
255
+ observatory-tests-and-scores-see = Voir
256
+ observatory-tests-and-scores-for-guidance = pour des conseils.
257
+ observatory-tests-and-scores-test-result = R\xe9sultat du test
258
+ observatory-tests-and-scores-description = Description
259
+ observatory-tests-and-scores-modifier = Modifier
260
+ observatory-tests-and-scores-failed-to-load-tests-and-scoring = \xc9chec du chargement des tests et des donn\xe9es de notation. Veuillez r\xe9essayer plus tard.
261
+ brand-web-docs = MDN Web Docs
262
+ blog-rss-title = Flux RSS du Blog MDN
263
+ meta-description = Le site MDN Web Docs fournit des informations sur les technologies Web ouvertes, y compris HTML, CSS et les API pour les sites Web et les applications Web progressives.
264
+ logo-alt = Logo MDN
265
+ pagination-pagination = Pagination
266
+ playground-do-you-really-want-to-clear-ever = Voulez-vous vraiment tout effacer ?
267
+ playground-do-you-really-want-to-revert-you = Voulez-vous vraiment revenir sur vos modifications ?
268
+ playground-playground = Terrain d'essai
269
+ playground-format = Format
270
+ playground-run = Ex\xe9cuter
271
+ playground-share = Partager
272
+ playground-clear = Effacer
273
+ playground-reset = R\xe9initialiser
274
+ playground-seeing-something-inappropriate = Voir quelque chose d'inappropri\xe9 ?
275
+ playground-console = Console
276
+ playground-share-markdown = Partager le Markdown
277
+ playground-copy-markdown-to-clipboard = Copier le Markdown dans le presse-papiers
278
+ playground-share-data-url = Partager l'URL des donn\xe9es
279
+ playground-copy-data-url-to-clipboard = Copier l'URL des donn\xe9es dans le presse-papiers
280
+ playground-share-your-code-via-permalink = Partager votre code avec un lien permanent
281
+ playground-copy-to-clipboard = Copier dans le presse-papiers
282
+ playground-create-link = Cr\xe9er un lien
283
+ playground-report-this-malicious-or-inappro = Signaler ce terrain d'essai partag\xe9 comme malveillant ou inappropri\xe9.
284
+ playground-can-you-please-share-some-detail = Pouvez-vous partager quelques d\xe9tails sur ce qui ne va pas avec ce contenu :
285
+ playground-cancel = Annuler
286
+ playground-report = Signaler
287
+ recently-visited-recently-visited = R\xe9cemment visit\xe9
288
+ scrim-inline-clicking-will-load-content-from = Cliquer chargera le contenu depuis scrimba.com
289
+ scrim-inline-toggle-fullscreen = Basculer en plein \xe9cran
290
+ scrim-inline-open-on-scrimba = Ouvrir sur Scrimba
291
+ scrim-inline-load-scrim-and-open-dialog = Charger le scrim et ouvrir la bo\xeete de dialogue.
292
+ search-button-search-the-site = Rechercher sur le site
293
+ search-modal-loading-search-index = Chargement de l'index de recherche…
294
+ search-modal-search = Rechercher
295
+ search-modal-exit-search = Quitter la recherche
296
+ sidebar-filter-filter-sidebar = Filtrer la barre lat\xe9rale
297
+ sidebar-filter-filter = Filtrer
298
+ sidebar-filter-clear-filter-input = Effacer le filtre
299
+ site-search-search = Rechercher
300
+ site-search-previous = Pr\xe9c\xe9dent
301
+ site-search-next = Suivant
302
+ site-search-suggestions-text = Voulez-vous dire…
303
+ site-search-searching = Recherche en cours…
304
+ site-search-language = Langue
305
+ site-search-both = Les deux
306
+ specifications-list-this-feature-does-not-appear-to = Cette fonctionnalit\xe9 ne semble pas \xeatre d\xe9finie dans une sp\xe9cification.
307
+ specifications-list-specification = Sp\xe9cification
308
+ survey-hide-this-survey = Masquer ce sondage
309
+ survey-take-survey-opens-in-a-new-tab = Participer au sondage (s'ouvre dans un nouvel onglet)
310
+ toggle-sidebar-toggle-sidebar = Basculer la barre lat\xe9rale
311
+ user-menu-ai-help = Aide IA
312
+ user-menu-collections = Collections
313
+ user-menu-updates = Mises \xe0 jour
314
+ user-menu-settings = Mes param\xe8tres
315
+ user-menu-help = Aide
316
+ user-menu-feedback = Retour
317
+ user-menu-user = Utilisateur\xb7ice
318
+ writer-open-editor-open-in-editor = Ouvrir dans l'\xe9diteur
319
+ writer-toolbar-view-on-mdn = Voir sur MDN
320
+ `}};
321
+ //# sourceMappingURL=1550.317cf910e7937050.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1550.317cf910e7937050.js","sources":["webpack://@mdn/fred/./l10n/locales/fr.ftl"],"sourcesContent":["export default `article-footer-last-modified = Cette page a été modifiée le <time data-l10n-name=\"date\">{ \\$date }</time> par les <a data-l10n-name=\"contributors\">contributeur·ice·s du MDN</a>.\narticle-footer-source-title = Dossier : { \\$folder } (Ouvre un onglet)\nbaseline-asterisk = Certaines parties de cette fonctionnalité peuvent bénéficier de prise en charge variables.\nbaseline-high-extra = Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis { \\$date }.\nbaseline-low-extra = Depuis { \\$date }, cette fonctionnalité fonctionne sur les appareils et les versions de navigateur les plus récents. Elle peut ne pas fonctionner sur les appareils ou navigateurs plus anciens.\nbaseline-not-extra = Cette fonctionnalité n'est pas Compatible car elle ne fonctionne pas dans certains des navigateurs les plus utilisés.\nbaseline-supported-in = Pris en charge dans { \\$browsers }\nbaseline-unsupported-in = Pas complètement pris en charge dans { \\$browsers }\nbaseline-supported-and-unsupported-in = Pris en charge dans { \\$supported }, mais pas complètement pris en charge dans { \\$unsupported }\nhomepage-hero-title = Des ressources pour les Développeuses et Développeurs,<br> par des Développeuses et Développeurs\nhomepage-hero-description = Documenter le <a data-l10n-name=\"css\">CSS</a>, le <a data-l10n-name=\"html\">HTML</a> et le <a data-l10n-name=\"js\">JavaScript</a>, depuis 2005.\nnot-found-title = Page non trouvée\nnot-found-description = Désolé, la page <code data-l10n-name=\"url\">{ \\$url }</code> n'a pas été trouvée.\nnot-found-fallback-english = <strong data-l10n-name=\"strong\">Bonne nouvelle :</strong> La page que vous cherchez existe en <em data-l10n-name=\"em\">Anglais</em>.\nnot-found-fallback-search = La page que vous avez demandée n'existe pas, mais vous pouvez essayer une recherche sur le site pour :\nnot-found-back = Retour à la page d'accueil\nfooter-mofo = Visitez la société mère à but non lucratif de <a data-l10n-name=\"moco\">Mozilla Corporation</a>, la <a data-l10n-name=\"mofo\">Fondation Mozilla</a>.\nfooter-copyright = Certaines parties de ce contenu sont protégées par le droit d'auteur ©1998—{ \\$year } des contributeurs individuels de mozilla.org. Contenu disponible sous <a data-l10n-name=\"cc\">une licence Creative Commons</a>.\nsearch-modal-site-search = Rechercher sur le site <em>{ \\$query }</em>\nsite-search-search-stats = { \\$results } documents trouvés.\nsite-search-suggestion-matches =\n { \\$relation ->\n [gt]\n plus que { \\$matches ->\n [one] { \\$matches } trouvé\n *[other] { \\$matches } trouvés\n }\n *[eq]\n { \\$matches ->\n [one] { \\$matches } trouvé\n *[other] { \\$matches } trouvés\n }\n }\nblog-time-to-read =\n { \\$minutes ->\n [one] { \\$minutes } minute de lecture\n *[other] { \\$minutes } minutes de lecture\n }\n-brand-name-obs = HTTP Observatory\nobs-report = Rapport\nobs-title = { -brand-name-obs }\nobs-landing-intro = Lancé en 2016, { -brand-name-obs } améliore la sécurité du Web en analysant la conformité aux meilleures pratiques en matière de sécurité. Il a fourni des informations à plus de 6,9 millions de sites web grâce à 47 millions d'analyses.\nobs-assessment = Développé par Mozilla, { -brand-name-obs } effectue une évaluation approfondie des en-têtes HTTP d'un site et d'autres configurations de sécurité clés.\nobs-scanning = Son processus d'analyse automatisé fournit aux développeur·euse·s et aux administrateur·ice·s de sites web des commentaires détaillés et exploitables, axés sur l'identification et la résolution des failles de sécurité potentielles.\nobs-security = Cet outil aide les développeur·euse·s et les administrateur·ice·s de sites web à renforcer la sécurité de leurs sites contre les menaces courantes dans un environnement numérique en constante évolution.\nobs-mdn = { -brand-name-obs } fournit des informations efficaces en matière de sécurité, guidées par l'expertise et l'engagement de Mozilla en faveur d'un Internet plus sûr et plus sécurisé, et basées sur des tendances et des directives bien établies.\ncompat-browser-version-date = { \\$browser } { \\$version } — Date de sortie : { \\$date }\ncompat-browser-version-released = Date de sortie : { \\$date }\ncompat-link-source-title = Fichier : { \\$filename }\ncompat-support-prefix = Implémenté avec le préfixe vendeur : { \\$prefix }\ncompat-support-altname = Nom alternatif : { \\$altname }\ncompat-support-removed = Supprimé en version { \\$version } et supérieure\ncompat-support-see-impl-url = Voir <a data-l10n-name=\"impl_url\">{ \\$label }</a>\ncompat-support-flags =\n { NUMBER(\\$has_added) ->\n [one] De la version { \\$version_added }\n *[other] { \"\" }\n }{ \\$has_last ->\n [one]\n { NUMBER(\\$has_added) ->\n *[zero] Jusqu'à la version { \\$versionLast }, les utilisateur·ice·s\n [one] { \" \" }jusqu'à { \\$versionLast }, les utilisateur·ice·s\n }\n *[zero]\n { NUMBER(\\$has_added) ->\n *[zero] Les utilisateur·ice·s\n [one] {\" \"}les utilisateur·ice·s\n }\n }\n { \" \" }doivent explicitement définir\n { \\$flag_type ->\n *[preference] la préférence\n [runtime_flag] l'indicateur d'exécution\n }\n { \" \" }<code data-l10n-name=\"name\">{ \\$flag_name }</code>\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] Pour changer vos préférences sur le navigateur { \\$browser_name }, visitez { \\$browser_pref_url }.\n *[other] { \"\" }\n }\n *[other] { \"\" }\n }\ncompat-legend-yes = { compat-support-full }\ncompat-legend-partial = { compat-support-partial }\ncompat-legend-preview = En cours de développement. Pris en charge dans une pré-version.\ncompat-legend-no = { compat-support-no }\ncompat-legend-unknown = Compatibilité inconnue\ncompat-legend-experimental = { compat-experimental }. Attendez-vous à ce que les comportements changent à l'avenir.\ncompat-legend-nonstandard = { compat-nonstandard }. Vérifiez la compatibilité entre les navigateurs avant utilisation.\ncompat-legend-deprecated = { compat-deprecated }. Ne pas utiliser dans les nouveaux sites web.\ncompat-legend-footnote = Voir les notes de mise en application.\ncompat-legend-disabled = L'utilisateur·ice doit explicitement activer cette fonctionnalité.\ncompat-legend-altname = Utilise un nom hors standard.\ncompat-legend-prefix = Nécessite un préfixe vendeur ou un nom différent pour être utilisé.\ncompat-legend-more = Contient davantage d'informations sur la compatibilité.\nplacement-note = Publicité\nplacement-no = Vous ne voulez pas voir de publicités ?\npagination-next = Page suivante\npagination-prev = Page précédente\npagination-current = Page actuelle\npagination-goto = Aller à la page { \\$page }\nlogout = Se déconnecter\nlogin = Se connecter\nexample-play-button-label = Exécuter\nexample-play-button-title = Exécutez l'exemple dans MDN Playground (ouvre un nouvel onglet)\nwriter-reload-polling = Analyse toutes les { \\$seconds }s\na11y-menu-skip-to-main-content = Passer au contenu principal\na11y-menu-skip-to-search = Passer à la recherche\narticle-footer-title = Aider à améliorer MDN\narticle-footer-learn-how-to-contribute = Apprendre à contribuer\narticle-footer-view-this-page-on-github = Voir cette page sur GitHub\narticle-footer-this-will-take-you-to-github-to = Cela vous mènera à GitHub pour créer un nouveau problème.\narticle-footer-report-a-problem-with-this-conte = Signaler un problème avec ce contenu\nbaseline-indicator-baseline-cross = Croix de Baseline\nbaseline-indicator-baseline-check = Coche de Baseline\nbaseline-indicator-limited-availability = Disponibilité limitée\nbaseline-indicator-baseline = Baseline\nbaseline-indicator-widely-available = Large disponibilité\nbaseline-indicator-newly-available = Nouvellement disponible\nbaseline-indicator-check = coche\nbaseline-indicator-cross = croix\nbaseline-indicator-learn-more = En savoir plus\nbaseline-indicator-see-full-compatibility = Voir la compatibilité complète\nbaseline-indicator-report-feedback = Faire un retour\nblog-previous = Article précédent\nblog-next = Article suivant\nblog-index-blog-it-better = Bloguez mieux\nreference-toc-header = Dans cet article\nblog-post-not-found = Article de blog introuvable.\ncollection-save-button-save-in-collection = Enregistrer dans la collection\ncollection-save-button-remove = Supprimer\ncollection-save-button-save = Enregistrer\ncollection-save-button-add-to-collection = Ajouter à la collection\ncollection-save-button-collection = Collection :\ncollection-save-button-saved-articles = Articles enregistrés\ncollection-save-button-new-collection = Nouvelle collection\ncollection-save-button-name = Nom :\ncollection-save-button-note = Note :\ncollection-save-button-saving = Enregistrement…\ncollection-save-button-cancel = Annuler\ncollection-save-button-deleting = Suppression…\ncollection-save-button-delete = Supprimer\ntheme-default = Automatique\ncolor-theme-light = Clair\ncolor-theme-dark = Sombre\ncolor-theme-switch-color-theme = Changer le thème de couleur\ncolor-theme-theme = Thème\ncompat-link-report-issue-title = Signaler un problème avec ces données de compatibilité\ncompat-link-report-issue = Signaler des problèmes avec ces données de compatibilité\ncompat-link-source = Voir les données sur GitHub\ncompat-experimental = Expérimental\ncompat-deprecated = Obsolète\ncompat-nonstandard = Non standard\ncompat-support-partial = Prise en charge partielle\ncompat-support-preview-browser = Pris en charge dans une pré-version du navigateur\ncompat-support-full = Prise en charge complète\ncompat-support-no = Pas de prise en charge\ncompat-support-unknown = Prise en charge inconnue\ncompat-support-preview = Pris en charge dans une pré-version.\ncompat-yes = Oui\ncompat-partial = Partiel\ncompat-no = Non\ncompat-legend = Légende\ncompat-legend-tip = Astuce : cliquer/appuyer sur une cellule pour obtenir plus d'informations.\ncompat-link-report-missing-title = Signaler des données de compatibilité manquantes\ncompat-link-report-missing = Signaler le problème\ncompat-js-required = Activez JavaScript pour afficher ce tableau de compatibilité des navigateurs.\ncompat-loading = Chargement…\ncontent-feedback-content-is-out-of-date = Le contenu n'est pas à jour\ncontent-feedback-missing-information = Informations manquantes\ncontent-feedback-code-examples-not-working-as-exp = Les exemples de code ne fonctionnent pas comme prévu\ncontent-feedback-other = Autre\ncontent-feedback-question = Cette page vous a-t-elle été utile ?\ncontent-feedback-yes = Oui\ncontent-feedback-no = Non\ncontent-feedback-reason = Pourquoi cette page ne vous a-t-elle pas été utile ?\ncontent-feedback-submit = Envoyer\ncontent-feedback-thanks = Merci pour votre commentaire !\ncontributor-spotlight-want-to-be-part-of-the-journey = Voulez-vous faire partie de l'aventure ?\ncontributor-spotlight-our-constant-quest-for-innovatio = Notre quête constante d'innovation commence ici, avec vous. Chaque partie de MDN (docs, démos et le site lui-même) provient de notre incroyable communauté ouverte de développeur·euse·s. Rejoignez-nous !\ncontributor-spotlight-get-involved = Participez\ncontributor-spotlight-contributor-profile = Profil de contributeur·ice\ncopy-button-copied = Copié\ncopy-button-copy-failed = Échec de la copie !\ncopy-button-copy = Copier\nfooter-mdn-on-github = MDN sur GitHub\nfooter-mdn-on-bluesky = MDN sur Bluesky\nfooter-mdn-on-x = MDN sur X\nfooter-mdn-on-mastodon = MDN sur Mastodon\nfooter-mdn-blog-rss-feed = Flux RSS du blog MDN\nfooter-mdn = MDN\nfooter-about = À propos\nfooter-blog = Blog\nfooter-mozilla-careers = Offres d'emploi chez Mozilla\nfooter-advertise-with-us = Faites de la publicité avec nous\nfooter-mdn-plus = MDN Plus\nfooter-product-help = Assistance produit\nfooter-contribute = Contribuer\nfooter-mdn-community = Communauté MDN\nfooter-community-resources = Ressources communautaires\nfooter-writing-guidelines = Directives de rédaction\nfooter-mdn-discord = Discord MDN\nfooter-developers = Développeur·euse·s\nfooter-web-technologies = Technologies web\nfooter-learn-web-development = Apprendre le développement web\nfooter-guides = Guides\nfooter-tutorials = Tutoriels\nfooter-glossary = Glossaire\nfooter-hacks-blog = Blog Hacks\nfooter-website-privacy-notice = Politique de confidentialité du site web\nfooter-telemetry-settings = Paramètres de télémétrie\nfooter-legal = Mentions légales\nfooter-community-participation-guidelin = Directives de participation communautaire\nfooter-mdn-logo = Logo MDN\nfooter-tagline = Votre modèle pour un internet meilleur.\nfooter-mozilla-logo = Logo Mozilla\ngeneric-toc__header = Dans cet article\nhomepage-body-featured-articles = Articles en vedette\nhomepage-body-latest-news = Dernières nouvelles\nhomepage-body-recent-contributions = Contributions récentes\nhomepage-contributor-spotlight-contributor-spotlight = Projecteur sur les contributeur·ice·s\nhomepage-contributor-spotlight-get-involved = Participez\nhomepage-search-search-the-site = Rechercher sur le site\nhomepage-search-search = Rechercher\ninteractive-example-reset = Réinitialiser\ninteractive-example-value-select = Sélectionner une valeur\ninteractive-example-the-current-value-is-not-support = La valeur actuelle n'est pas prise en charge par votre navigateur.\ninteractive-example-run-example-and-show-console-ou = Exécuter l'exemple et afficher la sortie de la console\ninteractive-example-run = Exécuter\ninteractive-example-reset-example-and-clear-console = Réinitialiser l'exemple et effacer la console\ninteractive-example-console-output = Sortie de la console\ninteractive-example-output = Sortie\nissues-table-loading-issues = chargement des problèmes…\nissues-table-title = Titre\nissues-table-repository = Dépôt\nlanguage-switcher-remember-language = Se souvenir de la langue\nlanguage-switcher-enable-this-setting-to-always-sw = Activez ce paramètre pour toujours passer à la langue actuelle lorsque disponible. (Cliquez pour en savoir plus.)\nlanguage-switcher-learn-more = En savoir plus\nlogin-button-login = Se connecter\nmodal-exit-modal = Quitter la fenêtre contextuelle\nnavigation-toggle-navigation = Basculer la navigation\nobs-about-title = À propos de l'HTTP Observatory\nobservatory-landing-read-our-faq = Lire notre FAQ\nobservatory-landing-report-feedback = Faire un retour\nobservatory-rescan-button-rescan = Re-scanner\nobservatory-rescan-button-wait-a-minute-to-rescan = Attendez une minute pour re-scanner\nobservatory-results-report-feedback = Faire un retour\nobservatory-results-faq = FAQ\nobservatory-tests-and-scores-loading-tests-and-scoring-data = Chargement des tests et des données de notation...\nobservatory-tests-and-scores-see = Voir\nobservatory-tests-and-scores-for-guidance = pour des conseils.\nobservatory-tests-and-scores-test-result = Résultat du test\nobservatory-tests-and-scores-description = Description\nobservatory-tests-and-scores-modifier = Modifier\nobservatory-tests-and-scores-failed-to-load-tests-and-scoring = Échec du chargement des tests et des données de notation. Veuillez réessayer plus tard.\nbrand-web-docs = MDN Web Docs\nblog-rss-title = Flux RSS du Blog MDN\nmeta-description = Le site MDN Web Docs fournit des informations sur les technologies Web ouvertes, y compris HTML, CSS et les API pour les sites Web et les applications Web progressives.\nlogo-alt = Logo MDN\npagination-pagination = Pagination\nplayground-do-you-really-want-to-clear-ever = Voulez-vous vraiment tout effacer ?\nplayground-do-you-really-want-to-revert-you = Voulez-vous vraiment revenir sur vos modifications ?\nplayground-playground = Terrain d'essai\nplayground-format = Format\nplayground-run = Exécuter\nplayground-share = Partager\nplayground-clear = Effacer\nplayground-reset = Réinitialiser\nplayground-seeing-something-inappropriate = Voir quelque chose d'inapproprié ?\nplayground-console = Console\nplayground-share-markdown = Partager le Markdown\nplayground-copy-markdown-to-clipboard = Copier le Markdown dans le presse-papiers\nplayground-share-data-url = Partager l'URL des données\nplayground-copy-data-url-to-clipboard = Copier l'URL des données dans le presse-papiers\nplayground-share-your-code-via-permalink = Partager votre code avec un lien permanent\nplayground-copy-to-clipboard = Copier dans le presse-papiers\nplayground-create-link = Créer un lien\nplayground-report-this-malicious-or-inappro = Signaler ce terrain d'essai partagé comme malveillant ou inapproprié.\nplayground-can-you-please-share-some-detail = Pouvez-vous partager quelques détails sur ce qui ne va pas avec ce contenu :\nplayground-cancel = Annuler\nplayground-report = Signaler\nrecently-visited-recently-visited = Récemment visité\nscrim-inline-clicking-will-load-content-from = Cliquer chargera le contenu depuis scrimba.com\nscrim-inline-toggle-fullscreen = Basculer en plein écran\nscrim-inline-open-on-scrimba = Ouvrir sur Scrimba\nscrim-inline-load-scrim-and-open-dialog = Charger le scrim et ouvrir la boîte de dialogue.\nsearch-button-search-the-site = Rechercher sur le site\nsearch-modal-loading-search-index = Chargement de l'index de recherche…\nsearch-modal-search = Rechercher\nsearch-modal-exit-search = Quitter la recherche\nsidebar-filter-filter-sidebar = Filtrer la barre latérale\nsidebar-filter-filter = Filtrer\nsidebar-filter-clear-filter-input = Effacer le filtre\nsite-search-search = Rechercher\nsite-search-previous = Précédent\nsite-search-next = Suivant\nsite-search-suggestions-text = Voulez-vous dire…\nsite-search-searching = Recherche en cours…\nsite-search-language = Langue\nsite-search-both = Les deux\nspecifications-list-this-feature-does-not-appear-to = Cette fonctionnalité ne semble pas être définie dans une spécification.\nspecifications-list-specification = Spécification\nsurvey-hide-this-survey = Masquer ce sondage\nsurvey-take-survey-opens-in-a-new-tab = Participer au sondage (s'ouvre dans un nouvel onglet)\ntoggle-sidebar-toggle-sidebar = Basculer la barre latérale\nuser-menu-ai-help = Aide IA\nuser-menu-collections = Collections\nuser-menu-updates = Mises à jour\nuser-menu-settings = Mes paramètres\nuser-menu-help = Aide\nuser-menu-feedback = Retour\nuser-menu-user = Utilisateur·ice\nwriter-open-editor-open-in-editor = Ouvrir dans l'éditeur\nwriter-toolbar-view-on-mdn = Voir sur 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;AACA;AACA,CAAC,A"}
@@ -1,2 +1,2 @@
1
- export const __rspack_esm_id="3094";export const __rspack_esm_ids=["3094"];export const __webpack_modules__={55237(e,t,s){s.r(t),s.d(t,{MDNRecordVisit:()=>MDNRecordVisit});var i=s(97825),c=s(93649);let MDNRecordVisit=class MDNRecordVisit extends i.WF{static ssr=!1;static properties={pageTitle:{type:String,attribute:"page-title"}};constructor(){super(),this.pageTitle}connectedCallback(){super.connectedCallback(),this.pageTitle&&new c.B().add(new c.E({title:this.pageTitle,path:location.pathname}))}};customElements.define("mdn-record-visit",MDNRecordVisit)}};
2
- //# sourceMappingURL=3094.58da3996c52b5264.js.map
1
+ export const __rspack_esm_id="3094";export const __rspack_esm_ids=["3094"];export const __webpack_modules__={55237(e,t,s){s.r(t),s.d(t,{MDNRecordVisit:()=>MDNRecordVisit});var i=s(97825),c=s(93649);let MDNRecordVisit=class MDNRecordVisit extends i.WF{static ssr=!1;static properties={pageTitle:{type:String,attribute:"page-title"}};constructor(){super(),this.pageTitle=void 0}connectedCallback(){super.connectedCallback(),this.pageTitle&&new c.B().add(new c.E({title:this.pageTitle,path:location.pathname}))}};customElements.define("mdn-record-visit",MDNRecordVisit)}};
2
+ //# sourceMappingURL=3094.ad202726cd671cc6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"3094.ad202726cd671cc6.js","sources":["webpack://@mdn/fred/./components/record-visit/element.js"],"sourcesContent":["import { LitElement } from \"lit\";\n\nimport {\n RecentlyVisitedPage,\n RecentlyVisitedPages,\n} from \"../recently-visited/index.js\";\n\nexport class MDNRecordVisit extends LitElement {\n static ssr = false;\n static properties = {\n pageTitle: { type: String, attribute: \"page-title\" },\n };\n\n constructor() {\n super();\n /** @type {string | undefined} */\n this.pageTitle = undefined;\n }\n\n connectedCallback() {\n super.connectedCallback();\n if (this.pageTitle) {\n const visited = new RecentlyVisitedPages();\n visited.add(\n new RecentlyVisitedPage({\n title: this.pageTitle,\n path: location.pathname,\n }),\n );\n }\n }\n}\n\ncustomElements.define(\"mdn-record-visit\", MDNRecordVisit);\n"],"names":["MDNRecordVisit","String","location","customElements"],"mappings":"sMAOO,IAAMA,eAAN,MAAMA,uBAAuB,IAAU,CAC5C,OAAO,IAAM,EAAM,AACnB,QAAO,WAAa,CAClB,UAAW,CAAE,KAAMC,OAAQ,UAAW,YAAa,CACrD,CAAE,AAEF,cAAc,CACZ,KAAK,GAEL,IAAI,CAAC,SAAS,CAAG,MACnB,CAEA,mBAAoB,CAClB,KAAK,CAAC,oBACF,IAAI,CAAC,SAAS,EAEhB,AADgB,IAAI,GAAoB,GAChC,GAAG,CACT,IAAI,GAAmB,CAAC,CACtB,MAAO,IAAI,CAAC,SAAS,CACrB,KAAMC,SAAS,QAAQ,AACzB,GAGN,CACF,EAEAC,eAAe,MAAM,CAAC,mBAAoBH,e"}
@@ -14,7 +14,7 @@ export const __rspack_esm_id="4204";export const __rspack_esm_ids=["4204"];expor
14
14
  <a href=${t.html_url} target="_blank" rel="noreferrer">
15
15
  ${t.title}
16
16
  </a>
17
- ${t.labels.map(t=>{let e="object"==typeof t&&null!==t?t.name:t;this.LABELS.includes(e)&&(0,r.qy)`<span class="label">${e}</span>`})}
17
+ ${t.labels.map(t=>{let e="object"==typeof t&&null!==t?t.name:t;return this.LABELS.includes(e)?(0,r.qy)`<span class="label">${e}</span>`:null})}
18
18
  </div>
19
19
  </td>
20
20
  <td>
@@ -31,4 +31,4 @@ export const __rspack_esm_id="4204";export const __rspack_esm_ids=["4204"];expor
31
31
  </tbody>
32
32
  </table>
33
33
  `}};customElements.define("mdn-issues-table",MDNIssuesTable)}};
34
- //# sourceMappingURL=4204.c77e84ea2f8c359a.js.map
34
+ //# sourceMappingURL=4204.082860f577e883b1.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"4204.c77e84ea2f8c359a.js","sources":["webpack://@mdn/fred/./components/issues-table/element.css","webpack://@mdn/fred/./components/issues-table/element.js"],"sourcesContent":["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\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block;margin-left:auto;margin-right:auto;margin-top:1rem;max-width:var(--max-width);padding-left:var(--gutter);padding-right:var(--gutter);width:100%}table{background:var(--community-card-bg);border:1px solid var(--community-table-border);border-collapse:initial;border-radius:.5rem;border-spacing:0;color:var(--community-text-primary);width:100%}td,th{border:none;padding:1.5rem}@media (width <= 769px){:is(th,td):last-of-type{display:none}}th{background:none;font-size:var(--font-size-large);font-weight:var(--font-weight-bold);text-align:left}@media (width <= 769px){th{display:none}}tbody tr:nth-child(odd){background:var(--community-table-row)}td>div{align-items:baseline;display:flex;flex-wrap:wrap;gap:1rem 1.5rem}a{color:var(--color-link-normal)}a:visited{color:var(--color-link-visited)}.label{background:var(--community-label-bg);border-radius:.25rem;color:var(--community-text-success);font-weight:500;padding:.5rem 1rem}`, \"\"]);\n// Exports\nexport default css([___CSS_LOADER_EXPORT___.toString()]);\n","import { LitElement, html, nothing } from \"lit\";\n\nimport { L10nMixin } from \"../../l10n/mixin.js\";\n\nimport styles from \"./element.css?lit\";\n\nexport class MDNIssuesTable extends L10nMixin(LitElement) {\n static styles = styles;\n\n static properties = {\n _issues: { state: true },\n _isLoading: { state: true },\n _error: { state: true },\n };\n\n constructor() {\n super();\n /** @type {import(\"@github\").Issues} */\n this._issues = [];\n /** @type {boolean} */\n this._isLoading = true; // Start in loading state\n /** @type {string | null} */\n this._error = null;\n /** @constant {string[]} */\n this.LABELS = [\"good first issue\", \"accepting PR\"];\n }\n\n connectedCallback() {\n super.connectedCallback();\n // Fetch issues when component is connected to the DOM.\n // static ssr = false ensures this runs client-side.\n this._fetchIssues();\n }\n\n async _fetchIssues() {\n this._isLoading = true;\n this._error = null;\n const query =\n 'is:open is:issue repo:mdn/content repo:mdn/translated-content repo:mdn/yari label:\"good first issue\",\"accepting PR\" sort:created-desc no:assignee is:public';\n const url = new URL(\"https://api.github.com/search/issues\");\n url.searchParams.append(\"per_page\", \"5\");\n url.searchParams.append(\"q\", query);\n\n try {\n const res = await fetch(url.toString());\n if (!res.ok) {\n throw new Error(`GitHub API Error: ${res.status} ${res.statusText}`);\n }\n const data = await res.json();\n this._issues = data.items;\n } catch (error) {\n console.error(\"Failed to fetch GitHub issues:\", error);\n // @ts-expect-error\n this._error = error.toString();\n this._issues = []; // Set to empty array on error to prevent issues with map\n } finally {\n this._isLoading = false;\n }\n }\n\n render() {\n if (this._isLoading) {\n return html`${this.l10n(\"issues-table-loading-issues\")`loading issues…`}`;\n }\n if (this._error) {\n return html`${this._error}`;\n }\n if (this._issues.length === 0) {\n return nothing;\n }\n\n return html`\n <table>\n <thead>\n <tr>\n <th>${this.l10n(\"issues-table-title\")`Title`}</th>\n <th>${this.l10n(\"issues-table-repository\")`Repository`}</th>\n </tr>\n </thead>\n <tbody>\n ${this._issues.map(\n (issue) => html`\n <tr>\n <td>\n <div>\n <a href=${issue.html_url} target=\"_blank\" rel=\"noreferrer\">\n ${issue.title}\n </a>\n ${issue.labels.map((label) => {\n const labelName =\n typeof label === \"object\" && label !== null\n ? label.name\n : label;\n this.LABELS.includes(labelName)\n ? html`<span class=\"label\">${labelName}</span>`\n : null;\n })}\n </div>\n </td>\n <td>\n <a\n href=${issue.repository_url.replace(\n \"https://api.github.com/repos/\",\n \"https://github.com/\",\n )}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n ${issue.repository_url.replace(\n \"https://api.github.com/repos/\",\n \"\",\n )}\n </a>\n </td>\n </tr>\n `,\n )}\n </tbody>\n </table>\n `;\n }\n}\n\ncustomElements.define(\"mdn-issues-table\", MDNIssuesTable);\n"],"names":["MDNIssuesTable","URL","fetch","Error","console","customElements"],"mappings":"yLAII,EAA0B,A,SAA4B,KAE1D,EAAwB,IAAI,CAAC,CAAC,EAAO,EAAE,CAAE,q7BAAs7B,GAAG,EAEl+B,MAAe,SAAI,CAAC,EAAwB,QAAQ,GAAG,C,sGCFhD,IAAMA,eAAN,MAAMA,sBAAuB,QAAU,IAAU,EACtD,OAAO,OAAS,GAAM,AAAC,AAEvB,QAAO,WAAa,CAClB,QAAS,CAAE,MAAO,EAAK,EACvB,WAAY,CAAE,MAAO,EAAK,EAC1B,OAAQ,CAAE,MAAO,EAAK,CACxB,CAAE,AAEF,cAAc,CACZ,KAAK,GAEL,IAAI,CAAC,OAAO,CAAG,EAAE,CAEjB,IAAI,CAAC,UAAU,CAAG,GAElB,IAAI,CAAC,MAAM,CAAG,KAEd,IAAI,CAAC,MAAM,CAAG,CAAC,mBAAoB,eAAe,AACpD,CAEA,mBAAoB,CAClB,KAAK,CAAC,oBAGN,IAAI,CAAC,YAAY,EACnB,CAEA,MAAM,cAAe,CACnB,IAAI,CAAC,UAAU,CAAG,GAClB,IAAI,CAAC,MAAM,CAAG,KAGd,IAAM,EAAM,IAAIC,IAAI,wCACpB,EAAI,YAAY,CAAC,MAAM,CAAC,WAAY,KACpC,EAAI,YAAY,CAAC,MAAM,CAAC,IAHtB,+JAKF,GAAI,CACF,IAAM,EAAM,MAAMC,MAAM,EAAI,QAAQ,IACpC,GAAI,CAAC,EAAI,EAAE,CACT,MAAM,AAAIC,MAAM,CAAC,kBAAkB,EAAE,EAAI,MAAM,CAAC,CAAC,EAAE,EAAI,UAAU,CAAC,CAAC,EAErE,IAAM,EAAO,MAAM,EAAI,IAAI,EAC3B,KAAI,CAAC,OAAO,CAAG,EAAK,KAAK,AAC3B,CAAE,MAAO,EAAO,CACdC,QAAQ,KAAK,CAAC,iCAAkC,GAEhD,IAAI,CAAC,MAAM,CAAG,EAAM,QAAQ,GAC5B,IAAI,CAAC,OAAO,CAAG,EAAE,AACnB,QAAU,CACR,IAAI,CAAC,UAAU,CAAG,EACpB,CACF,CAEA,QAAS,QACP,AAAI,IAAI,CAAC,UAAU,CACV,QAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC,eAAe,CAAC,CAAC,CAAC,CAEvE,IAAI,CAAC,MAAM,CACN,QAAI,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAEzB,AAAwB,IAAxB,IAAI,CAAC,OAAO,CAAC,MAAM,CACd,IAAO,CAGT,QAAI,CAAC;;;;gBAIA,EAAE,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;gBACzC,EAAE,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,CAAC;;;;UAIzD,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAChB,AAAC,GAAU,QAAI,CAAC;;;;4BAIA,EAAE,EAAM,QAAQ,CAAC;sBACvB,EAAE,EAAM,KAAK,CAAC;;oBAEhB,EAAE,EAAM,MAAM,CAAC,GAAG,CAAC,AAAC,IAClB,IAAM,EACJ,AAAiB,UAAjB,OAAO,GAAsB,AAAU,OAAV,EACzB,EAAM,IAAI,CACV,CACN,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IACjB,QAAI,CAAC,oBAAoB,EAAE,EAAU,OAAO,CAAC,AAEnD,GAAG;;;;;yBAKE,EAAE,EAAM,cAAc,CAAC,OAAO,CACjC,gCACA,uBACA;;;;oBAIF,EAAE,EAAM,cAAc,CAAC,OAAO,CAC5B,gCACA,IACA;;;;YAIV,CAAC,EACD;;;IAGR,CAAC,AACH,CACF,EAEAC,eAAe,MAAM,CAAC,mBAAoBL,e"}
1
+ {"version":3,"file":"4204.082860f577e883b1.js","sources":["webpack://@mdn/fred/./components/issues-table/element.css","webpack://@mdn/fred/./components/issues-table/element.js"],"sourcesContent":["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\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block;margin-left:auto;margin-right:auto;margin-top:1rem;max-width:var(--max-width);padding-left:var(--gutter);padding-right:var(--gutter);width:100%}table{background:var(--community-card-bg);border:1px solid var(--community-table-border);border-collapse:initial;border-radius:.5rem;border-spacing:0;color:var(--community-text-primary);width:100%}td,th{border:none;padding:1.5rem}@media (width <= 769px){:is(th,td):last-of-type{display:none}}th{background:none;font-size:var(--font-size-large);font-weight:var(--font-weight-bold);text-align:left}@media (width <= 769px){th{display:none}}tbody tr:nth-child(odd){background:var(--community-table-row)}td>div{align-items:baseline;display:flex;flex-wrap:wrap;gap:1rem 1.5rem}a{color:var(--color-link-normal)}a:visited{color:var(--color-link-visited)}.label{background:var(--community-label-bg);border-radius:.25rem;color:var(--community-text-success);font-weight:500;padding:.5rem 1rem}`, \"\"]);\n// Exports\nexport default css([___CSS_LOADER_EXPORT___.toString()]);\n","import { LitElement, html, nothing } from \"lit\";\n\nimport { L10nMixin } from \"../../l10n/mixin.js\";\n\nimport styles from \"./element.css?lit\";\n\nexport class MDNIssuesTable extends L10nMixin(LitElement) {\n static styles = styles;\n\n static properties = {\n _issues: { state: true },\n _isLoading: { state: true },\n _error: { state: true },\n };\n\n constructor() {\n super();\n /** @type {import(\"@github\").Issues} */\n this._issues = [];\n /** @type {boolean} */\n this._isLoading = true; // Start in loading state\n /** @type {string | null} */\n this._error = null;\n /** @constant {string[]} */\n this.LABELS = [\"good first issue\", \"accepting PR\"];\n }\n\n connectedCallback() {\n super.connectedCallback();\n // Fetch issues when component is connected to the DOM.\n // static ssr = false ensures this runs client-side.\n this._fetchIssues();\n }\n\n async _fetchIssues() {\n this._isLoading = true;\n this._error = null;\n const query =\n 'is:open is:issue repo:mdn/content repo:mdn/translated-content repo:mdn/yari label:\"good first issue\",\"accepting PR\" sort:created-desc no:assignee is:public';\n const url = new URL(\"https://api.github.com/search/issues\");\n url.searchParams.append(\"per_page\", \"5\");\n url.searchParams.append(\"q\", query);\n\n try {\n const res = await fetch(url.toString());\n if (!res.ok) {\n throw new Error(`GitHub API Error: ${res.status} ${res.statusText}`);\n }\n const data = await res.json();\n this._issues = data.items;\n } catch (error) {\n console.error(\"Failed to fetch GitHub issues:\", error);\n // @ts-expect-error\n this._error = error.toString();\n this._issues = []; // Set to empty array on error to prevent issues with map\n } finally {\n this._isLoading = false;\n }\n }\n\n render() {\n if (this._isLoading) {\n return html`${this.l10n(\"issues-table-loading-issues\")`loading issues…`}`;\n }\n if (this._error) {\n return html`${this._error}`;\n }\n if (this._issues.length === 0) {\n return nothing;\n }\n\n return html`\n <table>\n <thead>\n <tr>\n <th>${this.l10n(\"issues-table-title\")`Title`}</th>\n <th>${this.l10n(\"issues-table-repository\")`Repository`}</th>\n </tr>\n </thead>\n <tbody>\n ${this._issues.map(\n (issue) => html`\n <tr>\n <td>\n <div>\n <a href=${issue.html_url} target=\"_blank\" rel=\"noreferrer\">\n ${issue.title}\n </a>\n ${issue.labels.map((label) => {\n const labelName =\n typeof label === \"object\" && label !== null\n ? label.name\n : label;\n return this.LABELS.includes(labelName)\n ? html`<span class=\"label\">${labelName}</span>`\n : null;\n })}\n </div>\n </td>\n <td>\n <a\n href=${issue.repository_url.replace(\n \"https://api.github.com/repos/\",\n \"https://github.com/\",\n )}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n ${issue.repository_url.replace(\n \"https://api.github.com/repos/\",\n \"\",\n )}\n </a>\n </td>\n </tr>\n `,\n )}\n </tbody>\n </table>\n `;\n }\n}\n\ncustomElements.define(\"mdn-issues-table\", MDNIssuesTable);\n"],"names":["MDNIssuesTable","URL","fetch","Error","console","customElements"],"mappings":"yLAII,EAA0B,A,SAA4B,KAE1D,EAAwB,IAAI,CAAC,CAAC,EAAO,EAAE,CAAE,q7BAAs7B,GAAG,EAEl+B,MAAe,SAAI,CAAC,EAAwB,QAAQ,GAAG,C,sGCFhD,IAAMA,eAAN,MAAMA,sBAAuB,QAAU,IAAU,EACtD,OAAO,OAAS,GAAM,AAAC,AAEvB,QAAO,WAAa,CAClB,QAAS,CAAE,MAAO,EAAK,EACvB,WAAY,CAAE,MAAO,EAAK,EAC1B,OAAQ,CAAE,MAAO,EAAK,CACxB,CAAE,AAEF,cAAc,CACZ,KAAK,GAEL,IAAI,CAAC,OAAO,CAAG,EAAE,CAEjB,IAAI,CAAC,UAAU,CAAG,GAElB,IAAI,CAAC,MAAM,CAAG,KAEd,IAAI,CAAC,MAAM,CAAG,CAAC,mBAAoB,eAAe,AACpD,CAEA,mBAAoB,CAClB,KAAK,CAAC,oBAGN,IAAI,CAAC,YAAY,EACnB,CAEA,MAAM,cAAe,CACnB,IAAI,CAAC,UAAU,CAAG,GAClB,IAAI,CAAC,MAAM,CAAG,KAGd,IAAM,EAAM,IAAIC,IAAI,wCACpB,EAAI,YAAY,CAAC,MAAM,CAAC,WAAY,KACpC,EAAI,YAAY,CAAC,MAAM,CAAC,IAHtB,+JAKF,GAAI,CACF,IAAM,EAAM,MAAMC,MAAM,EAAI,QAAQ,IACpC,GAAI,CAAC,EAAI,EAAE,CACT,MAAM,AAAIC,MAAM,CAAC,kBAAkB,EAAE,EAAI,MAAM,CAAC,CAAC,EAAE,EAAI,UAAU,CAAC,CAAC,EAErE,IAAM,EAAO,MAAM,EAAI,IAAI,EAC3B,KAAI,CAAC,OAAO,CAAG,EAAK,KAAK,AAC3B,CAAE,MAAO,EAAO,CACdC,QAAQ,KAAK,CAAC,iCAAkC,GAEhD,IAAI,CAAC,MAAM,CAAG,EAAM,QAAQ,GAC5B,IAAI,CAAC,OAAO,CAAG,EAAE,AACnB,QAAU,CACR,IAAI,CAAC,UAAU,CAAG,EACpB,CACF,CAEA,QAAS,QACP,AAAI,IAAI,CAAC,UAAU,CACV,QAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC,eAAe,CAAC,CAAC,CAAC,CAEvE,IAAI,CAAC,MAAM,CACN,QAAI,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAEzB,AAAwB,IAAxB,IAAI,CAAC,OAAO,CAAC,MAAM,CACd,IAAO,CAGT,QAAI,CAAC;;;;gBAIA,EAAE,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;gBACzC,EAAE,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,CAAC;;;;UAIzD,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAChB,AAAC,GAAU,QAAI,CAAC;;;;4BAIA,EAAE,EAAM,QAAQ,CAAC;sBACvB,EAAE,EAAM,KAAK,CAAC;;oBAEhB,EAAE,EAAM,MAAM,CAAC,GAAG,CAAC,AAAC,IAClB,IAAM,EACJ,AAAiB,UAAjB,OAAO,GAAsB,AAAU,OAAV,EACzB,EAAM,IAAI,CACV,EACN,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GACxB,QAAI,CAAC,oBAAoB,EAAE,EAAU,OAAO,CAAC,CAC7C,IACN,GAAG;;;;;yBAKE,EAAE,EAAM,cAAc,CAAC,OAAO,CACjC,gCACA,uBACA;;;;oBAIF,EAAE,EAAM,cAAc,CAAC,OAAO,CAC5B,gCACA,IACA;;;;YAIV,CAAC,EACD;;;IAGR,CAAC,AACH,CACF,EAEAC,eAAe,MAAM,CAAC,mBAAoBL,e"}
@@ -1,8 +1,8 @@
1
- /*! For license information please see 5330.8d5173f308b639bc.js.LICENSE.txt */
2
- export const __rspack_esm_id="5330";export const __rspack_esm_ids=["5330"];export const __webpack_modules__={78458(e,t,s){s.d(t,{A:()=>h});var i=s(97825),l=s(31601),n=s.n(l),r=s(76314),a=s.n(r),c=s(39807),d=s(10576),o=a()(n());o.i(c.A),o.i(d.A),o.push([e.id,".code-example .example-header{justify-content:end;padding-right:.5rem}@media print{.example-header,mdn-button{display:none!important}}",""]);let h=(0,i.AH)([o.toString()])},47849(e,t,s){s.r(t),s.d(t,{MDNLiveSampleResult:()=>MDNLiveSampleResult});var i=s(97825),l=s(5350),n=s(70693),r=s(78458);s(63657),s(17398);let MDNLiveSampleResult=class MDNLiveSampleResult extends(0,n.J)(i.WF){static styles=r.A;static properties={liveId:{attribute:"live-id"},code:{type:Object},allowed:{},sandbox:{},srcPrefix:{attribute:"src-prefix"},height:{},breakoutLink:{state:!0}};constructor(){super(),this.liveId=void 0,this.code=void 0,this.allow=void 0,this.sandbox=void 0,this.srcPrefix=void 0,this.height=void 0,this.breakoutLink=void 0}_openFullscreen(e=!1){this._runnerSrc?e||this._fullscreenReplace?location.replace(this._runnerSrc):location.href=this._runnerSrc:(this._fullscreenPending=!0,e&&(this._fullscreenReplace=!0))}_fullscreenClick(e){this.liveId&&e.target instanceof HTMLAnchorElement&&e.target.hash===`#livesample_fullscreen=${this.liveId}`&&(e.preventDefault(),this._openFullscreen())}_runnerSrcUpdated({detail:e}){this._runnerSrc=e,this._fullscreenPending&&this._openFullscreen();let t=new URL("/en-US/play",location.href);t.search=new URL(this._runnerSrc).search,this.srcPrefix&&t.searchParams.append("srcPrefix",this.srcPrefix),this.breakoutLink=t.href}connectedCallback(){super.connectedCallback(),this._fullscreenClick=this._fullscreenClick.bind(this),document.addEventListener("click",this._fullscreenClick),location.hash===`#livesample_fullscreen=${this.liveId}`&&this._openFullscreen()}render(){return(0,i.qy)`
1
+ /*! For license information please see 5330.0fa70a944297da04.js.LICENSE.txt */
2
+ export const __rspack_esm_id="5330";export const __rspack_esm_ids=["5330"];export const __webpack_modules__={78458(e,t,i){i.d(t,{A:()=>h});var s=i(97825),l=i(31601),n=i.n(l),r=i(76314),a=i.n(r),c=i(39807),o=i(10576),d=a()(n());d.i(c.A),d.i(o.A),d.push([e.id,".code-example .example-header{justify-content:end;padding-right:.5rem}@media print{.example-header,mdn-button{display:none!important}}",""]);let h=(0,s.AH)([d.toString()])},47849(e,t,i){i.r(t),i.d(t,{MDNLiveSampleResult:()=>MDNLiveSampleResult});var s=i(97825),l=i(5350),n=i(70693),r=i(78458);i(63657),i(17398);let MDNLiveSampleResult=class MDNLiveSampleResult extends(0,n.J)(s.WF){static styles=r.A;static properties={liveId:{attribute:"live-id"},code:{type:Object},allowed:{},sandbox:{},srcPrefix:{attribute:"src-prefix"},height:{},breakoutLink:{state:!0}};constructor(){super(),this.liveId=void 0,this.code=void 0,this.allow=void 0,this.sandbox=void 0,this.srcPrefix=void 0,this.height=void 0,this.breakoutLink=void 0}_openFullscreen(e=!1){this._runnerSrc?e||this._fullscreenReplace?location.replace(this._runnerSrc):location.href=this._runnerSrc:(this._fullscreenPending=!0,e&&(this._fullscreenReplace=!0))}_fullscreenClick(e){this.liveId&&e.target instanceof HTMLAnchorElement&&e.target.hash===`#livesample_fullscreen=${this.liveId}`&&(e.preventDefault(),this._openFullscreen())}_runnerSrcUpdated({detail:e}){this._runnerSrc=e,this._fullscreenPending&&this._openFullscreen();let t=new URL("/en-US/play",location.href);t.search=new URL(this._runnerSrc).search,this.srcPrefix&&t.searchParams.append("srcPrefix",this.srcPrefix),this.breakoutLink=t.href}connectedCallback(){super.connectedCallback(),this._fullscreenClick=this._fullscreenClick.bind(this),document.addEventListener("click",this._fullscreenClick),location.hash===`#livesample_fullscreen=${this.liveId}`&&this._openFullscreen()}render(){return(0,s.qy)`
3
3
  <div class="code-example">
4
4
  <div class="example-header">
5
- ${this.breakoutLink?(0,i.qy)`<mdn-button
5
+ ${this.breakoutLink?(0,s.qy)`<mdn-button
6
6
  variant="secondary"
7
7
  href=${this.breakoutLink}
8
8
  target="_blank"
@@ -10,17 +10,17 @@ export const __rspack_esm_id="5330";export const __rspack_esm_ids=["5330"];expor
10
10
  aria-label=${this.l10n("example-play-button-title")}
11
11
  title=${this.l10n("example-play-button-title")}
12
12
  >${this.l10n("example-play-button-label")}</mdn-button
13
- >`:i.s6}
13
+ >`:s.s6}
14
14
  </div>
15
15
  <mdn-play-runner
16
16
  @mdn-play-runner-src=${this._runnerSrcUpdated}
17
17
  .code=${this.code}
18
18
  .allow=${this.allow}
19
- .sandbox=${[...new Set(["allow-modals","allow-downloads",...this.sandbox?.split(" ")||[]])].join(" ")}
19
+ .sandbox=${[...new Set(["allow-modals","allow-downloads","allow-fullscreen","allow-orientation-lock",...this.sandbox?.split(" ")||[]])].join(" ")}
20
20
  .srcPrefix=${this.srcPrefix}
21
21
  permalink
22
22
  style=${(0,l.W)({height:this.height?`${this.height}${/[0-9]$/.test(this.height)?"px":""}`:void 0})}
23
23
  ></mdn-play-runner>
24
24
  </div>
25
- `}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener("click",this._fullscreenClick)}};customElements.define("mdn-live-sample-result",MDNLiveSampleResult)},13121(e,t,s){s.d(t,{J:()=>l});var i=s(36752);let l=e=>e??i.s6},19713(e,t,s){s.d(t,{D:()=>r});var i=s(36752),l=s(7804),n=s(18504);let r=(0,l.u$)(class extends l.WL{constructor(){super(...arguments),this.key=i.s6}render(e,t){return this.key=e,t}update(e,[t,s]){return t!==this.key&&((0,n.mY)(e),this.key=t),s}})}};
26
- //# sourceMappingURL=5330.8d5173f308b639bc.js.map
25
+ `}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener("click",this._fullscreenClick)}};customElements.define("mdn-live-sample-result",MDNLiveSampleResult)},13121(e,t,i){i.d(t,{J:()=>l});var s=i(36752);let l=e=>e??s.s6},19713(e,t,i){i.d(t,{D:()=>r});var s=i(36752),l=i(7804),n=i(18504);let r=(0,l.u$)(class extends l.WL{constructor(){super(...arguments),this.key=s.s6}render(e,t){return this.key=e,t}update(e,[t,i]){return t!==this.key&&((0,n.mY)(e),this.key=t),i}})}};
26
+ //# sourceMappingURL=5330.0fa70a944297da04.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"5330.8d5173f308b639bc.js","sources":["webpack://@mdn/fred/./components/live-sample-result/element.css","webpack://@mdn/fred/./components/live-sample-result/element.js","webpack://@mdn/fred/./node_modules/lit-html/directives/if-defined.js","webpack://@mdn/fred/./node_modules/lit-html/directives/keyed.js"],"sourcesContent":["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_AT_RULE_IMPORT_0___ from \"-!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../build/loaders/fix-light-dark.js!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!../global/global.css\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_1___ from \"-!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../build/loaders/fix-light-dark.js!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!../code-example/common.css\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_1___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.code-example .example-header{justify-content:end;padding-right:.5rem}@media print{.example-header,mdn-button{display:none!important}}`, \"\"]);\n// Exports\nexport default css([___CSS_LOADER_EXPORT___.toString()]);\n","import { LitElement, html, nothing } from \"lit\";\n\nimport { styleMap } from \"lit/directives/style-map.js\";\n\nimport { L10nMixin } from \"../../l10n/mixin.js\";\n\nimport styles from \"./element.css?lit\";\n\nimport \"../play-runner/element.js\";\nimport \"../button/element.js\";\n\nexport class MDNLiveSampleResult extends L10nMixin(LitElement) {\n static styles = styles;\n\n static properties = {\n liveId: { attribute: \"live-id\" },\n code: { type: Object },\n allowed: {},\n sandbox: {},\n srcPrefix: { attribute: \"src-prefix\" },\n height: {},\n breakoutLink: { state: true },\n };\n\n constructor() {\n super();\n /** @type {string | undefined} */\n this.liveId = undefined;\n /** @type {Record<string, string> | undefined} */\n this.code = undefined;\n /** @type {string | undefined} */\n this.allow = undefined;\n /** @type {string | undefined} */\n this.sandbox = undefined;\n /** @type {string | undefined} */\n this.srcPrefix = undefined;\n /** @type {string | undefined} */\n this.height = undefined;\n /** @type {string | undefined} */\n this.breakoutLink = undefined;\n }\n\n _openFullscreen(replace = false) {\n if (this._runnerSrc) {\n if (replace || this._fullscreenReplace) {\n location.replace(this._runnerSrc);\n } else {\n location.href = this._runnerSrc;\n }\n } else {\n this._fullscreenPending = true;\n if (replace) {\n this._fullscreenReplace = true;\n }\n }\n }\n\n /** @param {MouseEvent} event */\n _fullscreenClick(event) {\n if (\n this.liveId &&\n event.target instanceof HTMLAnchorElement &&\n event.target.hash === `#livesample_fullscreen=${this.liveId}`\n ) {\n event.preventDefault();\n this._openFullscreen();\n }\n }\n\n /** @param {CustomEvent<string>} event */\n _runnerSrcUpdated({ detail }) {\n this._runnerSrc = detail;\n if (this._fullscreenPending) {\n this._openFullscreen();\n }\n const playUrl = new URL(\"/en-US/play\", location.href);\n playUrl.search = new URL(this._runnerSrc).search;\n if (this.srcPrefix)\n playUrl.searchParams.append(\"srcPrefix\", this.srcPrefix);\n this.breakoutLink = playUrl.href;\n }\n\n connectedCallback() {\n super.connectedCallback();\n this._fullscreenClick = this._fullscreenClick.bind(this);\n document.addEventListener(\"click\", this._fullscreenClick);\n if (location.hash === `#livesample_fullscreen=${this.liveId}`) {\n this._openFullscreen();\n }\n }\n\n render() {\n return html`\n <div class=\"code-example\">\n <div class=\"example-header\">\n ${this.breakoutLink\n ? html`<mdn-button\n variant=\"secondary\"\n href=${this.breakoutLink}\n target=\"_blank\"\n rel=\"opener\"\n aria-label=${this.l10n(\"example-play-button-title\")}\n title=${this.l10n(\"example-play-button-title\")}\n >${this.l10n(\"example-play-button-label\")}</mdn-button\n >`\n : nothing}\n </div>\n <mdn-play-runner\n @mdn-play-runner-src=${this._runnerSrcUpdated}\n .code=${this.code}\n .allow=${this.allow}\n .sandbox=${[\n ...new Set([\n \"allow-modals\",\n \"allow-downloads\",\n ...(this.sandbox?.split(\" \") || []),\n ]),\n ].join(\" \")}\n .srcPrefix=${this.srcPrefix}\n permalink\n style=${styleMap({\n height: this.height\n ? `${this.height}${/[0-9]$/.test(this.height) ? \"px\" : \"\"}`\n : undefined,\n })}\n ></mdn-play-runner>\n </div>\n `;\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener(\"click\", this._fullscreenClick);\n }\n}\n\ncustomElements.define(\"mdn-live-sample-result\", MDNLiveSampleResult);\n","import{nothing as t}from\"../lit-html.js\";\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o=o=>o??t;export{o as ifDefined};\n//# sourceMappingURL=if-defined.js.map\n","import{nothing as r}from\"../lit-html.js\";import{directive as t,Directive as e}from\"../directive.js\";import{setCommittedValue as s}from\"../directive-helpers.js\";\n/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const i=t(class extends e{constructor(){super(...arguments),this.key=r}render(r,t){return this.key=r,t}update(r,[t,e]){return t!==this.key&&(s(r),this.key=t),e}});export{i as keyed};\n//# sourceMappingURL=keyed.js.map\n"],"names":["MDNLiveSampleResult","Object","location","e","HTMLAnchorElement","URL","document","Set","customElements","arguments","t"],"mappings":"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"}
1
+ {"version":3,"file":"5330.0fa70a944297da04.js","sources":["webpack://@mdn/fred/./components/live-sample-result/element.css","webpack://@mdn/fred/./components/live-sample-result/element.js","webpack://@mdn/fred/./node_modules/lit-html/directives/if-defined.js","webpack://@mdn/fred/./node_modules/lit-html/directives/keyed.js"],"sourcesContent":["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_AT_RULE_IMPORT_0___ from \"-!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../build/loaders/fix-light-dark.js!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!../global/global.css\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_1___ from \"-!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../build/loaders/fix-light-dark.js!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!../code-example/common.css\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_1___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.code-example .example-header{justify-content:end;padding-right:.5rem}@media print{.example-header,mdn-button{display:none!important}}`, \"\"]);\n// Exports\nexport default css([___CSS_LOADER_EXPORT___.toString()]);\n","import { LitElement, html, nothing } from \"lit\";\n\nimport { styleMap } from \"lit/directives/style-map.js\";\n\nimport { L10nMixin } from \"../../l10n/mixin.js\";\n\nimport styles from \"./element.css?lit\";\n\nimport \"../play-runner/element.js\";\nimport \"../button/element.js\";\n\nexport class MDNLiveSampleResult extends L10nMixin(LitElement) {\n static styles = styles;\n\n static properties = {\n liveId: { attribute: \"live-id\" },\n code: { type: Object },\n allowed: {},\n sandbox: {},\n srcPrefix: { attribute: \"src-prefix\" },\n height: {},\n breakoutLink: { state: true },\n };\n\n constructor() {\n super();\n /** @type {string | undefined} */\n this.liveId = undefined;\n /** @type {Record<string, string> | undefined} */\n this.code = undefined;\n /** @type {string | undefined} */\n this.allow = undefined;\n /** @type {string | undefined} */\n this.sandbox = undefined;\n /** @type {string | undefined} */\n this.srcPrefix = undefined;\n /** @type {string | undefined} */\n this.height = undefined;\n /** @type {string | undefined} */\n this.breakoutLink = undefined;\n }\n\n _openFullscreen(replace = false) {\n if (this._runnerSrc) {\n if (replace || this._fullscreenReplace) {\n location.replace(this._runnerSrc);\n } else {\n location.href = this._runnerSrc;\n }\n } else {\n this._fullscreenPending = true;\n if (replace) {\n this._fullscreenReplace = true;\n }\n }\n }\n\n /** @param {MouseEvent} event */\n _fullscreenClick(event) {\n if (\n this.liveId &&\n event.target instanceof HTMLAnchorElement &&\n event.target.hash === `#livesample_fullscreen=${this.liveId}`\n ) {\n event.preventDefault();\n this._openFullscreen();\n }\n }\n\n /** @param {CustomEvent<string>} event */\n _runnerSrcUpdated({ detail }) {\n this._runnerSrc = detail;\n if (this._fullscreenPending) {\n this._openFullscreen();\n }\n const playUrl = new URL(\"/en-US/play\", location.href);\n playUrl.search = new URL(this._runnerSrc).search;\n if (this.srcPrefix)\n playUrl.searchParams.append(\"srcPrefix\", this.srcPrefix);\n this.breakoutLink = playUrl.href;\n }\n\n connectedCallback() {\n super.connectedCallback();\n this._fullscreenClick = this._fullscreenClick.bind(this);\n document.addEventListener(\"click\", this._fullscreenClick);\n if (location.hash === `#livesample_fullscreen=${this.liveId}`) {\n this._openFullscreen();\n }\n }\n\n render() {\n return html`\n <div class=\"code-example\">\n <div class=\"example-header\">\n ${this.breakoutLink\n ? html`<mdn-button\n variant=\"secondary\"\n href=${this.breakoutLink}\n target=\"_blank\"\n rel=\"opener\"\n aria-label=${this.l10n(\"example-play-button-title\")}\n title=${this.l10n(\"example-play-button-title\")}\n >${this.l10n(\"example-play-button-label\")}</mdn-button\n >`\n : nothing}\n </div>\n <mdn-play-runner\n @mdn-play-runner-src=${this._runnerSrcUpdated}\n .code=${this.code}\n .allow=${this.allow}\n .sandbox=${[\n ...new Set([\n \"allow-modals\",\n \"allow-downloads\",\n \"allow-fullscreen\",\n \"allow-orientation-lock\",\n ...(this.sandbox?.split(\" \") || []),\n ]),\n ].join(\" \")}\n .srcPrefix=${this.srcPrefix}\n permalink\n style=${styleMap({\n height: this.height\n ? `${this.height}${/[0-9]$/.test(this.height) ? \"px\" : \"\"}`\n : undefined,\n })}\n ></mdn-play-runner>\n </div>\n `;\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener(\"click\", this._fullscreenClick);\n }\n}\n\ncustomElements.define(\"mdn-live-sample-result\", MDNLiveSampleResult);\n","import{nothing as t}from\"../lit-html.js\";\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o=o=>o??t;export{o as ifDefined};\n//# sourceMappingURL=if-defined.js.map\n","import{nothing as r}from\"../lit-html.js\";import{directive as t,Directive as e}from\"../directive.js\";import{setCommittedValue as s}from\"../directive-helpers.js\";\n/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const i=t(class extends e{constructor(){super(...arguments),this.key=r}render(r,t){return this.key=r,t}update(r,[t,e]){return t!==this.key&&(s(r),this.key=t),e}});export{i as keyed};\n//# sourceMappingURL=keyed.js.map\n"],"names":["MDNLiveSampleResult","Object","location","e","HTMLAnchorElement","URL","document","Set","customElements","arguments","t"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export const __rspack_esm_id="5649";export const __rspack_esm_ids=["5649"];export const __webpack_modules__={30776(e,i,t){t.d(i,{N:()=>c});var s=t(31011),n=t(97825),r=t(52258),o=t(23727);let h={threshold:.5};let ViewedController=class ViewedController{#e;constructor(e,i,t,s=h){this.#e=e,this.#e.addController(this),this.target=i,this.callback=t,this.intersectionObserverOptions=s,this._visible=!globalThis.document?.hidden,this._timer=null,this._hasViewed=!1,this._onVisibilityChange=this.onVisibilityChange.bind(this)}hostConnected(){document.addEventListener("visibilitychange",this._onVisibilityChange)}hostDisconnected(){this.disconnectObserver(),document.removeEventListener("visibilitychange",this._onVisibilityChange)}hostUpdated(){let e=this.target.value;e&&(this._observer=new IntersectionObserver(e=>{for(let i of e)this._checkAndSetTimer(i.isIntersecting)},this.intersectionObserverOptions),this._observer.observe(e))}disconnectObserver(){this._observer&&this._observer.disconnect()}onVisibilityChange(){this._visible=!document.hidden,this._checkAndSetTimer()}_checkAndSetTimer(e=!1){!this._hasViewed&&this._visible&&e?null===this._timer&&(this._timer=globalThis.setTimeout(()=>{this._hasViewed=!0,this.callback()},1e3)):null!==this._timer&&(clearTimeout(this._timer),this._timer=null)}};var l=t(20126);t(13755);let c=e=>class extends e{static ssr=!1;_placementRef=(0,r._)();_dataTask=new s.YZ(this,{task:async()=>await (0,l.M)()});constructor(...e){super(...e),this._viewedUrl=void 0,this._version=void 0,this.viewed=new ViewedController(this,this._placementRef,()=>{if(this._viewedUrl){navigator.sendBeacon?.(this.viewedLink(this._viewedUrl,this._version));let e=this._placementRef.value?.dataset.type??"unknown";(0,o.w)(`pong: pong->viewed ${e}`)}})}connectedCallback(){super.connectedCallback(),this._dataTask.run()}renderComplete(e){throw Error("Must be implemented by subclass")}renderFallback(){return n.s6}renderInitial(){return n.s6}render(){return this._dataTask.render({initial:()=>this.renderInitial(),pending:()=>this.renderInitial(),error:()=>this.renderFallback(),complete:e=>this.renderComplete(e)})}clickLink(e,i){return`/pong/click?code=${encodeURIComponent(e)}&version=${i}`}imgLink(e){return`/pimg/${encodeURIComponent(e||"")}`}viewedLink(e,i){return`/pong/viewed?code=${encodeURIComponent(e)}${i?`&version=${i}`:""}`}}}};
2
+ //# sourceMappingURL=5649.00f25ce181894101.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"5649.00f25ce181894101.js","sources":["webpack://@mdn/fred/./components/viewed-controller/viewed-controller.js","webpack://@mdn/fred/./components/placement/mixin.js"],"sourcesContent":["/**\n * @import { LitElement } from \"lit\";\n * @import { Ref } from \"lit/directives/ref.js\";\n */\n\nconst OPTIONS = {\n threshold: 0.5,\n};\n\nexport class ViewedController {\n #host;\n\n /**\n * @param {LitElement} host\n * @param {Ref<Element>} target\n * @param {Function} callback\n * @param {IntersectionObserverInit} [intersectionObserverOptions]\n */\n constructor(host, target, callback, intersectionObserverOptions = OPTIONS) {\n this.#host = host;\n this.#host.addController(this);\n\n this.target = target;\n this.callback = callback;\n this.intersectionObserverOptions = intersectionObserverOptions;\n\n this._visible = !globalThis.document?.hidden;\n this._timer = null;\n this._hasViewed = false;\n this._onVisibilityChange = this.onVisibilityChange.bind(this);\n }\n\n hostConnected() {\n document.addEventListener(\"visibilitychange\", this._onVisibilityChange);\n }\n\n hostDisconnected() {\n this.disconnectObserver();\n document.removeEventListener(\"visibilitychange\", this._onVisibilityChange);\n }\n\n hostUpdated() {\n const target = this.target.value;\n if (target) {\n this._observer = new IntersectionObserver((entries) => {\n for (const entry of entries) {\n this._checkAndSetTimer(entry.isIntersecting);\n }\n }, this.intersectionObserverOptions);\n this._observer.observe(target);\n }\n }\n\n disconnectObserver() {\n if (this._observer) {\n this._observer.disconnect();\n }\n }\n\n onVisibilityChange() {\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","import { Task } from \"@lit/task\";\nimport { nothing } from \"lit\";\nimport { createRef } from \"lit/directives/ref.js\";\n\nimport { gleanClick } from \"../../utils/glean.js\";\nimport { ViewedController } from \"../viewed-controller/viewed-controller.js\";\n\nimport { globalPlacementContext } from \"./context.js\";\n\nimport \"../placement-no/element.js\";\n\n/**\n * @import { LitElement, TemplateResult } from \"lit\";\n * @import * as Placements from \"./types.js\";\n */\n\n/**\n * @template {new (...args: any[]) => LitElement} TBase\n * @param {TBase} Base\n */\nexport const PlacementMixin = (Base) =>\n class PlacementElement extends Base {\n static ssr = false;\n /** @type {import('lit/directives/ref.js').Ref<HTMLElement>} */\n _placementRef = createRef();\n\n _dataTask = new Task(this, {\n task: async () => {\n return await globalPlacementContext();\n },\n });\n\n /**\n *\n * @param {...any} args\n */\n constructor(...args) {\n super(...args);\n /**\n * @type {string | undefined}\n */\n this._viewedUrl = undefined;\n /**\n * @type {number | undefined}\n */\n this._version = undefined;\n /** @type {ViewedController} */\n this.viewed = new ViewedController(this, this._placementRef, () => {\n if (this._viewedUrl) {\n navigator.sendBeacon?.(\n this.viewedLink(this._viewedUrl, this._version),\n );\n const type = this._placementRef.value?.dataset.type ?? \"unknown\";\n gleanClick(`pong: pong->viewed ${type}`);\n }\n });\n }\n\n connectedCallback() {\n super.connectedCallback();\n this._dataTask.run();\n }\n\n /**\n *\n * @abstract\n * @param {Placements.PlacementContextData} _placementContext\n */\n renderComplete(_placementContext) {\n throw new Error(\"Must be implemented by subclass\");\n }\n\n /**\n *\n * @abstract\n * @returns {TemplateResult | nothing}\n */\n renderFallback() {\n // default: nothing, subclasses can override a default\n return nothing;\n }\n\n /**\n *\n * @returns {TemplateResult | symbol}\n */\n renderInitial() {\n return nothing;\n }\n\n render() {\n return this._dataTask.render({\n initial: () => this.renderInitial(),\n pending: () => this.renderInitial(),\n error: () => this.renderFallback(),\n complete: (placementContext) => {\n return this.renderComplete(placementContext);\n },\n });\n }\n\n /**\n *\n * @param {string} click\n * @param {number |undefined } version\n * @returns\n */\n clickLink(click, version) {\n return `/pong/click?code=${encodeURIComponent(click)}&version=${version}`;\n }\n\n /**\n *\n * @param {string | undefined} image\n * @returns\n */\n imgLink(image) {\n return `/pimg/${encodeURIComponent(image || \"\")}`;\n }\n\n /**\n *\n * @param {string} viewed\n * @param {number | undefined} version\n * @returns\n */\n viewedLink(viewed, version) {\n return `/pong/viewed?code=${encodeURIComponent(viewed)}${\n version ? `&version=${version}` : \"\"\n }`;\n }\n };\n"],"names":["ViewedController","globalThis","document","IntersectionObserver","e","clearTimeout","navigator","Error","n","encodeURIComponent"],"mappings":"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"}