{"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","internal","title","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","copy","execCommand","cut","paste","delete","selectAll","writeTextToClipboard","text","clipboard","writeText","events","scroll","Event","resize","offline","popstate","visibilitychange","orientationchange","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, internal, title) {\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({ title: title }, '', url.replace('./', match[0]));\r\n if (title) document.title = title;\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 if (internal) {\r\n window.history.pushState({ title: title || document.title }, '', url);\r\n if (title) document.title = title;\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 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 copy: function() {\r\n document.execCommand('copy');\r\n },\r\n\r\n cut: function() {\r\n document.execCommand('cut');\r\n },\r\n\r\n paste: function() {\r\n document.execCommand('paste');\r\n },\r\n\r\n delete: function() {\r\n document.execCommand('delete');\r\n },\r\n\r\n selectAll: function() {\r\n document.execCommand('selectAll');\r\n },\r\n\r\n writeTextToClipboard: function(text) {\r\n return navigator.clipboard.writeText(text);\r\n }\r\n },\r\n\r\n events: {\r\n scroll: Event,\r\n resize: Event,\r\n online: Event,\r\n offline: Event,\r\n popstate: Event,\r\n visibilitychange: Event,\r\n orientationchange: Event\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 if (event && event.type) {\r\n this.dispatchEvent(event);\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"]}