brim
Version:
View (minimal-ui) manager for iOS 8.
6 lines • 7.68 kB
JavaScript
/**
* @version 1.0.11
* @link https://github.com/gajus/brim for the canonical source repository
* @license https://github.com/gajus/brim/blob/master/LICENSE BSD 3-Clause
*/
!function e(t,n,i){function o(a,d){if(!n[a]){if(!t[a]){var s="function"==typeof require&&require;if(!d&&s)return s(a,!0);if(r)return r(a,!0);throw new Error("Cannot find module '"+a+"'")}var u=n[a]={exports:{}};t[a][0].call(u.exports,function(e){var n=t[a][1][e];return o(n?n:e)},u,u.exports,e,t,n,i)}return n[a].exports}for(var r="function"==typeof require&&require,a=0;a<i.length;a++)o(i[a]);return o}({1:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0});var o=e("sister"),r=i(o),a=e("orientationchangeend"),d=i(a),s=(0,d["default"])();n["default"]=function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],t={},n=(0,r["default"])();e.width=e.width||{},e.width.portrait||(e.width.portrait=window.screen.width),e.width.landscape||(e.width.landscape=window.screen.width),t.getViewportWidth=function(){return e.width[t.getOrientation()]},t.getViewportHeight=function(){return Math.round(t.getScreenHeight()/t.getScale())},t.getScale=function(){return t.getScreenWidth()/t.getViewportWidth()};return t.getOrientation=function(){return 0===window.orientation||180===window.orientation?"portrait":"landscape"},t.getScreenWidth=function(){return window.screen["portrait"===t.getOrientation()?"width":"height"]},t.getScreenHeight=function(){return window.screen["portrait"===t.getOrientation()?"height":"width"]},t.updateViewport=function(){var e=t.getViewportWidth(),n=t.getScale(),i="width="+e+", initial-scale="+n+", minimum-scale="+n+", maximum-scale="+n+", user-scalable=0",o=document.createElement("meta");o.name="viewport",o.content=i;var r=window.document.head.querySelector('meta[name="viewport"]');r&&r.parentNode.removeChild(r),window.document.head.appendChild(o)},t.deviceSpec=function(){var e=void 0,t=void 0,n=[[1280,1762,1920,1280,320,480,2,"iPhone 4"],[1280,2114,2272,1280,320,568,2,"iPhone 5 or 5s"],[1500,2510,2668,1500,375,667,2,"iPhone 6"],[1656,2785,2944,1656,414,736,3,"iPhone 6 plus"],[1500,2509,2668,1500,375,667,3,"iPhone 6 plus (Zoomed)"],[3072,3936,4096,2912,768,1024,1,"iPad 2"],[3072,3938,4096,2914,768,1024,2,"iPad Air or Retina"],[4096,5306,5464,3938,1024,1366,2,"iPad Pro"]];for(e=n.length;e--;)if(window.screen.width===n[e][4]&&window.screen.height===n[e][5]&&window.devicePixelRatio===n[e][6]){t=n[e];break}return t},t.getMinimalViewHeight=function(){var e=void 0,n=t.getOrientation(),i=t.deviceSpec();if(!i)throw new Error("Not a known iOS device. If you are using an iOS device, report it to https://github.com/gajus/scream/issues/1.");return e="portrait"===n?Math.round(t.getViewportWidth()*i[1]/i[0]):Math.round(t.getViewportWidth()*i[3]/i[2])},t.getMinimalViewSize=function(){var e=t.getViewportWidth(),n=t.getMinimalViewHeight();return{height:n,width:e}},t.isMinimalView=function(){return window.innerHeight===t.getMinimalViewSize().height},t.detectViewChange=function(){var e=void 0;return t.deviceSpec()?function(){var i=t.isMinimalView()?"minimal":"full";e!==i&&(n.trigger("viewchange",{viewName:i}),e=i)}:(console.log("View change detection has been disabled. Unrecognized device. If you are using an iOS device, report it to https://github.com/gajus/scream/issues/1."),function(){})},t.detectViewChange=t.detectViewChange(),t.setupDOMEventListeners=function(){var e=void 0;window.matchMedia("(orientation: portrait)").addListener(function(){e=!0}),s.on("orientationchangeend",function(){e=!1,t.updateViewport(),t.detectViewChange(),n.trigger("orientationchangeend")}),window.addEventListener("orientationchange",function(){t.updateViewport()}),window.addEventListener("resize",function(){e||t.detectViewChange()}),window.addEventListener("scroll",function(){e||t.detectViewChange()}),setTimeout(function(){t.detectViewChange()})},t.updateViewport(),t.setupDOMEventListeners(),t.on=n.on,t.off=n.off,t},t.exports=n["default"]},{orientationchangeend:2,sister:3}],2:[function(e,t,n){(function(n){var i,o=e("sister");i=function r(e){var t,i,a;return this instanceof r?(a=o(),t=this,t.on=a.on,e=e||{},e.noChangeCountToEnd=e.noChangeCountToEnd||100,e.noEndTimeout=1e3,e.debug=e.debug||!1,void n.addEventListener("orientationchange",function(){var t,o,r,d,s,u;r=function(e){clearInterval(t),clearTimeout(o),t=null,o=null,e&&a.trigger("orientationchangeend")},i&&i(!1),i=r,t=setInterval(function(){n.innerWidth===d&&n.innerHeight===s?(u++,u===e.noChangeCountToEnd&&(e.debug&&console.debug("setInterval"),r(!0))):(d=n.innerWidth,s=n.innerHeight,u=0)}),o=setTimeout(function(){e.debug&&console.debug("setTimeout"),r(!0)},e.noEndTimeout)})):new r(e)},n.gajus=n.gajus||{},n.gajus.orientationchangeend=i,t.exports=i}).call(this,"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{sister:3}],3:[function(e,t,n){(function(e){function n(){var e={},t={};return e.on=function(e,n){var i={name:e,handler:n};return t[e]=t[e]||[],t[e].unshift(i),i},e.off=function(e){var n=t[e.name].indexOf(e);n!=-1&&t[e.name].splice(n,1)},e.trigger=function(e,n){var i,o=t[e];if(o)for(i=o.length;i--;)o[i].handler(n)},e}e.gajus=e.gajus||{},e.gajus.Sister=n,t.exports=n}).call(this,"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],4:[function(e,t,n){(function(n){"use strict";var i,o=e("scream"),r=e("sister");i=function a(e){var t,i,d,s={};if(!(this instanceof a))return new a(e);if(t=this,!(e.viewport&&e.viewport instanceof o))throw new Error('Configuration property "viewport" must be an instance of Scream.');i=e.viewport,t._setupDOMEventListeners=function(){i.on("orientationchangeend",function(){t._treadmill(),t._main(),t._mask()}),i.on("viewchange",function(e){t._main(),t._mask(),d.trigger("viewchange",e)}),t._main(),t._mask(),function(){var e;n.document.addEventListener("touchstart",function(){e=!0}),n.document.addEventListener("touchmove",function(t){i.isMinimalView()&&e&&t.preventDefault(),e=!1})}()},t._treadmill=function(){n.scrollTo(0,1e3)},t._mask=function(){i.isMinimalView()?s.mask.style.display="none":(s.mask.style.display="block",s.mask.style.width=n.innerWidth+"px",s.mask.style.height=2*n.innerHeight+"px",t._repaintElement(s.mask))},t._main=function(){s.main.style.width=n.innerWidth+"px",s.main.style.height=n.innerHeight+"px",t._repaintElement(s.main)},t._makeTreadmill=function(){var e=document.querySelector("#brim-treadmill");if(e)throw new Error("There is an existing treadmill element.");return e=document.createElement("div"),e.id="brim-treadmill",document.body.appendChild(e),e.style.visibility="hidden",e.style.position="relative",e.style.zIndex=10,e.style.left=0,e.style.width="1px",e.style.height="9999999999999999px",e},t._makeMask=function(){var e=document.querySelector("#brim-mask");if(!e)throw new Error("Mask element does not exist.");return e.style.position="fixed",e.style.zIndex=30,e.style.top=0,e.style.left=0,e},t._makeMain=function(){var e=document.querySelector("#brim-main");if(!e)throw new Error("Main element does not exist.");return e.style.position="fixed",e.style.zIndex=20,e.style.top=0,e.style.left=0,e.style.overflowY="scroll",e.style.webkitOverflowScrolling="touch",e},t._makeDOM=function(){s.treadmill=t._makeTreadmill(),s.mask=t._makeMask(),s.main=t._makeMain()},t._repaintElement=function(e){e.style.webkitTransform="translateZ(0)",e.style.display="none",e.style.display="block"},d=r(),t.on=d.on,t._makeDOM(),t._setupDOMEventListeners()},n.gajus=n.gajus||{},n.gajus.Brim=i,t.exports=i}).call(this,"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{scream:1,sister:3}]},{},[4]);