{"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","dispatchEvent","Event","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","resize","offline","popstate","pushstate","visibilitychange","orientationchange","render","node","addEventListener","throttle","this","_update","bind","event","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 window.dispatchEvent(new Event('pushstate'));\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 window.dispatchEvent(new Event('pushstate'));\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\t\tpushstate: Event,\r\n visibilitychange: Event,\r\n orientationchange: Event\r\n },\r\n\r\n render: function(node) {\r\n window.addEventListener('scroll', dmx.throttle(this._update.bind(this)));\r\n window.addEventListener('resize', dmx.throttle(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('pushstate', this._update.bind(this));\r\n window.addEventListener('replacestate', this._update.bind(this));\r\n window.addEventListener('hashchange', 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 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"]}