viewport-extra
Version:
Enable setting minimum and maximum viewport width
3 lines (2 loc) • 2.04 kB
JavaScript
/*! Viewport Extra v3.0.0 | (c) dsktschy | MIT License */
var ViewportExtra=function(t){"use strict";const e=Math.trunc,i={width:"device-width",initialScale:1,minimumWidth:0,maximumWidth:1/0},n=(t={})=>({...i,...t}),r=(t={...i},n=0,r=0)=>{const{width:a,initialScale:o}=t,{minimumWidth:d,maximumWidth:m,minWidth:c,maxWidth:u,...s}=t,l=c??d,p=u??m;return l<=p&&"device-width"===a&&(n<l?(s.width=l,s.initialScale=n/l*o):n>p&&(s.width=p,s.initialScale=n/p*o)),Object.keys(s).map(t=>{return`${i=t,i.replace(/\s+/g,"").replace(/[A-Z]+/g,t=>`-${t[0]}`).toLowerCase()}=${"number"==typeof s[t]?((t,i)=>isFinite(i)?e(t*10**i)/10**i:t)(s[t],r):s[t]}`;var i}).sort().join(",")},a=(t={})=>{return{content:n(t.content),media:(e=t.media,e??"")};var e},o=(t,e,i)=>t&&void 0!==e&&void 0!==i?r(t.content,e,i):r(),d=(t,e)=>t.setAttribute("content",e),m=t=>{var e,i,n;"undefined"!=typeof window&&(e=(t=>{const e=t.querySelector('meta[name="viewport"]');if(e)return e;const i=t.createElement("meta");return i.setAttribute("name","viewport"),t.head.appendChild(i),i})(document),d(e,o()),d(e,o(a(t.reduce((n=matchMedia,i=t=>void 0===t||n(t).matches,(t,e)=>i(e.media)?((t,e)=>{const i={},n=(a=e.content,(r=t.content)?{...r,...a??{}}:a);var r,a;const o=e.media??t.media;return n&&(i.content=n),void 0!==o&&(i.media=o),i})(t,e):t),a())),document.documentElement.clientWidth,1/0)))};var c;return"undefined"!=typeof window&&m((c=document,(0,Array.from)(c.querySelectorAll('meta[name="viewport"],meta[name="viewport-extra"]'))).map(t=>{return a=(t=>{return e=t.getAttribute("content"),i=t.getAttribute("data-extra-content"),e?i?[e,i].join(","):e:i;var e,i})(t),e=(r=a?a.split(",").reduce((t,e)=>{const[i,n]=e.split("=").map(t=>t.trim());if(i&&n){const e=+n;t[(r=i,r.replace(/\s+/g,"").toLowerCase().replace(/-./g,t=>t[1].toUpperCase()))]=isNaN(e)?n:e}var r;return t},{}):void 0)?{content:r}:{},n=(t=>{return e=t.getAttribute("data-media"),t.getAttribute("data-extra-media")??e;var e})(t),void 0!==(i=n??void 0)?{...e??{},media:i}:e??{};var e,i,n,r,a})),t.apply=m,t}({});