@mdn/fred 0.1.0 → 0.2.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 (640) hide show
  1. package/CHANGELOG.md +100 -0
  2. package/build/render.js +3 -3
  3. package/build/server-worker.js +2 -2
  4. package/build/types.d.ts +2 -2
  5. package/components/a11y-menu/server.css +1 -1
  6. package/components/about-tabs/element.css +3 -1
  7. package/components/about-tabs/element.js +8 -0
  8. package/components/advertising/server.css +1 -1
  9. package/components/article-footer/server.css +0 -4
  10. package/components/article-footer/server.js +13 -16
  11. package/components/baseline-indicator/server.css +5 -6
  12. package/components/baseline-indicator/server.js +1 -6
  13. package/components/blog-index/server.css +2 -2
  14. package/components/blog-post/server.css +3 -3
  15. package/components/breadcrumbs-bar/server.js +26 -7
  16. package/components/button/pure.js +6 -3
  17. package/components/code-example/common.css +47 -3
  18. package/components/code-example/element.js +4 -5
  19. package/components/code-example/prism.css +62 -59
  20. package/components/color/area.css +11 -0
  21. package/components/color/border.css +1 -1
  22. package/components/color/global.css +5 -4
  23. package/components/color-theme/element.css +4 -0
  24. package/components/color-theme/element.js +19 -30
  25. package/components/compat-table/index-common.css +4 -2
  26. package/components/content-section/server.css +137 -23
  27. package/components/contributor-spotlight/server.css +4 -4
  28. package/components/curriculum/assets/curriculum-landing-top.svg +1 -1
  29. package/components/curriculum/layout.css +81 -13
  30. package/components/curriculum/module-list.css +5 -5
  31. package/components/curriculum/module.css +3 -3
  32. package/components/curriculum/shared.css +14 -47
  33. package/components/curriculum/sidebar.css +66 -294
  34. package/components/curriculum/toc.css +9 -23
  35. package/components/curriculum/utils.js +47 -58
  36. package/components/curriculum/vars.css +68 -39
  37. package/components/curriculum-about/server.css +17 -3
  38. package/components/curriculum-about/server.js +18 -15
  39. package/components/curriculum-default/server.css +11 -0
  40. package/components/curriculum-default/server.js +17 -14
  41. package/components/curriculum-landing/server.css +7 -7
  42. package/components/curriculum-module/server.css +75 -73
  43. package/components/curriculum-module/server.js +19 -17
  44. package/components/curriculum-overview/server.css +11 -0
  45. package/components/curriculum-overview/server.js +60 -24
  46. package/components/dropdown/element.js +3 -1
  47. package/components/featured-articles/server.css +1 -1
  48. package/components/font/README.md +11 -0
  49. package/components/font/fonts/jetbrains-mono-cyrillic.woff2 +0 -0
  50. package/components/font/fonts/jetbrains-mono-italic-cyrillic.woff2 +0 -0
  51. package/components/font/fonts/jetbrains-mono-italic-latin-extended.woff2 +0 -0
  52. package/components/font/fonts/jetbrains-mono-italic-latin.woff2 +0 -0
  53. package/components/font/fonts/jetbrains-mono-latin-extended.woff2 +0 -0
  54. package/components/font/fonts/jetbrains-mono-latin.woff2 +0 -0
  55. package/components/font/fonts/jetbrains-mono-nl.patch +4758 -0
  56. package/components/font/fonts/source/jetbrains-mono-italic.ttf +0 -0
  57. package/components/font/fonts/source/jetbrains-mono.ttf +0 -0
  58. package/components/font/global.css +3 -0
  59. package/components/font/inter.css +6 -0
  60. package/components/footer/server.css +20 -3
  61. package/components/footer/server.js +3 -0
  62. package/components/generic-about/server.css +16 -14
  63. package/components/generic-community/server.css +16 -16
  64. package/components/generic-community/server.js +11 -4
  65. package/components/generic-content/server.css +1 -1
  66. package/components/generic-sidebar/server.css +2 -2
  67. package/components/generic-sidebar/server.js +14 -5
  68. package/components/generic-toc/server.css +2 -2
  69. package/components/homepage-search/element.css +14 -17
  70. package/components/html/global.css +3 -0
  71. package/components/icon/chart-no-axes-combined.svg +1 -0
  72. package/components/icon/circle-play.svg +1 -0
  73. package/components/icon/log-in.svg +1 -0
  74. package/components/icon/mdn-m.svg +1 -0
  75. package/components/icon/shield-check.svg +1 -0
  76. package/components/icon/users.svg +1 -0
  77. package/components/interactive-example/element.css +3 -1
  78. package/components/issues-table/element.css +2 -2
  79. package/components/ix-tab/element.css +1 -1
  80. package/components/language-switcher/element.css +2 -1
  81. package/components/language-switcher/element.js +1 -0
  82. package/components/latest-news/server.css +1 -1
  83. package/components/left-sidebar/server.css +12 -15
  84. package/components/live-sample-result/element.css +1 -0
  85. package/components/live-sample-result/element.js +10 -2
  86. package/components/logo/server.css +5 -0
  87. package/components/mandala/server.css +2 -2
  88. package/components/media/index.css +3 -0
  89. package/components/menu/base.css +40 -11
  90. package/components/menu/desktop.css +1 -1
  91. package/components/menu/mobile.css +1 -1
  92. package/components/menu/server.js +34 -45
  93. package/components/modal/element.js +1 -1
  94. package/components/navigation/base.css +0 -8
  95. package/components/navigation/desktop.css +22 -5
  96. package/components/navigation/mobile.css +25 -6
  97. package/components/navigation/server.js +5 -2
  98. package/components/not-found/element.css +1 -0
  99. package/components/not-found/element.js +1 -1
  100. package/components/observatory/colors.css +64 -0
  101. package/components/observatory/common.css +5 -0
  102. package/components/observatory-comparison-table/element.css +6 -6
  103. package/components/observatory-form/element.css +6 -11
  104. package/components/observatory-header-link/element.css +1 -9
  105. package/components/observatory-human-duration/element.css +1 -0
  106. package/components/observatory-human-duration/element.js +4 -3
  107. package/components/observatory-landing/server.css +208 -1
  108. package/components/observatory-landing/server.js +76 -66
  109. package/components/observatory-rescan-button/element.css +1 -0
  110. package/components/observatory-rescan-button/element.js +11 -3
  111. package/components/observatory-results/element.css +38 -42
  112. package/components/observatory-results/server.css +119 -1
  113. package/components/observatory-results/server.js +47 -43
  114. package/components/observatory-tests-and-scores/element.css +3 -1
  115. package/components/outer-layout/server.js +8 -2
  116. package/components/placement-sidebar/element.css +1 -1
  117. package/components/play-console/element.css +1 -1
  118. package/components/play-runner/element.css +3 -0
  119. package/components/playground/element.css +35 -9
  120. package/components/playground/element.js +63 -3
  121. package/components/prev-next/index.css +32 -3
  122. package/components/radius/global.css +6 -0
  123. package/components/reference-layout/server.css +4 -4
  124. package/components/reference-layout/server.js +6 -3
  125. package/components/reference-toc/server.css +2 -2
  126. package/components/scrim-inline/element.css +2 -2
  127. package/components/scrim-inline/global.css +1 -1
  128. package/components/search-button/element.css +7 -1
  129. package/components/search-modal/element.css +61 -27
  130. package/components/search-modal/element.js +14 -0
  131. package/components/sidebar-filter/element.css +1 -1
  132. package/components/site-search/element.css +6 -7
  133. package/components/specifications-list/index.js +18 -26
  134. package/components/switch/element.css +1 -1
  135. package/components/user-menu/base.css +0 -7
  136. package/components/user-menu/desktop.css +15 -3
  137. package/components/user-menu/element.js +10 -2
  138. package/components/user-menu/mobile.css +2 -14
  139. package/components/utils/index.js +9 -0
  140. package/components/vars/global.css +1 -1
  141. package/components/writer-open-editor/element.js +31 -0
  142. package/components/writer-toolbar/server.css +11 -0
  143. package/components/writer-toolbar/server.js +27 -0
  144. package/dist/client/{1048.7f6f1de50a1fda0d.js → 1048.9db1491a9a9f26c3.js} +2 -2
  145. package/dist/client/{1048.7f6f1de50a1fda0d.js.map → 1048.9db1491a9a9f26c3.js.map} +1 -1
  146. package/dist/client/1197.65020044d7ef7add.css +32 -0
  147. package/dist/client/1197.65020044d7ef7add.css.map +1 -0
  148. package/dist/client/1241.691b26f66d52ce68.css +2 -0
  149. package/dist/client/1241.691b26f66d52ce68.css.map +1 -0
  150. package/dist/client/{1342.b05de4cd80d4c221.js → 1342.a66390274e8adda1.js} +8 -8
  151. package/dist/client/{1342.b05de4cd80d4c221.js.map → 1342.a66390274e8adda1.js.map} +1 -1
  152. package/dist/client/1624.98ead28526f7a6a1.js +69 -0
  153. package/dist/client/{1624.5694c64f5e45232c.js.map → 1624.98ead28526f7a6a1.js.map} +1 -1
  154. package/dist/client/1739.8793c189d4f57b38.js +8 -0
  155. package/dist/client/{1739.505aa54ed62222c8.js.map → 1739.8793c189d4f57b38.js.map} +1 -1
  156. package/dist/client/{1916.bc7551ab839d52f8.js → 1916.53595bf8d5201723.js} +3 -3
  157. package/dist/client/{1916.bc7551ab839d52f8.js.map → 1916.53595bf8d5201723.js.map} +1 -1
  158. package/dist/client/2254.85c84b41fe477e9f.css +2 -0
  159. package/dist/client/2254.85c84b41fe477e9f.css.map +1 -0
  160. package/dist/client/2299.15bde599f83bc9f8.js +2 -0
  161. package/dist/client/2299.15bde599f83bc9f8.js.map +1 -0
  162. package/dist/client/{2448.92286b4e96ad1c02.js → 2448.34e8a46d8ac913b9.js} +7 -7
  163. package/dist/client/2448.34e8a46d8ac913b9.js.map +1 -0
  164. package/dist/client/{2656.0009ef5e53d43860.js → 2656.9ffeb69f976e1ada.js} +3 -3
  165. package/dist/client/{2656.0009ef5e53d43860.js.map → 2656.9ffeb69f976e1ada.js.map} +1 -1
  166. package/dist/client/268.5b8cf50cd9481947.js +50 -0
  167. package/dist/client/268.5b8cf50cd9481947.js.map +1 -0
  168. package/dist/client/2826.d61ca617ff379ad4.js +29 -0
  169. package/dist/client/2826.d61ca617ff379ad4.js.map +1 -0
  170. package/dist/client/{9632.b317ca4ae5930b4a.js → 3536.38f4b1a8002b53e2.js} +30 -2
  171. package/dist/client/3536.38f4b1a8002b53e2.js.map +1 -0
  172. package/dist/client/{3580.bf3f2a7896833bd8.js → 3580.92db5b07a85b0961.js} +2 -2
  173. package/dist/client/{3580.bf3f2a7896833bd8.js.map → 3580.92db5b07a85b0961.js.map} +1 -1
  174. package/dist/client/37.d890a50de1313ae7.js +120 -0
  175. package/dist/client/37.d890a50de1313ae7.js.map +1 -0
  176. package/dist/client/{3769.d1f1fcf335099c33.js → 3769.f46716bd58921c06.js} +6 -5
  177. package/dist/client/3769.f46716bd58921c06.js.map +1 -0
  178. package/dist/client/3892.db79ccfcc2e8b5a2.js +5 -0
  179. package/dist/client/3892.db79ccfcc2e8b5a2.js.map +1 -0
  180. package/dist/client/391.947b429ccac6ca45.js +8 -0
  181. package/dist/client/391.947b429ccac6ca45.js.map +1 -0
  182. package/dist/client/{4036.5ca9997e4c034473.js → 4036.4aa9a690073ccbac.js} +11 -7
  183. package/dist/client/4036.4aa9a690073ccbac.js.map +1 -0
  184. package/dist/client/4045.ec4c143648ab2280.js +8 -0
  185. package/dist/client/4045.ec4c143648ab2280.js.map +1 -0
  186. package/dist/client/4531.5f4701b319065b2b.js +34 -0
  187. package/dist/client/4531.5f4701b319065b2b.js.map +1 -0
  188. package/dist/client/{476.0de6391161b814ad.js → 476.67faa1bd02f2479c.js} +3 -3
  189. package/dist/client/{476.0de6391161b814ad.js.map → 476.67faa1bd02f2479c.js.map} +1 -1
  190. package/dist/client/{4849.4da5f274175b7cc7.js → 4849.2d0d91db57dc6419.js} +2 -2
  191. package/dist/client/{4849.4da5f274175b7cc7.js.map → 4849.2d0d91db57dc6419.js.map} +1 -1
  192. package/dist/client/{5066.31235bae47282d5a.js → 5066.c3b69e4601465269.js} +9 -9
  193. package/dist/client/{5066.31235bae47282d5a.js.map → 5066.c3b69e4601465269.js.map} +1 -1
  194. package/dist/client/{533.518751bfb02cbcee.js → 533.43be64a8c12d5411.js} +2 -2
  195. package/dist/client/{533.518751bfb02cbcee.js.map → 533.43be64a8c12d5411.js.map} +1 -1
  196. package/dist/client/5531.ff59053d35a9ebc5.js +387 -0
  197. package/dist/client/{5531.3f07c9b4290520c7.js.map → 5531.ff59053d35a9ebc5.js.map} +1 -1
  198. package/dist/client/{5557.247c4c4c61d91b4d.js → 5557.3923ba7ade67d4c8.js} +4 -4
  199. package/dist/client/{5557.247c4c4c61d91b4d.js.map → 5557.3923ba7ade67d4c8.js.map} +1 -1
  200. package/dist/client/{5837.52bd8ccde0085adc.js → 5837.2173cfac5b28fb95.js} +2 -2
  201. package/dist/client/5837.2173cfac5b28fb95.js.map +1 -0
  202. package/dist/client/5911.7dd68675e0a4ff43.js +2 -0
  203. package/dist/client/5911.7dd68675e0a4ff43.js.map +1 -0
  204. package/dist/client/614.b7c7bcd4ee6e4f7d.css +2 -0
  205. package/dist/client/614.b7c7bcd4ee6e4f7d.css.map +1 -0
  206. package/dist/client/6213.ba167b80474036f0.js +20 -0
  207. package/dist/client/6213.ba167b80474036f0.js.map +1 -0
  208. package/dist/client/665.7d96ffb19066da27.js +34 -0
  209. package/dist/client/665.7d96ffb19066da27.js.map +1 -0
  210. package/dist/client/6681.51b917ef9762ead2.js +6 -0
  211. package/dist/client/{6681.4bc549fb34f3fd5c.js.map → 6681.51b917ef9762ead2.js.map} +1 -1
  212. package/dist/client/6955.3de7286d9ee3c36f.js +33 -0
  213. package/dist/client/6955.3de7286d9ee3c36f.js.map +1 -0
  214. package/dist/client/{7326.b1ad5a6bece08bb2.js → 7326.9d0d137e939223ba.js} +2 -2
  215. package/dist/client/7326.9d0d137e939223ba.js.map +1 -0
  216. package/dist/client/{736.c130ba990b1ed252.js → 736.0fa146c2a494e88c.js} +5 -5
  217. package/dist/client/{736.c130ba990b1ed252.js.map → 736.0fa146c2a494e88c.js.map} +1 -1
  218. package/dist/client/7461.7d6383069ad3bded.js +35 -0
  219. package/dist/client/7461.7d6383069ad3bded.js.map +1 -0
  220. package/dist/client/7509.c7697df525e5b425.js +9 -0
  221. package/dist/client/7509.c7697df525e5b425.js.map +1 -0
  222. package/dist/client/{7731.401da89d94c0e064.js → 7731.dab635045f8c8801.js} +2 -2
  223. package/dist/client/{7731.401da89d94c0e064.js.map → 7731.dab635045f8c8801.js.map} +1 -1
  224. package/dist/client/{7816.086a6f46f1339f10.js → 7816.fcae90f472f6a101.js} +2 -2
  225. package/dist/client/{7816.086a6f46f1339f10.js.map → 7816.fcae90f472f6a101.js.map} +1 -1
  226. package/dist/client/833.a99cc1ff95a9361c.js +5 -0
  227. package/dist/client/833.a99cc1ff95a9361c.js.map +1 -0
  228. package/dist/client/{8468.add3c4feb6c9e926.js → 8468.f45cbbf88e617172.js} +3 -3
  229. package/dist/client/{8468.add3c4feb6c9e926.js.map → 8468.f45cbbf88e617172.js.map} +1 -1
  230. package/dist/client/{8483.e69da156837fde23.js → 8483.42cb8809ffb7c809.js} +3 -3
  231. package/dist/client/{8483.e69da156837fde23.js.map → 8483.42cb8809ffb7c809.js.map} +1 -1
  232. package/dist/client/{8551.4cf05a456e8b9b36.js → 8551.88765e00cf64cda8.js} +2 -2
  233. package/dist/client/{8551.4cf05a456e8b9b36.js.map → 8551.88765e00cf64cda8.js.map} +1 -1
  234. package/dist/client/{8684.538d49e436a77c37.js → 8684.9d7a1ac15f75f143.js} +5 -5
  235. package/dist/client/{8684.538d49e436a77c37.js.map → 8684.9d7a1ac15f75f143.js.map} +1 -1
  236. package/dist/client/8896.c876205851967073.js +9 -0
  237. package/dist/client/8896.c876205851967073.js.map +1 -0
  238. package/dist/client/{8911.e1fd0ac2f979c2ea.js → 8911.74685697a6189123.js} +7 -7
  239. package/dist/client/8911.74685697a6189123.js.map +1 -0
  240. package/dist/client/9021.3d43ecdc365948b8.js +16 -0
  241. package/dist/client/9021.3d43ecdc365948b8.js.map +1 -0
  242. package/dist/client/917.f2551a4b63ec4d86.js +17 -0
  243. package/dist/client/917.f2551a4b63ec4d86.js.map +1 -0
  244. package/dist/client/9222.a2d629b05b5c3c7e.js +104 -0
  245. package/dist/client/9222.a2d629b05b5c3c7e.js.LICENSE.txt +5 -0
  246. package/dist/client/9222.a2d629b05b5c3c7e.js.map +1 -0
  247. package/dist/client/chart-no-axes-combined.aee09a7064cb8b35.svg +1 -0
  248. package/dist/client/{circle-alert.4199b283585ef0bb.svg → circle-play.6ed4ac1fb3c93a04.svg} +1 -1
  249. package/dist/client/{curriculum-about-covered.74e453cf7e1a86c2.svg → curriculum-about-covered.a0e620d9fa0a96bb.svg} +1 -1
  250. package/dist/client/{curriculum-about-detail.515f645950e2300b.svg → curriculum-about-detail.73feb705e269ebbe.svg} +1 -1
  251. package/dist/client/{curriculum-about-educators.91685cbbd58c65fb.svg → curriculum-about-educators.03744c34dabd5fe7.svg} +1 -1
  252. package/dist/client/{curriculum-about-not.42caac16e07477b5.svg → curriculum-about-not.aa3c2baa11be115d.svg} +1 -1
  253. package/dist/client/{curriculum-about-students.36ca88cba5f00272.svg → curriculum-about-students.842af9608002c05a.svg} +1 -1
  254. package/dist/client/{curriculum-bullet.934e76f0055c7737.svg → curriculum-bullet.ae8de1d4f7e37953.svg} +1 -1
  255. package/dist/client/{curriculum-landing-about-beginner.c283306531a0a760.svg → curriculum-landing-about-beginner.9603b098f49dfb52.svg} +1 -1
  256. package/dist/client/{curriculum-landing-about-bullet.329a46667f2b7b1c.svg → curriculum-landing-about-bullet.1a31ffce2d5917cb.svg} +1 -1
  257. package/dist/client/{curriculum-landing-about-free.860c02f993720011.svg → curriculum-landing-about-free.1ff3ec55692670ba.svg} +1 -1
  258. package/dist/client/{curriculum-landing-about-pace.caf53bc7642d2d9e.svg → curriculum-landing-about-pace.04fd0a480b4ef342.svg} +1 -1
  259. package/dist/client/{curriculum-landing-arrow.37d9469e2da628fb.svg → curriculum-landing-arrow.b4d5ba21e3dc087e.svg} +1 -1
  260. package/dist/client/{curriculum-landing-started-advanced.6aa084114d4a009d.svg → curriculum-landing-started-advanced.bd07b9246e350d6f.svg} +1 -1
  261. package/dist/client/{curriculum-landing-started-beginner.684ee16fbad28594.svg → curriculum-landing-started-beginner.62cf58049310b5c1.svg} +1 -1
  262. package/dist/client/{curriculum-landing-started-educator.1fc04ca1f8ce8d38.svg → curriculum-landing-started-educator.779ce85811a81d19.svg} +1 -1
  263. package/dist/client/{curriculum-landing-started-employment.ad9634ce6c19f3ba.svg → curriculum-landing-started-employment.4e7b977d45493058.svg} +1 -1
  264. package/dist/client/{curriculum-mdn-resource.f452724542f874b8.svg → curriculum-mdn-resource.335ee2e480d302fb.svg} +1 -1
  265. package/dist/client/{curriculum-partner-bg.247900de90ec7d1e.svg → curriculum-partner-bg.70de155df588311a.svg} +1 -1
  266. package/dist/client/{curriculum-scrim-bg.66afaab49246fbd9.svg → curriculum-scrim-bg.29a27117721ff3e9.svg} +1 -1
  267. package/dist/client/index.31463704d14e154c.js +260 -0
  268. package/dist/client/index.31463704d14e154c.js.LICENSE.txt +25 -0
  269. package/dist/client/index.31463704d14e154c.js.map +1 -0
  270. package/dist/client/jetbrains-mono-cyrillic.577e793cdf179ae1.woff2 +0 -0
  271. package/dist/client/jetbrains-mono-italic-cyrillic.8d00711fdb1702e0.woff2 +0 -0
  272. package/dist/client/jetbrains-mono-italic-latin-extended.c25d5e1f309ed948.woff2 +0 -0
  273. package/dist/client/jetbrains-mono-italic-latin.55b330522e5e3ed9.woff2 +0 -0
  274. package/dist/client/jetbrains-mono-latin-extended.01c891f9c832ce28.woff2 +0 -0
  275. package/dist/client/jetbrains-mono-latin.119994ed445212c7.woff2 +0 -0
  276. package/dist/client/mdn-m.70aac857e4a908d0.svg +1 -0
  277. package/dist/client/{runtime.51020603a07b972d.js → runtime.ee03d594ff24ae70.js} +2 -2
  278. package/dist/client/runtime.ee03d594ff24ae70.js.map +1 -0
  279. package/dist/client/shield-check.07bdc37f20ac5cc6.svg +1 -0
  280. package/dist/client/stats.json +1096 -1024
  281. package/dist/client/styles-a11y-menu.5796ee87cb69f93f.css +2 -0
  282. package/dist/client/styles-a11y-menu.5796ee87cb69f93f.css.map +1 -0
  283. package/dist/client/styles-a11y-menu.c408da1c50de7848.js +1 -0
  284. package/dist/client/styles-advertising.4c00484729f959ad.js +1 -0
  285. package/dist/client/{styles-advertising.c54670419b34708a.css → styles-advertising.c4692f68b3c61df1.css} +2 -2
  286. package/dist/client/{styles-advertising.c54670419b34708a.css.map → styles-advertising.c4692f68b3c61df1.css.map} +1 -1
  287. package/dist/client/styles-article-footer.81ae18c89fc527dc.css +2 -0
  288. package/dist/client/styles-article-footer.81ae18c89fc527dc.css.map +1 -0
  289. package/dist/client/styles-article-footer.f591a23b879db7bc.js +1 -0
  290. package/dist/client/styles-banner.cce5a46592f9ae9c.js +1 -0
  291. package/dist/client/{styles-baseline-indicator.32a52f7b51085fbb.css → styles-baseline-indicator.083aba7301c6f745.css} +2 -2
  292. package/dist/client/styles-baseline-indicator.083aba7301c6f745.css.map +1 -0
  293. package/dist/client/styles-baseline-indicator.35315666a6ff6562.js +1 -0
  294. package/dist/client/styles-blog-index.65525134178d64fd.js +1 -0
  295. package/dist/client/styles-blog-index.acbe792e1ec96930.css +2 -0
  296. package/dist/client/styles-blog-index.acbe792e1ec96930.css.map +1 -0
  297. package/dist/client/styles-blog-post.0cc5813f0a44aff0.js +1 -0
  298. package/dist/client/styles-blog-post.5085aa38dc1ab3a3.css +2 -0
  299. package/dist/client/styles-blog-post.5085aa38dc1ab3a3.css.map +1 -0
  300. package/dist/client/styles-breadcrumbs-bar.740212452ad4a93e.js +1 -0
  301. package/dist/client/{styles-breadcrumbs-bar.b7a94abe36578bab.css → styles-breadcrumbs-bar.e2fa6dfb04a38166.css} +2 -2
  302. package/dist/client/{styles-breadcrumbs-bar.b7a94abe36578bab.css.map → styles-breadcrumbs-bar.e2fa6dfb04a38166.css.map} +1 -1
  303. package/dist/client/{styles-breadcrumbs.d07ccd5520eeea01.css → styles-breadcrumbs.0afde562052673c5.css} +2 -2
  304. package/dist/client/{styles-breadcrumbs.d07ccd5520eeea01.css.map → styles-breadcrumbs.0afde562052673c5.css.map} +1 -1
  305. package/dist/client/styles-breadcrumbs.3b39fd6a3c2edb2e.js +1 -0
  306. package/dist/client/styles-button.a58118f8ded7e527.js +1 -0
  307. package/dist/client/styles-content-section.06ab08df9b9e047e.js +1 -0
  308. package/dist/client/styles-content-section.ffa19ece6d4fa70f.css +2 -0
  309. package/dist/client/styles-content-section.ffa19ece6d4fa70f.css.map +1 -0
  310. package/dist/client/styles-contributor-spotlight.38657357f29e301d.css +2 -0
  311. package/dist/client/styles-contributor-spotlight.38657357f29e301d.css.map +1 -0
  312. package/dist/client/styles-contributor-spotlight.5303aa09b91c2b0f.js +1 -0
  313. package/dist/client/styles-curriculum-about.75e3406bfe012d87.css +2 -0
  314. package/dist/client/styles-curriculum-about.75e3406bfe012d87.css.map +1 -0
  315. package/dist/client/styles-curriculum-about.c7d034c5eb1cedfc.js +1 -0
  316. package/dist/client/styles-curriculum-default.425c715d690a611c.js +1 -0
  317. package/dist/client/styles-curriculum-default.ceb6f07d1ba3a1fe.css +2 -0
  318. package/dist/client/styles-curriculum-default.ceb6f07d1ba3a1fe.css.map +1 -0
  319. package/dist/client/styles-curriculum-landing.1558840404f90c97.js +1 -0
  320. package/dist/client/styles-curriculum-landing.4c266be210279754.css +2 -0
  321. package/dist/client/styles-curriculum-landing.4c266be210279754.css.map +1 -0
  322. package/dist/client/styles-curriculum-module.7e5cd517e846d594.js +1 -0
  323. package/dist/client/styles-curriculum-module.986c101af5734725.css +2 -0
  324. package/dist/client/styles-curriculum-module.986c101af5734725.css.map +1 -0
  325. package/dist/client/styles-curriculum-overview.4c7cb02c1ddc853e.js +1 -0
  326. package/dist/client/styles-curriculum-overview.5e1cf930403c07b3.css +2 -0
  327. package/dist/client/styles-curriculum-overview.5e1cf930403c07b3.css.map +1 -0
  328. package/dist/client/styles-featured-articles.b4ecc71ab736bd5b.css +2 -0
  329. package/dist/client/styles-featured-articles.b4ecc71ab736bd5b.css.map +1 -0
  330. package/dist/client/styles-featured-articles.e307bb8142f33739.js +1 -0
  331. package/dist/client/styles-footer.a2850e459e2d290b.css +2 -0
  332. package/dist/client/{styles-footer.c1a53f0a58f04928.css.map → styles-footer.a2850e459e2d290b.css.map} +1 -1
  333. package/dist/client/styles-footer.c29033543af832fb.js +1 -0
  334. package/dist/client/styles-generic-about.2d4dc610496035b0.js +1 -0
  335. package/dist/client/styles-generic-about.766241910cf1bfdf.css +2 -0
  336. package/dist/client/styles-generic-about.766241910cf1bfdf.css.map +1 -0
  337. package/dist/client/styles-generic-community.76b2cea1e9b36907.js +1 -0
  338. package/dist/client/styles-generic-community.aa93fe32626f89a4.css +2 -0
  339. package/dist/client/styles-generic-community.aa93fe32626f89a4.css.map +1 -0
  340. package/dist/client/{styles-generic-content.7960b980b98f1d3d.css → styles-generic-content.3c8089706edb022d.css} +2 -2
  341. package/dist/client/{styles-generic-content.7960b980b98f1d3d.css.map → styles-generic-content.3c8089706edb022d.css.map} +1 -1
  342. package/dist/client/styles-generic-content.95822f3a7d72b2af.js +1 -0
  343. package/dist/client/styles-generic-layout.42a5e62407bd0066.css +2 -0
  344. package/dist/client/{styles-generic-layout.55441b1a560f5c9f.css.map → styles-generic-layout.42a5e62407bd0066.css.map} +1 -1
  345. package/dist/client/styles-generic-layout.e3b1cbc7db109acc.js +1 -0
  346. package/dist/client/styles-generic-sidebar.2e998de436f774c4.css +2 -0
  347. package/dist/client/styles-generic-sidebar.2e998de436f774c4.css.map +1 -0
  348. package/dist/client/styles-generic-sidebar.9767d319bbbde061.js +1 -0
  349. package/dist/client/styles-generic-toc.109e07ffeb20bc67.css +2 -0
  350. package/dist/client/styles-generic-toc.109e07ffeb20bc67.css.map +1 -0
  351. package/dist/client/styles-generic-toc.56e46052fca1042a.js +1 -0
  352. package/dist/client/styles-global.50c705928b5966d2.css +2 -0
  353. package/dist/client/styles-global.50c705928b5966d2.css.map +1 -0
  354. package/dist/client/styles-global.5928df920ab8d790.js +1 -0
  355. package/dist/client/styles-heading-anchor.0eec5185ab9425b7.css +2 -0
  356. package/dist/client/{styles-heading-anchor.f2760897211efe98.css.map → styles-heading-anchor.0eec5185ab9425b7.css.map} +1 -1
  357. package/dist/client/styles-heading-anchor.69440b0832b0c7b6.js +1 -0
  358. package/dist/client/styles-homepage-body.a1dd591dfd38a0e2.js +1 -0
  359. package/dist/client/{styles-homepage-contributor-spotlight.f02bdd82c7536b72.css → styles-homepage-contributor-spotlight.38935642cba8718d.css} +2 -2
  360. package/dist/client/{styles-homepage-contributor-spotlight.f02bdd82c7536b72.css.map → styles-homepage-contributor-spotlight.38935642cba8718d.css.map} +1 -1
  361. package/dist/client/styles-homepage-contributor-spotlight.a872f7a5144621ce.js +1 -0
  362. package/dist/client/styles-homepage-footer.56ccee76430fb4b6.js +1 -0
  363. package/dist/client/styles-homepage-header.ef7007190d01e72b.js +1 -0
  364. package/dist/client/styles-homepage-hero.db4057884586bcc0.js +1 -0
  365. package/dist/client/styles-homepage.643e215e9b541f48.js +1 -0
  366. package/dist/client/styles-latest-news.b28826e707e5a793.js +1 -0
  367. package/dist/client/styles-latest-news.ef3b9e57333a87bc.css +2 -0
  368. package/dist/client/styles-latest-news.ef3b9e57333a87bc.css.map +1 -0
  369. package/dist/client/styles-left-sidebar.07f68fb381233e5e.css +2 -0
  370. package/dist/client/styles-left-sidebar.07f68fb381233e5e.css.map +1 -0
  371. package/dist/client/styles-left-sidebar.689072b681b6085c.js +1 -0
  372. package/dist/client/styles-logo.5fe2004c01665043.js +1 -0
  373. package/dist/client/styles-logo.f9c13d56f40d50b6.css +2 -0
  374. package/dist/client/styles-logo.f9c13d56f40d50b6.css.map +1 -0
  375. package/dist/client/styles-mandala.39843b917e3341c1.js +1 -0
  376. package/dist/client/styles-mandala.8fbfeb0567dbde40.css +2 -0
  377. package/dist/client/styles-mandala.8fbfeb0567dbde40.css.map +1 -0
  378. package/dist/client/styles-menu.0df94f3d4546f4e2.js +1 -0
  379. package/dist/client/styles-menu.5193bf2642ae7d64.css +2 -0
  380. package/dist/client/styles-menu.5193bf2642ae7d64.css.map +1 -0
  381. package/dist/client/styles-navigation.013b4a4ed330892a.css +2 -0
  382. package/dist/client/styles-navigation.013b4a4ed330892a.css.map +1 -0
  383. package/dist/client/styles-navigation.f10f27bc66c78348.js +1 -0
  384. package/dist/client/styles-not-found.db6d6367152f676d.js +1 -0
  385. package/dist/client/styles-observatory-landing.28dd60cf0de05bec.js +1 -0
  386. package/dist/client/styles-observatory-landing.7b47ee0004877825.css +2 -0
  387. package/dist/client/styles-observatory-landing.7b47ee0004877825.css.map +1 -0
  388. package/dist/client/styles-observatory-results.36b6175e7444ec4e.css +2 -0
  389. package/dist/client/styles-observatory-results.36b6175e7444ec4e.css.map +1 -0
  390. package/dist/client/styles-observatory-results.7ce6d37475f9cf58.js +1 -0
  391. package/dist/client/styles-page-layout.0d53ebc97d7b7bf1.js +1 -0
  392. package/dist/client/styles-page-layout.e52a43c97f04cf90.css +2 -0
  393. package/dist/client/{styles-page-layout.5db9be57df19de0c.css.map → styles-page-layout.e52a43c97f04cf90.css.map} +1 -1
  394. package/dist/client/styles-pagination.19bf90db76d7d8d3.css +2 -0
  395. package/dist/client/{styles-pagination.0b3aa3fd6f6d3808.css.map → styles-pagination.19bf90db76d7d8d3.css.map} +1 -1
  396. package/dist/client/styles-pagination.e6fa33b9eadd8ab2.js +1 -0
  397. package/dist/client/styles-playground.59775225856ba2c6.js +1 -0
  398. package/dist/client/styles-recent-contributions.c51e066b59d22fca.js +1 -0
  399. package/dist/client/styles-reference-layout.0ab1a4d92d4a0966.css +2 -0
  400. package/dist/client/styles-reference-layout.0ab1a4d92d4a0966.css.map +1 -0
  401. package/dist/client/styles-reference-layout.218edbd3288fad71.js +1 -0
  402. package/dist/client/styles-reference-toc.67439c41e5f07bef.js +1 -0
  403. package/dist/client/{styles-reference-toc.5ce4f97dbe6e3ed0.css → styles-reference-toc.9b9bd019efd16b86.css} +2 -2
  404. package/dist/client/{styles-reference-toc.5ce4f97dbe6e3ed0.css.map → styles-reference-toc.9b9bd019efd16b86.css.map} +1 -1
  405. package/dist/client/styles-sandbox.22c29067838f22d9.js +1 -0
  406. package/dist/client/styles-site-search.5d4b622a11b82915.js +1 -0
  407. package/dist/client/styles-site-search.ec3b6780533a8750.css +2 -0
  408. package/dist/client/{styles-site-search.cf345ef99e0d06b5.css.map → styles-site-search.ec3b6780533a8750.css.map} +1 -1
  409. package/dist/client/styles-translation-banner.b923aed537f60120.js +1 -0
  410. package/dist/client/styles-writer-toolbar.00468688f6144393.js +1 -0
  411. package/dist/client/styles-writer-toolbar.70bdeddd3734ab11.css +2 -0
  412. package/dist/client/styles-writer-toolbar.70bdeddd3734ab11.css.map +1 -0
  413. package/dist/client/styles.7fb7069c86aa338c.js +2 -0
  414. package/dist/client/styles.7fb7069c86aa338c.js.map +1 -0
  415. package/dist/client/users.f7e6f1f213744762.svg +1 -0
  416. package/dist/legacy/{1284.0939e1a7de12c23c.js → 1284.9609d9ed70761e2f.js} +3 -3
  417. package/dist/legacy/{1284.0939e1a7de12c23c.js.map → 1284.9609d9ed70761e2f.js.map} +1 -1
  418. package/dist/legacy/3957.798f0651121f0fa7.js.map +1 -1
  419. package/dist/legacy/{7664.eee0fe67e04785f4.js → 7664.7bf14ff753e36b72.js} +3 -3
  420. package/dist/legacy/7664.7bf14ff753e36b72.js.map +1 -0
  421. package/dist/legacy/{8716.9fde41ad50c3078d.js → 8716.0a9d049bf166f65a.js} +7 -7
  422. package/dist/legacy/{8716.9fde41ad50c3078d.js.map → 8716.0a9d049bf166f65a.js.map} +1 -1
  423. package/dist/legacy/afree.da56b83d257902e0.png +0 -0
  424. package/dist/legacy/{index.9db2264bb6151226.css → index.92ea4d5b7af91171.css} +2 -2
  425. package/dist/legacy/index.92ea4d5b7af91171.css.map +1 -0
  426. package/dist/legacy/{index.b760891bfcc63977.js → index.dd25b33b92ab6c72.js} +5 -5
  427. package/dist/legacy/index.dd25b33b92ab6c72.js.map +1 -0
  428. package/dist/legacy/stats.json +12 -12
  429. package/dist/ssr/index.js +483 -485
  430. package/dist/ssr/index.js.map +1 -1
  431. package/dist/ssr/results-icon.b469eb939df034e7.svg +1 -0
  432. package/dist/ssr/stats.json +54 -46
  433. package/dist/ssr/summary-icon.eff7a61e59b7e02f.svg +1 -0
  434. package/entry.client.js +1 -1
  435. package/entry.ssr.js +3 -4
  436. package/hooks/dialog-closedby.js +42 -0
  437. package/l10n/de.ftl +2 -2
  438. package/l10n/en-US.ftl +10 -10
  439. package/legacy/index.tsx +1 -0
  440. package/legacy/legacy.css +5 -0
  441. package/package.json +22 -21
  442. package/rspack.config.js +27 -11
  443. package/server.js +37 -3
  444. package/svgo.config.js +22 -11
  445. package/types/element-map.d.ts +1 -0
  446. package/types/fred.ts +5 -1
  447. package/components/css-formal-syntax/index.css +0 -10
  448. package/components/observatory/index.css +0 -406
  449. package/components/observatory-landing/faq.js +0 -16
  450. package/components/observatory-landing/feedback.js +0 -16
  451. package/dist/client/1197.25090f81ab4208bc.css +0 -32
  452. package/dist/client/1197.25090f81ab4208bc.css.map +0 -1
  453. package/dist/client/1624.5694c64f5e45232c.js +0 -69
  454. package/dist/client/1739.505aa54ed62222c8.js +0 -8
  455. package/dist/client/2254.5fbfe2d0124ff3ba.css +0 -2
  456. package/dist/client/2254.5fbfe2d0124ff3ba.css.map +0 -1
  457. package/dist/client/2448.92286b4e96ad1c02.js.map +0 -1
  458. package/dist/client/2826.2162e19b0f72cf75.js +0 -29
  459. package/dist/client/2826.2162e19b0f72cf75.js.map +0 -1
  460. package/dist/client/3536.d17eba9caa4089c1.js +0 -30
  461. package/dist/client/3536.d17eba9caa4089c1.js.map +0 -1
  462. package/dist/client/37.feff9590370f461a.js +0 -102
  463. package/dist/client/37.feff9590370f461a.js.map +0 -1
  464. package/dist/client/3769.d1f1fcf335099c33.js.map +0 -1
  465. package/dist/client/3892.62b28110dbb3645e.js +0 -5
  466. package/dist/client/3892.62b28110dbb3645e.js.map +0 -1
  467. package/dist/client/391.ead0b358d96c9c13.js +0 -8
  468. package/dist/client/391.ead0b358d96c9c13.js.map +0 -1
  469. package/dist/client/4036.5ca9997e4c034473.js.map +0 -1
  470. package/dist/client/4045.c0fd898eab0b2a5c.js +0 -8
  471. package/dist/client/4045.c0fd898eab0b2a5c.js.map +0 -1
  472. package/dist/client/4531.4ae011f8a64a2b27.js +0 -34
  473. package/dist/client/4531.4ae011f8a64a2b27.js.map +0 -1
  474. package/dist/client/5531.3f07c9b4290520c7.js +0 -387
  475. package/dist/client/5837.52bd8ccde0085adc.js.map +0 -1
  476. package/dist/client/614.01075c8e848f77c4.css +0 -2
  477. package/dist/client/614.01075c8e848f77c4.css.map +0 -1
  478. package/dist/client/6213.32f53c1c3ef65496.js +0 -20
  479. package/dist/client/6213.32f53c1c3ef65496.js.map +0 -1
  480. package/dist/client/665.bfa5abb72f818c34.js +0 -34
  481. package/dist/client/665.bfa5abb72f818c34.js.map +0 -1
  482. package/dist/client/6681.4bc549fb34f3fd5c.js +0 -6
  483. package/dist/client/6955.90a316f179d37d80.js +0 -52
  484. package/dist/client/6955.90a316f179d37d80.js.map +0 -1
  485. package/dist/client/7326.b1ad5a6bece08bb2.js.map +0 -1
  486. package/dist/client/7345.6d89013575f169db.js +0 -16
  487. package/dist/client/7345.6d89013575f169db.js.map +0 -1
  488. package/dist/client/7461.c7551ade83fa6056.js +0 -35
  489. package/dist/client/7461.c7551ade83fa6056.js.map +0 -1
  490. package/dist/client/7509.780e429ccb3e9290.js +0 -9
  491. package/dist/client/7509.780e429ccb3e9290.js.map +0 -1
  492. package/dist/client/781.389e02e257b52721.css +0 -2
  493. package/dist/client/781.389e02e257b52721.css.map +0 -1
  494. package/dist/client/7898.7fd3ac2396a8dd7b.js +0 -45
  495. package/dist/client/7898.7fd3ac2396a8dd7b.js.map +0 -1
  496. package/dist/client/8877.6b7cc9370ff77f02.js +0 -2
  497. package/dist/client/8877.6b7cc9370ff77f02.js.map +0 -1
  498. package/dist/client/8896.85df788778cc02ca.js +0 -9
  499. package/dist/client/8896.85df788778cc02ca.js.map +0 -1
  500. package/dist/client/8911.e1fd0ac2f979c2ea.js.map +0 -1
  501. package/dist/client/917.f2371f7a8ef08c84.js +0 -17
  502. package/dist/client/917.f2371f7a8ef08c84.js.map +0 -1
  503. package/dist/client/9222.f3820fec7e0a91be.js +0 -104
  504. package/dist/client/9222.f3820fec7e0a91be.js.map +0 -1
  505. package/dist/client/9632.b317ca4ae5930b4a.js.map +0 -1
  506. package/dist/client/index.e36c34deca671725.js +0 -251
  507. package/dist/client/index.e36c34deca671725.js.map +0 -1
  508. package/dist/client/jetbrains-mono-cyrillic.4be0050294dbaee4.woff2 +0 -0
  509. package/dist/client/jetbrains-mono-italic-cyrillic.789710e9fe5a2b03.woff2 +0 -0
  510. package/dist/client/jetbrains-mono-italic-latin-extended.58430489c22fda09.woff2 +0 -0
  511. package/dist/client/jetbrains-mono-italic-latin.80ad93ea1dcec528.woff2 +0 -0
  512. package/dist/client/jetbrains-mono-latin-extended.2b8ab8f35e622fdb.woff2 +0 -0
  513. package/dist/client/jetbrains-mono-latin.eaa3472268346b6c.woff2 +0 -0
  514. package/dist/client/runtime.51020603a07b972d.js.map +0 -1
  515. package/dist/client/styles-a11y-menu.53797029a4c05806.css +0 -2
  516. package/dist/client/styles-a11y-menu.53797029a4c05806.css.map +0 -1
  517. package/dist/client/styles-a11y-menu.8c2ae6bc250fdde3.js +0 -1
  518. package/dist/client/styles-advertising.f01a816ffb81826d.js +0 -1
  519. package/dist/client/styles-article-footer.3bc45ecc7223c0ee.css +0 -2
  520. package/dist/client/styles-article-footer.3bc45ecc7223c0ee.css.map +0 -1
  521. package/dist/client/styles-article-footer.abc86d1bc28dbbea.js +0 -1
  522. package/dist/client/styles-banner.dd24262bb896879a.js +0 -1
  523. package/dist/client/styles-baseline-indicator.26595fbb926e3339.js +0 -1
  524. package/dist/client/styles-baseline-indicator.32a52f7b51085fbb.css.map +0 -1
  525. package/dist/client/styles-blog-index.7af1563c6077a7be.css +0 -2
  526. package/dist/client/styles-blog-index.7af1563c6077a7be.css.map +0 -1
  527. package/dist/client/styles-blog-index.805cf1995d84466a.js +0 -1
  528. package/dist/client/styles-blog-post.5824db4f15723a68.css +0 -2
  529. package/dist/client/styles-blog-post.5824db4f15723a68.css.map +0 -1
  530. package/dist/client/styles-blog-post.87f4fe5450147ce8.js +0 -1
  531. package/dist/client/styles-breadcrumbs-bar.474628c11d128ace.js +0 -1
  532. package/dist/client/styles-breadcrumbs.b0241eed8398fe84.js +0 -1
  533. package/dist/client/styles-button.bd90715982da863b.js +0 -1
  534. package/dist/client/styles-content-section.a1f8a5f77270d1dc.js +0 -1
  535. package/dist/client/styles-content-section.f47b61c45a723af0.css +0 -2
  536. package/dist/client/styles-content-section.f47b61c45a723af0.css.map +0 -1
  537. package/dist/client/styles-contributor-spotlight.a77d55cfef159e66.css +0 -2
  538. package/dist/client/styles-contributor-spotlight.a77d55cfef159e66.css.map +0 -1
  539. package/dist/client/styles-contributor-spotlight.a992b1d366637c5d.js +0 -1
  540. package/dist/client/styles-curriculum-about.4b80aa2f2b88e8e4.js +0 -1
  541. package/dist/client/styles-curriculum-about.b8d113b14323c909.css +0 -2
  542. package/dist/client/styles-curriculum-about.b8d113b14323c909.css.map +0 -1
  543. package/dist/client/styles-curriculum-default.190eba828fd99e0a.js +0 -1
  544. package/dist/client/styles-curriculum-default.ef46db3751d8e999.css +0 -0
  545. package/dist/client/styles-curriculum-landing.56209b30561d82e0.css +0 -2
  546. package/dist/client/styles-curriculum-landing.56209b30561d82e0.css.map +0 -1
  547. package/dist/client/styles-curriculum-landing.e73c9557dd2057aa.js +0 -1
  548. package/dist/client/styles-curriculum-module.7fc982bc6793fa48.js +0 -1
  549. package/dist/client/styles-curriculum-module.c7271eb90af85eba.css +0 -2
  550. package/dist/client/styles-curriculum-module.c7271eb90af85eba.css.map +0 -1
  551. package/dist/client/styles-curriculum-overview.d00ecdc305f40125.js +0 -1
  552. package/dist/client/styles-curriculum-overview.ef46db3751d8e999.css +0 -0
  553. package/dist/client/styles-featured-articles.27e767c8b538f066.js +0 -1
  554. package/dist/client/styles-featured-articles.c518f93ad0470cdf.css +0 -2
  555. package/dist/client/styles-featured-articles.c518f93ad0470cdf.css.map +0 -1
  556. package/dist/client/styles-footer.c1a53f0a58f04928.css +0 -2
  557. package/dist/client/styles-footer.e86ec0a935d5937f.js +0 -1
  558. package/dist/client/styles-generic-about.27a13c39db15963c.js +0 -1
  559. package/dist/client/styles-generic-about.481f176f22ba0def.css +0 -2
  560. package/dist/client/styles-generic-about.481f176f22ba0def.css.map +0 -1
  561. package/dist/client/styles-generic-community.44405e7e3938a4b6.js +0 -1
  562. package/dist/client/styles-generic-community.ddbcb9e0488bf017.css +0 -2
  563. package/dist/client/styles-generic-community.ddbcb9e0488bf017.css.map +0 -1
  564. package/dist/client/styles-generic-content.a2ddd6aac780a65f.js +0 -1
  565. package/dist/client/styles-generic-layout.55441b1a560f5c9f.css +0 -2
  566. package/dist/client/styles-generic-layout.670f75c4f806be84.js +0 -1
  567. package/dist/client/styles-generic-sidebar.515ed6dc89aec542.css +0 -2
  568. package/dist/client/styles-generic-sidebar.515ed6dc89aec542.css.map +0 -1
  569. package/dist/client/styles-generic-sidebar.d1528b01acb49222.js +0 -1
  570. package/dist/client/styles-generic-toc.88e45e1e72c77b73.css +0 -2
  571. package/dist/client/styles-generic-toc.88e45e1e72c77b73.css.map +0 -1
  572. package/dist/client/styles-generic-toc.db854e6e0376fb6b.js +0 -1
  573. package/dist/client/styles-global.698ebe57a5418ca2.css +0 -2
  574. package/dist/client/styles-global.698ebe57a5418ca2.css.map +0 -1
  575. package/dist/client/styles-global.cb63a51fc1146957.js +0 -1
  576. package/dist/client/styles-heading-anchor.6ffff34f5421dc9f.js +0 -1
  577. package/dist/client/styles-heading-anchor.f2760897211efe98.css +0 -2
  578. package/dist/client/styles-homepage-body.4a9eaf99a6d5a434.js +0 -1
  579. package/dist/client/styles-homepage-contributor-spotlight.a91a262ee949a587.js +0 -1
  580. package/dist/client/styles-homepage-footer.cddd4004e597dbdf.js +0 -1
  581. package/dist/client/styles-homepage-header.6fc6295b2124ce59.js +0 -1
  582. package/dist/client/styles-homepage-hero.d56f468fb0364b60.js +0 -1
  583. package/dist/client/styles-homepage.be456abdb86e4bd2.js +0 -1
  584. package/dist/client/styles-latest-news.1b5fd7a95688fea4.css +0 -2
  585. package/dist/client/styles-latest-news.1b5fd7a95688fea4.css.map +0 -1
  586. package/dist/client/styles-latest-news.f725dd4127faabc2.js +0 -1
  587. package/dist/client/styles-left-sidebar.135a5bc6ad04c4f0.css +0 -2
  588. package/dist/client/styles-left-sidebar.135a5bc6ad04c4f0.css.map +0 -1
  589. package/dist/client/styles-left-sidebar.6cdadac4a1db951d.js +0 -1
  590. package/dist/client/styles-logo.8e7830628a9d7ef5.js +0 -1
  591. package/dist/client/styles-logo.a89a79f82f933ef6.css +0 -2
  592. package/dist/client/styles-logo.a89a79f82f933ef6.css.map +0 -1
  593. package/dist/client/styles-mandala.41af6b0b37aa7987.js +0 -1
  594. package/dist/client/styles-mandala.96281d90e09ea84c.css +0 -2
  595. package/dist/client/styles-mandala.96281d90e09ea84c.css.map +0 -1
  596. package/dist/client/styles-menu.786218f8a3e51b45.js +0 -1
  597. package/dist/client/styles-menu.d6b6e63ef2bff0d6.css +0 -2
  598. package/dist/client/styles-menu.d6b6e63ef2bff0d6.css.map +0 -1
  599. package/dist/client/styles-navigation.94adc2be697cca49.css +0 -2
  600. package/dist/client/styles-navigation.94adc2be697cca49.css.map +0 -1
  601. package/dist/client/styles-navigation.fac8722caf14abc8.js +0 -1
  602. package/dist/client/styles-not-found.f42949546ffd210c.js +0 -1
  603. package/dist/client/styles-observatory-landing.994044845e174ebc.js +0 -1
  604. package/dist/client/styles-observatory-landing.ef46db3751d8e999.css +0 -0
  605. package/dist/client/styles-observatory-results.2ebe1e1263bf9901.js +0 -1
  606. package/dist/client/styles-observatory-results.ef46db3751d8e999.css +0 -0
  607. package/dist/client/styles-page-layout.17e57aa7087c3c14.js +0 -1
  608. package/dist/client/styles-page-layout.5db9be57df19de0c.css +0 -2
  609. package/dist/client/styles-pagination.0b3aa3fd6f6d3808.css +0 -2
  610. package/dist/client/styles-pagination.8e0e077c056abb08.js +0 -1
  611. package/dist/client/styles-playground.6ba82a762ed428cd.js +0 -1
  612. package/dist/client/styles-recent-contributions.049ea82f38aea973.js +0 -1
  613. package/dist/client/styles-reference-layout.3fdc304c65153216.css +0 -2
  614. package/dist/client/styles-reference-layout.3fdc304c65153216.css.map +0 -1
  615. package/dist/client/styles-reference-layout.dffb8a58fa542929.js +0 -1
  616. package/dist/client/styles-reference-toc.885940cc1b62f05f.js +0 -1
  617. package/dist/client/styles-sandbox.28b391e75fd280b4.js +0 -1
  618. package/dist/client/styles-site-search.442cfc8fc77298a8.js +0 -1
  619. package/dist/client/styles-site-search.cf345ef99e0d06b5.css +0 -2
  620. package/dist/client/styles-translation-banner.ddf203bc7bb2e1bc.js +0 -1
  621. package/dist/client/styles.23fb47137258e781.js +0 -2
  622. package/dist/client/styles.23fb47137258e781.js.map +0 -1
  623. package/dist/legacy/7664.eee0fe67e04785f4.js.map +0 -1
  624. package/dist/legacy/afree.23e42bd4c44a110f.png +0 -0
  625. package/dist/legacy/index.9db2264bb6151226.css.map +0 -1
  626. package/dist/legacy/index.b760891bfcc63977.js.map +0 -1
  627. package/hooks/css-formal-syntax.js +0 -21
  628. /package/dist/client/{1342.b05de4cd80d4c221.js.LICENSE.txt → 1342.a66390274e8adda1.js.LICENSE.txt} +0 -0
  629. /package/dist/client/{2448.92286b4e96ad1c02.js.LICENSE.txt → 2448.34e8a46d8ac913b9.js.LICENSE.txt} +0 -0
  630. /package/dist/client/{4036.5ca9997e4c034473.js.LICENSE.txt → 4036.4aa9a690073ccbac.js.LICENSE.txt} +0 -0
  631. /package/dist/client/{4045.c0fd898eab0b2a5c.js.LICENSE.txt → 4045.ec4c143648ab2280.js.LICENSE.txt} +0 -0
  632. /package/dist/client/{4531.4ae011f8a64a2b27.js.LICENSE.txt → 4531.5f4701b319065b2b.js.LICENSE.txt} +0 -0
  633. /package/dist/client/{5557.247c4c4c61d91b4d.js.LICENSE.txt → 5557.3923ba7ade67d4c8.js.LICENSE.txt} +0 -0
  634. /package/dist/client/{8468.add3c4feb6c9e926.js.LICENSE.txt → 833.a99cc1ff95a9361c.js.LICENSE.txt} +0 -0
  635. /package/dist/client/{917.f2371f7a8ef08c84.js.LICENSE.txt → 8468.f45cbbf88e617172.js.LICENSE.txt} +0 -0
  636. /package/dist/client/{9222.f3820fec7e0a91be.js.LICENSE.txt → 917.f2551a4b63ec4d86.js.LICENSE.txt} +0 -0
  637. /package/dist/legacy/{1284.0939e1a7de12c23c.js.LICENSE.txt → 1284.9609d9ed70761e2f.js.LICENSE.txt} +0 -0
  638. /package/dist/legacy/{7664.eee0fe67e04785f4.js.LICENSE.txt → 7664.7bf14ff753e36b72.js.LICENSE.txt} +0 -0
  639. /package/dist/legacy/{8716.9fde41ad50c3078d.js.LICENSE.txt → 8716.0a9d049bf166f65a.js.LICENSE.txt} +0 -0
  640. /package/dist/legacy/{index.b760891bfcc63977.js.LICENSE.txt → index.dd25b33b92ab6c72.js.LICENSE.txt} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"4036.4aa9a690073ccbac.js","sources":["webpack://@mdn/fred/./components/live-sample-result/element.js","webpack://@mdn/fred/./node_modules/lit-html/directives/if-defined.js","webpack://@mdn/fred/./components/live-sample-result/element.css"],"sourcesContent":["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 >${this.l10n`Play`}</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=${this.sandbox}\n .srcPrefix=${this.srcPrefix}\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 { 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]!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[2]!../global/global.css\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_1___ from \"-!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[2]!../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}`, \"\"]);\n// Exports\nexport default css([___CSS_LOADER_EXPORT___.toString()]);\n"],"names":["MDNLiveSampleResult","Object","location","e","HTMLAnchorElement","URL","document","customElements"],"mappings":";4NAWO,IAAMA,oBAAN,MAAMA,2BAA4B,QAAU,IAAU,EAC3D,OAAO,OAAS,GAAM,AAAC,AAEvB,QAAO,WAAa,CAClB,OAAQ,CAAE,UAAW,SAAU,EAC/B,KAAM,CAAE,KAAMC,MAAO,EACrB,QAAS,CAAC,EACV,QAAS,CAAC,EACV,UAAW,CAAE,UAAW,YAAa,EACrC,OAAQ,CAAC,EACT,aAAc,CAAE,MAAO,EAAK,CAC9B,CAAE,AAEF,cAAc,CACZ,KAAK,GAEL,IAAI,CAAC,MAAM,CAAG,OAEd,IAAI,CAAC,IAAI,CAAG,OAEZ,IAAI,CAAC,KAAK,CAAG,OAEb,IAAI,CAAC,OAAO,CAAG,OAEf,IAAI,CAAC,SAAS,CAAG,OAEjB,IAAI,CAAC,MAAM,CAAG,OAEd,IAAI,CAAC,YAAY,CAAG,MACtB,CAEA,gBAAgB,EAAU,EAAK,CAAE,CAC3B,IAAI,CAAC,UAAU,CACb,GAAW,IAAI,CAAC,kBAAkB,CACpCC,SAAS,OAAO,CAAC,IAAI,CAAC,UAAU,EAEhCA,SAAS,IAAI,CAAG,IAAI,CAAC,UAAU,EAGjC,IAAI,CAAC,kBAAkB,CAAG,GACtB,GACF,KAAI,CAAC,kBAAkB,CAAG,EAAG,EAGnC,CAGA,iBAAiBC,CAAK,CAAE,CAEpB,IAAI,CAAC,MAAM,EACXA,EAAM,MAAM,YAAYC,mBACxBD,EAAM,MAAM,CAAC,IAAI,GAAK,CAAC,uBAAuB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,GAE7DA,EAAM,cAAc,GACpB,IAAI,CAAC,eAAe,GAExB,CAGA,kBAAkB,CAAE,QAAM,CAAE,CAAE,CAC5B,IAAI,CAAC,UAAU,CAAG,EACd,IAAI,CAAC,kBAAkB,EACzB,IAAI,CAAC,eAAe,GAEtB,IAAM,EAAU,IAAIE,IAAI,cAAeH,SAAS,IAAI,CACpD,GAAQ,MAAM,CAAG,IAAIG,IAAI,IAAI,CAAC,UAAU,EAAE,MAAM,CAC5C,IAAI,CAAC,SAAS,EAChB,EAAQ,YAAY,CAAC,MAAM,CAAC,YAAa,IAAI,CAAC,SAAS,EACzD,IAAI,CAAC,YAAY,CAAG,EAAQ,IAAI,AAClC,CAEA,mBAAoB,CAClB,KAAK,CAAC,oBACN,IAAI,CAAC,gBAAgB,CAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EACvDC,SAAS,gBAAgB,CAAC,QAAS,IAAI,CAAC,gBAAgB,EACpDJ,SAAS,IAAI,GAAK,CAAC,uBAAuB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,EAC3D,IAAI,CAAC,eAAe,EAExB,CAEA,QAAS,CACP,MAAO,QAAI,CAAC;;;UAGN,EAAE,IAAI,CAAC,YAAY,CACf,QAAI,CAAC;;qBAEE,EAAE,IAAI,CAAC,YAAY,CAAC;;;iBAGxB,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;eACpB,CAAC,CACF,IAAO,CAAC;;;+BAGS,EAAE,IAAI,CAAC,iBAAiB,CAAC;gBACxC,EAAE,IAAI,CAAC,IAAI,CAAC;iBACX,EAAE,IAAI,CAAC,KAAK,CAAC;mBACX,EAAE,IAAI,CAAC,OAAO,CAAC;qBACb,EAAE,IAAI,CAAC,SAAS,CAAC;gBACtB,EAAE,QAAS,CACf,OAAQ,IAAI,CAAC,MAAM,CACf,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM,EAAI,KAAO,GAAG,CAAC,CACzD,MACN,GAAG;;;IAGT,CAAC,AACH,CAEA,sBAAuB,CACrB,KAAK,CAAC,uBACNI,SAAS,mBAAmB,CAAC,QAAS,IAAI,CAAC,gBAAgB,CAC7D,CACF,EAEAC,eAAe,MAAM,CAAC,yBAA0BP,4EC1H7C,IAAM,EAAE,GAAG,GAAG,IAAC,qHCCd,EAA0B,IAA4B,KAC1D,EAAwB,CAAC,CAAC,GAAiC,EAC3D,EAAwB,CAAC,CAAC,GAAiC,EAE3D,EAAwB,IAAI,CAAC,CAAC,EAAO,EAAE,CAAE,yEAA0E,GAAG,EAEtH,MAAe,SAAI,CAAC,EAAwB,QAAQ,GAAG"}
@@ -0,0 +1,8 @@
1
+ /*! For license information please see 4045.ec4c143648ab2280.js.LICENSE.txt */
2
+ export const __webpack_ids__=["4045"];export const __webpack_modules__={90811:function(t,e,n){n.r(e),n.d(e,{MDNObservatoryRescanButton:()=>MDNObservatoryRescanButton});var i=n(14703);n(50272);var a=n(69535),r=n(29892);let MDNObservatoryRescanButton=class MDNObservatoryRescanButton extends(0,a.q)(i.oi){static styles=r.Z;static properties={from:{type:Object},duration:{type:Number},_remainingTime:{state:!0}};constructor(){super(),this.from=new Date,this.duration=60,this._remainingTime=0,this._interval=null}connectedCallback(){super.connectedCallback(),this._remainingTime=this._calculateRemainingTime(),this._interval=setInterval(()=>{this._remainingTime=this._calculateRemainingTime()},1e3)}disconnectedCallback(){super.disconnectedCallback(),this._interval&&(clearInterval(this._interval),this._interval=null)}_calculateRemainingTime(){return Math.max(0,this.from.getTime()+1e3*this.duration-Date.now())}_icon(t){return(0,i.dy)`<span
3
+ class="progress"
4
+ style=" display: inline-block; width: 0.9rem; height: 0.9rem; border-radius: 50%; background: conic-gradient(light-dark(var(--color-gray-40), var(--color-gray-60)) 0grad, ${t}%, rgba(0,0,0,0) ${t}% 100%)"
5
+ ></span>`}render(){let t=this._remainingTime<=0,e=Math.floor(this._remainingTime/1e3)+1;return t?(0,i.dy)`<mdn-button>${this.l10n`Rescan`}</mdn-button>`:(0,i.dy)` <mdn-button disabled .icon=${this._icon(100*e/60)}
6
+ >${this.l10n`Wait a minute to rescan`}</mdn-button
7
+ >`}};customElements.define("mdn-observatory-rescan-button",MDNObservatoryRescanButton)},13566:function(t,e,n){n.d(e,{o:()=>a});var i=n(32529);let a=t=>t??i.Ld},29892:function(t,e,n){n.d(e,{Z:()=>d});var i=n(14703),a=n(8081),r=n.n(a),s=n(23645),o=n.n(s),c=n(54681),l=o()(r());l.i(c.Z),l.push([t.id,"",""]);let d=(0,i.iv)([l.toString()])}};
8
+ //# sourceMappingURL=4045.ec4c143648ab2280.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"4045.ec4c143648ab2280.js","sources":["webpack://@mdn/fred/./components/observatory-rescan-button/element.js","webpack://@mdn/fred/./node_modules/lit-html/directives/if-defined.js","webpack://@mdn/fred/./components/observatory-rescan-button/element.css"],"sourcesContent":["import { LitElement, html } from \"lit\";\n\nimport \"../button/element.js\";\nimport { L10nMixin } from \"../../l10n/mixin.js\";\n\nimport styles from \"./element.css?lit\";\n\nexport class MDNObservatoryRescanButton extends L10nMixin(LitElement) {\n static styles = styles;\n static properties = {\n from: { type: Object }, // Date object\n duration: { type: Number },\n _remainingTime: { state: true },\n };\n\n constructor() {\n super();\n /** @type {Date} */\n this.from = new Date();\n /** @type {number} */\n this.duration = 60;\n /** @type {number} */\n this._remainingTime = 0;\n /** @type {NodeJS.Timer | null} */\n this._interval = null;\n }\n\n connectedCallback() {\n super.connectedCallback();\n this._remainingTime = this._calculateRemainingTime();\n this._interval = setInterval(() => {\n this._remainingTime = this._calculateRemainingTime();\n }, 1000);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n if (this._interval) {\n clearInterval(this._interval);\n this._interval = null;\n }\n }\n\n _calculateRemainingTime() {\n const endTime = this.from.getTime() + this.duration * 1000;\n return Math.max(0, endTime - Date.now());\n }\n\n /**\n *\n * @param {number} progressPercent\n */\n _icon(progressPercent) {\n return html`<span\n class=\"progress\"\n style=\" display: inline-block; width: 0.9rem; height: 0.9rem; border-radius: 50%; background: conic-gradient(light-dark(var(--color-gray-40), var(--color-gray-60)) 0grad, ${progressPercent}%, rgba(0,0,0,0) ${progressPercent}% 100%)\"\n ></span>`;\n }\n\n render() {\n const isExpired = this._remainingTime <= 0;\n const remainingSecs = Math.floor(this._remainingTime / 1000) + 1;\n const progressPercent = (remainingSecs * 100) / 60;\n\n return isExpired\n ? html`<mdn-button>${this.l10n`Rescan`}</mdn-button>`\n : html` <mdn-button disabled .icon=${this._icon(progressPercent)}\n >${this.l10n`Wait a minute to rescan`}</mdn-button\n >`;\n }\n}\n\ncustomElements.define(\n \"mdn-observatory-rescan-button\",\n MDNObservatoryRescanButton,\n);\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 { 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]!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[2]!../global/global.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// Module\n___CSS_LOADER_EXPORT___.push([module.id, ``, \"\"]);\n// Exports\nexport default css([___CSS_LOADER_EXPORT___.toString()]);\n"],"names":["MDNObservatoryRescanButton","Object","Number","Date","setInterval","clearInterval","Math","customElements"],"mappings":";0NAOO,IAAMA,2BAAN,MAAMA,kCAAmC,QAAU,IAAU,EAClE,OAAO,OAAS,GAAM,AAAC,AACvB,QAAO,WAAa,CAClB,KAAM,CAAE,KAAMC,MAAO,EACrB,SAAU,CAAE,KAAMC,MAAO,EACzB,eAAgB,CAAE,MAAO,EAAK,CAChC,CAAE,AAEF,cAAc,CACZ,KAAK,GAEL,IAAI,CAAC,IAAI,CAAG,IAAIC,KAEhB,IAAI,CAAC,QAAQ,CAAG,GAEhB,IAAI,CAAC,cAAc,CAAG,EAEtB,IAAI,CAAC,SAAS,CAAG,IACnB,CAEA,mBAAoB,CAClB,KAAK,CAAC,oBACN,IAAI,CAAC,cAAc,CAAG,IAAI,CAAC,uBAAuB,GAClD,IAAI,CAAC,SAAS,CAAGC,YAAY,KAC3B,IAAI,CAAC,cAAc,CAAG,IAAI,CAAC,uBAAuB,EACpD,EAAG,IACL,CAEA,sBAAuB,CACrB,KAAK,CAAC,uBACF,IAAI,CAAC,SAAS,GAChBC,cAAc,IAAI,CAAC,SAAS,EAC5B,IAAI,CAAC,SAAS,CAAG,KAErB,CAEA,yBAA0B,CAExB,OAAOC,KAAK,GAAG,CAAC,EAAG,AADH,IAAI,CAAC,IAAI,CAAC,OAAO,GAAK,AAAgB,IAAhB,IAAI,CAAC,QAAQ,CACtBH,KAAK,GAAG,GACvC,CAMA,MAAM,CAAe,CAAE,CACrB,MAAO,QAAI,CAAC;;kLAEkK,EAAE,EAAgB,iBAAiB,EAAE,EAAgB;YAC3N,CAAC,AACX,CAEA,QAAS,CACP,IAAM,EAAY,IAAI,CAAC,cAAc,EAAI,EACnC,EAAgBG,KAAK,KAAK,CAAC,IAAI,CAAC,cAAc,CAAG,KAAQ,EAG/D,OAAO,EACH,QAAI,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CACnD,QAAI,CAAC,4BAA4B,EAAE,IAAI,CAAC,KAAK,CAJzB,AAAiB,IAAhB,EAAuB,IAImB;WAC5D,EAAE,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;SACvC,CAAC,AACR,CACF,EAEAC,eAAe,MAAM,CACnB,gCACAP,mFCrEC,IAAM,EAAE,GAAG,GAAG,IAAC,0GCAd,EAA0B,IAA4B,KAC1D,EAAwB,CAAC,CAAC,GAAiC,EAE3D,EAAwB,IAAI,CAAC,CAAC,EAAO,EAAE,CAAE,GAAI,GAAG,EAEhD,MAAe,SAAI,CAAC,EAAwB,QAAQ,GAAG"}
@@ -0,0 +1,34 @@
1
+ /*! For license information please see 4531.5f4701b319065b2b.js.LICENSE.txt */
2
+ export const __webpack_ids__=["4531"];export const __webpack_modules__={54681:function(r,o,t){t.d(o,{Z:()=>n});var e=t(8081),a=t.n(e),i=t(23645),s=t.n(i)()(a());s.push([r.id,"*,:after,:before{box-sizing:border-box}button,input,select,textarea{font:inherit}button{cursor:pointer}img{height:auto;max-width:100%}a{color:var(--color-link-normal)}[hidden]{display:none!important}",""]);let n=s.toString()},62249:function(r,o,t){t.d(o,{Z:()=>n});var e=t(8081),a=t.n(e),i=t(23645),s=t.n(i)()(a());s.push([r.id,".visually-hidden{border:0!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:1px!important;clip:rect(1px,1px,1px,1px)!important;clip-path:inset(50%)!important}",""]);let n=s.toString()},14793:function(r,o,t){t.r(o),t.d(o,{MDNObservatoryForm:()=>MDNObservatoryForm});var e=t(14703),a=t(51968);t(42678),t(50272);var i=t(81008);let s={TypeError:"Observatory is currently down."};let MDNObservatoryForm=class MDNObservatoryForm extends e.oi{static styles=i.Z;static properties={_queryRunning:{type:Boolean,state:!0},_hostname:{type:String,state:!0},_errorMessage:{type:String,state:!0}};constructor(){super(),this._queryRunning=!1,this._hostname="",this._errorMessage=""}inputRef=(0,a.V)();firstUpdated(){this.inputRef.value?.focus()}async _handleSubmit(r){r.preventDefault(),this._errorMessage="";let o=this.inputRef.value;if(!o?.value.trim()){this._errorMessage="Please enter a valid hostname";return}let t=o.value.trim();try{let r=new URL(t);this._hostname=r.hostname.trim()||t}catch{this._hostname=t}this._queryRunning=!0;try{let r=`https://observatory-api.mdn.mozilla.net/api/v2/analyze?host=${encodeURIComponent(this._hostname)}`,o=await fetch(r,{method:"POST"});if(!o.ok){let r=await o.json();throw Error(`Request failed: ${r.message}`)}globalThis.location.href=`/en-US/observatory/analyze?host=${encodeURIComponent(this._hostname)}`}catch(r){this._errorMessage=`${s[r.name]||"message"in r?r.message:r}`}finally{this._queryRunning=!1}}render(){return this._queryRunning?(0,e.dy)`
3
+ <label class="visually-hidden" for="progress-bar">
4
+ Scanning ${this._hostname} </label
5
+ ><mdn-progress-bar id="progress-bar"></mdn-progress-bar>
6
+ `:(0,e.dy)`
7
+ <form @submit=${this._handleSubmit} class="observatory-form">
8
+ <div class="observatory-form__input-group">
9
+ <label htmlFor="host" class="visually-hidden">
10
+ Domain name or URL
11
+ </label>
12
+ <input
13
+ class="input observatory-form__input"
14
+ placeholder="Scan a website for free (e.g. mdn.dev)"
15
+ type="text"
16
+ name="host"
17
+ id="host"
18
+ .value=${this._hostname}
19
+ autofocus
20
+ ${(0,a.i)(this.inputRef)}
21
+ />
22
+ <button
23
+ class="button observatory-form__submit"
24
+ type="submit"
25
+ ?disabled=${this._queryRunning}
26
+ data-variant="primary"
27
+ >
28
+ Scan
29
+ </button>
30
+ </div>
31
+ </form>
32
+ ${this._errorMessage?(0,e.dy)`<div class="error">${this._errorMessage}</div>`:e.Ld}
33
+ `}};customElements.define("mdn-observatory-form",MDNObservatoryForm)},13566:function(r,o,t){t.d(o,{o:()=>a});var e=t(32529);let a=r=>r??e.Ld},81008:function(r,o,t){t.d(o,{Z:()=>u});var e=t(14703),a=t(8081),i=t.n(a),s=t(23645),n=t.n(s),l=t(54681),d=t(56718),m=t(62249),p=n()(i());p.i(l.Z),p.i(d.Z),p.i(m.Z),p.push([r.id,':host{font:400 var(--base-font-size) var(--font-body);--border-radius:0.3rem}.observatory-form__input-group{display:flex;height:3rem}.observatory-form__input-group :focus-visible{outline:1px solid var(--observatory-accent);outline-offset:-1px;outline-width:1px}.observatory-form__input-group ::placeholder{color:var(--color-text-secondary);opacity:.8}.observatory-form__input-group .observatory-form__input{flex-grow:1;font:inherit;padding:0 .75rem;width:100%;--csstools-light-dark-toggle--0:var(--csstools-color-scheme--light) var(--color-gray-05);background-color:var(--csstools-light-dark-toggle--0,var(--color-gray-90));border:1px solid var(--color-border-primary);border-bottom-left-radius:var(--border-radius);border-top-left-radius:var(--border-radius)}@supports (color:light-dark(red,red)){.observatory-form__input-group .observatory-form__input{background-color:light-dark(var(--color-gray-90),var(--color-gray-05))}}:is(.observatory-form__input-group .observatory-form__input)::placeholder{overflow-x:hidden;text-overflow:ellipsis}.observatory-form__input-group .observatory-form__submit{border:none;border-radius:0 var(--border-radius) var(--border-radius) 0;border-bottom-right-radius:var(--border-radius);border-top-right-radius:var(--border-radius);font-size:var(--font-size-normal);font-weight:var(--font-weight-bold);height:unset;padding:0 2rem}.error{color:var(--form-invalid-color);margin-top:.5rem}.error:before{background-color:var(--form-invalid-color);content:"";display:inline-block;height:1.15rem;margin-bottom:.25rem;margin-right:.5rem;-webkit-mask-image:var(--alert-circle-img);mask-image:var(--alert-circle-img);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;vertical-align:middle;width:1.5em}',""]);let u=(0,e.iv)([p.toString()])}};
34
+ //# sourceMappingURL=4531.5f4701b319065b2b.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"4531.5f4701b319065b2b.js","sources":["webpack://@mdn/fred/./components/global/global.css?272a","webpack://@mdn/fred/./components/visually-hidden/global.css?9b14","webpack://@mdn/fred/./components/observatory-form/element.js","webpack://@mdn/fred/./node_modules/lit-html/directives/if-defined.js","webpack://@mdn/fred/./components/observatory-form/element.css"],"sourcesContent":["// 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, `*,:after,:before{box-sizing:border-box}button,input,select,textarea{font:inherit}button{cursor:pointer}img{height:auto;max-width:100%}a{color:var(--color-link-normal)}[hidden]{display:none!important}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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, `.visually-hidden{border:0!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:1px!important;clip:rect(1px,1px,1px,1px)!important;clip-path:inset(50%)!important}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","import { LitElement, html, nothing } from \"lit\";\nimport { createRef, ref } from \"lit/directives/ref.js\";\nimport \"../progress-bar/element.js\";\nimport \"../button/element.js\";\n\nimport styles from \"./element.css?lit\";\n\nconst ERROR_MAP = {\n TypeError: \"Observatory is currently down.\", // `fetch()` errors catch-all\n};\n\nexport class MDNObservatoryForm extends LitElement {\n static styles = styles;\n\n static properties = {\n _queryRunning: { type: Boolean, state: true },\n _hostname: { type: String, state: true },\n _errorMessage: { type: String, state: true },\n };\n\n constructor() {\n super();\n this._queryRunning = false;\n this._hostname = \"\";\n this._errorMessage = \"\";\n }\n /** @type {import(\"@lit\").Ref<HTMLInputElement>} */\n inputRef = createRef();\n\n firstUpdated() {\n this.inputRef.value?.focus();\n }\n\n /**\n * @param {Event} event\n */\n async _handleSubmit(event) {\n event.preventDefault();\n this._errorMessage = \"\";\n const input = this.inputRef.value;\n if (!input?.value.trim()) {\n this._errorMessage = \"Please enter a valid hostname\";\n return;\n }\n\n const host = input.value.trim();\n try {\n // tolerate url-style host values and pick out the hostname part\n const url = new URL(host);\n this._hostname = url.hostname.trim() || host;\n } catch {\n this._hostname = host;\n }\n this._queryRunning = true;\n try {\n const apiUrl = `https://observatory-api.mdn.mozilla.net/api/v2/analyze?host=${encodeURIComponent(\n this._hostname,\n )}`;\n const response = await fetch(apiUrl, { method: \"POST\" });\n if (!response.ok) {\n const json = await response.json();\n throw new Error(`Request failed: ${json.message}`);\n }\n globalThis.location.href = `/en-US/observatory/analyze?host=${encodeURIComponent(\n this._hostname,\n )}`;\n } catch (error) {\n // @ts-expect-error\n this._errorMessage = `${ERROR_MAP[error.name] || \"message\" in error ? error[\"message\"] : error}`;\n } finally {\n this._queryRunning = false;\n }\n }\n\n render() {\n return this._queryRunning\n ? html`\n <label class=\"visually-hidden\" for=\"progress-bar\">\n Scanning ${this._hostname} </label\n ><mdn-progress-bar id=\"progress-bar\"></mdn-progress-bar>\n `\n : html`\n <form @submit=${this._handleSubmit} class=\"observatory-form\">\n <div class=\"observatory-form__input-group\">\n <label htmlFor=\"host\" class=\"visually-hidden\">\n Domain name or URL\n </label>\n <input\n class=\"input observatory-form__input\"\n placeholder=\"Scan a website for free (e.g. mdn.dev)\"\n type=\"text\"\n name=\"host\"\n id=\"host\"\n .value=${this._hostname}\n autofocus\n ${ref(this.inputRef)}\n />\n <button\n class=\"button observatory-form__submit\"\n type=\"submit\"\n ?disabled=${this._queryRunning}\n data-variant=\"primary\"\n >\n Scan\n </button>\n </div>\n </form>\n ${this._errorMessage\n ? html`<div class=\"error\">${this._errorMessage}</div>`\n : nothing}\n `;\n }\n}\n\ncustomElements.define(\"mdn-observatory-form\", MDNObservatoryForm);\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 { 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]!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[2]!../global/global.css\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_1___ from \"-!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[2]!../button/server.css\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_2___ from \"-!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[2]!../visually-hidden/global.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___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_2___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{font:400 var(--base-font-size) var(--font-body);--border-radius:0.3rem}.observatory-form__input-group{display:flex;height:3rem}.observatory-form__input-group :focus-visible{outline:1px solid var(--observatory-accent);outline-offset:-1px;outline-width:1px}.observatory-form__input-group ::placeholder{color:var(--color-text-secondary);opacity:.8}.observatory-form__input-group .observatory-form__input{flex-grow:1;font:inherit;padding:0 .75rem;width:100%;--csstools-light-dark-toggle--0:var(--csstools-color-scheme--light) var(--color-gray-05);background-color:var(--csstools-light-dark-toggle--0,var(--color-gray-90));border:1px solid var(--color-border-primary);border-bottom-left-radius:var(--border-radius);border-top-left-radius:var(--border-radius)}@supports (color:light-dark(red,red)){.observatory-form__input-group .observatory-form__input{background-color:light-dark(var(--color-gray-90),var(--color-gray-05))}}:is(.observatory-form__input-group .observatory-form__input)::placeholder{overflow-x:hidden;text-overflow:ellipsis}.observatory-form__input-group .observatory-form__submit{border:none;border-radius:0 var(--border-radius) var(--border-radius) 0;border-bottom-right-radius:var(--border-radius);border-top-right-radius:var(--border-radius);font-size:var(--font-size-normal);font-weight:var(--font-weight-bold);height:unset;padding:0 2rem}.error{color:var(--form-invalid-color);margin-top:.5rem}.error:before{background-color:var(--form-invalid-color);content:\"\";display:inline-block;height:1.15rem;margin-bottom:.25rem;margin-right:.5rem;-webkit-mask-image:var(--alert-circle-img);mask-image:var(--alert-circle-img);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;vertical-align:middle;width:1.5em}`, \"\"]);\n// Exports\nexport default css([___CSS_LOADER_EXPORT___.toString()]);\n"],"names":["MDNObservatoryForm","Boolean","String","URL","encodeURIComponent","fetch","Error","globalThis","customElements"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export const __webpack_ids__=["476"];export const __webpack_modules__={32013:function(i,t,e){e.r(t),e.d(t,{MDNSwitch:()=>MDNSwitch});var c=e(14703),s=e(71437);let MDNSwitch=class MDNSwitch extends c.oi{static styles=s.Z;static properties={label:{type:String},checked:{type:Boolean,reflect:!0},disabled:{type:Boolean}};constructor(){super(),this.label="",this.checked=!1,this.disabled=!1}_toggle(){this.dispatchEvent(new Event("toggle",{bubbles:!0,composed:!0}))}render(){return(0,c.dy)` <label class="switch">
1
+ export const __webpack_ids__=["476"];export const __webpack_modules__={32013:function(i,t,e){e.r(t),e.d(t,{MDNSwitch:()=>MDNSwitch});var s=e(14703),c=e(71437);let MDNSwitch=class MDNSwitch extends s.oi{static styles=c.Z;static properties={label:{type:String},checked:{type:Boolean,reflect:!0},disabled:{type:Boolean}};constructor(){super(),this.label="",this.checked=!1,this.disabled=!1}_toggle(){this.dispatchEvent(new Event("toggle",{bubbles:!0,composed:!0}))}render(){return(0,s.dy)` <label class="switch">
2
2
  <input
3
3
  class="switch__input"
4
4
  type="checkbox"
@@ -7,5 +7,5 @@ export const __webpack_ids__=["476"];export const __webpack_modules__={32013:fun
7
7
  @change=${this._toggle}
8
8
  ></input>
9
9
  <slot></slot>
10
- </label>`}};customElements.define("mdn-switch",MDNSwitch)},71437:function(i,t,e){e.d(t,{Z:()=>r});var c=e(14703),s=e(8081),a=e.n(s),o=e(23645),n=e.n(o)()(a());n.push([i.id,'@property --switch-position{syntax:"<percentage>";inherits:false;initial-value:0}.switch{cursor:pointer;display:flex;gap:.5em;place-items:center}.switch__input{--switch-size:1.25em;appearance:none;background-color:var(--color-text-secondary);background-image:radial-gradient(circle at calc(var(--switch-size)/2),var(--color-background-primary) calc((var(--switch-size)/2)*.8),#0000 calc((var(--switch-size)/2)*.8 + 1px));background-position:var(--switch-position) 0;background-repeat:no-repeat;background-size:var(--switch-size);border-radius:calc(infinity*1px);display:inline-block;height:var(--switch-size);margin:0;transition:--switch-position .2s;width:calc(var(--switch-size)*1.6)}.switch__input:checked{--switch-position:100%;background-color:var(--color-link-normal)}.switch__input:focus-visible{outline:2px solid var(--color-link-normal);outline-offset:2px}.switch__input:active:not(:disabled){filter:brightness(1.2)}.switch__input:disabled{opacity:.7}',""]);let r=(0,c.iv)([n.toString()])}};
11
- //# sourceMappingURL=476.0de6391161b814ad.js.map
10
+ </label>`}};customElements.define("mdn-switch",MDNSwitch)},71437:function(i,t,e){e.d(t,{Z:()=>n});var s=e(14703),c=e(8081),a=e.n(c),o=e(23645),r=e.n(o)()(a());r.push([i.id,'@property --switch-position{syntax:"<percentage>";inherits:false;initial-value:0}.switch{cursor:pointer;display:flex;gap:.5em;place-items:center}.switch__input{--switch-size:1.25em;appearance:none;background-color:var(--color-text-secondary);background-image:radial-gradient(circle at calc(var(--switch-size)/2),var(--color-background-primary) calc((var(--switch-size)/2)*.8),#0000 calc((var(--switch-size)/2)*.8 + 1px));background-position:var(--switch-position) 0;background-repeat:no-repeat;background-size:var(--switch-size);border-radius:var(--radius-full);display:inline-block;height:var(--switch-size);margin:0;transition:--switch-position .2s;width:calc(var(--switch-size)*1.6)}.switch__input:checked{--switch-position:100%;background-color:var(--color-link-normal)}.switch__input:focus-visible{outline:2px solid var(--color-link-normal);outline-offset:2px}.switch__input:active:not(:disabled){filter:brightness(1.2)}.switch__input:disabled{opacity:.7}',""]);let n=(0,s.iv)([r.toString()])}};
11
+ //# sourceMappingURL=476.67faa1bd02f2479c.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"476.0de6391161b814ad.js","sources":["webpack://@mdn/fred/./components/switch/element.js","webpack://@mdn/fred/./components/switch/element.css"],"sourcesContent":["import { LitElement, html } from \"lit\";\n\nimport styles from \"./element.css?lit\";\n\nexport class MDNSwitch extends LitElement {\n static styles = styles;\n\n static properties = {\n label: { type: String },\n checked: { type: Boolean, reflect: true },\n disabled: { type: Boolean },\n };\n\n constructor() {\n super();\n this.label = \"\";\n this.checked = false;\n this.disabled = false;\n }\n\n _toggle() {\n this.dispatchEvent(new Event(\"toggle\", { bubbles: true, composed: true }));\n }\n\n render() {\n return html` <label class=\"switch\">\n <input\n class=\"switch__input\"\n type=\"checkbox\"\n ?checked=${this.checked}\n ?disabled=${this.disabled}\n @change=${this._toggle}\n ></input>\n <slot></slot>\n </label>`;\n }\n}\n\ncustomElements.define(\"mdn-switch\", MDNSwitch);\n","import { css } from \"lit\";\n// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@property --switch-position{syntax:\"<percentage>\";inherits:false;initial-value:0}.switch{cursor:pointer;display:flex;gap:.5em;place-items:center}.switch__input{--switch-size:1.25em;appearance:none;background-color:var(--color-text-secondary);background-image:radial-gradient(circle at calc(var(--switch-size)/2),var(--color-background-primary) calc((var(--switch-size)/2)*.8),#0000 calc((var(--switch-size)/2)*.8 + 1px));background-position:var(--switch-position) 0;background-repeat:no-repeat;background-size:var(--switch-size);border-radius:calc(infinity*1px);display:inline-block;height:var(--switch-size);margin:0;transition:--switch-position .2s;width:calc(var(--switch-size)*1.6)}.switch__input:checked{--switch-position:100%;background-color:var(--color-link-normal)}.switch__input:focus-visible{outline:2px solid var(--color-link-normal);outline-offset:2px}.switch__input:active:not(:disabled){filter:brightness(1.2)}.switch__input:disabled{opacity:.7}`, \"\"]);\n// Exports\nexport default css([___CSS_LOADER_EXPORT___.toString()]);\n"],"names":["MDNSwitch","s","String","Boolean","Event","customElements","c"],"mappings":"+JAIO,IAAMA,UAAN,MAAMA,kBAAkB,IAAU,CACvC,OAAO,OAASC,EAAA,CAAM,AAAC,AAEvB,QAAO,WAAa,CAClB,MAAO,CAAE,KAAMC,MAAO,EACtB,QAAS,CAAE,KAAMC,QAAS,QAAS,EAAK,EACxC,SAAU,CAAE,KAAMA,OAAQ,CAC5B,CAAE,AAEF,cAAc,CACZ,KAAK,GACL,IAAI,CAAC,KAAK,CAAG,GACb,IAAI,CAAC,OAAO,CAAG,GACf,IAAI,CAAC,QAAQ,CAAG,EAClB,CAEA,SAAU,CACR,IAAI,CAAC,aAAa,CAAC,IAAIC,MAAM,SAAU,CAAE,QAAS,GAAM,SAAU,EAAK,GACzE,CAEA,QAAS,CACP,MAAO,QAAI,CAAC;;;;iBAIC,EAAE,IAAI,CAAC,OAAO,CAAC;kBACd,EAAE,IAAI,CAAC,QAAQ,CAAC;gBAClB,EAAE,IAAI,CAAC,OAAO,CAAC;;;YAGnB,CAAC,AACX,CACF,EAEAC,eAAe,MAAM,CAAC,aAAcL,U,sFClChC,EAA0B,A,SAA4B,KAE1D,EAAwB,IAAI,CAAC,CAAC,EAAO,EAAE,CAAE,m8BAAo8B,GAAG,EAEh/B,MAAe,GAAAM,EAAA,IAAI,CAAC,EAAwB,QAAQ,GAAG,C"}
1
+ {"version":3,"file":"476.67faa1bd02f2479c.js","sources":["webpack://@mdn/fred/./components/switch/element.js","webpack://@mdn/fred/./components/switch/element.css"],"sourcesContent":["import { LitElement, html } from \"lit\";\n\nimport styles from \"./element.css?lit\";\n\nexport class MDNSwitch extends LitElement {\n static styles = styles;\n\n static properties = {\n label: { type: String },\n checked: { type: Boolean, reflect: true },\n disabled: { type: Boolean },\n };\n\n constructor() {\n super();\n this.label = \"\";\n this.checked = false;\n this.disabled = false;\n }\n\n _toggle() {\n this.dispatchEvent(new Event(\"toggle\", { bubbles: true, composed: true }));\n }\n\n render() {\n return html` <label class=\"switch\">\n <input\n class=\"switch__input\"\n type=\"checkbox\"\n ?checked=${this.checked}\n ?disabled=${this.disabled}\n @change=${this._toggle}\n ></input>\n <slot></slot>\n </label>`;\n }\n}\n\ncustomElements.define(\"mdn-switch\", MDNSwitch);\n","import { css } from \"lit\";\n// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@property --switch-position{syntax:\"<percentage>\";inherits:false;initial-value:0}.switch{cursor:pointer;display:flex;gap:.5em;place-items:center}.switch__input{--switch-size:1.25em;appearance:none;background-color:var(--color-text-secondary);background-image:radial-gradient(circle at calc(var(--switch-size)/2),var(--color-background-primary) calc((var(--switch-size)/2)*.8),#0000 calc((var(--switch-size)/2)*.8 + 1px));background-position:var(--switch-position) 0;background-repeat:no-repeat;background-size:var(--switch-size);border-radius:var(--radius-full);display:inline-block;height:var(--switch-size);margin:0;transition:--switch-position .2s;width:calc(var(--switch-size)*1.6)}.switch__input:checked{--switch-position:100%;background-color:var(--color-link-normal)}.switch__input:focus-visible{outline:2px solid var(--color-link-normal);outline-offset:2px}.switch__input:active:not(:disabled){filter:brightness(1.2)}.switch__input:disabled{opacity:.7}`, \"\"]);\n// Exports\nexport default css([___CSS_LOADER_EXPORT___.toString()]);\n"],"names":["MDNSwitch","String","Boolean","Event","customElements"],"mappings":"+JAIO,IAAMA,UAAN,MAAMA,kBAAkB,IAAU,CACvC,OAAO,OAAS,GAAM,AAAC,AAEvB,QAAO,WAAa,CAClB,MAAO,CAAE,KAAMC,MAAO,EACtB,QAAS,CAAE,KAAMC,QAAS,QAAS,EAAK,EACxC,SAAU,CAAE,KAAMA,OAAQ,CAC5B,CAAE,AAEF,cAAc,CACZ,KAAK,GACL,IAAI,CAAC,KAAK,CAAG,GACb,IAAI,CAAC,OAAO,CAAG,GACf,IAAI,CAAC,QAAQ,CAAG,EAClB,CAEA,SAAU,CACR,IAAI,CAAC,aAAa,CAAC,IAAIC,MAAM,SAAU,CAAE,QAAS,GAAM,SAAU,EAAK,GACzE,CAEA,QAAS,CACP,MAAO,QAAI,CAAC;;;;iBAIC,EAAE,IAAI,CAAC,OAAO,CAAC;kBACd,EAAE,IAAI,CAAC,QAAQ,CAAC;gBAClB,EAAE,IAAI,CAAC,OAAO,CAAC;;;YAGnB,CAAC,AACX,CACF,EAEAC,eAAe,MAAM,CAAC,aAAcJ,U,sFClChC,EAA0B,A,SAA4B,KAE1D,EAAwB,IAAI,CAAC,CAAC,EAAO,EAAE,CAAE,m8BAAo8B,GAAG,EAEh/B,MAAe,SAAI,CAAC,EAAwB,QAAQ,GAAG,C"}
@@ -21,5 +21,5 @@ export const __webpack_ids__=["4849"];export const __webpack_modules__={68543:fu
21
21
  </a>
22
22
  <mdn-placement-note></mdn-placement-note>
23
23
  </section>
24
- </div>`}};customElements.define("mdn-placement-bottom",MDNPlacementBottom)},49104:function(t,o,e){e.d(o,{Z:()=>m});var a=e(14703),r=e(8081),l=e.n(r),n=e(23645),c=e.n(n)()(l());c.push([t.id,'.bottom-placement{--bottom-background-light:var(--color-background-primary);--bottom-color-light:var(--color-text-primary);--bottom-background-dark:var(--color-background-primary);--bottom-color-dark:var(--color-text-primary);--csstools-light-dark-toggle--0:var(--csstools-color-scheme--light) var(--bottom-background-dark);--bottom-background:var(--csstools-light-dark-toggle--0,var(--bottom-background-light));--csstools-light-dark-toggle--1:var(--csstools-color-scheme--light) var(--bottom-color-dark);--bottom-color:var(--csstools-light-dark-toggle--1,var(--bottom-color-light));background-color:var(--bottom-background);padding-inline:var(--layout-side-padding)}@supports (color:light-dark(red,red)){.bottom-placement{--bottom-background:light-dark(var(--bottom-background-light),var(--bottom-background-dark));--bottom-color:light-dark(var(--bottom-color-light),var(--bottom-color-dark))}}@supports not (color:light-dark(tan,tan)){.bottom-placement *{--csstools-light-dark-toggle--0:var(--csstools-color-scheme--light) var(--bottom-background-dark);--bottom-background:var(--csstools-light-dark-toggle--0,var(--bottom-background-light));--csstools-light-dark-toggle--1:var(--csstools-color-scheme--light) var(--bottom-color-dark);--bottom-color:var(--csstools-light-dark-toggle--1,var(--bottom-color-light))}}.bottom-placement .placement-container{column-gap:3rem;display:grid;grid-template-areas:"nope pong note" "nope pong no";grid-template-columns:auto auto auto;margin:0 auto;padding:0 1rem}@media (max-width:1441px){.bottom-placement .placement-container{grid-template-areas:"pong note" "pong no";grid-template-columns:auto max-content;grid-template-rows:auto 2rem}}@media (max-width:769px){.bottom-placement .placement-container{grid-template-areas:"pong" "note";grid-template-columns:auto;grid-template-rows:auto 2rem}}:is(.bottom-placement .placement-container) .placement-link{display:flex;grid-area:pong;justify-content:center}:is(:is(.bottom-placement .placement-container) .placement-link) img{display:block;height:auto;max-width:100%}:is(.bottom-placement .placement-container) mdn-placement-note{grid-area:note;margin:0 0 auto auto}',""]);let m=(0,a.iv)([c.toString()])}};
25
- //# sourceMappingURL=4849.4da5f274175b7cc7.js.map
24
+ </div>`}};customElements.define("mdn-placement-bottom",MDNPlacementBottom)},49104:function(t,o,e){e.d(o,{Z:()=>m});var a=e(14703),r=e(8081),l=e.n(r),n=e(23645),c=e.n(n)()(l());c.push([t.id,'.bottom-placement{--bottom-background-light:var(--color-background-primary);--bottom-color-light:var(--color-text-primary);--bottom-background-dark:var(--color-background-primary);--bottom-color-dark:var(--color-text-primary);--csstools-light-dark-toggle--0:var(--csstools-color-scheme--light) var(--bottom-background-dark);--bottom-background:var(--csstools-light-dark-toggle--0,var(--bottom-background-light));--csstools-light-dark-toggle--1:var(--csstools-color-scheme--light) var(--bottom-color-dark);--bottom-color:var(--csstools-light-dark-toggle--1,var(--bottom-color-light));background-color:var(--bottom-background);padding-inline:var(--layout-side-padding)}@supports (color:light-dark(red,red)){.bottom-placement{--bottom-background:light-dark(var(--bottom-background-light),var(--bottom-background-dark));--bottom-color:light-dark(var(--bottom-color-light),var(--bottom-color-dark))}}@supports not (color:light-dark(tan,tan)){.bottom-placement *{--csstools-light-dark-toggle--0:var(--csstools-color-scheme--light) var(--bottom-background-dark);--bottom-background:var(--csstools-light-dark-toggle--0,var(--bottom-background-light));--csstools-light-dark-toggle--1:var(--csstools-color-scheme--light) var(--bottom-color-dark);--bottom-color:var(--csstools-light-dark-toggle--1,var(--bottom-color-light))}}.bottom-placement .placement-container{column-gap:3rem;display:grid;grid-template-areas:"nope pong note" "nope pong no";grid-template-columns:auto auto auto;margin:0 auto;padding:0 1rem}@media (width <= 1441px){.bottom-placement .placement-container{grid-template-areas:"pong note" "pong no";grid-template-columns:auto max-content;grid-template-rows:auto 2rem}}@media (width <= 769px){.bottom-placement .placement-container{grid-template-areas:"pong" "note";grid-template-columns:auto;grid-template-rows:auto 2rem}}:is(.bottom-placement .placement-container) .placement-link{display:flex;grid-area:pong;justify-content:center}:is(:is(.bottom-placement .placement-container) .placement-link) img{display:block;height:auto;max-width:100%}:is(.bottom-placement .placement-container) mdn-placement-note{grid-area:note;margin:0 0 auto auto}',""]);let m=(0,a.iv)([c.toString()])}};
25
+ //# sourceMappingURL=4849.2d0d91db57dc6419.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"4849.4da5f274175b7cc7.js","sources":["webpack://@mdn/fred/./components/placement-bottom/element.js","webpack://@mdn/fred/./components/placement-bottom/element.css"],"sourcesContent":["import { LitElement, html, nothing } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport { styleMap } from \"lit/directives/style-map.js\";\n\nimport \"../placement-note/element.js\";\nimport \"../placement-no/element.js\";\n\nimport { PlacementMixin } from \"../placement/mixin.js\";\n\nimport styles from \"./element.css?lit\";\n\n/**\n * @import * as Placements from \"../placement/types.js\";\n */\n\nexport class MDNPlacementBottom extends PlacementMixin(LitElement) {\n static styles = styles;\n\n /**\n *\n * @param {Placements.PlacementContextData} placementContext\n * @returns\n */\n renderComplete(placementContext) {\n const data = placementContext?.hpFooter || placementContext?.bottom;\n if (!data) {\n return nothing;\n }\n const { status, click, view, image, alt, colors, version } = data;\n if (status !== \"success\") {\n return nothing;\n }\n if (!this._viewedUrl) {\n this._viewedUrl = view;\n this._version = version;\n }\n const { backgroundColor, textColor } = colors || {};\n const styles = Object.fromEntries(\n [\n [\"--bottom-background\", backgroundColor],\n [\"--bottom-color\", textColor],\n ].filter(([_, v]) => Boolean(v)),\n );\n\n return html`<div\n ${ref(this._placementRef)}\n class=\"bottom-placement\"\n style=${styleMap(styles)}\n >\n <section class=\"placement-container\">\n <a\n class=\"placement-link\"\n data-glean=\"pong: pong-&gt;click top-banner\"\n href=${this.clickLink(click, version)}\n target=\"_blank\"\n rel=\"sponsored noreferrer\"\n >\n <img\n src=${this.imgLink(image)}\n aria-hidden=${!alt}\n alt=${alt || \"\"}\n width=\"728\"\n height=\"90\"\n />\n </a>\n <mdn-placement-note></mdn-placement-note>\n </section>\n </div>`;\n }\n}\n\ncustomElements.define(\"mdn-placement-bottom\", MDNPlacementBottom);\n","import { css } from \"lit\";\n// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.bottom-placement{--bottom-background-light:var(--color-background-primary);--bottom-color-light:var(--color-text-primary);--bottom-background-dark:var(--color-background-primary);--bottom-color-dark:var(--color-text-primary);--csstools-light-dark-toggle--0:var(--csstools-color-scheme--light) var(--bottom-background-dark);--bottom-background:var(--csstools-light-dark-toggle--0,var(--bottom-background-light));--csstools-light-dark-toggle--1:var(--csstools-color-scheme--light) var(--bottom-color-dark);--bottom-color:var(--csstools-light-dark-toggle--1,var(--bottom-color-light));background-color:var(--bottom-background);padding-inline:var(--layout-side-padding)}@supports (color:light-dark(red,red)){.bottom-placement{--bottom-background:light-dark(var(--bottom-background-light),var(--bottom-background-dark));--bottom-color:light-dark(var(--bottom-color-light),var(--bottom-color-dark))}}@supports not (color:light-dark(tan,tan)){.bottom-placement *{--csstools-light-dark-toggle--0:var(--csstools-color-scheme--light) var(--bottom-background-dark);--bottom-background:var(--csstools-light-dark-toggle--0,var(--bottom-background-light));--csstools-light-dark-toggle--1:var(--csstools-color-scheme--light) var(--bottom-color-dark);--bottom-color:var(--csstools-light-dark-toggle--1,var(--bottom-color-light))}}.bottom-placement .placement-container{column-gap:3rem;display:grid;grid-template-areas:\"nope pong note\" \"nope pong no\";grid-template-columns:auto auto auto;margin:0 auto;padding:0 1rem}@media (max-width:1441px){.bottom-placement .placement-container{grid-template-areas:\"pong note\" \"pong no\";grid-template-columns:auto max-content;grid-template-rows:auto 2rem}}@media (max-width:769px){.bottom-placement .placement-container{grid-template-areas:\"pong\" \"note\";grid-template-columns:auto;grid-template-rows:auto 2rem}}:is(.bottom-placement .placement-container) .placement-link{display:flex;grid-area:pong;justify-content:center}:is(:is(.bottom-placement .placement-container) .placement-link) img{display:block;height:auto;max-width:100%}:is(.bottom-placement .placement-container) mdn-placement-note{grid-area:note;margin:0 0 auto auto}`, \"\"]);\n// Exports\nexport default css([___CSS_LOADER_EXPORT___.toString()]);\n"],"names":["MDNPlacementBottom","Object","r","customElements"],"mappings":"yOAeO,IAAMA,mBAAN,MAAMA,0BAA2B,QAAe,IAAU,EAC/D,OAAO,OAAS,GAAM,AAAC,AAOvB,gBAAe,CAAgB,CAAE,CAC/B,IAAM,EAAO,GAAkB,UAAY,GAAkB,OAC7D,GAAI,CAAC,EACH,OAAO,IAAO,CAEhB,GAAM,CAAE,QAAM,CAAE,OAAK,CAAE,MAAI,CAAE,OAAK,CAAE,KAAG,CAAE,QAAM,CAAE,SAAO,CAAE,CAAG,EAC7D,GAAI,AAAW,YAAX,EACF,OAAO,IAAO,AAEX,KAAI,CAAC,UAAU,GAClB,IAAI,CAAC,UAAU,CAAG,EAClB,IAAI,CAAC,QAAQ,CAAG,GAElB,GAAM,CAAE,iBAAe,CAAE,WAAS,CAAE,CAAG,GAAU,CAAC,EAC5C,EAASC,OAAO,WAAW,CAC/B,CACE,CAAC,sBAAuB,EAAgB,CACxC,CAAC,iBAAkB,EAAU,CAC9B,CAAC,MAAM,CAAC,CAAC,CAAC,EAAG,EAAE,GAAK,EAAQ,IAG/B,MAAO,QAAI,CAAC;MACV,EAAE,GAAAC,EAAA,GAAI,IAAI,CAAC,aAAa,EAAE;;YAEpB,EAAE,QAAS,GAAQ;;;;;;eAMhB,EAAE,IAAI,CAAC,SAAS,CAAC,EAAO,GAAS;;;;;gBAKhC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAO;wBACd,EAAE,CAAC,EAAI;gBACf,EAAE,GAAO,GAAG;;;;;;;UAOlB,CAAC,AACT,CACF,EAEAC,eAAe,MAAM,CAAC,uBAAwBH,mB,sFCnE1C,EAA0B,A,SAA4B,KAE1D,EAAwB,IAAI,CAAC,CAAC,EAAO,EAAE,CAAE,2mEAA4mE,GAAG,EAExpE,MAAe,SAAI,CAAC,EAAwB,QAAQ,GAAG,C"}
1
+ {"version":3,"file":"4849.2d0d91db57dc6419.js","sources":["webpack://@mdn/fred/./components/placement-bottom/element.js","webpack://@mdn/fred/./components/placement-bottom/element.css"],"sourcesContent":["import { LitElement, html, nothing } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport { styleMap } from \"lit/directives/style-map.js\";\n\nimport \"../placement-note/element.js\";\nimport \"../placement-no/element.js\";\n\nimport { PlacementMixin } from \"../placement/mixin.js\";\n\nimport styles from \"./element.css?lit\";\n\n/**\n * @import * as Placements from \"../placement/types.js\";\n */\n\nexport class MDNPlacementBottom extends PlacementMixin(LitElement) {\n static styles = styles;\n\n /**\n *\n * @param {Placements.PlacementContextData} placementContext\n * @returns\n */\n renderComplete(placementContext) {\n const data = placementContext?.hpFooter || placementContext?.bottom;\n if (!data) {\n return nothing;\n }\n const { status, click, view, image, alt, colors, version } = data;\n if (status !== \"success\") {\n return nothing;\n }\n if (!this._viewedUrl) {\n this._viewedUrl = view;\n this._version = version;\n }\n const { backgroundColor, textColor } = colors || {};\n const styles = Object.fromEntries(\n [\n [\"--bottom-background\", backgroundColor],\n [\"--bottom-color\", textColor],\n ].filter(([_, v]) => Boolean(v)),\n );\n\n return html`<div\n ${ref(this._placementRef)}\n class=\"bottom-placement\"\n style=${styleMap(styles)}\n >\n <section class=\"placement-container\">\n <a\n class=\"placement-link\"\n data-glean=\"pong: pong-&gt;click top-banner\"\n href=${this.clickLink(click, version)}\n target=\"_blank\"\n rel=\"sponsored noreferrer\"\n >\n <img\n src=${this.imgLink(image)}\n aria-hidden=${!alt}\n alt=${alt || \"\"}\n width=\"728\"\n height=\"90\"\n />\n </a>\n <mdn-placement-note></mdn-placement-note>\n </section>\n </div>`;\n }\n}\n\ncustomElements.define(\"mdn-placement-bottom\", MDNPlacementBottom);\n","import { css } from \"lit\";\n// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.bottom-placement{--bottom-background-light:var(--color-background-primary);--bottom-color-light:var(--color-text-primary);--bottom-background-dark:var(--color-background-primary);--bottom-color-dark:var(--color-text-primary);--csstools-light-dark-toggle--0:var(--csstools-color-scheme--light) var(--bottom-background-dark);--bottom-background:var(--csstools-light-dark-toggle--0,var(--bottom-background-light));--csstools-light-dark-toggle--1:var(--csstools-color-scheme--light) var(--bottom-color-dark);--bottom-color:var(--csstools-light-dark-toggle--1,var(--bottom-color-light));background-color:var(--bottom-background);padding-inline:var(--layout-side-padding)}@supports (color:light-dark(red,red)){.bottom-placement{--bottom-background:light-dark(var(--bottom-background-light),var(--bottom-background-dark));--bottom-color:light-dark(var(--bottom-color-light),var(--bottom-color-dark))}}@supports not (color:light-dark(tan,tan)){.bottom-placement *{--csstools-light-dark-toggle--0:var(--csstools-color-scheme--light) var(--bottom-background-dark);--bottom-background:var(--csstools-light-dark-toggle--0,var(--bottom-background-light));--csstools-light-dark-toggle--1:var(--csstools-color-scheme--light) var(--bottom-color-dark);--bottom-color:var(--csstools-light-dark-toggle--1,var(--bottom-color-light))}}.bottom-placement .placement-container{column-gap:3rem;display:grid;grid-template-areas:\"nope pong note\" \"nope pong no\";grid-template-columns:auto auto auto;margin:0 auto;padding:0 1rem}@media (width <= 1441px){.bottom-placement .placement-container{grid-template-areas:\"pong note\" \"pong no\";grid-template-columns:auto max-content;grid-template-rows:auto 2rem}}@media (width <= 769px){.bottom-placement .placement-container{grid-template-areas:\"pong\" \"note\";grid-template-columns:auto;grid-template-rows:auto 2rem}}:is(.bottom-placement .placement-container) .placement-link{display:flex;grid-area:pong;justify-content:center}:is(:is(.bottom-placement .placement-container) .placement-link) img{display:block;height:auto;max-width:100%}:is(.bottom-placement .placement-container) mdn-placement-note{grid-area:note;margin:0 0 auto auto}`, \"\"]);\n// Exports\nexport default css([___CSS_LOADER_EXPORT___.toString()]);\n"],"names":["MDNPlacementBottom","Object","r","customElements"],"mappings":"yOAeO,IAAMA,mBAAN,MAAMA,0BAA2B,QAAe,IAAU,EAC/D,OAAO,OAAS,GAAM,AAAC,AAOvB,gBAAe,CAAgB,CAAE,CAC/B,IAAM,EAAO,GAAkB,UAAY,GAAkB,OAC7D,GAAI,CAAC,EACH,OAAO,IAAO,CAEhB,GAAM,CAAE,QAAM,CAAE,OAAK,CAAE,MAAI,CAAE,OAAK,CAAE,KAAG,CAAE,QAAM,CAAE,SAAO,CAAE,CAAG,EAC7D,GAAI,AAAW,YAAX,EACF,OAAO,IAAO,AAEX,KAAI,CAAC,UAAU,GAClB,IAAI,CAAC,UAAU,CAAG,EAClB,IAAI,CAAC,QAAQ,CAAG,GAElB,GAAM,CAAE,iBAAe,CAAE,WAAS,CAAE,CAAG,GAAU,CAAC,EAC5C,EAASC,OAAO,WAAW,CAC/B,CACE,CAAC,sBAAuB,EAAgB,CACxC,CAAC,iBAAkB,EAAU,CAC9B,CAAC,MAAM,CAAC,CAAC,CAAC,EAAG,EAAE,GAAK,EAAQ,IAG/B,MAAO,QAAI,CAAC;MACV,EAAE,GAAAC,EAAA,GAAI,IAAI,CAAC,aAAa,EAAE;;YAEpB,EAAE,QAAS,GAAQ;;;;;;eAMhB,EAAE,IAAI,CAAC,SAAS,CAAC,EAAO,GAAS;;;;;gBAKhC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAO;wBACd,EAAE,CAAC,EAAI;gBACf,EAAE,GAAO,GAAG;;;;;;;UAOlB,CAAC,AACT,CACF,EAEAC,eAAe,MAAM,CAAC,uBAAwBH,mB,sFCnE1C,EAA0B,A,SAA4B,KAE1D,EAAwB,IAAI,CAAC,CAAC,EAAO,EAAE,CAAE,ymEAA0mE,GAAG,EAEtpE,MAAe,SAAI,CAAC,EAAwB,QAAQ,GAAG,C"}
@@ -1,6 +1,6 @@
1
- export const __webpack_ids__=["5066"];export const __webpack_modules__={62249:function(r,e,t){t.d(e,{Z:()=>i});var a=t(8081),o=t.n(a),s=t(23645),d=t.n(s)()(o());d.push([r.id,".visually-hidden{border:0!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:1px!important;clip:rect(1px,1px,1px,1px)!important;clip-path:inset(50%)!important}",""]);let i=d.toString()},93305:function(r,e,t){t.r(e),t.d(e,{MDNObservatoryComparisonTable:()=>MDNObservatoryComparisonTable});var a=t(35470),o=t(14703),s=t(66176),d=t(28110),i=t(10337);let MDNObservatoryComparisonTable=class MDNObservatoryComparisonTable extends o.oi{static properties={result:{type:Object}};static styles=i.Z;constructor(){super(),this.result=null}_gradeDistributionTask=new a.iQ(this,{task:async()=>{try{let r=new URL(s._v+"/api/v2/grade_distribution"),e=await fetch(r);if(!e.ok){let r=`${e.status}: ${e.statusText}`;try{let t=await e.json();t.error&&(r=t.message)}catch{}throw Error(r)}return await e.json()}catch(r){throw console.log(r),Error("Observatory API request for comparison data failed")}},args:()=>[]});render(){return this.result?this._gradeDistributionTask.render({pending:()=>(0,o.dy)`<progress></progress>`,complete:r=>this.result?function({gradeDistribution:r,result:e}){let t=960/(r.length-1),a=100+t/2,s=function(r){let e=Math.max(...r.map(r=>r.count)),t=l(e,!1),a=l(t/7,!0),o=Math.ceil(Math.ceil(e/a)*a/a)+1,s=[];for(let r=0;r<o;r++)s.push(r*a);return s}(r),i=260/(s.length-1),n=Math.max(...s),g=r.map(r=>(0,o.dy)` <tr>
1
+ export const __webpack_ids__=["5066"];export const __webpack_modules__={62249:function(r,e,t){t.d(e,{Z:()=>d});var a=t(8081),o=t.n(a),s=t(23645),i=t.n(s)()(o());i.push([r.id,".visually-hidden{border:0!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:1px!important;clip:rect(1px,1px,1px,1px)!important;clip-path:inset(50%)!important}",""]);let d=i.toString()},93305:function(r,e,t){t.r(e),t.d(e,{MDNObservatoryComparisonTable:()=>MDNObservatoryComparisonTable});var a=t(35470),o=t(14703),s=t(66176),i=t(28110),d=t(10337);let MDNObservatoryComparisonTable=class MDNObservatoryComparisonTable extends o.oi{static properties={result:{type:Object}};static styles=d.Z;constructor(){super(),this.result=null}_gradeDistributionTask=new a.iQ(this,{task:async()=>{try{let r=new URL(s._v+"/api/v2/grade_distribution"),e=await fetch(r);if(!e.ok){let r=`${e.status}: ${e.statusText}`;try{let t=await e.json();t.error&&(r=t.message)}catch{}throw Error(r)}return await e.json()}catch(r){throw console.log(r),Error("Observatory API request for comparison data failed")}},args:()=>[]});render(){return this.result?this._gradeDistributionTask.render({pending:()=>(0,o.dy)`<progress></progress>`,complete:r=>this.result?function({gradeDistribution:r,result:e}){let t=960/(r.length-1),a=100+t/2,s=function(r){let e=Math.max(...r.map(r=>r.count)),t=l(e,!1),a=l(t/7,!0),o=Math.ceil(Math.ceil(e/a)*a/a)+1,s=[];for(let r=0;r<o;r++)s.push(r*a);return s}(r),d=260/(s.length-1),n=Math.max(...s),g=r.map(r=>(0,o.dy)` <tr>
2
2
  <th>
3
- ${(0,d.x8)(r.grade)}
3
+ ${(0,i.x8)(r.grade)}
4
4
  ${r.grade===e.scan.grade?"(Current grade)":""}
5
5
  </th>
6
6
  <td>${r.count} sites</td>
@@ -42,19 +42,19 @@ export const __webpack_ids__=["5066"];export const __webpack_modules__={62249:fu
42
42
  dy="1em"
43
43
  class="${["x-labels",r.grade===e.scan.grade?`current grade-${r.grade[0]?.toLowerCase()}`:void 0].filter(Boolean).join(" ")}"
44
44
  >
45
- ${(0,d.x8)(r.grade)}
45
+ ${(0,i.x8)(r.grade)}
46
46
  </text>
47
47
  </g>`)}
48
48
  </g>
49
49
  <g>
50
- ${r.map((r,s)=>{let d=260*(r.count/n);return(0,o.YP)` <rect
50
+ ${r.map((r,s)=>{let i=260*(r.count/n);return(0,o.YP)` <rect
51
51
  class="bar grade-${r.grade.replace(/[+-]/,"").toLowerCase()} ${r.grade===e.scan.grade?"current-grade":""}"
52
52
  x="${a+s*t-30}"
53
- y="${320-d-1}"
53
+ y="${320-i-1}"
54
54
  rx="4"
55
55
  ry="4"
56
56
  width="${60}"
57
- height="${d}"
57
+ height="${i}"
58
58
  ></rect>`})}
59
59
  </g>
60
60
  <g
@@ -65,7 +65,7 @@ export const __webpack_ids__=["5066"];export const __webpack_modules__={62249:fu
65
65
  >
66
66
  ${s.map((r,e)=>(0,o.YP)` <g
67
67
  class="tick tick-y"
68
- transform="translate(0, ${320-i*e})"
68
+ transform="translate(0, ${320-d*e})"
69
69
  >
70
70
  <line
71
71
  stroke="currentColor"
@@ -98,5 +98,5 @@ export const __webpack_ids__=["5066"];export const __webpack_modules__={62249:fu
98
98
  </g>
99
99
  </svg>
100
100
  `}
101
- `}({gradeDistribution:r,result:this.result}):o.Ld,error:r=>(0,o.dy)`<div class="error">${r}</div>`}):o.Ld}};function l(r,e){let t=Math.floor(Math.log10(r)),a=r/Math.pow(10,t);return(e?a<1.5?1:a<3?2:a<7?5:10:a<=1?1:a<=2?2:a<=5?5:10)*Math.pow(10,t)}customElements.define("mdn-observatory-comparison-table",MDNObservatoryComparisonTable)},10337:function(r,e,t){t.d(e,{Z:()=>g});var a=t(14703),o=t(8081),s=t.n(o),d=t(23645),i=t.n(d),l=t(62249),n=i()(s());n.i(l.Z),n.push([r.id,".grade{background:var(--grade-bg);border:1px solid var(--grade-border);border-radius:.2em;color:var(--grade-border);display:inline-block;font-size:1.7rem;font-weight:600;height:5rem;line-height:5rem;text-align:center;width:5rem}.grade-a{--grade-bg:var(--observatory-grade-a-bg);--grade-border:var(--observatory-grade-a-border)}.grade-b{--grade-bg:var(--observatory-grade-b-bg);--grade-border:var(--observatory-grade-b-border)}.grade-c{--grade-bg:var(--observatory-grade-c-bg);--grade-border:var(--observatory-grade-c-border)}.grade-d{--grade-bg:var(--observatory-grade-d-bg);--grade-border:var(--observatory-grade-d-border)}.grade-f{--grade-bg:var(--observatory-grade-f-bg);--grade-border:var(--observatory-grade-f-border)}.chart{background-color:var(--color-background-primary);border-radius:var(--border-radius)}.tick text{font-family:var(--font-body);font-size:1rem;font-weight:300;fill:var(--color-text-secondary);transform:scale(1)}.tick text.x-labels{text-anchor:middle}.current:is(.tick text.x-labels){fill:var(--grade-border)}.tick text.y-labels{text-anchor:end}.tick line{opacity:.9;--csstools-light-dark-toggle--0:var(--csstools-color-scheme--light) var(--color-gray-40);stroke:var(--csstools-light-dark-toggle--0,var(--color-gray-60));stroke-width:1px;stroke-dasharray:5,5}@supports (color:light-dark(red,red)){.tick line{stroke:light-dark(var(--color-gray-60),var(--color-gray-40))}}.bar{fill:var(--grade-bg);stroke:var(--grade-bg);stroke-width:1}.bar.current-grade{stroke:var(--grade-border)}.you-are-here polyline{filter:drop-shadow(0 0 3px rgb(170 170 170));z-index:9;fill:var(--color-background-primary)}.you-are-here text{font-family:var(--font-body);font-size:.85rem;font-weight:300;fill:var(--color-text-primary)}",""]);let g=(0,a.iv)([n.toString()])}};
102
- //# sourceMappingURL=5066.31235bae47282d5a.js.map
101
+ `}({gradeDistribution:r,result:this.result}):o.Ld,error:r=>(0,o.dy)`<div class="error">${r}</div>`}):o.Ld}};function l(r,e){let t=Math.floor(Math.log10(r)),a=r/Math.pow(10,t);return(e?a<1.5?1:a<3?2:a<7?5:10:a<=1?1:a<=2?2:a<=5?5:10)*Math.pow(10,t)}customElements.define("mdn-observatory-comparison-table",MDNObservatoryComparisonTable)},10337:function(r,e,t){t.d(e,{Z:()=>c});var a=t(14703),o=t(8081),s=t.n(o),i=t(23645),d=t.n(i),l=t(54681),n=t(62249),g=d()(s());g.i(l.Z),g.i(n.Z),g.push([r.id,".grade{background:var(--grade-bg);border:1px solid var(--grade-border);border-radius:.2em;color:var(--grade-border);display:inline-block;font-size:var(--font-size-large);font-weight:var(--font-weight-bold);height:5rem;line-height:5rem;text-align:center;width:5rem}.grade-a{--grade-bg:var(--observatory-grade-a-bg);--grade-border:var(--observatory-grade-a-border)}.grade-b{--grade-bg:var(--observatory-grade-b-bg);--grade-border:var(--observatory-grade-b-border)}.grade-c{--grade-bg:var(--observatory-grade-c-bg);--grade-border:var(--observatory-grade-c-border)}.grade-d{--grade-bg:var(--observatory-grade-d-bg);--grade-border:var(--observatory-grade-d-border)}.grade-f{--grade-bg:var(--observatory-grade-f-bg);--grade-border:var(--observatory-grade-f-border)}.chart{background-color:var(--color-background-primary);border-radius:var(--border-radius)}.tick text{font-family:var(--font-body);font-size:var(--font-size-normal);font-weight:300;fill:var(--color-text-secondary);transform:scale(1)}.tick text.x-labels{text-anchor:middle}.current:is(.tick text.x-labels){fill:var(--grade-border)}.tick text.y-labels{text-anchor:end}.tick line{opacity:.9;--csstools-light-dark-toggle--0:var(--csstools-color-scheme--light) var(--color-gray-40);stroke:var(--csstools-light-dark-toggle--0,var(--color-gray-60));stroke-width:1px;stroke-dasharray:5,5}@supports (color:light-dark(red,red)){.tick line{stroke:light-dark(var(--color-gray-60),var(--color-gray-40))}}.bar{fill:var(--grade-bg);stroke:var(--grade-bg);stroke-width:1}.bar.current-grade{stroke:var(--grade-border)}.you-are-here polyline{filter:drop-shadow(0 0 3px rgb(170 170 170));z-index:9;fill:var(--color-background-primary)}.you-are-here text{font-family:var(--font-body);font-size:var(--font-size-small);font-weight:var(--font-weight-normal);fill:var(--color-text-primary)}",""]);let c=(0,a.iv)([g.toString()])}};
102
+ //# sourceMappingURL=5066.c3b69e4601465269.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"5066.31235bae47282d5a.js","sources":["webpack://@mdn/fred/./components/visually-hidden/global.css?9b14","webpack://@mdn/fred/./components/observatory-comparison-table/element.js","webpack://@mdn/fred/./components/observatory-comparison-table/element.css"],"sourcesContent":["// 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, `.visually-hidden{border:0!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:1px!important;clip:rect(1px,1px,1px,1px)!important;clip-path:inset(50%)!important}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","import { Task } from \"@lit/task\";\nimport { LitElement, html, nothing, svg } from \"lit\";\n\nimport { OBSERVATORY_API_URL } from \"../observatory/constants.js\";\nimport { formatMinus } from \"../observatory/utils.js\";\n\nimport styles from \"./element.css?lit\";\n\nexport class MDNObservatoryComparisonTable extends LitElement {\n static properties = {\n result: { type: Object },\n };\n\n static styles = styles;\n\n constructor() {\n super();\n /** @type {import(\"@observatory\").Result | null} */\n this.result = null;\n }\n\n _gradeDistributionTask = new Task(this, {\n task: async () => {\n try {\n const url = new URL(OBSERVATORY_API_URL + \"/api/v2/grade_distribution\");\n const res = await fetch(url);\n if (!res.ok) {\n let message = `${res.status}: ${res.statusText}`;\n try {\n const data = await res.json();\n if (data.error) {\n message = data.message;\n }\n } catch {\n // Ignore.\n }\n throw new Error(message);\n }\n return await res.json();\n } catch (error) {\n console.log(error);\n throw new Error(\"Observatory API request for comparison data failed\");\n }\n },\n args: () => [],\n });\n\n render() {\n if (!this.result) {\n return nothing;\n }\n return this._gradeDistributionTask.render({\n pending: () => html`<progress></progress>`,\n\n complete: (gradeDistribution) => {\n if (!this.result) {\n return nothing;\n }\n\n return GradeSVG({ gradeDistribution, result: this.result });\n },\n\n error: (e) => html`<div class=\"error\">${e}</div>`,\n });\n }\n}\n\ncustomElements.define(\n \"mdn-observatory-comparison-table\",\n MDNObservatoryComparisonTable,\n);\n\n/**\n *\n * @param {{gradeDistribution: import(\"@observatory\").GradeDistribution[], result: import(\"@observatory\").Result}} props\n * @returns {import(\"@lit\").TemplateResult}\n */\nfunction GradeSVG({ gradeDistribution, result }) {\n const width = 1200;\n const height = 380;\n const leftSpace = 100; // left edge to left edge of first bar\n const rightSpace = 80; // right edge to tight edge of last bar\n const bottomSpace = 60; // bottom edge to bottom edge of bars\n const topSpace = 60; // top padding\n const itemCount = gradeDistribution.length;\n const barWidth = 60;\n\n // The x-axis has the different grades from \"A+\" to \"D-\".\n const xTickIncr =\n (width - leftSpace - rightSpace - barWidth) / (itemCount - 1);\n const xTickOffset = leftSpace + xTickIncr / 2;\n\n // The y-axis has ticks according to the maximum value of all grades.\n const yMarks = calculateTicks(gradeDistribution);\n const yTickOffset = height - bottomSpace;\n const yTickIncr = (height - bottomSpace - topSpace) / (yMarks.length - 1);\n const yTickMax = Math.max(...yMarks);\n\n const rows = gradeDistribution.map(\n (item) =>\n html` <tr>\n <th>\n ${formatMinus(item.grade)}\n ${item.grade === result.scan.grade ? \"(Current grade)\" : \"\"}\n </th>\n <td>${item.count} sites</td>\n </tr>`,\n );\n\n return html`\n <table id=\"grade-svg-a11y-table\" class=\"visually-hidden\">\n <caption>\n Number of sites by grade\n </caption>\n <thead>\n <tr>\n <th scope=\"col\">Grade</th>\n <th scope=\"col\">Sites</th>\n </tr>\n </thead>\n <tbody>\n ${rows}\n </tbody>\n </table>\n ${svg`\n <svg\n class=\"chart\"\n viewBox=\"0 0 1200 380\"\n aria-labelledby=\"grade-svg-title\"\n aria-describedby=\"grade-svg-a11y-table\"\n >\n <title id=\"grade-svg-title\">Number of sites by grade</title>\n <g class=\"axes-g\"> </g>\n <g\n class=\"x-axis\"\n transform=\"translate(${xTickOffset}, ${height - bottomSpace})\"\n >\n ${gradeDistribution.map((item, index) => {\n return svg` <g\n class=\"tick tick-x\"\n transform=\"${`translate(${index * xTickIncr}, 0)`}\"\n >\n <text\n fill=\"currentColor\"\n y=\"6\"\n dy=\"1em\"\n class=\"${[\n \"x-labels\",\n item.grade === result.scan.grade\n ? `current grade-${item.grade[0]?.toLowerCase()}`\n : undefined,\n ]\n .filter(Boolean)\n .join(\" \")}\"\n >\n ${formatMinus(item.grade)}\n </text>\n </g>`;\n })}\n </g>\n <g>\n ${gradeDistribution.map((item, index) => {\n const barHeight =\n (height - bottomSpace - topSpace) * (item.count / yTickMax);\n return svg` <rect\n class=\"bar grade-${item.grade\n .replace(/[+-]/, \"\")\n .toLowerCase()} ${\n item.grade === result.scan.grade ? \"current-grade\" : \"\"\n }\"\n x=\"${xTickOffset + index * xTickIncr - barWidth / 2}\"\n y=\"${yTickOffset - barHeight - 1}\"\n rx=\"4\"\n ry=\"4\"\n width=\"${barWidth}\"\n height=\"${barHeight}\"\n ></rect>`;\n })}\n </g>\n <g\n class=\"y-axis\"\n fill=\"none\"\n textAnchor=\"end\"\n transform=\"translate(${leftSpace}, 0)\"\n >\n ${yMarks.map(\n (item, index) => svg` <g\n class=\"tick tick-y\"\n transform=\"translate(0, ${yTickOffset - yTickIncr * index})\"\n >\n <line\n stroke=\"currentColor\"\n x2=\"${width - leftSpace - rightSpace + barWidth / 2}\"\n ></line>\n <text class=\"y-labels\" fill=\"currentColor\" x=\"-25\" dy=\"0.32em\">\n ${item / 1000}k\n </text>\n </g>`,\n )}\n </g>\n </g>\n <g>\n ${gradeDistribution.map((item, index) => {\n if (item.grade === result.scan.grade) {\n const barHeight =\n (height - bottomSpace - topSpace) * (item.count / yTickMax);\n return svg` <g\n key=\"you-are-here\"\n class=\"you-are-here\"\n transform=\"translate(${xTickOffset + index * xTickIncr}, ${\n height - bottomSpace - barHeight - 50\n })\"\n >\n <polyline\n points=\"-60,0 60,0 60,36 7,36 0,48 -7,36 -60,36\"\n ></polyline>\n <text\n x=\"0\"\n y=\"0\"\n text-anchor=\"middle\"\n transform=\"translate(0, 24)\"\n >\n Current grade\n </text>\n </g>`;\n } else {\n return [];\n }\n })}\n </g>\n </svg>\n `}\n `;\n}\n\n/**\n * Calculate\n * @param {import(\"@observatory\").GradeDistribution[]} gradeDistribution\n * @returns {number[]}\n */\nfunction calculateTicks(gradeDistribution) {\n const maxValue = Math.max(...gradeDistribution.map((item) => item.count));\n const tickTargetCount = 7; // Target number of ticks between 5 and 10\n const range = rangeForValue(maxValue, false); // Get a nice range\n const tickInterval = rangeForValue(range / tickTargetCount, true); // Determine a nice tick interval\n const niceMaxValue = Math.ceil(maxValue / tickInterval) * tickInterval; // Adjust max value to a nice number\n const tickCount = Math.ceil(niceMaxValue / tickInterval) + 1; // Calculate the number of ticks\n\n /** @type {number[]} */\n const ticks = [];\n for (let i = 0; i < tickCount; i++) {\n ticks.push(i * tickInterval);\n }\n return ticks;\n}\n\n/**\n * This returns values to construct proper axis measurements in\n * diagrams. The returned value is 1|2|5 * 10^x.\n *\n * If `round` is `true`, the returned value can be also rounded down,\n * useful for calculating ticks on an axis.\n *\n * Examples:\n *\n * |range |rounded=false|rounded=true|\n * |---------|-------------|------------|\n * | 1 | 1 | 1 |\n * | 2 | 2 | 2 |\n * | 3 | 5 | 5 |\n * | 4 | 5 | 5 |\n * | 5 | 5 | 5 |\n * | 6 | 10 | 5 |\n * | 7 | 10 | 10 |\n * | 8 | 10 | 10 |\n * | 9 | 10 | 10 |\n * | 10 | 10 | 10 |\n * | 34 | 50 | 50 |\n * | 450 | 500 | 500 |\n * | 560 | 1000 | 500 |\n * | 6780 | 10000 | 5000 |\n * | 10 | 10 | 10 |\n * | 100 | 100 | 100 |\n * | 1000 | 1000 | 1000 |\n * | 10000 | 10000 | 10000 |\n * @param {number} range The input value\n * @param {boolean} round If false, the returned value will always be greater than `range`, otherwise it can be rounded off\n * @returns {number} a number according to `1|2|5 * 10^x`, where x is derived from `range` to be in the same order of magnitude\n */\n\nfunction rangeForValue(range, round) {\n const exponent = Math.floor(Math.log10(range));\n const fraction = range / Math.pow(10, exponent);\n\n /** @type {number} */\n let niceFraction;\n if (round) {\n if (fraction < 1.5) {\n niceFraction = 1;\n } else if (fraction < 3) {\n niceFraction = 2;\n } else if (fraction < 7) {\n niceFraction = 5;\n } else {\n niceFraction = 10;\n }\n } else {\n if (fraction <= 1) {\n niceFraction = 1;\n } else if (fraction <= 2) {\n niceFraction = 2;\n } else if (fraction <= 5) {\n niceFraction = 5;\n } else {\n niceFraction = 10;\n }\n }\n return niceFraction * Math.pow(10, exponent);\n}\n","import { css } from \"lit\";\n// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_0___ from \"-!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[2]!../visually-hidden/global.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// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.grade{background:var(--grade-bg);border:1px solid var(--grade-border);border-radius:.2em;color:var(--grade-border);display:inline-block;font-size:1.7rem;font-weight:600;height:5rem;line-height:5rem;text-align:center;width:5rem}.grade-a{--grade-bg:var(--observatory-grade-a-bg);--grade-border:var(--observatory-grade-a-border)}.grade-b{--grade-bg:var(--observatory-grade-b-bg);--grade-border:var(--observatory-grade-b-border)}.grade-c{--grade-bg:var(--observatory-grade-c-bg);--grade-border:var(--observatory-grade-c-border)}.grade-d{--grade-bg:var(--observatory-grade-d-bg);--grade-border:var(--observatory-grade-d-border)}.grade-f{--grade-bg:var(--observatory-grade-f-bg);--grade-border:var(--observatory-grade-f-border)}.chart{background-color:var(--color-background-primary);border-radius:var(--border-radius)}.tick text{font-family:var(--font-body);font-size:1rem;font-weight:300;fill:var(--color-text-secondary);transform:scale(1)}.tick text.x-labels{text-anchor:middle}.current:is(.tick text.x-labels){fill:var(--grade-border)}.tick text.y-labels{text-anchor:end}.tick line{opacity:.9;--csstools-light-dark-toggle--0:var(--csstools-color-scheme--light) var(--color-gray-40);stroke:var(--csstools-light-dark-toggle--0,var(--color-gray-60));stroke-width:1px;stroke-dasharray:5,5}@supports (color:light-dark(red,red)){.tick line{stroke:light-dark(var(--color-gray-60),var(--color-gray-40))}}.bar{fill:var(--grade-bg);stroke:var(--grade-bg);stroke-width:1}.bar.current-grade{stroke:var(--grade-border)}.you-are-here polyline{filter:drop-shadow(0 0 3px rgb(170 170 170));z-index:9;fill:var(--color-background-primary)}.you-are-here text{font-family:var(--font-body);font-size:.85rem;font-weight:300;fill:var(--color-text-primary)}`, \"\"]);\n// Exports\nexport default css([___CSS_LOADER_EXPORT___.toString()]);\n"],"names":["MDNObservatoryComparisonTable","Object","URL","fetch","Error","console","Math","Boolean","r","customElements"],"mappings":"iJAGI,EAA0B,A,SAA4B,KAE1D,EAAwB,IAAI,CAAC,CAAC,EAAO,EAAE,CAAE,iRAAkR,GAAG,EAE9T,MAAe,EAAwB,QAAQ,E,mKCCxC,IAAMA,8BAAN,MAAMA,sCAAsC,IAAU,CAC3D,OAAO,WAAa,CAClB,OAAQ,CAAE,KAAMC,MAAO,CACzB,CAAE,AAEF,QAAO,OAAS,GAAM,AAAC,AAEvB,cAAc,CACZ,KAAK,GAEL,IAAI,CAAC,MAAM,CAAG,IAChB,CAEA,uBAAyB,IAAI,IAAI,CAAC,IAAI,CAAE,CACtC,KAAM,UACJ,GAAI,CACF,IAAM,EAAM,IAAIC,IAAI,IAAmB,CAAG,8BACpC,EAAM,MAAMC,MAAM,GACxB,GAAI,CAAC,EAAI,EAAE,CAAE,CACX,IAAI,EAAU,CAAC,EAAE,EAAI,MAAM,CAAC,EAAE,EAAE,EAAI,UAAU,CAAC,CAAC,CAChD,GAAI,CACF,IAAM,EAAO,MAAM,EAAI,IAAI,EACvB,GAAK,KAAK,EACZ,GAAU,EAAK,OAAO,AAAD,CAEzB,CAAE,KAAM,CAER,CACA,MAAM,AAAIC,MAAM,EAClB,CACA,OAAO,MAAM,EAAI,IAAI,EACvB,CAAE,MAAO,EAAO,CAEd,MADAC,QAAQ,GAAG,CAAC,GACN,AAAID,MAAM,qDAClB,CACF,EACA,KAAM,IAAM,EAAE,AAChB,EAAG,AAEH,SAAS,QACP,AAAK,IAAI,CAAC,MAAM,CAGT,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CACxC,QAAS,IAAM,QAAI,CAAC,qBAAqB,CAAC,CAE1C,SAAU,AAAC,GACT,AAAK,IAAI,CAAC,MAAM,CAIT,AAkBf,SAAkB,CAAE,mBAAiB,CAAE,QAAM,CAAE,EAO7C,IAIM,EACJ,AAAC,IAA8C,CAL/B,EAAkB,MAAM,CAKmB,GACvD,EAAc,AAVF,IAUc,EAAY,EAGtC,EAAS,AAmJjB,SAAwB,CAAiB,EACvC,IAAM,EAAWE,KAAK,GAAG,IAAI,EAAkB,GAAG,CAAC,AAAC,GAAS,EAAK,KAAK,GAEjE,EAAQ,EAAc,EAAU,IAChC,EAAe,EAAc,EAFX,EAEoC,IAEtD,EAAYA,KAAK,IAAI,CAAC,AADPA,KAAK,IAAI,CAAC,EAAW,GAAgB,EACf,GAAgB,EAGrD,EAAQ,EAAE,CAChB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAW,IAC7B,EAAM,IAAI,CAAC,EAAI,GAEjB,OAAO,CACT,EAjKgC,GAExB,EAAY,AAAC,IAAoC,GAAO,MAAM,CAAG,GACjE,EAAWA,KAAK,GAAG,IAAI,GAEvB,EAAO,EAAkB,GAAG,CAChC,AAAC,GACC,QAAI,CAAC;;UAED,EAAE,SAAY,EAAK,KAAK,EAAE;UAC1B,EAAE,EAAK,KAAK,GAAK,EAAO,IAAI,CAAC,KAAK,CAAG,kBAAoB,GAAG;;YAE1D,EAAE,EAAK,KAAK,CAAC;WACd,CAAC,EAGV,MAAO,QAAI,CAAC;;;;;;;;;;;;QAYN,EAAE,EAAK;;;IAGX,EAAE,QAAG,CAAC;;;;;;;;;;;+BAWqB,EAAE,EAAY,EAAE,EAAE,IAAqB;;UAE5D,EAAE,EAAkB,GAAG,CAAC,CAAC,EAAM,IACtB,QAAG,CAAC;;yBAEE,EAAE,CAAC,UAAU,EAAE,EAAQ,EAAU,IAAI,CAAC,CAAC;;;;;;uBAMzC,EAAE,CACP,WACA,EAAK,KAAK,GAAK,EAAO,IAAI,CAAC,KAAK,CAC5B,CAAC,cAAc,EAAE,EAAK,KAAK,CAAC,EAAE,EAAE,cAAc,CAAC,CAC/C,OACL,CACE,MAAM,CAACC,SACP,IAAI,CAAC,KAAK;;gBAEb,EAAE,SAAY,EAAK,KAAK,EAAE;;gBAE1B,CAAC,EACJ;;;UAGH,EAAE,EAAkB,GAAG,CAAC,CAAC,EAAM,KAC7B,IAAM,EACJ,AAAC,IAAoC,GAAK,KAAK,CAAG,CAAO,EAC3D,MAAO,QAAG,CAAC;+BACQ,EAAE,EAAK,KAAK,CAC1B,OAAO,CAAC,OAAQ,IAChB,WAAW,GAAG,CAAC,EAChB,EAAK,KAAK,GAAK,EAAO,IAAI,CAAC,KAAK,CAAG,gBAAkB,GACtD;iBACE,EAAE,EAAc,EAAQ,EAAY,GAAa;iBACjD,EAAE,AA7EG,IA6EW,EAAY,EAAE;;;qBAG1B,EAzFF,GAyFa;sBACV,EAAE,EAAU;oBACd,CAAC,AACX,GAAG;;;;;;+BAMkB,EAvGX,IAuGuB;;UAEjC,EAAE,EAAO,GAAG,CACV,CAAC,EAAM,IAAU,QAAG,CAAC;;sCAEK,EAAE,AA9FlB,IA8FgC,EAAY,EAAM;;;;oBAIpD,EAAE,KAA8C;;;gBAGpD,EAAE,EAAO,IAAK;;gBAEd,CAAC,EACL;;;;QAIJ,EAAE,EAAkB,GAAG,CAAC,CAAC,EAAM,KAC7B,GAAI,EAAK,KAAK,GAAK,EAAO,IAAI,CAAC,KAAK,CAuBlC,MAAO,EAAE,AAvB2B,EACpC,IAAM,EACJ,AAAC,IAAoC,GAAK,KAAK,CAAG,CAAO,EAC3D,MAAO,QAAG,CAAC;;;mCAGY,EAAE,EAAc,EAAQ,EAAU,EAAE,EACvD,IAAuB,EAAY,GACpC;;;;;;;;;;;;;gBAaC,CAAC,AACP,CAGF,GAAG;;;EAGT,CAAC,CAAC;EACF,CAAC,AACH,EA9KwB,CAAE,oBAAmB,OAAQ,IAAI,CAAC,MAAM,AAAC,GAHhD,IAAO,CAMlB,MAAO,AAAC,GAAM,QAAI,CAAC,mBAAmB,EAAE,EAAE,MAAM,CAAC,AACnD,GAdS,IAAO,AAelB,CACF,EAiOA,SAAS,EAAcC,CAAK,CAAE,CAAK,EACjC,IAAM,EAAWF,KAAK,KAAK,CAACA,KAAK,KAAK,CAACE,IACjC,EAAWA,EAAQF,KAAK,GAAG,CAAC,GAAI,GAyBtC,MAAO,CArBH,EACE,EAAW,IACE,EACN,EAAW,EACL,EACN,EAAW,EACL,EAEA,GAGb,GAAY,EACC,EACN,GAAY,EACN,EACN,GAAY,EACN,EAEA,IAGGA,KAAK,GAAG,CAAC,GAAI,EACrC,CA3PAG,eAAe,MAAM,CACnB,mCACAT,8B,0GChEE,EAA0B,IAA4B,KAC1D,EAAwB,CAAC,CAAC,GAAiC,EAE3D,EAAwB,IAAI,CAAC,CAAC,EAAO,EAAE,CAAE,usDAAwsD,GAAG,EAEpvD,MAAe,SAAI,CAAC,EAAwB,QAAQ,GAAG,C"}
1
+ {"version":3,"file":"5066.c3b69e4601465269.js","sources":["webpack://@mdn/fred/./components/visually-hidden/global.css?9b14","webpack://@mdn/fred/./components/observatory-comparison-table/element.js","webpack://@mdn/fred/./components/observatory-comparison-table/element.css"],"sourcesContent":["// 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, `.visually-hidden{border:0!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:1px!important;clip:rect(1px,1px,1px,1px)!important;clip-path:inset(50%)!important}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","import { Task } from \"@lit/task\";\nimport { LitElement, html, nothing, svg } from \"lit\";\n\nimport { OBSERVATORY_API_URL } from \"../observatory/constants.js\";\nimport { formatMinus } from \"../observatory/utils.js\";\n\nimport styles from \"./element.css?lit\";\n\nexport class MDNObservatoryComparisonTable extends LitElement {\n static properties = {\n result: { type: Object },\n };\n\n static styles = styles;\n\n constructor() {\n super();\n /** @type {import(\"@observatory\").Result | null} */\n this.result = null;\n }\n\n _gradeDistributionTask = new Task(this, {\n task: async () => {\n try {\n const url = new URL(OBSERVATORY_API_URL + \"/api/v2/grade_distribution\");\n const res = await fetch(url);\n if (!res.ok) {\n let message = `${res.status}: ${res.statusText}`;\n try {\n const data = await res.json();\n if (data.error) {\n message = data.message;\n }\n } catch {\n // Ignore.\n }\n throw new Error(message);\n }\n return await res.json();\n } catch (error) {\n console.log(error);\n throw new Error(\"Observatory API request for comparison data failed\");\n }\n },\n args: () => [],\n });\n\n render() {\n if (!this.result) {\n return nothing;\n }\n return this._gradeDistributionTask.render({\n pending: () => html`<progress></progress>`,\n\n complete: (gradeDistribution) => {\n if (!this.result) {\n return nothing;\n }\n\n return GradeSVG({ gradeDistribution, result: this.result });\n },\n\n error: (e) => html`<div class=\"error\">${e}</div>`,\n });\n }\n}\n\ncustomElements.define(\n \"mdn-observatory-comparison-table\",\n MDNObservatoryComparisonTable,\n);\n\n/**\n *\n * @param {{gradeDistribution: import(\"@observatory\").GradeDistribution[], result: import(\"@observatory\").Result}} props\n * @returns {import(\"@lit\").TemplateResult}\n */\nfunction GradeSVG({ gradeDistribution, result }) {\n const width = 1200;\n const height = 380;\n const leftSpace = 100; // left edge to left edge of first bar\n const rightSpace = 80; // right edge to tight edge of last bar\n const bottomSpace = 60; // bottom edge to bottom edge of bars\n const topSpace = 60; // top padding\n const itemCount = gradeDistribution.length;\n const barWidth = 60;\n\n // The x-axis has the different grades from \"A+\" to \"D-\".\n const xTickIncr =\n (width - leftSpace - rightSpace - barWidth) / (itemCount - 1);\n const xTickOffset = leftSpace + xTickIncr / 2;\n\n // The y-axis has ticks according to the maximum value of all grades.\n const yMarks = calculateTicks(gradeDistribution);\n const yTickOffset = height - bottomSpace;\n const yTickIncr = (height - bottomSpace - topSpace) / (yMarks.length - 1);\n const yTickMax = Math.max(...yMarks);\n\n const rows = gradeDistribution.map(\n (item) =>\n html` <tr>\n <th>\n ${formatMinus(item.grade)}\n ${item.grade === result.scan.grade ? \"(Current grade)\" : \"\"}\n </th>\n <td>${item.count} sites</td>\n </tr>`,\n );\n\n return html`\n <table id=\"grade-svg-a11y-table\" class=\"visually-hidden\">\n <caption>\n Number of sites by grade\n </caption>\n <thead>\n <tr>\n <th scope=\"col\">Grade</th>\n <th scope=\"col\">Sites</th>\n </tr>\n </thead>\n <tbody>\n ${rows}\n </tbody>\n </table>\n ${svg`\n <svg\n class=\"chart\"\n viewBox=\"0 0 1200 380\"\n aria-labelledby=\"grade-svg-title\"\n aria-describedby=\"grade-svg-a11y-table\"\n >\n <title id=\"grade-svg-title\">Number of sites by grade</title>\n <g class=\"axes-g\"> </g>\n <g\n class=\"x-axis\"\n transform=\"translate(${xTickOffset}, ${height - bottomSpace})\"\n >\n ${gradeDistribution.map((item, index) => {\n return svg` <g\n class=\"tick tick-x\"\n transform=\"${`translate(${index * xTickIncr}, 0)`}\"\n >\n <text\n fill=\"currentColor\"\n y=\"6\"\n dy=\"1em\"\n class=\"${[\n \"x-labels\",\n item.grade === result.scan.grade\n ? `current grade-${item.grade[0]?.toLowerCase()}`\n : undefined,\n ]\n .filter(Boolean)\n .join(\" \")}\"\n >\n ${formatMinus(item.grade)}\n </text>\n </g>`;\n })}\n </g>\n <g>\n ${gradeDistribution.map((item, index) => {\n const barHeight =\n (height - bottomSpace - topSpace) * (item.count / yTickMax);\n return svg` <rect\n class=\"bar grade-${item.grade\n .replace(/[+-]/, \"\")\n .toLowerCase()} ${\n item.grade === result.scan.grade ? \"current-grade\" : \"\"\n }\"\n x=\"${xTickOffset + index * xTickIncr - barWidth / 2}\"\n y=\"${yTickOffset - barHeight - 1}\"\n rx=\"4\"\n ry=\"4\"\n width=\"${barWidth}\"\n height=\"${barHeight}\"\n ></rect>`;\n })}\n </g>\n <g\n class=\"y-axis\"\n fill=\"none\"\n textAnchor=\"end\"\n transform=\"translate(${leftSpace}, 0)\"\n >\n ${yMarks.map(\n (item, index) => svg` <g\n class=\"tick tick-y\"\n transform=\"translate(0, ${yTickOffset - yTickIncr * index})\"\n >\n <line\n stroke=\"currentColor\"\n x2=\"${width - leftSpace - rightSpace + barWidth / 2}\"\n ></line>\n <text class=\"y-labels\" fill=\"currentColor\" x=\"-25\" dy=\"0.32em\">\n ${item / 1000}k\n </text>\n </g>`,\n )}\n </g>\n </g>\n <g>\n ${gradeDistribution.map((item, index) => {\n if (item.grade === result.scan.grade) {\n const barHeight =\n (height - bottomSpace - topSpace) * (item.count / yTickMax);\n return svg` <g\n key=\"you-are-here\"\n class=\"you-are-here\"\n transform=\"translate(${xTickOffset + index * xTickIncr}, ${\n height - bottomSpace - barHeight - 50\n })\"\n >\n <polyline\n points=\"-60,0 60,0 60,36 7,36 0,48 -7,36 -60,36\"\n ></polyline>\n <text\n x=\"0\"\n y=\"0\"\n text-anchor=\"middle\"\n transform=\"translate(0, 24)\"\n >\n Current grade\n </text>\n </g>`;\n } else {\n return [];\n }\n })}\n </g>\n </svg>\n `}\n `;\n}\n\n/**\n * Calculate\n * @param {import(\"@observatory\").GradeDistribution[]} gradeDistribution\n * @returns {number[]}\n */\nfunction calculateTicks(gradeDistribution) {\n const maxValue = Math.max(...gradeDistribution.map((item) => item.count));\n const tickTargetCount = 7; // Target number of ticks between 5 and 10\n const range = rangeForValue(maxValue, false); // Get a nice range\n const tickInterval = rangeForValue(range / tickTargetCount, true); // Determine a nice tick interval\n const niceMaxValue = Math.ceil(maxValue / tickInterval) * tickInterval; // Adjust max value to a nice number\n const tickCount = Math.ceil(niceMaxValue / tickInterval) + 1; // Calculate the number of ticks\n\n /** @type {number[]} */\n const ticks = [];\n for (let i = 0; i < tickCount; i++) {\n ticks.push(i * tickInterval);\n }\n return ticks;\n}\n\n/**\n * This returns values to construct proper axis measurements in\n * diagrams. The returned value is 1|2|5 * 10^x.\n *\n * If `round` is `true`, the returned value can be also rounded down,\n * useful for calculating ticks on an axis.\n *\n * Examples:\n *\n * |range |rounded=false|rounded=true|\n * |---------|-------------|------------|\n * | 1 | 1 | 1 |\n * | 2 | 2 | 2 |\n * | 3 | 5 | 5 |\n * | 4 | 5 | 5 |\n * | 5 | 5 | 5 |\n * | 6 | 10 | 5 |\n * | 7 | 10 | 10 |\n * | 8 | 10 | 10 |\n * | 9 | 10 | 10 |\n * | 10 | 10 | 10 |\n * | 34 | 50 | 50 |\n * | 450 | 500 | 500 |\n * | 560 | 1000 | 500 |\n * | 6780 | 10000 | 5000 |\n * | 10 | 10 | 10 |\n * | 100 | 100 | 100 |\n * | 1000 | 1000 | 1000 |\n * | 10000 | 10000 | 10000 |\n * @param {number} range The input value\n * @param {boolean} round If false, the returned value will always be greater than `range`, otherwise it can be rounded off\n * @returns {number} a number according to `1|2|5 * 10^x`, where x is derived from `range` to be in the same order of magnitude\n */\n\nfunction rangeForValue(range, round) {\n const exponent = Math.floor(Math.log10(range));\n const fraction = range / Math.pow(10, exponent);\n\n /** @type {number} */\n let niceFraction;\n if (round) {\n if (fraction < 1.5) {\n niceFraction = 1;\n } else if (fraction < 3) {\n niceFraction = 2;\n } else if (fraction < 7) {\n niceFraction = 5;\n } else {\n niceFraction = 10;\n }\n } else {\n if (fraction <= 1) {\n niceFraction = 1;\n } else if (fraction <= 2) {\n niceFraction = 2;\n } else if (fraction <= 5) {\n niceFraction = 5;\n } else {\n niceFraction = 10;\n }\n }\n return niceFraction * Math.pow(10, exponent);\n}\n","import { css } from \"lit\";\n// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_0___ from \"-!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[2]!../global/global.css\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_1___ from \"-!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[2]!../visually-hidden/global.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, `.grade{background:var(--grade-bg);border:1px solid var(--grade-border);border-radius:.2em;color:var(--grade-border);display:inline-block;font-size:var(--font-size-large);font-weight:var(--font-weight-bold);height:5rem;line-height:5rem;text-align:center;width:5rem}.grade-a{--grade-bg:var(--observatory-grade-a-bg);--grade-border:var(--observatory-grade-a-border)}.grade-b{--grade-bg:var(--observatory-grade-b-bg);--grade-border:var(--observatory-grade-b-border)}.grade-c{--grade-bg:var(--observatory-grade-c-bg);--grade-border:var(--observatory-grade-c-border)}.grade-d{--grade-bg:var(--observatory-grade-d-bg);--grade-border:var(--observatory-grade-d-border)}.grade-f{--grade-bg:var(--observatory-grade-f-bg);--grade-border:var(--observatory-grade-f-border)}.chart{background-color:var(--color-background-primary);border-radius:var(--border-radius)}.tick text{font-family:var(--font-body);font-size:var(--font-size-normal);font-weight:300;fill:var(--color-text-secondary);transform:scale(1)}.tick text.x-labels{text-anchor:middle}.current:is(.tick text.x-labels){fill:var(--grade-border)}.tick text.y-labels{text-anchor:end}.tick line{opacity:.9;--csstools-light-dark-toggle--0:var(--csstools-color-scheme--light) var(--color-gray-40);stroke:var(--csstools-light-dark-toggle--0,var(--color-gray-60));stroke-width:1px;stroke-dasharray:5,5}@supports (color:light-dark(red,red)){.tick line{stroke:light-dark(var(--color-gray-60),var(--color-gray-40))}}.bar{fill:var(--grade-bg);stroke:var(--grade-bg);stroke-width:1}.bar.current-grade{stroke:var(--grade-border)}.you-are-here polyline{filter:drop-shadow(0 0 3px rgb(170 170 170));z-index:9;fill:var(--color-background-primary)}.you-are-here text{font-family:var(--font-body);font-size:var(--font-size-small);font-weight:var(--font-weight-normal);fill:var(--color-text-primary)}`, \"\"]);\n// Exports\nexport default css([___CSS_LOADER_EXPORT___.toString()]);\n"],"names":["MDNObservatoryComparisonTable","Object","URL","fetch","Error","console","Math","Boolean","r","customElements"],"mappings":"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"}
@@ -43,5 +43,5 @@ export const __webpack_ids__=["533"];export const __webpack_modules__={20082:fun
43
43
  </li>`})}
44
44
  </ul>
45
45
  </div>
46
- </div>`}};customElements.define("mdn-contributor-list",MDNContributorList)},25408:function(e,i,t){t.d(i,{Z:()=>l});var r=t(14703),s=t(8081),o=t.n(s),a=t(23645),n=t.n(a)()(o());n.push([e.id,"*{box-sizing:border-box}.wrap{--img-size:3.75em;--li-size:calc(var(--img-size)*2.5)}ul{--circle-border-size:0.375em;align-content:start;display:grid;gap:2rem 1rem;grid-template-columns:repeat(auto-fit,minmax(var(--li-size),1fr));justify-items:center;margin:0;padding:0}@media (max-width:769px){ul{display:flex;margin-top:2rem;overflow-x:auto}}a,li{align-items:center;display:flex;flex-direction:column;flex-shrink:0;text-align:center}li{color:var(--community-text-primary);width:var(--li-size)}img{background:var(--community-circle-img-border);border:var(--circle-border-size) var(--community-circle-img-border) solid;border-radius:50%;flex-shrink:0;height:var(--img-size);width:var(--img-size)}a{color:unset;font-weight:500}svg{display:none}@supports (offset-path:ellipse(100% 50% at 100% 50%)){@media (min-width:769.02px){.wrap{container-type:size;height:100%;width:100%}.inner{font-size:min(1rem,3.5cqmin);padding:calc(var(--img-size)/2) calc(var(--li-size)/2)}ul{aspect-ratio:1/2;margin-left:auto;max-height:var(--community-circle-height);min-height:0;min-width:0;position:relative}svg,ul{display:block}svg{height:100%;overflow:visible;position:absolute;width:100%;fill:none;stroke:var(--community-circle-img-border);stroke-width:var(--circle-border-size)}li{animation:community-circle .1ms forwards;offset-anchor:center calc(var(--img-size)*.5);offset-distance:var(--offset-distance);offset-path:ellipse(100% 50% at 100% 50%);offset-rotate:0deg}li:nth-of-type(n+6){--img-size:5em;offset-path:ellipse(50% 25% at 100% 50%)}@keyframes community-circle{0%{offset-distance:calc(var(--offset-distance) - .1%)}}li:first-of-type{--offset-distance:75%}li:nth-of-type(2){--offset-distance:62.5%}li:nth-of-type(3){--offset-distance:50%}li:nth-of-type(4){--offset-distance:37.5%}li:nth-of-type(5){--offset-distance:25%}li:nth-of-type(6){--offset-distance:75%}li:nth-of-type(7){--offset-distance:50%}li:nth-of-type(8){--offset-distance:25%}.org{display:-webkit-box;overflow:hidden;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical}}}",""]);let l=(0,r.iv)([n.toString()])}};
47
- //# sourceMappingURL=533.518751bfb02cbcee.js.map
46
+ </div>`}};customElements.define("mdn-contributor-list",MDNContributorList)},25408:function(e,i,t){t.d(i,{Z:()=>l});var r=t(14703),s=t(8081),o=t.n(s),a=t(23645),n=t.n(a)()(o());n.push([e.id,"*{box-sizing:border-box}.wrap{--img-size:3.75em;--li-size:calc(var(--img-size)*2.5)}ul{--circle-border-size:0.375em;align-content:start;display:grid;gap:2rem 1rem;grid-template-columns:repeat(auto-fit,minmax(var(--li-size),1fr));justify-items:center;margin:0;padding:0}@media (width <= 769px){ul{display:flex;margin-top:2rem;overflow-x:auto}}a,li{align-items:center;display:flex;flex-direction:column;flex-shrink:0;text-align:center}li{color:var(--community-text-primary);width:var(--li-size)}img{background:var(--community-circle-img-border);border:var(--circle-border-size) var(--community-circle-img-border) solid;border-radius:50%;flex-shrink:0;height:var(--img-size);width:var(--img-size)}a{color:unset;font-weight:500}svg{display:none}@supports (offset-path:ellipse(100% 50% at 100% 50%)){@media (769px < width){.wrap{container-type:size;height:100%;width:100%}.inner{font-size:min(1rem,3.5cqmin);padding:calc(var(--img-size)/2) calc(var(--li-size)/2)}ul{aspect-ratio:1/2;margin-left:auto;max-height:var(--community-circle-height);min-height:0;min-width:0;position:relative}svg,ul{display:block}svg{height:100%;overflow:visible;position:absolute;width:100%;fill:none;stroke:var(--community-circle-img-border);stroke-width:var(--circle-border-size)}li{animation:community-circle .1ms forwards;offset-anchor:center calc(var(--img-size)*.5);offset-distance:var(--offset-distance);offset-path:ellipse(100% 50% at 100% 50%);offset-rotate:0deg}li:nth-of-type(n+6){--img-size:5em;offset-path:ellipse(50% 25% at 100% 50%)}@keyframes community-circle{0%{offset-distance:calc(var(--offset-distance) - .1%)}}li:first-of-type{--offset-distance:75%}li:nth-of-type(2){--offset-distance:62.5%}li:nth-of-type(3){--offset-distance:50%}li:nth-of-type(4){--offset-distance:37.5%}li:nth-of-type(5){--offset-distance:25%}li:nth-of-type(6){--offset-distance:75%}li:nth-of-type(7){--offset-distance:50%}li:nth-of-type(8){--offset-distance:25%}.org{display:-webkit-box;overflow:hidden;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical}}}",""]);let l=(0,r.iv)([n.toString()])}};
47
+ //# sourceMappingURL=533.43be64a8c12d5411.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"533.518751bfb02cbcee.js","sources":["webpack://@mdn/fred/./components/contributor-list/element.js","webpack://@mdn/fred/./components/contributor-list/element.css"],"sourcesContent":["import { LitElement, html } from \"lit\";\n\nimport styles from \"./element.css?lit\";\n\n/** @import { ContributorData } from \"./types.d.ts\" */\n\nexport class MDNContributorList extends LitElement {\n static ssr = false;\n\n static properties = {\n _contributors: { state: true },\n };\n\n static styles = styles;\n\n constructor() {\n super();\n /** @type {ContributorData[]} */\n this._contributors = [];\n }\n\n _onChildrenChanged() {\n const contributorList = this.querySelector(\"ul\");\n /** @type {ContributorData[]} */\n const randomContributors = [];\n if (contributorList) {\n const contributors = [...contributorList.querySelectorAll(\"li\")];\n for (let index = 0; index < 8; index++) {\n const contributor = popRandom(contributors);\n if (!contributor) {\n break;\n }\n const [name, github, org] = [...contributor.childNodes].map(\n (node) => node?.textContent?.trim() || undefined,\n );\n if (!name || !github) {\n index--;\n continue;\n }\n randomContributors.push({\n name,\n github,\n org,\n });\n }\n this._contributors = randomContributors;\n }\n }\n\n connectedCallback() {\n super.connectedCallback();\n this._onChildrenChanged();\n new MutationObserver(() => this._onChildrenChanged()).observe(this, {\n subtree: true,\n childList: true,\n characterData: true,\n });\n }\n\n render() {\n return html`<div class=\"wrap\">\n <div class=\"inner\">\n <ul>\n <svg>\n <defs>\n <mask id=\"hide-half\">\n <rect\n x=\"0%\"\n y=\"0%\"\n width=\"100%\"\n height=\"100%\"\n fill=\"#fff\"\n stroke=\"#fff\"\n />\n </mask>\n </defs>\n <ellipse\n rx=\"100%\"\n ry=\"50%\"\n cx=\"100%\"\n cy=\"50%\"\n mask=\"url(#hide-half)\"\n />\n <ellipse\n rx=\"50%\"\n ry=\"25%\"\n cx=\"100%\"\n cy=\"50%\"\n mask=\"url(#hide-half)\"\n />\n </svg>\n ${this._contributors.map(({ name, github, org }) => {\n const imgSrc = `https://avatars.githubusercontent.com/${github\n ?.split(\"/\")\n .slice(-1)}`;\n return html`<li>\n <a href=${github} target=\"_blank\" rel=\"nofollow noreferrer\">\n <img\n src=\"${imgSrc}?size=80\"\n srcset=\"${imgSrc}?size=160 2x\"\n loading=\"lazy\"\n referrerpolicy=\"no-referrer\"\n />\n ${name}\n </a>\n <span class=\"org\">${org}</span>\n </li>`;\n })}\n </ul>\n </div>\n </div>`;\n }\n}\n\ncustomElements.define(\"mdn-contributor-list\", MDNContributorList);\n\n/**\n * @template T\n * @param {Array<T>} array\n */\nfunction popRandom(array) {\n const i = Math.floor(Math.random() * array.length);\n // mutate the array:\n return array.splice(i, 1)[0];\n}\n","import { css } from \"lit\";\n// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `*{box-sizing:border-box}.wrap{--img-size:3.75em;--li-size:calc(var(--img-size)*2.5)}ul{--circle-border-size:0.375em;align-content:start;display:grid;gap:2rem 1rem;grid-template-columns:repeat(auto-fit,minmax(var(--li-size),1fr));justify-items:center;margin:0;padding:0}@media (max-width:769px){ul{display:flex;margin-top:2rem;overflow-x:auto}}a,li{align-items:center;display:flex;flex-direction:column;flex-shrink:0;text-align:center}li{color:var(--community-text-primary);width:var(--li-size)}img{background:var(--community-circle-img-border);border:var(--circle-border-size) var(--community-circle-img-border) solid;border-radius:50%;flex-shrink:0;height:var(--img-size);width:var(--img-size)}a{color:unset;font-weight:500}svg{display:none}@supports (offset-path:ellipse(100% 50% at 100% 50%)){@media (min-width:769.02px){.wrap{container-type:size;height:100%;width:100%}.inner{font-size:min(1rem,3.5cqmin);padding:calc(var(--img-size)/2) calc(var(--li-size)/2)}ul{aspect-ratio:1/2;margin-left:auto;max-height:var(--community-circle-height);min-height:0;min-width:0;position:relative}svg,ul{display:block}svg{height:100%;overflow:visible;position:absolute;width:100%;fill:none;stroke:var(--community-circle-img-border);stroke-width:var(--circle-border-size)}li{animation:community-circle .1ms forwards;offset-anchor:center calc(var(--img-size)*.5);offset-distance:var(--offset-distance);offset-path:ellipse(100% 50% at 100% 50%);offset-rotate:0deg}li:nth-of-type(n+6){--img-size:5em;offset-path:ellipse(50% 25% at 100% 50%)}@keyframes community-circle{0%{offset-distance:calc(var(--offset-distance) - .1%)}}li:first-of-type{--offset-distance:75%}li:nth-of-type(2){--offset-distance:62.5%}li:nth-of-type(3){--offset-distance:50%}li:nth-of-type(4){--offset-distance:37.5%}li:nth-of-type(5){--offset-distance:25%}li:nth-of-type(6){--offset-distance:75%}li:nth-of-type(7){--offset-distance:50%}li:nth-of-type(8){--offset-distance:25%}.org{display:-webkit-box;overflow:hidden;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical}}}`, \"\"]);\n// Exports\nexport default css([___CSS_LOADER_EXPORT___.toString()]);\n"],"names":["MDNContributorList","s","i","Math","MutationObserver","customElements"],"mappings":"iLAMO,IAAMA,mBAAN,MAAMA,2BAA2B,IAAU,CAChD,OAAO,IAAM,EAAM,AAEnB,QAAO,WAAa,CAClB,cAAe,CAAE,MAAO,EAAK,CAC/B,CAAE,AAEF,QAAO,OAASC,EAAA,CAAM,AAAC,AAEvB,cAAc,CACZ,KAAK,GAEL,IAAI,CAAC,aAAa,CAAG,EAAE,AACzB,CAEA,oBAAqB,CACnB,IAAM,EAAkB,IAAI,CAAC,aAAa,CAAC,MAErC,EAAqB,EAAE,CAC7B,GAAI,EAAiB,CACnB,IAAM,EAAe,IAAI,EAAgB,gBAAgB,CAAC,MAAM,CAChE,IAAK,IAAI,EAAQ,EAAG,EAAQ,EAAG,IAAS,CACtC,IAAM,EAAc,AA4F5B,SAAmB,CAAK,EACtB,IAAMC,EAAIC,KAAK,KAAK,CAACA,KAAK,MAAM,GAAK,EAAM,MAAM,EAEjD,OAAO,EAAM,MAAM,CAACD,EAAG,EAAE,CAAC,EAAE,AAC9B,EAhGsC,GAC9B,GAAI,CAAC,EACH,MAEF,GAAM,CAAC,EAAM,EAAQ,EAAI,CAAG,IAAI,EAAY,UAAU,CAAC,CAAC,GAAG,CACzD,AAAC,GAAS,GAAM,aAAa,QAAU,QAEzC,GAAI,CAAC,GAAQ,CAAC,EAAQ,CACpB,IACA,QACF,CACA,EAAmB,IAAI,CAAC,CACtB,OACA,SACA,KACF,EACF,CACA,IAAI,CAAC,aAAa,CAAG,CACvB,CACF,CAEA,mBAAoB,CAClB,KAAK,CAAC,oBACN,IAAI,CAAC,kBAAkB,GACvB,IAAIE,iBAAiB,IAAM,IAAI,CAAC,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAE,CAClE,QAAS,GACT,UAAW,GACX,cAAe,EACjB,EACF,CAEA,QAAS,CACP,MAAO,QAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UA+BN,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAE,MAAI,CAAE,QAAM,CAAE,KAAG,CAAE,IAC7C,IAAM,EAAS,CAAC,sCAAsC,EAAE,GACpD,MAAM,KACP,MAAM,IAAI,CAAC,CACd,MAAO,QAAI,CAAC;sBACF,EAAE,EAAO;;uBAER,EAAE,EAAO;0BACN,EAAE,EAAO;;;;gBAInB,EAAE,EAAK;;gCAES,EAAE,EAAI;iBACrB,CAAC,AACR,GAAG;;;UAGH,CAAC,AACT,CACF,EAEAC,eAAe,MAAM,CAAC,uBAAwBL,mB,sFC9G1C,EAA0B,A,SAA4B,KAE1D,EAAwB,IAAI,CAAC,CAAC,EAAO,EAAE,CAAE,w/DAAy/D,GAAG,EAEriE,MAAe,SAAI,CAAC,EAAwB,QAAQ,GAAG,C"}
1
+ {"version":3,"file":"533.43be64a8c12d5411.js","sources":["webpack://@mdn/fred/./components/contributor-list/element.js","webpack://@mdn/fred/./components/contributor-list/element.css"],"sourcesContent":["import { LitElement, html } from \"lit\";\n\nimport styles from \"./element.css?lit\";\n\n/** @import { ContributorData } from \"./types.d.ts\" */\n\nexport class MDNContributorList extends LitElement {\n static ssr = false;\n\n static properties = {\n _contributors: { state: true },\n };\n\n static styles = styles;\n\n constructor() {\n super();\n /** @type {ContributorData[]} */\n this._contributors = [];\n }\n\n _onChildrenChanged() {\n const contributorList = this.querySelector(\"ul\");\n /** @type {ContributorData[]} */\n const randomContributors = [];\n if (contributorList) {\n const contributors = [...contributorList.querySelectorAll(\"li\")];\n for (let index = 0; index < 8; index++) {\n const contributor = popRandom(contributors);\n if (!contributor) {\n break;\n }\n const [name, github, org] = [...contributor.childNodes].map(\n (node) => node?.textContent?.trim() || undefined,\n );\n if (!name || !github) {\n index--;\n continue;\n }\n randomContributors.push({\n name,\n github,\n org,\n });\n }\n this._contributors = randomContributors;\n }\n }\n\n connectedCallback() {\n super.connectedCallback();\n this._onChildrenChanged();\n new MutationObserver(() => this._onChildrenChanged()).observe(this, {\n subtree: true,\n childList: true,\n characterData: true,\n });\n }\n\n render() {\n return html`<div class=\"wrap\">\n <div class=\"inner\">\n <ul>\n <svg>\n <defs>\n <mask id=\"hide-half\">\n <rect\n x=\"0%\"\n y=\"0%\"\n width=\"100%\"\n height=\"100%\"\n fill=\"#fff\"\n stroke=\"#fff\"\n />\n </mask>\n </defs>\n <ellipse\n rx=\"100%\"\n ry=\"50%\"\n cx=\"100%\"\n cy=\"50%\"\n mask=\"url(#hide-half)\"\n />\n <ellipse\n rx=\"50%\"\n ry=\"25%\"\n cx=\"100%\"\n cy=\"50%\"\n mask=\"url(#hide-half)\"\n />\n </svg>\n ${this._contributors.map(({ name, github, org }) => {\n const imgSrc = `https://avatars.githubusercontent.com/${github\n ?.split(\"/\")\n .slice(-1)}`;\n return html`<li>\n <a href=${github} target=\"_blank\" rel=\"nofollow noreferrer\">\n <img\n src=\"${imgSrc}?size=80\"\n srcset=\"${imgSrc}?size=160 2x\"\n loading=\"lazy\"\n referrerpolicy=\"no-referrer\"\n />\n ${name}\n </a>\n <span class=\"org\">${org}</span>\n </li>`;\n })}\n </ul>\n </div>\n </div>`;\n }\n}\n\ncustomElements.define(\"mdn-contributor-list\", MDNContributorList);\n\n/**\n * @template T\n * @param {Array<T>} array\n */\nfunction popRandom(array) {\n const i = Math.floor(Math.random() * array.length);\n // mutate the array:\n return array.splice(i, 1)[0];\n}\n","import { css } from \"lit\";\n// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `*{box-sizing:border-box}.wrap{--img-size:3.75em;--li-size:calc(var(--img-size)*2.5)}ul{--circle-border-size:0.375em;align-content:start;display:grid;gap:2rem 1rem;grid-template-columns:repeat(auto-fit,minmax(var(--li-size),1fr));justify-items:center;margin:0;padding:0}@media (width <= 769px){ul{display:flex;margin-top:2rem;overflow-x:auto}}a,li{align-items:center;display:flex;flex-direction:column;flex-shrink:0;text-align:center}li{color:var(--community-text-primary);width:var(--li-size)}img{background:var(--community-circle-img-border);border:var(--circle-border-size) var(--community-circle-img-border) solid;border-radius:50%;flex-shrink:0;height:var(--img-size);width:var(--img-size)}a{color:unset;font-weight:500}svg{display:none}@supports (offset-path:ellipse(100% 50% at 100% 50%)){@media (769px < width){.wrap{container-type:size;height:100%;width:100%}.inner{font-size:min(1rem,3.5cqmin);padding:calc(var(--img-size)/2) calc(var(--li-size)/2)}ul{aspect-ratio:1/2;margin-left:auto;max-height:var(--community-circle-height);min-height:0;min-width:0;position:relative}svg,ul{display:block}svg{height:100%;overflow:visible;position:absolute;width:100%;fill:none;stroke:var(--community-circle-img-border);stroke-width:var(--circle-border-size)}li{animation:community-circle .1ms forwards;offset-anchor:center calc(var(--img-size)*.5);offset-distance:var(--offset-distance);offset-path:ellipse(100% 50% at 100% 50%);offset-rotate:0deg}li:nth-of-type(n+6){--img-size:5em;offset-path:ellipse(50% 25% at 100% 50%)}@keyframes community-circle{0%{offset-distance:calc(var(--offset-distance) - .1%)}}li:first-of-type{--offset-distance:75%}li:nth-of-type(2){--offset-distance:62.5%}li:nth-of-type(3){--offset-distance:50%}li:nth-of-type(4){--offset-distance:37.5%}li:nth-of-type(5){--offset-distance:25%}li:nth-of-type(6){--offset-distance:75%}li:nth-of-type(7){--offset-distance:50%}li:nth-of-type(8){--offset-distance:25%}.org{display:-webkit-box;overflow:hidden;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical}}}`, \"\"]);\n// Exports\nexport default css([___CSS_LOADER_EXPORT___.toString()]);\n"],"names":["MDNContributorList","s","i","Math","MutationObserver","customElements"],"mappings":"iLAMO,IAAMA,mBAAN,MAAMA,2BAA2B,IAAU,CAChD,OAAO,IAAM,EAAM,AAEnB,QAAO,WAAa,CAClB,cAAe,CAAE,MAAO,EAAK,CAC/B,CAAE,AAEF,QAAO,OAASC,EAAA,CAAM,AAAC,AAEvB,cAAc,CACZ,KAAK,GAEL,IAAI,CAAC,aAAa,CAAG,EAAE,AACzB,CAEA,oBAAqB,CACnB,IAAM,EAAkB,IAAI,CAAC,aAAa,CAAC,MAErC,EAAqB,EAAE,CAC7B,GAAI,EAAiB,CACnB,IAAM,EAAe,IAAI,EAAgB,gBAAgB,CAAC,MAAM,CAChE,IAAK,IAAI,EAAQ,EAAG,EAAQ,EAAG,IAAS,CACtC,IAAM,EAAc,AA4F5B,SAAmB,CAAK,EACtB,IAAMC,EAAIC,KAAK,KAAK,CAACA,KAAK,MAAM,GAAK,EAAM,MAAM,EAEjD,OAAO,EAAM,MAAM,CAACD,EAAG,EAAE,CAAC,EAAE,AAC9B,EAhGsC,GAC9B,GAAI,CAAC,EACH,MAEF,GAAM,CAAC,EAAM,EAAQ,EAAI,CAAG,IAAI,EAAY,UAAU,CAAC,CAAC,GAAG,CACzD,AAAC,GAAS,GAAM,aAAa,QAAU,QAEzC,GAAI,CAAC,GAAQ,CAAC,EAAQ,CACpB,IACA,QACF,CACA,EAAmB,IAAI,CAAC,CACtB,OACA,SACA,KACF,EACF,CACA,IAAI,CAAC,aAAa,CAAG,CACvB,CACF,CAEA,mBAAoB,CAClB,KAAK,CAAC,oBACN,IAAI,CAAC,kBAAkB,GACvB,IAAIE,iBAAiB,IAAM,IAAI,CAAC,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAE,CAClE,QAAS,GACT,UAAW,GACX,cAAe,EACjB,EACF,CAEA,QAAS,CACP,MAAO,QAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UA+BN,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAE,MAAI,CAAE,QAAM,CAAE,KAAG,CAAE,IAC7C,IAAM,EAAS,CAAC,sCAAsC,EAAE,GACpD,MAAM,KACP,MAAM,IAAI,CAAC,CACd,MAAO,QAAI,CAAC;sBACF,EAAE,EAAO;;uBAER,EAAE,EAAO;0BACN,EAAE,EAAO;;;;gBAInB,EAAE,EAAK;;gCAES,EAAE,EAAI;iBACrB,CAAC,AACR,GAAG;;;UAGH,CAAC,AACT,CACF,EAEAC,eAAe,MAAM,CAAC,uBAAwBL,mB,sFC9G1C,EAA0B,A,SAA4B,KAE1D,EAAwB,IAAI,CAAC,CAAC,EAAO,EAAE,CAAE,k/DAAm/D,GAAG,EAE/hE,MAAe,SAAI,CAAC,EAAwB,QAAQ,GAAG,C"}