@mdn/fred 2.5.0 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/components/a11y-menu/server.js +2 -2
  3. package/components/breadcrumbs/server.js +6 -1
  4. package/components/collection-save-button/element.js +15 -0
  5. package/components/color-theme/element.js +17 -1
  6. package/components/compat-table/element.js +10 -1
  7. package/components/content-section/server.css +5 -0
  8. package/components/curriculum-landing/server.js +4 -1
  9. package/components/dropdown/element.js +12 -1
  10. package/components/featured-articles/server.js +10 -3
  11. package/components/footer/server.js +6 -1
  12. package/components/generic-about/server.js +1 -0
  13. package/components/generic-toc/server.js +6 -1
  14. package/components/language-always-redirect-button/element.js +2 -0
  15. package/components/language-switcher/element.js +5 -0
  16. package/components/latest-news/server.js +10 -3
  17. package/components/login-button/element.js +1 -1
  18. package/components/menu/server.js +3 -1
  19. package/components/observatory-form/element.js +3 -0
  20. package/components/observatory-results/element.js +6 -1
  21. package/components/observatory-results/rating.js +6 -1
  22. package/components/placement-top/element.js +16 -4
  23. package/components/playground/element.js +17 -4
  24. package/components/recent-contributions/server.js +4 -1
  25. package/components/reference-toc/server.js +5 -1
  26. package/components/scrim-inline/element.js +13 -1
  27. package/components/sidebar-filter/element.js +11 -0
  28. package/components/translation-banner/server.js +4 -1
  29. package/components/user-menu/element.js +1 -0
  30. package/components/viewed-controller/viewed-controller.js +15 -59
  31. package/components/viewed-controller/viewed-observer.js +79 -0
  32. package/hooks/glean-init.js +49 -6
  33. package/l10n/locales/zh-CN.ftl +317 -1
  34. package/out/service-worker.js +1 -1
  35. package/out/static/client/{2173.c74593faf7e14cbc.js → 2173.a662dd40657c8426.js} +2 -2
  36. package/out/static/client/{2173.c74593faf7e14cbc.js.map → 2173.a662dd40657c8426.js.map} +1 -1
  37. package/out/static/client/{2868.b09544148fff25a1.js → 2868.03299f12d5927ed2.js} +2 -2
  38. package/out/static/client/{2868.b09544148fff25a1.js.map → 2868.03299f12d5927ed2.js.map} +1 -1
  39. package/out/static/client/{291.91650ffed3a60424.js → 291.c90e43b3c10a9a1f.js} +27 -16
  40. package/out/static/client/291.c90e43b3c10a9a1f.js.map +1 -0
  41. package/out/static/client/{3259.ac8a5539251c647a.js → 3259.c4b809cd884ad515.js} +29 -24
  42. package/out/static/client/3259.c4b809cd884ad515.js.map +1 -0
  43. package/out/static/client/{3775.c64e09b2fc1d9b21.js → 3775.cf93e968f166d25a.js} +2 -1
  44. package/out/static/client/{3775.c64e09b2fc1d9b21.js.map → 3775.cf93e968f166d25a.js.map} +1 -1
  45. package/out/static/client/{4060.9a7bb116e3112c13.js → 4060.a23acd149888555c.js} +2 -2
  46. package/out/static/client/{4060.9a7bb116e3112c13.js.map → 4060.a23acd149888555c.js.map} +1 -1
  47. package/out/static/client/4249.19f86ee6b57a13b0.js +2 -0
  48. package/out/static/client/4249.19f86ee6b57a13b0.js.map +1 -0
  49. package/out/static/client/{4759.8981c79d33088d8f.js → 4759.5852733a45132491.js} +2 -2
  50. package/out/static/client/{4759.8981c79d33088d8f.js.map → 4759.5852733a45132491.js.map} +1 -1
  51. package/out/static/client/{4920.033c028023478df5.js → 4920.929203da4613c89a.js} +3 -2
  52. package/out/static/client/4920.929203da4613c89a.js.map +1 -0
  53. package/out/static/client/{5183.6c532a6e7b0d0bbb.js → 5183.48a6059ffe2931f0.js} +12 -12
  54. package/out/static/client/5183.48a6059ffe2931f0.js.map +1 -0
  55. package/out/static/client/{544.1ed814181b24bcc8.js → 544.2ccdc928c5292631.js} +3 -3
  56. package/out/static/client/544.2ccdc928c5292631.js.map +1 -0
  57. package/out/static/client/{5667.332b2c6c10792ad6.js → 5667.edd77c81ec38a7e2.js} +5 -4
  58. package/out/static/client/5667.edd77c81ec38a7e2.js.map +1 -0
  59. package/out/static/client/5685.d30658d4c274ac13.js +4 -0
  60. package/out/static/client/5685.d30658d4c274ac13.js.map +1 -0
  61. package/out/static/client/{6002.60280d36f6ea71ff.js → 6002.bb83fdc66501b6e4.js} +27 -27
  62. package/out/static/client/6002.bb83fdc66501b6e4.js.map +1 -0
  63. package/out/static/client/{6067.a60fb66b75579c98.js → 6067.169a9ec1f47871ae.js} +3 -3
  64. package/out/static/client/6067.169a9ec1f47871ae.js.map +1 -0
  65. package/out/static/client/{8364.13d1d6770264c970.js → 8364.f7862244a6ff6a1b.js} +3 -3
  66. package/out/static/client/8364.f7862244a6ff6a1b.js.map +1 -0
  67. package/out/static/client/{9204.f8aa5d9f8a79f3d4.js → 9204.f45896951abfbd28.js} +3 -3
  68. package/out/static/client/{9204.f8aa5d9f8a79f3d4.js.map → 9204.f45896951abfbd28.js.map} +1 -1
  69. package/out/static/client/9324.9646c5839948c8ff.js +27 -0
  70. package/out/static/client/{9324.61778c81f15bcebc.js.map → 9324.9646c5839948c8ff.js.map} +1 -1
  71. package/out/static/client/9456.a17794342ff9086a.js +319 -0
  72. package/out/static/client/9456.a17794342ff9086a.js.map +1 -0
  73. package/out/static/client/index.c41c45d10cf2b50b.js +221 -0
  74. package/out/static/client/index.c41c45d10cf2b50b.js.map +1 -0
  75. package/out/static/client/{runtime.5a92d4f860d6d798.js → runtime.796d2e8ab20fb93f.js} +2 -2
  76. package/out/static/client/{runtime.5a92d4f860d6d798.js.map → runtime.796d2e8ab20fb93f.js.map} +1 -1
  77. package/out/static/client/stats.json +134 -134
  78. package/out/static/client/{styles-content-section.049c2352791fac9b.css → styles-content-section.cd5635d274b730e9.css} +2 -2
  79. package/out/static/client/{styles-content-section.049c2352791fac9b.css.map → styles-content-section.cd5635d274b730e9.css.map} +1 -1
  80. package/out/static/client/{styles-global.64aa0c760d2688b4.js → styles-global.2a17ab4cc47bca1f.js} +1 -1
  81. package/out/static/client/styles-global.79b14873ea7ab386.css +2 -0
  82. package/out/static/client/{styles-global.274bf4a7ba3e88ae.css.map → styles-global.79b14873ea7ab386.css.map} +1 -1
  83. package/out/static/ssr/9456.js +317 -1
  84. package/out/static/ssr/9456.js.map +1 -1
  85. package/out/static/ssr/index.js +209 -145
  86. package/out/static/ssr/index.js.map +1 -1
  87. package/out/static/ssr/stats.json +4 -4
  88. package/package.json +6 -6
  89. package/out/static/client/291.91650ffed3a60424.js.map +0 -1
  90. package/out/static/client/3259.ac8a5539251c647a.js.map +0 -1
  91. package/out/static/client/4920.033c028023478df5.js.map +0 -1
  92. package/out/static/client/5183.6c532a6e7b0d0bbb.js.map +0 -1
  93. package/out/static/client/544.1ed814181b24bcc8.js.map +0 -1
  94. package/out/static/client/5649.00f25ce181894101.js +0 -2
  95. package/out/static/client/5649.00f25ce181894101.js.map +0 -1
  96. package/out/static/client/5667.332b2c6c10792ad6.js.map +0 -1
  97. package/out/static/client/5685.46c8d178d072b8ac.js +0 -4
  98. package/out/static/client/5685.46c8d178d072b8ac.js.map +0 -1
  99. package/out/static/client/6002.60280d36f6ea71ff.js.map +0 -1
  100. package/out/static/client/6067.a60fb66b75579c98.js.map +0 -1
  101. package/out/static/client/8364.13d1d6770264c970.js.map +0 -1
  102. package/out/static/client/9324.61778c81f15bcebc.js +0 -26
  103. package/out/static/client/9456.dd8c12ddf52e2a7d.js +0 -3
  104. package/out/static/client/9456.dd8c12ddf52e2a7d.js.map +0 -1
  105. package/out/static/client/index.ae68bec0e2489b62.js +0 -221
  106. package/out/static/client/index.ae68bec0e2489b62.js.map +0 -1
  107. package/out/static/client/styles-global.274bf4a7ba3e88ae.css +0 -2
  108. /package/out/static/client/{291.91650ffed3a60424.js.LICENSE.txt → 291.c90e43b3c10a9a1f.js.LICENSE.txt} +0 -0
  109. /package/out/static/client/{5183.6c532a6e7b0d0bbb.js.LICENSE.txt → 5183.48a6059ffe2931f0.js.LICENSE.txt} +0 -0
  110. /package/out/static/client/{6067.a60fb66b75579c98.js.LICENSE.txt → 6067.169a9ec1f47871ae.js.LICENSE.txt} +0 -0
  111. /package/out/static/client/{8364.13d1d6770264c970.js.LICENSE.txt → 8364.f7862244a6ff6a1b.js.LICENSE.txt} +0 -0
  112. /package/out/static/client/{index.ae68bec0e2489b62.js.LICENSE.txt → index.c41c45d10cf2b50b.js.LICENSE.txt} +0 -0
@@ -1,11 +1,11 @@
1
- export const __rspack_esm_id="3259";export const __rspack_esm_ids=["3259"];export const __webpack_modules__={77564(t,e,a){a.d(e,{A:()=>y});var s=a(97825),r=a(31601),o=a.n(r),i=a(76314),l=a.n(i),n=a(39807),d=a(67168),c=a(4417),b=a.n(c),p=new a.U(a(9677)),h=new a.U(a(46843)),g=l()(o());g.i(n.A),g.i(d.A);var u=b()(p),m=b()(h);g.push([t.id,`:host{line-height:var(--font-line-content)}.scan-result{column-gap:2rem;display:grid;grid-template-areas:"grade data actions";grid-template-columns:auto 3fr 1fr;justify-content:space-between;max-width:var(--max-width)}.scan-result a{color:var(--color-text-primary)}.scan-result{background-color:var(--color-background-primary);border-radius:.3rem;margin-bottom:3rem;padding:2rem}@media (width <= 1200px){.scan-result{align-items:flex-start;grid-template-areas:"grade data actions";grid-template-columns:auto 1fr auto;justify-content:space-between;row-gap:calc(var(--spacing)/2)}}@media (width <= 992px){.scan-result{grid-template-areas:"grade data " "grade actions";grid-template-columns:min-content 1fr}}.trend{margin-top:1rem}.arrow-down{color:var(--observatory-arrow-down-color)}.arrow-up{color:var(--observatory-arrow-up-color)}h2{font-size:var(--font-size-large);font-weight:var(--font-weight-bold);margin-bottom:1rem;margin-top:1.5rem}h2:before{background-color:var(--color-text-primary);content:"";display:inline-block;-webkit-mask-position:left;mask-position:left;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}h2 .host{font-weight:var(--font-weight-normal)}h2.summary:before{height:1.4rem;-webkit-mask-image:url(${u});mask-image:url(${u});width:2rem}h2.result:before{height:1.2rem;-webkit-mask-image:url(${m});mask-image:url(${m});width:2rem}code{font-weight:var(--font-weight-bold)}.grade-trend{grid-area:grade;justify-self:start}.grade-trend .overall{position:relative}.data{grid-area:data}.actions{grid-area:actions}@media (width <= 992px){.actions{margin-top:1rem}}mdn-observatory-rescan-button{min-width:30rem}.info-tooltip{background:none;border:none;cursor:pointer;display:inline-block}.scan-another{font-size:var(--font-size-small);font-weight:var(--font-weight-normal);margin-top:1.2rem}.grade,.label{font-weight:var(--font-weight-bold)}.grade{background:var(--grade-bg);border:1px solid var(--grade-border);border-radius:.2em;color:var(--grade-border);display:inline-block;font-size:var(--font-size-large);height:5rem;line-height:5rem;text-align:center;width:5rem}.grade-a{--grade-bg:var(--observatory-grade-a-bg);--grade-border:var(--observatory-grade-a-border)}.grade-b{--grade-bg:var(--observatory-grade-b-bg);--grade-border:var(--observatory-grade-b-border)}.grade-c{--grade-bg:var(--observatory-grade-c-bg);--grade-border:var(--observatory-grade-c-border)}.grade-d{--grade-bg:var(--observatory-grade-d-bg);--grade-border:var(--observatory-grade-d-border)}.grade-f{--grade-bg:var(--observatory-grade-f-bg);--grade-border:var(--observatory-grade-f-border)}.tooltip-popup{--csstools-light-dark-toggle-fd181dce-0:var(--csstools-color-scheme--light) #696969;--color-tooltip:var(--csstools-light-dark-toggle-fd181dce-0,#b3b3b3);--csstools-light-dark-toggle-fd181dce-1:var(--csstools-color-scheme--light) #1b1b1b;--color-tooltip-highlight:var(--csstools-light-dark-toggle-fd181dce-1,#fff);--csstools-light-dark-toggle-fd181dce-2:var(--csstools-color-scheme--light) #fff;--color-bg-tooltip:var(--csstools-light-dark-toggle-fd181dce-2,#1b1b1b);background-color:var(--color-bg-tooltip);border-radius:var(--border-radius);border-width:0;color:var(--color-tooltip);inset:unset;left:50%;line-height:var(--font-line-content);margin-top:.5rem;max-width:min(100vw,20rem);overflow:visible;padding:1.5rem;position:absolute;text-align:center;transform:translateX(-50%);width:max-content;z-index:1}@supports (color:light-dark(red,red)){.tooltip-popup{--color-tooltip:light-dark(#b3b3b3,#696969);--color-tooltip-highlight:light-dark(#fff,#1b1b1b);--color-bg-tooltip:light-dark(#1b1b1b,#fff)}}@supports not (color:light-dark(tan,tan)){.tooltip-popup *{--csstools-light-dark-toggle-fd181dce-0:var(--csstools-color-scheme--light) #696969;--color-tooltip:var(--csstools-light-dark-toggle-fd181dce-0,#b3b3b3);--csstools-light-dark-toggle-fd181dce-1:var(--csstools-color-scheme--light) #1b1b1b;--color-tooltip-highlight:var(--csstools-light-dark-toggle-fd181dce-1,#fff);--csstools-light-dark-toggle-fd181dce-2:var(--csstools-color-scheme--light) #fff;--color-bg-tooltip:var(--csstools-light-dark-toggle-fd181dce-2,#1b1b1b)}}.tooltip-popup .arrow{margin-left:-1rem;margin-top:-2rem;padding:0;position:absolute;fill:var(--color-bg-tooltip)}.tooltip-popup table{border:0;border-collapse:collapse;white-space:nowrap;width:10rem}:is(.tooltip-popup table) tr{color:var(--color-tooltip);font-size:var(--font-size-small)}.current:is(:is(.tooltip-popup table) tr){color:var(--color-tooltip-highlight);font-weight:var(--font-weight-bold)}:is(.tooltip-popup table) td,:is(.tooltip-popup table) th{background-color:unset;border:0;font-weight:var(--font-body);text-align:left;width:50%}:is(.tooltip-popup table) th{font-size:var(--font-size-normal);padding:0 0 .75rem}:is(.tooltip-popup table) td{padding:0}:is(:is(.tooltip-popup table) td) svg{vertical-align:-.3rem}.scroll-container{margin-bottom:1.5rem;margin-top:.8rem;overflow-x:auto;overscroll-behavior-x:none}.detail-header{display:flex;gap:.5rem;padding:0 1.5rem 0 0}.detail-header .arrow{color:var(--color-text-secondary)}.detail-header .detail-header-title{font-weight:var(--font-weight-bold);padding-right:.2rem}.detail-header p{margin:1rem 0}:is(.obs-pass-icon svg.pass) path{fill:var(--observatory-pass-icon-bg)}:is(.obs-pass-icon svg.pass) circle{fill:var(--observatory-pass-icon-color)}:is(.obs-pass-icon svg.fail) path{fill:var(--observatory-fail-icon-bg)}:is(.obs-pass-icon svg.fail) circle{fill:var(--observatory-fail-icon-color)}.footnote{font-size:var(--font-size-small);margin-top:1rem}.scan-results table{background:var(--observatory-table-bg);border:none;border-collapse:collapse;min-width:calc(992px - 14rem);width:100%}:is(.scan-results table) th{background:var(--observatory-table-header-bg);color:var(--color-text-secondary);font-weight:500;vertical-align:top}:is(:is(.scan-results table) th) tr{background-color:unset}:is(.scan-results table) tr:nth-child(2n){background-color:var(--observatory-table-bg-alternate)}:is(.scan-results table) td{overflow-wrap:anywhere;padding:.5rem 1.5rem;vertical-align:top}.cookie-name:is(:is(.scan-results table) td):first-child{max-width:15rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.score:is(:is(.scan-results table) td)>span{display:flex;flex-direction:row;justify-content:space-between}:is(.scan-results table) a{color:var(--color-text-primary);-webkit-text-decoration:underline;text-decoration:underline;text-decoration-color:var(--color-text-secondary)}:is(:is(.scan-results table) a):active,:is(:is(.scan-results table) a):hover{-webkit-text-decoration:none;text-decoration:none}:is(.scan-results table) span.not-counted{color:var(--color-text-secondary)}:is(:is(.scan-results table) span.not-counted) a{-webkit-text-decoration:none;text-decoration:none}:is(.tests:is(.scan-results table) th,.tests:is(.scan-results table) td):first-of-type{width:25%}.tests:is(.scan-results table) td.score{white-space:nowrap}:is(.csp:is(.scan-results table) th,.csp:is(.scan-results table) td):first-of-type{width:45%}:is(.headers:is(.scan-results table) th,.headers:is(.scan-results table) td):first-of-type{width:30%}:is(.cookies:is(.scan-results table) th,.cookies:is(.scan-results table) td):nth-of-type(n+3){text-align:center}:is(.scan-results table) td,:is(.scan-results table) th{border:none;padding:1.5rem}:is(:is(.scan-results table) th,:is(.scan-results table) td) :first-child{margin-top:0}:is(:is(.scan-results table) th,:is(.scan-results table) td) :last-child{margin-bottom:0}:is(.scan-results table) .icon{height:1.3rem;width:1.3rem}@media (width <= 426px){:is(:is(:is(.scan-results table) td) .iso-date) code{font-size:x-small}}@media not print{@media (width <= 992px){.scan-results table{min-width:0}:is(.scan-results table) thead{display:none}:is(.scan-results table) tbody{display:block}:is(.scan-results table) tr{display:grid;grid-template-columns:max-content auto}:is(.scan-results table) tr:nth-of-type(odd){background:var(--observatory-table-header-bg)}:is(.scan-results table) td{column-gap:2em;display:grid;grid-auto-flow:column;grid-column:span 2;grid-template-columns:subgrid}:is(:is(.scan-results table) td) .humanized-duration{display:none}:is(.scan-results table) td:before{content:attr(data-header);display:inline;font-weight:var(--font-weight-bold)}}:is(.tests:is(.scan-results table),.csp:is(.scan-results table),.headers:is(.scan-results table),.cookies:is(.scan-results table)) td:first-of-type{width:auto}:is(.scan-results table) td:not(:last-of-type){padding-bottom:0}:is(.scan-results table) td:nth-of-type(n+2){padding-top:.75rem}.cookies:is(.scan-results table) td:nth-of-type(n+3){text-align:left}:is(.scan-results table) td.score{display:grid}:is(:is(.scan-results table) td.score)>span{display:block}:is(:is(.scan-results table) td.score) .obs-pass-icon{display:inline-block;height:1.5em;vertical-align:top}}ol.tabs-list{column-gap:3rem;display:grid;grid-template-areas:"tab-0 tab-1 tab-2 tab-3 tab-4 tab-5 ." "hr hr hr hr hr hr hr " "mod mod mod mod mod mod mod";grid-template-columns:repeat(6,max-content) 1fr;margin:0;overflow-x:auto;overscroll-behavior-x:none;padding:0}@media (width <= 992px){ol.tabs-list{column-gap:1.75rem;grid-template-columns:repeat(6,max-content) auto}}ol.tabs-list:before{border:none;border-top:1px solid var(--color-border-primary);content:"";grid-area:hr;margin:0;width:100%}ol.tabs-list input[type=radio]:not(:checked)~.tab-content{display:none}ol.tabs-list li.tabs-list-item{display:contents}:is(ol.tabs-list li.tabs-list-item)>input:checked+label{border-bottom:2px solid var(--observatory-accent);color:var(--color-text-primary)}:is(ol.tabs-list li.tabs-list-item)>input:not(:checked)+label:hover{border-bottom:2px solid var(--observatory-accent-light);color:var(--color-text-primary)}:is(ol.tabs-list li.tabs-list-item)>input:checked:focus-visible+label{outline-color:var(--accent-primary);outline-offset:1px;outline-style:auto}:is(ol.tabs-list li.tabs-list-item)>input:not(:checked)+label{color:var(--color-text-secondary);opacity:.775}:is(ol.tabs-list li.tabs-list-item)>label{cursor:pointer;height:2.2rem;width:max-content}#tabs-0:is(ol.tabs-list li.tabs-list-item)>input,#tabs-0:is(ol.tabs-list li.tabs-list-item)>label{grid-area:tab-0}#tabs-1:is(ol.tabs-list li.tabs-list-item)>input,#tabs-1:is(ol.tabs-list li.tabs-list-item)>label{grid-area:tab-1}#tabs-2:is(ol.tabs-list li.tabs-list-item)>input,#tabs-2:is(ol.tabs-list li.tabs-list-item)>label{grid-area:tab-2}#tabs-3:is(ol.tabs-list li.tabs-list-item)>input,#tabs-3:is(ol.tabs-list li.tabs-list-item)>label{grid-area:tab-3}#tabs-4:is(ol.tabs-list li.tabs-list-item)>input,#tabs-4:is(ol.tabs-list li.tabs-list-item)>label{grid-area:tab-4}#tabs-5:is(ol.tabs-list li.tabs-list-item)>input,#tabs-5:is(ol.tabs-list li.tabs-list-item)>label{grid-area:tab-5}:is(ol.tabs-list li.tabs-list-item)>section.tab-content{grid-area:mod;left:0;margin:0;position:sticky;width:calc(100vw - 18rem)}@media (width > 1200px){:is(ol.tabs-list li.tabs-list-item)>section.tab-content{width:100%}}@media (width <= 769px){:is(ol.tabs-list li.tabs-list-item)>section.tab-content{width:calc(100vw - 2rem)}}@media print{.scan-result{grid-template-columns:1fr 3fr!important;padding:.5rem!important}.obs-pass-icon svg{height:1.5em!important;width:1.5em!important}.scroll-container{overflow:hidden!important}ol.tabs-list input[type=radio]:not(:checked)~.tab-content{display:block!important}ol.tabs-list input[type=radio]{display:none!important}li.tabs-list-item input:checked+label,li.tabs-list-item input:checked+label:hover,li.tabs-list-item input:checked:focus-visible+label,li.tabs-list-item input:not(:checked)+label,li.tabs-list-item input:not(:checked)+label:hover{color:var(--color-text-primary)!important;display:block!important;font-size:1.5rem!important;font-weight:700!important;-webkit-text-decoration:none!important;text-decoration:none!important}ol.tabs-list,ol.tabs-list li.tabs-list-item{display:block!important}td,th{padding:.5rem!important}}`,""]);let y=(0,s.AH)([g.toString()])},65225(t,e,a){a.d(e,{A:()=>n});var s=a(97825),r=a(31601),o=a.n(r),i=a(76314),l=a.n(i)()(o());l.push([t.id,"@media print{.observatory-results-wrapper{background-color:#fff!important;grid-template-columns:[full-start] minmax(0,1fr) [full-end]!important}.observatory-results{grid-area:full!important}.actions,.button-wrap,.observatory-results-toc,.page-layout__header,.page_layout__banner,.rescan-button{display:none!important}}",""]);let n=(0,s.AH)([l.toString()])},46843(t,e,a){t.exports=a.p+"results-icon.cdcd65a79b167843.svg"},9677(t,e,a){t.exports=a.p+"summary-icon.70312ad5ea1a4289.svg"},13430(t,e,a){a.r(e),a.d(e,{MDNObservatoryResults:()=>MDNObservatoryResults});var s=a(31011),r=a(97825),o=a(99502),i=a(77564),l=a(65225),n=a(47571);let d=(0,r.JW)`<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" fill="none" role="presentation" viewBox="0 0 22 22"><path fill="#dfd172" d="m18 0-1.26 2.75L14 4l2.74 1.26L18 8l1.25-2.74L22 4l-2.75-1.25M8 3 5.5 8.5 0 11l5.5 2.5L8 19l2.5-5.5L16 11l-5.5-2.5M18 14l-1.26 2.74L14 18l2.74 1.25L18 22l1.25-2.75L22 18l-2.75-1.26"/></svg>`,c=(0,r.JW)`<svg width="22" height="22" class="arrow" role="presentation" viewBox="0 0 22 22"><path id="path1" d="M12.124 1.733a1 1 0 0 1 1.673 0l8.811 13.423a1 1 0 0 1-.835 1.548l-17.614.007a1 1 0 0 1-.837-1.548Z"/></svg>`,b=[{grade:"A+",scoreText:"100+",score:100,stars:!0},{grade:"A",scoreText:"90",score:90,stars:!0},{grade:"A-",scoreText:"85",score:85,stars:!0},{grade:"B+",scoreText:"80",score:80},{grade:"B",scoreText:"70",score:70},{grade:"B-",scoreText:"65",score:65},{grade:"C+",scoreText:"60",score:60},{grade:"C",scoreText:"50",score:50},{grade:"C-",scoreText:"45",score:45},{grade:"D+",scoreText:"40",score:40},{grade:"D",scoreText:"30",score:30},{grade:"D-",scoreText:"25",score:25},{grade:"F",scoreText:"0",score:0}],p=["content-security-policy","cookies","cross-origin-resource-sharing","redirection","referrer-policy","strict-transport-security","subresource-integrity","x-content-type-options","x-frame-options","cross-origin-resource-policy"];a(14416),a(58623);let h=["unsafeInline","unsafeEval","unsafeObjects","unsafeInlineStyle","insecureSchemeActive","insecureSchemePassive","antiClickjacking","defaultNone","insecureBaseUri","insecureFormAction","strictDynamic"],g=new Set(["insecureBaseUri","insecureFormAction","insecureSchemeActive","insecureSchemePassive","unsafeEval","unsafeInline","unsafeInlineStyle","unsafeObjects"]);a(1879),a(20141),a(50117),a(37077);let MDNObservatoryResults=class MDNObservatoryResults extends r.WF{static styles=[i.A,l.A];constructor(){super(),this.host=null,this.selectedTab=0,this._usePostInApi=!1}static properties={host:{type:String},selectedTab:{state:!0,type:Number},_usePostInApi:{state:!0,type:Boolean}};_apiTask=new s.YZ(this,{args:()=>[this.host],task:async([t],{signal:e})=>{if(!t)throw Error("No host provided");try{let a=await fetch(`${o.Q}/api/v2/analyze?host=${encodeURIComponent(t)}`,{signal:e,method:this._usePostInApi?"POST":"GET"});if(!a.ok){let t=`${a.status}: ${a.statusText}`;try{let e=await a.json();e.error&&(t=e.message)}catch{}throw Error(t)}return await a.json()}catch(t){throw Error("Observatory API request for scan data failed",{cause:t})}}});connectedCallback(){super.connectedCallback(),this._updateSelectedTab=this._updateSelectedTab.bind(this),this.selectedTab=this._getSelectedTab(),globalThis.addEventListener("hashchange",this._updateSelectedTab)}disconnectedCallback(){super.disconnectedCallback(),globalThis.removeEventListener("hashchange",this._updateSelectedTab)}firstUpdated(){let t=new URLSearchParams(globalThis.location.search);this.host=t.get("host")}_updateSelectedTab(){this.selectedTab=this._getSelectedTab()}_getSelectedTab(){let t=["scoring","csp","cookies","headers","history","benchmark"].indexOf(globalThis.location.hash.replace("#",""));return -1===t?0:t}async _rescan(t){t.preventDefault(),this.host&&(this._usePostInApi=!0,this._apiTask.run())}_handleTabSelect(t,e){this.selectedTab=t,globalThis.history.replaceState("","",globalThis.location.pathname+globalThis.location.search+"#"+e)}render(){return this.host?this._apiTask.render({pending:()=>(0,r.qy)` <label class="visually-hidden" for="progress-bar">
1
+ export const __rspack_esm_id="3259";export const __rspack_esm_ids=["3259"];export const __webpack_modules__={77564(t,e,a){a.d(e,{A:()=>y});var s=a(97825),r=a(31601),o=a.n(r),i=a(76314),l=a.n(i),n=a(39807),d=a(67168),c=a(4417),b=a.n(c),p=new a.U(a(9677)),h=new a.U(a(46843)),g=l()(o());g.i(n.A),g.i(d.A);var u=b()(p),m=b()(h);g.push([t.id,`:host{line-height:var(--font-line-content)}.scan-result{column-gap:2rem;display:grid;grid-template-areas:"grade data actions";grid-template-columns:auto 3fr 1fr;justify-content:space-between;max-width:var(--max-width)}.scan-result a{color:var(--color-text-primary)}.scan-result{background-color:var(--color-background-primary);border-radius:.3rem;margin-bottom:3rem;padding:2rem}@media (width <= 1200px){.scan-result{align-items:flex-start;grid-template-areas:"grade data actions";grid-template-columns:auto 1fr auto;justify-content:space-between;row-gap:calc(var(--spacing)/2)}}@media (width <= 992px){.scan-result{grid-template-areas:"grade data " "grade actions";grid-template-columns:min-content 1fr}}.trend{margin-top:1rem}.arrow-down{color:var(--observatory-arrow-down-color)}.arrow-up{color:var(--observatory-arrow-up-color)}h2{font-size:var(--font-size-large);font-weight:var(--font-weight-bold);margin-bottom:1rem;margin-top:1.5rem}h2:before{background-color:var(--color-text-primary);content:"";display:inline-block;-webkit-mask-position:left;mask-position:left;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}h2 .host{font-weight:var(--font-weight-normal)}h2.summary:before{height:1.4rem;-webkit-mask-image:url(${u});mask-image:url(${u});width:2rem}h2.result:before{height:1.2rem;-webkit-mask-image:url(${m});mask-image:url(${m});width:2rem}code{font-weight:var(--font-weight-bold)}.grade-trend{grid-area:grade;justify-self:start}.grade-trend .overall{position:relative}.data{grid-area:data}.actions{grid-area:actions}@media (width <= 992px){.actions{margin-top:1rem}}mdn-observatory-rescan-button{min-width:30rem}.info-tooltip{background:none;border:none;cursor:pointer;display:inline-block}.scan-another{font-size:var(--font-size-small);font-weight:var(--font-weight-normal);margin-top:1.2rem}.grade,.label{font-weight:var(--font-weight-bold)}.grade{background:var(--grade-bg);border:1px solid var(--grade-border);border-radius:.2em;color:var(--grade-border);display:inline-block;font-size:var(--font-size-large);height:5rem;line-height:5rem;text-align:center;width:5rem}.grade-a{--grade-bg:var(--observatory-grade-a-bg);--grade-border:var(--observatory-grade-a-border)}.grade-b{--grade-bg:var(--observatory-grade-b-bg);--grade-border:var(--observatory-grade-b-border)}.grade-c{--grade-bg:var(--observatory-grade-c-bg);--grade-border:var(--observatory-grade-c-border)}.grade-d{--grade-bg:var(--observatory-grade-d-bg);--grade-border:var(--observatory-grade-d-border)}.grade-f{--grade-bg:var(--observatory-grade-f-bg);--grade-border:var(--observatory-grade-f-border)}.tooltip-popup{--csstools-light-dark-toggle-fd181dce-0:var(--csstools-color-scheme--light) #696969;--color-tooltip:var(--csstools-light-dark-toggle-fd181dce-0,#b3b3b3);--csstools-light-dark-toggle-fd181dce-1:var(--csstools-color-scheme--light) #1b1b1b;--color-tooltip-highlight:var(--csstools-light-dark-toggle-fd181dce-1,#fff);--csstools-light-dark-toggle-fd181dce-2:var(--csstools-color-scheme--light) #fff;--color-bg-tooltip:var(--csstools-light-dark-toggle-fd181dce-2,#1b1b1b);background-color:var(--color-bg-tooltip);border-radius:var(--border-radius);border-width:0;color:var(--color-tooltip);inset:unset;left:50%;line-height:var(--font-line-content);margin-top:.5rem;max-width:min(100vw,20rem);overflow:visible;padding:1.5rem;position:absolute;text-align:center;transform:translateX(-50%);width:max-content;z-index:1}@supports (color:light-dark(red,red)){.tooltip-popup{--color-tooltip:light-dark(#b3b3b3,#696969);--color-tooltip-highlight:light-dark(#fff,#1b1b1b);--color-bg-tooltip:light-dark(#1b1b1b,#fff)}}@supports not (color:light-dark(tan,tan)){.tooltip-popup *{--csstools-light-dark-toggle-fd181dce-0:var(--csstools-color-scheme--light) #696969;--color-tooltip:var(--csstools-light-dark-toggle-fd181dce-0,#b3b3b3);--csstools-light-dark-toggle-fd181dce-1:var(--csstools-color-scheme--light) #1b1b1b;--color-tooltip-highlight:var(--csstools-light-dark-toggle-fd181dce-1,#fff);--csstools-light-dark-toggle-fd181dce-2:var(--csstools-color-scheme--light) #fff;--color-bg-tooltip:var(--csstools-light-dark-toggle-fd181dce-2,#1b1b1b)}}.tooltip-popup .arrow{margin-left:-1rem;margin-top:-2rem;padding:0;position:absolute;fill:var(--color-bg-tooltip)}.tooltip-popup table{border:0;border-collapse:collapse;white-space:nowrap;width:10rem}:is(.tooltip-popup table) tr{color:var(--color-tooltip);font-size:var(--font-size-small)}.current:is(:is(.tooltip-popup table) tr){color:var(--color-tooltip-highlight);font-weight:var(--font-weight-bold)}:is(.tooltip-popup table) td,:is(.tooltip-popup table) th{background-color:unset;border:0;font-weight:var(--font-body);text-align:left;width:50%}:is(.tooltip-popup table) th{font-size:var(--font-size-normal);padding:0 0 .75rem}:is(.tooltip-popup table) td{padding:0}:is(:is(.tooltip-popup table) td) svg{vertical-align:-.3rem}.scroll-container{margin-bottom:1.5rem;margin-top:.8rem;overflow-x:auto;overscroll-behavior-x:none}.detail-header{display:flex;gap:.5rem;padding:0 1.5rem 0 0}.detail-header .arrow{color:var(--color-text-secondary)}.detail-header .detail-header-title{font-weight:var(--font-weight-bold);padding-right:.2rem}.detail-header p{margin:1rem 0}:is(.obs-pass-icon svg.pass) path{fill:var(--observatory-pass-icon-bg)}:is(.obs-pass-icon svg.pass) circle{fill:var(--observatory-pass-icon-color)}:is(.obs-pass-icon svg.fail) path{fill:var(--observatory-fail-icon-bg)}:is(.obs-pass-icon svg.fail) circle{fill:var(--observatory-fail-icon-color)}.footnote{font-size:var(--font-size-small);margin-top:1rem}.scan-results table{background:var(--observatory-table-bg);border:none;border-collapse:collapse;min-width:calc(992px - 14rem);width:100%}:is(.scan-results table) th{background:var(--observatory-table-header-bg);color:var(--color-text-secondary);font-weight:500;vertical-align:top}:is(:is(.scan-results table) th) tr{background-color:unset}:is(.scan-results table) tr:nth-child(2n){background-color:var(--observatory-table-bg-alternate)}:is(.scan-results table) td{overflow-wrap:anywhere;padding:.5rem 1.5rem;vertical-align:top}.cookie-name:is(:is(.scan-results table) td):first-child{max-width:15rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.score:is(:is(.scan-results table) td)>span{display:flex;flex-direction:row;justify-content:space-between}:is(.scan-results table) a{color:var(--color-text-primary);-webkit-text-decoration:underline;text-decoration:underline;text-decoration-color:var(--color-text-secondary)}:is(:is(.scan-results table) a):active,:is(:is(.scan-results table) a):hover{-webkit-text-decoration:none;text-decoration:none}:is(.scan-results table) span.not-counted{color:var(--color-text-secondary)}:is(:is(.scan-results table) span.not-counted) a{-webkit-text-decoration:none;text-decoration:none}:is(.tests:is(.scan-results table) th,.tests:is(.scan-results table) td):first-of-type{width:25%}.tests:is(.scan-results table) td.score{white-space:nowrap}:is(.csp:is(.scan-results table) th,.csp:is(.scan-results table) td):first-of-type{width:45%}:is(.headers:is(.scan-results table) th,.headers:is(.scan-results table) td):first-of-type{width:30%}:is(.cookies:is(.scan-results table) th,.cookies:is(.scan-results table) td):nth-of-type(n+3){text-align:center}:is(.scan-results table) td,:is(.scan-results table) th{border:none;padding:1.5rem}:is(:is(.scan-results table) th,:is(.scan-results table) td) :first-child{margin-top:0}:is(:is(.scan-results table) th,:is(.scan-results table) td) :last-child{margin-bottom:0}:is(.scan-results table) .icon{height:1.3rem;width:1.3rem}@media (width <= 426px){:is(:is(:is(.scan-results table) td) .iso-date) code{font-size:x-small}}@media not print{@media (width <= 992px){.scan-results table{min-width:0}:is(.scan-results table) thead{display:none}:is(.scan-results table) tbody{display:block}:is(.scan-results table) tr{display:grid;grid-template-columns:max-content auto}:is(.scan-results table) tr:nth-of-type(odd){background:var(--observatory-table-header-bg)}:is(.scan-results table) td{column-gap:2em;display:grid;grid-auto-flow:column;grid-column:span 2;grid-template-columns:subgrid}:is(:is(.scan-results table) td) .humanized-duration{display:none}:is(.scan-results table) td:before{content:attr(data-header);display:inline;font-weight:var(--font-weight-bold)}}:is(.tests:is(.scan-results table),.csp:is(.scan-results table),.headers:is(.scan-results table),.cookies:is(.scan-results table)) td:first-of-type{width:auto}:is(.scan-results table) td:not(:last-of-type){padding-bottom:0}:is(.scan-results table) td:nth-of-type(n+2){padding-top:.75rem}.cookies:is(.scan-results table) td:nth-of-type(n+3){text-align:left}:is(.scan-results table) td.score{display:grid}:is(:is(.scan-results table) td.score)>span{display:block}:is(:is(.scan-results table) td.score) .obs-pass-icon{display:inline-block;height:1.5em;vertical-align:top}}ol.tabs-list{column-gap:3rem;display:grid;grid-template-areas:"tab-0 tab-1 tab-2 tab-3 tab-4 tab-5 ." "hr hr hr hr hr hr hr " "mod mod mod mod mod mod mod";grid-template-columns:repeat(6,max-content) 1fr;margin:0;overflow-x:auto;overscroll-behavior-x:none;padding:0}@media (width <= 992px){ol.tabs-list{column-gap:1.75rem;grid-template-columns:repeat(6,max-content) auto}}ol.tabs-list:before{border:none;border-top:1px solid var(--color-border-primary);content:"";grid-area:hr;margin:0;width:100%}ol.tabs-list input[type=radio]:not(:checked)~.tab-content{display:none}ol.tabs-list li.tabs-list-item{display:contents}:is(ol.tabs-list li.tabs-list-item)>input:checked+label{border-bottom:2px solid var(--observatory-accent);color:var(--color-text-primary)}:is(ol.tabs-list li.tabs-list-item)>input:not(:checked)+label:hover{border-bottom:2px solid var(--observatory-accent-light);color:var(--color-text-primary)}:is(ol.tabs-list li.tabs-list-item)>input:checked:focus-visible+label{outline-color:var(--accent-primary);outline-offset:1px;outline-style:auto}:is(ol.tabs-list li.tabs-list-item)>input:not(:checked)+label{color:var(--color-text-secondary);opacity:.775}:is(ol.tabs-list li.tabs-list-item)>label{cursor:pointer;height:2.2rem;width:max-content}#tabs-0:is(ol.tabs-list li.tabs-list-item)>input,#tabs-0:is(ol.tabs-list li.tabs-list-item)>label{grid-area:tab-0}#tabs-1:is(ol.tabs-list li.tabs-list-item)>input,#tabs-1:is(ol.tabs-list li.tabs-list-item)>label{grid-area:tab-1}#tabs-2:is(ol.tabs-list li.tabs-list-item)>input,#tabs-2:is(ol.tabs-list li.tabs-list-item)>label{grid-area:tab-2}#tabs-3:is(ol.tabs-list li.tabs-list-item)>input,#tabs-3:is(ol.tabs-list li.tabs-list-item)>label{grid-area:tab-3}#tabs-4:is(ol.tabs-list li.tabs-list-item)>input,#tabs-4:is(ol.tabs-list li.tabs-list-item)>label{grid-area:tab-4}#tabs-5:is(ol.tabs-list li.tabs-list-item)>input,#tabs-5:is(ol.tabs-list li.tabs-list-item)>label{grid-area:tab-5}:is(ol.tabs-list li.tabs-list-item)>section.tab-content{grid-area:mod;left:0;margin:0;position:sticky;width:calc(100vw - 18rem)}@media (width > 1200px){:is(ol.tabs-list li.tabs-list-item)>section.tab-content{width:100%}}@media (width <= 769px){:is(ol.tabs-list li.tabs-list-item)>section.tab-content{width:calc(100vw - 2rem)}}@media print{.scan-result{grid-template-columns:1fr 3fr!important;padding:.5rem!important}.obs-pass-icon svg{height:1.5em!important;width:1.5em!important}.scroll-container{overflow:hidden!important}ol.tabs-list input[type=radio]:not(:checked)~.tab-content{display:block!important}ol.tabs-list input[type=radio]{display:none!important}li.tabs-list-item input:checked+label,li.tabs-list-item input:checked+label:hover,li.tabs-list-item input:checked:focus-visible+label,li.tabs-list-item input:not(:checked)+label,li.tabs-list-item input:not(:checked)+label:hover{color:var(--color-text-primary)!important;display:block!important;font-size:1.5rem!important;font-weight:700!important;-webkit-text-decoration:none!important;text-decoration:none!important}ol.tabs-list,ol.tabs-list li.tabs-list-item{display:block!important}td,th{padding:.5rem!important}}`,""]);let y=(0,s.AH)([g.toString()])},65225(t,e,a){a.d(e,{A:()=>n});var s=a(97825),r=a(31601),o=a.n(r),i=a(76314),l=a.n(i)()(o());l.push([t.id,"@media print{.observatory-results-wrapper{background-color:#fff!important;grid-template-columns:[full-start] minmax(0,1fr) [full-end]!important}.observatory-results{grid-area:full!important}.actions,.button-wrap,.observatory-results-toc,.page-layout__header,.page_layout__banner,.rescan-button{display:none!important}}",""]);let n=(0,s.AH)([l.toString()])},46843(t,e,a){t.exports=a.p+"results-icon.cdcd65a79b167843.svg"},9677(t,e,a){t.exports=a.p+"summary-icon.70312ad5ea1a4289.svg"},13430(t,e,a){a.r(e),a.d(e,{MDNObservatoryResults:()=>MDNObservatoryResults});var s=a(31011),r=a(97825),o=a(23727),i=a(99502),l=a(77564),n=a(65225),d=a(47571);let c=(0,r.JW)`<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" fill="none" role="presentation" viewBox="0 0 22 22"><path fill="#dfd172" d="m18 0-1.26 2.75L14 4l2.74 1.26L18 8l1.25-2.74L22 4l-2.75-1.25M8 3 5.5 8.5 0 11l5.5 2.5L8 19l2.5-5.5L16 11l-5.5-2.5M18 14l-1.26 2.74L14 18l2.74 1.25L18 22l1.25-2.75L22 18l-2.75-1.26"/></svg>`,b=(0,r.JW)`<svg width="22" height="22" class="arrow" role="presentation" viewBox="0 0 22 22"><path id="path1" d="M12.124 1.733a1 1 0 0 1 1.673 0l8.811 13.423a1 1 0 0 1-.835 1.548l-17.614.007a1 1 0 0 1-.837-1.548Z"/></svg>`,p=[{grade:"A+",scoreText:"100+",score:100,stars:!0},{grade:"A",scoreText:"90",score:90,stars:!0},{grade:"A-",scoreText:"85",score:85,stars:!0},{grade:"B+",scoreText:"80",score:80},{grade:"B",scoreText:"70",score:70},{grade:"B-",scoreText:"65",score:65},{grade:"C+",scoreText:"60",score:60},{grade:"C",scoreText:"50",score:50},{grade:"C-",scoreText:"45",score:45},{grade:"D+",scoreText:"40",score:40},{grade:"D",scoreText:"30",score:30},{grade:"D-",scoreText:"25",score:25},{grade:"F",scoreText:"0",score:0}],h=["content-security-policy","cookies","cross-origin-resource-sharing","redirection","referrer-policy","strict-transport-security","subresource-integrity","x-content-type-options","x-frame-options","cross-origin-resource-policy"];a(14416),a(58623);let g=["unsafeInline","unsafeEval","unsafeObjects","unsafeInlineStyle","insecureSchemeActive","insecureSchemePassive","antiClickjacking","defaultNone","insecureBaseUri","insecureFormAction","strictDynamic"],u=new Set(["insecureBaseUri","insecureFormAction","insecureSchemeActive","insecureSchemePassive","unsafeEval","unsafeInline","unsafeInlineStyle","unsafeObjects"]);a(1879),a(20141),a(50117),a(37077);let MDNObservatoryResults=class MDNObservatoryResults extends r.WF{static styles=[l.A,n.A];constructor(){super(),this.host=null,this.selectedTab=0,this._usePostInApi=!1}static properties={host:{type:String},selectedTab:{state:!0,type:Number},_usePostInApi:{state:!0,type:Boolean}};_apiTask=new s.YZ(this,{args:()=>[this.host],task:async([t],{signal:e})=>{if(!t)throw Error("No host provided");try{let a=await fetch(`${i.Q}/api/v2/analyze?host=${encodeURIComponent(t)}`,{signal:e,method:this._usePostInApi?"POST":"GET"});if(!a.ok){let t=`${a.status}: ${a.statusText}`;try{let e=await a.json();e.error&&(t=e.message)}catch{}throw Error(t)}return await a.json()}catch(e){let t="Observatory API request for scan data failed";throw(0,o.w)(`observatory: error -> ${t}`),Error(t,{cause:e})}}});connectedCallback(){super.connectedCallback(),this._updateSelectedTab=this._updateSelectedTab.bind(this),this.selectedTab=this._getSelectedTab(),globalThis.addEventListener("hashchange",this._updateSelectedTab)}disconnectedCallback(){super.disconnectedCallback(),globalThis.removeEventListener("hashchange",this._updateSelectedTab)}firstUpdated(){let t=new URLSearchParams(globalThis.location.search);this.host=t.get("host")}_updateSelectedTab(){this.selectedTab=this._getSelectedTab()}_getSelectedTab(){let t=["scoring","csp","cookies","headers","history","benchmark"].indexOf(globalThis.location.hash.replace("#",""));return -1===t?0:t}async _rescan(t){t.preventDefault(),this.host&&((0,o.w)("observatory: rescan"),this._usePostInApi=!0,this._apiTask.run())}_handleTabSelect(t,e){this.selectedTab=t,(0,o.w)(`observatory: tab -> ${e}`),globalThis.history.replaceState("","",globalThis.location.pathname+globalThis.location.search+"#"+e)}render(){return this.host?this._apiTask.render({pending:()=>(0,r.qy)` <label class="visually-hidden" for="progress-bar">
2
2
  Rescanning ${this.host} </label
3
3
  ><mdn-progress-bar id="progress-bar"></mdn-progress-bar>`,complete:t=>(0,r.qy)`
4
4
  <section class="summary">
5
5
  ${(function({result:t,host:e,rescan:a}){let s;return(0,r.qy)`
6
6
  <h2 class="summary">
7
7
  Scan summary:
8
- <span class="host">${(0,n.YT)(e,t)}</span>
8
+ <span class="host">${(0,d.YT)(e,t)}</span>
9
9
  </h2>
10
10
  <section class="scan-result">
11
11
  <section class="grade-trend">
@@ -20,15 +20,15 @@ export const __rspack_esm_id="3259";export const __rspack_esm_ids=["3259"];expor
20
20
  <div
21
21
  class=${`grade grade-${t.scan.grade?.[0]?.toLowerCase()}`}
22
22
  >
23
- ${(0,n.c0)(t.scan.grade)}
23
+ ${(0,d.c0)(t.scan.grade)}
24
24
  </div>
25
25
  </button>
26
- ${s=b.map(e=>(0,r.qy)`
26
+ ${s=p.map(e=>(0,r.qy)`
27
27
  <tr class=${t.scan.grade===e.grade?"current":""}>
28
- <td>${(0,n.c0)(e.grade)}</td>
28
+ <td>${(0,d.c0)(e.grade)}</td>
29
29
  <td>
30
30
  ${e.scoreText}
31
- ${t.scan.grade===e.grade&&e.stars?d:""}
31
+ ${t.scan.grade===e.grade&&e.stars?c:""}
32
32
  </td>
33
33
  </tr>
34
34
  `),(0,r.qy)`
@@ -38,7 +38,7 @@ export const __rspack_esm_id="3259";export const __rspack_esm_ids=["3259"];expor
38
38
  aria-describedby="grade-table"
39
39
  class="tooltip-popup"
40
40
  >
41
- ${c}
41
+ ${b}
42
42
  <table class="grade-tooltip" id="grades-table" role="tooltip">
43
43
  <thead>
44
44
  <tr>
@@ -91,14 +91,19 @@ export const __rspack_esm_id="3259";export const __rspack_esm_ids=["3259"];expor
91
91
  @click=${a}
92
92
  ></mdn-observatory-rescan-button>
93
93
  <div class="scan-another">
94
- <a href="/en-US/observatory"> Scan another website </a>
94
+ <a
95
+ href="/en-US/observatory"
96
+ data-glean-id="observatory: scan-another"
97
+ >
98
+ Scan another website
99
+ </a>
95
100
  </div>
96
101
  </section>
97
102
  </section>
98
103
  `})({result:t,host:this.host||"",rescan:this._rescan})}
99
104
  </section>
100
105
  <section class="results">
101
- ${(function({result:t,selectedTab:e=0,onTabSelect:a}){let s=[{label:"Scoring",key:"scoring",element:(0,r.qy)`${function({result:t}){let e=90>=(t.scan.score||0)&&Object.entries(t.tests).find(([t,e])=>e.score_modifier>0);if(0===Object.keys(t.tests).length)return(0,r.qy)`No tests found.`;let a=p.map(e=>{let a=t.tests[e];return a?(0,r.qy)`
106
+ ${(function({result:t,selectedTab:e=0,onTabSelect:a}){let s=[{label:"Scoring",key:"scoring",element:(0,r.qy)`${function({result:t}){let e=90>=(t.scan.score||0)&&Object.entries(t.tests).find(([t,e])=>e.score_modifier>0);if(0===Object.keys(t.tests).length)return(0,r.qy)`No tests found.`;let a=h.map(e=>{let a=t.tests[e];return a?(0,r.qy)`
102
107
  <tr>
103
108
  <td data-header="Test">
104
109
  <a
@@ -113,13 +118,13 @@ export const __rspack_esm_id="3259";export const __rspack_esm_ids=["3259"];expor
113
118
  ${null===a.pass?(0,r.qy)`<td data-header="Score">-</td>`:(0,r.qy)` <td class="score" data-header="Score">
114
119
  <span>
115
120
  <span class="obs-score-value">
116
- ${function({overallScore:t,scoreModifier:e}){let a=t>=90,s=(0,n.c0)(`${e>0?`+${e}`:e}`);return(0,r.qy)`
121
+ ${function({overallScore:t,scoreModifier:e}){let a=t>=90,s=(0,d.c0)(`${e>0?`+${e}`:e}`);return(0,r.qy)`
117
122
  <span class=${!a&&e>0?"not-counted":""}>
118
123
  ${!a&&e>0?(0,r.qy)`0<sup><a href="#bonus-points-explanation">*</a></sup>`:s}
119
124
  </span>
120
125
  `}({overallScore:t.scan.score||0,scoreModifier:a.score_modifier})}
121
126
  </span>
122
- ${(0,n.T1)({pass:a.pass})}
127
+ ${(0,d.T1)({pass:a.pass})}
123
128
  </span>
124
129
  </td>`}
125
130
  <td data-header="Reason" .innerHTML=${a.score_description}></td>
@@ -176,17 +181,17 @@ export const __rspack_esm_id="3259";export const __rspack_esm_ids=["3259"];expor
176
181
  </tr>
177
182
  </tbody>
178
183
  </table>
179
- `;let s=h.map(t=>{if(!e[t])return null;let a=e[t];return(0,r.qy)`
184
+ `;let s=g.map(t=>{if(!e[t])return null;let a=e[t];return(0,r.qy)`
180
185
  <tr>
181
186
  <td data-header="Test" .innerHTML=${a.description}></td>
182
187
  <td data-header="Pass">
183
- ${(0,n.T1)({pass:g.has(t)?!a.pass:a.pass})}
188
+ ${(0,d.T1)({pass:u.has(t)?!a.pass:a.pass})}
184
189
  </td>
185
190
  <td data-header="Info" .innerHTML=${a.info}></td>
186
191
  </tr>
187
192
  `});return(0,r.qy)`
188
193
  <div class="detail-header">
189
- <p class="arrow">${(0,n.T1)({pass:a})}</p>
194
+ <p class="arrow">${(0,d.T1)({pass:a})}</p>
190
195
  <div
191
196
  class="detail-header-content"
192
197
  .innerHTML=${t.tests["content-security-policy"]?.score_description??'<p class="obs-none">None</p>'}
@@ -217,22 +222,22 @@ export const __rspack_esm_id="3259";export const __rspack_esm_ids=["3259"];expor
217
222
  <tr>
218
223
  <td data-header="Name" class="cookie-name">${t}</td>
219
224
  <td data-header="Expires">
220
- ${e.expires?(0,n.Dc)({expires:e.expires}):"Session"}
225
+ ${e.expires?(0,d.Dc)({expires:e.expires}):"Session"}
221
226
  </td>
222
227
  <td data-header="Path">
223
228
  <code>${e.path}</code>
224
229
  </td>
225
- <td data-header="Secure">${(0,n.T1)({pass:e.secure})}</td>
226
- <td data-header="HttpOnly">${(0,n.T1)({pass:e.httponly})}</td>
230
+ <td data-header="Secure">${(0,d.T1)({pass:e.secure})}</td>
231
+ <td data-header="HttpOnly">${(0,d.T1)({pass:e.httponly})}</td>
227
232
  <td data-header="SameSite">
228
- ${e.samesite?(0,r.qy)`<code>${(0,n.pM)(e.samesite)}</code>`:"-"}
233
+ ${e.samesite?(0,r.qy)`<code>${(0,d.pM)(e.samesite)}</code>`:"-"}
229
234
  </td>
230
- <td data-header="Prefixed">${(0,n.Zj)({cookieName:t})}</td>
235
+ <td data-header="Prefixed">${(0,d.Zj)({cookieName:t})}</td>
231
236
  </tr>
232
237
  `);return(0,r.qy)`
233
238
  <div class="detail-header">
234
239
  <p class="arrow">
235
- ${(0,n.T1)({pass:void 0===a?null:a})}
240
+ ${(0,d.T1)({pass:void 0===a?null:a})}
236
241
  </p>
237
242
  <div
238
243
  class="detail-header-content"
@@ -303,7 +308,7 @@ export const __rspack_esm_id="3259";export const __rspack_esm_ids=["3259"];expor
303
308
  <tr>
304
309
  <td data-header="Header">
305
310
  <mdn-observatory-header-link header=${t}>
306
- ${(0,n.wp)(t)}
311
+ ${(0,d.wp)(t)}
307
312
  </mdn-observatory-header-link>
308
313
  </td>
309
314
  <td data-header="Value">${e}</td>
@@ -322,9 +327,9 @@ export const __rspack_esm_id="3259";export const __rspack_esm_ids=["3259"];expor
322
327
  </table>
323
328
  `}({result:t})}`},{label:"Scan history",key:"history",element:(0,r.qy)`${function({result:t}){if(0===t.history.length)return r.s6;let e=[...t.history].reverse().map(({scanned_at:t,score:e,grade:a})=>(0,r.qy)`
324
329
  <tr>
325
- <td data-header="Date">${(0,n.r6)(new Date(t))}</td>
330
+ <td data-header="Date">${(0,d.r6)(new Date(t))}</td>
326
331
  <td data-header="Score">${e}</td>
327
- <td data-header="Grade">${(0,n.c0)(a)}</td>
332
+ <td data-header="Grade">${(0,d.c0)(a)}</td>
328
333
  </tr>
329
334
  `);return(0,r.qy)`
330
335
  <h2>Changes in score over time</h2>
@@ -386,4 +391,4 @@ export const __rspack_esm_id="3259";export const __rspack_esm_ids=["3259"];expor
386
391
  `})({result:t,selectedTab:this.selectedTab,onTabSelect:(t,e)=>this._handleTabSelect(t,e)})}
387
392
  </section>
388
393
  </div>`,error:t=>(0,r.qy)`<div class="error">${t}</div>`}):r.s6}};customElements.define("mdn-observatory-results",MDNObservatoryResults)}};
389
- //# sourceMappingURL=3259.ac8a5539251c647a.js.map
394
+ //# sourceMappingURL=3259.c4b809cd884ad515.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"3259.c4b809cd884ad515.js","sources":["webpack://@mdn/fred/./components/observatory-results/element.css","webpack://@mdn/fred/./components/observatory-results/print.css?18a8","webpack://@mdn/fred/./components/observatory/assets/stars.svg","webpack://@mdn/fred/./components/observatory/assets/tooltip-arrow.svg","webpack://@mdn/fred/./components/observatory/constants.js","webpack://@mdn/fred/./components/observatory-results/csp.js","webpack://@mdn/fred/./components/observatory-results/element.js","webpack://@mdn/fred/./components/observatory-results/rating.js","webpack://@mdn/fred/./components/observatory-results/tooltip.js","webpack://@mdn/fred/./components/observatory-results/trend.js","webpack://@mdn/fred/./components/observatory-results/tabs.js","webpack://@mdn/fred/./components/observatory-results/scoring.js","webpack://@mdn/fred/./components/observatory-results/cookies.js","webpack://@mdn/fred/./components/observatory-results/raw-headers.js","webpack://@mdn/fred/./components/observatory-results/history.js","webpack://@mdn/fred/./components/observatory-results/comparison.js"],"sourcesContent":["import { css } from \"lit\";\n// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_0___ from \"-!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../build/loaders/fix-light-dark.js!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!../global/global.css\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_1___ from \"-!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../build/loaders/fix-light-dark.js!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!../visually-hidden/global.css\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../observatory/assets/summary-icon.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"../observatory/assets/results-icon.svg\", import.meta.url);\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___);\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___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{line-height:var(--font-line-content)}.scan-result{column-gap:2rem;display:grid;grid-template-areas:\"grade data actions\";grid-template-columns:auto 3fr 1fr;justify-content:space-between;max-width:var(--max-width)}.scan-result a{color:var(--color-text-primary)}.scan-result{background-color:var(--color-background-primary);border-radius:.3rem;margin-bottom:3rem;padding:2rem}@media (width <= 1200px){.scan-result{align-items:flex-start;grid-template-areas:\"grade data actions\";grid-template-columns:auto 1fr auto;justify-content:space-between;row-gap:calc(var(--spacing)/2)}}@media (width <= 992px){.scan-result{grid-template-areas:\"grade data \" \"grade actions\";grid-template-columns:min-content 1fr}}.trend{margin-top:1rem}.arrow-down{color:var(--observatory-arrow-down-color)}.arrow-up{color:var(--observatory-arrow-up-color)}h2{font-size:var(--font-size-large);font-weight:var(--font-weight-bold);margin-bottom:1rem;margin-top:1.5rem}h2:before{background-color:var(--color-text-primary);content:\"\";display:inline-block;-webkit-mask-position:left;mask-position:left;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}h2 .host{font-weight:var(--font-weight-normal)}h2.summary:before{height:1.4rem;-webkit-mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});width:2rem}h2.result:before{height:1.2rem;-webkit-mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_1___});mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_1___});width:2rem}code{font-weight:var(--font-weight-bold)}.grade-trend{grid-area:grade;justify-self:start}.grade-trend .overall{position:relative}.data{grid-area:data}.actions{grid-area:actions}@media (width <= 992px){.actions{margin-top:1rem}}mdn-observatory-rescan-button{min-width:30rem}.info-tooltip{background:none;border:none;cursor:pointer;display:inline-block}.scan-another{font-size:var(--font-size-small);font-weight:var(--font-weight-normal);margin-top:1.2rem}.grade,.label{font-weight:var(--font-weight-bold)}.grade{background:var(--grade-bg);border:1px solid var(--grade-border);border-radius:.2em;color:var(--grade-border);display:inline-block;font-size:var(--font-size-large);height:5rem;line-height:5rem;text-align:center;width:5rem}.grade-a{--grade-bg:var(--observatory-grade-a-bg);--grade-border:var(--observatory-grade-a-border)}.grade-b{--grade-bg:var(--observatory-grade-b-bg);--grade-border:var(--observatory-grade-b-border)}.grade-c{--grade-bg:var(--observatory-grade-c-bg);--grade-border:var(--observatory-grade-c-border)}.grade-d{--grade-bg:var(--observatory-grade-d-bg);--grade-border:var(--observatory-grade-d-border)}.grade-f{--grade-bg:var(--observatory-grade-f-bg);--grade-border:var(--observatory-grade-f-border)}.tooltip-popup{--csstools-light-dark-toggle-fd181dce-0:var(--csstools-color-scheme--light) #696969;--color-tooltip:var(--csstools-light-dark-toggle-fd181dce-0,#b3b3b3);--csstools-light-dark-toggle-fd181dce-1:var(--csstools-color-scheme--light) #1b1b1b;--color-tooltip-highlight:var(--csstools-light-dark-toggle-fd181dce-1,#fff);--csstools-light-dark-toggle-fd181dce-2:var(--csstools-color-scheme--light) #fff;--color-bg-tooltip:var(--csstools-light-dark-toggle-fd181dce-2,#1b1b1b);background-color:var(--color-bg-tooltip);border-radius:var(--border-radius);border-width:0;color:var(--color-tooltip);inset:unset;left:50%;line-height:var(--font-line-content);margin-top:.5rem;max-width:min(100vw,20rem);overflow:visible;padding:1.5rem;position:absolute;text-align:center;transform:translateX(-50%);width:max-content;z-index:1}@supports (color:light-dark(red,red)){.tooltip-popup{--color-tooltip:light-dark(#b3b3b3,#696969);--color-tooltip-highlight:light-dark(#fff,#1b1b1b);--color-bg-tooltip:light-dark(#1b1b1b,#fff)}}@supports not (color:light-dark(tan,tan)){.tooltip-popup *{--csstools-light-dark-toggle-fd181dce-0:var(--csstools-color-scheme--light) #696969;--color-tooltip:var(--csstools-light-dark-toggle-fd181dce-0,#b3b3b3);--csstools-light-dark-toggle-fd181dce-1:var(--csstools-color-scheme--light) #1b1b1b;--color-tooltip-highlight:var(--csstools-light-dark-toggle-fd181dce-1,#fff);--csstools-light-dark-toggle-fd181dce-2:var(--csstools-color-scheme--light) #fff;--color-bg-tooltip:var(--csstools-light-dark-toggle-fd181dce-2,#1b1b1b)}}.tooltip-popup .arrow{margin-left:-1rem;margin-top:-2rem;padding:0;position:absolute;fill:var(--color-bg-tooltip)}.tooltip-popup table{border:0;border-collapse:collapse;white-space:nowrap;width:10rem}:is(.tooltip-popup table) tr{color:var(--color-tooltip);font-size:var(--font-size-small)}.current:is(:is(.tooltip-popup table) tr){color:var(--color-tooltip-highlight);font-weight:var(--font-weight-bold)}:is(.tooltip-popup table) td,:is(.tooltip-popup table) th{background-color:unset;border:0;font-weight:var(--font-body);text-align:left;width:50%}:is(.tooltip-popup table) th{font-size:var(--font-size-normal);padding:0 0 .75rem}:is(.tooltip-popup table) td{padding:0}:is(:is(.tooltip-popup table) td) svg{vertical-align:-.3rem}.scroll-container{margin-bottom:1.5rem;margin-top:.8rem;overflow-x:auto;overscroll-behavior-x:none}.detail-header{display:flex;gap:.5rem;padding:0 1.5rem 0 0}.detail-header .arrow{color:var(--color-text-secondary)}.detail-header .detail-header-title{font-weight:var(--font-weight-bold);padding-right:.2rem}.detail-header p{margin:1rem 0}:is(.obs-pass-icon svg.pass) path{fill:var(--observatory-pass-icon-bg)}:is(.obs-pass-icon svg.pass) circle{fill:var(--observatory-pass-icon-color)}:is(.obs-pass-icon svg.fail) path{fill:var(--observatory-fail-icon-bg)}:is(.obs-pass-icon svg.fail) circle{fill:var(--observatory-fail-icon-color)}.footnote{font-size:var(--font-size-small);margin-top:1rem}.scan-results table{background:var(--observatory-table-bg);border:none;border-collapse:collapse;min-width:calc(992px - 14rem);width:100%}:is(.scan-results table) th{background:var(--observatory-table-header-bg);color:var(--color-text-secondary);font-weight:500;vertical-align:top}:is(:is(.scan-results table) th) tr{background-color:unset}:is(.scan-results table) tr:nth-child(2n){background-color:var(--observatory-table-bg-alternate)}:is(.scan-results table) td{overflow-wrap:anywhere;padding:.5rem 1.5rem;vertical-align:top}.cookie-name:is(:is(.scan-results table) td):first-child{max-width:15rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.score:is(:is(.scan-results table) td)>span{display:flex;flex-direction:row;justify-content:space-between}:is(.scan-results table) a{color:var(--color-text-primary);-webkit-text-decoration:underline;text-decoration:underline;text-decoration-color:var(--color-text-secondary)}:is(:is(.scan-results table) a):active,:is(:is(.scan-results table) a):hover{-webkit-text-decoration:none;text-decoration:none}:is(.scan-results table) span.not-counted{color:var(--color-text-secondary)}:is(:is(.scan-results table) span.not-counted) a{-webkit-text-decoration:none;text-decoration:none}:is(.tests:is(.scan-results table) th,.tests:is(.scan-results table) td):first-of-type{width:25%}.tests:is(.scan-results table) td.score{white-space:nowrap}:is(.csp:is(.scan-results table) th,.csp:is(.scan-results table) td):first-of-type{width:45%}:is(.headers:is(.scan-results table) th,.headers:is(.scan-results table) td):first-of-type{width:30%}:is(.cookies:is(.scan-results table) th,.cookies:is(.scan-results table) td):nth-of-type(n+3){text-align:center}:is(.scan-results table) td,:is(.scan-results table) th{border:none;padding:1.5rem}:is(:is(.scan-results table) th,:is(.scan-results table) td) :first-child{margin-top:0}:is(:is(.scan-results table) th,:is(.scan-results table) td) :last-child{margin-bottom:0}:is(.scan-results table) .icon{height:1.3rem;width:1.3rem}@media (width <= 426px){:is(:is(:is(.scan-results table) td) .iso-date) code{font-size:x-small}}@media not print{@media (width <= 992px){.scan-results table{min-width:0}:is(.scan-results table) thead{display:none}:is(.scan-results table) tbody{display:block}:is(.scan-results table) tr{display:grid;grid-template-columns:max-content auto}:is(.scan-results table) tr:nth-of-type(odd){background:var(--observatory-table-header-bg)}:is(.scan-results table) td{column-gap:2em;display:grid;grid-auto-flow:column;grid-column:span 2;grid-template-columns:subgrid}:is(:is(.scan-results table) td) .humanized-duration{display:none}:is(.scan-results table) td:before{content:attr(data-header);display:inline;font-weight:var(--font-weight-bold)}}:is(.tests:is(.scan-results table),.csp:is(.scan-results table),.headers:is(.scan-results table),.cookies:is(.scan-results table)) td:first-of-type{width:auto}:is(.scan-results table) td:not(:last-of-type){padding-bottom:0}:is(.scan-results table) td:nth-of-type(n+2){padding-top:.75rem}.cookies:is(.scan-results table) td:nth-of-type(n+3){text-align:left}:is(.scan-results table) td.score{display:grid}:is(:is(.scan-results table) td.score)>span{display:block}:is(:is(.scan-results table) td.score) .obs-pass-icon{display:inline-block;height:1.5em;vertical-align:top}}ol.tabs-list{column-gap:3rem;display:grid;grid-template-areas:\"tab-0 tab-1 tab-2 tab-3 tab-4 tab-5 .\" \"hr hr hr hr hr hr hr \" \"mod mod mod mod mod mod mod\";grid-template-columns:repeat(6,max-content) 1fr;margin:0;overflow-x:auto;overscroll-behavior-x:none;padding:0}@media (width <= 992px){ol.tabs-list{column-gap:1.75rem;grid-template-columns:repeat(6,max-content) auto}}ol.tabs-list:before{border:none;border-top:1px solid var(--color-border-primary);content:\"\";grid-area:hr;margin:0;width:100%}ol.tabs-list input[type=radio]:not(:checked)~.tab-content{display:none}ol.tabs-list li.tabs-list-item{display:contents}:is(ol.tabs-list li.tabs-list-item)>input:checked+label{border-bottom:2px solid var(--observatory-accent);color:var(--color-text-primary)}:is(ol.tabs-list li.tabs-list-item)>input:not(:checked)+label:hover{border-bottom:2px solid var(--observatory-accent-light);color:var(--color-text-primary)}:is(ol.tabs-list li.tabs-list-item)>input:checked:focus-visible+label{outline-color:var(--accent-primary);outline-offset:1px;outline-style:auto}:is(ol.tabs-list li.tabs-list-item)>input:not(:checked)+label{color:var(--color-text-secondary);opacity:.775}:is(ol.tabs-list li.tabs-list-item)>label{cursor:pointer;height:2.2rem;width:max-content}#tabs-0:is(ol.tabs-list li.tabs-list-item)>input,#tabs-0:is(ol.tabs-list li.tabs-list-item)>label{grid-area:tab-0}#tabs-1:is(ol.tabs-list li.tabs-list-item)>input,#tabs-1:is(ol.tabs-list li.tabs-list-item)>label{grid-area:tab-1}#tabs-2:is(ol.tabs-list li.tabs-list-item)>input,#tabs-2:is(ol.tabs-list li.tabs-list-item)>label{grid-area:tab-2}#tabs-3:is(ol.tabs-list li.tabs-list-item)>input,#tabs-3:is(ol.tabs-list li.tabs-list-item)>label{grid-area:tab-3}#tabs-4:is(ol.tabs-list li.tabs-list-item)>input,#tabs-4:is(ol.tabs-list li.tabs-list-item)>label{grid-area:tab-4}#tabs-5:is(ol.tabs-list li.tabs-list-item)>input,#tabs-5:is(ol.tabs-list li.tabs-list-item)>label{grid-area:tab-5}:is(ol.tabs-list li.tabs-list-item)>section.tab-content{grid-area:mod;left:0;margin:0;position:sticky;width:calc(100vw - 18rem)}@media (width > 1200px){:is(ol.tabs-list li.tabs-list-item)>section.tab-content{width:100%}}@media (width <= 769px){:is(ol.tabs-list li.tabs-list-item)>section.tab-content{width:calc(100vw - 2rem)}}@media print{.scan-result{grid-template-columns:1fr 3fr!important;padding:.5rem!important}.obs-pass-icon svg{height:1.5em!important;width:1.5em!important}.scroll-container{overflow:hidden!important}ol.tabs-list input[type=radio]:not(:checked)~.tab-content{display:block!important}ol.tabs-list input[type=radio]{display:none!important}li.tabs-list-item input:checked+label,li.tabs-list-item input:checked+label:hover,li.tabs-list-item input:checked:focus-visible+label,li.tabs-list-item input:not(:checked)+label,li.tabs-list-item input:not(:checked)+label:hover{color:var(--color-text-primary)!important;display:block!important;font-size:1.5rem!important;font-weight:700!important;-webkit-text-decoration:none!important;text-decoration:none!important}ol.tabs-list,ol.tabs-list li.tabs-list-item{display:block!important}td,th{padding:.5rem!important}}`, \"\"]);\n// Exports\nexport default css([___CSS_LOADER_EXPORT___.toString()]);\n","import { css } from \"lit\";\n// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@media print{.observatory-results-wrapper{background-color:#fff!important;grid-template-columns:[full-start] minmax(0,1fr) [full-end]!important}.observatory-results{grid-area:full!important}.actions,.button-wrap,.observatory-results-toc,.page-layout__header,.page_layout__banner,.rescan-button{display:none!important}}`, \"\"]);\n// Exports\nexport default css([___CSS_LOADER_EXPORT___.toString()]);\n","import { svg } from \"lit\"; export default svg`<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"22\" fill=\"none\" role=\"presentation\" viewBox=\"0 0 22 22\"><path fill=\"#dfd172\" d=\"m18 0-1.26 2.75L14 4l2.74 1.26L18 8l1.25-2.74L22 4l-2.75-1.25M8 3 5.5 8.5 0 11l5.5 2.5L8 19l2.5-5.5L16 11l-5.5-2.5M18 14l-1.26 2.74L14 18l2.74 1.25L18 22l1.25-2.75L22 18l-2.75-1.26\"/></svg>`;","import { svg } from \"lit\"; export default svg`<svg width=\"22\" height=\"22\" class=\"arrow\" role=\"presentation\" viewBox=\"0 0 22 22\"><path id=\"path1\" d=\"M12.124 1.733a1 1 0 0 1 1.673 0l8.811 13.423a1 1 0 0 1-.835 1.548l-17.614.007a1 1 0 0 1-.837-1.548Z\"/></svg>`;","/**\n * Scoring table for Observatory grades\n * @type {Array<{grade: string, scoreText: string, score: number, stars?: boolean}>}\n */\nconst SCORING_TABLE = [\n { grade: \"A+\", scoreText: \"100+\", score: 100, stars: true },\n { grade: \"A\", scoreText: \"90\", score: 90, stars: true },\n { grade: \"A-\", scoreText: \"85\", score: 85, stars: true },\n { grade: \"B+\", scoreText: \"80\", score: 80 },\n { grade: \"B\", scoreText: \"70\", score: 70 },\n { grade: \"B-\", scoreText: \"65\", score: 65 },\n { grade: \"C+\", scoreText: \"60\", score: 60 },\n { grade: \"C\", scoreText: \"50\", score: 50 },\n { grade: \"C-\", scoreText: \"45\", score: 45 },\n { grade: \"D+\", scoreText: \"40\", score: 40 },\n { grade: \"D\", scoreText: \"30\", score: 30 },\n { grade: \"D-\", scoreText: \"25\", score: 25 },\n { grade: \"F\", scoreText: \"0\", score: 0 },\n];\n\n/**\n * Maintain consistent test order.\n * @type {string[]}\n */\nconst TEST_NAMES_IN_ORDER = [\n \"content-security-policy\",\n \"cookies\",\n \"cross-origin-resource-sharing\",\n \"redirection\",\n \"referrer-policy\",\n \"strict-transport-security\",\n \"subresource-integrity\",\n \"x-content-type-options\",\n \"x-frame-options\",\n \"cross-origin-resource-policy\",\n];\n\n// Export the constants\nexport { SCORING_TABLE, TEST_NAMES_IN_ORDER };\n","import { html } from \"lit\";\n\nimport { PassIcon } from \"../observatory/utils.js\";\n\n/** @type {(keyof import(\"@observatory\").CSPPolicy)[]} */\nconst policyTests = [\n \"unsafeInline\",\n \"unsafeEval\",\n \"unsafeObjects\",\n \"unsafeInlineStyle\",\n \"insecureSchemeActive\",\n \"insecureSchemePassive\",\n \"antiClickjacking\",\n \"defaultNone\",\n \"insecureBaseUri\",\n \"insecureFormAction\",\n \"strictDynamic\",\n];\n\n// Policies where pass means bad\nconst negatedPolicies = new Set([\n \"insecureBaseUri\",\n \"insecureFormAction\",\n \"insecureSchemeActive\",\n \"insecureSchemePassive\",\n \"unsafeEval\",\n \"unsafeInline\",\n \"unsafeInlineStyle\",\n \"unsafeObjects\",\n]);\n\n/**\n *\n * @param {{result: import(\"@observatory\").Result}} props\n * @returns { import(\"@lit\").TemplateResult }\n */\nexport function CSP({ result }) {\n const policy = result.tests[\"content-security-policy\"]?.policy;\n const pass = result.tests[\"content-security-policy\"]?.pass || false;\n\n if (!policy) {\n if (\n result.tests[\"content-security-policy\"]?.result ===\n \"csp-not-implemented-but-reporting-enabled\"\n ) {\n return html`\n <table class=\"csp\">\n <tbody>\n <tr>\n <td>\n <p>\n <code>Content-Security-Policy-Report-Only</code> header\n detected. Implement an enforced policy; see\n <a href=\"/en-US/docs/Web/HTTP/CSP\" target=\"_blank\">\n MDN's Content Security Policy (CSP) documentation </a\n >.\n </p>\n </td>\n </tr>\n </tbody>\n </table>\n `;\n }\n\n return html`\n <table class=\"csp\">\n <tbody>\n <tr>\n <td>\n <p>No CSP headers detected</p>\n </td>\n </tr>\n </tbody>\n </table>\n `;\n }\n\n const rows = policyTests.map((pt) => {\n if (!policy[pt]) return null;\n /** @type {import(\"@observatory\").PolicyItem} */\n const p = policy[pt];\n\n return html`\n <tr>\n <td data-header=\"Test\" .innerHTML=${p.description}></td>\n <td data-header=\"Pass\">\n ${PassIcon({\n pass: negatedPolicies.has(pt) ? !p.pass : p.pass,\n })}\n </td>\n <td data-header=\"Info\" .innerHTML=${p.info}></td>\n </tr>\n `;\n });\n\n return html`\n <div class=\"detail-header\">\n <p class=\"arrow\">${PassIcon({ pass })}</p>\n <div\n class=\"detail-header-content\"\n .innerHTML=${result.tests[\"content-security-policy\"]\n ?.score_description ?? `<p class=\"obs-none\">None</p>`}\n ></div>\n </div>\n\n <table class=\"csp\">\n <thead>\n <tr>\n <th>Test</th>\n <th>Result</th>\n <th>Info</th>\n </tr>\n </thead>\n <tbody>\n ${rows}\n </tbody>\n </table>\n `;\n}\n","import { Task } from \"@lit/task\";\nimport { LitElement, html } from \"lit\";\nimport { nothing } from \"lit\";\n\nimport { gleanClick } from \"../../utils/glean.js\";\nimport { OBSERVATORY_API_URL } from \"../env/index.js\";\n\nimport styles from \"./element.css?lit\";\nimport printStyles from \"./print.css?lit\";\nimport { Rating } from \"./rating.js\";\nimport { Tabs } from \"./tabs.js\";\n\nimport \"../../components/progress-bar/element.js\";\nimport \"../../components/observatory-comparison-table/element.js\";\nimport \"../../components/observatory-human-duration/element.js\";\n\nexport class MDNObservatoryResults extends LitElement {\n static styles = [styles, printStyles];\n\n constructor() {\n super();\n /** @type { string | null } */\n this.host = null;\n /** @type { number } */\n this.selectedTab = 0;\n /** @type { boolean } */\n this._usePostInApi = false;\n }\n\n /**\n * @type { import(\"@lit\").PropertyDeclarations }\n */\n static properties = {\n host: { type: String },\n selectedTab: { state: true, type: Number },\n _usePostInApi: { state: true, type: Boolean },\n };\n\n _apiTask = new Task(this, {\n args: () => [this.host],\n task: async ([host], { signal }) => {\n if (!host) {\n throw new Error(\"No host provided\");\n }\n try {\n const res = await fetch(\n `${OBSERVATORY_API_URL}/api/v2/analyze?host=${encodeURIComponent(\n host,\n )}`,\n { signal, method: this._usePostInApi ? \"POST\" : \"GET\" },\n );\n if (!res.ok) {\n let message = `${res.status}: ${res.statusText}`;\n try {\n const data = await res.json();\n if (data.error) {\n message = data.message;\n }\n } catch {\n // Ignore.\n }\n throw new Error(message);\n }\n return await res.json();\n } catch (error) {\n const message = \"Observatory API request for scan data failed\";\n gleanClick(`observatory: error -> ${message}`);\n throw new Error(message, {\n cause: error,\n });\n }\n },\n });\n\n connectedCallback() {\n super.connectedCallback();\n this._updateSelectedTab = this._updateSelectedTab.bind(this);\n this.selectedTab = this._getSelectedTab();\n globalThis.addEventListener(\"hashchange\", this._updateSelectedTab);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n globalThis.removeEventListener(\"hashchange\", this._updateSelectedTab);\n }\n\n firstUpdated() {\n const params = new URLSearchParams(globalThis.location.search);\n this.host = params.get(\"host\");\n }\n\n _updateSelectedTab() {\n this.selectedTab = this._getSelectedTab();\n }\n\n /**\n * @returns {number}\n */\n _getSelectedTab() {\n const hash = globalThis.location.hash.replace(\"#\", \"\");\n const tabs = [\n \"scoring\",\n \"csp\",\n \"cookies\",\n \"headers\",\n \"history\",\n \"benchmark\",\n ];\n const index = tabs.indexOf(hash);\n return index === -1 ? 0 : index;\n }\n\n /**\n *\n * @param {Event} e\n */\n async _rescan(e) {\n e.preventDefault();\n if (!this.host) {\n return;\n }\n gleanClick(\"observatory: rescan\");\n this._usePostInApi = true;\n this._apiTask.run();\n }\n\n /**\n *\n * @param {number} index\n * @param {string} key\n */\n _handleTabSelect(index, key) {\n this.selectedTab = index;\n gleanClick(`observatory: tab -> ${key}`);\n globalThis.history.replaceState(\n \"\",\n \"\",\n globalThis.location.pathname + globalThis.location.search + \"#\" + key,\n );\n }\n\n render() {\n if (!this.host) {\n return nothing;\n }\n return this._apiTask.render({\n pending: () =>\n html` <label class=\"visually-hidden\" for=\"progress-bar\">\n Rescanning ${this.host} </label\n ><mdn-progress-bar id=\"progress-bar\"></mdn-progress-bar>`,\n\n complete: (data) => html`\n <section class=\"summary\">\n ${Rating({\n result: data,\n host: this.host || \"\",\n rescan: this._rescan,\n })}\n </section>\n <section class=\"results\">\n ${Tabs({\n result: data,\n selectedTab: this.selectedTab,\n onTabSelect: (index, key) => this._handleTabSelect(index, key),\n })}\n </section>\n </div>`,\n\n error: (e) => html`<div class=\"error\">${e}</div>`,\n });\n }\n}\n\ncustomElements.define(\"mdn-observatory-results\", MDNObservatoryResults);\n","import { html } from \"lit\";\n\nimport { formatMinus, hostAsRedirectChain } from \"../observatory/utils.js\";\n\nimport { Tooltip } from \"./tooltip.js\";\nimport { Trend } from \"./trend.js\";\n\nimport \"../observatory-rescan-button/element.js\";\nimport \"../dropdown/element.js\";\n\n/**\n *\n * @param {{result: import(\"@observatory\").Result, host: string, rescan: Function}} props\n * @returns {import(\"@lit\").TemplateResult}\n */\nexport function Rating({ result, host, rescan }) {\n return html`\n <h2 class=\"summary\">\n Scan summary:\n <span class=\"host\">${hostAsRedirectChain(host, result)}</span>\n </h2>\n <section class=\"scan-result\">\n <section class=\"grade-trend\">\n <div class=\"overall\">\n <mdn-dropdown>\n <button\n slot=\"button\"\n aria-label=\"show info tooltip\"\n class=\"info-tooltip\"\n tabindex=\"0\"\n >\n <div\n class=${`grade grade-${result.scan.grade?.[0]?.toLowerCase()}`}\n >\n ${formatMinus(result.scan.grade)}\n </div>\n </button>\n ${Tooltip(result)}\n </mdn-dropdown>\n </div>\n ${Trend({ result })}\n </section>\n <section class=\"data\">\n <div>\n <a href=\"/en-US/observatory/docs/tests_and_scoring\" target=\"_blank\">\n <span class=\"label\">Score</span></a\n >: ${result.scan.score}&thinsp;/&thinsp;100\n </div>\n <div>\n <a href=\"#history\"> <span class=\"label\">Scan Time</span></a\n >:\n <mdn-observatory-human-duration\n .date=${new Date(result.scan.scanned_at)}\n ></mdn-observatory-human-duration>\n </div>\n <a href=\"/en-US/observatory/docs/tests_and_scoring\" target=\"_blank\">\n <span class=\"label\">Tests Passed</span></a\n >: ${result.scan.tests_passed}&thinsp;/&thinsp;\n ${result.scan.tests_quantity}\n </section>\n <section class=\"actions\">\n <mdn-observatory-rescan-button\n .from=${new Date(result.scan.scanned_at)}\n .duration=${60}\n @click=${rescan}\n ></mdn-observatory-rescan-button>\n <div class=\"scan-another\">\n <a\n href=\"/en-US/observatory\"\n data-glean-id=\"observatory: scan-another\"\n >\n Scan another website\n </a>\n </div>\n </section>\n </section>\n `;\n}\n","import { html } from \"lit\";\n\nimport starsSvg from \"../observatory/assets/stars.svg?lit\";\nimport arrowSvg from \"../observatory/assets/tooltip-arrow.svg?lit\";\nimport { SCORING_TABLE } from \"../observatory/constants.js\";\nimport { formatMinus } from \"../observatory/utils.js\";\n\n/**\n */\n\n/**\n *\n * @param {import(\"@observatory\").Result} result\n */\nexport function Tooltip(result) {\n const rows = SCORING_TABLE.map((st) => {\n return html`\n <tr class=${result.scan.grade === st.grade ? \"current\" : \"\"}>\n <td>${formatMinus(st.grade)}</td>\n <td>\n ${st.scoreText}\n ${result.scan.grade === st.grade && st.stars ? starsSvg : \"\"}\n </td>\n </tr>\n `;\n });\n\n return html`\n <div\n slot=\"dropdown\"\n id=\"grade-popover\"\n aria-describedby=\"grade-table\"\n class=\"tooltip-popup\"\n >\n ${arrowSvg}\n <table class=\"grade-tooltip\" id=\"grades-table\" role=\"tooltip\">\n <thead>\n <tr>\n <th>Grade</th>\n <th>Score</th>\n </tr>\n </thead>\n <tbody>\n ${rows}\n </tbody>\n </table>\n </div>\n `;\n}\n","import { html, nothing } from \"lit\";\n\n/**\n *\n * @param {{result: import(\"@observatory\").Result}} props\n * @returns {import(\"@lit\").TemplateResult | nothing}\n */\nexport function Trend({ result }) {\n switch (arrowState(result)) {\n case \"up\": {\n return html`\n <div class=\"trend\">\n <span class=\"arrow-up\" aria-hidden=\"true\"> ↗︎ </span>\n since last scan\n </div>\n `;\n }\n case \"down\": {\n return html`\n <div class=\"trend\">\n <span class=\"arrow-down\" aria-hidden=\"true\"> ↘︎ </span>\n since last scan\n </div>\n `;\n }\n default: {\n return nothing;\n }\n }\n}\n\n/**\n *\n * @param {import(\"@observatory\").Result} result\n * @returns {\"up\" | \"down\" | \"none\"}\n */\nfunction arrowState(result) {\n const [oldScore, oldGrade] =\n result.history.length > 0\n ? [result.history.at(-2)?.score, result.history.at(-2)?.grade]\n : [undefined, undefined];\n const newScore = result.scan.score;\n const newGrade = result.scan.grade;\n if (\n typeof newScore === \"number\" &&\n typeof oldScore === \"number\" &&\n newGrade !== oldGrade &&\n newScore !== oldScore\n ) {\n return oldScore < newScore ? \"up\" : \"down\";\n } else {\n return \"none\";\n }\n}\n","import { html } from \"lit\";\n\nimport { Comparison } from \"./comparison.js\";\nimport { Cookies } from \"./cookies.js\";\nimport { CSP } from \"./csp.js\";\nimport { History } from \"./history.js\";\nimport { RawHeaders } from \"./raw-headers.js\";\nimport { Scoring } from \"./scoring.js\";\n\n/**\n * @param {{\n * result: import(\"@observatory\").Result,\n * selectedTab: number,\n * onTabSelect: (index: number, key: string) => void\n * }} props\n * @returns {import(\"@lit\").TemplateResult}\n */\nexport function Tabs({ result, selectedTab = 0, onTabSelect }) {\n const tabs = [\n {\n label: \"Scoring\",\n key: \"scoring\",\n element: html`${Scoring({ result })}`,\n },\n {\n label: \"CSP analysis\",\n key: \"csp\",\n element: html`${CSP({ result })}`,\n },\n {\n label: \"Cookies\",\n key: \"cookies\",\n element: html`${Cookies({ result })}`,\n },\n {\n label: \"Raw server headers\",\n key: \"headers\",\n element: html`${RawHeaders({ result })}`,\n },\n {\n label: \"Scan history\",\n key: \"history\",\n element: html`${History({ result })}`,\n },\n {\n label: \"Benchmark comparison\",\n key: \"benchmark\",\n element: html`${Comparison({ result })}`,\n },\n ];\n\n const tabElements = tabs.map((tab, i) => {\n const onChange = () => onTabSelect(i, tab.key);\n return html`\n <li id=\"tabs-${i}\" class=\"tabs-list-item\">\n <input\n class=\"visually-hidden\"\n id=\"tab-${i}\"\n name=\"selected\"\n type=\"radio\"\n role=\"tab\"\n .checked=${i === selectedTab}\n aria-controls=\"tab-container-${i}\"\n @change=${onChange}\n />\n <label for=\"tab-${i}\" id=\"tab-label-${i}\">${tab.label}</label>\n <section\n class=\"tab-content\"\n role=\"tabpanel\"\n aria-labelledby=\"tab-label-${i}\"\n id=\"tab-container-${i}\"\n >\n <div class=\"scroll-container\">${tab.element}</div>\n </section>\n </li>\n `;\n });\n\n return html`\n <section class=\"scan-results\">\n <h2 class=\"result\" id=\"scan-results-header\">Scan results</h2>\n <ol\n class=\"tabs-list\"\n role=\"tablist\"\n aria-labelledby=\"scan-results-header\"\n >\n ${tabElements}\n </ol>\n </section>\n `;\n}\n","import { html } from \"lit\";\n\nimport { TEST_NAMES_IN_ORDER } from \"../observatory/constants.js\";\nimport { PassIcon, formatMinus } from \"../observatory/utils.js\";\n\n/**\n * @param {{overallScore: number, scoreModifier: number}} props\n * @returns {import(\"@lit\").TemplateResult}\n */\nfunction ScoreModifier({ overallScore, scoreModifier }) {\n const bonusEligible = overallScore >= 90;\n const formattedScoreModifier = formatMinus(\n `${scoreModifier > 0 ? `+${scoreModifier}` : scoreModifier}`,\n );\n\n return html`\n <span class=${!bonusEligible && scoreModifier > 0 ? \"not-counted\" : \"\"}>\n ${!bonusEligible && scoreModifier > 0\n ? html`0<sup><a href=\"#bonus-points-explanation\">*</a></sup>`\n : formattedScoreModifier}\n </span>\n `;\n}\n\n/**\n *\n * @param {{ result: import(\"@observatory\").Result}} result\n * @returns {import(\"@lit\").TemplateResult}\n */\nexport function Scoring({ result }) {\n const showFootnote =\n (result.scan.score || 0) <= 90 &&\n Object.entries(result.tests).find(([_n, t]) => t.score_modifier > 0);\n\n // empty case, should not happen\n if (Object.keys(result.tests).length === 0) {\n return html`No tests found.`;\n }\n\n const rows = TEST_NAMES_IN_ORDER.map((name) => {\n const test = result.tests[name];\n if (!test) return null;\n\n return html`\n <tr>\n <td data-header=\"Test\">\n <a\n href=${test.link}\n target=\"_blank\"\n rel=\"noreferrer\"\n class=${test.link.startsWith(\"/\") ? \"\" : \"external\"}\n >\n ${test.title}\n </a>\n </td>\n ${test.pass === null\n ? html`<td data-header=\"Score\">-</td>`\n : html` <td class=\"score\" data-header=\"Score\">\n <span>\n <span class=\"obs-score-value\">\n ${ScoreModifier({\n overallScore: result.scan.score || 0,\n scoreModifier: test.score_modifier,\n })}\n </span>\n ${PassIcon({ pass: test.pass })}\n </span>\n </td>`}\n <td data-header=\"Reason\" .innerHTML=${test.score_description}></td>\n <td\n data-header=\"Advice\"\n .innerHTML=${test.recommendation || `<p class=\"obs-none\">None</p>`}\n ></td>\n </tr>\n `;\n });\n\n return html`\n <table class=\"tests\">\n <thead>\n <tr>\n <th>Test</th>\n <th>Score</th>\n <th>Reason</th>\n <th>Recommendation</th>\n </tr>\n </thead>\n <tbody>\n ${rows}\n </tbody>\n </table>\n ${showFootnote\n ? html` <section class=\"footnote\" id=\"bonus-points-explanation\">\n <sup>*</sup> Normally awards bonus points, however, in this case they\n are not included in the overall score (\n <a href=\"/en-US/observatory/docs/tests_and_scoring\" target=\"_blank\">\n find out why\n </a>\n ).\n </section>`\n : null}\n `;\n}\n","import { html } from \"lit\";\n\nimport {\n CookiePrefix,\n PassIcon,\n Timestamp,\n upperCaseHeaderName,\n} from \"../observatory/utils.js\";\n\n/**\n *\n * @param {{result: import(\"@observatory\").Result}} props\n * @returns { import(\"@lit\").TemplateResult }\n */\nexport function Cookies({ result }) {\n const cookies = result.tests[\"cookies\"]?.data;\n const pass = result.tests[\"cookies\"]?.pass;\n\n if (!cookies || Object.keys(cookies).length === 0) {\n return html`\n <table class=\"cookies\">\n <tbody>\n <tr>\n <td>No cookies detected</td>\n </tr>\n </tbody>\n </table>\n `;\n }\n\n const rows = Object.entries(cookies).map(\n ([key, value]) => html`\n <tr>\n <td data-header=\"Name\" class=\"cookie-name\">${key}</td>\n <td data-header=\"Expires\">\n ${value.expires ? Timestamp({ expires: value.expires }) : \"Session\"}\n </td>\n <td data-header=\"Path\">\n <code>${value.path}</code>\n </td>\n <td data-header=\"Secure\">${PassIcon({ pass: value.secure })}</td>\n <td data-header=\"HttpOnly\">${PassIcon({ pass: value.httponly })}</td>\n <td data-header=\"SameSite\">\n ${value.samesite\n ? html`<code>${upperCaseHeaderName(value.samesite)}</code>`\n : \"-\"}\n </td>\n <td data-header=\"Prefixed\">${CookiePrefix({ cookieName: key })}</td>\n </tr>\n `,\n );\n\n return html`\n <div class=\"detail-header\">\n <p class=\"arrow\">\n ${PassIcon({ pass: pass === undefined ? null : pass })}\n </p>\n <div\n class=\"detail-header-content\"\n .innerHTML=${result.tests[\"cookies\"]?.score_description ??\n `<p class=\"obs-none\">None</p>`}\n ></div>\n </div>\n <table class=\"cookies\">\n <thead>\n <tr>\n <th>Name</th>\n <th>\n <a\n target=\"_blank\"\n href=\"/en-US/docs/Web/Security/Practical_implementation_guides/Cookies#expires\"\n >Expires</a\n >\n </th>\n <th>\n <a\n target=\"_blank\"\n href=\"/en-US/docs/Web/Security/Practical_implementation_guides/Cookies#path\"\n >Path</a\n >\n </th>\n <th>\n <a\n target=\"_blank\"\n href=\"/en-US/docs/Web/Security/Practical_implementation_guides/Cookies#secure\"\n >Secure</a\n >\n </th>\n <th>\n <a\n target=\"_blank\"\n href=\"/en-US/docs/Web/Security/Practical_implementation_guides/Cookies#httponly\"\n >HttpOnly</a\n >\n </th>\n <th>\n <a\n target=\"_blank\"\n href=\"/en-US/docs/Web/Security/Practical_implementation_guides/Cookies#samesite\"\n >SameSite</a\n >\n </th>\n <th>\n <a\n target=\"_blank\"\n href=\"/en-US/docs/Web/Security/Practical_implementation_guides/Cookies#name\"\n >Prefix</a\n >\n </th>\n </tr>\n </thead>\n <tbody>\n ${rows}\n </tbody>\n </table>\n `;\n}\n","import { html } from \"lit\";\n\nimport { headerLink } from \"../observatory/utils.js\";\n\nimport \"../observatory-header-link/element.js\";\n\n/**\n *\n * @param {{result: import(\"@observatory\").Result}} props\n * @returns { import(\"@lit\").TemplateResult }\n */\nexport function RawHeaders({ result }) {\n if (!result.scan.response_headers) {\n return html`\n <table class=\"headers\">\n <tbody>\n <tr>\n <td>No headers detected</td>\n </tr>\n </tbody>\n </table>\n `;\n }\n\n const rows = Object.entries(result.scan.response_headers).map(\n ([header, value]) => html`\n <tr>\n <td data-header=\"Header\">\n <mdn-observatory-header-link header=${header}>\n ${headerLink(header)}\n </mdn-observatory-header-link>\n </td>\n <td data-header=\"Value\">${value}</td>\n </tr>\n `,\n );\n\n return html`\n <table class=\"headers\">\n <thead>\n <tr>\n <th>Header</th>\n <th>Value</th>\n </tr>\n </thead>\n <tbody>\n ${rows}\n </tbody>\n </table>\n `;\n}\n","import { html, nothing } from \"lit\";\n\nimport { formatDateTime, formatMinus } from \"../observatory/utils.js\";\n\n/**\n *\n * @param {{result: import(\"@observatory\").Result}} props\n * @returns { import(\"@lit\").TemplateResult | nothing }\n */\nexport function History({ result }) {\n if (result.history.length === 0) {\n return nothing;\n }\n\n const rows = [...result.history].reverse().map(\n ({ scanned_at, score, grade }) => html`\n <tr>\n <td data-header=\"Date\">${formatDateTime(new Date(scanned_at))}</td>\n <td data-header=\"Score\">${score}</td>\n <td data-header=\"Grade\">${formatMinus(grade)}</td>\n </tr>\n `,\n );\n\n return html`\n <h2>Changes in score over time</h2>\n <table class=\"history\">\n <thead>\n <tr>\n <th>Date</th>\n <th>Score</th>\n <th>Grade</th>\n </tr>\n </thead>\n <tbody>\n ${rows}\n </tbody>\n </table>\n `;\n}\n","import { html } from \"lit\";\n\n/**\n *\n * @param {{result: import(\"@observatory\").Result}} result\n * @returns { import(\"@lit\").TemplateResult }\n */\nexport function Comparison({ result }) {\n return html`\n <h2>Performance trends from the past year</h2>\n <mdn-observatory-comparison-table\n .result=${result}\n ></mdn-observatory-comparison-table>\n <p>\n Refer to this graph to assess the website's current status. By following\n the recommendations provided and rescanning, you can expect an improvement\n in the website's grade.\n </p>\n `;\n}\n"],"names":["Set","MDNObservatoryResults","String","Number","Boolean","Error","fetch","encodeURIComponent","e","globalThis","URLSearchParams","Date","Object","t","customElements"],"mappings":"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"}
@@ -43,8 +43,9 @@ export const __rspack_esm_id="3775";export const __rspack_esm_ids=["3775"];expor
43
43
  href=${this.#e()}
44
44
  .icon=${l}
45
45
  variant="plain"
46
+ data-glean-id="top_nav: login"
46
47
  >
47
48
  ${this.l10n("login")}
48
49
  </mdn-button>
49
50
  `})}};customElements.define("mdn-user-menu",MDNUserMenu)}};
50
- //# sourceMappingURL=3775.c64e09b2fc1d9b21.js.map
51
+ //# sourceMappingURL=3775.cf93e968f166d25a.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"3775.c64e09b2fc1d9b21.js","sources":["webpack://@mdn/fred/./components/user-menu/element.css","webpack://@mdn/fred/./components/global/global.css?1b68","webpack://@mdn/fred/./components/user-menu/base.css","webpack://@mdn/fred/./components/user-menu/desktop.css","webpack://@mdn/fred/./components/user-menu/mobile.css","webpack://@mdn/fred/./components/icon/log-in.svg","webpack://@mdn/fred/./components/user-menu/element.js"],"sourcesContent":["import { css } from \"lit\";\n// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_0___ from \"-!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../build/loaders/fix-light-dark.js!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!../global/global.css\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_1___ from \"-!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../build/loaders/fix-light-dark.js!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!../button/server.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]!../external-link/global.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]!./base.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]!./mobile.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]!./desktop.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// 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\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `*,:after,:before{box-sizing:border-box}button,input,select,textarea{font:inherit}button{color:inherit;cursor:pointer}img{height:auto;max-width:100%}a{color:var(--color-link-normal)}[hidden]{display:none!important}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.user-menu__button{background-color:var(--color-background-primary);cursor:pointer;margin:0;padding:0}.user-menu__button img{border-radius:50%;display:block;height:2rem;width:2rem}.user-menu__dropdown{display:grid;row-gap:1rem}.user-menu__dropdown p{margin:0}.user-menu__dropdown ul{display:grid;list-style:none;margin:0;padding:0;row-gap:.25rem}.user-menu__dropdown a{color:var(--color-text-primary)}:is(.user-menu__dropdown a):hover{color:var(--color-text-secondary)}.user-menu__dropdown form{display:contents}`, \"\"]);\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 > 1044px){.user-menu{position:relative}.user-menu__login{height:100%;width:100%}.user-menu__login::part(label){height:0;overflow:hidden;position:absolute;width:0}.user-menu__button{border:1px solid var(--color-border-primary);border-radius:50%}.user-menu__dropdown{background-color:var(--color-background-primary);border:1px solid var(--color-border-primary);margin:0;padding:.75rem;position:absolute;right:0;z-index:1}}`, \"\"]);\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/chevron-down.svg\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@media (width <= 1044px){.user-menu__login{padding:.45rem 0}.user-menu__button{align-items:center;background-color:initial;border:none;display:flex;padding:.5rem .7rem;width:100%}.user-menu__button:after,.user-menu__button:before{background-color:currentcolor;height:1.25rem;margin-left:auto;-webkit-mask-size:cover;mask-size:cover;width:1.25rem}.user-menu__button:after{content:\"\";-webkit-mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___})}.user-menu__button[aria-expanded=true]{background-color:var(--color-background-blue)}.user-menu__button[aria-expanded=true]:after{scale:-1}.user-menu__dropdown{padding:.5rem .7rem}}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","import { svg } from \"lit\"; export default svg`<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"m10 17 5-5-5-5m5 5H3m12-9h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4\"/></svg>`;","import { Task } from \"@lit/task\";\nimport { LitElement, html, nothing } from \"lit\";\n\nimport { ifDefined } from \"lit/directives/if-defined.js\";\n\nimport { L10nMixin } from \"../../l10n/mixin.js\";\n\nimport { FXA_SIGNIN_URL, FXA_SIGNOUT_URL } from \"../env/index.js\";\nimport logInIcon from \"../icon/log-in.svg?lit\";\nimport { globalUser } from \"../user/context.js\";\n\nimport styles from \"./element.css?lit\";\n\nimport \"../button/element.js\";\n\nexport class MDNUserMenu extends L10nMixin(LitElement) {\n static ssr = false;\n static styles = styles;\n\n #loginUrl() {\n const base = globalThis.location.origin;\n const url = new URL(FXA_SIGNIN_URL, base);\n url.searchParams.append(\"next\", this.#next());\n return url.toString();\n }\n\n #next() {\n const next = globalThis.location.href.replace(\n globalThis.location.origin,\n \"\",\n );\n return next;\n }\n\n #logoutUrl() {\n const base = globalThis.location.origin;\n const url = new URL(FXA_SIGNOUT_URL, base);\n return url.toString();\n }\n\n #getLinks() {\n return [\n {\n href: `/${this.locale}/plus/ai-help`,\n label: this.l10n(\"user-menu-ai-help\")`AI Help`,\n },\n {\n href: `/${this.locale}/plus/collections`,\n label: this.l10n(\"user-menu-collections\")`Collections`,\n },\n {\n href: `/${this.locale}/plus/updates`,\n label: this.l10n(\"user-menu-updates\")`Updates`,\n },\n {\n href: `/${this.locale}/plus/settings`,\n label: this.l10n(\"user-menu-settings\")`My settings`,\n },\n {\n href: \"https://support.mozilla.org/products/mdn-plus\",\n label: this.l10n(\"user-menu-help\")`Help`,\n external: true,\n },\n {\n href: \"https://github.com/mdn/MDN-feedback\",\n label: this.l10n(\"user-menu-feedback\")`Feedback`,\n external: true,\n },\n ];\n }\n\n _user = new Task(this, {\n task: async () => {\n return await globalUser();\n },\n });\n\n connectedCallback() {\n super.connectedCallback();\n this._user.run();\n }\n\n render() {\n return this._user.render({\n initial: () => nothing,\n pending: () => nothing,\n\n complete:\n /**\n * @param {import(\"../user/types.js\").User} user\n */\n (user) => {\n return user.isAuthenticated\n ? html`\n <div class=\"user-menu\">\n <mdn-dropdown>\n <button slot=\"button\" class=\"user-menu__button\">\n ${user.avatarUrl\n ? html`<img\n src=${ifDefined(user.avatarUrl ?? undefined)}\n width=\"32\"\n height=\"32\"\n alt=\"\"\n />`\n : this.l10n(\"user-menu-user\")`User`}\n </button>\n <div slot=\"dropdown\" class=\"user-menu__dropdown\">\n <p>${user.email}</p>\n <ul>\n ${this.#getLinks().map(\n (link) =>\n html`<li>\n <a\n class=${ifDefined(\n link.external ? \"external\" : undefined,\n )}\n href=${link.href}\n >${link.label}</a\n >\n </li>`,\n )}\n </ul>\n <form method=\"post\" action=${this.#logoutUrl()}>\n <input\n type=\"hidden\"\n name=\"next\"\n .value=${this.#next()}\n />\n <button\n class=\"button\"\n data-variant=\"secondary\"\n type=\"submit\"\n >\n ${this.l10n(\"logout\")}\n </button>\n </form>\n </div>\n </mdn-dropdown>\n </div>\n `\n : html`\n <mdn-button\n class=\"user-menu__login\"\n href=${this.#loginUrl()}\n .icon=${logInIcon}\n variant=\"plain\"\n >\n ${this.l10n(\"login\")}\n </mdn-button>\n `;\n },\n });\n }\n}\n\ncustomElements.define(\"mdn-user-menu\", MDNUserMenu);\n"],"names":["n","MDNUserMenu","globalThis","URL","i","l","customElements"],"mappings":"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"}
1
+ {"version":3,"file":"3775.cf93e968f166d25a.js","sources":["webpack://@mdn/fred/./components/user-menu/element.css","webpack://@mdn/fred/./components/global/global.css?1b68","webpack://@mdn/fred/./components/user-menu/base.css","webpack://@mdn/fred/./components/user-menu/desktop.css","webpack://@mdn/fred/./components/user-menu/mobile.css","webpack://@mdn/fred/./components/icon/log-in.svg","webpack://@mdn/fred/./components/user-menu/element.js"],"sourcesContent":["import { css } from \"lit\";\n// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_0___ from \"-!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../build/loaders/fix-light-dark.js!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!../global/global.css\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_1___ from \"-!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../build/loaders/fix-light-dark.js!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!../button/server.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]!../external-link/global.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]!./base.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]!./mobile.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]!./desktop.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// 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\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `*,:after,:before{box-sizing:border-box}button,input,select,textarea{font:inherit}button{color:inherit;cursor:pointer}img{height:auto;max-width:100%}a{color:var(--color-link-normal)}[hidden]{display:none!important}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.user-menu__button{background-color:var(--color-background-primary);cursor:pointer;margin:0;padding:0}.user-menu__button img{border-radius:50%;display:block;height:2rem;width:2rem}.user-menu__dropdown{display:grid;row-gap:1rem}.user-menu__dropdown p{margin:0}.user-menu__dropdown ul{display:grid;list-style:none;margin:0;padding:0;row-gap:.25rem}.user-menu__dropdown a{color:var(--color-text-primary)}:is(.user-menu__dropdown a):hover{color:var(--color-text-secondary)}.user-menu__dropdown form{display:contents}`, \"\"]);\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 > 1044px){.user-menu{position:relative}.user-menu__login{height:100%;width:100%}.user-menu__login::part(label){height:0;overflow:hidden;position:absolute;width:0}.user-menu__button{border:1px solid var(--color-border-primary);border-radius:50%}.user-menu__dropdown{background-color:var(--color-background-primary);border:1px solid var(--color-border-primary);margin:0;padding:.75rem;position:absolute;right:0;z-index:1}}`, \"\"]);\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/chevron-down.svg\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@media (width <= 1044px){.user-menu__login{padding:.45rem 0}.user-menu__button{align-items:center;background-color:initial;border:none;display:flex;padding:.5rem .7rem;width:100%}.user-menu__button:after,.user-menu__button:before{background-color:currentcolor;height:1.25rem;margin-left:auto;-webkit-mask-size:cover;mask-size:cover;width:1.25rem}.user-menu__button:after{content:\"\";-webkit-mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});mask-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___})}.user-menu__button[aria-expanded=true]{background-color:var(--color-background-blue)}.user-menu__button[aria-expanded=true]:after{scale:-1}.user-menu__dropdown{padding:.5rem .7rem}}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","import { svg } from \"lit\"; export default svg`<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"m10 17 5-5-5-5m5 5H3m12-9h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4\"/></svg>`;","import { Task } from \"@lit/task\";\nimport { LitElement, html, nothing } from \"lit\";\n\nimport { ifDefined } from \"lit/directives/if-defined.js\";\n\nimport { L10nMixin } from \"../../l10n/mixin.js\";\n\nimport { FXA_SIGNIN_URL, FXA_SIGNOUT_URL } from \"../env/index.js\";\nimport logInIcon from \"../icon/log-in.svg?lit\";\nimport { globalUser } from \"../user/context.js\";\n\nimport styles from \"./element.css?lit\";\n\nimport \"../button/element.js\";\n\nexport class MDNUserMenu extends L10nMixin(LitElement) {\n static ssr = false;\n static styles = styles;\n\n #loginUrl() {\n const base = globalThis.location.origin;\n const url = new URL(FXA_SIGNIN_URL, base);\n url.searchParams.append(\"next\", this.#next());\n return url.toString();\n }\n\n #next() {\n const next = globalThis.location.href.replace(\n globalThis.location.origin,\n \"\",\n );\n return next;\n }\n\n #logoutUrl() {\n const base = globalThis.location.origin;\n const url = new URL(FXA_SIGNOUT_URL, base);\n return url.toString();\n }\n\n #getLinks() {\n return [\n {\n href: `/${this.locale}/plus/ai-help`,\n label: this.l10n(\"user-menu-ai-help\")`AI Help`,\n },\n {\n href: `/${this.locale}/plus/collections`,\n label: this.l10n(\"user-menu-collections\")`Collections`,\n },\n {\n href: `/${this.locale}/plus/updates`,\n label: this.l10n(\"user-menu-updates\")`Updates`,\n },\n {\n href: `/${this.locale}/plus/settings`,\n label: this.l10n(\"user-menu-settings\")`My settings`,\n },\n {\n href: \"https://support.mozilla.org/products/mdn-plus\",\n label: this.l10n(\"user-menu-help\")`Help`,\n external: true,\n },\n {\n href: \"https://github.com/mdn/MDN-feedback\",\n label: this.l10n(\"user-menu-feedback\")`Feedback`,\n external: true,\n },\n ];\n }\n\n _user = new Task(this, {\n task: async () => {\n return await globalUser();\n },\n });\n\n connectedCallback() {\n super.connectedCallback();\n this._user.run();\n }\n\n render() {\n return this._user.render({\n initial: () => nothing,\n pending: () => nothing,\n\n complete:\n /**\n * @param {import(\"../user/types.js\").User} user\n */\n (user) => {\n return user.isAuthenticated\n ? html`\n <div class=\"user-menu\">\n <mdn-dropdown>\n <button slot=\"button\" class=\"user-menu__button\">\n ${user.avatarUrl\n ? html`<img\n src=${ifDefined(user.avatarUrl ?? undefined)}\n width=\"32\"\n height=\"32\"\n alt=\"\"\n />`\n : this.l10n(\"user-menu-user\")`User`}\n </button>\n <div slot=\"dropdown\" class=\"user-menu__dropdown\">\n <p>${user.email}</p>\n <ul>\n ${this.#getLinks().map(\n (link) =>\n html`<li>\n <a\n class=${ifDefined(\n link.external ? \"external\" : undefined,\n )}\n href=${link.href}\n >${link.label}</a\n >\n </li>`,\n )}\n </ul>\n <form method=\"post\" action=${this.#logoutUrl()}>\n <input\n type=\"hidden\"\n name=\"next\"\n .value=${this.#next()}\n />\n <button\n class=\"button\"\n data-variant=\"secondary\"\n type=\"submit\"\n >\n ${this.l10n(\"logout\")}\n </button>\n </form>\n </div>\n </mdn-dropdown>\n </div>\n `\n : html`\n <mdn-button\n class=\"user-menu__login\"\n href=${this.#loginUrl()}\n .icon=${logInIcon}\n variant=\"plain\"\n data-glean-id=\"top_nav: login\"\n >\n ${this.l10n(\"login\")}\n </mdn-button>\n `;\n },\n });\n }\n}\n\ncustomElements.define(\"mdn-user-menu\", MDNUserMenu);\n"],"names":["n","MDNUserMenu","globalThis","URL","i","l","customElements"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export const __rspack_esm_id="4060";export const __rspack_esm_ids=["4060"];export const __webpack_modules__={85952(t,o,e){e.d(o,{A:()=>m});var a=e(97825),r=e(31601),l=e.n(r),c=e(76314),n=e.n(c)()(l());n.push([t.id,'.bottom-placement{--bottom-background-light:var(--color-background-primary);--bottom-color-light:var(--color-text-primary);--bottom-background-dark:var(--color-background-primary);--bottom-color-dark:var(--color-text-primary);--csstools-light-dark-toggle-7c143197-0:var(--csstools-color-scheme--light) var(--bottom-background-dark);--bottom-background:var(--csstools-light-dark-toggle-7c143197-0,var(--bottom-background-light));--csstools-light-dark-toggle-7c143197-1:var(--csstools-color-scheme--light) var(--bottom-color-dark);--bottom-color:var(--csstools-light-dark-toggle-7c143197-1,var(--bottom-color-light));background-color:var(--bottom-background);padding-inline:var(--layout-side-padding)}@supports (color:light-dark(red,red)){.bottom-placement{--bottom-background:light-dark(var(--bottom-background-light),var(--bottom-background-dark));--bottom-color:light-dark(var(--bottom-color-light),var(--bottom-color-dark))}}@supports not (color:light-dark(tan,tan)){.bottom-placement *{--csstools-light-dark-toggle-7c143197-0:var(--csstools-color-scheme--light) var(--bottom-background-dark);--bottom-background:var(--csstools-light-dark-toggle-7c143197-0,var(--bottom-background-light));--csstools-light-dark-toggle-7c143197-1:var(--csstools-color-scheme--light) var(--bottom-color-dark);--bottom-color:var(--csstools-light-dark-toggle-7c143197-1,var(--bottom-color-light))}}.bottom-placement .placement-container{column-gap:3rem;display:grid;grid-template-areas:"nope pong note" "nope pong no";grid-template-columns:auto auto auto;margin:0 auto;padding:0 1rem}@media (width <= 1441px){.bottom-placement .placement-container{grid-template-areas:"pong note" "pong no";grid-template-columns:auto max-content;grid-template-rows:auto 2rem}}@media (width <= 769px){.bottom-placement .placement-container{grid-template-areas:"pong" "note";grid-template-columns:auto;grid-template-rows:auto 2rem}}:is(.bottom-placement .placement-container) .placement-link{display:flex;grid-area:pong;justify-content:center}:is(:is(.bottom-placement .placement-container) .placement-link) img{display:block;height:auto;max-width:100%}:is(.bottom-placement .placement-container) mdn-placement-note{grid-area:note;margin:0 0 auto auto}',""]);let m=(0,a.AH)([n.toString()])},7895(t,o,e){e.r(o),e.d(o,{MDNPlacementBottom:()=>MDNPlacementBottom});var a=e(97825),r=e(52258),l=e(5350);e(47764),e(13755);var c=e(30776),n=e(85952);let MDNPlacementBottom=class MDNPlacementBottom extends(0,c.N)(a.WF){static styles=n.A;renderComplete(t){let o=t?.hpFooter||t?.bottom;if(!o)return a.s6;let{status:e,click:c,view:n,image:m,alt:i,colors:s,version:g}=o;if("success"!==e)return a.s6;this._viewedUrl||(this._viewedUrl=n,this._version=g);let{backgroundColor:d,textColor:p}=s||{},b=Object.fromEntries([["--bottom-background",d],["--bottom-color",p]].filter(([t,o])=>!!o)),h=t?.hpFooter?"hp-footer":"bottom-banner";return(0,a.qy)`<div
1
+ export const __rspack_esm_id="4060";export const __rspack_esm_ids=["4060"];export const __webpack_modules__={85952(t,o,e){e.d(o,{A:()=>m});var a=e(97825),r=e(31601),l=e.n(r),c=e(76314),n=e.n(c)()(l());n.push([t.id,'.bottom-placement{--bottom-background-light:var(--color-background-primary);--bottom-color-light:var(--color-text-primary);--bottom-background-dark:var(--color-background-primary);--bottom-color-dark:var(--color-text-primary);--csstools-light-dark-toggle-7c143197-0:var(--csstools-color-scheme--light) var(--bottom-background-dark);--bottom-background:var(--csstools-light-dark-toggle-7c143197-0,var(--bottom-background-light));--csstools-light-dark-toggle-7c143197-1:var(--csstools-color-scheme--light) var(--bottom-color-dark);--bottom-color:var(--csstools-light-dark-toggle-7c143197-1,var(--bottom-color-light));background-color:var(--bottom-background);padding-inline:var(--layout-side-padding)}@supports (color:light-dark(red,red)){.bottom-placement{--bottom-background:light-dark(var(--bottom-background-light),var(--bottom-background-dark));--bottom-color:light-dark(var(--bottom-color-light),var(--bottom-color-dark))}}@supports not (color:light-dark(tan,tan)){.bottom-placement *{--csstools-light-dark-toggle-7c143197-0:var(--csstools-color-scheme--light) var(--bottom-background-dark);--bottom-background:var(--csstools-light-dark-toggle-7c143197-0,var(--bottom-background-light));--csstools-light-dark-toggle-7c143197-1:var(--csstools-color-scheme--light) var(--bottom-color-dark);--bottom-color:var(--csstools-light-dark-toggle-7c143197-1,var(--bottom-color-light))}}.bottom-placement .placement-container{column-gap:3rem;display:grid;grid-template-areas:"nope pong note" "nope pong no";grid-template-columns:auto auto auto;margin:0 auto;padding:0 1rem}@media (width <= 1441px){.bottom-placement .placement-container{grid-template-areas:"pong note" "pong no";grid-template-columns:auto max-content;grid-template-rows:auto 2rem}}@media (width <= 769px){.bottom-placement .placement-container{grid-template-areas:"pong" "note";grid-template-columns:auto;grid-template-rows:auto 2rem}}:is(.bottom-placement .placement-container) .placement-link{display:flex;grid-area:pong;justify-content:center}:is(:is(.bottom-placement .placement-container) .placement-link) img{display:block;height:auto;max-width:100%}:is(.bottom-placement .placement-container) mdn-placement-note{grid-area:note;margin:0 0 auto auto}',""]);let m=(0,a.AH)([n.toString()])},7895(t,o,e){e.r(o),e.d(o,{MDNPlacementBottom:()=>MDNPlacementBottom});var a=e(97825),r=e(52258),l=e(5350);e(47764),e(13755);var c=e(51360),n=e(85952);let MDNPlacementBottom=class MDNPlacementBottom extends(0,c.N)(a.WF){static styles=n.A;renderComplete(t){let o=t?.hpFooter||t?.bottom;if(!o)return a.s6;let{status:e,click:c,view:n,image:m,alt:i,colors:s,version:g}=o;if("success"!==e)return a.s6;this._viewedUrl||(this._viewedUrl=n,this._version=g);let{backgroundColor:d,textColor:p}=s||{},b=Object.fromEntries([["--bottom-background",d],["--bottom-color",p]].filter(([t,o])=>!!o)),h=t?.hpFooter?"hp-footer":"bottom-banner";return(0,a.qy)`<div
2
2
  ${(0,r.K)(this._placementRef)}
3
3
  class="bottom-placement"
4
4
  style=${(0,l.W)(b)}
@@ -23,4 +23,4 @@ export const __rspack_esm_id="4060";export const __rspack_esm_ids=["4060"];expor
23
23
  <mdn-placement-note></mdn-placement-note>
24
24
  </section>
25
25
  </div>`}};customElements.define("mdn-placement-bottom",MDNPlacementBottom)}};
26
- //# sourceMappingURL=4060.9a7bb116e3112c13.js.map
26
+ //# sourceMappingURL=4060.a23acd149888555c.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"4060.9a7bb116e3112c13.js","sources":["webpack://@mdn/fred/./components/placement-bottom/element.css","webpack://@mdn/fred/./components/placement-bottom/element.js"],"sourcesContent":["import { css } from \"lit\";\n// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.bottom-placement{--bottom-background-light:var(--color-background-primary);--bottom-color-light:var(--color-text-primary);--bottom-background-dark:var(--color-background-primary);--bottom-color-dark:var(--color-text-primary);--csstools-light-dark-toggle-7c143197-0:var(--csstools-color-scheme--light) var(--bottom-background-dark);--bottom-background:var(--csstools-light-dark-toggle-7c143197-0,var(--bottom-background-light));--csstools-light-dark-toggle-7c143197-1:var(--csstools-color-scheme--light) var(--bottom-color-dark);--bottom-color:var(--csstools-light-dark-toggle-7c143197-1,var(--bottom-color-light));background-color:var(--bottom-background);padding-inline:var(--layout-side-padding)}@supports (color:light-dark(red,red)){.bottom-placement{--bottom-background:light-dark(var(--bottom-background-light),var(--bottom-background-dark));--bottom-color:light-dark(var(--bottom-color-light),var(--bottom-color-dark))}}@supports not (color:light-dark(tan,tan)){.bottom-placement *{--csstools-light-dark-toggle-7c143197-0:var(--csstools-color-scheme--light) var(--bottom-background-dark);--bottom-background:var(--csstools-light-dark-toggle-7c143197-0,var(--bottom-background-light));--csstools-light-dark-toggle-7c143197-1:var(--csstools-color-scheme--light) var(--bottom-color-dark);--bottom-color:var(--csstools-light-dark-toggle-7c143197-1,var(--bottom-color-light))}}.bottom-placement .placement-container{column-gap:3rem;display:grid;grid-template-areas:\"nope pong note\" \"nope pong no\";grid-template-columns:auto auto auto;margin:0 auto;padding:0 1rem}@media (width <= 1441px){.bottom-placement .placement-container{grid-template-areas:\"pong note\" \"pong no\";grid-template-columns:auto max-content;grid-template-rows:auto 2rem}}@media (width <= 769px){.bottom-placement .placement-container{grid-template-areas:\"pong\" \"note\";grid-template-columns:auto;grid-template-rows:auto 2rem}}:is(.bottom-placement .placement-container) .placement-link{display:flex;grid-area:pong;justify-content:center}:is(:is(.bottom-placement .placement-container) .placement-link) img{display:block;height:auto;max-width:100%}:is(.bottom-placement .placement-container) mdn-placement-note{grid-area:note;margin:0 0 auto auto}`, \"\"]);\n// Exports\nexport default css([___CSS_LOADER_EXPORT___.toString()]);\n","import { LitElement, html, nothing } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport { styleMap } from \"lit/directives/style-map.js\";\n\nimport \"../placement-note/element.js\";\nimport \"../placement-no/element.js\";\n\nimport { PlacementMixin } from \"../placement/mixin.js\";\n\nimport styles from \"./element.css?lit\";\n\n/**\n * @import * as Placements from \"../placement/types.js\";\n */\n\nexport class MDNPlacementBottom extends PlacementMixin(LitElement) {\n static styles = styles;\n\n /**\n *\n * @param {Placements.PlacementContextData} placementContext\n * @returns\n */\n renderComplete(placementContext) {\n const data = placementContext?.hpFooter || placementContext?.bottom;\n if (!data) {\n return nothing;\n }\n const { status, click, view, image, alt, colors, version } = data;\n if (status !== \"success\") {\n return nothing;\n }\n if (!this._viewedUrl) {\n this._viewedUrl = view;\n this._version = version;\n }\n const { backgroundColor, textColor } = colors || {};\n const styles = Object.fromEntries(\n [\n [\"--bottom-background\", backgroundColor],\n [\"--bottom-color\", textColor],\n ].filter(([_, v]) => Boolean(v)),\n );\n const type = placementContext?.hpFooter ? \"hp-footer\" : \"bottom-banner\";\n\n return html`<div\n ${ref(this._placementRef)}\n class=\"bottom-placement\"\n style=${styleMap(styles)}\n data-type=${type}\n >\n <section class=\"placement-container\">\n <a\n class=\"placement-link\"\n data-glean-id=${`pong: pong->click ${type}`}\n href=${this.clickLink(click, version)}\n target=\"_blank\"\n rel=\"sponsored\"\n >\n <img\n src=${this.imgLink(image)}\n aria-hidden=${!alt}\n alt=${alt || \"\"}\n width=\"728\"\n height=\"90\"\n />\n </a>\n <mdn-placement-note></mdn-placement-note>\n </section>\n </div>`;\n }\n}\n\ncustomElements.define(\"mdn-placement-bottom\", MDNPlacementBottom);\n"],"names":["MDNPlacementBottom","c","Object","r","customElements"],"mappings":"yLAII,EAA0B,A,SAA4B,KAE1D,EAAwB,IAAI,CAAC,CAAC,EAAO,EAAE,CAAE,yqEAA0qE,GAAG,EAEttE,MAAe,SAAI,CAAC,EAAwB,QAAQ,GAAG,C,wJCOhD,IAAMA,mBAAN,MAAMA,0BAA2B,QAAe,IAAU,EAC/D,OAAO,OAAS,GAAM,AAAC,AAOvB,gBAAe,CAAgB,CAAE,CAC/B,IAAM,EAAO,GAAkB,UAAY,GAAkB,OAC7D,GAAI,CAAC,EACH,OAAO,IAAO,CAEhB,GAAM,CAAE,QAAM,CAAEC,MAAAA,CAAK,CAAE,MAAI,CAAE,OAAK,CAAE,KAAG,CAAE,QAAM,CAAE,SAAO,CAAE,CAAG,EAC7D,GAAI,AAAW,YAAX,EACF,OAAO,IAAO,AAEX,KAAI,CAAC,UAAU,GAClB,IAAI,CAAC,UAAU,CAAG,EAClB,IAAI,CAAC,QAAQ,CAAG,GAElB,GAAM,CAAE,iBAAe,CAAE,WAAS,CAAE,CAAG,GAAU,CAAC,EAC5C,EAASC,OAAO,WAAW,CAC/B,CACE,CAAC,sBAAuB,EAAgB,CACxC,CAAC,iBAAkB,EAAU,CAC9B,CAAC,MAAM,CAAC,CAAC,CAAC,EAAG,EAAE,GAAK,EAAQ,IAEzB,EAAO,GAAkB,SAAW,YAAc,gBAExD,MAAO,QAAI,CAAC;MACV,EAAE,GAAAC,EAAA,GAAI,IAAI,CAAC,aAAa,EAAE;;YAEpB,EAAE,QAAS,GAAQ;gBACf,EAAE,EAAK;;;;;wBAKC,EAAE,CAAC,kBAAkB,EAAE,EAAK,CAAC,CAAC;eACvC,EAAE,IAAI,CAAC,SAAS,CAACF,EAAO,GAAS;;;;;gBAKhC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAO;wBACd,EAAE,CAAC,EAAI;gBACf,EAAE,GAAO,GAAG;;;;;;;UAOlB,CAAC,AACT,CACF,EAEAG,eAAe,MAAM,CAAC,uBAAwBJ,mB"}
1
+ {"version":3,"file":"4060.a23acd149888555c.js","sources":["webpack://@mdn/fred/./components/placement-bottom/element.css","webpack://@mdn/fred/./components/placement-bottom/element.js"],"sourcesContent":["import { css } from \"lit\";\n// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.bottom-placement{--bottom-background-light:var(--color-background-primary);--bottom-color-light:var(--color-text-primary);--bottom-background-dark:var(--color-background-primary);--bottom-color-dark:var(--color-text-primary);--csstools-light-dark-toggle-7c143197-0:var(--csstools-color-scheme--light) var(--bottom-background-dark);--bottom-background:var(--csstools-light-dark-toggle-7c143197-0,var(--bottom-background-light));--csstools-light-dark-toggle-7c143197-1:var(--csstools-color-scheme--light) var(--bottom-color-dark);--bottom-color:var(--csstools-light-dark-toggle-7c143197-1,var(--bottom-color-light));background-color:var(--bottom-background);padding-inline:var(--layout-side-padding)}@supports (color:light-dark(red,red)){.bottom-placement{--bottom-background:light-dark(var(--bottom-background-light),var(--bottom-background-dark));--bottom-color:light-dark(var(--bottom-color-light),var(--bottom-color-dark))}}@supports not (color:light-dark(tan,tan)){.bottom-placement *{--csstools-light-dark-toggle-7c143197-0:var(--csstools-color-scheme--light) var(--bottom-background-dark);--bottom-background:var(--csstools-light-dark-toggle-7c143197-0,var(--bottom-background-light));--csstools-light-dark-toggle-7c143197-1:var(--csstools-color-scheme--light) var(--bottom-color-dark);--bottom-color:var(--csstools-light-dark-toggle-7c143197-1,var(--bottom-color-light))}}.bottom-placement .placement-container{column-gap:3rem;display:grid;grid-template-areas:\"nope pong note\" \"nope pong no\";grid-template-columns:auto auto auto;margin:0 auto;padding:0 1rem}@media (width <= 1441px){.bottom-placement .placement-container{grid-template-areas:\"pong note\" \"pong no\";grid-template-columns:auto max-content;grid-template-rows:auto 2rem}}@media (width <= 769px){.bottom-placement .placement-container{grid-template-areas:\"pong\" \"note\";grid-template-columns:auto;grid-template-rows:auto 2rem}}:is(.bottom-placement .placement-container) .placement-link{display:flex;grid-area:pong;justify-content:center}:is(:is(.bottom-placement .placement-container) .placement-link) img{display:block;height:auto;max-width:100%}:is(.bottom-placement .placement-container) mdn-placement-note{grid-area:note;margin:0 0 auto auto}`, \"\"]);\n// Exports\nexport default css([___CSS_LOADER_EXPORT___.toString()]);\n","import { LitElement, html, nothing } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport { styleMap } from \"lit/directives/style-map.js\";\n\nimport \"../placement-note/element.js\";\nimport \"../placement-no/element.js\";\n\nimport { PlacementMixin } from \"../placement/mixin.js\";\n\nimport styles from \"./element.css?lit\";\n\n/**\n * @import * as Placements from \"../placement/types.js\";\n */\n\nexport class MDNPlacementBottom extends PlacementMixin(LitElement) {\n static styles = styles;\n\n /**\n *\n * @param {Placements.PlacementContextData} placementContext\n * @returns\n */\n renderComplete(placementContext) {\n const data = placementContext?.hpFooter || placementContext?.bottom;\n if (!data) {\n return nothing;\n }\n const { status, click, view, image, alt, colors, version } = data;\n if (status !== \"success\") {\n return nothing;\n }\n if (!this._viewedUrl) {\n this._viewedUrl = view;\n this._version = version;\n }\n const { backgroundColor, textColor } = colors || {};\n const styles = Object.fromEntries(\n [\n [\"--bottom-background\", backgroundColor],\n [\"--bottom-color\", textColor],\n ].filter(([_, v]) => Boolean(v)),\n );\n const type = placementContext?.hpFooter ? \"hp-footer\" : \"bottom-banner\";\n\n return html`<div\n ${ref(this._placementRef)}\n class=\"bottom-placement\"\n style=${styleMap(styles)}\n data-type=${type}\n >\n <section class=\"placement-container\">\n <a\n class=\"placement-link\"\n data-glean-id=${`pong: pong->click ${type}`}\n href=${this.clickLink(click, version)}\n target=\"_blank\"\n rel=\"sponsored\"\n >\n <img\n src=${this.imgLink(image)}\n aria-hidden=${!alt}\n alt=${alt || \"\"}\n width=\"728\"\n height=\"90\"\n />\n </a>\n <mdn-placement-note></mdn-placement-note>\n </section>\n </div>`;\n }\n}\n\ncustomElements.define(\"mdn-placement-bottom\", MDNPlacementBottom);\n"],"names":["MDNPlacementBottom","c","Object","r","customElements"],"mappings":"yLAII,EAA0B,A,SAA4B,KAE1D,EAAwB,IAAI,CAAC,CAAC,EAAO,EAAE,CAAE,yqEAA0qE,GAAG,EAEttE,MAAe,SAAI,CAAC,EAAwB,QAAQ,GAAG,C,wJCOhD,IAAMA,mBAAN,MAAMA,0BAA2B,QAAe,IAAU,EAC/D,OAAO,OAAS,GAAM,AAAC,AAOvB,gBAAe,CAAgB,CAAE,CAC/B,IAAM,EAAO,GAAkB,UAAY,GAAkB,OAC7D,GAAI,CAAC,EACH,OAAO,IAAO,CAEhB,GAAM,CAAE,QAAM,CAAEC,MAAAA,CAAK,CAAE,MAAI,CAAE,OAAK,CAAE,KAAG,CAAE,QAAM,CAAE,SAAO,CAAE,CAAG,EAC7D,GAAI,AAAW,YAAX,EACF,OAAO,IAAO,AAEX,KAAI,CAAC,UAAU,GAClB,IAAI,CAAC,UAAU,CAAG,EAClB,IAAI,CAAC,QAAQ,CAAG,GAElB,GAAM,CAAE,iBAAe,CAAE,WAAS,CAAE,CAAG,GAAU,CAAC,EAC5C,EAASC,OAAO,WAAW,CAC/B,CACE,CAAC,sBAAuB,EAAgB,CACxC,CAAC,iBAAkB,EAAU,CAC9B,CAAC,MAAM,CAAC,CAAC,CAAC,EAAG,EAAE,GAAK,EAAQ,IAEzB,EAAO,GAAkB,SAAW,YAAc,gBAExD,MAAO,QAAI,CAAC;MACV,EAAE,GAAAC,EAAA,GAAI,IAAI,CAAC,aAAa,EAAE;;YAEpB,EAAE,QAAS,GAAQ;gBACf,EAAE,EAAK;;;;;wBAKC,EAAE,CAAC,kBAAkB,EAAE,EAAK,CAAC,CAAC;eACvC,EAAE,IAAI,CAAC,SAAS,CAACF,EAAO,GAAS;;;;;gBAKhC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAO;wBACd,EAAE,CAAC,EAAI;gBACf,EAAE,GAAO,GAAG;;;;;;;UAOlB,CAAC,AACT,CACF,EAEAG,eAAe,MAAM,CAAC,uBAAwBJ,mB"}
@@ -0,0 +1,2 @@
1
+ export const __rspack_esm_id="4249";export const __rspack_esm_ids=["4249"];export const __webpack_modules__={51360(e,t,s){s.d(t,{N:()=>d});var r=s(31011),n=s(97825),i=s(52258),o=s(23727),a=s(91118),c=s(20126);s(13755);let d=e=>class extends e{static ssr=!1;_placementRef=(0,i._)();_dataTask=new r.YZ(this,{task:async()=>await (0,c.M)()});constructor(...e){super(...e),this._viewedUrl=void 0,this._version=void 0,this.viewed=new a.B(this,this._placementRef,()=>{if(this._viewedUrl){navigator.sendBeacon?.(this.viewedLink(this._viewedUrl,this._version));let e=this._placementRef.value?.dataset.type??"unknown";(0,o.w)(`pong: pong->viewed ${e}`)}})}connectedCallback(){super.connectedCallback(),this._dataTask.run()}renderComplete(e){throw Error("Must be implemented by subclass")}renderFallback(){return n.s6}renderInitial(){return n.s6}render(){return this._dataTask.render({initial:()=>this.renderInitial(),pending:()=>this.renderInitial(),error:()=>this.renderFallback(),complete:e=>this.renderComplete(e)})}clickLink(e,t){return`/pong/click?code=${encodeURIComponent(e)}&version=${t}`}imgLink(e){return`/pimg/${encodeURIComponent(e||"")}`}viewedLink(e,t){return`/pong/viewed?code=${encodeURIComponent(e)}${t?`&version=${t}`:""}`}}},91118(e,t,s){s.d(t,{B:()=>ViewedController});var r=s(18376);let ViewedController=class ViewedController{#e;observer=null;constructor(e,t,s,r){this.#e=e,this.#e.addController(this),this.target=t,this.callback=s,this.observerOptions=r}hostDisconnected(){this.observer?.disconnect(),this.observer=null}hostUpdated(){let e=this.target.value;e&&!this.observer&&(this.observer=new r.x(e,this.callback,this.observerOptions),this.observer.connect())}}}};
2
+ //# sourceMappingURL=4249.19f86ee6b57a13b0.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"4249.19f86ee6b57a13b0.js","sources":["webpack://@mdn/fred/./components/placement/mixin.js","webpack://@mdn/fred/./components/viewed-controller/viewed-controller.js"],"sourcesContent":["import { Task } from \"@lit/task\";\nimport { nothing } from \"lit\";\nimport { createRef } from \"lit/directives/ref.js\";\n\nimport { gleanClick } from \"../../utils/glean.js\";\nimport { ViewedController } from \"../viewed-controller/viewed-controller.js\";\n\nimport { globalPlacementContext } from \"./context.js\";\n\nimport \"../placement-no/element.js\";\n\n/**\n * @import { LitElement, TemplateResult } from \"lit\";\n * @import * as Placements from \"./types.js\";\n */\n\n/**\n * @template {new (...args: any[]) => LitElement} TBase\n * @param {TBase} Base\n */\nexport const PlacementMixin = (Base) =>\n class PlacementElement extends Base {\n static ssr = false;\n /** @type {import('lit/directives/ref.js').Ref<HTMLElement>} */\n _placementRef = createRef();\n\n _dataTask = new Task(this, {\n task: async () => {\n return await globalPlacementContext();\n },\n });\n\n /**\n *\n * @param {...any} args\n */\n constructor(...args) {\n super(...args);\n /**\n * @type {string | undefined}\n */\n this._viewedUrl = undefined;\n /**\n * @type {number | undefined}\n */\n this._version = undefined;\n /** @type {ViewedController} */\n this.viewed = new ViewedController(this, this._placementRef, () => {\n if (this._viewedUrl) {\n navigator.sendBeacon?.(\n this.viewedLink(this._viewedUrl, this._version),\n );\n const type = this._placementRef.value?.dataset.type ?? \"unknown\";\n gleanClick(`pong: pong->viewed ${type}`);\n }\n });\n }\n\n connectedCallback() {\n super.connectedCallback();\n this._dataTask.run();\n }\n\n /**\n *\n * @abstract\n * @param {Placements.PlacementContextData} _placementContext\n */\n renderComplete(_placementContext) {\n throw new Error(\"Must be implemented by subclass\");\n }\n\n /**\n *\n * @abstract\n * @returns {TemplateResult | nothing}\n */\n renderFallback() {\n // default: nothing, subclasses can override a default\n return nothing;\n }\n\n /**\n *\n * @returns {TemplateResult | symbol}\n */\n renderInitial() {\n return nothing;\n }\n\n render() {\n return this._dataTask.render({\n initial: () => this.renderInitial(),\n pending: () => this.renderInitial(),\n error: () => this.renderFallback(),\n complete: (placementContext) => {\n return this.renderComplete(placementContext);\n },\n });\n }\n\n /**\n *\n * @param {string} click\n * @param {number |undefined } version\n * @returns\n */\n clickLink(click, version) {\n return `/pong/click?code=${encodeURIComponent(click)}&version=${version}`;\n }\n\n /**\n *\n * @param {string | undefined} image\n * @returns\n */\n imgLink(image) {\n return `/pimg/${encodeURIComponent(image || \"\")}`;\n }\n\n /**\n *\n * @param {string} viewed\n * @param {number | undefined} version\n * @returns\n */\n viewedLink(viewed, version) {\n return `/pong/viewed?code=${encodeURIComponent(viewed)}${\n version ? `&version=${version}` : \"\"\n }`;\n }\n };\n","/**\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 {Function} 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":["navigator","Error","n","encodeURIComponent","ViewedController","t"],"mappings":"0NAoBO,IAAM,EAAiB,AAAC,GAC7B,cAA+B,EAC7B,OAAO,IAAM,EAAM,AAEnB,eAAgB,SAAY,AAE5B,WAAY,IAAI,IAAI,CAAC,IAAI,CAAE,CACzB,KAAM,SACG,MAAM,SAEjB,EAAG,AAMH,aAAY,GAAG,CAAI,CAAE,CACnB,KAAK,IAAI,GAIT,IAAI,CAAC,UAAU,CAAG,OAIlB,IAAI,CAAC,QAAQ,CAAG,OAEhB,IAAI,CAAC,MAAM,CAAG,IAAI,GAAgB,CAAC,IAAI,CAAE,IAAI,CAAC,aAAa,CAAE,KAC3D,GAAI,IAAI,CAAC,UAAU,CAAE,CACnBA,UAAU,UAAU,GAClB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAE,IAAI,CAAC,QAAQ,GAEhD,IAAM,EAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,QAAQ,MAAQ,UACvD,QAAW,CAAC,mBAAmB,EAAE,EAAK,CAAC,CACzC,CACF,EACF,CAEA,mBAAoB,CAClB,KAAK,CAAC,oBACN,IAAI,CAAC,SAAS,CAAC,GAAG,EACpB,CAOA,eAAe,CAAiB,CAAE,CAChC,MAAM,AAAIC,MAAM,kCAClB,CAOA,gBAAiB,CAEf,OAAOC,EAAA,EAAO,AAChB,CAMA,eAAgB,CACd,OAAOA,EAAA,EAAO,AAChB,CAEA,QAAS,CACP,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAC3B,QAAS,IAAM,IAAI,CAAC,aAAa,GACjC,QAAS,IAAM,IAAI,CAAC,aAAa,GACjC,MAAO,IAAM,IAAI,CAAC,cAAc,GAChC,SAAU,AAAC,GACF,IAAI,CAAC,cAAc,CAAC,EAE/B,EACF,CAQA,UAAU,CAAK,CAAE,CAAO,CAAE,CACxB,MAAO,CAAC,iBAAiB,EAAEC,mBAAmB,GAAO,SAAS,EAAE,EAAQ,CAAC,AAC3E,CAOA,QAAQ,CAAK,CAAE,CACb,MAAO,CAAC,MAAM,EAAEA,mBAAmB,GAAS,IAAI,CAAC,AACnD,CAQA,WAAW,CAAM,CAAE,CAAO,CAAE,CAC1B,MAAO,CAAC,kBAAkB,EAAEA,mBAAmB,GAAQ,EACrD,EAAU,CAAC,SAAS,EAAE,EAAQ,CAAC,CAAG,GACnC,CAAC,AACJ,CACF,C,8DC5HK,IAAMC,iBAAN,MAAMA,iBACX,EAAK,AAAC,AAEN,UAAW,IAAK,AAQhB,aAAY,CAAI,CAAEC,CAAM,CAAE,CAAQ,CAAE,CAAe,CAAE,CACnD,IAAI,CAAC,EAAK,CAAG,EACb,IAAI,CAAC,EAAK,CAAC,aAAa,CAAC,IAAI,EAE7B,IAAI,CAAC,MAAM,CAAGA,EACd,IAAI,CAAC,QAAQ,CAAG,EAChB,IAAI,CAAC,eAAe,CAAG,CACzB,CAEA,kBAAmB,CACjB,IAAI,CAAC,QAAQ,EAAE,aACf,IAAI,CAAC,QAAQ,CAAG,IAClB,CAEA,aAAc,CACZ,IAAM,EAAS,IAAI,CAAC,MAAM,CAAC,KAAK,CAC5B,GAAU,CAAC,IAAI,CAAC,QAAQ,GAC1B,IAAI,CAAC,QAAQ,CAAG,IAAI,GAAc,CAChC,EACA,IAAI,CAAC,QAAQ,CACb,IAAI,CAAC,eAAe,EAEtB,IAAI,CAAC,QAAQ,CAAC,OAAO,GAEzB,CACF,C"}
@@ -1,4 +1,4 @@
1
- export const __rspack_esm_id="4759";export const __rspack_esm_ids=["4759"];export const __webpack_modules__={43437(a,t,e){e.d(t,{A:()=>c});var n=e(97825),o=e(31601),r=e.n(o),i=e(76314),l=e.n(i)()(r());l.push([a.id,'.hp-main-placement{--hp-main-background-light:var(--color-background-primary);--hp-main-color-light:var(--color-text-primary);--hp-main-background-dark:var(--color-background-primary);--hp-main-color-dark:var(--color-text-primary);--csstools-light-dark-toggle-195607df-0:var(--csstools-color-scheme--light) var(--hp-main-background-dark);--hp-main-background:var(--csstools-light-dark-toggle-195607df-0,var(--hp-main-background-light));--csstools-light-dark-toggle-195607df-1:var(--csstools-color-scheme--light) var(--hp-main-color-dark);--hp-main-color:var(--csstools-light-dark-toggle-195607df-1,var(--hp-main-color-light));background-color:var(--hp-main-background);padding-inline:var(--layout-side-padding)}@supports (color:light-dark(red,red)){.hp-main-placement{--hp-main-background:light-dark(var(--hp-main-background-light),var(--hp-main-background-dark));--hp-main-color:light-dark(var(--hp-main-color-light),var(--hp-main-color-dark))}}@supports not (color:light-dark(tan,tan)){.hp-main-placement *{--csstools-light-dark-toggle-195607df-0:var(--csstools-color-scheme--light) var(--hp-main-background-dark);--hp-main-background:var(--csstools-light-dark-toggle-195607df-0,var(--hp-main-background-light));--csstools-light-dark-toggle-195607df-1:var(--csstools-color-scheme--light) var(--hp-main-color-dark);--hp-main-color:var(--csstools-light-dark-toggle-195607df-1,var(--hp-main-color-light))}}.hp-main-placement .placement-container{column-gap:3rem;display:grid;grid-template-areas:"nope pong note" "nope pong no";grid-template-columns:auto auto auto;margin:0 auto;padding:0 1rem}@media (width <= 1441px){.hp-main-placement .placement-container{grid-template-areas:"pong note" "pong no";grid-template-columns:auto max-content;grid-template-rows:auto 2rem}}@media (width <= 769px){.hp-main-placement .placement-container{grid-template-areas:"pong" "note";grid-template-columns:auto;grid-template-rows:auto 2rem}}:is(.hp-main-placement .placement-container) .placement-link{display:flex;grid-area:pong;justify-content:center}:is(:is(.hp-main-placement .placement-container) .placement-link) img{display:block;height:auto;max-width:100%}:is(.hp-main-placement .placement-container) mdn-placement-note{grid-area:note;margin:0 0 auto auto}',""]);let c=(0,n.AH)([l.toString()])},44394(a,t,e){e.r(t),e.d(t,{MDNPlacementHpMain:()=>MDNPlacementHpMain});var n=e(97825),o=e(52258),r=e(5350);e(47764),e(13755);var i=e(30776),l=e(43437);let MDNPlacementHpMain=class MDNPlacementHpMain extends(0,i.N)(n.WF){static styles=l.A;renderComplete(a){let{hpMain:t}=a;if(!t)return n.s6;let{status:e,click:i,view:l,image:c,alt:p,colors:m,version:s}=t;if("success"!==e)return n.s6;this._viewedUrl||(this._viewedUrl=l,this._version=s);let{backgroundColor:d,textColor:g}=m||{},h=Object.fromEntries([["--hp-main-background",d],["--hp-main-color",g]].filter(([a,t])=>!!t)),k="hp-main";return(0,n.qy)`<div
1
+ export const __rspack_esm_id="4759";export const __rspack_esm_ids=["4759"];export const __webpack_modules__={43437(a,t,e){e.d(t,{A:()=>c});var n=e(97825),o=e(31601),r=e.n(o),i=e(76314),l=e.n(i)()(r());l.push([a.id,'.hp-main-placement{--hp-main-background-light:var(--color-background-primary);--hp-main-color-light:var(--color-text-primary);--hp-main-background-dark:var(--color-background-primary);--hp-main-color-dark:var(--color-text-primary);--csstools-light-dark-toggle-195607df-0:var(--csstools-color-scheme--light) var(--hp-main-background-dark);--hp-main-background:var(--csstools-light-dark-toggle-195607df-0,var(--hp-main-background-light));--csstools-light-dark-toggle-195607df-1:var(--csstools-color-scheme--light) var(--hp-main-color-dark);--hp-main-color:var(--csstools-light-dark-toggle-195607df-1,var(--hp-main-color-light));background-color:var(--hp-main-background);padding-inline:var(--layout-side-padding)}@supports (color:light-dark(red,red)){.hp-main-placement{--hp-main-background:light-dark(var(--hp-main-background-light),var(--hp-main-background-dark));--hp-main-color:light-dark(var(--hp-main-color-light),var(--hp-main-color-dark))}}@supports not (color:light-dark(tan,tan)){.hp-main-placement *{--csstools-light-dark-toggle-195607df-0:var(--csstools-color-scheme--light) var(--hp-main-background-dark);--hp-main-background:var(--csstools-light-dark-toggle-195607df-0,var(--hp-main-background-light));--csstools-light-dark-toggle-195607df-1:var(--csstools-color-scheme--light) var(--hp-main-color-dark);--hp-main-color:var(--csstools-light-dark-toggle-195607df-1,var(--hp-main-color-light))}}.hp-main-placement .placement-container{column-gap:3rem;display:grid;grid-template-areas:"nope pong note" "nope pong no";grid-template-columns:auto auto auto;margin:0 auto;padding:0 1rem}@media (width <= 1441px){.hp-main-placement .placement-container{grid-template-areas:"pong note" "pong no";grid-template-columns:auto max-content;grid-template-rows:auto 2rem}}@media (width <= 769px){.hp-main-placement .placement-container{grid-template-areas:"pong" "note";grid-template-columns:auto;grid-template-rows:auto 2rem}}:is(.hp-main-placement .placement-container) .placement-link{display:flex;grid-area:pong;justify-content:center}:is(:is(.hp-main-placement .placement-container) .placement-link) img{display:block;height:auto;max-width:100%}:is(.hp-main-placement .placement-container) mdn-placement-note{grid-area:note;margin:0 0 auto auto}',""]);let c=(0,n.AH)([l.toString()])},44394(a,t,e){e.r(t),e.d(t,{MDNPlacementHpMain:()=>MDNPlacementHpMain});var n=e(97825),o=e(52258),r=e(5350);e(47764),e(13755);var i=e(51360),l=e(43437);let MDNPlacementHpMain=class MDNPlacementHpMain extends(0,i.N)(n.WF){static styles=l.A;renderComplete(a){let{hpMain:t}=a;if(!t)return n.s6;let{status:e,click:i,view:l,image:c,alt:p,colors:m,version:s}=t;if("success"!==e)return n.s6;this._viewedUrl||(this._viewedUrl=l,this._version=s);let{backgroundColor:d,textColor:g}=m||{},h=Object.fromEntries([["--hp-main-background",d],["--hp-main-color",g]].filter(([a,t])=>!!t)),k="hp-main";return(0,n.qy)`<div
2
2
  ${(0,o.K)(this._placementRef)}
3
3
  class="hp-main-placement"
4
4
  style=${(0,r.W)(h)}
@@ -23,4 +23,4 @@ export const __rspack_esm_id="4759";export const __rspack_esm_ids=["4759"];expor
23
23
  <mdn-placement-note></mdn-placement-note>
24
24
  </section>
25
25
  </div>`}};customElements.define("mdn-placement-hp-main",MDNPlacementHpMain)}};
26
- //# sourceMappingURL=4759.8981c79d33088d8f.js.map
26
+ //# sourceMappingURL=4759.5852733a45132491.js.map