{"version":3,"sources":["components/browser.js"],"names":["dmx","Component","initialData","online","navigator","onLine","doNotTrack","userAgent","language","cookieEnabled","referrer","document","location","hash","window","host","hostname","href","origin","pathname","port","protocol","search","pathparts","substr","split","scrollX","offset","direction","position","scrollY","viewport","width","height","device","pixelRatio","orientation","hidden","visibility","visibilityState","methods","goto","url","base","querySelector","route","content","path","replace","match","pathToRegexp","end","exec","history","pushState","requestUpdate","event","createEvent","initEvent","dispatchEvent","scrollTo","x","y","scrollXTo","pos","left","scrollYTo","top","scrollBy","scrollXBy","delta","scrollYBy","alert","message","render","node","addEventListener","this","update","bind","docWidth","Math","max","body","scrollWidth","documentElement","docHeight","scrollHeight","scrollDirectionX","data","scrollDirectionY","type","pageXOffset","pageYOffset","set","msDoNotTrack","length","innerWidth","innerHeight","screen","devicePixelRatio","deviceXDPI","logicalXDPI","getOrientation","matchMedia","matches"],"mappings":"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","file":"../dmxBrowser/dmxBrowser.js","sourcesContent":["dmx.Component('browser', {\r\n\r\n initialData: {\r\n online: navigator.onLine,\r\n doNotTrack: false,\r\n userAgent: navigator.userAgent,\r\n language: navigator.language,\r\n cookieEnabled: navigator.cookieEnabled,\r\n referrer: document.referrer,\r\n\r\n location: {\r\n hash: window.location.hash,\r\n host: window.location.host,\r\n hostname: window.location.hostname,\r\n href: window.location.href,\r\n origin: window.location.origin,\r\n pathname: window.location.pathname,\r\n port: window.location.port,\r\n protocol: window.location.protocol,\r\n search: window.location.search,\r\n pathparts: window.location.pathname.substr(1).split('/')\r\n },\r\n\r\n scrollX: {\r\n offset: 0,\r\n direction: 0,\r\n position: 0\r\n },\r\n\r\n scrollY: {\r\n offset: 0,\r\n direction: 0,\r\n position: 0\r\n },\r\n\r\n viewport: {\r\n width: 0,\r\n height: 0\r\n },\r\n\r\n device: {\r\n width: 0,\r\n height: 0,\r\n pixelRatio: 1,\r\n orientation: 'landscape'\r\n },\r\n\r\n document: {\r\n width: 0,\r\n height: 0,\r\n hidden: document.hidden,\r\n visibility: document.visibilityState\r\n }\r\n },\r\n\r\n methods: {\r\n goto: function(url) {\r\n if (url[0] == '.' && url[1] == '/') {\r\n var base = document.querySelector('meta[name=\"ac:base\"]');\r\n var route = document.querySelector('meta[name=\"ac:route\"]');\r\n\r\n if (route && route.content) {\r\n var path = route.content;\r\n\r\n if (base && base.content) {\r\n path = base.content.replace(/\\/$/, '') + path;\r\n }\r\n\r\n var match = dmx.pathToRegexp(path, [], { end: false }).exec(location.pathname);\r\n\r\n if (match) {\r\n window.history.pushState(null, '', url.replace('./', match[0]));\r\n dmx.requestUpdate();\r\n\r\n var event = document.createEvent('Event');\r\n event.initEvent('pushstate', false, false);\r\n window.dispatchEvent(event);\r\n return;\r\n }\r\n }\r\n }\r\n\r\n window.location = url;\r\n },\r\n\r\n scrollTo: function(x, y) {\r\n window.scrollTo(x, y);\r\n },\r\n\r\n scrollXTo: function(pos) {\r\n window.scrollTo({ left: pos });\r\n },\r\n\r\n scrollYTo: function(pos) {\r\n window.scrollTo({ top: pos });\r\n },\r\n\r\n scrollBy: function(x, y) {\r\n window.scrollBy(x, y);\r\n },\r\n\r\n scrollXBy: function(delta) {\r\n window.scrollBy({ left: delta });\r\n },\r\n\r\n scrollYBy: function(delta) {\r\n window.scrollBy({ top: delta });\r\n },\r\n\r\n alert: function(message) {\r\n window.alert(message);\r\n }\r\n },\r\n\r\n render: function(node) {\r\n window.addEventListener('scroll', this.update.bind(this));\r\n window.addEventListener('resize', this.update.bind(this));\r\n window.addEventListener('online', this.update.bind(this));\r\n window.addEventListener('offline', this.update.bind(this));\r\n window.addEventListener('popstate', this.update.bind(this));\r\n window.addEventListener('visibilitychange', this.update.bind(this));\r\n if (window.orientation) window.addEventListener('orientationchange', this.update.bind(this));\r\n\r\n this.update();\r\n },\r\n\r\n update: function(event) {\r\n var docWidth = Math.max(document.body.scrollWidth, document.documentElement.scrollWidth);\r\n var docHeight = Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);\r\n\r\n var scrollDirectionX = this.data.scrollX.direction;\r\n var scrollDirectionY = this.data.scrollY.direction;\r\n\r\n if (event && event.type == 'scroll') {\r\n if (this.data.scrollX.offset < window.pageXOffset) {\r\n scrollDirectionX = 1;\r\n } else if (this.data.scrollX.offset > window.pageXOffset) {\r\n scrollDirectionX = -1;\r\n }\r\n\r\n if (this.data.scrollY.offset < window.pageYOffset) {\r\n scrollDirectionY = 1;\r\n } else if (this.data.scrollY.offset > window.pageYOffset) {\r\n scrollDirectionY = -1;\r\n }\r\n }\r\n\r\n this.set('online', navigator.onLine);\r\n this.set('doNotTrack', navigator.doNotTrack == '1' || window.doNotTrack == '1' || navigator.msDoNotTrack == '1');\r\n this.set('userAgent', navigator.userAgent);\r\n this.set('language', navigator.language);\r\n this.set('cookieEnabled', navigator.cookieEnabled);\r\n this.set('referrer', document.referrer);\r\n\r\n this.set('location', {\r\n hash: window.location.hash,\r\n host: window.location.host,\r\n hostname: window.location.hostname,\r\n href: window.location.href,\r\n origin: window.location.origin,\r\n pathname: window.location.pathname,\r\n port: window.location.port,\r\n protocol: window.location.protocol,\r\n search: window.location.search,\r\n pathparts: window.location.pathname.substr(1).split('/')\r\n });\r\n\r\n this.set('scrollX', {\r\n offset: window.pageXOffset,\r\n length: Math.max(0, docWidth - window.innerWidth),\r\n direction: scrollDirectionX,\r\n position: window.pageXOffset > 0 ? window.pageXOffset / (docWidth - window.innerWidth) : 0\r\n });\r\n\r\n this.set('scrollY', {\r\n offset: window.pageYOffset,\r\n length: Math.max(0, docHeight - window.innerHeight),\r\n direction: scrollDirectionY,\r\n position: window.pageYOffset > 0 ? window.pageYOffset / (docHeight - window.innerHeight) : 0\r\n });\r\n\r\n this.set('viewport', {\r\n width: window.innerWidth,\r\n height: window.innerHeight,\r\n scrollX: window.pageXOffset,\r\n scrollY: window.pageYOffset\r\n });\r\n\r\n this.set('device', {\r\n width: window.screen.width,\r\n height: window.screen.height,\r\n pixelRatio: window.devicePixelRatio || window.screen.deviceXDPI / window.screen.logicalXDPI,\r\n orientation: this.getOrientation()\r\n });\r\n\r\n this.set('document', {\r\n width: docWidth,\r\n height: docHeight,\r\n hidden: document.hidden,\r\n visibility: document.visibilityState\r\n });\r\n },\r\n\r\n getOrientation: function() {\r\n if (window.matchMedia(\"(orientation: portrait)\").matches) {\r\n return 'portrait';\r\n } else {\r\n return 'landscape';\r\n }\r\n }\r\n\r\n});\r\n"]}