{"version":3,"file":"cart-localstorage.min.js","sources":["../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/@babel/runtime/helpers/typeof.js","../utils/localstorage.js","../index.js"],"sourcesContent":["function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","const STORAGE_KEY = '__cart'\n\nlet saveListener = null;\nexport const listen = (cb) => { saveListener = cb }; // ugly but storage listener is not working for the same window..\n\nexport const list = (key) => JSON.parse(localStorage.getItem(key || STORAGE_KEY)) || [];\n\nexport const save = (data, key) => {\n\tlocalStorage.setItem(key || STORAGE_KEY, JSON.stringify(data));\n\tif(saveListener) saveListener(list(key || STORAGE_KEY))\n}\n\nexport const clear = (key) => {\n\tlocalStorage.removeItem(key || STORAGE_KEY)\n\tif(saveListener) saveListener(list(key || STORAGE_KEY))\n}\n","import { list, save, clear, listen } from './utils/localstorage'\n\nconst get = (id) => list().find((product) => product.id === id)\n\nconst exists = (id) => !!get(id)\n\nconst add = (product, quantity) => isValid(product) ? exists(product.id) ? update(product.id, 'quantity', get(product.id).quantity + (quantity || 1)) : save(list().concat({ ...product, quantity: quantity || 1 })) : null;\n\nconst remove = (id) => save(list().filter((product) => product.id !== id))\n\nconst quantity = (id, diff) => exists(id) && get(id).quantity + diff > 0 ? update(id, 'quantity', get(id).quantity + diff) : remove(id);\n\nconst update = (id, field, value) => save(list().map((product) => product.id === id ? ({ ...product, [field]: value }) : product))\n\nconst total = (cb) => list().reduce((sum, product) => isCallback(cb) ? cb(sum, product) : (sum += subtotal(product)), 0);\n\nconst destroy = () => clear()\n\nconst onChange = (cb) => isCallback(cb) ? listen(cb) : console.log(typeof cb)\n\n\nconst isValid = (product) => product.id && product.price\n\nconst subtotal = (product) => isCalcable(product) ? (product.price * product.quantity) : 0\n\nconst isCalcable = (product) => (product && product.price && product.quantity)\n\nconst isCallback = (cb) => cb && typeof cb === \"function\"\n\nexport { list, get, add, remove, update, quantity, total, destroy, exists, subtotal, onChange };\n"],"names":["_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","writable","_typeof","module","Symbol","iterator","constructor","prototype","STORAGE_KEY","saveListener","listen","cb","list","JSON","parse","localStorage","getItem","save","data","setItem","stringify","clear","removeItem","get","id","find","product","exists","remove","filter","update","field","map","isValid","price","subtotal","isCalcable","quantity","isCallback","concat","console","log","diff","reduce","sum"],"mappings":"oCAAA,QAASA,CAAAA,CAAT,CAAyBC,CAAzB,CAA8BC,CAA9B,CAAmCC,CAAnC,CAA0C,OACpCD,CAAAA,CAAG,GAAID,CAAAA,EACTG,MAAM,CAACC,cAAPD,CAAsBH,CAAtBG,CAA2BF,CAA3BE,CAAgC,CAC9BD,KAAK,CAAEA,CADuB,CAE9BG,UAAU,GAFoB,CAG9BC,YAAY,GAHkB,CAI9BC,QAAQ,GAJsB,CAAhCJ,EAOAH,CAAG,CAACC,CAAD,CAAHD,CAAWE,EAGNF,woBCZT,QAASQ,CAAAA,CAAT,CAAiBR,CAAjB,CAAsB,iCAIlBS,CAAAA,UADoB,UAAlB,QAAOC,CAAAA,MAAP,EAA2D,QAA3B,QAAOA,CAAAA,MAAM,CAACC,SAC/BH,CAAO,CAAG,SAAiBR,CAAjB,CAAsB,OACxC,OAAOA,CAAAA,CADhB,EAIiBQ,CAAO,CAAG,SAAiBR,CAAjB,CAAsB,OACxCA,CAAAA,CAAG,EAAsB,UAAlB,QAAOU,CAAAA,MAAdV,EAAuCA,CAAG,CAACY,WAAJZ,GAAoBU,MAA3DV,EAAqEA,CAAG,GAAKU,MAAM,CAACG,SAApFb,CAAgG,QAAhGA,CAA2G,MAAOA,CAAAA,CAD3H,EAKKQ,CAAO,CAACR,CAAD,EAGhBS,SAAAA,CAAiBD,KDDjB,CAAiBT,EEfXe,CAAW,CAAG,SAEhBC,CAAY,CAAG,KACNC,CAAM,CAAG,SAACC,CAAD,CAAQ,CAAEF,CAAY,CAAGE,CAAxC,EAEMC,CAAI,CAAG,SAACjB,CAAD,QAASkB,CAAAA,IAAI,CAACC,KAALD,CAAWE,YAAY,CAACC,OAAbD,CAAqBpB,CAAG,EAAIa,CAA5BO,CAAXF,GAAwD,EAA9E,EAEMI,CAAI,CAAG,SAACC,CAAD,CAAOvB,CAAP,CAAe,CAClCoB,YAAY,CAACI,OAAbJ,CAAqBpB,CAAG,EAAIa,CAA5BO,CAAyCF,IAAI,CAACO,SAALP,CAAeK,CAAfL,CAAzCE,CADkC,CAE/BN,CAF+B,EAEjBA,CAAY,CAACG,CAAI,CAACjB,CAAG,EAAIa,CAAR,CAAL,CAFvB,EAKMa,CAAK,CAAG,SAAC1B,CAAD,CAAS,CAC7BoB,YAAY,CAACO,UAAbP,CAAwBpB,CAAG,EAAIa,CAA/BO,CAD6B,CAE1BN,CAF0B,EAEZA,CAAY,CAACG,CAAI,CAACjB,CAAG,EAAIa,CAAR,CAAL,CAFvB,ECVDe,CAAG,CAAG,SAACC,CAAD,QAAQZ,CAAAA,CAAI,GAAGa,IAAPb,CAAY,SAACc,CAAD,QAAaA,CAAAA,CAAO,CAACF,EAARE,GAAeF,CAAxC,CAAAZ,CAApB,EAEMe,CAAM,CAAG,SAACH,CAAD,QAAQ,CAAC,CAACD,CAAG,CAACC,CAAD,CAA5B,EAIMI,CAAM,CAAG,SAACJ,CAAD,QAAQP,CAAAA,CAAI,CAACL,CAAI,GAAGiB,MAAPjB,CAAc,SAACc,CAAD,QAAaA,CAAAA,CAAO,CAACF,EAARE,GAAeF,CAA1C,CAAAZ,CAAD,CAA3B,EAIMkB,CAAM,CAAG,SAACN,CAAD,CAAKO,CAAL,CAAYnC,CAAZ,QAAsBqB,CAAAA,CAAI,CAACL,CAAI,GAAGoB,GAAPpB,CAAW,SAACc,CAAD,QAAaA,CAAAA,CAAO,CAACF,EAARE,GAAeF,CAAfE,MAA0BA,OAAUK,EAAQnC,GAA5C8B,CAAuDA,CAA/E,CAAAd,CAAD,CAAzC,EASMqB,CAAO,CAAG,SAACP,CAAD,QAAaA,CAAAA,CAAO,CAACF,EAARE,EAAcA,CAAO,CAACQ,KAAnD,EAEMC,CAAQ,CAAG,SAACT,CAAD,QAAaU,CAAAA,CAAU,CAACV,CAAD,CAAVU,CAAuBV,CAAO,CAACQ,KAARR,CAAgBA,CAAO,CAACW,QAA/CD,CAA2D,CAAzF,EAEMA,CAAU,CAAG,SAACV,CAAD,QAAcA,CAAAA,CAAO,EAAIA,CAAO,CAACQ,KAAnBR,EAA4BA,CAAO,CAACW,QAArE,EAEMC,CAAU,CAAG,SAAC3B,CAAD,QAAQA,CAAAA,CAAE,EAAkB,UAAd,QAAOA,CAAAA,CAAxC,eArBY,SAACe,CAAD,CAAUW,CAAV,QAAuBJ,CAAAA,CAAO,CAACP,CAAD,CAAPO,CAAmBN,CAAM,CAACD,CAAO,CAACF,EAAT,CAANG,CAAqBG,CAAM,CAACJ,CAAO,CAACF,EAAT,CAAa,UAAb,CAAyBD,CAAG,CAACG,CAAO,CAACF,EAAT,CAAHD,CAAgBc,QAAhBd,EAA4Bc,CAAQ,EAAI,CAAxCd,CAAzB,CAA3BI,CAAkGV,CAAI,CAACL,CAAI,GAAG2B,MAAP3B,MAAmBc,GAASW,QAAQ,CAAEA,CAAQ,EAAI,GAAlDzB,CAAD,CAAzHqB,CAAoL,IAAvN,YAUgB,iBAAMZ,CAAAA,CAAK,EAA3B,yCAEiB,SAACV,CAAD,QAAQ2B,CAAAA,CAAU,CAAC3B,CAAD,CAAV2B,CAAiB5B,CAAM,CAACC,CAAD,CAAvB2B,CAA8BE,OAAO,CAACC,GAARD,GAAmB7B,EAAnB6B,CAAvD,aARiB,SAAChB,CAAD,CAAKkB,CAAL,QAAcf,CAAAA,CAAM,CAACH,CAAD,CAANG,EAAwC,CAA1BJ,CAAAA,CAAG,CAACC,CAAD,CAAHD,CAAQc,QAARd,CAAmBmB,CAAjCf,CAA4CG,CAAM,CAACN,CAAD,CAAK,UAAL,CAAiBD,CAAG,CAACC,CAAD,CAAHD,CAAQc,QAARd,CAAmBmB,CAApC,CAAlDf,CAA8FC,CAAM,CAACJ,CAAD,CAAnI,kCAIc,SAACb,CAAD,QAAQC,CAAAA,CAAI,GAAG+B,MAAP/B,CAAc,SAACgC,CAAD,CAAMlB,CAAN,QAAkBY,CAAAA,CAAU,CAAC3B,CAAD,CAAV2B,CAAiB3B,CAAE,CAACiC,CAAD,CAAMlB,CAAN,CAAnBY,CAAqCM,CAAG,EAAIT,CAAQ,CAACT,CAAD,CAApF,CAAAd,CAAgG,CAAhGA,CAAtB"}