@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
@@ -1 +0,0 @@
1
- {"version":3,"file":"1197.25090f81ab4208bc.css","sources":["webpack://@mdn/fred/./components/curriculum/vars.css","webpack://@mdn/fred/./components/curriculum/toc.css","webpack://@mdn/fred/./components/curriculum/shared.css"],"sourcesContent":[".curriculum-content-container {\n --max-width: 74rem;\n --gutter: 1rem;\n --inner-width: calc(min(var(--max-width), 100vw) - 2 * var(--gutter));\n\n --curriculum-bg-color-landing-about-ul: light-dark(\n hsl(0deg 0% 100%),\n hsl(0deg 0% 0%)\n );\n --curriculum-bg-color-landing-stairway-floor: light-dark(\n hsl(30deg 77% 95%),\n hsl(28deg 46% 37%)\n );\n --curriculum-bg-color-landing-top-icon: light-dark(\n hsl(30deg 77% 95%),\n hsl(22deg 44% 10%)\n );\n --curriculum-bg-color-landing: light-dark(\n hsl(0deg 0% 100%),\n hsl(18deg 13% 5%)\n );\n --curriculum-bg-color-list-item-body: light-dark(\n hsl(0deg 0% 100%),\n hsl(0deg 0% 0%)\n );\n --curriculum-bg-color-list-item-icon-topic-practices: light-dark(\n hsl(0deg 0% 100%),\n hsl(265deg 31% 38%)\n );\n --curriculum-bg-color-list-item-icon-topic-scripting: light-dark(\n hsl(0deg 0% 100%),\n hsl(42deg 33% 38%)\n );\n --curriculum-bg-color-list-item-icon-topic-standards: light-dark(\n hsl(0deg 0% 100%),\n hsl(357deg 31% 38%)\n );\n --curriculum-bg-color-list-item-icon-topic-styling: light-dark(\n hsl(0deg 0% 100%),\n hsl(224deg 31% 38%)\n );\n --curriculum-bg-color-list-item-icon-topic-tooling: light-dark(\n hsl(0deg 0% 100%),\n hsl(142deg 31% 38%)\n );\n --curriculum-bg-color-list-item-topic-practices: light-dark(\n hsl(265deg 100% 70% / 19%),\n hsl(0deg 0% 20%)\n );\n --curriculum-bg-color-list-item-topic-scripting: light-dark(\n hsl(54deg 100% 29% / 19%),\n hsl(0deg 0% 20%)\n );\n --curriculum-bg-color-list-item-topic-standards: light-dark(\n hsl(344deg 100% 58% / 19%),\n hsl(0deg 0% 20%)\n );\n --curriculum-bg-color-list-item-topic-styling: light-dark(\n hsl(205deg 100% 47% / 19%),\n hsl(0deg 0% 20%)\n );\n --curriculum-bg-color-list-item-topic-tooling: light-dark(\n hsl(146deg 100% 30% / 19%),\n hsl(0deg 0% 20%)\n );\n --curriculum-bg-color-note: light-dark(\n hsl(30deg 77% 95% / 50%),\n hsl(26deg 10% 18%)\n );\n --curriculum-bg-color-partner: light-dark(\n hsl(0deg 0% 100%),\n hsl(30deg 7% 12%)\n );\n --curriculum-bg-color-topic-practices: light-dark(\n hsl(265deg 100% 70% / 19%),\n hsl(265deg 31% 38%)\n );\n --curriculum-bg-color-topic-scripting: light-dark(\n hsl(54deg 100% 29% / 19%),\n hsl(44deg 29% 36%)\n );\n --curriculum-bg-color-topic-standards: light-dark(\n hsl(344deg 100% 58% / 19%),\n hsl(355deg 34% 45%)\n );\n --curriculum-bg-color-topic-styling: light-dark(\n hsl(205deg 100% 47% / 19%),\n hsl(225deg 34% 46%)\n );\n --curriculum-bg-color-topic-tooling: light-dark(\n hsl(146deg 100% 30% / 19%),\n hsl(137deg 36% 37%)\n );\n --curriculum-bg-color: light-dark(hsl(30deg 77% 95%), hsl(22deg 44% 10%));\n --curriculum-bg-large-color: light-dark(hsl(30deg 77% 95%), hsl(0deg 0% 20%));\n --curriculum-border-color-hover: light-dark(\n hsl(0deg 0% 100%),\n hsl(0deg 0% 80% / 65%)\n );\n --curriculum-border-color: light-dark(hsl(0deg 4% 95%), hsl(0deg 0% 31%));\n --curriculum-category-color: light-dark(\n hsl(18deg 76% 53%),\n hsl(18deg 76% 53%)\n );\n --curriculum-color-landing-laptop: light-dark(\n hsl(18deg 76% 53%),\n hsl(22deg 54% 45%)\n );\n --curriculum-color-list-item-icon-topic-practices: light-dark(\n hsl(270deg 100% 59%),\n hsl(276deg 72% 76%)\n );\n --curriculum-color-list-item-icon-topic-scripting: light-dark(\n hsl(54deg 100% 23%),\n hsl(44deg 81% 75%)\n );\n --curriculum-color-list-item-icon-topic-standards: light-dark(\n hsl(344deg 100% 41%),\n hsl(355deg 81% 75%)\n );\n --curriculum-color-list-item-icon-topic-styling: light-dark(\n hsl(210deg 100% 38%),\n hsl(225deg 72% 76%)\n );\n --curriculum-color-list-item-icon-topic-tooling: light-dark(\n hsl(146deg 100% 24%),\n hsl(146deg 81% 75%)\n );\n --curriculum-color-topic-practices: light-dark(\n hsl(270deg 100% 59%),\n hsl(276deg 72% 76%)\n );\n --curriculum-color-topic-scripting: light-dark(\n hsl(54deg 100% 23%),\n hsl(44deg 81% 75%)\n );\n --curriculum-color-topic-standards: light-dark(\n hsl(344deg 100% 41%),\n hsl(355deg 81% 75%)\n );\n --curriculum-color-topic-styling: light-dark(\n hsl(210deg 100% 38%),\n hsl(225deg 72% 76%)\n );\n --curriculum-color-topic-tooling: light-dark(\n hsl(146deg 100% 24%),\n hsl(146deg 81% 75%)\n );\n --curriculum-color: light-dark(hsl(19deg 63% 59%), hsl(18deg 76% 53%));\n --curriculum-module-label-bg-color: light-dark(\n hsl(30deg 77% 98%),\n hsl(22deg 44% 10%)\n );\n --curriculum-module-label-color: light-dark(\n hsl(18deg 71% 42%),\n hsl(18deg 76% 53%)\n );\n --curriculum-shadow-landing-about-ul:\n 0 4px 10px 0 light-dark(hsl(18deg 76% 53% / 6%), hsl(30deg 54% 45% / 15%)),\n 0 -2px 4px 0 light-dark(hsl(22deg 54% 45% / 6%), hsl(22deg 54% 45% / 6%));\n --curriculum-shadow:\n 4px 4px 8px 0 light-dark(hsl(18deg 76% 53% / 6%), hsl(0deg 0% 14% / 15%)),\n -4px 4px 8px 0 light-dark(hsl(0deg 0% 70% / 15%), hsl(0deg 0% 34% / 15%));\n\n --curriculum-landing-about-beginner: url(\"./assets/curriculum-landing-about-beginner.svg#light\");\n --curriculum-landing-about-pace: url(\"./assets/curriculum-landing-about-pace.svg#light\");\n --curriculum-landing-about-free: url(\"./assets/curriculum-landing-about-free.svg#light\");\n --curriculum-landing-about-bullet: url(\"./assets/curriculum-landing-about-bullet.svg#light\");\n --curriculum-landing-started-beginner: url(\"./assets/curriculum-landing-started-beginner.svg#light\");\n --curriculum-landing-started-advanced: url(\"./assets/curriculum-landing-started-advanced.svg#light\");\n --curriculum-landing-started-employment: url(\"./assets/curriculum-landing-started-employment.svg#light\");\n --curriculum-landing-started-educator: url(\"./assets/curriculum-landing-started-educator.svg#light\");\n --curriculum-module-mdn-resource: url(\"./assets/curriculum-mdn-resource.svg#light\");\n --curriculum-bullet: url(\"./assets/curriculum-bullet.svg#light\");\n --curriculum-about-covered: url(\"./assets/curriculum-about-covered.svg#light\");\n --curriculum-about-detail: url(\"./assets/curriculum-about-detail.svg#light\");\n --curriculum-about-educators: url(\"./assets/curriculum-about-educators.svg#light\");\n --curriculum-about-not: url(\"./assets/curriculum-about-not.svg#light\");\n --curriculum-about-students: url(\"./assets/curriculum-about-students.svg#light\");\n --curriculum-bg-image-partner: url(\"./assets/curriculum-partner-bg.svg#light\");\n --curriculum-scrim-bg: url(\"./assets/curriculum-scrim-bg.svg#light\");\n --curriculum-landing-arrow: url(\"./assets/curriculum-landing-arrow.svg#light\");\n\n --text-primary: var(--color-text-primary);\n --text-secondary: var(--color-text-secondary);\n}\n\n/* theme support for swapping out assets: check the root-level data-theme property, fall back to the os-level preference */\n:root[data-theme=\"dark\"] {\n .curriculum-content-container {\n --curriculum-landing-about-beginner: url(\"./assets/curriculum-landing-about-beginner.svg#dark\");\n --curriculum-landing-about-pace: url(\"./assets/curriculum-landing-about-pace.svg#dark\");\n --curriculum-landing-about-free: url(\"./assets/curriculum-landing-about-free.svg#dark\");\n --curriculum-landing-about-bullet: url(\"./assets/curriculum-landing-about-bullet.svg#dark\");\n --curriculum-landing-started-beginner: url(\"./assets/curriculum-landing-started-beginner.svg#dark\");\n --curriculum-landing-started-advanced: url(\"./assets/curriculum-landing-started-advanced.svg#dark\");\n --curriculum-landing-started-employment: url(\"./assets/curriculum-landing-started-employment.svg#dark\");\n --curriculum-landing-started-educator: url(\"./assets/curriculum-landing-started-educator.svg#dark\");\n --curriculum-module-mdn-resource: url(\"./assets/curriculum-mdn-resource.svg#dark\");\n --curriculum-bullet: url(\"./assets/curriculum-bullet.svg#dark\");\n --curriculum-about-covered: url(\"./assets/curriculum-about-covered.svg#dark\");\n --curriculum-about-detail: url(\"./assets/curriculum-about-detail.svg#dark\");\n --curriculum-about-educators: url(\"./assets/curriculum-about-educators.svg#dark\");\n --curriculum-about-not: url(\"./assets/curriculum-about-not.svg#dark\");\n --curriculum-about-students: url(\"./assets/curriculum-about-students.svg#dark\");\n --curriculum-bg-image-partner: url(\"./assets/curriculum-partner-bg.svg#dark\");\n --curriculum-scrim-bg: url(\"./assets/curriculum-scrim-bg.svg#dark\");\n --curriculum-landing-arrow: url(\"./assets/curriculum-landing-arrow.svg#dark\");\n }\n}\n\n@media (prefers-color-scheme: dark) {\n .curriculum-content-container {\n --curriculum-landing-about-beginner: url(\"./assets/curriculum-landing-about-beginner.svg#dark\");\n --curriculum-landing-about-pace: url(\"./assets/curriculum-landing-about-pace.svg#dark\");\n --curriculum-landing-about-free: url(\"./assets/curriculum-landing-about-free.svg#dark\");\n --curriculum-landing-about-bullet: url(\"./assets/curriculum-landing-about-bullet.svg#dark\");\n --curriculum-landing-started-beginner: url(\"./assets/curriculum-landing-started-beginner.svg#dark\");\n --curriculum-landing-started-advanced: url(\"./assets/curriculum-landing-started-advanced.svg#dark\");\n --curriculum-landing-started-employment: url(\"./assets/curriculum-landing-started-employment.svg#dark\");\n --curriculum-landing-started-educator: url(\"./assets/curriculum-landing-started-educator.svg#dark\");\n --curriculum-module-mdn-resource: url(\"./assets/curriculum-mdn-resource.svg#dark\");\n --curriculum-bullet: url(\"./assets/curriculum-bullet.svg#dark\");\n --curriculum-about-covered: url(\"./assets/curriculum-about-covered.svg#dark\");\n --curriculum-about-detail: url(\"./assets/curriculum-about-detail.svg#dark\");\n --curriculum-about-educators: url(\"./assets/curriculum-about-educators.svg#dark\");\n --curriculum-about-not: url(\"./assets/curriculum-about-not.svg#dark\");\n --curriculum-about-students: url(\"./assets/curriculum-about-students.svg#dark\");\n --curriculum-bg-image-partner: url(\"./assets/curriculum-partner-bg.svg#dark\");\n --curriculum-scrim-bg: url(\"./assets/curriculum-scrim-bg.svg#dark\");\n --curriculum-landing-arrow: url(\"./assets/curriculum-landing-arrow.svg#dark\");\n }\n}\n\n.curriculum-content-container {\n --background-toc-active: var(--curriculum-bg-color);\n --category-color: var(--curriculum-category-color);\n\n --curriculum-bg-color-topic: var(--curriculum-bg-color);\n --curriculum-color-topic: var(--curriculum-color);\n\n .topic-standards {\n --curriculum-bg-color-topic: var(--curriculum-bg-color-topic-standards);\n --curriculum-color-topic: var(--curriculum-color-topic-standards);\n --curriculum-bg-color-list-item-header: var(\n --curriculum-bg-color-list-item-topic-standards\n );\n --curriculum-color-list-item-icon: var(\n --curriculum-color-list-item-icon-topic-standards\n );\n --curriculum-bg-color-list-item-icon: var(\n --curriculum-bg-color-list-item-icon-topic-standards\n );\n }\n\n .topic-styling {\n --curriculum-bg-color-topic: var(--curriculum-bg-color-topic-styling);\n --curriculum-color-topic: var(--curriculum-color-topic-styling);\n --curriculum-bg-color-list-item-header: var(\n --curriculum-bg-color-list-item-topic-styling\n );\n --curriculum-color-list-item-icon: var(\n --curriculum-color-list-item-icon-topic-styling\n );\n --curriculum-bg-color-list-item-icon: var(\n --curriculum-bg-color-list-item-icon-topic-styling\n );\n }\n\n .topic-scripting {\n --curriculum-bg-color-topic: var(--curriculum-bg-color-topic-scripting);\n --curriculum-color-topic: var(--curriculum-color-topic-scripting);\n --curriculum-bg-color-list-item-header: var(\n --curriculum-bg-color-list-item-topic-scripting\n );\n --curriculum-color-list-item-icon: var(\n --curriculum-color-list-item-icon-topic-scripting\n );\n --curriculum-bg-color-list-item-icon: var(\n --curriculum-bg-color-list-item-icon-topic-scripting\n );\n }\n\n .topic-tooling {\n --curriculum-bg-color-topic: var(--curriculum-bg-color-topic-tooling);\n --curriculum-color-topic: var(--curriculum-color-topic-tooling);\n --curriculum-bg-color-list-item-header: var(\n --curriculum-bg-color-list-item-topic-tooling\n );\n --curriculum-color-list-item-icon: var(\n --curriculum-color-list-item-icon-topic-tooling\n );\n --curriculum-bg-color-list-item-icon: var(\n --curriculum-bg-color-list-item-icon-topic-tooling\n );\n }\n\n .topic-practices {\n --curriculum-bg-color-topic: var(--curriculum-bg-color-topic-practices);\n --curriculum-color-topic: var(--curriculum-color-topic-practices);\n --curriculum-bg-color-list-item-header: var(\n --curriculum-bg-color-list-item-topic-practices\n );\n --curriculum-color-list-item-icon: var(\n --curriculum-color-list-item-icon-topic-practices\n );\n --curriculum-bg-color-list-item-icon: var(\n --curriculum-bg-color-list-item-icon-topic-practices\n );\n }\n}\n",".curriculum-content-container {\n .toc {\n position: sticky;\n top: var(--sticky-header-height);\n\n max-height: calc(100vh - var(--sticky-header-height));\n\n overflow-y: auto;\n\n .document-toc {\n padding: 0;\n margin-bottom: 2rem;\n\n .document-toc-heading {\n margin: 0 0 1rem;\n\n font-size: var(--font-size-normal);\n font-weight: 400;\n\n line-height: var(--font-line-content);\n\n letter-spacing: 1.5px;\n }\n\n .document-toc-list {\n --toc-header-font-size: var(--font-size-small);\n padding-left: 0;\n font-size: var(--font-size-small);\n list-style: none;\n\n li {\n margin: 0;\n }\n }\n\n .document-toc-link {\n display: inline-block;\n\n padding: 0.5rem 1rem;\n\n color: var(--color-text-secondary);\n\n text-decoration: none;\n\n border-left: 2px solid var(--color-border-primary);\n\n &:hover {\n color: var(--text-link);\n }\n\n &[aria-current]:not([aria-current=\"\"], [aria-current=\"false\"]) {\n font-weight: 600;\n\n color: var(--text-primary);\n\n background-color: var(--background-toc-active);\n border-left: 2px solid var(--category-color);\n border-top-right-radius: 0.25rem;\n border-bottom-right-radius: 0.25rem;\n }\n }\n\n .document-toc-item-sub > .document-toc-link:not(.button) {\n padding-left: 2rem;\n }\n\n h2 {\n padding: 0;\n margin: 0;\n\n font-size: var(--toc-header-font-size, var(--font-size-large));\n font-weight: normal;\n }\n\n ul {\n display: grid;\n\n padding: 0;\n margin: 0;\n\n list-style: none;\n\n ul {\n padding-left: 1rem;\n }\n }\n\n a {\n display: block;\n\n padding: 0.5rem;\n\n color: inherit;\n\n text-decoration: none;\n\n &:hover:not([aria-current=\"true\"]) {\n color: var(--color-link-normal);\n }\n\n &[aria-current=\"true\"] {\n background-color: var(--color-background-blue);\n box-shadow: -2px 0 0 var(--color-blue-50);\n }\n }\n\n @media (--screen-small-and-narrower) {\n padding: 0 1rem;\n }\n\n .show-toc {\n display: block;\n }\n }\n }\n}\n","@import url(\"./vars.css\");\n@import url(\"./toc.css\");\n\n.curriculum-content-container {\n line-height: var(--font-line-content);\n\n /* space above all 3 columns */\n .curriculum-sidebar,\n .toc,\n .curriculum-content {\n padding-top: 3rem;\n padding-bottom: 3rem;\n }\n\n /* hide unchecked tab contents on landing page */\n .curriculum-content {\n .modules {\n input[type=\"radio\"]:not(:checked) ~ ol {\n display: none;\n }\n }\n\n max-width: 100%;\n\n :target {\n scroll-margin-top: var(--sticky-header-height);\n }\n\n h1 {\n margin-bottom: 2rem;\n\n font-size: var(--font-size-largest);\n font-weight: 600;\n\n line-height: 1.2;\n }\n\n h2 {\n margin: 4rem 0 0.5rem;\n font-size: var(--font-size-larger);\n font-weight: 500;\n }\n\n h3 {\n margin: 2rem 0 0.5rem;\n font-size: var(--font-size-large);\n font-weight: 300;\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n a:link,\n a:visited {\n color: var(--text-primary);\n text-decoration: none;\n }\n\n a:hover,\n a:focus {\n text-decoration: underline;\n }\n\n a:active {\n background-color: transparent;\n }\n\n a[href^=\"#\"]:not(.button) {\n text-decoration: none;\n\n &::before {\n display: inline-block;\n visibility: hidden;\n\n width: 0.8em;\n\n margin-left: -0.8em;\n\n font-size: 0.7em;\n\n line-height: 1;\n\n color: var(--color-text-secondary);\n\n text-decoration: none;\n\n content: \"#\";\n }\n\n &:hover {\n text-decoration: underline;\n\n &::before {\n visibility: visible;\n }\n }\n }\n }\n }\n\n ol,\n ul {\n padding: 0;\n margin: 0;\n list-style: none;\n }\n\n &,\n .button {\n --button-padding: 1rem;\n }\n\n .curriculum-content {\n a:not(.button) {\n color: var(--text-link);\n\n &:link,\n &:visited {\n text-decoration: underline;\n\n &.button {\n text-decoration: none;\n }\n }\n\n &:hover,\n &:focus {\n text-decoration: none;\n }\n\n &:visited:not([href^=\"#\"]) {\n color: var(--text-visited);\n }\n }\n\n ol,\n ul {\n padding: 0;\n list-style: none;\n\n li > p {\n margin: 0;\n }\n }\n }\n\n &.curriculum-overview,\n &.curriculum-module {\n .curriculum-content {\n > header > h1 {\n margin-bottom: 2rem;\n\n > span {\n color: var(--curriculum-color);\n }\n }\n\n .module-contents {\n > h2 {\n margin-top: 4rem;\n margin-bottom: 2rem;\n }\n }\n\n section h2:first-of-type {\n margin-top: 2rem;\n }\n\n blockquote.curriculum-notes {\n padding: 1rem;\n margin: 1rem;\n\n background-color: var(--curriculum-bg-color-note);\n border: 0;\n border-radius: var(--elem-radius);\n\n ol,\n ul {\n padding-left: 1rem;\n\n li:last-child {\n margin-bottom: 0;\n }\n }\n\n ol,\n ul,\n p {\n margin-top: 0.5rem;\n }\n\n > p:first-child {\n margin-top: 0;\n }\n\n > :last-child {\n margin-bottom: 0;\n }\n }\n\n p.curriculum-outcomes {\n display: flex;\n margin-bottom: 0.5rem;\n font-weight: var(--font-body-strong-weight);\n\n &::before {\n display: block;\n\n width: 24px;\n height: 24px;\n\n margin-right: 0.5rem;\n\n content: url(\"./assets/curriculum-resources.svg\");\n }\n }\n\n ol,\n ul {\n padding-left: 2rem;\n margin: 1rem 0;\n\n ol,\n ul {\n margin: 0;\n }\n }\n\n li {\n margin: 0.5rem 0;\n list-style-type: disc;\n }\n\n mdn-scrim-inline {\n display: block;\n\n width: 100%;\n max-width: 36rem;\n aspect-ratio: 1.5;\n\n margin: 0.5rem auto;\n }\n\n p:has(> scrim-inline:only-child) {\n margin: 1rem 0;\n }\n }\n }\n\n .curriculum-prev-next {\n display: flex;\n\n flex-wrap: wrap;\n\n gap: 0 1rem;\n justify-content: space-between;\n\n width: 100%;\n\n margin-top: 2rem;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,69 +0,0 @@
1
- export const __webpack_ids__=["1624"];export const __webpack_modules__={68494:function(t,e,o){t.exports=o.p+"bookmark-check.22b3511032ad3541.svg"},51979:function(t,e,o){t.exports=o.p+"bookmark.431a822761ea8a1e.svg"},84500:function(t,e,o){o.r(e),o.d(e,{MDNCollectionSaveButton:()=>MDNCollectionSaveButton});var i=o(35470),s=o(14703),l=o(69535),n=o(13117),a=o(1045);o(86499),o(50272);let MDNCollectionSaveButton=class MDNCollectionSaveButton extends(0,l.q)(s.oi){static ssr=!1;static styles=a.Z;static properties={docUrl:{type:String,attribute:"doc-url"},docTitle:{type:String,attribute:"doc-title"},_item:{state:!0},_pending:{state:!0},_lastAction:{state:!0}};constructor(){super(),this.docUrl="",this.docTitle="",this._item=void 0,this._pending=!1,this._lastAction=void 0}_user=new i.iQ(this,{task:async()=>{let t=await (0,n.s)();return t.isAuthenticated&&this._bookmarks.run(),t}});_collections=new i.iQ(this,{task:async()=>{let t=await fetch("/api/v2/collections/");if(!t.ok)throw Error(`${t.status}: ${t.statusText}`);return await t.json()}});_bookmarks=new i.iQ(this,{autoRun:!1,args:()=>[this.docUrl],task:async([t])=>{let e=await fetch(`/api/v2/collections/lookup/?url=${encodeURIComponent(t)}`);if(!e.ok)throw Error(`${e.status}: ${e.statusText}`);let o=await e.json(),i=o?.results,s=i&&i.map(t=>({...t.item,collection_id:t.collection_id}));if(s[0]){let{collection_id:t,title:e,notes:o}=s[0];this._item={collection_id:t,title:e,notes:o}}return s}});_open(){this._bookmarks.run(),this._collections.run(),this.shadowRoot?.querySelector("mdn-modal")?.showModal()}_selectChange({target:t}){if(t instanceof HTMLSelectElement){let{value:e}=t;if("add"===e)this.shadowRoot?.querySelector("mdn-modal")?.close(),open("/en-US/plus/collections");else{let t=this._bookmarks.value?.find(t=>t.collection_id===e);this._item=t||{collection_id:e}}}}_cancel(){this.shadowRoot?.querySelector("mdn-modal")?.close()}async _delete(){let t=this.shadowRoot?.querySelector("select")?.value,e=this._bookmarks.value?.find(e=>e.collection_id===t);if(t&&e){this._pending=!0,this._lastAction="delete";let o=await fetch(`/api/v2/collections/${t}/items/${e.id}/`,{method:"DELETE"});o.ok||console.error(`${o.status}: ${o.statusText}`),this.shadowRoot?.querySelector("mdn-modal")?.close(),this._pending=!1,this._bookmarks.run()}}async _submit(){let t=this.shadowRoot?.querySelector("select")?.value,e=this._bookmarks.value?.find(e=>e.collection_id===t);if(t){this._pending=!0,this._lastAction="save";let o=`/api/v2/collections/${t}/items/${e?`${e.id}/`:""}`,i=await fetch(o,{body:JSON.stringify({url:this.docUrl,title:this.shadowRoot?.querySelector("input")?.value,notes:this.shadowRoot?.querySelector("textarea")?.value}),method:"POST",headers:{"content-type":"application/json"}});i.ok||console.error(`${i.status}: ${i.statusText}`),this.shadowRoot?.querySelector("mdn-modal")?.close(),this._pending=!1,this._bookmarks.run()}}connectedCallback(){super.connectedCallback(),this._user.run()}willUpdate(t){(t.has("docUrl")||t.has("docTitle"))&&(this._item={url:this.docUrl,title:this.docTitle})}render(){let t=this._bookmarks.value?.some(t=>t.collection_id===this._item?.collection_id)||!1;return this._user.render({complete:e=>e.isAuthenticated?(0,s.dy)`
2
- <button
3
- class="collection-save-button"
4
- data-state=${this._bookmarks.value?.length?"remove":"save"}
5
- title=${this.l10n`Save in collection`}
6
- @click=${this._open}
7
- >
8
- <span
9
- >${this._bookmarks.value?.length?this.l10n`Remove`:this.l10n`Save`}</span
10
- >
11
- </button>
12
- <mdn-modal modal-title=${this.l10n`Add to collection`}>
13
- ${this._bookmarks.render({initial:()=>(0,s.dy)`<progress></progress>`,pending:()=>(0,s.dy)`<progress></progress>`,complete:e=>this._collections.render({initial:()=>(0,s.dy)`<progress></progress>`,pending:()=>(0,s.dy)`<progress></progress>`,complete:o=>(0,s.dy)`
14
- <label>
15
- ${this.l10n`Collection:`}
16
- <select
17
- .value=${this._item?.collection_id}
18
- @change=${this._selectChange}
19
- >
20
- ${o.map(t=>(0,s.dy)`
21
- <option
22
- value=${t.id}
23
- ?selected=${t.id===this._item?.collection_id}
24
- >
25
- ${e.some(e=>e.collection_id===t.id)?"★":"☆"}
26
- ${"Default"===t.name?this.l10n`Saved articles`:t.name}
27
- </option>
28
- `)}
29
- <option disabled role="separator">
30
- ——————————
31
- </option>
32
- <option value=${"add"}>
33
- + ${this.l10n`New collection`}
34
- </option>
35
- </select>
36
- </label>
37
- <label>
38
- ${this.l10n`Name:`}
39
- <input .value=${this._item?.title||this.docTitle} />
40
- </label>
41
- <label>
42
- ${this.l10n`Note:`}
43
- <textarea
44
- .value=${this._item?.notes||""}
45
- ></textarea>
46
- </label>
47
- <mdn-button @click=${this._submit}>
48
- ${this._pending&&"save"===this._lastAction?this.l10n`Saving…`:this.l10n`Save`}
49
- </mdn-button>
50
- <mdn-button
51
- @click=${this._cancel}
52
- ?disabled=${this._pending}
53
- variant="secondary"
54
- >
55
- ${this.l10n`Cancel`}
56
- </mdn-button>
57
- ${e?.length?(0,s.dy)`<mdn-button
58
- @click=${this._delete}
59
- variant="secondary"
60
- action="negative"
61
- id="bookmark-delete"
62
- ?disabled=${this._pending||!t}
63
- >
64
- ${this._pending&&"delete"===this._lastAction?this.l10n`Deleting…`:this.l10n`Delete`}
65
- </mdn-button>`:s.Ld}
66
- `})})}
67
- </mdn-modal>
68
- `:s.Ld})}};customElements.define("mdn-collection-save-button",MDNCollectionSaveButton)},1045:function(t,e,o){o.d(e,{Z:()=>p});var i=o(14703),s=o(8081),l=o.n(s),n=o(23645),a=o.n(n),c=o(61667),r=o.n(c),d=new o.U(o(51979)),h=new o.U(o(68494)),u=a()(l()),m=r()(d),_=r()(h);u.push([t.id,`.collection-save-button{align-items:center;background-color:initial;border:none;column-gap:.25rem;cursor:pointer;display:flex;font:inherit;margin:0;padding:0 .5rem}.collection-save-button:hover{background-color:var(--color-background-secondary)}.collection-save-button:before{background-color:currentcolor;content:"";display:inline-block;height:1.25rem;-webkit-mask-size:cover;mask-size:cover;width:1.25rem}.collection-save-button[data-state=save]:before{-webkit-mask-image:url(${m});mask-image:url(${m})}.collection-save-button[data-state=remove]:before{-webkit-mask-image:url(${_});mask-image:url(${_})}@media (max-width:769px){.collection-save-button span{display:none}}label{display:block}`,""]);let p=(0,i.iv)([u.toString()])}};
69
- //# sourceMappingURL=1624.5694c64f5e45232c.js.map
@@ -1,8 +0,0 @@
1
- export const __webpack_ids__=["1739"];export const __webpack_modules__={73594:function(e,o,r){r.r(o),r.d(o,{MDNHomepageSearch:()=>MDNHomepageSearch});var a=r(14703),t=r(69535),n=r(39187),s=r(8036);let MDNHomepageSearch=class MDNHomepageSearch extends(0,t.q)(a.oi){static styles=s.Z;_showModal(){let e=document.querySelector("#search");e instanceof n.MDNSearchModal?e.showModal():console.error("MDNSearchModal not found!")}render(){return(0,a.dy)`<button
2
- class="mdn-homepage-search"
3
- title=${this.l10n`Search the site`}
4
- @click=${this._showModal}
5
- >
6
- ${this.l10n`Search`}
7
- </button>`}};customElements.define("mdn-homepage-search",MDNHomepageSearch)},8036:function(e,o,r){r.d(o,{Z:()=>p});var a=r(14703),t=r(8081),n=r.n(t),s=r(23645),c=r.n(s),i=r(61667),l=r.n(i),d=new r.U(r(99454)),m=c()(n()),h=l()(d);m.push([e.id,`.mdn-homepage-search{border-color:var(--color-border-primary);border-radius:2em;border-style:solid;display:flex;font-size:var(--font-size-large);gap:.5ch;justify-content:center;margin:0 auto;padding:1em}.mdn-homepage-search:before{background-color:var(--color-text-primary);content:"";display:inline-block;flex-shrink:0;height:1.1em;-webkit-mask-image:url(${h});mask-image:url(${h});-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:1.1em}button{cursor:pointer}`,""]);let p=(0,a.iv)([m.toString()])}};
8
- //# sourceMappingURL=1739.505aa54ed62222c8.js.map
@@ -1,2 +0,0 @@
1
- :is(:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) .modules) input[type=radio]:not(:checked)~a.lets-begin,:is(:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) .modules) input[type=radio]:not(:checked)~ol.modules-list{display:none}:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) ol.modules-list-list{display:grid;grid-template-areas:"started core extensions" "hr hr hr" "mod mod mod" "cta cta cta";grid-template-columns:auto;margin:0;padding:0}@media (min-width:426.02px){:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) ol.modules-list-list{grid-template-areas:"started core extensions spacer" "hr hr hr hr" "mod mod mod mod" "cta cta cta cta";grid-template-columns:auto auto auto 1fr}}:is(:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) ol.modules-list-list):before{border:none;border-top:1px solid var(--text-inactive);content:"";grid-area:hr;margin:0 0 1.5rem;width:100%}:is(:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) ol.modules-list-list) li.modules-list-list-item{display:contents}:is(:is(:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) ol.modules-list-list) li.modules-list-list-item)>input:checked+label{color:var(--text-primary)}:is(:is(:is(:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) ol.modules-list-list) li.modules-list-list-item)>input:checked+label):before{height:0;position:absolute;transform:translate3d(-.75rem,.75rem,0);width:0}:is(:is(:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) ol.modules-list-list) li.modules-list-list-item)>input:checked:focus-visible+label{outline-color:var(--accent-primary);outline-offset:1px;outline-style:auto}:is(:is(:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) ol.modules-list-list) li.modules-list-list-item)>input:not(:checked)+label{color:var(--text-secondary);opacity:.775}:is(:is(:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) ol.modules-list-list) li.modules-list-list-item)>label{cursor:pointer;width:max-content}#modules-0:is(:is(:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) ol.modules-list-list) li.modules-list-list-item)>input,#modules-0:is(:is(:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) ol.modules-list-list) li.modules-list-list-item)>label{grid-area:started}#modules-0:is(:is(:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) ol.modules-list-list) li.modules-list-list-item)>input:checked+label:before{content:url(/static/client/curriculum-modules-underline.a71f4b586aa1b1da.svg#1)}#modules-1:is(:is(:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) ol.modules-list-list) li.modules-list-list-item)>input,#modules-1:is(:is(:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) ol.modules-list-list) li.modules-list-list-item)>label{grid-area:core}@media (min-width:426.02px){#modules-1:is(:is(:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) ol.modules-list-list) li.modules-list-list-item)>input,#modules-1:is(:is(:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) ol.modules-list-list) li.modules-list-list-item)>label{margin-left:2rem}}#modules-1:is(:is(:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) ol.modules-list-list) li.modules-list-list-item)>input:checked+label:before{content:url(/static/client/curriculum-modules-underline.a71f4b586aa1b1da.svg#2)}#modules-2:is(:is(:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) ol.modules-list-list) li.modules-list-list-item)>input,#modules-2:is(:is(:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) ol.modules-list-list) li.modules-list-list-item)>label{grid-area:extensions}@media (min-width:426.02px){#modules-2:is(:is(:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) ol.modules-list-list) li.modules-list-list-item)>input,#modules-2:is(:is(:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) ol.modules-list-list) li.modules-list-list-item)>label{margin-left:2rem}}#modules-2:is(:is(:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) ol.modules-list-list) li.modules-list-list-item)>input:checked+label:before{content:url(/static/client/curriculum-modules-underline.a71f4b586aa1b1da.svg#3)}:is(:is(:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) ol.modules-list-list) li.modules-list-list-item)>ol.modules-list{grid-area:mod;margin:0}:is(:is(:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) ol.modules-list-list) li.modules-list-list-item)>a.lets-begin{grid-area:cta;margin-left:.5rem;margin-top:2rem;width:fit-content}@media (min-width:769.02px){:is(:is(:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) ol.modules-list-list) li.modules-list-list-item)>a.lets-begin{margin-left:0}}:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) ol.modules-list{display:grid;flex-wrap:wrap;gap:1rem;grid-template-columns:1fr 1fr 1fr;justify-items:center;margin:0;overflow:scroll;padding:.5rem;scroll-snap-type:inline mandatory}@media (min-width:769.02px){:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) ol.modules-list{overflow:inherit;padding:0}}:is(:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) ol.modules-list) :focus-visible{outline-offset:-2px}:is(:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) ol.modules-list) li.module-list-item{--spacing:1rem;--icon-size:4rem;display:block}:is(:is(:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) ol.modules-list) li.module-list-item)>a{background-color:var(--curriculum-bg-color-list-item-body);border:1px solid var(--curriculum-border-color);border-radius:var(--elem-radius);box-shadow:var(--curriculum-shadow);display:flex;flex-direction:column;justify-self:center;max-width:20rem;min-width:15rem;overflow:auto;padding:0;scroll-snap-align:center;-webkit-text-decoration:none;text-decoration:none;width:100%}:is(:is(:is(:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) ol.modules-list) li.module-list-item)>a):hover{border-color:var(--curriculum-border-color-hover);-webkit-text-decoration:none;text-decoration:none}@media (min-width:769.02px){:is(:is(:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) ol.modules-list) li.module-list-item)>a{min-width:auto}}:is(:is(:is(:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) ol.modules-list) li.module-list-item)>a)>header{align-items:center;background-color:var(--curriculum-bg-color-list-item-header);display:flex;flex-direction:column;font-weight:var(--font-body-strong-weight);height:10.5rem;height:calc(var(--spacing)*3 + var(--icon-size) + 2lh);padding:var(--spacing);row-gap:var(--spacing)}:is(:is(:is(:is(:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) ol.modules-list) li.module-list-item)>a)>header) svg.topic-icon{height:var(--icon-size);width:var(--icon-size)}:is(:is(:is(:is(:is(:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) ol.modules-list) li.module-list-item)>a)>header) svg.topic-icon) circle{fill:var(--curriculum-bg-color-list-item-icon)}:is(:is(:is(:is(:is(:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) ol.modules-list) li.module-list-item)>a)>header) svg.topic-icon) path{fill:var(--curriculum-color-list-item-icon)}:is(:is(:is(:is(:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) ol.modules-list) li.module-list-item)>a)>header)>span{color:var(--text-primary);margin:0 auto;text-align:center}:is(:is(:is(:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) ol.modules-list) li.module-list-item)>a)>section{align-items:center;display:flex;flex-direction:column;font-size:var(--type-smaller-font-size);height:11rem;justify-content:space-between;padding:var(--spacing)}:is(:is(:is(:is(:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) ol.modules-list) li.module-list-item)>a)>section) p{color:var(--text-secondary);margin:0;text-align:center}:is(:is(:is(:is(:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) ol.modules-list) li.module-list-item)>a)>section) p:last-child{color:var(--curriculum-color-topic);font-weight:600}@media (min-width:426.02px){:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) ol.modules-list{grid-template-columns:1fr 1fr}}@media (min-width:1441.02px){:is(:is(.curriculum-content-container.curriculum-overview,.curriculum-content-container) .curriculum-content) ol.modules-list{grid-template-columns:1fr 1fr 1fr}}
2
- /*# sourceMappingURL=2254.5fbfe2d0124ff3ba.css.map*/
@@ -1 +0,0 @@
1
- {"version":3,"file":"2254.5fbfe2d0124ff3ba.css","sources":["webpack://@mdn/fred/./components/curriculum/module-list.css"],"sourcesContent":[".curriculum-content-container.curriculum-overview,\n.curriculum-content-container {\n .curriculum-content {\n .modules {\n input[type=\"radio\"]:not(:checked) ~ a.lets-begin,\n input[type=\"radio\"]:not(:checked) ~ ol.modules-list {\n display: none;\n }\n }\n\n ol.modules-list-list {\n display: grid;\n\n grid-template-areas:\n \"started core extensions\"\n \"hr hr hr\"\n \"mod mod mod\"\n \"cta cta cta\";\n grid-template-columns: auto;\n\n padding: 0;\n margin: 0;\n\n @media (--screen-small-and-wider) {\n grid-template-areas:\n \"started core extensions spacer\"\n \"hr hr hr hr\"\n \"mod mod mod mod\"\n \"cta cta cta cta\";\n grid-template-columns: auto auto auto 1fr;\n }\n\n &::before {\n grid-area: hr;\n\n width: 100%;\n\n margin: 0 0 1.5rem;\n\n content: \"\";\n\n border: none;\n border-top: 1px solid var(--text-inactive);\n }\n\n li.modules-list-list-item {\n display: contents;\n\n > input:checked + label {\n color: var(--text-primary);\n\n &::before {\n position: absolute;\n\n width: 0;\n height: 0;\n\n transform: translate3d(-0.75rem, 0.75rem, 0);\n }\n }\n\n > input:checked:focus-visible + label {\n outline-style: auto;\n outline-color: var(--accent-primary);\n outline-offset: 1px;\n }\n\n > input:not(:checked) + label {\n color: var(--text-secondary);\n opacity: 0.775;\n }\n\n > label {\n width: max-content;\n cursor: pointer;\n }\n\n &#modules-0 {\n > label,\n > input {\n grid-area: started;\n }\n\n > input:checked + label::before {\n content: url(\"./assets/curriculum-modules-underline.svg#1\");\n }\n }\n\n &#modules-1 {\n > label,\n > input {\n grid-area: core;\n\n @media (--screen-small-and-wider) {\n margin-left: 2rem;\n }\n }\n\n > input:checked + label::before {\n content: url(\"./assets/curriculum-modules-underline.svg#2\");\n }\n }\n\n &#modules-2 {\n > label,\n > input {\n grid-area: extensions;\n\n @media (--screen-small-and-wider) {\n margin-left: 2rem;\n }\n }\n\n > input:checked + label::before {\n content: url(\"./assets/curriculum-modules-underline.svg#3\");\n }\n }\n\n > ol.modules-list {\n grid-area: mod;\n margin: 0;\n }\n\n > a.lets-begin {\n grid-area: cta;\n\n width: fit-content;\n\n margin-top: 2rem;\n margin-left: 0.5rem;\n\n @media (--screen-medium-and-wider) {\n margin-left: 0;\n }\n }\n }\n }\n\n ol.modules-list {\n display: grid;\n\n flex-wrap: wrap;\n\n grid-template-columns: 1fr 1fr 1fr;\n\n gap: 1rem;\n justify-items: center;\n\n padding: 0.5rem;\n margin: 0;\n\n overflow: scroll;\n\n scroll-snap-type: inline mandatory;\n\n @media (--screen-medium-and-wider) {\n padding: 0;\n overflow: inherit;\n }\n\n :focus-visible {\n outline-offset: -2px;\n }\n\n li.module-list-item {\n --spacing: 1rem;\n --icon-size: 4rem;\n display: block;\n\n > a {\n display: flex;\n\n flex-direction: column;\n\n justify-self: center;\n\n width: 100%;\n min-width: 15rem;\n max-width: 20rem;\n\n padding: 0;\n\n overflow: auto;\n\n text-decoration: none;\n\n scroll-snap-align: center;\n\n background-color: var(--curriculum-bg-color-list-item-body);\n border: 1px solid var(--curriculum-border-color);\n border-radius: var(--elem-radius);\n box-shadow: var(--curriculum-shadow);\n\n &:hover {\n text-decoration: none;\n border-color: var(--curriculum-border-color-hover);\n }\n\n @media (--screen-medium-and-wider) {\n min-width: initial;\n }\n\n > header {\n display: flex;\n\n flex-direction: column;\n\n row-gap: var(--spacing);\n align-items: center;\n\n height: 10.5rem;\n height: calc(3 * var(--spacing) + var(--icon-size) + 2lh);\n\n padding: var(--spacing);\n\n font-weight: var(--font-body-strong-weight);\n\n background-color: var(--curriculum-bg-color-list-item-header);\n\n svg.topic-icon {\n width: var(--icon-size);\n height: var(--icon-size);\n\n circle {\n fill: var(--curriculum-bg-color-list-item-icon);\n }\n\n path {\n fill: var(--curriculum-color-list-item-icon);\n }\n }\n\n > span {\n margin: 0 auto;\n color: var(--text-primary);\n text-align: center;\n }\n }\n\n > section {\n display: flex;\n\n flex-direction: column;\n\n align-items: center;\n justify-content: space-between;\n\n height: 11rem;\n\n padding: var(--spacing);\n\n font-size: var(--type-smaller-font-size);\n\n p {\n margin: 0;\n color: var(--text-secondary);\n text-align: center;\n }\n\n p:last-child {\n font-weight: 600;\n color: var(--curriculum-color-topic);\n }\n }\n }\n }\n\n @media (--screen-small-and-wider) {\n grid-template-columns: 1fr 1fr;\n }\n\n @media (--screen-xxlarge) {\n grid-template-columns: 1fr 1fr 1fr;\n }\n }\n }\n}\n"],"names":[],"mappings":"AAIM,qVAEE,YACF,CAGF,mIACE,YAAa,CAEb,yGAIqB,CACrB,0BAA2B,CAG3B,QAAS,CADT,SAoHF,CAjHE,4BAbF,mIAcI,iJAIgC,CAChC,wCA2GJ,CA1GE,CAEA,+IASE,WAAY,CACZ,yCAA0C,CAH1C,UAAW,CANX,YAAa,CAIb,iBAAkB,CAFlB,UAQF,CAEA,kKACE,gBAyFF,CAvFE,2LACE,yBAUF,CARE,uMAIE,QAAS,CAHT,iBAAkB,CAKlB,uCAA4C,CAH5C,OAIF,CAGF,yMAEE,mCAAoC,CACpC,kBAAmB,CAFnB,kBAGF,CAEA,iMACE,2BAA4B,CAC5B,YACF,CAEA,6KAEE,cAAe,CADf,iBAEF,CAGE,8WAEE,iBACF,CAEA,4MACE,+EACF,CAIA,8WAEE,cAKF,CAHE,4BAJF,8WAKI,gBAEJ,CADE,CAGF,4MACE,+EACF,CAIA,8WAEE,oBAKF,CAHE,4BAJF,8WAKI,gBAEJ,CADE,CAGF,4MACE,+EACF,CAGF,uLACE,aAAc,CACd,QACF,CAEA,oLACE,aAAc,CAKd,iBAAmB,CADnB,eAAgB,CAFhB,iBAQF,CAHE,4BARF,oLASI,aAEJ,CADE,CAKN,8HACE,YAAa,CAEb,cAAe,CAIf,QAAS,CAFT,iCAAkC,CAGlC,oBAAqB,CAGrB,QAAS,CAET,eAAgB,CAHhB,aAAe,CAKf,iCAyHF,CAvHE,4BAjBF,8HAmBI,gBAAiB,CADjB,SAsHJ,CApHE,CAEA,kJACE,mBACF,CAEA,uJACE,cAAe,CACf,gBAAiB,CACjB,aAkGF,CAhGE,8JAmBE,0DAA2D,CAC3D,+CAAgD,CAChD,gCAAiC,CACjC,mCAAoC,CArBpC,YAAa,CAEb,qBAAsB,CAEtB,mBAAoB,CAIpB,eAAgB,CADhB,eAAgB,CAKhB,aAAc,CAFd,SAAU,CAMV,wBAAyB,CAFzB,4BAAqB,CAArB,oBAAqB,CARrB,UAwFF,CAvEE,yKAEE,iDAAkD,CADlD,4BAAqB,CAArB,oBAEF,CAEA,4BA7BF,8JA8BI,cAiEJ,CAhEE,CAEA,0KAME,kBAAmB,CASnB,4DAA6D,CAd7D,YAAa,CAEb,qBAAsB,CAUtB,0CAA2C,CAL3C,cAAe,CACf,sDAAyD,CAEzD,sBAAuB,CANvB,sBA8BF,CAlBE,8LAEE,uBAAwB,CADxB,sBAUF,CAPE,0MACE,8CACF,CAEA,wMACE,2CACF,CAGF,oLAEE,yBAA0B,CAD1B,aAAc,CAEd,iBACF,CAGF,2KAKE,kBAAmB,CAJnB,YAAa,CAEb,qBAAsB,CAStB,uCAAwC,CAJxC,YAAa,CAFb,6BAA8B,CAI9B,sBAcF,CAVE,kLAEE,2BAA4B,CAD5B,QAAS,CAET,iBACF,CAEA,6LAEE,mCAAoC,CADpC,eAEF,CAKN,4BAjIF,8HAkII,6BAMJ,CALE,CAEA,6BArIF,8HAsII,iCAEJ,CADE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"2448.92286b4e96ad1c02.js","sources":["webpack://@mdn/fred/./components/survey/surveys.js","webpack://@mdn/fred/./components/survey/utils.js","webpack://@mdn/fred/./components/survey/element.js","webpack://@mdn/fred/./node_modules/lit-html/directives/if-defined.js","webpack://@mdn/fred/./components/survey/element.css","webpack://@mdn/fred/./components/icon/cancel.svg"],"sourcesContent":["import { html } from \"lit\";\n\n/**\n * @import * as Survey from \"./types.js\";\n */\n/**\n * Survey bucket identifiers used for localStorage state management.\n * Each bucket represents a unique survey campaign and maintains separate state.\n * @readonly\n * @enum {string}\n */\nexport const SurveyBucket = Object.freeze({\n BLOG_FEEDBACK_2023: \"BLOG_FEEDBACK_2023\",\n BROWSER_SURVEY_OCT_2022: \"BROWSER_SURVEY_OCT_2022\",\n CONTENT_DISCOVERY_2023: \"CONTENT_DISCOVERY_2023\",\n CSS_CASCADE_2022: \"CSS_CASCADE_2022\",\n DE_LOCALE_2024: \"DE_LOCALE_2024\",\n DE_LOCALE_2024_EVAL: \"DE_LOCALE_2024_EVAL\",\n FIREFOX_WEB_COMPAT_2023: \"FIREFOX_WEB_COMPAT_2023\",\n INTEROP_2023: \"INTEROP_2023\",\n IT_LOCALE_2025: \"IT_LOCALE_2025\",\n WEB_COMPONENTS_2023: \"WEB_COMPONENTS_2023\",\n DISCOVERABILITY_2023: \"DISCOVERABILITY_2023\",\n WEB_SECURITY_2023: \"WEB_SECURITY_2023\",\n DISCOVERABILITY_AUG_2023: \"DISCOVERABILITY_AUG_2023\",\n WEB_APP_AUGUST_2024: \"WEB_APP_AUGUST_2024\",\n HOMEPAGE_FEEDBACK_2024: \"HOMEPAGE_FEEDBACK_2024\",\n WEBDX_EDITING_2024: \"WEBDX_EDITING_2024\",\n HOUSE_SURVEY_2025: \"HOUSE_SURVEY_2025\",\n JS_PROPOSALS_2025: \"JS_PROPOSALS_2025\",\n FIRST_FRED_2025: \"FIRST_FRED_2025\",\n});\n\n/**\n * Array of survey configurations.\n *\n * When adding a survey, make sure it has this JavaScript action (in Alchemer)\n * so the banner is hidden for users who have already submitted it:\n * ```javascript\n * window.parent && window.parent.postMessage(\"submit\", \"*\");\n * ```\n *\n * @type {Survey.Survey[]}\n */\nexport const SURVEYS = [\n {\n key: \"something unique in the current surveys\",\n bucket: SurveyBucket.FIRST_FRED_2025,\n show: (mdn_url) => {\n return /^\\/[a-z]{2}(-[A-Z]{2})?\\/docs\\/Web\\/CSS/.test(mdn_url);\n },\n src: (mdn_url) => {\n const url = new URL(\n \"https://survey.alchemer.com/s3/8385674/MDN-short-survey-Fred\",\n );\n url.searchParams.set(\"referrer\", mdn_url);\n return url.toString();\n },\n teaser: html`Fred is <strong>MDN</strong>'s shiny new frontend!`,\n question: \"How satisfied are you with this new MDN frontend?\",\n footnote: \"fred = fr(ont)e(n)d\",\n rateFrom: 0,\n rateTill: 1,\n start: 0,\n end: Infinity,\n },\n];\n","/**\n * @import * as Survey from \"./types.js\";\n */\n/**\n * @param {string} key\n * @returns {Survey.SurveyState}\n */\nexport function getSurveyState(key) {\n const stateKey = `survey.${key}`;\n let state;\n\n try {\n state = JSON.parse(localStorage?.getItem(stateKey) ?? \"{}\");\n } catch {\n state = {};\n }\n\n if (Object.keys(state).length === 0) {\n state = {\n random: Math.random(),\n seen_at: null,\n dismissed_at: null,\n submitted_at: null,\n opened_at: null,\n };\n writeSurveyState(key, state);\n }\n\n return state;\n}\n\n/**\n * @param {string} key\n * @param {Survey.SurveyState} state\n */\nexport function writeSurveyState(key, state) {\n const stateKey = `survey.${key}`;\n try {\n localStorage?.setItem(stateKey, JSON.stringify(state));\n } catch {\n // Handle localStorage errors silently\n }\n}\n","import { LitElement, html, nothing } from \"lit\";\nimport { ifDefined } from \"lit/directives/if-defined.js\";\nimport { createRef, ref } from \"lit/directives/ref.js\";\n\nimport \"../button/element.js\";\nimport { L10nMixin } from \"../../l10n/mixin.js\";\nimport closeIcon from \"../icon/cancel.svg?lit\";\n\nimport styles from \"./element.css?lit\";\nimport { SURVEYS } from \"./surveys.js\";\nimport { getSurveyState, writeSurveyState } from \"./utils.js\";\n\n/**\n * @import * as Survey from \"./types.js\";\n */\n\nexport class MDNSurvey extends L10nMixin(LitElement) {\n static styles = styles;\n\n static ssr = false;\n\n constructor() {\n super();\n /** @type {Survey.Survey | undefined} */\n this._survey = undefined;\n /** @type {Survey.SurveyState | undefined} */\n this._surveyState = undefined;\n /** @type {boolean} */\n this._isOpen = false;\n /** @type {boolean} */\n this._force = false;\n /** @type {string | undefined} */\n this._source = undefined;\n\n /** @type {import(\"@lit\").Ref<HTMLDetailsElement>} */\n this._detailsRef = createRef();\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.#checkForSurvey();\n this.#setupMessageListener();\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.#removeMessageListener();\n }\n\n #checkForSurvey() {\n if (globalThis.window === undefined) return;\n\n const FORCE_SURVEY_PREFIX = \"#FORCE_SURVEY=\";\n this._force = globalThis.location.hash.startsWith(FORCE_SURVEY_PREFIX);\n\n this._survey = this.#findSurvey();\n\n if (this._survey) {\n this._surveyState = getSurveyState(this._survey.bucket);\n this._source =\n typeof this._survey.src === \"function\"\n ? this._survey.src(globalThis.location.pathname)\n : this._survey.src;\n\n this.#markAsSeen();\n }\n }\n\n /**\n * @returns {Survey.Survey | undefined}\n */\n #findSurvey() {\n return SURVEYS.find((survey) => {\n if (this._force) {\n const FORCE_SURVEY_PREFIX = \"#FORCE_SURVEY=\";\n return (\n survey.key ===\n globalThis.location.hash.slice(FORCE_SURVEY_PREFIX.length)\n );\n }\n\n if (globalThis.window === undefined) {\n return false;\n }\n\n if (!survey.show(globalThis.location.pathname)) {\n return false;\n }\n\n const now = Date.now();\n if (now < survey.start || survey.end < now) {\n return false;\n }\n\n const state = getSurveyState(survey.bucket);\n return state.random >= survey.rateFrom && state.random < survey.rateTill;\n });\n }\n\n #markAsSeen() {\n if (!this._survey || !this._surveyState || this._surveyState.seen_at)\n return;\n\n this._surveyState = {\n ...this._surveyState,\n seen_at: Date.now(),\n };\n writeSurveyState(this._survey.bucket, this._surveyState);\n this.#measure(\"seen\");\n }\n\n #dismiss() {\n if (!this._survey || !this._surveyState) return;\n\n this._surveyState = {\n ...this._surveyState,\n dismissed_at: Date.now(),\n };\n writeSurveyState(this._survey.bucket, this._surveyState);\n this.#measure(\"dismissed\");\n this.requestUpdate();\n }\n\n #onToggle() {\n if (!this._survey || !this._surveyState || this._isOpen) return;\n\n const details = this._detailsRef.value;\n if (details && details.open) {\n this._surveyState = {\n ...this._surveyState,\n opened_at: Date.now(),\n };\n writeSurveyState(this._survey.bucket, this._surveyState);\n this.#measure(\"opened\");\n this._isOpen = true;\n this.requestUpdate();\n }\n }\n\n #onSubmitted() {\n if (!this._survey || !this._surveyState) return;\n\n this._surveyState = {\n ...this._surveyState,\n submitted_at: Date.now(),\n };\n writeSurveyState(this._survey.bucket, this._surveyState);\n this.#measure(\"submitted\");\n this.requestUpdate();\n }\n\n /**\n * @param {string} action\n */\n #measure(action) {\n if (!this._survey) return;\n\n // TODO: GLEAN\n console.log(`Survey: ${action} ${this._survey.bucket}`);\n }\n\n #setupMessageListener() {\n /** @type {(event: MessageEvent) => void} */\n this._messageListener = (event) => {\n if (\n event.origin === \"https://survey.alchemer.com\" &&\n event.data === \"submit\"\n ) {\n this.#onSubmitted();\n }\n };\n window.addEventListener(\"message\", this._messageListener, false);\n }\n\n #removeMessageListener() {\n if (this._messageListener) {\n window.removeEventListener(\"message\", this._messageListener, false);\n }\n }\n\n /**\n * @returns {import(\"@lit\").TemplateResult | nothing}\n */\n render() {\n if (!this._survey || !this._surveyState) {\n return nothing;\n }\n\n if (\n !this._force &&\n (this._surveyState.dismissed_at || this._surveyState?.submitted_at)\n ) {\n return nothing;\n }\n\n const title = this.l10n`Hide this survey`;\n\n return html`\n <div class=\"survey\">\n <header>\n <p>${this._survey.teaser}</p>\n <mdn-button\n variant=\"plain\"\n .icon=${closeIcon}\n icon-only\n title=${title}\n aria-label=${title}\n @click=${this.#dismiss}\n ></mdn-button>\n </header>\n <details ${ref(this._detailsRef)} @toggle=${this.#onToggle}>\n <summary>${this._survey.question}</summary>\n ${this._isOpen && this._source\n ? html`\n <iframe\n title=${ifDefined(this._survey.question)}\n src=${this._source}\n ></iframe>\n `\n : nothing}\n </details>\n ${this._survey.footnote\n ? html` <footer>(${this._survey.footnote})</footer> `\n : nothing}\n </div>\n `;\n }\n}\n\ncustomElements.define(\"mdn-survey\", MDNSurvey);\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_GET_URL_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"assets/survey.svg\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}.survey{background-color:var(--color-background-purple);border-radius:.5rem;display:grid;padding:1rem 1rem 1rem 5rem;row-gap:.75rem}header{align-items:center;display:flex;justify-content:space-between}header:before{background:url(${___CSS_LOADER_URL_REPLACEMENT_0___});background-size:cover;content:\"\";height:49px;margin-left:calc(-53px - .5rem);margin-top:1rem;position:absolute;width:53px}p{margin:0}mdn-button::part(button):hover{background-color:initial;border:1px solid var(--color-text-purple)}mdn-button::part(icon){color:var(--color-text-purple)}summary{color:var(--color-text-purple);cursor:pointer}iframe{border:none;border-radius:.5rem;height:500px;overflow:hidden;width:100%}footer{font-size:var(--font-size-small);font-style:italic}`, \"\"]);\n// Exports\nexport default css([___CSS_LOADER_EXPORT___.toString()]);\n","import { svg } from \"lit\"; export default svg`<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M18 6 6 18M6 6l12 12\"/></svg>`;"],"names":["Object","URL","s","JSON","localStorage","Math","MDNSurvey","globalThis","Date","console","e","window","i","customElements"],"mappings":"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"}
@@ -1,29 +0,0 @@
1
- export const __webpack_ids__=["2826"];export const __webpack_modules__={31502:function(e,o,a){a.d(o,{Z:()=>y});var t=a(8081),r=a.n(t),n=a(23645),c=a.n(n),l=a(61667),i=a.n(l),s=new a.U(a(838)),d=new a.U(a(69821)),u=new a.U(a(84011)),m=new a.U(a(12416)),p=new a.U(a(35335)),f=new a.U(a(59579)),b=new a.U(a(42029)),g=c()(r()),k=i()(s),v=i()(d),$=i()(u),w=i()(m),h=i()(p),x=i()(f),_=i()(b);g.push([e.id,`.callout,.notecard{background-color:var(--color-background-secondary);border-inline-start:2px solid var(--accent-color,var(--color-text-secondary));border-radius:.25em;color:var(--color-text-primary);margin-block:1em;padding-block:1px;padding-inline:1em;padding-inline-start:3em;position:relative}.experimental:is(.notecard,.callout),.note:is(.notecard,.callout),.secure:is(.notecard,.callout){background-color:var(--color-background-blue);--accent-color:var(--color-text-blue)}.deprecated:is(.notecard,.callout),.nonstandard:is(.notecard,.callout),.warning:is(.notecard,.callout){background-color:var(--color-background-red);--accent-color:var(--color-text-red)}.tip:is(.notecard,.callout){background-color:var(--color-background-green);--accent-color:var(--color-text-green)}:is(.deprecated:is(.notecard,.callout),.experimental:is(.notecard,.callout),.nonstandard:is(.notecard,.callout),.note:is(.notecard,.callout),.secure:is(.notecard,.callout),.tip:is(.notecard,.callout),.warning:is(.notecard,.callout),.worker:is(.notecard,.callout)):before{background-color:var(--accent-color,var(--color-text-secondary));content:"";display:block;height:1em;left:1em;-webkit-mask-size:cover;mask-size:cover;position:absolute;top:1.45em;width:1em}.deprecated:is(.notecard,.callout):before{-webkit-mask-image:url(${k});mask-image:url(${k})}.experimental:is(.notecard,.callout):before{-webkit-mask-image:url(${v});mask-image:url(${v})}.nonstandard:is(.notecard,.callout):before{-webkit-mask-image:url(${$});mask-image:url(${$})}.note:is(.notecard,.callout):before{-webkit-mask-image:url(${w});mask-image:url(${w})}.secure:is(.notecard,.callout):before{-webkit-mask-image:url(${h});mask-image:url(${h})}.tip:is(.notecard,.callout):before{-webkit-mask-image:url(${x});mask-image:url(${x})}.warning:is(.notecard,.callout):before{-webkit-mask-image:url(${$});mask-image:url(${$})}.worker:is(.notecard,.callout):before{-webkit-mask-image:url(${_});mask-image:url(${_})}`,""]);let y=g.toString()},42029:function(e,o,a){e.exports=a.p+"cog.f23af856fab34421.svg"},69821:function(e,o,a){e.exports=a.p+"flask-conical.c16b3d71f14f31d1.svg"},12416:function(e,o,a){e.exports=a.p+"info.d40b80f84482feba.svg"},59579:function(e,o,a){e.exports=a.p+"lightbulb.f54f9e803373ffd2.svg"},35335:function(e,o,a){e.exports=a.p+"lock.4befe79c52ccec2a.svg"},838:function(e,o,a){e.exports=a.p+"trash-2.73b28bc66fb8543c.svg"},84011:function(e,o,a){e.exports=a.p+"triangle-alert.cff4c57ccef57da3.svg"},80203:function(e,o,a){a.r(o),a.d(o,{MDNNotFound:()=>MDNNotFound});var t=a(35470),r=a(14703),n=a(69535),c=a(30835);let MDNNotFound=class MDNNotFound extends(0,n.q)(r.oi){static ssr=!1;static styles=c.Z;_fallback=new t.iQ(this,{task:async()=>{let e=location.pathname;if(e&&e.includes("/docs/")&&!e.includes("/en-US/")){let o="/en-US/"+e.split("/").slice(2).join("/")+"/index.json",a=await fetch(o);if(a.ok){let{doc:e}=await a.json();return e}}return null}});connectedCallback(){super.connectedCallback(),this._fallback.run()}render(){let e=location.pathname;return(0,r.dy)`
2
- <p>
3
- ${this.l10n.raw({id:"not-found-description",args:{url:e},elements:{url:{tag:"code"}}})}
4
- </p>
5
-
6
- ${this._fallback.render({complete:e=>{if(e)return(0,r.dy)`<div class="notecard tip">
7
- <p>
8
- ${this.l10n.raw({id:"not-found-fallback-english",elements:{strong:{tag:"strong"},em:{tag:"em"}}})}
9
- </p>
10
- <p>
11
- <a href=${e.mdn_url}>
12
- <b>${e.title}</b>
13
- <br />
14
- <small>${e.mdn_url}</small>
15
- </a>
16
- </p>
17
- </div>`;{let e=function(e){let o=e.split("/").at(1);return o&&/^(de|en-US|es|fr|ja|ko|pt-BR|ru|zh-CN|zh-TW)$/.test(o)?o:"en-US"}(location.pathname),o=location.pathname.split("/").filter(o=>o&&![e,"docs"].includes(o)).map(e=>e.replaceAll("_"," ")).reverse(),a=(0,r.dy)`<ul>
18
- ${o.map(o=>(0,r.dy)`<li>
19
- <a
20
- href=${`/${e}/search?q=${encodeURIComponent(o)}`}
21
- >
22
- <code>${o}</code>
23
- </a>
24
- </li>`)}
25
- </ul>`;return(0,r.dy)`<div class="notecard note">
26
- <p>${this.l10n("not-found-fallback-search")} ${a}</p>
27
- </div>`}}})}
28
- `}};customElements.define("mdn-not-found",MDNNotFound)},30835:function(e,o,a){a.d(o,{Z:()=>d});var t=a(14703),r=a(8081),n=a.n(r),c=a(23645),l=a.n(c),i=a(31502),s=l()(n());s.i(i.Z),s.push([e.id,"code{background-color:var(--color-background-secondary);border-radius:.25em;font-family:var(--font-family-code);padding:.125em .25em}",""]);let d=(0,t.iv)([s.toString()])}};
29
- //# sourceMappingURL=2826.2162e19b0f72cf75.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"2826.2162e19b0f72cf75.js","sources":["webpack://@mdn/fred/./components/notecard/index.css?525e","webpack://@mdn/fred/./components/not-found/element.js","webpack://@mdn/fred/./components/not-found/utils.js","webpack://@mdn/fred/./components/not-found/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\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../icon/trash-2.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"../icon/flask-conical.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(\"../icon/triangle-alert.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_3___ = new URL(\"../icon/info.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_4___ = new URL(\"../icon/lock.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_5___ = new URL(\"../icon/lightbulb.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_6___ = new URL(\"../icon/cog.svg\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\nvar ___CSS_LOADER_URL_REPLACEMENT_4___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___);\nvar ___CSS_LOADER_URL_REPLACEMENT_5___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_5___);\nvar ___CSS_LOADER_URL_REPLACEMENT_6___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_6___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.callout,.notecard{background-color:var(--color-background-secondary);border-inline-start:2px solid var(--accent-color,var(--color-text-secondary));border-radius:.25em;color:var(--color-text-primary);margin-block:1em;padding-block:1px;padding-inline:1em;padding-inline-start:3em;position:relative}.experimental:is(.notecard,.callout),.note:is(.notecard,.callout),.secure:is(.notecard,.callout){background-color:var(--color-background-blue);--accent-color:var(--color-text-blue)}.deprecated:is(.notecard,.callout),.nonstandard:is(.notecard,.callout),.warning:is(.notecard,.callout){background-color:var(--color-background-red);--accent-color:var(--color-text-red)}.tip:is(.notecard,.callout){background-color:var(--color-background-green);--accent-color:var(--color-text-green)}:is(.deprecated:is(.notecard,.callout),.experimental:is(.notecard,.callout),.nonstandard:is(.notecard,.callout),.note:is(.notecard,.callout),.secure:is(.notecard,.callout),.tip:is(.notecard,.callout),.warning:is(.notecard,.callout),.worker:is(.notecard,.callout)):before{background-color:var(--accent-color,var(--color-text-secondary));content:\"\";display:block;height:1em;left:1em;-webkit-mask-size:cover;mask-size:cover;position:absolute;top:1.45em;width:1em}.deprecated:is(.notecard,.callout):before{-webkit-mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___})}.experimental:is(.notecard,.callout):before{-webkit-mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_1___});mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_1___})}.nonstandard:is(.notecard,.callout):before{-webkit-mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_2___});mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_2___})}.note:is(.notecard,.callout):before{-webkit-mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_3___});mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_3___})}.secure:is(.notecard,.callout):before{-webkit-mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_4___});mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_4___})}.tip:is(.notecard,.callout):before{-webkit-mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_5___});mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_5___})}.warning:is(.notecard,.callout):before{-webkit-mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_2___});mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_2___})}.worker:is(.notecard,.callout):before{-webkit-mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_6___});mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_6___})}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","import { Task } from \"@lit/task\";\nimport { LitElement, html } from \"lit\";\n\nimport { L10nMixin } from \"../../l10n/mixin.js\";\n\nimport styles from \"./element.css?lit\";\nimport { pathToLocale } from \"./utils.js\";\n\nexport class MDNNotFound extends L10nMixin(LitElement) {\n // Need location (not available server-side).\n static ssr = false;\n\n static styles = styles;\n\n /** @type {Task<?,import(\"@rari\").Doc|null>} */\n _fallback = new Task(this, {\n task: async () => {\n const url = location.pathname;\n if (url && url.includes(\"/docs/\") && !url.includes(\"/en-US/\")) {\n const enUSURL =\n \"/en-US/\" + url.split(\"/\").slice(2).join(\"/\") + \"/index.json\";\n\n const response = await fetch(enUSURL);\n if (response.ok) {\n /** @type {{ doc: import(\"@rari\").Doc}} */\n const { doc } = await response.json();\n return doc;\n }\n }\n\n return null;\n },\n });\n\n connectedCallback() {\n super.connectedCallback();\n this._fallback.run();\n }\n\n render() {\n const url = location.pathname;\n\n return html`\n <p>\n ${this.l10n.raw({\n id: \"not-found-description\",\n args: { url },\n elements: { url: { tag: \"code\" } },\n })}\n </p>\n\n ${this._fallback.render({\n complete: (doc) => {\n if (doc) {\n return html`<div class=\"notecard tip\">\n <p>\n ${this.l10n.raw({\n id: \"not-found-fallback-english\",\n elements: { strong: { tag: \"strong\" }, em: { tag: \"em\" } },\n })}\n </p>\n <p>\n <a href=${doc.mdn_url}>\n <b>${doc.title}</b>\n <br />\n <small>${doc.mdn_url}</small>\n </a>\n </p>\n </div>`;\n } else {\n const locale = pathToLocale(location.pathname);\n const locationParts = location.pathname\n .split(\"/\")\n .filter((part) => part && ![locale, \"docs\"].includes(part));\n const normalizedLocationParts = locationParts\n .map((part) => part.replaceAll(\"_\", \" \"))\n .reverse();\n\n const fallback = html`<ul>\n ${normalizedLocationParts.map(\n (part) =>\n html`<li>\n <a\n href=${`/${locale}/search?q=${encodeURIComponent(part)}`}\n >\n <code>${part}</code>\n </a>\n </li>`,\n )}\n </ul>`;\n\n return html`<div class=\"notecard note\">\n <p>${this.l10n(\"not-found-fallback-search\")} ${fallback}</p>\n </div>`;\n }\n },\n })}\n `;\n }\n}\ncustomElements.define(\"mdn-not-found\", MDNNotFound);\n","/**\n * Returns the locale from a path, if it contains one.\n *\n * @param {string} pathname - absolute path, e.g. \"/en-US/docs/Web/HTML\".\n * @returns {string} - the locale in that path, or else \"en-US\".\n */\nexport function pathToLocale(pathname) {\n const maybeLocale = pathname.split(\"/\").at(1);\n\n if (\n maybeLocale &&\n /^(de|en-US|es|fr|ja|ko|pt-BR|ru|zh-CN|zh-TW)$/.test(maybeLocale)\n ) {\n return maybeLocale;\n }\n\n return \"en-US\";\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]!../notecard/index.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, `code{background-color:var(--color-background-secondary);border-radius:.25em;font-family:var(--font-family-code);padding:.125em .25em}`, \"\"]);\n// Exports\nexport default css([___CSS_LOADER_EXPORT___.toString()]);\n"],"names":["_","MDNNotFound","location","fetch","encodeURIComponent","customElements"],"mappings":"8KAII,EAAgC,gBAChC,EAAgC,kBAChC,EAAgC,kBAChC,EAAgC,kBAChC,EAAgC,kBAChC,EAAgC,kBAChC,EAAgC,kBAChC,EAA0B,IAA4B,KACtD,EAAqC,IAAgC,GACrE,EAAqC,IAAgC,GACrE,EAAqC,IAAgC,GACrE,EAAqC,IAAgC,GACrE,EAAqC,IAAgC,GACrE,EAAqC,IAAgC,GACrEA,EAAqC,IAAgC,GAEzE,EAAwB,IAAI,CAAC,CAAC,EAAO,EAAE,CAAE,CAAC,sxCAAsxC,EAAE,EAAmC,iBAAiB,EAAE,EAAmC,qEAAqE,EAAE,EAAmC,iBAAiB,EAAE,EAAmC,oEAAoE,EAAE,EAAmC,iBAAiB,EAAE,EAAmC,6DAA6D,EAAE,EAAmC,iBAAiB,EAAE,EAAmC,+DAA+D,EAAE,EAAmC,iBAAiB,EAAE,EAAmC,4DAA4D,EAAE,EAAmC,iBAAiB,EAAE,EAAmC,gEAAgE,EAAE,EAAmC,iBAAiB,EAAE,EAAmC,+DAA+D,EAAEA,EAAmC,iBAAiB,EAAEA,EAAmC,EAAE,CAAC,CAAE,GAAG,EAEh+E,MAAe,EAAwB,QAAQ,E,mlBCdxC,IAAMC,YAAN,MAAMA,mBAAoB,QAAU,IAAU,EAEnD,OAAO,IAAM,EAAM,AAEnB,QAAO,OAAS,GAAM,AAAC,AAGvB,WAAY,IAAI,IAAI,CAAC,IAAI,CAAE,CACzB,KAAM,UACJ,IAAM,EAAMC,SAAS,QAAQ,CAC7B,GAAI,GAAO,EAAI,QAAQ,CAAC,WAAa,CAAC,EAAI,QAAQ,CAAC,WAAY,CAC7D,IAAM,EACJ,UAAY,EAAI,KAAK,CAAC,KAAK,KAAK,CAAC,GAAG,IAAI,CAAC,KAAO,cAE5C,EAAW,MAAMC,MAAM,GAC7B,GAAI,EAAS,EAAE,CAAE,CAEf,GAAM,CAAE,KAAG,CAAE,CAAG,MAAM,EAAS,IAAI,GACnC,OAAO,CACT,CACF,CAEA,OAAO,IACT,CACF,EAAG,AAEH,oBAAoB,CAClB,KAAK,CAAC,oBACN,IAAI,CAAC,SAAS,CAAC,GAAG,EACpB,CAEA,QAAS,CACP,IAAM,EAAMD,SAAS,QAAQ,CAE7B,MAAO,QAAI,CAAC;;QAER,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CACd,GAAI,wBACJ,KAAM,CAAE,KAAI,EACZ,SAAU,CAAE,IAAK,CAAE,IAAK,MAAO,CAAE,CACnC,GAAG;;;MAGL,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CACtB,SAAU,AAAC,IACT,GAAI,EACF,MAAO,QAAI,CAAC;;gBAER,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CACd,GAAI,6BACJ,SAAU,CAAE,OAAQ,CAAE,IAAK,QAAS,EAAG,GAAI,CAAE,IAAK,IAAK,CAAE,CAC3D,GAAG;;;wBAGK,EAAE,EAAI,OAAO,CAAC;qBACjB,EAAE,EAAI,KAAK,CAAC;;yBAER,EAAE,EAAI,OAAO,CAAC;;;kBAGrB,CAAC,AACF,EACL,IAAM,EAAS,AChEpB,SAAsB,CAAQ,EACnC,IAAM,EAAc,EAAS,KAAK,CAAC,KAAK,EAAE,CAAC,UAE3C,AACE,GACA,gDAAgD,IAAI,CAAC,GAE9C,EAGF,OACT,EDqDwCA,SAAS,QAAQ,EAIvC,EAA0B,AAHVA,SAAS,QAAQ,CACpC,KAAK,CAAC,KACN,MAAM,CAAC,AAAC,GAAS,GAAQ,CAAC,CAAC,EAAQ,OAAO,CAAC,QAAQ,CAAC,IAEpD,GAAG,CAAC,AAAC,GAAS,EAAK,UAAU,CAAC,IAAK,MACnC,OAAO,GAEJ,EAAW,QAAI,CAAC;cACpB,EAAE,EAAwB,GAAG,CAC3B,AAAC,GACC,QAAI,CAAC;;2BAEI,EAAE,CAAC,CAAC,EAAE,EAAO,UAAU,EAAEE,mBAAmB,GAAM,CAAC,CAAC;;4BAEnD,EAAE,EAAK;;uBAEZ,CAAC,EACR;iBACC,CAAC,CAEN,MAAO,QAAI,CAAC;iBACP,EAAE,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,EAAE,EAAS;kBACpD,CAAC,AACT,CACF,CACF,GAAG;IACL,CAAC,AACH,CACF,EACAC,eAAe,MAAM,CAAC,gBAAiBJ,Y,0GE/FnC,EAA0B,IAA4B,KAC1D,EAAwB,CAAC,CAAC,GAAiC,EAE3D,EAAwB,IAAI,CAAC,CAAC,EAAO,EAAE,CAAE,wIAAyI,GAAG,EAErL,MAAe,SAAI,CAAC,EAAwB,QAAQ,GAAG,C"}
@@ -1,30 +0,0 @@
1
- export const __webpack_ids__=["3536"];export const __webpack_modules__={50272:function(t,i,n){n.r(i),n.d(i,{MDNButton:()=>MDNButton});var o=n(14703),a=n(5498),e=n(13566);let MDNButton=class MDNButton extends o.oi{static styles=a.Z;static properties={disabled:{type:Boolean},variant:{type:String},action:{type:String},icon:{state:!0},iconOnly:{type:Boolean,attribute:"icon-only"},iconPosition:{type:String,attribute:"icon-position"},href:{type:String},target:{type:String},rel:{type:String}};constructor(){super(),this.disabled=!1,this.icon=void 0,this.iconOnly=!1,this.iconPosition="before",this.variant="primary",this.action=void 0,this.href=void 0,this.target=void 0,this.rel=void 0}render(){return function({label:t,icon:i,iconOnly:n,iconPosition:a,disabled:s=!1,href:r,target:l,rel:d,variant:c="primary",action:b}){let h=i?(0,o.dy)`<span class="icon" part="icon">${i}</span>`:o.Ld,p=(0,o.dy)`
2
- <span id="label" class="label" ?hidden=${n} part="label"
3
- >${t}</span
4
- >
5
- `,u="after"===a?[p,h]:[h,p];return r?(0,o.dy)`
6
- <a
7
- class="button"
8
- href=${r}
9
- target=${(0,e.o)(l)}
10
- rel=${(0,e.o)(d)}
11
- aria-labelledby="label"
12
- data-variant=${(0,e.o)(c)}
13
- data-action=${(0,e.o)(b)}
14
- part="button"
15
- >
16
- ${u}
17
- </a>
18
- `:(0,o.dy)`
19
- <button
20
- class="button"
21
- aria-labelledby="label"
22
- ?disabled=${s}
23
- data-variant=${(0,e.o)(c)}
24
- data-action=${(0,e.o)(b)}
25
- part="button"
26
- >
27
- ${u}
28
- </button>
29
- `}({label:(0,o.dy)`<slot></slot>`,disabled:this.disabled,icon:this.icon,iconOnly:this.iconOnly,iconPosition:this.iconPosition,variant:this.variant,action:this.action,href:this.href,target:this.target,rel:this.rel})}};customElements.define("mdn-button",MDNButton)},5498:function(t,i,n){n.d(i,{Z:()=>c});var o=n(14703),a=n(8081),e=n.n(a),s=n(23645),r=n.n(s),l=n(56718),d=r()(e());d.i(l.Z),d.push([t.id,":host{display:inline-flex;vertical-align:middle}.button{box-sizing:border-box;height:100%;width:100%}",""]);let c=(0,o.iv)([d.toString()])}};
30
- //# sourceMappingURL=3536.d17eba9caa4089c1.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"3536.d17eba9caa4089c1.js","sources":["webpack://@mdn/fred/./components/button/element.js","webpack://@mdn/fred/./components/button/pure.js","webpack://@mdn/fred/./components/button/element.css"],"sourcesContent":["import { LitElement, html } from \"lit\";\n\nimport styles from \"./element.css?lit\";\nimport Button from \"./pure.js\";\n\nexport class MDNButton extends LitElement {\n static styles = styles;\n\n static properties = {\n disabled: { type: Boolean },\n variant: { type: String },\n action: { type: String },\n icon: { state: true },\n iconOnly: { type: Boolean, attribute: \"icon-only\" },\n iconPosition: { type: String, attribute: \"icon-position\" },\n href: { type: String },\n target: { type: String },\n rel: { type: String },\n };\n\n constructor() {\n super();\n this.disabled = false;\n /** @type {import(\"@lit\").TemplateResult | undefined} */\n this.icon = undefined;\n this.iconOnly = false;\n /** @type {import(\"./types.js\").ButtonIconPositions} */\n this.iconPosition = \"before\";\n /** @type {import(\"./types.js\").ButtonVariants} */\n this.variant = \"primary\";\n /** @type {import(\"./types.js\").ButtonActions} */\n this.action = undefined;\n /** @type {string | undefined} */\n this.href = undefined;\n /** @type {string | undefined} */\n this.target = undefined;\n /** @type {string | undefined} */\n this.rel = undefined;\n }\n\n render() {\n return Button({\n label: html`<slot></slot>`,\n disabled: this.disabled,\n icon: this.icon,\n iconOnly: this.iconOnly,\n iconPosition: this.iconPosition,\n variant: this.variant,\n action: this.action,\n href: this.href,\n target: this.target,\n rel: this.rel,\n });\n }\n}\n\ncustomElements.define(\"mdn-button\", MDNButton);\n","import { html, nothing } from \"lit\";\nimport { ifDefined } from \"lit/directives/if-defined.js\";\n\n/**\n * @param {object} options\n * @param {string | import(\"@lit\").TemplateResult} options.label\n * @param {import(\"@lit\").TemplateResult} [options.icon]\n * @param {boolean} [options.iconOnly]\n * @param {import(\"./types.js\").ButtonIconPositions} [options.iconPosition]\n * @param {boolean} [options.disabled]\n * @param {string} [options.href]\n * @param {string} [options.target]\n * @param {string} [options.rel]\n * @param {import(\"./types.js\").ButtonVariants} [options.variant]\n * @param {import(\"./types.js\").ButtonActions} [options.action]\n */\nexport default function Button({\n label,\n icon,\n iconOnly,\n iconPosition,\n disabled = false,\n href,\n target,\n rel,\n variant = \"primary\",\n action,\n}) {\n const iconElement = icon\n ? html`<span class=\"icon\" part=\"icon\">${icon}</span>`\n : nothing;\n const labelElement = html`\n <span id=\"label\" class=\"label\" ?hidden=${iconOnly} part=\"label\"\n >${label}</span\n >\n `;\n\n const inner =\n iconPosition === \"after\"\n ? [labelElement, iconElement]\n : [iconElement, labelElement];\n\n return href\n ? html`\n <a\n class=\"button\"\n href=${href}\n target=${ifDefined(target)}\n rel=${ifDefined(rel)}\n aria-labelledby=\"label\"\n data-variant=${ifDefined(variant)}\n data-action=${ifDefined(action)}\n part=\"button\"\n >\n ${inner}\n </a>\n `\n : html`\n <button\n class=\"button\"\n aria-labelledby=\"label\"\n ?disabled=${disabled}\n data-variant=${ifDefined(variant)}\n data-action=${ifDefined(action)}\n part=\"button\"\n >\n ${inner}\n </button>\n `;\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]!./server.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, `:host{display:inline-flex;vertical-align:middle}.button{box-sizing:border-box;height:100%;width:100%}`, \"\"]);\n// Exports\nexport default css([___CSS_LOADER_EXPORT___.toString()]);\n"],"names":["MDNButton","Boolean","String","i","customElements"],"mappings":"0KAKO,IAAMA,UAAN,MAAMA,kBAAkB,IAAU,CACvC,OAAO,OAAS,GAAM,AAAC,AAEvB,QAAO,WAAa,CAClB,SAAU,CAAE,KAAMC,OAAQ,EAC1B,QAAS,CAAE,KAAMC,MAAO,EACxB,OAAQ,CAAE,KAAMA,MAAO,EACvB,KAAM,CAAE,MAAO,EAAK,EACpB,SAAU,CAAE,KAAMD,QAAS,UAAW,WAAY,EAClD,aAAc,CAAE,KAAMC,OAAQ,UAAW,eAAgB,EACzD,KAAM,CAAE,KAAMA,MAAO,EACrB,OAAQ,CAAE,KAAMA,MAAO,EACvB,IAAK,CAAE,KAAMA,MAAO,CACtB,CAAE,AAEF,cAAc,CACZ,KAAK,GACL,IAAI,CAAC,QAAQ,CAAG,GAEhB,IAAI,CAAC,IAAI,CAAG,OACZ,IAAI,CAAC,QAAQ,CAAG,GAEhB,IAAI,CAAC,YAAY,CAAG,SAEpB,IAAI,CAAC,OAAO,CAAG,UAEf,IAAI,CAAC,MAAM,CAAG,OAEd,IAAI,CAAC,IAAI,CAAG,OAEZ,IAAI,CAAC,MAAM,CAAG,OAEd,IAAI,CAAC,GAAG,CAAG,MACb,CAEA,QAAS,CACP,OAAO,ACzBI,SAAgB,CAC7B,OAAK,CACLC,KAAAA,CAAI,CACJ,UAAQ,CACR,cAAY,CACZ,WAAW,EAAK,CAChB,MAAI,CACJ,QAAM,CACN,KAAG,CACH,UAAU,SAAS,CACnB,QAAM,CACP,EACC,IAAM,EAAcA,EAChB,QAAI,CAAC,+BAA+B,EAAEA,EAAK,OAAO,CAAC,CACnD,IAAO,CACL,EAAe,QAAI,CAAC;2CACe,EAAE,EAAS;OAC/C,EAAE,EAAM;;EAEb,CAAC,CAEK,EACJ,AAAiB,UAAjB,EACI,CAAC,EAAc,EAAY,CAC3B,CAAC,EAAa,EAAa,CAEjC,OAAO,EACH,QAAI,CAAC;;;eAGI,EAAE,EAAK;iBACL,EAAE,QAAU,GAAQ;cACvB,EAAE,QAAU,GAAK;;uBAER,EAAE,QAAU,GAAS;sBACtB,EAAE,QAAU,GAAQ;;;UAGhC,EAAE,EAAM;;MAEZ,CAAC,CACD,QAAI,CAAC;;;;oBAIS,EAAE,EAAS;uBACR,EAAE,QAAU,GAAS;sBACtB,EAAE,QAAU,GAAQ;;;UAGhC,EAAE,EAAM;;MAEZ,CAAC,AACP,ED5BkB,CACZ,MAAO,QAAI,CAAC,aAAa,CAAC,CAC1B,SAAU,IAAI,CAAC,QAAQ,CACvB,KAAM,IAAI,CAAC,IAAI,CACf,SAAU,IAAI,CAAC,QAAQ,CACvB,aAAc,IAAI,CAAC,YAAY,CAC/B,QAAS,IAAI,CAAC,OAAO,CACrB,OAAQ,IAAI,CAAC,MAAM,CACnB,KAAM,IAAI,CAAC,IAAI,CACf,OAAQ,IAAI,CAAC,MAAM,CACnB,IAAK,IAAI,CAAC,GAAG,AACf,EACF,CACF,EAEAC,eAAe,MAAM,CAAC,aAAcJ,U,yGEnDhC,EAA0B,IAA4B,KAC1D,EAAwB,CAAC,CAAC,GAAiC,EAE3D,EAAwB,IAAI,CAAC,CAAC,EAAO,EAAE,CAAE,wGAAyG,GAAG,EAErJ,MAAe,SAAI,CAAC,EAAwB,QAAQ,GAAG,C"}
@@ -1,102 +0,0 @@
1
- export const __webpack_ids__=["37"];export const __webpack_modules__={56980:function(e,n,t){t.r(n),t.d(n,{MDNLoginButton:()=>MDNLoginButton});var r=t(14703);t(50272);var o=t(69535),i=t(8900);let MDNLoginButton=class MDNLoginButton extends(0,o.q)(r.oi){static ssr=!1;get _loginUrl(){let e=location.href.replace(location.origin,""),n=new URL(i.sA,location.origin);return n.search=new URLSearchParams({next:e}).toString(),n.toString()}render(){return(0,r.dy)`<mdn-button href=${this._loginUrl}
2
- >${this.l10n`Login`}</mdn-button
3
- >`}};customElements.define("mdn-login-button",MDNLoginButton)},6067:function(e,n,t){t.r(n),t.d(n,{MDNPlayground:()=>MDNPlayground});var r=t(35470),o=t(14703),i=t(51968),a=t(69535),s=t(61619),l=t(13117),d=t(15383),c=t(32533);t(4406),t(50272),t(74580),t(18103),t(4976),t(86499),t(56980),t(46907);let u="playground-session-code";let MDNPlayground=class MDNPlayground extends(0,a.q)(o.oi){static styles=d.Z;constructor(){super(),this._permalink="",this._autoRun=!0}_controller=(0,i.V)();_user=new r.iQ(this,{task:async()=>await (0,l.s)()});_format(){this._controller.value?.format()}_run(){let e=this._controller.value;e&&(e.run(),this._autoRun||(this._autoRun=!0,e.runOnChange=!0,this._storeSession()))}_share(){this.shadowRoot?.querySelector("mdn-modal")?.showModal()}_clear(){let e=this._controller.value;if(confirm(this.l10n`Do you really want to clear everything?`)&&e){e.clear(),this._storeSession(),this.requestUpdate();let n=new URL(location.href);n.search="",history.replaceState(void 0,"",n)}}_reset(){let e=this._controller.value;confirm(this.l10n`Do you really want to revert your changes?`)&&e&&(e.reset(),this._storeSession(),this.requestUpdate())}async _copyMarkdown(){let e=this._controller.value;if(e){let n=Object.entries(e.code).map(([e,n])=>n&&`\`\`\`${e}
4
- ${n}
5
- \`\`\``).filter(Boolean).join("\n\n");await navigator.clipboard.writeText(n)}}async _createPermalink(){let e=this._controller.value;if(e){let n=await fetch("/api/v1/play/",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e.code)}),{id:t}=await n.json(),r=new URL(location.href);r.search=new URLSearchParams({id:t}).toString(),e.initialCode=e.code,this._permalink=r.toString(),history.replaceState(void 0,"",r),this.requestUpdate()}}async _copyPermalink(){this._permalink&&await navigator.clipboard.writeText(this._permalink)}_storeSession(){let e=this._controller.value;if(e){let{srcPrefix:n,initialCode:t,code:r}=e,o={srcPrefix:n,initialCode:t,code:r,autoRun:this._autoRun};sessionStorage.setItem(u,JSON.stringify(o))}}_loadSession(){let{srcPrefix:e,initialCode:n,code:t,autoRun:r}=m(JSON.parse(sessionStorage.getItem(u)||"{}")),o=this._controller.value;o&&(!1===r&&(this._autoRun=!1,o.runOnStart=!1,o.runOnChange=!1),o.srcPrefix=e,o.initialCode=n,o.code=t,this.requestUpdate())}async _loadFromUrl(){let e=this._controller.value;if(e){let n=new URLSearchParams(location.search),t=n.get("id"),r=n.get("state"),{srcPrefix:o,code:i}=await (t?this._sessionFromApi(t):r?this._sessionFromState(r):void 0)||{};void 0===o||void 0===i||e.srcPrefix===o&&p(e.initialCode,i)||(opener?.location?.origin&&opener?.location?.origin===location.origin||(this._autoRun=!1,e.runOnStart=!1,e.runOnChange=!1),e.srcPrefix=o,e.initialCode=i,e.code=i,this._storeSession()),this.requestUpdate()}}async _sessionFromApi(e){let n=await fetch(`/api/v1/play/${encodeURIComponent(e)}`);if(!n.ok)return void console.error(n.statusText);let t=new URL(location.href);return t.search=new URLSearchParams({id:e}).toString(),this._permalink=t.toString(),(0,s.z)("playground",{type:"load-shared"}),m(await n.json())}async _sessionFromState(e){let{state:n}=await (0,c.a)(e);return m(JSON.parse(n||"{}"))}_editorUpdate(){this._storeSession(),this.requestUpdate()}connectedCallback(){super.connectedCallback(),this._user.run()}render(){let{code:e,initialCode:n}=this._controller.value??{},t=Object.values(e??{}).some(Boolean),r=Object.values(n??{}).some(Boolean),a=r&&!p(e,n);return(0,o.dy)`
6
- <div class="wrapper">
7
- <mdn-play-controller
8
- ${(0,i.i)(this._controller)}
9
- run-on-start
10
- run-on-change
11
- >
12
- <section>
13
- <aside>
14
- <h1>${this.l10n`Playground`}</h1>
15
- <menu>
16
- <mdn-button
17
- variant="secondary"
18
- @click=${this._format}
19
- ?disabled=${!t}
20
- >${this.l10n`Format`}</mdn-button
21
- >
22
- <mdn-button
23
- variant="secondary"
24
- @click=${this._run}
25
- ?disabled=${!t}
26
- >${this.l10n`Run`}</mdn-button
27
- >
28
- <mdn-button
29
- variant="secondary"
30
- @click=${this._share}
31
- ?disabled=${!t}
32
- >${this.l10n`Share`}</mdn-button
33
- >
34
- <mdn-button
35
- variant="secondary"
36
- @click=${this._clear}
37
- ?disabled=${!(t||a)}
38
- >${this.l10n`Clear`}</mdn-button
39
- >
40
- ${r?(0,o.dy)`<mdn-button
41
- variant="secondary"
42
- @click=${this._reset}
43
- ?disabled=${!a}
44
- >${this.l10n`Reset`}</mdn-button
45
- >`:o.Ld}
46
- </menu>
47
- </aside>
48
- <details open>
49
- <summary>HTML</summary>
50
- <mdn-play-editor
51
- language="html"
52
- @update=${this._editorUpdate}
53
- ></mdn-play-editor>
54
- </details>
55
- <details open>
56
- <summary>CSS</summary>
57
- <mdn-play-editor
58
- language="css"
59
- @update=${this._editorUpdate}
60
- ></mdn-play-editor>
61
- </details>
62
- <details open>
63
- <summary>JAVASCRIPT</summary>
64
- <mdn-play-editor
65
- language="js"
66
- @update=${this._editorUpdate}
67
- ></mdn-play-editor>
68
- </details>
69
- </section>
70
- <section class="playground__runner-console">
71
- <mdn-play-runner></mdn-play-runner>
72
- <div class="playground__console">
73
- <div>${this.l10n`Console`}</div>
74
- <mdn-play-console></mdn-play-console>
75
- </div>
76
- </section>
77
- <mdn-placement-sidebar horizontal></mdn-placement-sidebar>
78
- </mdn-play-controller>
79
- </div>
80
- <mdn-modal>
81
- <section>
82
- <h2>${this.l10n`Share Markdown`}</h2>
83
- <mdn-button variant="secondary" @click=${this._copyMarkdown}
84
- >${this.l10n`Copy markdown to clipboard`}</mdn-button
85
- >
86
- </section>
87
- <section>
88
- <h2>${this.l10n`Share your code via Permalink`}</h2>
89
- ${this._user.render({initial:()=>(0,o.dy)`<mdn-login-button></mdn-login-button>`,pending:()=>(0,o.dy)`<mdn-login-button></mdn-login-button>`,complete:e=>e.isAuthenticated?this._permalink&&!a?(0,o.dy)`
90
- <input .value=${this._permalink} />
91
- <mdn-button
92
- variant="secondary"
93
- @click=${this._copyPermalink}
94
- >${this.l10n`Copy to clipboard`}</mdn-button
95
- >
96
- `:(0,o.dy)`<mdn-button @click=${this._createPermalink}
97
- >${this.l10n`Create link`}</mdn-button
98
- >`:(0,o.dy)`<mdn-login-button></mdn-login-button>`})}
99
- </section>
100
- </mdn-modal>
101
- `}firstUpdated(){this._loadSession(),this._loadFromUrl()}};function m(e){return"html"in e?{srcPrefix:e.src||"",code:{html:e.html,css:e.css,js:e.js}}:"srcPrefix"in e?e:{srcPrefix:"",code:{}}}function p(e,n){return void 0===e||void 0===n?e===n:Object.keys(e).length===Object.keys(n).length&&Object.entries(e).every(([e,t])=>n[e]===t)}customElements.define("mdn-playground",MDNPlayground)},61619:function(e,n,t){t.d(n,{z:()=>o});var r=t(26362);function o(e,{type:n,label:t}){r.Z.recordElementClick({id:e,type:n,label:t})}},15383:function(e,n,t){t.d(n,{Z:()=>l});var r=t(14703),o=t(8081),i=t.n(o),a=t(23645),s=t.n(a)()(i());s.push([e.id,'.wrapper{display:grid;gap:1rem;grid-template-areas:"left runner" "left place";grid-template-columns:1fr 1fr;grid-template-rows:1fr min-content;height:100%}.wrapper section{display:flex;flex-direction:column;gap:1rem;grid-area:left}:is(.wrapper section) aside{align-items:center;border:var(--border);border-radius:.25rem;display:flex;flex-wrap:wrap;gap:.5rem;padding:.5rem}:is(:is(.wrapper section) aside) h1{font-size:var(--font-size-normal);margin:0 auto 0 0}:is(:is(.wrapper section) aside) menu{display:flex;flex-wrap:wrap;gap:.5rem;margin:0;padding:0}:is(.wrapper section) details{border:var(--border);border-radius:.25rem;display:flex;flex-direction:column;flex-shrink:0;overflow:hidden}[open]:is(:is(.wrapper section) details){flex-basis:0;flex-grow:1;min-height:12rem}:is(:is(.wrapper section) details) summary{cursor:pointer;line-height:var(--font-line-ui);padding:.5rem;-webkit-user-select:none;user-select:none}:is(:is(.wrapper section) details) mdn-play-editor{flex-grow:1;min-height:0}.playground__runner-console:is(.wrapper section){border:var(--border);border-radius:.25rem;grid-area:runner;overflow:hidden}.playground__runner-console:is(.wrapper section) mdn-play-runner{flex-grow:1}.playground__runner-console:is(.wrapper section) .playground__console{background-color:var(--color-background-secondary);border-top:var(--border)}:is(.playground__runner-console:is(.wrapper section) .playground__console) div{font-size:var(--font-size-small);font-weight:600;text-align:center}:is(.playground__runner-console:is(.wrapper section) .playground__console) mdn-play-console{height:6rem}.wrapper mdn-placement-sidebar{grid-area:place;justify-self:center}@media (max-width:769px){.wrapper{display:flex;flex-direction:column}}mdn-modal section{align-items:center;display:flex;flex-direction:column;gap:.5rem}:is(mdn-modal section):first-child{margin-bottom:1rem}mdn-modal h2{font-size:var(--font-size-normal);font-weight:400;margin:0}',""]);let l=(0,r.iv)([s.toString()])}};
102
- //# sourceMappingURL=37.feff9590370f461a.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"37.feff9590370f461a.js","sources":["webpack://@mdn/fred/./components/login-button/element.js","webpack://@mdn/fred/./components/playground/element.js","webpack://@mdn/fred/./utils/glean.js","webpack://@mdn/fred/./components/playground/element.css"],"sourcesContent":["import { LitElement, html } from \"lit\";\n\nimport \"../button/element.js\";\nimport { L10nMixin } from \"../../l10n/mixin.js\";\nimport { FXA_SIGNIN_URL } from \"../env/index.js\";\n\nexport class MDNLoginButton extends L10nMixin(LitElement) {\n static ssr = false;\n\n get _loginUrl() {\n const next = location.href.replace(location.origin, \"\");\n // TODO: deal with local login\n const loginUrl = new URL(FXA_SIGNIN_URL, location.origin);\n loginUrl.search = new URLSearchParams({ next }).toString();\n return loginUrl.toString();\n }\n\n render() {\n return html`<mdn-button href=${this._loginUrl}\n >${this.l10n`Login`}</mdn-button\n >`;\n }\n}\n\ncustomElements.define(\"mdn-login-button\", MDNLoginButton);\n","import { Task } from \"@lit/task\";\nimport { LitElement, html, nothing } from \"lit\";\nimport { createRef, ref } from \"lit/directives/ref.js\";\n\nimport { L10nMixin } from \"../../l10n/mixin.js\";\nimport { gleanClick } from \"../../utils/glean.js\";\nimport { globalUser } from \"../user/context.js\";\n\nimport styles from \"./element.css?lit\";\nimport { decompressFromBase64 } from \"./utils.js\";\n\nimport \"../play-controller/element.js\";\nimport \"../button/element.js\";\nimport \"../play-editor/element.js\";\nimport \"../play-runner/element.js\";\nimport \"../play-console/element.js\";\nimport \"../modal/element.js\";\nimport \"../login-button/element.js\";\nimport \"../placement-sidebar/element.js\";\n\n/**\n * @import { MDNPlayController } from \"../play-controller/element.js\";\n * @import { Ref } from \"lit/directives/ref.js\";\n */\n\nconst SESSION_KEY = \"playground-session-code\";\n\nexport class MDNPlayground extends L10nMixin(LitElement) {\n static styles = styles;\n\n constructor() {\n super();\n this._permalink = \"\";\n this._autoRun = true;\n }\n\n /** @type {Ref<MDNPlayController>} */\n _controller = createRef();\n\n _user = new Task(this, {\n task: async () => {\n return await globalUser();\n },\n });\n\n _format() {\n this._controller.value?.format();\n }\n\n _run() {\n const controller = this._controller.value;\n if (controller) {\n controller.run();\n if (!this._autoRun) {\n this._autoRun = true;\n controller.runOnChange = true;\n this._storeSession();\n }\n }\n }\n\n _share() {\n this.shadowRoot?.querySelector(\"mdn-modal\")?.showModal();\n }\n\n _clear() {\n const controller = this._controller.value;\n if (\n confirm(this.l10n`Do you really want to clear everything?`) &&\n controller\n ) {\n controller.clear();\n this._storeSession();\n this.requestUpdate();\n const urlWithoutSearch = new URL(location.href);\n urlWithoutSearch.search = \"\";\n history.replaceState(undefined, \"\", urlWithoutSearch);\n }\n }\n\n _reset() {\n const controller = this._controller.value;\n if (\n confirm(this.l10n`Do you really want to revert your changes?`) &&\n controller\n ) {\n controller.reset();\n this._storeSession();\n this.requestUpdate();\n }\n }\n\n async _copyMarkdown() {\n const controller = this._controller.value;\n if (controller) {\n const markdown = Object.entries(controller.code)\n .map(\n ([lang, code]) =>\n code &&\n `${\"```\"}${lang}\n${code}\n${\"```\"}`,\n )\n .filter(Boolean)\n .join(\"\\n\\n\");\n await navigator.clipboard.writeText(markdown);\n }\n }\n\n async _createPermalink() {\n const controller = this._controller.value;\n if (controller) {\n const res = await fetch(\"/api/v1/play/\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(controller.code),\n });\n const { id } = await res.json();\n const permalink = new URL(location.href);\n permalink.search = new URLSearchParams({ id }).toString();\n\n controller.initialCode = controller.code;\n this._permalink = permalink.toString();\n history.replaceState(undefined, \"\", permalink);\n this.requestUpdate();\n }\n }\n\n async _copyPermalink() {\n if (this._permalink) {\n await navigator.clipboard.writeText(this._permalink);\n }\n }\n\n _storeSession() {\n const controller = this._controller.value;\n if (controller) {\n const { srcPrefix, initialCode, code } = controller;\n /** @type {import(\"./types.js\").PlaygroundSession} */\n const session = {\n srcPrefix,\n initialCode,\n code,\n autoRun: this._autoRun,\n };\n sessionStorage.setItem(SESSION_KEY, JSON.stringify(session));\n }\n }\n\n _loadSession() {\n const { srcPrefix, initialCode, code, autoRun } = stateToSession(\n JSON.parse(sessionStorage.getItem(SESSION_KEY) || \"{}\"),\n );\n const controller = this._controller.value;\n if (controller) {\n if (autoRun === false) {\n this._autoRun = false;\n controller.runOnStart = false;\n controller.runOnChange = false;\n }\n controller.srcPrefix = srcPrefix;\n controller.initialCode = initialCode;\n controller.code = code;\n this.requestUpdate();\n }\n }\n\n async _loadFromUrl() {\n const controller = this._controller.value;\n if (controller) {\n const params = new URLSearchParams(location.search);\n const idParam = params.get(\"id\");\n const stateParam = params.get(\"state\");\n\n const { srcPrefix, code } =\n (await (idParam\n ? this._sessionFromApi(idParam)\n : stateParam\n ? this._sessionFromState(stateParam)\n : undefined)) || {};\n\n if (\n srcPrefix !== undefined &&\n code !== undefined &&\n (controller.srcPrefix !== srcPrefix ||\n !compareCode(controller.initialCode, code))\n ) {\n if (\n !opener?.location?.origin ||\n opener?.location?.origin !== location.origin\n ) {\n this._autoRun = false;\n controller.runOnStart = false;\n controller.runOnChange = false;\n }\n controller.srcPrefix = srcPrefix;\n controller.initialCode = code;\n controller.code = code;\n this._storeSession();\n }\n\n this.requestUpdate();\n }\n }\n\n /** @param {string} id */\n async _sessionFromApi(id) {\n const response = await fetch(`/api/v1/play/${encodeURIComponent(id)}`);\n if (!response.ok) {\n console.error(response.statusText);\n return;\n }\n\n const permalink = new URL(location.href);\n permalink.search = new URLSearchParams({ id }).toString();\n this._permalink = permalink.toString();\n\n gleanClick(\"playground\", { type: \"load-shared\" });\n const code = await response.json();\n return stateToSession(code);\n }\n\n /** @param {string} stateParam */\n async _sessionFromState(stateParam) {\n const { state } = await decompressFromBase64(stateParam);\n return stateToSession(JSON.parse(state || \"{}\"));\n }\n\n _editorUpdate() {\n this._storeSession();\n this.requestUpdate();\n }\n\n connectedCallback() {\n super.connectedCallback();\n this._user.run();\n }\n\n render() {\n const { code, initialCode } = this._controller.value ?? {};\n const hasCode = Object.values(code ?? {}).some(Boolean);\n const hasInitialCode = Object.values(initialCode ?? {}).some(Boolean);\n const isResettable = hasInitialCode && !compareCode(code, initialCode);\n\n return html`\n <div class=\"wrapper\">\n <mdn-play-controller\n ${ref(this._controller)}\n run-on-start\n run-on-change\n >\n <section>\n <aside>\n <h1>${this.l10n`Playground`}</h1>\n <menu>\n <mdn-button\n variant=\"secondary\"\n @click=${this._format}\n ?disabled=${!hasCode}\n >${this.l10n`Format`}</mdn-button\n >\n <mdn-button\n variant=\"secondary\"\n @click=${this._run}\n ?disabled=${!hasCode}\n >${this.l10n`Run`}</mdn-button\n >\n <mdn-button\n variant=\"secondary\"\n @click=${this._share}\n ?disabled=${!hasCode}\n >${this.l10n`Share`}</mdn-button\n >\n <mdn-button\n variant=\"secondary\"\n @click=${this._clear}\n ?disabled=${!(hasCode || isResettable)}\n >${this.l10n`Clear`}</mdn-button\n >\n ${hasInitialCode\n ? html`<mdn-button\n variant=\"secondary\"\n @click=${this._reset}\n ?disabled=${!isResettable}\n >${this.l10n`Reset`}</mdn-button\n >`\n : nothing}\n </menu>\n </aside>\n <details open>\n <summary>HTML</summary>\n <mdn-play-editor\n language=\"html\"\n @update=${this._editorUpdate}\n ></mdn-play-editor>\n </details>\n <details open>\n <summary>CSS</summary>\n <mdn-play-editor\n language=\"css\"\n @update=${this._editorUpdate}\n ></mdn-play-editor>\n </details>\n <details open>\n <summary>JAVASCRIPT</summary>\n <mdn-play-editor\n language=\"js\"\n @update=${this._editorUpdate}\n ></mdn-play-editor>\n </details>\n </section>\n <section class=\"playground__runner-console\">\n <mdn-play-runner></mdn-play-runner>\n <div class=\"playground__console\">\n <div>${this.l10n`Console`}</div>\n <mdn-play-console></mdn-play-console>\n </div>\n </section>\n <mdn-placement-sidebar horizontal></mdn-placement-sidebar>\n </mdn-play-controller>\n </div>\n <mdn-modal>\n <section>\n <h2>${this.l10n`Share Markdown`}</h2>\n <mdn-button variant=\"secondary\" @click=${this._copyMarkdown}\n >${this.l10n`Copy markdown to clipboard`}</mdn-button\n >\n </section>\n <section>\n <h2>${this.l10n`Share your code via Permalink`}</h2>\n ${this._user.render({\n initial: () => html`<mdn-login-button></mdn-login-button>`,\n pending: () => html`<mdn-login-button></mdn-login-button>`,\n complete: (user) =>\n user.isAuthenticated\n ? this._permalink && !isResettable\n ? html`\n <input .value=${this._permalink} />\n <mdn-button\n variant=\"secondary\"\n @click=${this._copyPermalink}\n >${this.l10n`Copy to clipboard`}</mdn-button\n >\n `\n : html`<mdn-button @click=${this._createPermalink}\n >${this.l10n`Create link`}</mdn-button\n >`\n : html`<mdn-login-button></mdn-login-button>`,\n })}\n </section>\n </mdn-modal>\n `;\n }\n\n firstUpdated() {\n this._loadSession();\n this._loadFromUrl();\n }\n}\n\ncustomElements.define(\"mdn-playground\", MDNPlayground);\n\n/**\n * @param {import(\"./types.js\").PlaygroundStateParam | import(\"./types.js\").PlaygroundSession | {}} stateOrSession\n * @returns {import(\"./types.js\").PlaygroundSession}\n */\nfunction stateToSession(stateOrSession) {\n if (\"html\" in stateOrSession) {\n return {\n srcPrefix: stateOrSession.src || \"\",\n code: {\n html: stateOrSession.html,\n css: stateOrSession.css,\n js: stateOrSession.js,\n },\n };\n }\n if (\"srcPrefix\" in stateOrSession) {\n return stateOrSession;\n }\n return {\n srcPrefix: \"\",\n code: {},\n };\n}\n\n/**\n * @param {Record<string, string>} [a]\n * @param {Record<string, string>} [b]\n * @returns {boolean}\n */\nfunction compareCode(a, b) {\n return a === undefined || b === undefined\n ? a === b\n : Object.keys(a).length === Object.keys(b).length &&\n Object.entries(a).every(([k, v]) => b[k] === v);\n}\n","// @ts-expect-error \"Could not find declaration file\"\nimport GleanMetrics from \"@mozilla/glean/metrics\";\n\n/**\n * Records a click event.\n *\n * Use only if automatic click events are not an option.\n * See: https://mozilla.github.io/glean.js/automatic_instrumentation/click_events/\n *\n * @param {string} id\n * @param {object} options\n * @param {string=} options.type\n * @param {string=} options.label\n */\nexport function gleanClick(id, { type, label }) {\n GleanMetrics.recordElementClick({\n id,\n type,\n label,\n });\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, `.wrapper{display:grid;gap:1rem;grid-template-areas:\"left runner\" \"left place\";grid-template-columns:1fr 1fr;grid-template-rows:1fr min-content;height:100%}.wrapper section{display:flex;flex-direction:column;gap:1rem;grid-area:left}:is(.wrapper section) aside{align-items:center;border:var(--border);border-radius:.25rem;display:flex;flex-wrap:wrap;gap:.5rem;padding:.5rem}:is(:is(.wrapper section) aside) h1{font-size:var(--font-size-normal);margin:0 auto 0 0}:is(:is(.wrapper section) aside) menu{display:flex;flex-wrap:wrap;gap:.5rem;margin:0;padding:0}:is(.wrapper section) details{border:var(--border);border-radius:.25rem;display:flex;flex-direction:column;flex-shrink:0;overflow:hidden}[open]:is(:is(.wrapper section) details){flex-basis:0;flex-grow:1;min-height:12rem}:is(:is(.wrapper section) details) summary{cursor:pointer;line-height:var(--font-line-ui);padding:.5rem;-webkit-user-select:none;user-select:none}:is(:is(.wrapper section) details) mdn-play-editor{flex-grow:1;min-height:0}.playground__runner-console:is(.wrapper section){border:var(--border);border-radius:.25rem;grid-area:runner;overflow:hidden}.playground__runner-console:is(.wrapper section) mdn-play-runner{flex-grow:1}.playground__runner-console:is(.wrapper section) .playground__console{background-color:var(--color-background-secondary);border-top:var(--border)}:is(.playground__runner-console:is(.wrapper section) .playground__console) div{font-size:var(--font-size-small);font-weight:600;text-align:center}:is(.playground__runner-console:is(.wrapper section) .playground__console) mdn-play-console{height:6rem}.wrapper mdn-placement-sidebar{grid-area:place;justify-self:center}@media (max-width:769px){.wrapper{display:flex;flex-direction:column}}mdn-modal section{align-items:center;display:flex;flex-direction:column;gap:.5rem}:is(mdn-modal section):first-child{margin-bottom:1rem}mdn-modal h2{font-size:var(--font-size-normal);font-weight:400;margin:0}`, \"\"]);\n// Exports\nexport default css([___CSS_LOADER_EXPORT___.toString()]);\n"],"names":["MDNLoginButton","location","URL","URLSearchParams","customElements","MDNPlayground","confirm","history","Object","Boolean","navigator","fetch","JSON","sessionStorage","opener","encodeURIComponent","console"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"3769.d1f1fcf335099c33.js","sources":["webpack://@mdn/fred/./components/icon/info.svg","webpack://@mdn/fred/./components/language-switcher/element.js","webpack://@mdn/fred/./components/language-switcher/element.css"],"sourcesContent":["import { svg } from \"lit\"; export default svg`<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M12 16v-4m0-4h.01\"/></svg>`;","import { LitElement, html, nothing } from \"lit\";\n\nimport { L10nMixin } from \"../../l10n/mixin.js\";\n\nimport infoIcon from \"../icon/info.svg?lit\";\nimport {\n getPreferredLocale,\n resetPreferredLocale,\n setPreferredLocale,\n} from \"../preferred-locale/utils.js\";\n\nimport styles from \"./element.css?lit\";\n\nimport \"../dropdown/element.js\";\nimport \"../switch/element.js\";\n\nexport class MDNLanguageSwitcher extends L10nMixin(LitElement) {\n static styles = styles;\n\n static properties = {\n locale: { type: String },\n native: { type: String },\n translations: { type: Array },\n url: { type: String },\n _preferredLocale: { state: true },\n };\n\n constructor() {\n super();\n /** @type {import(\"@rari\").Translation[]} */\n this.translations = [];\n this.native = \"\";\n this.locale = \"en-US\";\n this.url = \"/\";\n /** @type {string|undefined} */\n this._preferredLocale = undefined;\n }\n\n firstUpdated() {\n this._preferredLocale = getPreferredLocale();\n }\n\n get _isLocalePreferred() {\n return this._preferredLocale == this.locale;\n }\n\n _togglePreferredLocale() {\n if (this._isLocalePreferred) {\n resetPreferredLocale();\n this._preferredLocale = undefined;\n } else {\n setPreferredLocale(this.locale);\n this._preferredLocale = this.locale;\n }\n }\n\n render() {\n const { translations, native, locale, url } = this;\n\n if (translations.length === 0) {\n return nothing;\n }\n\n return html`<div class=\"language-switcher\">\n <mdn-dropdown>\n <button slot=\"button\" class=\"language-switcher__button\" type=\"button\">\n <span>${native ?? locale}</span>\n </button>\n <div\n slot=\"dropdown\"\n class=\"language-switcher__dropdown\"\n id=\"language-switcher__dropdown\"\n >\n <div class=\"language_switcher__remember\">\n <mdn-switch\n @toggle=${this._togglePreferredLocale}\n ?checked=${this._isLocalePreferred}\n >${this.l10n`Remember language`}</mdn-switch\n >\n <mdn-button\n variant=\"plain\"\n .icon=${infoIcon}\n icon-only\n href=\"https://github.com/orgs/mdn/discussions/739\"\n target=\"_blank\"\n title=${this\n .l10n`Enable this setting to always switch to the current language when available. (Click to learn more.)`}\n >${this.l10n`Learn more`}</mdn-button\n >\n </div>\n <ul class=\"language-switcher__list\">\n ${translations\n .sort((a, b) => a.locale.localeCompare(b.locale))\n .map(\n (translation) => html`\n <li>\n <a\n class=\"language-switcher__option\"\n @click=${resetPreferredLocale}\n href=${url.replace(\n `/${locale}/`,\n `/${translation.locale}/`,\n )}\n >${translation.native}</a\n >\n </li>\n `,\n )}\n </ul>\n </div>\n </mdn-dropdown>\n </div>`;\n }\n}\n\ncustomElements.define(\"mdn-language-switcher\", MDNLanguageSwitcher);\n","import { css } from \"lit\";\n// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../icon/languages.svg\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.language-switcher{position:relative}.language-switcher__button{align-items:center;background-color:initial;border:none;color:inherit;column-gap:.25rem;cursor:pointer;display:flex;font:inherit;margin:0;padding:0 .5rem}.language-switcher__button:is(:hover,:focus,[aria-expanded=true]){background-color:var(--color-background-secondary)}@media screen and (max-width:480px){.language-switcher__button>span{display:none}}.language-switcher__button:before{background-color:currentcolor;content:\"\";height:1.25rem;-webkit-mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});-webkit-mask-size:cover;mask-size:cover;width:1.25rem}.language-switcher__dropdown{background-color:var(--color-background-primary);border:1px solid var(--color-border-primary);margin:0;padding:.75rem;position:absolute;right:0;width:max-content;z-index:1}.language_switcher__remember{border-bottom:1px solid var(--color-border-primary);display:flex;font-size:var(--font-size-small);place-items:center;width:100%}.language_switcher__remember mdn-switch{padding:.25rem}:is(.language_switcher__remember mdn-switch):hover{background-color:var(--color-background-secondary)}.language-switcher__list{background-color:var(--color-background-primary);list-style:none;margin:0;padding:0;width:100%}.language-switcher__option{align-items:center;background-color:initial;border:none;color:var(--color-text-primary);column-gap:.25rem;display:flex;font:inherit;margin:0;padding:.25rem;-webkit-text-decoration:none;text-decoration:none;width:100%}.language-switcher__option:hover{background-color:var(--color-background-secondary)}`, \"\"]);\n// Exports\nexport default css([___CSS_LOADER_EXPORT___.toString()]);\n"],"names":["MDNLanguageSwitcher","String","Array","customElements"],"mappings":"0PAA2B,MAAe,QAAG,CAAC,wPAAwP,CAAC,C,4CCgBhS,IAAMA,oBAAN,MAAMA,2BAA4B,QAAU,IAAU,EAC3D,OAAO,OAAS,GAAM,AAAC,AAEvB,QAAO,WAAa,CAClB,OAAQ,CAAE,KAAMC,MAAO,EACvB,OAAQ,CAAE,KAAMA,MAAO,EACvB,aAAc,CAAE,KAAMC,KAAM,EAC5B,IAAK,CAAE,KAAMD,MAAO,EACpB,iBAAkB,CAAE,MAAO,EAAK,CAClC,CAAE,AAEF,cAAc,CACZ,KAAK,GAEL,IAAI,CAAC,YAAY,CAAG,EAAE,CACtB,IAAI,CAAC,MAAM,CAAG,GACd,IAAI,CAAC,MAAM,CAAG,QACd,IAAI,CAAC,GAAG,CAAG,IAEX,IAAI,CAAC,gBAAgB,CAAG,MAC1B,CAEA,cAAe,CACb,IAAI,CAAC,gBAAgB,CAAG,UAC1B,CAEA,IAAI,oBAAqB,CACvB,OAAO,IAAI,CAAC,gBAAgB,EAAI,IAAI,CAAC,MAAM,AAC7C,CAEA,wBAAyB,CACnB,IAAI,CAAC,kBAAkB,EACzB,WACA,IAAI,CAAC,gBAAgB,CAAG,SAExB,SAAmB,IAAI,CAAC,MAAM,EAC9B,IAAI,CAAC,gBAAgB,CAAG,IAAI,CAAC,MAAM,CAEvC,CAEA,QAAS,CACP,GAAM,CAAE,cAAY,CAAE,QAAM,CAAE,QAAM,CAAE,KAAG,CAAE,CAAG,IAAI,QAElD,AAAI,AAAwB,IAAxB,EAAa,MAAM,CACd,IAAO,CAGT,QAAI,CAAC;;;gBAGA,EAAE,GAAU,EAAO;;;;;;;;;sBASb,EAAE,IAAI,CAAC,sBAAsB,CAAC;uBAC7B,EAAE,IAAI,CAAC,kBAAkB,CAAC;eAClC,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;;;;oBAI1B,EAAE,EAAS;;;;oBAIX,EAAE,IAAI,CACT,IAAI,CAAC,mGAAmG,CAAC,CAAC;eAC5G,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;;;;YAI3B,EAAE,EACC,IAAI,CAAC,CAAC,EAAG,IAAM,EAAE,MAAM,CAAC,aAAa,CAAC,EAAE,MAAM,GAC9C,GAAG,CACF,AAAC,GAAgB,QAAI,CAAC;;;;6BAIT,EAAE,IAAoB,CAAC;2BACzB,EAAE,EAAI,OAAO,CAChB,CAAC,CAAC,EAAE,EAAO,CAAC,CAAC,CACb,CAAC,CAAC,EAAE,EAAY,MAAM,CAAC,CAAC,CAAC,EACzB;uBACD,EAAE,EAAY,MAAM,CAAC;;;gBAG5B,CAAC,EACD;;;;UAIN,CAAC,AACT,CACF,EAEAE,eAAe,MAAM,CAAC,wBAAyBH,oB,mHC9G3C,EAAgC,kBAChC,EAA0B,IAA4B,KACtD,EAAqC,IAAgC,GAEzE,EAAwB,IAAI,CAAC,CAAC,EAAO,EAAE,CAAE,CAAC,khBAAkhB,EAAE,EAAmC,iBAAiB,EAAE,EAAmC,2/BAA2/B,CAAC,CAAE,GAAG,EAExpD,MAAe,SAAI,CAAC,EAAwB,QAAQ,GAAG,C"}
@@ -1,5 +0,0 @@
1
- export const __webpack_ids__=["3892"];export const __webpack_modules__={18399:function(t,e,o){o.r(e),o.d(e,{MDNDropdown:()=>MDNDropdown});var n=o(14703),s=o(93707);let MDNDropdown=class MDNDropdown extends n.oi{static styles=s.Z;static properties={open:{type:Boolean},loaded:{type:Boolean,reflect:!0}};constructor(){super(),this.open=!1,this.loaded=!1}get _buttonSlotElements(){return this._slotElements("button")}get _dropdownSlotElements(){return this._slotElements("dropdown")}_slotElements(t){let e=this.shadowRoot?.querySelector(`slot[name="${t}"]`);return e instanceof HTMLSlotElement?e.assignedElements():[]}_globalClick(t){t.composedPath().includes(this)||(this.open=!1)}_globalKeyDown(t){this.open&&"Escape"===t.key&&this._toggleDropDown()}_toggleDropDown(){this.open=!this.open}_setAriaAttributes(){let t=this._dropdownSlotElements.find(t=>t.id)?.id;for(let e of(t||(t=Math.random().toString(36).replace("0.","uid_"),this._dropdownSlotElements[0]?.setAttribute("id",t)),this._buttonSlotElements))e.setAttribute("aria-expanded",this.open.toString()),t&&e.setAttribute("aria-controls",t)}connectedCallback(){super.connectedCallback(),this._globalClick=this._globalClick.bind(this),document.addEventListener("click",this._globalClick),this._globalKeyDown=this._globalKeyDown.bind(this),document.addEventListener("keydown",this._globalKeyDown)}render(){return(0,n.dy)`
2
- <slot name="button" @click=${this._toggleDropDown}></slot>
3
- <slot name="dropdown" ?hidden=${!this.open&&this.loaded}></slot>
4
- `}updated(){this._setAriaAttributes()}firstUpdated(){this.loaded=!0}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener("click",this._globalClick),document.removeEventListener("keydown",this._globalKeyDown)}};customElements.define("mdn-dropdown",MDNDropdown)},93707:function(t,e,o){o.d(e,{Z:()=>r});var n=o(14703),s=o(8081),l=o.n(s),i=o(23645),d=o.n(i)()(l());d.push([t.id,":host{display:contents}:host(:not([loaded],:focus-within)) slot[name=dropdown]{display:none}",""]);let r=(0,n.iv)([d.toString()])}};
5
- //# sourceMappingURL=3892.62b28110dbb3645e.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"3892.62b28110dbb3645e.js","sources":["webpack://@mdn/fred/./components/dropdown/element.js","webpack://@mdn/fred/./components/dropdown/element.css"],"sourcesContent":["import { LitElement, html } from \"lit\";\n\nimport styles from \"./element.css?lit\";\n\n/**\n * This element has two slots, which should take a single element each.\n * The element in the `dropdown` slot is hidden by default,\n * and shown when the element in the `button` slot is clicked.\n * The element in the `dropdown` slot is also hidden when the user clicks\n * outside the `mdn-dropdown` element. Automatically sets `aria-` attributes.\n *\n * @element mdn-dropdown\n *\n * @attr {boolean} open - Whether the dropdown is open or not.\n *\n * @slot button - The element used to toggle the dropdown.\n * @slot dropdown - The element to be shown/hidden in the dropdown.\n */\nexport class MDNDropdown extends LitElement {\n static styles = styles;\n\n static properties = {\n open: { type: Boolean },\n loaded: { type: Boolean, reflect: true },\n };\n\n constructor() {\n super();\n this.open = false;\n this.loaded = false;\n }\n\n get _buttonSlotElements() {\n return this._slotElements(\"button\");\n }\n\n get _dropdownSlotElements() {\n return this._slotElements(\"dropdown\");\n }\n\n /** @param {string} name */\n _slotElements(name) {\n const slot = this.shadowRoot?.querySelector(`slot[name=\"${name}\"]`);\n if (slot instanceof HTMLSlotElement) {\n return slot.assignedElements();\n }\n return [];\n }\n\n /** @param {MouseEvent} event */\n _globalClick(event) {\n if (!event.composedPath().includes(this)) {\n this.open = false;\n }\n }\n\n /** @param {KeyboardEvent} event */\n _globalKeyDown(event) {\n if (this.open && event.key === \"Escape\") {\n this._toggleDropDown();\n }\n }\n\n _toggleDropDown() {\n this.open = !this.open;\n }\n\n _setAriaAttributes() {\n let id = this._dropdownSlotElements.find((element) => element.id)?.id;\n if (!id) {\n id = Math.random().toString(36).replace(\"0.\", \"uid_\");\n this._dropdownSlotElements[0]?.setAttribute(\"id\", id);\n }\n for (const element of this._buttonSlotElements) {\n element.setAttribute(\"aria-expanded\", this.open.toString());\n if (id) {\n element.setAttribute(\"aria-controls\", id);\n }\n }\n }\n\n connectedCallback() {\n super.connectedCallback();\n this._globalClick = this._globalClick.bind(this);\n document.addEventListener(\"click\", this._globalClick);\n this._globalKeyDown = this._globalKeyDown.bind(this);\n document.addEventListener(\"keydown\", this._globalKeyDown);\n }\n\n render() {\n return html`\n <slot name=\"button\" @click=${this._toggleDropDown}></slot>\n <slot name=\"dropdown\" ?hidden=${!this.open && this.loaded}></slot>\n `;\n }\n\n updated() {\n this._setAriaAttributes();\n }\n\n firstUpdated() {\n this.loaded = true;\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener(\"click\", this._globalClick);\n document.removeEventListener(\"keydown\", this._globalKeyDown);\n }\n}\n\ncustomElements.define(\"mdn-dropdown\", MDNDropdown);\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, `:host{display:contents}:host(:not([loaded],:focus-within)) slot[name=dropdown]{display:none}`, \"\"]);\n// Exports\nexport default css([___CSS_LOADER_EXPORT___.toString()]);\n"],"names":["MDNDropdown","s","Boolean","HTMLSlotElement","e","Math","document","customElements"],"mappings":"oKAkBO,IAAMA,YAAN,MAAMA,oBAAoB,IAAU,CACzC,OAAO,OAASC,EAAA,CAAM,AAAC,AAEvB,QAAO,WAAa,CAClB,KAAM,CAAE,KAAMC,OAAQ,EACtB,OAAQ,CAAE,KAAMA,QAAS,QAAS,EAAK,CACzC,CAAE,AAEF,cAAc,CACZ,KAAK,GACL,IAAI,CAAC,IAAI,CAAG,GACZ,IAAI,CAAC,MAAM,CAAG,EAChB,CAEA,IAAI,qBAAsB,CACxB,OAAO,IAAI,CAAC,aAAa,CAAC,SAC5B,CAEA,IAAI,uBAAwB,CAC1B,OAAO,IAAI,CAAC,aAAa,CAAC,WAC5B,CAGA,cAAc,CAAI,CAAE,CAClB,IAAM,EAAO,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,WAAW,EAAE,EAAK,EAAE,CAAC,SAClE,AAAI,aAAgBC,gBACX,EAAK,gBAAgB,GAEvB,EAAE,AACX,CAGA,aAAa,CAAK,CAAE,CACd,AAAC,EAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,GACrC,KAAI,CAAC,IAAI,CAAG,EAAI,CAEpB,CAGA,eAAe,CAAK,CAAE,CAChB,IAAI,CAAC,IAAI,EAAI,AAAc,WAAd,EAAM,GAAG,EACxB,IAAI,CAAC,eAAe,EAExB,CAEA,iBAAkB,CAChB,IAAI,CAAC,IAAI,CAAG,CAAC,IAAI,CAAC,IAAI,AACxB,CAEA,oBAAqB,CACnB,IAAI,EAAK,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,AAAC,GAAY,EAAQ,EAAE,GAAG,GAKnE,IAAK,IAAMC,KAJN,IACH,EAAKC,KAAK,MAAM,GAAG,QAAQ,CAAC,IAAI,OAAO,CAAC,KAAM,QAC9C,IAAI,CAAC,qBAAqB,CAAC,EAAE,EAAE,aAAa,KAAM,IAE9B,IAAI,CAAC,mBAAmB,EAC5CD,EAAQ,YAAY,CAAC,gBAAiB,IAAI,CAAC,IAAI,CAAC,QAAQ,IACpD,GACFA,EAAQ,YAAY,CAAC,gBAAiB,EAG5C,CAEA,mBAAoB,CAClB,KAAK,CAAC,oBACN,IAAI,CAAC,YAAY,CAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAC/CE,SAAS,gBAAgB,CAAC,QAAS,IAAI,CAAC,YAAY,EACpD,IAAI,CAAC,cAAc,CAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EACnDA,SAAS,gBAAgB,CAAC,UAAW,IAAI,CAAC,cAAc,CAC1D,CAEA,QAAS,CACP,MAAO,QAAI,CAAC;iCACiB,EAAE,IAAI,CAAC,eAAe,CAAC;oCACpB,EAAE,CAAC,IAAI,CAAC,IAAI,EAAI,IAAI,CAAC,MAAM,CAAC;IAC5D,CAAC,AACH,CAEA,SAAU,CACR,IAAI,CAAC,kBAAkB,EACzB,CAEA,cAAe,CACb,IAAI,CAAC,MAAM,CAAG,EAChB,CAEA,sBAAuB,CACrB,KAAK,CAAC,uBACNA,SAAS,mBAAmB,CAAC,QAAS,IAAI,CAAC,YAAY,EACvDA,SAAS,mBAAmB,CAAC,UAAW,IAAI,CAAC,cAAc,CAC7D,CACF,EAEAC,eAAe,MAAM,CAAC,eAAgBP,Y,sFC3GlC,EAA0B,A,SAA4B,KAE1D,EAAwB,IAAI,CAAC,CAAC,EAAO,EAAE,CAAE,+FAAgG,GAAG,EAE5I,MAAe,SAAI,CAAC,EAAwB,QAAQ,GAAG,C"}