{"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","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","debounce","this","_update","bind","throttle","Promise","resolve","then","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('load', dmx.debounce(this._update.bind(this)));\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', dmx.debounce(this._update.bind(this)));\r\n window.addEventListener('offline', dmx.debounce(this._update.bind(this)));\r\n window.addEventListener('popstate', dmx.debounce(this._update.bind(this)));\r\n window.addEventListener('pushstate', dmx.debounce(this._update.bind(this)));\r\n window.addEventListener('replacestate', dmx.debounce(this._update.bind(this)));\r\n window.addEventListener('hashchange', dmx.debounce(this._update.bind(this)));\r\n window.addEventListener('visibilitychange', dmx.debounce(this._update.bind(this)));\r\n if (window.orientation) window.addEventListener('orientationchange', dmx.debounce(this._update.bind(this)));\r\n Promise.resolve().then(() => this._update());\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"]}