@mdn/fred 2.9.0 → 2.9.1

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 (92) hide show
  1. package/.nvmrc +1 -1
  2. package/CHANGELOG.md +14 -0
  3. package/components/blog/utils.js +1 -1
  4. package/components/compat-table/element.js +2 -2
  5. package/components/latest-news/server.js +1 -1
  6. package/components/live-sample-result/element.js +1 -1
  7. package/components/navigation/hook.js +1 -1
  8. package/components/observatory-form/element.js +3 -3
  9. package/components/placement-bottom/element.js +1 -1
  10. package/components/placement-hp-main/element.js +1 -1
  11. package/components/placement-sidebar/element.js +1 -1
  12. package/components/placement-top/element.js +1 -1
  13. package/components/play-console/utils.js +2 -2
  14. package/components/recent-contributions/server.js +1 -1
  15. package/components/recently-visited/index.js +1 -2
  16. package/components/sidebar-filter/sidebar-filterer.js +1 -1
  17. package/components/survey/element.js +3 -1
  18. package/components/translation-banner/server.js +1 -1
  19. package/components/writer-reload/element.js +1 -1
  20. package/out/service-worker.js +1 -1
  21. package/out/service-worker.js.map +1 -1
  22. package/out/static/client/{1672.aef594997e95d362.js → 1672.d66704179bcd69ee.js} +2 -2
  23. package/out/static/client/{1672.aef594997e95d362.js.map → 1672.d66704179bcd69ee.js.map} +1 -1
  24. package/out/static/client/{169.71c8bb45e4bcc0b1.js → 169.ab4227448e206e0d.js} +2 -2
  25. package/out/static/client/169.ab4227448e206e0d.js.map +1 -0
  26. package/out/static/client/{2173.a812d7b499aeb899.js → 2173.a1ead47e2d458f50.js} +2 -2
  27. package/out/static/client/{2173.a812d7b499aeb899.js.map → 2173.a1ead47e2d458f50.js.map} +1 -1
  28. package/out/static/client/3818.8819a9d779da3429.js.map +1 -1
  29. package/out/static/client/{4060.b5edd2eca5be7d2b.js → 4060.687b98e9db2bc493.js} +2 -2
  30. package/out/static/client/{4060.b5edd2eca5be7d2b.js.map → 4060.687b98e9db2bc493.js.map} +1 -1
  31. package/out/static/client/4366.80589277ea3ce36d.js +4 -0
  32. package/out/static/client/4366.80589277ea3ce36d.js.map +1 -0
  33. package/out/static/client/{4759.5c1f42f6042d6457.js → 4759.f58bb90e314ae9c1.js} +2 -2
  34. package/out/static/client/{4759.5c1f42f6042d6457.js.map → 4759.f58bb90e314ae9c1.js.map} +1 -1
  35. package/out/static/client/{5196.a890e2f848933898.js → 5196.635f7f8d7984bead.js} +2 -2
  36. package/out/static/client/{5196.a890e2f848933898.js.map → 5196.635f7f8d7984bead.js.map} +1 -1
  37. package/out/static/client/5562.3cfad67583264655.js +2 -0
  38. package/out/static/client/5562.3cfad67583264655.js.map +1 -0
  39. package/out/static/client/{8067.2861f05611862516.js → 8067.e21835e06833480e.js} +2 -2
  40. package/out/static/client/{8067.2861f05611862516.js.map → 8067.e21835e06833480e.js.map} +1 -1
  41. package/out/static/client/8233.1b63aaa17c6d19cd.js +2 -0
  42. package/out/static/client/8233.1b63aaa17c6d19cd.js.map +1 -0
  43. package/out/static/client/{8401.adf96abc27ac7387.js → 8401.c754c2baea3818c1.js} +7 -7
  44. package/out/static/client/8401.c754c2baea3818c1.js.map +1 -0
  45. package/out/static/client/{9204.30fc8791c7c95e43.js → 9204.6b8c65e2852a256e.js} +2 -2
  46. package/out/static/client/{9204.30fc8791c7c95e43.js.map → 9204.6b8c65e2852a256e.js.map} +1 -1
  47. package/out/static/client/{index.65c98247c2b54259.js → index.f16f7d58914f3c7b.js} +3 -3
  48. package/out/static/client/index.f16f7d58914f3c7b.js.map +1 -0
  49. package/out/static/client/{runtime.9057bb25edbe1b53.js → runtime.000fbab5674b8a62.js} +2 -2
  50. package/out/static/client/{runtime.9057bb25edbe1b53.js.map → runtime.000fbab5674b8a62.js.map} +1 -1
  51. package/out/static/client/stats.json +432 -432
  52. package/out/static/client/watify_bg.9e17afb2a5a4c03f.wasm +0 -0
  53. package/out/static/legacy/7555.d2dbf4d88e2a043e.js +2 -0
  54. package/out/static/legacy/7555.d2dbf4d88e2a043e.js.map +1 -0
  55. package/out/static/legacy/8233.1b63aaa17c6d19cd.js +2 -0
  56. package/out/static/legacy/8233.1b63aaa17c6d19cd.js.map +1 -0
  57. package/out/static/legacy/asset-manifest.json +46 -46
  58. package/out/static/legacy/{index.a19bd45b9f39af81.html → index.0842dd30e67d6569.html} +1 -1
  59. package/out/static/legacy/{index.66c601d9bee5c979.js → index.3076cec4f319e633.js} +4 -4
  60. package/out/static/legacy/{index.66c601d9bee5c979.js.map → index.3076cec4f319e633.js.map} +1 -1
  61. package/out/static/legacy/stats.json +16 -16
  62. package/out/static/legacy/watify_bg.9e17afb2a5a4c03f.wasm +0 -0
  63. package/out/static/legacy/{yari.fabca254fad42bcc.js → yari.c83d87c429dcda1f.js} +4 -4
  64. package/out/static/legacy/{yari.fabca254fad42bcc.js.map → yari.c83d87c429dcda1f.js.map} +1 -1
  65. package/out/static/ssr/8233.js +1 -1
  66. package/out/static/ssr/8233.js.map +1 -1
  67. package/out/static/ssr/index.js +14 -14
  68. package/out/static/ssr/index.js.map +1 -1
  69. package/out/static/ssr/stats.json +4 -4
  70. package/out/static/ssr/watify_bg.9e17afb2a5a4c03f.wasm +0 -0
  71. package/package.json +31 -18
  72. package/utils/mdn-url2breadcrumb.js +1 -1
  73. package/out/static/client/169.71c8bb45e4bcc0b1.js.map +0 -1
  74. package/out/static/client/4366.c631051400430846.js +0 -4
  75. package/out/static/client/4366.c631051400430846.js.map +0 -1
  76. package/out/static/client/5562.6cc078ec59eb355d.js +0 -2
  77. package/out/static/client/5562.6cc078ec59eb355d.js.map +0 -1
  78. package/out/static/client/8233.270639ccdecf7be1.js +0 -2
  79. package/out/static/client/8233.270639ccdecf7be1.js.map +0 -1
  80. package/out/static/client/8401.adf96abc27ac7387.js.map +0 -1
  81. package/out/static/client/index.65c98247c2b54259.js.map +0 -1
  82. package/out/static/client/watify_bg.e3ab88fab7f71ec6.wasm +0 -0
  83. package/out/static/legacy/7555.332ebfc3a6b0147d.js +0 -2
  84. package/out/static/legacy/7555.332ebfc3a6b0147d.js.map +0 -1
  85. package/out/static/legacy/8233.270639ccdecf7be1.js +0 -2
  86. package/out/static/legacy/8233.270639ccdecf7be1.js.map +0 -1
  87. package/out/static/legacy/watify_bg.e3ab88fab7f71ec6.wasm +0 -0
  88. package/out/static/ssr/watify_bg.e3ab88fab7f71ec6.wasm +0 -0
  89. /package/out/static/client/{8401.adf96abc27ac7387.js.LICENSE.txt → 8401.c754c2baea3818c1.js.LICENSE.txt} +0 -0
  90. /package/out/static/client/{index.65c98247c2b54259.js.LICENSE.txt → index.f16f7d58914f3c7b.js.LICENSE.txt} +0 -0
  91. /package/out/static/legacy/{index.66c601d9bee5c979.js.LICENSE.txt → index.3076cec4f319e633.js.LICENSE.txt} +0 -0
  92. /package/out/static/legacy/{yari.fabca254fad42bcc.js.LICENSE.txt → yari.c83d87c429dcda1f.js.LICENSE.txt} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"8067.2861f05611862516.js","sources":["webpack://@mdn/fred/./components/compat-table/element.css","webpack://@mdn/fred/./components/compat-table/icons.css","webpack://@mdn/fred/./components/compat-table/index-common.css","webpack://@mdn/fred/./components/compat-table/index-desktop-md.css","webpack://@mdn/fred/./components/compat-table/index-desktop-xl.css","webpack://@mdn/fred/./components/compat-table/index-desktop.css","webpack://@mdn/fred/./components/compat-table/index-global.css","webpack://@mdn/fred/./components/compat-table/index-mobile.css","webpack://@mdn/fred/./components/compat-table/index-trailer.css","webpack://@mdn/fred/./components/compat-table/constants.js","webpack://@mdn/fred/./components/compat-table/feature-row.js","webpack://@mdn/fred/./components/compat-table/element.js","webpack://@mdn/fred/./components/compat-table/utils.js","webpack://@mdn/fred/./components/viewed-controller/viewed-controller.js"],"sourcesContent":["import { css } from \"lit\";\n// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_0___ from \"-!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../build/loaders/fix-light-dark.js!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!./index-global.css\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_1___ from \"-!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../build/loaders/fix-light-dark.js!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!./icons.css\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_2___ from \"-!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../build/loaders/fix-light-dark.js!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!./index-common.css\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_3___ from \"-!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../build/loaders/fix-light-dark.js!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!./index-mobile.css\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_4___ from \"-!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../build/loaders/fix-light-dark.js!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!./index-desktop.css\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_5___ from \"-!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../build/loaders/fix-light-dark.js!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!./index-desktop-md.css\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_6___ from \"-!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../build/loaders/fix-light-dark.js!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!./index-desktop-xl.css\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_7___ from \"-!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../build/loaders/fix-light-dark.js!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!./index-trailer.css\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_1___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_2___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_3___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_4___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_5___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_6___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_7___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ``, \"\"]);\n// Exports\nexport default css([___CSS_LOADER_EXPORT___.toString()]);\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../icon/monitor.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"../icon/smartphone.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(\"../icon/server.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_3___ = new URL(\"../icon/browser/bun.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_4___ = new URL(\"../icon/browser/chrome.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_5___ = new URL(\"../icon/browser/deno.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_6___ = new URL(\"../icon/browser/firefox.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_7___ = new URL(\"../icon/browser/edge.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_8___ = new URL(\"../icon/browser/nodejs.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_9___ = new URL(\"../icon/browser/opera.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_10___ = new URL(\"../icon/browser/safari.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_11___ = new URL(\"../icon/browser/samsung-internet.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_12___ = new URL(\"../icon/browser/webview.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_13___ = new URL(\"../icon/circle-x.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_14___ = new URL(\"../icon/circle-slash.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_15___ = new URL(\"../icon/check.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_16___ = new URL(\"../icon/circle-check.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_17___ = new URL(\"../icon/flask-conical.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_18___ = new URL(\"../icon/trash-2.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_19___ = new URL(\"../icon/triangle-alert.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_20___ = new URL(\"../icon/asterisk.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_21___ = new URL(\"../icon/circle-help.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_22___ = new URL(\"../icon/mdn-prefix.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_23___ = new URL(\"../icon/git-fork.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_24___ = new URL(\"../icon/flag.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_25___ = new URL(\"../icon/ellipsis.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___);\nvar ___CSS_LOADER_URL_REPLACEMENT_7___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_7___);\nvar ___CSS_LOADER_URL_REPLACEMENT_8___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_8___);\nvar ___CSS_LOADER_URL_REPLACEMENT_9___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_9___);\nvar ___CSS_LOADER_URL_REPLACEMENT_10___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_10___);\nvar ___CSS_LOADER_URL_REPLACEMENT_11___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_11___);\nvar ___CSS_LOADER_URL_REPLACEMENT_12___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_12___);\nvar ___CSS_LOADER_URL_REPLACEMENT_13___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_13___);\nvar ___CSS_LOADER_URL_REPLACEMENT_14___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_14___);\nvar ___CSS_LOADER_URL_REPLACEMENT_15___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_15___);\nvar ___CSS_LOADER_URL_REPLACEMENT_16___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_16___);\nvar ___CSS_LOADER_URL_REPLACEMENT_17___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_17___);\nvar ___CSS_LOADER_URL_REPLACEMENT_18___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_18___);\nvar ___CSS_LOADER_URL_REPLACEMENT_19___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_19___);\nvar ___CSS_LOADER_URL_REPLACEMENT_20___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_20___);\nvar ___CSS_LOADER_URL_REPLACEMENT_21___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_21___);\nvar ___CSS_LOADER_URL_REPLACEMENT_22___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_22___);\nvar ___CSS_LOADER_URL_REPLACEMENT_23___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_23___);\nvar ___CSS_LOADER_URL_REPLACEMENT_24___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_24___);\nvar ___CSS_LOADER_URL_REPLACEMENT_25___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_25___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.icon{--size:var(--icon-size,1rem);background-color:var(--color-border-secondary);display:inline-block;flex-shrink:0;height:var(--size);mask-size:cover;vertical-align:middle;width:var(--size)}.icon.icon-desktop{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___})}.icon.icon-mobile{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_1___})}.icon.icon-server{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_2___})}.icon.icon-bun{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_3___})}.icon.icon-chrome{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_4___})}.icon.icon-deno{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_5___})}.icon.icon-firefox{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_6___})}.icon.icon-edge{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_7___})}.icon.icon-nodejs{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_8___})}.icon.icon-opera{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_9___})}.icon.icon-safari{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_10___})}.icon.icon-samsunginternet{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_11___})}.icon.icon-webview{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_12___})}.icon.icon-no{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_13___})}.icon.icon-partial{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_14___})}.icon.icon-yes{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_15___})}.icon.icon-yes-circle{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_16___})}.icon.icon-experimental{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_17___})}.icon.icon-deprecated{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_18___})}.icon.icon-nonstandard{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_19___})}.icon.icon-footnote{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_20___})}.icon.icon-unknown{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_21___})}.icon.icon-prefix{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_22___})}.icon.icon-altname{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_23___})}.icon.icon-disabled{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_24___})}.icon.icon-more{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_25___})}.icon.icon-preview{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_17___})}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../icon/circle-x.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"../icon/circle-slash.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(\"../icon/circle-check.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_3___ = new URL(\"../icon/circle.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___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.table-container{overflow-x:hidden}table{display:grid;grid-auto-flow:row dense}:is(table thead) tr{display:contents}:is(:is(table thead) tr) td,:is(:is(table thead) tr) th{display:grid;grid-template-columns:subgrid}:is(:is(table tbody) tr) td,:is(:is(table tbody) tr) th,:is(table tbody) tr,table tbody{display:contents}:is(:is(:is(table tbody) tr) th,:is(:is(table tbody) tr) td) button{display:grid;grid-template-columns:subgrid}:is(:is(:is(table tbody) tr) th,:is(:is(table tbody) tr) td) .timeline{display:grid;grid-column:1/-1;grid-template-columns:subgrid}.bc-on-github{font-size:var(--font-size-small)}.bc-table{border:1px solid var(--color-border-primary);border-collapse:initial;border-radius:.25rem;border-spacing:0;margin:0;overflow-x:auto;width:100%}.bc-table td,.bc-table th{border-width:1px;border-bottom:1px solid var(--color-border-primary);border-left:1px solid var(--color-border-primary);border-right:0 solid var(--color-border-primary);border-top:0 solid var(--color-border-primary);font-weight:500;padding:.4rem}.bc-table td,.bc-table th,:is(.bc-table td,.bc-table th) code{font-size:var(--font-size-small)}.bc-table th{background:var(--color-background-primary);padding:.4rem;vertical-align:bottom}.bc-table thead{line-height:var(--font-line-ui);white-space:nowrap}:is(.bc-table tbody) tr{height:3rem}@media (width > 426px){:is(:is(.bc-table tbody) tr):last-child td,:is(:is(.bc-table tbody) tr):last-child th{border-bottom-width:0}}:is(:is(.bc-table tbody) tr) th{border-left-width:0;vertical-align:middle}:is(.bc-table tbody) .bc-support{vertical-align:top}:is(:is(.bc-table tbody) .bc-support) button{cursor:pointer;width:100%}.bc-supports-no:is(:is(.bc-table tbody) .bc-support)>button>span{color:var(--color-text-red)}.bc-supports-partial:is(:is(.bc-table tbody) .bc-support)>button>span{color:var(--color-text-yellow)}.bc-supports-preview:is(:is(.bc-table tbody) .bc-support)>button>span{color:var(--color-text-blue)}.bc-supports-yes:is(:is(.bc-table tbody) .bc-support)>button>span{color:var(--color-text-green)}.bc-table .bc-supports{margin-bottom:1rem}:is(.bc-table .bc-supports) .icon-wrap{background:var(--color-background-page);padding-bottom:2px}:is(.bc-table .bc-supports.bc-supports-removed-partial) .bcd-cell-text-copy{color:var(--color-text-yellow)}:is(.bc-table .icon-wrap) .bc-support-level{border:0!important;clip-path:inset(50%)!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:1px!important}:is(.bc-table .bc-support)>button>.icon-wrap{display:block}:is(.bc-table .bc-support) .icon.icon-removed-partial{background-color:var(--color-text-red);mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___})}:is(.bc-table .bc-support) .timeline .icon.icon-removed-partial{background-color:var(--color-text-yellow);mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_1___})}:is(.bc-table .bc-support.bc-supports-removed-partial) .bcd-cell-text-copy{color:var(--color-text-red)}.bc-table .bc-feature{align-items:center;border:none;border-left:max(0px,calc((var(--compat-feature-depth, 1) - 1)*8px - 1px)) solid var(--color-border-primary);display:flex;text-align:left;width:100%}:is(.bc-table .bc-feature)>*{border:none!important;flex-basis:max-content}.bc-head-txt-label{line-height:var(--font-line-ui);text-orientation:sideways;transform:rotate(180deg);white-space:nowrap;writing-mode:vertical-rl}.bc-support{text-align:center;vertical-align:middle}.bc-level-no{background-color:var(--color-text-red)}.bc-level-partial{background-color:var(--color-text-yellow)}.bc-level-preview{background-color:var(--color-text-blue)}.bc-legend-items-container{display:flex;flex-wrap:wrap;font-size:var(--font-size-small);gap:1.5rem;margin-bottom:2rem}.bc-legend-tip{font-size:var(--font-size-small);font-style:italic;font-variation-settings:\"slnt\" -10;margin-bottom:1rem;margin-top:0}@media print{.bc-legend-tip{display:none!important}}.bc-legend-item{align-items:center;display:flex;gap:.5rem}.bc-legend-item-dt{display:flex}.bc-legend-item-dt .icon{background-color:var(--color-border-secondary)}.bc-platforms th{align-items:center;display:flex;justify-content:center}.bc-platforms td{border:none}.bc-browsers th{align-items:center;display:flex;flex-direction:column;gap:.25rem;justify-content:end;vertical-align:bottom}.bc-browsers td{border-width:0 0 1px}.bc-notes-list{border-left:1px solid var(--color-border-primary);grid-column:2/-1;margin:0;text-align:left}.bc-notes-list .bc-branch{padding:.75rem 1rem;position:relative}.bc-notes-list .bc-branch+.bc-branch{border-top:1px solid var(--color-border-primary)}.bc-notes-list .bc-branch-heading{align-items:center;color:var(--color-text-primary);display:flex;font-weight:var(--font-body-strong-weight);gap:.375rem;margin-bottom:.75rem}.bc-notes-list{--compat-timeline-cap:4px}.bc-notes-list .bc-branch-items{position:relative}:is(.bc-notes-list .bc-branch-items):before{background:var(--color-border-primary);bottom:var(--compat-timeline-cap);content:\"\";left:7px;margin-top:.25rem;position:absolute;top:0;width:3px;z-index:-1}.bc-notes-list .bc-branch-items .bc-notes-wrapper:last-child>:last-child{position:relative}:is(.bc-notes-list .bc-branch-items .bc-notes-wrapper:last-child>:last-child):before{background:var(--color-background-page);bottom:0;content:\"\";left:7px;position:absolute;top:var(--compat-timeline-cap);width:3px;z-index:-1}.bc-notes-list .bc-level-yes.icon.icon-yes{background-color:var(--color-text-green);mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_2___})}.bc-notes-list .bc-supports-dd{margin-bottom:1rem;padding-left:1.5rem;text-indent:-1.5rem}:is(.bc-notes-list .bc-supports-dd):last-child{margin-bottom:0}:is(.bc-notes-list .bc-supports-dd) .icon{background-color:var(--color-text-secondary);mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_3___})}:is(.bc-notes-list .bc-supports-dd) .icon-wrap{background-color:var(--color-background-page);padding-bottom:2px}.bc-notes-list .bc-notes-end{margin-bottom:2rem}.bc-notes-list .bc-version-label{display:inline}.bc-notes-list abbr{margin-right:4px;-webkit-text-decoration:none;text-decoration:none}.bc-notes-wrapper{color:var(--color-border-secondary);margin-bottom:1rem}.bc-notes-wrapper:last-child{margin-bottom:0}.only-icon span{border:0!important;clip-path:inset(50%)!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:1px!important}.bc-table-row-header{padding:.25em;text-align:left;width:100%}.bc-table-row-header code{overflow:hidden}.bc-table-row-header .bc-icons{display:inline-flex;gap:.5ch;margin-left:.5ch;vertical-align:text-top}:is(.bc-table-row-header .bc-icons) .icon{background-color:var(--color-text-secondary)}.bc-github-link{font-size:var(--font-size-small)}:is(.main-page-content .bc-legend) dd,:is(.main-page-content .bc-legend) dt{margin-bottom:0;margin-left:0;margin-top:0}.main-page-content .bc-supports-dd{margin:0}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@media (width > 769px){.bc-on-github{text-align:right}.bc-table{grid-template-columns:minmax(25%,max-content) repeat(var(--compat-browser-count),calc(75%/var(--compat-browser-count)))}.icon{--size:calc(1rem + 1px)}}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@media (width > 1200px){.bc-table{grid-template-columns:minmax(33%,max-content) repeat(var(--compat-browser-count),calc(67%/var(--compat-browser-count)))}}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@media (width > 426px){.bc-table{grid-template-columns:minmax(20vw,min-content) repeat(var(--compat-browser-count),auto)}.bc-table thead{display:contents}:is(:is(.bc-table thead) .bc-platforms) th{vertical-align:revert}.bc-table tbody{--border:1px solid var(--color-border-primary)}:is(:is(.bc-table tbody) tr):not(:first-child) .bc-feature,:is(:is(:is(.bc-table tbody) tr):not(:first-child) th,:is(:is(.bc-table tbody) tr):not(:first-child) td)>*{border-top:var(--border)}:is(:is(:is(.bc-table tbody) tr) th:not(:first-child),:is(:is(.bc-table tbody) tr) td:not(:first-child))>*{border-left:var(--border)}.bc-table td,.bc-table th{background:inherit;padding:.25rem}.bc-table td.bc-support{padding:0}:is(.bc-table td.bc-support)>button{padding:.25rem}.bc-table button[aria-expanded=false]~.timeline{display:none}.bc-table .timeline{border-left:none!important;border-top:var(--border)}:is(.bc-table .bc-has-history)>button[aria-expanded=true]{--padding-bottom-offset:-2px;border-bottom:2px solid var(--color-border-primary)}:is(.bc-table .bc-has-history)>button:hover{background:var(--color-background-secondary)}.table-container-inner{position:relative}.table-container-inner:after{bottom:0;content:\"\";height:10px;position:absolute;right:0;width:10px}.bc-support .bc-support-level,.bcd-cell-text-wrapper .bc-browser-name,.bcd-cell-text-wrapper .bc-support-level{display:none}}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_0___ from \"-!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../build/loaders/fix-light-dark.js!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!../external-link/global.css\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_1___ from \"-!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../build/loaders/fix-light-dark.js!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!../visually-hidden/global.css\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_1___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `*{box-sizing:border-box;overflow-wrap:break-word}blockquote,body,dd,dl,figure,h1,h2,h3,h4,p{margin:0}a:link{color:var(--color-link-normal)}a:visited{color:var(--color-link-visited)}a:hover{-webkit-text-decoration:none;text-decoration:none}code{background-color:var(--color-background-secondary);padding:.125rem .25rem;width:fit-content}button{appearance:none;background:none;border:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@media (width <= 426px){.bc-table{grid-template-columns:auto}.bc-table thead{display:none}:is(.bc-table tr) td.bc-support{border:none;border-top:1px solid var(--color-border-primary);display:block}:is(:is(.bc-table tr) td.bc-support):last-child{border-bottom:1px solid var(--color-border-primary)}.bc-table .timeline{margin-left:.25rem;margin-right:.25rem}.bc-table .bc-notes-list{border-left:none;grid-column:1/-1}.bc-table .bc-branch{padding-left:0;padding-right:0}.bc-table tr:not(:first-of-type) .bc-feature{border-top:2px solid var(--color-border-primary)}.bc-table .bc-feature,.bc-table .bc-support>button{align-content:center;display:flex;flex-wrap:wrap;gap:.5rem}.bc-on-github a{white-space:nowrap}.table-container{overflow-x:auto}}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.bcd-cell-text-wrapper{display:flex;flex-direction:row;gap:.5rem}@media (width > 426px){.bcd-cell-text-wrapper{align-items:center;flex-direction:column}}.bcd-timeline-cell-text-wrapper{display:flex;flex-direction:row;gap:.25rem}.bcd-cell-text-copy{color:var(--color-text-primary)}.bc-supports-yes .bcd-cell-text-copy{color:var(--color-text-green)}.bc-supports-partial .bcd-cell-text-copy{color:var(--color-text-yellow)}.bc-supports-no .bcd-cell-text-copy{color:var(--color-text-red)}.bcd-cell-icons{display:flex;gap:.5rem}@media (width > 426px){.bcd-cell-icons{display:block}.bc-table td.bc-support>button{padding-bottom:calc(.5rem + var(--padding-bottom-offset, 0px));padding-left:.25rem;padding-right:.25rem;padding-top:.5rem}}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// [libs/constants]\nexport const DEFAULT_LOCALE = \"en-US\";\n\nexport const ISSUE_METADATA_TEMPLATE = `\n<!-- Do not make changes below this line -->\n<details>\n<summary>MDN page report details</summary>\n\n* Query: \\`$QUERY_ID\\`\n* Report started: $DATE\n\n</details>\n`;\n","import { html } from \"lit\";\n\nimport { getCurrentSupport, versionIsPreview } from \"./utils.js\";\n\n/**\n * Returns a CSS class name based on support data and the browser.\n * @param {import(\"@compat\").SupportStatementExtended|undefined} support - The extended support statement.\n * @param {import(\"@bcd\").BrowserStatement} browser - The browser statement.\n * @returns {import(\"@compat\").SupportClassName}\n */\nexport function getSupportClassName(support, browser) {\n if (!support) {\n return \"unknown\";\n }\n\n const currentSupport = getCurrentSupport(support);\n if (!currentSupport) {\n return \"unknown\";\n }\n const { flags, version_added, version_removed, partial_implementation } =\n currentSupport;\n\n /** @type {import(\"@compat\").SupportClassName} */\n let className;\n if (version_added === null) {\n className = \"unknown\";\n } else if (versionIsPreview(version_added, browser)) {\n className = \"preview\";\n } else if (version_added) {\n className = \"yes\";\n if (version_removed || (flags && flags.length > 0)) {\n className = \"no\";\n }\n } else {\n className = \"no\";\n }\n if (partial_implementation) {\n className = version_removed ? \"removed-partial\" : \"partial\";\n }\n\n return className;\n}\n\n/**\n * Returns a label string derived from a version value.\n * @param {string|boolean|null|undefined} version - The version value.\n * @param {import(\"@bcd\").BrowserStatement} browser - The browser statement.\n * @returns {string} The resulting label.\n */\nexport function labelFromString(version, browser) {\n if (typeof version !== \"string\") {\n return \"?\";\n }\n if (version === \"preview\") {\n return browser.preview_name ?? \"Preview\";\n }\n // Treat BCD ranges as exact versions to avoid confusion for the reader\n // See https://github.com/mdn/yari/issues/3238\n if (version.startsWith(\"≤\")) {\n version = version.slice(1);\n }\n // New: Omit trailing \".0\".\n version = version.replaceAll(/(\\.0)+$/g, \"\");\n\n return version;\n}\n\n/**\n * Generates a version label from added and removed support data.\n * @param {string|boolean|null|undefined} added - The added version.\n * @param {string|boolean|null|undefined} removed - The removed version.\n * @param {import(\"@bcd\").BrowserStatement} browser - The browser statement.\n * @returns {import(\"lit\").TemplateResult} A lit-html template result representing the version label.\n */\nexport function versionLabelFromSupport(added, removed, browser) {\n if (typeof removed !== \"string\") {\n return html`${labelFromString(added, browser)}`;\n }\n return html`${labelFromString(\n added,\n browser,\n )}&#8202;&ndash;&#8202;${labelFromString(removed, browser)}`;\n}\n\n/**\n * Retrieves the browser release date from a support statement.\n * @param {import(\"@compat\").SupportStatementExtended|undefined} support - The extended support statement.\n * @returns {string|undefined} The release date if available.\n */\nexport function getSupportBrowserReleaseDate(support) {\n if (!support) {\n return;\n }\n\n return getCurrentSupport(support)?.release_date;\n}\n","import { LitElement, html, nothing } from \"lit\";\nimport { ifDefined } from \"lit/directives/if-defined.js\";\nimport { createRef, ref } from \"lit/directives/ref.js\";\nimport { unsafeHTML } from \"lit/directives/unsafe-html.js\";\n\nimport { L10nMixin } from \"../../l10n/mixin.js\";\nimport { gleanClick } from \"../../utils/glean.js\";\nimport { ViewedController } from \"../viewed-controller/viewed-controller.js\";\n\nimport { DEFAULT_LOCALE, ISSUE_METADATA_TEMPLATE } from \"./constants.js\";\nimport styles from \"./element.css?lit\";\nimport {\n getSupportBrowserReleaseDate,\n getSupportClassName,\n labelFromString,\n versionLabelFromSupport,\n} from \"./feature-row.js\";\nimport {\n SHOW_BROWSERS,\n asList,\n bugURLToString,\n getCurrentSupport,\n getFirst,\n groupSupportBranches,\n hasMore,\n hasNoteworthyNotes,\n isFullySupportedWithoutLimitation,\n isNotSupportedAtAll,\n listFeatures,\n versionIsPreview,\n} from \"./utils.js\";\n\n/** @type {import(\"@compat\").IconName[]} */\nconst ICON_NAMES = [\n \"yes\",\n \"partial\",\n \"preview\",\n \"no\",\n \"unknown\",\n \"experimental\",\n \"nonstandard\",\n \"deprecated\",\n \"footnote\",\n \"disabled\",\n \"altname\",\n \"prefix\",\n \"more\",\n];\n\n/**\n * @param {import(\"@bcd\").BrowserName} browser\n * @returns {string}\n */\nfunction browserToIconName(browser) {\n if (browser.startsWith(\"firefox\")) {\n return \"firefox\";\n } else if (browser === \"webview_android\") {\n return \"webview\";\n } else if (browser === \"webview_ios\") {\n return \"safari\";\n } else {\n return browser.split(\"_\", 1)[0] ?? \"\";\n }\n}\n\nexport class MDNCompatTable extends L10nMixin(LitElement) {\n static get properties() {\n return {\n query: {},\n locale: {},\n data: {},\n browserInfo: { attribute: \"browserinfo\" },\n _pathname: { state: true },\n _platforms: { state: true },\n _browsers: { state: true },\n _showTimelineId: { state: true },\n };\n }\n\n static styles = styles;\n\n /** @type {import(\"lit/directives/ref.js\").Ref<HTMLElement>} */\n _ref = createRef();\n\n constructor() {\n super();\n this.query = \"\";\n /** @type {import(\"@bcd\").Identifier} */\n this.data = {};\n /** @type {Partial<import(\"@bcd\").Browsers>} */\n this.browserInfo = {};\n this.locale = \"\";\n this._pathname = \"\";\n /** @type {string[]} */\n this._platforms = [];\n /** @type {import(\"@bcd\").BrowserName[]} */\n this._browsers = [];\n /** @type {string|undefined} */\n this._showTimelineId = undefined;\n new ViewedController(this, this._ref, () => {\n gleanClick(`bcd: view -> ${this.query}`);\n });\n }\n\n get _breadcrumbs() {\n return this.query.split(\".\");\n }\n\n get _category() {\n return this._breadcrumbs[0] ?? \"\";\n }\n\n get _name() {\n return this._breadcrumbs.at(-1) ?? \"\";\n }\n\n /**\n * Gets the active legend items based on browser compatibility data.\n * @param {import(\"@bcd\").Identifier} compat - The compatibility data identifier.\n * @param {string} name - The name of the feature.\n * @param {Partial<import(\"@bcd\").Browsers>} browserInfo - Information about browsers.\n * @param {import(\"@bcd\").BrowserName[]} browsers - The list of displayed browsers.\n * @returns {import(\"@compat\").IconName[]} An array of legend keys.\n */\n _getActiveLegendItems(compat, name, browserInfo, browsers) {\n /** @type {Set<import(\"@compat\").IconName>} */\n const legendItems = new Set();\n\n for (const feature of listFeatures(compat, \"\", name)) {\n const { status } = feature.compat;\n\n if (status) {\n if (status.experimental) {\n legendItems.add(\"experimental\");\n }\n if (status.deprecated) {\n legendItems.add(\"deprecated\");\n }\n if (!status.standard_track) {\n legendItems.add(\"nonstandard\");\n }\n }\n\n for (const browser of browsers) {\n const browserSupport = feature.compat.support[browser] ?? {\n version_added: false,\n };\n\n if (!SHOW_BROWSERS.includes(browser)) {\n continue;\n }\n\n const firstSupportItem = getFirst(browserSupport);\n if (firstSupportItem && hasNoteworthyNotes(firstSupportItem)) {\n legendItems.add(\"footnote\");\n }\n\n for (const versionSupport of asList(browserSupport)) {\n if (versionSupport.version_added) {\n if (versionSupport.flags && versionSupport.flags.length > 0) {\n legendItems.add(\"no\");\n } else if (\n browserInfo[browser] &&\n versionIsPreview(\n versionSupport.version_added,\n browserInfo[browser],\n )\n ) {\n legendItems.add(\"preview\");\n } else {\n legendItems.add(\"yes\");\n }\n } else if (versionSupport.version_added == undefined) {\n legendItems.add(\"unknown\");\n } else {\n legendItems.add(\"no\");\n }\n\n if (versionSupport.partial_implementation) {\n legendItems.add(\"partial\");\n }\n if (versionSupport.prefix) {\n legendItems.add(\"prefix\");\n }\n if (versionSupport.alternative_name) {\n legendItems.add(\"altname\");\n }\n if (versionSupport.flags) {\n legendItems.add(\"disabled\");\n }\n }\n\n if (hasMore(browserSupport)) {\n legendItems.add(\"more\");\n }\n }\n }\n\n return ICON_NAMES.filter((key) => legendItems.has(key));\n }\n\n connectedCallback() {\n super.connectedCallback();\n this._pathname = globalThis.location.pathname;\n [this._platforms, this._browsers] = gatherPlatformsAndBrowsers(\n this._category,\n this.data,\n this.browserInfo,\n );\n }\n\n get _issueUrl() {\n const url = \"https://github.com/mdn/browser-compat-data/issues/new\";\n const sp = new URLSearchParams();\n const metadata = ISSUE_METADATA_TEMPLATE.replaceAll(\n \"$DATE\",\n new Date().toISOString(),\n )\n .replaceAll(\"$QUERY_ID\", this.query)\n .trim();\n sp.set(\"mdn-url\", `https://developer.mozilla.org${this._pathname}`);\n sp.set(\"metadata\", metadata);\n sp.set(\"title\", `${this.query} - <SUMMARIZE THE PROBLEM>`);\n sp.set(\"template\", \"data-problem.yml\");\n\n return `${url}?${sp.toString()}`;\n }\n\n _renderIssueLink() {\n const source_file = this.data.__compat?.source_file;\n return html`<div class=\"bc-on-github\">\n <a\n class=\"bc-github-link external external-icon\"\n href=${this._issueUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n title=${this.l10n(\n \"compat-link-report-issue-title\",\n )`Report an issue with this compatibility data`}\n >\n ${this.l10n(\n \"compat-link-report-issue\",\n )`Report problems with this compatibility data`}</a\n >${\n source_file\n ? html` •\n <a\n class=\"bc-github-link external external-icon\"\n href=${`https://github.com/mdn/browser-compat-data/tree/main/${source_file}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n title=${this.l10n.raw({\n id: \"compat-link-source-title\",\n args: {\n filename: source_file,\n },\n })}\n >\n ${this.l10n(\"compat-link-source\")`View data on GitHub`}\n </a>`\n : undefined\n }\n </div>`;\n }\n\n _renderTable() {\n return html`<figure ${ref(this._ref)} class=\"table-container\">\n <figure class=\"table-container-inner\">\n ${this._renderIssueLink()}\n <table\n class=\"bc-table bc-table-web\"\n style=\"--compat-browser-count: ${Object.keys(this._browsers).length}\"\n >\n ${this._renderTableHeader()} ${this._renderTableBody()}\n </table>\n </figure>\n </figure>`;\n }\n\n _renderTableHeader() {\n return html`<thead>\n ${this._renderPlatformHeaders()} ${this._renderBrowserHeaders()}\n </thead>`;\n }\n\n _renderPlatformHeaders() {\n const platformsWithBrowsers = this._platforms.map((platform) => ({\n platform,\n browsers: this._browsers.filter(\n (browser) => this.browserInfo[browser]?.type === platform,\n ),\n }));\n\n const grid = platformsWithBrowsers.map(({ browsers }) => browsers.length);\n\n const platformCells = platformsWithBrowsers.map(\n ({ platform, browsers }, index) => {\n // Get the intersection of browsers in the `browsers` array and the\n // `PLATFORM_BROWSERS[platform]`.\n const browserCount = browsers.length;\n const cellClass = `bc-platform bc-platform-${platform}`;\n const iconClass = `icon icon-${platform}`;\n\n const columnStart =\n 2 + grid.slice(0, index).reduce((acc, x) => acc + x, 0);\n const columnEnd = columnStart + browserCount;\n return html`<th\n class=${cellClass}\n colspan=${browserCount}\n title=${platform}\n style=\"grid-column: ${columnStart} / ${columnEnd}\"\n >\n <span class=${iconClass}></span>\n <span class=\"visually-hidden\">${platform}</span>\n </th>`;\n },\n );\n\n return html`<tr class=\"bc-platforms\">\n <td></td>\n ${platformCells}\n </tr>`;\n }\n\n _renderBrowserHeaders() {\n // <BrowserHeaders>\n const browserCells = this._browsers.map(\n (browser) =>\n html`<th class=${`bc-browser bc-browser-${browser}`}>\n <div class=${`bc-head-txt-label bc-head-icon-${browser}`}>\n ${this.browserInfo[browser]?.name}\n </div>\n <div\n class=${`bc-head-icon-symbol icon icon-${browserToIconName(\n browser,\n )}`}\n ></div>\n </th>`,\n );\n\n return html`<tr class=\"bc-browsers\">\n <td></td>\n ${browserCells}\n </tr>`;\n }\n\n _renderTableBody() {\n // <FeatureListAccordion>\n const { data, _browsers: browsers, browserInfo, locale } = this;\n let features = listFeatures(data, \"\", this._name);\n\n const MAX_FEATURES = 100;\n\n // If there are too many features, hide nested features.\n if (features.length > MAX_FEATURES) {\n features = features.filter(({ depth }) => depth < 2);\n }\n\n // If there are still too many features, hide non-standard features.\n if (features.length > MAX_FEATURES) {\n features = features.filter(\n ({ compat: { status } }) => status?.standard_track,\n );\n }\n\n // If there are still too many features, hide deprecated features.\n if (features.length > MAX_FEATURES) {\n features = features.filter(\n ({ compat: { status } }) => !status?.deprecated,\n );\n }\n\n // If there are still too many features, hide experimental features.\n if (features.length > MAX_FEATURES) {\n features = features.filter(\n ({ compat: { status } }) => !status?.experimental,\n );\n }\n\n // At this point, we did all we can to reduce the number of features shown.\n if (features.length > MAX_FEATURES) {\n features = features.slice(0, MAX_FEATURES);\n }\n\n const featureRows = features.map((feature, featureIndex) => {\n // <FeatureRow>\n const { name, compat, depth } = feature;\n\n const title = compat.description\n ? html`<span>${unsafeHTML(compat.description)}</span>`\n : html`<code>${name}</code>`;\n\n let titleNode;\n const titleContent = html`${title}${\n compat.status && this._renderStatusIcons(compat.status)\n }`;\n if (compat.mdn_url && depth > 0) {\n const href = compat.mdn_url.replace(\n `/${DEFAULT_LOCALE}/docs`,\n `/${locale}/docs`,\n );\n titleNode = html`<a\n href=${href}\n class=\"bc-table-row-header\"\n data-glean-id=${`bcd: link -> ${href}`}\n >\n ${titleContent}\n </a>`;\n } else {\n titleNode = html`<div class=\"bc-table-row-header\">\n ${titleContent}\n </div>`;\n }\n\n const browserCells = browsers.map((browserName, browserIndex) => {\n // <CompatCell>\n const browser = browserInfo[browserName];\n if (!browser) {\n return nothing;\n }\n const support = compat.support[browserName] ?? {\n version_added: false,\n };\n\n const timelineId = `timeline-${featureIndex}-${browserIndex}`;\n const supportClassName = getSupportClassName(support, browser);\n const notes = this._renderNotes(browser, support);\n\n const hasHistory = notes.length > 0;\n const isExpanded = hasHistory && this._showTimelineId == timelineId;\n\n const handleClick = () => {\n if (isExpanded) {\n this._showTimelineId = undefined;\n } else if (hasHistory) {\n this._showTimelineId = timelineId;\n }\n };\n\n return html`<td\n class=${`bc-support bc-browser-${browserName} bc-supports-${supportClassName} ${\n hasHistory ? \"bc-has-history\" : \"\"\n }`}\n >\n <button\n type=\"button\"\n aria-controls=${ifDefined(hasHistory ? timelineId : undefined)}\n aria-expanded=${ifDefined(hasHistory ? isExpanded : undefined)}\n title=${ifDefined(hasHistory && \"Toggle history\")}\n @click=${handleClick}\n >\n ${this._renderCellText(support, browser)}\n </button>\n ${\n hasHistory\n ? html`<div id=${timelineId} class=\"timeline\" tabindex=\"0\">\n ${\n isExpanded\n ? html`<div class=\"bc-notes-list\">${notes}</div>`\n : nothing\n }\n </div>`\n : nothing\n }\n </td>`;\n });\n\n return html`<tr>\n <th\n class=\"bc-feature\"\n style=${`--compat-feature-depth: ${depth}`}\n scope=\"row\"\n >\n ${titleNode}\n </th>\n ${browserCells}\n </tr>`;\n });\n\n return html`<tbody>\n ${featureRows}\n </tbody>`;\n }\n\n /**\n * @param {import(\"@bcd\").SupportStatement} support\n * @param {{ omitAliasModifiers?: boolean }} [options] - When `omitAliasModifiers` is\n * true, the `prefix` and `altname` icons are skipped (because a branch\n * heading already conveys the alias modifier).\n */\n _renderCellIcons(support, { omitAliasModifiers = false } = {}) {\n const supportItem = getCurrentSupport(support);\n if (!supportItem) {\n return;\n }\n\n const icons = [\n !omitAliasModifiers && supportItem.prefix && this._renderIcon(\"prefix\"),\n hasNoteworthyNotes(supportItem) && this._renderIcon(\"footnote\"),\n !omitAliasModifiers &&\n supportItem.alternative_name &&\n this._renderIcon(\"altname\"),\n supportItem.flags && this._renderIcon(\"disabled\"),\n hasMore(support) && this._renderIcon(\"more\"),\n ].filter(Boolean);\n\n return icons.length > 0\n ? html`<div class=\"bc-icons\">${icons}</div>`\n : undefined;\n }\n\n /**\n * @param {import(\"@compat\").IconName} name\n * @returns {import(\"@lit\").TemplateResult}\n */\n _renderIcon(name) {\n const title = this._getLegendLabel(name);\n\n return html`\n <span class=\"icon-wrap\">\n <abbr class=\"only-icon\" title=${ifDefined(title)}>\n <span>${name}</span>\n <i class=${`icon icon-${name}`}></i>\n </abbr>\n </span>\n `;\n }\n\n /**\n * @param {import(\"@compat\").IconName} name\n */\n _getLegendLabel(name) {\n return {\n yes: () => this.l10n(\"compat-legend-yes\"),\n partial: () => this.l10n(\"compat-legend-partial\"),\n preview: () => this.l10n(\"compat-legend-preview\"),\n no: () => this.l10n(\"compat-legend-no\"),\n unknown: () => this.l10n(\"compat-legend-unknown\"),\n experimental: () => this.l10n(\"compat-legend-experimental\"),\n nonstandard: () => this.l10n(\"compat-legend-nonstandard\"),\n deprecated: () => this.l10n(\"compat-legend-deprecated\"),\n footnote: () => this.l10n(\"compat-legend-footnote\"),\n disabled: () => this.l10n(\"compat-legend-disabled\"),\n altname: () => this.l10n(\"compat-legend-altname\"),\n prefix: () => this.l10n(\"compat-legend-prefix\"),\n more: () => this.l10n(\"compat-legend-more\"),\n }[name]();\n }\n\n /**\n * @param {import(\"@bcd\").StatusBlock} status\n */\n _renderStatusIcons(status) {\n // <StatusIcons>\n /**\n * @type {Array<{ title: import(\"@lit\").L10nResult; text: import(\"@lit\").L10nResult; iconClassName: string }>}\n */\n const icons = [];\n\n if (status.experimental) {\n icons.push({\n title: this._getLegendLabel(\"experimental\"),\n text: this.l10n(\"compat-experimental\")`Experimental`,\n iconClassName: \"icon-experimental\",\n });\n }\n\n if (status.deprecated) {\n icons.push({\n title: this._getLegendLabel(\"deprecated\"),\n text: this.l10n(\"compat-deprecated\")`Deprecated`,\n iconClassName: \"icon-deprecated\",\n });\n }\n\n if (!status.standard_track) {\n icons.push({\n title: this._getLegendLabel(\"nonstandard\"),\n text: this.l10n(\"compat-nonstandard\")`Non-standard`,\n iconClassName: \"icon-nonstandard\",\n });\n }\n\n const renderedIcons = icons.map(\n (icon) =>\n html`<abbr\n class=${`only-icon icon ${icon.iconClassName}`}\n title=${icon.title}\n >\n <span>${icon.text}</span>\n </abbr>`,\n );\n\n return icons.length === 0\n ? undefined\n : html`<div class=\"bc-icons\">${renderedIcons}</div>`;\n }\n\n /**\n *\n * @param {import(\"@bcd\").BrowserStatement} browser\n * @param {import(\"@bcd\").SupportStatement} support\n */\n _renderNotes(browser, support) {\n // Support arrays interleave parallel branches (e.g. unprefixed vs.\n // `-webkit-` vs. `-moz-`). Render each branch as its own timeline so\n // versions stay in chronological order within the branch. Any branch\n // with a `prefix` or `alternative_name` gets a heading conveying the\n // alias modifier, even when there is no canonical branch to contrast\n // with.\n const branches = groupSupportBranches(support);\n\n return branches.map((branchItems) => {\n const { prefix, alternative_name } = branchItems[0];\n const hasAliasModifier = !!(prefix || alternative_name);\n const heading = hasAliasModifier\n ? this._renderBranchHeading(prefix, alternative_name)\n : nothing;\n\n const wrappers = [...branchItems].reverse().flatMap((item, i) => {\n // Suppress prefix/alt-name notes when the branch heading already\n // conveys the alias modifier — avoids redundancy.\n const notes = this._getNotes(browser, support, item, {\n omitAliasModifiers: hasAliasModifier,\n });\n\n const notesItems = notes.map(({ iconName, label }) => {\n return html`<div class=\"bc-supports-dd\">\n ${this._renderIcon(iconName)}${\n typeof label === \"string\"\n ? html`<span>${unsafeHTML(label)}</span>`\n : label\n }\n </div>`;\n });\n\n const hasNotes = notesItems.length > 0;\n\n // Always render the first (most recent) item even when it has no\n // notes, so each branch shows at least one row in its timeline.\n return (\n (i === 0 || hasNotes) &&\n html`<div class=\"bc-notes-wrapper\">\n <div\n class=${`bc-supports-${getSupportClassName(\n item,\n browser,\n )} bc-supports`}\n >\n ${this._renderCellText(item, browser, true, {\n omitAliasModifiers: hasAliasModifier,\n })}\n </div>\n ${notesItems}\n ${hasNotes ? undefined : html`<div class=\"bc-notes-end\"></div>`}\n </div>`\n );\n });\n\n return html`<div class=\"bc-branch\">\n ${heading}\n <div class=\"bc-branch-items\">${wrappers}</div>\n </div>`;\n });\n }\n\n /**\n * Called only when at least one of `prefix` / `alternativeName` is present.\n * @param {string | undefined} prefix\n * @param {string | undefined} alternativeName\n */\n _renderBranchHeading(prefix, alternativeName) {\n const id =\n prefix && alternativeName\n ? \"compat-branch-prefix-altname\"\n : prefix\n ? \"compat-branch-prefix\"\n : \"compat-branch-altname\";\n const label = this.l10n.raw({\n id,\n args: { prefix, altname: alternativeName },\n elements: {\n prefix: { tag: \"code\" },\n altname: { tag: \"code\" },\n },\n });\n const icons = [\n prefix && this._renderIcon(\"prefix\"),\n alternativeName && this._renderIcon(\"altname\"),\n ].filter(Boolean);\n return html`<div class=\"bc-branch-heading\">\n <div class=\"bc-icons\">${icons}</div>\n <span>${label}</span>\n </div>`;\n }\n\n /**\n * @param {import(\"@bcd\").BrowserStatement} browser\n * @param {import(\"@bcd\").SupportStatement} support\n * @param {import(\"@bcd\").SimpleSupportStatement} item\n * @param {{ omitAliasModifiers?: boolean }} [options] - When `omitAliasModifiers` is\n * true, prefix / alternative_name don't count as limitations when judging\n * full support (because a branch heading already conveys the modifier).\n * @returns\n */\n _getNotes(browser, support, item, { omitAliasModifiers = false } = {}) {\n /**\n * @type {Array<{iconName: import(\"@compat\").IconName; label: string | import(\"@lit\").L10nResult | undefined }>}\n */\n const supportNotes = [];\n\n if (\n item.version_removed &&\n !asList(support).some(\n (otherItem) => otherItem.version_added === item.version_removed,\n )\n ) {\n supportNotes.push({\n iconName: \"footnote\",\n label: this.l10n.raw({\n id: \"compat-support-removed\",\n args: {\n version: labelFromString(item.version_removed, browser),\n },\n }),\n });\n }\n\n if (item.partial_implementation) {\n supportNotes.push({\n iconName: \"footnote\",\n label: this.l10n(\"compat-support-partial\")`Partial support`,\n });\n }\n\n // Note: prefix / alternative_name modifiers are conveyed by the branch\n // heading (see `_renderBranchHeading`), so they aren't pushed here.\n\n if (item.flags) {\n const hasAdded =\n typeof item.version_added === \"string\" &&\n item.version_added !== \"preview\";\n const hasLast = typeof item.version_last === \"string\";\n\n const versionRange = hasAdded\n ? hasLast\n ? \"range\"\n : \"from\"\n : hasLast\n ? \"until\"\n : \"none\";\n\n for (const { type, name, value_to_set } of item.flags) {\n supportNotes.push({\n iconName: \"disabled\",\n label: this.l10n.raw({\n id: \"compat-support-flag-range\",\n args: {\n version_range: versionRange,\n version_added: item.version_added,\n version_last: item.version_last,\n flag_type: type,\n flag_name: name,\n has_value: Number(typeof value_to_set === \"string\"),\n flag_value: value_to_set,\n has_pref_url: Number(typeof browser.pref_url === \"string\"),\n browser_name: browser.name,\n browser_pref_url: browser.pref_url,\n },\n elements: {\n name: {\n tag: \"code\",\n },\n value: {\n tag: \"code\",\n },\n },\n }),\n });\n }\n }\n\n if (item.notes) {\n const notes = Array.isArray(item.notes) ? item.notes : [item.notes];\n for (const note of notes) {\n supportNotes.push({\n iconName: \"footnote\",\n label: note,\n });\n }\n }\n\n if (item.impl_url) {\n const impl_urls = Array.isArray(item.impl_url)\n ? item.impl_url\n : [item.impl_url];\n\n for (const impl_url of impl_urls) {\n supportNotes.push({\n iconName: \"footnote\",\n label: this.l10n.raw({\n id: \"compat-support-see-impl-url\",\n args: {\n label: bugURLToString(impl_url),\n },\n elements: {\n impl_url: {\n tag: \"a\",\n href: impl_url,\n },\n },\n }),\n });\n }\n }\n\n if (versionIsPreview(item.version_added, browser)) {\n supportNotes.push({\n iconName: \"footnote\",\n label: this.l10n(\n \"compat-support-preview-browser\",\n )`Preview browser support`,\n });\n }\n\n // If we encounter nothing else than the required `version_added` and\n // `release_date` properties, assume full support.\n // EDIT 1-5-21: if item.version_added doesn't exist, assume no support.\n // When the branch heading already conveys the alias modifier, ignore prefix\n // and alternative_name when judging full support — otherwise a plain\n // `{ prefix, version_added }` item falls through to \"Support unknown\".\n if (\n isFullySupportedWithoutLimitation(item, {\n ignoreAliasModifiers: omitAliasModifiers,\n }) &&\n !versionIsPreview(item.version_added, browser)\n ) {\n supportNotes.push({\n iconName: \"footnote\",\n label: this.l10n(\"compat-support-full\")`Full support`,\n });\n } else if (isNotSupportedAtAll(item)) {\n supportNotes.push({\n iconName: \"footnote\",\n label: this.l10n(\"compat-support-no\")`No support`,\n });\n }\n\n if (supportNotes.length === 0) {\n supportNotes.push({\n iconName: \"unknown\",\n label: this.l10n(\"compat-support-unknown\")`Support unknown`,\n });\n }\n\n return supportNotes;\n }\n\n /**\n *\n * @param {import(\"@bcd\").SupportStatement | undefined} support\n * @param {import(\"@bcd\").BrowserStatement} browser\n * @param {boolean} [timeline]\n * @param {{ omitAliasModifiers?: boolean }} [options] - Forwarded to\n * {@link _renderCellIcons} to suppress prefix/altname icons when a branch\n * heading already conveys the alias modifier.\n */\n _renderCellText(\n support,\n browser,\n timeline = false,\n { omitAliasModifiers = false } = {},\n ) {\n const currentSupport = getCurrentSupport(support);\n\n const added = currentSupport?.version_added ?? undefined;\n const lastVersion = currentSupport?.version_last ?? undefined;\n\n const browserReleaseDate = getSupportBrowserReleaseDate(support);\n const supportClassName = getSupportClassName(support, browser);\n\n let status;\n switch (added) {\n case undefined: {\n status = { isSupported: \"unknown\" };\n break;\n }\n case false: {\n status = { isSupported: \"no\" };\n break;\n }\n case \"preview\": {\n status = { isSupported: \"preview\" };\n break;\n }\n default: {\n status = {\n isSupported: supportClassName,\n label: versionLabelFromSupport(added, lastVersion, browser),\n };\n break;\n }\n }\n\n let label;\n /** @type {\"\" | import(\"@lit\").L10nResult} */\n let title = \"\";\n\n switch (status.isSupported) {\n case \"yes\": {\n title = this.l10n(\"compat-support-full\")`Full support`;\n label = status.label || this.l10n(\"compat-yes\")`Yes`;\n break;\n }\n\n case \"partial\": {\n title = this.l10n(\"compat-support-partial\")`Partial support`;\n label = status.label || this.l10n(\"compat-partial\")`Partial`;\n break;\n }\n\n case \"removed-partial\": {\n if (timeline) {\n title = this.l10n(\"compat-support-partial\")`Partial support`;\n label = status.label || this.l10n(\"compat-partial\")`Partial`;\n } else {\n title = this.l10n(\"compat-support-no\")`No support`;\n label = status.label || this.l10n(\"compat-no\")`No`;\n }\n break;\n }\n\n case \"no\": {\n title = this.l10n(\"compat-support-no\")`No support`;\n label = status.label || this.l10n(\"compat-no\")`No`;\n break;\n }\n\n case \"preview\": {\n title = this.l10n(\"compat-support-preview\")`Preview support`;\n label = status.label || browser.preview_name;\n break;\n }\n\n case \"unknown\": {\n title = this.l10n(\"compat-support-unknown\")`Support unknown`;\n label = \"?\";\n break;\n }\n }\n\n title = `${browser.name} – ${title}`;\n\n return html`<div\n class=${\n timeline ? \"bcd-timeline-cell-text-wrapper\" : \"bcd-cell-text-wrapper\"\n }\n >\n <div class=\"bcd-cell-icons\">\n <span class=\"icon-wrap\">\n <abbr\n class=${`\n bc-level-${supportClassName}\n icon\n icon-${supportClassName}`}\n title=${title}\n >\n <span class=\"bc-support-level\">${title}</span>\n </abbr>\n </span>\n </div>\n <div class=\"bcd-cell-text-copy\">\n <span class=\"bc-browser-name\">${browser.name}</span>\n <span\n class=\"bc-version-label\"\n title=${\n browserReleaseDate && !timeline\n ? this.l10n.raw({\n id: \"compat-browser-version-date\",\n args: {\n browser: browser.name,\n version: added,\n date: browserReleaseDate,\n },\n })\n : \"\"\n }\n >\n ${!timeline || added ? label : undefined}\n ${\n browserReleaseDate && timeline\n ? ` (${this.l10n.raw({ id: \"compat-browser-version-released\", args: { date: browserReleaseDate } })})`\n : \"\"\n }\n </span>\n </div>\n ${support && this._renderCellIcons(support, { omitAliasModifiers })}\n </div>`;\n }\n\n _renderTableLegend() {\n const { _browsers: browsers, browserInfo } = this;\n\n if (!browserInfo) {\n throw new Error(\"Missing browser info\");\n }\n\n const items = this._getActiveLegendItems(\n this.data,\n this._name,\n browserInfo,\n browsers,\n ).map((key) => {\n const label = this._getLegendLabel(key);\n return [\"yes\", \"partial\", \"no\", \"unknown\", \"preview\"].includes(key)\n ? html`<div class=\"bc-legend-item\">\n <dt class=\"bc-legend-item-dt\">\n <span class=${`bc-supports-${key} bc-supports`}>\n <abbr\n class=${`bc-level bc-level-${key} icon icon-${key}`}\n title=${label}\n >\n <span class=\"visually-hidden\">${label}</span>\n </abbr>\n </span>\n </dt>\n <dd class=\"bc-legend-item-dd\">${label}</dd>\n </div>`\n : html`<div class=\"bc-legend-item\">\n <dt class=\"bc-legend-item-dt\">\n <abbr class=\"legend-icons icon icon-${key}\" title=${label}></abbr>\n </dt>\n <dd class=\"bc-legend-item-dd\">${label}</dd>\n </div>`;\n });\n\n return html`<section class=\"bc-legend\">\n <h3 class=\"visually-hidden\" id=\"Legend\">\n ${this.l10n(\"compat-legend\")`Legend`}\n </h3>\n <p class=\"bc-legend-tip\">\n ${this.l10n(\n \"compat-legend-tip\",\n )`Tip: you can click/tap on a cell for more information.`}\n </p>\n <dl class=\"bc-legend-items-container\">${items}</dl>\n </section>`;\n }\n\n render() {\n return html` ${this._renderTable()} ${this._renderTableLegend()} `;\n }\n}\n\ncustomElements.define(\"mdn-compat-table\", MDNCompatTable);\n\n/**\n * Return a list of platforms and browsers that are relevant for this category &\n * data.\n *\n * If the category is \"webextensions\", only those are shown. In all other cases\n * at least the entirety of the \"desktop\" and \"mobile\" platforms are shown. If\n * the category is JavaScript, the entirety of the \"server\" category is also\n * shown. In all other categories, if compat data has info about Deno / Node.js\n * those are also shown. Deno is always shown if Node.js is shown.\n * @param {string} category\n * @param {import(\"@bcd\").Identifier} data\n * @param {Partial<import(\"@bcd\").Browsers>} browserInfo\n * @returns {[string[], import(\"@bcd\").BrowserName[]]}\n */\nexport function gatherPlatformsAndBrowsers(category, data, browserInfo) {\n const runtimes = Object.entries(browserInfo)\n .filter(([, { type }]) => type == \"server\")\n .map(([key]) => key);\n\n let platforms = [\"desktop\", \"mobile\"];\n if (\n category === \"javascript\" ||\n runtimes.some(\n (runtime) => data.__compat && runtime in data.__compat.support,\n )\n ) {\n platforms.push(\"server\");\n }\n\n /** @type {import(\"@bcd\").BrowserName[]} */\n let browsers = [];\n\n // Add browsers in platform order to align table cells\n for (const platform of platforms) {\n const platformBrowsers = /** @type {import(\"@bcd\").BrowserName[]} */ (\n Object.keys(browserInfo)\n );\n browsers.push(\n ...platformBrowsers.filter(\n (browser) =>\n browser in browserInfo && browserInfo[browser]?.type === platform,\n ),\n );\n }\n\n // Filter WebExtension browsers in corresponding tables.\n if (category === \"webextensions\") {\n browsers = browsers.filter(\n (browser) => browserInfo[browser]?.accepts_webextensions,\n );\n }\n\n // If there is no data for a runtime in a category outside \"javascript\", hide it.\n if (category !== \"javascript\") {\n for (const runtime of runtimes) {\n if (data.__compat && !(runtime in data.__compat.support)) {\n browsers = browsers.filter((browser) => browser !== runtime);\n }\n }\n }\n\n browsers = browsers.filter((browser) => SHOW_BROWSERS.includes(browser));\n\n return [platforms, [...browsers]];\n}\n","import { BCD_BASE_URL } from \"../env/index.js\";\n\n/**\n * A list of browsers to be hidden.\n * @constant {string[]}\n */\nexport const SHOW_BROWSERS = [\n \"chrome\",\n \"edge\",\n \"firefox\",\n \"opera\",\n \"safari\",\n \"chrome_android\",\n \"firefox_android\",\n \"opera_android\",\n \"safari_ios\",\n \"samsunginternet_android\",\n \"webview_android\",\n \"webview_ios\",\n \"bun\",\n \"deno\",\n \"nodejs\",\n];\n\n/**\n * Gets the first element of an array or returns the value itself.\n * @template T\n * @param {T | [T?, ...unknown[]]} a\n * @returns {T | undefined}\n */\nexport function getFirst(a) {\n return Array.isArray(a) ? a[0] : a;\n}\n\n/**\n * Ensures the input is returned as an array.\n * @template T\n * @param {T | T[]} a\n * @returns {T[]}\n */\nexport function asList(a) {\n return Array.isArray(a) ? a : [a];\n}\n\n/**\n * Finds the first compatibility depth in a BCD Identifier.\n * @param {import(\"@bcd\").Identifier} identifier\n * @returns {number}\n */\nfunction findFirstCompatDepth(identifier) {\n /** @type {Array<[string, import(\"@bcd\").Identifier]>} */\n const entries = [[\"\", identifier]];\n\n do {\n const entry = entries.shift();\n if (!entry) {\n break;\n }\n const [path, value] = entry;\n if (value.__compat) {\n // The depth is the number of segments in the path.\n return path.split(\".\").length;\n }\n\n for (const [key, subvalue] of Object.entries(value)) {\n const subpath = path ? `${path}.${key}` : key;\n if (\"__compat\" in subvalue) {\n entries.push([subpath, subvalue]);\n }\n }\n } while (entries.length > 0);\n\n // Fallback.\n return 0;\n}\n\n/**\n * Recursively lists features from a BCD Identifier.\n * @param {import(\"@bcd\").Identifier} identifier\n * @param {string} [parentName]\n * @param {string} [rootName]\n * @param {number} [depth]\n * @param {number} [firstCompatDepth]\n * @returns {import(\"@compat\").Feature[]}\n */\nexport function listFeatures(\n identifier,\n parentName = \"\",\n rootName = \"\",\n depth = 0,\n firstCompatDepth = 0,\n) {\n /** @type {import(\"@compat\").Feature[]} */\n const features = [];\n\n if (rootName && identifier.__compat) {\n features.push({\n name: rootName,\n compat: identifier.__compat,\n depth,\n });\n }\n\n if (rootName) {\n firstCompatDepth = findFirstCompatDepth(identifier);\n }\n\n for (const [subName, subIdentifier] of Object.entries(identifier)) {\n if (subName === \"__compat\") {\n continue;\n }\n\n if (\"__compat\" in subIdentifier && subIdentifier.__compat) {\n features.push({\n name: parentName ? `${parentName}.${subName}` : subName,\n compat: subIdentifier.__compat,\n depth: depth + 1,\n });\n }\n\n if (\"__compat\" in subIdentifier /* || depth + 1 < firstCompatDepth*/) {\n features.push(\n ...listFeatures(\n subIdentifier,\n subName,\n \"\",\n depth + 1,\n firstCompatDepth,\n ),\n );\n }\n }\n return features;\n}\n\n/**\n * Checks if the support statement is an array with more than one item.\n * @param {import(\"@bcd\").SupportStatement | undefined} support\n * @returns {boolean}\n */\nexport function hasMore(support) {\n return Array.isArray(support) && support.length > 1;\n}\n\n/**\n * Groups support items into parallel branches.\n *\n * BCD support arrays interleave parallel implementations (e.g. unprefixed,\n * `-webkit-`, `-moz-`). Items sharing the same `prefix` and `alternative_name`\n * form one chronological branch; items differing in either are parallel and\n * should be rendered as separate timelines to avoid out-of-order versions.\n *\n * The canonical branch (no prefix, no alternative name) is returned first;\n * non-canonical branches sort by `(alternative_name, prefix)` so the output\n * is stable regardless of how BCD happens to order the source items.\n * @param {import(\"@bcd\").SupportStatement} support\n * @returns {[import(\"@bcd\").SimpleSupportStatement, ...import(\"@bcd\").SimpleSupportStatement[]][]}\n */\nexport function groupSupportBranches(support) {\n /** @type {Map<string, [import(\"@bcd\").SimpleSupportStatement, ...import(\"@bcd\").SimpleSupportStatement[]]>} */\n const branches = new Map();\n for (const item of asList(support)) {\n // `/` is safe as a separator: BCD prefixes (e.g. `-webkit-`) and\n // alternative names (identifier-shaped) never contain it.\n const key = `${item.prefix ?? \"\"}/${item.alternative_name ?? \"\"}`;\n const branch = branches.get(key);\n if (branch) {\n branch.push(item);\n } else {\n branches.set(key, [item]);\n }\n }\n const canonicalKey = \"/\";\n const canonical = branches.get(canonicalKey);\n branches.delete(canonicalKey);\n const others = [...branches.values()].sort(([a], [b]) => {\n return (\n (a.alternative_name ?? \"\").localeCompare(b.alternative_name ?? \"\") ||\n (a.prefix ?? \"\").localeCompare(b.prefix ?? \"\")\n );\n });\n return [...(canonical ? [canonical] : []), ...others];\n}\n\n/**\n * Determines if a version is a preview version.\n * @param {string | import(\"@bcd\").VersionValue | undefined} version\n * @param {import(\"@bcd\").BrowserStatement} browser\n * @returns {boolean}\n */\nexport function versionIsPreview(version, browser) {\n if (version === \"preview\") {\n return true;\n }\n\n if (browser && typeof version === \"string\" && browser.releases[version]) {\n return [\"beta\", \"nightly\", \"planned\"].includes(\n browser.releases[version].status,\n );\n }\n\n return false;\n}\n\n/**\n * Checks if the support statement has noteworthy notes.\n * @param {import(\"@bcd\").SimpleSupportStatement} support\n * @returns {boolean}\n */\nexport function hasNoteworthyNotes(support) {\n return (\n !!(\n (support.notes && support.notes.length > 0) ||\n (support.impl_url && support.impl_url.length > 0)\n ) &&\n !support.version_removed &&\n !support.partial_implementation\n );\n}\n\n/**\n * Converts a bug URL to a simplified string.\n * @param {string} url\n * @returns {string}\n */\nexport function bugURLToString(url) {\n const match = url.match(\n /^https:\\/\\/(?:crbug\\.com|webkit\\.org\\/b|bugzil\\.la)\\/([0-9]+)/i,\n );\n const bugNumber = match ? match[1] : undefined;\n return bugNumber ? `bug ${bugNumber}` : url;\n}\n\n/**\n * Checks if a support statement has any limitation.\n * @param {import(\"@bcd\").SimpleSupportStatement} support\n * @param {{ ignoreAliasModifiers?: boolean }} [options]\n * @returns {boolean}\n */\nfunction hasLimitation(support, { ignoreAliasModifiers = false } = {}) {\n return (\n hasMajorLimitation(support, { ignoreAliasModifiers }) ||\n !!support.notes ||\n !!support.impl_url\n );\n}\n\n/**\n * Checks if a support statement has major limitations.\n * @param {import(\"@bcd\").SimpleSupportStatement} support\n * @param {{ ignoreAliasModifiers?: boolean }} [options] - When `ignoreAliasModifiers` is\n * true, `prefix` and `alternative_name` don't count as limitations (because\n * a branch heading conveys them).\n * @returns {boolean}\n */\nfunction hasMajorLimitation(support, { ignoreAliasModifiers = false } = {}) {\n return (\n support.partial_implementation ||\n (!ignoreAliasModifiers && !!support.alternative_name) ||\n !!support.flags ||\n (!ignoreAliasModifiers && !!support.prefix) ||\n !!support.version_removed\n );\n}\n\n/**\n * Checks if a support statement is fully supported without any limitation.\n * @param {import(\"@bcd\").SimpleSupportStatement} support\n * @param {{ ignoreAliasModifiers?: boolean }} [options] - When `ignoreAliasModifiers` is\n * true, `prefix` and `alternative_name` don't count as limitations.\n * @returns {boolean}\n */\nexport function isFullySupportedWithoutLimitation(\n support,\n { ignoreAliasModifiers = false } = {},\n) {\n return (\n !!support.version_added && !hasLimitation(support, { ignoreAliasModifiers })\n );\n}\n\n/**\n * Checks if a support statement is not supported at all.\n * @param {import(\"@bcd\").SimpleSupportStatement} support\n * @returns {boolean}\n */\nexport function isNotSupportedAtAll(support) {\n return support.version_added === false && !hasLimitation(support);\n}\n\n/**\n * Checks if a support statement is fully supported without major limitations.\n * @param {import(\"@bcd\").SimpleSupportStatement} support\n * @returns {boolean}\n */\nfunction isFullySupportedWithoutMajorLimitation(support) {\n return !!support.version_added && !hasMajorLimitation(support);\n}\n\n/**\n * Gets the current support statement from a support statement extended.\n *\n * Prioritizes support items in the following order:\n * 1. Full support without limitation.\n * 2. Full support with only notes and version_added.\n * 3. Full support with alternative name or prefix.\n * 4. Partial support.\n * 5. Support with flags only.\n * 6. No/Inactive support.\n * @param {import(\"@compat\").SupportStatementExtended | undefined} support\n * @returns {import(\"@compat\").SimpleSupportStatementExtended | undefined}\n */\nexport function getCurrentSupport(support) {\n if (!support) return;\n\n // Full support without limitation.\n const noLimitationSupportItem = asList(support).find((item) =>\n isFullySupportedWithoutLimitation(item),\n );\n if (noLimitationSupportItem) return noLimitationSupportItem;\n\n // Full support with only notes and version_added.\n const minorLimitationSupportItem = asList(support).find((item) =>\n isFullySupportedWithoutMajorLimitation(item),\n );\n if (minorLimitationSupportItem) return minorLimitationSupportItem;\n\n // Full support with alternative name/prefix.\n const altnamePrefixSupportItem = asList(support).find(\n (item) => !item.version_removed && (item.prefix || item.alternative_name),\n );\n if (altnamePrefixSupportItem) return altnamePrefixSupportItem;\n\n // Partial support.\n const partialSupportItem = asList(support).find(\n (item) => !item.version_removed && item.partial_implementation,\n );\n if (partialSupportItem) return partialSupportItem;\n\n // Support with flags only.\n const flagSupportItem = asList(support).find(\n (item) => !item.version_removed && item.flags,\n );\n if (flagSupportItem) return flagSupportItem;\n\n // No/Inactive support.\n const noSupportItem = asList(support).find((item) => item.version_removed);\n if (noSupportItem) return noSupportItem;\n\n // Default (likely never reached).\n return getFirst(support);\n}\n\n/**\n * Get the URL to the JSON file for a given BCD key\n * @param {string} query\n */\nexport function queryToUrl(query) {\n return `${BCD_BASE_URL}/bcd/api/v0/current/${query}.json`;\n}\n","/**\n * @import { LitElement } from \"lit\";\n * @import { Ref } from \"lit/directives/ref.js\";\n */\n\nimport { ViewedObserver } from \"./viewed-observer.js\";\n\nexport class ViewedController {\n #host;\n /** @type {ViewedObserver | null} */\n observer = null;\n\n /**\n * @param {LitElement} host\n * @param {Ref<Element>} target\n * @param {() => void} callback\n * @param {IntersectionObserverInit} [observerOptions]\n */\n constructor(host, target, callback, observerOptions) {\n this.#host = host;\n this.#host.addController(this);\n\n this.target = target;\n this.callback = callback;\n this.observerOptions = observerOptions;\n }\n\n hostDisconnected() {\n this.observer?.disconnect();\n this.observer = null;\n }\n\n hostUpdated() {\n const target = this.target.value;\n if (target && !this.observer) {\n this.observer = new ViewedObserver(\n target,\n this.callback,\n this.observerOptions,\n );\n this.observer.connect();\n }\n }\n}\n"],"names":["_","MDNCompatTable","Set","globalThis","g","URLSearchParams","Date","Object","h","Boolean","t","r","i","o","Number","Array","b","Error","customElements","Map","s","e","ViewedController"],"mappings":"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"}
1
+ {"version":3,"file":"8067.e21835e06833480e.js","sources":["webpack://@mdn/fred/./components/compat-table/element.css","webpack://@mdn/fred/./components/compat-table/icons.css","webpack://@mdn/fred/./components/compat-table/index-common.css","webpack://@mdn/fred/./components/compat-table/index-desktop-md.css","webpack://@mdn/fred/./components/compat-table/index-desktop-xl.css","webpack://@mdn/fred/./components/compat-table/index-desktop.css","webpack://@mdn/fred/./components/compat-table/index-global.css","webpack://@mdn/fred/./components/compat-table/index-mobile.css","webpack://@mdn/fred/./components/compat-table/index-trailer.css","webpack://@mdn/fred/./components/compat-table/constants.js","webpack://@mdn/fred/./components/compat-table/feature-row.js","webpack://@mdn/fred/./components/compat-table/element.js","webpack://@mdn/fred/./components/compat-table/utils.js","webpack://@mdn/fred/./components/viewed-controller/viewed-controller.js"],"sourcesContent":["import { css } from \"lit\";\n// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_0___ from \"-!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../build/loaders/fix-light-dark.js!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!./index-global.css\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_1___ from \"-!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../build/loaders/fix-light-dark.js!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!./icons.css\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_2___ from \"-!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../build/loaders/fix-light-dark.js!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!./index-common.css\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_3___ from \"-!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../build/loaders/fix-light-dark.js!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!./index-mobile.css\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_4___ from \"-!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../build/loaders/fix-light-dark.js!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!./index-desktop.css\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_5___ from \"-!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../build/loaders/fix-light-dark.js!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!./index-desktop-md.css\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_6___ from \"-!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../build/loaders/fix-light-dark.js!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!./index-desktop-xl.css\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_7___ from \"-!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../build/loaders/fix-light-dark.js!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!./index-trailer.css\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_1___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_2___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_3___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_4___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_5___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_6___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_7___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ``, \"\"]);\n// Exports\nexport default css([___CSS_LOADER_EXPORT___.toString()]);\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../icon/monitor.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"../icon/smartphone.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(\"../icon/server.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_3___ = new URL(\"../icon/browser/bun.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_4___ = new URL(\"../icon/browser/chrome.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_5___ = new URL(\"../icon/browser/deno.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_6___ = new URL(\"../icon/browser/firefox.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_7___ = new URL(\"../icon/browser/edge.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_8___ = new URL(\"../icon/browser/nodejs.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_9___ = new URL(\"../icon/browser/opera.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_10___ = new URL(\"../icon/browser/safari.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_11___ = new URL(\"../icon/browser/samsung-internet.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_12___ = new URL(\"../icon/browser/webview.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_13___ = new URL(\"../icon/circle-x.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_14___ = new URL(\"../icon/circle-slash.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_15___ = new URL(\"../icon/check.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_16___ = new URL(\"../icon/circle-check.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_17___ = new URL(\"../icon/flask-conical.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_18___ = new URL(\"../icon/trash-2.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_19___ = new URL(\"../icon/triangle-alert.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_20___ = new URL(\"../icon/asterisk.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_21___ = new URL(\"../icon/circle-help.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_22___ = new URL(\"../icon/mdn-prefix.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_23___ = new URL(\"../icon/git-fork.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_24___ = new URL(\"../icon/flag.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_25___ = new URL(\"../icon/ellipsis.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___);\nvar ___CSS_LOADER_URL_REPLACEMENT_7___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_7___);\nvar ___CSS_LOADER_URL_REPLACEMENT_8___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_8___);\nvar ___CSS_LOADER_URL_REPLACEMENT_9___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_9___);\nvar ___CSS_LOADER_URL_REPLACEMENT_10___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_10___);\nvar ___CSS_LOADER_URL_REPLACEMENT_11___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_11___);\nvar ___CSS_LOADER_URL_REPLACEMENT_12___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_12___);\nvar ___CSS_LOADER_URL_REPLACEMENT_13___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_13___);\nvar ___CSS_LOADER_URL_REPLACEMENT_14___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_14___);\nvar ___CSS_LOADER_URL_REPLACEMENT_15___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_15___);\nvar ___CSS_LOADER_URL_REPLACEMENT_16___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_16___);\nvar ___CSS_LOADER_URL_REPLACEMENT_17___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_17___);\nvar ___CSS_LOADER_URL_REPLACEMENT_18___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_18___);\nvar ___CSS_LOADER_URL_REPLACEMENT_19___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_19___);\nvar ___CSS_LOADER_URL_REPLACEMENT_20___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_20___);\nvar ___CSS_LOADER_URL_REPLACEMENT_21___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_21___);\nvar ___CSS_LOADER_URL_REPLACEMENT_22___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_22___);\nvar ___CSS_LOADER_URL_REPLACEMENT_23___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_23___);\nvar ___CSS_LOADER_URL_REPLACEMENT_24___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_24___);\nvar ___CSS_LOADER_URL_REPLACEMENT_25___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_25___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.icon{--size:var(--icon-size,1rem);background-color:var(--color-border-secondary);display:inline-block;flex-shrink:0;height:var(--size);mask-size:cover;vertical-align:middle;width:var(--size)}.icon.icon-desktop{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___})}.icon.icon-mobile{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_1___})}.icon.icon-server{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_2___})}.icon.icon-bun{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_3___})}.icon.icon-chrome{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_4___})}.icon.icon-deno{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_5___})}.icon.icon-firefox{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_6___})}.icon.icon-edge{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_7___})}.icon.icon-nodejs{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_8___})}.icon.icon-opera{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_9___})}.icon.icon-safari{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_10___})}.icon.icon-samsunginternet{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_11___})}.icon.icon-webview{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_12___})}.icon.icon-no{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_13___})}.icon.icon-partial{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_14___})}.icon.icon-yes{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_15___})}.icon.icon-yes-circle{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_16___})}.icon.icon-experimental{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_17___})}.icon.icon-deprecated{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_18___})}.icon.icon-nonstandard{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_19___})}.icon.icon-footnote{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_20___})}.icon.icon-unknown{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_21___})}.icon.icon-prefix{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_22___})}.icon.icon-altname{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_23___})}.icon.icon-disabled{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_24___})}.icon.icon-more{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_25___})}.icon.icon-preview{mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_17___})}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../icon/circle-x.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"../icon/circle-slash.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(\"../icon/circle-check.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_3___ = new URL(\"../icon/circle.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___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.table-container{overflow-x:hidden}table{display:grid;grid-auto-flow:row dense}:is(table thead) tr{display:contents}:is(:is(table thead) tr) td,:is(:is(table thead) tr) th{display:grid;grid-template-columns:subgrid}:is(:is(table tbody) tr) td,:is(:is(table tbody) tr) th,:is(table tbody) tr,table tbody{display:contents}:is(:is(:is(table tbody) tr) th,:is(:is(table tbody) tr) td) button{display:grid;grid-template-columns:subgrid}:is(:is(:is(table tbody) tr) th,:is(:is(table tbody) tr) td) .timeline{display:grid;grid-column:1/-1;grid-template-columns:subgrid}.bc-on-github{font-size:var(--font-size-small)}.bc-table{border:1px solid var(--color-border-primary);border-collapse:initial;border-radius:.25rem;border-spacing:0;margin:0;overflow-x:auto;width:100%}.bc-table td,.bc-table th{border-width:1px;border-bottom:1px solid var(--color-border-primary);border-left:1px solid var(--color-border-primary);border-right:0 solid var(--color-border-primary);border-top:0 solid var(--color-border-primary);font-weight:500;padding:.4rem}.bc-table td,.bc-table th,:is(.bc-table td,.bc-table th) code{font-size:var(--font-size-small)}.bc-table th{background:var(--color-background-primary);padding:.4rem;vertical-align:bottom}.bc-table thead{line-height:var(--font-line-ui);white-space:nowrap}:is(.bc-table tbody) tr{height:3rem}@media (width > 426px){:is(:is(.bc-table tbody) tr):last-child td,:is(:is(.bc-table tbody) tr):last-child th{border-bottom-width:0}}:is(:is(.bc-table tbody) tr) th{border-left-width:0;vertical-align:middle}:is(.bc-table tbody) .bc-support{vertical-align:top}:is(:is(.bc-table tbody) .bc-support) button{cursor:pointer;width:100%}.bc-supports-no:is(:is(.bc-table tbody) .bc-support)>button>span{color:var(--color-text-red)}.bc-supports-partial:is(:is(.bc-table tbody) .bc-support)>button>span{color:var(--color-text-yellow)}.bc-supports-preview:is(:is(.bc-table tbody) .bc-support)>button>span{color:var(--color-text-blue)}.bc-supports-yes:is(:is(.bc-table tbody) .bc-support)>button>span{color:var(--color-text-green)}.bc-table .bc-supports{margin-bottom:1rem}:is(.bc-table .bc-supports) .icon-wrap{background:var(--color-background-page);padding-bottom:2px}:is(.bc-table .bc-supports.bc-supports-removed-partial) .bcd-cell-text-copy{color:var(--color-text-yellow)}:is(.bc-table .icon-wrap) .bc-support-level{border:0!important;clip-path:inset(50%)!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:1px!important}:is(.bc-table .bc-support)>button>.icon-wrap{display:block}:is(.bc-table .bc-support) .icon.icon-removed-partial{background-color:var(--color-text-red);mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___})}:is(.bc-table .bc-support) .timeline .icon.icon-removed-partial{background-color:var(--color-text-yellow);mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_1___})}:is(.bc-table .bc-support.bc-supports-removed-partial) .bcd-cell-text-copy{color:var(--color-text-red)}.bc-table .bc-feature{align-items:center;border:none;border-left:max(0px,calc((var(--compat-feature-depth, 1) - 1)*8px - 1px)) solid var(--color-border-primary);display:flex;text-align:left;width:100%}:is(.bc-table .bc-feature)>*{border:none!important;flex-basis:max-content}.bc-head-txt-label{line-height:var(--font-line-ui);text-orientation:sideways;transform:rotate(180deg);white-space:nowrap;writing-mode:vertical-rl}.bc-support{text-align:center;vertical-align:middle}.bc-level-no{background-color:var(--color-text-red)}.bc-level-partial{background-color:var(--color-text-yellow)}.bc-level-preview{background-color:var(--color-text-blue)}.bc-legend-items-container{display:flex;flex-wrap:wrap;font-size:var(--font-size-small);gap:1.5rem;margin-bottom:2rem}.bc-legend-tip{font-size:var(--font-size-small);font-style:italic;font-variation-settings:\"slnt\" -10;margin-bottom:1rem;margin-top:0}@media print{.bc-legend-tip{display:none!important}}.bc-legend-item{align-items:center;display:flex;gap:.5rem}.bc-legend-item-dt{display:flex}.bc-legend-item-dt .icon{background-color:var(--color-border-secondary)}.bc-platforms th{align-items:center;display:flex;justify-content:center}.bc-platforms td{border:none}.bc-browsers th{align-items:center;display:flex;flex-direction:column;gap:.25rem;justify-content:end;vertical-align:bottom}.bc-browsers td{border-width:0 0 1px}.bc-notes-list{border-left:1px solid var(--color-border-primary);grid-column:2/-1;margin:0;text-align:left}.bc-notes-list .bc-branch{padding:.75rem 1rem;position:relative}.bc-notes-list .bc-branch+.bc-branch{border-top:1px solid var(--color-border-primary)}.bc-notes-list .bc-branch-heading{align-items:center;color:var(--color-text-primary);display:flex;font-weight:var(--font-body-strong-weight);gap:.375rem;margin-bottom:.75rem}.bc-notes-list{--compat-timeline-cap:4px}.bc-notes-list .bc-branch-items{position:relative}:is(.bc-notes-list .bc-branch-items):before{background:var(--color-border-primary);bottom:var(--compat-timeline-cap);content:\"\";left:7px;margin-top:.25rem;position:absolute;top:0;width:3px;z-index:-1}.bc-notes-list .bc-branch-items .bc-notes-wrapper:last-child>:last-child{position:relative}:is(.bc-notes-list .bc-branch-items .bc-notes-wrapper:last-child>:last-child):before{background:var(--color-background-page);bottom:0;content:\"\";left:7px;position:absolute;top:var(--compat-timeline-cap);width:3px;z-index:-1}.bc-notes-list .bc-level-yes.icon.icon-yes{background-color:var(--color-text-green);mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_2___})}.bc-notes-list .bc-supports-dd{margin-bottom:1rem;padding-left:1.5rem;text-indent:-1.5rem}:is(.bc-notes-list .bc-supports-dd):last-child{margin-bottom:0}:is(.bc-notes-list .bc-supports-dd) .icon{background-color:var(--color-text-secondary);mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_3___})}:is(.bc-notes-list .bc-supports-dd) .icon-wrap{background-color:var(--color-background-page);padding-bottom:2px}.bc-notes-list .bc-notes-end{margin-bottom:2rem}.bc-notes-list .bc-version-label{display:inline}.bc-notes-list abbr{margin-right:4px;-webkit-text-decoration:none;text-decoration:none}.bc-notes-wrapper{color:var(--color-border-secondary);margin-bottom:1rem}.bc-notes-wrapper:last-child{margin-bottom:0}.only-icon span{border:0!important;clip-path:inset(50%)!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:1px!important}.bc-table-row-header{padding:.25em;text-align:left;width:100%}.bc-table-row-header code{overflow:hidden}.bc-table-row-header .bc-icons{display:inline-flex;gap:.5ch;margin-left:.5ch;vertical-align:text-top}:is(.bc-table-row-header .bc-icons) .icon{background-color:var(--color-text-secondary)}.bc-github-link{font-size:var(--font-size-small)}:is(.main-page-content .bc-legend) dd,:is(.main-page-content .bc-legend) dt{margin-bottom:0;margin-left:0;margin-top:0}.main-page-content .bc-supports-dd{margin:0}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@media (width > 769px){.bc-on-github{text-align:right}.bc-table{grid-template-columns:minmax(25%,max-content) repeat(var(--compat-browser-count),calc(75%/var(--compat-browser-count)))}.icon{--size:calc(1rem + 1px)}}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@media (width > 1200px){.bc-table{grid-template-columns:minmax(33%,max-content) repeat(var(--compat-browser-count),calc(67%/var(--compat-browser-count)))}}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@media (width > 426px){.bc-table{grid-template-columns:minmax(20vw,min-content) repeat(var(--compat-browser-count),auto)}.bc-table thead{display:contents}:is(:is(.bc-table thead) .bc-platforms) th{vertical-align:revert}.bc-table tbody{--border:1px solid var(--color-border-primary)}:is(:is(.bc-table tbody) tr):not(:first-child) .bc-feature,:is(:is(:is(.bc-table tbody) tr):not(:first-child) th,:is(:is(.bc-table tbody) tr):not(:first-child) td)>*{border-top:var(--border)}:is(:is(:is(.bc-table tbody) tr) th:not(:first-child),:is(:is(.bc-table tbody) tr) td:not(:first-child))>*{border-left:var(--border)}.bc-table td,.bc-table th{background:inherit;padding:.25rem}.bc-table td.bc-support{padding:0}:is(.bc-table td.bc-support)>button{padding:.25rem}.bc-table button[aria-expanded=false]~.timeline{display:none}.bc-table .timeline{border-left:none!important;border-top:var(--border)}:is(.bc-table .bc-has-history)>button[aria-expanded=true]{--padding-bottom-offset:-2px;border-bottom:2px solid var(--color-border-primary)}:is(.bc-table .bc-has-history)>button:hover{background:var(--color-background-secondary)}.table-container-inner{position:relative}.table-container-inner:after{bottom:0;content:\"\";height:10px;position:absolute;right:0;width:10px}.bc-support .bc-support-level,.bcd-cell-text-wrapper .bc-browser-name,.bcd-cell-text-wrapper .bc-support-level{display:none}}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_0___ from \"-!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../build/loaders/fix-light-dark.js!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!../external-link/global.css\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_1___ from \"-!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../build/loaders/fix-light-dark.js!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!../visually-hidden/global.css\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_1___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `*{box-sizing:border-box;overflow-wrap:break-word}blockquote,body,dd,dl,figure,h1,h2,h3,h4,p{margin:0}a:link{color:var(--color-link-normal)}a:visited{color:var(--color-link-visited)}a:hover{-webkit-text-decoration:none;text-decoration:none}code{background-color:var(--color-background-secondary);padding:.125rem .25rem;width:fit-content}button{appearance:none;background:none;border:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@media (width <= 426px){.bc-table{grid-template-columns:auto}.bc-table thead{display:none}:is(.bc-table tr) td.bc-support{border:none;border-top:1px solid var(--color-border-primary);display:block}:is(:is(.bc-table tr) td.bc-support):last-child{border-bottom:1px solid var(--color-border-primary)}.bc-table .timeline{margin-left:.25rem;margin-right:.25rem}.bc-table .bc-notes-list{border-left:none;grid-column:1/-1}.bc-table .bc-branch{padding-left:0;padding-right:0}.bc-table tr:not(:first-of-type) .bc-feature{border-top:2px solid var(--color-border-primary)}.bc-table .bc-feature,.bc-table .bc-support>button{align-content:center;display:flex;flex-wrap:wrap;gap:.5rem}.bc-on-github a{white-space:nowrap}.table-container{overflow-x:auto}}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.bcd-cell-text-wrapper{display:flex;flex-direction:row;gap:.5rem}@media (width > 426px){.bcd-cell-text-wrapper{align-items:center;flex-direction:column}}.bcd-timeline-cell-text-wrapper{display:flex;flex-direction:row;gap:.25rem}.bcd-cell-text-copy{color:var(--color-text-primary)}.bc-supports-yes .bcd-cell-text-copy{color:var(--color-text-green)}.bc-supports-partial .bcd-cell-text-copy{color:var(--color-text-yellow)}.bc-supports-no .bcd-cell-text-copy{color:var(--color-text-red)}.bcd-cell-icons{display:flex;gap:.5rem}@media (width > 426px){.bcd-cell-icons{display:block}.bc-table td.bc-support>button{padding-bottom:calc(.5rem + var(--padding-bottom-offset, 0px));padding-left:.25rem;padding-right:.25rem;padding-top:.5rem}}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// [libs/constants]\nexport const DEFAULT_LOCALE = \"en-US\";\n\nexport const ISSUE_METADATA_TEMPLATE = `\n<!-- Do not make changes below this line -->\n<details>\n<summary>MDN page report details</summary>\n\n* Query: \\`$QUERY_ID\\`\n* Report started: $DATE\n\n</details>\n`;\n","import { html } from \"lit\";\n\nimport { getCurrentSupport, versionIsPreview } from \"./utils.js\";\n\n/**\n * Returns a CSS class name based on support data and the browser.\n * @param {import(\"@compat\").SupportStatementExtended|undefined} support - The extended support statement.\n * @param {import(\"@bcd\").BrowserStatement} browser - The browser statement.\n * @returns {import(\"@compat\").SupportClassName}\n */\nexport function getSupportClassName(support, browser) {\n if (!support) {\n return \"unknown\";\n }\n\n const currentSupport = getCurrentSupport(support);\n if (!currentSupport) {\n return \"unknown\";\n }\n const { flags, version_added, version_removed, partial_implementation } =\n currentSupport;\n\n /** @type {import(\"@compat\").SupportClassName} */\n let className;\n if (version_added === null) {\n className = \"unknown\";\n } else if (versionIsPreview(version_added, browser)) {\n className = \"preview\";\n } else if (version_added) {\n className = \"yes\";\n if (version_removed || (flags && flags.length > 0)) {\n className = \"no\";\n }\n } else {\n className = \"no\";\n }\n if (partial_implementation) {\n className = version_removed ? \"removed-partial\" : \"partial\";\n }\n\n return className;\n}\n\n/**\n * Returns a label string derived from a version value.\n * @param {string|boolean|null|undefined} version - The version value.\n * @param {import(\"@bcd\").BrowserStatement} browser - The browser statement.\n * @returns {string} The resulting label.\n */\nexport function labelFromString(version, browser) {\n if (typeof version !== \"string\") {\n return \"?\";\n }\n if (version === \"preview\") {\n return browser.preview_name ?? \"Preview\";\n }\n // Treat BCD ranges as exact versions to avoid confusion for the reader\n // See https://github.com/mdn/yari/issues/3238\n if (version.startsWith(\"≤\")) {\n version = version.slice(1);\n }\n // New: Omit trailing \".0\".\n version = version.replaceAll(/(\\.0)+$/g, \"\");\n\n return version;\n}\n\n/**\n * Generates a version label from added and removed support data.\n * @param {string|boolean|null|undefined} added - The added version.\n * @param {string|boolean|null|undefined} removed - The removed version.\n * @param {import(\"@bcd\").BrowserStatement} browser - The browser statement.\n * @returns {import(\"lit\").TemplateResult} A lit-html template result representing the version label.\n */\nexport function versionLabelFromSupport(added, removed, browser) {\n if (typeof removed !== \"string\") {\n return html`${labelFromString(added, browser)}`;\n }\n return html`${labelFromString(\n added,\n browser,\n )}&#8202;&ndash;&#8202;${labelFromString(removed, browser)}`;\n}\n\n/**\n * Retrieves the browser release date from a support statement.\n * @param {import(\"@compat\").SupportStatementExtended|undefined} support - The extended support statement.\n * @returns {string|undefined} The release date if available.\n */\nexport function getSupportBrowserReleaseDate(support) {\n if (!support) {\n return;\n }\n\n return getCurrentSupport(support)?.release_date;\n}\n","import { LitElement, html, nothing } from \"lit\";\nimport { ifDefined } from \"lit/directives/if-defined.js\";\nimport { createRef, ref } from \"lit/directives/ref.js\";\nimport { unsafeHTML } from \"lit/directives/unsafe-html.js\";\n\nimport { L10nMixin } from \"../../l10n/mixin.js\";\nimport { gleanClick } from \"../../utils/glean.js\";\nimport { ViewedController } from \"../viewed-controller/viewed-controller.js\";\n\nimport { DEFAULT_LOCALE, ISSUE_METADATA_TEMPLATE } from \"./constants.js\";\nimport styles from \"./element.css?lit\";\nimport {\n getSupportBrowserReleaseDate,\n getSupportClassName,\n labelFromString,\n versionLabelFromSupport,\n} from \"./feature-row.js\";\nimport {\n SHOW_BROWSERS,\n asList,\n bugURLToString,\n getCurrentSupport,\n getFirst,\n groupSupportBranches,\n hasMore,\n hasNoteworthyNotes,\n isFullySupportedWithoutLimitation,\n isNotSupportedAtAll,\n listFeatures,\n versionIsPreview,\n} from \"./utils.js\";\n\n/** @type {import(\"@compat\").IconName[]} */\nconst ICON_NAMES = [\n \"yes\",\n \"partial\",\n \"preview\",\n \"no\",\n \"unknown\",\n \"experimental\",\n \"nonstandard\",\n \"deprecated\",\n \"footnote\",\n \"disabled\",\n \"altname\",\n \"prefix\",\n \"more\",\n];\n\n/**\n * @param {import(\"@bcd\").BrowserName} browser\n * @returns {string}\n */\nfunction browserToIconName(browser) {\n if (browser.startsWith(\"firefox\")) {\n return \"firefox\";\n } else if (browser === \"webview_android\") {\n return \"webview\";\n } else if (browser === \"webview_ios\") {\n return \"safari\";\n } else {\n return browser.split(\"_\", 1)[0] ?? \"\";\n }\n}\n\nexport class MDNCompatTable extends L10nMixin(LitElement) {\n static get properties() {\n return {\n query: {},\n locale: {},\n data: {},\n browserInfo: { attribute: \"browserinfo\" },\n _pathname: { state: true },\n _platforms: { state: true },\n _browsers: { state: true },\n _showTimelineId: { state: true },\n };\n }\n\n static styles = styles;\n\n /** @type {import(\"lit/directives/ref.js\").Ref<HTMLElement>} */\n _ref = createRef();\n\n constructor() {\n super();\n this.query = \"\";\n /** @type {import(\"@bcd\").Identifier} */\n this.data = {};\n /** @type {Partial<import(\"@bcd\").Browsers>} */\n this.browserInfo = {};\n this.locale = \"\";\n this._pathname = \"\";\n /** @type {string[]} */\n this._platforms = [];\n /** @type {import(\"@bcd\").BrowserName[]} */\n this._browsers = [];\n /** @type {string|undefined} */\n this._showTimelineId = undefined;\n new ViewedController(this, this._ref, () => {\n gleanClick(`bcd: view -> ${this.query}`);\n });\n }\n\n get _breadcrumbs() {\n return this.query.split(\".\");\n }\n\n get _category() {\n return this._breadcrumbs[0] ?? \"\";\n }\n\n get _name() {\n return this._breadcrumbs.at(-1) ?? \"\";\n }\n\n /**\n * Gets the active legend items based on browser compatibility data.\n * @param {import(\"@bcd\").Identifier} compat - The compatibility data identifier.\n * @param {string} name - The name of the feature.\n * @param {Partial<import(\"@bcd\").Browsers>} browserInfo - Information about browsers.\n * @param {import(\"@bcd\").BrowserName[]} browsers - The list of displayed browsers.\n * @returns {import(\"@compat\").IconName[]} An array of legend keys.\n */\n _getActiveLegendItems(compat, name, browserInfo, browsers) {\n /** @type {Set<import(\"@compat\").IconName>} */\n const legendItems = new Set();\n\n for (const feature of listFeatures(compat, \"\", name)) {\n const { status } = feature.compat;\n\n if (status) {\n if (status.experimental) {\n legendItems.add(\"experimental\");\n }\n if (status.deprecated) {\n legendItems.add(\"deprecated\");\n }\n if (!status.standard_track) {\n legendItems.add(\"nonstandard\");\n }\n }\n\n for (const browser of browsers) {\n const browserSupport = feature.compat.support[browser] ?? {\n version_added: false,\n };\n\n if (!SHOW_BROWSERS.includes(browser)) {\n continue;\n }\n\n const firstSupportItem = getFirst(browserSupport);\n if (firstSupportItem && hasNoteworthyNotes(firstSupportItem)) {\n legendItems.add(\"footnote\");\n }\n\n for (const versionSupport of asList(browserSupport)) {\n if (versionSupport.version_added) {\n if (versionSupport.flags && versionSupport.flags.length > 0) {\n legendItems.add(\"no\");\n } else if (\n browserInfo[browser] &&\n versionIsPreview(\n versionSupport.version_added,\n browserInfo[browser],\n )\n ) {\n legendItems.add(\"preview\");\n } else {\n legendItems.add(\"yes\");\n }\n } else if (versionSupport.version_added == undefined) {\n legendItems.add(\"unknown\");\n } else {\n legendItems.add(\"no\");\n }\n\n if (versionSupport.partial_implementation) {\n legendItems.add(\"partial\");\n }\n if (versionSupport.prefix) {\n legendItems.add(\"prefix\");\n }\n if (versionSupport.alternative_name) {\n legendItems.add(\"altname\");\n }\n if (versionSupport.flags) {\n legendItems.add(\"disabled\");\n }\n }\n\n if (hasMore(browserSupport)) {\n legendItems.add(\"more\");\n }\n }\n }\n\n return ICON_NAMES.filter((key) => legendItems.has(key));\n }\n\n connectedCallback() {\n super.connectedCallback();\n this._pathname = globalThis.location.pathname;\n [this._platforms, this._browsers] = gatherPlatformsAndBrowsers(\n this._category,\n this.data,\n this.browserInfo,\n );\n }\n\n get _issueUrl() {\n const url = \"https://github.com/mdn/browser-compat-data/issues/new\";\n const sp = new URLSearchParams();\n const metadata = ISSUE_METADATA_TEMPLATE.replaceAll(\n \"$DATE\",\n new Date().toISOString(),\n )\n .replaceAll(\"$QUERY_ID\", this.query)\n .trim();\n sp.set(\"mdn-url\", `https://developer.mozilla.org${this._pathname}`);\n sp.set(\"metadata\", metadata);\n sp.set(\"title\", `${this.query} - <SUMMARIZE THE PROBLEM>`);\n sp.set(\"template\", \"data-problem.yml\");\n\n return `${url}?${sp.toString()}`;\n }\n\n _renderIssueLink() {\n const source_file = this.data.__compat?.source_file;\n return html`<div class=\"bc-on-github\">\n <a\n class=\"bc-github-link external external-icon\"\n href=${this._issueUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n title=${this.l10n(\n \"compat-link-report-issue-title\",\n )`Report an issue with this compatibility data`}\n >\n ${this.l10n(\n \"compat-link-report-issue\",\n )`Report problems with this compatibility data`}</a\n >${\n source_file\n ? html` •\n <a\n class=\"bc-github-link external external-icon\"\n href=${`https://github.com/mdn/browser-compat-data/tree/main/${source_file}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n title=${this.l10n.raw({\n id: \"compat-link-source-title\",\n args: {\n filename: source_file,\n },\n })}\n >\n ${this.l10n(\"compat-link-source\")`View data on GitHub`}\n </a>`\n : undefined\n }\n </div>`;\n }\n\n _renderTable() {\n return html`<figure ${ref(this._ref)} class=\"table-container\">\n <figure class=\"table-container-inner\">\n ${this._renderIssueLink()}\n <table\n class=\"bc-table bc-table-web\"\n style=\"--compat-browser-count: ${Object.keys(this._browsers).length}\"\n >\n ${this._renderTableHeader()} ${this._renderTableBody()}\n </table>\n </figure>\n </figure>`;\n }\n\n _renderTableHeader() {\n return html`<thead>\n ${this._renderPlatformHeaders()} ${this._renderBrowserHeaders()}\n </thead>`;\n }\n\n _renderPlatformHeaders() {\n const platformsWithBrowsers = this._platforms.map((platform) => ({\n platform,\n browsers: this._browsers.filter(\n (browser) => this.browserInfo[browser]?.type === platform,\n ),\n }));\n\n const grid = platformsWithBrowsers.map(({ browsers }) => browsers.length);\n\n const platformCells = platformsWithBrowsers.map(\n ({ platform, browsers }, index) => {\n // Get the intersection of browsers in the `browsers` array and the\n // `PLATFORM_BROWSERS[platform]`.\n const browserCount = browsers.length;\n const cellClass = `bc-platform bc-platform-${platform}`;\n const iconClass = `icon icon-${platform}`;\n\n const columnStart =\n 2 + grid.slice(0, index).reduce((acc, x) => acc + x, 0);\n const columnEnd = columnStart + browserCount;\n return html`<th\n class=${cellClass}\n colspan=${browserCount}\n title=${platform}\n style=\"grid-column: ${columnStart} / ${columnEnd}\"\n >\n <span class=${iconClass}></span>\n <span class=\"visually-hidden\">${platform}</span>\n </th>`;\n },\n );\n\n return html`<tr class=\"bc-platforms\">\n <td></td>\n ${platformCells}\n </tr>`;\n }\n\n _renderBrowserHeaders() {\n // <BrowserHeaders>\n const browserCells = this._browsers.map(\n (browser) =>\n html`<th class=${`bc-browser bc-browser-${browser}`}>\n <div class=${`bc-head-txt-label bc-head-icon-${browser}`}>\n ${this.browserInfo[browser]?.name}\n </div>\n <div\n class=${`bc-head-icon-symbol icon icon-${browserToIconName(\n browser,\n )}`}\n ></div>\n </th>`,\n );\n\n return html`<tr class=\"bc-browsers\">\n <td></td>\n ${browserCells}\n </tr>`;\n }\n\n _renderTableBody() {\n // <FeatureListAccordion>\n const { data, _browsers: browsers, browserInfo, locale } = this;\n let features = listFeatures(data, \"\", this._name);\n\n const MAX_FEATURES = 100;\n\n // If there are too many features, hide nested features.\n if (features.length > MAX_FEATURES) {\n features = features.filter(({ depth }) => depth < 2);\n }\n\n // If there are still too many features, hide non-standard features.\n if (features.length > MAX_FEATURES) {\n features = features.filter(\n ({ compat: { status } }) => status?.standard_track,\n );\n }\n\n // If there are still too many features, hide deprecated features.\n if (features.length > MAX_FEATURES) {\n features = features.filter(\n ({ compat: { status } }) => !status?.deprecated,\n );\n }\n\n // If there are still too many features, hide experimental features.\n if (features.length > MAX_FEATURES) {\n features = features.filter(\n ({ compat: { status } }) => !status?.experimental,\n );\n }\n\n // At this point, we did all we can to reduce the number of features shown.\n if (features.length > MAX_FEATURES) {\n features = features.slice(0, MAX_FEATURES);\n }\n\n const featureRows = features.map((feature, featureIndex) => {\n // <FeatureRow>\n const { name, compat, depth } = feature;\n\n const title = compat.description\n ? html`<span>${unsafeHTML(compat.description)}</span>`\n : html`<code>${name}</code>`;\n\n let titleNode;\n const titleContent = html`${title}${\n compat.status && this._renderStatusIcons(compat.status)\n }`;\n if (compat.mdn_url && depth > 0) {\n const href = compat.mdn_url.replace(\n `/${DEFAULT_LOCALE}/docs`,\n `/${locale}/docs`,\n );\n titleNode = html`<a\n href=${href}\n class=\"bc-table-row-header\"\n data-glean-id=${`bcd: link -> ${href}`}\n >\n ${titleContent}\n </a>`;\n } else {\n titleNode = html`<div class=\"bc-table-row-header\">\n ${titleContent}\n </div>`;\n }\n\n const browserCells = browsers.map((browserName, browserIndex) => {\n // <CompatCell>\n const browser = browserInfo[browserName];\n if (!browser) {\n return nothing;\n }\n const support = compat.support[browserName] ?? {\n version_added: false,\n };\n\n const timelineId = `timeline-${featureIndex}-${browserIndex}`;\n const supportClassName = getSupportClassName(support, browser);\n const notes = this._renderNotes(browser, support);\n\n const hasHistory = notes.length > 0;\n const isExpanded = hasHistory && this._showTimelineId == timelineId;\n\n const handleClick = () => {\n if (isExpanded) {\n this._showTimelineId = undefined;\n } else if (hasHistory) {\n this._showTimelineId = timelineId;\n }\n };\n\n return html`<td\n class=${`bc-support bc-browser-${browserName} bc-supports-${supportClassName} ${\n hasHistory ? \"bc-has-history\" : \"\"\n }`}\n >\n <button\n type=\"button\"\n aria-controls=${ifDefined(hasHistory ? timelineId : undefined)}\n aria-expanded=${ifDefined(hasHistory ? isExpanded : undefined)}\n title=${ifDefined(hasHistory && \"Toggle history\")}\n @click=${handleClick}\n >\n ${this._renderCellText(support, browser)}\n </button>\n ${\n hasHistory\n ? html`<div id=${timelineId} class=\"timeline\" tabindex=\"0\">\n ${\n isExpanded\n ? html`<div class=\"bc-notes-list\">${notes}</div>`\n : nothing\n }\n </div>`\n : nothing\n }\n </td>`;\n });\n\n return html`<tr>\n <th\n class=\"bc-feature\"\n style=${`--compat-feature-depth: ${depth}`}\n scope=\"row\"\n >\n ${titleNode}\n </th>\n ${browserCells}\n </tr>`;\n });\n\n return html`<tbody>\n ${featureRows}\n </tbody>`;\n }\n\n /**\n * @param {import(\"@bcd\").SupportStatement} support\n * @param {{ omitAliasModifiers?: boolean }} [options] - When `omitAliasModifiers` is\n * true, the `prefix` and `altname` icons are skipped (because a branch\n * heading already conveys the alias modifier).\n */\n _renderCellIcons(support, { omitAliasModifiers = false } = {}) {\n const supportItem = getCurrentSupport(support);\n if (!supportItem) {\n return;\n }\n\n const icons = [\n !omitAliasModifiers && supportItem.prefix && this._renderIcon(\"prefix\"),\n hasNoteworthyNotes(supportItem) && this._renderIcon(\"footnote\"),\n !omitAliasModifiers &&\n supportItem.alternative_name &&\n this._renderIcon(\"altname\"),\n supportItem.flags && this._renderIcon(\"disabled\"),\n hasMore(support) && this._renderIcon(\"more\"),\n ].filter(Boolean);\n\n return icons.length > 0\n ? html`<div class=\"bc-icons\">${icons}</div>`\n : undefined;\n }\n\n /**\n * @param {import(\"@compat\").IconName} name\n * @returns {import(\"@lit\").TemplateResult}\n */\n _renderIcon(name) {\n const title = this._getLegendLabel(name);\n\n return html`\n <span class=\"icon-wrap\">\n <abbr class=\"only-icon\" title=${ifDefined(title)}>\n <span>${name}</span>\n <i class=${`icon icon-${name}`}></i>\n </abbr>\n </span>\n `;\n }\n\n /**\n * @param {import(\"@compat\").IconName} name\n */\n _getLegendLabel(name) {\n return {\n yes: () => this.l10n(\"compat-legend-yes\"),\n partial: () => this.l10n(\"compat-legend-partial\"),\n preview: () => this.l10n(\"compat-legend-preview\"),\n no: () => this.l10n(\"compat-legend-no\"),\n unknown: () => this.l10n(\"compat-legend-unknown\"),\n experimental: () => this.l10n(\"compat-legend-experimental\"),\n nonstandard: () => this.l10n(\"compat-legend-nonstandard\"),\n deprecated: () => this.l10n(\"compat-legend-deprecated\"),\n footnote: () => this.l10n(\"compat-legend-footnote\"),\n disabled: () => this.l10n(\"compat-legend-disabled\"),\n altname: () => this.l10n(\"compat-legend-altname\"),\n prefix: () => this.l10n(\"compat-legend-prefix\"),\n more: () => this.l10n(\"compat-legend-more\"),\n }[name]();\n }\n\n /**\n * @param {import(\"@bcd\").StatusBlock} status\n */\n _renderStatusIcons(status) {\n // <StatusIcons>\n /**\n * @type {Array<{ title: import(\"@lit\").L10nResult; text: import(\"@lit\").L10nResult; iconClassName: string }>}\n */\n const icons = [];\n\n if (status.experimental) {\n icons.push({\n title: this._getLegendLabel(\"experimental\"),\n text: this.l10n(\"compat-experimental\")`Experimental`,\n iconClassName: \"icon-experimental\",\n });\n }\n\n if (status.deprecated) {\n icons.push({\n title: this._getLegendLabel(\"deprecated\"),\n text: this.l10n(\"compat-deprecated\")`Deprecated`,\n iconClassName: \"icon-deprecated\",\n });\n }\n\n if (!status.standard_track) {\n icons.push({\n title: this._getLegendLabel(\"nonstandard\"),\n text: this.l10n(\"compat-nonstandard\")`Non-standard`,\n iconClassName: \"icon-nonstandard\",\n });\n }\n\n const renderedIcons = icons.map(\n (icon) =>\n html`<abbr\n class=${`only-icon icon ${icon.iconClassName}`}\n title=${icon.title}\n >\n <span>${icon.text}</span>\n </abbr>`,\n );\n\n return icons.length === 0\n ? undefined\n : html`<div class=\"bc-icons\">${renderedIcons}</div>`;\n }\n\n /**\n *\n * @param {import(\"@bcd\").BrowserStatement} browser\n * @param {import(\"@bcd\").SupportStatement} support\n */\n _renderNotes(browser, support) {\n // Support arrays interleave parallel branches (e.g. unprefixed vs.\n // `-webkit-` vs. `-moz-`). Render each branch as its own timeline so\n // versions stay in chronological order within the branch. Any branch\n // with a `prefix` or `alternative_name` gets a heading conveying the\n // alias modifier, even when there is no canonical branch to contrast\n // with.\n const branches = groupSupportBranches(support);\n\n return branches.map((branchItems) => {\n const { prefix, alternative_name } = branchItems[0];\n const hasAliasModifier = !!(prefix || alternative_name);\n const heading = hasAliasModifier\n ? this._renderBranchHeading(prefix, alternative_name)\n : nothing;\n\n const wrappers = [...branchItems].reverse().flatMap((item, i) => {\n // Suppress prefix/alt-name notes when the branch heading already\n // conveys the alias modifier — avoids redundancy.\n const notes = this._getNotes(browser, support, item, {\n omitAliasModifiers: hasAliasModifier,\n });\n\n const notesItems = notes.map(({ iconName, label }) => {\n return html`<div class=\"bc-supports-dd\">\n ${this._renderIcon(iconName)}${\n typeof label === \"string\"\n ? html`<span>${unsafeHTML(label)}</span>`\n : label\n }\n </div>`;\n });\n\n const hasNotes = notesItems.length > 0;\n\n // Always render the first (most recent) item even when it has no\n // notes, so each branch shows at least one row in its timeline.\n return (\n (i === 0 || hasNotes) &&\n html`<div class=\"bc-notes-wrapper\">\n <div\n class=${`bc-supports-${getSupportClassName(\n item,\n browser,\n )} bc-supports`}\n >\n ${this._renderCellText(item, browser, true, {\n omitAliasModifiers: hasAliasModifier,\n })}\n </div>\n ${notesItems}\n ${hasNotes ? undefined : html`<div class=\"bc-notes-end\"></div>`}\n </div>`\n );\n });\n\n return html`<div class=\"bc-branch\">\n ${heading}\n <div class=\"bc-branch-items\">${wrappers}</div>\n </div>`;\n });\n }\n\n /**\n * Called only when at least one of `prefix` / `alternativeName` is present.\n * @param {string | undefined} prefix\n * @param {string | undefined} alternativeName\n */\n _renderBranchHeading(prefix, alternativeName) {\n const id =\n prefix && alternativeName\n ? \"compat-branch-prefix-altname\"\n : prefix\n ? \"compat-branch-prefix\"\n : \"compat-branch-altname\";\n const label = this.l10n.raw({\n id,\n args: { prefix, altname: alternativeName },\n elements: {\n prefix: { tag: \"code\" },\n altname: { tag: \"code\" },\n },\n });\n const icons = [\n prefix && this._renderIcon(\"prefix\"),\n alternativeName && this._renderIcon(\"altname\"),\n ].filter(Boolean);\n return html`<div class=\"bc-branch-heading\">\n <div class=\"bc-icons\">${icons}</div>\n <span>${label}</span>\n </div>`;\n }\n\n /**\n * @param {import(\"@bcd\").BrowserStatement} browser\n * @param {import(\"@bcd\").SupportStatement} support\n * @param {import(\"@bcd\").SimpleSupportStatement} item\n * @param {{ omitAliasModifiers?: boolean }} [options] - When `omitAliasModifiers` is\n * true, prefix / alternative_name don't count as limitations when judging\n * full support (because a branch heading already conveys the modifier).\n * @returns\n */\n _getNotes(browser, support, item, { omitAliasModifiers = false } = {}) {\n /**\n * @type {Array<{iconName: import(\"@compat\").IconName; label: string | import(\"@lit\").L10nResult | undefined }>}\n */\n const supportNotes = [];\n\n if (\n item.version_removed &&\n asList(support).every(\n (otherItem) => otherItem.version_added !== item.version_removed,\n )\n ) {\n supportNotes.push({\n iconName: \"footnote\",\n label: this.l10n.raw({\n id: \"compat-support-removed\",\n args: {\n version: labelFromString(item.version_removed, browser),\n },\n }),\n });\n }\n\n if (item.partial_implementation) {\n supportNotes.push({\n iconName: \"footnote\",\n label: this.l10n(\"compat-support-partial\")`Partial support`,\n });\n }\n\n // Note: prefix / alternative_name modifiers are conveyed by the branch\n // heading (see `_renderBranchHeading`), so they aren't pushed here.\n\n if (item.flags) {\n const hasAdded =\n typeof item.version_added === \"string\" &&\n item.version_added !== \"preview\";\n const hasLast = typeof item.version_last === \"string\";\n\n const versionRange = hasAdded\n ? hasLast\n ? \"range\"\n : \"from\"\n : hasLast\n ? \"until\"\n : \"none\";\n\n for (const { type, name, value_to_set } of item.flags) {\n supportNotes.push({\n iconName: \"disabled\",\n label: this.l10n.raw({\n id: \"compat-support-flag-range\",\n args: {\n version_range: versionRange,\n version_added: item.version_added,\n version_last: item.version_last,\n flag_type: type,\n flag_name: name,\n has_value: Number(typeof value_to_set === \"string\"),\n flag_value: value_to_set,\n has_pref_url: Number(typeof browser.pref_url === \"string\"),\n browser_name: browser.name,\n browser_pref_url: browser.pref_url,\n },\n elements: {\n name: {\n tag: \"code\",\n },\n value: {\n tag: \"code\",\n },\n },\n }),\n });\n }\n }\n\n if (item.notes) {\n const notes = Array.isArray(item.notes) ? item.notes : [item.notes];\n for (const note of notes) {\n supportNotes.push({\n iconName: \"footnote\",\n label: note,\n });\n }\n }\n\n if (item.impl_url) {\n const impl_urls = Array.isArray(item.impl_url)\n ? item.impl_url\n : [item.impl_url];\n\n for (const impl_url of impl_urls) {\n supportNotes.push({\n iconName: \"footnote\",\n label: this.l10n.raw({\n id: \"compat-support-see-impl-url\",\n args: {\n label: bugURLToString(impl_url),\n },\n elements: {\n impl_url: {\n tag: \"a\",\n href: impl_url,\n },\n },\n }),\n });\n }\n }\n\n if (versionIsPreview(item.version_added, browser)) {\n supportNotes.push({\n iconName: \"footnote\",\n label: this.l10n(\n \"compat-support-preview-browser\",\n )`Preview browser support`,\n });\n }\n\n // If we encounter nothing else than the required `version_added` and\n // `release_date` properties, assume full support.\n // EDIT 1-5-21: if item.version_added doesn't exist, assume no support.\n // When the branch heading already conveys the alias modifier, ignore prefix\n // and alternative_name when judging full support — otherwise a plain\n // `{ prefix, version_added }` item falls through to \"Support unknown\".\n if (\n isFullySupportedWithoutLimitation(item, {\n ignoreAliasModifiers: omitAliasModifiers,\n }) &&\n !versionIsPreview(item.version_added, browser)\n ) {\n supportNotes.push({\n iconName: \"footnote\",\n label: this.l10n(\"compat-support-full\")`Full support`,\n });\n } else if (isNotSupportedAtAll(item)) {\n supportNotes.push({\n iconName: \"footnote\",\n label: this.l10n(\"compat-support-no\")`No support`,\n });\n }\n\n if (supportNotes.length === 0) {\n supportNotes.push({\n iconName: \"unknown\",\n label: this.l10n(\"compat-support-unknown\")`Support unknown`,\n });\n }\n\n return supportNotes;\n }\n\n /**\n *\n * @param {import(\"@bcd\").SupportStatement | undefined} support\n * @param {import(\"@bcd\").BrowserStatement} browser\n * @param {boolean} [timeline]\n * @param {{ omitAliasModifiers?: boolean }} [options] - Forwarded to\n * {@link _renderCellIcons} to suppress prefix/altname icons when a branch\n * heading already conveys the alias modifier.\n */\n _renderCellText(\n support,\n browser,\n timeline = false,\n { omitAliasModifiers = false } = {},\n ) {\n const currentSupport = getCurrentSupport(support);\n\n const added = currentSupport?.version_added ?? undefined;\n const lastVersion = currentSupport?.version_last ?? undefined;\n\n const browserReleaseDate = getSupportBrowserReleaseDate(support);\n const supportClassName = getSupportClassName(support, browser);\n\n let status;\n switch (added) {\n case undefined: {\n status = { isSupported: \"unknown\" };\n break;\n }\n case false: {\n status = { isSupported: \"no\" };\n break;\n }\n case \"preview\": {\n status = { isSupported: \"preview\" };\n break;\n }\n default: {\n status = {\n isSupported: supportClassName,\n label: versionLabelFromSupport(added, lastVersion, browser),\n };\n break;\n }\n }\n\n let label;\n /** @type {\"\" | import(\"@lit\").L10nResult} */\n let title = \"\";\n\n switch (status.isSupported) {\n case \"yes\": {\n title = this.l10n(\"compat-support-full\")`Full support`;\n label = status.label || this.l10n(\"compat-yes\")`Yes`;\n break;\n }\n\n case \"partial\": {\n title = this.l10n(\"compat-support-partial\")`Partial support`;\n label = status.label || this.l10n(\"compat-partial\")`Partial`;\n break;\n }\n\n case \"removed-partial\": {\n if (timeline) {\n title = this.l10n(\"compat-support-partial\")`Partial support`;\n label = status.label || this.l10n(\"compat-partial\")`Partial`;\n } else {\n title = this.l10n(\"compat-support-no\")`No support`;\n label = status.label || this.l10n(\"compat-no\")`No`;\n }\n break;\n }\n\n case \"no\": {\n title = this.l10n(\"compat-support-no\")`No support`;\n label = status.label || this.l10n(\"compat-no\")`No`;\n break;\n }\n\n case \"preview\": {\n title = this.l10n(\"compat-support-preview\")`Preview support`;\n label = status.label || browser.preview_name;\n break;\n }\n\n case \"unknown\": {\n title = this.l10n(\"compat-support-unknown\")`Support unknown`;\n label = \"?\";\n break;\n }\n }\n\n title = `${browser.name} – ${title}`;\n\n return html`<div\n class=${\n timeline ? \"bcd-timeline-cell-text-wrapper\" : \"bcd-cell-text-wrapper\"\n }\n >\n <div class=\"bcd-cell-icons\">\n <span class=\"icon-wrap\">\n <abbr\n class=${`\n bc-level-${supportClassName}\n icon\n icon-${supportClassName}`}\n title=${title}\n >\n <span class=\"bc-support-level\">${title}</span>\n </abbr>\n </span>\n </div>\n <div class=\"bcd-cell-text-copy\">\n <span class=\"bc-browser-name\">${browser.name}</span>\n <span\n class=\"bc-version-label\"\n title=${\n browserReleaseDate && !timeline\n ? this.l10n.raw({\n id: \"compat-browser-version-date\",\n args: {\n browser: browser.name,\n version: added,\n date: browserReleaseDate,\n },\n })\n : \"\"\n }\n >\n ${!timeline || added ? label : undefined}\n ${\n browserReleaseDate && timeline\n ? ` (${this.l10n.raw({ id: \"compat-browser-version-released\", args: { date: browserReleaseDate } })})`\n : \"\"\n }\n </span>\n </div>\n ${support && this._renderCellIcons(support, { omitAliasModifiers })}\n </div>`;\n }\n\n _renderTableLegend() {\n const { _browsers: browsers, browserInfo } = this;\n\n if (!browserInfo) {\n throw new Error(\"Missing browser info\");\n }\n\n const items = this._getActiveLegendItems(\n this.data,\n this._name,\n browserInfo,\n browsers,\n ).map((key) => {\n const label = this._getLegendLabel(key);\n return [\"yes\", \"partial\", \"no\", \"unknown\", \"preview\"].includes(key)\n ? html`<div class=\"bc-legend-item\">\n <dt class=\"bc-legend-item-dt\">\n <span class=${`bc-supports-${key} bc-supports`}>\n <abbr\n class=${`bc-level bc-level-${key} icon icon-${key}`}\n title=${label}\n >\n <span class=\"visually-hidden\">${label}</span>\n </abbr>\n </span>\n </dt>\n <dd class=\"bc-legend-item-dd\">${label}</dd>\n </div>`\n : html`<div class=\"bc-legend-item\">\n <dt class=\"bc-legend-item-dt\">\n <abbr class=\"legend-icons icon icon-${key}\" title=${label}></abbr>\n </dt>\n <dd class=\"bc-legend-item-dd\">${label}</dd>\n </div>`;\n });\n\n return html`<section class=\"bc-legend\">\n <h3 class=\"visually-hidden\" id=\"Legend\">\n ${this.l10n(\"compat-legend\")`Legend`}\n </h3>\n <p class=\"bc-legend-tip\">\n ${this.l10n(\n \"compat-legend-tip\",\n )`Tip: you can click/tap on a cell for more information.`}\n </p>\n <dl class=\"bc-legend-items-container\">${items}</dl>\n </section>`;\n }\n\n render() {\n return html` ${this._renderTable()} ${this._renderTableLegend()} `;\n }\n}\n\ncustomElements.define(\"mdn-compat-table\", MDNCompatTable);\n\n/**\n * Return a list of platforms and browsers that are relevant for this category &\n * data.\n *\n * If the category is \"webextensions\", only those are shown. In all other cases\n * at least the entirety of the \"desktop\" and \"mobile\" platforms are shown. If\n * the category is JavaScript, the entirety of the \"server\" category is also\n * shown. In all other categories, if compat data has info about Deno / Node.js\n * those are also shown. Deno is always shown if Node.js is shown.\n * @param {string} category\n * @param {import(\"@bcd\").Identifier} data\n * @param {Partial<import(\"@bcd\").Browsers>} browserInfo\n * @returns {[string[], import(\"@bcd\").BrowserName[]]}\n */\nexport function gatherPlatformsAndBrowsers(category, data, browserInfo) {\n const runtimes = Object.entries(browserInfo)\n .filter(([, { type }]) => type == \"server\")\n .map(([key]) => key);\n\n let platforms = [\"desktop\", \"mobile\"];\n if (\n category === \"javascript\" ||\n runtimes.some(\n (runtime) => data.__compat && runtime in data.__compat.support,\n )\n ) {\n platforms.push(\"server\");\n }\n\n /** @type {import(\"@bcd\").BrowserName[]} */\n let browsers = [];\n\n // Add browsers in platform order to align table cells\n for (const platform of platforms) {\n const platformBrowsers = /** @type {import(\"@bcd\").BrowserName[]} */ (\n Object.keys(browserInfo)\n );\n browsers.push(\n ...platformBrowsers.filter(\n (browser) =>\n browser in browserInfo && browserInfo[browser]?.type === platform,\n ),\n );\n }\n\n // Filter WebExtension browsers in corresponding tables.\n if (category === \"webextensions\") {\n browsers = browsers.filter(\n (browser) => browserInfo[browser]?.accepts_webextensions,\n );\n }\n\n // If there is no data for a runtime in a category outside \"javascript\", hide it.\n if (category !== \"javascript\") {\n for (const runtime of runtimes) {\n if (data.__compat && !(runtime in data.__compat.support)) {\n browsers = browsers.filter((browser) => browser !== runtime);\n }\n }\n }\n\n browsers = browsers.filter((browser) => SHOW_BROWSERS.includes(browser));\n\n return [platforms, [...browsers]];\n}\n","import { BCD_BASE_URL } from \"../env/index.js\";\n\n/**\n * A list of browsers to be hidden.\n * @constant {string[]}\n */\nexport const SHOW_BROWSERS = [\n \"chrome\",\n \"edge\",\n \"firefox\",\n \"opera\",\n \"safari\",\n \"chrome_android\",\n \"firefox_android\",\n \"opera_android\",\n \"safari_ios\",\n \"samsunginternet_android\",\n \"webview_android\",\n \"webview_ios\",\n \"bun\",\n \"deno\",\n \"nodejs\",\n];\n\n/**\n * Gets the first element of an array or returns the value itself.\n * @template T\n * @param {T | [T?, ...unknown[]]} a\n * @returns {T | undefined}\n */\nexport function getFirst(a) {\n return Array.isArray(a) ? a[0] : a;\n}\n\n/**\n * Ensures the input is returned as an array.\n * @template T\n * @param {T | T[]} a\n * @returns {T[]}\n */\nexport function asList(a) {\n return Array.isArray(a) ? a : [a];\n}\n\n/**\n * Finds the first compatibility depth in a BCD Identifier.\n * @param {import(\"@bcd\").Identifier} identifier\n * @returns {number}\n */\nfunction findFirstCompatDepth(identifier) {\n /** @type {Array<[string, import(\"@bcd\").Identifier]>} */\n const entries = [[\"\", identifier]];\n\n do {\n const entry = entries.shift();\n if (!entry) {\n break;\n }\n const [path, value] = entry;\n if (value.__compat) {\n // The depth is the number of segments in the path.\n return path.split(\".\").length;\n }\n\n for (const [key, subvalue] of Object.entries(value)) {\n const subpath = path ? `${path}.${key}` : key;\n if (\"__compat\" in subvalue) {\n entries.push([subpath, subvalue]);\n }\n }\n } while (entries.length > 0);\n\n // Fallback.\n return 0;\n}\n\n/**\n * Recursively lists features from a BCD Identifier.\n * @param {import(\"@bcd\").Identifier} identifier\n * @param {string} [parentName]\n * @param {string} [rootName]\n * @param {number} [depth]\n * @param {number} [firstCompatDepth]\n * @returns {import(\"@compat\").Feature[]}\n */\nexport function listFeatures(\n identifier,\n parentName = \"\",\n rootName = \"\",\n depth = 0,\n firstCompatDepth = 0,\n) {\n /** @type {import(\"@compat\").Feature[]} */\n const features = [];\n\n if (rootName && identifier.__compat) {\n features.push({\n name: rootName,\n compat: identifier.__compat,\n depth,\n });\n }\n\n if (rootName) {\n firstCompatDepth = findFirstCompatDepth(identifier);\n }\n\n for (const [subName, subIdentifier] of Object.entries(identifier)) {\n if (subName === \"__compat\") {\n continue;\n }\n\n if (\"__compat\" in subIdentifier && subIdentifier.__compat) {\n features.push({\n name: parentName ? `${parentName}.${subName}` : subName,\n compat: subIdentifier.__compat,\n depth: depth + 1,\n });\n }\n\n if (\"__compat\" in subIdentifier /* || depth + 1 < firstCompatDepth*/) {\n features.push(\n ...listFeatures(\n subIdentifier,\n subName,\n \"\",\n depth + 1,\n firstCompatDepth,\n ),\n );\n }\n }\n return features;\n}\n\n/**\n * Checks if the support statement is an array with more than one item.\n * @param {import(\"@bcd\").SupportStatement | undefined} support\n * @returns {boolean}\n */\nexport function hasMore(support) {\n return Array.isArray(support) && support.length > 1;\n}\n\n/**\n * Groups support items into parallel branches.\n *\n * BCD support arrays interleave parallel implementations (e.g. unprefixed,\n * `-webkit-`, `-moz-`). Items sharing the same `prefix` and `alternative_name`\n * form one chronological branch; items differing in either are parallel and\n * should be rendered as separate timelines to avoid out-of-order versions.\n *\n * The canonical branch (no prefix, no alternative name) is returned first;\n * non-canonical branches sort by `(alternative_name, prefix)` so the output\n * is stable regardless of how BCD happens to order the source items.\n * @param {import(\"@bcd\").SupportStatement} support\n * @returns {[import(\"@bcd\").SimpleSupportStatement, ...import(\"@bcd\").SimpleSupportStatement[]][]}\n */\nexport function groupSupportBranches(support) {\n /** @type {Map<string, [import(\"@bcd\").SimpleSupportStatement, ...import(\"@bcd\").SimpleSupportStatement[]]>} */\n const branches = new Map();\n for (const item of asList(support)) {\n // `/` is safe as a separator: BCD prefixes (e.g. `-webkit-`) and\n // alternative names (identifier-shaped) never contain it.\n const key = `${item.prefix ?? \"\"}/${item.alternative_name ?? \"\"}`;\n const branch = branches.get(key);\n if (branch) {\n branch.push(item);\n } else {\n branches.set(key, [item]);\n }\n }\n const canonicalKey = \"/\";\n const canonical = branches.get(canonicalKey);\n branches.delete(canonicalKey);\n const others = [...branches.values()].sort(([a], [b]) => {\n return (\n (a.alternative_name ?? \"\").localeCompare(b.alternative_name ?? \"\") ||\n (a.prefix ?? \"\").localeCompare(b.prefix ?? \"\")\n );\n });\n return [...(canonical ? [canonical] : []), ...others];\n}\n\n/**\n * Determines if a version is a preview version.\n * @param {string | import(\"@bcd\").VersionValue | undefined} version\n * @param {import(\"@bcd\").BrowserStatement} browser\n * @returns {boolean}\n */\nexport function versionIsPreview(version, browser) {\n if (version === \"preview\") {\n return true;\n }\n\n if (browser && typeof version === \"string\" && browser.releases[version]) {\n return [\"beta\", \"nightly\", \"planned\"].includes(\n browser.releases[version].status,\n );\n }\n\n return false;\n}\n\n/**\n * Checks if the support statement has noteworthy notes.\n * @param {import(\"@bcd\").SimpleSupportStatement} support\n * @returns {boolean}\n */\nexport function hasNoteworthyNotes(support) {\n return (\n !!(\n (support.notes && support.notes.length > 0) ||\n (support.impl_url && support.impl_url.length > 0)\n ) &&\n !support.version_removed &&\n !support.partial_implementation\n );\n}\n\n/**\n * Converts a bug URL to a simplified string.\n * @param {string} url\n * @returns {string}\n */\nexport function bugURLToString(url) {\n const match = url.match(\n /^https:\\/\\/(?:crbug\\.com|webkit\\.org\\/b|bugzil\\.la)\\/([0-9]+)/i,\n );\n const bugNumber = match ? match[1] : undefined;\n return bugNumber ? `bug ${bugNumber}` : url;\n}\n\n/**\n * Checks if a support statement has any limitation.\n * @param {import(\"@bcd\").SimpleSupportStatement} support\n * @param {{ ignoreAliasModifiers?: boolean }} [options]\n * @returns {boolean}\n */\nfunction hasLimitation(support, { ignoreAliasModifiers = false } = {}) {\n return (\n hasMajorLimitation(support, { ignoreAliasModifiers }) ||\n !!support.notes ||\n !!support.impl_url\n );\n}\n\n/**\n * Checks if a support statement has major limitations.\n * @param {import(\"@bcd\").SimpleSupportStatement} support\n * @param {{ ignoreAliasModifiers?: boolean }} [options] - When `ignoreAliasModifiers` is\n * true, `prefix` and `alternative_name` don't count as limitations (because\n * a branch heading conveys them).\n * @returns {boolean}\n */\nfunction hasMajorLimitation(support, { ignoreAliasModifiers = false } = {}) {\n return (\n support.partial_implementation ||\n (!ignoreAliasModifiers && !!support.alternative_name) ||\n !!support.flags ||\n (!ignoreAliasModifiers && !!support.prefix) ||\n !!support.version_removed\n );\n}\n\n/**\n * Checks if a support statement is fully supported without any limitation.\n * @param {import(\"@bcd\").SimpleSupportStatement} support\n * @param {{ ignoreAliasModifiers?: boolean }} [options] - When `ignoreAliasModifiers` is\n * true, `prefix` and `alternative_name` don't count as limitations.\n * @returns {boolean}\n */\nexport function isFullySupportedWithoutLimitation(\n support,\n { ignoreAliasModifiers = false } = {},\n) {\n return (\n !!support.version_added && !hasLimitation(support, { ignoreAliasModifiers })\n );\n}\n\n/**\n * Checks if a support statement is not supported at all.\n * @param {import(\"@bcd\").SimpleSupportStatement} support\n * @returns {boolean}\n */\nexport function isNotSupportedAtAll(support) {\n return support.version_added === false && !hasLimitation(support);\n}\n\n/**\n * Checks if a support statement is fully supported without major limitations.\n * @param {import(\"@bcd\").SimpleSupportStatement} support\n * @returns {boolean}\n */\nfunction isFullySupportedWithoutMajorLimitation(support) {\n return !!support.version_added && !hasMajorLimitation(support);\n}\n\n/**\n * Gets the current support statement from a support statement extended.\n *\n * Prioritizes support items in the following order:\n * 1. Full support without limitation.\n * 2. Full support with only notes and version_added.\n * 3. Full support with alternative name or prefix.\n * 4. Partial support.\n * 5. Support with flags only.\n * 6. No/Inactive support.\n * @param {import(\"@compat\").SupportStatementExtended | undefined} support\n * @returns {import(\"@compat\").SimpleSupportStatementExtended | undefined}\n */\nexport function getCurrentSupport(support) {\n if (!support) return;\n\n // Full support without limitation.\n const noLimitationSupportItem = asList(support).find((item) =>\n isFullySupportedWithoutLimitation(item),\n );\n if (noLimitationSupportItem) return noLimitationSupportItem;\n\n // Full support with only notes and version_added.\n const minorLimitationSupportItem = asList(support).find((item) =>\n isFullySupportedWithoutMajorLimitation(item),\n );\n if (minorLimitationSupportItem) return minorLimitationSupportItem;\n\n // Full support with alternative name/prefix.\n const altnamePrefixSupportItem = asList(support).find(\n (item) => !item.version_removed && (item.prefix || item.alternative_name),\n );\n if (altnamePrefixSupportItem) return altnamePrefixSupportItem;\n\n // Partial support.\n const partialSupportItem = asList(support).find(\n (item) => !item.version_removed && item.partial_implementation,\n );\n if (partialSupportItem) return partialSupportItem;\n\n // Support with flags only.\n const flagSupportItem = asList(support).find(\n (item) => !item.version_removed && item.flags,\n );\n if (flagSupportItem) return flagSupportItem;\n\n // No/Inactive support.\n const noSupportItem = asList(support).find((item) => item.version_removed);\n if (noSupportItem) return noSupportItem;\n\n // Default (likely never reached).\n return getFirst(support);\n}\n\n/**\n * Get the URL to the JSON file for a given BCD key\n * @param {string} query\n */\nexport function queryToUrl(query) {\n return `${BCD_BASE_URL}/bcd/api/v0/current/${query}.json`;\n}\n","/**\n * @import { LitElement } from \"lit\";\n * @import { Ref } from \"lit/directives/ref.js\";\n */\n\nimport { ViewedObserver } from \"./viewed-observer.js\";\n\nexport class ViewedController {\n #host;\n /** @type {ViewedObserver | null} */\n observer = null;\n\n /**\n * @param {LitElement} host\n * @param {Ref<Element>} target\n * @param {() => void} callback\n * @param {IntersectionObserverInit} [observerOptions]\n */\n constructor(host, target, callback, observerOptions) {\n this.#host = host;\n this.#host.addController(this);\n\n this.target = target;\n this.callback = callback;\n this.observerOptions = observerOptions;\n }\n\n hostDisconnected() {\n this.observer?.disconnect();\n this.observer = null;\n }\n\n hostUpdated() {\n const target = this.target.value;\n if (target && !this.observer) {\n this.observer = new ViewedObserver(\n target,\n this.callback,\n this.observerOptions,\n );\n this.observer.connect();\n }\n }\n}\n"],"names":["_","MDNCompatTable","Set","globalThis","g","URLSearchParams","Date","Object","h","Boolean","t","r","i","o","Number","Array","b","Error","customElements","Map","s","e","ViewedController"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export const __rspack_esm_id=8233;export const __rspack_esm_ids=[8233];export const __webpack_modules__={12911(e,t,n){e.exports=n.p+"watify_bg.9e17afb2a5a4c03f.wasm"},72624(e,t,n){let r;function a(e){let t=function(e,t,n){if(void 0===n){let n=c.encode(e),r=t(n.length,1)>>>0;return o().subarray(r,r+n.length).set(n),f=n.length,r}let r=e.length,a=t(r,1)>>>0,i=o(),s=0;for(;s<r;s++){let t=e.charCodeAt(s);if(t>127)break;i[a+s]=t}if(s!==r){0!==s&&(e=e.slice(s)),a=n(a,r,r=s+3*e.length,1)>>>0;let t=o().subarray(a+s,a+r);s+=c.encodeInto(e,t).written,a=n(a,r,s,1)>>>0}return f=s,a}(e,r.__wbindgen_malloc,r.__wbindgen_realloc),n=f,a=r.watify(t,n);if(a[3]){let e;throw i=a[2],e=r.__wbindgen_externrefs.get(i),r.__externref_table_dealloc(i),e}var i,s,l,_=(s=a[0],l=a[1],s>>>=0,o().subarray(s/1,s/1+l)).slice();return r.__wbindgen_free(a[0],+a[1],1),_}let i=null;function o(){return(null===i||0===i.byteLength)&&(i=new Uint8Array(r.memory.buffer)),i}let s=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});s.decode();let l=0,c=new TextEncoder;"encodeInto"in c||(c.encodeInto=function(e,t){let n=c.encode(e);return t.set(n),{read:e.length,written:n.length}});let f=0;async function _(e,t){if("function"==typeof Response&&e instanceof Response){if(!e.ok)throw Error(`failed to fetch Wasm: ${e.status} ${e.statusText} fetching '${e.url}'`);if("function"==typeof WebAssembly.instantiateStreaming)try{return await WebAssembly.instantiateStreaming(e,t)}catch(t){if(function(e){switch(e){case"basic":case"cors":case"default":return!0}return!1}(e.type)&&"application/wasm"!==e.headers.get("Content-Type"))console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",t);else throw t}let n=await e.arrayBuffer();return await WebAssembly.instantiate(n,t)}{let n=await WebAssembly.instantiate(e,t);return n instanceof WebAssembly.Instance?{instance:n,module:e}:n}}async function u(e){if(void 0!==r)return r;void 0!==e&&(Object.getPrototypeOf(e)===Object.prototype?{module_or_path:e}=e:console.warn("using deprecated parameters for the initialization function; pass a single object instead")),void 0===e&&(e=new n.U(n(12911))),("string"==typeof e||"function"==typeof Request&&e instanceof Request||"function"==typeof URL&&e instanceof URL)&&(e=fetch(e));let{instance:t,module:a}=await _(await e,{__proto__:null,"./watify_bg.js":{__proto__:null,__wbindgen_generic_0000000000000001:function(e,t){var n,r,a,i;return n=e,r=t,a=n>>>0,(l+=i=r)>=0x7ff00000&&((s=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0})).decode(),l=i),s.decode(o().subarray(a,a+i))},__wbindgen_init_externref_table:function(){let e=r.__wbindgen_externrefs,t=e.grow(4);e.set(0,void 0),e.set(t+0,void 0),e.set(t+1,null),e.set(t+2,!0),e.set(t+3,!1)}}});return r=t.exports,i=null,r.__wbindgen_start(),r}n.d(t,{default:()=>u,watify:()=>a})}};
2
+ //# sourceMappingURL=8233.1b63aaa17c6d19cd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"8233.1b63aaa17c6d19cd.js","sources":["webpack://@mdn/fred/./node_modules/@mdn/watify/watify.js"],"sourcesContent":["/* @ts-self-types=\"./watify.d.ts\" */\n\n/**\n * Parses the given WAT text and returns a vector of bytes on success or a JavaScript error on failure.\n *\n * # Arguments\n *\n * * `text` - A string slice containing the WAT text to be parsed.\n *\n * # Returns\n *\n * * `Ok(Vec<u8>)` containing the parsed byte code if parsing is successful.\n * * `Err(JsValue)` if parsing fails, with the error message converted into a JavaScript error value.\n * @param {string} text\n * @returns {Uint8Array}\n */\nexport function watify(text) {\n const ptr0 = passStringToWasm0(text, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.watify(ptr0, len0);\n if (ret[3]) {\n throw takeFromExternrefTable0(ret[2]);\n }\n var v2 = getArrayU8FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n return v2;\n}\nfunction __wbg_get_imports() {\n const import0 = {\n __proto__: null,\n __wbindgen_generic_0000000000000001: function(arg0, arg1) {\n // Cast intrinsic for `Ref(String) -> Externref`.\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_init_externref_table: function() {\n const table = wasm.__wbindgen_externrefs;\n const offset = table.grow(4);\n table.set(0, undefined);\n table.set(offset + 0, undefined);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n },\n };\n return {\n __proto__: null,\n \"./watify_bg.js\": import0,\n };\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nfunction getStringFromWasm0(ptr, len) {\n return decodeText(ptr >>> 0, len);\n}\n\nlet cachedUint8ArrayMemory0 = null;\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = cachedTextEncoder.encodeInto(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nfunction takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_externrefs.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\n}\n\nlet cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\ncachedTextDecoder.decode();\nconst MAX_SAFARI_DECODE_BYTES = 2146435072;\nlet numBytesDecoded = 0;\nfunction decodeText(ptr, len) {\n numBytesDecoded += len;\n if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {\n cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n cachedTextDecoder.decode();\n numBytesDecoded = len;\n }\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nconst cachedTextEncoder = new TextEncoder();\n\nif (!('encodeInto' in cachedTextEncoder)) {\n cachedTextEncoder.encodeInto = function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n };\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nlet wasmModule, wasmInstance, wasm;\nfunction __wbg_finalize_init(instance, module) {\n wasmInstance = instance;\n wasm = instance.exports;\n wasmModule = module;\n cachedUint8ArrayMemory0 = null;\n wasm.__wbindgen_start();\n return wasm;\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (!module.ok) {\n throw new Error(`failed to fetch Wasm: ${module.status} ${module.statusText} fetching '${module.url}'`);\n }\n\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n } catch (e) {\n const validResponse = expectedResponseType(module.type);\n\n if (validResponse && module.headers.get('Content-Type') !== 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else { throw e; }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n\n function expectedResponseType(type) {\n switch (type) {\n case 'basic': case 'cors': case 'default': return true;\n }\n return false;\n }\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (module !== undefined) {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n const instance = new WebAssembly.Instance(module, imports);\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n\n\n if (module_or_path !== undefined) {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n if (module_or_path === undefined) {\n module_or_path = new URL('watify_bg.wasm', import.meta.url);\n }\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync, __wbg_init as default };\n"],"names":["c","i","l","Uint8Array","TextDecoder","TextEncoder","_","Response","Error","WebAssembly","console","Object","n","Request","URL","fetch"],"mappings":"wLA4I8B,EA5HvB,SAAS,EAAO,CAAI,EACvB,IAAM,EAAO,AAmDjB,SAA2B,CAAG,CAAE,CAAM,CAAE,CAAO,EAC3C,GAAI,AAAY,SAAZ,EAAuB,CACvB,IAAM,EAAMA,EAAkB,MAAM,CAAC,GAC/B,EAAM,EAAO,EAAI,MAAM,CAAE,KAAO,EAGtC,OAFA,IAAuB,QAAQ,CAAC,EAAK,EAAM,EAAI,MAAM,EAAE,GAAG,CAAC,GAC3D,EAAkB,EAAI,MAAM,CACrB,CACX,CAEA,IAAI,EAAM,EAAI,MAAM,CAChB,EAAM,EAAO,EAAK,KAAO,EAEvB,EAAM,IAER,EAAS,EAEb,KAAO,EAAS,EAAK,IAAU,CAC3B,IAAM,EAAO,EAAI,UAAU,CAAC,GAC5B,GAAI,EAAO,IAAM,KACjB,EAAG,CAAC,EAAM,EAAO,CAAG,CACxB,CACA,GAAI,IAAW,EAAK,CACZ,AAAW,IAAX,GACA,GAAM,EAAI,KAAK,CAAC,EAAM,EAE1B,EAAM,EAAQ,EAAK,EAAK,EAAM,EAAS,AAAa,EAAb,EAAI,MAAM,CAAM,KAAO,EAC9D,IAAM,EAAO,IAAuB,QAAQ,CAAC,EAAM,EAAQ,EAAM,GAGjE,GAAU,AAFEA,EAAkB,UAAU,CAAC,EAAK,GAEhC,OAAO,CACrB,EAAM,EAAQ,EAAK,EAAK,EAAQ,KAAO,CAC3C,CAGA,OADA,EAAkB,EACX,CACX,EAtFmC,EAAM,EAAK,iBAAiB,CAAE,EAAK,kBAAkB,EAC9E,EAAO,EACP,EAAM,EAAK,MAAM,CAAC,EAAM,GAC9B,GAAI,CAAG,CAAC,EAAE,CACN,KAqFE,CArFF,OAoFyBC,EApFK,CAAG,CAAC,EAAE,CAqFlC,EAAQ,EAAK,qBAAqB,CAAC,GAAG,CAACA,GAC7C,EAAK,yBAAyB,CAACA,GACxB,CAvFkC,CAEzC,IAkF6BA,EAtDJ,EAAKC,EA5B1B,EAAK,CA4BgB,EA5BI,CAAG,CAAC,EAAE,CA4BLA,EA5BO,CAAG,CAAC,EAAE,CA6B3C,KAAc,EACP,IAAuB,QAAQ,CAAC,EAAM,EAAG,EAAM,EAAIA,IA9Bb,KAAK,GAElD,OADA,EAAK,eAAe,CAAC,CAAG,CAAC,EAAE,CAAE,EAAG,CAAC,EAAE,CAAM,GAClC,CACX,CAkCA,IAAI,EAA0B,KAC9B,SAAS,IAIL,MAHI,CAA4B,OAA5B,GAAoC,AAAuC,IAAvC,EAAwB,UAAU,AAAK,GAC3E,GAA0B,IAAIC,WAAW,EAAK,MAAM,CAAC,MAAM,GAExD,CACX,CA6CA,IAAI,EAAoB,IAAIC,YAAY,QAAS,CAAE,UAAW,GAAM,MAAO,EAAK,GAChF,EAAkB,MAAM,GAExB,IAAI,EAAkB,EAWhBJ,EAAoB,IAAIK,WAE1B,AAAE,gBAAgBL,GAClBA,CAAAA,EAAkB,UAAU,CAAG,SAAU,CAAG,CAAE,CAAI,EAC9C,IAAM,EAAMA,EAAkB,MAAM,CAAC,GAErC,OADA,EAAK,GAAG,CAAC,GACF,CACH,KAAM,EAAI,MAAM,CAChB,QAAS,EAAI,MAAM,AACvB,CACJ,GAGJ,IAAI,EAAkB,EAYtB,eAAeM,EAAW,CAAM,CAAE,CAAO,EACrC,GAAI,AAAoB,YAApB,OAAOC,UAA2B,aAAkBA,SAAU,CAC9D,GAAI,CAAC,EAAO,EAAE,CACV,MAAM,AAAIC,MAAM,CAAC,sBAAsB,EAAE,EAAO,MAAM,CAAC,CAAC,EAAE,EAAO,UAAU,CAAC,WAAW,EAAE,EAAO,GAAG,CAAC,CAAC,CAAC,EAG1G,GAAI,AAA4C,YAA5C,OAAOC,YAAY,oBAAoB,CACvC,GAAI,CACA,OAAO,MAAMA,YAAY,oBAAoB,CAAC,EAAQ,EAC1D,CAAE,MAAO,EAAG,CAGR,GAAI,AAFkB,AAqBlC,SAA8B,CAAI,EAC9B,OAAQ,GACJ,IAAK,QAAS,IAAK,OAAQ,IAAK,UAAW,MAAO,EACtD,CACA,MAAO,EACX,EA1BuD,EAAO,IAAI,GAEjC,AAAuC,qBAAvC,EAAO,OAAO,CAAC,GAAG,CAAC,gBACpCC,QAAQ,IAAI,CAAC,oMAAqM,QAE7M,MAAM,CACnB,CAGJ,IAAM,EAAQ,MAAM,EAAO,WAAW,GACtC,OAAO,MAAMD,YAAY,WAAW,CAAC,EAAO,EAChD,CAAO,CACH,IAAM,EAAW,MAAMA,YAAY,WAAW,CAAC,EAAQ,UAEvD,AAAI,aAAoBA,YAAY,QAAQ,CACjC,CAAE,WAAU,QAAO,EAEnB,CAEf,CAQJ,CAsBA,eAAe,EAAW,CAAc,EACpC,GAAI,AAAS,SAAT,EAAoB,OAAO,CAGR,UAAnB,IACIE,OAAO,cAAc,CAAC,KAAoBA,OAAO,SAAS,CACzD,CAAC,gBAAc,CAAC,CAAG,EAEpBD,QAAQ,IAAI,CAAC,8FAIjB,AAAmB,SAAnB,GACA,GAAiB,IAAAE,EAAA,EAAAA,EAAA,SAIjB,CAA0B,UAA1B,OAAO,GAAgC,AAAmB,YAAnB,OAAOC,SAA0B,aAA0BA,SAAa,AAAe,YAAf,OAAOC,KAAsB,aAA0BA,GAAG,GACzK,GAAiBC,MAAM,EAAc,EAGzC,GAAM,CAAE,UAAQ,CAAE,QAAM,CAAE,CAAG,MAAMT,EAAW,MAAM,EAzL7C,CACH,UAAW,KACX,iBAnBY,CACZ,UAAW,KACX,oCAAqC,SAAS,CAAI,CAAE,CAAI,MA0BpC,EAAK,EA2Db,EAAK,EAlFb,OAuBgB,EAxBe,EAwBV,EAxBgB,EAmF7B,EA1DE,IAAQ,EA2D1B,IADqB,EA1DQ,CA2DR,GAHO,aAMxB,AADA,GAAoB,IAAIF,YAAY,QAAS,CAAE,UAAW,GAAM,MAAO,EAAK,EAAC,EAC3D,MAAM,GACxB,EAAkB,GAEf,EAAkB,MAAM,CAAC,IAAuB,QAAQ,CAAC,EAAK,EAAM,GAxFvE,EACA,gCAAiC,WAC7B,IAAM,EAAQ,EAAK,qBAAqB,CAClC,EAAS,EAAM,IAAI,CAAC,GAC1B,EAAM,GAAG,CAAC,EAAG,QACb,EAAM,GAAG,CAAC,EAAS,EAAG,QACtB,EAAM,GAAG,CAAC,EAAS,EAAG,MACtB,EAAM,GAAG,CAAC,EAAS,EAAG,IACtB,EAAM,GAAG,CAAC,EAAS,EAAG,GAC1B,CACJ,CAIA,GAwLA,OAzFA,EAAO,AAyFoB,EAzFX,OAAO,CAEvB,EAA0B,KAC1B,EAAK,gBAAgB,GACd,CAsFX,C"}