diff --git a/asset-manifest.json b/asset-manifest.json index 4e7a77d..fcc9907 100644 --- a/asset-manifest.json +++ b/asset-manifest.json @@ -3,32 +3,32 @@ "static/js/0.d43fc6df.chunk.js": "/adobeassignment/static/js/0.d43fc6df.chunk.js", "static/js/0.d43fc6df.chunk.js.map": "/adobeassignment/static/js/0.d43fc6df.chunk.js.map", "main.css": "/adobeassignment/static/css/main.531d6279.chunk.css", - "main.js": "/adobeassignment/static/js/main.bd830296.chunk.js", - "main.js.map": "/adobeassignment/static/js/main.bd830296.chunk.js.map", - "runtime-main.js": "/adobeassignment/static/js/runtime-main.a69dc47c.js", - "runtime-main.js.map": "/adobeassignment/static/js/runtime-main.a69dc47c.js.map", + "main.js": "/adobeassignment/static/js/main.5d253b8a.chunk.js", + "main.js.map": "/adobeassignment/static/js/main.5d253b8a.chunk.js.map", + "runtime-main.js": "/adobeassignment/static/js/runtime-main.a7a0f556.js", + "runtime-main.js.map": "/adobeassignment/static/js/runtime-main.a7a0f556.js.map", "static/css/3.de424728.chunk.css": "/adobeassignment/static/css/3.de424728.chunk.css", "static/js/3.1ef0ea03.chunk.js": "/adobeassignment/static/js/3.1ef0ea03.chunk.js", "static/js/3.1ef0ea03.chunk.js.map": "/adobeassignment/static/js/3.1ef0ea03.chunk.js.map", - "static/css/4.9b9a457c.chunk.css": "/adobeassignment/static/css/4.9b9a457c.chunk.css", - "static/js/4.7008872c.chunk.js": "/adobeassignment/static/js/4.7008872c.chunk.js", - "static/js/4.7008872c.chunk.js.map": "/adobeassignment/static/js/4.7008872c.chunk.js.map", + "static/css/4.17ee27d5.chunk.css": "/adobeassignment/static/css/4.17ee27d5.chunk.css", + "static/js/4.287ebadd.chunk.js": "/adobeassignment/static/js/4.287ebadd.chunk.js", + "static/js/4.287ebadd.chunk.js.map": "/adobeassignment/static/js/4.287ebadd.chunk.js.map", "static/css/5.5e513931.chunk.css": "/adobeassignment/static/css/5.5e513931.chunk.css", - "static/js/5.5cd61004.chunk.js": "/adobeassignment/static/js/5.5cd61004.chunk.js", - "static/js/5.5cd61004.chunk.js.map": "/adobeassignment/static/js/5.5cd61004.chunk.js.map", + "static/js/5.d4001fe4.chunk.js": "/adobeassignment/static/js/5.d4001fe4.chunk.js", + "static/js/5.d4001fe4.chunk.js.map": "/adobeassignment/static/js/5.d4001fe4.chunk.js.map", "static/css/6.60eec0d8.chunk.css": "/adobeassignment/static/css/6.60eec0d8.chunk.css", "static/js/6.c8725048.chunk.js": "/adobeassignment/static/js/6.c8725048.chunk.js", "static/js/6.c8725048.chunk.js.map": "/adobeassignment/static/js/6.c8725048.chunk.js.map", "static/js/7.b63a031b.chunk.js": "/adobeassignment/static/js/7.b63a031b.chunk.js", "static/js/7.b63a031b.chunk.js.map": "/adobeassignment/static/js/7.b63a031b.chunk.js.map", "static/css/8.cf1d0990.chunk.css": "/adobeassignment/static/css/8.cf1d0990.chunk.css", - "static/js/8.db65044a.chunk.js": "/adobeassignment/static/js/8.db65044a.chunk.js", - "static/js/8.db65044a.chunk.js.map": "/adobeassignment/static/js/8.db65044a.chunk.js.map", + "static/js/8.97dfc8e0.chunk.js": "/adobeassignment/static/js/8.97dfc8e0.chunk.js", + "static/js/8.97dfc8e0.chunk.js.map": "/adobeassignment/static/js/8.97dfc8e0.chunk.js.map", "index.html": "/adobeassignment/index.html", - "precache-manifest.a1eff7c3eda0ad39e05a26a7d9d5efd6.js": "/adobeassignment/precache-manifest.a1eff7c3eda0ad39e05a26a7d9d5efd6.js", + "precache-manifest.949de8ed304c060e521ea664848d9130.js": "/adobeassignment/precache-manifest.949de8ed304c060e521ea664848d9130.js", "service-worker.js": "/adobeassignment/service-worker.js", "static/css/3.de424728.chunk.css.map": "/adobeassignment/static/css/3.de424728.chunk.css.map", - "static/css/4.9b9a457c.chunk.css.map": "/adobeassignment/static/css/4.9b9a457c.chunk.css.map", + "static/css/4.17ee27d5.chunk.css.map": "/adobeassignment/static/css/4.17ee27d5.chunk.css.map", "static/css/5.5e513931.chunk.css.map": "/adobeassignment/static/css/5.5e513931.chunk.css.map", "static/css/6.60eec0d8.chunk.css.map": "/adobeassignment/static/css/6.60eec0d8.chunk.css.map", "static/css/8.cf1d0990.chunk.css.map": "/adobeassignment/static/css/8.cf1d0990.chunk.css.map", @@ -36,10 +36,10 @@ "static/js/3.1ef0ea03.chunk.js.LICENSE.txt": "/adobeassignment/static/js/3.1ef0ea03.chunk.js.LICENSE.txt" }, "entrypoints": [ - "static/js/runtime-main.a69dc47c.js", + "static/js/runtime-main.a7a0f556.js", "static/css/3.de424728.chunk.css", "static/js/3.1ef0ea03.chunk.js", "static/css/main.531d6279.chunk.css", - "static/js/main.bd830296.chunk.js" + "static/js/main.5d253b8a.chunk.js" ] } \ No newline at end of file diff --git a/index.html b/index.html index a5b902f..fbe2a50 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -Adobe assignment
\ No newline at end of file +Adobe assignment
\ No newline at end of file diff --git a/precache-manifest.a1eff7c3eda0ad39e05a26a7d9d5efd6.js b/precache-manifest.949de8ed304c060e521ea664848d9130.js similarity index 60% rename from precache-manifest.a1eff7c3eda0ad39e05a26a7d9d5efd6.js rename to precache-manifest.949de8ed304c060e521ea664848d9130.js index f039d18..e9103c4 100644 --- a/precache-manifest.a1eff7c3eda0ad39e05a26a7d9d5efd6.js +++ b/precache-manifest.949de8ed304c060e521ea664848d9130.js @@ -1,6 +1,6 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ { - "revision": "43352f8d848b537af7a9840d1aa89870", + "revision": "7d8cfa589209b60dee8625755e706743", "url": "/adobeassignment/index.html" }, { @@ -8,11 +8,11 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/adobeassignment/static/css/3.de424728.chunk.css" }, { - "revision": "787882e516e18a0f910a", - "url": "/adobeassignment/static/css/4.9b9a457c.chunk.css" + "revision": "a5a6313d1fbb0ab242c3", + "url": "/adobeassignment/static/css/4.17ee27d5.chunk.css" }, { - "revision": "475895437032a83e7095", + "revision": "a0f30fa13109da35aef4", "url": "/adobeassignment/static/css/5.5e513931.chunk.css" }, { @@ -20,11 +20,11 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/adobeassignment/static/css/6.60eec0d8.chunk.css" }, { - "revision": "8ed40162b0061fc8406c", + "revision": "35519bb93be5057a8cda", "url": "/adobeassignment/static/css/8.cf1d0990.chunk.css" }, { - "revision": "f938571f08d09d55fd58", + "revision": "17ea0c2587142147d815", "url": "/adobeassignment/static/css/main.531d6279.chunk.css" }, { @@ -40,12 +40,12 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/adobeassignment/static/js/3.1ef0ea03.chunk.js.LICENSE.txt" }, { - "revision": "787882e516e18a0f910a", - "url": "/adobeassignment/static/js/4.7008872c.chunk.js" + "revision": "a5a6313d1fbb0ab242c3", + "url": "/adobeassignment/static/js/4.287ebadd.chunk.js" }, { - "revision": "475895437032a83e7095", - "url": "/adobeassignment/static/js/5.5cd61004.chunk.js" + "revision": "a0f30fa13109da35aef4", + "url": "/adobeassignment/static/js/5.d4001fe4.chunk.js" }, { "revision": "66e1709d3fe5e27669f3", @@ -56,15 +56,15 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/adobeassignment/static/js/7.b63a031b.chunk.js" }, { - "revision": "8ed40162b0061fc8406c", - "url": "/adobeassignment/static/js/8.db65044a.chunk.js" + "revision": "35519bb93be5057a8cda", + "url": "/adobeassignment/static/js/8.97dfc8e0.chunk.js" }, { - "revision": "f938571f08d09d55fd58", - "url": "/adobeassignment/static/js/main.bd830296.chunk.js" + "revision": "17ea0c2587142147d815", + "url": "/adobeassignment/static/js/main.5d253b8a.chunk.js" }, { - "revision": "630525c3088c65350a46", - "url": "/adobeassignment/static/js/runtime-main.a69dc47c.js" + "revision": "cbc2724bcea6916a3615", + "url": "/adobeassignment/static/js/runtime-main.a7a0f556.js" } ]); \ No newline at end of file diff --git a/service-worker.js b/service-worker.js index e59aae5..ea7a0e4 100644 --- a/service-worker.js +++ b/service-worker.js @@ -14,7 +14,7 @@ importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js"); importScripts( - "/adobeassignment/precache-manifest.a1eff7c3eda0ad39e05a26a7d9d5efd6.js" + "/adobeassignment/precache-manifest.949de8ed304c060e521ea664848d9130.js" ); self.addEventListener('message', (event) => { diff --git a/static/css/4.17ee27d5.chunk.css b/static/css/4.17ee27d5.chunk.css new file mode 100644 index 0000000..987af9f --- /dev/null +++ b/static/css/4.17ee27d5.chunk.css @@ -0,0 +1,2 @@ +.c-Plp__c-Header__c-Search{margin-left:auto;position:relative}.c-Plp__c-Header__c-Search .c-Plp__c-Header__c-Search__input{background:transparent;border:none;border-bottom:1px solid #fff;color:#fff;float:right;min-height:0;width:0;visibility:hidden;opacity:0;font-size:14px;font-weight:700;padding:7px 10px 8px 0;transition:all .3s ease-in-out;box-shadow:none;outline:none}.c-Plp__c-Header__c-Search .c-Plp__c-Header__c-Search__input.c-Plp__c-Header__c-Search__input--visible{width:100%;opacity:1;visibility:visible}.c-Plp__c-Header__c-Search .c-Plp__c-Header__c-Search__input::-webkit-input-placeholder{color:#fff;opacity:1}.c-Plp__c-Header__c-Search .c-Plp__c-Header__c-Search__input:-ms-input-placeholder{opacity:1}.c-Plp__c-Header__c-Search .c-Plp__c-Header__c-Search__input::-ms-input-placeholder{opacity:1}.c-Plp__c-Header__c-Search .c-Plp__c-Header__c-Search__input::placeholder{color:#fff;opacity:1}.c-Plp__c-Header__c-Search .c-Plp__c-Header__c-Search__input:-ms-input-placeholder{color:#fff;font-size:14px}.c-Plp__c-Header__c-Search .c-Plp__c-Header__c-Search__input::-ms-input-placeholder{color:#fff}.c-Plp__c-Header__c-Search .c-Plp__c-Header__c-Search__searchIcon{position:absolute;top:6px;right:0}.c-Plp__c-Header__c-CartIcon{position:relative}.c-Plp__c-Header__c-CartIcon .c-Plp__c-Header__c-CartIcon__badge{position:absolute;top:-7px;right:-9px;padding:0 5px;border-radius:50%;background-color:#c70936;color:#fff;font-size:12px}.c-Plp__c-Header__c-CartIcon .fa-shopping-cart{float:right}.c-Footer{display:flex;align-items:center;justify-content:center;position:fixed;left:0;bottom:0;width:100%;background-color:#4471ea;color:#f1f3f6;padding:.7em}.c-Footer p{margin-bottom:0;font-weight:700}.c-Plp__c-SortAndFilterPanel{text-align:center}.c-Plp__c-SortAndFilterPanel .c-Plp__c-SortAndFilterPanel__tool{padding:.8rem;font-size:16px;font-weight:700;border:1px solid #e1e1e1}.c-Plp__c-SortAndFilterPanel .c-Plp__c-SortAndFilterPanel__tool .c-Plp__c-SortAndFilterPanel__toolContent{margin-bottom:0}.c-SortModal.modal.show{display:block;background-color:rgba(0,0,0,.5)}.c-SortModal.modal .modal-dialog{pointer-events:auto}.c-SortModal.modal .modal-dialog .modal-body{color:#999}.c-SortModal.modal .modal-dialog .modal-body .error{color:#c70936;font-size:14px}.c-SortModal.ReactModal__Overlay{opacity:0;transition:all .3s ease-in-out}.c-SortModal.ReactModal__Overlay--after-open{opacity:1}.c-SortModal.ReactModal__Overlay--before-close{opacity:0}.c-FilterModal.modal.show{display:block;background-color:rgba(0,0,0,.5)}.c-FilterModal.modal .modal-dialog{pointer-events:auto}.c-FilterModal.modal .modal-dialog .modal-body{color:#999;padding:1rem}.c-FilterModal.modal .modal-dialog .modal-body .error{color:#c70936;font-size:14px}.c-FilterModal.modal .modal-dialog .modal-body .input-range{margin:25px 0;font-weight:700;font-size:14px}.c-FilterModal.modal .modal-dialog .modal-body .input-range .input-range__label-container{font-family:Verdana,Geneva,sans-serif}.c-FilterModal.modal .modal-dialog .modal-body .input-range .input-range__label{top:20px}.c-FilterModal.modal .modal-dialog .modal-body .input-range .input-range__label.input-range__label--value{top:-40px}.c-FilterModal.modal .modal-dialog .modal-body .input-range .input-range__label.input-range__label--max{right:2em}.c-FilterModal.modal .modal-dialog .modal-body .c-FilterModal__input-range__subtitle{font-size:16px;font-weight:700;text-align:center}.c-FilterModal.ReactModal__Overlay{opacity:0;transition:all .3s ease-in-out}.c-FilterModal.ReactModal__Overlay--after-open{opacity:1}.c-FilterModal.ReactModal__Overlay--before-close{opacity:0}.c-ItemPrice{line-height:12px;margin-bottom:.9rem;display:flex;align-items:baseline}.c-ItemPrice .c-ItemPrice__price{font-size:14px;font-weight:700;padding-right:.5rem}.c-ItemPrice .c-ItemPrice__price--strikethrough{color:#999;font-weight:700;font-size:12px;text-decoration:line-through}.c-ItemPrice .c-ItemPrice__discount{color:#4aa219;font-weight:700;font-size:12px;margin-left:auto}.c-Plp__c-ProductContainer__c-ProductTile{padding:10px 15px;border:1px solid #e1e1e1;margin-bottom:4rem}.c-Plp__c-ProductContainer__c-ProductTile .c-Plp__c-ProductContainer__c-ProductTile__image{margin-bottom:.7rem}.c-Plp__c-ProductContainer__c-ProductTile .c-Plp__c-ProductContainer__c-ProductTile__name{font-size:14px}.c-Plp__c-ProductContainer__c-ProductTile .btn__addToCart{display:block;margin:0 auto;border-radius:20px;padding:7px;background-color:#f7ae3a;cursor:pointer;font-size:12px;font-weight:700}.c-Plp__c-ProductContainer__c-ProductTile .btn__addToCart:hover{opacity:.7}@media only screen and (min-width:768px){.c-Plp__c-ProductContainer__c-ProductTile{border:none}.c-Plp__c-ProductContainer__c-ProductTile:not(:last-child){margin-right:2em}}.c-Plp__c-ProductContainer{margin-bottom:46px}.c-Plp__c-ProductContainer .c-Cart__emptyPlp{background:#fff;margin-top:25%;border:1px solid #000;text-align:center;padding:1em}.c-Plp__c-ProductContainer .c-Cart__emptyPlp .c-Cart__emptyPlp__information{color:#999}.c-Plp__c-ProductContainer .c-Plp__c-ProductContainer__infoContainer{background:#fff;color:#037b30;padding:1em;font-weight:700}.c-Plp__c-ProductContainer .c-Plp__c-ProductContainer__infoContainer .c-Plp__c-ProductContainer__information{display:inline-block;margin-bottom:8px}.c-Plp__c-ProductContainer .c-Plp__c-ProductContainer__btnClearSearch{display:block;margin:0 auto;border-radius:20px;padding:7px 20px;background-color:#4471ea;color:#f1f3f6;cursor:pointer;font-size:12px;font-weight:700}.c-Plp__c-ProductContainer .row{justify-content:space-evenly}@media only screen and (min-width:768px){.c-Plp__c-ProductContainer .c-Cart__emptyPlp{margin-top:0;width:75%;margin-left:auto;margin-right:auto}}.c-ProductContainerWithTools .c-ProductContainerWithTools__asideCol{border-right:2px solid #ddd;padding-right:27px}.c-ProductContainerWithTools .c-SortTool__content{padding:20px}.c-ProductContainerWithTools .c-SortTool__content .c-SortTool__header{margin-right:3rem}.c-ProductContainerWithTools .c-SortTool__content .c-SortTool__header .c-SortTool__title{font-weight:700;font-size:20px}.c-ProductContainerWithTools .c-SortTool__content .radio{display:inline;margin-right:2.5rem}.c-ProductContainerWithTools .c-SortTool__content .radio input[type=radio]{display:none}.c-ProductContainerWithTools .c-SortTool__content .radio label{color:#999;padding:5px}.c-ProductContainerWithTools .c-SortTool__content .radio .c-SortTool__body__label{border-bottom:1px solid #4471ea;color:#4471ea}.c-ProductContainerWithTools .c-SortTool__content .c-SortTool__body,.c-ProductContainerWithTools .c-SortTool__content .c-SortTool__body>.container,.c-ProductContainerWithTools .c-SortTool__content .c-SortTool__body>.container.radio,.c-ProductContainerWithTools .c-SortTool__content .c-SortTool__header,.c-ProductContainerWithTools .c-SortTool__content .c-SortTool__title{display:inline-block}.c-ProductContainerWithTools .c-FilterTool__content{padding:1rem}.c-ProductContainerWithTools .c-FilterTool__content .c-FilterTool__body{color:#999;margin:3em 0}.c-ProductContainerWithTools .c-FilterTool__content .c-FilterTool__body .input-range{font-weight:700;font-size:14px}.c-ProductContainerWithTools .c-FilterTool__content .c-FilterTool__body .input-range .input-range__label-container{font-family:Verdana,Geneva,sans-serif}.c-ProductContainerWithTools .c-FilterTool__content .c-FilterTool__body .input-range .input-range__label{top:20px}.c-ProductContainerWithTools .c-FilterTool__content .c-FilterTool__body .input-range .input-range__label.input-range__label--value{top:-40px}.c-ProductContainerWithTools .c-FilterTool__content .c-FilterTool__body .input-range .input-range__label.input-range__label--max{right:2em}.c-ProductContainerWithTools .c-FilterTool__content .c-FilterTool__body .c-FilterModal__input-range__subtitle{font-size:16px;font-weight:700;text-align:center;margin-top:1em}.c-ProductContainerWithTools .c-FilterTool__content .c-FilterTool__footer{text-align:center}.c-ProductContainerWithTools .c-FilterTool__content .c-FilterTool__footer button{border-radius:22px;padding:9px 29px} +/*# sourceMappingURL=4.17ee27d5.chunk.css.map */ \ No newline at end of file diff --git a/static/css/4.17ee27d5.chunk.css.map b/static/css/4.17ee27d5.chunk.css.map new file mode 100644 index 0000000..9df1b0c --- /dev/null +++ b/static/css/4.17ee27d5.chunk.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["Search.component.scss","../../../styles/_variables.scss","CartIcon.component.scss","Footer.component.scss","SortAndFilterPanel.component.scss","SortModal.component.scss","FilterModal.component.scss","ItemPrice.component.scss","ProductTile.component.scss","ProductContainer.component.scss","ProductContainerWithTools.component.scss"],"names":[],"mappings":"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","file":"4.17ee27d5.chunk.css","sourcesContent":["@import './../../../styles//variables';\n\n.c-Plp__c-Header__c-Search {\n margin-left: auto;\n position: relative;\n\n .c-Plp__c-Header__c-Search__input {\n background: transparent;\n border: none;\n border-bottom: 1px solid $neutral-00;\n color: $neutral-00;\n float: right;\n min-height: 0;\n width: 0;\n visibility: hidden;\n opacity: 0;\n font-size: $small-font-size;\n font-weight: $bold-font-weight;\n padding: 7px 10px 8px 0;\n -webkit-transition: all 0.33s ease-in-out;\n transition: all 0.3s ease-in-out;\n box-shadow: none;\n outline: none;\n\n &.c-Plp__c-Header__c-Search__input--visible {\n width: 100%;\n opacity: 1;\n visibility: visible;\n }\n \n &::placeholder {\n color: $neutral-00;\n opacity: 1;\n }\n \n &:-ms-input-placeholder {\n color: $neutral-00;\n font-size: $small-font-size;\n }\n \n &::-ms-input-placeholder {\n color: $neutral-00;\n }\n }\n\n .c-Plp__c-Header__c-Search__searchIcon {\n position: absolute;\n top: 6px;\n right: 0px;\n }\n}\n","// Project-Wide Variables\n// ===\n//\n// Edit these as needed. Some guidelines:\n//\n// - Names should be lowercase and dash-separated;\n// - Qualifiers should be added to the beginning of related variables: use\n// `$small-font-size`, not `$font-size-small`;\n// - Numeric scales should use increments of 10; these numbers are arbitrary and\n// should not map to actual values. If really necessary, additional values can\n// be added in between, e.g. $neutral-15 between 10 and 20.\n//\n//\n// Table of Contents\n// ---\n//\n// [AAA] Basic Layout\n// [BBB] Responsive Layout\n// [CCC] Typography\n// [DDD] Color Palette\n// [EEE] Appearance\n// [FFF] Z-Index\n// [GGG] Shorthands\n\n\n// [AAA] Basic Layout\n// ---\n\n// Basic unit for spacing and alignment; 6 to 12px recommended. Apply in whole\n// or half multiples.\n$sub-unit: 4px;\n$unit: 8px;\n\n// Standard tap-target size\n$tap-size: 44px;\n\n// Container max-width.\n$max-width: 1280px;\n\n// Content Height Calculations\n$header-height: 64px;\n$footer-height: 173px;\n$content-height: calc(100vh - #{$header-height} - #{$footer-height});\n\n// [BBB] Responsive Layout\n// ---\n//\n// Media query breakpoints and grid setup. Please see Mobify's Responsive Best\n// Practices doc here: https://bit.ly/2tmRnEi, and our Responsive Grid\n// documentation here: http://docs.mobify.com/latest/guides/responsive-grid/\n//\n// Note: $small-breakpoint isn't needed, since it is 0px\n\n$medium-breakpoint: 600px;\n$large-breakpoint: 960px;\n$xlarge-breakpoint: $max-width;\n\n$susy: (\n // Add color to show the columns and gutters\n 'svg-grid-colors': hsl(0, 0%, 95%),\n 'columns': susy-repeat(4),\n 'gutters': 12px\n);\n\n$medium-layout: (\n 'svg-grid-colors': hsl(0, 0%, 95%),\n 'columns': susy-repeat(12),\n 'gutters': 12px\n);\n\n$large-layout: (\n 'svg-grid-colors': hsl(0, 0%, 95%),\n 'columns': susy-repeat(12),\n 'gutters': 24px\n);\n\n\n// [CCC] Typography\n// ---\n// $font-family: 'San Francisco', 'Roboto', 'Fira Sans', 'Segoe UI', sans-serif;\n$font-family: Verdana, Geneva, sans-serif; \n$header-font-family: 'Avenir Next Condensed', 'Roboto Condensed', 'Helvetica Neue', 'Roboto', sans-serif;\n$loaded-header-font-family: 'Roboto', $header-font-family;\n\n// Line height\n$huge-line-height: 32px;\n$bigger-line-height: 28px;\n$big-line-height: 24px;\n$line-height: 20px;\n$small-line-height: 16px;\n$smaller-line-height: 12px;\n$tiny-line-height: 8px;\n\n// Font sizes\n$huge-font-size: 28px;\n$bigger-font-size: 24px;\n$big-font-size: 20px;\n$font-size: 16px;\n$small-font-size: 14px;\n$smaller-font-size: 12px;\n$tiny-font-size: 10px;\n$smallest-font-size: 8px;\n\n// Font weight\n$thin-font-weight: 100;\n$extra-light-font-weight: 200;\n$light-font-weight: 300;\n$regular-font-weight: 400;\n$medium-font-weight: 500;\n$semi-bold-font-weight: 600;\n$bold-font-weight: 700;\n\n// [DDD] Color Palette\n// ---\n\n// Neutrals\n$neutral-00: #fff;\n$neutral-10: #f7f7f7;\n$neutral-12: #f1f3f6;\n$neutral-15: #eee;\n$neutral-17: #e1e1e1;\n$neutral-20: #d5d5d5;\n$neutral-30: #bfbfbf;\n$neutral-40: #999;\n$neutral-50: #696969;\n$neutral-60: #333;\n$neutral-70: #000;\n\n// Brand colors\n// $brand-color: #017e9b; // blue\n$brand-color: #4471ea; // blue\n// $secondary-brand-color: #005569;\n$secondary-brand-color: #fafafa;\n$tertiary-brand-color: #83bdcb;\n$quaternary-brand-color: #bfdfe6;\n\n// UI Kit colors\n$ui-brand-color: #005c83; // dark blue\n\n// Accent colors\n$accent-color: #ff852c; // orange\n$light-accent-color: lighten($accent-color, 15%);\n$dark-accent-color: darken($accent-color, 15%);\n\n// Primary Action\n$primary-action-color: #dc0a3c;\n$light-primary-action-color: lighten($primary-action-color, 15%);\n$dark-primary-action-color: darken($primary-action-color, 15%);\n\n// Secondary Action\n$secondary-action-color: #ff852c;\n$light-secondary-action-color: lighten($secondary-action-color, 15%);\n$dark-secondary-action-color: darken($secondary-action-color, 15%);\n\n// Success colors\n$success-color: #037b30;\n$light-success-color: lighten($success-color, 15%);\n$dark-success-color: darken($success-color, 15%);\n\n// Error colors\n$error-color: #c70936;\n$light-error-color: lighten($error-color, 15%);\n$feedback-error-color: #f8e7eb;\n$dark-error-color: darken($error-color, 15%);\n\n// Sale color\n$sale-color: $error-color;\n$prominent-color: $error-color;\n\n// Social colors\n$facebook-color: #3a5a93;\n$twitter-color: #55aace;\n$instagram-color: #405de6;\n$pinterest-color: #bd081c;\n$youtube-color: #e52d27;\n$google-plus-color: #dd4b39;\n$yelp-color: #af0606;\n\n\n// [EEE] Appearance\n// ---\n\n$font-color: $neutral-60;\n$font-color-light: $neutral-12;\n\n$link-color: $ui-brand-color;\n$active-link-color: $dark-accent-color;\n\n$focus-color: $brand-color;\n\n$border-color: $neutral-20;\n$border-radius: 4px;\n\n$input-background-color: $neutral-00;\n$input-border-color: $border-color;\n$focused-input-border-color: $secondary-brand-color;\n$disabled-input-color: $neutral-40;\n$disabled-input-background-color: $neutral-15;\n$disabled-button-background-color: $neutral-15;\n$add-to-cart-button-background-color: #f7ae3a;\n$horizontal-input-padding: $unit;\n$vertical-input-padding: $unit;\n\n$background-color: $neutral-12;\n$overlay-color: rgba($neutral-00, 0.85);\n\n\n// [FFF] Z-Index\n// ---\n\n// Organizes z-index usage by name. Values can be incremented/decremented\n// slightly as necessary. eg. $z1-layer + 1;\n\n$z1-depth: 1; // background\n$z2-depth: 10; // icon or other ui element\n$z3-depth: 100; // modal shade or similar\n$z4-depth: 1000; // modal dialog or similar\n\n\n// [GGG] Shorthands\n// ---\n\n$border: 1px solid $border-color;\n$light-border: 1px solid $neutral-15;\n$input-padding: $vertical-input-padding $horizontal-input-padding;\n\n$box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.3);\n$large-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.3);\n$inset-box-shadow: inset 0 2px 2px -2px rgba(0, 0, 0, 0.3), inset 0 -2px 2px -2px rgba(0, 0, 0, 0.3);\n$input-box-shadow: inset 0 0 5px 0 rgba(0, 0, 0, 0.3);\n$themeColor-Light: #f3e2c7;\n$themeColor-Dark:#252525;\n$theme-font: verdana, sans-serif;\n$theme-supplementer: #f39c12;\n$font-size-desktop-h5: 1.25em;\n$font-size-mobile-h5: 0.8em;\n$font-size-desktop-p: 1.1em;\n$font-size-mobile-p: 0.7em;\n","@import './../../../styles/variables';\n\n.c-Plp__c-Header__c-CartIcon {\n // margin-left: 1rem;\n position: relative;\n\n .c-Plp__c-Header__c-CartIcon__badge {\n position: absolute;\n top: -7px;\n right: -9px;\n padding: 0px 5px;\n border-radius: 50%;\n background-color: $prominent-color;\n color: $neutral-00;\n font-size: $smaller-font-size;\n }\n\n .fa-shopping-cart {\n float: right;\n }\n}\n","@import './../../../styles/variables';\n\n.c-Footer {\n display: flex;\n align-items: center;\n justify-content: center;\n position: fixed;\n left: 0;\n bottom: 0;\n width: 100%;\n background-color: $brand-color;\n color: $font-color-light;\n padding: 0.7em;\n\n p {\n margin-bottom: 0;\n font-weight: bold;\n }\n}\n","@import './../../../styles/variables';\n\n.c-Plp__c-SortAndFilterPanel {\n text-align: center;\n .c-Plp__c-SortAndFilterPanel__tool {\n padding: 0.8rem;\n font-size: $font-size;\n font-weight: $bold-font-weight;\n border: 1px solid $neutral-17;\n .c-Plp__c-SortAndFilterPanel__toolContent {\n margin-bottom: 0;\n }\n }\n\n // .ripple {\n // background-color: $shocking-pink;\n // width: 1rem;\n // height: 1rem;\n // position: absolute;\n // border-radius: 50%;\n // transform: translateX(-100%) translateY(-100%);\n // mix-blend-mode: screen;\n // animation: ripple 1000ms ease-out forwards;\n // }\n \n // @keyframes ripple {\n // 0% { transform: translate(-100%, -100%); }\n // 80% { transform: translate(-100%, -100%) scale(50); }\n // 100% { transform: translate(-100%, -100%) scale(50); opacity: 0; }\n // }\n}\n","@import './../../../styles/variables';\n\n.c-SortModal {\n // transform: translate(0,0);\n // transition: transform .3s ease-out,-webkit-transform .3s ease-out;\n\n &.modal {\n &.show {\n display: block;\n background-color: rgba(0,0,0,0.5);\n }\n // &.fade .modal-dialog {\n // transition: transform .3s ease-out;\n // }\n .modal-dialog {\n pointer-events: auto;\n .modal-body {\n color: $neutral-40;\n .error {\n color: $error-color;\n font-size: $small-font-size;\n }\n }\n }\n }\n\n &.ReactModal__Overlay {\n opacity: 0;\n transition: all 0.3s ease-in-out;\n }\n \n &.ReactModal__Overlay--after-open {\n opacity: 1;\n }\n \n &.ReactModal__Overlay--before-close {\n opacity: 0;\n }\n}\n","@import './../../../styles/variables';\n\n.c-FilterModal {\n &.modal {\n &.show {\n display: block;\n background-color: rgba(0,0,0,0.5);\n }\n // &.fade .modal-dialog {\n // transition: transform .3s ease-out;\n // }\n .modal-dialog {\n pointer-events: auto;\n .modal-body {\n color: $neutral-40;\n padding: 1rem;\n .error {\n color: $error-color;\n font-size: $small-font-size;\n }\n .input-range {\n margin: 25px 0;\n font-weight: $bold-font-weight;\n font-size: $small-font-size;\n .input-range__label-container {\n font-family: $font-family;\n }\n \n .input-range__label {\n top: 20px;\n &.input-range__label--value {\n top: -40px;\n }\n &.input-range__label--max {\n right: 2em;\n }\n }\n }\n .c-FilterModal__input-range__subtitle {\n font-size: $font-size;\n font-weight: $bold-font-weight;\n text-align: center;\n }\n }\n }\n }\n\n &.ReactModal__Overlay {\n opacity: 0;\n transition: all 0.3s ease-in-out;\n }\n \n &.ReactModal__Overlay--after-open {\n opacity: 1;\n }\n \n &.ReactModal__Overlay--before-close {\n opacity: 0;\n }\n}\n","@import './../../../styles/variables';\n\n.c-ItemPrice {\n line-height: $smaller-font-size;\n margin-bottom: 0.9rem;\n display: flex;\n align-items: baseline;\n .c-ItemPrice__price {\n font-size: $small-font-size;\n font-weight: $bold-font-weight;\n padding-right: 0.5rem;\n }\n \n .c-ItemPrice__price--strikethrough {\n color: $neutral-40;\n font-weight: $bold-font-weight;\n font-size: $smaller-font-size;\n text-decoration: line-through;\n // margin-left: $unit * 0.8; \n }\n \n .c-ItemPrice__discount {\n color: #4aa219;\n font-weight: $bold-font-weight;\n font-size: $smaller-font-size;\n margin-left: auto;\n }\n}\n","@import './../../../styles/variables';\n\n.c-Plp__c-ProductContainer__c-ProductTile {\n padding: 10px 15px;\n border: 1px solid $neutral-17;\n margin-bottom: 4rem;\n\n .c-Plp__c-ProductContainer__c-ProductTile__image {\n margin-bottom: 0.7rem;\n }\n\n .c-Plp__c-ProductContainer__c-ProductTile__name {\n font-size: $small-font-size;\n }\n\n .btn__addToCart {\n display: block;\n margin: 0 auto;\n border-radius: 20px;\n padding: 7px;\n background-color: $add-to-cart-button-background-color;\n cursor: pointer;\n font-size: $smaller-font-size;\n font-weight: $bold-font-weight;\n }\n \n .btn__addToCart:hover {\n opacity: 0.7;\n }\n\n @media only screen and (min-width: 768px) {\n border: none;\n &:not(:last-child) {\n margin-right: 2em;\n }\n }\n}\n","@import './../../../styles/variables';\n\n.c-Plp__c-ProductContainer {\n margin-bottom: 46px;\n\n .c-Cart__emptyPlp {\n background: $neutral-00;\n margin-top: 25%;\n border: 1px solid black;\n text-align: center;\n padding: 1em;\n\n .c-Cart__emptyPlp__information {\n color: $neutral-40;\n }\n }\n\n .c-Plp__c-ProductContainer__infoContainer {\n background: $neutral-00;\n color: $success-color;\n padding: 1em;\n font-weight: $bold-font-weight;\n\n .c-Plp__c-ProductContainer__information {\n display: inline-block;\n margin-bottom: 8px;\n }\n }\n\n .c-Plp__c-ProductContainer__btnClearSearch {\n display: block;\n margin: 0 auto;\n border-radius: 20px;\n padding: 7px 20px;\n background-color: $brand-color;\n color: $neutral-12; \n cursor: pointer;\n font-size: $smaller-font-size;\n font-weight: $bold-font-weight;\n }\n\n .row {\n justify-content: space-evenly;\n }\n\n @media only screen and (min-width: 768px) {\n .c-Cart__emptyPlp {\n margin-top: 0;\n width: 75%;\n margin-left: auto;\n margin-right: auto;\n \n }\n }\n}\n","@import './../../../styles/variables';\n\n.c-ProductContainerWithTools {\n\n .c-ProductContainerWithTools__asideCol {\n border-right: 2px solid #ddd;\n padding-right: 27px;\n }\n .c-SortTool__content {\n padding: 20px;\n .c-SortTool__header {\n margin-right: 3rem;\n\n .c-SortTool__title {\n font-weight: $bold-font-weight;\n font-size: $big-font-size;\n }\n }\n .radio {\n display: inline;\n margin-right: 2.5rem;\n input[type=radio] {\n display: none;\n }\n\n label {\n color: $neutral-40;\n padding: 5px;\n }\n\n .c-SortTool__body__label {\n border-bottom: 1px solid $brand-color;\n color: $brand-color;\n }\n }\n\n .c-SortTool__header, .c-SortTool__title, .c-SortTool__body, .c-SortTool__body>.container, .c-SortTool__body>.container.radio {\n display: inline-block;\n }\n }\n\n .c-FilterTool__content {\n padding: 1rem;\n .c-FilterTool__body {\n color: $neutral-40;\n margin: 3em 0;\n .input-range {\n // margin: 25px 0;\n font-weight: $bold-font-weight;\n font-size: $small-font-size;\n .input-range__label-container {\n font-family: $font-family;\n }\n\n .input-range__label {\n top: 20px;\n &.input-range__label--value {\n top: -40px;\n }\n &.input-range__label--max {\n right: 2em;\n }\n }\n }\n .c-FilterModal__input-range__subtitle {\n font-size: $font-size;\n font-weight: $bold-font-weight;\n text-align: center;\n margin-top: 1em;\n }\n }\n .c-FilterTool__footer {\n text-align: center;\n button {\n border-radius: 22px;\n padding: 9px 29px;\n }\n }\n }\n}\n"]} \ No newline at end of file diff --git a/static/css/4.9b9a457c.chunk.css b/static/css/4.9b9a457c.chunk.css deleted file mode 100644 index ad000eb..0000000 --- a/static/css/4.9b9a457c.chunk.css +++ /dev/null @@ -1,2 +0,0 @@ -.c-Plp__c-Header__c-Search{margin-left:auto;position:relative}.c-Plp__c-Header__c-Search .c-Plp__c-Header__c-Search__input{background:transparent;border:none;border-bottom:1px solid #fff;color:#fff;float:right;min-height:0;width:0;visibility:hidden;opacity:0;font-size:14px;font-weight:700;padding:7px 10px 8px 0;transition:all .3s ease-in-out;box-shadow:none;outline:none}.c-Plp__c-Header__c-Search .c-Plp__c-Header__c-Search__input.c-Plp__c-Header__c-Search__input--visible{width:100%;opacity:1;visibility:visible}.c-Plp__c-Header__c-Search .c-Plp__c-Header__c-Search__input::-webkit-input-placeholder{color:#fff;opacity:1}.c-Plp__c-Header__c-Search .c-Plp__c-Header__c-Search__input:-ms-input-placeholder{opacity:1}.c-Plp__c-Header__c-Search .c-Plp__c-Header__c-Search__input::-ms-input-placeholder{opacity:1}.c-Plp__c-Header__c-Search .c-Plp__c-Header__c-Search__input::placeholder{color:#fff;opacity:1}.c-Plp__c-Header__c-Search .c-Plp__c-Header__c-Search__input:-ms-input-placeholder{color:#fff;font-size:14px}.c-Plp__c-Header__c-Search .c-Plp__c-Header__c-Search__input::-ms-input-placeholder{color:#fff}.c-Plp__c-Header__c-Search .c-Plp__c-Header__c-Search__searchIcon{position:absolute;top:6px;right:0}.c-Plp__c-Header__c-CartIcon{position:relative}.c-Plp__c-Header__c-CartIcon .c-Plp__c-Header__c-CartIcon__badge{position:absolute;top:-7px;right:-9px;padding:0 5px;border-radius:50%;background-color:#c70936;color:#fff;font-size:12px}.c-Plp__c-Header__c-CartIcon .fa-shopping-cart{float:right}.c-Footer{display:flex;align-items:center;justify-content:center;position:fixed;left:0;bottom:0;width:100%;background-color:#4471ea;color:#f1f3f6;padding:.7em}.c-Footer p{margin-bottom:0;font-weight:700}.c-Plp__c-SortAndFilterPanel{text-align:center}.c-Plp__c-SortAndFilterPanel .c-Plp__c-SortAndFilterPanel__tool{padding:.8rem;font-size:16px;font-weight:700;border:1px solid #e1e1e1}.c-Plp__c-SortAndFilterPanel .c-Plp__c-SortAndFilterPanel__tool .c-Plp__c-SortAndFilterPanel__toolContent{margin-bottom:0}.c-SortModal.modal.show{display:block;background-color:rgba(0,0,0,.5)}.c-SortModal.modal .modal-dialog{pointer-events:auto}.c-SortModal.modal .modal-dialog .modal-body{color:#999}.c-SortModal.modal .modal-dialog .modal-body .error{color:#c70936;font-size:14px}.c-SortModal.ReactModal__Overlay{opacity:0;transition:all .3s ease-in-out}.c-SortModal.ReactModal__Overlay--after-open{opacity:1}.c-SortModal.ReactModal__Overlay--before-close{opacity:0}.c-FilterModal.modal.show{display:block;background-color:rgba(0,0,0,.5)}.c-FilterModal.modal .modal-dialog{pointer-events:auto}.c-FilterModal.modal .modal-dialog .modal-body{color:#999;padding:1rem}.c-FilterModal.modal .modal-dialog .modal-body .error{color:#c70936;font-size:14px}.c-FilterModal.modal .modal-dialog .modal-body .input-range{margin:25px 0;font-weight:700;font-size:14px}.c-FilterModal.modal .modal-dialog .modal-body .input-range .input-range__label-container{font-family:Verdana,Geneva,sans-serif}.c-FilterModal.modal .modal-dialog .modal-body .input-range .input-range__label{top:20px}.c-FilterModal.modal .modal-dialog .modal-body .input-range .input-range__label.input-range__label--value{top:-40px}.c-FilterModal.modal .modal-dialog .modal-body .input-range .input-range__label.input-range__label--max{right:2em}.c-FilterModal.modal .modal-dialog .modal-body .c-FilterModal__input-range__subtitle{font-size:16px;font-weight:700;text-align:center}.c-FilterModal.ReactModal__Overlay{opacity:0;transition:all .3s ease-in-out}.c-FilterModal.ReactModal__Overlay--after-open{opacity:1}.c-FilterModal.ReactModal__Overlay--before-close{opacity:0}.c-ItemPrice{line-height:12px;margin-bottom:.9rem;display:flex;align-items:baseline}.c-ItemPrice .c-ItemPrice__price{font-size:14px;font-weight:700;padding-right:.5rem}.c-ItemPrice .c-ItemPrice__price--strikethrough{color:#999;font-weight:700;font-size:12px;text-decoration:line-through}.c-ItemPrice .c-ItemPrice__discount{color:#4aa219;font-weight:700;font-size:12px;margin-left:auto}.c-Plp__c-ProductContainer__c-ProductTile{padding:10px 15px;border:1px solid #e1e1e1}.c-Plp__c-ProductContainer__c-ProductTile .c-Plp__c-ProductContainer__c-ProductTile__image{margin-bottom:.7rem}.c-Plp__c-ProductContainer__c-ProductTile .c-Plp__c-ProductContainer__c-ProductTile__name{font-size:14px}.c-Plp__c-ProductContainer__c-ProductTile .btn__addToCart{display:block;margin:0 auto;border-radius:20px;padding:7px;background-color:#f7ae3a;cursor:pointer;font-size:12px;font-weight:700}.c-Plp__c-ProductContainer__c-ProductTile .btn__addToCart:hover{opacity:.7}@media only screen and (min-width:768px){.c-Plp__c-ProductContainer__c-ProductTile{border:none}.c-Plp__c-ProductContainer__c-ProductTile:not(:last-child){margin-right:2em}}.c-Plp__c-ProductContainer{margin-bottom:46px}.c-Plp__c-ProductContainer .c-Cart__emptyPlp{background:#fff;margin-top:25%;border:1px solid #000;text-align:center;padding:1em}.c-Plp__c-ProductContainer .c-Cart__emptyPlp .c-Cart__emptyPlp__information{color:#999}.c-Plp__c-ProductContainer .c-Plp__c-ProductContainer__infoContainer{background:#fff;color:#037b30;padding:1em;font-weight:700}.c-Plp__c-ProductContainer .c-Plp__c-ProductContainer__infoContainer .c-Plp__c-ProductContainer__information{display:inline-block;margin-bottom:8px}.c-Plp__c-ProductContainer .c-Plp__c-ProductContainer__btnClearSearch{display:block;margin:0 auto;border-radius:20px;padding:7px 20px;background-color:#4471ea;color:#f1f3f6;cursor:pointer;font-size:12px;font-weight:700}.c-Plp__c-ProductContainer .row{justify-content:space-evenly}@media only screen and (min-width:768px){.c-Plp__c-ProductContainer .c-Cart__emptyPlp{margin-top:0;width:75%;margin-left:auto;margin-right:auto}}.c-ProductContainerWithTools .c-ProductContainerWithTools__asideCol{border-right:2px solid #ddd;padding-right:27px}.c-ProductContainerWithTools .c-SortTool__content{padding:20px}.c-ProductContainerWithTools .c-SortTool__content .c-SortTool__header{margin-right:3rem}.c-ProductContainerWithTools .c-SortTool__content .c-SortTool__header .c-SortTool__title{font-weight:700;font-size:20px}.c-ProductContainerWithTools .c-SortTool__content .radio{display:inline;margin-right:2.5rem}.c-ProductContainerWithTools .c-SortTool__content .radio input[type=radio]{display:none}.c-ProductContainerWithTools .c-SortTool__content .radio label{color:#999;padding:5px}.c-ProductContainerWithTools .c-SortTool__content .radio .c-SortTool__body__label{border-bottom:1px solid #4471ea;color:#4471ea}.c-ProductContainerWithTools .c-SortTool__content .c-SortTool__body,.c-ProductContainerWithTools .c-SortTool__content .c-SortTool__body>.container,.c-ProductContainerWithTools .c-SortTool__content .c-SortTool__body>.container.radio,.c-ProductContainerWithTools .c-SortTool__content .c-SortTool__header,.c-ProductContainerWithTools .c-SortTool__content .c-SortTool__title{display:inline-block}.c-ProductContainerWithTools .c-FilterTool__content{padding:1rem}.c-ProductContainerWithTools .c-FilterTool__content .c-FilterTool__body{color:#999;margin:3em 0}.c-ProductContainerWithTools .c-FilterTool__content .c-FilterTool__body .input-range{font-weight:700;font-size:14px}.c-ProductContainerWithTools .c-FilterTool__content .c-FilterTool__body .input-range .input-range__label-container{font-family:Verdana,Geneva,sans-serif}.c-ProductContainerWithTools .c-FilterTool__content .c-FilterTool__body .input-range .input-range__label{top:20px}.c-ProductContainerWithTools .c-FilterTool__content .c-FilterTool__body .input-range .input-range__label.input-range__label--value{top:-40px}.c-ProductContainerWithTools .c-FilterTool__content .c-FilterTool__body .input-range .input-range__label.input-range__label--max{right:2em}.c-ProductContainerWithTools .c-FilterTool__content .c-FilterTool__body .c-FilterModal__input-range__subtitle{font-size:16px;font-weight:700;text-align:center;margin-top:1em}.c-ProductContainerWithTools .c-FilterTool__content .c-FilterTool__footer{text-align:center}.c-ProductContainerWithTools .c-FilterTool__content .c-FilterTool__footer button{border-radius:22px;padding:9px 29px} -/*# sourceMappingURL=4.9b9a457c.chunk.css.map */ \ No newline at end of file diff --git a/static/css/4.9b9a457c.chunk.css.map b/static/css/4.9b9a457c.chunk.css.map deleted file mode 100644 index ebb4651..0000000 --- a/static/css/4.9b9a457c.chunk.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["Search.component.scss","../../../styles/_variables.scss","CartIcon.component.scss","Footer.component.scss","SortAndFilterPanel.component.scss","SortModal.component.scss","FilterModal.component.scss","ItemPrice.component.scss","ProductTile.component.scss","ProductContainer.component.scss","ProductContainerWithTools.component.scss"],"names":[],"mappings":"AAEA,2BACE,gBAAiB,CACjB,iBAAkB,CAFpB,6DAKI,sBAAuB,CAEvB,WC2Ga,CD3Gb,4BC2Ga,CD1Gb,UC0Ga,CDzGb,WAAY,CACZ,YAAa,CACb,OAAQ,CACR,iBAAkB,CAClB,SAAU,CACV,cCkFkB,CDjFlB,eC6FkB,CD5FlB,sBAAuB,CAEvB,8BAAgC,CAChC,eAAgB,CAChB,YAAa,CApBjB,uGAuBM,UAAW,CACX,SAAU,CACV,kBAAmB,CAzBzB,wFA6BM,UCqFW,CDpFX,SAAU,CA9BhB,mFA8BM,SAAU,CA9BhB,oFA8BM,SAAU,CA9BhB,0EA6BM,UCqFW,CDpFX,SAAU,CA9BhB,mFAkCM,UCgFW,CD/EX,cC6DgB,CDhGtB,oFAuCM,UC2EW,CDlHjB,kEA4CI,iBAAkB,CAClB,OAAQ,CACR,OAAU,CE9Cd,6BAEE,iBAAkB,CAFpB,iEAKI,iBAAkB,CAClB,QAAS,CACT,UAAW,CACX,aAAgB,CAChB,iBAAkB,CAClB,wBDoJiB,CCnJjB,UDuGa,CCtGb,cDqFoB,CCjGxB,+CAgBI,WAAY,CChBhB,UACI,YAAa,CACb,kBAAmB,CACnB,sBAAuB,CACvB,cAAe,CACf,MAAO,CACP,QAAS,CACT,UAAW,CACX,wBFwHiB,CEvHjB,aF2GgB,CE1GhB,YAAc,CAVlB,YAaQ,eAAgB,CAChB,eAAiB,CCdzB,6BACI,iBAAkB,CADtB,gEAGQ,aAAe,CACf,cH2FQ,CG1FR,eHuGc,CGtGd,wBHgHY,CGtHpB,0GAQY,eAAgB,CCR5B,wBAMY,aAAc,CACd,+BAAiC,CAP7C,iCAaY,mBAAoB,CAbhC,6CAegB,UJ0GC,CIzHjB,oDAiBoB,aJ6IC,CI5ID,cJ8EE,CIhGtB,iCAyBQ,SAAU,CACV,8BAAgC,CA1BxC,6CA8BQ,SAAU,CA9BlB,+CAkCQ,SAAU,CClClB,0BAGY,aAAc,CACd,+BAAiC,CAJ7C,mCAUY,mBAAoB,CAVhC,+CAYgB,UL6GC,CK5GD,YAAa,CAb7B,sDAeoB,aL+IC,CK9ID,cLgFE,CKhGtB,4DAmBoB,aAAc,CACd,eLwFE,CKvFF,cL2EE,CKhGtB,0FAuBwB,qCLuDiB,CK9EzC,gFA2BwB,QAAS,CA3BjC,0GA6B4B,SAAU,CA7BtC,wGAgC4B,SAAU,CAhCtC,qFAqCoB,cL0DJ,CKzDI,eLsEE,CKrEF,iBAAkB,CAvCtC,mCA8CQ,SAAU,CACV,8BAAgC,CA/CxC,+CAmDQ,SAAU,CAnDlB,iDAuDQ,SAAU,CCvDlB,aACI,gBNgGoB,CM/FpB,mBAAqB,CACrB,YAAa,CACb,oBAAqB,CAJzB,iCAMQ,cN0Fc,CMzFd,eNqGc,CMpGd,mBAAqB,CAR7B,gDAYQ,UN6GS,CM5GT,eN+Fc,CM9Fd,cNmFgB,CMlFhB,4BAA6B,CAfrC,oCAoBQ,aAAc,CACd,eNuFc,CMtFd,cN2EgB,CM1EhB,gBAAiB,CCvBzB,0CACI,iBAAkB,CAClB,wBPoHgB,COtHpB,2FAKQ,mBAAqB,CAL7B,0FASQ,cPuFc,COhGtB,0DAaQ,aAAc,CACd,aAAc,CACd,kBAAmB,CACnB,WAAY,CACZ,wBPoLqC,COnLrC,cAAe,CACf,cP8EgB,CO7EhB,ePwFc,CO5GtB,gEAwBQ,UAAY,CACf,yCAzBL,0CA4BQ,WAAY,CA5BpB,2DA8BY,gBAAiB,CACpB,CC/BT,2BACI,kBAAmB,CADvB,6CAIQ,eR8GS,CQ7GT,cAAe,CACf,qBAAuB,CACvB,iBAAkB,CAClB,WAAY,CARpB,4EAWY,UR8GK,CQzHjB,qEAgBQ,eRkGS,CQjGT,aRwIe,CQvIf,WAAY,CACZ,eRyFc,CQ5GtB,6GAsBY,oBAAqB,CACrB,iBAAkB,CAvB9B,sEA4BQ,aAAc,CACd,aAAc,CACd,kBAAmB,CACnB,gBAAiB,CACjB,wBRgGa,CQ/Fb,aRmFY,CQlFZ,cAAe,CACf,cR8DgB,CQ7DhB,eRwEc,CQ5GtB,gCAwCQ,4BAA6B,CAChC,yCAzCL,6CA6CY,YAAa,CACb,SAAU,CACV,gBAAiB,CACjB,iBAAkB,CAErB,CClDT,oEAGQ,2BAA4B,CAC5B,kBAAmB,CAJ3B,kDAOQ,YAAa,CAPrB,sEASY,iBAAkB,CAT9B,yFAYgB,eTgGM,CS/FN,cTiFI,CS9FpB,yDAiBY,cAAe,CACf,mBAAoB,CAlBhC,2EAoBgB,YAAa,CApB7B,+DAwBgB,UTiGC,CShGD,WAAY,CAzB5B,kFA6BgB,+BTmGK,CSlGL,aTkGK,CShIrB,mXAmCY,oBAAqB,CAnCjC,oDAwCQ,YAAa,CAxCrB,wEA0CY,UT+EK,CS9EL,YAAa,CA3CzB,qFA8CgB,eT8DM,CS7DN,cTiDM,CShGtB,mHAiDoB,qCT6BqB,CS9EzC,yGAqDoB,QAAS,CArD7B,mIAuDwB,SAAU,CAvDlC,iIA0DwB,SAAU,CA1DlC,8GA+DgB,cTgCA,CS/BA,eT4CM,CS3CN,iBAAkB,CAClB,cAAe,CAlE/B,0EAsEY,iBAAkB,CAtE9B,iFAwEgB,kBAAmB,CACnB,gBAAiB","file":"4.9b9a457c.chunk.css","sourcesContent":["@import './../../../styles//variables';\n\n.c-Plp__c-Header__c-Search {\n margin-left: auto;\n position: relative;\n\n .c-Plp__c-Header__c-Search__input {\n background: transparent;\n border: none;\n border-bottom: 1px solid $neutral-00;\n color: $neutral-00;\n float: right;\n min-height: 0;\n width: 0;\n visibility: hidden;\n opacity: 0;\n font-size: $small-font-size;\n font-weight: $bold-font-weight;\n padding: 7px 10px 8px 0;\n -webkit-transition: all 0.33s ease-in-out;\n transition: all 0.3s ease-in-out;\n box-shadow: none;\n outline: none;\n\n &.c-Plp__c-Header__c-Search__input--visible {\n width: 100%;\n opacity: 1;\n visibility: visible;\n }\n \n &::placeholder {\n color: $neutral-00;\n opacity: 1;\n }\n \n &:-ms-input-placeholder {\n color: $neutral-00;\n font-size: $small-font-size;\n }\n \n &::-ms-input-placeholder {\n color: $neutral-00;\n }\n }\n\n .c-Plp__c-Header__c-Search__searchIcon {\n position: absolute;\n top: 6px;\n right: 0px;\n }\n}\n","// Project-Wide Variables\n// ===\n//\n// Edit these as needed. Some guidelines:\n//\n// - Names should be lowercase and dash-separated;\n// - Qualifiers should be added to the beginning of related variables: use\n// `$small-font-size`, not `$font-size-small`;\n// - Numeric scales should use increments of 10; these numbers are arbitrary and\n// should not map to actual values. If really necessary, additional values can\n// be added in between, e.g. $neutral-15 between 10 and 20.\n//\n//\n// Table of Contents\n// ---\n//\n// [AAA] Basic Layout\n// [BBB] Responsive Layout\n// [CCC] Typography\n// [DDD] Color Palette\n// [EEE] Appearance\n// [FFF] Z-Index\n// [GGG] Shorthands\n\n\n// [AAA] Basic Layout\n// ---\n\n// Basic unit for spacing and alignment; 6 to 12px recommended. Apply in whole\n// or half multiples.\n$sub-unit: 4px;\n$unit: 8px;\n\n// Standard tap-target size\n$tap-size: 44px;\n\n// Container max-width.\n$max-width: 1280px;\n\n// Content Height Calculations\n$header-height: 64px;\n$footer-height: 173px;\n$content-height: calc(100vh - #{$header-height} - #{$footer-height});\n\n// [BBB] Responsive Layout\n// ---\n//\n// Media query breakpoints and grid setup. Please see Mobify's Responsive Best\n// Practices doc here: https://bit.ly/2tmRnEi, and our Responsive Grid\n// documentation here: http://docs.mobify.com/latest/guides/responsive-grid/\n//\n// Note: $small-breakpoint isn't needed, since it is 0px\n\n$medium-breakpoint: 600px;\n$large-breakpoint: 960px;\n$xlarge-breakpoint: $max-width;\n\n$susy: (\n // Add color to show the columns and gutters\n 'svg-grid-colors': hsl(0, 0%, 95%),\n 'columns': susy-repeat(4),\n 'gutters': 12px\n);\n\n$medium-layout: (\n 'svg-grid-colors': hsl(0, 0%, 95%),\n 'columns': susy-repeat(12),\n 'gutters': 12px\n);\n\n$large-layout: (\n 'svg-grid-colors': hsl(0, 0%, 95%),\n 'columns': susy-repeat(12),\n 'gutters': 24px\n);\n\n\n// [CCC] Typography\n// ---\n// $font-family: 'San Francisco', 'Roboto', 'Fira Sans', 'Segoe UI', sans-serif;\n$font-family: Verdana, Geneva, sans-serif; \n$header-font-family: 'Avenir Next Condensed', 'Roboto Condensed', 'Helvetica Neue', 'Roboto', sans-serif;\n$loaded-header-font-family: 'Roboto', $header-font-family;\n\n// Line height\n$huge-line-height: 32px;\n$bigger-line-height: 28px;\n$big-line-height: 24px;\n$line-height: 20px;\n$small-line-height: 16px;\n$smaller-line-height: 12px;\n$tiny-line-height: 8px;\n\n// Font sizes\n$huge-font-size: 28px;\n$bigger-font-size: 24px;\n$big-font-size: 20px;\n$font-size: 16px;\n$small-font-size: 14px;\n$smaller-font-size: 12px;\n$tiny-font-size: 10px;\n$smallest-font-size: 8px;\n\n// Font weight\n$thin-font-weight: 100;\n$extra-light-font-weight: 200;\n$light-font-weight: 300;\n$regular-font-weight: 400;\n$medium-font-weight: 500;\n$semi-bold-font-weight: 600;\n$bold-font-weight: 700;\n\n// [DDD] Color Palette\n// ---\n\n// Neutrals\n$neutral-00: #fff;\n$neutral-10: #f7f7f7;\n$neutral-12: #f1f3f6;\n$neutral-15: #eee;\n$neutral-17: #e1e1e1;\n$neutral-20: #d5d5d5;\n$neutral-30: #bfbfbf;\n$neutral-40: #999;\n$neutral-50: #696969;\n$neutral-60: #333;\n$neutral-70: #000;\n\n// Brand colors\n// $brand-color: #017e9b; // blue\n$brand-color: #4471ea; // blue\n// $secondary-brand-color: #005569;\n$secondary-brand-color: #fafafa;\n$tertiary-brand-color: #83bdcb;\n$quaternary-brand-color: #bfdfe6;\n\n// UI Kit colors\n$ui-brand-color: #005c83; // dark blue\n\n// Accent colors\n$accent-color: #ff852c; // orange\n$light-accent-color: lighten($accent-color, 15%);\n$dark-accent-color: darken($accent-color, 15%);\n\n// Primary Action\n$primary-action-color: #dc0a3c;\n$light-primary-action-color: lighten($primary-action-color, 15%);\n$dark-primary-action-color: darken($primary-action-color, 15%);\n\n// Secondary Action\n$secondary-action-color: #ff852c;\n$light-secondary-action-color: lighten($secondary-action-color, 15%);\n$dark-secondary-action-color: darken($secondary-action-color, 15%);\n\n// Success colors\n$success-color: #037b30;\n$light-success-color: lighten($success-color, 15%);\n$dark-success-color: darken($success-color, 15%);\n\n// Error colors\n$error-color: #c70936;\n$light-error-color: lighten($error-color, 15%);\n$feedback-error-color: #f8e7eb;\n$dark-error-color: darken($error-color, 15%);\n\n// Sale color\n$sale-color: $error-color;\n$prominent-color: $error-color;\n\n// Social colors\n$facebook-color: #3a5a93;\n$twitter-color: #55aace;\n$instagram-color: #405de6;\n$pinterest-color: #bd081c;\n$youtube-color: #e52d27;\n$google-plus-color: #dd4b39;\n$yelp-color: #af0606;\n\n\n// [EEE] Appearance\n// ---\n\n$font-color: $neutral-60;\n$font-color-light: $neutral-12;\n\n$link-color: $ui-brand-color;\n$active-link-color: $dark-accent-color;\n\n$focus-color: $brand-color;\n\n$border-color: $neutral-20;\n$border-radius: 4px;\n\n$input-background-color: $neutral-00;\n$input-border-color: $border-color;\n$focused-input-border-color: $secondary-brand-color;\n$disabled-input-color: $neutral-40;\n$disabled-input-background-color: $neutral-15;\n$disabled-button-background-color: $neutral-15;\n$add-to-cart-button-background-color: #f7ae3a;\n$horizontal-input-padding: $unit;\n$vertical-input-padding: $unit;\n\n$background-color: $neutral-12;\n$overlay-color: rgba($neutral-00, 0.85);\n\n\n// [FFF] Z-Index\n// ---\n\n// Organizes z-index usage by name. Values can be incremented/decremented\n// slightly as necessary. eg. $z1-layer + 1;\n\n$z1-depth: 1; // background\n$z2-depth: 10; // icon or other ui element\n$z3-depth: 100; // modal shade or similar\n$z4-depth: 1000; // modal dialog or similar\n\n\n// [GGG] Shorthands\n// ---\n\n$border: 1px solid $border-color;\n$light-border: 1px solid $neutral-15;\n$input-padding: $vertical-input-padding $horizontal-input-padding;\n\n$box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.3);\n$large-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.3);\n$inset-box-shadow: inset 0 2px 2px -2px rgba(0, 0, 0, 0.3), inset 0 -2px 2px -2px rgba(0, 0, 0, 0.3);\n$input-box-shadow: inset 0 0 5px 0 rgba(0, 0, 0, 0.3);\n$themeColor-Light: #f3e2c7;\n$themeColor-Dark:#252525;\n$theme-font: verdana, sans-serif;\n$theme-supplementer: #f39c12;\n$font-size-desktop-h5: 1.25em;\n$font-size-mobile-h5: 0.8em;\n$font-size-desktop-p: 1.1em;\n$font-size-mobile-p: 0.7em;\n","@import './../../../styles/variables';\n\n.c-Plp__c-Header__c-CartIcon {\n // margin-left: 1rem;\n position: relative;\n\n .c-Plp__c-Header__c-CartIcon__badge {\n position: absolute;\n top: -7px;\n right: -9px;\n padding: 0px 5px;\n border-radius: 50%;\n background-color: $prominent-color;\n color: $neutral-00;\n font-size: $smaller-font-size;\n }\n\n .fa-shopping-cart {\n float: right;\n }\n}\n","@import './../../../styles/variables';\n\n.c-Footer {\n display: flex;\n align-items: center;\n justify-content: center;\n position: fixed;\n left: 0;\n bottom: 0;\n width: 100%;\n background-color: $brand-color;\n color: $font-color-light;\n padding: 0.7em;\n\n p {\n margin-bottom: 0;\n font-weight: bold;\n }\n}\n","@import './../../../styles/variables';\n\n.c-Plp__c-SortAndFilterPanel {\n text-align: center;\n .c-Plp__c-SortAndFilterPanel__tool {\n padding: 0.8rem;\n font-size: $font-size;\n font-weight: $bold-font-weight;\n border: 1px solid $neutral-17;\n .c-Plp__c-SortAndFilterPanel__toolContent {\n margin-bottom: 0;\n }\n }\n\n // .ripple {\n // background-color: $shocking-pink;\n // width: 1rem;\n // height: 1rem;\n // position: absolute;\n // border-radius: 50%;\n // transform: translateX(-100%) translateY(-100%);\n // mix-blend-mode: screen;\n // animation: ripple 1000ms ease-out forwards;\n // }\n \n // @keyframes ripple {\n // 0% { transform: translate(-100%, -100%); }\n // 80% { transform: translate(-100%, -100%) scale(50); }\n // 100% { transform: translate(-100%, -100%) scale(50); opacity: 0; }\n // }\n}\n","@import './../../../styles/variables';\n\n.c-SortModal {\n // transform: translate(0,0);\n // transition: transform .3s ease-out,-webkit-transform .3s ease-out;\n\n &.modal {\n &.show {\n display: block;\n background-color: rgba(0,0,0,0.5);\n }\n // &.fade .modal-dialog {\n // transition: transform .3s ease-out;\n // }\n .modal-dialog {\n pointer-events: auto;\n .modal-body {\n color: $neutral-40;\n .error {\n color: $error-color;\n font-size: $small-font-size;\n }\n }\n }\n }\n\n &.ReactModal__Overlay {\n opacity: 0;\n transition: all 0.3s ease-in-out;\n }\n \n &.ReactModal__Overlay--after-open {\n opacity: 1;\n }\n \n &.ReactModal__Overlay--before-close {\n opacity: 0;\n }\n}\n","@import './../../../styles/variables';\n\n.c-FilterModal {\n &.modal {\n &.show {\n display: block;\n background-color: rgba(0,0,0,0.5);\n }\n // &.fade .modal-dialog {\n // transition: transform .3s ease-out;\n // }\n .modal-dialog {\n pointer-events: auto;\n .modal-body {\n color: $neutral-40;\n padding: 1rem;\n .error {\n color: $error-color;\n font-size: $small-font-size;\n }\n .input-range {\n margin: 25px 0;\n font-weight: $bold-font-weight;\n font-size: $small-font-size;\n .input-range__label-container {\n font-family: $font-family;\n }\n \n .input-range__label {\n top: 20px;\n &.input-range__label--value {\n top: -40px;\n }\n &.input-range__label--max {\n right: 2em;\n }\n }\n }\n .c-FilterModal__input-range__subtitle {\n font-size: $font-size;\n font-weight: $bold-font-weight;\n text-align: center;\n }\n }\n }\n }\n\n &.ReactModal__Overlay {\n opacity: 0;\n transition: all 0.3s ease-in-out;\n }\n \n &.ReactModal__Overlay--after-open {\n opacity: 1;\n }\n \n &.ReactModal__Overlay--before-close {\n opacity: 0;\n }\n}\n","@import './../../../styles/variables';\n\n.c-ItemPrice {\n line-height: $smaller-font-size;\n margin-bottom: 0.9rem;\n display: flex;\n align-items: baseline;\n .c-ItemPrice__price {\n font-size: $small-font-size;\n font-weight: $bold-font-weight;\n padding-right: 0.5rem;\n }\n \n .c-ItemPrice__price--strikethrough {\n color: $neutral-40;\n font-weight: $bold-font-weight;\n font-size: $smaller-font-size;\n text-decoration: line-through;\n // margin-left: $unit * 0.8; \n }\n \n .c-ItemPrice__discount {\n color: #4aa219;\n font-weight: $bold-font-weight;\n font-size: $smaller-font-size;\n margin-left: auto;\n }\n}\n","@import './../../../styles/variables';\n\n.c-Plp__c-ProductContainer__c-ProductTile {\n padding: 10px 15px;\n border: 1px solid $neutral-17;\n\n .c-Plp__c-ProductContainer__c-ProductTile__image {\n margin-bottom: 0.7rem;\n }\n\n .c-Plp__c-ProductContainer__c-ProductTile__name {\n font-size: $small-font-size;\n }\n\n .btn__addToCart {\n display: block;\n margin: 0 auto;\n border-radius: 20px;\n padding: 7px;\n background-color: $add-to-cart-button-background-color;\n cursor: pointer;\n font-size: $smaller-font-size;\n font-weight: $bold-font-weight;\n }\n \n .btn__addToCart:hover {\n opacity: 0.7;\n }\n\n @media only screen and (min-width: 768px) {\n border: none;\n &:not(:last-child) {\n margin-right: 2em;\n }\n }\n}\n","@import './../../../styles/variables';\n\n.c-Plp__c-ProductContainer {\n margin-bottom: 46px;\n\n .c-Cart__emptyPlp {\n background: $neutral-00;\n margin-top: 25%;\n border: 1px solid black;\n text-align: center;\n padding: 1em;\n\n .c-Cart__emptyPlp__information {\n color: $neutral-40;\n }\n }\n\n .c-Plp__c-ProductContainer__infoContainer {\n background: $neutral-00;\n color: $success-color;\n padding: 1em;\n font-weight: $bold-font-weight;\n\n .c-Plp__c-ProductContainer__information {\n display: inline-block;\n margin-bottom: 8px;\n }\n }\n\n .c-Plp__c-ProductContainer__btnClearSearch {\n display: block;\n margin: 0 auto;\n border-radius: 20px;\n padding: 7px 20px;\n background-color: $brand-color;\n color: $neutral-12; \n cursor: pointer;\n font-size: $smaller-font-size;\n font-weight: $bold-font-weight;\n }\n\n .row {\n justify-content: space-evenly;\n }\n\n @media only screen and (min-width: 768px) {\n .c-Cart__emptyPlp {\n margin-top: 0;\n width: 75%;\n margin-left: auto;\n margin-right: auto;\n \n }\n }\n}\n","@import './../../../styles/variables';\n\n.c-ProductContainerWithTools {\n\n .c-ProductContainerWithTools__asideCol {\n border-right: 2px solid #ddd;\n padding-right: 27px;\n }\n .c-SortTool__content {\n padding: 20px;\n .c-SortTool__header {\n margin-right: 3rem;\n\n .c-SortTool__title {\n font-weight: $bold-font-weight;\n font-size: $big-font-size;\n }\n }\n .radio {\n display: inline;\n margin-right: 2.5rem;\n input[type=radio] {\n display: none;\n }\n\n label {\n color: $neutral-40;\n padding: 5px;\n }\n\n .c-SortTool__body__label {\n border-bottom: 1px solid $brand-color;\n color: $brand-color;\n }\n }\n\n .c-SortTool__header, .c-SortTool__title, .c-SortTool__body, .c-SortTool__body>.container, .c-SortTool__body>.container.radio {\n display: inline-block;\n }\n }\n\n .c-FilterTool__content {\n padding: 1rem;\n .c-FilterTool__body {\n color: $neutral-40;\n margin: 3em 0;\n .input-range {\n // margin: 25px 0;\n font-weight: $bold-font-weight;\n font-size: $small-font-size;\n .input-range__label-container {\n font-family: $font-family;\n }\n\n .input-range__label {\n top: 20px;\n &.input-range__label--value {\n top: -40px;\n }\n &.input-range__label--max {\n right: 2em;\n }\n }\n }\n .c-FilterModal__input-range__subtitle {\n font-size: $font-size;\n font-weight: $bold-font-weight;\n text-align: center;\n margin-top: 1em;\n }\n }\n .c-FilterTool__footer {\n text-align: center;\n button {\n border-radius: 22px;\n padding: 9px 29px;\n }\n }\n }\n}\n"]} \ No newline at end of file diff --git a/static/js/4.287ebadd.chunk.js b/static/js/4.287ebadd.chunk.js new file mode 100644 index 0000000..4fb7af0 --- /dev/null +++ b/static/js/4.287ebadd.chunk.js @@ -0,0 +1,2 @@ +(this.webpackJsonpadobeassignment=this.webpackJsonpadobeassignment||[]).push([[4],{104:function(e,t,a){},105:function(e,t,a){},107:function(e,t,a){},108:function(e,t,a){},109:function(e,t,a){},119:function(e,t,a){"use strict";a.r(t);var r=a(0),n=a.n(r),o=a(5),c=a.n(o),l=a(22),i=a(10),s=a(72),u=a(73),d=(a(85),a(58)),m=a(57),p=a(25),f=a.n(p);a(86);function b(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"===typeof Symbol||!(Symbol.iterator in Object(e)))return;var a=[],r=!0,n=!1,o=void 0;try{for(var c,l=e[Symbol.iterator]();!(r=(c=l.next()).done)&&(a.push(c.value),!t||a.length!==t);r=!0);}catch(i){n=!0,o=i}finally{try{r||null==l.return||l.return()}finally{if(n)throw o}}return a}(e,t)||function(e,t){if(!e)return;if("string"===typeof e)return y(e,t);var a=Object.prototype.toString.call(e).slice(8,-1);"Object"===a&&e.constructor&&(a=e.constructor.name);if("Map"===a||"Set"===a)return Array.from(a);if("Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a))return y(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=new Array(t);ae.length)&&(t=e.length);for(var a=0,r=new Array(t);ae.length)&&(t=e.length);for(var a=0,r=new Array(t);ae.length)&&(t=e.length);for(var a=0,r=new Array(t);at.min&&e.discountedPrice0&&0===u.length?!l&&i(!0):l&&i(!1),s=u}var m=s&&s.map((function(e,t){return n.a.createElement(J,{product:e,key:t})}));e.dispatchProducts(s);return n.a.createElement("main",{className:"c-Plp__c-ProductContainer"},l?n.a.createElement("div",{className:"c-Cart__emptyPlp"},n.a.createElement("h3",null,"No Products match the search criteria!"),n.a.createElement("p",{className:"c-Cart__emptyPlp__information"},"Please modify Search or filter criteria, and try again.")):e.products&&0!==e.products.length?n.a.createElement("div",{className:"container"},o&&""!==o&&n.a.createElement("div",{className:"row"},n.a.createElement("div",{className:"col-12 c-Plp__c-ProductContainer__infoContainer"},n.a.createElement("span",{className:"c-Plp__c-ProductContainer__information"},'Showing Results for the search - "',o,'"'),n.a.createElement("p",null,n.a.createElement("button",{type:"button",className:"c-Plp__c-ProductContainer__btnClearSearch",onClick:function(){e.dispatchSearchString("")}},"Clear Search")))),n.a.createElement("div",{className:"row c-Plp__c-ProductContainer__row"},m)):n.a.createElement(W.a,null))};X.defaultProps={products:[]},X.propTypes={products:c.a.array,sortBy:c.a.string};var Z=Object(H.createPropsSelector)({filterRange:R.a,searchString:R.c,sortBy:R.d}),ee={dispatchProducts:i.h,dispatchSearchString:i.i},te=Object(l.b)(Z,ee)(X),ae=(a(109),function(e){var t=e.isMobile,a=e.products;return n.a.createElement("section",{className:"c-ProductContainerWithTools"},t?n.a.createElement(n.a.Fragment,null,n.a.createElement(F,null),n.a.createElement(te,{products:a})):n.a.createElement(n.a.Fragment,null,n.a.createElement("div",{className:"container"},n.a.createElement("div",{className:"row"},n.a.createElement("div",{className:"col-2 c-ProductContainerWithTools__asideCol"},n.a.createElement("aside",{className:"c-ProductContainerWithTools__c-FilterAside"},n.a.createElement(T,{headerClass:"c-FilterTool__header",titleClass:"c-FilterTool__title",bodyClass:"c-FilterTool__body",footerClass:"c-FilterTool__footer",title:"Filters"}))),n.a.createElement("div",{className:"col-10"},n.a.createElement(g,{headerClass:"c-SortTool__header",titleClass:"c-SortTool__title",bodyClass:"c-SortTool__body",labelClass:"c-SortTool__body__label",title:"Sort By"}),n.a.createElement(te,{products:a}))))))});ae.propTypes={products:c.a.array};var re=ae;function ne(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"===typeof Symbol||!(Symbol.iterator in Object(e)))return;var a=[],r=!0,n=!1,o=void 0;try{for(var c,l=e[Symbol.iterator]();!(r=(c=l.next()).done)&&(a.push(c.value),!t||a.length!==t);r=!0);}catch(i){n=!0,o=i}finally{try{r||null==l.return||l.return()}finally{if(n)throw o}}return a}(e,t)||function(e,t){if(!e)return;if("string"===typeof e)return oe(e,t);var a=Object.prototype.toString.call(e).slice(8,-1);"Object"===a&&e.constructor&&(a=e.constructor.name);if("Map"===a||"Set"===a)return Array.from(a);if("Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a))return oe(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function oe(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=new Array(t);ae.length)&&(t=e.length);for(var a=0,r=new Array(t);at&&!e.classList.contains("scroll-down")?(e.classList.remove("scroll-up"),e.classList.add("scroll-down")):a {\n\n const [sortType, setSortType] = useState('')\n const [selectionError, setSelectionError] = useState('')\n\n const submitSelection = (e) => {\n if (!sortType) {\n setSelectionError(true)\n return\n }\n props.dispatchSortSelection(sortType)\n props.isModal && props.closeModal(e)\n setSelectionError(false)\n }\n\n return (\n
\n
\n
{props.title}
\n {props.isModal && }\n
\n
\n {selectionError && Please Select One of the options below.}\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n {props.isModal &&
\n \n \n
}\n
\n );\n};\n\nSortTool.propTypes = {\n dispatchSortSelection: PropTypes.func\n};\n\nconst mapDispatchToProps = ({\n dispatchSortSelection\n})\n\nexport default connect(\n null,\n mapDispatchToProps\n)(SortTool);\n","import SortTool from './SortTool.jsx';\n\nexport default SortTool;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport Modal from 'react-modal';\nimport SortTool from '../SortTool';\nimport './SortModal.component.scss';\n\nconst customStyles = {\n content: {\n top: '20%',\n width: '93%',\n marginLeft: 'auto',\n marginRight: 'auto',\n background: 'rgb(255, 255, 255)',\n overflow: 'auto',\n borderRadius: '4px'\n }\n};\n\nconst SortModal = ({closeModal, modalIsOpen}) => {\n\n\n function afterOpenModal() {\n // subtitle.style.color = '#000';\n // subtitle.style.fontWeight = '700';\n }\n\n return (\n \n \n \n );\n};\n\nSortModal.defaultProps = {\n\n};\n\nSortModal.propTypes = {\n closeModal: PropTypes.func,\n dispatchSortSelection: PropTypes.func,\n modalIsOpen: PropTypes.bool\n};\n\nexport default SortModal;","import SortModal from './SortModal.jsx';\n\nexport default SortModal;","import React, {useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport {dispatchFilterRange} from './../../../pages/PLP/actions';\nimport InputRange from 'react-input-range';\nimport './FilterTool.component.scss';\n\nconst FilterTool = props => {\n // var subtitle;\n const [filterRange, setFilterRange] = useState({min: 0, max: 10000})\n\n const submitSelection = (e) => {\n props.dispatchFilterRange(filterRange)\n props.isModal && props.closeModal(e)\n }\n\n return (\n
\n
\n
{props.title}
\n {props.isModal && }\n
\n
\n `₹${value}`}\n value={filterRange}\n onChange={value => setFilterRange(value)} />\n {/* onChangeComplete={(e) =>submitSelection(e)} /> */}\n

Price

\n
\n
\n {props.isModal && }\n \n
\n
\n );\n};\n\nFilterTool.propTypes = {\n dispatchFilterRange: PropTypes.func\n};\n\nconst mapDispatchToProps = ({\n dispatchFilterRange\n})\n\nexport default connect(\n null,\n mapDispatchToProps\n)(FilterTool);","import FilterTool from './FilterTool.jsx';\n\nexport default FilterTool;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Modal from 'react-modal';\nimport FilterTool from './../FilterTool';\nimport './FilterModal.component.scss';\nimport 'react-input-range/lib/css/index.css';\n\nconst customStyles = {\n content: {\n top: '20%',\n width: '93%',\n marginLeft: 'auto',\n marginRight: 'auto',\n background: 'rgb(255, 255, 255)',\n overflow: 'auto',\n borderRadius: '4px'\n }\n};\n\nconst FilterModal = ({closeModal, modalIsOpen}) => {\n\n function afterOpenModal() {\n // subtitle.style.color = '#000';\n // subtitle.style.fontWeight = '700';\n }\n\n\n return (\n \n \n \n );\n};\n\nFilterModal.defaultProps = {\n\n};\n\nFilterModal.propTypes = {\n closeModal: PropTypes.func,\n dispatchFilterSelection: PropTypes.func,\n modalIsOpen: PropTypes.bool\n};\n\nexport default FilterModal;\n","import FilterModal from './FilterModal.jsx';\n\nexport default FilterModal;","import React, {useState} from 'react';\nimport './SortAndFilterPanel.component.scss'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faSort } from '@fortawesome/free-solid-svg-icons'\nimport { faFilter } from '@fortawesome/free-solid-svg-icons'\nimport SortModal from '../SortModal';\nimport FilterModal from '../FilterModal';\n\nconst SortAndFilterPanel = props => {\n\n const [sortModalIsOpen,setSortIsOpen] = useState(false);\n const [filterModalIsOpen,setFilterIsOpen] = useState(false);\n \n function closeModal(type, e){\n e.stopPropagation();\n type === \"sort\" ? setSortIsOpen(false) : setFilterIsOpen(false);\n }\n\n return (\n
\n
\n
\n
setSortIsOpen(true)}>\n

Sort

\n closeModal(\"sort\", e)} modalIsOpen={sortModalIsOpen} />\n
\n
setFilterIsOpen(true)}>\n

Filter

\n closeModal(\"filter\", e)} modalIsOpen={filterModalIsOpen}/>\n
\n
\n
\n
\n );\n};\n\nSortAndFilterPanel.defaultProps = {\n\n};\n\nSortAndFilterPanel.propTypes = {\n\n};\n\nexport default SortAndFilterPanel;","import SortAndFilterPanel from './SortAndFilterPanel.jsx';\n\nexport default SortAndFilterPanel;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport {createPropsSelector} from 'reselect-immutable-helpers';\nimport {CSSTransition} from 'react-transition-group';\n\nimport {updateCart} from './../../../pages/Cart/actions'\nimport {getCartTotalCount, getCartItems} from './../../../pages/Cart/selectors'\n\nimport Button from './../../atoms/Button'\nimport ItemPrice from '../ItemPrice/ItemPrice';\n\nimport './ProductTile.component.scss';\n\nconst ProductTile = props => {\n\n const product = props.product\n const addToCartButtonClass = \"btn btn__addToCart\"\n\n const updateCart = (productId) => {\n let cartTotalCount = props.cartTotalCount\n const cartItems = props.cartItems\n let count = cartItems && cartItems[productId] ? cartItems[productId] : 0\n cartItems[productId] = ++count\n props.updateCart(++cartTotalCount, cartItems)\n }\n\n return (\n // \n \n
\n {product.name}\n {product.name &&
{product.name}
}\n
\n {/*
\n {product.discountedPrice && ₹{product.discountedPrice}}\n {\n hasDiscount &&\n (\n \n {product.price}\n {product.discount}% off\n \n )\n }\n
*/}\n \n updateCart(product.id)} />\n \n // \n );\n};\n\nProductTile.propTypes = {\n updateCart: PropTypes.func,\n cartTotalCount: PropTypes.number,\n cartItems: PropTypes.object\n};\n\nconst mapStateToProps = createPropsSelector({\n cartTotalCount: getCartTotalCount,\n cartItems: getCartItems\n})\n\nconst mapDispatchToProps = ({\n updateCart\n})\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(ProductTile);","import ProductTile from './ProductTile.jsx';\n\nexport default ProductTile;","import React, {useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport {createPropsSelector} from 'reselect-immutable-helpers';\nimport {dispatchProducts, dispatchSearchString} from './../../../pages/PLP/actions'\nimport {getFilterRange, getSortSelection, getSearchString} from './../../../pages/PLP/selectors'\nimport ProductTile from './../ProductTile'\nimport PageLoader from '../PageLoader/PageLoader';\nimport './ProductContainer.component.scss'\n\nconst ProductContainer = props => {\n\n const fr = props.filterRange\n const sb = props.sortBy\n const ss = props.searchString\n\n const [filterNoMatch, setFilterNoMatch] = useState(false)\n\n const getEmptyPlpBlock = () => {\n return (\n
\n

No Products match the search criteria!

\n

Please modify Search or filter criteria, and try again.

\n
\n )\n }\n \n let productsWithDiscountedPrice = props.products \n && props.products.length !== 0\n && props.products.map(product => {\n const price = product.price.display\n const discount = product.discount && price * (product.discount/100)\n product.discountAmount = Math.ceil(discount)\n product.discountedPrice = Math.ceil(price - product.discountAmount)\n return product\n })\n if (productsWithDiscountedPrice) {\n if (sb) {\n switch(sb) {\n case \"priceHtoL\":\n productsWithDiscountedPrice.sort((prod1, prod2) => prod2.discountedPrice - prod1.discountedPrice);\n break;\n case \"priceLtoH\":\n productsWithDiscountedPrice.sort((prod1, prod2) => prod1.discountedPrice - prod2.discountedPrice);\n break;\n case \"discount\":\n productsWithDiscountedPrice.sort((prod1, prod2) => prod2.discount - prod1.discount);\n break;\n default:\n break;\n }\n }\n \n let productsWithDiscountedPriceFiltered = [...productsWithDiscountedPrice]\n const noOfProducts = productsWithDiscountedPrice.length\n if (fr) {\n productsWithDiscountedPriceFiltered = productsWithDiscountedPrice.filter(prod => prod.discountedPrice > fr.min && prod.discountedPrice < fr.max);\n productsWithDiscountedPrice = productsWithDiscountedPriceFiltered\n }\n\n if (ss && ss !== \"\") {\n productsWithDiscountedPriceFiltered = productsWithDiscountedPrice.filter(prod => {\n return (prod.name.toLowerCase().includes(ss.toLowerCase())\n || prod.category.toLowerCase().includes(ss.toLowerCase())\n || prod.img_url.toLowerCase().includes(ss.toLowerCase()));\n });\n }\n if (noOfProducts > 0 && productsWithDiscountedPriceFiltered.length === 0) {\n !filterNoMatch && setFilterNoMatch(true)\n } else {\n filterNoMatch && setFilterNoMatch(false)\n }\n productsWithDiscountedPrice = productsWithDiscountedPriceFiltered\n }\n\n const productTiles = productsWithDiscountedPrice && productsWithDiscountedPrice.map((product, key) =>{\n return \n })\n props.dispatchProducts(productsWithDiscountedPrice)\n\n const clearSearch = () => {\n props.dispatchSearchString(\"\")\n }\n\n return
\n {\n filterNoMatch ? getEmptyPlpBlock() : props.products && props.products.length !== 0 ?\n
\n {\n ss && ss !== \"\" &&\n
\n
\n Showing Results for the search - \"{ss}\"\n

\n
\n
\n }\n
\n {productTiles}\n
\n
: \n }\n
\n};\n\nProductContainer.defaultProps = {\n products: []\n};\n\nProductContainer.propTypes = {\n products: PropTypes.array,\n sortBy: PropTypes.string\n};\n\nconst mapStateToProps = createPropsSelector({\n filterRange: getFilterRange,\n searchString: getSearchString,\n sortBy: getSortSelection\n})\n\nconst mapDispatchToProps = ({\n dispatchProducts, dispatchSearchString\n})\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(ProductContainer);","import ProductContainer from './ProductContainer.jsx';\n\nexport default ProductContainer;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport SortAndFilterPanel from './../SortAndFilterPanel'\nimport ProductContainer from './../ProductContainer'\nimport FilterTool from './../FilterTool'\nimport SortTool from './../SortTool'\nimport './ProductContainerWithTools.component.scss';\n\nconst ProductContainerWithTools = ({isMobile, products}) => {\n return
\n {\n isMobile ?\n \n \n \n :\n \n
\n
\n
\n \n
\n
\n \n \n
\n
\n
\n
\n }\n
\n};\n\nProductContainerWithTools.propTypes = {\n products: PropTypes.array\n};\n\nexport default ProductContainerWithTools;","import React, {useState, useEffect} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport {dispatchProducts} from './actions';\n\nimport Header from './../../components/molecules/Header'\nimport Footer from './../../components/molecules/Footer'\nimport ProductContainerWithTools from '../../components/molecules/ProductContainerWithTools/ProductContainerWithTools';\n\nconst Plp = ({dispatchProducts}) => {\n \n const [products, setProducts] = useState([])\n /* eslint no-useless-escape: 0 */\n const isMobile = (() => {\n var check = false;\n (function(a){if(/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.substr(0,4))) check = true;})(navigator.userAgent||navigator.vendor||window.opera);\n return check;\n })();\n\n useEffect(() => {\n // fetch('https://api.myjson.com/bins/qzuzi')\n // fetch('https://api.jsonbin.io/b/5e8c3aafaf7c476bc47e47a3')\n // fetch('https://api.jsonbin.io/b/5e8c3ad0ff9c906bdf1d5380')\n // fetch('https://api.jsonbin.io/b/5e8c3a45af7c476bc47e477d')\n fetch('http://localhost:3001/getProducts')\n .then(res => res.json())\n .then(products => {\n if (typeof products === 'string') {\n products = JSON.parse(products)\n }\n console.log(products)\n setProducts(products)\n dispatchProducts(products)\n })\n }, [])\n\n return (\n
\n
\n \n
\n
\n )\n};\n\nPlp.propTypes = {\n dispatchProducts: PropTypes.func\n};\n\nconst mapDispatchToProps = ({\n dispatchProducts\n})\n\nexport default connect(\n null,\n mapDispatchToProps\n)(Plp);","import Plp from './Plp.jsx';\n\nexport default Plp;","import {createSelector} from 'reselect'\nimport {createGetSelector} from 'reselect-immutable-helpers'\n\nconst getData = ({data}) => data\n\nexport const getCart = createSelector(\n getData,\n (dataState) => {\n return dataState.pages.cart\n }\n)\n\nexport const getFormValues = createGetSelector(getCart, 'formValues')\nexport const getFormErrors = createGetSelector(getCart, 'formErrors')\nexport const getCartTotalCount = createGetSelector(getCart, 'cartTotalCount')\nexport const getCartItems = createGetSelector(getCart, 'cartItems')","import {createSelector} from 'reselect'\nimport {createGetSelector} from 'reselect-immutable-helpers'\n\nconst getData = ({data}) => data\n\nexport const getPlp = createSelector(\n getData,\n (dataState) => {\n return dataState.pages.plp\n }\n)\n\nexport const getFormValues = createGetSelector(getPlp, 'formValues')\nexport const getFormErrors = createGetSelector(getPlp, 'formErrors')\nexport const getProducts = createGetSelector(getPlp, 'products')\nexport const getFilterRange = createGetSelector(getPlp, 'filterRange')\nexport const getSortSelection = createGetSelector(getPlp, 'sortBy')\nexport const getSearchString = createGetSelector(getPlp, 'searchString')","import React from 'react';\nimport PropTypes from 'prop-types';\nimport './ItemPrice.component.scss';\n\nconst ItemPrice = ({product}) => {\n\n const hasDiscount = !!product.discount && product.discount !== 0\n\n return (\n
\n {product.discountedPrice && ₹{product.discountedPrice}}\n {\n hasDiscount &&\n (\n \n {product.price.display}\n {product.discount}% off\n \n )\n }\n
\n );\n};\n\nItemPrice.defaultProps = {\n product: PropTypes.object\n};\n\nItemPrice.propTypes = {\n\n};\n\nexport default ItemPrice;","import React, {useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport {withRouter} from 'react-router-dom';\nimport {dispatchSearchString} from './../../../pages/PLP/actions'\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome'\nimport {faSearch} from '@fortawesome/free-solid-svg-icons'\nimport './Search.component.scss';\n\nconst Search = ({dispatchSearchString, inCart, history}) => {\n var timerId;\n const [searchInitiated, setSearchInitiated] = useState(false)\n\n const startSearch = (searchStringUpdated) => {\n dispatchSearchString(searchStringUpdated)\n inCart && history.push('/view/plp')\n }\n \n const debouncedStartSearch = (func, delay, searchStringUpdated) => {\n clearTimeout(timerId)\n timerId = setTimeout(() => func(searchStringUpdated), delay)\n }\n\n const onChangeHandler = (e) => {\n debouncedStartSearch(startSearch, 500, e.target.value)\n }\n\n return (\n
\n \n setSearchInitiated(!searchInitiated)} />\n
\n );\n};\n\nSearch.propTypes = {\n dispatchSearchString: PropTypes.func,\n inCart: PropTypes.bool\n};\n\nconst mapDispatchToProps = ({\n dispatchSearchString\n})\n\nexport default connect(\n null,\n mapDispatchToProps\n)(withRouter(Search));","import Search from './Search.jsx';\n\nexport default Search;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport './CartIcon.component.scss';\nimport {withRouter} from 'react-router-dom'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faShoppingCart } from '@fortawesome/free-solid-svg-icons'\nimport { createPropsSelector } from 'reselect-immutable-helpers';\n\nimport {getCartTotalCount} from './../../../pages/Cart/selectors'\n\nconst CartIcon = props => {\n\n const navigateToCart = () => {\n props.history.push('/view/cart')\n }\n\n return (\n
\n \n {props.cartTotalCount}\n
\n );\n};\n\nCartIcon.propTypes = {\n cartTotalCount: PropTypes.number\n};\n\nconst mapStateToProps = createPropsSelector({\n cartTotalCount: getCartTotalCount\n})\n\nexport default connect(mapStateToProps)(withRouter(CartIcon));","import CartIcon from './CartIcon.jsx';\n\nexport default CartIcon;","import React, {useEffect} from 'react';\nimport { Link } from 'react-router-dom';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faStar } from '@fortawesome/free-solid-svg-icons'\n\nimport Search from './../Search'\nimport CartIcon from './../CartIcon'\n\nconst Header = props => {\n\n useEffect(() => {\n const body = document.body;\n const scrollUp = \"scroll-up\";\n const scrollDown = \"scroll-down\";\n let lastScroll = 0;\n\n window.addEventListener(\"scroll\", () => {\n const currentScroll = window.pageYOffset;\n if (currentScroll === 0) {\n body.classList.remove(scrollUp);\n return;\n }\n \n if (currentScroll > lastScroll && !body.classList.contains(scrollDown)) {\n // down\n body.classList.remove(scrollUp);\n body.classList.add(scrollDown);\n } else if (currentScroll < lastScroll && body.classList.contains(scrollDown)) {\n // up\n body.classList.remove(scrollDown);\n body.classList.add(scrollUp);\n }\n lastScroll = currentScroll;\n });\n })\n \n return (\n
\n
\n
\n
\n
\n
{!props.inCart && }
\n
\n
\n
\n );\n};\n\nHeader.defaultProps = {\n\n};\n\nHeader.propTypes = {\n\n};\n\nexport default Header;","import Header from './Header.jsx';\n\nexport default Header;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './Footer.component.scss';\n\nconst Footer = props => {\n return (\n
\n

@Copyright

\n
\n );\n};\n\nFooter.defaultProps = {\n\n};\n\nFooter.propTypes = {\n\n};\n\nexport default Footer;","import Footer from './Footer.jsx';\n\nexport default Footer;","import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport * as fwIcons from '@fortawesome/free-solid-svg-icons'\nimport './Button.component.scss'\n\nconst Button = props => {\n return (\n \n {props.buttonIcon && }\n {props.buttonText}\n \n );\n};\n\nButton.defaultProps = {\n\n};\n\nButton.propTypes = {\n\n};\n\nexport default Button;","import Button from './Button.jsx';\n\nexport default Button;"],"sourceRoot":""} \ No newline at end of file diff --git a/static/js/4.7008872c.chunk.js b/static/js/4.7008872c.chunk.js deleted file mode 100644 index 21ab6de..0000000 --- a/static/js/4.7008872c.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -(this.webpackJsonpadobeassignment=this.webpackJsonpadobeassignment||[]).push([[4],{104:function(e,t,a){},105:function(e,t,a){},107:function(e,t,a){},108:function(e,t,a){},109:function(e,t,a){},118:function(e,t,a){"use strict";a.r(t);var r=a(0),n=a.n(r),o=a(5),c=a.n(o),l=a(22),i=a(10),s=a(72),u=a(73),d=(a(85),a(58)),m=a(57),p=a(25),f=a.n(p);a(86);function b(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"===typeof Symbol||!(Symbol.iterator in Object(e)))return;var a=[],r=!0,n=!1,o=void 0;try{for(var c,l=e[Symbol.iterator]();!(r=(c=l.next()).done)&&(a.push(c.value),!t||a.length!==t);r=!0);}catch(i){n=!0,o=i}finally{try{r||null==l.return||l.return()}finally{if(n)throw o}}return a}(e,t)||function(e,t){if(!e)return;if("string"===typeof e)return y(e,t);var a=Object.prototype.toString.call(e).slice(8,-1);"Object"===a&&e.constructor&&(a=e.constructor.name);if("Map"===a||"Set"===a)return Array.from(a);if("Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a))return y(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=new Array(t);ae.length)&&(t=e.length);for(var a=0,r=new Array(t);ae.length)&&(t=e.length);for(var a=0,r=new Array(t);ae.length)&&(t=e.length);for(var a=0,r=new Array(t);at.min&&e.discountedPrice0&&0===u.length?!l&&i(!0):l&&i(!1),s=u}var m=s&&s.map((function(e,t){return n.a.createElement(W,{product:e,key:t})}));e.dispatchProducts(s);return n.a.createElement("main",{className:"c-Plp__c-ProductContainer"},l?n.a.createElement("div",{className:"c-Cart__emptyPlp"},n.a.createElement("h3",null,"No Products match the search criteria!"),n.a.createElement("p",{className:"c-Cart__emptyPlp__information"},"Please modify Search or filter criteria, and try again.")):e.products&&0!==e.products.length?n.a.createElement("div",{className:"container"},o&&""!==o&&n.a.createElement("div",{className:"row"},n.a.createElement("div",{className:"col-12 c-Plp__c-ProductContainer__infoContainer"},n.a.createElement("span",{className:"c-Plp__c-ProductContainer__information"},'Showing Results for the search - "',o,'"'),n.a.createElement("p",null,n.a.createElement("button",{type:"button",className:"c-Plp__c-ProductContainer__btnClearSearch",onClick:function(){e.dispatchSearchString("")}},"Clear Search")))),n.a.createElement("div",{className:"row c-Plp__c-ProductContainer__row"},m)):n.a.createElement(D.a,null))};X.defaultProps={products:[]},X.propTypes={products:c.a.array,sortBy:c.a.string};var Z=Object(H.createPropsSelector)({filterRange:R.a,searchString:R.c,sortBy:R.d}),ee={dispatchProducts:i.h,dispatchSearchString:i.i},te=Object(l.b)(Z,ee)(X),ae=(a(109),function(e){var t=e.isMobile,a=e.products;return n.a.createElement("section",{className:"c-ProductContainerWithTools"},t?n.a.createElement(n.a.Fragment,null,n.a.createElement(F,null),n.a.createElement(te,{products:a})):n.a.createElement(n.a.Fragment,null,n.a.createElement("div",{className:"container"},n.a.createElement("div",{className:"row"},n.a.createElement("div",{className:"col-2 c-ProductContainerWithTools__asideCol"},n.a.createElement("aside",{className:"c-ProductContainerWithTools__c-FilterAside"},n.a.createElement(T,{headerClass:"c-FilterTool__header",titleClass:"c-FilterTool__title",bodyClass:"c-FilterTool__body",footerClass:"c-FilterTool__footer",title:"Filters"}))),n.a.createElement("div",{className:"col-10"},n.a.createElement(_,{headerClass:"c-SortTool__header",titleClass:"c-SortTool__title",bodyClass:"c-SortTool__body",labelClass:"c-SortTool__body__label",title:"Sort By"}),n.a.createElement(te,{products:a}))))))});ae.defaultProps={},ae.propTypes={};var re=ae;function ne(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"===typeof Symbol||!(Symbol.iterator in Object(e)))return;var a=[],r=!0,n=!1,o=void 0;try{for(var c,l=e[Symbol.iterator]();!(r=(c=l.next()).done)&&(a.push(c.value),!t||a.length!==t);r=!0);}catch(i){n=!0,o=i}finally{try{r||null==l.return||l.return()}finally{if(n)throw o}}return a}(e,t)||function(e,t){if(!e)return;if("string"===typeof e)return oe(e,t);var a=Object.prototype.toString.call(e).slice(8,-1);"Object"===a&&e.constructor&&(a=e.constructor.name);if("Map"===a||"Set"===a)return Array.from(a);if("Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a))return oe(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function oe(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=new Array(t);ae.length)&&(t=e.length);for(var a=0,r=new Array(t);at&&!e.classList.contains("scroll-down")?(e.classList.remove("scroll-up"),e.classList.add("scroll-down")):a {\n\n const [sortType, setSortType] = useState('')\n const [selectionError, setSelectionError] = useState('')\n\n const submitSelection = (e) => {\n if (!sortType) {\n setSelectionError(true)\n return\n }\n props.dispatchSortSelection(sortType)\n props.isModal && props.closeModal(e)\n setSelectionError(false)\n }\n\n return (\n
\n
\n
{props.title}
\n {props.isModal && }\n
\n
\n {selectionError && Please Select One of the options below.}\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n {props.isModal &&
\n \n \n
}\n
\n );\n};\n\nSortTool.propTypes = {\n dispatchSortSelection: PropTypes.func\n};\n\nconst mapDispatchToProps = ({\n dispatchSortSelection\n})\n\nexport default connect(\n null,\n mapDispatchToProps\n)(SortTool);\n","import SortTool from './SortTool.jsx';\n\nexport default SortTool;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport Modal from 'react-modal';\nimport SortTool from '../SortTool';\nimport './SortModal.component.scss';\n\nconst customStyles = {\n content: {\n top: '20%',\n width: '93%',\n marginLeft: 'auto',\n marginRight: 'auto',\n background: 'rgb(255, 255, 255)',\n overflow: 'auto',\n borderRadius: '4px'\n }\n};\n\nconst SortModal = ({closeModal, modalIsOpen}) => {\n\n\n function afterOpenModal() {\n // subtitle.style.color = '#000';\n // subtitle.style.fontWeight = '700';\n }\n\n return (\n \n \n \n );\n};\n\nSortModal.defaultProps = {\n\n};\n\nSortModal.propTypes = {\n closeModal: PropTypes.func,\n dispatchSortSelection: PropTypes.func,\n modalIsOpen: PropTypes.bool\n};\n\nexport default SortModal;","import SortModal from './SortModal.jsx';\n\nexport default SortModal;","import React, {useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport {dispatchFilterRange} from './../../../pages/PLP/actions';\nimport InputRange from 'react-input-range';\nimport './FilterTool.component.scss';\n\nconst FilterTool = props => {\n // var subtitle;\n const [filterRange, setFilterRange] = useState({min: 0, max: 10000})\n\n const submitSelection = (e) => {\n props.dispatchFilterRange(filterRange)\n props.isModal && props.closeModal(e)\n }\n\n return (\n
\n
\n
{props.title}
\n {props.isModal && }\n
\n
\n `₹${value}`}\n value={filterRange}\n onChange={value => setFilterRange(value)} />\n {/* onChangeComplete={(e) =>submitSelection(e)} /> */}\n

Price

\n
\n
\n {props.isModal && }\n \n
\n
\n );\n};\n\nFilterTool.propTypes = {\n dispatchFilterRange: PropTypes.func\n};\n\nconst mapDispatchToProps = ({\n dispatchFilterRange\n})\n\nexport default connect(\n null,\n mapDispatchToProps\n)(FilterTool);","import FilterTool from './FilterTool.jsx';\n\nexport default FilterTool;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Modal from 'react-modal';\nimport FilterTool from './../FilterTool';\nimport './FilterModal.component.scss';\nimport 'react-input-range/lib/css/index.css';\n\nconst customStyles = {\n content: {\n top: '20%',\n width: '93%',\n marginLeft: 'auto',\n marginRight: 'auto',\n background: 'rgb(255, 255, 255)',\n overflow: 'auto',\n borderRadius: '4px'\n }\n};\n\nconst FilterModal = ({closeModal, modalIsOpen}) => {\n\n function afterOpenModal() {\n // subtitle.style.color = '#000';\n // subtitle.style.fontWeight = '700';\n }\n\n\n return (\n \n \n \n );\n};\n\nFilterModal.defaultProps = {\n\n};\n\nFilterModal.propTypes = {\n closeModal: PropTypes.func,\n dispatchFilterSelection: PropTypes.func,\n modalIsOpen: PropTypes.bool\n};\n\nexport default FilterModal;\n","import FilterModal from './FilterModal.jsx';\n\nexport default FilterModal;","import React, {useState} from 'react';\nimport './SortAndFilterPanel.component.scss'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faSort } from '@fortawesome/free-solid-svg-icons'\nimport { faFilter } from '@fortawesome/free-solid-svg-icons'\nimport SortModal from '../SortModal';\nimport FilterModal from '../FilterModal';\n\nconst SortAndFilterPanel = props => {\n\n const [sortModalIsOpen,setSortIsOpen] = useState(false);\n const [filterModalIsOpen,setFilterIsOpen] = useState(false);\n \n function closeModal(type, e){\n e.stopPropagation();\n type === \"sort\" ? setSortIsOpen(false) : setFilterIsOpen(false);\n }\n\n return (\n
\n
\n
\n
setSortIsOpen(true)}>\n

Sort

\n closeModal(\"sort\", e)} modalIsOpen={sortModalIsOpen} />\n
\n
setFilterIsOpen(true)}>\n

Filter

\n closeModal(\"filter\", e)} modalIsOpen={filterModalIsOpen}/>\n
\n
\n
\n
\n );\n};\n\nSortAndFilterPanel.defaultProps = {\n\n};\n\nSortAndFilterPanel.propTypes = {\n\n};\n\nexport default SortAndFilterPanel;","import SortAndFilterPanel from './SortAndFilterPanel.jsx';\n\nexport default SortAndFilterPanel;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport {createPropsSelector} from 'reselect-immutable-helpers';\nimport {updateCart} from './../../../pages/Cart/actions'\nimport {getCartTotalCount, getCartItems} from './../../../pages/Cart/selectors'\n\nimport Button from './../../atoms/Button'\nimport ItemPrice from '../ItemPrice/ItemPrice';\n\nimport './ProductTile.component.scss';\n\nconst ProductTile = props => {\n\n const product = props.product\n const addToCartButtonClass = \"btn btn__addToCart\"\n\n const updateCart = (productId) => {\n let cartTotalCount = props.cartTotalCount\n const cartItems = props.cartItems\n let count = cartItems && cartItems[productId] ? cartItems[productId] : 0\n cartItems[productId] = ++count\n props.updateCart(++cartTotalCount, cartItems)\n }\n\n return (\n \n
\n {product.name}\n {product.name &&
{product.name}
}\n
\n {/*
\n {product.discountedPrice && ₹{product.discountedPrice}}\n {\n hasDiscount &&\n (\n \n {product.price}\n {product.discount}% off\n \n )\n }\n
*/}\n \n updateCart(product.id)} />\n \n );\n};\n\nProductTile.propTypes = {\n updateCart: PropTypes.func,\n cartTotalCount: PropTypes.number,\n cartItems: PropTypes.object\n};\n\nconst mapStateToProps = createPropsSelector({\n cartTotalCount: getCartTotalCount,\n cartItems: getCartItems\n})\n\nconst mapDispatchToProps = ({\n updateCart\n})\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(ProductTile);","import ProductTile from './ProductTile.jsx';\n\nexport default ProductTile;","import React, {useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport {createPropsSelector} from 'reselect-immutable-helpers';\nimport {dispatchProducts, dispatchSearchString} from './../../../pages/PLP/actions'\nimport {getFilterRange, getSortSelection, getSearchString} from './../../../pages/PLP/selectors'\nimport ProductTile from './../ProductTile'\nimport PageLoader from '../PageLoader/PageLoader';\nimport './ProductContainer.component.scss'\n\nconst ProductContainer = props => {\n\n const fr = props.filterRange\n const sb = props.sortBy\n const ss = props.searchString\n\n const [filterNoMatch, setFilterNoMatch] = useState(false)\n\n const getEmptyPlpBlock = () => {\n return (\n
\n

No Products match the search criteria!

\n

Please modify Search or filter criteria, and try again.

\n
\n )\n }\n \n let productsWithDiscountedPrice = props.products \n && props.products.length !== 0\n && props.products.map(product => {\n const discount = product.discount && product.price * (product.discount/100)\n product.discountAmount = Math.ceil(discount)\n product.discountedPrice = Math.ceil(product.price - product.discountAmount)\n return product\n })\n if (productsWithDiscountedPrice) {\n if (sb) {\n switch(sb) {\n case \"priceHtoL\":\n productsWithDiscountedPrice.sort((prod1, prod2) => prod2.discountedPrice - prod1.discountedPrice);\n break;\n case \"priceLtoH\":\n productsWithDiscountedPrice.sort((prod1, prod2) => prod1.discountedPrice - prod2.discountedPrice);\n break;\n case \"discount\":\n productsWithDiscountedPrice.sort((prod1, prod2) => prod2.discount - prod1.discount);\n break;\n default:\n break;\n }\n }\n \n let productsWithDiscountedPriceFiltered = [...productsWithDiscountedPrice]\n const noOfProducts = productsWithDiscountedPrice.length\n if (fr) {\n productsWithDiscountedPriceFiltered = productsWithDiscountedPrice.filter(prod => prod.discountedPrice > fr.min && prod.discountedPrice < fr.max);\n productsWithDiscountedPrice = productsWithDiscountedPriceFiltered\n }\n\n if (ss && ss !== \"\") {\n productsWithDiscountedPriceFiltered = productsWithDiscountedPrice.filter(prod => {\n return (prod.name.toLowerCase().includes(ss.toLowerCase())\n || prod.category.toLowerCase().includes(ss.toLowerCase())\n || prod.img_url.toLowerCase().includes(ss.toLowerCase()));\n });\n }\n if (noOfProducts > 0 && productsWithDiscountedPriceFiltered.length === 0) {\n !filterNoMatch && setFilterNoMatch(true)\n } else {\n filterNoMatch && setFilterNoMatch(false)\n }\n productsWithDiscountedPrice = productsWithDiscountedPriceFiltered\n }\n\n const productTiles = productsWithDiscountedPrice && productsWithDiscountedPrice.map((product, key) =>{\n return \n })\n props.dispatchProducts(productsWithDiscountedPrice)\n\n const clearSearch = () => {\n props.dispatchSearchString(\"\")\n }\n\n return
\n {\n filterNoMatch ? getEmptyPlpBlock() : props.products && props.products.length !== 0 ?\n
\n {\n ss && ss !== \"\" &&\n
\n
\n Showing Results for the search - \"{ss}\"\n

\n
\n
\n }\n
\n {productTiles}\n
\n
: \n }\n
\n};\n\nProductContainer.defaultProps = {\n products: []\n};\n\nProductContainer.propTypes = {\n products: PropTypes.array,\n sortBy: PropTypes.string\n};\n\nconst mapStateToProps = createPropsSelector({\n filterRange: getFilterRange,\n searchString: getSearchString,\n sortBy: getSortSelection\n})\n\nconst mapDispatchToProps = ({\n dispatchProducts, dispatchSearchString\n})\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(ProductContainer);","import ProductContainer from './ProductContainer.jsx';\n\nexport default ProductContainer;","import React from 'react';\nimport SortAndFilterPanel from './../SortAndFilterPanel'\nimport ProductContainer from './../ProductContainer'\nimport FilterTool from './../FilterTool'\nimport SortTool from './../SortTool'\nimport './ProductContainerWithTools.component.scss';\n\nconst ProductContainerWithTools = ({isMobile, products}) => {\n return
\n {\n isMobile ?\n \n \n \n :\n \n
\n
\n
\n \n
\n
\n \n \n
\n
\n
\n
\n }\n
\n};\n\nProductContainerWithTools.defaultProps = {\n\n};\n\nProductContainerWithTools.propTypes = {\n\n};\n\nexport default ProductContainerWithTools;","import React, {useState, useEffect} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport {dispatchProducts} from './actions';\n\nimport Header from './../../components/molecules/Header'\nimport Footer from './../../components/molecules/Footer'\nimport ProductContainerWithTools from '../../components/molecules/ProductContainerWithTools/ProductContainerWithTools';\n\nconst Plp = ({dispatchProducts}) => {\n \n const [products, setProducts] = useState([])\n\n const isMobile = (() => {\n var check = false;\n (function(a){if(/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.substr(0,4))) check = true;})(navigator.userAgent||navigator.vendor||window.opera);\n return check;\n })();\n\n useEffect(() => {\n fetch('https://api.myjson.com/bins/qzuzi')\n .then(res => res.json())\n .then(products => {\n // console.log(products)\n setProducts(products)\n dispatchProducts(products)\n })\n }, [])\n\n return (\n
\n
\n \n
\n
\n )\n};\n\nPlp.propTypes = {\n dispatchProducts: PropTypes.func\n};\n\nconst mapDispatchToProps = ({\n dispatchProducts\n})\n\nexport default connect(\n null,\n mapDispatchToProps\n)(Plp);","import Plp from './Plp.jsx';\n\nexport default Plp;","import {createSelector} from 'reselect'\nimport {createGetSelector} from 'reselect-immutable-helpers'\n\nconst getData = ({data}) => data\n\nexport const getCart = createSelector(\n getData,\n (dataState) => {\n return dataState.pages.cart\n }\n)\n\nexport const getFormValues = createGetSelector(getCart, 'formValues')\nexport const getFormErrors = createGetSelector(getCart, 'formErrors')\nexport const getCartTotalCount = createGetSelector(getCart, 'cartTotalCount')\nexport const getCartItems = createGetSelector(getCart, 'cartItems')","import {createSelector} from 'reselect'\nimport {createGetSelector} from 'reselect-immutable-helpers'\n\nconst getData = ({data}) => data\n\nexport const getPlp = createSelector(\n getData,\n (dataState) => {\n return dataState.pages.plp\n }\n)\n\nexport const getFormValues = createGetSelector(getPlp, 'formValues')\nexport const getFormErrors = createGetSelector(getPlp, 'formErrors')\nexport const getProducts = createGetSelector(getPlp, 'products')\nexport const getFilterRange = createGetSelector(getPlp, 'filterRange')\nexport const getSortSelection = createGetSelector(getPlp, 'sortBy')\nexport const getSearchString = createGetSelector(getPlp, 'searchString')","import React from 'react';\nimport PropTypes from 'prop-types';\nimport './ItemPrice.component.scss';\n\nconst ItemPrice = ({product}) => {\n\n const hasDiscount = !!product.discount && product.discount !== 0\n\n return (\n
\n {product.discountedPrice && ₹{product.discountedPrice}}\n {\n hasDiscount &&\n (\n \n {product.price}\n {product.discount}% off\n \n )\n }\n
\n );\n};\n\nItemPrice.defaultProps = {\n product: PropTypes.object\n};\n\nItemPrice.propTypes = {\n\n};\n\nexport default ItemPrice;","import React, {useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport {withRouter} from 'react-router-dom';\nimport {dispatchSearchString} from './../../../pages/PLP/actions'\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome'\nimport {faSearch} from '@fortawesome/free-solid-svg-icons'\nimport './Search.component.scss';\n\nconst Search = ({dispatchSearchString, inCart, history}) => {\n var timerId;\n const [searchInitiated, setSearchInitiated] = useState(false)\n\n const startSearch = (searchStringUpdated) => {\n dispatchSearchString(searchStringUpdated)\n inCart && history.push('/view/plp')\n }\n \n const debouncedStartSearch = (func, delay, searchStringUpdated) => {\n clearTimeout(timerId)\n timerId = setTimeout(() => func(searchStringUpdated), delay)\n }\n\n const onChangeHandler = (e) => {\n debouncedStartSearch(startSearch, 500, e.target.value)\n }\n\n return (\n
\n \n setSearchInitiated(!searchInitiated)} />\n
\n );\n};\n\nSearch.propTypes = {\n dispatchSearchString: PropTypes.func,\n inCart: PropTypes.bool\n};\n\nconst mapDispatchToProps = ({\n dispatchSearchString\n})\n\nexport default connect(\n null,\n mapDispatchToProps\n)(withRouter(Search));","import Search from './Search.jsx';\n\nexport default Search;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport './CartIcon.component.scss';\nimport {withRouter} from 'react-router-dom'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faShoppingCart } from '@fortawesome/free-solid-svg-icons'\nimport { createPropsSelector } from 'reselect-immutable-helpers';\n\nimport {getCartTotalCount} from './../../../pages/Cart/selectors'\n\nconst CartIcon = props => {\n\n const navigateToCart = () => {\n props.history.push('/view/cart')\n }\n\n return (\n
\n \n {props.cartTotalCount}\n
\n );\n};\n\nCartIcon.propTypes = {\n cartTotalCount: PropTypes.number\n};\n\nconst mapStateToProps = createPropsSelector({\n cartTotalCount: getCartTotalCount\n})\n\nexport default connect(mapStateToProps)(withRouter(CartIcon));","import CartIcon from './CartIcon.jsx';\n\nexport default CartIcon;","import React, {useEffect} from 'react';\nimport { Link } from 'react-router-dom';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faStar } from '@fortawesome/free-solid-svg-icons'\n\nimport Search from './../Search'\nimport CartIcon from './../CartIcon'\n\nconst Header = props => {\n\n useEffect(() => {\n const body = document.body;\n const scrollUp = \"scroll-up\";\n const scrollDown = \"scroll-down\";\n let lastScroll = 0;\n\n window.addEventListener(\"scroll\", () => {\n const currentScroll = window.pageYOffset;\n if (currentScroll === 0) {\n body.classList.remove(scrollUp);\n return;\n }\n \n if (currentScroll > lastScroll && !body.classList.contains(scrollDown)) {\n // down\n body.classList.remove(scrollUp);\n body.classList.add(scrollDown);\n } else if (currentScroll < lastScroll && body.classList.contains(scrollDown)) {\n // up\n body.classList.remove(scrollDown);\n body.classList.add(scrollUp);\n }\n lastScroll = currentScroll;\n });\n })\n \n return (\n
\n
\n
\n
\n
\n
{!props.inCart && }
\n
\n
\n
\n );\n};\n\nHeader.defaultProps = {\n\n};\n\nHeader.propTypes = {\n\n};\n\nexport default Header;","import Header from './Header.jsx';\n\nexport default Header;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './Footer.component.scss';\n\nconst Footer = props => {\n return (\n
\n

@Copyright

\n
\n );\n};\n\nFooter.defaultProps = {\n\n};\n\nFooter.propTypes = {\n\n};\n\nexport default Footer;","import Footer from './Footer.jsx';\n\nexport default Footer;","import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport * as fwIcons from '@fortawesome/free-solid-svg-icons'\nimport './Button.component.scss'\n\nconst Button = props => {\n return (\n \n {props.buttonIcon && }\n {props.buttonText}\n \n );\n};\n\nButton.defaultProps = {\n\n};\n\nButton.propTypes = {\n\n};\n\nexport default Button;","import Button from './Button.jsx';\n\nexport default Button;"],"sourceRoot":""} \ No newline at end of file diff --git a/static/js/5.5cd61004.chunk.js b/static/js/5.5cd61004.chunk.js deleted file mode 100644 index 51f7787..0000000 --- a/static/js/5.5cd61004.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -(this.webpackJsonpadobeassignment=this.webpackJsonpadobeassignment||[]).push([[5],{110:function(e,t,a){e.exports={"c-Cart":"Cart_c-Cart__3o6Xj","c-Cart__emptyCart":"Cart_c-Cart__emptyCart__1We4n","c-Cart__emptyCart__information":"Cart_c-Cart__emptyCart__information__1Arjm",btn__continueShopping:"Cart_btn__continueShopping__1KuEv"}},111:function(e,t,a){},112:function(e,t,a){},113:function(e,t,a){},114:function(e,t,a){},115:function(e,t,a){},119:function(e,t,a){"use strict";a.r(t);var r=a(0),c=a.n(r),n=a(22),o=a(56),l=a(9),s=a(62),i=a(60),u=a(13),m=(a(110),a(74)),d=a(72),p=a(5),_=a.n(p),f=(a(111),a(112),function(e){return c.a.createElement("div",{className:"c-SectionLoader"},c.a.createElement("div",{className:"c-SectionLoader__lds-ripple"},c.a.createElement("div",null),c.a.createElement("div",null)))});f.defaultProps={},f.propTypes={};var C=f,v=a(70),E=(a(113),function(e){var t=e.cartTotalCount,a=e.cartItems,r=e.count,n=e.productId,o=e.removeItem,l=e.updateCart,s=function(e){var c=r;"remove"===e?(0===(c=c?--c:0)?o(n):a[n]=c,t=--t):(c=c?++c:1,a[n]=c,t=++t),l(t,a)};return c.a.createElement("div",{className:"c-QuantityControlWidget"},c.a.createElement("div",{className:"c-QuantityControlWidget__part c-QuantityControlWidget__part--minus c-QuantityControlWidget__part--circled",onClick:function(){return s("remove")}},c.a.createElement("span",null,"-")),c.a.createElement("div",{className:"c-QuantityControlWidget__part c-QuantityControlWidget__part--squared"},c.a.createElement("span",null,r)),c.a.createElement("div",{className:"c-QuantityControlWidget__part c-QuantityControlWidget__part--plus c-QuantityControlWidget__part--circled",onClick:function(){return s("add")}},c.a.createElement("span",null,"+")))});E.defaultProps={},E.propTypes={cartTotalCount:_.a.number,cartItems:_.a.object,count:_.a.number,productId:_.a.number,removeItem:_.a.func,updateCart:_.a.func};var b=E,y=function(e){var t=e.count,a=e.cartTotalCount,r=e.cartItems,n=e.product,o=e.removeItem,l=e.updateCart;return n?c.a.createElement("article",{className:"c-Cart__c-CartList__c-CartItem"},c.a.createElement("div",{className:"container"},c.a.createElement("div",{className:"row"},c.a.createElement("div",{className:"c-Cart__c-CartList__c-CartItem__inner col-4 col-md-3 col-lg-3"},c.a.createElement("img",{className:"c-Cart__c-CartList__c-CartItem__image",src:n.img_url,alt:n.name,style:{width:"100%"}})),c.a.createElement("div",{className:"c-Cart__c-CartList__c-CartItem__inner col-8 col-md-9 col-lg-9"},n.name&&c.a.createElement("p",{className:"c-Cart__c-CartList__c-CartItem__name"},n.name),c.a.createElement(v.a,{product:n}),c.a.createElement(b,{count:t,productId:n.id,cartTotalCount:a,cartItems:r,updateCart:l,removeItem:o}),c.a.createElement("p",{className:"c-Cart__c-CartList__c-CartItem__buttonItemRemove",onClick:function(){return o(n.id)}},"REMOVE"))))):c.a.createElement(C,null)};y.defaultProps={},y.propTypes={count:_.a.number,cartTotalCount:_.a.number,cartItems:_.a.object,product:_.a.object,removeItem:_.a.func,updateCart:_.a.func};var N=y,h=(a(114),function(e){var t=e.cartItems,a=e.products,r=e.isCartEmpty,n=e.cartTotalCount,o=e.updateCart,l=function(e){var a=t&&t[e];t&&delete t[e],o(n-a,t)},s=!r&&Object.keys(t).map((function(e,r){var s=a&&a.length>0&&a.filter((function(t){return t.id===parseInt(e)}))[0];return c.a.createElement(N,{product:s,count:t[e],cartItems:t,cartTotalCount:n,updateCart:o,removeItem:l,key:r})}));return c.a.createElement("section",{className:"c-CartList"},s)});h.defaultProps={},h.propTypes={cartItems:_.a.object,cartTotalCount:_.a.number,isCartEmpty:_.a.bool,products:_.a.array,updateCart:_.a.func};var g=Object(o.createPropsSelector)({cartItems:i.a,cartTotalCount:i.b,products:s.b}),S={updateCart:u.d},I=Object(n.b)(g,S)(h),j=(a(115),function(e){var t=e.cartItems,a=e.products,r=t&&Object.keys(t).reduce((function(e,r){var c=a.filter((function(e){return e.id===parseInt(r)})),n=c&&c.length>0&&c[0].price,o=c&&c.length>0&&c[0].discountAmount;return e.totalPrice=e.totalPrice+n*t[r],e.discount=e.discount+o*t[r],e}),{totalPrice:0,discount:0});return c.a.createElement("section",{className:"c-CartSummary"},c.a.createElement("div",{className:"c-CartSummary__inner"},c.a.createElement("div",{className:"container"},c.a.createElement("header",{className:"c-CartSummary__headerRow row"},c.a.createElement("div",{className:"col-12"},c.a.createElement("p",{className:"c-CartSummary__headerContent"},"PRICE DETAILS"))),c.a.createElement("section",{className:"c-CartSummary__details"},c.a.createElement("div",{className:"c-CartSummary__price row"},c.a.createElement("div",{className:"col-6"},c.a.createElement("p",null,"Total Price")),c.a.createElement("div",{className:"col-1"},c.a.createElement("p",null,":")),c.a.createElement("div",{className:"col-5"},c.a.createElement("p",{className:"float-right"},"\u20b9",r.totalPrice))),c.a.createElement("div",{className:"c-CartSummary__discount row"},c.a.createElement("div",{className:"col-6"},c.a.createElement("p",null,"Discount")),c.a.createElement("div",{className:"col-1"},c.a.createElement("p",null,":")),c.a.createElement("div",{className:"col-5"},c.a.createElement("p",{className:"float-right"},"\u20b9",r.discount)))),c.a.createElement("div",{className:"c-CartSummary__total row"},c.a.createElement("div",{className:"col-7"},"Total Payable"),c.a.createElement("div",{className:"col-5"},c.a.createElement("p",{className:"float-right"},"\u20b9",r.totalPrice-r.discount))))))});j.defaultProps={},j.propTypes={cartItems:_.a.object,products:_.a.array};var T=j,P=a(73),O=function(e){var t=e.cartItems,a=e.cartTotalCount,r=e.history,n=e.products,o=e.updateCart,l=!t||0===Object.keys(t).length,s=function(){r.push("/view/plp")};return c.a.createElement("div",{className:"c-Cart"},c.a.createElement(d.a,{inCart:!0}),c.a.createElement("main",{className:"container c-Cart__mainContent"},l?c.a.createElement("div",{className:"c-Cart__emptyCart"},c.a.createElement("h3",null,"Your cart is Empty!"),c.a.createElement("p",{className:"c-Cart__emptyCart__information"},"Please add some items from Available Products."),c.a.createElement(m.a,{buttonType:"button",classes:"btn btn__continueShopping",onClickHandler:s,buttonText:"Continue Shopping"})):c.a.createElement("div",{className:"row"},c.a.createElement("div",{className:"col-12 col-md-8 col-lg-8"},c.a.createElement(I,{cartItems:t,cartTotalCount:a,products:n,updateCart:o})),c.a.createElement("div",{className:"col-12 col-md-4 col-lg-4"},c.a.createElement(T,{cartItems:t,products:n})))),c.a.createElement(P.a,null))};O.defaultProps={},O.propTypes={};var w=Object(o.createPropsSelector)({cartItems:i.a,cartTotalCount:i.b,products:s.b}),L={updateCart:u.d},k=Object(n.b)(w,L)(Object(l.e)(O));t.default=k},60:function(e,t,a){"use strict";a.d(t,"b",(function(){return o})),a.d(t,"a",(function(){return l}));var r=a(59),c=a(56),n=Object(r.a)((function(e){return e.data}),(function(e){return e.pages.cart})),o=(Object(c.createGetSelector)(n,"formValues"),Object(c.createGetSelector)(n,"formErrors"),Object(c.createGetSelector)(n,"cartTotalCount")),l=Object(c.createGetSelector)(n,"cartItems")},62:function(e,t,a){"use strict";a.d(t,"b",(function(){return o})),a.d(t,"a",(function(){return l})),a.d(t,"d",(function(){return s})),a.d(t,"c",(function(){return i}));var r=a(59),c=a(56),n=Object(r.a)((function(e){return e.data}),(function(e){return e.pages.plp})),o=(Object(c.createGetSelector)(n,"formValues"),Object(c.createGetSelector)(n,"formErrors"),Object(c.createGetSelector)(n,"products")),l=Object(c.createGetSelector)(n,"filterRange"),s=Object(c.createGetSelector)(n,"sortBy"),i=Object(c.createGetSelector)(n,"searchString")},65:function(e,t,a){},66:function(e,t,a){},67:function(e,t,a){},69:function(e,t,a){},70:function(e,t,a){"use strict";var r=a(0),c=a.n(r),n=a(5),o=a.n(n),l=(a(71),function(e){var t=e.product,a=!!t.discount&&0!==t.discount;return c.a.createElement("div",{className:"c-ItemPrice"},t.discountedPrice&&c.a.createElement("span",{className:"c-ItemPrice__price"},"\u20b9",t.discountedPrice),a&&c.a.createElement(c.a.Fragment,null,c.a.createElement("span",{className:"c-ItemPrice__price--strikethrough"}," ",t.price),c.a.createElement("span",{className:"c-ItemPrice__discount"},t.discount,"% off")))});l.defaultProps={product:o.a.object},l.propTypes={},t.a=l},71:function(e,t,a){},72:function(e,t,a){"use strict";var r=a(0),c=a.n(r),n=a(23),o=a(58),l=a(57),s=a(5),i=a.n(s),u=a(22),m=a(9),d=a(10);a(65);function p(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"===typeof Symbol||!(Symbol.iterator in Object(e)))return;var a=[],r=!0,c=!1,n=void 0;try{for(var o,l=e[Symbol.iterator]();!(r=(o=l.next()).done)&&(a.push(o.value),!t||a.length!==t);r=!0);}catch(s){c=!0,n=s}finally{try{r||null==l.return||l.return()}finally{if(c)throw n}}return a}(e,t)||function(e,t){if(!e)return;if("string"===typeof e)return _(e,t);var a=Object.prototype.toString.call(e).slice(8,-1);"Object"===a&&e.constructor&&(a=e.constructor.name);if("Map"===a||"Set"===a)return Array.from(a);if("Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a))return _(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=new Array(t);at&&!e.classList.contains("scroll-down")?(e.classList.remove("scroll-up"),e.classList.add("scroll-down")):a {\n return (\n
\n
\n
\n
\n
\n
\n );\n};\n\nSectionLoader.defaultProps = {\n\n};\n\nSectionLoader.propTypes = {\n\n};\n\nexport default SectionLoader;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport './QuantityControlWidget.component.scss';\n\nconst QuantityControlWidget = ({cartTotalCount, cartItems, count, productId, removeItem, updateCart}) => {\n\n const updateCartHandler = (operationType) => {\n let countUpdated = count\n if (operationType === \"remove\") {\n countUpdated = countUpdated ? --countUpdated : 0\n countUpdated === 0 ? removeItem(productId) : cartItems[productId] = countUpdated\n cartTotalCount = --cartTotalCount\n } else {\n countUpdated = countUpdated ? ++countUpdated : 1\n cartItems[productId] = countUpdated\n cartTotalCount = ++cartTotalCount\n }\n updateCart(cartTotalCount, cartItems)\n }\n\n return (\n
\n updateCartHandler(\"remove\")}\n >\n -\n
\n \n {count}\n \n updateCartHandler(\"add\")}\n >\n +\n \n \n );\n};\n\nQuantityControlWidget.defaultProps = {\n\n};\n\nQuantityControlWidget.propTypes = {\n cartTotalCount: PropTypes.number,\n cartItems: PropTypes.object,\n count: PropTypes.number,\n productId: PropTypes.number,\n removeItem: PropTypes.func,\n updateCart: PropTypes.func\n};\n\nexport default QuantityControlWidget;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport './CartItem.component.scss';\nimport SectionLoader from '../SectionLoader/SectionLoader';\nimport ItemPrice from '../ItemPrice/ItemPrice';\nimport QuantityControlWidget from '../QuantityControlWidget/QuantityControlWidget';\n\nconst CartItem = ({count, cartTotalCount, cartItems, product, removeItem, updateCart}) => {\n\n return product ?\n
\n
\n
\n
\n {product.name}\n
\n
\n {product.name &&

{product.name}

}\n \n \n

removeItem(product.id)}>REMOVE

\n
\n
\n
\n
: \n};\n\nCartItem.defaultProps = {\n\n};\n\nCartItem.propTypes = {\n count: PropTypes.number,\n cartTotalCount: PropTypes.number,\n cartItems: PropTypes.object,\n product: PropTypes.object,\n removeItem: PropTypes.func,\n updateCart: PropTypes.func\n};\n\nexport default CartItem;","import CartItem from './CartItem.jsx';\n\nexport default CartItem;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport {createPropsSelector} from 'reselect-immutable-helpers';\nimport {getProducts} from './../../../pages/PLP/selectors'\nimport {getCartItems, getCartTotalCount} from './../../../pages/Cart/selectors'\nimport {updateCart} from './../../../pages/Cart/actions'\nimport CartItem from './../CartItem';\nimport './CartList.component.scss';\n\nconst CartList = ({cartItems, products, isCartEmpty, cartTotalCount, updateCart}) => {\n\n const removeItem = (productId) => {\n const quantity = cartItems && cartItems[productId]\n cartItems && delete cartItems[productId]\n let updatedTotalCount = cartTotalCount - quantity\n updateCart(updatedTotalCount, cartItems)\n }\n\n const cartItemTiles = !isCartEmpty && Object.keys(cartItems).map((itemId, key) => {\n const product = products && products.length > 0 && products.filter(product => product.id === parseInt(itemId))[0]\n return (\n \n )\n })\n\n return (\n
\n {cartItemTiles}\n
\n );\n};\n\nCartList.defaultProps = {\n\n};\n\nCartList.propTypes = {\n cartItems: PropTypes.object,\n cartTotalCount: PropTypes.number,\n isCartEmpty: PropTypes.bool,\n products: PropTypes.array,\n updateCart: PropTypes.func\n};\n\nconst mapStateToProps = createPropsSelector({\n cartItems: getCartItems,\n cartTotalCount: getCartTotalCount,\n products: getProducts\n})\n\nconst mapDispatchToProps = ({\n updateCart\n})\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(CartList);","import CartList from './CartList.jsx';\n\nexport default CartList;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport './CartSummary.component.scss';\n\nconst CartSummary = ({cartItems, products}) => {\n\n const totalData = cartItems && Object.keys(cartItems).reduce((priceAccumulator, productId) => {\n const matchedProducts = products.filter(product => product.id === parseInt(productId))\n const price = matchedProducts && matchedProducts.length > 0 && matchedProducts[0].price\n const discount = matchedProducts && matchedProducts.length > 0 && matchedProducts[0].discountAmount\n priceAccumulator.totalPrice = priceAccumulator.totalPrice + (price * cartItems[productId])\n priceAccumulator.discount = priceAccumulator.discount + (discount * cartItems[productId])\n return priceAccumulator\n }, {totalPrice: 0, discount: 0})\n\n return (\n
\n
\n
\n
\n
\n

PRICE DETAILS

\n
\n
\n
\n
\n

Total Price

\n

:

\n

₹{totalData.totalPrice}

\n
\n
\n

Discount

\n

:

\n

₹{totalData.discount}

\n
\n
\n
\n
Total Payable
\n

₹{totalData.totalPrice - totalData.discount}

\n
\n
\n
\n
\n );\n};\n\nCartSummary.defaultProps = {\n\n};\n\nCartSummary.propTypes = {\n cartItems: PropTypes.object,\n products: PropTypes.array\n};\n\nexport default CartSummary;","import CartSummary from './CartSummary.jsx';\n\nexport default CartSummary;","import React from 'react';\nimport {connect} from 'react-redux';\nimport {createPropsSelector} from 'reselect-immutable-helpers';\nimport {withRouter} from 'react-router-dom';\nimport {getProducts} from './../PLP/selectors';\nimport {getCartItems, getCartTotalCount} from './selectors'\nimport {updateCart} from './actions'\nimport './Cart.module.scss';\n\nimport Button from './../../components/atoms/Button'\nimport Header from './../../components/molecules/Header'\nimport CartList from './../../components/molecules/CartList'\nimport CartSummary from './../../components/molecules/CartSummary'\nimport Footer from './../../components/molecules/Footer'\n\nconst Cart = ({cartItems, cartTotalCount, history, products, updateCart}) => {\n\n const isCartEmpty = !cartItems || Object.keys(cartItems).length === 0\n\n const navigateToPlp = () => {\n history.push('/view/plp')\n }\n const getEmptyCartBlock = () => {\n return (\n
\n

Your cart is Empty!

\n

Please add some items from Available Products.

\n \n \n
\n )\n }\n\n return (\n
\n
\n
\n {\n isCartEmpty ? getEmptyCartBlock() : \n (\n
\n
\n \n
\n
\n \n
\n
\n )\n }\n
\n
\n
\n );\n};\n\nCart.defaultProps = {\n\n};\n\nCart.propTypes = {\n\n};\n\nconst mapStateToProps = createPropsSelector({\n cartItems: getCartItems,\n cartTotalCount: getCartTotalCount,\n products: getProducts\n})\n\nconst mapDispatchToProps = ({\n updateCart\n})\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(withRouter(Cart));","import Cart from './Cart.jsx';\n\nexport default Cart;","import {createSelector} from 'reselect'\nimport {createGetSelector} from 'reselect-immutable-helpers'\n\nconst getData = ({data}) => data\n\nexport const getCart = createSelector(\n getData,\n (dataState) => {\n return dataState.pages.cart\n }\n)\n\nexport const getFormValues = createGetSelector(getCart, 'formValues')\nexport const getFormErrors = createGetSelector(getCart, 'formErrors')\nexport const getCartTotalCount = createGetSelector(getCart, 'cartTotalCount')\nexport const getCartItems = createGetSelector(getCart, 'cartItems')","import {createSelector} from 'reselect'\nimport {createGetSelector} from 'reselect-immutable-helpers'\n\nconst getData = ({data}) => data\n\nexport const getPlp = createSelector(\n getData,\n (dataState) => {\n return dataState.pages.plp\n }\n)\n\nexport const getFormValues = createGetSelector(getPlp, 'formValues')\nexport const getFormErrors = createGetSelector(getPlp, 'formErrors')\nexport const getProducts = createGetSelector(getPlp, 'products')\nexport const getFilterRange = createGetSelector(getPlp, 'filterRange')\nexport const getSortSelection = createGetSelector(getPlp, 'sortBy')\nexport const getSearchString = createGetSelector(getPlp, 'searchString')","import React from 'react';\nimport PropTypes from 'prop-types';\nimport './ItemPrice.component.scss';\n\nconst ItemPrice = ({product}) => {\n\n const hasDiscount = !!product.discount && product.discount !== 0\n\n return (\n
\n {product.discountedPrice && ₹{product.discountedPrice}}\n {\n hasDiscount &&\n (\n \n {product.price}\n {product.discount}% off\n \n )\n }\n
\n );\n};\n\nItemPrice.defaultProps = {\n product: PropTypes.object\n};\n\nItemPrice.propTypes = {\n\n};\n\nexport default ItemPrice;","import React, {useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport {withRouter} from 'react-router-dom';\nimport {dispatchSearchString} from './../../../pages/PLP/actions'\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome'\nimport {faSearch} from '@fortawesome/free-solid-svg-icons'\nimport './Search.component.scss';\n\nconst Search = ({dispatchSearchString, inCart, history}) => {\n var timerId;\n const [searchInitiated, setSearchInitiated] = useState(false)\n\n const startSearch = (searchStringUpdated) => {\n dispatchSearchString(searchStringUpdated)\n inCart && history.push('/view/plp')\n }\n \n const debouncedStartSearch = (func, delay, searchStringUpdated) => {\n clearTimeout(timerId)\n timerId = setTimeout(() => func(searchStringUpdated), delay)\n }\n\n const onChangeHandler = (e) => {\n debouncedStartSearch(startSearch, 500, e.target.value)\n }\n\n return (\n
\n \n setSearchInitiated(!searchInitiated)} />\n
\n );\n};\n\nSearch.propTypes = {\n dispatchSearchString: PropTypes.func,\n inCart: PropTypes.bool\n};\n\nconst mapDispatchToProps = ({\n dispatchSearchString\n})\n\nexport default connect(\n null,\n mapDispatchToProps\n)(withRouter(Search));","import Search from './Search.jsx';\n\nexport default Search;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport './CartIcon.component.scss';\nimport {withRouter} from 'react-router-dom'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faShoppingCart } from '@fortawesome/free-solid-svg-icons'\nimport { createPropsSelector } from 'reselect-immutable-helpers';\n\nimport {getCartTotalCount} from './../../../pages/Cart/selectors'\n\nconst CartIcon = props => {\n\n const navigateToCart = () => {\n props.history.push('/view/cart')\n }\n\n return (\n
\n \n {props.cartTotalCount}\n
\n );\n};\n\nCartIcon.propTypes = {\n cartTotalCount: PropTypes.number\n};\n\nconst mapStateToProps = createPropsSelector({\n cartTotalCount: getCartTotalCount\n})\n\nexport default connect(mapStateToProps)(withRouter(CartIcon));","import CartIcon from './CartIcon.jsx';\n\nexport default CartIcon;","import React, {useEffect} from 'react';\nimport { Link } from 'react-router-dom';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faStar } from '@fortawesome/free-solid-svg-icons'\n\nimport Search from './../Search'\nimport CartIcon from './../CartIcon'\n\nconst Header = props => {\n\n useEffect(() => {\n const body = document.body;\n const scrollUp = \"scroll-up\";\n const scrollDown = \"scroll-down\";\n let lastScroll = 0;\n\n window.addEventListener(\"scroll\", () => {\n const currentScroll = window.pageYOffset;\n if (currentScroll === 0) {\n body.classList.remove(scrollUp);\n return;\n }\n \n if (currentScroll > lastScroll && !body.classList.contains(scrollDown)) {\n // down\n body.classList.remove(scrollUp);\n body.classList.add(scrollDown);\n } else if (currentScroll < lastScroll && body.classList.contains(scrollDown)) {\n // up\n body.classList.remove(scrollDown);\n body.classList.add(scrollUp);\n }\n lastScroll = currentScroll;\n });\n })\n \n return (\n
\n
\n
\n
\n
\n
{!props.inCart && }
\n
\n
\n
\n );\n};\n\nHeader.defaultProps = {\n\n};\n\nHeader.propTypes = {\n\n};\n\nexport default Header;","import Header from './Header.jsx';\n\nexport default Header;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './Footer.component.scss';\n\nconst Footer = props => {\n return (\n
\n

@Copyright

\n
\n );\n};\n\nFooter.defaultProps = {\n\n};\n\nFooter.propTypes = {\n\n};\n\nexport default Footer;","import Footer from './Footer.jsx';\n\nexport default Footer;","import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport * as fwIcons from '@fortawesome/free-solid-svg-icons'\nimport './Button.component.scss'\n\nconst Button = props => {\n return (\n \n {props.buttonIcon && }\n {props.buttonText}\n \n );\n};\n\nButton.defaultProps = {\n\n};\n\nButton.propTypes = {\n\n};\n\nexport default Button;","import Button from './Button.jsx';\n\nexport default Button;"],"sourceRoot":""} \ No newline at end of file diff --git a/static/js/5.d4001fe4.chunk.js b/static/js/5.d4001fe4.chunk.js new file mode 100644 index 0000000..1c68e0a --- /dev/null +++ b/static/js/5.d4001fe4.chunk.js @@ -0,0 +1,2 @@ +(this.webpackJsonpadobeassignment=this.webpackJsonpadobeassignment||[]).push([[5],{110:function(e,t,a){e.exports={"c-Cart":"Cart_c-Cart__3o6Xj","c-Cart__emptyCart":"Cart_c-Cart__emptyCart__1We4n","c-Cart__emptyCart__information":"Cart_c-Cart__emptyCart__information__1Arjm",btn__continueShopping:"Cart_btn__continueShopping__1KuEv"}},111:function(e,t,a){},112:function(e,t,a){},113:function(e,t,a){},114:function(e,t,a){},115:function(e,t,a){},120:function(e,t,a){"use strict";a.r(t);var r=a(0),c=a.n(r),n=a(22),o=a(56),l=a(9),s=a(62),i=a(60),u=a(13),m=(a(110),a(74)),d=a(72),p=a(5),_=a.n(p),f=(a(111),a(112),function(e){return c.a.createElement("div",{className:"c-SectionLoader"},c.a.createElement("div",{className:"c-SectionLoader__lds-ripple"},c.a.createElement("div",null),c.a.createElement("div",null)))});f.defaultProps={},f.propTypes={};var C=f,v=a(70),E=(a(113),function(e){var t=e.cartTotalCount,a=e.cartItems,r=e.count,n=e.productId,o=e.removeItem,l=e.updateCart,s=function(e){var c=r;"remove"===e?(0===(c=c?--c:0)?o(n):a[n]=c,t=--t):(c=c?++c:1,a[n]=c,t=++t),l(t,a)};return c.a.createElement("div",{className:"c-QuantityControlWidget"},c.a.createElement("div",{className:"c-QuantityControlWidget__part c-QuantityControlWidget__part--minus c-QuantityControlWidget__part--circled",onClick:function(){return s("remove")}},c.a.createElement("span",null,"-")),c.a.createElement("div",{className:"c-QuantityControlWidget__part c-QuantityControlWidget__part--squared"},c.a.createElement("span",null,r)),c.a.createElement("div",{className:"c-QuantityControlWidget__part c-QuantityControlWidget__part--plus c-QuantityControlWidget__part--circled",onClick:function(){return s("add")}},c.a.createElement("span",null,"+")))});E.defaultProps={},E.propTypes={cartTotalCount:_.a.number,cartItems:_.a.object,count:_.a.number,productId:_.a.number,removeItem:_.a.func,updateCart:_.a.func};var b=E,y=function(e){var t=e.count,a=e.cartTotalCount,r=e.cartItems,n=e.product,o=e.removeItem,l=e.updateCart;return n?c.a.createElement("article",{className:"c-Cart__c-CartList__c-CartItem"},c.a.createElement("div",{className:"container"},c.a.createElement("div",{className:"row"},c.a.createElement("div",{className:"c-Cart__c-CartList__c-CartItem__inner col-4 col-md-3 col-lg-3"},c.a.createElement("img",{className:"c-Cart__c-CartList__c-CartItem__image",src:n.img_url,alt:n.name,style:{width:"100%"}})),c.a.createElement("div",{className:"c-Cart__c-CartList__c-CartItem__inner col-8 col-md-9 col-lg-9"},n.name&&c.a.createElement("p",{className:"c-Cart__c-CartList__c-CartItem__name"},n.name),c.a.createElement(v.a,{product:n}),c.a.createElement(b,{count:t,productId:n.id,cartTotalCount:a,cartItems:r,updateCart:l,removeItem:o}),c.a.createElement("p",{className:"c-Cart__c-CartList__c-CartItem__buttonItemRemove",onClick:function(){return o(n.id)}},"REMOVE"))))):c.a.createElement(C,null)};y.defaultProps={},y.propTypes={count:_.a.number,cartTotalCount:_.a.number,cartItems:_.a.object,product:_.a.object,removeItem:_.a.func,updateCart:_.a.func};var N=y,h=(a(114),function(e){var t=e.cartItems,a=e.products,r=e.isCartEmpty,n=e.cartTotalCount,o=e.updateCart,l=function(e){var a=t&&t[e];t&&delete t[e],o(n-a,t)},s=!r&&Object.keys(t).map((function(e,r){var s=a&&a.length>0&&a.filter((function(t){return t.id===e}))[0];return c.a.createElement(N,{product:s,count:t[e],cartItems:t,cartTotalCount:n,updateCart:o,removeItem:l,key:r})}));return c.a.createElement("section",{className:"c-CartList"},s)});h.defaultProps={},h.propTypes={cartItems:_.a.object,cartTotalCount:_.a.number,isCartEmpty:_.a.bool,products:_.a.array,updateCart:_.a.func};var g=Object(o.createPropsSelector)({cartItems:i.a,cartTotalCount:i.b,products:s.b}),S={updateCart:u.d},I=Object(n.b)(g,S)(h),j=(a(115),function(e){var t=e.cartItems,a=e.products,r=t&&Object.keys(t).reduce((function(e,r){var c=a.filter((function(e){return e.id===r})),n=c&&c.length>0&&c[0].price.display,o=c&&c.length>0&&c[0].discountAmount;return e.totalPrice=e.totalPrice+n*t[r],e.discount=e.discount+o*t[r],e}),{totalPrice:0,discount:0});return c.a.createElement("section",{className:"c-CartSummary"},c.a.createElement("div",{className:"c-CartSummary__inner"},c.a.createElement("div",{className:"container"},c.a.createElement("header",{className:"c-CartSummary__headerRow row"},c.a.createElement("div",{className:"col-12"},c.a.createElement("p",{className:"c-CartSummary__headerContent"},"PRICE DETAILS"))),c.a.createElement("section",{className:"c-CartSummary__details"},c.a.createElement("div",{className:"c-CartSummary__price row"},c.a.createElement("div",{className:"col-6"},c.a.createElement("p",null,"Total Price")),c.a.createElement("div",{className:"col-1"},c.a.createElement("p",null,":")),c.a.createElement("div",{className:"col-5"},c.a.createElement("p",{className:"float-right"},"\u20b9",r.totalPrice))),c.a.createElement("div",{className:"c-CartSummary__discount row"},c.a.createElement("div",{className:"col-6"},c.a.createElement("p",null,"Discount")),c.a.createElement("div",{className:"col-1"},c.a.createElement("p",null,":")),c.a.createElement("div",{className:"col-5"},c.a.createElement("p",{className:"float-right"},"\u20b9",r.discount)))),c.a.createElement("div",{className:"c-CartSummary__total row"},c.a.createElement("div",{className:"col-7"},"Total Payable"),c.a.createElement("div",{className:"col-5"},c.a.createElement("p",{className:"float-right"},"\u20b9",r.totalPrice-r.discount))))))});j.defaultProps={},j.propTypes={cartItems:_.a.object,products:_.a.array};var T=j,P=a(73),O=function(e){var t=e.cartItems,a=e.cartTotalCount,r=e.history,n=e.products,o=e.updateCart,l=!t||0===Object.keys(t).length,s=function(){r.push("/view/plp")};return c.a.createElement("div",{className:"c-Cart"},c.a.createElement(d.a,{inCart:!0}),c.a.createElement("main",{className:"container c-Cart__mainContent"},l?c.a.createElement("div",{className:"c-Cart__emptyCart"},c.a.createElement("h3",null,"Your cart is Empty!"),c.a.createElement("p",{className:"c-Cart__emptyCart__information"},"Please add some items from Available Products."),c.a.createElement(m.a,{buttonType:"button",classes:"btn btn__continueShopping",onClickHandler:s,buttonText:"Continue Shopping"})):c.a.createElement("div",{className:"row"},c.a.createElement("div",{className:"col-12 col-md-8 col-lg-8"},c.a.createElement(I,{cartItems:t,cartTotalCount:a,products:n,updateCart:o})),c.a.createElement("div",{className:"col-12 col-md-4 col-lg-4"},c.a.createElement(T,{cartItems:t,products:n})))),c.a.createElement(P.a,null))};O.defaultProps={},O.propTypes={};var w=Object(o.createPropsSelector)({cartItems:i.a,cartTotalCount:i.b,products:s.b}),L={updateCart:u.d},k=Object(n.b)(w,L)(Object(l.e)(O));t.default=k},60:function(e,t,a){"use strict";a.d(t,"b",(function(){return o})),a.d(t,"a",(function(){return l}));var r=a(59),c=a(56),n=Object(r.a)((function(e){return e.data}),(function(e){return e.pages.cart})),o=(Object(c.createGetSelector)(n,"formValues"),Object(c.createGetSelector)(n,"formErrors"),Object(c.createGetSelector)(n,"cartTotalCount")),l=Object(c.createGetSelector)(n,"cartItems")},62:function(e,t,a){"use strict";a.d(t,"b",(function(){return o})),a.d(t,"a",(function(){return l})),a.d(t,"d",(function(){return s})),a.d(t,"c",(function(){return i}));var r=a(59),c=a(56),n=Object(r.a)((function(e){return e.data}),(function(e){return e.pages.plp})),o=(Object(c.createGetSelector)(n,"formValues"),Object(c.createGetSelector)(n,"formErrors"),Object(c.createGetSelector)(n,"products")),l=Object(c.createGetSelector)(n,"filterRange"),s=Object(c.createGetSelector)(n,"sortBy"),i=Object(c.createGetSelector)(n,"searchString")},65:function(e,t,a){},66:function(e,t,a){},67:function(e,t,a){},69:function(e,t,a){},70:function(e,t,a){"use strict";var r=a(0),c=a.n(r),n=a(5),o=a.n(n),l=(a(71),function(e){var t=e.product,a=!!t.discount&&0!==t.discount;return c.a.createElement("div",{className:"c-ItemPrice"},t.discountedPrice&&c.a.createElement("span",{className:"c-ItemPrice__price"},"\u20b9",t.discountedPrice),a&&c.a.createElement(c.a.Fragment,null,c.a.createElement("span",{className:"c-ItemPrice__price--strikethrough"}," ",t.price.display),c.a.createElement("span",{className:"c-ItemPrice__discount"},t.discount,"% off")))});l.defaultProps={product:o.a.object},l.propTypes={},t.a=l},71:function(e,t,a){},72:function(e,t,a){"use strict";var r=a(0),c=a.n(r),n=a(23),o=a(58),l=a(57),s=a(5),i=a.n(s),u=a(22),m=a(9),d=a(10);a(65);function p(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"===typeof Symbol||!(Symbol.iterator in Object(e)))return;var a=[],r=!0,c=!1,n=void 0;try{for(var o,l=e[Symbol.iterator]();!(r=(o=l.next()).done)&&(a.push(o.value),!t||a.length!==t);r=!0);}catch(s){c=!0,n=s}finally{try{r||null==l.return||l.return()}finally{if(c)throw n}}return a}(e,t)||function(e,t){if(!e)return;if("string"===typeof e)return _(e,t);var a=Object.prototype.toString.call(e).slice(8,-1);"Object"===a&&e.constructor&&(a=e.constructor.name);if("Map"===a||"Set"===a)return Array.from(a);if("Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a))return _(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,r=new Array(t);at&&!e.classList.contains("scroll-down")?(e.classList.remove("scroll-up"),e.classList.add("scroll-down")):a {\n return (\n
\n
\n
\n
\n
\n
\n );\n};\n\nSectionLoader.defaultProps = {\n\n};\n\nSectionLoader.propTypes = {\n\n};\n\nexport default SectionLoader;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport './QuantityControlWidget.component.scss';\n\nconst QuantityControlWidget = ({cartTotalCount, cartItems, count, productId, removeItem, updateCart}) => {\n\n const updateCartHandler = (operationType) => {\n let countUpdated = count\n if (operationType === \"remove\") {\n countUpdated = countUpdated ? --countUpdated : 0\n countUpdated === 0 ? removeItem(productId) : cartItems[productId] = countUpdated\n cartTotalCount = --cartTotalCount\n } else {\n countUpdated = countUpdated ? ++countUpdated : 1\n cartItems[productId] = countUpdated\n cartTotalCount = ++cartTotalCount\n }\n updateCart(cartTotalCount, cartItems)\n }\n\n return (\n
\n updateCartHandler(\"remove\")}\n >\n -\n
\n \n {count}\n \n updateCartHandler(\"add\")}\n >\n +\n \n \n );\n};\n\nQuantityControlWidget.defaultProps = {\n\n};\n\nQuantityControlWidget.propTypes = {\n cartTotalCount: PropTypes.number,\n cartItems: PropTypes.object,\n count: PropTypes.number,\n productId: PropTypes.number,\n removeItem: PropTypes.func,\n updateCart: PropTypes.func\n};\n\nexport default QuantityControlWidget;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport './CartItem.component.scss';\nimport SectionLoader from '../SectionLoader/SectionLoader';\nimport ItemPrice from '../ItemPrice/ItemPrice';\nimport QuantityControlWidget from '../QuantityControlWidget/QuantityControlWidget';\n\nconst CartItem = ({count, cartTotalCount, cartItems, product, removeItem, updateCart}) => {\n\n return product ?\n
\n
\n
\n
\n {product.name}\n
\n
\n {product.name &&

{product.name}

}\n \n \n

removeItem(product.id)}>REMOVE

\n
\n
\n
\n
: \n};\n\nCartItem.defaultProps = {\n\n};\n\nCartItem.propTypes = {\n count: PropTypes.number,\n cartTotalCount: PropTypes.number,\n cartItems: PropTypes.object,\n product: PropTypes.object,\n removeItem: PropTypes.func,\n updateCart: PropTypes.func\n};\n\nexport default CartItem;","import CartItem from './CartItem.jsx';\n\nexport default CartItem;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport {createPropsSelector} from 'reselect-immutable-helpers';\nimport {getProducts} from './../../../pages/PLP/selectors'\nimport {getCartItems, getCartTotalCount} from './../../../pages/Cart/selectors'\nimport {updateCart} from './../../../pages/Cart/actions'\nimport CartItem from './../CartItem';\nimport './CartList.component.scss';\n\nconst CartList = ({cartItems, products, isCartEmpty, cartTotalCount, updateCart}) => {\n\n const removeItem = (productId) => {\n const quantity = cartItems && cartItems[productId]\n cartItems && delete cartItems[productId]\n let updatedTotalCount = cartTotalCount - quantity\n updateCart(updatedTotalCount, cartItems)\n }\n\n const cartItemTiles = !isCartEmpty && Object.keys(cartItems).map((itemId, key) => {\n const product = products && products.length > 0 && products.filter(product => product.id === itemId)[0]\n return (\n \n )\n })\n\n return (\n
\n {cartItemTiles}\n
\n );\n};\n\nCartList.defaultProps = {\n\n};\n\nCartList.propTypes = {\n cartItems: PropTypes.object,\n cartTotalCount: PropTypes.number,\n isCartEmpty: PropTypes.bool,\n products: PropTypes.array,\n updateCart: PropTypes.func\n};\n\nconst mapStateToProps = createPropsSelector({\n cartItems: getCartItems,\n cartTotalCount: getCartTotalCount,\n products: getProducts\n})\n\nconst mapDispatchToProps = ({\n updateCart\n})\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(CartList);","import CartList from './CartList.jsx';\n\nexport default CartList;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport './CartSummary.component.scss';\n\nconst CartSummary = ({cartItems, products}) => {\n\n const totalData = cartItems && Object.keys(cartItems).reduce((priceAccumulator, productId) => {\n const matchedProducts = products.filter(product => product.id === productId)\n const price = matchedProducts && matchedProducts.length > 0 && matchedProducts[0].price.display\n const discount = matchedProducts && matchedProducts.length > 0 && matchedProducts[0].discountAmount\n priceAccumulator.totalPrice = priceAccumulator.totalPrice + (price * cartItems[productId])\n priceAccumulator.discount = priceAccumulator.discount + (discount * cartItems[productId])\n return priceAccumulator\n }, {totalPrice: 0, discount: 0})\n\n return (\n
\n
\n
\n
\n
\n

PRICE DETAILS

\n
\n
\n
\n
\n

Total Price

\n

:

\n

₹{totalData.totalPrice}

\n
\n
\n

Discount

\n

:

\n

₹{totalData.discount}

\n
\n
\n
\n
Total Payable
\n

₹{totalData.totalPrice - totalData.discount}

\n
\n
\n
\n
\n );\n};\n\nCartSummary.defaultProps = {\n\n};\n\nCartSummary.propTypes = {\n cartItems: PropTypes.object,\n products: PropTypes.array\n};\n\nexport default CartSummary;","import CartSummary from './CartSummary.jsx';\n\nexport default CartSummary;","import React from 'react';\nimport {connect} from 'react-redux';\nimport {createPropsSelector} from 'reselect-immutable-helpers';\nimport {withRouter} from 'react-router-dom';\nimport {getProducts} from './../PLP/selectors';\nimport {getCartItems, getCartTotalCount} from './selectors'\nimport {updateCart} from './actions'\nimport './Cart.module.scss';\n\nimport Button from './../../components/atoms/Button'\nimport Header from './../../components/molecules/Header'\nimport CartList from './../../components/molecules/CartList'\nimport CartSummary from './../../components/molecules/CartSummary'\nimport Footer from './../../components/molecules/Footer'\n\nconst Cart = ({cartItems, cartTotalCount, history, products, updateCart}) => {\n\n const isCartEmpty = !cartItems || Object.keys(cartItems).length === 0\n \n const navigateToPlp = () => {\n history.push('/view/plp')\n }\n const getEmptyCartBlock = () => {\n return (\n
\n

Your cart is Empty!

\n

Please add some items from Available Products.

\n \n \n
\n )\n }\n\n return (\n
\n
\n
\n {\n isCartEmpty ? getEmptyCartBlock() : \n (\n
\n
\n \n
\n
\n \n
\n
\n )\n }\n
\n
\n
\n );\n};\n\nCart.defaultProps = {\n\n};\n\nCart.propTypes = {\n\n};\n\nconst mapStateToProps = createPropsSelector({\n cartItems: getCartItems,\n cartTotalCount: getCartTotalCount,\n products: getProducts\n})\n\nconst mapDispatchToProps = ({\n updateCart\n})\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(withRouter(Cart));","import Cart from './Cart.jsx';\n\nexport default Cart;","import {createSelector} from 'reselect'\nimport {createGetSelector} from 'reselect-immutable-helpers'\n\nconst getData = ({data}) => data\n\nexport const getCart = createSelector(\n getData,\n (dataState) => {\n return dataState.pages.cart\n }\n)\n\nexport const getFormValues = createGetSelector(getCart, 'formValues')\nexport const getFormErrors = createGetSelector(getCart, 'formErrors')\nexport const getCartTotalCount = createGetSelector(getCart, 'cartTotalCount')\nexport const getCartItems = createGetSelector(getCart, 'cartItems')","import {createSelector} from 'reselect'\nimport {createGetSelector} from 'reselect-immutable-helpers'\n\nconst getData = ({data}) => data\n\nexport const getPlp = createSelector(\n getData,\n (dataState) => {\n return dataState.pages.plp\n }\n)\n\nexport const getFormValues = createGetSelector(getPlp, 'formValues')\nexport const getFormErrors = createGetSelector(getPlp, 'formErrors')\nexport const getProducts = createGetSelector(getPlp, 'products')\nexport const getFilterRange = createGetSelector(getPlp, 'filterRange')\nexport const getSortSelection = createGetSelector(getPlp, 'sortBy')\nexport const getSearchString = createGetSelector(getPlp, 'searchString')","import React from 'react';\nimport PropTypes from 'prop-types';\nimport './ItemPrice.component.scss';\n\nconst ItemPrice = ({product}) => {\n\n const hasDiscount = !!product.discount && product.discount !== 0\n\n return (\n
\n {product.discountedPrice && ₹{product.discountedPrice}}\n {\n hasDiscount &&\n (\n \n {product.price.display}\n {product.discount}% off\n \n )\n }\n
\n );\n};\n\nItemPrice.defaultProps = {\n product: PropTypes.object\n};\n\nItemPrice.propTypes = {\n\n};\n\nexport default ItemPrice;","import React, {useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport {withRouter} from 'react-router-dom';\nimport {dispatchSearchString} from './../../../pages/PLP/actions'\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome'\nimport {faSearch} from '@fortawesome/free-solid-svg-icons'\nimport './Search.component.scss';\n\nconst Search = ({dispatchSearchString, inCart, history}) => {\n var timerId;\n const [searchInitiated, setSearchInitiated] = useState(false)\n\n const startSearch = (searchStringUpdated) => {\n dispatchSearchString(searchStringUpdated)\n inCart && history.push('/view/plp')\n }\n \n const debouncedStartSearch = (func, delay, searchStringUpdated) => {\n clearTimeout(timerId)\n timerId = setTimeout(() => func(searchStringUpdated), delay)\n }\n\n const onChangeHandler = (e) => {\n debouncedStartSearch(startSearch, 500, e.target.value)\n }\n\n return (\n
\n \n setSearchInitiated(!searchInitiated)} />\n
\n );\n};\n\nSearch.propTypes = {\n dispatchSearchString: PropTypes.func,\n inCart: PropTypes.bool\n};\n\nconst mapDispatchToProps = ({\n dispatchSearchString\n})\n\nexport default connect(\n null,\n mapDispatchToProps\n)(withRouter(Search));","import Search from './Search.jsx';\n\nexport default Search;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport './CartIcon.component.scss';\nimport {withRouter} from 'react-router-dom'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faShoppingCart } from '@fortawesome/free-solid-svg-icons'\nimport { createPropsSelector } from 'reselect-immutable-helpers';\n\nimport {getCartTotalCount} from './../../../pages/Cart/selectors'\n\nconst CartIcon = props => {\n\n const navigateToCart = () => {\n props.history.push('/view/cart')\n }\n\n return (\n
\n \n {props.cartTotalCount}\n
\n );\n};\n\nCartIcon.propTypes = {\n cartTotalCount: PropTypes.number\n};\n\nconst mapStateToProps = createPropsSelector({\n cartTotalCount: getCartTotalCount\n})\n\nexport default connect(mapStateToProps)(withRouter(CartIcon));","import CartIcon from './CartIcon.jsx';\n\nexport default CartIcon;","import React, {useEffect} from 'react';\nimport { Link } from 'react-router-dom';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faStar } from '@fortawesome/free-solid-svg-icons'\n\nimport Search from './../Search'\nimport CartIcon from './../CartIcon'\n\nconst Header = props => {\n\n useEffect(() => {\n const body = document.body;\n const scrollUp = \"scroll-up\";\n const scrollDown = \"scroll-down\";\n let lastScroll = 0;\n\n window.addEventListener(\"scroll\", () => {\n const currentScroll = window.pageYOffset;\n if (currentScroll === 0) {\n body.classList.remove(scrollUp);\n return;\n }\n \n if (currentScroll > lastScroll && !body.classList.contains(scrollDown)) {\n // down\n body.classList.remove(scrollUp);\n body.classList.add(scrollDown);\n } else if (currentScroll < lastScroll && body.classList.contains(scrollDown)) {\n // up\n body.classList.remove(scrollDown);\n body.classList.add(scrollUp);\n }\n lastScroll = currentScroll;\n });\n })\n \n return (\n
\n
\n
\n
\n
\n
{!props.inCart && }
\n
\n
\n
\n );\n};\n\nHeader.defaultProps = {\n\n};\n\nHeader.propTypes = {\n\n};\n\nexport default Header;","import Header from './Header.jsx';\n\nexport default Header;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './Footer.component.scss';\n\nconst Footer = props => {\n return (\n
\n

@Copyright

\n
\n );\n};\n\nFooter.defaultProps = {\n\n};\n\nFooter.propTypes = {\n\n};\n\nexport default Footer;","import Footer from './Footer.jsx';\n\nexport default Footer;","import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport * as fwIcons from '@fortawesome/free-solid-svg-icons'\nimport './Button.component.scss'\n\nconst Button = props => {\n return (\n \n {props.buttonIcon && }\n {props.buttonText}\n \n );\n};\n\nButton.defaultProps = {\n\n};\n\nButton.propTypes = {\n\n};\n\nexport default Button;","import Button from './Button.jsx';\n\nexport default Button;"],"sourceRoot":""} \ No newline at end of file diff --git a/static/js/8.db65044a.chunk.js b/static/js/8.97dfc8e0.chunk.js similarity index 99% rename from static/js/8.db65044a.chunk.js rename to static/js/8.97dfc8e0.chunk.js index 977f711..4421390 100644 --- a/static/js/8.db65044a.chunk.js +++ b/static/js/8.97dfc8e0.chunk.js @@ -1,2 +1,2 @@ -(this.webpackJsonpadobeassignment=this.webpackJsonpadobeassignment||[]).push([[8],{117:function(e,t,r){"use strict";r.r(t);var n=r(0),o=r.n(n),a=r(5),i=r.n(a),u=r(76),l=r.n(u),c=r(22),s=r(56),f=r(15),p=r(59),m=Object(p.a)((function(e){return e.data}),(function(e){return e.pages.login})),d=Object(s.createGetSelector)(m,"formValues"),b=Object(s.createGetSelector)(m,"formErrors"),y=r(77),h=function(e){var t=e.meta;return o.a.createElement("div",{className:"c-InputField"},o.a.createElement("div",{className:"form-group row ".concat(t.container_class?t.container_class:""),"aria-required":t.aria_required},o.a.createElement("label",{htmlFor:t.id,className:"col-12 col-sm-3 col-lg-12 col-form-label"},t.validation.required.isRequired&&!t.isStandAloneField&&o.a.createElement("span",{className:"required-indicator"},"* "),t.label),t.secondaryLabel?o.a.createElement("span",{className:"field--label-description"},t.secondaryLabel):null,o.a.createElement("div",{className:"col-12 col-sm-9 col-12"},t.error&&o.a.createElement("span",{className:"form-wrapper__field-error"},t.errorMessage),o.a.createElement("input",{className:"form-control ".concat(t.error?"error":""),type:t.type,id:t.id,name:t.name,"data-firstname":"null",value:t.fieldValues&&void 0!==t.fieldValues.stateValue?t.fieldValues.stateValue:t.fieldValues.propsValue,required:t.validation.required.isRequired?"required":"",minLength:t.validation.rules.minlength,maxLength:t.validation.rules.maxlength,placeholder:t.placeholder,"aria-required":t.aria_required,"aria-invalid":t.aria_invalid,onBlur:function(e){return t.handlers.onBlurHandler(t.validation,t.handlers.customBlurHandler,e)},onFocus:t.handlers.onFocusHandler,onChange:t.handlers.onChangeHandler,style:{width:"100%"}}))))};h.defaultProps={},h.propTypes={meta:i.a.object};var g=h,v=r(78),E=r.n(v),O=function(e){return o.a.createElement("div",{className:E.a.root})};function j(e){return(j="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function w(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function _(e){for(var t=1;t data\n\nexport const getLogin = createSelector(\n getData,\n (dataState) => {\n return dataState.pages.login\n }\n)\n\nexport const getFormValues = createGetSelector(getLogin, 'formValues')\nexport const getFormErrors = createGetSelector(getLogin, 'formErrors')","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst InputField = ({meta}) => {\n return (\n
\n \n \n {meta.secondaryLabel ? (\n {meta.secondaryLabel}\n ) : null}\n
\n {meta.error && (\n {meta.errorMessage}\n )}\n \n meta.handlers.onBlurHandler(\n meta.validation,\n meta.handlers.customBlurHandler,\n e\n )\n }\n onFocus={meta.handlers.onFocusHandler}\n onChange={meta.handlers.onChangeHandler}\n style={{width: '100%'}}\n />\n
\n
\n \n );\n};\n\nInputField.defaultProps = {\n\n};\n\nInputField.propTypes = {\n meta: PropTypes.object\n};\n\nexport default InputField;","import InputField from './InputField';\n\nexport default InputField;","import SelectOption from './SelectOption';\n\nexport default SelectOption;","import React from 'react';\nimport styles from './SelectOption.component.scss';\n\nconst SelectOption = props => {\n return (\n
\n
\n );\n};\n\nexport default SelectOption;","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport InputField from '../../../atoms/InputField'\nimport SelectOption from '../../../atoms/SelectOption'\n\n/**\n * INSERT_DESCRIPTION_HERE\n */\n\nclass FormFieldContainer extends React.Component {\n constructor(props) {\n super(props)\n const componentKey = this.props.propsData && this.props.propsData.id\n const passedValue = this.props.value || (this.props.propsData && this.props.propsData.value)\n this.state = {\n error: false,\n errorMessage: null\n }\n this.props.updateFormValues({\n formValues: {\n // ...this.props.formValues,\n [componentKey]: passedValue ? passedValue : ''\n }\n })\n this.props.updateFormErrors({\n formErrors: {\n // ...this.props.formErrors,\n [componentKey]: ''\n }\n })\n this.onChangeHandler = this.onChangeHandler.bind(this)\n this.onBlurHandler = this.onBlurHandler.bind(this)\n this.onFocusHandler = this.onFocusHandler.bind(this)\n }\n\n /**\n * validateFormField - validates the input field values\n * @param {object} event js event object\n * @param {object} validationObj fieldinput data as props\n */\n validateFormField(e, validationObj) {\n const {propsData, formErrors, formValues, updateFormErrors, updateFormValues} = this.props\n const inputValue = e.target.value && e.target.value\n let error = false\n let errorMessage = ''\n const componentKey = propsData.id\n const validRegex =\n validationObj.dataRuleRegex &&\n new RegExp(validationObj.dataRuleRegex.regex).test(inputValue)\n const poValidRegex =\n e.target.id === 'address1' &&\n validationObj.dataRuleRegex.po_regex &&\n new RegExp(validationObj.dataRuleRegex.po_regex, 'i').test(inputValue)\n\n if (e.target.tagName && e.target.tagName === 'SELECT') {\n if (\n validationObj.required.isRequired &&\n e.target.selectedIndex === 0 &&\n !validationObj.required.preSelected\n ) {\n error = true\n errorMessage = validationObj.required.error_message\n }\n } else if (e.target.tagName && e.target.tagName === 'INPUT') {\n if (validationObj.required.isRequired) {\n if (inputValue.trim('') === '') {\n error = true\n errorMessage = validationObj.required.error_message\n } else if (validationObj.dataRuleRegex && !validRegex) {\n error = true\n errorMessage = validationObj.dataRuleRegex.error_message\n } else if (validationObj.dataRuleRegex && poValidRegex) {\n error = true\n errorMessage = validationObj.dataRuleRegex.po_error_message\n }\n }\n } else {\n error = false\n errorMessage = null\n }\n\n this.setState({\n error\n })\n\n updateFormErrors({\n formErrors: {\n ...formErrors,\n [componentKey]: errorMessage\n }\n })\n\n updateFormValues({\n formValues: {\n ...formValues,\n [componentKey]: inputValue\n }\n })\n\n return error\n }\n\n onChangeHandler(event) {\n const value = event.target.value\n this.setState({\n value\n })\n }\n\n onFocusHandler(event) {\n this.setState({\n oldValue: event.target.value\n })\n }\n\n onBlurHandler(validation, customBlurHandler, e) {\n e.oldValue = this.state.oldValue\n const {customBlurFormatter} = this.props\n const isError = this.validateFormField(e, validation)\n if (!isError) {\n if (customBlurHandler && typeof customBlurHandler === 'function') {\n customBlurHandler(e)\n }\n if (customBlurFormatter && typeof customBlurFormatter === 'function') {\n this.setState({value: customBlurFormatter(e)})\n }\n }\n }\n\n render() {\n const {customBlurHandler, formErrors, propsData} = this.props\n const {elementType} = propsData\n const errorMessage = formErrors && formErrors[propsData.id]\n const meta = {\n ...this.props.propsData,\n className: this.state.error ? 'error' : '',\n error: this.state.error || errorMessage,\n errorMessage,\n handlers: {\n onBlurHandler: this.onBlurHandler,\n customBlurHandler,\n onChangeHandler: this.onChangeHandler,\n onFocusHandler: this.onFocusHandler\n },\n fieldValues: {\n propsValue: this.props.value,\n stateValue: this.state.value\n }\n }\n\n /**\n * switch function - returns HTML Tag depending upon the requirement\n * @param {string} elementType - element type e.g. input,select\n */\n switch (elementType) {\n case 'input':\n return \n case 'select':\n return \n default:\n return \n }\n }\n}\n\nFormFieldContainer.propTypes = {\n propsData: PropTypes.object.isRequired,\n className: PropTypes.string,\n customBlurHandler: PropTypes.func,\n customBlurFormatter: PropTypes.func,\n onFocus: PropTypes.func,\n value: PropTypes.string,\n formValues: PropTypes.object,\n formErrors: PropTypes.object,\n selectedCreditCard: PropTypes.object,\n updateFormValues: PropTypes.func,\n updateFormErrors: PropTypes.func\n}\n\nexport default FormFieldContainer\n","import FormFieldContainer from './FormFieldContainer';\n\nexport default FormFieldContainer;","import React from 'react'\nimport PropTypes from 'prop-types'\nimport FormFieldContainer from '../FormFieldContainer';\n\nclass Form extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n name: '',\n greeting: ''\n };\n this.handleChange = this.handleChange.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.onFocusHandler = this.onFocusHandler.bind(this)\n } \n \n handleChange(event) {\n this.setState({ name: event.target.value });\n }\n\n handleSubmit(event) {\n event.preventDefault();\n // fetch(`/api/greeting?name=${encodeURIComponent(this.state.name)}`)\n // .then(response => response.json())\n // .then(state => this.setState(state));\n\n }\n\n onFocusHandler() {\n console.log('Parent, on focus handler')\n }\n\n render() {\n const {\n context,\n fieldValues,\n formErrors,\n formValues,\n metaData,\n updateFormErrors,\n updateFormValues\n } = this.props\n // const jsonData = this.props && this.props.metaData\n const inputList = metaData && context ? Object.keys(metaData[context]) : []\n\n let inputListSection =\n inputList &&\n inputList.map((item, index) => {\n const formFieldObject = metaData[context][item]\n const formField = formFieldObject ? (\n \n ) : null\n return formField\n })\n\n inputListSection = inputListSection.filter((formFieldObject) => {\n return formFieldObject !== null\n })\n\n return (\n
\n
{inputListSection}
\n \n
\n )\n }\n}\n\nForm.propTypes = {\n context: PropTypes.string,\n customBlurHandler: PropTypes.func,\n customBlurFormatter: PropTypes.func,\n metaData: PropTypes.object.isRequired,\n className: PropTypes.string,\n fieldValues: PropTypes.object,\n formErrors: PropTypes.object,\n formValues: PropTypes.object,\n updateFormErrors: PropTypes.func,\n updateFormValues: PropTypes.func\n}\n\nexport default Form","import Form from './Form';\n\nexport default Form;","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport loginFormFields from './../../../config/forms-meta/login-form.json'\nimport Form from './../common/Form'\n\nconst LoginForm = props => {\n return (\n
\n
\n
\n );\n};\n\nLoginForm.propTypes = {\n updateFormValues: PropTypes.func,\n updateFormErrors: PropTypes.func,\n formValues: PropTypes.object,\n formErrors: PropTypes.object\n};\n\nexport default LoginForm;","import LoginForm from './LoginForm';\n\nexport default LoginForm;","import React from 'react';\nimport {withRouter} from 'react-router-dom'\nimport {gapi} from 'gapi-script'\n\nclass SocialLogin extends React.Component{\n\n constructor(props) {\n super(props)\n this.width = 254\n this.height = 50\n this.onSuccess = this.onSuccess.bind(this)\n this.onFailure = this.onFailure.bind(this)\n }\n\n componentDidMount() {\n gapi && gapi.signin2 && gapi.signin2.render('g-signin2', {\n 'scope': 'profile email',\n 'width': this.width,\n 'height': this.height,\n 'longtitle': true,\n 'theme': 'dark',\n 'onsuccess': this.onSuccess,\n 'onfailure': this.onFailure\n }); \n }\n\n onSuccess(googleUser) {\n console.log('Logged in as: ' + googleUser.getBasicProfile().getName());\n this.props.history.push('/view/plp')\n }\n\n onFailure(error) {\n console.log(error);\n }\n\n render() {\n return (\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n );\n }\n}\n\nSocialLogin.defaultProps = {\n\n};\n\nSocialLogin.propTypes = {\n\n};\n\nexport default withRouter(SocialLogin)","import SocialLogin from './SocialLogin.jsx';\n\nexport default SocialLogin;","import React from 'react';\nimport PropTypes from 'prop-types'\nimport {Link} from 'react-router-dom'\n\nconst Jumbotron = props => {\n return (\n
\n

{props.jumboText}

\n

{props.subText}

\n
\n

{props.jumboDescription}

\n

\n Go To PLP\n {props.furtherLink}\n

\n
\n );\n};\n\nJumbotron.propTypes = {\n furtherLink: PropTypes.string,\n jumboDescription: PropTypes.string,\n jumboText: PropTypes.string,\n subText: PropTypes.string\n};\n\nexport default Jumbotron;","import Jumbotron from './Jumbotron.jsx';\n\nexport default Jumbotron;","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styles from './Login.module.scss'\nimport {connect} from 'react-redux'\nimport {createPropsSelector} from 'reselect-immutable-helpers'\n\nimport * as actions from './actions'\nimport {getLogin, getFormErrors, getFormValues} from './selectors'\nimport LoginForm from '../../components/molecules/LoginForm'\nimport SocialLogin from '../../components/molecules/SocialLogin'\nimport Jumbotron from '../../components/molecules/common/Jumbotron'\n\nclass Login extends React.Component {\n constructor(props) {\n super(props)\n this.pageType = 'login'\n }\n\n componentDidMount() {\n const {initializeLogin} = this.props\n initializeLogin()\n }\n\n clicked() {\n console.log('login handler')\n }\n\n render() {\n const {updateFormErrors, updateFormValues, formErrors, formValues} = this.props\n return (\n
\n
\n
\n \n
\n
\n
\n

Let's get to know each other, shall we!

\n \n

OR

\n \n
\n
\n
\n
\n )\n }\n}\n\nLogin.propTypes = {\n initializeLogin: PropTypes.func,\n dataState: PropTypes.object,\n updateFormValues: PropTypes.func,\n updateFormErrors: PropTypes.func,\n formValues: PropTypes.object,\n formErrors: PropTypes.object\n}\n\nconst mapStateToProps = createPropsSelector({\n dataState: getLogin,\n formErrors: getFormErrors,\n formValues: getFormValues\n})\n\nconst mapDispatchToProps = {\n initializeLogin: actions.initializeLogin,\n updateFormErrors: actions.updateFormErrors,\n updateFormValues: actions.updateFormValues\n}\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(Login)\n","import Login from './Login.jsx';\n\nexport default Login;","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Login\":\"Login_Login__PPKkV\",\"loginContainer\":\"Login_loginContainer__24QXD\",\"c-login-intimation\":\"Login_c-login-intimation__1OU36\",\"loginSplitter\":\"Login_loginSplitter__1IrNe\"};"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["pages/Login/selectors.js","components/atoms/InputField/InputField.js","components/atoms/InputField/index.js","components/atoms/SelectOption/index.js","components/atoms/SelectOption/SelectOption.js","components/molecules/common/FormFieldContainer/FormFieldContainer.js","components/molecules/common/FormFieldContainer/index.js","components/molecules/common/Form/Form.js","components/molecules/common/Form/index.js","components/molecules/LoginForm/LoginForm.js","components/molecules/LoginForm/index.js","components/molecules/SocialLogin/SocialLogin.jsx","components/molecules/SocialLogin/index.js","components/molecules/common/Jumbotron/Jumbotron.jsx","components/molecules/common/Jumbotron/index.js","pages/Login/Login.jsx","pages/Login/index.js","pages/Login/Login.module.scss"],"names":["getLogin","createSelector","data","dataState","pages","login","getFormValues","createGetSelector","getFormErrors","InputField","meta","className","container_class","aria-required","aria_required","htmlFor","id","validation","required","isRequired","isStandAloneField","label","secondaryLabel","error","errorMessage","type","name","data-firstname","value","fieldValues","undefined","stateValue","propsValue","minLength","rules","minlength","maxLength","maxlength","placeholder","aria-invalid","aria_invalid","onBlur","e","handlers","onBlurHandler","customBlurHandler","onFocus","onFocusHandler","onChange","onChangeHandler","style","width","defaultProps","propTypes","PropTypes","object","SelectOption","props","styles","root","FormFieldContainer","componentKey","propsData","passedValue","state","updateFormValues","formValues","updateFormErrors","formErrors","bind","validationObj","this","inputValue","target","validRegex","dataRuleRegex","RegExp","regex","test","poValidRegex","po_regex","tagName","selectedIndex","preSelected","error_message","trim","po_error_message","setState","event","oldValue","customBlurFormatter","validateFormField","elementType","React","Component","string","func","selectedCreditCard","Form","greeting","handleChange","handleSubmit","preventDefault","console","log","context","metaData","inputList","Object","keys","inputListSection","map","item","index","formFieldObject","key","filter","onSubmit","marginTop","background","LoginForm","loginFormFields","SocialLogin","height","onSuccess","onFailure","gapi","signin2","render","googleUser","getBasicProfile","getName","history","push","data-width","data-height","data-size","data-button-type","data-auto-logout-link","data-use-continue-as","withRouter","Jumbotron","jumboText","subText","jumboDescription","to","role","marginLeft","furtherLink","Login","pageType","initializeLogin","onClick","clicked","loginContainer","loginSplitter","mapStateToProps","createPropsSelector","mapDispatchToProps","actions","connect","module","exports"],"mappings":"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","file":"static/js/8.97dfc8e0.chunk.js","sourcesContent":["import {createSelector} from 'reselect'\nimport {createGetSelector} from 'reselect-immutable-helpers'\n\nconst getData = ({data}) => data\n\nexport const getLogin = createSelector(\n getData,\n (dataState) => {\n return dataState.pages.login\n }\n)\n\nexport const getFormValues = createGetSelector(getLogin, 'formValues')\nexport const getFormErrors = createGetSelector(getLogin, 'formErrors')","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst InputField = ({meta}) => {\n return (\n
\n \n \n {meta.secondaryLabel ? (\n {meta.secondaryLabel}\n ) : null}\n
\n {meta.error && (\n {meta.errorMessage}\n )}\n \n meta.handlers.onBlurHandler(\n meta.validation,\n meta.handlers.customBlurHandler,\n e\n )\n }\n onFocus={meta.handlers.onFocusHandler}\n onChange={meta.handlers.onChangeHandler}\n style={{width: '100%'}}\n />\n
\n
\n
\n );\n};\n\nInputField.defaultProps = {\n\n};\n\nInputField.propTypes = {\n meta: PropTypes.object\n};\n\nexport default InputField;","import InputField from './InputField';\n\nexport default InputField;","import SelectOption from './SelectOption';\n\nexport default SelectOption;","import React from 'react';\nimport styles from './SelectOption.component.scss';\n\nconst SelectOption = props => {\n return (\n
\n
\n );\n};\n\nexport default SelectOption;","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport InputField from '../../../atoms/InputField'\nimport SelectOption from '../../../atoms/SelectOption'\n\n/**\n * INSERT_DESCRIPTION_HERE\n */\n\nclass FormFieldContainer extends React.Component {\n constructor(props) {\n super(props)\n const componentKey = this.props.propsData && this.props.propsData.id\n const passedValue = this.props.value || (this.props.propsData && this.props.propsData.value)\n this.state = {\n error: false,\n errorMessage: null\n }\n this.props.updateFormValues({\n formValues: {\n // ...this.props.formValues,\n [componentKey]: passedValue ? passedValue : ''\n }\n })\n this.props.updateFormErrors({\n formErrors: {\n // ...this.props.formErrors,\n [componentKey]: ''\n }\n })\n this.onChangeHandler = this.onChangeHandler.bind(this)\n this.onBlurHandler = this.onBlurHandler.bind(this)\n this.onFocusHandler = this.onFocusHandler.bind(this)\n }\n\n /**\n * validateFormField - validates the input field values\n * @param {object} event js event object\n * @param {object} validationObj fieldinput data as props\n */\n validateFormField(e, validationObj) {\n const {propsData, formErrors, formValues, updateFormErrors, updateFormValues} = this.props\n const inputValue = e.target.value && e.target.value\n let error = false\n let errorMessage = ''\n const componentKey = propsData.id\n const validRegex =\n validationObj.dataRuleRegex &&\n new RegExp(validationObj.dataRuleRegex.regex).test(inputValue)\n const poValidRegex =\n e.target.id === 'address1' &&\n validationObj.dataRuleRegex.po_regex &&\n new RegExp(validationObj.dataRuleRegex.po_regex, 'i').test(inputValue)\n\n if (e.target.tagName && e.target.tagName === 'SELECT') {\n if (\n validationObj.required.isRequired &&\n e.target.selectedIndex === 0 &&\n !validationObj.required.preSelected\n ) {\n error = true\n errorMessage = validationObj.required.error_message\n }\n } else if (e.target.tagName && e.target.tagName === 'INPUT') {\n if (validationObj.required.isRequired) {\n if (inputValue.trim('') === '') {\n error = true\n errorMessage = validationObj.required.error_message\n } else if (validationObj.dataRuleRegex && !validRegex) {\n error = true\n errorMessage = validationObj.dataRuleRegex.error_message\n } else if (validationObj.dataRuleRegex && poValidRegex) {\n error = true\n errorMessage = validationObj.dataRuleRegex.po_error_message\n }\n }\n } else {\n error = false\n errorMessage = null\n }\n\n this.setState({\n error\n })\n\n updateFormErrors({\n formErrors: {\n ...formErrors,\n [componentKey]: errorMessage\n }\n })\n\n updateFormValues({\n formValues: {\n ...formValues,\n [componentKey]: inputValue\n }\n })\n\n return error\n }\n\n onChangeHandler(event) {\n const value = event.target.value\n this.setState({\n value\n })\n }\n\n onFocusHandler(event) {\n this.setState({\n oldValue: event.target.value\n })\n }\n\n onBlurHandler(validation, customBlurHandler, e) {\n e.oldValue = this.state.oldValue\n const {customBlurFormatter} = this.props\n const isError = this.validateFormField(e, validation)\n if (!isError) {\n if (customBlurHandler && typeof customBlurHandler === 'function') {\n customBlurHandler(e)\n }\n if (customBlurFormatter && typeof customBlurFormatter === 'function') {\n this.setState({value: customBlurFormatter(e)})\n }\n }\n }\n\n render() {\n const {customBlurHandler, formErrors, propsData} = this.props\n const {elementType} = propsData\n const errorMessage = formErrors && formErrors[propsData.id]\n const meta = {\n ...this.props.propsData,\n className: this.state.error ? 'error' : '',\n error: this.state.error || errorMessage,\n errorMessage,\n handlers: {\n onBlurHandler: this.onBlurHandler,\n customBlurHandler,\n onChangeHandler: this.onChangeHandler,\n onFocusHandler: this.onFocusHandler\n },\n fieldValues: {\n propsValue: this.props.value,\n stateValue: this.state.value\n }\n }\n\n /**\n * switch function - returns HTML Tag depending upon the requirement\n * @param {string} elementType - element type e.g. input,select\n */\n switch (elementType) {\n case 'input':\n return \n case 'select':\n return \n default:\n return \n }\n }\n}\n\nFormFieldContainer.propTypes = {\n propsData: PropTypes.object.isRequired,\n className: PropTypes.string,\n customBlurHandler: PropTypes.func,\n customBlurFormatter: PropTypes.func,\n onFocus: PropTypes.func,\n value: PropTypes.string,\n formValues: PropTypes.object,\n formErrors: PropTypes.object,\n selectedCreditCard: PropTypes.object,\n updateFormValues: PropTypes.func,\n updateFormErrors: PropTypes.func\n}\n\nexport default FormFieldContainer\n","import FormFieldContainer from './FormFieldContainer';\n\nexport default FormFieldContainer;","import React from 'react'\nimport PropTypes from 'prop-types'\nimport FormFieldContainer from '../FormFieldContainer';\n\nclass Form extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n name: '',\n greeting: ''\n };\n this.handleChange = this.handleChange.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.onFocusHandler = this.onFocusHandler.bind(this)\n } \n \n handleChange(event) {\n this.setState({ name: event.target.value });\n }\n\n handleSubmit(event) {\n event.preventDefault();\n // fetch(`/api/greeting?name=${encodeURIComponent(this.state.name)}`)\n // .then(response => response.json())\n // .then(state => this.setState(state));\n\n }\n\n onFocusHandler() {\n console.log('Parent, on focus handler')\n }\n\n render() {\n const {\n context,\n fieldValues,\n formErrors,\n formValues,\n metaData,\n updateFormErrors,\n updateFormValues\n } = this.props\n // const jsonData = this.props && this.props.metaData\n const inputList = metaData && context ? Object.keys(metaData[context]) : []\n\n let inputListSection =\n inputList &&\n inputList.map((item, index) => {\n const formFieldObject = metaData[context][item]\n const formField = formFieldObject ? (\n \n ) : null\n return formField\n })\n\n inputListSection = inputListSection.filter((formFieldObject) => {\n return formFieldObject !== null\n })\n\n return (\n \n
{inputListSection}
\n \n \n )\n }\n}\n\nForm.propTypes = {\n context: PropTypes.string,\n customBlurHandler: PropTypes.func,\n customBlurFormatter: PropTypes.func,\n metaData: PropTypes.object.isRequired,\n className: PropTypes.string,\n fieldValues: PropTypes.object,\n formErrors: PropTypes.object,\n formValues: PropTypes.object,\n updateFormErrors: PropTypes.func,\n updateFormValues: PropTypes.func\n}\n\nexport default Form","import Form from './Form';\n\nexport default Form;","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport loginFormFields from './../../../config/forms-meta/login-form.json'\nimport Form from './../common/Form'\n\nconst LoginForm = props => {\n return (\n
\n
\n
\n );\n};\n\nLoginForm.propTypes = {\n updateFormValues: PropTypes.func,\n updateFormErrors: PropTypes.func,\n formValues: PropTypes.object,\n formErrors: PropTypes.object\n};\n\nexport default LoginForm;","import LoginForm from './LoginForm';\n\nexport default LoginForm;","import React from 'react';\nimport {withRouter} from 'react-router-dom'\nimport {gapi} from 'gapi-script'\n\nclass SocialLogin extends React.Component{\n\n constructor(props) {\n super(props)\n this.width = 254\n this.height = 50\n this.onSuccess = this.onSuccess.bind(this)\n this.onFailure = this.onFailure.bind(this)\n }\n\n componentDidMount() {\n gapi && gapi.signin2 && gapi.signin2.render('g-signin2', {\n 'scope': 'profile email',\n 'width': this.width,\n 'height': this.height,\n 'longtitle': true,\n 'theme': 'dark',\n 'onsuccess': this.onSuccess,\n 'onfailure': this.onFailure\n }); \n }\n\n onSuccess(googleUser) {\n console.log('Logged in as: ' + googleUser.getBasicProfile().getName());\n this.props.history.push('/view/plp')\n }\n\n onFailure(error) {\n console.log(error);\n }\n\n render() {\n return (\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n );\n }\n}\n\nSocialLogin.defaultProps = {\n\n};\n\nSocialLogin.propTypes = {\n\n};\n\nexport default withRouter(SocialLogin)","import SocialLogin from './SocialLogin.jsx';\n\nexport default SocialLogin;","import React from 'react';\nimport PropTypes from 'prop-types'\nimport {Link} from 'react-router-dom'\n\nconst Jumbotron = props => {\n return (\n
\n

{props.jumboText}

\n

{props.subText}

\n
\n

{props.jumboDescription}

\n

\n Go To PLP\n {props.furtherLink}\n

\n
\n );\n};\n\nJumbotron.propTypes = {\n furtherLink: PropTypes.string,\n jumboDescription: PropTypes.string,\n jumboText: PropTypes.string,\n subText: PropTypes.string\n};\n\nexport default Jumbotron;","import Jumbotron from './Jumbotron.jsx';\n\nexport default Jumbotron;","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styles from './Login.module.scss'\nimport {connect} from 'react-redux'\nimport {createPropsSelector} from 'reselect-immutable-helpers'\n\nimport * as actions from './actions'\nimport {getLogin, getFormErrors, getFormValues} from './selectors'\nimport LoginForm from '../../components/molecules/LoginForm'\nimport SocialLogin from '../../components/molecules/SocialLogin'\nimport Jumbotron from '../../components/molecules/common/Jumbotron'\n\nclass Login extends React.Component {\n constructor(props) {\n super(props)\n this.pageType = 'login'\n }\n\n componentDidMount() {\n const {initializeLogin} = this.props\n initializeLogin()\n }\n\n clicked() {\n console.log('login handler')\n }\n\n render() {\n const {updateFormErrors, updateFormValues, formErrors, formValues} = this.props\n return (\n
\n
\n
\n \n
\n
\n
\n

Let's get to know each other, shall we!

\n \n

OR

\n \n
\n
\n
\n
\n )\n }\n}\n\nLogin.propTypes = {\n initializeLogin: PropTypes.func,\n dataState: PropTypes.object,\n updateFormValues: PropTypes.func,\n updateFormErrors: PropTypes.func,\n formValues: PropTypes.object,\n formErrors: PropTypes.object\n}\n\nconst mapStateToProps = createPropsSelector({\n dataState: getLogin,\n formErrors: getFormErrors,\n formValues: getFormValues\n})\n\nconst mapDispatchToProps = {\n initializeLogin: actions.initializeLogin,\n updateFormErrors: actions.updateFormErrors,\n updateFormValues: actions.updateFormValues\n}\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(Login)\n","import Login from './Login.jsx';\n\nexport default Login;","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Login\":\"Login_Login__PPKkV\",\"loginContainer\":\"Login_loginContainer__24QXD\",\"c-login-intimation\":\"Login_c-login-intimation__1OU36\",\"loginSplitter\":\"Login_loginSplitter__1IrNe\"};"],"sourceRoot":""} \ No newline at end of file diff --git a/static/js/main.bd830296.chunk.js b/static/js/main.5d253b8a.chunk.js similarity index 96% rename from static/js/main.bd830296.chunk.js rename to static/js/main.5d253b8a.chunk.js index 7a36280..bdd9735 100644 --- a/static/js/main.bd830296.chunk.js +++ b/static/js/main.5d253b8a.chunk.js @@ -1,2 +1,2 @@ -(this.webpackJsonpadobeassignment=this.webpackJsonpadobeassignment||[]).push([[1],{10:function(t,e,n){"use strict";n.d(e,"b",(function(){return r})),n.d(e,"d",(function(){return o})),n.d(e,"a",(function(){return a})),n.d(e,"c",(function(){return c})),n.d(e,"f",(function(){return u})),n.d(e,"e",(function(){return i})),n.d(e,"h",(function(){return f})),n.d(e,"j",(function(){return l})),n.d(e,"g",(function(){return p})),n.d(e,"i",(function(){return s}));var r="DISPATCH_PRODUCTS",o="DISPATCH_SORT_SELECTION",a="DISPATCH_FILTER_RANGE",c="DISPATCH_SEARCH_STRING",u="UPDATE_BILLING_FORM_VALUES",i="UPDATE_BILLING_FORM_ERRORS",f=function(t){return{type:r,payload:{products:t}}},l=function(t){return{type:o,payload:{sortBy:t}}},p=function(t){return{type:a,payload:{filterRange:t}}},s=function(t){return{type:c,payload:{searchString:t}}}},13:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"c",(function(){return o})),n.d(e,"b",(function(){return a})),n.d(e,"d",(function(){return c}));var r="UPDATE_CART",o="UPDATE_BILLING_FORM_VALUES",a="UPDATE_BILLING_FORM_ERRORS",c=function(t,e){return{type:r,payload:{cartTotalCount:t,cartItems:e}}}},15:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"c",(function(){return o})),n.d(e,"b",(function(){return a})),n.d(e,"d",(function(){return c})),n.d(e,"f",(function(){return u})),n.d(e,"e",(function(){return i}));var r="LOGIN_DATA_STATE_RECEIVED",o="UPDATE_BILLING_FORM_VALUES",a="UPDATE_BILLING_FORM_ERRORS",c=function(){return function(t){}},u=function(t){return{type:o,payload:t}},i=function(t){return{type:a,payload:t}}},27:function(t,e,n){"use strict";var r=n(0),o=n.n(r),a=function(t){return o.a.createElement("div",{className:"c-PageLoader"},o.a.createElement("div",{className:"c-PageLoader__lds-ripple"},o.a.createElement("div",null),o.a.createElement("div",null)))};a.defaultProps={},a.propTypes={},e.a=a},34:function(t,e,n){t.exports=n(55)},53:function(t,e,n){},55:function(t,e,n){"use strict";n.r(e);var r=n(0),o=n.n(r),a=n(11),c=n.n(a),u=n(31),i=n(8),f=n.n(i),l=n(6),p=n(5),s=n.n(p),d=n(22),y=n(23),m=n(9),b=n(27).a,_=n(16),E=n.n(_);function O(t){return(O="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function h(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function S(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:C,e=arguments.length>1?arguments[1]:void 0;switch(e.type){case A.a:case A.b:case A.c:return t.mergeDeep(e.payload);default:return t}},j=n(10),U=f.a.Map({products:[]}),M=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:U,e=arguments.length>1?arguments[1]:void 0;switch(e.type){case j.b:case j.d:case j.a:case j.c:case j.e:case j.f:return t.mergeDeep(e.payload);default:return t}},G=n(13),B=f.a.Map({cartItems:{}}),F=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:B,e=arguments.length>1?arguments[1]:void 0;switch(e.type){case G.a:return t.set("cartItems",e.payload.cartItems).set("cartTotalCount",e.payload.cartTotalCount);case G.b:case G.c:return t.mergeDeep(e.payload);default:return t}},V=Object(l.c)({data:Object(l.c)({pages:Object(l.c)({login:N,plp:M,cart:F})})}),H=n(25),k=n.n(H);n(53),n(54);function x(t){return(x="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var X="object"===("undefined"===typeof window?"undefined":x(window))&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({serialize:{immutable:f.a}}):l.d,J=Object(l.e)(V,X(Object(l.a)(u.a)));k.a.setAppElement("#root"),c.a.render(o.a.createElement(L,{store:J}),document.getElementById("root"))}},[[34,2,3]]]); -//# sourceMappingURL=main.bd830296.chunk.js.map \ No newline at end of file +(this.webpackJsonpadobeassignment=this.webpackJsonpadobeassignment||[]).push([[1],{10:function(t,e,n){"use strict";n.d(e,"b",(function(){return r})),n.d(e,"d",(function(){return o})),n.d(e,"a",(function(){return a})),n.d(e,"c",(function(){return c})),n.d(e,"f",(function(){return u})),n.d(e,"e",(function(){return i})),n.d(e,"h",(function(){return f})),n.d(e,"j",(function(){return l})),n.d(e,"g",(function(){return p})),n.d(e,"i",(function(){return s}));var r="DISPATCH_PRODUCTS",o="DISPATCH_SORT_SELECTION",a="DISPATCH_FILTER_RANGE",c="DISPATCH_SEARCH_STRING",u="UPDATE_BILLING_FORM_VALUES",i="UPDATE_BILLING_FORM_ERRORS",f=function(t){return{type:r,payload:{products:t}}},l=function(t){return{type:o,payload:{sortBy:t}}},p=function(t){return{type:a,payload:{filterRange:t}}},s=function(t){return{type:c,payload:{searchString:t}}}},13:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"c",(function(){return o})),n.d(e,"b",(function(){return a})),n.d(e,"d",(function(){return c}));var r="UPDATE_CART",o="UPDATE_BILLING_FORM_VALUES",a="UPDATE_BILLING_FORM_ERRORS",c=function(t,e){return{type:r,payload:{cartTotalCount:t,cartItems:e}}}},15:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"c",(function(){return o})),n.d(e,"b",(function(){return a})),n.d(e,"d",(function(){return c})),n.d(e,"f",(function(){return u})),n.d(e,"e",(function(){return i}));var r="LOGIN_DATA_STATE_RECEIVED",o="UPDATE_BILLING_FORM_VALUES",a="UPDATE_BILLING_FORM_ERRORS",c=function(){return function(t){}},u=function(t){return{type:o,payload:t}},i=function(t){return{type:a,payload:t}}},27:function(t,e,n){"use strict";var r=n(0),o=n.n(r),a=function(t){return o.a.createElement("div",{className:"c-PageLoader"},o.a.createElement("div",{className:"c-PageLoader__lds-ripple"},o.a.createElement("div",null),o.a.createElement("div",null)))};a.defaultProps={},a.propTypes={},e.a=a},34:function(t,e,n){t.exports=n(55)},53:function(t,e,n){},55:function(t,e,n){"use strict";n.r(e);var r=n(0),o=n.n(r),a=n(11),c=n.n(a),u=n(31),i=n(8),f=n.n(i),l=n(6),p=n(5),s=n.n(p),d=n(22),y=n(23),m=n(9),b=n(27).a,_=n(16),E=n.n(_);function O(t){return(O="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function h(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function S(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:C,e=arguments.length>1?arguments[1]:void 0;switch(e.type){case A.a:case A.b:case A.c:return t.mergeDeep(e.payload);default:return t}},j=n(10),U=f.a.Map({products:[]}),M=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:U,e=arguments.length>1?arguments[1]:void 0;switch(e.type){case j.b:case j.d:case j.a:case j.c:case j.e:case j.f:return t.mergeDeep(e.payload);default:return t}},G=n(13),B=f.a.Map({cartItems:{}}),F=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:B,e=arguments.length>1?arguments[1]:void 0;switch(e.type){case G.a:return t.set("cartItems",e.payload.cartItems).set("cartTotalCount",e.payload.cartTotalCount);case G.b:case G.c:return t.mergeDeep(e.payload);default:return t}},V=Object(l.c)({data:Object(l.c)({pages:Object(l.c)({login:N,plp:M,cart:F})})}),H=n(25),k=n.n(H);n(53),n(54);function x(t){return(x="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var X="object"===("undefined"===typeof window?"undefined":x(window))&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({serialize:{immutable:f.a}}):l.d,J=Object(l.e)(V,X(Object(l.a)(u.a)));k.a.setAppElement("#root"),c.a.render(o.a.createElement(L,{store:J}),document.getElementById("root"))}},[[34,2,3]]]); +//# sourceMappingURL=main.5d253b8a.chunk.js.map \ No newline at end of file diff --git a/static/js/main.bd830296.chunk.js.map b/static/js/main.5d253b8a.chunk.js.map similarity index 99% rename from static/js/main.bd830296.chunk.js.map rename to static/js/main.5d253b8a.chunk.js.map index e28d3fc..9970a03 100644 --- a/static/js/main.bd830296.chunk.js.map +++ b/static/js/main.5d253b8a.chunk.js.map @@ -1 +1 @@ -{"version":3,"sources":["pages/PLP/actions.js","pages/Cart/actions.js","pages/Login/actions.js","components/molecules/PageLoader/PageLoader.jsx","components/molecules/PageLoader/index.js","router.jsx","pages/Login/reducer.js","pages/PLP/reducer.js","pages/Cart/reducer.js","reducer.js","main.js"],"names":["DISPATCH_PRODUCTS","DISPATCH_SORT_SELECTION","DISPATCH_FILTER_RANGE","DISPATCH_SEARCH_STRING","UPDATE_FORM_VALUES","UPDATE_FORM_ERRORS","dispatchProducts","products","type","payload","dispatchSortSelection","sortSelection","sortBy","dispatchFilterRange","filterRange","dispatchSearchString","searchString","UPDATE_CART","updateCart","cartTotalCount","cartItems","LOGIN_DATA_STATE_RECEIVED","initializeLogin","dispatch","updateFormValues","formValues","updateFormErrors","formErrors","PageLoader","props","className","defaultProps","propTypes","LoadableLogin","Loadable","loader","loading","LoadablePLP","LoadableCart","Router","store","this","basename","exact","path","component","React","Component","PropTypes","object","initialState","Immutable","Map","reducer","state","action","mergeDeep","set","combineReducers","data","pages","login","loginReducer","plp","plpReducer","cart","cartReducer","composeEnhancers","window","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","serialize","immutable","compose","createStore","applyMiddleware","thunk","ReactModal","setAppElement","ReactDOM","render","document","getElementById"],"mappings":"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","file":"static/js/main.bd830296.chunk.js","sourcesContent":["export const DISPATCH_PRODUCTS = 'DISPATCH_PRODUCTS'\nexport const DISPATCH_SORT_SELECTION = 'DISPATCH_SORT_SELECTION'\nexport const DISPATCH_FILTER_RANGE = 'DISPATCH_FILTER_RANGE'\nexport const DISPATCH_SEARCH_STRING = 'DISPATCH_SEARCH_STRING'\nexport const UPDATE_FORM_VALUES = 'UPDATE_BILLING_FORM_VALUES'\nexport const UPDATE_FORM_ERRORS = 'UPDATE_BILLING_FORM_ERRORS'\n\nexport const initializeLogin = () => (dispatch) => {\n // return Promise.all([\n // dispatch(initializeApp())\n // ])\n // .then(() => ({statusCode: 200}))\n // .catch((err) => ({statusCode: err.statusCode || 500}))\n}\n\nexport const dispatchProducts = (products) => {\n return {\n type: DISPATCH_PRODUCTS,\n payload: {products}\n }\n}\n\nexport const dispatchSortSelection = (sortSelection) => {\n return {\n type: DISPATCH_SORT_SELECTION,\n payload: {sortBy: sortSelection}\n }\n}\n\nexport const dispatchFilterRange = (filterRange) => {\n return {\n type: DISPATCH_FILTER_RANGE,\n payload: {filterRange}\n }\n}\n\nexport const dispatchSearchString = (searchString) => {\n return {\n type: DISPATCH_SEARCH_STRING,\n payload: {searchString}\n }\n}\n\nexport const updateFormValues = (formValues) => {\n return {\n type: UPDATE_FORM_VALUES,\n payload: formValues\n }\n}\n\nexport const updateFormErrors = (formErrors) => {\n return {\n type: UPDATE_FORM_ERRORS,\n payload: formErrors\n }\n}\n ","export const UPDATE_CART = 'UPDATE_CART'\nexport const UPDATE_FORM_VALUES = 'UPDATE_BILLING_FORM_VALUES'\nexport const UPDATE_FORM_ERRORS = 'UPDATE_BILLING_FORM_ERRORS'\n\nexport const initializeLogin = () => (dispatch) => {\n // return Promise.all([\n // dispatch(initializeApp())\n // ])\n // .then(() => ({statusCode: 200}))\n // .catch((err) => ({statusCode: err.statusCode || 500}))\n}\n\nexport const updateCart = (cartTotalCount, cartItems) => {\n return {\n type: UPDATE_CART,\n payload: {cartTotalCount, cartItems}\n }\n}\n\nexport const updateFormValues = (formValues) => {\n return {\n type: UPDATE_FORM_VALUES,\n payload: formValues\n }\n}\n\nexport const updateFormErrors = (formErrors) => {\n return {\n type: UPDATE_FORM_ERRORS,\n payload: formErrors\n }\n}\n ","export const LOGIN_DATA_STATE_RECEIVED = 'LOGIN_DATA_STATE_RECEIVED'\nexport const UPDATE_FORM_VALUES = 'UPDATE_BILLING_FORM_VALUES'\nexport const UPDATE_FORM_ERRORS = 'UPDATE_BILLING_FORM_ERRORS'\n\nexport const updateLoginDataState = (payload) => ({type: LOGIN_DATA_STATE_RECEIVED, payload})\n\nexport const initializeLogin = () => (dispatch) => {\n // return Promise.all([\n // dispatch(initializeApp())\n // ])\n // .then(() => ({statusCode: 200}))\n // .catch((err) => ({statusCode: err.statusCode || 500}))\n}\n\nexport const updateFormValues = (formValues) => {\n return {\n type: UPDATE_FORM_VALUES,\n payload: formValues\n }\n}\n\nexport const updateFormErrors = (formErrors) => {\n return {\n type: UPDATE_FORM_ERRORS,\n payload: formErrors\n }\n}\n ","import React from 'react';\n\nconst PageLoader = props => {\n return (\n
\n
\n
\n
\n
\n
\n )\n //
\n //
\n //
l
\n //
o
\n //
a
\n //
d
\n //
i
\n //
n
\n //
g
\n //
\n //
\n};\n\nPageLoader.defaultProps = {\n\n};\n\nPageLoader.propTypes = {\n\n};\n\nexport default PageLoader;","import PageLoader from './PageLoader.jsx';\n\nexport default PageLoader;","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {Provider} from 'react-redux'\nimport {BrowserRouter, Route} from 'react-router-dom';\nimport PageLoader from './components/molecules/PageLoader'\nimport Loadable from 'react-loadable'\n\nexport const LoadableLogin = Loadable({\n loader: () => import('./pages/Login'),\n loading: PageLoader\n})\n\nexport const LoadablePLP = Loadable({\n loader: () => import('./pages/PLP'),\n loading: PageLoader\n})\n\nexport const LoadableCart = Loadable({\n loader: () => import('./pages/Cart'),\n loading: PageLoader\n})\n\nclass Router extends React.Component {\n\n render() {\n const {store} = this.props\n return (\n \n \n \n \n \n \n \n \n )\n }\n}\n\nRouter.propTypes = {\n store: PropTypes.object\n}\n\nexport default Router\n","import Immutable from 'immutable'\n\nimport {LOGIN_DATA_STATE_RECEIVED, UPDATE_FORM_ERRORS, UPDATE_FORM_VALUES} from './actions'\n\nconst initialState = Immutable.Map()\n\nconst reducer = (state = initialState, action) => {\n switch (action.type) {\n case LOGIN_DATA_STATE_RECEIVED:\n case UPDATE_FORM_ERRORS:\n case UPDATE_FORM_VALUES:\n return state.mergeDeep(action.payload)\n default:\n return state\n }\n}\n\nexport default reducer\n","import Immutable from 'immutable'\n\nimport {\n DISPATCH_PRODUCTS,\n DISPATCH_SORT_SELECTION,\n DISPATCH_FILTER_RANGE,\n DISPATCH_SEARCH_STRING,\n UPDATE_FORM_ERRORS,\n UPDATE_FORM_VALUES\n} from './actions'\n\nconst initialState = Immutable.Map({\n products: []\n})\n\nconst reducer = (state = initialState, action) => {\n switch (action.type) {\n case DISPATCH_PRODUCTS:\n case DISPATCH_SORT_SELECTION:\n case DISPATCH_FILTER_RANGE:\n case DISPATCH_SEARCH_STRING:\n case UPDATE_FORM_ERRORS:\n case UPDATE_FORM_VALUES:\n return state.mergeDeep(action.payload)\n default:\n return state\n }\n}\n\nexport default reducer\n","import Immutable from 'immutable'\n\nimport {\n UPDATE_CART,\n UPDATE_FORM_ERRORS,\n UPDATE_FORM_VALUES\n} from './actions'\n\nconst initialState = Immutable.Map({\n cartItems: {}\n})\n\nconst reducer = (state = initialState, action) => {\n switch (action.type) {\n case UPDATE_CART:\n return state\n .set('cartItems', action.payload.cartItems)\n .set('cartTotalCount', action.payload.cartTotalCount)\n case UPDATE_FORM_ERRORS:\n case UPDATE_FORM_VALUES:\n return state.mergeDeep(action.payload)\n default:\n return state\n }\n}\n\nexport default reducer\n","import {combineReducers} from 'redux'\n\nimport loginReducer from './pages/Login/reducer'\nimport plpReducer from './pages/PLP/reducer'\nimport cartReducer from './pages/Cart/reducer'\n\nexport default combineReducers({\n data: combineReducers({\n pages: combineReducers({\n login: loginReducer,\n plp: plpReducer,\n cart: cartReducer\n })\n })\n})\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport thunk from 'redux-thunk'\nimport Immutable from 'immutable'\nimport {createStore, applyMiddleware, compose} from 'redux'\n// import * as serviceWorker from '../serviceWorker';\nimport Router from './router';\nimport reducer from './reducer'\nimport ReactModal from 'react-modal'\nimport './index.scss'\nimport 'bootstrap/dist/css/bootstrap.min.css'\n\nconst composeEnhancers =\n typeof window === 'object' &&\n window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? \n window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({\n serialize: { // prettier-ignore\n immutable: Immutable\n }\n }) : compose;\nconst store = createStore(reducer, composeEnhancers(applyMiddleware(thunk)))\n\nReactModal.setAppElement('#root');\nReactDOM.render(, document.getElementById('root'));\n\n// serviceWorker.unregister();\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["pages/PLP/actions.js","pages/Cart/actions.js","pages/Login/actions.js","components/molecules/PageLoader/PageLoader.jsx","components/molecules/PageLoader/index.js","router.jsx","pages/Login/reducer.js","pages/PLP/reducer.js","pages/Cart/reducer.js","reducer.js","main.js"],"names":["DISPATCH_PRODUCTS","DISPATCH_SORT_SELECTION","DISPATCH_FILTER_RANGE","DISPATCH_SEARCH_STRING","UPDATE_FORM_VALUES","UPDATE_FORM_ERRORS","dispatchProducts","products","type","payload","dispatchSortSelection","sortSelection","sortBy","dispatchFilterRange","filterRange","dispatchSearchString","searchString","UPDATE_CART","updateCart","cartTotalCount","cartItems","LOGIN_DATA_STATE_RECEIVED","initializeLogin","dispatch","updateFormValues","formValues","updateFormErrors","formErrors","PageLoader","props","className","defaultProps","propTypes","LoadableLogin","Loadable","loader","loading","LoadablePLP","LoadableCart","Router","store","this","basename","exact","path","component","React","Component","PropTypes","object","initialState","Immutable","Map","reducer","state","action","mergeDeep","set","combineReducers","data","pages","login","loginReducer","plp","plpReducer","cart","cartReducer","composeEnhancers","window","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","serialize","immutable","compose","createStore","applyMiddleware","thunk","ReactModal","setAppElement","ReactDOM","render","document","getElementById"],"mappings":"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","file":"static/js/main.5d253b8a.chunk.js","sourcesContent":["export const DISPATCH_PRODUCTS = 'DISPATCH_PRODUCTS'\nexport const DISPATCH_SORT_SELECTION = 'DISPATCH_SORT_SELECTION'\nexport const DISPATCH_FILTER_RANGE = 'DISPATCH_FILTER_RANGE'\nexport const DISPATCH_SEARCH_STRING = 'DISPATCH_SEARCH_STRING'\nexport const UPDATE_FORM_VALUES = 'UPDATE_BILLING_FORM_VALUES'\nexport const UPDATE_FORM_ERRORS = 'UPDATE_BILLING_FORM_ERRORS'\n\nexport const initializeLogin = () => (dispatch) => {\n // return Promise.all([\n // dispatch(initializeApp())\n // ])\n // .then(() => ({statusCode: 200}))\n // .catch((err) => ({statusCode: err.statusCode || 500}))\n}\n\nexport const dispatchProducts = (products) => {\n return {\n type: DISPATCH_PRODUCTS,\n payload: {products}\n }\n}\n\nexport const dispatchSortSelection = (sortSelection) => {\n return {\n type: DISPATCH_SORT_SELECTION,\n payload: {sortBy: sortSelection}\n }\n}\n\nexport const dispatchFilterRange = (filterRange) => {\n return {\n type: DISPATCH_FILTER_RANGE,\n payload: {filterRange}\n }\n}\n\nexport const dispatchSearchString = (searchString) => {\n return {\n type: DISPATCH_SEARCH_STRING,\n payload: {searchString}\n }\n}\n\nexport const updateFormValues = (formValues) => {\n return {\n type: UPDATE_FORM_VALUES,\n payload: formValues\n }\n}\n\nexport const updateFormErrors = (formErrors) => {\n return {\n type: UPDATE_FORM_ERRORS,\n payload: formErrors\n }\n}\n ","export const UPDATE_CART = 'UPDATE_CART'\nexport const UPDATE_FORM_VALUES = 'UPDATE_BILLING_FORM_VALUES'\nexport const UPDATE_FORM_ERRORS = 'UPDATE_BILLING_FORM_ERRORS'\n\nexport const initializeLogin = () => (dispatch) => {\n // return Promise.all([\n // dispatch(initializeApp())\n // ])\n // .then(() => ({statusCode: 200}))\n // .catch((err) => ({statusCode: err.statusCode || 500}))\n}\n\nexport const updateCart = (cartTotalCount, cartItems) => {\n return {\n type: UPDATE_CART,\n payload: {cartTotalCount, cartItems}\n }\n}\n\nexport const updateFormValues = (formValues) => {\n return {\n type: UPDATE_FORM_VALUES,\n payload: formValues\n }\n}\n\nexport const updateFormErrors = (formErrors) => {\n return {\n type: UPDATE_FORM_ERRORS,\n payload: formErrors\n }\n}\n ","export const LOGIN_DATA_STATE_RECEIVED = 'LOGIN_DATA_STATE_RECEIVED'\nexport const UPDATE_FORM_VALUES = 'UPDATE_BILLING_FORM_VALUES'\nexport const UPDATE_FORM_ERRORS = 'UPDATE_BILLING_FORM_ERRORS'\n\nexport const updateLoginDataState = (payload) => ({type: LOGIN_DATA_STATE_RECEIVED, payload})\n\nexport const initializeLogin = () => (dispatch) => {\n // return Promise.all([\n // dispatch(initializeApp())\n // ])\n // .then(() => ({statusCode: 200}))\n // .catch((err) => ({statusCode: err.statusCode || 500}))\n}\n\nexport const updateFormValues = (formValues) => {\n return {\n type: UPDATE_FORM_VALUES,\n payload: formValues\n }\n}\n\nexport const updateFormErrors = (formErrors) => {\n return {\n type: UPDATE_FORM_ERRORS,\n payload: formErrors\n }\n}\n ","import React from 'react';\n\nconst PageLoader = props => {\n return (\n
\n
\n
\n
\n
\n
\n )\n //
\n //
\n //
l
\n //
o
\n //
a
\n //
d
\n //
i
\n //
n
\n //
g
\n //
\n //
\n};\n\nPageLoader.defaultProps = {\n\n};\n\nPageLoader.propTypes = {\n\n};\n\nexport default PageLoader;","import PageLoader from './PageLoader.jsx';\n\nexport default PageLoader;","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {Provider} from 'react-redux'\nimport {BrowserRouter, Route} from 'react-router-dom';\nimport PageLoader from './components/molecules/PageLoader'\nimport Loadable from 'react-loadable'\n\nexport const LoadableLogin = Loadable({\n loader: () => import('./pages/Login'),\n loading: PageLoader\n})\n\nexport const LoadablePLP = Loadable({\n loader: () => import('./pages/PLP'),\n loading: PageLoader\n})\n\nexport const LoadableCart = Loadable({\n loader: () => import('./pages/Cart'),\n loading: PageLoader\n})\n\nclass Router extends React.Component {\n\n render() {\n const {store} = this.props\n return (\n \n \n \n \n \n \n \n \n )\n }\n}\n\nRouter.propTypes = {\n store: PropTypes.object\n}\n\nexport default Router\n","import Immutable from 'immutable'\n\nimport {LOGIN_DATA_STATE_RECEIVED, UPDATE_FORM_ERRORS, UPDATE_FORM_VALUES} from './actions'\n\nconst initialState = Immutable.Map()\n\nconst reducer = (state = initialState, action) => {\n switch (action.type) {\n case LOGIN_DATA_STATE_RECEIVED:\n case UPDATE_FORM_ERRORS:\n case UPDATE_FORM_VALUES:\n return state.mergeDeep(action.payload)\n default:\n return state\n }\n}\n\nexport default reducer\n","import Immutable from 'immutable'\n\nimport {\n DISPATCH_PRODUCTS,\n DISPATCH_SORT_SELECTION,\n DISPATCH_FILTER_RANGE,\n DISPATCH_SEARCH_STRING,\n UPDATE_FORM_ERRORS,\n UPDATE_FORM_VALUES\n} from './actions'\n\nconst initialState = Immutable.Map({\n products: []\n})\n\nconst reducer = (state = initialState, action) => {\n switch (action.type) {\n case DISPATCH_PRODUCTS:\n case DISPATCH_SORT_SELECTION:\n case DISPATCH_FILTER_RANGE:\n case DISPATCH_SEARCH_STRING:\n case UPDATE_FORM_ERRORS:\n case UPDATE_FORM_VALUES:\n return state.mergeDeep(action.payload)\n default:\n return state\n }\n}\n\nexport default reducer\n","import Immutable from 'immutable'\n\nimport {\n UPDATE_CART,\n UPDATE_FORM_ERRORS,\n UPDATE_FORM_VALUES\n} from './actions'\n\nconst initialState = Immutable.Map({\n cartItems: {}\n})\n\nconst reducer = (state = initialState, action) => {\n switch (action.type) {\n case UPDATE_CART:\n return state\n .set('cartItems', action.payload.cartItems)\n .set('cartTotalCount', action.payload.cartTotalCount)\n case UPDATE_FORM_ERRORS:\n case UPDATE_FORM_VALUES:\n return state.mergeDeep(action.payload)\n default:\n return state\n }\n}\n\nexport default reducer\n","import {combineReducers} from 'redux'\n\nimport loginReducer from './pages/Login/reducer'\nimport plpReducer from './pages/PLP/reducer'\nimport cartReducer from './pages/Cart/reducer'\n\nexport default combineReducers({\n data: combineReducers({\n pages: combineReducers({\n login: loginReducer,\n plp: plpReducer,\n cart: cartReducer\n })\n })\n})\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport thunk from 'redux-thunk'\nimport Immutable from 'immutable'\nimport {createStore, applyMiddleware, compose} from 'redux'\n// import * as serviceWorker from '../serviceWorker';\nimport Router from './router';\nimport reducer from './reducer'\nimport ReactModal from 'react-modal'\nimport './index.scss'\nimport 'bootstrap/dist/css/bootstrap.min.css'\n\nconst composeEnhancers =\n typeof window === 'object' &&\n window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? \n window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({\n serialize: { // prettier-ignore\n immutable: Immutable\n }\n }) : compose;\nconst store = createStore(reducer, composeEnhancers(applyMiddleware(thunk)))\n\nReactModal.setAppElement('#root');\nReactDOM.render(, document.getElementById('root'));\n\n// serviceWorker.unregister();\n"],"sourceRoot":""} \ No newline at end of file diff --git a/static/js/runtime-main.a69dc47c.js b/static/js/runtime-main.a7a0f556.js similarity index 94% rename from static/js/runtime-main.a69dc47c.js rename to static/js/runtime-main.a7a0f556.js index d109fea..82dd9a9 100644 --- a/static/js/runtime-main.a69dc47c.js +++ b/static/js/runtime-main.a7a0f556.js @@ -1,2 +1,2 @@ -!function(e){function t(t){for(var n,o,i=t[0],c=t[1],s=t[2],l=0,d=[];l