{"version":3,"sources":["zipStorage.js"],"names":["ZipStorage","ZIP_CODE_LOCAL_STORAGE_NAME","STATIC_ZIP","Event","zipReadyEvent","_currentItem","localStorage","getItem","key","_setItem","value","setItem","setZip","zip","dispatchEvent","getZip","_getItem","zipRequest","Request","fetch","then","response","ZIP_READY_EVENT_NAME","Error","status","headers","get","split","v","trim","zipValue","substring","finally","console","document","catch","error","onZipChange","onZipReady","cb","addEventListener","ZIP_CHANGE_EVENT_NAME","init"],"mappings":"YAAA,IAAIA,YAAc,WACd,GAEMC,GAAAA,GAAAA,OAFwB,iBAGxBC,EAAa,GAAnBC,OAJyB,gBAMnBC,EAAAA,SAAoBD,GAGtB,GAAME,GAAeC,aAAaC,QAAQC,EAA1C,OAAMH,QAGF,IAJRI,EAAA,SAAAD,EAAAE,GAWIJ,aAAaK,QAAQH,EAAKE,IAD9BE,EAAA,SAAAC,GAKIJ,EAtB0B,cAsBYI,GADpCD,SAASE,cAATF,IAANG,EAAA,WAMI,MAAOC,GA3BmB,eA+E1BD,QACAH,KAtDJ,WAKI,IAAIG,IAAJ,CAEC,GAAAE,GAAA,GAAAC,SAAA,cAEDC,OAAIF,GAGCG,KAAK,SAAAC,GADJJ,IAAAA,EACDG,GAyBQ,KAFJR,GA5DPU,SA8DW,GAAAC,OAAA,qCAAMF,EAAAG,OAxBPH,IAAAA,GAAa,EAGbA,GAASI,QAAQC,IAAI,oBAAZD,MAAAA,KAGGjB,QAAQmB,SAAAA,GAGKA,QAHPC,EAAED,MAAM,KAAK,GAAGE,SAIzBC,EAAAF,EAAAD,MAAA,KAAA,GAAAI,UAAA,EAAA,MAKFnB,EADHA,EACGkB,EArDjBR,WAiESU,QAASC,WA7BpBC,SAAApB,cAAAV,KA6BK+B,MAAM,SAAAC,GAAA,MAASH,SAAQG,MAAMA,OAelCC,OAAAA,EACAC,OAAAA,EACApC,YAdJ,SAAAqC,GACIL,SAASM,iBAtEiB,gBAsEuBD,IAcjDE,WAXJ,SAAAF,GACIL,SAASM,iBA3EY,eA2E2BD,IAWhDjB,WApFEA,QAqFFrB,sBAtF0B,gBA6E9BqB,qBA9EyB,eAA7BrB,4BACkC,iBA0FlCD,YAAW0C","file":"zipStorage.min.js","sourcesContent":["var ZipStorage = (function() {\r\n const ZIP_CHANGE_EVENT_NAME = 'app.zipChange';\r\n const ZIP_READY_EVENT_NAME = 'app.zipReady';\r\n const ZIP_CODE_LOCAL_STORAGE_NAME = 'userZipCode';\r\n const STATIC_ZIP = '90210';\r\n const zipChangeEvent = new Event(ZIP_CHANGE_EVENT_NAME);\r\n const zipReadyEvent = new Event(ZIP_READY_EVENT_NAME);\r\n\r\n const _getItem = function (key) {\r\n const _currentItem = localStorage.getItem(key);\r\n\r\n if (_currentItem) {\r\n return _currentItem;\r\n } else {\r\n return undefined;\r\n }\r\n };\r\n\r\n const _setItem = function (key, value) {\r\n localStorage.setItem(key, value);\r\n };\r\n\r\n const setZip = function(zip) {\r\n _setItem(ZIP_CODE_LOCAL_STORAGE_NAME, zip);\r\n document.dispatchEvent(zipChangeEvent);\r\n };\r\n\r\n const getZip = function() {\r\n return _getItem(ZIP_CODE_LOCAL_STORAGE_NAME);\r\n };\r\n\r\n const init = function() {\r\n if (getZip()) {\r\n return;\r\n }\r\n\r\n var zipRequest = new Request ('favicon.ico');\r\n\r\n fetch(zipRequest)\r\n .then(response => {\r\n if (response.ok) {\r\n let zipValue = '';\r\n\r\n response.headers.get(\"Akamai-Edgescape\")\r\n .split(',')\r\n .forEach((v) => {\r\n let key = v.split('=')[0].trim();\r\n\r\n if (key === 'zip') {\r\n zipValue = v.split('=')[1].substring(0, 5);\r\n }\r\n });\r\n\r\n if (zipValue) {\r\n setZip(zipValue);\r\n } else {\r\n setZip(STATIC_ZIP);\r\n }\r\n\r\n } else {\r\n setZip(STATIC_ZIP);\r\n throw new Error(`ZipStorage.init() error, status = ${response.status}`);\r\n }\r\n })\r\n .finally(() => {\r\n document.dispatchEvent(zipReadyEvent);\r\n })\r\n .catch(error => console.error(error));\r\n };\r\n\r\n const onZipChange = function(cb) {\r\n document.addEventListener(ZIP_CHANGE_EVENT_NAME, cb);\r\n }\r\n\r\n const onZipReady = function(cb) {\r\n document.addEventListener(ZIP_READY_EVENT_NAME, cb);\r\n }\r\n\r\n return {\r\n init: init,\r\n getZip: getZip,\r\n setZip: setZip,\r\n onZipChange: onZipChange,\r\n onZipReady: onZipReady,\r\n STATIC_ZIP: STATIC_ZIP,\r\n ZIP_CHANGE_EVENT_NAME: ZIP_CHANGE_EVENT_NAME,\r\n ZIP_READY_EVENT_NAME: ZIP_READY_EVENT_NAME,\r\n ZIP_CODE_LOCAL_STORAGE_NAME: ZIP_CODE_LOCAL_STORAGE_NAME\r\n }\r\n})();\r\n\r\nZipStorage.init();"]}