-;(()=>{const e=document.documentElement,{connection:n}=navigator;window.obs=window.obs||{};const t=(window.obs&&window.obs.config)||{},o=!1!==t.observeChanges,c=t=>Number.isFinite(t)?Math.ceil(t/25)*25:null,r=t=>Number.isFinite(t)?t<75?"low":t<=275?"medium":"high":null,s=t=>Number.isFinite(t)?Math.ceil(t):null,i=()=>{const t=window.obs||{},o="number"==typeof t.downlinkBucket?t.downlinkBucket:null,c="low"===t.rttCategory,s="high"===t.rttCategory,i=null!=o&&o>=8,l=null!=o&&o<=5;t.connectionCapability=c&&i?"strong":s||l?"weak":"moderate";const a=!0===t.dataSaver||!0===t.batteryLow;t.conservationPreference=a?"conserve":"neutral";const d=!a&&"strong"===t.connectionCapability,u=a||"weak"===t.connectionCapability;t.deliveryMode=d?"rich":u?"lite":"cautious";t.canShowRichMedia="rich"===t.deliveryMode,t.shouldAvoidRichMedia="lite"===t.deliveryMode,["strong","moderate","weak"].forEach((t=>{e.classList.remove(`has-connection-capability-${t}`)})),e.classList.add(`has-connection-capability-${t.connectionCapability}`),["conserve","neutral"].forEach((t=>{e.classList.remove(`has-conservation-preference-${t}`)})),e.classList.add(`has-conservation-preference-${t.conservationPreference}`),["rich","cautious","lite"].forEach((t=>{e.classList.remove(`has-delivery-mode-${t}`)})),e.classList.add(`has-delivery-mode-${t.deliveryMode}`)},l=()=>{if(!n)return;const t=n,{saveData:o,rtt:l,downlink:a}=t;window.obs.dataSaver=!!o,e.classList.toggle("has-data-saver",!!o);const d=c(l);null!=d&&(window.obs.rttBucket=d);const u=r(l);u&&(window.obs.rttCategory=u,["low","medium","high"].forEach((t=>e.classList.remove(`has-latency-${t}`))),e.classList.add(`has-latency-${u}`));const b=s(a);if(null!=b){window.obs.downlinkBucket=b;const t=b<=5,o=b>=8;e.classList.toggle("has-bandwidth-low",t),e.classList.toggle("has-bandwidth-high",o)}"downlinkMax"in t&&(window.obs.downlinkMax=t.downlinkMax),i()},a=t=>{if(!t)return;const n=t,{level:o,charging:c}=n,l=Number.isFinite(o)?o<=.2:null;window.obs.batteryLow=l,e.classList.toggle("has-battery-low",!!l);const r=!!c;window.obs.batteryCharging=r,e.classList.toggle("has-battery-charging",r),i()};l(),o&&n?.addEventListener&&n.addEventListener("change",l),"getBattery"in navigator&&navigator.getBattery().then((e=>{a(e),o&&"function"==typeof e.addEventListener&&(e.addEventListener("levelchange",(()=>a(e))),e.addEventListener("chargingchange",(()=>a(e))))})).catch((()=>{}))})();
0 commit comments