@mdn/fred 2.4.1 → 2.4.3
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.
- package/CHANGELOG.md +31 -0
- package/components/media/index.css +5 -5
- package/components/menu/missing-docs.json +0 -1
- package/components/search-modal/element.css +1 -2
- package/components/search-modal/element.js +15 -1
- package/components/search-modal/global.css +7 -0
- package/out/service-worker.js +1 -1
- package/out/static/client/{2834.79ced0a30b0939c7.js → 2834.e727d9ac07ad4286.js} +2 -2
- package/out/static/client/2834.e727d9ac07ad4286.js.map +1 -0
- package/out/static/client/{3259.767db1f79a406e65.js → 3259.ac8a5539251c647a.js} +2 -2
- package/out/static/client/{3259.767db1f79a406e65.js.map → 3259.ac8a5539251c647a.js.map} +1 -1
- package/out/static/{legacy/4517.e81e479dd8baaa08.js → client/4517.0c5b7819647ee298.js} +2 -2
- package/out/static/client/4517.0c5b7819647ee298.js.map +1 -0
- package/out/static/client/6375.e9f9517e7d93e984.js +26 -0
- package/out/static/client/6375.e9f9517e7d93e984.js.map +1 -0
- package/out/static/client/{718.071765b571e2315c.js → 718.3a790c4c45336906.js} +2 -2
- package/out/static/client/{718.071765b571e2315c.js.map → 718.3a790c4c45336906.js.map} +1 -1
- package/out/static/{legacy/8292.8c8aab5cf0e0fc8e.js → client/8292.15265e24ff099b04.js} +2 -2
- package/out/static/client/{8292.8c8aab5cf0e0fc8e.js.map → 8292.15265e24ff099b04.js.map} +1 -1
- package/out/static/client/{9127.4debc5342015b0ec.js → 9127.08c4f752c4186007.js} +2 -2
- package/out/static/client/{9127.4debc5342015b0ec.js.map → 9127.08c4f752c4186007.js.map} +1 -1
- package/out/static/client/{9204.515db9110e143075.js → 9204.f8aa5d9f8a79f3d4.js} +2 -2
- package/out/static/client/{9204.515db9110e143075.js.map → 9204.f8aa5d9f8a79f3d4.js.map} +1 -1
- package/out/static/client/{9326.6a60853854f7ec9b.css → 9326.431ef0e548c5f096.css} +2 -2
- package/out/static/client/{9326.6a60853854f7ec9b.css.map → 9326.431ef0e548c5f096.css.map} +1 -1
- package/out/static/client/{index.15ed245d7a4f66ec.js → index.b2ccf995e945e9dc.js} +10 -5
- package/out/static/client/index.b2ccf995e945e9dc.js.map +1 -0
- package/out/static/client/{runtime.6bb9da89bdbb84bf.js → runtime.8ebca7827bf4c35c.js} +2 -2
- package/out/static/client/{runtime.6bb9da89bdbb84bf.js.map → runtime.8ebca7827bf4c35c.js.map} +1 -1
- package/out/static/client/stats.json +163 -163
- package/out/static/client/{styles-blog-post.c03ec8a22f8d4ff6.css → styles-blog-post.d0b92f36d3ccd2ae.css} +2 -2
- package/out/static/client/{styles-blog-post.c03ec8a22f8d4ff6.css.map → styles-blog-post.d0b92f36d3ccd2ae.css.map} +1 -1
- package/out/static/client/{styles-curriculum-landing.6700bec8f414e4d9.css → styles-curriculum-landing.9b5fbdd11a9d6c5b.css} +2 -2
- package/out/static/client/{styles-curriculum-landing.6700bec8f414e4d9.css.map → styles-curriculum-landing.9b5fbdd11a9d6c5b.css.map} +1 -1
- package/out/static/client/{styles-featured-articles.b4ecc71ab736bd5b.css → styles-featured-articles.a2c1f1fd278c9256.css} +2 -2
- package/out/static/client/{styles-featured-articles.b4ecc71ab736bd5b.css.map → styles-featured-articles.a2c1f1fd278c9256.css.map} +1 -1
- package/out/static/client/{styles-generic-about.8fb97dff70bba559.css → styles-generic-about.8856856e6f4b7e46.css} +2 -2
- package/out/static/client/{styles-generic-about.8fb97dff70bba559.css.map → styles-generic-about.8856856e6f4b7e46.css.map} +1 -1
- package/out/static/client/styles-global.3da376739551015c.css +2 -0
- package/out/static/client/styles-global.3da376739551015c.css.map +1 -0
- package/out/static/client/styles-global.445b59e1ff23f88c.js +1 -0
- package/out/static/client/{styles-homepage-contributor-spotlight.2bcbb1476c70410c.css → styles-homepage-contributor-spotlight.5dc97e2f6ae1056d.css} +2 -2
- package/out/static/client/{styles-homepage-contributor-spotlight.2bcbb1476c70410c.css.map → styles-homepage-contributor-spotlight.5dc97e2f6ae1056d.css.map} +1 -1
- package/out/static/client/{styles-latest-news.ef3b9e57333a87bc.css → styles-latest-news.afe0cccaa067269f.css} +2 -2
- package/out/static/client/{styles-latest-news.ef3b9e57333a87bc.css.map → styles-latest-news.afe0cccaa067269f.css.map} +1 -1
- package/out/static/legacy/{2834.79ced0a30b0939c7.js → 2834.e727d9ac07ad4286.js} +2 -2
- package/out/static/legacy/2834.e727d9ac07ad4286.js.map +1 -0
- package/out/static/{client/4517.e81e479dd8baaa08.js → legacy/4517.0c5b7819647ee298.js} +2 -2
- package/out/static/legacy/4517.0c5b7819647ee298.js.map +1 -0
- package/out/static/legacy/6375.e9f9517e7d93e984.js +26 -0
- package/out/static/legacy/6375.e9f9517e7d93e984.js.map +1 -0
- package/out/static/{client/8292.8c8aab5cf0e0fc8e.js → legacy/8292.15265e24ff099b04.js} +2 -2
- package/out/static/legacy/{8292.8c8aab5cf0e0fc8e.js.map → 8292.15265e24ff099b04.js.map} +1 -1
- package/out/static/legacy/asset-manifest.json +9 -9
- package/out/static/legacy/{index.167b77b176751752.html → index.85161ba7fe682ee8.html} +1 -1
- package/out/static/legacy/stats.json +9 -9
- package/out/static/legacy/{yari.9d76a374f51def3a.js → yari.01d97d56e30935ec.js} +3 -3
- package/out/static/legacy/{yari.9d76a374f51def3a.js.map → yari.01d97d56e30935ec.js.map} +1 -1
- package/out/static/ssr/2834.js +1 -1
- package/out/static/ssr/2834.js.map +1 -1
- package/out/static/ssr/4517.js +1 -1
- package/out/static/ssr/4517.js.map +1 -1
- package/out/static/ssr/6375.js +14 -13
- package/out/static/ssr/6375.js.map +1 -1
- package/out/static/ssr/8292.js +1 -1
- package/out/static/ssr/8292.js.map +1 -1
- package/out/static/ssr/index.js +10 -5
- package/out/static/ssr/index.js.map +1 -1
- package/out/static/ssr/stats.json +4 -4
- package/package.json +12 -12
- package/out/static/client/2834.79ced0a30b0939c7.js.map +0 -1
- package/out/static/client/4517.e81e479dd8baaa08.js.map +0 -1
- package/out/static/client/6375.1241b12199e08382.js +0 -25
- package/out/static/client/6375.1241b12199e08382.js.map +0 -1
- package/out/static/client/index.15ed245d7a4f66ec.js.map +0 -1
- package/out/static/client/styles-global.aad93fff9f2f386b.js +0 -1
- package/out/static/client/styles-global.d76107900f38bb57.css +0 -2
- package/out/static/client/styles-global.d76107900f38bb57.css.map +0 -1
- package/out/static/legacy/2834.79ced0a30b0939c7.js.map +0 -1
- package/out/static/legacy/4517.e81e479dd8baaa08.js.map +0 -1
- package/out/static/legacy/6375.1241b12199e08382.js +0 -25
- package/out/static/legacy/6375.1241b12199e08382.js.map +0 -1
- /package/out/static/client/{index.15ed245d7a4f66ec.js.LICENSE.txt → index.b2ccf995e945e9dc.js.LICENSE.txt} +0 -0
- /package/out/static/legacy/{yari.9d76a374f51def3a.js.LICENSE.txt → yari.01d97d56e30935ec.js.LICENSE.txt} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
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 (1200px < width){: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(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">
|
|
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">
|
|
@@ -386,4 +386,4 @@ export const __rspack_esm_id="3259";export const __rspack_esm_ids=["3259"];expor
|
|
|
386
386
|
`})({result:t,selectedTab:this.selectedTab,onTabSelect:(t,e)=>this._handleTabSelect(t,e)})}
|
|
387
387
|
</section>
|
|
388
388
|
</div>`,error:t=>(0,r.qy)`<div class="error">${t}</div>`}):r.s6}};customElements.define("mdn-observatory-results",MDNObservatoryResults)}};
|
|
389
|
-
//# sourceMappingURL=3259.
|
|
389
|
+
//# sourceMappingURL=3259.ac8a5539251c647a.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"3259.767db1f79a406e65.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 (1200px < width){: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 { 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 throw new Error(\"Observatory API request for scan data failed\", {\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 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 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} / 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} / \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 href=\"/en-US/observatory\"> Scan another website </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","globalThis","URLSearchParams","Date","Object","t","customElements"],"mappings":"2OAOI,EAAgC,iBAChC,EAAgC,kBAChC,EAA0B,IAA4B,KAC1D,EAAwB,CAAC,CAAC,GAAiC,EAC3D,EAAwB,CAAC,CAAC,GAAiC,EAC3D,IAAI,EAAqC,IAAgC,GACrE,EAAqC,IAAgC,GAEzE,EAAwB,IAAI,CAAC,CAAC,EAAO,EAAE,CAAE,CAAC,wvCAAwvC,EAAE,EAAmC,iBAAiB,EAAE,EAAmC,mEAAmE,EAAE,EAAmC,iBAAiB,EAAE,EAAmC,u6UAAu6U,CAAC,CAAE,GAAG,EAEx8X,MAAe,SAAI,CAAC,EAAwB,QAAQ,GAAG,C,8ECbnD,EAA0B,A,SAA4B,KAE1D,EAAwB,IAAI,CAAC,CAAC,EAAO,EAAE,CAAE,iUAAkU,GAAG,EAE9W,MAAe,SAAI,CAAC,EAAwB,QAAQ,GAAG,C,oRCR5B,MAAe,QAAG,CAAC,wUAAwU,CAAC,CCA5V,EAAe,QAAG,CAAC,kNAAkN,CAAC,CCI3P,EAAgB,CACpB,CAAE,MAAO,KAAM,UAAW,OAAQ,MAAO,IAAK,MAAO,EAAK,EAC1D,CAAE,MAAO,IAAK,UAAW,KAAM,MAAO,GAAI,MAAO,EAAK,EACtD,CAAE,MAAO,KAAM,UAAW,KAAM,MAAO,GAAI,MAAO,EAAK,EACvD,CAAE,MAAO,KAAM,UAAW,KAAM,MAAO,EAAG,EAC1C,CAAE,MAAO,IAAK,UAAW,KAAM,MAAO,EAAG,EACzC,CAAE,MAAO,KAAM,UAAW,KAAM,MAAO,EAAG,EAC1C,CAAE,MAAO,KAAM,UAAW,KAAM,MAAO,EAAG,EAC1C,CAAE,MAAO,IAAK,UAAW,KAAM,MAAO,EAAG,EACzC,CAAE,MAAO,KAAM,UAAW,KAAM,MAAO,EAAG,EAC1C,CAAE,MAAO,KAAM,UAAW,KAAM,MAAO,EAAG,EAC1C,CAAE,MAAO,IAAK,UAAW,KAAM,MAAO,EAAG,EACzC,CAAE,MAAO,KAAM,UAAW,KAAM,MAAO,EAAG,EAC1C,CAAE,MAAO,IAAK,UAAW,IAAK,MAAO,CAAE,EACxC,CAMK,EAAsB,CAC1B,0BACA,UACA,gCACA,cACA,kBACA,4BACA,wBACA,yBACA,kBACA,+BACD,C,kBC9BD,IAAM,EAAc,CAClB,eACA,aACA,gBACA,oBACA,uBACA,wBACA,mBACA,cACA,kBACA,qBACA,gBACD,CAGK,EAAkB,IAAIA,IAAI,CAC9B,kBACA,qBACA,uBACA,wBACA,aACA,eACA,oBACA,gBACD,E,mCCdM,IAAMC,sBAAN,MAAMA,8BAA8B,IAAU,CACnD,OAAO,OAAS,CAAC,GAAM,CAAE,GAAW,CAAC,AAAC,AAEtC,cAAc,CACZ,KAAK,GAEL,IAAI,CAAC,IAAI,CAAG,KAEZ,IAAI,CAAC,WAAW,CAAG,EAEnB,IAAI,CAAC,aAAa,CAAG,EACvB,CAKA,OAAO,WAAa,CAClB,KAAM,CAAE,KAAMC,MAAO,EACrB,YAAa,CAAE,MAAO,GAAM,KAAMC,MAAO,EACzC,cAAe,CAAE,MAAO,GAAM,KAAMC,OAAQ,CAC9C,CAAE,AAEF,UAAW,IAAI,IAAI,CAAC,IAAI,CAAE,CACxB,KAAM,IAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CACvB,KAAM,MAAO,CAAC,EAAK,CAAE,CAAE,QAAM,CAAE,IAC7B,GAAI,CAAC,EACH,MAAM,AAAIC,MAAM,oBAElB,GAAI,CACF,IAAM,EAAM,MAAMC,MAChB,CAAC,EAAE,GAAmB,CAAC,qBAAqB,EAAEC,mBAC5C,GACA,CAAC,CACH,CAAE,SAAQ,OAAQ,IAAI,CAAC,aAAa,CAAG,OAAS,KAAM,GAExD,GAAI,CAAC,EAAI,EAAE,CAAE,CACX,IAAI,EAAU,CAAC,EAAE,EAAI,MAAM,CAAC,EAAE,EAAE,EAAI,UAAU,CAAC,CAAC,CAChD,GAAI,CACF,IAAM,EAAO,MAAM,EAAI,IAAI,EACvB,GAAK,KAAK,EACZ,GAAU,EAAK,OAAO,AAAD,CAEzB,CAAE,KAAM,CAER,CACA,MAAM,AAAIF,MAAM,EAClB,CACA,OAAO,MAAM,EAAI,IAAI,EACvB,CAAE,MAAO,EAAO,CACd,MAAM,AAAIA,MAAM,+CAAgD,CAC9D,MAAO,CACT,EACF,CACF,CACF,EAAG,AAEH,oBAAoB,CAClB,KAAK,CAAC,oBACN,IAAI,CAAC,kBAAkB,CAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAC3D,IAAI,CAAC,WAAW,CAAG,IAAI,CAAC,eAAe,GACvCG,WAAW,gBAAgB,CAAC,aAAc,IAAI,CAAC,kBAAkB,CACnE,CAEA,sBAAuB,CACrB,KAAK,CAAC,uBACNA,WAAW,mBAAmB,CAAC,aAAc,IAAI,CAAC,kBAAkB,CACtE,CAEA,cAAe,CACb,IAAM,EAAS,IAAIC,gBAAgBD,WAAW,QAAQ,CAAC,MAAM,CAC7D,KAAI,CAAC,IAAI,CAAG,EAAO,GAAG,CAAC,OACzB,CAEA,oBAAqB,CACnB,IAAI,CAAC,WAAW,CAAG,IAAI,CAAC,eAAe,EACzC,CAKA,iBAAkB,CAChB,IASM,EAAQ,AARD,CACX,UACA,MACA,UACA,UACA,UACA,YACD,CACkB,OAAO,CATbA,WAAW,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAK,KAUnD,OAAO,AAAU,KAAV,EAAe,EAAI,CAC5B,CAMA,MAAM,QAAQ,CAAC,CAAE,CACf,EAAE,cAAc,GACX,IAAI,CAAC,IAAI,GAGd,IAAI,CAAC,aAAa,CAAG,GACrB,IAAI,CAAC,QAAQ,CAAC,GAAG,GACnB,CAOA,iBAAiB,CAAK,CAAE,CAAG,CAAE,CAC3B,IAAI,CAAC,WAAW,CAAG,EACnBA,WAAW,OAAO,CAAC,YAAY,CAC7B,GACA,GACAA,WAAW,QAAQ,CAAC,QAAQ,CAAGA,WAAW,QAAQ,CAAC,MAAM,CAAG,IAAM,EAEtE,CAEA,QAAS,QACP,AAAK,IAAI,CAAC,IAAI,CAGP,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAC1B,QAAS,IACP,QAAI,CAAC;uBACU,EAAE,IAAI,CAAC,IAAI,CAAC;kEAC+B,CAAC,CAE7D,SAAU,AAAC,GAAS,QAAI,CAAC;;UAErB,EAAE,ACrIL,UAAgB,CAAE,QAAM,CAAE,MAAI,CAAE,QAAM,CAAE,MCAvC,EDCN,MAAO,QAAI,CAAC;;;yBAGW,EAAE,SAAoB,EAAM,GAAQ;;;;;;;;;;;;;sBAavC,EAAE,CAAC,YAAY,EAAE,EAAO,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;;gBAE/D,EAAE,SAAY,EAAO,IAAI,CAAC,KAAK,EAAE;;;YAGrC,ECtBJ,EAAO,EAAc,GAAG,CAAC,AAAC,GACvB,QAAI,CAAC;gBACA,EAAE,ADoBI,ECpBG,IAAI,CAAC,KAAK,GAAK,EAAG,KAAK,CAAG,UAAY,GAAG;YACtD,EAAE,SAAY,EAAG,KAAK,EAAE;;UAE1B,EAAE,EAAG,SAAS,CAAC;UACf,EAAE,ADgBU,EChBH,IAAI,CAAC,KAAK,GAAK,EAAG,KAAK,EAAI,EAAG,KAAK,CAAG,EAAW,GAAG;;;IAGnE,CAAC,EAGI,QAAI,CAAC;;;;;;;MAOR,EAAE,EAAS;;;;;;;;;UASP,EAAE,EAAK;;;;EAIf,CAAC,CDV2B;;;QAGtB,EAAE,AEjCH,SAAe,CAAE,QAAM,CAAE,EAC9B,OAAQ,AA4BV,SAAoB,CAAM,EACxB,GAAM,CAAC,EAAU,EAAS,CACxB,EAAO,OAAO,CAAC,MAAM,CAAG,EACpB,CAAC,EAAO,OAAO,CAAC,EAAE,CAAC,KAAK,MAAO,EAAO,OAAO,CAAC,EAAE,CAAC,KAAK,MAAM,CAC5D,CAAC,OAAW,OAAU,CACtB,EAAW,EAAO,IAAI,CAAC,KAAK,CAC5B,EAAW,EAAO,IAAI,CAAC,KAAK,OAClC,AACE,AAAoB,UAApB,OAAO,GACP,AAAoB,UAApB,OAAO,GACP,IAAa,GACb,IAAa,EAEN,EAAW,EAAW,KAAO,OAE7B,MAEX,EA7CqB,IACjB,IAAK,KACH,MAAO,QAAI,CAAC;;;;;MAKZ,CAAC,AAEH,KAAK,OACH,MAAO,QAAI,CAAC;;;;;MAKZ,CAAC,AAEH,SACE,OAAO,IAAO,AAElB,CACF,EFWgB,CAAE,QAAO,GAAG;;;;;;aAMf,EAAE,EAAO,IAAI,CAAC,KAAK,CAAC;;;;;;kBAMf,EAAE,IAAIE,KAAK,EAAO,IAAI,CAAC,UAAU,EAAE;;;;;WAK1C,EAAE,EAAO,IAAI,CAAC,YAAY,CAAC;QAC9B,EAAE,EAAO,IAAI,CAAC,cAAc,CAAC;;;;gBAIrB,EAAE,IAAIA,KAAK,EAAO,IAAI,CAAC,UAAU,EAAE;oBAC/B,EAAE,GAAG;iBACR,EAAE,EAAO;;;;;;;EAOxB,CAAC,AACH,GD4EmB,CACP,OAAQ,EACR,KAAM,IAAI,CAAC,IAAI,EAAI,GACnB,OAAQ,IAAI,CAAC,OAAO,AACtB,GAAG;;;UAGH,EAAE,AI1IL,UAAc,CAAE,QAAM,CAAE,cAAc,CAAC,CAAE,aAAW,CAAE,EAkC3D,IAAM,EAAc,AAjCP,CACX,CACE,MAAO,UACP,IAAK,UACL,QAAS,QAAI,CAAC,EAAE,ACOf,SAAiB,CAAE,QAAM,CAAE,EAChC,IAAM,EACJ,AAA4B,IAA3B,GAAO,IAAI,CAAC,KAAK,EAAI,IACtBC,OAAO,OAAO,CAAC,EAAO,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAI,EAAE,GAAK,EAAE,cAAc,CAAG,GAGpE,GAAIA,AAAqC,IAArCA,OAAO,IAAI,CAAC,EAAO,KAAK,EAAE,MAAM,CAClC,MAAO,QAAI,CAAC,eAAe,CAAC,CAG9B,IAAM,EAAO,EAAoB,GAAG,CAAC,AAAC,IACpC,IAAM,EAAO,EAAO,KAAK,CAAC,EAAK,QAC/B,AAAK,EAEE,QAAI,CAAC;;;;iBAIC,EAAE,EAAK,IAAI,CAAC;;;kBAGX,EAAE,EAAK,IAAI,CAAC,UAAU,CAAC,KAAO,GAAK,WAAW;;YAEpD,EAAE,EAAK,KAAK,CAAC;;;QAGjB,EAAE,AAAc,OAAd,EAAK,IAAI,CACP,QAAI,CAAC,8BAA8B,CAAC,CACpC,QAAI,CAAC;;;kBAGC,EAAE,AAnDpB,SAAuB,CAAE,cAAY,CAAE,eAAa,CAAE,EACpD,IAAM,EAAgB,GAAgB,GAChC,EAAyB,SAC7B,CAAC,EAAE,EAAgB,EAAI,CAAC,CAAC,EAAE,EAAc,CAAC,CAAG,EAAc,CAAC,EAG9D,MAAO,QAAI,CAAC;gBACE,EAAE,CAAC,GAAiB,EAAgB,EAAI,cAAgB,GAAG;MACrE,EAAE,CAAC,GAAiB,EAAgB,EAChC,QAAI,CAAC,qDAAqD,CAAC,CAC3D,EAAuB;;EAE/B,CAAC,AACH,EAsCkC,CACd,aAAc,EAAO,IAAI,CAAC,KAAK,EAAI,EACnC,cAAe,EAAK,cAAc,AACpC,GAAG;;gBAEL,EAAE,SAAS,CAAE,KAAM,EAAK,IAAI,AAAC,GAAG;;iBAE/B,CAAC,CAAC;4CACyB,EAAE,EAAK,iBAAiB,CAAC;;;qBAGhD,EAAE,EAAK,cAAc,EAAI,+BAA+B;;;IAGzE,CAAC,CAjCiB,IAkCpB,GAEA,MAAO,QAAI,CAAC;;;;;;;;;;;QAWN,EAAE,EAAK;;;IAGX,EAAE,EACE,QAAI,CAAC;;;;;;;kBAOK,CAAC,CACX,KAAK;EACX,CAAC,AACH,EDhF8B,CAAE,QAAO,GAAG,CAAC,AACvC,EACA,CACE,MAAO,eACP,IAAK,MACL,QAAS,QAAI,CAAC,EAAE,ALSf,SAAa,CAAE,QAAM,CAAE,EAC5B,IAAM,EAAS,EAAO,KAAK,CAAC,0BAA0B,EAAE,OAClD,EAAO,EAAO,KAAK,CAAC,0BAA0B,EAAE,MAAQ,GAE9D,GAAI,CAAC,SACH,AACE,EAAO,KAAK,CAAC,0BAA0B,EAAE,SACzC,4CAEO,QAAI,CAAC;;;;;;;;;;;;;;;;MAgBZ,CAAC,CAGI,QAAI,CAAC;;;;;;;;;;IAUZ,CAAC,CAGH,IAAM,EAAO,EAAY,GAAG,CAAC,AAAC,IAC5B,GAAI,CAAC,CAAM,CAAC,EAAG,CAAE,OAAO,KAExB,IAAM,EAAI,CAAM,CAAC,EAAG,CAEpB,MAAO,QAAI,CAAC;;0CAE0B,EAAE,EAAE,WAAW,CAAC;;UAEhD,EAAE,SAAS,CACT,KAAM,EAAgB,GAAG,CAAC,GAAM,CAAC,EAAE,IAAI,CAAG,EAAE,IAAI,AAClD,GAAG;;0CAE6B,EAAE,EAAE,IAAI,CAAC;;IAE/C,CAAC,AACH,GAEA,MAAO,QAAI,CAAC;;uBAES,EAAE,SAAS,CAAE,MAAK,GAAG;;;mBAGzB,EAAE,EAAO,KAAK,CAAC,0BAA0B,EAChD,mBAAqB,+BAA+B;;;;;;;;;;;;;QAaxD,EAAE,EAAK;;;EAGb,CAAC,AACH,EK3F0B,CAAE,QAAO,GAAG,CAAC,AACnC,EACA,CACE,MAAO,UACP,IAAK,UACL,QAAS,QAAI,CAAC,EAAE,AElBf,SAAiB,CAAE,QAAM,CAAE,EAChC,IAAM,EAAU,EAAO,KAAK,CAAC,OAAU,EAAE,KACnC,EAAO,EAAO,KAAK,CAAC,OAAU,EAAE,KAEtC,GAAI,CAAC,GAAWA,AAAgC,IAAhCA,OAAO,IAAI,CAAC,GAAS,MAAM,CACzC,MAAO,QAAI,CAAC;;;;;;;;IAQZ,CAAC,CAGH,IAAM,EAAOA,OAAO,OAAO,CAAC,GAAS,GAAG,CACtC,CAAC,CAAC,EAAK,EAAM,GAAK,QAAI,CAAC;;mDAEwB,EAAE,EAAI;;UAE/C,EAAE,EAAM,OAAO,CAAG,SAAU,CAAE,QAAS,EAAM,OAAO,AAAC,GAAK,UAAU;;;gBAG9D,EAAE,EAAM,IAAI,CAAC;;iCAEI,EAAE,SAAS,CAAE,KAAM,EAAM,MAAM,AAAC,GAAG;mCACjC,EAAE,SAAS,CAAE,KAAM,EAAM,QAAQ,AAAC,GAAG;;UAE9D,EAAE,EAAM,QAAQ,CACZ,QAAI,CAAC,MAAM,EAAE,SAAoB,EAAM,QAAQ,EAAE,OAAO,CAAC,CACzD,IAAI;;mCAEiB,EAAE,SAAa,CAAE,WAAY,CAAI,GAAG;;IAEnE,CAAC,EAGH,MAAO,QAAI,CAAC;;;QAGN,EAAE,SAAS,CAAE,KAAM,AAAS,SAAT,EAAqB,KAAO,CAAK,GAAG;;;;mBAI5C,EAAE,EAAO,KAAK,CAAC,OAAU,EAAE,mBACtC,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAoD/B,EAAE,EAAK;;;EAGb,CAAC,AACH,EFpF8B,CAAE,QAAO,GAAG,CAAC,AACvC,EACA,CACE,MAAO,qBACP,IAAK,UACL,QAAS,QAAI,CAAC,EAAE,AG1Bf,SAAoB,CAAE,QAAM,CAAE,EACnC,GAAI,CAAC,EAAO,IAAI,CAAC,gBAAgB,CAC/B,MAAO,QAAI,CAAC;;;;;;;;IAQZ,CAAC,CAGH,IAAM,EAAOA,OAAO,OAAO,CAAC,EAAO,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAC3D,CAAC,CAAC,EAAQ,EAAM,GAAK,QAAI,CAAC;;;8CAGgB,EAAE,EAAO;YAC3C,EAAE,SAAW,GAAQ;;;gCAGD,EAAE,EAAM;;IAEpC,CAAC,EAGH,MAAO,QAAI,CAAC;;;;;;;;;QASN,EAAE,EAAK;;;EAGb,CAAC,AACH,EHbiC,CAAE,QAAO,GAAG,CAAC,AAC1C,EACA,CACE,MAAO,eACP,IAAK,UACL,QAAS,QAAI,CAAC,EAAE,AIjCf,SAAiB,CAAE,QAAM,CAAE,EAChC,GAAI,AAA0B,IAA1B,EAAO,OAAO,CAAC,MAAM,CACvB,OAAO,IAAO,CAGhB,IAAM,EAAO,IAAI,EAAO,OAAO,CAAC,CAAC,OAAO,GAAG,GAAG,CAC5C,CAAC,CAAE,YAAU,CAAE,OAAK,CAAE,OAAK,CAAE,GAAK,QAAI,CAAC;;+BAEZ,EAAE,SAAe,IAAID,KAAK,IAAa;gCACtC,EAAE,EAAM;gCACR,EAAE,SAAY,GAAO;;IAEjD,CAAC,EAGH,MAAO,QAAI,CAAC;;;;;;;;;;;QAWN,EAAE,EAAK;;;EAGb,CAAC,AACH,EJG8B,CAAE,QAAO,GAAG,CAAC,AACvC,EACA,CACE,MAAO,uBACP,IAAK,YACL,QAAS,QAAI,CAAC,EAAE,AKxCf,SAAoB,CAAE,QAAM,CAAE,EACnC,MAAO,QAAI,CAAC;;;cAGA,EAAE,EAAO;;;;;;;EAOrB,CAAC,AACH,EL4BiC,CAAE,QAAO,GAAG,CAAC,AAC1C,EACD,CAEwB,GAAG,CAAC,CAACE,EAAK,IAE1B,QAAI,CAAC;mBACG,EAAE,EAAE;;;kBAGL,EAAE,EAAE;;;;mBAIH,EAAE,IAAM,EAAY;uCACA,EAAE,EAAE;kBACzB,EAXG,IAAM,EAAY,EAAGA,EAAI,GAAG,EAWpB;;wBAEL,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,EAAEA,EAAI,KAAK,CAAC;;;;qCAIzB,EAAE,EAAE;4BACb,EAAE,EAAE;;wCAEQ,EAAEA,EAAI,OAAO,CAAC;;;IAGlD,CAAC,EAGH,MAAO,QAAI,CAAC;;;;;;;;QAQN,EAAE,EAAY;;;EAGpB,CAAC,AACH,GJiEiB,CACL,OAAQ,EACR,YAAa,IAAI,CAAC,WAAW,CAC7B,YAAa,CAAC,EAAO,IAAQ,IAAI,CAAC,gBAAgB,CAAC,EAAO,EAC5D,GAAG;;YAED,CAAC,CAEP,MAAO,AAAC,GAAM,QAAI,CAAC,mBAAmB,EAAE,EAAE,MAAM,CAAC,AACnD,GA1BS,IAAO,AA2BlB,CACF,EAEAC,eAAe,MAAM,CAAC,0BAA2BZ,sB"}
|
|
1
|
+
{"version":3,"file":"3259.ac8a5539251c647a.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 { 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 throw new Error(\"Observatory API request for scan data failed\", {\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 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 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} / 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} / \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 href=\"/en-US/observatory\"> Scan another website </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","globalThis","URLSearchParams","Date","Object","t","customElements"],"mappings":"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"}
|
|
@@ -38,7 +38,7 @@ ${r}`,s),i=n;if(i||(i="+++"===r?"toml":"yaml"),-1===o&&"---"===r&&"yaml"===i&&(o
|
|
|
38
38
|
`,s)+1;return s+e.column};function tB(e){return(r,s,n)=>{let o=!!n?.backwards;if(!1===s)return!1;let{length:i}=r,a=s;for(;a>=0&&a<i;){let s=r.charAt(a);if(e instanceof RegExp){if(!e.test(s))return a}else if(!e.includes(s))return a;o?a--:a++}return(-1===a||a===i)&&a}}tB(/\s/u);var tq=tB(" "),tD=tB(",; "),tF=tB(/[^\n\r]/u);function tU(e,r){let{value:s}=e;return"-"===s||"--"===s||"-"!==s.charAt(0)?r:r-("-"===s.charAt(1)?2:1)}function tV(e,r){if("number"==typeof e.source?.start?.offset)return e.source.start.offset;if("number"==typeof e.sourceIndex)return"value-word"===e.type?tU(e,e.sourceIndex):e.sourceIndex;if(e.source?.start)return tz(e.source.start,r);throw Object.assign(Error("Can not locate node."),{node:e})}function tG(e,r){if("css-comment"===e.type&&e.inline)return tF(r,e.source.startOffset);if("number"==typeof e.source?.end?.offset)return e.source.end.offset;if(e.source){if(e.source.end){let s=tz(e.source.end,r);return"value-word"===e.type?tU(e,s):s}if(tb(e.nodes))return tG(eX(0,e.nodes,-1),r)}return null}var tJ=e=>e.source?.startOffset,tH=e=>e.source?.endOffset,tQ=/\*\/$/,tZ=/^\/\*\*?/,tK=/^\s*(\/\*\*?(.|\r?\n)*?\*\/)/,tY=/(^|\s+)\/\/([^\n\r]*)/g,tX=/^(\r?\n)+/,t1=/(?:^|\r?\n) *(@[^\n\r]*?) *\r?\n *(?![^\n\r@]*\/\/[^]*)([^\s@][^\n\r@]+?) *\r?\n/g,t0=/(?:^|\r?\n) *@(\S+) *([^\n\r]*)/g,t2=/(\r?\n|^) *\* ?/g,t3=[];function t4(e,r){return[...t3,...Array.isArray(r)?r:[r]].map(r=>`@${e} ${r}`.trim())}var t9=["noformat","noprettier"],t5=["format","prettier"],t6=function(e){if(!e.startsWith("#!"))return"";let r=e.indexOf(`
|
|
39
39
|
`);return -1===r?e:e.slice(0,r)};function t7(e){let r,s=t6(e);s&&(e=e.slice(s.length+1));let{pragmas:n,comments:o}=function(e){e=eK(0,e.replace(tZ,"").replace(tQ,""),t2,"$1");let r="";for(;r!==e;)r=e,e=eK(0,e,t1,`
|
|
40
40
|
$1 $2
|
|
41
|
-
`);e=e.replace(tX,"").trimEnd();let s=Object.create(null),n=eK(0,e,t0,"").replace(tX,"").trimEnd(),o;for(;o=t0.exec(e);){let e=eK(0,o[2],tY,"");if("string"==typeof s[o[1]]||Array.isArray(s[o[1]])){let r=s[o[1]];s[o[1]]=[...t3,...Array.isArray(r)?r:[r],e]}else s[o[1]]=e}return{comments:n,pragmas:s}}((r=e.match(tK))?r[0].trimStart():"");return{shebang:s,text:e,pragmas:n,comments:o}}var t8=new Set(["red","green","blue","alpha","a","rgb","hue","h","saturation","s","lightness","l","whiteness","w","blackness","b","tint","shade","blend","blenda","contrast","hsl","hsla","hwb","hwba"]),re=new Set(["initial","inherit","unset","revert"]);function rt(e){return e.includes("$")||e.includes("@")||e.includes("#")||e.startsWith("%")||e.startsWith("--")||e.startsWith(":--")||e.includes("(")&&e.includes(")")?e:e.toLowerCase()}function rr(e,r){return e.findAncestor(e=>"value-func"===e.type)?.value?.toLowerCase()===r}function rs(e,r){let s=Array.isArray(r)?r:[r],n=e.findAncestor(e=>"css-atrule"===e.type);return n&&s.includes(n.name.toLowerCase())}function rn(e){return"value-operator"===e.type&&"*"===e.value}function ro(e){return e?.type==="value-operator"&&"/"===e.value}function ri(e){return"value-operator"===e.type&&"+"===e.value}function ra(e){return"value-operator"===e.type&&"-"===e.value}function ru(e){return rn(e)||ro(e)||ri(e)||ra(e)||"value-operator"===e.type&&"%"===e.value}function rl(e,r){return"scss"===r.parser&&"css-atrule"===e.type&&["if","else","for","each","while"].includes(e.name)}function rc(e){return e.raws?.params&&/^\(\s*\)$/u.test(e.raws.params)}function rp(e){return e.name.startsWith("prettier-placeholder")}function rh(e){return e?.raws?.before===""}function rf(e){return"value-comma_group"===e.type&&e.groups?.[1]?.type==="value-colon"}function rd(e){return"value-paren_group"===e.type&&e.groups?.[0]&&rf(e.groups[0])}function rm(e,r){if("scss"!==r.parser)return!1;let{node:s}=e;if(0===s.groups.length)return!1;let n=e.grandparent;return(!!rd(s)||!!(
|
|
41
|
+
`);e=e.replace(tX,"").trimEnd();let s=Object.create(null),n=eK(0,e,t0,"").replace(tX,"").trimEnd(),o;for(;o=t0.exec(e);){let e=eK(0,o[2],tY,"");if("string"==typeof s[o[1]]||Array.isArray(s[o[1]])){let r=s[o[1]];s[o[1]]=[...t3,...Array.isArray(r)?r:[r],e]}else s[o[1]]=e}return{comments:n,pragmas:s}}((r=e.match(tK))?r[0].trimStart():"");return{shebang:s,text:e,pragmas:n,comments:o}}var t8=new Set(["red","green","blue","alpha","a","rgb","hue","h","saturation","s","lightness","l","whiteness","w","blackness","b","tint","shade","blend","blenda","contrast","hsl","hsla","hwb","hwba"]),re=new Set(["initial","inherit","unset","revert"]);function rt(e){return e.includes("$")||e.includes("@")||e.includes("#")||e.startsWith("%")||e.startsWith("--")||e.startsWith(":--")||e.includes("(")&&e.includes(")")?e:e.toLowerCase()}function rr(e,r){return e.findAncestor(e=>"value-func"===e.type)?.value?.toLowerCase()===r}function rs(e,r){let s=Array.isArray(r)?r:[r],n=e.findAncestor(e=>"css-atrule"===e.type);return n&&s.includes(n.name.toLowerCase())}function rn(e){return"value-operator"===e.type&&"*"===e.value}function ro(e){return e?.type==="value-operator"&&"/"===e.value}function ri(e){return"value-operator"===e.type&&"+"===e.value}function ra(e){return"value-operator"===e.type&&"-"===e.value}function ru(e){return rn(e)||ro(e)||ri(e)||ra(e)||"value-operator"===e.type&&"%"===e.value}function rl(e,r){return"scss"===r.parser&&"css-atrule"===e.type&&["if","else","for","each","while"].includes(e.name)}function rc(e){return e.raws?.params&&/^\(\s*\)$/u.test(e.raws.params)}function rp(e){return e.name.startsWith("prettier-placeholder")}function rh(e){return e?.raws?.before===""}function rf(e){return"value-comma_group"===e.type&&e.groups?.[1]?.type==="value-colon"}function rd(e){return"value-paren_group"===e.type&&e.groups?.[0]&&rf(e.groups[0])}function rm(e,r){if("scss"!==r.parser)return!1;let{node:s}=e;if(0===s.groups.length)return!1;let n=e.parent;if(n&&"value-func"===n.type&&"if"===n.value)return!1;let o=e.grandparent;return(!!rd(s)||!!(o&&rd(o)))&&!!(e.findAncestor(e=>"css-decl"===e.type)?.prop?.startsWith("$")||rd(o)||"value-func"===o.type)}function ry(e){return"value-comment"===e.type&&e.inline}function rg(e){return"value-word"===e.type&&"#"===e.value}function rv(e){return"value-word"===e.type&&"{"===e.value}function rw(e){return"value-word"===e.type&&"}"===e.value}function rb(e){return["value-word","value-atword"].includes(e.type)}function rx(e){return e?.type==="value-colon"}function rk(e){return/\/\//u.test(e.split(/[\n\r]/u).pop())}function rT(e){return e?.type==="value-atword"&&e.value.startsWith("prettier-placeholder-")}function rO(e){return"value-paren_group"===e.type&&e.open?.value==="("&&e.close?.value===")"}function r_(e){if(e?.type==="value-number")return!0;if(e?.type!=="value-func")return!1;let r=e.value.toLowerCase();return"var"===r||"calc"===r||"min"===r||"max"===r||"clamp"===r||r.startsWith("--")}var rC=function(e,r,s){var n,o;let{node:i}=e,a=e.parent,u=e.grandparent,l=e.findAncestor(e=>"css-decl"===e.type)?.prop?.toLowerCase(),c=l&&"value-value"===a.type&&("grid"===l||l.startsWith("grid-template")),p=e.findAncestor(e=>"css-atrule"===e.type),h=p&&rl(p,r),f=i.groups.some(e=>ry(e)),d=e.map(s,"groups"),m=[""],y=rr(e,"url"),g=!1,v=!1;for(let s=0;s<i.groups.length;++s){let f=i.groups[s-1],w=i.groups[s],b=i.groups[s+1],x=i.groups[s+2];if(ry(w)&&!b){m.push([m.pop(),(e1(n=[" ",d[s]]),{type:tt,contents:n})]);continue}if(m.push([m.pop(),d[s]]),y){(b&&ri(b)||ri(w))&&m.push([m.pop()," "]);continue}if(rs(e,"forward")&&"value-word"===w.type&&w.value&&void 0!==f&&"value-word"===f.type&&"as"===f.value&&"value-operator"===b.type&&"*"===b.value||rs(e,"utility")&&"value-word"===w.type&&b&&"value-operator"===b.type&&"*"===b.value||!b||"value-word"===w.type&&rT(b)&&tH(w)===tJ(b))continue;if("value-string"===w.type&&w.quoted){let e=w.value.lastIndexOf("#{"),r=w.value.lastIndexOf("}");-1!==e&&-1!==r?g=e>r:-1!==e?g=!0:-1!==r&&(g=!1)}if(g||rx(w)||rx(b)||"value-atword"===w.type&&(""===w.value||w.value.endsWith("["))||"value-word"===b.type&&b.value.startsWith("]")||"~"===w.value||"less"===r.parser&&(b?.type==="value-word"&&"["===b.value||"value-word"===w.type&&"["===w.value&&(b?.type==="value-atword"||b?.type==="value-word")||"value-word"===w.type&&"]["===w.value&&b?.type==="value-word")||"value-string"!==w.type&&w.value&&w.value.includes("\\")&&b&&"value-comment"!==b.type||f?.value&&f.value.indexOf("\\")===f.value.length-1&&"value-operator"===w.type&&"/"===w.value||"\\"===w.value||"$$"===w.value&&"value-func"===w.type&&b?.type==="value-word"&&!b.raws.before||rg(w)||rv(w)||rw(b)||rv(b)&&rh(b)||rw(w)&&rh(b)||"--"===w.value&&rg(b))continue;let k=ru(w),T=ru(b);if((k&&rg(b)||T&&rw(w))&&rh(b)||!f&&ro(w)||rr(e,"calc")&&(ri(w)||ri(b)||ra(w)||ra(b))&&rh(b))continue;let O=(ri(w)||ra(w))&&0===s&&("value-number"===b.type||b.isHex)&&u&&"value-func"===(o=u).type&&t8.has(o.value.toLowerCase())&&!rh(b);if("scss"===r.parser&&k&&"-"===w.value&&"value-func"===b.type&&tH(w)!==tJ(b)){m.push([m.pop()," "]);continue}let _=x?.type==="value-func"||x&&rb(x)||"value-func"===w.type||rb(w),C="value-func"===b.type||rb(b)||f?.type==="value-func"||f&&rb(f);if(!(!(rn(b)||rn(w))&&!rr(e,"calc")&&!O&&(ro(b)&&!_||ro(w)&&!C||ri(b)&&!_||ri(w)&&!C||ra(b)||ra(w))&&(rh(b)||k&&(!f||f&&ru(f))))&&!(("scss"===r.parser||"less"===r.parser)&&k&&"-"===w.value&&rO(b)&&tH(w)===tJ(b.open)&&"("===b.open.value)){if(ry(w)){if("value-paren_group"===a.type){m.push(tp(tw),"");continue}m.push(tw,"");continue}if(h&&("value-word"===b.type&&["==","!="].includes(b.value)||"value-word"===b.type&&["<",">","<=",">="].includes(b.value)||"value-word"===b.type&&["and","or","not"].includes(b.value)||"value-word"===w.type&&"in"===w.value||"value-word"===w.type&&["from","through","end"].includes(w.value))||p&&"namespace"===p.name.toLowerCase()){m.push([m.pop()," "]);continue}if(c){w.source&&b.source&&w.source.start.line!==b.source.start.line?(m.push(tw,""),v=!0):m.push([m.pop()," "]);continue}if(!(l&&("font"===l||l.startsWith("--"))&&(ro(b)&&rh(b)&&r_(w)||ro(w)&&rh(w)&&r_(f)))){if(T){m.push([m.pop()," "]);continue}if(b?.value!=="..."&&!(rT(w)&&rT(b)&&tH(w)===tJ(b))){if(rT(w)&&rO(b)&&tH(w)===tJ(b.open)){m.push(tv,"");continue}if("with"===w.value&&rO(b)){m=[[tf(m)," "]];continue}if(!(w.value?.endsWith("#")&&"{"===b.value&&rO(b.group))&&!(ry(b)&&!x)){if(!p&&"value-comment"===w.type&&!w.inline&&i.groups.slice(0,s).every(e=>"value-comment"===e.type)){m.push(tp(tg),"");continue}m.push(tg,"")}}}}}return f&&m.push([m.pop(),th]),v&&m.unshift("",tw),h?td(tc(m)):!function(e){let{node:r}=e;return r.groups[0]?.value==="url"&&2===r.groups.length&&e.findAncestor(e=>"css-atrule"===e.type)?.name==="import"}(e)?td(tc(tf(m))):td(tf(m))},rS=new Map([["em","em"],["rem","rem"],["ex","ex"],["rex","rex"],["cap","cap"],["rcap","rcap"],["ch","ch"],["rch","rch"],["ic","ic"],["ric","ric"],["lh","lh"],["rlh","rlh"],["vw","vw"],["svw","svw"],["lvw","lvw"],["dvw","dvw"],["vh","vh"],["svh","svh"],["lvh","lvh"],["dvh","dvh"],["vi","vi"],["svi","svi"],["lvi","lvi"],["dvi","dvi"],["vb","vb"],["svb","svb"],["lvb","lvb"],["dvb","dvb"],["vmin","vmin"],["svmin","svmin"],["lvmin","lvmin"],["dvmin","dvmin"],["vmax","vmax"],["svmax","svmax"],["lvmax","lvmax"],["dvmax","dvmax"],["cm","cm"],["mm","mm"],["q","Q"],["in","in"],["pt","pt"],["pc","pc"],["px","px"],["deg","deg"],["grad","grad"],["rad","rad"],["turn","turn"],["s","s"],["ms","ms"],["hz","Hz"],["khz","kHz"],["dpi","dpi"],["dpcm","dpcm"],["dppx","dppx"],["x","x"],["cqw","cqw"],["cqh","cqh"],["cqi","cqi"],["cqb","cqb"],["cqmin","cqmin"],["cqmax","cqmax"],["fr","fr"]]);function rE(e){let r=e.toLowerCase();return rS.has(r)?rS.get(r):e}var rA=/(["'])(?:(?!\1)[^\\]|\\.)*\1/gsu,rj=RegExp(rA.source+`|(${/[$@]?[_a-z\u0080-\uFFFF][\w\u0080-\uFFFF-]*/giu.source})?(${/(?:\d*\.\d+|\d+\.?)(?:e[+-]?\d+)?/giu.source})(${/[a-z]+/giu.source})?`,"giu");function rI(e,r){return eK(0,e,rA,e=>tE(e,r))}function rP(e){return eK(0,e,rj,(e,r,s,n,o)=>!s&&n&&(o??(o=""),!(o=o.toLowerCase())||"n"===o||rS.has(o))?rM(n)+(o?rE(o):""):e)}function rM(e){return(1===e.length?e:e.toLowerCase().replace(/^([+-]?[\d.]+e)(?:\+|(-))?0*(?=\d)/u,"$1$2").replace(/^([+-]?[\d.]+)e[+-]?0+$/u,"$1").replace(/^([+-])?\./u,"$10.").replace(/(\.\d+?)0+(?=e|$)/u,"$1").replace(/\.(?=e|$)/u,"")).replace(/\.0(?=$|e)/u,"")}var rR=e=>e===`
|
|
42
42
|
`||"\r"===e||"\u2028"===e||"\u2029"===e,r$=function(e,r,s){let n=!!s?.backwards;if(!1===r)return!1;let o=e.charAt(r);if(n){if("\r"===e.charAt(r-1)&&o===`
|
|
43
43
|
`)return r-2;if(rR(o))return r-1}else{if("\r"===o&&e.charAt(r+1)===`
|
|
44
44
|
`)return r+2;if(rR(o))return r+1}return r},rN=function(e,r,s={}){let n=tq(e,s.backwards?r-1:r,s),o=r$(e,n,s);return n!==o},rL=function(e,r){if(!1===r)return!1;if("/"===e.charAt(r)&&"*"===e.charAt(r+1)){for(let s=r+2;s<e.length;++s)if("*"===e.charAt(s)&&"/"===e.charAt(s+1))return s+2}return r},rW=function(e,r){var s;let n=null,o=r;for(;o!==n;)n=o,o=tD(e,o),o=rL(e,o),o=tq(e,o);return!1!==(o=r$(e,o=!1!==(s=o)&&("/"===e.charAt(s)&&"/"===e.charAt(s+1)?tF(e,s):s)))&&rN(e,o)};function rz(e){return e.match(e=>"value-paren_group"===e.type&&!e.open&&e.groups.some(e=>"value-comma_group"===e.type),(e,r)=>"group"===r&&"value-value"===e.type,(e,r)=>"group"===r&&"value-root"===e.type,(e,r)=>"value"===r&&("css-decl"===e.type&&!e.prop.startsWith("--")||"css-atrule"===e.type&&e.variable))}var rB=function(e,r,s){let n=[];return e.each(()=>{let{node:o,previous:i}=e;if(i?.type==="css-comment"&&"prettier-ignore"===i.text.trim()?n.push(r.originalText.slice(tJ(o),tH(o))):n.push(s()),e.isLast)return;let{next:a}=e;("css-comment"!==a.type||rN(r.originalText,tJ(a),{backwards:!0})||tI(o))&&("css-atrule"!==a.type||"else"!==a.name||"css-comment"===o.type)?(n.push(r.__isHTMLStyleAttribute?tg:tw),rW(r.originalText,tH(o))&&!tI(o)&&n.push(tw)):n.push(" ")},"nodes"),n},rq=[{name:"CSS",type:"markup",aceMode:"css",extensions:[".css",".wxss"],tmScope:"source.css",codemirrorMode:"css",codemirrorMimeType:"text/css",parsers:["css"],vscodeLanguageIds:["css"],linguistLanguageId:50},{name:"PostCSS",type:"markup",aceMode:"text",extensions:[".pcss",".postcss"],tmScope:"source.postcss",group:"CSS",parsers:["css"],vscodeLanguageIds:["postcss"],linguistLanguageId:0xfa97795},{name:"Less",type:"markup",aceMode:"less",extensions:[".less"],tmScope:"source.css.less",aliases:["less-css"],codemirrorMode:"css",codemirrorMimeType:"text/x-less",parsers:["less"],vscodeLanguageIds:["less"],linguistLanguageId:198},{name:"SCSS",type:"markup",aceMode:"scss",extensions:[".scss"],tmScope:"source.css.scss",codemirrorMode:"css",codemirrorMimeType:"text/x-scss",parsers:["scss"],vscodeLanguageIds:["scss"],linguistLanguageId:329}],rD={singleQuote:{category:"Common",type:"boolean",default:!1,description:"Use single quotes instead of double quotes."}},rF={};p(rF,{css:()=>sr,less:()=>ss,scss:()=>sn});var rU=h(M(),1),rV=h(q(),1),rG=h(et(),1),rJ=function(e){return null!==e&&"object"==typeof e};function rH(e,r,s){if(rJ(e))for(let n in delete e.parent,e)rH(e[n],r,s),"type"!==n||"string"!=typeof e[n]||e[n].startsWith(r)||s&&s.test(e[n])||(e[n]=r+e[n]);return e}var rQ=h(eo(),1).default.default,rZ=function(e){let r;try{r=rQ(e)}catch{return{type:"selector-unknown",value:e}}return rH(function e(r){if(rJ(r)){for(let s in delete r.parent,r)e(r[s]);Array.isArray(r)||!r.value||r.type||(r.type="unknown")}return r}(r),"media-")},rK=h(eE(),1),rY=function(e){let r;if(/\/[/*]/u.test(eK(0,e,/"[^"]+"|'[^']+'/gu,"")))return{type:"selector-unknown",value:e.trim()};try{new rK.default(e=>{r=e}).process(e)}catch{return{type:"selector-unknown",value:e}}return rH(r,"selector-")},rX=h(eJ(),1),r1=e=>{for(;e.parent;)e=e.parent;return e},r0=function(e){if(tb(e)){for(let r=e.length-1;r>0;r--)if("word"===e[r].type&&"{"===e[r].value&&"word"===e[r-1].type&&e[r-1].value.endsWith("#"))return!0}return!1},r2=e=>"paren"===e.type&&")"===e.value,r3=function(e,r){if("less"===r.parser&&e.startsWith("~`"))return{type:"value-unknown",value:e};let s=null;try{s=new rX.default(e,{loose:!0}).parse()}catch{return{type:"value-unknown",value:e}}return s.text=e,rH(function e(r,s){if(rJ(r))for(let n in r)"parent"!==n&&(e(r[n],s),"nodes"===n&&(r.group=function e(r){return("paren_group"!==r.type||r.open||r.close||1!==r.groups.length)&&("comma_group"!==r.type||1!==r.groups.length)?"paren_group"===r.type||"comma_group"===r.type?{...r,groups:r.groups.map(e)}:r:e(r.groups[0])}(function(e,r){let{nodes:s}=e,n={open:null,close:null,groups:[],type:"paren_group"},o=[n],i=n,a={groups:[],type:"comma_group"},u=[a];for(let i=0;i<s.length;++i){let c=s[i];if("scss"===r.parser&&"number"===c.type&&".."===c.unit&&c.value.endsWith(".")&&(c.value=c.value.slice(0,-1),c.unit="..."),"func"===c.type&&"selector"===c.value&&(c.group.groups=[rY(r1(e).text.slice(c.group.open.sourceIndex+1,c.group.close.sourceIndex))]),"func"===c.type&&"url"===c.value){var l;let e=c.group?.groups??[],s=[];for(let r=0;r<e.length;r++){let n=e[r];"comma_group"===n.type?s=[...s,...n.groups]:s.push(n)}!r0(s)&&(s.some(e=>"string"===e.type||"func"===e.type&&!e.value.endsWith("\\"))||(l=s[0],"scss"===r.parser&&l?.type==="word"&&l.value.startsWith("$")))||(c.group.groups=[r1(c).text.slice(c.group.open.sourceIndex+1,c.group.close.sourceIndex).trim()])}if("paren"===c.type&&"("===c.value)n={open:c,close:null,groups:[],type:"paren_group"},o.push(n),a={groups:[],type:"comma_group"},u.push(a);else if(r2(c)){if(a.groups.length>0&&n.groups.push(a),n.close=c,1===u.length)throw Error("Unbalanced parenthesis");u.pop(),(a=eX(0,u,-1)).groups.push(n),o.pop(),n=eX(0,o,-1)}else if("comma"===c.type){if(i===s.length-3&&"comment"===s[i+1].type&&r2(s[i+2]))continue;n.groups.push(a),a={groups:[],type:"comma_group"},u[u.length-1]=a}else a.groups.push(c)}return a.groups.length>0&&n.groups.push(a),i}(r,s)),delete r[n]));return r}(s,r),"value-",/^selector-/u)},r4=new Set(["import","use","forward"]),r9=/(\s*)(!default).*$/u,r5=/(\s*)(!global).*$/u;function r6(e,r,s){let{frontMatter:n,content:o}=tP(r),i;try{i=e(o,{map:!1})}catch(o){var a;let{name:e,reason:r,line:s,column:n}=o;throw"number"!=typeof s?o:Object.assign(SyntaxError(`${e}: ${r} (`+(a={loc:{start:{line:s,column:n}},cause:o}).loc.start.line+":"+a.loc.start.column+")"),a)}return s.originalText=r,function e(r,s){for(let n in r.source&&(r.source.startOffset=tV(r,s),r.source.endOffset=tG(r,s)),r){let o=r[n];"source"!==n&&o&&"object"==typeof o&&("value-root"===o.type||"value-unknown"===o.type?function e(r,s,n){for(let o in r.source&&(r.source.startOffset=tV(r,n)+s,r.source.endOffset=tG(r,n)+s),r){let i=r[o];"source"!==o&&i&&"object"==typeof i&&e(i,s,n)}}(o,function(e){let r=e.source.startOffset;return"string"==typeof e.prop&&(r+=e.prop.length),"css-atrule"===e.type&&"string"==typeof e.name&&(r+=1+e.name.length+e.raws.afterName.match(/^\s*:?\s*/u)[0].length),"css-atrule"!==e.type&&"string"==typeof e.raws?.between&&(r+=e.raws.between.length),r}(r),o.text||o.value):e(o,s))}}(i=function e(r,s){if(rJ(r)){for(let n in delete r.parent,r)e(r[n],s);if(!r.type)return r;if(r.raws??(r.raws={}),"css-decl"===r.type&&"string"==typeof r.prop&&r.prop.startsWith("--")&&"string"==typeof r.value&&r.value.startsWith("{")){let e;if(r.value.trimEnd().endsWith("}")){let n,o=s.originalText.slice(0,r.source.start.offset),i="a".repeat(r.prop.length)+s.originalText.slice(r.source.start.offset+r.prop.length,r.source.end.offset),a=eK(0,o,/[^\n]/gu," ")+i,u;u="scss"===s.parser?se:"less"===s.parser?r8:r7;try{n=u(a,{...s})}catch{}n?.nodes?.length===1&&"css-rule"===n.nodes[0].type&&(e=n.nodes[0].nodes)}return e?r.value={type:"css-rule",nodes:e}:r.value={type:"value-unknown",value:r.raws.value.raw},r}let n="";"string"==typeof r.selector&&(n=r.raws.selector?r.raws.selector.scss??r.raws.selector.raw:r.selector,r.raws.between&&r.raws.between.trim().length>0&&(n+=r.raws.between),r.raws.selector=n);let o="";"string"==typeof r.value&&(o=r.raws.value?r.raws.value.scss??r.raws.value.raw:r.value,r.raws.value=o.trim());let i="";if("string"==typeof r.params&&(i=r.raws.params?r.raws.params.scss??r.raws.params.raw:r.params,r.raws.afterName&&r.raws.afterName.trim().length>0&&(i=r.raws.afterName+i),r.raws.between&&r.raws.between.trim().length>0&&(i+=r.raws.between),i=i.trim(),r.raws.params=i),n.trim().length>0)return n.startsWith("@")&&n.endsWith(":")||(r.mixin?r.selector=r3(n,s):("scss"===s.parser&&r.selector&&r.selector.replace(/\/\*.*?\*\//u,"").replace(/\/\/.*\n/u,"").trim().endsWith(":")&&(r.isSCSSNesterProperty=!0),r.selector=rY(n))),r;if(o.trim().length>0){let e=o.match(r9);e&&(o=o.slice(0,e.index),r.scssDefault=!0,"!default"!==e[0].trim()&&(r.raws.scssDefault=e[0]));let n=o.match(r5);if(n&&(o=o.slice(0,n.index),r.scssGlobal=!0,"!global"!==n[0].trim()&&(r.raws.scssGlobal=n[0])),o.startsWith("progid:"))return{type:"value-unknown",value:o};r.value=r3(o,s)}if("less"===s.parser&&"css-decl"===r.type&&o.startsWith("extend(")&&(r.extend||(r.extend=":"===r.raws.between),r.extend&&!r.selector&&(delete r.value,r.selector=rY(o.slice(7,-1)))),"css-atrule"===r.type){if("less"===s.parser){if(r.mixin){let e=r.raws.identifier+r.name+r.raws.afterName+r.raws.params;return r.selector=rY(e),delete r.params,r}if(r.function)return r}if("css"===s.parser&&"custom-selector"===r.name){let e=r.params.match(/:--\S+\s+/u)[0].trim();return r.customSelector=e,r.selector=rY(r.params.slice(e.length).trim()),delete r.params,r}if("less"===s.parser){if(r.name.includes(":")){r.variable=!0;let e=r.name.split(":");r.name=e[0];let n=e.slice(1).join(":");r.params&&(n+=r.params),r.value=r3(n,s)}if(!["page","nest","keyframes"].includes(r.name)&&r.params?.[0]===":"){r.variable=!0;let e=r.params.slice(1);e&&(r.value=r3(e,s)),r.raws.afterName+=":"}if(r.variable)return delete r.params,r.value||delete r.value,r}}if("css-atrule"===r.type&&i.length>0){let{name:e}=r,n=r.name.toLowerCase();return"warn"===e||"error"===e?(r.params={type:"media-unknown",value:i},r):"extend"===e||"nest"===e?(r.selector=rY(i),delete r.params,r):"at-root"===e?(/^\(\s*(?:without|with)\s*:.+\)$/su.test(i)?r.params=r3(i,s):(r.selector=rY(i),delete r.params),r):r4.has(n)?(r.import=!0,delete r.filename,r.params=r3(i,s),r):["namespace","supports","if","else","for","each","while","debug","mixin","include","function","return","define-mixin","add-mixin"].includes(e)?(r.value=r3(i=(i=i.replace(/(\$\S+?)(\s+)?\.{3}/u,"$1...$2")).replace(/^(?!if)([^"'\s(]+)(\s+)\(/u,"$1($2"),s),delete r.params,r):["media","custom-media"].includes(n)?i.includes("#{")?{type:"media-unknown",value:i}:(r.params=rZ(i),r):(r.params=i,r)}}return r}(rH(i,"css-"),s),r),n&&(i.frontMatter={...n,type:"front-matter",source:{startOffset:n.start.index,endOffset:n.end.index}}),i}function r7(e,r={}){return r6(rU.default.default,e,r)}function r8(e,r={}){return r6(e=>rV.default.parse(function(e){let r="initial",s="initial",n,o=!1,i=[];for(let a=0;a<e.length;a++){let u=e[a];switch(r){case"initial":if("'"===u){r="single-quotes";continue}if('"'===u){r="double-quotes";continue}if(("u"===u||"U"===u)&&"url("===e.slice(a,a+4).toLowerCase()){r="url",a+=3;continue}if("*"===u&&"/"===e[a-1]){r="comment-block";continue}"/"===u&&"/"===e[a-1]&&(r="comment-inline",n=a-1);continue;case"single-quotes":if("'"===u&&"\\"!==e[a-1]&&(r=s,s="initial"),u===`
|
|
@@ -59,4 +59,4 @@ $1 $2
|
|
|
59
59
|
`:`
|
|
60
60
|
|
|
61
61
|
`)+a}(s)},massageAstNode:tM,getVisitorKeys:tW}}}};
|
|
62
|
-
//# sourceMappingURL=4517.
|
|
62
|
+
//# sourceMappingURL=4517.0c5b7819647ee298.js.map
|