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