{"version":3,"sources":["components/queryManager.js","components/cookieManager.js","components/localManager.js","components/sessionManager.js"],"names":["dmx","Component","initialData","data","attributes","methods","set","key","value","this","setQueryParam","remove","removeAll","render","node","update","parseQuery","window","location","search","updated","history","pushState","pathname","buildQuery","requestUpdate","keys","Object","length","reduce","query","encodeURIComponent","replace","split","part","p","decodeURIComponent","name","options","setCookie","expires","forEach","cookie","document","pos","indexOf","substr","test","path","String","escape","Date","now","toUTCString","domain","secure","val","JSON","stringify","localStorage","setItem","removeItem","getData","startsWith","parse","getItem","e","console","warn","sessionStorage"],"mappings":"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","file":"../dmxStateManagement/dmxStateManagement.js","sourcesContent":["dmx.Component('query-manager', {\r\n\r\n initialData: {\r\n data: {}\r\n },\r\n\r\n attributes: {},\r\n\r\n methods: {\r\n set: function(key, value) {\r\n this.setQueryParam(key, value);\r\n },\r\n\r\n remove: function(key) {\r\n this.setQueryParam(key);\r\n },\r\n\r\n removeAll: function() {\r\n this.setQueryParam();\r\n }\r\n },\r\n\r\n render: function(node) {\r\n this.update();\r\n },\r\n\r\n update: function() {\r\n this.set('data', this.parseQuery(window.location.search));\r\n },\r\n\r\n setQueryParam: function(key, value) {\r\n var updated = false;\r\n\r\n if (value == null) {\r\n if (key == null) {\r\n this.data.data = {};\r\n updated = true;\r\n } else if (this.data.data[key]) {\r\n delete this.data.data[key];\r\n updated = true;\r\n }\r\n } else if (this.data.data[key] != value) {\r\n this.data.data[key] = value;\r\n updated = true;\r\n }\r\n\r\n if (updated) {\r\n window.history.pushState(null, null, window.location.pathname + this.buildQuery(this.data.data));\r\n dmx.requestUpdate();\r\n }\r\n },\r\n\r\n buildQuery: function(data) {\r\n var keys = Object.keys(data);\r\n\r\n return keys.length ? '?' + keys.reduce(function(query, key) {\r\n if (query) query += '&';\r\n query += encodeURIComponent(key) + '=' + encodeURIComponent(data[key]);\r\n return query;\r\n }, '') : '';\r\n },\r\n\r\n parseQuery: function(query) {\r\n query = query.replace(/^\\?/, '');\r\n\r\n return query.split('&').reduce(function(data, part) {\r\n var p = part.replace(/\\+/g, ' ').split('=');\r\n if (p[0]) {\r\n data[decodeURIComponent(p[0])] = decodeURIComponent(p[1] || '');\r\n }\r\n return data;\r\n }, {});\r\n }\r\n\r\n});\r\n","dmx.Component('cookie-manager', {\r\n\r\n initialData: {\r\n data: {}\r\n },\r\n\r\n attributes: {},\r\n\r\n methods: {\r\n set: function(name, value, options) {\r\n this.setCookie(name, value, options);\r\n },\r\n\r\n remove: function(name, options) {\r\n options = options || {};\r\n options.expires = '1970-01-01T00:00:00Z';\r\n this.setCookie(name, '', options);\r\n },\r\n\r\n removeAll: function(options) {\r\n options = options || {};\r\n options.expires = '1970-01-01T00:00:00Z';\r\n Object.keys(this.data.data).forEach(function(name) {\r\n this.setCookie(name, '', options);\r\n });\r\n }\r\n },\r\n\r\n render: function(node) {\r\n this.cookie = '';\r\n this.update();\r\n },\r\n\r\n update: function() {\r\n if (this.cookie != document.cookie) {\r\n this.cookie = document.cookie;\r\n this.set('data', this.cookie.split(/;\\s*/).reduce(function(data, cookie) {\r\n var pos = cookie.indexOf('=');\r\n data[decodeURIComponent(cookie.substr(0, pos))] = decodeURIComponent(cookie.substr(pos + 1));\r\n return data;\r\n }, {}));\r\n }\r\n },\r\n\r\n setCookie: function(name, value, options) {\r\n if (!name || /^(?:expires|max\\-age|path|domain|secure)$/i.test(name)) {\r\n return false;\r\n }\r\n\r\n options = options || {};\r\n options.path = options.path || '/';\r\n\r\n // escaping taken from:\r\n // https://github.com/js-cookie/js-cookie/blob/master/src/js.cookie.js\r\n name = encodeURIComponent(String(name));\r\n\t\tname = name.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent);\r\n\t\tname = name.replace(/[\\(\\)]/g, escape);\r\n\r\n value = encodeURIComponent(String(value));\r\n value = value.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\r\n\r\n var cookie = name + '=' + value;\r\n\r\n if (options.expires) {\r\n if (typeof options.expires == 'number') {\r\n options.expires = Date.now() + (options.expires * 86400000);\r\n }\r\n cookie += '; expires=' + (new Date(options.expires)).toUTCString();\r\n }\r\n\r\n if (options.domain) {\r\n cookie += '; domain=' + options.domain;\r\n }\r\n\r\n if (options.path) {\r\n cookie += '; path=' + options.path;\r\n }\r\n\r\n if (options.secure) {\r\n cookie += '; secure';\r\n }\r\n\r\n document.cookie = cookie;\r\n\r\n dmx.requestUpdate();\r\n }\r\n\r\n});\r\n","dmx.Component('local-manager', {\r\n\r\n initialData: {\r\n data: {}\r\n },\r\n\r\n attributes: {},\r\n\r\n methods: {\r\n set: function(key, value) {\r\n var val = JSON.stringify(value);\r\n if (val != null) {\r\n window.localStorage.setItem('dmxState-' + key, val);\r\n } else {\r\n window.localStorage.removeItem('dmxState-' + key);\r\n }\r\n this.getData();\r\n },\r\n\r\n remove: function(key) {\r\n window.localStorage.removeItem('dmxState-' + key);\r\n this.getData();\r\n },\r\n\r\n removeAll: function() {\r\n Object.keys(window.localStorage).forEach(function(key) {\r\n if (key.startsWith('dmxState-')) {\r\n window.localStorage.removeItem(key);\r\n }\r\n });\r\n this.getData();\r\n }\r\n },\r\n\r\n render: function(node) {\r\n this.getData();\r\n },\r\n\r\n getData: function() {\r\n this.set('data', Object.keys(window.localStorage).reduce(function(data, key) {\r\n if (key.startsWith('dmxState-')) {\r\n try {\r\n data[key.substr(9)] = JSON.parse(window.localStorage.getItem(key));\r\n } catch (e) {\r\n console.warn('Error parsing JSON: ' + window.localStorage.getItem(key));\r\n }\r\n }\r\n\r\n return data;\r\n }, {}));\r\n }\r\n\r\n});\r\n","dmx.Component('session-manager', {\r\n\r\n initialData: {\r\n data: {}\r\n },\r\n\r\n attributes: {},\r\n\r\n methods: {\r\n set: function(key, value) {\r\n var val = JSON.stringify(value);\r\n if (val != null) {\r\n window.sessionStorage.setItem('dmxState-' + key, val);\r\n } else {\r\n window.sessionStorage.removeItem('dmxState-' + key);\r\n }\r\n this.getData();\r\n },\r\n\r\n remove: function(key) {\r\n window.sessionStorage.removeItem('dmxState-' + key);\r\n this.getData();\r\n },\r\n\r\n removeAll: function() {\r\n Object.keys(window.sessionStorage).forEach(function(key) {\r\n if (key.startsWith('dmxState-')) {\r\n window.sessionStorage.removeItem(key);\r\n }\r\n });\r\n this.getData();\r\n }\r\n },\r\n\r\n render: function(node) {\r\n this.getData();\r\n },\r\n\r\n getData: function() {\r\n this.set('data', Object.keys(window.sessionStorage).reduce(function(data, key) {\r\n if (key.startsWith('dmxState-')) {\r\n try {\r\n data[key.substr(9)] = JSON.parse(window.sessionStorage.getItem(key));\r\n } catch (e) {\r\n console.warn('Error parsing JSON: ' + window.sessionStorage.getItem(key));\r\n }\r\n }\r\n\r\n return data;\r\n }, {}));\r\n }\r\n\r\n});\r\n"]}