{"version":3,"sources":["components/queryManager.js","components/cookieManager.js","components/localManager.js","components/sessionManager.js"],"names":["dmx","Component","initialData","data","methods","set","key","value","this","_setQueryParam","remove","removeAll","render","init","_updateHandler","bind","window","addEventListener","destroy","removeEventListener","updated","params","clone","url","URL","location","search","URLSearchParams","history","pushState","_buildQuery","keys","Object","length","reduce","query","encodeURIComponent","_parseQuery","replace","split","part","p","decodeURIComponent","_cookie","document","cookie","_getCookie","name","options","_setCookie","expires","forEach","pos","indexOf","substr","test","path","String","escape","Date","now","toUTCString","domain","secure","val","JSON","stringify","localStorage","setItem","removeItem","_getData","startsWith","slice","parse","getItem","e","console","warn","sessionStorage","node"],"mappings":"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","file":"dmxStateManagement.js","sourcesContent":["dmx.Component('query-manager', {\r\n\r\n initialData: {\r\n data: {},\r\n },\r\n\r\n methods: {\r\n set (key, value) {\r\n this._setQueryParam(key, value);\r\n },\r\n\r\n remove (key) {\r\n this._setQueryParam(key);\r\n },\r\n\r\n removeAll () {\r\n this._setQueryParam();\r\n },\r\n },\r\n\r\n render: false,\r\n\r\n init () {\r\n this._updateHandler = this._updateHandler.bind(this);\r\n\r\n // only need to update on these events\r\n window.addEventListener('popstate', this._updateHandler);\r\n window.addEventListener('pushstate', this._updateHandler);\r\n window.addEventListener('replacestate', this._updateHandler);\r\n\r\n this._updateHandler();\r\n },\r\n\r\n destroy () {\r\n window.removeEventListener('popstate', this._updateHandler);\r\n window.removeEventListener('pushstate', this._updateHandler);\r\n window.removeEventListener('replacestate', this._updateHandler);\r\n },\r\n\r\n _setQueryParam: function (key, value) {\r\n let updated = false;\r\n let params = dmx.clone(this.data.data);\r\n\r\n if (value == null) {\r\n if (key == null) {\r\n params = {};\r\n updated = true;\r\n } else if (params[key]) {\r\n delete params[key];\r\n updated = true;\r\n }\r\n } else if (params[key] != value) {\r\n params[key] = value;\r\n updated = true;\r\n }\r\n\r\n if (updated) {\r\n const url = new URL(window.location);\r\n url.search = new URLSearchParams(params);\r\n window.history.pushState(null, null, url);\r\n }\r\n },\r\n\r\n _buildQuery: function (data) {\r\n const keys = Object.keys(data);\r\n\r\n return keys.length\r\n ? '?' +\r\n 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\r\n _parseQuery: function () {\r\n const query = this.search.replace(/^\\?/, '');\r\n\r\n return query.split('&').reduce(function (data, part) {\r\n const p = part.replace(/\\+/g, ' ').split('=');\r\n if (p[0]) data[decodeURIComponent(p[0])] = decodeURIComponent(p[1] || '');\r\n return data;\r\n }, {});\r\n },\r\n\r\n _updateHandler () {\r\n if (this.search !== window.location.search) {\r\n this.search = window.location.search;\r\n this.set('data', this._parseQuery());\r\n }\r\n },\r\n\r\n});\r\n","dmx.Component('cookie-manager', {\r\n\r\n initialData () {\r\n this._cookie = document.cookie;\r\n\r\n return {\r\n data: this._getCookie(),\r\n };\r\n },\r\n\r\n methods: {\r\n set (name, value, options = {}) {\r\n this._setCookie(name, value, options);\r\n },\r\n\r\n remove (name, options = {}) {\r\n options.expires = '1970-01-01T00:00:00Z';\r\n this._setCookie(name, '', options);\r\n },\r\n\r\n removeAll (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: false,\r\n\r\n _getCookie () {\r\n return 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 _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 name = name.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent);\r\n name = 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 this._cookie = document.cookie;\r\n this.set('data', this._getCookie());\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 methods: {\r\n set (key, value) {\r\n const 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 (key) {\r\n window.localStorage.removeItem('dmxState-' + key);\r\n this._getData();\r\n },\r\n\r\n removeAll () {\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: false,\r\n\r\n init () {\r\n this._getData();\r\n },\r\n\r\n _getData () {\r\n this.set(\r\n 'data',\r\n Object.keys(window.localStorage).reduce(function (data, key) {\r\n if (key.startsWith('dmxState-')) {\r\n try {\r\n data[key.slice(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 methods: {\r\n set (key, value) {\r\n const 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 (key) {\r\n window.sessionStorage.removeItem('dmxState-' + key);\r\n this._getData();\r\n },\r\n\r\n removeAll () {\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: false,\r\n\r\n init (node) {\r\n this._getData();\r\n },\r\n\r\n _getData () {\r\n this.set(\r\n 'data',\r\n Object.keys(window.sessionStorage).reduce(function (data, key) {\r\n if (key.startsWith('dmxState-')) {\r\n try {\r\n data[key.slice(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"]}