diff --git a/asset-manifest.json b/asset-manifest.json
index dc18e43..4e7a77d 100644
--- a/asset-manifest.json
+++ b/asset-manifest.json
@@ -5,17 +5,17 @@
"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.a8e7eab1.js",
- "runtime-main.js.map": "/adobeassignment/static/js/runtime-main.a8e7eab1.js.map",
+ "runtime-main.js": "/adobeassignment/static/js/runtime-main.a69dc47c.js",
+ "runtime-main.js.map": "/adobeassignment/static/js/runtime-main.a69dc47c.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.3ade66e4.chunk.css": "/adobeassignment/static/css/4.3ade66e4.chunk.css",
- "static/js/4.7f29f96a.chunk.js": "/adobeassignment/static/js/4.7f29f96a.chunk.js",
- "static/js/4.7f29f96a.chunk.js.map": "/adobeassignment/static/js/4.7f29f96a.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/5.5e513931.chunk.css": "/adobeassignment/static/css/5.5e513931.chunk.css",
- "static/js/5.2e0c51ce.chunk.js": "/adobeassignment/static/js/5.2e0c51ce.chunk.js",
- "static/js/5.2e0c51ce.chunk.js.map": "/adobeassignment/static/js/5.2e0c51ce.chunk.js.map",
+ "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/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",
@@ -25,10 +25,10 @@
"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",
"index.html": "/adobeassignment/index.html",
- "precache-manifest.8da81704f8936630d22d56a787fc25e9.js": "/adobeassignment/precache-manifest.8da81704f8936630d22d56a787fc25e9.js",
+ "precache-manifest.a1eff7c3eda0ad39e05a26a7d9d5efd6.js": "/adobeassignment/precache-manifest.a1eff7c3eda0ad39e05a26a7d9d5efd6.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.3ade66e4.chunk.css.map": "/adobeassignment/static/css/4.3ade66e4.chunk.css.map",
+ "static/css/4.9b9a457c.chunk.css.map": "/adobeassignment/static/css/4.9b9a457c.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,7 +36,7 @@
"static/js/3.1ef0ea03.chunk.js.LICENSE.txt": "/adobeassignment/static/js/3.1ef0ea03.chunk.js.LICENSE.txt"
},
"entrypoints": [
- "static/js/runtime-main.a8e7eab1.js",
+ "static/js/runtime-main.a69dc47c.js",
"static/css/3.de424728.chunk.css",
"static/js/3.1ef0ea03.chunk.js",
"static/css/main.531d6279.chunk.css",
diff --git a/index.html b/index.html
index 2932e2e..a5b902f 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.8da81704f8936630d22d56a787fc25e9.js b/precache-manifest.a1eff7c3eda0ad39e05a26a7d9d5efd6.js
similarity index 74%
rename from precache-manifest.8da81704f8936630d22d56a787fc25e9.js
rename to precache-manifest.a1eff7c3eda0ad39e05a26a7d9d5efd6.js
index 799c424..f039d18 100644
--- a/precache-manifest.8da81704f8936630d22d56a787fc25e9.js
+++ b/precache-manifest.a1eff7c3eda0ad39e05a26a7d9d5efd6.js
@@ -1,6 +1,6 @@
self.__precacheManifest = (self.__precacheManifest || []).concat([
{
- "revision": "1c2f7198d58ce22e491202ef87c17f86",
+ "revision": "43352f8d848b537af7a9840d1aa89870",
"url": "/adobeassignment/index.html"
},
{
@@ -8,11 +8,11 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([
"url": "/adobeassignment/static/css/3.de424728.chunk.css"
},
{
- "revision": "395bbb4b74f01962b30c",
- "url": "/adobeassignment/static/css/4.3ade66e4.chunk.css"
+ "revision": "787882e516e18a0f910a",
+ "url": "/adobeassignment/static/css/4.9b9a457c.chunk.css"
},
{
- "revision": "2c639af710001569cc27",
+ "revision": "475895437032a83e7095",
"url": "/adobeassignment/static/css/5.5e513931.chunk.css"
},
{
@@ -40,12 +40,12 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([
"url": "/adobeassignment/static/js/3.1ef0ea03.chunk.js.LICENSE.txt"
},
{
- "revision": "395bbb4b74f01962b30c",
- "url": "/adobeassignment/static/js/4.7f29f96a.chunk.js"
+ "revision": "787882e516e18a0f910a",
+ "url": "/adobeassignment/static/js/4.7008872c.chunk.js"
},
{
- "revision": "2c639af710001569cc27",
- "url": "/adobeassignment/static/js/5.2e0c51ce.chunk.js"
+ "revision": "475895437032a83e7095",
+ "url": "/adobeassignment/static/js/5.5cd61004.chunk.js"
},
{
"revision": "66e1709d3fe5e27669f3",
@@ -64,7 +64,7 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([
"url": "/adobeassignment/static/js/main.bd830296.chunk.js"
},
{
- "revision": "291183313515395c3956",
- "url": "/adobeassignment/static/js/runtime-main.a8e7eab1.js"
+ "revision": "630525c3088c65350a46",
+ "url": "/adobeassignment/static/js/runtime-main.a69dc47c.js"
}
]);
\ No newline at end of file
diff --git a/service-worker.js b/service-worker.js
index a3fd5de..e59aae5 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.8da81704f8936630d22d56a787fc25e9.js"
+ "/adobeassignment/precache-manifest.a1eff7c3eda0ad39e05a26a7d9d5efd6.js"
);
self.addEventListener('message', (event) => {
diff --git a/static/css/4.3ade66e4.chunk.css b/static/css/4.3ade66e4.chunk.css
deleted file mode 100644
index d59b78f..0000000
--- a/static/css/4.3ade66e4.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 .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}.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}
-/*# sourceMappingURL=4.3ade66e4.chunk.css.map */
\ No newline at end of file
diff --git a/static/css/4.3ade66e4.chunk.css.map b/static/css/4.3ade66e4.chunk.css.map
deleted file mode 100644
index 1ff6df5..0000000
--- a/static/css/4.3ade66e4.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"],"names":[],"mappings":"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","file":"4.3ade66e4.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 }\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 \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"]}
\ No newline at end of file
diff --git a/static/css/4.9b9a457c.chunk.css b/static/css/4.9b9a457c.chunk.css
new file mode 100644
index 0000000..ad000eb
--- /dev/null
+++ b/static/css/4.9b9a457c.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}.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
new file mode 100644
index 0000000..ebb4651
--- /dev/null
+++ b/static/css/4.9b9a457c.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.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.7008872c.chunk.js b/static/js/4.7008872c.chunk.js
new file mode 100644
index 0000000..21ab6de
--- /dev/null
+++ b/static/js/4.7008872c.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){},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 {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
\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 \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\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\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 );\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 );\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.7f29f96a.chunk.js b/static/js/4.7f29f96a.chunk.js
deleted file mode 100644
index a5547a5..0000000
--- a/static/js/4.7f29f96a.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 d=s&&s.map((function(e,t){return n.a.createElement(D,{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"},d)):n.a.createElement(J.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"},n.a.createElement("aside",{className:"c-ProductContainerWithTools__c-FilterAside"},n.a.createElement(k,{headerClass:"c-FilterTool__header",titleClass:"c-FilterTool__title",bodyClass:"c-FilterTool__body",footerClass:"c-FilterTool__footer"}))),n.a.createElement("div",{className:"col-10"},n.a.createElement(g,{headerClass:"c-SortTool__header",titleClass:"c-SortTool__title",bodyClass:"c-SortTool__body"}),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
Sort Options
\n {props.isModal && }\n \n
\n {selectionError &&
Please Select One of the options below.}\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: 200, max: 5000})\n\n const submitSelection = (e) => {\n props.dispatchFilterRange(filterRange)\n props.isModal && props.closeModal(e)\n }\n\n return (\n \n
\n
Filter Options
\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
\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 \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\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 (productsWithDiscountedPrice.length > 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\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\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 {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}) => {\n var timerId;\n const [searchInitiated, setSearchInitiated] = useState(false)\n\n const startSearch = (searchStringUpdated) => {\n dispatchSearchString(searchStringUpdated)\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};\n\nconst mapDispatchToProps = ({\n dispatchSearchString\n})\n\nexport default connect(\n null,\n mapDispatchToProps\n)(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 );\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 );\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.2e0c51ce.chunk.js.map b/static/js/5.2e0c51ce.chunk.js.map
deleted file mode 100644
index 35a4829..0000000
--- a/static/js/5.2e0c51ce.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["pages/Cart/Cart.module.scss","components/molecules/SectionLoader/SectionLoader.jsx","components/molecules/QuantityControlWidget/QuantityControlWidget.jsx","components/molecules/CartItem/CartItem.jsx","components/molecules/CartItem/index.js","components/molecules/CartList/CartList.jsx","components/molecules/CartList/index.js","components/molecules/CartSummary/CartSummary.jsx","components/molecules/CartSummary/index.js","pages/Cart/Cart.jsx","pages/Cart/index.js","pages/Cart/selectors.js","pages/PLP/selectors.js","components/molecules/ItemPrice/ItemPrice.jsx","components/molecules/Search/Search.jsx","components/molecules/Search/index.js","components/molecules/CartIcon/CartIcon.jsx","components/molecules/CartIcon/index.js","components/molecules/Header/Header.jsx","components/molecules/Header/index.js","components/molecules/Footer/Footer.jsx","components/molecules/Footer/index.js","components/atoms/Button/Button.jsx","components/atoms/Button/index.js"],"names":["module","exports","SectionLoader","props","className","defaultProps","propTypes","QuantityControlWidget","cartTotalCount","cartItems","count","productId","removeItem","updateCart","updateCartHandler","operationType","countUpdated","onClick","PropTypes","number","object","func","CartItem","product","src","img_url","alt","name","style","width","ItemPrice","id","CartList","products","isCartEmpty","quantity","cartItemTiles","Object","keys","map","itemId","key","length","filter","parseInt","bool","array","mapStateToProps","createPropsSelector","getCartItems","getCartTotalCount","getProducts","mapDispatchToProps","connect","CartSummary","totalData","reduce","priceAccumulator","matchedProducts","price","discount","discountAmount","totalPrice","Cart","history","navigateToPlp","push","Header","inCart","Button","buttonType","classes","onClickHandler","buttonText","Footer","withRouter","getCart","createSelector","data","dataState","pages","cart","createGetSelector","getPlp","plp","getFilterRange","getSortSelection","getSearchString","hasDiscount","discountedPrice","Fragment","Search","timerId","dispatchSearchString","useState","searchInitiated","setSearchInitiated","startSearch","searchStringUpdated","type","placeholder","onChange","e","delay","target","value","clearTimeout","setTimeout","icon","faSearch","CartIcon","faShoppingCart","useEffect","body","document","lastScroll","window","addEventListener","currentScroll","pageYOffset","classList","contains","remove","add","to","faStar","buttonName","buttonValue","disabled","buttonDisabled","autoFocus","buttonAutoFocus","buttonIcon","fwIcons"],"mappings":"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","file":"static/js/5.2e0c51ce.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.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\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport './SectionLoader.component.scss';\n\nconst SectionLoader = props => {\n return (\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

\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 );\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
\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\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 {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}) => {\n var timerId;\n const [searchInitiated, setSearchInitiated] = useState(false)\n\n const startSearch = (searchStringUpdated) => {\n dispatchSearchString(searchStringUpdated)\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};\n\nconst mapDispatchToProps = ({\n dispatchSearchString\n})\n\nexport default connect(\n null,\n mapDispatchToProps\n)(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 );\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 );\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.2e0c51ce.chunk.js b/static/js/5.5cd61004.chunk.js
similarity index 67%
rename from static/js/5.2e0c51ce.chunk.js
rename to static/js/5.5cd61004.chunk.js
index b126ce8..51f7787 100644
--- a/static/js/5.2e0c51ce.chunk.js
+++ b/static/js/5.5cd61004.chunk.js
@@ -1,2 +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){},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(10);a(65);function d(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 p(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 p(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 p(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")):a0&&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\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

\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 );\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
\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\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 );\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 );\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/runtime-main.a8e7eab1.js b/static/js/runtime-main.a69dc47c.js
similarity index 94%
rename from static/js/runtime-main.a8e7eab1.js
rename to static/js/runtime-main.a69dc47c.js
index fe18f90..d109fea 100644
--- a/static/js/runtime-main.a8e7eab1.js
+++ b/static/js/runtime-main.a69dc47c.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