UNPKG

@slidy/media

Version:

Simple, observable & cookie-persisted media-query store

2 lines (1 loc) 404 B
function p({queries:o,getter:r,cookie:a}){let s=new Set,t={};if(typeof window=="object")for(let e in o){let i=window.matchMedia(o[e]);n(i,e),i.onchange=m=>n(m,e)}function n(e,i){t[i]=e.matches,c(t),r&&r(t),a&&(document.cookie=`media=${JSON.stringify(t)}`)}function c(e){s.forEach(i=>i(e))}function u(e){return e(t),s.add(e),()=>d(e)}let d=e=>s.delete(e);return{matches:t,subscribe:u}}export{p as media};