From 15288167d007032c1b4b5d96fabf6d094846f163 Mon Sep 17 00:00:00 2001 From: sofiaJagerstrom Date: Fri, 19 Jan 2018 13:43:16 +0100 Subject: [PATCH 01/64] test --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 9cab5647f..1b91e7dac 100644 --- a/README.md +++ b/README.md @@ -11,3 +11,4 @@ What's in the project * [js/view/](https://github.com/kth-csc-iprog/dinnerplanner-html/tree/master/js/view) - here you can find a JavaScript code of an example view. The view sets up some initial components and their values. * [js/app.js](https://github.com/kth-csc-iprog/dinnerplanner-html/blob/master/js/app.js) - this is the overall code of the application. It is responsible for initial setup of the app (when the page loads for the first time). * [images/](https://github.com/kth-csc-iprog/dinnerplanner-html/tree/master/images) - folder contains some pictures you can use for your dishes +hej \ No newline at end of file From e566028b705aa830da8d768726914bd3abdf1bf7 Mon Sep 17 00:00:00 2001 From: voojagig Date: Fri, 19 Jan 2018 14:54:55 +0100 Subject: [PATCH 02/64] dagens --- js/app.js | 1 + js/model/dinnerModel.js | 52 +++++++++++++++++++++++++++++++++++------ 2 files changed, 46 insertions(+), 7 deletions(-) diff --git a/js/app.js b/js/app.js index 296b0bae2..ac594ad97 100644 --- a/js/app.js +++ b/js/app.js @@ -1,6 +1,7 @@ $(function() { //We instantiate our model var model = new DinnerModel(); + // And create the instance of ExampleView var exampleView = new ExampleView($("#exampleView")); diff --git a/js/model/dinnerModel.js b/js/model/dinnerModel.js index 47476a61b..b43f3a78f 100644 --- a/js/model/dinnerModel.js +++ b/js/model/dinnerModel.js @@ -4,39 +4,77 @@ var DinnerModel = function() { //TODO Lab 1 implement the data structure that will hold number of guest // and selected dishes for the dinner menu + var this.numberOfGuests = 4; + var this.menu = [101, 2, 201] + this.setNumberOfGuests = function(num) { - //TODO Lab 1 + if(num>0){ + this.numberOfGuests = num; + } } this.getNumberOfGuests = function() { - //TODO Lab 1 + return this.numberOfGuests; } //Returns the dish that is on the menu for selected type this.getSelectedDish = function(type) { - //TODO Lab 1 + for (dish in menu){ + for(dishId in dishes){ + if(dishes.[dishId].id === dish) && (dishes.[dishId].type === type){ + return dishes[dishId].name; + } + } + } + } } //Returns all the dishes on the menu. this.getFullMenu = function() { - //TODO Lab 1 + var fullMenu = []; + for (dishId in menu){ + fullMenu.push(this.getDish(dish)); + } + return fullMenu; } //Returns all ingredients for all the dishes on the menu. this.getAllIngredients = function() { - //TODO Lab 1 + var allIngredients = (); + for (dish in menu) { + var ings = []; + ings.push(this.getDish(dish).ingredients) + for (i in ings) { + allIngredients.push(ings[i]); + } + } + return allIngredients; } //Returns the total price of the menu (all the ingredients multiplied by number of guests). this.getTotalMenuPrice = function() { - //TODO Lab 1 + var ingredientsPrice = 0; + var groceries = this.getAllIngredients(); + + for (i in groceries){ + ingredientsPrice += groceries[i].price; + } + + var totalPrice = 0; + + totalPrice = numberOfGuests * ingredientsPrice; + + return totalPrice; } //Adds the passed dish to the menu. If the dish of that type already exists on the menu //it is removed from the menu and the new one added. this.addDishToMenu = function(id) { - //TODO Lab 1 + var newDish = this.getDish(id).type; + + for (i in menu) + } //Removes dish from menu From 5d0373ef95a12b746688014f0a29b5aa5ce82c33 Mon Sep 17 00:00:00 2001 From: voojagig Date: Fri, 19 Jan 2018 15:10:41 +0100 Subject: [PATCH 03/64] =?UTF-8?q?F=C3=B6rsta=20delen=20av=20dinnerModel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/model/dinnerModel.js | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/js/model/dinnerModel.js b/js/model/dinnerModel.js index b43f3a78f..00d51407d 100644 --- a/js/model/dinnerModel.js +++ b/js/model/dinnerModel.js @@ -71,15 +71,29 @@ var DinnerModel = function() { //Adds the passed dish to the menu. If the dish of that type already exists on the menu //it is removed from the menu and the new one added. this.addDishToMenu = function(id) { - var newDish = this.getDish(id).type; + var newType = this.getDish(id).type; - for (i in menu) + for (i in menu){ + var menuType = this.getDish(menu[i]).type; + if (newType === menuType){ + this.removeDishFromMenu(menu[i]); + } + } + + menu.push(id); } //Removes dish from menu this.removeDishFromMenu = function(id) { - //TODO Lab 1 + var i = 0; + for (dish in menu){ + + if (dish === id){ + menu.splice(i,1) + } + i++; + } } //function that returns all dishes of specific type (i.e. "starter", "main dish" or "dessert") From 4ba82bb98c0d6a9a91d8e0fa4c4b44b5faee3512 Mon Sep 17 00:00:00 2001 From: voojagig Date: Mon, 22 Jan 2018 15:06:42 +0100 Subject: [PATCH 04/64] Bootstrap mm --- home.html | 32 +++++++++++++++++ index.html | 2 +- style.css | 28 +++++++++++++++ view2-oaus.html | 36 +++++++++++++++++++ view2.html | 96 +++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 193 insertions(+), 1 deletion(-) create mode 100644 home.html create mode 100644 style.css create mode 100644 view2-oaus.html create mode 100644 view2.html diff --git a/home.html b/home.html new file mode 100644 index 000000000..4b09a1dcc --- /dev/null +++ b/home.html @@ -0,0 +1,32 @@ + + + + + + + + Dinner planner + + + + + + + + + +

Dinner Planner

+ +
+ +

+ The path of the righteous man is beset on all sides by the iniquities of the selfish and the tyranny of evil men. Blessed is he who, in the name of charity and good will, shepherds the weak through the valley of darkness, for he is truly his brother's keeper and the finder of lost children. And I will strike down upon thee with great vengeance and furious anger those who would attempt to poison and destroy My brothers. And you will know My name is the Lord when I lay My vengeance upon thee. +

+ +
+ +
+
+ + + \ No newline at end of file diff --git a/index.html b/index.html index 79a6b773b..134df8389 100644 --- a/index.html +++ b/index.html @@ -11,7 +11,7 @@ -
+

Dinner planner

diff --git a/style.css b/style.css new file mode 100644 index 000000000..0de523aa4 --- /dev/null +++ b/style.css @@ -0,0 +1,28 @@ +.startPage { + width: 80%; + max-width: 700px +} + +.row { + border: 1px solid black; +} + +.col { + border: 1px solid black; +} + +.viprovar { + border: 1px solid black; + height: 50px; + +} + +.hojd { + height: 500px; +} + +img { + width: 200px; + float: left; + margin: 1.66%; +} diff --git a/view2-oaus.html b/view2-oaus.html new file mode 100644 index 000000000..d55d86001 --- /dev/null +++ b/view2-oaus.html @@ -0,0 +1,36 @@ + + + + + + + + Dinner planner + + + + + + + + + +

Dinner Planner

+ +
+
+
+
Hejsan
+
+
+
+
rad 1
+
rad 2
+
+
+
+ +
+ + + \ No newline at end of file diff --git a/view2.html b/view2.html new file mode 100644 index 000000000..25ce03f70 --- /dev/null +++ b/view2.html @@ -0,0 +1,96 @@ + + + + + + + + Dinner planner + + + + + + + + + +

Dinner Planner

+ + + +
+
+
+
+ +

My Dinner

+ +
+
+ Number of guests: +
+
+ + +
+
+
+
+ +
+

Add another dish

+ + +
+ + + + +
+ + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + +
+
+ + + + +
+ + + +
+ + + \ No newline at end of file From c3d32c5a53a16bdc198d1c5d9f578863db0317b0 Mon Sep 17 00:00:00 2001 From: voojagig Date: Mon, 22 Jan 2018 19:23:22 +0100 Subject: [PATCH 05/64] =?UTF-8?q?Utkast=20p=C3=A5=20startsida?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ta bort navbar så borde den vara ok! --- landingPage.html | 70 ++++++++++++++++++++++++++++++++++++++++++++++++ start.css | 33 +++++++++++++++++++++++ 2 files changed, 103 insertions(+) create mode 100644 landingPage.html create mode 100644 start.css diff --git a/landingPage.html b/landingPage.html new file mode 100644 index 000000000..64a065ca9 --- /dev/null +++ b/landingPage.html @@ -0,0 +1,70 @@ + + + + Purrfect Match + + + + + + + + + + + + + + + +
+
+
+
+

Dinne Planner

+

What are we having?

+
+
+ +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/start.css b/start.css new file mode 100644 index 000000000..994d1f45f --- /dev/null +++ b/start.css @@ -0,0 +1,33 @@ +body { + background: url("https://fthmb.tqn.com/uZwLBI5jpv1YjOTwGGmFuSyUhg4=/1920x1280/filters:fill(auto,1)/dish-918613_1920-5812723a3df78c2c73a334d9.jpg"); + background-size: cover; + background-position: center; + font-family: 'Lato', sans-serif; + color: #2c3e50; + + +} + +html { + height: 100%; +} + +h1, h3 { + font-weight: 700; +} + +.content { + text-align: center; + padding-top: 25%; + text-shadow: 0px 4px 3px rgba(0,0,0,0.4) + 0px 8px 13px rgba(0,0,0,0.1), + 0px 18px 23px rgba(0,0,0,0.1); +} + + +hr { + border: 0; + width: 400px; + height: 1px; + background-image: linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.75), rgba(255, 255, 255, 0)); +} \ No newline at end of file From a9b9d3afd0be15170be49e9bbcec471c084c35c8 Mon Sep 17 00:00:00 2001 From: lindelindblad Date: Tue, 23 Jan 2018 21:33:33 +0100 Subject: [PATCH 06/64] Nytt utkast - View2B MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Vänster sidebar måste kollapsa samt ha rätt höjd. kaos i css-fil. --- style2B.css | 55 ++++++++++++++++++++++++++++++++ view-2B.html | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++ view2.html | 2 +- 3 files changed, 144 insertions(+), 1 deletion(-) create mode 100644 style2B.css create mode 100644 view-2B.html diff --git a/style2B.css b/style2B.css new file mode 100644 index 000000000..2b588f4ab --- /dev/null +++ b/style2B.css @@ -0,0 +1,55 @@ +.blog-sidebar { + background-color: lightgreen; + height: 800px; + /* margin-left: 0;*/ +} + +.nav-sidebar { + margin-right: -21px; /* 20px padding + 1px border */ + margin-bottom: 20px; + margin-left: -20px; +} +.nav-sidebar > li > a { + padding-right: 20px; + padding-left: 20px; +} + +.caption { + text-align: center; +} + + +html,body,.container { + height:100%; +} + +table { + width: 100%; + border: 1px solid black; +} + +.row { + height: 100%; + display: table-row; +} + +.row .no-float { + display: table-cell; + float: none; +} + +/* Sidebar modules for boxing content */ +.sidebar-module { + padding: 15px; + margin: 0 -15px 15px; +} +.sidebar-module-inset { + padding: 15px; + background-color: #f5f5f5; + border-radius: 4px; +} +.sidebar-module-inset p:last-child, +.sidebar-module-inset ul:last-child, +.sidebar-module-inset ol:last-child { + margin-bottom: 0; +} \ No newline at end of file diff --git a/view-2B.html b/view-2B.html new file mode 100644 index 000000000..14098154c --- /dev/null +++ b/view-2B.html @@ -0,0 +1,88 @@ + + + + View2 update 2 + + + + + + + + + +
+
+
+

Dinner Planner

+
+
+ +
+
+ + + +
+ + +
+
+ ... +
+

Dish 1

+

Select

+
+
+
+ +
+
+ ... +
+

Dish 1

+

Select

+
+
+
+
+
+ ... +
+

Dish 1

+

Select

+
+
+
+ +
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/view2.html b/view2.html index 25ce03f70..ca48564cc 100644 --- a/view2.html +++ b/view2.html @@ -22,7 +22,7 @@
-
+

My Dinner

From b4f2a4cb4c66b229e1c4e84acf9795480591874f Mon Sep 17 00:00:00 2001 From: sofiaJagerstrom Date: Wed, 24 Jan 2018 22:12:51 +0100 Subject: [PATCH 07/64] dagens view2 --- style2B.css | 13 +++++++++- view-2B.html | 68 ++++++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 75 insertions(+), 6 deletions(-) diff --git a/style2B.css b/style2B.css index 2b588f4ab..4d87eb9eb 100644 --- a/style2B.css +++ b/style2B.css @@ -52,4 +52,15 @@ table { .sidebar-module-inset ul:last-child, .sidebar-module-inset ol:last-child { margin-bottom: 0; -} \ No newline at end of file +} + +form{ + margin-bottom: 10px; +} +input#numberOfGuests{ + width: 40px; +} +img{ + width: 100%; + +} diff --git a/view-2B.html b/view-2B.html index 14098154c..1a7e71712 100644 --- a/view-2B.html +++ b/view-2B.html @@ -20,13 +20,13 @@

Dinner Planner

-
+ + + + +
+
+ +
+

Find a dish

+ + +
+ + + + +
+ +
+
+ + +
+
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/view3.html b/view3.html new file mode 100644 index 000000000..81d4178e3 --- /dev/null +++ b/view3.html @@ -0,0 +1,120 @@ + + + + View 3 + + + + + + + + + +
+
+
+

Dinner Planner

+
+
+ +
+ + + + +
+
+ +
+
+

Lasagne

+ ... +

+ Now that there is the Tec-9, a crappy spray gun from South Miami. This gun is advertised as the most popular gun in American crime. Do you believe that shit? It actually says that in the little book that comes with it: the most popular gun in American crime. Like they're actually proud of that shit. +

+ +
+
+ +
+ +

Ingredients for 3 people

+ + + + + + + + + + + + + +
mängdsakSEKpris
mängdsakSEKpris
+ +
+
+ +
+
+

Preparation

+

+ You think water moves fast? You should see ice. It moves like it has a mind. Like it knows it killed the world once and got a taste for murder. After the avalanche, it took us a week to climb out. Now, I don't know exactly when we turned on each other, but I know that seven of us survived the slide... and only five made it out. Now we took an oath, that I'm breaking now. We said we'd say it was the snow that killed the other two, but it wasn't. Nature is lethal but it doesn't hold a candle to man. +

+
+
+
+ +
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/view4.html b/view4.html new file mode 100644 index 000000000..5b71e9915 --- /dev/null +++ b/view4.html @@ -0,0 +1,132 @@ + + + + View 4 + + + + + + + + + +
+
+
+

Dinner Planner

+
+
+ +
+ + + + +
+
+ +
+

Add another dish

+ + +
+ + + + +
+ +
+
+ + +
+
+ + + + + + + + + + + + + \ No newline at end of file From f32a8abb23b1d592d318809d176e4c8008e42fda Mon Sep 17 00:00:00 2001 From: sofiaJagerstrom Date: Thu, 25 Jan 2018 16:46:16 +0100 Subject: [PATCH 09/64] views kopplade till data --- js/app.js | 3 +- js/model/dinnerModel.js | 9 +++-- js/view/exampleView.js | 7 ++-- js/view/mainPic.js | 17 +++++++++ js/view/sideView.js | 12 +++++++ style2D.css | 2 +- view-2D.html | 76 ++++++++++++++++++++++------------------- view3.html | 11 +++--- view4.html | 13 +++++-- 9 files changed, 96 insertions(+), 54 deletions(-) create mode 100644 js/view/mainPic.js create mode 100644 js/view/sideView.js diff --git a/js/app.js b/js/app.js index ac594ad97..f3bd3d367 100644 --- a/js/app.js +++ b/js/app.js @@ -4,7 +4,8 @@ $(function() { // And create the instance of ExampleView - var exampleView = new ExampleView($("#exampleView")); + var sideView = new SideView($("#sideView"), model); + var mainPic = new MainPic($("#mainPic"), model); /** * IMPORTANT: app.js is the only place where you are allowed to diff --git a/js/model/dinnerModel.js b/js/model/dinnerModel.js index 00d51407d..fa0f439c9 100644 --- a/js/model/dinnerModel.js +++ b/js/model/dinnerModel.js @@ -4,8 +4,8 @@ var DinnerModel = function() { //TODO Lab 1 implement the data structure that will hold number of guest // and selected dishes for the dinner menu - var this.numberOfGuests = 4; - var this.menu = [101, 2, 201] + this.numberOfGuests = 2; + this.menu = [101, 2, 201] this.setNumberOfGuests = function(num) { @@ -22,10 +22,9 @@ var DinnerModel = function() { this.getSelectedDish = function(type) { for (dish in menu){ for(dishId in dishes){ - if(dishes.[dishId].id === dish) && (dishes.[dishId].type === type){ + if(dishes.id === dish && dishes.type === type){ return dishes[dishId].name; } - } } } } @@ -41,7 +40,7 @@ var DinnerModel = function() { //Returns all ingredients for all the dishes on the menu. this.getAllIngredients = function() { - var allIngredients = (); + var allIngredients = []; for (dish in menu) { var ings = []; ings.push(this.getDish(dish).ingredients) diff --git a/js/view/exampleView.js b/js/view/exampleView.js index 508225ff7..41f695db8 100644 --- a/js/view/exampleView.js +++ b/js/view/exampleView.js @@ -34,6 +34,8 @@ var ExampleView = function (container, model) { * */ var numberOfGuests = container.find("#numberOfGuests"); + console.log(model.getNumberOfGuests()); + numberOfGuests.html(model.getNumberOfGuests()); /** * When we want references to some view elements to be available from outside of view, we @@ -48,11 +50,6 @@ var ExampleView = function (container, model) { this.plusButton = container.find("#plusGuest"); this.minusButton = container.find("#minusGuest"); - /** - * Here we use @var {jQuery object} numberOfGuests that is a reference to - * in our view to dynamically set it's value to "Hello World". - */ - numberOfGuests.html("Hello World"); } diff --git a/js/view/mainPic.js b/js/view/mainPic.js new file mode 100644 index 000000000..977fa1b4a --- /dev/null +++ b/js/view/mainPic.js @@ -0,0 +1,17 @@ + +/*main pictures +gets the pictures and name of the dishes for view2 and 4 */ +var MainPic = function (container, model) { + + + var dishName = container.find("#name"); + dishName.html(model.getDish(1).name); + + var dishImg = container.find("#img"); + console.log("images/" + model.getDish(1).image); + dishImg.html("images/" + model.getDish(1).image); + + var picBox = container.find("#template"); + +} + \ No newline at end of file diff --git a/js/view/sideView.js b/js/view/sideView.js new file mode 100644 index 000000000..06690b32b --- /dev/null +++ b/js/view/sideView.js @@ -0,0 +1,12 @@ + + +var SideView = function (container, model) { + + + var numberOfGuests = container.find("#numberOfGuests"); + numberOfGuests.html(model.getNumberOfGuests()); + + + +} + diff --git a/style2D.css b/style2D.css index 0eeb77dab..7718e4e91 100644 --- a/style2D.css +++ b/style2D.css @@ -1,7 +1,7 @@ form{ margin-bottom: 10px; } -input#numberOfGuests{ +#Guests{ width: 40px; } diff --git a/view-2D.html b/view-2D.html index b4d0cc593..ca719fb8a 100644 --- a/view-2D.html +++ b/view-2D.html @@ -19,14 +19,14 @@

Dinner Planner

-
+
@@ -131,6 +99,7 @@

Dish 1

+ diff --git a/view3.html b/view3.html index 0430cdfe2..df29d50b0 100644 --- a/view3.html +++ b/view3.html @@ -56,48 +56,31 @@

My Dinner

--> -
-
- -
-
-

Lasagne

- ... +
+
+
+

+

Now that there is the Tec-9, a crappy spray gun from South Miami. This gun is advertised as the most popular gun in American crime. Do you believe that shit? It actually says that in the little book that comes with it: the most popular gun in American crime. Like they're actually proud of that shit.

- -
-
+ +
+
-
- -

Ingredients for 3 people

- - - - - - - - - - - - - -
mängdsakSEKpris
mängdsakSEKpris
- -
-
+
+ +

+
+ +
+
-
-

Preparation

-

- You think water moves fast? You should see ice. It moves like it has a mind. Like it knows it killed the world once and got a taste for murder. After the avalanche, it took us a week to climb out. Now, I don't know exactly when we turned on each other, but I know that seven of us survived the slide... and only five made it out. Now we took an oath, that I'm breaking now. We said we'd say it was the snow that killed the other two, but it wasn't. Nature is lethal but it doesn't hold a candle to man. -

-
+
+

Preparation

+

+
@@ -117,7 +100,10 @@

Preparation

- 7 + + + + \ No newline at end of file diff --git a/view4.html b/view4.html index 755f30a86..607c1d50d 100644 --- a/view4.html +++ b/view4.html @@ -78,42 +78,13 @@

Add another dish

-
@@ -129,10 +100,11 @@

Dish 1

- + + From d1274c42ef7f7a7cc667050762eb030634cb6ab3 Mon Sep 17 00:00:00 2001 From: sofiaJagerstrom Date: Sun, 28 Jan 2018 00:50:20 +0100 Subject: [PATCH 12/64] view5 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit skapat view5 -behöver snyggas till fixat data hämtningen till view 3 och 5 --- js/app.js | 2 ++ js/view/mainPic.js | 4 ++- js/view/mainView3.js | 10 +++--- js/view/mainView5.js | 29 +++++++++++++++++ js/view/sideView.js | 1 - style2D.css | 3 ++ view-2D.html | 4 +-- view3.html | 13 ++++---- view5.html | 74 ++++++++++++++++++++++++++++++++++++++++++++ 9 files changed, 125 insertions(+), 15 deletions(-) create mode 100644 js/view/mainView5.js create mode 100644 view5.html diff --git a/js/app.js b/js/app.js index 94fcc9ad7..40d47b0cc 100644 --- a/js/app.js +++ b/js/app.js @@ -7,6 +7,8 @@ $(function() { var sideView = new SideView($("#sideView"), model); var mainPic = new MainPic($("#mainPic"), model); var mainView3 = new MainView3($("#mainView3"), model); + var mainView5 = new MainView5($("#mainView5"), model); + /** diff --git a/js/view/mainPic.js b/js/view/mainPic.js index 6fb028098..a6a3fd24e 100644 --- a/js/view/mainPic.js +++ b/js/view/mainPic.js @@ -7,10 +7,12 @@ var MainPic = function (container, model) { var menu = model.getFullMenu(); var string = ''; var picBox = container.find("#template"); + for(i in menu){ string += ''; } - + picBox.html(string); + } \ No newline at end of file diff --git a/js/view/mainView3.js b/js/view/mainView3.js index 6fc9dc35a..a5e8ffde5 100644 --- a/js/view/mainView3.js +++ b/js/view/mainView3.js @@ -21,13 +21,15 @@ var MainView3 = function (container, model) { var Table = container.find("#table"); var string = ''; - + + var sum = 0; + for(i in Dish.ingredients){ string += ''; - } - string += '
mängdsakSEKpris
' + Dish.ingredients[i].quantity + ' ' + Dish.ingredients[i].unit + '' + Dish.ingredients[i].name + 'SEK' + Dish.ingredients[i].price + '
SEK77.20
'; - Table.html(string); + string += 'SEK'+ sum + ''; + Table.html(string); + } \ No newline at end of file diff --git a/js/view/mainView5.js b/js/view/mainView5.js new file mode 100644 index 000000000..433782027 --- /dev/null +++ b/js/view/mainView5.js @@ -0,0 +1,29 @@ + +/*main pictures +gets the pictures and name of the dishes for view2 and 4 */ +var MainView5 = function (container, model) { + /*var menu =[1,2,101,102] + Ska ändras i labb 2, ska kopplas till det sökta. */ + var menu = model.getFullMenu(); + var string = ''; + var Pictures = container.find("#pictures"); + var Summa = container.find("#summa"); + var sum = 0; + + for(i in menu){ + for(n in menu[i].ingredients){ + sum += menu[i].ingredients[n].price; + } + string += ''; + + } + + + + + Pictures.html(string); + + Summa.html(sum + ' SEK'); + +} + \ No newline at end of file diff --git a/js/view/sideView.js b/js/view/sideView.js index 06690b32b..5222fb2ab 100644 --- a/js/view/sideView.js +++ b/js/view/sideView.js @@ -6,7 +6,6 @@ var SideView = function (container, model) { var numberOfGuests = container.find("#numberOfGuests"); numberOfGuests.html(model.getNumberOfGuests()); - } diff --git a/style2D.css b/style2D.css index 84b66a949..8ca0ba087 100644 --- a/style2D.css +++ b/style2D.css @@ -64,4 +64,7 @@ table { #imgDish{ width: 90%; +} +.knapp{ + margin-top: 20px } \ No newline at end of file diff --git a/view-2D.html b/view-2D.html index 64f781670..00de19432 100644 --- a/view-2D.html +++ b/view-2D.html @@ -35,10 +35,10 @@

My Dinner

Cost - + diff --git a/view3.html b/view3.html index df29d50b0..8bb784adc 100644 --- a/view3.html +++ b/view3.html @@ -35,16 +35,16 @@

My Dinner

- +
Cost
- +
SEK0.0000.0
@@ -61,11 +61,10 @@

My Dinner

-

- Now that there is the Tec-9, a crappy spray gun from South Miami. This gun is advertised as the most popular gun in American crime. Do you believe that shit? It actually says that in the little book that comes with it: the most popular gun in American crime. Like they're actually proud of that shit. -

- +
+ +
diff --git a/view5.html b/view5.html new file mode 100644 index 000000000..7928b82be --- /dev/null +++ b/view5.html @@ -0,0 +1,74 @@ + + + + View 5 + + + + + + + + + +
+
+
+

Dinner Planner

+
+
+
+
+

My dinner: 3 people

+
+
+ +
+
+ + +
+
+ +
+
+
    +

    Total:

    +
+ +
    +

    +
+ + +
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From d4ea33a3e8b151cddf0d393d9fde481fc707b774 Mon Sep 17 00:00:00 2001 From: lindelindblad Date: Sun, 28 Jan 2018 15:36:09 +0100 Subject: [PATCH 13/64] uppdatera landingpage --- landingPage.html | 44 ++++++---------------------- view4.html | 4 +-- view5.html | 4 ++- view5B.html | 76 ++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 90 insertions(+), 38 deletions(-) create mode 100644 view5B.html diff --git a/landingPage.html b/landingPage.html index 64a065ca9..a1a701b29 100644 --- a/landingPage.html +++ b/landingPage.html @@ -1,7 +1,7 @@ - Purrfect Match + Dinner Planner @@ -13,47 +13,21 @@ - +
-
+
-

Dinne Planner

-

What are we having?

-
+

Dinner Planner

+

+ Normally, both your asses would be dead as fucking fried chicken, but you happen to pull this shit while I'm in a transitional period so I don't wanna kill you, I wanna help you. But I can't give you this case, it don't belong to me. Besides, I've already been through too much shit this morning over this case to hand it over to your dumb ass. +


-
diff --git a/view4.html b/view4.html index 607c1d50d..57deb450e 100644 --- a/view4.html +++ b/view4.html @@ -20,7 +20,7 @@

Dinner Planner

- @@ -104,6 +95,8 @@

Add another dish

+ + diff --git a/view5.html b/view5.html index 7928b82be..dc81b099f 100644 --- a/view5.html +++ b/view5.html @@ -11,42 +11,38 @@ -
+

Dinner Planner

-
-
+ +
+

My dinner: 3 people

-
- +
+
-
+
-
-
    +

    Total:

    -
- -

    -
-
-
+
+
diff --git a/view6.html b/view6.html new file mode 100644 index 000000000..375353734 --- /dev/null +++ b/view6.html @@ -0,0 +1,109 @@ + + + + View 6 + + + + + + + + + +
+
+
+

Dinner Planner

+
+
+ +
+
+

My dinner: 3 people

+
+
+ +
+
+ + +
+ + +
+ + +
+ +
+ +

Freanch Toast

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies.

+
+ +
+

Preparation

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies. Nulla in augue lacinia, condimentum tellus ac, semper purus. Suspendisse commodo elit at velit tincidunt, ac laoreet ligula tincidunt.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet.

+ +
+
+
+ +
+ + +
+ +
+ +

Meatballs

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies.

+
+ +
+

Preparation

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies. Nulla in augue lacinia, condimentum tellus ac, semper purus. Suspendisse commodo elit at velit tincidunt, ac laoreet ligula tincidunt.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet.

+ +
+
+
+ +
+ + +
+ +
+ +

Ice Cream

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies.

+
+ +
+

Preparation

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies. Nulla in augue lacinia, condimentum tellus ac, semper purus. Suspendisse commodo elit at velit tincidunt, ac laoreet ligula tincidunt.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet.

+ +
+
+
+ + + + + + + + + + + + + + + + + +
+ + \ No newline at end of file From 7598a69285d5b152d68759c18b87e0a707984fa2 Mon Sep 17 00:00:00 2001 From: lindelindblad Date: Sun, 28 Jan 2018 18:29:43 +0100 Subject: [PATCH 15/64] kommentar MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit comittar för att kunna reverta den förra committen jag gjorde. --- view4.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/view4.html b/view4.html index 709de45bb..6c8aabffe 100644 --- a/view4.html +++ b/view4.html @@ -13,13 +13,13 @@
-
+

Dinner Planner

-
+
-<<<<<<< HEAD +
-
- +

Preparation

@@ -103,8 +102,7 @@

Preparation

- - + \ No newline at end of file diff --git a/view4.html b/view4.html index 6c8aabffe..439277e30 100644 --- a/view4.html +++ b/view4.html @@ -19,7 +19,10 @@

Dinner Planner

+<<<<<<< HEAD +======= +>>>>>>> parent of 55cdbac... Merge remote-tracking branch 'origin/master'
+
+ +
+
+ +
+
-
+ +
+
+
@@ -132,8 +108,6 @@

Add another dish

- - diff --git a/view5.html b/view5.html index 46a1cbf5d..7f0ff8d65 100644 --- a/view5.html +++ b/view5.html @@ -11,13 +11,12 @@ -
+

Dinner Planner

-<<<<<<< HEAD
@@ -25,35 +24,31 @@

My dinner: 3 people

-======= - -
-
-

My dinner: 3 people

-
-
- ->>>>>>> origin/master
-
+
-
+
+

    Total:

    +
+ +

    +
+
-
-
+
diff --git a/view6.html b/view6.html deleted file mode 100644 index 375353734..000000000 --- a/view6.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - View 6 - - - - - - - - - -
-
-
-

Dinner Planner

-
-
- -
-
-

My dinner: 3 people

-
-
- -
-
- - -
- - -
- - -
- -
- -

Freanch Toast

-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies.

-
- -
-

Preparation

-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies. Nulla in augue lacinia, condimentum tellus ac, semper purus. Suspendisse commodo elit at velit tincidunt, ac laoreet ligula tincidunt.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet.

- -
-
-
- -
- - -
- -
- -

Meatballs

-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies.

-
- -
-

Preparation

-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies. Nulla in augue lacinia, condimentum tellus ac, semper purus. Suspendisse commodo elit at velit tincidunt, ac laoreet ligula tincidunt.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet.

- -
-
-
- -
- - -
- -
- -

Ice Cream

-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies.

-
- -
-

Preparation

-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies. Nulla in augue lacinia, condimentum tellus ac, semper purus. Suspendisse commodo elit at velit tincidunt, ac laoreet ligula tincidunt.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet.

- -
-
-
- - - - - - - - - - - - - - - - - -
- - \ No newline at end of file From be666fd4a57a4d7770bf1abd3e7a88e2e635fcf2 Mon Sep 17 00:00:00 2001 From: lindelindblad Date: Sun, 28 Jan 2018 18:37:09 +0100 Subject: [PATCH 17/64] =?UTF-8?q?R=C3=A4tt=20filer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit View 4 och View 6 ok --- view4.html | 90 +++++++++++++++++++++++++++---------------- view6.html | 109 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 167 insertions(+), 32 deletions(-) create mode 100644 view6.html diff --git a/view4.html b/view4.html index 439277e30..f2c22f2de 100644 --- a/view4.html +++ b/view4.html @@ -12,17 +12,14 @@
-
+

Dinner Planner

-<<<<<<< HEAD -======= ->>>>>>> parent of 55cdbac... Merge remote-tracking branch 'origin/master'
+
+
+
+
+
-
+
+ +
@@ -108,6 +132,8 @@

Add another dish

+ + diff --git a/view6.html b/view6.html new file mode 100644 index 000000000..375353734 --- /dev/null +++ b/view6.html @@ -0,0 +1,109 @@ + + + + View 6 + + + + + + + + + +
+
+
+

Dinner Planner

+
+
+ +
+
+

My dinner: 3 people

+
+
+ +
+
+ + +
+ + +
+ + +
+ +
+ +

Freanch Toast

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies.

+
+ +
+

Preparation

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies. Nulla in augue lacinia, condimentum tellus ac, semper purus. Suspendisse commodo elit at velit tincidunt, ac laoreet ligula tincidunt.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet.

+ +
+
+
+ +
+ + +
+ +
+ +

Meatballs

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies.

+
+ +
+

Preparation

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies. Nulla in augue lacinia, condimentum tellus ac, semper purus. Suspendisse commodo elit at velit tincidunt, ac laoreet ligula tincidunt.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet.

+ +
+
+
+ +
+ + +
+ +
+ +

Ice Cream

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies.

+
+ +
+

Preparation

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies. Nulla in augue lacinia, condimentum tellus ac, semper purus. Suspendisse commodo elit at velit tincidunt, ac laoreet ligula tincidunt.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet.

+ +
+
+
+ + + + + + + + + + + + + + + + + +
+ + \ No newline at end of file From adb9c71a85ff745e128d06e700823bacabaec1a0 Mon Sep 17 00:00:00 2001 From: lindelindblad Date: Sun, 28 Jan 2018 20:56:15 +0100 Subject: [PATCH 18/64] update view4 --- ej aktuell/view4.html | 145 ++++++++++++++++++++++++++++++++++++++++++ view4.html | 82 ++++++++---------------- view4B.html | 132 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 304 insertions(+), 55 deletions(-) create mode 100644 ej aktuell/view4.html create mode 100644 view4B.html diff --git a/ej aktuell/view4.html b/ej aktuell/view4.html new file mode 100644 index 000000000..0a01a215e --- /dev/null +++ b/ej aktuell/view4.html @@ -0,0 +1,145 @@ + + + + View 4 + + + + + + + + + +
+
+ +

Dinner Planner

+ +
+ + + + +
+ + +
+ +
+ +
+

Add another dish

+ + +
+ + + + +
+
+
+ +
+
+ +
+
+ +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/view4.html b/view4.html index f2c22f2de..46f39ea47 100644 --- a/view4.html +++ b/view4.html @@ -10,45 +10,18 @@ -
-
- + +
+

Dinner Planner

- +
- - -
- +
-
-======= -
+
->>>>>>> origin/master +
-
+

Add another dish

@@ -107,14 +79,14 @@

Add another dish

-
-
-
-
- -
-
- + +
+
+ +
+
+
+
diff --git a/view4B.html b/view4B.html new file mode 100644 index 000000000..5498c3307 --- /dev/null +++ b/view4B.html @@ -0,0 +1,132 @@ + + + + View 4 + + + + + + + + + +
+
+
+

Dinner Planner

+
+
+ +
+ + + + +
+
+ +
+

Add another dish

+ + +
+ + + + +
+ +
+
+ + +
+
+ + + + + + + + + + + + +  From 3b561f0854bf8308e7df9078aad03ca8c77b474f Mon Sep 17 00:00:00 2001 From: sofiaJagerstrom Date: Sun, 28 Jan 2018 21:16:58 +0100 Subject: [PATCH 19/64] header --- style2D.css | 3 +++ view-2D.html | 6 ++++-- view3.html | 10 +++++----- view5.html | 12 ++++++------ view6.html | 4 ++-- 5 files changed, 20 insertions(+), 15 deletions(-) diff --git a/style2D.css b/style2D.css index 8ca0ba087..c6f0483fb 100644 --- a/style2D.css +++ b/style2D.css @@ -67,4 +67,7 @@ table { } .knapp{ margin-top: 20px +} +.pull-right{ + text-align: right; } \ No newline at end of file diff --git a/view-2D.html b/view-2D.html index 00de19432..4c9f24a45 100644 --- a/view-2D.html +++ b/view-2D.html @@ -12,8 +12,8 @@
-
-
+
+

Dinner Planner

@@ -100,6 +100,8 @@

Find a dish

+ + diff --git a/view3.html b/view3.html index 8bb784adc..27ff5c671 100644 --- a/view3.html +++ b/view3.html @@ -12,11 +12,11 @@
-
-
-

Dinner Planner

-
-
+
+
+

Dinner Planner

+
+
diff --git a/view5.html b/view5.html index 7f0ff8d65..e25a0a927 100644 --- a/view5.html +++ b/view5.html @@ -12,23 +12,23 @@
-
-
+
+

Dinner Planner

-
+

My dinner: 3 people

- +
-
+
@@ -45,7 +45,7 @@

-
+
diff --git a/view6.html b/view6.html index 375353734..3cf213fff 100644 --- a/view6.html +++ b/view6.html @@ -12,8 +12,8 @@
-
-
+
+

Dinner Planner

From 476a2b53c5ced2be02cd1d19bad6f59c360e4c94 Mon Sep 17 00:00:00 2001 From: sofiaJagerstrom Date: Sun, 28 Jan 2018 21:40:22 +0100 Subject: [PATCH 20/64] flyttning av filer --- view4B.html => ej aktuell/view4B.html | 0 view5B.html => ej aktuell/view5B.html | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename view4B.html => ej aktuell/view4B.html (100%) rename view5B.html => ej aktuell/view5B.html (100%) diff --git a/view4B.html b/ej aktuell/view4B.html similarity index 100% rename from view4B.html rename to ej aktuell/view4B.html diff --git a/view5B.html b/ej aktuell/view5B.html similarity index 100% rename from view5B.html rename to ej aktuell/view5B.html From c62c478339962c0ebdc78d36cb7315bc0856c631 Mon Sep 17 00:00:00 2001 From: sofiaJagerstrom Date: Sun, 28 Jan 2018 21:41:42 +0100 Subject: [PATCH 21/64] fler flyttningar... --- landingPage.html => ej aktuell/landingPage.html | 0 start.css => ej aktuell/start.css | 0 style.css => ej aktuell/style.css | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename landingPage.html => ej aktuell/landingPage.html (100%) rename start.css => ej aktuell/start.css (100%) rename style.css => ej aktuell/style.css (100%) diff --git a/landingPage.html b/ej aktuell/landingPage.html similarity index 100% rename from landingPage.html rename to ej aktuell/landingPage.html diff --git a/start.css b/ej aktuell/start.css similarity index 100% rename from start.css rename to ej aktuell/start.css diff --git a/style.css b/ej aktuell/style.css similarity index 100% rename from style.css rename to ej aktuell/style.css From cb6441131d4ca35672fd80c4e411b46f993922c2 Mon Sep 17 00:00:00 2001 From: lindelindblad Date: Sun, 28 Jan 2018 21:43:03 +0100 Subject: [PATCH 22/64] Updated stylesheet, remove obsolete files --- home.html => ej aktuell/home.html | 0 index.html => ej aktuell/index.html | 0 ej aktuell/landingPage.html | 4 ++-- style2D.css | 22 ++++++++++++++++++++++ view-2D.html => view2.html | 0 5 files changed, 24 insertions(+), 2 deletions(-) rename home.html => ej aktuell/home.html (100%) rename index.html => ej aktuell/index.html (100%) rename view-2D.html => view2.html (100%) diff --git a/home.html b/ej aktuell/home.html similarity index 100% rename from home.html rename to ej aktuell/home.html diff --git a/index.html b/ej aktuell/index.html similarity index 100% rename from index.html rename to ej aktuell/index.html diff --git a/ej aktuell/landingPage.html b/ej aktuell/landingPage.html index a1a701b29..ba6d3d3a3 100644 --- a/ej aktuell/landingPage.html +++ b/ej aktuell/landingPage.html @@ -7,11 +7,11 @@ - + - + diff --git a/style2D.css b/style2D.css index c6f0483fb..8396aeb00 100644 --- a/style2D.css +++ b/style2D.css @@ -12,6 +12,13 @@ img{ html,body,.container { height:100%; } +.home { + background: url("https://fthmb.tqn.com/uZwLBI5jpv1YjOTwGGmFuSyUhg4=/1920x1280/filters:fill(auto,1)/dish-918613_1920-5812723a3df78c2c73a334d9.jpg"); + background-size: cover; + background-position: center; + font-family: 'Lato', sans-serif; + color: #2c3e50; +} table { width: 100%; @@ -70,4 +77,19 @@ table { } .pull-right{ text-align: right; +} + +.content { + text-align: center; + padding-top: 25%; + text-shadow: 0px 4px 3px rgba(0,0,0,0.4) + 0px 8px 13px rgba(0,0,0,0.1), + 0px 18px 23px rgba(0,0,0,0.1); +} + +hr { + border: 0; + width: 400px; + height: 1px; + background-image: linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.75), rgba(255, 255, 255, 0)); } \ No newline at end of file diff --git a/view-2D.html b/view2.html similarity index 100% rename from view-2D.html rename to view2.html From c9ce3c5e153e6e09ad458e578a321aa1d963dfdf Mon Sep 17 00:00:00 2001 From: lindelindblad Date: Wed, 31 Jan 2018 14:53:08 +0100 Subject: [PATCH 23/64] kommentarer fr seminar MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ersätt this med var i deklarationen av DinnerModel. --- js/model/dinnerModel.js | 3 ++- ej aktuell/landingPage.html => landingPage.html | 0 view2.html | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) rename ej aktuell/landingPage.html => landingPage.html (100%) diff --git a/js/model/dinnerModel.js b/js/model/dinnerModel.js index 538ab1530..9af19fa4b 100644 --- a/js/model/dinnerModel.js +++ b/js/model/dinnerModel.js @@ -4,7 +4,7 @@ var DinnerModel = function() { //TODO Lab 1 implement the data structure that will hold number of guest // and selected dishes for the dinner menu - this.numberOfGuests = 2; + this.numberOfGuests = 2; // ej this. för då blir det en property som man kan nå utifrån. istället var. this.menu = [1, 100, 201] @@ -19,6 +19,7 @@ var DinnerModel = function() { } //Returns the dish that is on the menu for selected type + //borde kolla i dishes istället för att filtrera vilka rätter som visas i overview. this.getSelectedDish = function(type) { for (dish in menu){ for(dishId in dishes){ diff --git a/ej aktuell/landingPage.html b/landingPage.html similarity index 100% rename from ej aktuell/landingPage.html rename to landingPage.html diff --git a/view2.html b/view2.html index 4c9f24a45..f5439c25c 100644 --- a/view2.html +++ b/view2.html @@ -1,4 +1,4 @@ - + View2 update 2 From cf7f54b8082cc82d2eaf8a7501d916c8419ff84e Mon Sep 17 00:00:00 2001 From: lindelindblad Date: Tue, 6 Feb 2018 09:33:17 +0100 Subject: [PATCH 24/64] =?UTF-8?q?skapade=20mappar=20f=C3=B6r=20resp=20lab?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md => Lab1/README.md | 0 {ej aktuell => Lab1/ej aktuell}/home.html | 0 {ej aktuell => Lab1/ej aktuell}/index.html | 0 {ej aktuell => Lab1/ej aktuell}/start.css | 0 {ej aktuell => Lab1/ej aktuell}/style.css | 0 {ej aktuell => Lab1/ej aktuell}/style2B.css | 0 {ej aktuell => Lab1/ej aktuell}/view-2B.html | 0 .../ej aktuell}/view2-oaus.html | 0 {ej aktuell => Lab1/ej aktuell}/view2.html | 0 {ej aktuell => Lab1/ej aktuell}/view4.html | 0 {ej aktuell => Lab1/ej aktuell}/view4B.html | 0 {ej aktuell => Lab1/ej aktuell}/view5B.html | 0 {images => Lab1/images}/bakedbrie.jpg | Bin {images => Lab1/images}/icecream.jpg | Bin {images => Lab1/images}/meatballs.jpg | Bin {images => Lab1/images}/sourdough.jpg | Bin {images => Lab1/images}/toast.jpg | Bin {js => Lab1/js}/app.js | 0 {js => Lab1/js}/model/dinnerModel.js | 0 {js => Lab1/js}/view/exampleView.js | 0 {js => Lab1/js}/view/mainPic.js | 0 {js => Lab1/js}/view/mainView3.js | 0 {js => Lab1/js}/view/mainView5.js | 0 {js => Lab1/js}/view/sideView.js | 0 landingPage.html => Lab1/landingPage.html | 0 style2D.css => Lab1/style2D.css | 0 view2.html => Lab1/view2.html | 0 view3.html => Lab1/view3.html | 0 view4.html => Lab1/view4.html | 0 view5.html => Lab1/view5.html | 0 view6.html => Lab1/view6.html | 0 Lab2/README.md | 14 + Lab2/ej aktuell/home.html | 32 ++ Lab2/ej aktuell/index.html | 38 ++ Lab2/ej aktuell/start.css | 33 ++ Lab2/ej aktuell/style.css | 28 ++ Lab2/ej aktuell/style2B.css | 71 ++++ Lab2/ej aktuell/view-2B.html | 146 +++++++ Lab2/ej aktuell/view2-oaus.html | 36 ++ Lab2/ej aktuell/view2.html | 96 +++++ Lab2/ej aktuell/view4.html | 145 +++++++ Lab2/ej aktuell/view4B.html | 132 ++++++ Lab2/ej aktuell/view5B.html | 76 ++++ Lab2/images/bakedbrie.jpg | Bin 0 -> 2902 bytes Lab2/images/icecream.jpg | Bin 0 -> 6832 bytes Lab2/images/meatballs.jpg | Bin 0 -> 6748 bytes Lab2/images/sourdough.jpg | Bin 0 -> 4032 bytes Lab2/images/toast.jpg | Bin 0 -> 5633 bytes Lab2/js/app.js | 21 + Lab2/js/model/dinnerModel.js | 382 ++++++++++++++++++ Lab2/js/view/exampleView.js | 55 +++ Lab2/js/view/mainPic.js | 18 + Lab2/js/view/mainView3.js | 35 ++ Lab2/js/view/mainView5.js | 29 ++ Lab2/js/view/sideView.js | 11 + Lab2/landingPage.html | 44 ++ Lab2/style2D.css | 95 +++++ Lab2/view2.html | 108 +++++ Lab2/view3.html | 108 +++++ Lab2/view4.html | 113 ++++++ Lab2/view5.html | 76 ++++ Lab2/view6.html | 109 +++++ 62 files changed, 2051 insertions(+) rename README.md => Lab1/README.md (100%) rename {ej aktuell => Lab1/ej aktuell}/home.html (100%) rename {ej aktuell => Lab1/ej aktuell}/index.html (100%) rename {ej aktuell => Lab1/ej aktuell}/start.css (100%) rename {ej aktuell => Lab1/ej aktuell}/style.css (100%) rename {ej aktuell => Lab1/ej aktuell}/style2B.css (100%) rename {ej aktuell => Lab1/ej aktuell}/view-2B.html (100%) rename {ej aktuell => Lab1/ej aktuell}/view2-oaus.html (100%) rename {ej aktuell => Lab1/ej aktuell}/view2.html (100%) rename {ej aktuell => Lab1/ej aktuell}/view4.html (100%) rename {ej aktuell => Lab1/ej aktuell}/view4B.html (100%) rename {ej aktuell => Lab1/ej aktuell}/view5B.html (100%) rename {images => Lab1/images}/bakedbrie.jpg (100%) rename {images => Lab1/images}/icecream.jpg (100%) rename {images => Lab1/images}/meatballs.jpg (100%) rename {images => Lab1/images}/sourdough.jpg (100%) rename {images => Lab1/images}/toast.jpg (100%) rename {js => Lab1/js}/app.js (100%) rename {js => Lab1/js}/model/dinnerModel.js (100%) rename {js => Lab1/js}/view/exampleView.js (100%) rename {js => Lab1/js}/view/mainPic.js (100%) rename {js => Lab1/js}/view/mainView3.js (100%) rename {js => Lab1/js}/view/mainView5.js (100%) rename {js => Lab1/js}/view/sideView.js (100%) rename landingPage.html => Lab1/landingPage.html (100%) rename style2D.css => Lab1/style2D.css (100%) rename view2.html => Lab1/view2.html (100%) rename view3.html => Lab1/view3.html (100%) rename view4.html => Lab1/view4.html (100%) rename view5.html => Lab1/view5.html (100%) rename view6.html => Lab1/view6.html (100%) create mode 100644 Lab2/README.md create mode 100644 Lab2/ej aktuell/home.html create mode 100644 Lab2/ej aktuell/index.html create mode 100644 Lab2/ej aktuell/start.css create mode 100644 Lab2/ej aktuell/style.css create mode 100644 Lab2/ej aktuell/style2B.css create mode 100644 Lab2/ej aktuell/view-2B.html create mode 100644 Lab2/ej aktuell/view2-oaus.html create mode 100644 Lab2/ej aktuell/view2.html create mode 100644 Lab2/ej aktuell/view4.html create mode 100644 Lab2/ej aktuell/view4B.html create mode 100644 Lab2/ej aktuell/view5B.html create mode 100755 Lab2/images/bakedbrie.jpg create mode 100755 Lab2/images/icecream.jpg create mode 100755 Lab2/images/meatballs.jpg create mode 100755 Lab2/images/sourdough.jpg create mode 100755 Lab2/images/toast.jpg create mode 100644 Lab2/js/app.js create mode 100644 Lab2/js/model/dinnerModel.js create mode 100644 Lab2/js/view/exampleView.js create mode 100644 Lab2/js/view/mainPic.js create mode 100644 Lab2/js/view/mainView3.js create mode 100644 Lab2/js/view/mainView5.js create mode 100644 Lab2/js/view/sideView.js create mode 100644 Lab2/landingPage.html create mode 100644 Lab2/style2D.css create mode 100644 Lab2/view2.html create mode 100644 Lab2/view3.html create mode 100644 Lab2/view4.html create mode 100644 Lab2/view5.html create mode 100644 Lab2/view6.html diff --git a/README.md b/Lab1/README.md similarity index 100% rename from README.md rename to Lab1/README.md diff --git a/ej aktuell/home.html b/Lab1/ej aktuell/home.html similarity index 100% rename from ej aktuell/home.html rename to Lab1/ej aktuell/home.html diff --git a/ej aktuell/index.html b/Lab1/ej aktuell/index.html similarity index 100% rename from ej aktuell/index.html rename to Lab1/ej aktuell/index.html diff --git a/ej aktuell/start.css b/Lab1/ej aktuell/start.css similarity index 100% rename from ej aktuell/start.css rename to Lab1/ej aktuell/start.css diff --git a/ej aktuell/style.css b/Lab1/ej aktuell/style.css similarity index 100% rename from ej aktuell/style.css rename to Lab1/ej aktuell/style.css diff --git a/ej aktuell/style2B.css b/Lab1/ej aktuell/style2B.css similarity index 100% rename from ej aktuell/style2B.css rename to Lab1/ej aktuell/style2B.css diff --git a/ej aktuell/view-2B.html b/Lab1/ej aktuell/view-2B.html similarity index 100% rename from ej aktuell/view-2B.html rename to Lab1/ej aktuell/view-2B.html diff --git a/ej aktuell/view2-oaus.html b/Lab1/ej aktuell/view2-oaus.html similarity index 100% rename from ej aktuell/view2-oaus.html rename to Lab1/ej aktuell/view2-oaus.html diff --git a/ej aktuell/view2.html b/Lab1/ej aktuell/view2.html similarity index 100% rename from ej aktuell/view2.html rename to Lab1/ej aktuell/view2.html diff --git a/ej aktuell/view4.html b/Lab1/ej aktuell/view4.html similarity index 100% rename from ej aktuell/view4.html rename to Lab1/ej aktuell/view4.html diff --git a/ej aktuell/view4B.html b/Lab1/ej aktuell/view4B.html similarity index 100% rename from ej aktuell/view4B.html rename to Lab1/ej aktuell/view4B.html diff --git a/ej aktuell/view5B.html b/Lab1/ej aktuell/view5B.html similarity index 100% rename from ej aktuell/view5B.html rename to Lab1/ej aktuell/view5B.html diff --git a/images/bakedbrie.jpg b/Lab1/images/bakedbrie.jpg similarity index 100% rename from images/bakedbrie.jpg rename to Lab1/images/bakedbrie.jpg diff --git a/images/icecream.jpg b/Lab1/images/icecream.jpg similarity index 100% rename from images/icecream.jpg rename to Lab1/images/icecream.jpg diff --git a/images/meatballs.jpg b/Lab1/images/meatballs.jpg similarity index 100% rename from images/meatballs.jpg rename to Lab1/images/meatballs.jpg diff --git a/images/sourdough.jpg b/Lab1/images/sourdough.jpg similarity index 100% rename from images/sourdough.jpg rename to Lab1/images/sourdough.jpg diff --git a/images/toast.jpg b/Lab1/images/toast.jpg similarity index 100% rename from images/toast.jpg rename to Lab1/images/toast.jpg diff --git a/js/app.js b/Lab1/js/app.js similarity index 100% rename from js/app.js rename to Lab1/js/app.js diff --git a/js/model/dinnerModel.js b/Lab1/js/model/dinnerModel.js similarity index 100% rename from js/model/dinnerModel.js rename to Lab1/js/model/dinnerModel.js diff --git a/js/view/exampleView.js b/Lab1/js/view/exampleView.js similarity index 100% rename from js/view/exampleView.js rename to Lab1/js/view/exampleView.js diff --git a/js/view/mainPic.js b/Lab1/js/view/mainPic.js similarity index 100% rename from js/view/mainPic.js rename to Lab1/js/view/mainPic.js diff --git a/js/view/mainView3.js b/Lab1/js/view/mainView3.js similarity index 100% rename from js/view/mainView3.js rename to Lab1/js/view/mainView3.js diff --git a/js/view/mainView5.js b/Lab1/js/view/mainView5.js similarity index 100% rename from js/view/mainView5.js rename to Lab1/js/view/mainView5.js diff --git a/js/view/sideView.js b/Lab1/js/view/sideView.js similarity index 100% rename from js/view/sideView.js rename to Lab1/js/view/sideView.js diff --git a/landingPage.html b/Lab1/landingPage.html similarity index 100% rename from landingPage.html rename to Lab1/landingPage.html diff --git a/style2D.css b/Lab1/style2D.css similarity index 100% rename from style2D.css rename to Lab1/style2D.css diff --git a/view2.html b/Lab1/view2.html similarity index 100% rename from view2.html rename to Lab1/view2.html diff --git a/view3.html b/Lab1/view3.html similarity index 100% rename from view3.html rename to Lab1/view3.html diff --git a/view4.html b/Lab1/view4.html similarity index 100% rename from view4.html rename to Lab1/view4.html diff --git a/view5.html b/Lab1/view5.html similarity index 100% rename from view5.html rename to Lab1/view5.html diff --git a/view6.html b/Lab1/view6.html similarity index 100% rename from view6.html rename to Lab1/view6.html diff --git a/Lab2/README.md b/Lab2/README.md new file mode 100644 index 000000000..1b91e7dac --- /dev/null +++ b/Lab2/README.md @@ -0,0 +1,14 @@ +Interaction Programing - Lab assignment - HTML +================================================= + +This project contains the startup code for HTML version of the Interaction Programing course lab assignment. For more details on how to complete the assignment follow the instructions on the [course website](https://www.kth.se/social/course/DH2642). + +What's in the project +----- + +* [index.html](https://github.com/kth-csc-iprog/dinnerplanner-html/blob/master/index.html) - the only HTML page you will have in this project (though while testing you can create more to make it easier). You will need to implement the skeleton of the layout there and then through code (JavaScript) create the rest +* [js/model/dinnerModel.js](https://github.com/kth-csc-iprog/dinnerplanner-html/blob/master/js/model/dinnerModel.js) - is JavaScript file that contains the model code. The file contains the model (dish, ingredient and general dinner model) as well as methods and comments that you need to fully implement to support the dinner functionalities (guests, selected dishes, etc.) +* [js/view/](https://github.com/kth-csc-iprog/dinnerplanner-html/tree/master/js/view) - here you can find a JavaScript code of an example view. The view sets up some initial components and their values. +* [js/app.js](https://github.com/kth-csc-iprog/dinnerplanner-html/blob/master/js/app.js) - this is the overall code of the application. It is responsible for initial setup of the app (when the page loads for the first time). +* [images/](https://github.com/kth-csc-iprog/dinnerplanner-html/tree/master/images) - folder contains some pictures you can use for your dishes +hej \ No newline at end of file diff --git a/Lab2/ej aktuell/home.html b/Lab2/ej aktuell/home.html new file mode 100644 index 000000000..4b09a1dcc --- /dev/null +++ b/Lab2/ej aktuell/home.html @@ -0,0 +1,32 @@ + + + + + + + + Dinner planner + + + + + + + + + +

Dinner Planner

+ +
+ +

+ The path of the righteous man is beset on all sides by the iniquities of the selfish and the tyranny of evil men. Blessed is he who, in the name of charity and good will, shepherds the weak through the valley of darkness, for he is truly his brother's keeper and the finder of lost children. And I will strike down upon thee with great vengeance and furious anger those who would attempt to poison and destroy My brothers. And you will know My name is the Lord when I lay My vengeance upon thee. +

+ +
+ +
+
+ + + \ No newline at end of file diff --git a/Lab2/ej aktuell/index.html b/Lab2/ej aktuell/index.html new file mode 100644 index 000000000..134df8389 --- /dev/null +++ b/Lab2/ej aktuell/index.html @@ -0,0 +1,38 @@ + + + + + + + Dinner planner + + + + + + +
+

Dinner planner

+
+
+ Number of guests: +
+
+ + +
+
+
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/Lab2/ej aktuell/start.css b/Lab2/ej aktuell/start.css new file mode 100644 index 000000000..994d1f45f --- /dev/null +++ b/Lab2/ej aktuell/start.css @@ -0,0 +1,33 @@ +body { + background: url("https://fthmb.tqn.com/uZwLBI5jpv1YjOTwGGmFuSyUhg4=/1920x1280/filters:fill(auto,1)/dish-918613_1920-5812723a3df78c2c73a334d9.jpg"); + background-size: cover; + background-position: center; + font-family: 'Lato', sans-serif; + color: #2c3e50; + + +} + +html { + height: 100%; +} + +h1, h3 { + font-weight: 700; +} + +.content { + text-align: center; + padding-top: 25%; + text-shadow: 0px 4px 3px rgba(0,0,0,0.4) + 0px 8px 13px rgba(0,0,0,0.1), + 0px 18px 23px rgba(0,0,0,0.1); +} + + +hr { + border: 0; + width: 400px; + height: 1px; + background-image: linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.75), rgba(255, 255, 255, 0)); +} \ No newline at end of file diff --git a/Lab2/ej aktuell/style.css b/Lab2/ej aktuell/style.css new file mode 100644 index 000000000..0de523aa4 --- /dev/null +++ b/Lab2/ej aktuell/style.css @@ -0,0 +1,28 @@ +.startPage { + width: 80%; + max-width: 700px +} + +.row { + border: 1px solid black; +} + +.col { + border: 1px solid black; +} + +.viprovar { + border: 1px solid black; + height: 50px; + +} + +.hojd { + height: 500px; +} + +img { + width: 200px; + float: left; + margin: 1.66%; +} diff --git a/Lab2/ej aktuell/style2B.css b/Lab2/ej aktuell/style2B.css new file mode 100644 index 000000000..c092ab73b --- /dev/null +++ b/Lab2/ej aktuell/style2B.css @@ -0,0 +1,71 @@ +form{ + margin-bottom: 10px; +} +input#numberOfGuests{ + width: 40px; +} + +img{ + width: 100%; +} + +html,body,.container { + height:100%; +} + +table { + width: 100%; + border: 1px solid black; +} + +.sidebar { + background-color: lightgreen; + height: 800px; + /* margin-left: 0;*/ +} + +.nav-sidebar { + margin-right: -21px; /* 20px padding + 1px border */ + margin-bottom: 20px; + margin-left: -20px; +} +.nav-sidebar > li > a { + padding-right: 20px; + padding-left: 20px; +} + +.caption { + text-align: center; +} + +.jumbotron { + text-align: center; +} + +.row { + height: 100%; + display: table-row; +} + +.row .no-float { + display: table-cell; + float: none; +} + +/* Sidebar modules for boxing content */ +.sidebar-module { + padding: 15px; + margin: 0 -15px 15px; +} +.sidebar-module-inset { + padding: 15px; + background-color: #f5f5f5; + border-radius: 4px; +} +.sidebar-module-inset p:last-child, +.sidebar-module-inset ul:last-child, +.sidebar-module-inset ol:last-child { + margin-bottom: 0; +} + + diff --git a/Lab2/ej aktuell/view-2B.html b/Lab2/ej aktuell/view-2B.html new file mode 100644 index 000000000..1a7e71712 --- /dev/null +++ b/Lab2/ej aktuell/view-2B.html @@ -0,0 +1,146 @@ + + + + View2 update 2 + + + + + + + + + +
+
+
+

Dinner Planner

+
+
+ +
+ + +
+
+

Add another dish

+ +
+ + + + +
+
+
+ + + + + + + + + + + + \ No newline at end of file diff --git a/Lab2/ej aktuell/view2-oaus.html b/Lab2/ej aktuell/view2-oaus.html new file mode 100644 index 000000000..d55d86001 --- /dev/null +++ b/Lab2/ej aktuell/view2-oaus.html @@ -0,0 +1,36 @@ + + + + + + + + Dinner planner + + + + + + + + + +

Dinner Planner

+ +
+
+
+
Hejsan
+
+
+
+
rad 1
+
rad 2
+
+
+
+ +
+ + + \ No newline at end of file diff --git a/Lab2/ej aktuell/view2.html b/Lab2/ej aktuell/view2.html new file mode 100644 index 000000000..ca48564cc --- /dev/null +++ b/Lab2/ej aktuell/view2.html @@ -0,0 +1,96 @@ + + + + + + + + Dinner planner + + + + + + + + + +

Dinner Planner

+ + + +
+
+
+
+ +

My Dinner

+ +
+
+ Number of guests: +
+
+ + +
+
+
+
+ +
+

Add another dish

+ + +
+ + + + +
+ + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + +
+
+ + + + +
+ + + +
+ + + \ No newline at end of file diff --git a/Lab2/ej aktuell/view4.html b/Lab2/ej aktuell/view4.html new file mode 100644 index 000000000..0a01a215e --- /dev/null +++ b/Lab2/ej aktuell/view4.html @@ -0,0 +1,145 @@ + + + + View 4 + + + + + + + + + +
+
+ +

Dinner Planner

+ +
+ + + + +
+ + +
+ +
+ +
+

Add another dish

+ + +
+ + + + +
+
+
+ +
+
+ +
+
+ +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Lab2/ej aktuell/view4B.html b/Lab2/ej aktuell/view4B.html new file mode 100644 index 000000000..5498c3307 --- /dev/null +++ b/Lab2/ej aktuell/view4B.html @@ -0,0 +1,132 @@ + + + + View 4 + + + + + + + + + +
+
+
+

Dinner Planner

+
+
+ +
+ + + + +
+
+ +
+

Add another dish

+ + +
+ + + + +
+ +
+
+ + +
+
+ + + + + + + + + + + + +  diff --git a/Lab2/ej aktuell/view5B.html b/Lab2/ej aktuell/view5B.html new file mode 100644 index 000000000..e60c1414c --- /dev/null +++ b/Lab2/ej aktuell/view5B.html @@ -0,0 +1,76 @@ + + + + View 5 + + + + + + + + + +
+
+
+

Dinner Planner

+
+
+ +
+
+

My dinner: 3 people

+
+
+ +
+
+ + +
+
+ + +
+
+
    +

    Total:

    +
+ +
    +

    +
+ + +
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Lab2/images/bakedbrie.jpg b/Lab2/images/bakedbrie.jpg new file mode 100755 index 0000000000000000000000000000000000000000..6b7a2982c34ed1429310e52fe99ada5a65db26f0 GIT binary patch literal 2902 zcmb7;dpy&R{>MKvwwcMD$(Z{+%xw%Ca*2*yA{9y@*OBc@YUI{M$erYxG`C!Gol8{A zoh~BG+{vY{icoy9Q@`KiJRaxY^L+pLdcU8qH*1152k=^3SXlrd5CDLF55SrNP6C_| zC=3eWgh63&I42jkFb_8Z!7U~z#49W*E-fu7jz-HWYOBi1V-(Qn6GkU6I#?VIC!<0z zBj}yf*2iK0NI-BnoEyP?oQLN)Rt_zP{hwjI2KZor1rQDfNds(rATS?@MF+$HfDH`# z^X`9O=K#PEHt3%a%L}l9z+g6Zc6JVS@ShzJ8yH~c-F9&qcX8O{&!RayZLVQ z-MZE>lNN|kxqWt^VDwm#>I<)yiMK+%YiABdvk0W=c1y=>u*Aaj4XX~H`}@zbPVHgJ z-%OpJa?FTJ9?S&XIfQOMFF$=FtSTV1NnfQ8{GwQU0yGwr>gzf>}okx#WUEx zpHN<~xNyUKS=DNP>}TLbewYCTEKM?3v>!Lt9fkf>d#W%7iUVPjDam z(P+|?ZM@i|LYBs(V=m;%@Vp(Jsz|xiN0&Z_IH^GTcl6MRSMS2E+HTM7<#x<0ISm${ zCI$<(x-sLiks5eS=r;>1QdVk@!`f%>bg}rkvfeX3qF-$=|3>$A3KBJ9Ycb{dq z0dw+|=WznQQsK=PFX$X7g>DX!k3N{LUsY__lcyP2+@f9HxQq*GXtEowwH8|MG$`0a z;{)n%XltahNqMTBl+irnYpyb^;5i(!+0JSwLpNuNb1q8N9<<2Ew~D zz~f8&vgbaST#5)!B>t*2Ic;z^@n-XSMESQaXTCv?A0u=mlV2Jj#U0bbujFhQe0rI) zrn>0q`wYp~vnRPP@MYstS81hs$z*?^aZ?(*qDWF#yr08pO>n(PNL<&G^O#lKVv2eGh@Q;ftWq9~nP{7KcZon#awzA&N_#N=uYa4*ruasz*+NcXs@y zSOE85CvUNU_!$cU+o&aB)F~FwESRxyXUj+T66Ws1+o)fGdc`)*j?ot{K!{ILynT+E zBsyZhZGW`vxGF*sm^g9SXeV#0FxyE_9~pq6jH$~PYR?zvzCm2KN4g&>tCp2W9U`(muXU=vm+*<~DnCU!;&SH~!nFeZRU6}K0!Yx=gPlD{`zxw6>R*am@Ilj9y z9~^{TCPycxSbl1|0*85_OQfp2;?}*=d~dn7=2Mx^;mp|V(iHB+vV*R4ru*k~qp_ao z5HfYTE+6l5&tD}&0ib2~%#M)G%+Q0U1Q`pClv5j7*eL;lmV3v@1r54XxZgQ}i*9?1 znQ&T76aIc-BW$@M(xx4~b3_Qcnts?xYR!ngj#^}n`#;A;>1}V zLG^gzr#W|Jpx z;ybpe8m9J)Luh3BuAN|PuY%E+kLjngdk0_it-25v9@%^!t4!0<$*)JdwMFi^2r_qS zGOt~8UHJ6Y?8gRru8s1X%l|NxC8iQq|#_ri|j*H*?>K|Ssutu7cmNpgPL@pv( zz|(szIU`t4GqpuAPyLk*MpZn&sDi0m%FX*_m8Bg$G^09f(W-SMrxVF+c$j!St=>|l z{x5^QqtOo0k#W0g1t^@_F_I=v__^0H21SpfQb}Hv zW|#`%w28#UIVCFECP=Ls8@2nF>Wf2G?rBiOEp{1`1tS+O+(}5k z8=Mz89Nys6+>~WJ0c&|fZOwJ5d!{=hUBM5}?18a>l2$8(E)^sj(%Wv;FJY`ZFNqvj zcaMA^T#-}h3=eJ(trhQEJJS2dfs4>hRL!-kSKo@-NFC=8++`}w_5_S$l`AJ1E6Hb6 ztPb$`>KoiS3}v}Qk5^fi3O{%$JA{k-aAb`rNs9%@3YYr#@kYjK8|0HNKOWcKZu~gv zO}G1Cxbne~ulJuMv&ADPt>S{J=NGnewGm`#kcfTQ0!Jy&1WMu`;uFBlRqv{~MQ!VN)7{@I6vXI3a zR)+i)MIzWl#5(&H^P{T2MmK98dssX5 z{scqSW*<5jx*_8JOF4?RR$OrIR9|92-qL9Kd1?}87A`Sbzp**3)0P+Gm1(i_Zm%TG z)l#bWeiF{H+-Wl)kV-C+Z?tsx(&+XI5`%3#+I#rcSO(unq;F14>BSQ;VDbBgWCyD6 z7*#ghYSx=9PwO zN|4w0d1l`E{XR42&bf2${ho9FxHEUo!@|Q40J$nm1qJ~A0}6x!01rz5c>o>`4h}93 z9xg5(A>KbDCcwiZASNLqA|@gt0g?O%5D6JMh@6ZB45p?AgBckZ7#LapkN*_`;^X0w z5R*X2$sx2S1H@qiK>#ce5E}%17y!@% z09aVqKp^1%z`@0S1jNDv;Qx!tlLN4TSU5OXc({*nfdv1~0I{%fKmc3{=0}u*vMgG7 zU{)b3kGE99a@t93h{F2bDR~{wuw-fxYp?Jk)b#1uKM`6W;Q!C?FC`Eg2lvsx81KJQ zuz)x~tVci`?EjVk!~$XCP%sP1YFXh@f?0$->Z#=3Cb1UwJ}d%=vHxj-ut9(qfOfQr zhDnynM7qS%sv9}_sgbzyo)Y7%?sW>!xM#)9fxU{OQiCTe18^Z#=1oPQumab6E!&}v z$i>NqsU{D5(dlsMJI*6-__G#KmUk+bDco-AQ@!l@ZLQ9?UieC1}^%mxZY&5P-(-QkVJ#LkbGUpf%!<)|_3&c?6iPbrvbjeJk) z2L_C27%7LR@r;M7{3;LAI{e~{Kx|HfMzLR9^tJFW1B6FO8U-2ObZknz9#DS(Xco^4 z;S_pNL1JvTs}MaYE*7TFGbL1mS)z~G`OGM$^pJw1wvD0Tw((W{!BK$=TNjD z#x9?P(=wao{jy_oEoRe0ppnAkRDJa;%i208^e`}DhvHiHMv&rG_s6|dy!N#+uAh=+ z2n_}tqyTr5OZfH$Rv>C32f&K66Ctu`rOk%CwFox$FjdF5hgvyh%fNh^n$>pMQS2J-GbB z*5V+p+418-g_plLN4k0H{nGEHs|W^Ftz9EdOjlpImxvH;)T@XW!Oz8AhVbw=528b! zpwwsr2iRL*^Z#DBA)ZBe3zL%xF`u6gStQRC8+?Tuu0~2$etPSfZ6>VS#zN5Uz_7R~ zPlM<+OGQrXYGiGJ3DVBxX+AW6Ms^+EpTy3M{CT|747$P{JvVaPCg+;LicP<^wqb_x z*`QBSP6s6&(ty(ARvs#%ttZ#%)%M?YIt^e{`aM6%jZ2>Y zem%Wj|UB-MulHb?Gvw;5rAUI*#{=DsJA@$l}khD#ERm7;6 z)+vMF{5#*FM5Y{$v7D51*@NG)t=6~eRjRU}Gch;XJ)`_J;pk;JgIbgj!FqvOY^_P6 z_qx!~*LQCyY79m)v<*e81Ci;h>Yj0*&5GeT%k)xOx}WS8V)Fo$%R~rHaXKaA5kTm5 zp@sKri=_UAQirEAVoe7-r+rh;BThxqK)Z2f_1-Kx+1?T0EEiLO-8qa-+x5n;M|+I1 z{OQ_TkG?RT4W!LjCL8~;wHELJ_HRJAsP^5zx+FTHj)EalB1=i!9Gc*)DH_ZMy;Yg)~{O`z-z1Rml1=Xg!+S zo~?RsT+-m@@&my6RV2xmK_>cdE^4$#=MMmdxj2QgFi5tdFFgR{g^o>W}VLJnbP9re83_^mFM zaDM@^d=3XvdzLf;r^~^l0o##EwZbh1zfx2UdYGu7Hl0s-bbC#RqvGoaCI4tDk{Vz~ zPN3Z4!bFOG(bov3NL9zBN|xYfMHoXuq=V=Yn;HCQ-fb%`%cnYzo{1z*u|JxJhvUmM zJKiGSdtU3VAFB(+JDWk0e7B}*t)&d<^Ez`wQ^L3vFklCX_)24_Z%aDgV0A&hvC#JQ zE1J>PlsO%h^x03pLBD|APZoBqc0%^%8K8dP1cg&6{(MC*G(jpIQz5gHnpcp;+q&Hk67Z5=aa?1O@0tjPxOoMGh0KtXzcf$8w}3A`RMs5 zZSg0E1U`y(v>BNBHo@bV_I+u?gPji^>As@Nlk<}MQ8`g;82_C>HTB-PZrg6+w4RJc z>KSn*cy19%B;ujHEBNPC&ytnL`^ESg)sbtvuzN(@Hq59fz0i$BWGC|_Q+%SOyCP9G zUDDy0fu5lZ}8}yE)s%ZrhW{-K)_x zWu^>~-w`&QMf_NNwIo+-t}R_xXqE}ZY4%v2cpKXIvA6j~vL_L7oCboy)&sK_ihi06 zIuTe7Jv4y7EMi}JTKcgwr}`FN!3SnN@Q)-#McSu1SRRs8xzTOx$5AUi90A4pd-^Hq$y>KIOF&vOCoAIX3 zH-!g)(EaeeODu6)VMi*D2x_0;D>RYnu&3-@kSBtDZ|azY`F%N5|%z ziank{{f<Wo9^bDUoL0C(ntTZydb z4oh}s)lzTAMRB(bS84{<+(QQLEU;h_{>$kP03{9CaOV)jo9T*R?p?Ohgsea(7sb%#$#N|`8^31#O|DI7wBV^}h2@Uzktz}&#;Ly4MqwSoFAl}_ z;&vw&Dv!V=<&MKK4n`miGoVWsx|l(%UlHdE5fkyY-@9X;Jq zNgNN7(vnQDY?|Im_8*6OqsUPs5ZapC@Vvj$Ly~71^p~C-RIcrm+kSbbzY`|x6FZO$ zG<7$KS*wwhW4!IMjpdtM+<;N-uhufyZAb5glXX`KEet=W$X#l+-3zkELjHt*QZ7y| zp)G>gyl+dkpEg{w%s7fJx^piY>6^U?f@Aj^hB(;2t1$jM%0nl4$wp^N&tV&6=O?9Upf?22@lZEongrEQM7D8o%3B*r0m2t;>=*KPl;_=$7fcG0Jf7w~i5| zJ2(EvCu;01 z%Zot2B7+MmRJM$**RwsgkeAx45S1l<`Nkys0RZ6d9?n%Ch=xs+R6A@XXBWsFx2&nm z1zV>t5V}##G99&Fz#tn9_jR10zLh7Ew}dZA-Y6aBX#zBi=`vr5g61yYUYIw?nG| zQ-X}yTWHPbFM@pM6*;{T-s8V@QASko%;uc{tFyt9V>T4;-vRSTl;6g9G42XhsGX8t zJB9{%e${?8;BfY3y?nSik51$P08a0a=vwh*sGpG-d@lXxRbU@maon3ibLUUj@?2bQ zQ!r=)+iB@hj(l&E5R9?twF8-U2Qi$uxfWL=V(~@e@6p^zP-Eh1kJpdA?44Ea2!iX# zyWmW`-1yI4cfYx$RaGOha~eIpnV{6_p7mS&bUmqDxG?i0-6+=IQCmdbCQFFYl>h|Z z&1%1MQE7_kCkmaE&t%QfgUfzqEnUT-E%b-f&5zT~b@vr?-snYcTe+OU40GI7%6eoB z%(84^IE#|@3u)wP{J!80bI%jEel7ipwrzo6^23D)>Dw#fhcsxX^+akpzVEw$_&YK) zFW6#3J?OyQj7%RV*oyuh8sx~Pw^JhKOdjNvYgqGX8Hb?zH@JK zf~}h4?_Rn%Jpj~oV{=5Z6S&_ei-jO=ect^U(uC^fO~gk|T5aS|XlrfSrJin5d{LWk zWo*JsLSdO3_4U#bh4Wn^P{J1lw=lcBiPL{ShQ>)9B?goEOy(G)IZ<`$Ut&p4Dja4J z->3)cgLA2x4u)Zt(<+pTge`)j4mOBS0M`K~;jIXd6dG?$X9+D;FOm6V6l|W3$6*V5 zO0PZXR~H|e#x(1f=sNAIw$wdHtq~y}u;gu^0%_>cr$m`dRLty(=ZlZ)iy`_3J`E}5 zSWuTue}n<{Gs9k?1u7S3_=k_~QuU5|PE-#7Jo(VgxXL}_kB?cb!I5WstuLfh#3+>~ zO9YI|HKF&xg^i&~E z#%M@ugW@}^rCkmuSJ%6ozlTuRjNk?q3WI48HB%v#WUOxFw{iBl)XINS-K%5)6WtJ zRJAkrGtw{b-)jmTuH4)sG8e#YXS`aQDCIiJru*Roe|4yX64%&?P3Cg;$e5Zbr2Vc| z>8N`UOGSuoOs&H(H}8`iEd;lEz|?5@+j&E?#d=f@ap)zu>aF^SOA|a$VM=NBIFam9 zC?YlTndOTfmFNfqbx}1=jrT(=LyNrS8)K!pf4_F3@6aGC`>>P*9{qA*zINfO#`$T8 zU-#&FfN8T*w3#wDEy#g~yivC}L)@iTn8A8&TbC{)99*=SMr?_73Kf1a;iP?J`f+`ttL_P=|!&j zvzrG%8R-Y=R;vW?6a=*%E#8Ay2RsD0kGx6klj80!rQbNk)&5;_DQiP=3xj$ZgS!*!%d3Z->xV@Q?vhCKAmU|>^zqkH<%1{1= z2f#`fwt{=J=x~G`m9cKW$%x0bB`ipOBzhrEF}ohIG?&N3SE)Y4uAiV>;!>m4X15ta zHczG<8YW z$V!>$uXxxBi2u`i0Dwv8o2^KH$33XKnf~Wpbj)^ssc(}guR`}B_Y3`IX4JnyL%r>f z0;Rbo>-k^L+MfS`B*wZ4JL6B}%Yb~|L(-+e0+9&KUnOID>M zr*E8@bxdq*WOeD{2of7OHa32<*0n*#> z>KY911coblc9~*~35vHThf#~#fbURzaYnK?T-05Z4yGu6Ttjs3mzOcmVp++t_fgAt z%H5{}E>xS6)g&xB$fW5JKZ#Kwez9DRZ=DHQbbkh4x0N@=F9%qypKAhH_MyAr&&kS& zO%cDmVAUlk@7J;iKz~Ze504zOB@U)@fh$@-Piv2CE>3oJIeg z(m_$DhFyfO`r>ouNM@-OF4RGX7Sc~tKyavd zHRwusGW-CTeR_}2G@Zeq`j8Ajn*4bCHkjr~1HNfj~OCV$l8pkj~D+=-17D z67H}X7CItUnyoWeg9etVUY=th*%l)qQO`KnT1#!e&0*jR4}i;SC!y{9S^GJoV7(05 zijm}OHX1)0%h=mo9$Q7XOD(T8)yBDG{}wXE1IZkvno&ae^2_+38?qi^)`G$!$rr-w z5Dld}3sY^?>V=buiaNvI2LK;%ZRhP%GL}ek`Oe}gF%1n(Zbvn}`Pca-OxFo9GKP-A z81D|~MIcie=UHF1YbHSg7~IL;k5Y5fjkOpcU3rCLT+bIC2R71XE00QwUF4OSdH_rp zm$KC(;v}fIb5$}wdsn^H4l5ycr1EK1y>E=KIUV5LQ|7f}9PW*J&08-kl12ct zIc|R|Pu7UzjKsa~=uXGY6#QZ_s@2eh^YY#2)HNHwQfhal6TYSqv&gS>aaM^igv!}3 z3h|M}dU(9&t{^Nc>cH|xz!WFmpDU(i^htfi+Lgnk36-Z-1SG|??u5=U_7@XsB1qhK zZ)T!`Bt^cSosNqO`7X@s5j|nL^6(M+8%F>XfC|OH0gD3)0cU zJOGeoTJx$zT+*TD_ou0wQs@0N8@}cY>&K9hY_2^^5)+C&)z5*i_-AX8-N$jpX%J)@ zCf$%m;9H=QGY;M~hRIVVlZYjJ+TKRKYz2Gu?*d-EIOz^nhu}E7%W6i({;)5tJcH8j zrqfx2vb>i4C@&dkZHP@2B28AMq$zhHFVc(^_YqtNSX338$yl8U>tM6IJ`6}06(FL| zH#9TT!`#tUOdW}}9dMmrzO4@sSWv$6Y~zH*3{lW99&+bekzVp^^ZWmd-h zCw0w`5nl*v674bu@p2@)M*17Pj&t&VI9)_5FkcTS9OS5!R#tg z3Sx0YZmy%nU>_9Qx@TVlsA4vCi6MXK6)ZhB~oNn#n4<$$^Y$`S)Bly zQ4MI1Zeh$BC?#r5B~ukG zUQr)i{mC7`s5%O1l&8De=cEGKui`%)pjKjKoI#4H9TjUwmZq`s-}zg?-9J=HjDB9Z zX|dF>ata~$VC(b<2BHpQlI369cK->v-hk>Q$h?n<ECxcG$RPY4MJ2x&;kh{)+_85!tlfj}k@&od?#ZdM@hxhMxWAHR^05aTm( zX)ysQ9zh|2f0AI};o%Vy5K=#RLM^}yWES{8kB4pm2`(TO5Q~Yy0(eA%fk}e#&<|h) z05GusR{KxE|1~fkVPauF#=*tIC-@uCNDO#{frfGr!zp zGMzU#EKqWRcZs>Utn#%z6uMK#AVF(b7#=<)6*Ubl8~d~89GpVJBBEmA5(U#PHU_&Eg6B}DQdk04+XAe&=Zy#Sj|M%e^B0fe&MZ=SlQ&Q7Dr)T8l7Zes1mz0*( z)i*RYHMg|3_4f4-3?hbxN2X_H=jIm{e=KcoZSVZt-TSqFaB}+l?EK>L>d*B*E(`$X zf3p59`yVcnzph7ESeRHi|F|$7`TSj&Bv{zY{EtcHba384$yfy5;gZWI=GOM$u?p%Q zQ&_{M@F_t;n`|fl(EdaAzk`MSzhwW0{kLlgK!}O)_wg`E0J4A!M_ZRB1i@^48>cpZ zov-E1j)CvhC)ppVMXvOnjp;Vu2G9QP>FhEpJpekDM3RIE-92`j2}T$<$vfYi=8IXj z-%aV1-W@*xJQrBEpLhot>Gsa)*T%ZRg10G$?l8oJv(&REc$6C)+vdnge)xU*_3Z&r z#}NgqbFk^Z5|ea?S|~47wR^n*iMX#yYA}&$lHIL9LtB5r1R!+kC(@T68adKqNL8u$ zH72zD5S@^88?wgvkC0LOs-$+6c09WAc+~m*uVOrHxD0wtwwH@eW#PrS2aSPaW@wML z_*NTsopS6GwRskoEqh$VA8`q!WyPUtKy_|~>bfRuk_IeMKtd7Cjyyrb({Dog7 z&eu)x-+KRKEhJ0CzgttgCoxdo6bLJpx+qw`X`n~w>?`#SD?qM+7n)5C1U~jd$Sq(Y=h&Jag7#WAQp93@VGeP{-ms31IxKv=CmJ( z@hV`@=9GhBH%)*d-5~=a!NiuO|Fj@GMLVE5m@Dywr982Gb&6%%|!(Uf# z`!p(1q^J?=k=@N8fuCg1-tf@?j;$0Y7OAL@Vfu3tD=AwU7J`4eyC)iK@4v{+&36jR zS`LBTcM(mB3#Z%6j@3`p6olhZuDDtQ4hO}M^R0Kf_jJqfO_{?m7EleogzaTHqf?V{ z^y+eQ6Jx*-KozG6BB>p%=$*Q%{$Z2`uaD&X9O3+#r{e5TDUjc!!PCSos*(B!salqi z?Vl_>)*{?}q@{u*)nVx`uwnFaY~mxtUDe0)>U5XRvY7pVxPfFx^Yp5`&ka{w^89`bB zhk>=x$XbViPTr)~bDt_3+AFrL2~(5>&ysl5>vyiS+Z)r*MxfYu+ zBK}rK%s)vm3wEhYo?guoo;R>{NZ}KSV1~)j*IwIKvnQ39?pwZ1oiJA5H?X?0(;21< z5}yeA1Qnn25|4K{@YS~6KSwX1rQuwvyez-pRd(xgV~kY?`Iz z<>%$KwG{J9otF1g1|!7wyQ?9`Ywb@PipRteNk zT*YN&vx&8`Z6|yHT$hXAY8Pu$WiAzPhbPFmDa2u0?<6d1z)&J#rZwY!YXwdIMWdH+ zH3r4880sM`#umw>=tJS}*T52_&AI(4}`6)Vj(00@)-rXpCo;ID2=*(3oDSVU?PuI~a+EVQBzk zH3pRh`snMPXqK&O7MmzwZP|JmaP%-ZNJc%I!Lm6t%j&NdOxFgTLe2KY2^eF2HJRI& zzXyGTABYO{CzSueYm;v=i%Z{I2I{_2VUbP$IN2^{hZ)uZHLy~fR@;kl9t@?im42*> z5%k-HbY)4y&N{=BbksX!fm!?ok1r?ATmKpN*`v`~VdrTBc9Hodw0TF}Owzb*Kq%;R z@Rd%|@Y#NLXUZy_w4kuEIGj9Fm?|3H8k=a$eg z`t+$_wz$y33Dpue5-TyB^6f}TOx6!^!oIHJE@6f_*y-Z0V%o+^aW0;P+Yos!YU{RH z5=CxiUGuQVOXM&=U?zSe^y}iHnNo1G{ekhCI9)7KZ^r2y%WALMxwc4!t-sFChZ4;; z2#OQ7E@HWDTFZGZj^fky*Kp)<@sbv=qOmnEq{x#CCBmqYxC?5Z>v`_1>HRa$yOzw- zazBmAgP0Uj!WJvE#}kvS)f*-#qn^Ps1GmhGB5NJRf2Vt!mpq zxR9}w5{_QtpSxmg*NP2S+3)E$MsslQ87-;Aa}2%;O@yz71E)1TglEg5)w9-W{Qc=2 z!p>tVNnI$7g`>Qvy{c0+Ue(ii4*_lwlJACOx)-XcdJZixHtB{vElG^lG%?Lg25y?* zZ0q&ztg<>8mt-6VPgShBroPTK$iO`BGBb60uMkE7f*y{)E5H$pe&NT;S{^ymE%dTr zNNfLv4n-VmyGNWU=1k3i?kum>f*09EJ0gScikS7bPQ=$b;A~PhMP`1BDJ*6jGPgVCDKwenK%i^5CZ-_k@HbGx(Ji(4&E7vArFd81qWRUa!Z z3leieYG!mO*u$SR_UYpo0uDuJ7lLTZdf8f<1yr2AwdLhxh+rM*A~G@b8=t7txLF4b zr&kuz(W=f;#>RbIvAsMm%|TOftz2`G--Z9#uKnWS$35{X)~6Xe9=d4r-9x8An-lk| z*KhL_VzO8`^x7bGhSte=?Rt4MKK6aj13*eYUp1ONdiP*GP*U{KX*gm-aFzsZh%*Yw z77^vm3N$Sp_w70u3PNSpfkZA6B!x86n?)2vUt!MFvK}JAo;MEDRoR|R$}5Ewbnx&q zD;3cD>GGzgCL5Pbjvc|E8RkK>WjFNoXr-oypM>(%T^25YGiyw?Bd0faM0-ue#l$GG zMJJzvHpp^P@0F&P>y!{kW-|f|3V`{~Me)N9V=M?J0TuLTCc}Y4dvySKGXp#4;QsIjB>TVi))hI2vxacmNPC6fIuOn88Olq=r6= zt)|-y-y(EOr^|;?!wfEgTqP;0f^@nKGt-Ai35$&RV`N{}a#QBXSy5!=2IRA?U1B6@ zJ^~Iv0ImaOSmh_CUQ#!-8;$}|C{95k%7gDKWs$qX#&|uifP3_(kGaO3ntfW)a>~il znL;Xtn>vnlL1h|3tv-Y6{Bo~xs{BI(z!zNwS3C#vN~UyBiRVhhyV6(Eg5PuIYi?z} zYZP+FxRzC^DuWMjbgu7{*C`GtYbq<;#O*)C{2>|CgJPyh?Mc_JQ!LQHx_=+&d2u-| z1*;HLn3z_g(;%#fA{4vy4y6)^zE~>TW4(yu0kD|Hjpkhno^qsfH17dkyF=u8NsU&% zgm=`$p>POm2beioCQo8Lr3klcD!zmeFFOszP;@Ps%c*3-33!|Q^#`YCzbUTK@C3=~ zHe|d_l9Q~b29tfN>X2pZZ46}Fe4=3z#S5R;u2mh2{M9WKD;w@mJbN>1YHHTm+-&s@ zHOo>WRZa=AJ=>NJN%48FYf12<=!>DH^+T@99n`5uJW85UiDyd%%vDI>F^u-;H0lB04b{Mqm|t^KPl6D~e~J zKg|$lGW8k0?k~8z;D_$p`$n}uJ&A+Ij(a+ogUfK+;TUOo@5$mfughkVt1RcB#Gg{S zst@H?(zx;u)F2dn-^!`3b<*XL+gI9BL?QcT6_*~SrVaME)AR1jfjewj+9wP-V{_xm zXryjTdGQl6wNnb&ZwZeC2!i-$^;vLz?lOGmq&66&9{_@1hpG27&$r{!OI@X@ZZYvc z6DsMi?77b0w*@m488oGpXgaYMySTg9d|JeSt~t|R)XQS{@Dgs`JaUPv~d zME1A6l5x)Q9fhCeHFE4|Zn&IGOT}=-IC89+iL*wQPbXtZAhwewIA4zl=jd+V53U4T zX8X-bDwxaEY#^+=C}~pa9?yXti9RowWAlAs&t@U&wUI4138Wpaar!prgqirA$AA8; zw3!NI6Vq=A7cg1YbDbE->c13-4gVu&hGe+!fV57Xw|F8 VV@Gm{wTuKa_6VUReg zx8KEYMhc#aa|dxAB(Z!vZKed|@LwcAXDWdc*ZJv4Na_n=aTj_MCw$b+*hfN`1mom+ zN#z<{rP7j}Q*cf6N;@6d>yKnmTCma2?Vy-?bM`8@B zbI^Sh>p>Ac08HvHG$peOphA03XpkA;++s(6sTYBX*vT#*#~A(IO~_q{KW@n(U8`y? z^<%X0b%D#zXi|?R{{rAt+nDuJ(N>^XqT)Y4?b#Jkz0iedO`Ps<`!pxzm)#a(;vQrC z0vu+5cBY7nX<@rs$V3Yx6C)GqMa?|~&q5LoVX@fXesmiM_N$FMG}jQ60uOT#>{1Nr z8nU9U=OY>`21=bqtU8S_k^=g^)%pzo89H)@n$1PGe8DwB28Q8)o{C-O@!u%v!%Ls4 zcSZf^aZc@|Go2-R(%TxP9~!Wcy@%zwKc5Qu^;6Mq%k0ff++zS@GY7Ghhh@H8uWk+` zj>ciKnJpXA3~EnPJ_lN@!cq#@=|(;bC^;tod@g zQu`%e#Y;R^EEJ=q{}9~wjU_Wo8J*QeZWbrg!DZrX=%YgUjE=%VZM`+2S%a&>{ZBlH zHSY3sQMzq?;7EkXJ+FTkJAD2UZl(fq1qFufeMKsrC0MwU4$@eAJs^sRR6VfSn*&PC{@nEPvoyvAW5|7n{SVb_Yc75!f3K=*l&Kw9De9H_J7axYaw%8{ z?e9UQ=B~uoDAmOh*0}Szk13lYexHYb&s}6qlo7lWc)Pu$Mb66|Kve1JZpj>p$6A*V z7vYE@TipqXj@ZT!;o*Y`&IZiiHIC;bh?~=$BgX-@m>U_HL;zdA?hFnQ6|EbCCJGKXaTC_%~3ALGxPsm6` z0rBD*-1UN2-{#gqTJT=!P1^m`!u*dpFh$Rj+MjyUri`EpdtX=F40-QCQ`vUQN|yqP zb-mF6gA}z>PkCpF%FHKB*fkK`Zyy8?w7Y* z#%Glh6QaB>?IiFqq8Bq?k!IudjfK<0?8qYd0kf=%m)opG5Ov@u8HMP;QIAqX(@)YC ziXWm&MiP?{aykB^9T|^*<9Cm?*wy*!&Avl|?Y^}(E5-4<_GfJ%hnV92cEykC3Z1IZ z^3;7axMDb^w~}+l%_XSRfdN%u<;;*xq(o+7?DlkP>)Dr8g??RABa=}dDU^{C@k&2K zNVUoN3$o3@TtC<9O0Bm-4}gxJ351n7sQ69l^V{-@xJ$L;pY6tul&Z0PM9+V&uYM^l z4{xP=JKk%Ml^3Vb*M;wLcH{Z&#B0PZ*siuYID2CI579)s*sV5Y4(-xDnCnS_4Q?X) z9OK@6EqkhID`6TeO*+|=yiW+yV|FhrP_itszp+Vyb{-P4q<5wiRcBuo;&#_3v{^B% z+?P0_DgnHez0@}OGX>-7s_ld^w`lGs<8ZoTJ4IA1HN=-sz@mjolc~6*bM0{$lH*BR zS7Hr1l%Q>*(KgArydaVx303Wp^$kc#^bQbsZ?IHxuF|*AJDba;h8N@lDKQ?lD>qT{ zfH3uON787|(w_2C1mZUHYkF;Rgum%wA8{CxMTzg9$z}zJc|qUne9mBPqeL{@=sjom zXh=WVNie?(_9!~ISfDi2Av+xjhawN82aMzOjI6ztb&KnMXI$r)PBmDP8`IHyXh+-K zlWy-S98}KIo^+Ai63z;>TI}^D-F1$)icBZeRewKo`@SIjO2YN%%*kFbT%T4Y!+4TB zes`3?)&W4gD0WsA201g8G9Aowg|!~=$7xTOto*v9)fu?>0(BF}T708u0S)`pLh_nYTwjC~@c56=2!`%}U^xdtk}Ah-U#wAil8L(qxGW+XpLCyt1&oO|626`(3%O9-uR`mxGgIB)dTvRaOcKb z=dA2HEy~r6x&W)pbM>AgL7XjXl>b1j)Z@rYueZ5UyQL$feASs-qg7G1_lXXcve;H) zBtc8q%d;}7g_Gq$PjPVZ{0M*O~hHe-Tn zOoe|SCpQmaCqX}{EJJLROWLvW0e1q+S9YT94zq8`Z(6jqwdJ%EEH~ zhBgsV@PpPSVF&ibdRD&S0i#QMqIxCH^65Y`3t;r+;Z=6JUFiUItfpA()=tEaILF1- zu4FQJOJ*j#V%5stdZ3Q*04e5|=?wKCN3TseCvnllRq83!S_HzG{l?#hcXA Sw-5$1fpto}+6Y=7e*6m~917I{ literal 0 HcmV?d00001 diff --git a/Lab2/images/sourdough.jpg b/Lab2/images/sourdough.jpg new file mode 100755 index 0000000000000000000000000000000000000000..e6f256daab30bf351fa7ebe04d7bbb5be2dcea0b GIT binary patch literal 4032 zcmYk82Qb`Uw8wwD%d+~ewR&3?(GpQt^sphTm#86n7orCth>}DXQ6gGMkm$V&QKIeY zHAs-CK}6JeGVjfQ-sjGpxijZ`zUR!Gxp(fx^u-cDcN?dH13(}Upnkc4i#gyX0E0rI zWKb9x8H^fsxoIh3FiKiD4Gk>~4ID{JcL^;Lj$}YFAmJ=5Y-}tn7+zjpjKF{VGXYV+ zU^Fx|OmH|8GZKMh=H$496V3S#G%q*TCEUC`yl6C#<4_l1D#0ud<0760vy^M)m zHUS1fAYf7w$p2Lbf#DF6OKW94v==?{x^)t1Uga*2ey8}wEI@TBx(vesMWER3p<7Fe zV*$k^kSawl00NWPvOE?RGLdyLB#jgXOsH?W=kLhO`pZp|>~-;xz2F+^5_ehpsk5`G z>T`cb|FK2cvQ>xszFx6n)jd+hahSx>b`?#W1?gK^4whI@V$aSAIzIr`1% zHAfX8tLIzZjyZffZzFYWYO#xH0!O+DlvIijUIBArWOuaDXngmc!{%2 zlt4svf~4hopzXFLIRZM|h~Hz`>8cEnb>X}RO*=CPp8s?N=ba7n3DB;+a*p2>`gnRR zM=eTk!3@chte|((gSLwyGaN@X-x#WvAQf9?dnEB~!V1A4ViI>tIFFVU4e5I-4Bfy#T0|E2)N^y;#?z&yvh6@D&O+ZqFOkpxXT8_B{U7_jfXuqsx&TKI6%>RE=lU)F7>!N*+E)KSPPA#teipQjWD-RsCEr79l%nzZ~a^ zYL~GZW`1;vRK?Wu^9iaogE4u8;@Z@;QSHB{ao^%+&%37j-98l?Ebq=_@v*m*J;Cuu zYiNjP@bfJA>z!{^ZyeNb+|~2Qk$-5VOm9CZ4foWI)C2f7%lpM>68)68(^;eiF&>Zk zOb%Ug;^5u9Eb1Pee{&*5C)o^3I|sb$o0}zSe8!B1QvGemVs;|7YMt*K-Mta}afN80 ze^axQ&AnoFA>?7{C_d6~Wx6xa_VJh%-R6&UJuh*)q%Ds!#~6$z*F51yfnMu~p*p`D zHfuAV8v1$Nc{q%gCYm7licFthbK7_KmkO6Hj$F_*>5%J(XhxwZlSqCFydy^^(7Msq zmn$G^4MlaL)zX_+j><1aZ0;iq}GmV=`fNjDF@E2%}*`~v^3I%=x-ri`*{HfxI; zR%4S;W?95)=iVh0J6O+Xhu7oZkKCflCQz;^mDovIykHqo0!r`9T6wE|bMms_Jbx8@EB(iAj@54Y} z6<+(U>squ)yE$V-v+Vq~C|AVCA-R3#$8&nKv|lC)xpo4iANk{yb~ zkIVLxUmK*C^B1IUzaTf6c`y`7vq3_mZxl(S+`I)8TdKEOaMf zQ+%T>!gywvFCHxwzx~I3%9ZvC+d2zn7Ufanj0HE)W6s~TyT z^fXRO&UJE%@a zw)=`;d1q2#&%#(iG`?ozgLa=-a4vQ(jNo4OBP=!$GvoTDdi1gyXj`@kWaNz`$lzQYxZuL$=^XXWG|B`q=bu-7MGanB(v5L zuWmrUSVV8Gv5UL)9LE_Ey7jI|Z%OLh!t3(9?fSN~wCitMQICwzHp4b&1_s=Pa8NBe z@qM%LHZe^KF(69`eb92)7F4ZB8BtyoryO!DL~b%L9F>114dGHlbVqzMRgJinaizW_ zl|JaPA>*tc*v8ZO12dkdv;GBIgiFbb0cabChg_D9qzGD z_FX+co5-?q2-C)THO%iHimi6bJo`cZL!5he@ppt5nem+?D<=243Jf&1Vbi4~kXi@# zca;YAfD|JiV!mauRuhuLxLk#|T%J9xAm~I{*FB5vO%F|Cob1!duHjgfY&)Y|-yRSx z&air3ufUTj%NhPSa^{P{jhs{S9V4QLx6YL8sbnESGqMUrWbts^2adl zzt%EbegQZKWxuylIiweva1`bhMuH-~E!>~A40;+xjE&uj8fAU-X~N6%kJ_UH51#1_ zRIB36oYI8S`Ie-t*RIN`Bt{76YG^R~Sxc&tjrbCiq-s<^SFvEi@xhLm;-X0T&QmR) z(1TYB?_T-bEqFVcg|b(*b(rX;Z2y(Ozw)6D6Y{ana{SCwAHOzZIWknJuY}m7UR$|OODW79$G1KRX-5mXi6;Ym|OG=?J z+&zDKTu*!(i+oazl~Zi_-cwWYg-dJg#t_ zBK$DaPS4DLMsKQXg-Sc=~Gx5C;tjXsIlQmJMfU4ia825xJ zS}7M&rK)tTpCXc$U5ARJP-~n;?7Xm>TFaQ6V?}ZQMj7V@_7DEP{aLn%sI2iy;f+N!I^_K{8Dh+{7lNX6|eh$sgZcnC^29+I}iK&0z;MTv&ld|MrY0k~V zn`p^;`GS{E8{5sANqcIkRKyjtN;pqYB84!HUvwjcGw`HTQbxk53{~9LxxT+`(vp6$ zZ!d5Jzra?xJ+n{GYa~9;#4q$3%gmQ!vF6pKNa~`sAEeo;KzvNt@ifurSwA?eS6PYs zW-^g7e)!I=;E~-r{~CSgn7}xWSi>)Vf5I6DC6A`nk#t0}JIfoCG7!2w?TF!F6Lvx)@PKUHf#UMXHB6M*ZhEC0k!pHwEaoV_17i(}rSp zJ?~j1K(KQ)?lsjy%zr2yvc^GtwdK?*jtvra(hoAVqYcf zSRo?vj#O1_6>ahu)Vm6oZVD}!FnKzSTOBK@_Dp4d!&jlZ!nHV%k4{j_xQ=v=qz?2} zC36vE*3n+iZf!2uH*)ODL-qDj4-U$&saSq1trZ&S-|;)mmd!H`sMWZM;AzOJcteg- z4IA3Yqnfs@HgRM4w6dr<-xLY6`I+w)-k%y_W3a5_KA>=WBGDY-qhH-K`kF{hX6J?b zgng4blN%!sUAS$HGuh5o^a&PjUn@vf)pINPBowFmB;weOKvSCVex!BE?tWK-%V|uYuzhZq zH^k%J8{CLSQA`B{qXOn#P(cn7oIcohFO=%qsis5Cb8%kV%!XXddC#l5dF)gk=#E(~ z*C}X>Pve8pZN)n$a`D4GTX(-6e_&dh$q|(tujW#`1*i}*GIEJZ!)ikZ7;_ul739`P zv3In}H@p4_r@`b*hY)q@L&NU_0zHJIy(08U#+#q=Q$jC=t6qv^jw5~mGAm6*J#teB cLx63#^0yA4&Iuou&Fza%HsnSsgqSq+F z=)FeoM1S+!-Sh4_``7M1_uRkkbMEd3buEy?uN!Z-YZZ-@OkDkBy5@NK8sjNzKm5&HJ2RP*_y? zwW_+NwywURwXMCQv#YzOcX(tJH#R;oIkmX7yt2Bs{(EEd;PB}9A zqJELwrT~h!ueBj^V;Zp;Y00(&P28o4;>bm4N1u%c4 zZCC5pSt|RuKBM1)f_e3M(=vx1260w#jth|@lJlN}ycNy?0@Gji*Mf<}pQyFrlAu?= zPb<`_e2&$283?WgA4w&*PK3giE16Dh>|Zz@mIjkhs!|1nDCFS>hf5s;eM(lPxN?j> z>`yqqG*ed3T?rVMFo%!ThUZ-04Y)i-j%CN9>iFJVl2o#(8-1t)7trSKMJ2p`*u@#X zBf^Vtff5`f_d8ms^VKy=kntHa9b4)8q0fmi^wfvGsrJpV6&&QX-)+~-> z8&pS0>7pgQM$<$l}9D@wu+PP6g+yfwJzOC z@0>EGh9~F`Q^1Za*nQukdrZMAv<;OB%8cYxyh;|wc}Zqp-$ASUqR+QiZh|VjHc->Y zvWe_ec}Qk`CSN=%9oY;`Rzi5k!q8!zLn)Px>#p1%7& zSxY$wI^Ngb!uB|x-(E_#vB2+IIg#Q$XuM*JEhaVU1mvHTcg(gt(HjjOn zU4iz@^ms>CWDxefj_cH>@h+!F^k={E+ECe;C z$CBd|=z^=8pvL*EmJ!sD{d5<=RHncuT0cr76mG{Ez6%b$FzIPhx2I(u@vyT4G>zkz z&6;iLo~};uKiP#(Ku_}qNO(kPbjQ1Pm|kVQVfmz(k#Q1B966B;DW{2 zih5SKj96z7x7PeBHpOj0md-XxTNsV9q zDAm^i(#AzR;P_taldMg5N;xMd%6QC%qcMBY5ELg|g(SYLqz>|T-!T>*V;A6aL{$jv zdR(s+zjz%t-6P&yOM>R#n+{(zS{v3tMAnFVy##fR4T@xPX}+&F5Rth;29A1eXi$U~ zQ7X%_V@?=OBu+C0@N0NjvN-U!uC^rF&2;JAC8wN~zAt-fB!WjN&I_Y`ZUI)IAJVdS zz`d!nq}bJDckD5ppn3&tMnqx=C2*v?Wcb+C`M674%Xy_i+-s; znQgXsU56l4&PMoHb?#Za+EbX;Ue`&fp4?+x$>K--krT#J;oV6?ms~G-JGPwt4veIe zfSET`T=HAlx9BV>#*7i2R1;hK=@4**ys2FN#>Z_QoD_Ymv9aTmGgPy8@r6&d^!!9I zvk=;C$8uc=jdkT6|E6|7!eGetQ)PTbxROxtP84otO1_vSWIbZHH=$x=jEF*+(^o01 zM5h$>G@E*6s`02XfgrQ1Oz@XW6WH}ap?sRjx|&bq#%RI5emYuZIOY{kK6jx|tFMhk zCjUG~W;1@YlQ!hJO9vZokyFVTwsoSTZZ%4J`M03_rnq{;0tdQz0N0{qeNe8~w2!N4 zT(%Y2X{kzEzONkK2m>&*^qg*4@J5zaDae`ss2W*HWpv4-O1_$%{`Sa^(&^E?v1LPZ zhOzJ9#>&P-O*`?DcWaTMD(u=@E;pRroF=h!a4SWlmU770%aD?TE+o?@E0nMBiIlBi zibI&Cfin0qyKc)U*6%lZlG$2=-bUhfpcT)OMR76JP zYZ6Zo48taK3n0l0fK>MICLI;dFhp-zxym*b>2)|qy6vxo$NaRmn2BxWN84cPmla1< z3N0d@$IjWfeX`FP;2t#U3TUn0>M=7fWcg_xtD+KvJuP^nRoZtRsG4ETV6&Gx5Pa9_ zqJG{`_W3}n5*6c#5R786PR1q*Gp^@?HiWuzqG{Md{3x}Lc4&;!y)<`T=0@pA%c;fj z&a%D-r|#q&?(k|@bc%VCt+4B|Yd8FHHGf30bpR6xaL~CSwl=CA-sM4tAr5zWxEoc) za?#x-euG3k>f6`6~Z6jkJh z3s-cvOYbuCVC+m3?u~EXs}`1yIyQYOgo z4bI=z^{W*eHP%4KR?XNS`{%;OA%qLx7q|5s^F~ciTLpv9jHue&6n9@&ZH2wR%RA$7 z#M;J!E=fG%s*4Ox1HO5KAQf0GQnQ^0QT zt5xz}{;Kxk+Ff)-93_iW5W_FOSEJ+*1rpmNKp~GtpoYy!?#GuiGp6yB&^Y_%1*%?D z0ZisNU%g;c+Fdhz_kFMO!%&9Peov;_(1{t)R1X(QDPQWH2ht1A)ix5lpL1N63XRgc zhaH(Is0Q!fR4^gOhBkBTgW)@M7}KxToBRrmR3Q0&-AQa<(y`(afQrTQR#hC#?Li=Bjjipv9oWrfVRFt zeM^p)NSi)2%>-_iaWV$=;*wnVL&ow^p=w}@#b|vtPI@p`aWoank9hqt+y;>}GJ#`` z0NcpKgrxx!IP9YP&c_l9KX*r|wD4v@fwzE*lOR{uZNK#0?CbQuzf|~Y zoQ^TpgLglp>!4h*jIqVqYnC;pAa`fHqCEdc3@82j5qj%}{?1`J1FugXyDhJxg)0)V z%L0`8rHAIAfmJPmwxzV%w>N=E0MNfwp^Uq-H%z|CS5_R zSh;qRhS+*5E!G3`kDD!&gNk~e~EK0L59&C#dx@=L>seFz|tnXiP@Fh0T@=aU8`W0*ErZBs|VA1Vu1 zyy=);Y;HwnC3`d%`(&(aS616?HlQ(uAoMiP8C`{*;cJtoQSkPXZILVHLVCvqgA+B<|O_QUN=sy8HxEJ9I<1p=2bPKOXbOtQ?0H3*KQ*Y zM>jVWHXNqUsMen4O|Q+t)db;x-pHX89kkgy@U3qMB`<+Hmz} zFy>O!Yl;MVD~H!Q%IJfU7)ysTaK=6L7Nx$q1{*!Tnv@P1E2s63bJN@?Er_1%Hp7!P zJeh5YejAC2IL-#IbLEzarb{-NwFU(k?&qpE3w4lInV@0VT?fLTPMCW}b+D-aqdy8H zrtFg~T55e{D_m~?C;iHfmC>H>53h>EYw6M@=d1uSk9|r$PUH0BS>h&4{beaIBzay0 zF1G+DbBH7={nJsCo5x1@Gn{iP5bWE|Mr`$V%i^Q_n7S^xG6%fFh=9X1<-w6b}{z36jw{T0~ z1MTyLx&_Qq)==EMwe^wNjiZ`7{P6e|0FL>w-zbK9Fa37t?26o`CwqRfW(9rWS*zEZ&06%{J)yT9p^T(jq z$_7bwhKeWXr16R-oy+D&kfxJkDKiD>UR5h%TIhK~C`4oN=|x!xcW>u_Nt8D}awRY` zUpvzwUdA_R{$)Scx9qfX$7>9uSy0M%FAz7&IC04n-_<#F5~6dBhpC%U=}Uq{JsEs? z%9@U0Kk{rX&8vr#;)88E=K@MS3Q#%^%V_l2{G~s-mG#;|2TP4p`?)qzbJf4*V0X2| zP_!OT_V9K802Uie^R;vQQjCLj6CYF3(O|=6@M^DV!(WNzuqheOoR%61J z0oJ|)v*{^QdU;|Ai0aJky)j*~=z&rq70$kfY%|{ks5rU)@NiqLch~tY=#hfc^c3vOol}Sk z7y=6HfQL`XMQm`#@xSwvEaOop99^M2iZ;D$$ zx<-Cs@=QtDp@3ac#WMF;gc%GDtbfA*!0+Ix9*TiW&Q-#uAB)Z5u_s@Ug!_D$Xq8SA zqz+~5IVldqQ_NOjWjKPR=XYHmtm*XeZ9)eZ)#HZjln~ZCVy#jpUifZM=rs2F`PVQZ z`$TqW8;NHHqG^avgH9R!Q+q~y@jsBMrM8er2IByx~%+&{lLOqyZavd+P zosH00WtWh5D3lp(gk8Zq;&&hA8ZzBuGbYITJC)r47;C_?VcbI z0Jf~mLMqz5=5Ah}N*98TBHF%F%wP|?*BWRM->}zJmtP~JTjB8G75(fGj5{$c$E8L{hWffl*stn(hC$kC0){ + this.numberOfGuests = num; + } + } + + this.getNumberOfGuests = function() { + return this.numberOfGuests; + } + + //Returns the dish that is on the menu for selected type + //borde kolla i dishes istället för att filtrera vilka rätter som visas i overview. + this.getSelectedDish = function(type) { + for (dish in menu){ + for(dishId in dishes){ + if(dishes.id === dish && dishes.type === type){ + return dishes[dishId].name; + } + } + } + } + + //Returns all the dishes on the menu. + this.getFullMenu = function() { + var fullMenu = []; + for (dishId in this.menu){ + fullMenu.push(this.getDish(this.menu[dishId])); + } + return fullMenu; + } + + //Returns all ingredients for all the dishes on the menu. + this.getAllIngredients = function() { + var allIngredients = []; + for (dish in menu) { + var ings = []; + ings.push(this.getDish(dish).ingredients) + for (i in ings) { + allIngredients.push(ings[i]); + } + } + return allIngredients; + } + + //Returns the total price of the menu (all the ingredients multiplied by number of guests). + this.getTotalMenuPrice = function() { + var ingredientsPrice = 0; + var groceries = this.getAllIngredients(); + + for (i in groceries){ + ingredientsPrice += groceries[i].price; + } + + var totalPrice = 0; + + totalPrice = numberOfGuests * ingredientsPrice; + + return totalPrice; + } + + //Adds the passed dish to the menu. If the dish of that type already exists on the menu + //it is removed from the menu and the new one added. + this.addDishToMenu = function(id) { + var newType = this.getDish(id).type; + + for (i in menu){ + var menuType = this.getDish(menu[i]).type; + if (newType === menuType){ + this.removeDishFromMenu(menu[i]); + } + } + + menu.push(id); + + } + + //Removes dish from menu + this.removeDishFromMenu = function(id) { + var i = 0; + for (dish in menu){ + + if (dish === id){ + menu.splice(i,1) + } + i++; + } + } + + //function that returns all dishes of specific type (i.e. "starter", "main dish" or "dessert") + //you can use the filter argument to filter out the dish by name or ingredient (use for search) + //if you don't pass any filter all the dishes will be returned + this.getAllDishes = function (type,filter) { + return dishes.filter(function(dish) { + var found = true; + if(filter){ + found = false; + dish.ingredients.forEach(function(ingredient) { + if(ingredient.name.indexOf(filter)!=-1) { + found = true; + } + }); + if(dish.name.indexOf(filter) != -1) + { + found = true; + } + } + return dish.type == type && found; + }); + } + + //function that returns a dish of specific ID + this.getDish = function (id) { + for(key in dishes){ + if(dishes[key].id == id) { + return dishes[key]; + } + } + } + + + // the dishes variable contains an array of all the + // dishes in the database. each dish has id, name, type, + // image (name of the image file), description and + // array of ingredients. Each ingredient has name, + // quantity (a number), price (a number) and unit (string + // defining the unit i.e. "g", "slices", "ml". Unit + // can sometimes be empty like in the example of eggs where + // you just say "5 eggs" and not "5 pieces of eggs" or anything else. + var dishes = [{ + 'id':1, + 'name':'French toast', + 'type':'starter', + 'image':'toast.jpg', + 'description':"In a large mixing bowl, beat the eggs. Add the milk, brown sugar and nutmeg; stir well to combine. Soak bread slices in the egg mixture until saturated. Heat a lightly oiled griddle or frying pan over medium high heat. Brown slices on both sides, sprinkle with cinnamon and serve hot.", + 'ingredients':[{ + 'name':'eggs', + 'quantity':0.5, + 'unit':'', + 'price':10 + },{ + 'name':'milk', + 'quantity':30, + 'unit':'ml', + 'price':6 + },{ + 'name':'brown sugar', + 'quantity':7, + 'unit':'g', + 'price':1 + },{ + 'name':'ground nutmeg', + 'quantity':0.5, + 'unit':'g', + 'price':12 + },{ + 'name':'white bread', + 'quantity':2, + 'unit':'slices', + 'price':2 + }] + },{ + 'id':2, + 'name':'Sourdough Starter', + 'type':'starter', + 'image':'sourdough.jpg', + 'description':"Here is how you make it... Lore ipsum...", + 'ingredients':[{ + 'name':'active dry yeast', + 'quantity':0.5, + 'unit':'g', + 'price':4 + },{ + 'name':'warm water', + 'quantity':30, + 'unit':'ml', + 'price':0 + },{ + 'name':'all-purpose flour', + 'quantity':15, + 'unit':'g', + 'price':2 + }] + },{ + 'id':3, + 'name':'Baked Brie with Peaches', + 'type':'starter', + 'image':'bakedbrie.jpg', + 'description':"Here is how you make it... Lore ipsum...", + 'ingredients':[{ + 'name':'round Brie cheese', + 'quantity':10, + 'unit':'g', + 'price':8 + },{ + 'name':'raspberry preserves', + 'quantity':15, + 'unit':'g', + 'price':10 + },{ + 'name':'peaches', + 'quantity':1, + 'unit':'', + 'price':4 + }] + },{ + 'id':100, + 'name':'Meat balls', + 'type':'main dish', + 'image':'meatballs.jpg', + 'description':"Preheat an oven to 400 degrees F (200 degrees C). Place the beef into a mixing bowl, and season with salt, onion, garlic salt, Italian seasoning, oregano, red pepper flakes, hot pepper sauce, and Worcestershire sauce; mix well. Add the milk, Parmesan cheese, and bread crumbs. Mix until evenly blended, then form into 1 1/2-inch meatballs, and place onto a baking sheet. Bake in the preheated oven until no longer pink in the center, 20 to 25 minutes.", + 'ingredients':[{ + 'name':'extra lean ground beef', + 'quantity':115, + 'unit':'g', + 'price':20 + },{ + 'name':'sea salt', + 'quantity':0.7, + 'unit':'g', + 'price':3 + },{ + 'name':'small onion, diced', + 'quantity':0.25, + 'unit':'', + 'price':2 + },{ + 'name':'garlic salt', + 'quantity':0.7, + 'unit':'g', + 'price':2 + },{ + 'name':'Italian seasoning', + 'quantity':0.6, + 'unit':'g', + 'price':3 + },{ + 'name':'dried oregano', + 'quantity':0.3, + 'unit':'g', + 'price':3 + },{ + 'name':'crushed red pepper flakes', + 'quantity':0.6, + 'unit':'g', + 'price':3 + },{ + 'name':'Worcestershire sauce', + 'quantity':6, + 'unit':'ml', + 'price':7 + },{ + 'name':'milk', + 'quantity':20, + 'unit':'ml', + 'price':4 + },{ + 'name':'grated Parmesan cheese', + 'quantity':5, + 'unit':'g', + 'price':8 + },{ + 'name':'seasoned bread crumbs', + 'quantity':15, + 'unit':'g', + 'price':4 + }] + },{ + 'id':101, + 'name':'MD 2', + 'type':'main dish', + 'image':'bakedbrie.jpg', + 'description':"Here is how you make it... Lore ipsum...", + 'ingredients':[{ + 'name':'ingredient 1', + 'quantity':1, + 'unit':'pieces', + 'price':8 + },{ + 'name':'ingredient 2', + 'quantity':15, + 'unit':'g', + 'price':7 + },{ + 'name':'ingredient 3', + 'quantity':10, + 'unit':'ml', + 'price':4 + }] + },{ + 'id':102, + 'name':'MD 3', + 'type':'main dish', + 'image':'meatballs.jpg', + 'description':"Here is how you make it... Lore ipsum...", + 'ingredients':[{ + 'name':'ingredient 1', + 'quantity':2, + 'unit':'pieces', + 'price':8 + },{ + 'name':'ingredient 2', + 'quantity':10, + 'unit':'g', + 'price':7 + },{ + 'name':'ingredient 3', + 'quantity':5, + 'unit':'ml', + 'price':4 + }] + },{ + 'id':103, + 'name':'MD 4', + 'type':'main dish', + 'image':'meatballs.jpg', + 'description':"Here is how you make it... Lore ipsum...", + 'ingredients':[{ + 'name':'ingredient 1', + 'quantity':1, + 'unit':'pieces', + 'price':4 + },{ + 'name':'ingredient 2', + 'quantity':12, + 'unit':'g', + 'price':7 + },{ + 'name':'ingredient 3', + 'quantity':6, + 'unit':'ml', + 'price':4 + }] + },{ + 'id':200, + 'name':'Chocolat Ice cream', + 'type':'dessert', + 'image':'icecream.jpg', + 'description':"Here is how you make it... Lore ipsum...", + 'ingredients':[{ + 'name':'ice cream', + 'quantity':100, + 'unit':'ml', + 'price':6 + }] + },{ + 'id':201, + 'name':'Vanilla Ice cream', + 'type':'dessert', + 'image':'icecream.jpg', + 'description':"Here is how you make it... Lore ipsum...", + 'ingredients':[{ + 'name':'ice cream', + 'quantity':100, + 'unit':'ml', + 'price':6 + }] + },{ + 'id':202, + 'name':'Strawberry', + 'type':'dessert', + 'image':'icecream.jpg', + 'description':"Here is how you make it... Lore ipsum...", + 'ingredients':[{ + 'name':'ice cream', + 'quantity':100, + 'unit':'ml', + 'price':6 + }] + } + ]; + +} diff --git a/Lab2/js/view/exampleView.js b/Lab2/js/view/exampleView.js new file mode 100644 index 000000000..41f695db8 --- /dev/null +++ b/Lab2/js/view/exampleView.js @@ -0,0 +1,55 @@ +/** ExampleView Object constructor + * + * This object represents the code for one specific view (in this case the Example view). + * + * It is responsible for: + * - constructing the view (e.g. if you need to create some HTML elements procedurally) + * - populating the view with the data + * - updating the view when the data changes + * + * You should create a view Object like this for every view in your UI. + * + * @param {jQuery object} container - references the HTML parent element that contains the view. + * @param {Object} model - the reference to the Dinner Model + */ +var ExampleView = function (container, model) { + + /** + * We use the @method find() on @var {jQuery object} container to look for various elements + * inside the view in orther to use them later on. For instance: + * + * @var {jQuery object} numberOfGuests is a reference to the element that + * represents the placeholder for where we want to show the number of guests. It's + * a reference to HTML element (wrapped in jQuery object for added benefit of jQuery methods) + * and we can use it to modify , for example to populate it with dynamic data (for now + * only 'Hello world', but you should change this by end of Lab 1). + * + * We use variables when we want to make the reference private (only available within) the + * ExampleView. + * + * IMPORTANT: Never use $('someSelector') directly in the views. Always use container.find + * or some other way of searching only among the containers child elements. In this way you + * make your view code modular and ensure it dosn't break if by mistake somebody else + * in some other view gives the same ID to another element. + * + */ + var numberOfGuests = container.find("#numberOfGuests"); + console.log(model.getNumberOfGuests()); + numberOfGuests.html(model.getNumberOfGuests()); + + /** + * When we want references to some view elements to be available from outside of view, we + * define them as this.someName. We don't need this in Lab 1 yet, but in Lab 2 it + * will be important for assigning listeners to these buttons, because the listeners + * should not be assigned in the view, but rather in controller. + * + * We can then, in some other code, use exampleView.plusButton to reference the + * this button and do something with it (see Lab 2). + * + */ + this.plusButton = container.find("#plusGuest"); + this.minusButton = container.find("#minusGuest"); + + +} + diff --git a/Lab2/js/view/mainPic.js b/Lab2/js/view/mainPic.js new file mode 100644 index 000000000..a6a3fd24e --- /dev/null +++ b/Lab2/js/view/mainPic.js @@ -0,0 +1,18 @@ + +/*main pictures +gets the pictures and name of the dishes for view2 and 4 */ +var MainPic = function (container, model) { + /*var menu =[1,2,101,102] + Ska ändras i labb 2, ska kopplas till det sökta. */ + var menu = model.getFullMenu(); + var string = ''; + var picBox = container.find("#template"); + + for(i in menu){ + string += ''; + } + + picBox.html(string); + +} + \ No newline at end of file diff --git a/Lab2/js/view/mainView3.js b/Lab2/js/view/mainView3.js new file mode 100644 index 000000000..a5e8ffde5 --- /dev/null +++ b/Lab2/js/view/mainView3.js @@ -0,0 +1,35 @@ + +/*main view for view3 "dish overview" +gets the pictures and name of the dishes for view2 and 4 */ +var MainView3 = function (container, model) { + var dish = 100; + var Dish = model.getDish(dish); + var headlineDish = container.find("#headlineDish") + headlineDish.html(model.getDish(dish).name); + + var picDish = container.find("#imgDish"); + picDish.html(''); + + var description = container.find("#description"); + description.html(Dish.description); + + + + Rubrik = 'Ingredients for ' + model.getNumberOfGuests() + ' people'; + var rubrik = container.find("#ingrFor"); + rubrik.html(Rubrik); + + var Table = container.find("#table"); + var string = ''; + + var sum = 0; + + for(i in Dish.ingredients){ + string += ''; + } + + string += '
mängdsakSEKpris
' + Dish.ingredients[i].quantity + ' ' + Dish.ingredients[i].unit + '' + Dish.ingredients[i].name + 'SEK' + Dish.ingredients[i].price + '
SEK'+ sum + '
'; + Table.html(string); + +} + \ No newline at end of file diff --git a/Lab2/js/view/mainView5.js b/Lab2/js/view/mainView5.js new file mode 100644 index 000000000..433782027 --- /dev/null +++ b/Lab2/js/view/mainView5.js @@ -0,0 +1,29 @@ + +/*main pictures +gets the pictures and name of the dishes for view2 and 4 */ +var MainView5 = function (container, model) { + /*var menu =[1,2,101,102] + Ska ändras i labb 2, ska kopplas till det sökta. */ + var menu = model.getFullMenu(); + var string = ''; + var Pictures = container.find("#pictures"); + var Summa = container.find("#summa"); + var sum = 0; + + for(i in menu){ + for(n in menu[i].ingredients){ + sum += menu[i].ingredients[n].price; + } + string += ''; + + } + + + + + Pictures.html(string); + + Summa.html(sum + ' SEK'); + +} + \ No newline at end of file diff --git a/Lab2/js/view/sideView.js b/Lab2/js/view/sideView.js new file mode 100644 index 000000000..5222fb2ab --- /dev/null +++ b/Lab2/js/view/sideView.js @@ -0,0 +1,11 @@ + + +var SideView = function (container, model) { + + + var numberOfGuests = container.find("#numberOfGuests"); + numberOfGuests.html(model.getNumberOfGuests()); + + +} + diff --git a/Lab2/landingPage.html b/Lab2/landingPage.html new file mode 100644 index 000000000..ba6d3d3a3 --- /dev/null +++ b/Lab2/landingPage.html @@ -0,0 +1,44 @@ + + + + Dinner Planner + + + + + + + + + + + + + + + +
+
+
+
+

Dinner Planner

+

+ Normally, both your asses would be dead as fucking fried chicken, but you happen to pull this shit while I'm in a transitional period so I don't wanna kill you, I wanna help you. But I can't give you this case, it don't belong to me. Besides, I've already been through too much shit this morning over this case to hand it over to your dumb ass. +

+
+ + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/Lab2/style2D.css b/Lab2/style2D.css new file mode 100644 index 000000000..8396aeb00 --- /dev/null +++ b/Lab2/style2D.css @@ -0,0 +1,95 @@ +form{ + margin-bottom: 10px; +} +#Guests{ + width: 40px; +} + +img{ + width: 100%; +} + +html,body,.container { + height:100%; +} +.home { + background: url("https://fthmb.tqn.com/uZwLBI5jpv1YjOTwGGmFuSyUhg4=/1920x1280/filters:fill(auto,1)/dish-918613_1920-5812723a3df78c2c73a334d9.jpg"); + background-size: cover; + background-position: center; + font-family: 'Lato', sans-serif; + color: #2c3e50; +} + +table { + width: 100%; + border: 1px solid black; +} + +.sidebar { + background-color: lightgreen; + height: 800px; + /* margin-left: 0;*/ +} + +.caption { + text-align: center; +} + +.jumbotron { + text-align: center; +} + +.row { + height: 100%; + display: table-row; +} + +.row .no-float { + display: table-cell; + float: none; +} + +/* Sidebar modules for boxing content */ +.sidebar-module { + padding: 15px; + margin: 0 -15px 15px; +} +.sidebar-module-inset { + padding: 15px; + background-color: #f5f5f5; + border-radius: 4px; +} +.sidebar-module-inset p:last-child, +.sidebar-module-inset ul:last-child, +.sidebar-module-inset ol:last-child { + margin-bottom: 0; +} + +.sum { + text-align: right; +} + +#imgDish{ + width: 90%; +} +.knapp{ + margin-top: 20px +} +.pull-right{ + text-align: right; +} + +.content { + text-align: center; + padding-top: 25%; + text-shadow: 0px 4px 3px rgba(0,0,0,0.4) + 0px 8px 13px rgba(0,0,0,0.1), + 0px 18px 23px rgba(0,0,0,0.1); +} + +hr { + border: 0; + width: 400px; + height: 1px; + background-image: linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.75), rgba(255, 255, 255, 0)); +} \ No newline at end of file diff --git a/Lab2/view2.html b/Lab2/view2.html new file mode 100644 index 000000000..f5439c25c --- /dev/null +++ b/Lab2/view2.html @@ -0,0 +1,108 @@ + + + + View2 update 2 + + + + + + + + + +
+
+
+

Dinner Planner

+
+
+ +
+ + + + +
+
+ +
+

Find a dish

+ + +
+ + + + +
+ +
+
+ +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Lab2/view3.html b/Lab2/view3.html new file mode 100644 index 000000000..27ff5c671 --- /dev/null +++ b/Lab2/view3.html @@ -0,0 +1,108 @@ + + + + View 3 + + + + + + + + + +
+
+
+

Dinner Planner

+
+
+ +
+ + + + +
+
+
+

+
+ +
+ + +
+ +
+ +

+
+ +
+
+ +
+
+

Preparation

+

+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Lab2/view4.html b/Lab2/view4.html new file mode 100644 index 000000000..46f39ea47 --- /dev/null +++ b/Lab2/view4.html @@ -0,0 +1,113 @@ + + + + View 4 + + + + + + + + +
+ +
+
+

Dinner Planner

+
+
+ + +
+ + + +
+ +
+ +
+

Add another dish

+ + +
+ + + + +
+
+
+ +
+
+ +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Lab2/view5.html b/Lab2/view5.html new file mode 100644 index 000000000..e25a0a927 --- /dev/null +++ b/Lab2/view5.html @@ -0,0 +1,76 @@ + + + + View 5 + + + + + + + + + +
+
+
+

Dinner Planner

+
+
+ +
+
+

My dinner: 3 people

+
+
+ +
+
+ + +
+
+ + +
+
+
    +

    Total:

    +
+ +
    +

    +
+ + +
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Lab2/view6.html b/Lab2/view6.html new file mode 100644 index 000000000..3cf213fff --- /dev/null +++ b/Lab2/view6.html @@ -0,0 +1,109 @@ + + + + View 6 + + + + + + + + + +
+
+
+

Dinner Planner

+
+
+ +
+
+

My dinner: 3 people

+
+
+ +
+
+ + +
+ + +
+ + +
+ +
+ +

Freanch Toast

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies.

+
+ +
+

Preparation

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies. Nulla in augue lacinia, condimentum tellus ac, semper purus. Suspendisse commodo elit at velit tincidunt, ac laoreet ligula tincidunt.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet.

+ +
+
+
+ +
+ + +
+ +
+ +

Meatballs

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies.

+
+ +
+

Preparation

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies. Nulla in augue lacinia, condimentum tellus ac, semper purus. Suspendisse commodo elit at velit tincidunt, ac laoreet ligula tincidunt.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet.

+ +
+
+
+ +
+ + +
+ +
+ +

Ice Cream

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies.

+
+ +
+

Preparation

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies. Nulla in augue lacinia, condimentum tellus ac, semper purus. Suspendisse commodo elit at velit tincidunt, ac laoreet ligula tincidunt.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet.

+ +
+
+
+ + + + + + + + + + + + + + + + + +
+ + \ No newline at end of file From aaaef9854e3c4e85d4a5e022f1cf24c066b2c94b Mon Sep 17 00:00:00 2001 From: lindelindblad Date: Tue, 6 Feb 2018 10:52:56 +0100 Subject: [PATCH 25/64] Ny controller och index MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Controller och views för homepage och ny indexsida. --- Lab2/index.html | 103 +++++++++++++++++++++++ Lab2/js/app.js | 4 + Lab2/js/controller/homeViewController.js | 5 ++ Lab2/js/view/homeView.js | 9 ++ Lab2/js/view/homeViewController.js | 6 ++ Lab2/view2.html | 3 + Lab2/view4.html | 1 + 7 files changed, 131 insertions(+) create mode 100644 Lab2/index.html create mode 100644 Lab2/js/controller/homeViewController.js create mode 100644 Lab2/js/view/homeView.js create mode 100644 Lab2/js/view/homeViewController.js diff --git a/Lab2/index.html b/Lab2/index.html new file mode 100644 index 000000000..3014b2f64 --- /dev/null +++ b/Lab2/index.html @@ -0,0 +1,103 @@ + + + + DinnerPlanner + + + + + + + + + + + + + + + +
+
+
+
+

Dinner Planner

+

+ Normally, both your asses would be dead as fucking fried chicken, but you happen to pull this shit while I'm in a transitional period so I don't wanna kill you, I wanna help you. But I can't give you this case, it don't belong to me. Besides, I've already been through too much shit this morning over this case to hand it over to your dumb ass. +

+
+ + +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Lab2/js/app.js b/Lab2/js/app.js index 40d47b0cc..581ce6263 100644 --- a/Lab2/js/app.js +++ b/Lab2/js/app.js @@ -4,6 +4,10 @@ $(function() { // And create the instance of ExampleView + var homeView = new HomeView($("#homeView"), model); + var homeViewController = new HomeViewController(homeView, model); + + var sideView = new SideView($("#sideView"), model); var mainPic = new MainPic($("#mainPic"), model); var mainView3 = new MainView3($("#mainView3"), model); diff --git a/Lab2/js/controller/homeViewController.js b/Lab2/js/controller/homeViewController.js new file mode 100644 index 000000000..81124dd64 --- /dev/null +++ b/Lab2/js/controller/homeViewController.js @@ -0,0 +1,5 @@ +var HomeViewController = function(view, model) { + this.startButton.click(function() { + console.log("The button was clicked"); + }); +} \ No newline at end of file diff --git a/Lab2/js/view/homeView.js b/Lab2/js/view/homeView.js new file mode 100644 index 000000000..fe4afb01a --- /dev/null +++ b/Lab2/js/view/homeView.js @@ -0,0 +1,9 @@ + + +var HomeView = function (container, model) { + this.startButton = container.find("#startButton"); + + this.homeView = container; + +} + \ No newline at end of file diff --git a/Lab2/js/view/homeViewController.js b/Lab2/js/view/homeViewController.js new file mode 100644 index 000000000..c737858cd --- /dev/null +++ b/Lab2/js/view/homeViewController.js @@ -0,0 +1,6 @@ +var HomeViewController = function(view, model) { + view.startButton.click(function() { + console.log("The button was clicked"); + view.homeView.hide(); + }); +} \ No newline at end of file diff --git a/Lab2/view2.html b/Lab2/view2.html index f5439c25c..52dca8864 100644 --- a/Lab2/view2.html +++ b/Lab2/view2.html @@ -19,6 +19,8 @@

Dinner Planner

+ +
+
diff --git a/Lab2/view4.html b/Lab2/view4.html index 46f39ea47..2e0c3f81e 100644 --- a/Lab2/view4.html +++ b/Lab2/view4.html @@ -20,6 +20,7 @@

Dinner Planner

+ + + +
+
+
+

+
+ +
+ + +
+ +
+ +

+
+ +
+
+ +
+
+

Preparation

+

+
+
+
@@ -126,8 +155,8 @@

Find a dish

- - + + diff --git a/Lab2/js/app.js b/Lab2/js/app.js index 796d3c9f8..060e29c07 100644 --- a/Lab2/js/app.js +++ b/Lab2/js/app.js @@ -25,9 +25,10 @@ $(function() { // 3.searchView (inkl maträtterna nedanför) var searchView = new SearchView($("#searchView"), model); - var mainPic = new MainPic($("#mainPic"), model); + //var mainPic = new MainPic($("#mainPic"), model); // 4. oneDishView (inkl div med recept som uppdateras) + //var oneDishView = new OneDishView($("oneDishView"), model); // 5. fullMenuView @@ -39,20 +40,20 @@ $(function() { // Controllers - var stateController = new StateController(homeView, sideView, searchView, header, mainPic); + var stateController = new StateController(homeView, sideView, searchView, header); //var homeViewController = new HomeViewController(homeView, model); - //var searchViewController = new SearchViewController(searchView, model); //funkar ej. + var searchViewController = new SearchViewController(searchView, model); //funkar ej. - var mainView3 = new MainView3($("#mainView3"), model); - var mainView5 = new MainView5($("#mainView5"), model); + //var mainView3 = new MainView3($("#mainView3"), model); + //var mainView5 = new MainView5($("#mainView5"), model); // Gömmer allt utom start $("#header").hide(); $("#sideView").hide(); $("#searchView").hide(); - $("#mainPic").hide(); + $("#oneDishView").hide(); diff --git a/Lab2/js/controller/searchViewController.js b/Lab2/js/controller/searchViewController.js index 946eeb838..5b5e99d1d 100644 --- a/Lab2/js/controller/searchViewController.js +++ b/Lab2/js/controller/searchViewController.js @@ -1,8 +1,22 @@ -var searchViewController= function(view, model) { - var searchButton = view.find("#searchButton"); + +var SearchViewController = function(view, model) { + this.view = view; + + //var searchButton = view.container.find("#searchButton"); view.searchButton.click(function() { - alert("knappen är tryckt!"); + + }); + + + //ladda oneDishView när en bild klickas på. + + /*view.dish.click(function() { + oneDish + + + }); +*/ } \ No newline at end of file diff --git a/Lab2/js/controller/stateController.js b/Lab2/js/controller/stateController.js index 7aa3a02d4..7098cf820 100644 --- a/Lab2/js/controller/stateController.js +++ b/Lab2/js/controller/stateController.js @@ -1,10 +1,9 @@ -var StateController = function(view1, view2, view3, view4, view5) { +var StateController = function(view1, view2, view3, view4) { var homeView = view1; var sideView = view2; var searchView = view3; var headerView = view4; - var pictureView = view5; var startDinner = function() { homeView.startButton.click(function() { @@ -20,20 +19,20 @@ var StateController = function(view1, view2, view3, view4, view5) { }); } - var Search = function() { + /*var Search = function() { searchView.searchButton.click(function() { - //var element = searchView.find("#selectOption option:selected").val(); - //console.log(element); - pictureView.container.show(); + //ladda om pictures anpassad till search kriterierna. + - - - }); + } + var oneDish = function(){ + }); + }*/ startDinner(); - Search(); + //Search(); } \ No newline at end of file diff --git a/Lab2/js/view/searchView.js b/Lab2/js/view/searchView.js index f2c583b8a..5b259a679 100644 --- a/Lab2/js/view/searchView.js +++ b/Lab2/js/view/searchView.js @@ -1,7 +1,19 @@ var SearchView = function (container, model) { this.container = container; this.searchButton = container.find("#searchButton"); + //tar ut valt element + var element = container.find("#selectOption option:selected").val(); + var menu = model.getAllDishes(element); + var string = ''; + var picBox = container.find("#template"); + + //console.log(menu); + for(i in menu){ + string += ''; + } + + picBox.html(string); } diff --git a/Lab2/style2D.css b/Lab2/style2D.css index d64650a51..8396aeb00 100644 --- a/Lab2/style2D.css +++ b/Lab2/style2D.css @@ -73,6 +73,7 @@ table { width: 90%; } .knapp{ + margin-top: 20px } .pull-right{ text-align: right; From 32f59ea4db126d42a8ca86e7cd4410f5925f6afc Mon Sep 17 00:00:00 2001 From: lindelindblad Date: Fri, 9 Feb 2018 10:46:15 +0100 Subject: [PATCH 31/64] =?UTF-8?q?uppdaterade=20knapp=20och=20h=C3=A4mtning?= =?UTF-8?q?=20av=20data?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../homeViewController.js | 0 Lab2/index.html | 5 ++-- Lab2/js/controller/searchViewController.js | 29 ++++++++++++++++++- Lab2/js/view/searchView.js | 21 +++++++------- 4 files changed, 40 insertions(+), 15 deletions(-) rename Lab2/{js/controller => ej aktuell}/homeViewController.js (100%) diff --git a/Lab2/js/controller/homeViewController.js b/Lab2/ej aktuell/homeViewController.js similarity index 100% rename from Lab2/js/controller/homeViewController.js rename to Lab2/ej aktuell/homeViewController.js diff --git a/Lab2/index.html b/Lab2/index.html index 618d20d50..0eb79d14e 100644 --- a/Lab2/index.html +++ b/Lab2/index.html @@ -86,7 +86,7 @@

Find a dish

- + - +
@@ -149,7 +149,6 @@

Preparation

- diff --git a/Lab2/js/controller/searchViewController.js b/Lab2/js/controller/searchViewController.js index 5b5e99d1d..8da12edf4 100644 --- a/Lab2/js/controller/searchViewController.js +++ b/Lab2/js/controller/searchViewController.js @@ -1,14 +1,41 @@ var SearchViewController = function(view, model) { this.view = view; + this.model = model; //var searchButton = view.container.find("#searchButton"); view.searchButton.click(function() { - + // hämta input från rutan + var filter = document.getElementById("keywords").value; + console.log(filter); + // hämta input från listan + var type = view.container.find("#selectOption option:selected").val(); + console.log(type); + // mha input filtrera vad som ska visas + var menu = model.getAllDishes(type, filter); + console.log(menu); + // visa de rätter som gäller +/*test*/ + var menu = menu; + + var string = ''; + var picBox = view.container.find("#template"); + + //console.log(menu); + for(i in menu){ + string += ''; + } + + picBox.html(string); }); + view.thumbnail.click(function(){ + alert("clicked"); + + + }); //ladda oneDishView när en bild klickas på. diff --git a/Lab2/js/view/searchView.js b/Lab2/js/view/searchView.js index 5b259a679..d8da9efcc 100644 --- a/Lab2/js/view/searchView.js +++ b/Lab2/js/view/searchView.js @@ -1,19 +1,18 @@ var SearchView = function (container, model) { this.container = container; this.searchButton = container.find("#searchButton"); - //tar ut valt element - var element = container.find("#selectOption option:selected").val(); - + this.textInput = container.find("#keywords"); - var menu = model.getAllDishes(element); - var string = ''; - var picBox = container.find("#template"); + + /*Har flyttat koden nedan till SearchViewController*/ + /*var menu = menu; + var string = ''; + var picBox = container.find("#template"); - //console.log(menu); + //console.log(menu); for(i in menu){ - string += ''; + string += ''; } - picBox.html(string); -} - + */ +} \ No newline at end of file From 0a5bd1e6b0e7b1b03d0ca8030a5447e3fc70d9a3 Mon Sep 17 00:00:00 2001 From: lindelindblad Date: Fri, 9 Feb 2018 12:08:49 +0100 Subject: [PATCH 32/64] added observers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Eventlistsners är ok, men loadView funkar inte. prio på det och att få observers/observables att fungera! --- Lab2/js/controller/searchViewController.js | 21 +++----------- Lab2/js/controller/stateController.js | 17 ------------ Lab2/js/model/dinnerModel.js | 16 +++++++++-- Lab2/js/view/mainPic.js | 3 +- Lab2/js/view/searchView.js | 32 ++++++++++++++-------- 5 files changed, 41 insertions(+), 48 deletions(-) diff --git a/Lab2/js/controller/searchViewController.js b/Lab2/js/controller/searchViewController.js index 8da12edf4..c27a17f8a 100644 --- a/Lab2/js/controller/searchViewController.js +++ b/Lab2/js/controller/searchViewController.js @@ -16,8 +16,9 @@ var SearchViewController = function(view, model) { var menu = model.getAllDishes(type, filter); console.log(menu); // visa de rätter som gäller + /*test*/ - var menu = menu; + /*var menu = menu; var string = ''; var picBox = view.container.find("#template"); @@ -29,21 +30,7 @@ var SearchViewController = function(view, model) { picBox.html(string); - }); - - view.thumbnail.click(function(){ - alert("clicked"); - - - }); - - - //ladda oneDishView när en bild klickas på. - - /*view.dish.click(function() { - oneDish - + });*/ - }); -*/ +}); } \ No newline at end of file diff --git a/Lab2/js/controller/stateController.js b/Lab2/js/controller/stateController.js index 7098cf820..5359b4a94 100644 --- a/Lab2/js/controller/stateController.js +++ b/Lab2/js/controller/stateController.js @@ -7,32 +7,15 @@ var StateController = function(view1, view2, view3, view4) { var startDinner = function() { homeView.startButton.click(function() { - //console.log("funkar det"); - homeView.container.hide(); headerView.container.show(); sideView.container.show(); searchView.container.show(); - - - - }); } - /*var Search = function() { - searchView.searchButton.click(function() { - //ladda om pictures anpassad till search kriterierna. - - - - } - var oneDish = function(){ - }); - }*/ startDinner(); - //Search(); } \ No newline at end of file diff --git a/Lab2/js/model/dinnerModel.js b/Lab2/js/model/dinnerModel.js index 9af19fa4b..9aae327c6 100644 --- a/Lab2/js/model/dinnerModel.js +++ b/Lab2/js/model/dinnerModel.js @@ -4,14 +4,25 @@ var DinnerModel = function() { //TODO Lab 1 implement the data structure that will hold number of guest // and selected dishes for the dinner menu - this.numberOfGuests = 2; // ej this. för då blir det en property som man kan nå utifrån. istället var. - this.menu = [1, 100, 201] + var numberOfGuests = 2; // ej this. för då blir det en property som man kan nå utifrån. istället var. + var menu = [1, 100, 201] + var observers = new Array(); + this.addObserver = function(observer) { + observers.push(observer); + } + + var notifyObservers = function() { + for(var i = 0; i < observers.length; i++) { + observers[i].loadView(); + } + } this.setNumberOfGuests = function(num) { if(num>0){ this.numberOfGuests = num; } + notifyObservers(); } this.getNumberOfGuests = function() { @@ -116,6 +127,7 @@ var DinnerModel = function() { } return dish.type == type && found; }); + notifyObservers(); } //function that returns a dish of specific ID diff --git a/Lab2/js/view/mainPic.js b/Lab2/js/view/mainPic.js index 3a22d027b..b2ec3d02a 100644 --- a/Lab2/js/view/mainPic.js +++ b/Lab2/js/view/mainPic.js @@ -13,9 +13,10 @@ var MainPic = function (container, model) { var menu = model.getAllDishes("dessert"); var string = ''; var picBox = container.find("#template"); - + for(i in menu){ + string += ''; } diff --git a/Lab2/js/view/searchView.js b/Lab2/js/view/searchView.js index d8da9efcc..cfaa33d01 100644 --- a/Lab2/js/view/searchView.js +++ b/Lab2/js/view/searchView.js @@ -1,18 +1,28 @@ var SearchView = function (container, model) { this.container = container; this.searchButton = container.find("#searchButton"); - this.textInput = container.find("#keywords"); + this.textInput = container.find("#keywords"); + - - /*Har flyttat koden nedan till SearchViewController*/ - /*var menu = menu; - var string = ''; - var picBox = container.find("#template"); - //console.log(menu); - for(i in menu){ - string += ''; + //load view + this.loadView = function() { + var menu = menu; + var string = ''; + var picBox = container.find("#template"); + + //console.log(menu); + for(i in menu){ + string += ''; + } + picBox.html(string); } - picBox.html(string); - */ + + + + // load/update view. + /*this.loadView();*/ + //attach as listener + model.addObserver(this); + console.log(model.observers); } \ No newline at end of file From bb4fe7474b2df9deaddebe5a50f52db06f966a40 Mon Sep 17 00:00:00 2001 From: lindelindblad Date: Sun, 11 Feb 2018 13:19:38 +0100 Subject: [PATCH 33/64] loadView() fixad och synkad m knappar MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit funkade fint hela dagen, men nu hoppar den tillbaka till startsidan när man trycker search igen. --- Lab2/index.html | 2 +- Lab2/js/controller/searchViewController.js | 30 +++------------------- Lab2/js/view/searchView.js | 21 ++++++++++----- 3 files changed, 19 insertions(+), 34 deletions(-) diff --git a/Lab2/index.html b/Lab2/index.html index 0eb79d14e..0018c80d8 100644 --- a/Lab2/index.html +++ b/Lab2/index.html @@ -79,7 +79,7 @@

My Dinner

-
+

Find a dish

diff --git a/Lab2/js/controller/searchViewController.js b/Lab2/js/controller/searchViewController.js index c27a17f8a..2cddf73c0 100644 --- a/Lab2/js/controller/searchViewController.js +++ b/Lab2/js/controller/searchViewController.js @@ -6,31 +6,7 @@ var SearchViewController = function(view, model) { //var searchButton = view.container.find("#searchButton"); view.searchButton.click(function() { - // hämta input från rutan - var filter = document.getElementById("keywords").value; - console.log(filter); - // hämta input från listan - var type = view.container.find("#selectOption option:selected").val(); - console.log(type); - // mha input filtrera vad som ska visas - var menu = model.getAllDishes(type, filter); - console.log(menu); - // visa de rätter som gäller - -/*test*/ - /*var menu = menu; - - var string = ''; - var picBox = view.container.find("#template"); - - //console.log(menu); - for(i in menu){ - string += ''; - } - - picBox.html(string); - - });*/ - -}); + view.loadView(); + + }); } \ No newline at end of file diff --git a/Lab2/js/view/searchView.js b/Lab2/js/view/searchView.js index cfaa33d01..a22a8ff4b 100644 --- a/Lab2/js/view/searchView.js +++ b/Lab2/js/view/searchView.js @@ -1,28 +1,37 @@ var SearchView = function (container, model) { this.container = container; - this.searchButton = container.find("#searchButton"); - this.textInput = container.find("#keywords"); + this.searchButton = container.find("#searchButton"); // knappen ska bara göra loadView(), i den funktionen finns resten av isntruktionerna + var textInput = document.getElementById("keywords"); //container.find("#keywords"); //load view this.loadView = function() { - var menu = menu; + + //var type = hämta type + var type = container.find("#selectOption option:selected").val(); + //console.log(type); + //var keywords = Hämta filter + var filter = document.getElementById("keywords").value; + console.log(filter); + + var menu = model.getAllDishes(type, filter); // stoppain filter och type i funktionen. + console.log(menu); var string = ''; var picBox = container.find("#template"); - //console.log(menu); + //lägg in rätterna for(i in menu){ string += ''; } picBox.html(string); + textInput.value = ""; //nollställer keywordsfönstret när man tryckt sök. } // load/update view. - /*this.loadView();*/ + this.loadView(); //attach as listener model.addObserver(this); - console.log(model.observers); } \ No newline at end of file From a4a79746c996d2e5a27fc7db67dee5182ffc97e6 Mon Sep 17 00:00:00 2001 From: sofiaJagerstrom Date: Mon, 12 Feb 2018 20:59:59 +0100 Subject: [PATCH 34/64] dagens MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit skapat oneDishView/controller, har ej kopplat dem till de andra controllers än. fixat all datahämtning i sideview och collapse, men den beter sig lite konstigt, behöver snygga till rubriken. Collapse-menyn lägger sig för headern... --- Lab2/index.html | 72 +++++++++++++++------ Lab2/js/app.js | 8 +-- Lab2/js/controller/oneDishViewController.js | 11 ++++ Lab2/js/controller/sideViewController.js | 13 ++++ Lab2/js/controller/stateController.js | 9 +-- Lab2/js/model/dinnerModel.js | 8 +-- Lab2/js/view/mainView3.js | 35 ---------- Lab2/js/view/oneDishView.js | 47 ++++++++++++++ Lab2/js/view/searchView.js | 10 ++- Lab2/js/view/sideView.js | 51 ++++++++++++++- Lab2/style2D.css | 18 ++++-- 11 files changed, 201 insertions(+), 81 deletions(-) create mode 100644 Lab2/js/controller/oneDishViewController.js create mode 100644 Lab2/js/controller/sideViewController.js delete mode 100644 Lab2/js/view/mainView3.js create mode 100644 Lab2/js/view/oneDishView.js diff --git a/Lab2/index.html b/Lab2/index.html index 0018c80d8..331f69cf7 100644 --- a/Lab2/index.html +++ b/Lab2/index.html @@ -39,41 +39,74 @@

-
-
+
@@ -154,8 +188,8 @@

Preparation

- - + + diff --git a/Lab2/js/app.js b/Lab2/js/app.js index 060e29c07..13146e458 100644 --- a/Lab2/js/app.js +++ b/Lab2/js/app.js @@ -25,10 +25,8 @@ $(function() { // 3.searchView (inkl maträtterna nedanför) var searchView = new SearchView($("#searchView"), model); - //var mainPic = new MainPic($("#mainPic"), model); - // 4. oneDishView (inkl div med recept som uppdateras) - //var oneDishView = new OneDishView($("oneDishView"), model); + var oneDishView = new OneDishView($("oneDishView"), model); // 5. fullMenuView @@ -42,7 +40,9 @@ $(function() { // Controllers var stateController = new StateController(homeView, sideView, searchView, header); //var homeViewController = new HomeViewController(homeView, model); - var searchViewController = new SearchViewController(searchView, model); //funkar ej. + var searchViewController = new SearchViewController(searchView, model); + + var sideViewController = new SideViewController(sideView, model); diff --git a/Lab2/js/controller/oneDishViewController.js b/Lab2/js/controller/oneDishViewController.js new file mode 100644 index 000000000..cd5baf195 --- /dev/null +++ b/Lab2/js/controller/oneDishViewController.js @@ -0,0 +1,11 @@ + +var OneDishViewController = function(view, model) { + this.view = view; + this.model = model; + + + view.dish.click(function() { + view.loadView(); + + }); +} \ No newline at end of file diff --git a/Lab2/js/controller/sideViewController.js b/Lab2/js/controller/sideViewController.js new file mode 100644 index 000000000..3ca4d811d --- /dev/null +++ b/Lab2/js/controller/sideViewController.js @@ -0,0 +1,13 @@ +var SideViewController = function(view, model ) { + this.view = view; + this.model = model; + + view.plusButton.click(function(){ + model.setNumberOfGuests(model.getNumberOfGuests() + 1); + }); + + view.minusButton.click(function(){ + model.setNumberOfGuests(model.getNumberOfGuests() - 1); + }); + //view.loadView(); +} \ No newline at end of file diff --git a/Lab2/js/controller/stateController.js b/Lab2/js/controller/stateController.js index 5359b4a94..b257c2621 100644 --- a/Lab2/js/controller/stateController.js +++ b/Lab2/js/controller/stateController.js @@ -7,10 +7,11 @@ var StateController = function(view1, view2, view3, view4) { var startDinner = function() { homeView.startButton.click(function() { - homeView.container.hide(); - headerView.container.show(); - sideView.container.show(); - searchView.container.show(); + homeView.container.hide(); + sideView.container.show(); + searchView.container.show(); + headerView.container.show(); + }); } diff --git a/Lab2/js/model/dinnerModel.js b/Lab2/js/model/dinnerModel.js index 9aae327c6..eda370024 100644 --- a/Lab2/js/model/dinnerModel.js +++ b/Lab2/js/model/dinnerModel.js @@ -20,13 +20,13 @@ var DinnerModel = function() { this.setNumberOfGuests = function(num) { if(num>0){ - this.numberOfGuests = num; + numberOfGuests = num; } notifyObservers(); } this.getNumberOfGuests = function() { - return this.numberOfGuests; + return numberOfGuests; } //Returns the dish that is on the menu for selected type @@ -44,8 +44,8 @@ var DinnerModel = function() { //Returns all the dishes on the menu. this.getFullMenu = function() { var fullMenu = []; - for (dishId in this.menu){ - fullMenu.push(this.getDish(this.menu[dishId])); + for (i in menu){ + fullMenu.push(this.getDish(menu[i])); } return fullMenu; } diff --git a/Lab2/js/view/mainView3.js b/Lab2/js/view/mainView3.js deleted file mode 100644 index a5e8ffde5..000000000 --- a/Lab2/js/view/mainView3.js +++ /dev/null @@ -1,35 +0,0 @@ - -/*main view for view3 "dish overview" -gets the pictures and name of the dishes for view2 and 4 */ -var MainView3 = function (container, model) { - var dish = 100; - var Dish = model.getDish(dish); - var headlineDish = container.find("#headlineDish") - headlineDish.html(model.getDish(dish).name); - - var picDish = container.find("#imgDish"); - picDish.html(''); - - var description = container.find("#description"); - description.html(Dish.description); - - - - Rubrik = 'Ingredients for ' + model.getNumberOfGuests() + ' people'; - var rubrik = container.find("#ingrFor"); - rubrik.html(Rubrik); - - var Table = container.find("#table"); - var string = ''; - - var sum = 0; - - for(i in Dish.ingredients){ - string += ''; - } - - string += '
mängdsakSEKpris
' + Dish.ingredients[i].quantity + ' ' + Dish.ingredients[i].unit + '' + Dish.ingredients[i].name + 'SEK' + Dish.ingredients[i].price + '
SEK'+ sum + '
'; - Table.html(string); - -} - \ No newline at end of file diff --git a/Lab2/js/view/oneDishView.js b/Lab2/js/view/oneDishView.js new file mode 100644 index 000000000..b10c45103 --- /dev/null +++ b/Lab2/js/view/oneDishView.js @@ -0,0 +1,47 @@ + +/*main view for view3 "dish overview" +gets the pictures and name of the dishes for view2 and 4 */ +var OneDishView = function (container, model) { + var dish = 100; + var Dish = model.getDish(dish); + var headlineDish = container.find("#headlineDish") + var picDish = container.find("#imgDish"); + var description = container.find("#description"); + + this.loadView = function() { + + headlineDish.html(model.getDish(dish).name); + + picDish.html(''); + + description.html(Dish.description); + + + + Rubrik = 'Ingredients for ' + model.getNumberOfGuests() + ' people'; + var rubrik = container.find("#ingrFor"); + rubrik.html(Rubrik); + + var Table = container.find("#table"); + var string = ''; + + var sum = 0; + + for(i in Dish.ingredients){ + string += ''; + sum += Dish.ingredients[i].price + } + + string += '
mängdsakSEKpris
' + Dish.ingredients[i].quantity + ' ' + Dish.ingredients[i].unit + '' + Dish.ingredients[i].name + 'SEK' + Dish.ingredients[i].price + '
SEK'+ sum + '
'; + Table.html(string); + } + + + + // load/update view. + this.loadView(); + //attach as listener + model.addObserver(this); + +} + \ No newline at end of file diff --git a/Lab2/js/view/searchView.js b/Lab2/js/view/searchView.js index a22a8ff4b..cb7ca63ef 100644 --- a/Lab2/js/view/searchView.js +++ b/Lab2/js/view/searchView.js @@ -1,7 +1,7 @@ var SearchView = function (container, model) { this.container = container; this.searchButton = container.find("#searchButton"); // knappen ska bara göra loadView(), i den funktionen finns resten av isntruktionerna - var textInput = document.getElementById("keywords"); //container.find("#keywords"); + var textInput = container.find("#keywords"); //document.getElementById("keywords"); // @@ -13,19 +13,17 @@ var SearchView = function (container, model) { //console.log(type); //var keywords = Hämta filter var filter = document.getElementById("keywords").value; - console.log(filter); var menu = model.getAllDishes(type, filter); // stoppain filter och type i funktionen. - console.log(menu); var string = ''; - var picBox = container.find("#template"); + var picBox = container.find("#template"); //lägg in rätterna for(i in menu){ - string += ''; + string += ''; } picBox.html(string); - textInput.value = ""; //nollställer keywordsfönstret när man tryckt sök. + textInput.value = ""; // funkar inte. nollställer keywordsfönstret när man tryckt sök. } diff --git a/Lab2/js/view/sideView.js b/Lab2/js/view/sideView.js index 91451ea77..3ae4c39b7 100644 --- a/Lab2/js/view/sideView.js +++ b/Lab2/js/view/sideView.js @@ -1,12 +1,57 @@ - - var SideView = function (container, model) { this.container = container; + this.model = model; + this.plusButton = container.find("#plusGuest"); + this.minusButton = container.find("#minusGuest"); var numberOfGuests = container.find("#numberOfGuests"); - numberOfGuests.html(model.getNumberOfGuests()); + var table = container.find("#dinnerTable"); + var summa = container.find("#sum"); + var Summa = container.find("#summa"); + + + + + //load view + this.loadView = function() { + + numberOfGuests.html(model.getNumberOfGuests()); + + var menu = model.getFullMenu(); // stoppain filter och type i funktionen. + var string = ''; + var sum = 0; + + + //lägg in rätterna från vald menu och räknar ut priset av varje rätt samt totalt + for(i in menu){ + var dishPrice = 0; + for(n in menu[i].ingredients){ + dishPrice += menu[i].ingredients[n].price + } + sum += dishPrice; + + string += '' + menu[i].name + '' + dishPrice + ''; + } + console.log(menu); + + + table.html(string); + summa.html(sum); + Summa.html(sum); + + + + + //model.setNumberOfGuests(guests); + + } + + // load/update view. + this.loadView(); + //attach as listener + model.addObserver(this); } diff --git a/Lab2/style2D.css b/Lab2/style2D.css index 8396aeb00..9c4776374 100644 --- a/Lab2/style2D.css +++ b/Lab2/style2D.css @@ -22,12 +22,18 @@ html,body,.container { table { width: 100%; - border: 1px solid black; + +} +.Sum { + text-align: right; } +#sum{ + text-align: left; +} .sidebar { - background-color: lightgreen; - height: 800px; + /*background-color: lightgreen; + /*height: 800px;*/ /* margin-left: 0;*/ } @@ -65,9 +71,6 @@ table { margin-bottom: 0; } -.sum { - text-align: right; -} #imgDish{ width: 90%; @@ -92,4 +95,7 @@ hr { width: 400px; height: 1px; background-image: linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.75), rgba(255, 255, 255, 0)); +} +#collapseSide.collapsing { + display: block!important; } \ No newline at end of file From 5cc8481354a27e94f51b998120e584546e97acd4 Mon Sep 17 00:00:00 2001 From: lindelindblad Date: Mon, 12 Feb 2018 21:56:23 +0100 Subject: [PATCH 35/64] =?UTF-8?q?sm=C3=A5saker=20i=20dinnermodel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fixade nån loop i modellen. lade till id i rätterna (för att koppla ihop med knapptryck till recept) en displayedDish som ska hålla valt id för detsamma. --- Lab2/index.html | 4 ++-- Lab2/js/controller/searchViewController.js | 3 ++- Lab2/js/model/dinnerModel.js | 13 ++++++++++--- Lab2/js/view/searchView.js | 3 ++- 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/Lab2/index.html b/Lab2/index.html index 331f69cf7..20e493979 100644 --- a/Lab2/index.html +++ b/Lab2/index.html @@ -39,7 +39,7 @@

- @@ -169,7 +183,41 @@

Preparation

+ +
+ +
+
+

My dinner: 3 people

+
+
+ +
+
+ +
+
+ + +
+
+
    +

    Total:

    +
+ +
    +

    +
+ +
+
+
+
+ +
+
+
@@ -190,6 +238,9 @@

Preparation

+ + + diff --git a/Lab2/js/app.js b/Lab2/js/app.js index 13146e458..bf07ffb45 100644 --- a/Lab2/js/app.js +++ b/Lab2/js/app.js @@ -26,24 +26,31 @@ $(function() { var searchView = new SearchView($("#searchView"), model); // 4. oneDishView (inkl div med recept som uppdateras) - var oneDishView = new OneDishView($("oneDishView"), model); + var oneDishView = new OneDishView($("#oneDishView"), model); + + // 5. fullMenuView -overviewView + var overviewView = new OverviewView($("#overview"), model); + - // 5. fullMenuView // 6. printView - + // Controllers - var stateController = new StateController(homeView, sideView, searchView, header); + var stateController = new StateController(homeView, sideView, searchView, header, oneDishView, overviewView); //var homeViewController = new HomeViewController(homeView, model); var searchViewController = new SearchViewController(searchView, model); var sideViewController = new SideViewController(sideView, model); + var oneDishViewController = new OneDishViewController(oneDishView, model); + + var overviewViewController = new OverviewViewController(OverviewView, model); + //var mainView3 = new MainView3($("#mainView3"), model); @@ -54,6 +61,8 @@ $(function() { $("#sideView").hide(); $("#searchView").hide(); $("#oneDishView").hide(); + $("#overview").hide(); + diff --git a/Lab2/js/controller/oneDishViewController.js b/Lab2/js/controller/oneDishViewController.js index cd5baf195..93440bccd 100644 --- a/Lab2/js/controller/oneDishViewController.js +++ b/Lab2/js/controller/oneDishViewController.js @@ -1,11 +1,11 @@ - var OneDishViewController = function(view, model) { this.view = view; this.model = model; + view.add.click(function() { + model.addDishToMenu(view.Dish.id); - view.dish.click(function() { - view.loadView(); - }); + + } \ No newline at end of file diff --git a/Lab2/js/controller/overviewViewController.js b/Lab2/js/controller/overviewViewController.js new file mode 100644 index 000000000..3dd415bda --- /dev/null +++ b/Lab2/js/controller/overviewViewController.js @@ -0,0 +1,6 @@ +var OverviewViewController = function(view, model) { + this.view = view; + this.model = model; + + +} \ No newline at end of file diff --git a/Lab2/js/controller/searchViewController.js b/Lab2/js/controller/searchViewController.js index 7dd79f12e..827b07d8b 100644 --- a/Lab2/js/controller/searchViewController.js +++ b/Lab2/js/controller/searchViewController.js @@ -8,6 +8,6 @@ var SearchViewController = function(view, model) { view.searchButton.click(function() { view.loadView(); }); - + } \ No newline at end of file diff --git a/Lab2/js/controller/sideViewController.js b/Lab2/js/controller/sideViewController.js index 3ca4d811d..ad608f775 100644 --- a/Lab2/js/controller/sideViewController.js +++ b/Lab2/js/controller/sideViewController.js @@ -1,4 +1,4 @@ -var SideViewController = function(view, model ) { +var SideViewController = function(view, model) { this.view = view; this.model = model; @@ -9,5 +9,5 @@ var SideViewController = function(view, model ) { view.minusButton.click(function(){ model.setNumberOfGuests(model.getNumberOfGuests() - 1); }); - //view.loadView(); + } \ No newline at end of file diff --git a/Lab2/js/controller/stateController.js b/Lab2/js/controller/stateController.js index b257c2621..01c2f7d47 100644 --- a/Lab2/js/controller/stateController.js +++ b/Lab2/js/controller/stateController.js @@ -1,22 +1,54 @@ -var StateController = function(view1, view2, view3, view4) { +var StateController = function(view1, view2, view3, view4, view5, view6) { var homeView = view1; var sideView = view2; var searchView = view3; var headerView = view4; + var oneDishView = view5; + var overview = view6; var startDinner = function() { homeView.startButton.click(function() { homeView.container.hide(); sideView.container.show(); - searchView.container.show(); + searchView.container.show() headerView.container.show(); + //kunde inte flytta den till searchviewController, då gick det inte att anropa funktionen. + //ändra till bilderna som knappar istället för test! + searchView.testButton.click(function() { + oneDish(); + }); + }); } + var oneDish = function(){ + sideView.container.show(); + searchView.container.hide(); + headerView.container.show(); + oneDishView.container.show(); + + oneDishView.backButton.click(function() { + oneDishView.container.hide(); + searchView.container.show(); + }); + //måste fungera i både oneDish och SearchView + sideView.confirmButton.click(function(){ + searchView.container.hide(); + oneDishView.container.hide(); + searchView.container.hide(); + overview.container.show(); + + }); - startDinner(); + + + + } + + + startDinner(); } \ No newline at end of file diff --git a/Lab2/js/model/dinnerModel.js b/Lab2/js/model/dinnerModel.js index b8bd641bc..e4e30d69b 100644 --- a/Lab2/js/model/dinnerModel.js +++ b/Lab2/js/model/dinnerModel.js @@ -5,7 +5,7 @@ var DinnerModel = function() { // and selected dishes for the dinner menu var numberOfGuests = 2; // ej this. för då blir det en property som man kan nå utifrån. istället var. - var menu = [1, 100, 201] + var menu = [1, 101, 201] var observers = new Array(); var displayedDish = ""; @@ -45,7 +45,7 @@ var DinnerModel = function() { //Returnerar id på klickad rätt this.selectDishRecipe = function (selectedID) { this.displayedDish = selectedID; - this.notifyObservers("toRecipe"); + notifyObservers("toRecipe"); }; //Returns all the dishes on the menu. @@ -99,19 +99,23 @@ var DinnerModel = function() { } menu.push(id); + notifyObservers(); + } //Removes dish from menu this.removeDishFromMenu = function(id) { var i = 0; - for (dish in menu){ + for (i in menu){ - if (dish === id){ + if (menu[i] === id){ menu.splice(i,1) } i++; } + notifyObservers(); + } //function that returns all dishes of specific type (i.e. "starter", "main dish" or "dessert") diff --git a/Lab2/js/view/oneDishView.js b/Lab2/js/view/oneDishView.js index b10c45103..db887f175 100644 --- a/Lab2/js/view/oneDishView.js +++ b/Lab2/js/view/oneDishView.js @@ -2,38 +2,51 @@ /*main view for view3 "dish overview" gets the pictures and name of the dishes for view2 and 4 */ var OneDishView = function (container, model) { + this.container = container; + this.model = model; + + /*måste ämdras till hämtning av vald dish genom click... */ var dish = 100; - var Dish = model.getDish(dish); - var headlineDish = container.find("#headlineDish") + + this.Dish = model.getDish(dish); + this.backButton = container.find("#backButton"); + this.add = container.find("#add"); + + var headlineDish = container.find("#headlineDish"); var picDish = container.find("#imgDish"); var description = container.find("#description"); + var Table = container.find("#table"); + var Summa = container.find("#td1"); + var rubrik = container.find("#ingrFor"); - this.loadView = function() { + - headlineDish.html(model.getDish(dish).name); - - picDish.html(''); - - description.html(Dish.description); + this.loadView = function() { + nrOfGuests = model.getNumberOfGuests(); + headlineDish.html(this.Dish.name); + picDish.html(''); + + description.html(this.Dish.description); - Rubrik = 'Ingredients for ' + model.getNumberOfGuests() + ' people'; - var rubrik = container.find("#ingrFor"); + Rubrik = 'Ingredients for ' + nrOfGuests + ' people'; rubrik.html(Rubrik); - var Table = container.find("#table"); var string = ''; var sum = 0; - for(i in Dish.ingredients){ - string += ''; - sum += Dish.ingredients[i].price + for(i in this.Dish.ingredients){ + Price = this.Dish.ingredients[i].price*nrOfGuests; + string += ''; + sum += Price; } + summa= ''; - string += '
mängdsakSEKpris
' + Dish.ingredients[i].quantity + ' ' + Dish.ingredients[i].unit + '' + Dish.ingredients[i].name + 'SEK' + Dish.ingredients[i].price + '
' + this.Dish.ingredients[i].quantity + ' ' + this.Dish.ingredients[i].unit + '' + this.Dish.ingredients[i].name + 'SEK' + Price + '
SEK ' + sum + '
SEK'+ sum + '
'; Table.html(string); + Summa.html(summa); + } diff --git a/Lab2/js/view/overviewView.js b/Lab2/js/view/overviewView.js new file mode 100644 index 000000000..824e12114 --- /dev/null +++ b/Lab2/js/view/overviewView.js @@ -0,0 +1,25 @@ +var OverviewView = function (container, model) { + + this.container = container; + this.model = model; + + + //var numberOfGuests = container.find("#numberOfGuests"); + + + + + + //load view + this.loadView = function() { + + } + + + // load/update view. + this.loadView(); + //attach as listener + model.addObserver(this); + +} + diff --git a/Lab2/js/view/searchView.js b/Lab2/js/view/searchView.js index c7e1b3d05..ec3697f1e 100644 --- a/Lab2/js/view/searchView.js +++ b/Lab2/js/view/searchView.js @@ -2,7 +2,7 @@ var SearchView = function (container, model) { this.container = container; this.searchButton = container.find("#searchButton"); // knappen ska bara göra loadView(), i den funktionen finns resten av isntruktionerna var textInput = container.find("#keywords"); //document.getElementById("keywords"); // - + this.testButton = container.find("#test"); //load view diff --git a/Lab2/js/view/sideView.js b/Lab2/js/view/sideView.js index 3ae4c39b7..1611b4b9d 100644 --- a/Lab2/js/view/sideView.js +++ b/Lab2/js/view/sideView.js @@ -15,8 +15,8 @@ var SideView = function (container, model) { //load view this.loadView = function() { - - numberOfGuests.html(model.getNumberOfGuests()); + nrOfGuests = model.getNumberOfGuests(); + numberOfGuests.html(nrOfGuests); var menu = model.getFullMenu(); // stoppain filter och type i funktionen. var string = ''; @@ -27,13 +27,12 @@ var SideView = function (container, model) { for(i in menu){ var dishPrice = 0; for(n in menu[i].ingredients){ - dishPrice += menu[i].ingredients[n].price + dishPrice += menu[i].ingredients[n].price*nrOfGuests; } sum += dishPrice; string += '' + menu[i].name + '' + dishPrice + ''; } - console.log(menu); table.html(string); diff --git a/Lab2/style2D.css b/Lab2/style2D.css index 9c4776374..177f3eaaf 100644 --- a/Lab2/style2D.css +++ b/Lab2/style2D.css @@ -1,9 +1,6 @@ form{ margin-bottom: 10px; } -#Guests{ - width: 40px; -} img{ width: 100%; @@ -43,6 +40,11 @@ table { .jumbotron { text-align: center; + padding-top: 0px; +} +.page-header { + text-align: center; + margin-top: 0px; } .row { @@ -97,5 +99,6 @@ hr { background-image: linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.75), rgba(255, 255, 255, 0)); } #collapseSide.collapsing { - display: block!important; -} \ No newline at end of file + margin-top: 10px; + margin-bottom: 10px +} From 75625509aefd95d764189c380224b42b91f6c8ad Mon Sep 17 00:00:00 2001 From: sofiaJagerstrom Date: Wed, 14 Feb 2018 10:42:44 +0100 Subject: [PATCH 37/64] ... --- Lab2/index.html | 9 +++---- Lab2/js/app.js | 2 +- Lab2/js/controller/overviewViewController.js | 3 ++- Lab2/js/controller/stateController.js | 26 ++++++++++++++------ Lab2/js/view/overviewView.js | 12 ++++++--- Lab2/js/view/sideView.js | 4 ++- 6 files changed, 38 insertions(+), 18 deletions(-) diff --git a/Lab2/index.html b/Lab2/index.html index 97e440bee..b2c59be63 100644 --- a/Lab2/index.html +++ b/Lab2/index.html @@ -152,7 +152,7 @@

Find a dish

-

+
@@ -176,7 +176,7 @@

-
+

Preparation

@@ -187,11 +187,10 @@

Preparation

-
-

My dinner: 3 people

+
- +
diff --git a/Lab2/js/app.js b/Lab2/js/app.js index bf07ffb45..eeff76680 100644 --- a/Lab2/js/app.js +++ b/Lab2/js/app.js @@ -49,7 +49,7 @@ $(function() { var oneDishViewController = new OneDishViewController(oneDishView, model); - var overviewViewController = new OverviewViewController(OverviewView, model); + var overviewViewController = new OverviewViewController(overviewView, model); diff --git a/Lab2/js/controller/overviewViewController.js b/Lab2/js/controller/overviewViewController.js index 3dd415bda..1417e4fe4 100644 --- a/Lab2/js/controller/overviewViewController.js +++ b/Lab2/js/controller/overviewViewController.js @@ -1,6 +1,7 @@ var OverviewViewController = function(view, model) { this.view = view; this.model = model; - + + view.loadView(); } \ No newline at end of file diff --git a/Lab2/js/controller/stateController.js b/Lab2/js/controller/stateController.js index 01c2f7d47..7302997f4 100644 --- a/Lab2/js/controller/stateController.js +++ b/Lab2/js/controller/stateController.js @@ -5,7 +5,7 @@ var StateController = function(view1, view2, view3, view4, view5, view6) { var searchView = view3; var headerView = view4; var oneDishView = view5; - var overview = view6; + var overviewView = view6; var startDinner = function() { homeView.startButton.click(function() { @@ -19,6 +19,10 @@ var StateController = function(view1, view2, view3, view4, view5, view6) { searchView.testButton.click(function() { oneDish(); }); + sideView.confirmButton.click(function(){ + overview(); + }); + }); } @@ -34,19 +38,27 @@ var StateController = function(view1, view2, view3, view4, view5, view6) { }); //måste fungera i både oneDish och SearchView sideView.confirmButton.click(function(){ - searchView.container.hide(); - oneDishView.container.hide(); - searchView.container.hide(); + overview(); + }); + } + var overview = function(){ + searchView.container.hide(); + oneDishView.container.hide(); + searchView.container.hide(); + overviewView.container.show(); - overview.container.show(); + overviewView.backButton.click(function() { + overviewView.container.hide(); + searchView.container.show(); + sideView.container.show(); }); - + } - } + startDinner(); diff --git a/Lab2/js/view/overviewView.js b/Lab2/js/view/overviewView.js index 824e12114..f30ff5019 100644 --- a/Lab2/js/view/overviewView.js +++ b/Lab2/js/view/overviewView.js @@ -3,8 +3,9 @@ var OverviewView = function (container, model) { this.container = container; this.model = model; - - //var numberOfGuests = container.find("#numberOfGuests"); + this.backButton = container.find("#back"); + + var header = container.find("#overviewHeader"); @@ -12,8 +13,13 @@ var OverviewView = function (container, model) { //load view this.loadView = function() { + nr= model.getNumberOfGuests(); + string = '

My dinner: '+ nr +' people

'; + + header.html(string); + - } + } // load/update view. diff --git a/Lab2/js/view/sideView.js b/Lab2/js/view/sideView.js index 1611b4b9d..f72a43ba0 100644 --- a/Lab2/js/view/sideView.js +++ b/Lab2/js/view/sideView.js @@ -4,6 +4,8 @@ var SideView = function (container, model) { this.model = model; this.plusButton = container.find("#plusGuest"); this.minusButton = container.find("#minusGuest"); + this.confirmButton = container.find("#confirm"); + var numberOfGuests = container.find("#numberOfGuests"); var table = container.find("#dinnerTable"); @@ -44,7 +46,7 @@ var SideView = function (container, model) { //model.setNumberOfGuests(guests); - } + } // load/update view. From 297d551f65929e9b32aa971cc437c3f1312c1474 Mon Sep 17 00:00:00 2001 From: sofiaJagerstrom Date: Wed, 14 Feb 2018 12:31:17 +0100 Subject: [PATCH 38/64] printView --- Lab2/index.html | 31 +++++++++++--------- Lab2/js/app.js | 7 +++-- Lab2/js/controller/overviewViewController.js | 3 +- Lab2/js/controller/printViewController.js | 6 ++++ Lab2/js/controller/stateController.js | 22 +++++++++----- Lab2/js/view/overviewView.js | 24 +++++++++++++-- Lab2/js/view/printView.js | 18 ++++++++++++ Lab2/style2D.css | 8 +++++ 8 files changed, 91 insertions(+), 28 deletions(-) create mode 100644 Lab2/js/controller/printViewController.js create mode 100644 Lab2/js/view/printView.js diff --git a/Lab2/index.html b/Lab2/index.html index b2c59be63..551fda810 100644 --- a/Lab2/index.html +++ b/Lab2/index.html @@ -164,14 +164,13 @@

+ - - - -
- - + + + +
@@ -187,33 +186,36 @@

Preparation

- -
+ +
-
+
-
+
+

    Total:

    -

    +

- +
@@ -240,7 +242,8 @@

- + + diff --git a/Lab2/js/app.js b/Lab2/js/app.js index eeff76680..eead4d5c1 100644 --- a/Lab2/js/app.js +++ b/Lab2/js/app.js @@ -32,16 +32,15 @@ $(function() { var overviewView = new OverviewView($("#overview"), model); - // 6. printView - + var printView = new PrintView($("#printView"), model); // Controllers - var stateController = new StateController(homeView, sideView, searchView, header, oneDishView, overviewView); + var stateController = new StateController(homeView, sideView, searchView, header, oneDishView, overviewView, printView); //var homeViewController = new HomeViewController(homeView, model); var searchViewController = new SearchViewController(searchView, model); @@ -51,6 +50,8 @@ $(function() { var overviewViewController = new OverviewViewController(overviewView, model); + var printViewController = new PrintViewController(printView, model); + //var mainView3 = new MainView3($("#mainView3"), model); diff --git a/Lab2/js/controller/overviewViewController.js b/Lab2/js/controller/overviewViewController.js index 1417e4fe4..3dd415bda 100644 --- a/Lab2/js/controller/overviewViewController.js +++ b/Lab2/js/controller/overviewViewController.js @@ -1,7 +1,6 @@ var OverviewViewController = function(view, model) { this.view = view; this.model = model; - - view.loadView(); + } \ No newline at end of file diff --git a/Lab2/js/controller/printViewController.js b/Lab2/js/controller/printViewController.js new file mode 100644 index 000000000..66664455d --- /dev/null +++ b/Lab2/js/controller/printViewController.js @@ -0,0 +1,6 @@ +var PrintViewController = function(view, model) { + this.view = view; + this.model = model; + + +} \ No newline at end of file diff --git a/Lab2/js/controller/stateController.js b/Lab2/js/controller/stateController.js index 7302997f4..c556dfcbb 100644 --- a/Lab2/js/controller/stateController.js +++ b/Lab2/js/controller/stateController.js @@ -1,4 +1,4 @@ -var StateController = function(view1, view2, view3, view4, view5, view6) { +var StateController = function(view1, view2, view3, view4, view5, view6, view7) { var homeView = view1; var sideView = view2; @@ -6,6 +6,7 @@ var StateController = function(view1, view2, view3, view4, view5, view6) { var headerView = view4; var oneDishView = view5; var overviewView = view6; + var printView = view7; var startDinner = function() { homeView.startButton.click(function() { @@ -19,9 +20,6 @@ var StateController = function(view1, view2, view3, view4, view5, view6) { searchView.testButton.click(function() { oneDish(); }); - sideView.confirmButton.click(function(){ - overview(); - }); }); @@ -37,14 +35,13 @@ var StateController = function(view1, view2, view3, view4, view5, view6) { searchView.container.show(); }); //måste fungera i både oneDish och SearchView - sideView.confirmButton.click(function(){ - overview(); - }); + } var overview = function(){ searchView.container.hide(); oneDishView.container.hide(); searchView.container.hide(); + sideView.container.hide(); overviewView.container.show(); overviewView.backButton.click(function() { @@ -53,8 +50,19 @@ var StateController = function(view1, view2, view3, view4, view5, view6) { sideView.container.show(); }); + overviewView.printButton.click(function(){ + printRecipe(); + + }); } + var printRecipe = function(){ + overviewView.container.hide(); + printView.container.show(); + } + sideView.confirmButton.click(function(){ + overview(); + }); diff --git a/Lab2/js/view/overviewView.js b/Lab2/js/view/overviewView.js index f30ff5019..b7e8116a7 100644 --- a/Lab2/js/view/overviewView.js +++ b/Lab2/js/view/overviewView.js @@ -4,8 +4,13 @@ var OverviewView = function (container, model) { this.model = model; this.backButton = container.find("#back"); + this.printButton = container.find("#print"); + var header = container.find("#overviewHeader"); + var pictures = container.find("#pictures"); + var total = container.find("#totSum"); + @@ -15,9 +20,24 @@ var OverviewView = function (container, model) { this.loadView = function() { nr= model.getNumberOfGuests(); string = '

My dinner: '+ nr +' people

'; - + var menu = model.getFullMenu(); header.html(string); - + + sum =0; + HTMLPic= ""; + for(i in menu){ + var dishPrice = 0; + for(n in menu[i].ingredients){ + dishPrice += menu[i].ingredients[n].price*nr; + } + HTMLPic += '

'+ dishPrice +' SEK

'; + + sum += dishPrice; + } + console.log(HTMLPic); + pictures.html(HTMLPic); + total.html(sum); + } diff --git a/Lab2/js/view/printView.js b/Lab2/js/view/printView.js new file mode 100644 index 000000000..ef147a99f --- /dev/null +++ b/Lab2/js/view/printView.js @@ -0,0 +1,18 @@ +var PrintView = function (container, model) { + this.container = container; + this.model = model; + + + //load view + this.loadView = function() { + + + } + + + + // load/update view. + this.loadView(); + //attach as listener + model.addObserver(this); +} \ No newline at end of file diff --git a/Lab2/style2D.css b/Lab2/style2D.css index 177f3eaaf..32a00a56e 100644 --- a/Lab2/style2D.css +++ b/Lab2/style2D.css @@ -102,3 +102,11 @@ hr { margin-top: 10px; margin-bottom: 10px } +.margin{ + margin-right: 20px; + margin-top: 10px; +} + +.margin1{ + margin-bottom: 0px; +} From 91c93bd15ccd5821099861b9a3843e46d21c57e3 Mon Sep 17 00:00:00 2001 From: lindelindblad Date: Wed, 14 Feb 2018 12:40:03 +0100 Subject: [PATCH 39/64] =?UTF-8?q?varje=20r=C3=A4tt=20=C3=A4r=20en=20egen?= =?UTF-8?q?=20knapp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Lab2/js/controller/searchViewController.js | 24 +++++++++++++++++++++- Lab2/js/model/dinnerModel.js | 7 ++++++- Lab2/js/view/searchView.js | 12 +++++++++++ 3 files changed, 41 insertions(+), 2 deletions(-) diff --git a/Lab2/js/controller/searchViewController.js b/Lab2/js/controller/searchViewController.js index 827b07d8b..c5d24d965 100644 --- a/Lab2/js/controller/searchViewController.js +++ b/Lab2/js/controller/searchViewController.js @@ -2,12 +2,34 @@ var SearchViewController = function(view, model) { this.view = view; this.model = model; + var dishesView = new Array(); + + //dishesView = $(".thumbnail"); + dishesView = view.container.find(".thumbnail"); + console.log(dishesView); - //var searchButton = view.container.find("#searchButton"); view.searchButton.click(function() { view.loadView(); }); + + // lägg till knapp på varje rätt + for ( var i = 0; i < dishesView.length; i++) { + dishesView[i].addEventListener("click", function() { + // spara id i modellens displayedDish, och notify att uppdater vy. + model.selectDishRecipe(this.id); + //model.displayedDish = this.id; + + console.log(this.id); + console.log("och i modellen:"); + console.log(model.displayedDish); // funktion istället så att den notifies. + + + }); + } + + + } \ No newline at end of file diff --git a/Lab2/js/model/dinnerModel.js b/Lab2/js/model/dinnerModel.js index e4e30d69b..569fc8e85 100644 --- a/Lab2/js/model/dinnerModel.js +++ b/Lab2/js/model/dinnerModel.js @@ -7,7 +7,7 @@ var DinnerModel = function() { var numberOfGuests = 2; // ej this. för då blir det en property som man kan nå utifrån. istället var. var menu = [1, 101, 201] var observers = new Array(); - var displayedDish = ""; + this.displayedDish = ""; this.addObserver = function(observer) { observers.push(observer); @@ -16,6 +16,7 @@ var DinnerModel = function() { var notifyObservers = function() { for(var i = 0; i < observers.length; i++) { observers[i].loadView(); + //observer[i].update(args); } } @@ -45,6 +46,10 @@ var DinnerModel = function() { //Returnerar id på klickad rätt this.selectDishRecipe = function (selectedID) { this.displayedDish = selectedID; + console.log("nu går vi vidare till recept"); + console.log(this.displayedDish); + + //meddela observers att de ska vidare till nästa. notifyObservers("toRecipe"); }; diff --git a/Lab2/js/view/searchView.js b/Lab2/js/view/searchView.js index ec3697f1e..45701cc55 100644 --- a/Lab2/js/view/searchView.js +++ b/Lab2/js/view/searchView.js @@ -26,6 +26,18 @@ var SearchView = function (container, model) { textInput.value = ""; // funkar inte. nollställer keywordsfönstret när man tryckt sök. } + + this.update = function(args) { + var viewArgs = args; + switch(viewArgs) { + case "toRecipe": + this.hide(); + break + default: + break + } + + } From a5b7aee8e2237d964aa2bce0ae6243b68673f1ee Mon Sep 17 00:00:00 2001 From: sofiaJagerstrom Date: Wed, 14 Feb 2018 14:50:02 +0100 Subject: [PATCH 40/64] ... --- Lab2/index.html | 14 ++++++++++++++ Lab2/js/app.js | 2 ++ Lab2/js/controller/stateController.js | 9 +++++++++ Lab2/js/view/overviewView.js | 5 ++--- Lab2/js/view/printView.js | 24 ++++++++++++++++++++++++ Lab2/style2D.css | 1 + 6 files changed, 52 insertions(+), 3 deletions(-) diff --git a/Lab2/index.html b/Lab2/index.html index 551fda810..9bbe9aace 100644 --- a/Lab2/index.html +++ b/Lab2/index.html @@ -220,6 +220,20 @@

+ +
+
+ + +
+
+
+ diff --git a/Lab2/js/app.js b/Lab2/js/app.js index eead4d5c1..9b6536d48 100644 --- a/Lab2/js/app.js +++ b/Lab2/js/app.js @@ -63,6 +63,8 @@ $(function() { $("#searchView").hide(); $("#oneDishView").hide(); $("#overview").hide(); + $("#printView").hide(); + diff --git a/Lab2/js/controller/stateController.js b/Lab2/js/controller/stateController.js index c556dfcbb..df4853892 100644 --- a/Lab2/js/controller/stateController.js +++ b/Lab2/js/controller/stateController.js @@ -58,6 +58,15 @@ var StateController = function(view1, view2, view3, view4, view5, view6, view7) var printRecipe = function(){ overviewView.container.hide(); printView.container.show(); + + printView.BackButton.click(function() { + printView.container.hide(); + sideView.container.show(); + searchView.container.show(); + + }); + + } sideView.confirmButton.click(function(){ diff --git a/Lab2/js/view/overviewView.js b/Lab2/js/view/overviewView.js index b7e8116a7..43cf43165 100644 --- a/Lab2/js/view/overviewView.js +++ b/Lab2/js/view/overviewView.js @@ -18,8 +18,8 @@ var OverviewView = function (container, model) { //load view this.loadView = function() { - nr= model.getNumberOfGuests(); - string = '

My dinner: '+ nr +' people

'; + var nr= model.getNumberOfGuests(); + var string = '

My dinner: '+ nr +' people

'; var menu = model.getFullMenu(); header.html(string); @@ -34,7 +34,6 @@ var OverviewView = function (container, model) { sum += dishPrice; } - console.log(HTMLPic); pictures.html(HTMLPic); total.html(sum); diff --git a/Lab2/js/view/printView.js b/Lab2/js/view/printView.js index ef147a99f..4732be023 100644 --- a/Lab2/js/view/printView.js +++ b/Lab2/js/view/printView.js @@ -2,11 +2,35 @@ var PrintView = function (container, model) { this.container = container; this.model = model; + this.BackButton = container.find("#Back"); + + + var print = container.find("#printDish") + var header = container.find("#printHeader") + + //load view this.loadView = function() { + + var nr = model.getNumberOfGuests(); + string = '

My dinner: '+ nr +' people

'; + header.html(string); + + var string = ''; + menu = model.getFullMenu() + for(i in menu){ + string += '
'+ + '

' + menu[i].name + + '

Preparation

' + menu[i].description + + '

'; + ; + + } + print.html(string); + } diff --git a/Lab2/style2D.css b/Lab2/style2D.css index 32a00a56e..d934c666b 100644 --- a/Lab2/style2D.css +++ b/Lab2/style2D.css @@ -105,6 +105,7 @@ hr { .margin{ margin-right: 20px; margin-top: 10px; + margin-left: 20px; } .margin1{ From 6d6de37e6aaa85568db51285248d72596d17f79c Mon Sep 17 00:00:00 2001 From: lindelindblad Date: Wed, 14 Feb 2018 14:55:25 +0100 Subject: [PATCH 41/64] :( MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit föröskt ordna med updteView --- Lab2/ej aktuell/{ => lab 1}/home.html | 0 .../{ => lab 1}/homeViewController.js | 0 Lab2/ej aktuell/{ => lab 1}/index.html | 0 Lab2/ej aktuell/{ => lab 1}/start.css | 0 Lab2/ej aktuell/{ => lab 1}/style.css | 0 Lab2/ej aktuell/{ => lab 1}/style2B.css | 0 Lab2/ej aktuell/{ => lab 1}/view-2B.html | 0 Lab2/ej aktuell/{ => lab 1}/view2-oaus.html | 0 Lab2/ej aktuell/{ => lab 1}/view2.html | 0 Lab2/ej aktuell/{ => lab 1}/view4.html | 0 Lab2/ej aktuell/{ => lab 1}/view4B.html | 0 Lab2/ej aktuell/{ => lab 1}/view5B.html | 0 .../view => ej aktuell/lab 2}/exampleView.js | 0 Lab2/{ => ej aktuell/lab 2}/landingPage.html | 0 Lab2/{js/view => ej aktuell/lab 2}/mainPic.js | 0 .../view => ej aktuell/lab 2}/mainView5.js | 0 Lab2/{ => ej aktuell/lab 2}/view2.html | 0 Lab2/{ => ej aktuell/lab 2}/view3.html | 0 Lab2/{ => ej aktuell/lab 2}/view4.html | 0 Lab2/{ => ej aktuell/lab 2}/view5.html | 0 Lab2/{ => ej aktuell/lab 2}/view6.html | 0 Lab2/js/app kopia.js | 61 ------------------- Lab2/js/controller/searchViewController.js | 9 +-- Lab2/js/controller/stateController.js | 1 + Lab2/js/model/dinnerModel.js | 29 +++++---- Lab2/js/view/homeView.js | 1 - Lab2/js/view/oneDishView.js | 5 ++ Lab2/js/view/printView.js | 6 +- Lab2/js/view/searchView.js | 18 ++---- Lab2/js/view/sideView.js | 9 ++- 30 files changed, 41 insertions(+), 98 deletions(-) rename Lab2/ej aktuell/{ => lab 1}/home.html (100%) rename Lab2/ej aktuell/{ => lab 1}/homeViewController.js (100%) rename Lab2/ej aktuell/{ => lab 1}/index.html (100%) rename Lab2/ej aktuell/{ => lab 1}/start.css (100%) rename Lab2/ej aktuell/{ => lab 1}/style.css (100%) rename Lab2/ej aktuell/{ => lab 1}/style2B.css (100%) rename Lab2/ej aktuell/{ => lab 1}/view-2B.html (100%) rename Lab2/ej aktuell/{ => lab 1}/view2-oaus.html (100%) rename Lab2/ej aktuell/{ => lab 1}/view2.html (100%) rename Lab2/ej aktuell/{ => lab 1}/view4.html (100%) rename Lab2/ej aktuell/{ => lab 1}/view4B.html (100%) rename Lab2/ej aktuell/{ => lab 1}/view5B.html (100%) rename Lab2/{js/view => ej aktuell/lab 2}/exampleView.js (100%) rename Lab2/{ => ej aktuell/lab 2}/landingPage.html (100%) rename Lab2/{js/view => ej aktuell/lab 2}/mainPic.js (100%) rename Lab2/{js/view => ej aktuell/lab 2}/mainView5.js (100%) rename Lab2/{ => ej aktuell/lab 2}/view2.html (100%) rename Lab2/{ => ej aktuell/lab 2}/view3.html (100%) rename Lab2/{ => ej aktuell/lab 2}/view4.html (100%) rename Lab2/{ => ej aktuell/lab 2}/view5.html (100%) rename Lab2/{ => ej aktuell/lab 2}/view6.html (100%) delete mode 100644 Lab2/js/app kopia.js diff --git a/Lab2/ej aktuell/home.html b/Lab2/ej aktuell/lab 1/home.html similarity index 100% rename from Lab2/ej aktuell/home.html rename to Lab2/ej aktuell/lab 1/home.html diff --git a/Lab2/ej aktuell/homeViewController.js b/Lab2/ej aktuell/lab 1/homeViewController.js similarity index 100% rename from Lab2/ej aktuell/homeViewController.js rename to Lab2/ej aktuell/lab 1/homeViewController.js diff --git a/Lab2/ej aktuell/index.html b/Lab2/ej aktuell/lab 1/index.html similarity index 100% rename from Lab2/ej aktuell/index.html rename to Lab2/ej aktuell/lab 1/index.html diff --git a/Lab2/ej aktuell/start.css b/Lab2/ej aktuell/lab 1/start.css similarity index 100% rename from Lab2/ej aktuell/start.css rename to Lab2/ej aktuell/lab 1/start.css diff --git a/Lab2/ej aktuell/style.css b/Lab2/ej aktuell/lab 1/style.css similarity index 100% rename from Lab2/ej aktuell/style.css rename to Lab2/ej aktuell/lab 1/style.css diff --git a/Lab2/ej aktuell/style2B.css b/Lab2/ej aktuell/lab 1/style2B.css similarity index 100% rename from Lab2/ej aktuell/style2B.css rename to Lab2/ej aktuell/lab 1/style2B.css diff --git a/Lab2/ej aktuell/view-2B.html b/Lab2/ej aktuell/lab 1/view-2B.html similarity index 100% rename from Lab2/ej aktuell/view-2B.html rename to Lab2/ej aktuell/lab 1/view-2B.html diff --git a/Lab2/ej aktuell/view2-oaus.html b/Lab2/ej aktuell/lab 1/view2-oaus.html similarity index 100% rename from Lab2/ej aktuell/view2-oaus.html rename to Lab2/ej aktuell/lab 1/view2-oaus.html diff --git a/Lab2/ej aktuell/view2.html b/Lab2/ej aktuell/lab 1/view2.html similarity index 100% rename from Lab2/ej aktuell/view2.html rename to Lab2/ej aktuell/lab 1/view2.html diff --git a/Lab2/ej aktuell/view4.html b/Lab2/ej aktuell/lab 1/view4.html similarity index 100% rename from Lab2/ej aktuell/view4.html rename to Lab2/ej aktuell/lab 1/view4.html diff --git a/Lab2/ej aktuell/view4B.html b/Lab2/ej aktuell/lab 1/view4B.html similarity index 100% rename from Lab2/ej aktuell/view4B.html rename to Lab2/ej aktuell/lab 1/view4B.html diff --git a/Lab2/ej aktuell/view5B.html b/Lab2/ej aktuell/lab 1/view5B.html similarity index 100% rename from Lab2/ej aktuell/view5B.html rename to Lab2/ej aktuell/lab 1/view5B.html diff --git a/Lab2/js/view/exampleView.js b/Lab2/ej aktuell/lab 2/exampleView.js similarity index 100% rename from Lab2/js/view/exampleView.js rename to Lab2/ej aktuell/lab 2/exampleView.js diff --git a/Lab2/landingPage.html b/Lab2/ej aktuell/lab 2/landingPage.html similarity index 100% rename from Lab2/landingPage.html rename to Lab2/ej aktuell/lab 2/landingPage.html diff --git a/Lab2/js/view/mainPic.js b/Lab2/ej aktuell/lab 2/mainPic.js similarity index 100% rename from Lab2/js/view/mainPic.js rename to Lab2/ej aktuell/lab 2/mainPic.js diff --git a/Lab2/js/view/mainView5.js b/Lab2/ej aktuell/lab 2/mainView5.js similarity index 100% rename from Lab2/js/view/mainView5.js rename to Lab2/ej aktuell/lab 2/mainView5.js diff --git a/Lab2/view2.html b/Lab2/ej aktuell/lab 2/view2.html similarity index 100% rename from Lab2/view2.html rename to Lab2/ej aktuell/lab 2/view2.html diff --git a/Lab2/view3.html b/Lab2/ej aktuell/lab 2/view3.html similarity index 100% rename from Lab2/view3.html rename to Lab2/ej aktuell/lab 2/view3.html diff --git a/Lab2/view4.html b/Lab2/ej aktuell/lab 2/view4.html similarity index 100% rename from Lab2/view4.html rename to Lab2/ej aktuell/lab 2/view4.html diff --git a/Lab2/view5.html b/Lab2/ej aktuell/lab 2/view5.html similarity index 100% rename from Lab2/view5.html rename to Lab2/ej aktuell/lab 2/view5.html diff --git a/Lab2/view6.html b/Lab2/ej aktuell/lab 2/view6.html similarity index 100% rename from Lab2/view6.html rename to Lab2/ej aktuell/lab 2/view6.html diff --git a/Lab2/js/app kopia.js b/Lab2/js/app kopia.js deleted file mode 100644 index c68103f8d..000000000 --- a/Lab2/js/app kopia.js +++ /dev/null @@ -1,61 +0,0 @@ -// Visa söksidan. -function showSelectDish() { - $("#homeView").hide(); - $("#header").show(); - $("#sideView").show(); - $("#searchView").show(); - $("#mainPic").show(); -} - -$(function() { - //We instantiate our model - var model = new DinnerModel(); - - // And create the instance of our views - - // 1. homeView - var homeView = new HomeView($("#homeView"), model); - - // 2.sideView - var sideView = new SideView($("#sideView"), model); - - // 3.searchView (inkl maträtterna nedanför) - var mainPic = new MainPic($("#mainPic"), model); - - // 4. oneDishView (inkl div med recept som uppdateras) - - // 5. fullMenuView - - // 6. printView - - - var searchView = new SearchView($("#searchView"), model); - //var searchViewController = new SearchViewController(searchView, model); - - - // Controllers - var homeViewController = new HomeViewController(homeView, model); - - - - var mainView3 = new MainView3($("#mainView3"), model); - var mainView5 = new MainView5($("#mainView5"), model); - - // Gömmer allt utom start - // Man skulle kunna lägga detta inuti varje view, när den initieras så göms den! - $("#header").hide(); - /*$("#sideView").hide(); */ - $("#searchView").hide(); - $("#mainPic").hide(); - - - - - /** - * IMPORTANT: app.js is the only place where you are allowed to - * use the $('someSelector') to search for elements in the whole HTML. - * In other places you should limit the search only to the children - * of the specific view you're working with (see exampleView.js). - */ - -}); \ No newline at end of file diff --git a/Lab2/js/controller/searchViewController.js b/Lab2/js/controller/searchViewController.js index c5d24d965..b670dfa90 100644 --- a/Lab2/js/controller/searchViewController.js +++ b/Lab2/js/controller/searchViewController.js @@ -1,4 +1,4 @@ - + var SearchViewController = function(view, model) { this.view = view; this.model = model; @@ -19,17 +19,12 @@ var SearchViewController = function(view, model) { // spara id i modellens displayedDish, och notify att uppdater vy. model.selectDishRecipe(this.id); //model.displayedDish = this.id; - console.log(this.id); console.log("och i modellen:"); console.log(model.displayedDish); // funktion istället så att den notifies. - + //view.container.hide(); }); } - - - - } \ No newline at end of file diff --git a/Lab2/js/controller/stateController.js b/Lab2/js/controller/stateController.js index df4853892..5a1ef4146 100644 --- a/Lab2/js/controller/stateController.js +++ b/Lab2/js/controller/stateController.js @@ -79,5 +79,6 @@ var StateController = function(view1, view2, view3, view4, view5, view6, view7) startDinner(); + searchView.updateView(); } \ No newline at end of file diff --git a/Lab2/js/model/dinnerModel.js b/Lab2/js/model/dinnerModel.js index 569fc8e85..cf9bfd847 100644 --- a/Lab2/js/model/dinnerModel.js +++ b/Lab2/js/model/dinnerModel.js @@ -6,17 +6,20 @@ var DinnerModel = function() { var numberOfGuests = 2; // ej this. för då blir det en property som man kan nå utifrån. istället var. var menu = [1, 101, 201] - var observers = new Array(); + this.observers = new Array(); this.displayedDish = ""; this.addObserver = function(observer) { - observers.push(observer); + this.observers.push(observer); } - var notifyObservers = function() { - for(var i = 0; i < observers.length; i++) { - observers[i].loadView(); - //observer[i].update(args); + this.notifyObservers = function(args) { + for(var i = 0; i < this.observers.length; i++) { + //this.observers[i].loadView(); + console.log("nu meddelar vi observer"); + //console.log(args); + console.log(args); + this.observers[i].updateView(); } } @@ -24,7 +27,7 @@ var DinnerModel = function() { if(num>0){ numberOfGuests = num; } - notifyObservers(); + this.notifyObservers("guestsChanged"); } this.getNumberOfGuests = function() { @@ -48,9 +51,9 @@ var DinnerModel = function() { this.displayedDish = selectedID; console.log("nu går vi vidare till recept"); console.log(this.displayedDish); - - //meddela observers att de ska vidare till nästa. - notifyObservers("toRecipe"); + //notifyObservers(); + //meddela observers att de ska vidare till nästa. + this.notifyObservers("toRecipe"); }; //Returns all the dishes on the menu. @@ -104,7 +107,7 @@ var DinnerModel = function() { } menu.push(id); - notifyObservers(); + this.notifyObservers("newDishAdded"); } @@ -119,7 +122,7 @@ var DinnerModel = function() { } i++; } - notifyObservers(); + //notifyObservers(); } @@ -143,7 +146,7 @@ var DinnerModel = function() { } return dish.type == type && found; }); - notifyObservers(); + this.notifyObservers("newTypeSelected"); } //function that returns a dish of specific ID diff --git a/Lab2/js/view/homeView.js b/Lab2/js/view/homeView.js index 527c8871f..6f5b01a2d 100644 --- a/Lab2/js/view/homeView.js +++ b/Lab2/js/view/homeView.js @@ -3,6 +3,5 @@ var HomeView = function (container, model) { this.startButton = container.find("#startButton"); this.container= container; - } \ No newline at end of file diff --git a/Lab2/js/view/oneDishView.js b/Lab2/js/view/oneDishView.js index db887f175..dc6b76bc0 100644 --- a/Lab2/js/view/oneDishView.js +++ b/Lab2/js/view/oneDishView.js @@ -48,6 +48,8 @@ var OneDishView = function (container, model) { Summa.html(summa); } + + @@ -55,6 +57,9 @@ var OneDishView = function (container, model) { this.loadView(); //attach as listener model.addObserver(this); + this.updateView = function() { + console.log("testar ny funktion - onedish"); + } } \ No newline at end of file diff --git a/Lab2/js/view/printView.js b/Lab2/js/view/printView.js index 4732be023..3a2650367 100644 --- a/Lab2/js/view/printView.js +++ b/Lab2/js/view/printView.js @@ -33,10 +33,14 @@ var PrintView = function (container, model) { } - + // load/update view. this.loadView(); //attach as listener model.addObserver(this); + + this.updateView = function() { + console.log("testar ny funktion - print"); + } } \ No newline at end of file diff --git a/Lab2/js/view/searchView.js b/Lab2/js/view/searchView.js index 45701cc55..d0f9bb551 100644 --- a/Lab2/js/view/searchView.js +++ b/Lab2/js/view/searchView.js @@ -26,18 +26,6 @@ var SearchView = function (container, model) { textInput.value = ""; // funkar inte. nollställer keywordsfönstret när man tryckt sök. } - - this.update = function(args) { - var viewArgs = args; - switch(viewArgs) { - case "toRecipe": - this.hide(); - break - default: - break - } - - } @@ -45,4 +33,10 @@ var SearchView = function (container, model) { this.loadView(); //attach as listener model.addObserver(this); + + this.updateView = function() { + console.log("testar ny funktion - search"); + } + + //this.updateView(); } \ No newline at end of file diff --git a/Lab2/js/view/sideView.js b/Lab2/js/view/sideView.js index f72a43ba0..e86c8c989 100644 --- a/Lab2/js/view/sideView.js +++ b/Lab2/js/view/sideView.js @@ -41,18 +41,21 @@ var SideView = function (container, model) { summa.html(sum); Summa.html(sum); - - - //model.setNumberOfGuests(guests); } + // load/update view. this.loadView(); + + //attach as listener model.addObserver(this); + this.updateView = function() { + console.log("testar ny funktion - sideView"); + } } From b85437f17126523184666b00fc7b495e064c9525 Mon Sep 17 00:00:00 2001 From: lindelindblad Date: Wed, 14 Feb 2018 15:04:44 +0100 Subject: [PATCH 42/64] =?UTF-8?q?sm=C3=A5saker.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Lab2/js/model/dinnerModel.js | 4 ++-- Lab2/js/view/headerView.js | 5 +++++ Lab2/js/view/homeView.js | 4 ++++ Lab2/js/view/overviewView.js | 4 ++++ 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/Lab2/js/model/dinnerModel.js b/Lab2/js/model/dinnerModel.js index cf9bfd847..6d67ba169 100644 --- a/Lab2/js/model/dinnerModel.js +++ b/Lab2/js/model/dinnerModel.js @@ -15,11 +15,11 @@ var DinnerModel = function() { this.notifyObservers = function(args) { for(var i = 0; i < this.observers.length; i++) { - //this.observers[i].loadView(); + this.observers[i].loadView(); console.log("nu meddelar vi observer"); //console.log(args); console.log(args); - this.observers[i].updateView(); + //this.observers[i].updateView(); } } diff --git a/Lab2/js/view/headerView.js b/Lab2/js/view/headerView.js index c9923a6c7..61d732e6e 100644 --- a/Lab2/js/view/headerView.js +++ b/Lab2/js/view/headerView.js @@ -1,5 +1,10 @@ var HeaderView = function (container, model) { this.container = container; + this.updateView = function() { + console.log("testar ny funktion - header"); + } } + + diff --git a/Lab2/js/view/homeView.js b/Lab2/js/view/homeView.js index 6f5b01a2d..bd5eb335f 100644 --- a/Lab2/js/view/homeView.js +++ b/Lab2/js/view/homeView.js @@ -3,5 +3,9 @@ var HomeView = function (container, model) { this.startButton = container.find("#startButton"); this.container= container; + + this.updateView = function() { + console.log("testar ny funktion - home"); + } } \ No newline at end of file diff --git a/Lab2/js/view/overviewView.js b/Lab2/js/view/overviewView.js index 43cf43165..4985df536 100644 --- a/Lab2/js/view/overviewView.js +++ b/Lab2/js/view/overviewView.js @@ -45,6 +45,10 @@ var OverviewView = function (container, model) { this.loadView(); //attach as listener model.addObserver(this); + + this.updateView = function() { + console.log("testar ny funktion - overview"); + } } From 611a3c89955c6960fa1d55c3f97555bf827e2fbb Mon Sep 17 00:00:00 2001 From: lindelindblad Date: Wed, 14 Feb 2018 17:07:44 +0100 Subject: [PATCH 43/64] klar lab 2 funkar, men ska rensas! --- Lab2/index.html | 9 +- Lab2/js/app.js | 100 +++++++++++++++---- Lab2/js/controller/oneDishViewController.js | 2 +- Lab2/js/controller/overviewViewController.js | 2 +- Lab2/js/controller/printViewController.js | 2 +- Lab2/js/controller/searchViewController.js | 25 +++-- Lab2/js/controller/sideViewController.js | 2 +- Lab2/js/model/dinnerModel.js | 14 ++- Lab2/js/view/oneDishView.js | 17 ++-- Lab2/js/view/overviewView.js | 2 +- Lab2/js/view/searchView.js | 13 ++- Lab2/js/view/sideView.js | 5 +- 12 files changed, 135 insertions(+), 58 deletions(-) diff --git a/Lab2/index.html b/Lab2/index.html index 9bbe9aace..a02068095 100644 --- a/Lab2/index.html +++ b/Lab2/index.html @@ -9,6 +9,7 @@ + @@ -139,12 +140,12 @@

Find a dish

-
- + +
- +
-
+
diff --git a/Lab2/js/app.js b/Lab2/js/app.js index 9b6536d48..b8fd1c344 100644 --- a/Lab2/js/app.js +++ b/Lab2/js/app.js @@ -18,7 +18,7 @@ $(function() { var homeView = new HomeView($("#homeView"), model); // headerView - var header = new HeaderView($("#header"), model); + var headerView = new HeaderView($("#header"), model); // 2.sideView var sideView = new SideView($("#sideView"), model); @@ -36,26 +36,86 @@ $(function() { var printView = new PrintView($("#printView"), model); - - - // Controllers - var stateController = new StateController(homeView, sideView, searchView, header, oneDishView, overviewView, printView); + //var stateController = new StateController(homeView, sideView, searchView, header, oneDishView, overviewView, printView); //var homeViewController = new HomeViewController(homeView, model); - var searchViewController = new SearchViewController(searchView, model); - - var sideViewController = new SideViewController(sideView, model); - - var oneDishViewController = new OneDishViewController(oneDishView, model); - - var overviewViewController = new OverviewViewController(overviewView, model); - - var printViewController = new PrintViewController(printView, model); - - - - //var mainView3 = new MainView3($("#mainView3"), model); - //var mainView5 = new MainView5($("#mainView5"), model); + var searchViewController = new SearchViewController(searchView, model, this); + + var sideViewController = new SideViewController(sideView, model, this); + + var oneDishViewController = new OneDishViewController(oneDishView, model, this); + + var overviewViewController = new OverviewViewController(overviewView, model, this); + + var printViewController = new PrintViewController(printView, model, this); + + + //------------------------ + + var startDinner = function() { + homeView.startButton.click(function() { + homeView.container.hide(); + sideView.container.show(); + searchView.container.show() + headerView.container.show(); + + //kunde inte flytta den till searchviewController, då gick det inte att anropa funktionen. + //ändra till bilderna som knappar istället för test! + searchView.testButton.click(function() { + oneDish(); + }); + + + }); + } + this.oneDish = function(){ + sideView.container.show(); + searchView.container.hide(); + headerView.container.show(); + oneDishView.loadView(); + oneDishView.container.show(); + + + oneDishView.backButton.click(function() { + oneDishView.container.hide(); + searchView.container.show(); + }); + //måste fungera i både oneDish och SearchView + + } + var overview = function(){ + searchView.container.hide(); + oneDishView.container.hide(); + searchView.container.hide(); + sideView.container.hide(); + overviewView.container.show(); + + overviewView.backButton.click(function() { + overviewView.container.hide(); + searchView.container.show(); + sideView.container.show(); + + }); + overviewView.printButton.click(function(){ + printRecipe(); + + }); + } + var printRecipe = function(){ + overviewView.container.hide(); + printView.container.show(); + + printView.BackButton.click(function() { + printView.container.hide(); + sideView.container.show(); + searchView.container.show(); + + }); + } + + sideView.confirmButton.click(function(){ + overview(); + }); // Gömmer allt utom start $("#header").hide(); @@ -65,6 +125,8 @@ $(function() { $("#overview").hide(); $("#printView").hide(); + startDinner(); + diff --git a/Lab2/js/controller/oneDishViewController.js b/Lab2/js/controller/oneDishViewController.js index 93440bccd..76c60e85d 100644 --- a/Lab2/js/controller/oneDishViewController.js +++ b/Lab2/js/controller/oneDishViewController.js @@ -1,4 +1,4 @@ -var OneDishViewController = function(view, model) { +var OneDishViewController = function(view, model, sControl) { this.view = view; this.model = model; diff --git a/Lab2/js/controller/overviewViewController.js b/Lab2/js/controller/overviewViewController.js index 3dd415bda..5353989fb 100644 --- a/Lab2/js/controller/overviewViewController.js +++ b/Lab2/js/controller/overviewViewController.js @@ -1,4 +1,4 @@ -var OverviewViewController = function(view, model) { +var OverviewViewController = function(view, model, sControl) { this.view = view; this.model = model; diff --git a/Lab2/js/controller/printViewController.js b/Lab2/js/controller/printViewController.js index 66664455d..148a6da8c 100644 --- a/Lab2/js/controller/printViewController.js +++ b/Lab2/js/controller/printViewController.js @@ -1,4 +1,4 @@ -var PrintViewController = function(view, model) { +var PrintViewController = function(view, model, sControl) { this.view = view; this.model = model; diff --git a/Lab2/js/controller/searchViewController.js b/Lab2/js/controller/searchViewController.js index b670dfa90..07ca5c943 100644 --- a/Lab2/js/controller/searchViewController.js +++ b/Lab2/js/controller/searchViewController.js @@ -1,9 +1,11 @@ -var SearchViewController = function(view, model) { +var SearchViewController = function(view, model, sControl) { this.view = view; this.model = model; + this.sControl = sControl; var dishesView = new Array(); + //dishesView = $(".thumbnail"); dishesView = view.container.find(".thumbnail"); console.log(dishesView); @@ -13,18 +15,23 @@ var SearchViewController = function(view, model) { view.loadView(); }); - // lägg till knapp på varje rätt - for ( var i = 0; i < dishesView.length; i++) { - dishesView[i].addEventListener("click", function() { - // spara id i modellens displayedDish, och notify att uppdater vy. - model.selectDishRecipe(this.id); + view.picBox.on("click", ".thumbnail", function(){ + model.selectDishRecipe(this.id); //model.displayedDish = this.id; console.log(this.id); console.log("och i modellen:"); - console.log(model.displayedDish); // funktion istället så att den notifies. + console.log(model.returnDishRecipe()); // funktion istället så att den notifies. //view.container.hide(); - }); - } + sControl.oneDish(); + + }) + // lägg till knapp på varje rätt + // for ( var i = 0; i < dishesView.length; i++) { + // dishesView[i].addEventListener("click", function() { + // // spara id i modellens displayedDish, och notify att uppdater vy. + + // }); + // } } \ No newline at end of file diff --git a/Lab2/js/controller/sideViewController.js b/Lab2/js/controller/sideViewController.js index ad608f775..79422acdd 100644 --- a/Lab2/js/controller/sideViewController.js +++ b/Lab2/js/controller/sideViewController.js @@ -1,4 +1,4 @@ -var SideViewController = function(view, model) { +var SideViewController = function(view, model, sControl) { this.view = view; this.model = model; diff --git a/Lab2/js/model/dinnerModel.js b/Lab2/js/model/dinnerModel.js index 6d67ba169..0d7edbc6c 100644 --- a/Lab2/js/model/dinnerModel.js +++ b/Lab2/js/model/dinnerModel.js @@ -7,7 +7,7 @@ var DinnerModel = function() { var numberOfGuests = 2; // ej this. för då blir det en property som man kan nå utifrån. istället var. var menu = [1, 101, 201] this.observers = new Array(); - this.displayedDish = ""; + var displayedDish = ""; this.addObserver = function(observer) { this.observers.push(observer); @@ -15,11 +15,11 @@ var DinnerModel = function() { this.notifyObservers = function(args) { for(var i = 0; i < this.observers.length; i++) { - this.observers[i].loadView(); + //this.observers[i].loadView(); console.log("nu meddelar vi observer"); //console.log(args); console.log(args); - //this.observers[i].updateView(); + this.observers[i].updateView(args); } } @@ -48,14 +48,18 @@ var DinnerModel = function() { //Returnerar id på klickad rätt this.selectDishRecipe = function (selectedID) { - this.displayedDish = selectedID; + displayedDish = selectedID; console.log("nu går vi vidare till recept"); - console.log(this.displayedDish); + console.log(displayedDish); //notifyObservers(); //meddela observers att de ska vidare till nästa. this.notifyObservers("toRecipe"); }; + this.returnDishRecipe = function() { + return displayedDish; + } + //Returns all the dishes on the menu. this.getFullMenu = function() { var fullMenu = []; diff --git a/Lab2/js/view/oneDishView.js b/Lab2/js/view/oneDishView.js index dc6b76bc0..bb9ab6bf5 100644 --- a/Lab2/js/view/oneDishView.js +++ b/Lab2/js/view/oneDishView.js @@ -6,9 +6,7 @@ var OneDishView = function (container, model) { this.model = model; /*måste ämdras till hämtning av vald dish genom click... */ - var dish = 100; - - this.Dish = model.getDish(dish); + this.backButton = container.find("#backButton"); this.add = container.find("#add"); @@ -23,6 +21,11 @@ var OneDishView = function (container, model) { this.loadView = function() { + var dish = model.returnDishRecipe(); + console.log(dish); + + this.Dish = model.getDish(dish); + nrOfGuests = model.getNumberOfGuests(); headlineDish.html(this.Dish.name); @@ -54,12 +57,12 @@ var OneDishView = function (container, model) { // load/update view. - this.loadView(); + //this.loadView(); //attach as listener model.addObserver(this); - this.updateView = function() { - console.log("testar ny funktion - onedish"); - } + this.updateView = function(args) { + this.loadView(); + } } \ No newline at end of file diff --git a/Lab2/js/view/overviewView.js b/Lab2/js/view/overviewView.js index 4985df536..c61e1cc4b 100644 --- a/Lab2/js/view/overviewView.js +++ b/Lab2/js/view/overviewView.js @@ -47,7 +47,7 @@ var OverviewView = function (container, model) { model.addObserver(this); this.updateView = function() { - console.log("testar ny funktion - overview"); + this.loadView(); } } diff --git a/Lab2/js/view/searchView.js b/Lab2/js/view/searchView.js index d0f9bb551..50c432182 100644 --- a/Lab2/js/view/searchView.js +++ b/Lab2/js/view/searchView.js @@ -2,8 +2,7 @@ var SearchView = function (container, model) { this.container = container; this.searchButton = container.find("#searchButton"); // knappen ska bara göra loadView(), i den funktionen finns resten av isntruktionerna var textInput = container.find("#keywords"); //document.getElementById("keywords"); // - this.testButton = container.find("#test"); - + this.picBox = container.find("#template"); //load view this.loadView = function() { @@ -16,13 +15,13 @@ var SearchView = function (container, model) { var menu = model.getAllDishes(type, filter); // stoppain filter och type i funktionen. var string = ''; - var picBox = container.find("#template"); + //lägg in rätterna for(i in menu){ string += '
'; } - picBox.html(string); + this.picBox.html(string); textInput.value = ""; // funkar inte. nollställer keywordsfönstret när man tryckt sök. } @@ -34,9 +33,9 @@ var SearchView = function (container, model) { //attach as listener model.addObserver(this); - this.updateView = function() { - console.log("testar ny funktion - search"); - } + this.updateView = function(args) { + this.loadView(); + } //this.updateView(); } \ No newline at end of file diff --git a/Lab2/js/view/sideView.js b/Lab2/js/view/sideView.js index e86c8c989..6e8279129 100644 --- a/Lab2/js/view/sideView.js +++ b/Lab2/js/view/sideView.js @@ -53,9 +53,10 @@ var SideView = function (container, model) { //attach as listener model.addObserver(this); - this.updateView = function() { - console.log("testar ny funktion - sideView"); + this.updateView = function(args) { + this.loadView(); } + } From 810a178cf42714f0fd23be77f9740a3c12b46ca8 Mon Sep 17 00:00:00 2001 From: lindelindblad Date: Wed, 14 Feb 2018 17:56:06 +0100 Subject: [PATCH 44/64] klar lab 2 - rensad! --- Lab2/js/app.js | 65 ++++---------------- Lab2/js/controller/oneDishViewController.js | 16 +++-- Lab2/js/controller/overviewViewController.js | 11 ++++ Lab2/js/controller/printViewController.js | 7 ++- Lab2/js/controller/searchViewController.js | 36 +++-------- Lab2/js/controller/sideViewController.js | 13 +++- Lab2/js/view/oneDishView.js | 33 +++++----- Lab2/js/view/overviewView.js | 8 --- Lab2/js/view/printView.js | 2 +- Lab2/js/view/searchView.js | 10 ++- Lab2/js/view/sideView.js | 5 -- 11 files changed, 78 insertions(+), 128 deletions(-) diff --git a/Lab2/js/app.js b/Lab2/js/app.js index b8fd1c344..8a75c0e68 100644 --- a/Lab2/js/app.js +++ b/Lab2/js/app.js @@ -1,12 +1,3 @@ -// Visa söksidan. -/*function showSelectDish() { - $("#homeView").hide(); - $("#header").show(); - $("#sideView").show(); - $("#searchView").show(); - $("#mainPic").show(); -}*/ - $(function() { //We instantiate our model @@ -37,8 +28,6 @@ $(function() { // Controllers - //var stateController = new StateController(homeView, sideView, searchView, header, oneDishView, overviewView, printView); - //var homeViewController = new HomeViewController(homeView, model); var searchViewController = new SearchViewController(searchView, model, this); var sideViewController = new SideViewController(sideView, model, this); @@ -50,72 +39,45 @@ $(function() { var printViewController = new PrintViewController(printView, model, this); - //------------------------ - +/*General State Controller*/ var startDinner = function() { homeView.startButton.click(function() { homeView.container.hide(); sideView.container.show(); searchView.container.show() headerView.container.show(); - - //kunde inte flytta den till searchviewController, då gick det inte att anropa funktionen. - //ändra till bilderna som knappar istället för test! - searchView.testButton.click(function() { - oneDish(); - }); - - }); } + this.oneDish = function(){ sideView.container.show(); searchView.container.hide(); headerView.container.show(); oneDishView.loadView(); oneDishView.container.show(); - - - oneDishView.backButton.click(function() { - oneDishView.container.hide(); - searchView.container.show(); - }); - //måste fungera i både oneDish och SearchView } - var overview = function(){ + this.overview = function(){ searchView.container.hide(); oneDishView.container.hide(); searchView.container.hide(); sideView.container.hide(); overviewView.container.show(); - - overviewView.backButton.click(function() { - overviewView.container.hide(); - searchView.container.show(); - sideView.container.show(); - - }); - overviewView.printButton.click(function(){ - printRecipe(); - - }); + } - var printRecipe = function(){ + this.printRecipe = function(){ overviewView.container.hide(); printView.container.show(); - printView.BackButton.click(function() { - printView.container.hide(); - sideView.container.show(); - searchView.container.show(); - - }); } - sideView.confirmButton.click(function(){ - overview(); - }); + this.backToSearch = function() { + oneDishView.container.hide(); + overviewView.container.hide(); + printView.container.hide(); + sideView.container.show(); + searchView.container.show(); + } // Gömmer allt utom start $("#header").hide(); @@ -129,9 +91,6 @@ $(function() { - - - /** * IMPORTANT: app.js is the only place where you are allowed to * use the $('someSelector') to search for elements in the whole HTML. diff --git a/Lab2/js/controller/oneDishViewController.js b/Lab2/js/controller/oneDishViewController.js index 76c60e85d..6916662cd 100644 --- a/Lab2/js/controller/oneDishViewController.js +++ b/Lab2/js/controller/oneDishViewController.js @@ -1,11 +1,17 @@ var OneDishViewController = function(view, model, sControl) { - this.view = view; - this.model = model; - - view.add.click(function() { - model.addDishToMenu(view.Dish.id); + var view = view; + var model = model; + var backButton = view.container.find("#backButton"); + var add = view.container.find("#add"); //kallas på i controller + var sControl = sControl; + add.click(function() { + model.addDishToMenu(view.dish.id); }); + backButton.click(function() { + sControl.backToSearch(); + }); + } \ No newline at end of file diff --git a/Lab2/js/controller/overviewViewController.js b/Lab2/js/controller/overviewViewController.js index 5353989fb..8df50a5ff 100644 --- a/Lab2/js/controller/overviewViewController.js +++ b/Lab2/js/controller/overviewViewController.js @@ -2,5 +2,16 @@ var OverviewViewController = function(view, model, sControl) { this.view = view; this.model = model; + var backButton = view.container.find("#back"); + var printButton = view.container.find("#print"); + + backButton.click(function() { + sControl.backToSearch(); + }); + + printButton.click(function(){ + sControl.printRecipe(); + }); + } \ No newline at end of file diff --git a/Lab2/js/controller/printViewController.js b/Lab2/js/controller/printViewController.js index 148a6da8c..0b4321dea 100644 --- a/Lab2/js/controller/printViewController.js +++ b/Lab2/js/controller/printViewController.js @@ -1,6 +1,9 @@ var PrintViewController = function(view, model, sControl) { this.view = view; this.model = model; - - + var backButton = view.container.find("#Back"); + + backButton.click(function() { + sControl.backToSearch(); + }); } \ No newline at end of file diff --git a/Lab2/js/controller/searchViewController.js b/Lab2/js/controller/searchViewController.js index 07ca5c943..6027c314d 100644 --- a/Lab2/js/controller/searchViewController.js +++ b/Lab2/js/controller/searchViewController.js @@ -1,37 +1,19 @@ var SearchViewController = function(view, model, sControl) { - this.view = view; - this.model = model; - this.sControl = sControl; + var view = view; + var sControl = sControl; var dishesView = new Array(); - - - //dishesView = $(".thumbnail"); - dishesView = view.container.find(".thumbnail"); - console.log(dishesView); - - + //var textInput = view.container.find("#keywords"); //document.getElementById("keywords"); // + var dishesView = view.container.find(".thumbnail"); + + view.searchButton.click(function() { view.loadView(); }); view.picBox.on("click", ".thumbnail", function(){ model.selectDishRecipe(this.id); - //model.displayedDish = this.id; - console.log(this.id); - console.log("och i modellen:"); - console.log(model.returnDishRecipe()); // funktion istället så att den notifies. - //view.container.hide(); - - sControl.oneDish(); - - }) - // lägg till knapp på varje rätt - // for ( var i = 0; i < dishesView.length; i++) { - // dishesView[i].addEventListener("click", function() { - // // spara id i modellens displayedDish, och notify att uppdater vy. - - // }); - // } - + //textInput.value = ""; // nollställer keywordsfönstret när man tryckt sök. + sControl.oneDish(); + }); } \ No newline at end of file diff --git a/Lab2/js/controller/sideViewController.js b/Lab2/js/controller/sideViewController.js index 79422acdd..3b11ff234 100644 --- a/Lab2/js/controller/sideViewController.js +++ b/Lab2/js/controller/sideViewController.js @@ -2,12 +2,21 @@ var SideViewController = function(view, model, sControl) { this.view = view; this.model = model; - view.plusButton.click(function(){ + var plusButton = view.container.find("#plusGuest"); // used by controller + var minusButton = view.container.find("#minusGuest"); + var confirmButton = view.container.find("#confirm"); + + + plusButton.click(function(){ model.setNumberOfGuests(model.getNumberOfGuests() + 1); }); - view.minusButton.click(function(){ + minusButton.click(function(){ model.setNumberOfGuests(model.getNumberOfGuests() - 1); }); + + confirmButton.click(function(){ + sControl.overview(); + }); } \ No newline at end of file diff --git a/Lab2/js/view/oneDishView.js b/Lab2/js/view/oneDishView.js index bb9ab6bf5..069f7f4cb 100644 --- a/Lab2/js/view/oneDishView.js +++ b/Lab2/js/view/oneDishView.js @@ -3,35 +3,30 @@ gets the pictures and name of the dishes for view2 and 4 */ var OneDishView = function (container, model) { this.container = container; - this.model = model; + this.model = model; - /*måste ämdras till hämtning av vald dish genom click... */ - this.backButton = container.find("#backButton"); - this.add = container.find("#add"); var headlineDish = container.find("#headlineDish"); var picDish = container.find("#imgDish"); var description = container.find("#description"); - var Table = container.find("#table"); - var Summa = container.find("#td1"); + var tableString = container.find("#table"); + var sumString = container.find("#td1"); var rubrik = container.find("#ingrFor"); - - this.loadView = function() { - var dish = model.returnDishRecipe(); - console.log(dish); + var dishId = model.returnDishRecipe(); + - this.Dish = model.getDish(dish); + this.dish = model.getDish(dishId); nrOfGuests = model.getNumberOfGuests(); - headlineDish.html(this.Dish.name); - picDish.html(''); + headlineDish.html(this.dish.name); + picDish.html(''); - description.html(this.Dish.description); + description.html(this.dish.description); Rubrik = 'Ingredients for ' + nrOfGuests + ' people'; rubrik.html(Rubrik); @@ -40,15 +35,15 @@ var OneDishView = function (container, model) { var sum = 0; - for(i in this.Dish.ingredients){ - Price = this.Dish.ingredients[i].price*nrOfGuests; - string += '' + this.Dish.ingredients[i].quantity + ' ' + this.Dish.ingredients[i].unit + '' + this.Dish.ingredients[i].name + 'SEK' + Price + ''; + for(i in this.dish.ingredients){ + Price = this.dish.ingredients[i].price*nrOfGuests; + string += '' + this.dish.ingredients[i].quantity + ' ' + this.dish.ingredients[i].unit + '' + this.dish.ingredients[i].name + 'SEK' + Price + ''; sum += Price; } summa= 'SEK ' + sum + ''; - Table.html(string); - Summa.html(summa); + tableString.html(string); + sumString.html(summa); } diff --git a/Lab2/js/view/overviewView.js b/Lab2/js/view/overviewView.js index c61e1cc4b..02d7269a2 100644 --- a/Lab2/js/view/overviewView.js +++ b/Lab2/js/view/overviewView.js @@ -3,18 +3,10 @@ var OverviewView = function (container, model) { this.container = container; this.model = model; - this.backButton = container.find("#back"); - this.printButton = container.find("#print"); - - var header = container.find("#overviewHeader"); var pictures = container.find("#pictures"); var total = container.find("#totSum"); - - - - //load view this.loadView = function() { diff --git a/Lab2/js/view/printView.js b/Lab2/js/view/printView.js index 3a2650367..77719ba59 100644 --- a/Lab2/js/view/printView.js +++ b/Lab2/js/view/printView.js @@ -2,7 +2,7 @@ var PrintView = function (container, model) { this.container = container; this.model = model; - this.BackButton = container.find("#Back"); + var print = container.find("#printDish") diff --git a/Lab2/js/view/searchView.js b/Lab2/js/view/searchView.js index 50c432182..31b12c5fc 100644 --- a/Lab2/js/view/searchView.js +++ b/Lab2/js/view/searchView.js @@ -1,15 +1,15 @@ var SearchView = function (container, model) { this.container = container; this.searchButton = container.find("#searchButton"); // knappen ska bara göra loadView(), i den funktionen finns resten av isntruktionerna - var textInput = container.find("#keywords"); //document.getElementById("keywords"); // - this.picBox = container.find("#template"); + + this.picBox = container.find("#template"); //this, app adds eventlistener //load view this.loadView = function() { //var type = hämta type var type = container.find("#selectOption option:selected").val(); - //console.log(type); + //var keywords = Hämta filter var filter = document.getElementById("keywords").value; @@ -22,7 +22,7 @@ var SearchView = function (container, model) { string += '
'; } this.picBox.html(string); - textInput.value = ""; // funkar inte. nollställer keywordsfönstret när man tryckt sök. + } @@ -36,6 +36,4 @@ var SearchView = function (container, model) { this.updateView = function(args) { this.loadView(); } - - //this.updateView(); } \ No newline at end of file diff --git a/Lab2/js/view/sideView.js b/Lab2/js/view/sideView.js index 6e8279129..20fd99ae3 100644 --- a/Lab2/js/view/sideView.js +++ b/Lab2/js/view/sideView.js @@ -2,9 +2,6 @@ var SideView = function (container, model) { this.container = container; this.model = model; - this.plusButton = container.find("#plusGuest"); - this.minusButton = container.find("#minusGuest"); - this.confirmButton = container.find("#confirm"); var numberOfGuests = container.find("#numberOfGuests"); @@ -40,8 +37,6 @@ var SideView = function (container, model) { table.html(string); summa.html(sum); Summa.html(sum); - - //model.setNumberOfGuests(guests); } From 49514bf1f14c3691dce253641b86721db7828d6f Mon Sep 17 00:00:00 2001 From: lindelindblad Date: Tue, 20 Feb 2018 14:42:47 +0100 Subject: [PATCH 45/64] =?UTF-8?q?Ny=20mapp=20f=C3=B6r=20lab3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit än så länge bara (fungerande) kopia av lab 2 --- Lab2/js/app.js | 2 - Lab2/js/controller/searchViewController.js | 3 + Lab2/js/view/searchView.js | 3 +- Lab2/sem2-diskussion.txt | 3 + Lab3/README.md | 14 + Lab3/ej aktuell/lab 1/home.html | 32 ++ Lab3/ej aktuell/lab 1/homeViewController.js | 7 + Lab3/ej aktuell/lab 1/index.html | 38 ++ Lab3/ej aktuell/lab 1/start.css | 33 ++ Lab3/ej aktuell/lab 1/style.css | 28 ++ Lab3/ej aktuell/lab 1/style2B.css | 71 ++++ Lab3/ej aktuell/lab 1/view-2B.html | 146 +++++++ Lab3/ej aktuell/lab 1/view2-oaus.html | 36 ++ Lab3/ej aktuell/lab 1/view2.html | 96 +++++ Lab3/ej aktuell/lab 1/view4.html | 145 +++++++ Lab3/ej aktuell/lab 1/view4B.html | 132 ++++++ Lab3/ej aktuell/lab 1/view5B.html | 76 ++++ Lab3/ej aktuell/lab 2/exampleView.js | 55 +++ Lab3/ej aktuell/lab 2/landingPage.html | 44 ++ Lab3/ej aktuell/lab 2/mainPic.js | 26 ++ Lab3/ej aktuell/lab 2/mainView5.js | 29 ++ Lab3/ej aktuell/lab 2/view2.html | 111 +++++ Lab3/ej aktuell/lab 2/view3.html | 108 +++++ Lab3/ej aktuell/lab 2/view4.html | 114 +++++ Lab3/ej aktuell/lab 2/view5.html | 76 ++++ Lab3/ej aktuell/lab 2/view6.html | 109 +++++ Lab3/images/bakedbrie.jpg | Bin 0 -> 2902 bytes Lab3/images/icecream.jpg | Bin 0 -> 6832 bytes Lab3/images/meatballs.jpg | Bin 0 -> 6748 bytes Lab3/images/sourdough.jpg | Bin 0 -> 4032 bytes Lab3/images/toast.jpg | Bin 0 -> 5633 bytes Lab3/index.html | 269 ++++++++++++ Lab3/js/app.js | 101 +++++ Lab3/js/controller/oneDishViewController.js | 17 + Lab3/js/controller/overviewViewController.js | 17 + Lab3/js/controller/printViewController.js | 9 + Lab3/js/controller/searchViewController.js | 19 + Lab3/js/controller/sideViewController.js | 22 + Lab3/js/controller/stateController.js | 84 ++++ Lab3/js/model/dinnerModel.js | 418 +++++++++++++++++++ Lab3/js/view/headerView.js | 10 + Lab3/js/view/homeView.js | 11 + Lab3/js/view/oneDishView.js | 63 +++ Lab3/js/view/overviewView.js | 46 ++ Lab3/js/view/printView.js | 46 ++ Lab3/js/view/searchView.js | 39 ++ Lab3/js/view/sideView.js | 57 +++ Lab3/style2D.css | 113 +++++ 48 files changed, 2875 insertions(+), 3 deletions(-) create mode 100644 Lab2/sem2-diskussion.txt create mode 100755 Lab3/README.md create mode 100755 Lab3/ej aktuell/lab 1/home.html create mode 100755 Lab3/ej aktuell/lab 1/homeViewController.js create mode 100755 Lab3/ej aktuell/lab 1/index.html create mode 100755 Lab3/ej aktuell/lab 1/start.css create mode 100755 Lab3/ej aktuell/lab 1/style.css create mode 100755 Lab3/ej aktuell/lab 1/style2B.css create mode 100755 Lab3/ej aktuell/lab 1/view-2B.html create mode 100755 Lab3/ej aktuell/lab 1/view2-oaus.html create mode 100755 Lab3/ej aktuell/lab 1/view2.html create mode 100755 Lab3/ej aktuell/lab 1/view4.html create mode 100755 Lab3/ej aktuell/lab 1/view4B.html create mode 100755 Lab3/ej aktuell/lab 1/view5B.html create mode 100755 Lab3/ej aktuell/lab 2/exampleView.js create mode 100755 Lab3/ej aktuell/lab 2/landingPage.html create mode 100755 Lab3/ej aktuell/lab 2/mainPic.js create mode 100755 Lab3/ej aktuell/lab 2/mainView5.js create mode 100755 Lab3/ej aktuell/lab 2/view2.html create mode 100755 Lab3/ej aktuell/lab 2/view3.html create mode 100755 Lab3/ej aktuell/lab 2/view4.html create mode 100755 Lab3/ej aktuell/lab 2/view5.html create mode 100755 Lab3/ej aktuell/lab 2/view6.html create mode 100755 Lab3/images/bakedbrie.jpg create mode 100755 Lab3/images/icecream.jpg create mode 100755 Lab3/images/meatballs.jpg create mode 100755 Lab3/images/sourdough.jpg create mode 100755 Lab3/images/toast.jpg create mode 100755 Lab3/index.html create mode 100755 Lab3/js/app.js create mode 100755 Lab3/js/controller/oneDishViewController.js create mode 100755 Lab3/js/controller/overviewViewController.js create mode 100755 Lab3/js/controller/printViewController.js create mode 100755 Lab3/js/controller/searchViewController.js create mode 100755 Lab3/js/controller/sideViewController.js create mode 100755 Lab3/js/controller/stateController.js create mode 100755 Lab3/js/model/dinnerModel.js create mode 100755 Lab3/js/view/headerView.js create mode 100755 Lab3/js/view/homeView.js create mode 100755 Lab3/js/view/oneDishView.js create mode 100755 Lab3/js/view/overviewView.js create mode 100755 Lab3/js/view/printView.js create mode 100755 Lab3/js/view/searchView.js create mode 100755 Lab3/js/view/sideView.js create mode 100755 Lab3/style2D.css diff --git a/Lab2/js/app.js b/Lab2/js/app.js index 8a75c0e68..973c1d75c 100644 --- a/Lab2/js/app.js +++ b/Lab2/js/app.js @@ -22,11 +22,9 @@ $(function() { // 5. fullMenuView -overviewView var overviewView = new OverviewView($("#overview"), model); - // 6. printView var printView = new PrintView($("#printView"), model); - // Controllers var searchViewController = new SearchViewController(searchView, model, this); diff --git a/Lab2/js/controller/searchViewController.js b/Lab2/js/controller/searchViewController.js index 6027c314d..a8d2b9c8c 100644 --- a/Lab2/js/controller/searchViewController.js +++ b/Lab2/js/controller/searchViewController.js @@ -5,6 +5,7 @@ var SearchViewController = function(view, model, sControl) { var dishesView = new Array(); //var textInput = view.container.find("#keywords"); //document.getElementById("keywords"); // var dishesView = view.container.find(".thumbnail"); + view.searchButton.click(function() { @@ -12,8 +13,10 @@ var SearchViewController = function(view, model, sControl) { }); view.picBox.on("click", ".thumbnail", function(){ + console.log("funkar"); model.selectDishRecipe(this.id); //textInput.value = ""; // nollställer keywordsfönstret när man tryckt sök. sControl.oneDish(); + }); } \ No newline at end of file diff --git a/Lab2/js/view/searchView.js b/Lab2/js/view/searchView.js index 31b12c5fc..57bf4f3ed 100644 --- a/Lab2/js/view/searchView.js +++ b/Lab2/js/view/searchView.js @@ -2,7 +2,8 @@ var SearchView = function (container, model) { this.container = container; this.searchButton = container.find("#searchButton"); // knappen ska bara göra loadView(), i den funktionen finns resten av isntruktionerna - this.picBox = container.find("#template"); //this, app adds eventlistener + this.picBox = container.find("#template"); //this, controller adds eventlistener + //console.log(picBox); //load view this.loadView = function() { diff --git a/Lab2/sem2-diskussion.txt b/Lab2/sem2-diskussion.txt new file mode 100644 index 000000000..34ddc76da --- /dev/null +++ b/Lab2/sem2-diskussion.txt @@ -0,0 +1,3 @@ +1. man vill inte att en view ska veta om en annan. View ska bara visa data (modellen), controller ska bara veta om sin egen view. +använd inte global selector. +3. använd if-statement bara för att bestämma hur det ska uppdateras. behvöer inte vara switch! \ No newline at end of file diff --git a/Lab3/README.md b/Lab3/README.md new file mode 100755 index 000000000..e8687b16f --- /dev/null +++ b/Lab3/README.md @@ -0,0 +1,14 @@ +Interaction Programing - Lab assignment - HTML +================================================= + +This project contains the startup code for HTML version of the Interaction Programing course lab assignment. For more details on how to complete the assignment follow the instructions on the [course website](https://www.kth.se/social/course/DH2642). + +What's in the project +----- + +* [index.html](https://github.com/kth-csc-iprog/dinnerplanner-html/blob/master/index.html) - the only HTML page you will have in this project (though while testing you can create more to make it easier). You will need to implement the skeleton of the layout there and then through code (JavaScript) create the rest +* [js/model/dinnerModel.js](https://github.com/kth-csc-iprog/dinnerplanner-html/blob/master/js/model/dinnerModel.js) - is JavaScript file that contains the model code. The file contains the model (dish, ingredient and general dinner model) as well as methods and comments that you need to fully implement to support the dinner functionalities (guests, selected dishes, etc.) +* [js/view/](https://github.com/kth-csc-iprog/dinnerplanner-html/tree/master/js/view) - here you can find a JavaScript code of an example view. The view sets up some initial components and their values. +* [js/app.js](https://github.com/kth-csc-iprog/dinnerplanner-html/blob/master/js/app.js) - this is the overall code of the application. It is responsible for initial setup of the app (when the page loads for the first time). +* [images/](https://github.com/kth-csc-iprog/dinnerplanner-html/tree/master/images) - folder contains some pictures you can use for your dishes +hej \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 1/home.html b/Lab3/ej aktuell/lab 1/home.html new file mode 100755 index 000000000..07b1c748b --- /dev/null +++ b/Lab3/ej aktuell/lab 1/home.html @@ -0,0 +1,32 @@ + + + + + + + + Dinner planner + + + + + + + + + +

Dinner Planner

+ +
+ +

+ The path of the righteous man is beset on all sides by the iniquities of the selfish and the tyranny of evil men. Blessed is he who, in the name of charity and good will, shepherds the weak through the valley of darkness, for he is truly his brother's keeper and the finder of lost children. And I will strike down upon thee with great vengeance and furious anger those who would attempt to poison and destroy My brothers. And you will know My name is the Lord when I lay My vengeance upon thee. +

+ +
+ +
+
+ + + \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 1/homeViewController.js b/Lab3/ej aktuell/lab 1/homeViewController.js new file mode 100755 index 000000000..276759ec1 --- /dev/null +++ b/Lab3/ej aktuell/lab 1/homeViewController.js @@ -0,0 +1,7 @@ +var HomeViewController = function(view, model) { + + view.startButton.click(function() { + console.log("funkar det"); + showSelectDish(); + }); +} \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 1/index.html b/Lab3/ej aktuell/lab 1/index.html new file mode 100755 index 000000000..a6f065e18 --- /dev/null +++ b/Lab3/ej aktuell/lab 1/index.html @@ -0,0 +1,38 @@ + + + + + + + Dinner planner + + + + + + +
+

Dinner planner

+
+
+ Number of guests: +
+
+ + +
+
+
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 1/start.css b/Lab3/ej aktuell/lab 1/start.css new file mode 100755 index 000000000..a486f97aa --- /dev/null +++ b/Lab3/ej aktuell/lab 1/start.css @@ -0,0 +1,33 @@ +body { + background: url("https://fthmb.tqn.com/uZwLBI5jpv1YjOTwGGmFuSyUhg4=/1920x1280/filters:fill(auto,1)/dish-918613_1920-5812723a3df78c2c73a334d9.jpg"); + background-size: cover; + background-position: center; + font-family: 'Lato', sans-serif; + color: #2c3e50; + + +} + +html { + height: 100%; +} + +h1, h3 { + font-weight: 700; +} + +.content { + text-align: center; + padding-top: 25%; + text-shadow: 0px 4px 3px rgba(0,0,0,0.4) + 0px 8px 13px rgba(0,0,0,0.1), + 0px 18px 23px rgba(0,0,0,0.1); +} + + +hr { + border: 0; + width: 400px; + height: 1px; + background-image: linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.75), rgba(255, 255, 255, 0)); +} \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 1/style.css b/Lab3/ej aktuell/lab 1/style.css new file mode 100755 index 000000000..41423ca9b --- /dev/null +++ b/Lab3/ej aktuell/lab 1/style.css @@ -0,0 +1,28 @@ +.startPage { + width: 80%; + max-width: 700px +} + +.row { + border: 1px solid black; +} + +.col { + border: 1px solid black; +} + +.viprovar { + border: 1px solid black; + height: 50px; + +} + +.hojd { + height: 500px; +} + +img { + width: 200px; + float: left; + margin: 1.66%; +} diff --git a/Lab3/ej aktuell/lab 1/style2B.css b/Lab3/ej aktuell/lab 1/style2B.css new file mode 100755 index 000000000..1dbe7737a --- /dev/null +++ b/Lab3/ej aktuell/lab 1/style2B.css @@ -0,0 +1,71 @@ +form{ + margin-bottom: 10px; +} +input#numberOfGuests{ + width: 40px; +} + +img{ + width: 100%; +} + +html,body,.container { + height:100%; +} + +table { + width: 100%; + border: 1px solid black; +} + +.sidebar { + background-color: lightgreen; + height: 800px; + /* margin-left: 0;*/ +} + +.nav-sidebar { + margin-right: -21px; /* 20px padding + 1px border */ + margin-bottom: 20px; + margin-left: -20px; +} +.nav-sidebar > li > a { + padding-right: 20px; + padding-left: 20px; +} + +.caption { + text-align: center; +} + +.jumbotron { + text-align: center; +} + +.row { + height: 100%; + display: table-row; +} + +.row .no-float { + display: table-cell; + float: none; +} + +/* Sidebar modules for boxing content */ +.sidebar-module { + padding: 15px; + margin: 0 -15px 15px; +} +.sidebar-module-inset { + padding: 15px; + background-color: #f5f5f5; + border-radius: 4px; +} +.sidebar-module-inset p:last-child, +.sidebar-module-inset ul:last-child, +.sidebar-module-inset ol:last-child { + margin-bottom: 0; +} + + diff --git a/Lab3/ej aktuell/lab 1/view-2B.html b/Lab3/ej aktuell/lab 1/view-2B.html new file mode 100755 index 000000000..628aae43e --- /dev/null +++ b/Lab3/ej aktuell/lab 1/view-2B.html @@ -0,0 +1,146 @@ + + + + View2 update 2 + + + + + + + + + +
+
+
+

Dinner Planner

+
+
+ +
+ + +
+
+

Add another dish

+ +
+ + + + +
+
+
+ + + + + + + + + + + + \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 1/view2-oaus.html b/Lab3/ej aktuell/lab 1/view2-oaus.html new file mode 100755 index 000000000..e2a568b3e --- /dev/null +++ b/Lab3/ej aktuell/lab 1/view2-oaus.html @@ -0,0 +1,36 @@ + + + + + + + + Dinner planner + + + + + + + + + +

Dinner Planner

+ +
+
+
+
Hejsan
+
+
+
+
rad 1
+
rad 2
+
+
+
+ +
+ + + \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 1/view2.html b/Lab3/ej aktuell/lab 1/view2.html new file mode 100755 index 000000000..7ba32d953 --- /dev/null +++ b/Lab3/ej aktuell/lab 1/view2.html @@ -0,0 +1,96 @@ + + + + + + + + Dinner planner + + + + + + + + + +

Dinner Planner

+ + + +
+
+
+
+ +

My Dinner

+ +
+
+ Number of guests: +
+
+ + +
+
+
+
+ +
+

Add another dish

+ + +
+ + + + +
+ + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + +
+
+ + + + +
+ + + +
+ + + \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 1/view4.html b/Lab3/ej aktuell/lab 1/view4.html new file mode 100755 index 000000000..e4caf2751 --- /dev/null +++ b/Lab3/ej aktuell/lab 1/view4.html @@ -0,0 +1,145 @@ + + + + View 4 + + + + + + + + + +
+
+ +

Dinner Planner

+ +
+ + + + +
+ + +
+ +
+ +
+

Add another dish

+ + +
+ + + + +
+
+
+ +
+
+ +
+
+ +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 1/view4B.html b/Lab3/ej aktuell/lab 1/view4B.html new file mode 100755 index 000000000..1dab260cf --- /dev/null +++ b/Lab3/ej aktuell/lab 1/view4B.html @@ -0,0 +1,132 @@ + + + + View 4 + + + + + + + + + +
+
+
+

Dinner Planner

+
+
+ +
+ + + + +
+
+ +
+

Add another dish

+ + +
+ + + + +
+ +
+
+ + +
+
+ + + + + + + + + + + + +  diff --git a/Lab3/ej aktuell/lab 1/view5B.html b/Lab3/ej aktuell/lab 1/view5B.html new file mode 100755 index 000000000..89d81eaee --- /dev/null +++ b/Lab3/ej aktuell/lab 1/view5B.html @@ -0,0 +1,76 @@ + + + + View 5 + + + + + + + + + +
+
+
+

Dinner Planner

+
+
+ +
+
+

My dinner: 3 people

+
+
+ +
+
+ + +
+
+ + +
+
+
    +

    Total:

    +
+ +
    +

    +
+ + +
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 2/exampleView.js b/Lab3/ej aktuell/lab 2/exampleView.js new file mode 100755 index 000000000..70a3a9c64 --- /dev/null +++ b/Lab3/ej aktuell/lab 2/exampleView.js @@ -0,0 +1,55 @@ +/** ExampleView Object constructor + * + * This object represents the code for one specific view (in this case the Example view). + * + * It is responsible for: + * - constructing the view (e.g. if you need to create some HTML elements procedurally) + * - populating the view with the data + * - updating the view when the data changes + * + * You should create a view Object like this for every view in your UI. + * + * @param {jQuery object} container - references the HTML parent element that contains the view. + * @param {Object} model - the reference to the Dinner Model + */ +var ExampleView = function (container, model) { + + /** + * We use the @method find() on @var {jQuery object} container to look for various elements + * inside the view in orther to use them later on. For instance: + * + * @var {jQuery object} numberOfGuests is a reference to the element that + * represents the placeholder for where we want to show the number of guests. It's + * a reference to HTML element (wrapped in jQuery object for added benefit of jQuery methods) + * and we can use it to modify , for example to populate it with dynamic data (for now + * only 'Hello world', but you should change this by end of Lab 1). + * + * We use variables when we want to make the reference private (only available within) the + * ExampleView. + * + * IMPORTANT: Never use $('someSelector') directly in the views. Always use container.find + * or some other way of searching only among the containers child elements. In this way you + * make your view code modular and ensure it dosn't break if by mistake somebody else + * in some other view gives the same ID to another element. + * + */ + var numberOfGuests = container.find("#numberOfGuests"); + console.log(model.getNumberOfGuests()); + numberOfGuests.html(model.getNumberOfGuests()); + + /** + * When we want references to some view elements to be available from outside of view, we + * define them as this.someName. We don't need this in Lab 1 yet, but in Lab 2 it + * will be important for assigning listeners to these buttons, because the listeners + * should not be assigned in the view, but rather in controller. + * + * We can then, in some other code, use exampleView.plusButton to reference the + * this button and do something with it (see Lab 2). + * + */ + this.plusButton = container.find("#plusGuest"); + this.minusButton = container.find("#minusGuest"); + + +} + diff --git a/Lab3/ej aktuell/lab 2/landingPage.html b/Lab3/ej aktuell/lab 2/landingPage.html new file mode 100755 index 000000000..e3c2b682a --- /dev/null +++ b/Lab3/ej aktuell/lab 2/landingPage.html @@ -0,0 +1,44 @@ + + + + Dinner Planner + + + + + + + + + + + + + + + +
+
+
+
+

Dinner Planner

+

+ Normally, both your asses would be dead as fucking fried chicken, but you happen to pull this shit while I'm in a transitional period so I don't wanna kill you, I wanna help you. But I can't give you this case, it don't belong to me. Besides, I've already been through too much shit this morning over this case to hand it over to your dumb ass. +

+
+ + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 2/mainPic.js b/Lab3/ej aktuell/lab 2/mainPic.js new file mode 100755 index 000000000..4bc378d19 --- /dev/null +++ b/Lab3/ej aktuell/lab 2/mainPic.js @@ -0,0 +1,26 @@ + +/*main pictures +gets the pictures and name of the dishes for view2 and 4 */ +var MainPic = function (container, model) { + this.container = container; + /*var menu =[1,2,101,102]; + Ska ändras i labb 2, ska kopplas till det sökta. */ + /*var menu = model.getFullMenu();*/ + + + //var selected = container.find("#selectOption"); + //var type = selected.options[selected.selectedIndex].text; + var menu = model.getAllDishes("dessert"); + var string = ''; + var picBox = container.find("#template"); + + + for(i in menu){ + + string += ''; + } + + picBox.html(string); + +} + \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 2/mainView5.js b/Lab3/ej aktuell/lab 2/mainView5.js new file mode 100755 index 000000000..9837129af --- /dev/null +++ b/Lab3/ej aktuell/lab 2/mainView5.js @@ -0,0 +1,29 @@ + +/*main pictures +gets the pictures and name of the dishes for view2 and 4 */ +var MainView5 = function (container, model) { + /*var menu =[1,2,101,102] + Ska ändras i labb 2, ska kopplas till det sökta. */ + var menu = model.getFullMenu(); + var string = ''; + var Pictures = container.find("#pictures"); + var Summa = container.find("#summa"); + var sum = 0; + + for(i in menu){ + for(n in menu[i].ingredients){ + sum += menu[i].ingredients[n].price; + } + string += ''; + + } + + + + + Pictures.html(string); + + Summa.html(sum + ' SEK'); + +} + \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 2/view2.html b/Lab3/ej aktuell/lab 2/view2.html new file mode 100755 index 000000000..536705377 --- /dev/null +++ b/Lab3/ej aktuell/lab 2/view2.html @@ -0,0 +1,111 @@ + + + + View2 update 2 + + + + + + + + + +
+
+
+

Dinner Planner

+
+
+ + + +
+ + + + +
+
+ +
+

Find a dish

+ + +
+ + + + +
+ +
+
+ +
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 2/view3.html b/Lab3/ej aktuell/lab 2/view3.html new file mode 100755 index 000000000..71d8e6a6e --- /dev/null +++ b/Lab3/ej aktuell/lab 2/view3.html @@ -0,0 +1,108 @@ + + + + View 3 + + + + + + + + + +
+
+
+

Dinner Planner

+
+
+ +
+ + + + +
+
+
+

+
+ +
+ + +
+ +
+ +

+
+ +
+
+ +
+
+

Preparation

+

+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 2/view4.html b/Lab3/ej aktuell/lab 2/view4.html new file mode 100755 index 000000000..d7f4f3ff4 --- /dev/null +++ b/Lab3/ej aktuell/lab 2/view4.html @@ -0,0 +1,114 @@ + + + + View 4 + + + + + + + + +
+ +
+
+

Dinner Planner

+
+
+ + +
+ + + + +
+ +
+ +
+

Add another dish

+ + +
+ + + + +
+
+
+ +
+
+ +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 2/view5.html b/Lab3/ej aktuell/lab 2/view5.html new file mode 100755 index 000000000..845c4080d --- /dev/null +++ b/Lab3/ej aktuell/lab 2/view5.html @@ -0,0 +1,76 @@ + + + + View 5 + + + + + + + + + +
+
+
+

Dinner Planner

+
+
+ +
+
+

My dinner: 3 people

+
+
+ +
+
+ + +
+
+ + +
+
+
    +

    Total:

    +
+ +
    +

    +
+ + +
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 2/view6.html b/Lab3/ej aktuell/lab 2/view6.html new file mode 100755 index 000000000..aa1736ff2 --- /dev/null +++ b/Lab3/ej aktuell/lab 2/view6.html @@ -0,0 +1,109 @@ + + + + View 6 + + + + + + + + + +
+
+
+

Dinner Planner

+
+
+ +
+
+

My dinner: 3 people

+
+
+ +
+
+ + +
+ + +
+ + +
+ +
+ +

Freanch Toast

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies.

+
+ +
+

Preparation

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies. Nulla in augue lacinia, condimentum tellus ac, semper purus. Suspendisse commodo elit at velit tincidunt, ac laoreet ligula tincidunt.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet.

+ +
+
+
+ +
+ + +
+ +
+ +

Meatballs

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies.

+
+ +
+

Preparation

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies. Nulla in augue lacinia, condimentum tellus ac, semper purus. Suspendisse commodo elit at velit tincidunt, ac laoreet ligula tincidunt.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet.

+ +
+
+
+ +
+ + +
+ +
+ +

Ice Cream

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies.

+
+ +
+

Preparation

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies. Nulla in augue lacinia, condimentum tellus ac, semper purus. Suspendisse commodo elit at velit tincidunt, ac laoreet ligula tincidunt.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet.

+ +
+
+
+ + + + + + + + + + + + + + + + + +
+ + \ No newline at end of file diff --git a/Lab3/images/bakedbrie.jpg b/Lab3/images/bakedbrie.jpg new file mode 100755 index 0000000000000000000000000000000000000000..6b7a2982c34ed1429310e52fe99ada5a65db26f0 GIT binary patch literal 2902 zcmb7;dpy&R{>MKvwwcMD$(Z{+%xw%Ca*2*yA{9y@*OBc@YUI{M$erYxG`C!Gol8{A zoh~BG+{vY{icoy9Q@`KiJRaxY^L+pLdcU8qH*1152k=^3SXlrd5CDLF55SrNP6C_| zC=3eWgh63&I42jkFb_8Z!7U~z#49W*E-fu7jz-HWYOBi1V-(Qn6GkU6I#?VIC!<0z zBj}yf*2iK0NI-BnoEyP?oQLN)Rt_zP{hwjI2KZor1rQDfNds(rATS?@MF+$HfDH`# z^X`9O=K#PEHt3%a%L}l9z+g6Zc6JVS@ShzJ8yH~c-F9&qcX8O{&!RayZLVQ z-MZE>lNN|kxqWt^VDwm#>I<)yiMK+%YiABdvk0W=c1y=>u*Aaj4XX~H`}@zbPVHgJ z-%OpJa?FTJ9?S&XIfQOMFF$=FtSTV1NnfQ8{GwQU0yGwr>gzf>}okx#WUEx zpHN<~xNyUKS=DNP>}TLbewYCTEKM?3v>!Lt9fkf>d#W%7iUVPjDam z(P+|?ZM@i|LYBs(V=m;%@Vp(Jsz|xiN0&Z_IH^GTcl6MRSMS2E+HTM7<#x<0ISm${ zCI$<(x-sLiks5eS=r;>1QdVk@!`f%>bg}rkvfeX3qF-$=|3>$A3KBJ9Ycb{dq z0dw+|=WznQQsK=PFX$X7g>DX!k3N{LUsY__lcyP2+@f9HxQq*GXtEowwH8|MG$`0a z;{)n%XltahNqMTBl+irnYpyb^;5i(!+0JSwLpNuNb1q8N9<<2Ew~D zz~f8&vgbaST#5)!B>t*2Ic;z^@n-XSMESQaXTCv?A0u=mlV2Jj#U0bbujFhQe0rI) zrn>0q`wYp~vnRPP@MYstS81hs$z*?^aZ?(*qDWF#yr08pO>n(PNL<&G^O#lKVv2eGh@Q;ftWq9~nP{7KcZon#awzA&N_#N=uYa4*ruasz*+NcXs@y zSOE85CvUNU_!$cU+o&aB)F~FwESRxyXUj+T66Ws1+o)fGdc`)*j?ot{K!{ILynT+E zBsyZhZGW`vxGF*sm^g9SXeV#0FxyE_9~pq6jH$~PYR?zvzCm2KN4g&>tCp2W9U`(muXU=vm+*<~DnCU!;&SH~!nFeZRU6}K0!Yx=gPlD{`zxw6>R*am@Ilj9y z9~^{TCPycxSbl1|0*85_OQfp2;?}*=d~dn7=2Mx^;mp|V(iHB+vV*R4ru*k~qp_ao z5HfYTE+6l5&tD}&0ib2~%#M)G%+Q0U1Q`pClv5j7*eL;lmV3v@1r54XxZgQ}i*9?1 znQ&T76aIc-BW$@M(xx4~b3_Qcnts?xYR!ngj#^}n`#;A;>1}V zLG^gzr#W|Jpx z;ybpe8m9J)Luh3BuAN|PuY%E+kLjngdk0_it-25v9@%^!t4!0<$*)JdwMFi^2r_qS zGOt~8UHJ6Y?8gRru8s1X%l|NxC8iQq|#_ri|j*H*?>K|Ssutu7cmNpgPL@pv( zz|(szIU`t4GqpuAPyLk*MpZn&sDi0m%FX*_m8Bg$G^09f(W-SMrxVF+c$j!St=>|l z{x5^QqtOo0k#W0g1t^@_F_I=v__^0H21SpfQb}Hv zW|#`%w28#UIVCFECP=Ls8@2nF>Wf2G?rBiOEp{1`1tS+O+(}5k z8=Mz89Nys6+>~WJ0c&|fZOwJ5d!{=hUBM5}?18a>l2$8(E)^sj(%Wv;FJY`ZFNqvj zcaMA^T#-}h3=eJ(trhQEJJS2dfs4>hRL!-kSKo@-NFC=8++`}w_5_S$l`AJ1E6Hb6 ztPb$`>KoiS3}v}Qk5^fi3O{%$JA{k-aAb`rNs9%@3YYr#@kYjK8|0HNKOWcKZu~gv zO}G1Cxbne~ulJuMv&ADPt>S{J=NGnewGm`#kcfTQ0!Jy&1WMu`;uFBlRqv{~MQ!VN)7{@I6vXI3a zR)+i)MIzWl#5(&H^P{T2MmK98dssX5 z{scqSW*<5jx*_8JOF4?RR$OrIR9|92-qL9Kd1?}87A`Sbzp**3)0P+Gm1(i_Zm%TG z)l#bWeiF{H+-Wl)kV-C+Z?tsx(&+XI5`%3#+I#rcSO(unq;F14>BSQ;VDbBgWCyD6 z7*#ghYSx=9PwO zN|4w0d1l`E{XR42&bf2${ho9FxHEUo!@|Q40J$nm1qJ~A0}6x!01rz5c>o>`4h}93 z9xg5(A>KbDCcwiZASNLqA|@gt0g?O%5D6JMh@6ZB45p?AgBckZ7#LapkN*_`;^X0w z5R*X2$sx2S1H@qiK>#ce5E}%17y!@% z09aVqKp^1%z`@0S1jNDv;Qx!tlLN4TSU5OXc({*nfdv1~0I{%fKmc3{=0}u*vMgG7 zU{)b3kGE99a@t93h{F2bDR~{wuw-fxYp?Jk)b#1uKM`6W;Q!C?FC`Eg2lvsx81KJQ zuz)x~tVci`?EjVk!~$XCP%sP1YFXh@f?0$->Z#=3Cb1UwJ}d%=vHxj-ut9(qfOfQr zhDnynM7qS%sv9}_sgbzyo)Y7%?sW>!xM#)9fxU{OQiCTe18^Z#=1oPQumab6E!&}v z$i>NqsU{D5(dlsMJI*6-__G#KmUk+bDco-AQ@!l@ZLQ9?UieC1}^%mxZY&5P-(-QkVJ#LkbGUpf%!<)|_3&c?6iPbrvbjeJk) z2L_C27%7LR@r;M7{3;LAI{e~{Kx|HfMzLR9^tJFW1B6FO8U-2ObZknz9#DS(Xco^4 z;S_pNL1JvTs}MaYE*7TFGbL1mS)z~G`OGM$^pJw1wvD0Tw((W{!BK$=TNjD z#x9?P(=wao{jy_oEoRe0ppnAkRDJa;%i208^e`}DhvHiHMv&rG_s6|dy!N#+uAh=+ z2n_}tqyTr5OZfH$Rv>C32f&K66Ctu`rOk%CwFox$FjdF5hgvyh%fNh^n$>pMQS2J-GbB z*5V+p+418-g_plLN4k0H{nGEHs|W^Ftz9EdOjlpImxvH;)T@XW!Oz8AhVbw=528b! zpwwsr2iRL*^Z#DBA)ZBe3zL%xF`u6gStQRC8+?Tuu0~2$etPSfZ6>VS#zN5Uz_7R~ zPlM<+OGQrXYGiGJ3DVBxX+AW6Ms^+EpTy3M{CT|747$P{JvVaPCg+;LicP<^wqb_x z*`QBSP6s6&(ty(ARvs#%ttZ#%)%M?YIt^e{`aM6%jZ2>Y zem%Wj|UB-MulHb?Gvw;5rAUI*#{=DsJA@$l}khD#ERm7;6 z)+vMF{5#*FM5Y{$v7D51*@NG)t=6~eRjRU}Gch;XJ)`_J;pk;JgIbgj!FqvOY^_P6 z_qx!~*LQCyY79m)v<*e81Ci;h>Yj0*&5GeT%k)xOx}WS8V)Fo$%R~rHaXKaA5kTm5 zp@sKri=_UAQirEAVoe7-r+rh;BThxqK)Z2f_1-Kx+1?T0EEiLO-8qa-+x5n;M|+I1 z{OQ_TkG?RT4W!LjCL8~;wHELJ_HRJAsP^5zx+FTHj)EalB1=i!9Gc*)DH_ZMy;Yg)~{O`z-z1Rml1=Xg!+S zo~?RsT+-m@@&my6RV2xmK_>cdE^4$#=MMmdxj2QgFi5tdFFgR{g^o>W}VLJnbP9re83_^mFM zaDM@^d=3XvdzLf;r^~^l0o##EwZbh1zfx2UdYGu7Hl0s-bbC#RqvGoaCI4tDk{Vz~ zPN3Z4!bFOG(bov3NL9zBN|xYfMHoXuq=V=Yn;HCQ-fb%`%cnYzo{1z*u|JxJhvUmM zJKiGSdtU3VAFB(+JDWk0e7B}*t)&d<^Ez`wQ^L3vFklCX_)24_Z%aDgV0A&hvC#JQ zE1J>PlsO%h^x03pLBD|APZoBqc0%^%8K8dP1cg&6{(MC*G(jpIQz5gHnpcp;+q&Hk67Z5=aa?1O@0tjPxOoMGh0KtXzcf$8w}3A`RMs5 zZSg0E1U`y(v>BNBHo@bV_I+u?gPji^>As@Nlk<}MQ8`g;82_C>HTB-PZrg6+w4RJc z>KSn*cy19%B;ujHEBNPC&ytnL`^ESg)sbtvuzN(@Hq59fz0i$BWGC|_Q+%SOyCP9G zUDDy0fu5lZ}8}yE)s%ZrhW{-K)_x zWu^>~-w`&QMf_NNwIo+-t}R_xXqE}ZY4%v2cpKXIvA6j~vL_L7oCboy)&sK_ihi06 zIuTe7Jv4y7EMi}JTKcgwr}`FN!3SnN@Q)-#McSu1SRRs8xzTOx$5AUi90A4pd-^Hq$y>KIOF&vOCoAIX3 zH-!g)(EaeeODu6)VMi*D2x_0;D>RYnu&3-@kSBtDZ|azY`F%N5|%z ziank{{f<Wo9^bDUoL0C(ntTZydb z4oh}s)lzTAMRB(bS84{<+(QQLEU;h_{>$kP03{9CaOV)jo9T*R?p?Ohgsea(7sb%#$#N|`8^31#O|DI7wBV^}h2@Uzktz}&#;Ly4MqwSoFAl}_ z;&vw&Dv!V=<&MKK4n`miGoVWsx|l(%UlHdE5fkyY-@9X;Jq zNgNN7(vnQDY?|Im_8*6OqsUPs5ZapC@Vvj$Ly~71^p~C-RIcrm+kSbbzY`|x6FZO$ zG<7$KS*wwhW4!IMjpdtM+<;N-uhufyZAb5glXX`KEet=W$X#l+-3zkELjHt*QZ7y| zp)G>gyl+dkpEg{w%s7fJx^piY>6^U?f@Aj^hB(;2t1$jM%0nl4$wp^N&tV&6=O?9Upf?22@lZEongrEQM7D8o%3B*r0m2t;>=*KPl;_=$7fcG0Jf7w~i5| zJ2(EvCu;01 z%Zot2B7+MmRJM$**RwsgkeAx45S1l<`Nkys0RZ6d9?n%Ch=xs+R6A@XXBWsFx2&nm z1zV>t5V}##G99&Fz#tn9_jR10zLh7Ew}dZA-Y6aBX#zBi=`vr5g61yYUYIw?nG| zQ-X}yTWHPbFM@pM6*;{T-s8V@QASko%;uc{tFyt9V>T4;-vRSTl;6g9G42XhsGX8t zJB9{%e${?8;BfY3y?nSik51$P08a0a=vwh*sGpG-d@lXxRbU@maon3ibLUUj@?2bQ zQ!r=)+iB@hj(l&E5R9?twF8-U2Qi$uxfWL=V(~@e@6p^zP-Eh1kJpdA?44Ea2!iX# zyWmW`-1yI4cfYx$RaGOha~eIpnV{6_p7mS&bUmqDxG?i0-6+=IQCmdbCQFFYl>h|Z z&1%1MQE7_kCkmaE&t%QfgUfzqEnUT-E%b-f&5zT~b@vr?-snYcTe+OU40GI7%6eoB z%(84^IE#|@3u)wP{J!80bI%jEel7ipwrzo6^23D)>Dw#fhcsxX^+akpzVEw$_&YK) zFW6#3J?OyQj7%RV*oyuh8sx~Pw^JhKOdjNvYgqGX8Hb?zH@JK zf~}h4?_Rn%Jpj~oV{=5Z6S&_ei-jO=ect^U(uC^fO~gk|T5aS|XlrfSrJin5d{LWk zWo*JsLSdO3_4U#bh4Wn^P{J1lw=lcBiPL{ShQ>)9B?goEOy(G)IZ<`$Ut&p4Dja4J z->3)cgLA2x4u)Zt(<+pTge`)j4mOBS0M`K~;jIXd6dG?$X9+D;FOm6V6l|W3$6*V5 zO0PZXR~H|e#x(1f=sNAIw$wdHtq~y}u;gu^0%_>cr$m`dRLty(=ZlZ)iy`_3J`E}5 zSWuTue}n<{Gs9k?1u7S3_=k_~QuU5|PE-#7Jo(VgxXL}_kB?cb!I5WstuLfh#3+>~ zO9YI|HKF&xg^i&~E z#%M@ugW@}^rCkmuSJ%6ozlTuRjNk?q3WI48HB%v#WUOxFw{iBl)XINS-K%5)6WtJ zRJAkrGtw{b-)jmTuH4)sG8e#YXS`aQDCIiJru*Roe|4yX64%&?P3Cg;$e5Zbr2Vc| z>8N`UOGSuoOs&H(H}8`iEd;lEz|?5@+j&E?#d=f@ap)zu>aF^SOA|a$VM=NBIFam9 zC?YlTndOTfmFNfqbx}1=jrT(=LyNrS8)K!pf4_F3@6aGC`>>P*9{qA*zINfO#`$T8 zU-#&FfN8T*w3#wDEy#g~yivC}L)@iTn8A8&TbC{)99*=SMr?_73Kf1a;iP?J`f+`ttL_P=|!&j zvzrG%8R-Y=R;vW?6a=*%E#8Ay2RsD0kGx6klj80!rQbNk)&5;_DQiP=3xj$ZgS!*!%d3Z->xV@Q?vhCKAmU|>^zqkH<%1{1= z2f#`fwt{=J=x~G`m9cKW$%x0bB`ipOBzhrEF}ohIG?&N3SE)Y4uAiV>;!>m4X15ta zHczG<8YW z$V!>$uXxxBi2u`i0Dwv8o2^KH$33XKnf~Wpbj)^ssc(}guR`}B_Y3`IX4JnyL%r>f z0;Rbo>-k^L+MfS`B*wZ4JL6B}%Yb~|L(-+e0+9&KUnOID>M zr*E8@bxdq*WOeD{2of7OHa32<*0n*#> z>KY911coblc9~*~35vHThf#~#fbURzaYnK?T-05Z4yGu6Ttjs3mzOcmVp++t_fgAt z%H5{}E>xS6)g&xB$fW5JKZ#Kwez9DRZ=DHQbbkh4x0N@=F9%qypKAhH_MyAr&&kS& zO%cDmVAUlk@7J;iKz~Ze504zOB@U)@fh$@-Piv2CE>3oJIeg z(m_$DhFyfO`r>ouNM@-OF4RGX7Sc~tKyavd zHRwusGW-CTeR_}2G@Zeq`j8Ajn*4bCHkjr~1HNfj~OCV$l8pkj~D+=-17D z67H}X7CItUnyoWeg9etVUY=th*%l)qQO`KnT1#!e&0*jR4}i;SC!y{9S^GJoV7(05 zijm}OHX1)0%h=mo9$Q7XOD(T8)yBDG{}wXE1IZkvno&ae^2_+38?qi^)`G$!$rr-w z5Dld}3sY^?>V=buiaNvI2LK;%ZRhP%GL}ek`Oe}gF%1n(Zbvn}`Pca-OxFo9GKP-A z81D|~MIcie=UHF1YbHSg7~IL;k5Y5fjkOpcU3rCLT+bIC2R71XE00QwUF4OSdH_rp zm$KC(;v}fIb5$}wdsn^H4l5ycr1EK1y>E=KIUV5LQ|7f}9PW*J&08-kl12ct zIc|R|Pu7UzjKsa~=uXGY6#QZ_s@2eh^YY#2)HNHwQfhal6TYSqv&gS>aaM^igv!}3 z3h|M}dU(9&t{^Nc>cH|xz!WFmpDU(i^htfi+Lgnk36-Z-1SG|??u5=U_7@XsB1qhK zZ)T!`Bt^cSosNqO`7X@s5j|nL^6(M+8%F>XfC|OH0gD3)0cU zJOGeoTJx$zT+*TD_ou0wQs@0N8@}cY>&K9hY_2^^5)+C&)z5*i_-AX8-N$jpX%J)@ zCf$%m;9H=QGY;M~hRIVVlZYjJ+TKRKYz2Gu?*d-EIOz^nhu}E7%W6i({;)5tJcH8j zrqfx2vb>i4C@&dkZHP@2B28AMq$zhHFVc(^_YqtNSX338$yl8U>tM6IJ`6}06(FL| zH#9TT!`#tUOdW}}9dMmrzO4@sSWv$6Y~zH*3{lW99&+bekzVp^^ZWmd-h zCw0w`5nl*v674bu@p2@)M*17Pj&t&VI9)_5FkcTS9OS5!R#tg z3Sx0YZmy%nU>_9Qx@TVlsA4vCi6MXK6)ZhB~oNn#n4<$$^Y$`S)Bly zQ4MI1Zeh$BC?#r5B~ukG zUQr)i{mC7`s5%O1l&8De=cEGKui`%)pjKjKoI#4H9TjUwmZq`s-}zg?-9J=HjDB9Z zX|dF>ata~$VC(b<2BHpQlI369cK->v-hk>Q$h?n<ECxcG$RPY4MJ2x&;kh{)+_85!tlfj}k@&od?#ZdM@hxhMxWAHR^05aTm( zX)ysQ9zh|2f0AI};o%Vy5K=#RLM^}yWES{8kB4pm2`(TO5Q~Yy0(eA%fk}e#&<|h) z05GusR{KxE|1~fkVPauF#=*tIC-@uCNDO#{frfGr!zp zGMzU#EKqWRcZs>Utn#%z6uMK#AVF(b7#=<)6*Ubl8~d~89GpVJBBEmA5(U#PHU_&Eg6B}DQdk04+XAe&=Zy#Sj|M%e^B0fe&MZ=SlQ&Q7Dr)T8l7Zes1mz0*( z)i*RYHMg|3_4f4-3?hbxN2X_H=jIm{e=KcoZSVZt-TSqFaB}+l?EK>L>d*B*E(`$X zf3p59`yVcnzph7ESeRHi|F|$7`TSj&Bv{zY{EtcHba384$yfy5;gZWI=GOM$u?p%Q zQ&_{M@F_t;n`|fl(EdaAzk`MSzhwW0{kLlgK!}O)_wg`E0J4A!M_ZRB1i@^48>cpZ zov-E1j)CvhC)ppVMXvOnjp;Vu2G9QP>FhEpJpekDM3RIE-92`j2}T$<$vfYi=8IXj z-%aV1-W@*xJQrBEpLhot>Gsa)*T%ZRg10G$?l8oJv(&REc$6C)+vdnge)xU*_3Z&r z#}NgqbFk^Z5|ea?S|~47wR^n*iMX#yYA}&$lHIL9LtB5r1R!+kC(@T68adKqNL8u$ zH72zD5S@^88?wgvkC0LOs-$+6c09WAc+~m*uVOrHxD0wtwwH@eW#PrS2aSPaW@wML z_*NTsopS6GwRskoEqh$VA8`q!WyPUtKy_|~>bfRuk_IeMKtd7Cjyyrb({Dog7 z&eu)x-+KRKEhJ0CzgttgCoxdo6bLJpx+qw`X`n~w>?`#SD?qM+7n)5C1U~jd$Sq(Y=h&Jag7#WAQp93@VGeP{-ms31IxKv=CmJ( z@hV`@=9GhBH%)*d-5~=a!NiuO|Fj@GMLVE5m@Dywr982Gb&6%%|!(Uf# z`!p(1q^J?=k=@N8fuCg1-tf@?j;$0Y7OAL@Vfu3tD=AwU7J`4eyC)iK@4v{+&36jR zS`LBTcM(mB3#Z%6j@3`p6olhZuDDtQ4hO}M^R0Kf_jJqfO_{?m7EleogzaTHqf?V{ z^y+eQ6Jx*-KozG6BB>p%=$*Q%{$Z2`uaD&X9O3+#r{e5TDUjc!!PCSos*(B!salqi z?Vl_>)*{?}q@{u*)nVx`uwnFaY~mxtUDe0)>U5XRvY7pVxPfFx^Yp5`&ka{w^89`bB zhk>=x$XbViPTr)~bDt_3+AFrL2~(5>&ysl5>vyiS+Z)r*MxfYu+ zBK}rK%s)vm3wEhYo?guoo;R>{NZ}KSV1~)j*IwIKvnQ39?pwZ1oiJA5H?X?0(;21< z5}yeA1Qnn25|4K{@YS~6KSwX1rQuwvyez-pRd(xgV~kY?`Iz z<>%$KwG{J9otF1g1|!7wyQ?9`Ywb@PipRteNk zT*YN&vx&8`Z6|yHT$hXAY8Pu$WiAzPhbPFmDa2u0?<6d1z)&J#rZwY!YXwdIMWdH+ zH3r4880sM`#umw>=tJS}*T52_&AI(4}`6)Vj(00@)-rXpCo;ID2=*(3oDSVU?PuI~a+EVQBzk zH3pRh`snMPXqK&O7MmzwZP|JmaP%-ZNJc%I!Lm6t%j&NdOxFgTLe2KY2^eF2HJRI& zzXyGTABYO{CzSueYm;v=i%Z{I2I{_2VUbP$IN2^{hZ)uZHLy~fR@;kl9t@?im42*> z5%k-HbY)4y&N{=BbksX!fm!?ok1r?ATmKpN*`v`~VdrTBc9Hodw0TF}Owzb*Kq%;R z@Rd%|@Y#NLXUZy_w4kuEIGj9Fm?|3H8k=a$eg z`t+$_wz$y33Dpue5-TyB^6f}TOx6!^!oIHJE@6f_*y-Z0V%o+^aW0;P+Yos!YU{RH z5=CxiUGuQVOXM&=U?zSe^y}iHnNo1G{ekhCI9)7KZ^r2y%WALMxwc4!t-sFChZ4;; z2#OQ7E@HWDTFZGZj^fky*Kp)<@sbv=qOmnEq{x#CCBmqYxC?5Z>v`_1>HRa$yOzw- zazBmAgP0Uj!WJvE#}kvS)f*-#qn^Ps1GmhGB5NJRf2Vt!mpq zxR9}w5{_QtpSxmg*NP2S+3)E$MsslQ87-;Aa}2%;O@yz71E)1TglEg5)w9-W{Qc=2 z!p>tVNnI$7g`>Qvy{c0+Ue(ii4*_lwlJACOx)-XcdJZixHtB{vElG^lG%?Lg25y?* zZ0q&ztg<>8mt-6VPgShBroPTK$iO`BGBb60uMkE7f*y{)E5H$pe&NT;S{^ymE%dTr zNNfLv4n-VmyGNWU=1k3i?kum>f*09EJ0gScikS7bPQ=$b;A~PhMP`1BDJ*6jGPgVCDKwenK%i^5CZ-_k@HbGx(Ji(4&E7vArFd81qWRUa!Z z3leieYG!mO*u$SR_UYpo0uDuJ7lLTZdf8f<1yr2AwdLhxh+rM*A~G@b8=t7txLF4b zr&kuz(W=f;#>RbIvAsMm%|TOftz2`G--Z9#uKnWS$35{X)~6Xe9=d4r-9x8An-lk| z*KhL_VzO8`^x7bGhSte=?Rt4MKK6aj13*eYUp1ONdiP*GP*U{KX*gm-aFzsZh%*Yw z77^vm3N$Sp_w70u3PNSpfkZA6B!x86n?)2vUt!MFvK}JAo;MEDRoR|R$}5Ewbnx&q zD;3cD>GGzgCL5Pbjvc|E8RkK>WjFNoXr-oypM>(%T^25YGiyw?Bd0faM0-ue#l$GG zMJJzvHpp^P@0F&P>y!{kW-|f|3V`{~Me)N9V=M?J0TuLTCc}Y4dvySKGXp#4;QsIjB>TVi))hI2vxacmNPC6fIuOn88Olq=r6= zt)|-y-y(EOr^|;?!wfEgTqP;0f^@nKGt-Ai35$&RV`N{}a#QBXSy5!=2IRA?U1B6@ zJ^~Iv0ImaOSmh_CUQ#!-8;$}|C{95k%7gDKWs$qX#&|uifP3_(kGaO3ntfW)a>~il znL;Xtn>vnlL1h|3tv-Y6{Bo~xs{BI(z!zNwS3C#vN~UyBiRVhhyV6(Eg5PuIYi?z} zYZP+FxRzC^DuWMjbgu7{*C`GtYbq<;#O*)C{2>|CgJPyh?Mc_JQ!LQHx_=+&d2u-| z1*;HLn3z_g(;%#fA{4vy4y6)^zE~>TW4(yu0kD|Hjpkhno^qsfH17dkyF=u8NsU&% zgm=`$p>POm2beioCQo8Lr3klcD!zmeFFOszP;@Ps%c*3-33!|Q^#`YCzbUTK@C3=~ zHe|d_l9Q~b29tfN>X2pZZ46}Fe4=3z#S5R;u2mh2{M9WKD;w@mJbN>1YHHTm+-&s@ zHOo>WRZa=AJ=>NJN%48FYf12<=!>DH^+T@99n`5uJW85UiDyd%%vDI>F^u-;H0lB04b{Mqm|t^KPl6D~e~J zKg|$lGW8k0?k~8z;D_$p`$n}uJ&A+Ij(a+ogUfK+;TUOo@5$mfughkVt1RcB#Gg{S zst@H?(zx;u)F2dn-^!`3b<*XL+gI9BL?QcT6_*~SrVaME)AR1jfjewj+9wP-V{_xm zXryjTdGQl6wNnb&ZwZeC2!i-$^;vLz?lOGmq&66&9{_@1hpG27&$r{!OI@X@ZZYvc z6DsMi?77b0w*@m488oGpXgaYMySTg9d|JeSt~t|R)XQS{@Dgs`JaUPv~d zME1A6l5x)Q9fhCeHFE4|Zn&IGOT}=-IC89+iL*wQPbXtZAhwewIA4zl=jd+V53U4T zX8X-bDwxaEY#^+=C}~pa9?yXti9RowWAlAs&t@U&wUI4138Wpaar!prgqirA$AA8; zw3!NI6Vq=A7cg1YbDbE->c13-4gVu&hGe+!fV57Xw|F8 VV@Gm{wTuKa_6VUReg zx8KEYMhc#aa|dxAB(Z!vZKed|@LwcAXDWdc*ZJv4Na_n=aTj_MCw$b+*hfN`1mom+ zN#z<{rP7j}Q*cf6N;@6d>yKnmTCma2?Vy-?bM`8@B zbI^Sh>p>Ac08HvHG$peOphA03XpkA;++s(6sTYBX*vT#*#~A(IO~_q{KW@n(U8`y? z^<%X0b%D#zXi|?R{{rAt+nDuJ(N>^XqT)Y4?b#Jkz0iedO`Ps<`!pxzm)#a(;vQrC z0vu+5cBY7nX<@rs$V3Yx6C)GqMa?|~&q5LoVX@fXesmiM_N$FMG}jQ60uOT#>{1Nr z8nU9U=OY>`21=bqtU8S_k^=g^)%pzo89H)@n$1PGe8DwB28Q8)o{C-O@!u%v!%Ls4 zcSZf^aZc@|Go2-R(%TxP9~!Wcy@%zwKc5Qu^;6Mq%k0ff++zS@GY7Ghhh@H8uWk+` zj>ciKnJpXA3~EnPJ_lN@!cq#@=|(;bC^;tod@g zQu`%e#Y;R^EEJ=q{}9~wjU_Wo8J*QeZWbrg!DZrX=%YgUjE=%VZM`+2S%a&>{ZBlH zHSY3sQMzq?;7EkXJ+FTkJAD2UZl(fq1qFufeMKsrC0MwU4$@eAJs^sRR6VfSn*&PC{@nEPvoyvAW5|7n{SVb_Yc75!f3K=*l&Kw9De9H_J7axYaw%8{ z?e9UQ=B~uoDAmOh*0}Szk13lYexHYb&s}6qlo7lWc)Pu$Mb66|Kve1JZpj>p$6A*V z7vYE@TipqXj@ZT!;o*Y`&IZiiHIC;bh?~=$BgX-@m>U_HL;zdA?hFnQ6|EbCCJGKXaTC_%~3ALGxPsm6` z0rBD*-1UN2-{#gqTJT=!P1^m`!u*dpFh$Rj+MjyUri`EpdtX=F40-QCQ`vUQN|yqP zb-mF6gA}z>PkCpF%FHKB*fkK`Zyy8?w7Y* z#%Glh6QaB>?IiFqq8Bq?k!IudjfK<0?8qYd0kf=%m)opG5Ov@u8HMP;QIAqX(@)YC ziXWm&MiP?{aykB^9T|^*<9Cm?*wy*!&Avl|?Y^}(E5-4<_GfJ%hnV92cEykC3Z1IZ z^3;7axMDb^w~}+l%_XSRfdN%u<;;*xq(o+7?DlkP>)Dr8g??RABa=}dDU^{C@k&2K zNVUoN3$o3@TtC<9O0Bm-4}gxJ351n7sQ69l^V{-@xJ$L;pY6tul&Z0PM9+V&uYM^l z4{xP=JKk%Ml^3Vb*M;wLcH{Z&#B0PZ*siuYID2CI579)s*sV5Y4(-xDnCnS_4Q?X) z9OK@6EqkhID`6TeO*+|=yiW+yV|FhrP_itszp+Vyb{-P4q<5wiRcBuo;&#_3v{^B% z+?P0_DgnHez0@}OGX>-7s_ld^w`lGs<8ZoTJ4IA1HN=-sz@mjolc~6*bM0{$lH*BR zS7Hr1l%Q>*(KgArydaVx303Wp^$kc#^bQbsZ?IHxuF|*AJDba;h8N@lDKQ?lD>qT{ zfH3uON787|(w_2C1mZUHYkF;Rgum%wA8{CxMTzg9$z}zJc|qUne9mBPqeL{@=sjom zXh=WVNie?(_9!~ISfDi2Av+xjhawN82aMzOjI6ztb&KnMXI$r)PBmDP8`IHyXh+-K zlWy-S98}KIo^+Ai63z;>TI}^D-F1$)icBZeRewKo`@SIjO2YN%%*kFbT%T4Y!+4TB zes`3?)&W4gD0WsA201g8G9Aowg|!~=$7xTOto*v9)fu?>0(BF}T708u0S)`pLh_nYTwjC~@c56=2!`%}U^xdtk}Ah-U#wAil8L(qxGW+XpLCyt1&oO|626`(3%O9-uR`mxGgIB)dTvRaOcKb z=dA2HEy~r6x&W)pbM>AgL7XjXl>b1j)Z@rYueZ5UyQL$feASs-qg7G1_lXXcve;H) zBtc8q%d;}7g_Gq$PjPVZ{0M*O~hHe-Tn zOoe|SCpQmaCqX}{EJJLROWLvW0e1q+S9YT94zq8`Z(6jqwdJ%EEH~ zhBgsV@PpPSVF&ibdRD&S0i#QMqIxCH^65Y`3t;r+;Z=6JUFiUItfpA()=tEaILF1- zu4FQJOJ*j#V%5stdZ3Q*04e5|=?wKCN3TseCvnllRq83!S_HzG{l?#hcXA Sw-5$1fpto}+6Y=7e*6m~917I{ literal 0 HcmV?d00001 diff --git a/Lab3/images/sourdough.jpg b/Lab3/images/sourdough.jpg new file mode 100755 index 0000000000000000000000000000000000000000..e6f256daab30bf351fa7ebe04d7bbb5be2dcea0b GIT binary patch literal 4032 zcmYk82Qb`Uw8wwD%d+~ewR&3?(GpQt^sphTm#86n7orCth>}DXQ6gGMkm$V&QKIeY zHAs-CK}6JeGVjfQ-sjGpxijZ`zUR!Gxp(fx^u-cDcN?dH13(}Upnkc4i#gyX0E0rI zWKb9x8H^fsxoIh3FiKiD4Gk>~4ID{JcL^;Lj$}YFAmJ=5Y-}tn7+zjpjKF{VGXYV+ zU^Fx|OmH|8GZKMh=H$496V3S#G%q*TCEUC`yl6C#<4_l1D#0ud<0760vy^M)m zHUS1fAYf7w$p2Lbf#DF6OKW94v==?{x^)t1Uga*2ey8}wEI@TBx(vesMWER3p<7Fe zV*$k^kSawl00NWPvOE?RGLdyLB#jgXOsH?W=kLhO`pZp|>~-;xz2F+^5_ehpsk5`G z>T`cb|FK2cvQ>xszFx6n)jd+hahSx>b`?#W1?gK^4whI@V$aSAIzIr`1% zHAfX8tLIzZjyZffZzFYWYO#xH0!O+DlvIijUIBArWOuaDXngmc!{%2 zlt4svf~4hopzXFLIRZM|h~Hz`>8cEnb>X}RO*=CPp8s?N=ba7n3DB;+a*p2>`gnRR zM=eTk!3@chte|((gSLwyGaN@X-x#WvAQf9?dnEB~!V1A4ViI>tIFFVU4e5I-4Bfy#T0|E2)N^y;#?z&yvh6@D&O+ZqFOkpxXT8_B{U7_jfXuqsx&TKI6%>RE=lU)F7>!N*+E)KSPPA#teipQjWD-RsCEr79l%nzZ~a^ zYL~GZW`1;vRK?Wu^9iaogE4u8;@Z@;QSHB{ao^%+&%37j-98l?Ebq=_@v*m*J;Cuu zYiNjP@bfJA>z!{^ZyeNb+|~2Qk$-5VOm9CZ4foWI)C2f7%lpM>68)68(^;eiF&>Zk zOb%Ug;^5u9Eb1Pee{&*5C)o^3I|sb$o0}zSe8!B1QvGemVs;|7YMt*K-Mta}afN80 ze^axQ&AnoFA>?7{C_d6~Wx6xa_VJh%-R6&UJuh*)q%Ds!#~6$z*F51yfnMu~p*p`D zHfuAV8v1$Nc{q%gCYm7licFthbK7_KmkO6Hj$F_*>5%J(XhxwZlSqCFydy^^(7Msq zmn$G^4MlaL)zX_+j><1aZ0;iq}GmV=`fNjDF@E2%}*`~v^3I%=x-ri`*{HfxI; zR%4S;W?95)=iVh0J6O+Xhu7oZkKCflCQz;^mDovIykHqo0!r`9T6wE|bMms_Jbx8@EB(iAj@54Y} z6<+(U>squ)yE$V-v+Vq~C|AVCA-R3#$8&nKv|lC)xpo4iANk{yb~ zkIVLxUmK*C^B1IUzaTf6c`y`7vq3_mZxl(S+`I)8TdKEOaMf zQ+%T>!gywvFCHxwzx~I3%9ZvC+d2zn7Ufanj0HE)W6s~TyT z^fXRO&UJE%@a zw)=`;d1q2#&%#(iG`?ozgLa=-a4vQ(jNo4OBP=!$GvoTDdi1gyXj`@kWaNz`$lzQYxZuL$=^XXWG|B`q=bu-7MGanB(v5L zuWmrUSVV8Gv5UL)9LE_Ey7jI|Z%OLh!t3(9?fSN~wCitMQICwzHp4b&1_s=Pa8NBe z@qM%LHZe^KF(69`eb92)7F4ZB8BtyoryO!DL~b%L9F>114dGHlbVqzMRgJinaizW_ zl|JaPA>*tc*v8ZO12dkdv;GBIgiFbb0cabChg_D9qzGD z_FX+co5-?q2-C)THO%iHimi6bJo`cZL!5he@ppt5nem+?D<=243Jf&1Vbi4~kXi@# zca;YAfD|JiV!mauRuhuLxLk#|T%J9xAm~I{*FB5vO%F|Cob1!duHjgfY&)Y|-yRSx z&air3ufUTj%NhPSa^{P{jhs{S9V4QLx6YL8sbnESGqMUrWbts^2adl zzt%EbegQZKWxuylIiweva1`bhMuH-~E!>~A40;+xjE&uj8fAU-X~N6%kJ_UH51#1_ zRIB36oYI8S`Ie-t*RIN`Bt{76YG^R~Sxc&tjrbCiq-s<^SFvEi@xhLm;-X0T&QmR) z(1TYB?_T-bEqFVcg|b(*b(rX;Z2y(Ozw)6D6Y{ana{SCwAHOzZIWknJuY}m7UR$|OODW79$G1KRX-5mXi6;Ym|OG=?J z+&zDKTu*!(i+oazl~Zi_-cwWYg-dJg#t_ zBK$DaPS4DLMsKQXg-Sc=~Gx5C;tjXsIlQmJMfU4ia825xJ zS}7M&rK)tTpCXc$U5ARJP-~n;?7Xm>TFaQ6V?}ZQMj7V@_7DEP{aLn%sI2iy;f+N!I^_K{8Dh+{7lNX6|eh$sgZcnC^29+I}iK&0z;MTv&ld|MrY0k~V zn`p^;`GS{E8{5sANqcIkRKyjtN;pqYB84!HUvwjcGw`HTQbxk53{~9LxxT+`(vp6$ zZ!d5Jzra?xJ+n{GYa~9;#4q$3%gmQ!vF6pKNa~`sAEeo;KzvNt@ifurSwA?eS6PYs zW-^g7e)!I=;E~-r{~CSgn7}xWSi>)Vf5I6DC6A`nk#t0}JIfoCG7!2w?TF!F6Lvx)@PKUHf#UMXHB6M*ZhEC0k!pHwEaoV_17i(}rSp zJ?~j1K(KQ)?lsjy%zr2yvc^GtwdK?*jtvra(hoAVqYcf zSRo?vj#O1_6>ahu)Vm6oZVD}!FnKzSTOBK@_Dp4d!&jlZ!nHV%k4{j_xQ=v=qz?2} zC36vE*3n+iZf!2uH*)ODL-qDj4-U$&saSq1trZ&S-|;)mmd!H`sMWZM;AzOJcteg- z4IA3Yqnfs@HgRM4w6dr<-xLY6`I+w)-k%y_W3a5_KA>=WBGDY-qhH-K`kF{hX6J?b zgng4blN%!sUAS$HGuh5o^a&PjUn@vf)pINPBowFmB;weOKvSCVex!BE?tWK-%V|uYuzhZq zH^k%J8{CLSQA`B{qXOn#P(cn7oIcohFO=%qsis5Cb8%kV%!XXddC#l5dF)gk=#E(~ z*C}X>Pve8pZN)n$a`D4GTX(-6e_&dh$q|(tujW#`1*i}*GIEJZ!)ikZ7;_ul739`P zv3In}H@p4_r@`b*hY)q@L&NU_0zHJIy(08U#+#q=Q$jC=t6qv^jw5~mGAm6*J#teB cLx63#^0yA4&Iuou&Fza%HsnSsgqSq+F z=)FeoM1S+!-Sh4_``7M1_uRkkbMEd3buEy?uN!Z-YZZ-@OkDkBy5@NK8sjNzKm5&HJ2RP*_y? zwW_+NwywURwXMCQv#YzOcX(tJH#R;oIkmX7yt2Bs{(EEd;PB}9A zqJELwrT~h!ueBj^V;Zp;Y00(&P28o4;>bm4N1u%c4 zZCC5pSt|RuKBM1)f_e3M(=vx1260w#jth|@lJlN}ycNy?0@Gji*Mf<}pQyFrlAu?= zPb<`_e2&$283?WgA4w&*PK3giE16Dh>|Zz@mIjkhs!|1nDCFS>hf5s;eM(lPxN?j> z>`yqqG*ed3T?rVMFo%!ThUZ-04Y)i-j%CN9>iFJVl2o#(8-1t)7trSKMJ2p`*u@#X zBf^Vtff5`f_d8ms^VKy=kntHa9b4)8q0fmi^wfvGsrJpV6&&QX-)+~-> z8&pS0>7pgQM$<$l}9D@wu+PP6g+yfwJzOC z@0>EGh9~F`Q^1Za*nQukdrZMAv<;OB%8cYxyh;|wc}Zqp-$ASUqR+QiZh|VjHc->Y zvWe_ec}Qk`CSN=%9oY;`Rzi5k!q8!zLn)Px>#p1%7& zSxY$wI^Ngb!uB|x-(E_#vB2+IIg#Q$XuM*JEhaVU1mvHTcg(gt(HjjOn zU4iz@^ms>CWDxefj_cH>@h+!F^k={E+ECe;C z$CBd|=z^=8pvL*EmJ!sD{d5<=RHncuT0cr76mG{Ez6%b$FzIPhx2I(u@vyT4G>zkz z&6;iLo~};uKiP#(Ku_}qNO(kPbjQ1Pm|kVQVfmz(k#Q1B966B;DW{2 zih5SKj96z7x7PeBHpOj0md-XxTNsV9q zDAm^i(#AzR;P_taldMg5N;xMd%6QC%qcMBY5ELg|g(SYLqz>|T-!T>*V;A6aL{$jv zdR(s+zjz%t-6P&yOM>R#n+{(zS{v3tMAnFVy##fR4T@xPX}+&F5Rth;29A1eXi$U~ zQ7X%_V@?=OBu+C0@N0NjvN-U!uC^rF&2;JAC8wN~zAt-fB!WjN&I_Y`ZUI)IAJVdS zz`d!nq}bJDckD5ppn3&tMnqx=C2*v?Wcb+C`M674%Xy_i+-s; znQgXsU56l4&PMoHb?#Za+EbX;Ue`&fp4?+x$>K--krT#J;oV6?ms~G-JGPwt4veIe zfSET`T=HAlx9BV>#*7i2R1;hK=@4**ys2FN#>Z_QoD_Ymv9aTmGgPy8@r6&d^!!9I zvk=;C$8uc=jdkT6|E6|7!eGetQ)PTbxROxtP84otO1_vSWIbZHH=$x=jEF*+(^o01 zM5h$>G@E*6s`02XfgrQ1Oz@XW6WH}ap?sRjx|&bq#%RI5emYuZIOY{kK6jx|tFMhk zCjUG~W;1@YlQ!hJO9vZokyFVTwsoSTZZ%4J`M03_rnq{;0tdQz0N0{qeNe8~w2!N4 zT(%Y2X{kzEzONkK2m>&*^qg*4@J5zaDae`ss2W*HWpv4-O1_$%{`Sa^(&^E?v1LPZ zhOzJ9#>&P-O*`?DcWaTMD(u=@E;pRroF=h!a4SWlmU770%aD?TE+o?@E0nMBiIlBi zibI&Cfin0qyKc)U*6%lZlG$2=-bUhfpcT)OMR76JP zYZ6Zo48taK3n0l0fK>MICLI;dFhp-zxym*b>2)|qy6vxo$NaRmn2BxWN84cPmla1< z3N0d@$IjWfeX`FP;2t#U3TUn0>M=7fWcg_xtD+KvJuP^nRoZtRsG4ETV6&Gx5Pa9_ zqJG{`_W3}n5*6c#5R786PR1q*Gp^@?HiWuzqG{Md{3x}Lc4&;!y)<`T=0@pA%c;fj z&a%D-r|#q&?(k|@bc%VCt+4B|Yd8FHHGf30bpR6xaL~CSwl=CA-sM4tAr5zWxEoc) za?#x-euG3k>f6`6~Z6jkJh z3s-cvOYbuCVC+m3?u~EXs}`1yIyQYOgo z4bI=z^{W*eHP%4KR?XNS`{%;OA%qLx7q|5s^F~ciTLpv9jHue&6n9@&ZH2wR%RA$7 z#M;J!E=fG%s*4Ox1HO5KAQf0GQnQ^0QT zt5xz}{;Kxk+Ff)-93_iW5W_FOSEJ+*1rpmNKp~GtpoYy!?#GuiGp6yB&^Y_%1*%?D z0ZisNU%g;c+Fdhz_kFMO!%&9Peov;_(1{t)R1X(QDPQWH2ht1A)ix5lpL1N63XRgc zhaH(Is0Q!fR4^gOhBkBTgW)@M7}KxToBRrmR3Q0&-AQa<(y`(afQrTQR#hC#?Li=Bjjipv9oWrfVRFt zeM^p)NSi)2%>-_iaWV$=;*wnVL&ow^p=w}@#b|vtPI@p`aWoank9hqt+y;>}GJ#`` z0NcpKgrxx!IP9YP&c_l9KX*r|wD4v@fwzE*lOR{uZNK#0?CbQuzf|~Y zoQ^TpgLglp>!4h*jIqVqYnC;pAa`fHqCEdc3@82j5qj%}{?1`J1FugXyDhJxg)0)V z%L0`8rHAIAfmJPmwxzV%w>N=E0MNfwp^Uq-H%z|CS5_R zSh;qRhS+*5E!G3`kDD!&gNk~e~EK0L59&C#dx@=L>seFz|tnXiP@Fh0T@=aU8`W0*ErZBs|VA1Vu1 zyy=);Y;HwnC3`d%`(&(aS616?HlQ(uAoMiP8C`{*;cJtoQSkPXZILVHLVCvqgA+B<|O_QUN=sy8HxEJ9I<1p=2bPKOXbOtQ?0H3*KQ*Y zM>jVWHXNqUsMen4O|Q+t)db;x-pHX89kkgy@U3qMB`<+Hmz} zFy>O!Yl;MVD~H!Q%IJfU7)ysTaK=6L7Nx$q1{*!Tnv@P1E2s63bJN@?Er_1%Hp7!P zJeh5YejAC2IL-#IbLEzarb{-NwFU(k?&qpE3w4lInV@0VT?fLTPMCW}b+D-aqdy8H zrtFg~T55e{D_m~?C;iHfmC>H>53h>EYw6M@=d1uSk9|r$PUH0BS>h&4{beaIBzay0 zF1G+DbBH7={nJsCo5x1@Gn{iP5bWE|Mr`$V%i^Q_n7S^xG6%fFh=9X1<-w6b}{z36jw{T0~ z1MTyLx&_Qq)==EMwe^wNjiZ`7{P6e|0FL>w-zbK9Fa37t?26o`CwqRfW(9rWS*zEZ&06%{J)yT9p^T(jq z$_7bwhKeWXr16R-oy+D&kfxJkDKiD>UR5h%TIhK~C`4oN=|x!xcW>u_Nt8D}awRY` zUpvzwUdA_R{$)Scx9qfX$7>9uSy0M%FAz7&IC04n-_<#F5~6dBhpC%U=}Uq{JsEs? z%9@U0Kk{rX&8vr#;)88E=K@MS3Q#%^%V_l2{G~s-mG#;|2TP4p`?)qzbJf4*V0X2| zP_!OT_V9K802Uie^R;vQQjCLj6CYF3(O|=6@M^DV!(WNzuqheOoR%61J z0oJ|)v*{^QdU;|Ai0aJky)j*~=z&rq70$kfY%|{ks5rU)@NiqLch~tY=#hfc^c3vOol}Sk z7y=6HfQL`XMQm`#@xSwvEaOop99^M2iZ;D$$ zx<-Cs@=QtDp@3ac#WMF;gc%GDtbfA*!0+Ix9*TiW&Q-#uAB)Z5u_s@Ug!_D$Xq8SA zqz+~5IVldqQ_NOjWjKPR=XYHmtm*XeZ9)eZ)#HZjln~ZCVy#jpUifZM=rs2F`PVQZ z`$TqW8;NHHqG^avgH9R!Q+q~y@jsBMrM8er2IByx~%+&{lLOqyZavd+P zosH00WtWh5D3lp(gk8Zq;&&hA8ZzBuGbYITJC)r47;C_?VcbI z0Jf~mLMqz5=5Ah}N*98TBHF%F%wP|?*BWRM->}zJmtP~JTjB8G75(fGj5{$c$E8L{hWffl*stn(hC$kC + + + DinnerPlanner + + + + + + + + + + + + + + + + +
+
+
+
+

Dinner Planner

+

+ Normally, both your asses would be dead as fucking fried chicken, but you happen to pull this shit while I'm in a transitional period so I don't wanna kill you, I wanna help you. But I can't give you this case, it don't belong to me. Besides, I've already been through too much shit this morning over this case to hand it over to your dumb ass. +

+
+ + +
+
+
+
+ + + + +
+ + +
+ + + + +
+ +
+

Find a dish

+ + +
+ + + + + +
+
+ + + +
+ +
+ + +
+ + +
+
+
+ +
+ +
+ + +
+ +
+ +

+
+ + + + + + + +
+
+ +
+
+

Preparation

+

+
+
+
+ + +
+ +
+ + +
+ + +
+
+ + +
+
+ +
    +

    Total:

    +
+ +
    +

    +
+ +
+
+
+
+ +
+
+
+ + +
+
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Lab3/js/app.js b/Lab3/js/app.js new file mode 100755 index 000000000..c09f71a75 --- /dev/null +++ b/Lab3/js/app.js @@ -0,0 +1,101 @@ +$(function() { + + //We instantiate our model + var model = new DinnerModel(); + + // And create the instance of our views + + // 1. homeView + var homeView = new HomeView($("#homeView"), model); + + // headerView + var headerView = new HeaderView($("#header"), model); + // 2.sideView + var sideView = new SideView($("#sideView"), model); + + // 3.searchView (inkl maträtterna nedanför) + var searchView = new SearchView($("#searchView"), model); + + // 4. oneDishView (inkl div med recept som uppdateras) + var oneDishView = new OneDishView($("#oneDishView"), model); + + // 5. fullMenuView -overviewView + var overviewView = new OverviewView($("#overview"), model); + + + // 6. printView + var printView = new PrintView($("#printView"), model); + + + // Controllers + var searchViewController = new SearchViewController(searchView, model, this); + + var sideViewController = new SideViewController(sideView, model, this); + + var oneDishViewController = new OneDishViewController(oneDishView, model, this); + + var overviewViewController = new OverviewViewController(overviewView, model, this); + + var printViewController = new PrintViewController(printView, model, this); + + +/*General State Controller*/ + var startDinner = function() { + homeView.startButton.click(function() { + homeView.container.hide(); + sideView.container.show(); + searchView.container.show() + headerView.container.show(); + }); + } + + this.oneDish = function(){ + sideView.container.show(); + searchView.container.hide(); + headerView.container.show(); + oneDishView.loadView(); + oneDishView.container.show(); + + } + this.overview = function(){ + searchView.container.hide(); + oneDishView.container.hide(); + searchView.container.hide(); + sideView.container.hide(); + overviewView.container.show(); + + } + this.printRecipe = function(){ + overviewView.container.hide(); + printView.container.show(); + + } + + this.backToSearch = function() { + oneDishView.container.hide(); + overviewView.container.hide(); + printView.container.hide(); + sideView.container.show(); + searchView.container.show(); + } + + // Gömmer allt utom start + $("#header").hide(); + $("#sideView").hide(); + $("#searchView").hide(); + $("#oneDishView").hide(); + $("#overview").hide(); + $("#printView").hide(); + + startDinner(); + + + + /** + * IMPORTANT: app.js is the only place where you are allowed to + * use the $('someSelector') to search for elements in the whole HTML. + * In other places you should limit the search only to the children + * of the specific view you're working with (see exampleView.js). + */ + +}); \ No newline at end of file diff --git a/Lab3/js/controller/oneDishViewController.js b/Lab3/js/controller/oneDishViewController.js new file mode 100755 index 000000000..83aa818a9 --- /dev/null +++ b/Lab3/js/controller/oneDishViewController.js @@ -0,0 +1,17 @@ +var OneDishViewController = function(view, model, sControl) { + var view = view; + var model = model; + var backButton = view.container.find("#backButton"); + var add = view.container.find("#add"); //kallas på i controller + var sControl = sControl; + + add.click(function() { + model.addDishToMenu(view.dish.id); + }); + + backButton.click(function() { + sControl.backToSearch(); + }); + + +} \ No newline at end of file diff --git a/Lab3/js/controller/overviewViewController.js b/Lab3/js/controller/overviewViewController.js new file mode 100755 index 000000000..f2b64c063 --- /dev/null +++ b/Lab3/js/controller/overviewViewController.js @@ -0,0 +1,17 @@ +var OverviewViewController = function(view, model, sControl) { + this.view = view; + this.model = model; + + var backButton = view.container.find("#back"); + var printButton = view.container.find("#print"); + + backButton.click(function() { + sControl.backToSearch(); + }); + + printButton.click(function(){ + sControl.printRecipe(); + }); + + +} \ No newline at end of file diff --git a/Lab3/js/controller/printViewController.js b/Lab3/js/controller/printViewController.js new file mode 100755 index 000000000..3b11b3c48 --- /dev/null +++ b/Lab3/js/controller/printViewController.js @@ -0,0 +1,9 @@ +var PrintViewController = function(view, model, sControl) { + this.view = view; + this.model = model; + var backButton = view.container.find("#Back"); + + backButton.click(function() { + sControl.backToSearch(); + }); +} \ No newline at end of file diff --git a/Lab3/js/controller/searchViewController.js b/Lab3/js/controller/searchViewController.js new file mode 100755 index 000000000..1b21c4092 --- /dev/null +++ b/Lab3/js/controller/searchViewController.js @@ -0,0 +1,19 @@ + +var SearchViewController = function(view, model, sControl) { + var view = view; + var sControl = sControl; + var dishesView = new Array(); + //var textInput = view.container.find("#keywords"); //document.getElementById("keywords"); // + var dishesView = view.container.find(".thumbnail"); + + + view.searchButton.click(function() { + view.loadView(); + }); + + view.picBox.on("click", ".thumbnail", function(){ + model.selectDishRecipe(this.id); + //textInput.value = ""; // nollställer keywordsfönstret när man tryckt sök. + sControl.oneDish(); + }); +} \ No newline at end of file diff --git a/Lab3/js/controller/sideViewController.js b/Lab3/js/controller/sideViewController.js new file mode 100755 index 000000000..fe7fd794c --- /dev/null +++ b/Lab3/js/controller/sideViewController.js @@ -0,0 +1,22 @@ +var SideViewController = function(view, model, sControl) { + this.view = view; + this.model = model; + + var plusButton = view.container.find("#plusGuest"); // used by controller + var minusButton = view.container.find("#minusGuest"); + var confirmButton = view.container.find("#confirm"); + + + plusButton.click(function(){ + model.setNumberOfGuests(model.getNumberOfGuests() + 1); + }); + + minusButton.click(function(){ + model.setNumberOfGuests(model.getNumberOfGuests() - 1); + }); + + confirmButton.click(function(){ + sControl.overview(); + }); + +} \ No newline at end of file diff --git a/Lab3/js/controller/stateController.js b/Lab3/js/controller/stateController.js new file mode 100755 index 000000000..ed38b77f9 --- /dev/null +++ b/Lab3/js/controller/stateController.js @@ -0,0 +1,84 @@ +var StateController = function(view1, view2, view3, view4, view5, view6, view7) { + + var homeView = view1; + var sideView = view2; + var searchView = view3; + var headerView = view4; + var oneDishView = view5; + var overviewView = view6; + var printView = view7; + + var startDinner = function() { + homeView.startButton.click(function() { + homeView.container.hide(); + sideView.container.show(); + searchView.container.show() + headerView.container.show(); + + //kunde inte flytta den till searchviewController, då gick det inte att anropa funktionen. + //ändra till bilderna som knappar istället för test! + searchView.testButton.click(function() { + oneDish(); + }); + + + }); + } + var oneDish = function(){ + sideView.container.show(); + searchView.container.hide(); + headerView.container.show(); + oneDishView.container.show(); + + oneDishView.backButton.click(function() { + oneDishView.container.hide(); + searchView.container.show(); + }); + //måste fungera i både oneDish och SearchView + + } + var overview = function(){ + searchView.container.hide(); + oneDishView.container.hide(); + searchView.container.hide(); + sideView.container.hide(); + overviewView.container.show(); + + overviewView.backButton.click(function() { + overviewView.container.hide(); + searchView.container.show(); + sideView.container.show(); + + }); + overviewView.printButton.click(function(){ + printRecipe(); + + }); + } + var printRecipe = function(){ + overviewView.container.hide(); + printView.container.show(); + + printView.BackButton.click(function() { + printView.container.hide(); + sideView.container.show(); + searchView.container.show(); + + }); + + + + } + sideView.confirmButton.click(function(){ + overview(); + }); + + + + + + + startDinner(); + searchView.updateView(); + +} \ No newline at end of file diff --git a/Lab3/js/model/dinnerModel.js b/Lab3/js/model/dinnerModel.js new file mode 100755 index 000000000..93dab56e9 --- /dev/null +++ b/Lab3/js/model/dinnerModel.js @@ -0,0 +1,418 @@ +//DinnerModel Object constructor +var DinnerModel = function() { + + //TODO Lab 1 implement the data structure that will hold number of guest + // and selected dishes for the dinner menu + + var numberOfGuests = 2; // ej this. för då blir det en property som man kan nå utifrån. istället var. + var menu = [1, 101, 201] + this.observers = new Array(); + var displayedDish = ""; + + this.addObserver = function(observer) { + this.observers.push(observer); + } + + this.notifyObservers = function(args) { + for(var i = 0; i < this.observers.length; i++) { + //this.observers[i].loadView(); + console.log("nu meddelar vi observer"); + //console.log(args); + console.log(args); + this.observers[i].updateView(args); + } + } + + this.setNumberOfGuests = function(num) { + if(num>0){ + numberOfGuests = num; + } + this.notifyObservers("guestsChanged"); + } + + this.getNumberOfGuests = function() { + return numberOfGuests; + } + + //Returns the dish that is on the menu for selected type + //borde kolla i dishes istället för att filtrera vilka rätter som visas i overview. + this.getSelectedDish = function(type) { + for (dish in menu){ + for(dishId in dishes){ + if(dishes.id === dish && dishes.type === type){ + return dishes[dishId].name; + } + } + } + } + + //Returnerar id på klickad rätt + this.selectDishRecipe = function (selectedID) { + displayedDish = selectedID; + console.log("nu går vi vidare till recept"); + console.log(displayedDish); + //notifyObservers(); + //meddela observers att de ska vidare till nästa. + this.notifyObservers("toRecipe"); + }; + + this.returnDishRecipe = function() { + return displayedDish; + } + + //Returns all the dishes on the menu. + this.getFullMenu = function() { + var fullMenu = []; + for (i in menu){ + fullMenu.push(this.getDish(menu[i])); + } + return fullMenu; + } + + //Returns all ingredients for all the dishes on the menu. + this.getAllIngredients = function() { + var allIngredients = []; + for (dish in menu) { + var ings = []; + ings.push(this.getDish(dish).ingredients) + for (i in ings) { + allIngredients.push(ings[i]); + } + } + return allIngredients; + } + + //Returns the total price of the menu (all the ingredients multiplied by number of guests). + this.getTotalMenuPrice = function() { + var ingredientsPrice = 0; + var groceries = this.getAllIngredients(); + + for (i in groceries){ + ingredientsPrice += groceries[i].price; + } + + var totalPrice = 0; + + totalPrice = numberOfGuests * ingredientsPrice; + + return totalPrice; + } + + //Adds the passed dish to the menu. If the dish of that type already exists on the menu + //it is removed from the menu and the new one added. + this.addDishToMenu = function(id) { + var newType = this.getDish(id).type; + + for (i in menu){ + var menuType = this.getDish(menu[i]).type; + if (newType === menuType){ + this.removeDishFromMenu(menu[i]); + } + } + + menu.push(id); + this.notifyObservers("newDishAdded"); + + + } + + //Removes dish from menu + this.removeDishFromMenu = function(id) { + var i = 0; + for (i in menu){ + + if (menu[i] === id){ + menu.splice(i,1) + } + i++; + } + //notifyObservers(); + + } + + //function that returns all dishes of specific type (i.e. "starter", "main dish" or "dessert") + //you can use the filter argument to filter out the dish by name or ingredient (use for search) + //if you don't pass any filter all the dishes will be returned + this.getAllDishes = function (type,filter) { + return dishes.filter(function(dish) { + var found = true; + if(filter){ + found = false; + dish.ingredients.forEach(function(ingredient) { + if(ingredient.name.indexOf(filter)!=-1) { + found = true; + } + }); + if(dish.name.indexOf(filter) != -1) + { + found = true; + } + } + return dish.type == type || type =="all" && found; + //för att få alla dishes. + }); + this.notifyObservers("newTypeSelected"); + } + + //function that returns a dish of specific ID + this.getDish = function (id) { + for( var i = 0; i < dishes.length; i++) { + if (dishes[i].id == id) { + return dishes[i]; + } + } + } + + + // the dishes variable contains an array of all the + // dishes in the database. each dish has id, name, type, + // image (name of the image file), description and + // array of ingredients. Each ingredient has name, + // quantity (a number), price (a number) and unit (string + // defining the unit i.e. "g", "slices", "ml". Unit + // can sometimes be empty like in the example of eggs where + // you just say "5 eggs" and not "5 pieces of eggs" or anything else. + var dishes = [{ + 'id':1, + 'name':'French toast', + 'type':'starter', + 'image':'toast.jpg', + 'description':"In a large mixing bowl, beat the eggs. Add the milk, brown sugar and nutmeg; stir well to combine. Soak bread slices in the egg mixture until saturated. Heat a lightly oiled griddle or frying pan over medium high heat. Brown slices on both sides, sprinkle with cinnamon and serve hot.", + 'ingredients':[{ + 'name':'eggs', + 'quantity':0.5, + 'unit':'', + 'price':10 + },{ + 'name':'milk', + 'quantity':30, + 'unit':'ml', + 'price':6 + },{ + 'name':'brown sugar', + 'quantity':7, + 'unit':'g', + 'price':1 + },{ + 'name':'ground nutmeg', + 'quantity':0.5, + 'unit':'g', + 'price':12 + },{ + 'name':'white bread', + 'quantity':2, + 'unit':'slices', + 'price':2 + }] + },{ + 'id':2, + 'name':'Sourdough Starter', + 'type':'starter', + 'image':'sourdough.jpg', + 'description':"Here is how you make it... Lore ipsum...", + 'ingredients':[{ + 'name':'active dry yeast', + 'quantity':0.5, + 'unit':'g', + 'price':4 + },{ + 'name':'warm water', + 'quantity':30, + 'unit':'ml', + 'price':0 + },{ + 'name':'all-purpose flour', + 'quantity':15, + 'unit':'g', + 'price':2 + }] + },{ + 'id':3, + 'name':'Baked Brie with Peaches', + 'type':'starter', + 'image':'bakedbrie.jpg', + 'description':"Here is how you make it... Lore ipsum...", + 'ingredients':[{ + 'name':'round Brie cheese', + 'quantity':10, + 'unit':'g', + 'price':8 + },{ + 'name':'raspberry preserves', + 'quantity':15, + 'unit':'g', + 'price':10 + },{ + 'name':'peaches', + 'quantity':1, + 'unit':'', + 'price':4 + }] + },{ + 'id':100, + 'name':'Meat balls', + 'type':'main dish', + 'image':'meatballs.jpg', + 'description':"Preheat an oven to 400 degrees F (200 degrees C). Place the beef into a mixing bowl, and season with salt, onion, garlic salt, Italian seasoning, oregano, red pepper flakes, hot pepper sauce, and Worcestershire sauce; mix well. Add the milk, Parmesan cheese, and bread crumbs. Mix until evenly blended, then form into 1 1/2-inch meatballs, and place onto a baking sheet. Bake in the preheated oven until no longer pink in the center, 20 to 25 minutes.", + 'ingredients':[{ + 'name':'extra lean ground beef', + 'quantity':115, + 'unit':'g', + 'price':20 + },{ + 'name':'sea salt', + 'quantity':0.7, + 'unit':'g', + 'price':3 + },{ + 'name':'small onion, diced', + 'quantity':0.25, + 'unit':'', + 'price':2 + },{ + 'name':'garlic salt', + 'quantity':0.7, + 'unit':'g', + 'price':2 + },{ + 'name':'Italian seasoning', + 'quantity':0.6, + 'unit':'g', + 'price':3 + },{ + 'name':'dried oregano', + 'quantity':0.3, + 'unit':'g', + 'price':3 + },{ + 'name':'crushed red pepper flakes', + 'quantity':0.6, + 'unit':'g', + 'price':3 + },{ + 'name':'Worcestershire sauce', + 'quantity':6, + 'unit':'ml', + 'price':7 + },{ + 'name':'milk', + 'quantity':20, + 'unit':'ml', + 'price':4 + },{ + 'name':'grated Parmesan cheese', + 'quantity':5, + 'unit':'g', + 'price':8 + },{ + 'name':'seasoned bread crumbs', + 'quantity':15, + 'unit':'g', + 'price':4 + }] + },{ + 'id':101, + 'name':'MD 2', + 'type':'main dish', + 'image':'bakedbrie.jpg', + 'description':"Here is how you make it... Lore ipsum...", + 'ingredients':[{ + 'name':'ingredient 1', + 'quantity':1, + 'unit':'pieces', + 'price':8 + },{ + 'name':'ingredient 2', + 'quantity':15, + 'unit':'g', + 'price':7 + },{ + 'name':'ingredient 3', + 'quantity':10, + 'unit':'ml', + 'price':4 + }] + },{ + 'id':102, + 'name':'MD 3', + 'type':'main dish', + 'image':'meatballs.jpg', + 'description':"Here is how you make it... Lore ipsum...", + 'ingredients':[{ + 'name':'ingredient 1', + 'quantity':2, + 'unit':'pieces', + 'price':8 + },{ + 'name':'ingredient 2', + 'quantity':10, + 'unit':'g', + 'price':7 + },{ + 'name':'ingredient 3', + 'quantity':5, + 'unit':'ml', + 'price':4 + }] + },{ + 'id':103, + 'name':'MD 4', + 'type':'main dish', + 'image':'meatballs.jpg', + 'description':"Here is how you make it... Lore ipsum...", + 'ingredients':[{ + 'name':'ingredient 1', + 'quantity':1, + 'unit':'pieces', + 'price':4 + },{ + 'name':'ingredient 2', + 'quantity':12, + 'unit':'g', + 'price':7 + },{ + 'name':'ingredient 3', + 'quantity':6, + 'unit':'ml', + 'price':4 + }] + },{ + 'id':200, + 'name':'Chocolat Ice cream', + 'type':'dessert', + 'image':'icecream.jpg', + 'description':"Here is how you make it... Lore ipsum...", + 'ingredients':[{ + 'name':'ice cream', + 'quantity':100, + 'unit':'ml', + 'price':6 + }] + },{ + 'id':201, + 'name':'Vanilla Ice cream', + 'type':'dessert', + 'image':'icecream.jpg', + 'description':"Here is how you make it... Lore ipsum...", + 'ingredients':[{ + 'name':'ice cream', + 'quantity':100, + 'unit':'ml', + 'price':6 + }] + },{ + 'id':202, + 'name':'Strawberry', + 'type':'dessert', + 'image':'icecream.jpg', + 'description':"Here is how you make it... Lore ipsum...", + 'ingredients':[{ + 'name':'ice cream', + 'quantity':100, + 'unit':'ml', + 'price':6 + }] + } + ]; + +} diff --git a/Lab3/js/view/headerView.js b/Lab3/js/view/headerView.js new file mode 100755 index 000000000..500fe083f --- /dev/null +++ b/Lab3/js/view/headerView.js @@ -0,0 +1,10 @@ +var HeaderView = function (container, model) { + this.container = container; + + this.updateView = function() { + console.log("testar ny funktion - header"); + } +} + + + diff --git a/Lab3/js/view/homeView.js b/Lab3/js/view/homeView.js new file mode 100755 index 000000000..6f551e4d0 --- /dev/null +++ b/Lab3/js/view/homeView.js @@ -0,0 +1,11 @@ + + +var HomeView = function (container, model) { + this.startButton = container.find("#startButton"); + this.container= container; + + this.updateView = function() { + console.log("testar ny funktion - home"); + } +} + \ No newline at end of file diff --git a/Lab3/js/view/oneDishView.js b/Lab3/js/view/oneDishView.js new file mode 100755 index 000000000..0826fa9a6 --- /dev/null +++ b/Lab3/js/view/oneDishView.js @@ -0,0 +1,63 @@ + +/*main view for view3 "dish overview" +gets the pictures and name of the dishes for view2 and 4 */ +var OneDishView = function (container, model) { + this.container = container; + this.model = model; + + + + var headlineDish = container.find("#headlineDish"); + var picDish = container.find("#imgDish"); + var description = container.find("#description"); + var tableString = container.find("#table"); + var sumString = container.find("#td1"); + var rubrik = container.find("#ingrFor"); + + this.loadView = function() { + + var dishId = model.returnDishRecipe(); + + + this.dish = model.getDish(dishId); + + nrOfGuests = model.getNumberOfGuests(); + + headlineDish.html(this.dish.name); + picDish.html(''); + + description.html(this.dish.description); + + Rubrik = 'Ingredients for ' + nrOfGuests + ' people'; + rubrik.html(Rubrik); + + var string = ''; + + var sum = 0; + + for(i in this.dish.ingredients){ + Price = this.dish.ingredients[i].price*nrOfGuests; + string += ''; + sum += Price; + } + summa= ''; + + tableString.html(string); + sumString.html(summa); + + } + + + + + + // load/update view. + //this.loadView(); + //attach as listener + model.addObserver(this); + this.updateView = function(args) { + this.loadView(); + } + +} + \ No newline at end of file diff --git a/Lab3/js/view/overviewView.js b/Lab3/js/view/overviewView.js new file mode 100755 index 000000000..3448c05f2 --- /dev/null +++ b/Lab3/js/view/overviewView.js @@ -0,0 +1,46 @@ +var OverviewView = function (container, model) { + + this.container = container; + this.model = model; + + var header = container.find("#overviewHeader"); + var pictures = container.find("#pictures"); + var total = container.find("#totSum"); + + + //load view + this.loadView = function() { + var nr= model.getNumberOfGuests(); + var string = '

My dinner: '+ nr +' people

'; + var menu = model.getFullMenu(); + header.html(string); + + sum =0; + HTMLPic= ""; + for(i in menu){ + var dishPrice = 0; + for(n in menu[i].ingredients){ + dishPrice += menu[i].ingredients[n].price*nr; + } + HTMLPic += '

'+ dishPrice +' SEK

'; + + sum += dishPrice; + } + pictures.html(HTMLPic); + total.html(sum); + + + } + + + // load/update view. + this.loadView(); + //attach as listener + model.addObserver(this); + + this.updateView = function() { + this.loadView(); + } + +} + diff --git a/Lab3/js/view/printView.js b/Lab3/js/view/printView.js new file mode 100755 index 000000000..231070c9c --- /dev/null +++ b/Lab3/js/view/printView.js @@ -0,0 +1,46 @@ +var PrintView = function (container, model) { + this.container = container; + this.model = model; + + + + + var print = container.find("#printDish") + var header = container.find("#printHeader") + + + + //load view + this.loadView = function() { + + var nr = model.getNumberOfGuests(); + string = '

My dinner: '+ nr +' people

'; + header.html(string); + + var string = ''; + menu = model.getFullMenu() + + + for(i in menu){ + string += '
'+ + '

' + menu[i].name + + '

Preparation

' + menu[i].description + + '

'; + ; + + } + print.html(string); + + } + + + + // load/update view. + this.loadView(); + //attach as listener + model.addObserver(this); + + this.updateView = function() { + console.log("testar ny funktion - print"); + } +} \ No newline at end of file diff --git a/Lab3/js/view/searchView.js b/Lab3/js/view/searchView.js new file mode 100755 index 000000000..0458da17d --- /dev/null +++ b/Lab3/js/view/searchView.js @@ -0,0 +1,39 @@ +var SearchView = function (container, model) { + this.container = container; + this.searchButton = container.find("#searchButton"); // knappen ska bara göra loadView(), i den funktionen finns resten av isntruktionerna + + this.picBox = container.find("#template"); //this, app adds eventlistener + + //load view + this.loadView = function() { + + //var type = hämta type + var type = container.find("#selectOption option:selected").val(); + + //var keywords = Hämta filter + var filter = document.getElementById("keywords").value; + + var menu = model.getAllDishes(type, filter); // stoppain filter och type i funktionen. + var string = ''; + + + //lägg in rätterna + for(i in menu){ + string += '
'; + } + this.picBox.html(string); + + + } + + + + // load/update view. + this.loadView(); + //attach as listener + model.addObserver(this); + + this.updateView = function(args) { + this.loadView(); + } +} \ No newline at end of file diff --git a/Lab3/js/view/sideView.js b/Lab3/js/view/sideView.js new file mode 100755 index 000000000..64e2418f8 --- /dev/null +++ b/Lab3/js/view/sideView.js @@ -0,0 +1,57 @@ +var SideView = function (container, model) { + + this.container = container; + this.model = model; + + + var numberOfGuests = container.find("#numberOfGuests"); + var table = container.find("#dinnerTable"); + var summa = container.find("#sum"); + var Summa = container.find("#summa"); + + + + + //load view + this.loadView = function() { + nrOfGuests = model.getNumberOfGuests(); + numberOfGuests.html(nrOfGuests); + + var menu = model.getFullMenu(); // stoppain filter och type i funktionen. + var string = ''; + var sum = 0; + + + //lägg in rätterna från vald menu och räknar ut priset av varje rätt samt totalt + for(i in menu){ + var dishPrice = 0; + for(n in menu[i].ingredients){ + dishPrice += menu[i].ingredients[n].price*nrOfGuests; + } + sum += dishPrice; + + string += ''; + } + + + table.html(string); + summa.html(sum); + Summa.html(sum); + + } + + + + // load/update view. + this.loadView(); + + + //attach as listener + model.addObserver(this); + this.updateView = function(args) { + this.loadView(); + } + + +} + diff --git a/Lab3/style2D.css b/Lab3/style2D.css new file mode 100755 index 000000000..4287fea49 --- /dev/null +++ b/Lab3/style2D.css @@ -0,0 +1,113 @@ +form{ + margin-bottom: 10px; +} + +img{ + width: 100%; +} + +html,body,.container { + height:100%; +} +.home { + background: url("https://fthmb.tqn.com/uZwLBI5jpv1YjOTwGGmFuSyUhg4=/1920x1280/filters:fill(auto,1)/dish-918613_1920-5812723a3df78c2c73a334d9.jpg"); + background-size: cover; + background-position: center; + font-family: 'Lato', sans-serif; + color: #2c3e50; +} + +table { + width: 100%; + +} +.Sum { + text-align: right; +} + +#sum{ + text-align: left; +} +.sidebar { + /*background-color: lightgreen; + /*height: 800px;*/ + /* margin-left: 0;*/ +} + +.caption { + text-align: center; +} + +.jumbotron { + text-align: center; + padding-top: 0px; +} +.page-header { + text-align: center; + margin-top: 0px; +} + +.row { + height: 100%; + display: table-row; +} + +.row .no-float { + display: table-cell; + float: none; +} + +/* Sidebar modules for boxing content */ +.sidebar-module { + padding: 15px; + margin: 0 -15px 15px; +} +.sidebar-module-inset { + padding: 15px; + background-color: #f5f5f5; + border-radius: 4px; +} +.sidebar-module-inset p:last-child, +.sidebar-module-inset ul:last-child, +.sidebar-module-inset ol:last-child { + margin-bottom: 0; +} + + +#imgDish{ + width: 90%; +} +.knapp{ + margin-top: 20px +} +.pull-right{ + text-align: right; +} + +.content { + text-align: center; + padding-top: 25%; + text-shadow: 0px 4px 3px rgba(0,0,0,0.4) + 0px 8px 13px rgba(0,0,0,0.1), + 0px 18px 23px rgba(0,0,0,0.1); +} + +hr { + border: 0; + width: 400px; + height: 1px; + background-image: linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.75), rgba(255, 255, 255, 0)); +} +#collapseSide.collapsing { + margin-top: 10px; + margin-bottom: 10px +} +.margin{ + margin-right: 20px; + margin-top: 10px; + margin-left: 20px; +} + +.margin1{ + margin-bottom: 0px; +} From 9fc1a98c101f37439a82720483decd963a8d138e Mon Sep 17 00:00:00 2001 From: sofiaJagerstrom Date: Mon, 19 Feb 2018 14:54:26 +0100 Subject: [PATCH 46/64] ... MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sista sidan funkade inte.. har start menyns rätter --- Lab2/js/model/dinnerModel.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Lab2/js/model/dinnerModel.js b/Lab2/js/model/dinnerModel.js index 0d7edbc6c..fa554cbfe 100644 --- a/Lab2/js/model/dinnerModel.js +++ b/Lab2/js/model/dinnerModel.js @@ -148,7 +148,8 @@ var DinnerModel = function() { found = true; } } - return dish.type == type && found; + return dish.type == type || type =="all" && found; + //för att få alla dishes. }); this.notifyObservers("newTypeSelected"); } From b041b92389962c32fbae638cdde388ae1165cd77 Mon Sep 17 00:00:00 2001 From: sofiaJagerstrom Date: Sun, 25 Feb 2018 13:42:51 +0100 Subject: [PATCH 47/64] Revert "..." This reverts commit 9fc1a98c101f37439a82720483decd963a8d138e. --- Lab2/js/model/dinnerModel.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Lab2/js/model/dinnerModel.js b/Lab2/js/model/dinnerModel.js index fa554cbfe..0d7edbc6c 100644 --- a/Lab2/js/model/dinnerModel.js +++ b/Lab2/js/model/dinnerModel.js @@ -148,8 +148,7 @@ var DinnerModel = function() { found = true; } } - return dish.type == type || type =="all" && found; - //för att få alla dishes. + return dish.type == type && found; }); this.notifyObservers("newTypeSelected"); } From b93daf4cf740b1bcac082ab1d391bd62aa50196c Mon Sep 17 00:00:00 2001 From: lindelindblad Date: Tue, 27 Feb 2018 09:25:41 +0100 Subject: [PATCH 48/64] =?UTF-8?q?ny=20mapp=20f=C3=B6r=20lab=203=20(inkl=20?= =?UTF-8?q?susta=20uppd.=20flr=20lab2)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Lab3/README.md | 26 +- Lab3/ej aktuell/lab 1/home.html | 62 +- Lab3/ej aktuell/lab 1/homeViewController.js | 12 +- Lab3/ej aktuell/lab 1/index.html | 74 +- Lab3/ej aktuell/lab 1/start.css | 64 +- Lab3/ej aktuell/lab 1/style.css | 56 +- Lab3/ej aktuell/lab 1/style2B.css | 142 ++-- Lab3/ej aktuell/lab 1/view-2B.html | 290 +++---- Lab3/ej aktuell/lab 1/view2-oaus.html | 70 +- Lab3/ej aktuell/lab 1/view2.html | 190 ++--- Lab3/ej aktuell/lab 1/view4.html | 288 +++---- Lab3/ej aktuell/lab 1/view4B.html | 264 +++--- Lab3/ej aktuell/lab 1/view5B.html | 150 ++-- Lab3/ej aktuell/lab 2/exampleView.js | 110 +-- Lab3/ej aktuell/lab 2/landingPage.html | 86 +- Lab3/ej aktuell/lab 2/mainPic.js | 50 +- Lab3/ej aktuell/lab 2/mainView5.js | 56 +- Lab3/ej aktuell/lab 2/view2.html | 220 ++--- Lab3/ej aktuell/lab 2/view3.html | 214 ++--- Lab3/ej aktuell/lab 2/view4.html | 226 ++--- Lab3/ej aktuell/lab 2/view5.html | 150 ++-- Lab3/ej aktuell/lab 2/view6.html | 216 ++--- Lab3/index.html | 536 ++++++------ Lab3/js/app.js | 198 +++-- Lab3/js/controller/oneDishViewController.js | 32 +- Lab3/js/controller/overviewViewController.js | 32 +- Lab3/js/controller/printViewController.js | 16 +- Lab3/js/controller/searchViewController.js | 39 +- Lab3/js/controller/sideViewController.js | 42 +- Lab3/js/controller/stateController.js | 166 ++-- Lab3/js/model/dinnerModel.js | 835 +++++++++---------- Lab3/js/view/headerView.js | 20 +- Lab3/js/view/homeView.js | 20 +- Lab3/js/view/oneDishView.js | 124 +-- Lab3/js/view/overviewView.js | 92 +- Lab3/js/view/printView.js | 90 +- Lab3/js/view/searchView.js | 77 +- Lab3/js/view/sideView.js | 114 +-- Lab3/sem2-diskussion.txt | 3 + Lab3/style2D.css | 226 ++--- 40 files changed, 2841 insertions(+), 2837 deletions(-) mode change 100755 => 100644 Lab3/README.md mode change 100755 => 100644 Lab3/ej aktuell/lab 1/home.html mode change 100755 => 100644 Lab3/ej aktuell/lab 1/homeViewController.js mode change 100755 => 100644 Lab3/ej aktuell/lab 1/index.html mode change 100755 => 100644 Lab3/ej aktuell/lab 1/start.css mode change 100755 => 100644 Lab3/ej aktuell/lab 1/style.css mode change 100755 => 100644 Lab3/ej aktuell/lab 1/style2B.css mode change 100755 => 100644 Lab3/ej aktuell/lab 1/view-2B.html mode change 100755 => 100644 Lab3/ej aktuell/lab 1/view2-oaus.html mode change 100755 => 100644 Lab3/ej aktuell/lab 1/view2.html mode change 100755 => 100644 Lab3/ej aktuell/lab 1/view4.html mode change 100755 => 100644 Lab3/ej aktuell/lab 1/view4B.html mode change 100755 => 100644 Lab3/ej aktuell/lab 1/view5B.html mode change 100755 => 100644 Lab3/ej aktuell/lab 2/exampleView.js mode change 100755 => 100644 Lab3/ej aktuell/lab 2/landingPage.html mode change 100755 => 100644 Lab3/ej aktuell/lab 2/mainPic.js mode change 100755 => 100644 Lab3/ej aktuell/lab 2/mainView5.js mode change 100755 => 100644 Lab3/ej aktuell/lab 2/view2.html mode change 100755 => 100644 Lab3/ej aktuell/lab 2/view3.html mode change 100755 => 100644 Lab3/ej aktuell/lab 2/view4.html mode change 100755 => 100644 Lab3/ej aktuell/lab 2/view5.html mode change 100755 => 100644 Lab3/ej aktuell/lab 2/view6.html mode change 100755 => 100644 Lab3/index.html mode change 100755 => 100644 Lab3/js/app.js mode change 100755 => 100644 Lab3/js/controller/oneDishViewController.js mode change 100755 => 100644 Lab3/js/controller/overviewViewController.js mode change 100755 => 100644 Lab3/js/controller/printViewController.js mode change 100755 => 100644 Lab3/js/controller/searchViewController.js mode change 100755 => 100644 Lab3/js/controller/sideViewController.js mode change 100755 => 100644 Lab3/js/controller/stateController.js mode change 100755 => 100644 Lab3/js/model/dinnerModel.js mode change 100755 => 100644 Lab3/js/view/headerView.js mode change 100755 => 100644 Lab3/js/view/homeView.js mode change 100755 => 100644 Lab3/js/view/oneDishView.js mode change 100755 => 100644 Lab3/js/view/overviewView.js mode change 100755 => 100644 Lab3/js/view/printView.js mode change 100755 => 100644 Lab3/js/view/searchView.js mode change 100755 => 100644 Lab3/js/view/sideView.js create mode 100644 Lab3/sem2-diskussion.txt mode change 100755 => 100644 Lab3/style2D.css diff --git a/Lab3/README.md b/Lab3/README.md old mode 100755 new mode 100644 index e8687b16f..1b91e7dac --- a/Lab3/README.md +++ b/Lab3/README.md @@ -1,14 +1,14 @@ -Interaction Programing - Lab assignment - HTML -================================================= - -This project contains the startup code for HTML version of the Interaction Programing course lab assignment. For more details on how to complete the assignment follow the instructions on the [course website](https://www.kth.se/social/course/DH2642). - -What's in the project ------ - -* [index.html](https://github.com/kth-csc-iprog/dinnerplanner-html/blob/master/index.html) - the only HTML page you will have in this project (though while testing you can create more to make it easier). You will need to implement the skeleton of the layout there and then through code (JavaScript) create the rest -* [js/model/dinnerModel.js](https://github.com/kth-csc-iprog/dinnerplanner-html/blob/master/js/model/dinnerModel.js) - is JavaScript file that contains the model code. The file contains the model (dish, ingredient and general dinner model) as well as methods and comments that you need to fully implement to support the dinner functionalities (guests, selected dishes, etc.) -* [js/view/](https://github.com/kth-csc-iprog/dinnerplanner-html/tree/master/js/view) - here you can find a JavaScript code of an example view. The view sets up some initial components and their values. -* [js/app.js](https://github.com/kth-csc-iprog/dinnerplanner-html/blob/master/js/app.js) - this is the overall code of the application. It is responsible for initial setup of the app (when the page loads for the first time). -* [images/](https://github.com/kth-csc-iprog/dinnerplanner-html/tree/master/images) - folder contains some pictures you can use for your dishes +Interaction Programing - Lab assignment - HTML +================================================= + +This project contains the startup code for HTML version of the Interaction Programing course lab assignment. For more details on how to complete the assignment follow the instructions on the [course website](https://www.kth.se/social/course/DH2642). + +What's in the project +----- + +* [index.html](https://github.com/kth-csc-iprog/dinnerplanner-html/blob/master/index.html) - the only HTML page you will have in this project (though while testing you can create more to make it easier). You will need to implement the skeleton of the layout there and then through code (JavaScript) create the rest +* [js/model/dinnerModel.js](https://github.com/kth-csc-iprog/dinnerplanner-html/blob/master/js/model/dinnerModel.js) - is JavaScript file that contains the model code. The file contains the model (dish, ingredient and general dinner model) as well as methods and comments that you need to fully implement to support the dinner functionalities (guests, selected dishes, etc.) +* [js/view/](https://github.com/kth-csc-iprog/dinnerplanner-html/tree/master/js/view) - here you can find a JavaScript code of an example view. The view sets up some initial components and their values. +* [js/app.js](https://github.com/kth-csc-iprog/dinnerplanner-html/blob/master/js/app.js) - this is the overall code of the application. It is responsible for initial setup of the app (when the page loads for the first time). +* [images/](https://github.com/kth-csc-iprog/dinnerplanner-html/tree/master/images) - folder contains some pictures you can use for your dishes hej \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 1/home.html b/Lab3/ej aktuell/lab 1/home.html old mode 100755 new mode 100644 index 07b1c748b..4b09a1dcc --- a/Lab3/ej aktuell/lab 1/home.html +++ b/Lab3/ej aktuell/lab 1/home.html @@ -1,32 +1,32 @@ - - - - - - - - Dinner planner - - - - - - - - - -

Dinner Planner

- -
- -

- The path of the righteous man is beset on all sides by the iniquities of the selfish and the tyranny of evil men. Blessed is he who, in the name of charity and good will, shepherds the weak through the valley of darkness, for he is truly his brother's keeper and the finder of lost children. And I will strike down upon thee with great vengeance and furious anger those who would attempt to poison and destroy My brothers. And you will know My name is the Lord when I lay My vengeance upon thee. -

- -
- -
-
- - + + + + + + + + Dinner planner + + + + + + + + + +

Dinner Planner

+ +
+ +

+ The path of the righteous man is beset on all sides by the iniquities of the selfish and the tyranny of evil men. Blessed is he who, in the name of charity and good will, shepherds the weak through the valley of darkness, for he is truly his brother's keeper and the finder of lost children. And I will strike down upon thee with great vengeance and furious anger those who would attempt to poison and destroy My brothers. And you will know My name is the Lord when I lay My vengeance upon thee. +

+ +
+ +
+
+ + \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 1/homeViewController.js b/Lab3/ej aktuell/lab 1/homeViewController.js old mode 100755 new mode 100644 index 276759ec1..cde9ff2e0 --- a/Lab3/ej aktuell/lab 1/homeViewController.js +++ b/Lab3/ej aktuell/lab 1/homeViewController.js @@ -1,7 +1,7 @@ -var HomeViewController = function(view, model) { - - view.startButton.click(function() { - console.log("funkar det"); - showSelectDish(); - }); +var HomeViewController = function(view, model) { + + view.startButton.click(function() { + console.log("funkar det"); + showSelectDish(); + }); } \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 1/index.html b/Lab3/ej aktuell/lab 1/index.html old mode 100755 new mode 100644 index a6f065e18..134df8389 --- a/Lab3/ej aktuell/lab 1/index.html +++ b/Lab3/ej aktuell/lab 1/index.html @@ -1,38 +1,38 @@ - - - - - - - Dinner planner - - - - - - -
-

Dinner planner

-
-
- Number of guests: -
-
- - -
-
-
- - - - - - - - - - - - + + + + + + + Dinner planner + + + + + + +
+

Dinner planner

+
+
+ Number of guests: +
+
+ + +
+
+
+ + + + + + + + + + + + \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 1/start.css b/Lab3/ej aktuell/lab 1/start.css old mode 100755 new mode 100644 index a486f97aa..994d1f45f --- a/Lab3/ej aktuell/lab 1/start.css +++ b/Lab3/ej aktuell/lab 1/start.css @@ -1,33 +1,33 @@ -body { - background: url("https://fthmb.tqn.com/uZwLBI5jpv1YjOTwGGmFuSyUhg4=/1920x1280/filters:fill(auto,1)/dish-918613_1920-5812723a3df78c2c73a334d9.jpg"); - background-size: cover; - background-position: center; - font-family: 'Lato', sans-serif; - color: #2c3e50; - - -} - -html { - height: 100%; -} - -h1, h3 { - font-weight: 700; -} - -.content { - text-align: center; - padding-top: 25%; - text-shadow: 0px 4px 3px rgba(0,0,0,0.4) - 0px 8px 13px rgba(0,0,0,0.1), - 0px 18px 23px rgba(0,0,0,0.1); -} - - -hr { - border: 0; - width: 400px; - height: 1px; - background-image: linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.75), rgba(255, 255, 255, 0)); +body { + background: url("https://fthmb.tqn.com/uZwLBI5jpv1YjOTwGGmFuSyUhg4=/1920x1280/filters:fill(auto,1)/dish-918613_1920-5812723a3df78c2c73a334d9.jpg"); + background-size: cover; + background-position: center; + font-family: 'Lato', sans-serif; + color: #2c3e50; + + +} + +html { + height: 100%; +} + +h1, h3 { + font-weight: 700; +} + +.content { + text-align: center; + padding-top: 25%; + text-shadow: 0px 4px 3px rgba(0,0,0,0.4) + 0px 8px 13px rgba(0,0,0,0.1), + 0px 18px 23px rgba(0,0,0,0.1); +} + + +hr { + border: 0; + width: 400px; + height: 1px; + background-image: linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.75), rgba(255, 255, 255, 0)); } \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 1/style.css b/Lab3/ej aktuell/lab 1/style.css old mode 100755 new mode 100644 index 41423ca9b..0de523aa4 --- a/Lab3/ej aktuell/lab 1/style.css +++ b/Lab3/ej aktuell/lab 1/style.css @@ -1,28 +1,28 @@ -.startPage { - width: 80%; - max-width: 700px -} - -.row { - border: 1px solid black; -} - -.col { - border: 1px solid black; -} - -.viprovar { - border: 1px solid black; - height: 50px; - -} - -.hojd { - height: 500px; -} - -img { - width: 200px; - float: left; - margin: 1.66%; -} +.startPage { + width: 80%; + max-width: 700px +} + +.row { + border: 1px solid black; +} + +.col { + border: 1px solid black; +} + +.viprovar { + border: 1px solid black; + height: 50px; + +} + +.hojd { + height: 500px; +} + +img { + width: 200px; + float: left; + margin: 1.66%; +} diff --git a/Lab3/ej aktuell/lab 1/style2B.css b/Lab3/ej aktuell/lab 1/style2B.css old mode 100755 new mode 100644 index 1dbe7737a..c092ab73b --- a/Lab3/ej aktuell/lab 1/style2B.css +++ b/Lab3/ej aktuell/lab 1/style2B.css @@ -1,71 +1,71 @@ -form{ - margin-bottom: 10px; -} -input#numberOfGuests{ - width: 40px; -} - -img{ - width: 100%; -} - -html,body,.container { - height:100%; -} - -table { - width: 100%; - border: 1px solid black; -} - -.sidebar { - background-color: lightgreen; - height: 800px; - /* margin-left: 0;*/ -} - -.nav-sidebar { - margin-right: -21px; /* 20px padding + 1px border */ - margin-bottom: 20px; - margin-left: -20px; -} -.nav-sidebar > li > a { - padding-right: 20px; - padding-left: 20px; -} - -.caption { - text-align: center; -} - -.jumbotron { - text-align: center; -} - -.row { - height: 100%; - display: table-row; -} - -.row .no-float { - display: table-cell; - float: none; -} - -/* Sidebar modules for boxing content */ -.sidebar-module { - padding: 15px; - margin: 0 -15px 15px; -} -.sidebar-module-inset { - padding: 15px; - background-color: #f5f5f5; - border-radius: 4px; -} -.sidebar-module-inset p:last-child, -.sidebar-module-inset ul:last-child, -.sidebar-module-inset ol:last-child { - margin-bottom: 0; -} - - +form{ + margin-bottom: 10px; +} +input#numberOfGuests{ + width: 40px; +} + +img{ + width: 100%; +} + +html,body,.container { + height:100%; +} + +table { + width: 100%; + border: 1px solid black; +} + +.sidebar { + background-color: lightgreen; + height: 800px; + /* margin-left: 0;*/ +} + +.nav-sidebar { + margin-right: -21px; /* 20px padding + 1px border */ + margin-bottom: 20px; + margin-left: -20px; +} +.nav-sidebar > li > a { + padding-right: 20px; + padding-left: 20px; +} + +.caption { + text-align: center; +} + +.jumbotron { + text-align: center; +} + +.row { + height: 100%; + display: table-row; +} + +.row .no-float { + display: table-cell; + float: none; +} + +/* Sidebar modules for boxing content */ +.sidebar-module { + padding: 15px; + margin: 0 -15px 15px; +} +.sidebar-module-inset { + padding: 15px; + background-color: #f5f5f5; + border-radius: 4px; +} +.sidebar-module-inset p:last-child, +.sidebar-module-inset ul:last-child, +.sidebar-module-inset ol:last-child { + margin-bottom: 0; +} + + diff --git a/Lab3/ej aktuell/lab 1/view-2B.html b/Lab3/ej aktuell/lab 1/view-2B.html old mode 100755 new mode 100644 index 628aae43e..1a7e71712 --- a/Lab3/ej aktuell/lab 1/view-2B.html +++ b/Lab3/ej aktuell/lab 1/view-2B.html @@ -1,146 +1,146 @@ - - - - View2 update 2 - - - - - - - - - -
-
-
-

Dinner Planner

-
-
- -
-
mängdsakSEKpris
' + this.dish.ingredients[i].quantity + ' ' + this.dish.ingredients[i].unit + '' + this.dish.ingredients[i].name + 'SEK' + Price + '
SEK ' + sum + '
' + menu[i].name + '' + dishPrice + '
- - - - -
Dish NameCost
-
- -
- -
-
-

Add another dish

- -
- - - - -
-
-
- - - - - - - - - - - + + + + View2 update 2 + + + + + + + + + +
+
+
+

Dinner Planner

+
+
+ +
+ + +
+
+

Add another dish

+ +
+ + + + +
+
+
+ + + + + + + + + + + \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 1/view2-oaus.html b/Lab3/ej aktuell/lab 1/view2-oaus.html old mode 100755 new mode 100644 index e2a568b3e..d55d86001 --- a/Lab3/ej aktuell/lab 1/view2-oaus.html +++ b/Lab3/ej aktuell/lab 1/view2-oaus.html @@ -1,36 +1,36 @@ - - - - - - - - Dinner planner - - - - - - - - - -

Dinner Planner

- -
-
-
-
Hejsan
-
-
-
-
rad 1
-
rad 2
-
-
-
- -
- - + + + + + + + + Dinner planner + + + + + + + + + +

Dinner Planner

+ +
+
+
+
Hejsan
+
+
+
+
rad 1
+
rad 2
+
+
+
+ +
+ + \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 1/view2.html b/Lab3/ej aktuell/lab 1/view2.html old mode 100755 new mode 100644 index 7ba32d953..ca48564cc --- a/Lab3/ej aktuell/lab 1/view2.html +++ b/Lab3/ej aktuell/lab 1/view2.html @@ -1,96 +1,96 @@ - - - - - - - - Dinner planner - - - - - - - - - -

Dinner Planner

- - - -
-
-
-
- -

My Dinner

- -
-
- Number of guests: -
-
- - -
-
-
-
- -
-

Add another dish

- - -
- - - - -
- - - -
-
- -
- -
- -
- -
- -
- -
- -
- - -
-
- - - - -
- - - -
- - + + + + + + + + Dinner planner + + + + + + + + + +

Dinner Planner

+ + + +
+
+
+
+ +

My Dinner

+ +
+
+ Number of guests: +
+
+ + +
+
+
+
+ +
+

Add another dish

+ + +
+ + + + +
+ + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + +
+
+ + + + +
+ + + +
+ + \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 1/view4.html b/Lab3/ej aktuell/lab 1/view4.html old mode 100755 new mode 100644 index e4caf2751..0a01a215e --- a/Lab3/ej aktuell/lab 1/view4.html +++ b/Lab3/ej aktuell/lab 1/view4.html @@ -1,145 +1,145 @@ - - - - View 4 - - - - - - - - - -
-
- -

Dinner Planner

- -
- - - - -
- - -
- -
- -
-

Add another dish

- - -
- - - - -
-
-
- -
-
- -
-
- -
- - -
-
- - - - - - - - - - - - - - - - - - - - - - + + + + View 4 + + + + + + + + + +
+
+ +

Dinner Planner

+ +
+ + + + +
+ + +
+ +
+ +
+

Add another dish

+ + +
+ + + + +
+
+
+ +
+
+ +
+
+ +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 1/view4B.html b/Lab3/ej aktuell/lab 1/view4B.html old mode 100755 new mode 100644 index 1dab260cf..5498c3307 --- a/Lab3/ej aktuell/lab 1/view4B.html +++ b/Lab3/ej aktuell/lab 1/view4B.html @@ -1,132 +1,132 @@ - - - - View 4 - - - - - - - - - -
-
-
-

Dinner Planner

-
-
- -
- - - - -
-
- -
-

Add another dish

- - -
- - - - -
- -
-
- - -
-
- - - - - - - - - - - - -  + + + + View 4 + + + + + + + + + +
+
+
+

Dinner Planner

+
+
+ +
+ + + + +
+
+ +
+

Add another dish

+ + +
+ + + + +
+ +
+
+ + +
+
+ + + + + + + + + + + + +  diff --git a/Lab3/ej aktuell/lab 1/view5B.html b/Lab3/ej aktuell/lab 1/view5B.html old mode 100755 new mode 100644 index 89d81eaee..e60c1414c --- a/Lab3/ej aktuell/lab 1/view5B.html +++ b/Lab3/ej aktuell/lab 1/view5B.html @@ -1,76 +1,76 @@ - - - - View 5 - - - - - - - - - -
-
-
-

Dinner Planner

-
-
- -
-
-

My dinner: 3 people

-
-
- -
-
- - -
-
- - -
-
-
    -

    Total:

    -
- -
    -

    -
- - -
-
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - + + + + View 5 + + + + + + + + + +
+
+
+

Dinner Planner

+
+
+ +
+
+

My dinner: 3 people

+
+
+ +
+
+ + +
+
+ + +
+
+
    +

    Total:

    +
+ +
    +

    +
+ + +
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 2/exampleView.js b/Lab3/ej aktuell/lab 2/exampleView.js old mode 100755 new mode 100644 index 70a3a9c64..41f695db8 --- a/Lab3/ej aktuell/lab 2/exampleView.js +++ b/Lab3/ej aktuell/lab 2/exampleView.js @@ -1,55 +1,55 @@ -/** ExampleView Object constructor - * - * This object represents the code for one specific view (in this case the Example view). - * - * It is responsible for: - * - constructing the view (e.g. if you need to create some HTML elements procedurally) - * - populating the view with the data - * - updating the view when the data changes - * - * You should create a view Object like this for every view in your UI. - * - * @param {jQuery object} container - references the HTML parent element that contains the view. - * @param {Object} model - the reference to the Dinner Model - */ -var ExampleView = function (container, model) { - - /** - * We use the @method find() on @var {jQuery object} container to look for various elements - * inside the view in orther to use them later on. For instance: - * - * @var {jQuery object} numberOfGuests is a reference to the element that - * represents the placeholder for where we want to show the number of guests. It's - * a reference to HTML element (wrapped in jQuery object for added benefit of jQuery methods) - * and we can use it to modify , for example to populate it with dynamic data (for now - * only 'Hello world', but you should change this by end of Lab 1). - * - * We use variables when we want to make the reference private (only available within) the - * ExampleView. - * - * IMPORTANT: Never use $('someSelector') directly in the views. Always use container.find - * or some other way of searching only among the containers child elements. In this way you - * make your view code modular and ensure it dosn't break if by mistake somebody else - * in some other view gives the same ID to another element. - * - */ - var numberOfGuests = container.find("#numberOfGuests"); - console.log(model.getNumberOfGuests()); - numberOfGuests.html(model.getNumberOfGuests()); - - /** - * When we want references to some view elements to be available from outside of view, we - * define them as this.someName. We don't need this in Lab 1 yet, but in Lab 2 it - * will be important for assigning listeners to these buttons, because the listeners - * should not be assigned in the view, but rather in controller. - * - * We can then, in some other code, use exampleView.plusButton to reference the - * this button and do something with it (see Lab 2). - * - */ - this.plusButton = container.find("#plusGuest"); - this.minusButton = container.find("#minusGuest"); - - -} - +/** ExampleView Object constructor + * + * This object represents the code for one specific view (in this case the Example view). + * + * It is responsible for: + * - constructing the view (e.g. if you need to create some HTML elements procedurally) + * - populating the view with the data + * - updating the view when the data changes + * + * You should create a view Object like this for every view in your UI. + * + * @param {jQuery object} container - references the HTML parent element that contains the view. + * @param {Object} model - the reference to the Dinner Model + */ +var ExampleView = function (container, model) { + + /** + * We use the @method find() on @var {jQuery object} container to look for various elements + * inside the view in orther to use them later on. For instance: + * + * @var {jQuery object} numberOfGuests is a reference to the element that + * represents the placeholder for where we want to show the number of guests. It's + * a reference to HTML element (wrapped in jQuery object for added benefit of jQuery methods) + * and we can use it to modify , for example to populate it with dynamic data (for now + * only 'Hello world', but you should change this by end of Lab 1). + * + * We use variables when we want to make the reference private (only available within) the + * ExampleView. + * + * IMPORTANT: Never use $('someSelector') directly in the views. Always use container.find + * or some other way of searching only among the containers child elements. In this way you + * make your view code modular and ensure it dosn't break if by mistake somebody else + * in some other view gives the same ID to another element. + * + */ + var numberOfGuests = container.find("#numberOfGuests"); + console.log(model.getNumberOfGuests()); + numberOfGuests.html(model.getNumberOfGuests()); + + /** + * When we want references to some view elements to be available from outside of view, we + * define them as this.someName. We don't need this in Lab 1 yet, but in Lab 2 it + * will be important for assigning listeners to these buttons, because the listeners + * should not be assigned in the view, but rather in controller. + * + * We can then, in some other code, use exampleView.plusButton to reference the + * this button and do something with it (see Lab 2). + * + */ + this.plusButton = container.find("#plusGuest"); + this.minusButton = container.find("#minusGuest"); + + +} + diff --git a/Lab3/ej aktuell/lab 2/landingPage.html b/Lab3/ej aktuell/lab 2/landingPage.html old mode 100755 new mode 100644 index e3c2b682a..ba6d3d3a3 --- a/Lab3/ej aktuell/lab 2/landingPage.html +++ b/Lab3/ej aktuell/lab 2/landingPage.html @@ -1,44 +1,44 @@ - - - - Dinner Planner - - - - - - - - - - - - - - - -
-
-
-
-

Dinner Planner

-

- Normally, both your asses would be dead as fucking fried chicken, but you happen to pull this shit while I'm in a transitional period so I don't wanna kill you, I wanna help you. But I can't give you this case, it don't belong to me. Besides, I've already been through too much shit this morning over this case to hand it over to your dumb ass. -

-
- - -
-
-
-
- - - - - - - - + + + + Dinner Planner + + + + + + + + + + + + + + + +
+
+
+
+

Dinner Planner

+

+ Normally, both your asses would be dead as fucking fried chicken, but you happen to pull this shit while I'm in a transitional period so I don't wanna kill you, I wanna help you. But I can't give you this case, it don't belong to me. Besides, I've already been through too much shit this morning over this case to hand it over to your dumb ass. +

+
+ + +
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 2/mainPic.js b/Lab3/ej aktuell/lab 2/mainPic.js old mode 100755 new mode 100644 index 4bc378d19..b2ec3d02a --- a/Lab3/ej aktuell/lab 2/mainPic.js +++ b/Lab3/ej aktuell/lab 2/mainPic.js @@ -1,26 +1,26 @@ - -/*main pictures -gets the pictures and name of the dishes for view2 and 4 */ -var MainPic = function (container, model) { - this.container = container; - /*var menu =[1,2,101,102]; - Ska ändras i labb 2, ska kopplas till det sökta. */ - /*var menu = model.getFullMenu();*/ - - - //var selected = container.find("#selectOption"); - //var type = selected.options[selected.selectedIndex].text; - var menu = model.getAllDishes("dessert"); - var string = ''; - var picBox = container.find("#template"); - - - for(i in menu){ - - string += ''; - } - - picBox.html(string); - -} + +/*main pictures +gets the pictures and name of the dishes for view2 and 4 */ +var MainPic = function (container, model) { + this.container = container; + /*var menu =[1,2,101,102]; + Ska ändras i labb 2, ska kopplas till det sökta. */ + /*var menu = model.getFullMenu();*/ + + + //var selected = container.find("#selectOption"); + //var type = selected.options[selected.selectedIndex].text; + var menu = model.getAllDishes("dessert"); + var string = ''; + var picBox = container.find("#template"); + + + for(i in menu){ + + string += ''; + } + + picBox.html(string); + +} \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 2/mainView5.js b/Lab3/ej aktuell/lab 2/mainView5.js old mode 100755 new mode 100644 index 9837129af..433782027 --- a/Lab3/ej aktuell/lab 2/mainView5.js +++ b/Lab3/ej aktuell/lab 2/mainView5.js @@ -1,29 +1,29 @@ - -/*main pictures -gets the pictures and name of the dishes for view2 and 4 */ -var MainView5 = function (container, model) { - /*var menu =[1,2,101,102] - Ska ändras i labb 2, ska kopplas till det sökta. */ - var menu = model.getFullMenu(); - var string = ''; - var Pictures = container.find("#pictures"); - var Summa = container.find("#summa"); - var sum = 0; - - for(i in menu){ - for(n in menu[i].ingredients){ - sum += menu[i].ingredients[n].price; - } - string += ''; - - } - - - - - Pictures.html(string); - - Summa.html(sum + ' SEK'); - -} + +/*main pictures +gets the pictures and name of the dishes for view2 and 4 */ +var MainView5 = function (container, model) { + /*var menu =[1,2,101,102] + Ska ändras i labb 2, ska kopplas till det sökta. */ + var menu = model.getFullMenu(); + var string = ''; + var Pictures = container.find("#pictures"); + var Summa = container.find("#summa"); + var sum = 0; + + for(i in menu){ + for(n in menu[i].ingredients){ + sum += menu[i].ingredients[n].price; + } + string += ''; + + } + + + + + Pictures.html(string); + + Summa.html(sum + ' SEK'); + +} \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 2/view2.html b/Lab3/ej aktuell/lab 2/view2.html old mode 100755 new mode 100644 index 536705377..52dca8864 --- a/Lab3/ej aktuell/lab 2/view2.html +++ b/Lab3/ej aktuell/lab 2/view2.html @@ -1,111 +1,111 @@ - - - - View2 update 2 - - - - - - - - - -
-
-
-

Dinner Planner

-
-
- - - -
- - - - -
-
- -
-

Find a dish

- - -
- - - - -
- -
-
- -
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - + + + + View2 update 2 + + + + + + + + + +
+
+
+

Dinner Planner

+
+
+ + + +
+ + + + +
+
+ +
+

Find a dish

+ + +
+ + + + +
+ +
+
+ +
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 2/view3.html b/Lab3/ej aktuell/lab 2/view3.html old mode 100755 new mode 100644 index 71d8e6a6e..27ff5c671 --- a/Lab3/ej aktuell/lab 2/view3.html +++ b/Lab3/ej aktuell/lab 2/view3.html @@ -1,108 +1,108 @@ - - - - View 3 - - - - - - - - - -
-
-
-

Dinner Planner

-
-
- -
- - - - -
-
-
-

-
- -
- - -
- -
- -

-
- -
-
- -
-
-

Preparation

-

-
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - + + + + View 3 + + + + + + + + + +
+
+
+

Dinner Planner

+
+
+ +
+ + + + +
+
+
+

+
+ +
+ + +
+ +
+ +

+
+ +
+
+ +
+
+

Preparation

+

+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 2/view4.html b/Lab3/ej aktuell/lab 2/view4.html old mode 100755 new mode 100644 index d7f4f3ff4..2e0c3f81e --- a/Lab3/ej aktuell/lab 2/view4.html +++ b/Lab3/ej aktuell/lab 2/view4.html @@ -1,114 +1,114 @@ - - - - View 4 - - - - - - - - -
- -
-
-

Dinner Planner

-
-
- - -
- - - - -
- -
- -
-

Add another dish

- - -
- - - - -
-
-
- -
-
- -
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - + + + + View 4 + + + + + + + + +
+ +
+
+

Dinner Planner

+
+
+ + +
+ + + + +
+ +
+ +
+

Add another dish

+ + +
+ + + + +
+
+
+ +
+
+ +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 2/view5.html b/Lab3/ej aktuell/lab 2/view5.html old mode 100755 new mode 100644 index 845c4080d..e25a0a927 --- a/Lab3/ej aktuell/lab 2/view5.html +++ b/Lab3/ej aktuell/lab 2/view5.html @@ -1,76 +1,76 @@ - - - - View 5 - - - - - - - - - -
-
-
-

Dinner Planner

-
-
- -
-
-

My dinner: 3 people

-
-
- -
-
- - -
-
- - -
-
-
    -

    Total:

    -
- -
    -

    -
- - -
-
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - + + + + View 5 + + + + + + + + + +
+
+
+

Dinner Planner

+
+
+ +
+
+

My dinner: 3 people

+
+
+ +
+
+ + +
+
+ + +
+
+
    +

    Total:

    +
+ +
    +

    +
+ + +
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 2/view6.html b/Lab3/ej aktuell/lab 2/view6.html old mode 100755 new mode 100644 index aa1736ff2..3cf213fff --- a/Lab3/ej aktuell/lab 2/view6.html +++ b/Lab3/ej aktuell/lab 2/view6.html @@ -1,109 +1,109 @@ - - - - View 6 - - - - - - - - - -
-
-
-

Dinner Planner

-
-
- -
-
-

My dinner: 3 people

-
-
- -
-
- - -
- - -
- - -
- -
- -

Freanch Toast

-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies.

-
- -
-

Preparation

-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies. Nulla in augue lacinia, condimentum tellus ac, semper purus. Suspendisse commodo elit at velit tincidunt, ac laoreet ligula tincidunt.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet.

- -
-
-
- -
- - -
- -
- -

Meatballs

-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies.

-
- -
-

Preparation

-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies. Nulla in augue lacinia, condimentum tellus ac, semper purus. Suspendisse commodo elit at velit tincidunt, ac laoreet ligula tincidunt.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet.

- -
-
-
- -
- - -
- -
- -

Ice Cream

-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies.

-
- -
-

Preparation

-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies. Nulla in augue lacinia, condimentum tellus ac, semper purus. Suspendisse commodo elit at velit tincidunt, ac laoreet ligula tincidunt.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet.

- -
-
-
- - - - - - - - - - - - - - - - - -
- + + + + View 6 + + + + + + + + + +
+
+
+

Dinner Planner

+
+
+ +
+
+

My dinner: 3 people

+
+
+ +
+
+ + +
+ + +
+ + +
+ +
+ +

Freanch Toast

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies.

+
+ +
+

Preparation

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies. Nulla in augue lacinia, condimentum tellus ac, semper purus. Suspendisse commodo elit at velit tincidunt, ac laoreet ligula tincidunt.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet.

+ +
+
+
+ +
+ + +
+ +
+ +

Meatballs

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies.

+
+ +
+

Preparation

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies. Nulla in augue lacinia, condimentum tellus ac, semper purus. Suspendisse commodo elit at velit tincidunt, ac laoreet ligula tincidunt.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet.

+ +
+
+
+ +
+ + +
+ +
+ +

Ice Cream

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies.

+
+ +
+

Preparation

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies. Nulla in augue lacinia, condimentum tellus ac, semper purus. Suspendisse commodo elit at velit tincidunt, ac laoreet ligula tincidunt.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet.

+ +
+
+
+ + + + + + + + + + + + + + + + + +
+ \ No newline at end of file diff --git a/Lab3/index.html b/Lab3/index.html old mode 100755 new mode 100644 index 471cb9141..a02068095 --- a/Lab3/index.html +++ b/Lab3/index.html @@ -1,269 +1,269 @@ - - - - DinnerPlanner - - - - - - - - - - - - - - - - -
-
-
-
-

Dinner Planner

-

- Normally, both your asses would be dead as fucking fried chicken, but you happen to pull this shit while I'm in a transitional period so I don't wanna kill you, I wanna help you. But I can't give you this case, it don't belong to me. Besides, I've already been through too much shit this morning over this case to hand it over to your dumb ass. -

-
- - -
-
-
-
- - - - -
- - -
- - - - -
- -
-

Find a dish

- - -
- - - - - -
-
- - - -
- -
- - -
- - -
-
-
- -
- -
- - -
- -
- -

-
- - - - - - - -
-
- -
-
-

Preparation

-

-
-
-
- - -
- -
- - -
- - -
-
- - -
-
- -
    -

    Total:

    -
- -
    -

    -
- -
-
-
-
- -
-
-
- - -
-
- - -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + DinnerPlanner + + + + + + + + + + + + + + + + +
+
+
+
+

Dinner Planner

+

+ Normally, both your asses would be dead as fucking fried chicken, but you happen to pull this shit while I'm in a transitional period so I don't wanna kill you, I wanna help you. But I can't give you this case, it don't belong to me. Besides, I've already been through too much shit this morning over this case to hand it over to your dumb ass. +

+
+ + +
+
+
+
+ + + + +
+ + +
+ + + + +
+ +
+

Find a dish

+ + +
+ + + + + +
+
+ + + +
+ +
+ + +
+ + +
+
+
+ +
+ +
+ + +
+ +
+ +

+
+ + + + + + + +
+
+ +
+
+

Preparation

+

+
+
+
+ + +
+ +
+ + +
+ + +
+
+ + +
+
+ +
    +

    Total:

    +
+ +
    +

    +
+ +
+
+
+
+ +
+
+
+ + +
+
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Lab3/js/app.js b/Lab3/js/app.js old mode 100755 new mode 100644 index c09f71a75..973c1d75c --- a/Lab3/js/app.js +++ b/Lab3/js/app.js @@ -1,101 +1,99 @@ -$(function() { - - //We instantiate our model - var model = new DinnerModel(); - - // And create the instance of our views - - // 1. homeView - var homeView = new HomeView($("#homeView"), model); - - // headerView - var headerView = new HeaderView($("#header"), model); - // 2.sideView - var sideView = new SideView($("#sideView"), model); - - // 3.searchView (inkl maträtterna nedanför) - var searchView = new SearchView($("#searchView"), model); - - // 4. oneDishView (inkl div med recept som uppdateras) - var oneDishView = new OneDishView($("#oneDishView"), model); - - // 5. fullMenuView -overviewView - var overviewView = new OverviewView($("#overview"), model); - - - // 6. printView - var printView = new PrintView($("#printView"), model); - - - // Controllers - var searchViewController = new SearchViewController(searchView, model, this); - - var sideViewController = new SideViewController(sideView, model, this); - - var oneDishViewController = new OneDishViewController(oneDishView, model, this); - - var overviewViewController = new OverviewViewController(overviewView, model, this); - - var printViewController = new PrintViewController(printView, model, this); - - -/*General State Controller*/ - var startDinner = function() { - homeView.startButton.click(function() { - homeView.container.hide(); - sideView.container.show(); - searchView.container.show() - headerView.container.show(); - }); - } - - this.oneDish = function(){ - sideView.container.show(); - searchView.container.hide(); - headerView.container.show(); - oneDishView.loadView(); - oneDishView.container.show(); - - } - this.overview = function(){ - searchView.container.hide(); - oneDishView.container.hide(); - searchView.container.hide(); - sideView.container.hide(); - overviewView.container.show(); - - } - this.printRecipe = function(){ - overviewView.container.hide(); - printView.container.show(); - - } - - this.backToSearch = function() { - oneDishView.container.hide(); - overviewView.container.hide(); - printView.container.hide(); - sideView.container.show(); - searchView.container.show(); - } - - // Gömmer allt utom start - $("#header").hide(); - $("#sideView").hide(); - $("#searchView").hide(); - $("#oneDishView").hide(); - $("#overview").hide(); - $("#printView").hide(); - - startDinner(); - - - - /** - * IMPORTANT: app.js is the only place where you are allowed to - * use the $('someSelector') to search for elements in the whole HTML. - * In other places you should limit the search only to the children - * of the specific view you're working with (see exampleView.js). - */ - +$(function() { + + //We instantiate our model + var model = new DinnerModel(); + + // And create the instance of our views + + // 1. homeView + var homeView = new HomeView($("#homeView"), model); + + // headerView + var headerView = new HeaderView($("#header"), model); + // 2.sideView + var sideView = new SideView($("#sideView"), model); + + // 3.searchView (inkl maträtterna nedanför) + var searchView = new SearchView($("#searchView"), model); + + // 4. oneDishView (inkl div med recept som uppdateras) + var oneDishView = new OneDishView($("#oneDishView"), model); + + // 5. fullMenuView -overviewView + var overviewView = new OverviewView($("#overview"), model); + + // 6. printView + var printView = new PrintView($("#printView"), model); + + // Controllers + var searchViewController = new SearchViewController(searchView, model, this); + + var sideViewController = new SideViewController(sideView, model, this); + + var oneDishViewController = new OneDishViewController(oneDishView, model, this); + + var overviewViewController = new OverviewViewController(overviewView, model, this); + + var printViewController = new PrintViewController(printView, model, this); + + +/*General State Controller*/ + var startDinner = function() { + homeView.startButton.click(function() { + homeView.container.hide(); + sideView.container.show(); + searchView.container.show() + headerView.container.show(); + }); + } + + this.oneDish = function(){ + sideView.container.show(); + searchView.container.hide(); + headerView.container.show(); + oneDishView.loadView(); + oneDishView.container.show(); + + } + this.overview = function(){ + searchView.container.hide(); + oneDishView.container.hide(); + searchView.container.hide(); + sideView.container.hide(); + overviewView.container.show(); + + } + this.printRecipe = function(){ + overviewView.container.hide(); + printView.container.show(); + + } + + this.backToSearch = function() { + oneDishView.container.hide(); + overviewView.container.hide(); + printView.container.hide(); + sideView.container.show(); + searchView.container.show(); + } + + // Gömmer allt utom start + $("#header").hide(); + $("#sideView").hide(); + $("#searchView").hide(); + $("#oneDishView").hide(); + $("#overview").hide(); + $("#printView").hide(); + + startDinner(); + + + + /** + * IMPORTANT: app.js is the only place where you are allowed to + * use the $('someSelector') to search for elements in the whole HTML. + * In other places you should limit the search only to the children + * of the specific view you're working with (see exampleView.js). + */ + }); \ No newline at end of file diff --git a/Lab3/js/controller/oneDishViewController.js b/Lab3/js/controller/oneDishViewController.js old mode 100755 new mode 100644 index 83aa818a9..6916662cd --- a/Lab3/js/controller/oneDishViewController.js +++ b/Lab3/js/controller/oneDishViewController.js @@ -1,17 +1,17 @@ -var OneDishViewController = function(view, model, sControl) { - var view = view; - var model = model; - var backButton = view.container.find("#backButton"); - var add = view.container.find("#add"); //kallas på i controller - var sControl = sControl; - - add.click(function() { - model.addDishToMenu(view.dish.id); - }); - - backButton.click(function() { - sControl.backToSearch(); - }); - - +var OneDishViewController = function(view, model, sControl) { + var view = view; + var model = model; + var backButton = view.container.find("#backButton"); + var add = view.container.find("#add"); //kallas på i controller + var sControl = sControl; + + add.click(function() { + model.addDishToMenu(view.dish.id); + }); + + backButton.click(function() { + sControl.backToSearch(); + }); + + } \ No newline at end of file diff --git a/Lab3/js/controller/overviewViewController.js b/Lab3/js/controller/overviewViewController.js old mode 100755 new mode 100644 index f2b64c063..8df50a5ff --- a/Lab3/js/controller/overviewViewController.js +++ b/Lab3/js/controller/overviewViewController.js @@ -1,17 +1,17 @@ -var OverviewViewController = function(view, model, sControl) { - this.view = view; - this.model = model; - - var backButton = view.container.find("#back"); - var printButton = view.container.find("#print"); - - backButton.click(function() { - sControl.backToSearch(); - }); - - printButton.click(function(){ - sControl.printRecipe(); - }); - - +var OverviewViewController = function(view, model, sControl) { + this.view = view; + this.model = model; + + var backButton = view.container.find("#back"); + var printButton = view.container.find("#print"); + + backButton.click(function() { + sControl.backToSearch(); + }); + + printButton.click(function(){ + sControl.printRecipe(); + }); + + } \ No newline at end of file diff --git a/Lab3/js/controller/printViewController.js b/Lab3/js/controller/printViewController.js old mode 100755 new mode 100644 index 3b11b3c48..0b4321dea --- a/Lab3/js/controller/printViewController.js +++ b/Lab3/js/controller/printViewController.js @@ -1,9 +1,9 @@ -var PrintViewController = function(view, model, sControl) { - this.view = view; - this.model = model; - var backButton = view.container.find("#Back"); - - backButton.click(function() { - sControl.backToSearch(); - }); +var PrintViewController = function(view, model, sControl) { + this.view = view; + this.model = model; + var backButton = view.container.find("#Back"); + + backButton.click(function() { + sControl.backToSearch(); + }); } \ No newline at end of file diff --git a/Lab3/js/controller/searchViewController.js b/Lab3/js/controller/searchViewController.js old mode 100755 new mode 100644 index 1b21c4092..a8d2b9c8c --- a/Lab3/js/controller/searchViewController.js +++ b/Lab3/js/controller/searchViewController.js @@ -1,19 +1,22 @@ - -var SearchViewController = function(view, model, sControl) { - var view = view; - var sControl = sControl; - var dishesView = new Array(); - //var textInput = view.container.find("#keywords"); //document.getElementById("keywords"); // - var dishesView = view.container.find(".thumbnail"); - - - view.searchButton.click(function() { - view.loadView(); - }); - - view.picBox.on("click", ".thumbnail", function(){ - model.selectDishRecipe(this.id); - //textInput.value = ""; // nollställer keywordsfönstret när man tryckt sök. - sControl.oneDish(); - }); + +var SearchViewController = function(view, model, sControl) { + var view = view; + var sControl = sControl; + var dishesView = new Array(); + //var textInput = view.container.find("#keywords"); //document.getElementById("keywords"); // + var dishesView = view.container.find(".thumbnail"); + + + + view.searchButton.click(function() { + view.loadView(); + }); + + view.picBox.on("click", ".thumbnail", function(){ + console.log("funkar"); + model.selectDishRecipe(this.id); + //textInput.value = ""; // nollställer keywordsfönstret när man tryckt sök. + sControl.oneDish(); + + }); } \ No newline at end of file diff --git a/Lab3/js/controller/sideViewController.js b/Lab3/js/controller/sideViewController.js old mode 100755 new mode 100644 index fe7fd794c..3b11ff234 --- a/Lab3/js/controller/sideViewController.js +++ b/Lab3/js/controller/sideViewController.js @@ -1,22 +1,22 @@ -var SideViewController = function(view, model, sControl) { - this.view = view; - this.model = model; - - var plusButton = view.container.find("#plusGuest"); // used by controller - var minusButton = view.container.find("#minusGuest"); - var confirmButton = view.container.find("#confirm"); - - - plusButton.click(function(){ - model.setNumberOfGuests(model.getNumberOfGuests() + 1); - }); - - minusButton.click(function(){ - model.setNumberOfGuests(model.getNumberOfGuests() - 1); - }); - - confirmButton.click(function(){ - sControl.overview(); - }); - +var SideViewController = function(view, model, sControl) { + this.view = view; + this.model = model; + + var plusButton = view.container.find("#plusGuest"); // used by controller + var minusButton = view.container.find("#minusGuest"); + var confirmButton = view.container.find("#confirm"); + + + plusButton.click(function(){ + model.setNumberOfGuests(model.getNumberOfGuests() + 1); + }); + + minusButton.click(function(){ + model.setNumberOfGuests(model.getNumberOfGuests() - 1); + }); + + confirmButton.click(function(){ + sControl.overview(); + }); + } \ No newline at end of file diff --git a/Lab3/js/controller/stateController.js b/Lab3/js/controller/stateController.js old mode 100755 new mode 100644 index ed38b77f9..5a1ef4146 --- a/Lab3/js/controller/stateController.js +++ b/Lab3/js/controller/stateController.js @@ -1,84 +1,84 @@ -var StateController = function(view1, view2, view3, view4, view5, view6, view7) { - - var homeView = view1; - var sideView = view2; - var searchView = view3; - var headerView = view4; - var oneDishView = view5; - var overviewView = view6; - var printView = view7; - - var startDinner = function() { - homeView.startButton.click(function() { - homeView.container.hide(); - sideView.container.show(); - searchView.container.show() - headerView.container.show(); - - //kunde inte flytta den till searchviewController, då gick det inte att anropa funktionen. - //ändra till bilderna som knappar istället för test! - searchView.testButton.click(function() { - oneDish(); - }); - - - }); - } - var oneDish = function(){ - sideView.container.show(); - searchView.container.hide(); - headerView.container.show(); - oneDishView.container.show(); - - oneDishView.backButton.click(function() { - oneDishView.container.hide(); - searchView.container.show(); - }); - //måste fungera i både oneDish och SearchView - - } - var overview = function(){ - searchView.container.hide(); - oneDishView.container.hide(); - searchView.container.hide(); - sideView.container.hide(); - overviewView.container.show(); - - overviewView.backButton.click(function() { - overviewView.container.hide(); - searchView.container.show(); - sideView.container.show(); - - }); - overviewView.printButton.click(function(){ - printRecipe(); - - }); - } - var printRecipe = function(){ - overviewView.container.hide(); - printView.container.show(); - - printView.BackButton.click(function() { - printView.container.hide(); - sideView.container.show(); - searchView.container.show(); - - }); - - - - } - sideView.confirmButton.click(function(){ - overview(); - }); - - - - - - - startDinner(); - searchView.updateView(); - +var StateController = function(view1, view2, view3, view4, view5, view6, view7) { + + var homeView = view1; + var sideView = view2; + var searchView = view3; + var headerView = view4; + var oneDishView = view5; + var overviewView = view6; + var printView = view7; + + var startDinner = function() { + homeView.startButton.click(function() { + homeView.container.hide(); + sideView.container.show(); + searchView.container.show() + headerView.container.show(); + + //kunde inte flytta den till searchviewController, då gick det inte att anropa funktionen. + //ändra till bilderna som knappar istället för test! + searchView.testButton.click(function() { + oneDish(); + }); + + + }); + } + var oneDish = function(){ + sideView.container.show(); + searchView.container.hide(); + headerView.container.show(); + oneDishView.container.show(); + + oneDishView.backButton.click(function() { + oneDishView.container.hide(); + searchView.container.show(); + }); + //måste fungera i både oneDish och SearchView + + } + var overview = function(){ + searchView.container.hide(); + oneDishView.container.hide(); + searchView.container.hide(); + sideView.container.hide(); + overviewView.container.show(); + + overviewView.backButton.click(function() { + overviewView.container.hide(); + searchView.container.show(); + sideView.container.show(); + + }); + overviewView.printButton.click(function(){ + printRecipe(); + + }); + } + var printRecipe = function(){ + overviewView.container.hide(); + printView.container.show(); + + printView.BackButton.click(function() { + printView.container.hide(); + sideView.container.show(); + searchView.container.show(); + + }); + + + + } + sideView.confirmButton.click(function(){ + overview(); + }); + + + + + + + startDinner(); + searchView.updateView(); + } \ No newline at end of file diff --git a/Lab3/js/model/dinnerModel.js b/Lab3/js/model/dinnerModel.js old mode 100755 new mode 100644 index 93dab56e9..0d7edbc6c --- a/Lab3/js/model/dinnerModel.js +++ b/Lab3/js/model/dinnerModel.js @@ -1,418 +1,417 @@ -//DinnerModel Object constructor -var DinnerModel = function() { - - //TODO Lab 1 implement the data structure that will hold number of guest - // and selected dishes for the dinner menu - - var numberOfGuests = 2; // ej this. för då blir det en property som man kan nå utifrån. istället var. - var menu = [1, 101, 201] - this.observers = new Array(); - var displayedDish = ""; - - this.addObserver = function(observer) { - this.observers.push(observer); - } - - this.notifyObservers = function(args) { - for(var i = 0; i < this.observers.length; i++) { - //this.observers[i].loadView(); - console.log("nu meddelar vi observer"); - //console.log(args); - console.log(args); - this.observers[i].updateView(args); - } - } - - this.setNumberOfGuests = function(num) { - if(num>0){ - numberOfGuests = num; - } - this.notifyObservers("guestsChanged"); - } - - this.getNumberOfGuests = function() { - return numberOfGuests; - } - - //Returns the dish that is on the menu for selected type - //borde kolla i dishes istället för att filtrera vilka rätter som visas i overview. - this.getSelectedDish = function(type) { - for (dish in menu){ - for(dishId in dishes){ - if(dishes.id === dish && dishes.type === type){ - return dishes[dishId].name; - } - } - } - } - - //Returnerar id på klickad rätt - this.selectDishRecipe = function (selectedID) { - displayedDish = selectedID; - console.log("nu går vi vidare till recept"); - console.log(displayedDish); - //notifyObservers(); - //meddela observers att de ska vidare till nästa. - this.notifyObservers("toRecipe"); - }; - - this.returnDishRecipe = function() { - return displayedDish; - } - - //Returns all the dishes on the menu. - this.getFullMenu = function() { - var fullMenu = []; - for (i in menu){ - fullMenu.push(this.getDish(menu[i])); - } - return fullMenu; - } - - //Returns all ingredients for all the dishes on the menu. - this.getAllIngredients = function() { - var allIngredients = []; - for (dish in menu) { - var ings = []; - ings.push(this.getDish(dish).ingredients) - for (i in ings) { - allIngredients.push(ings[i]); - } - } - return allIngredients; - } - - //Returns the total price of the menu (all the ingredients multiplied by number of guests). - this.getTotalMenuPrice = function() { - var ingredientsPrice = 0; - var groceries = this.getAllIngredients(); - - for (i in groceries){ - ingredientsPrice += groceries[i].price; - } - - var totalPrice = 0; - - totalPrice = numberOfGuests * ingredientsPrice; - - return totalPrice; - } - - //Adds the passed dish to the menu. If the dish of that type already exists on the menu - //it is removed from the menu and the new one added. - this.addDishToMenu = function(id) { - var newType = this.getDish(id).type; - - for (i in menu){ - var menuType = this.getDish(menu[i]).type; - if (newType === menuType){ - this.removeDishFromMenu(menu[i]); - } - } - - menu.push(id); - this.notifyObservers("newDishAdded"); - - - } - - //Removes dish from menu - this.removeDishFromMenu = function(id) { - var i = 0; - for (i in menu){ - - if (menu[i] === id){ - menu.splice(i,1) - } - i++; - } - //notifyObservers(); - - } - - //function that returns all dishes of specific type (i.e. "starter", "main dish" or "dessert") - //you can use the filter argument to filter out the dish by name or ingredient (use for search) - //if you don't pass any filter all the dishes will be returned - this.getAllDishes = function (type,filter) { - return dishes.filter(function(dish) { - var found = true; - if(filter){ - found = false; - dish.ingredients.forEach(function(ingredient) { - if(ingredient.name.indexOf(filter)!=-1) { - found = true; - } - }); - if(dish.name.indexOf(filter) != -1) - { - found = true; - } - } - return dish.type == type || type =="all" && found; - //för att få alla dishes. - }); - this.notifyObservers("newTypeSelected"); - } - - //function that returns a dish of specific ID - this.getDish = function (id) { - for( var i = 0; i < dishes.length; i++) { - if (dishes[i].id == id) { - return dishes[i]; - } - } - } - - - // the dishes variable contains an array of all the - // dishes in the database. each dish has id, name, type, - // image (name of the image file), description and - // array of ingredients. Each ingredient has name, - // quantity (a number), price (a number) and unit (string - // defining the unit i.e. "g", "slices", "ml". Unit - // can sometimes be empty like in the example of eggs where - // you just say "5 eggs" and not "5 pieces of eggs" or anything else. - var dishes = [{ - 'id':1, - 'name':'French toast', - 'type':'starter', - 'image':'toast.jpg', - 'description':"In a large mixing bowl, beat the eggs. Add the milk, brown sugar and nutmeg; stir well to combine. Soak bread slices in the egg mixture until saturated. Heat a lightly oiled griddle or frying pan over medium high heat. Brown slices on both sides, sprinkle with cinnamon and serve hot.", - 'ingredients':[{ - 'name':'eggs', - 'quantity':0.5, - 'unit':'', - 'price':10 - },{ - 'name':'milk', - 'quantity':30, - 'unit':'ml', - 'price':6 - },{ - 'name':'brown sugar', - 'quantity':7, - 'unit':'g', - 'price':1 - },{ - 'name':'ground nutmeg', - 'quantity':0.5, - 'unit':'g', - 'price':12 - },{ - 'name':'white bread', - 'quantity':2, - 'unit':'slices', - 'price':2 - }] - },{ - 'id':2, - 'name':'Sourdough Starter', - 'type':'starter', - 'image':'sourdough.jpg', - 'description':"Here is how you make it... Lore ipsum...", - 'ingredients':[{ - 'name':'active dry yeast', - 'quantity':0.5, - 'unit':'g', - 'price':4 - },{ - 'name':'warm water', - 'quantity':30, - 'unit':'ml', - 'price':0 - },{ - 'name':'all-purpose flour', - 'quantity':15, - 'unit':'g', - 'price':2 - }] - },{ - 'id':3, - 'name':'Baked Brie with Peaches', - 'type':'starter', - 'image':'bakedbrie.jpg', - 'description':"Here is how you make it... Lore ipsum...", - 'ingredients':[{ - 'name':'round Brie cheese', - 'quantity':10, - 'unit':'g', - 'price':8 - },{ - 'name':'raspberry preserves', - 'quantity':15, - 'unit':'g', - 'price':10 - },{ - 'name':'peaches', - 'quantity':1, - 'unit':'', - 'price':4 - }] - },{ - 'id':100, - 'name':'Meat balls', - 'type':'main dish', - 'image':'meatballs.jpg', - 'description':"Preheat an oven to 400 degrees F (200 degrees C). Place the beef into a mixing bowl, and season with salt, onion, garlic salt, Italian seasoning, oregano, red pepper flakes, hot pepper sauce, and Worcestershire sauce; mix well. Add the milk, Parmesan cheese, and bread crumbs. Mix until evenly blended, then form into 1 1/2-inch meatballs, and place onto a baking sheet. Bake in the preheated oven until no longer pink in the center, 20 to 25 minutes.", - 'ingredients':[{ - 'name':'extra lean ground beef', - 'quantity':115, - 'unit':'g', - 'price':20 - },{ - 'name':'sea salt', - 'quantity':0.7, - 'unit':'g', - 'price':3 - },{ - 'name':'small onion, diced', - 'quantity':0.25, - 'unit':'', - 'price':2 - },{ - 'name':'garlic salt', - 'quantity':0.7, - 'unit':'g', - 'price':2 - },{ - 'name':'Italian seasoning', - 'quantity':0.6, - 'unit':'g', - 'price':3 - },{ - 'name':'dried oregano', - 'quantity':0.3, - 'unit':'g', - 'price':3 - },{ - 'name':'crushed red pepper flakes', - 'quantity':0.6, - 'unit':'g', - 'price':3 - },{ - 'name':'Worcestershire sauce', - 'quantity':6, - 'unit':'ml', - 'price':7 - },{ - 'name':'milk', - 'quantity':20, - 'unit':'ml', - 'price':4 - },{ - 'name':'grated Parmesan cheese', - 'quantity':5, - 'unit':'g', - 'price':8 - },{ - 'name':'seasoned bread crumbs', - 'quantity':15, - 'unit':'g', - 'price':4 - }] - },{ - 'id':101, - 'name':'MD 2', - 'type':'main dish', - 'image':'bakedbrie.jpg', - 'description':"Here is how you make it... Lore ipsum...", - 'ingredients':[{ - 'name':'ingredient 1', - 'quantity':1, - 'unit':'pieces', - 'price':8 - },{ - 'name':'ingredient 2', - 'quantity':15, - 'unit':'g', - 'price':7 - },{ - 'name':'ingredient 3', - 'quantity':10, - 'unit':'ml', - 'price':4 - }] - },{ - 'id':102, - 'name':'MD 3', - 'type':'main dish', - 'image':'meatballs.jpg', - 'description':"Here is how you make it... Lore ipsum...", - 'ingredients':[{ - 'name':'ingredient 1', - 'quantity':2, - 'unit':'pieces', - 'price':8 - },{ - 'name':'ingredient 2', - 'quantity':10, - 'unit':'g', - 'price':7 - },{ - 'name':'ingredient 3', - 'quantity':5, - 'unit':'ml', - 'price':4 - }] - },{ - 'id':103, - 'name':'MD 4', - 'type':'main dish', - 'image':'meatballs.jpg', - 'description':"Here is how you make it... Lore ipsum...", - 'ingredients':[{ - 'name':'ingredient 1', - 'quantity':1, - 'unit':'pieces', - 'price':4 - },{ - 'name':'ingredient 2', - 'quantity':12, - 'unit':'g', - 'price':7 - },{ - 'name':'ingredient 3', - 'quantity':6, - 'unit':'ml', - 'price':4 - }] - },{ - 'id':200, - 'name':'Chocolat Ice cream', - 'type':'dessert', - 'image':'icecream.jpg', - 'description':"Here is how you make it... Lore ipsum...", - 'ingredients':[{ - 'name':'ice cream', - 'quantity':100, - 'unit':'ml', - 'price':6 - }] - },{ - 'id':201, - 'name':'Vanilla Ice cream', - 'type':'dessert', - 'image':'icecream.jpg', - 'description':"Here is how you make it... Lore ipsum...", - 'ingredients':[{ - 'name':'ice cream', - 'quantity':100, - 'unit':'ml', - 'price':6 - }] - },{ - 'id':202, - 'name':'Strawberry', - 'type':'dessert', - 'image':'icecream.jpg', - 'description':"Here is how you make it... Lore ipsum...", - 'ingredients':[{ - 'name':'ice cream', - 'quantity':100, - 'unit':'ml', - 'price':6 - }] - } - ]; - -} +//DinnerModel Object constructor +var DinnerModel = function() { + + //TODO Lab 1 implement the data structure that will hold number of guest + // and selected dishes for the dinner menu + + var numberOfGuests = 2; // ej this. för då blir det en property som man kan nå utifrån. istället var. + var menu = [1, 101, 201] + this.observers = new Array(); + var displayedDish = ""; + + this.addObserver = function(observer) { + this.observers.push(observer); + } + + this.notifyObservers = function(args) { + for(var i = 0; i < this.observers.length; i++) { + //this.observers[i].loadView(); + console.log("nu meddelar vi observer"); + //console.log(args); + console.log(args); + this.observers[i].updateView(args); + } + } + + this.setNumberOfGuests = function(num) { + if(num>0){ + numberOfGuests = num; + } + this.notifyObservers("guestsChanged"); + } + + this.getNumberOfGuests = function() { + return numberOfGuests; + } + + //Returns the dish that is on the menu for selected type + //borde kolla i dishes istället för att filtrera vilka rätter som visas i overview. + this.getSelectedDish = function(type) { + for (dish in menu){ + for(dishId in dishes){ + if(dishes.id === dish && dishes.type === type){ + return dishes[dishId].name; + } + } + } + } + + //Returnerar id på klickad rätt + this.selectDishRecipe = function (selectedID) { + displayedDish = selectedID; + console.log("nu går vi vidare till recept"); + console.log(displayedDish); + //notifyObservers(); + //meddela observers att de ska vidare till nästa. + this.notifyObservers("toRecipe"); + }; + + this.returnDishRecipe = function() { + return displayedDish; + } + + //Returns all the dishes on the menu. + this.getFullMenu = function() { + var fullMenu = []; + for (i in menu){ + fullMenu.push(this.getDish(menu[i])); + } + return fullMenu; + } + + //Returns all ingredients for all the dishes on the menu. + this.getAllIngredients = function() { + var allIngredients = []; + for (dish in menu) { + var ings = []; + ings.push(this.getDish(dish).ingredients) + for (i in ings) { + allIngredients.push(ings[i]); + } + } + return allIngredients; + } + + //Returns the total price of the menu (all the ingredients multiplied by number of guests). + this.getTotalMenuPrice = function() { + var ingredientsPrice = 0; + var groceries = this.getAllIngredients(); + + for (i in groceries){ + ingredientsPrice += groceries[i].price; + } + + var totalPrice = 0; + + totalPrice = numberOfGuests * ingredientsPrice; + + return totalPrice; + } + + //Adds the passed dish to the menu. If the dish of that type already exists on the menu + //it is removed from the menu and the new one added. + this.addDishToMenu = function(id) { + var newType = this.getDish(id).type; + + for (i in menu){ + var menuType = this.getDish(menu[i]).type; + if (newType === menuType){ + this.removeDishFromMenu(menu[i]); + } + } + + menu.push(id); + this.notifyObservers("newDishAdded"); + + + } + + //Removes dish from menu + this.removeDishFromMenu = function(id) { + var i = 0; + for (i in menu){ + + if (menu[i] === id){ + menu.splice(i,1) + } + i++; + } + //notifyObservers(); + + } + + //function that returns all dishes of specific type (i.e. "starter", "main dish" or "dessert") + //you can use the filter argument to filter out the dish by name or ingredient (use for search) + //if you don't pass any filter all the dishes will be returned + this.getAllDishes = function (type,filter) { + return dishes.filter(function(dish) { + var found = true; + if(filter){ + found = false; + dish.ingredients.forEach(function(ingredient) { + if(ingredient.name.indexOf(filter)!=-1) { + found = true; + } + }); + if(dish.name.indexOf(filter) != -1) + { + found = true; + } + } + return dish.type == type && found; + }); + this.notifyObservers("newTypeSelected"); + } + + //function that returns a dish of specific ID + this.getDish = function (id) { + for( var i = 0; i < dishes.length; i++) { + if (dishes[i].id == id) { + return dishes[i]; + } + } + } + + + // the dishes variable contains an array of all the + // dishes in the database. each dish has id, name, type, + // image (name of the image file), description and + // array of ingredients. Each ingredient has name, + // quantity (a number), price (a number) and unit (string + // defining the unit i.e. "g", "slices", "ml". Unit + // can sometimes be empty like in the example of eggs where + // you just say "5 eggs" and not "5 pieces of eggs" or anything else. + var dishes = [{ + 'id':1, + 'name':'French toast', + 'type':'starter', + 'image':'toast.jpg', + 'description':"In a large mixing bowl, beat the eggs. Add the milk, brown sugar and nutmeg; stir well to combine. Soak bread slices in the egg mixture until saturated. Heat a lightly oiled griddle or frying pan over medium high heat. Brown slices on both sides, sprinkle with cinnamon and serve hot.", + 'ingredients':[{ + 'name':'eggs', + 'quantity':0.5, + 'unit':'', + 'price':10 + },{ + 'name':'milk', + 'quantity':30, + 'unit':'ml', + 'price':6 + },{ + 'name':'brown sugar', + 'quantity':7, + 'unit':'g', + 'price':1 + },{ + 'name':'ground nutmeg', + 'quantity':0.5, + 'unit':'g', + 'price':12 + },{ + 'name':'white bread', + 'quantity':2, + 'unit':'slices', + 'price':2 + }] + },{ + 'id':2, + 'name':'Sourdough Starter', + 'type':'starter', + 'image':'sourdough.jpg', + 'description':"Here is how you make it... Lore ipsum...", + 'ingredients':[{ + 'name':'active dry yeast', + 'quantity':0.5, + 'unit':'g', + 'price':4 + },{ + 'name':'warm water', + 'quantity':30, + 'unit':'ml', + 'price':0 + },{ + 'name':'all-purpose flour', + 'quantity':15, + 'unit':'g', + 'price':2 + }] + },{ + 'id':3, + 'name':'Baked Brie with Peaches', + 'type':'starter', + 'image':'bakedbrie.jpg', + 'description':"Here is how you make it... Lore ipsum...", + 'ingredients':[{ + 'name':'round Brie cheese', + 'quantity':10, + 'unit':'g', + 'price':8 + },{ + 'name':'raspberry preserves', + 'quantity':15, + 'unit':'g', + 'price':10 + },{ + 'name':'peaches', + 'quantity':1, + 'unit':'', + 'price':4 + }] + },{ + 'id':100, + 'name':'Meat balls', + 'type':'main dish', + 'image':'meatballs.jpg', + 'description':"Preheat an oven to 400 degrees F (200 degrees C). Place the beef into a mixing bowl, and season with salt, onion, garlic salt, Italian seasoning, oregano, red pepper flakes, hot pepper sauce, and Worcestershire sauce; mix well. Add the milk, Parmesan cheese, and bread crumbs. Mix until evenly blended, then form into 1 1/2-inch meatballs, and place onto a baking sheet. Bake in the preheated oven until no longer pink in the center, 20 to 25 minutes.", + 'ingredients':[{ + 'name':'extra lean ground beef', + 'quantity':115, + 'unit':'g', + 'price':20 + },{ + 'name':'sea salt', + 'quantity':0.7, + 'unit':'g', + 'price':3 + },{ + 'name':'small onion, diced', + 'quantity':0.25, + 'unit':'', + 'price':2 + },{ + 'name':'garlic salt', + 'quantity':0.7, + 'unit':'g', + 'price':2 + },{ + 'name':'Italian seasoning', + 'quantity':0.6, + 'unit':'g', + 'price':3 + },{ + 'name':'dried oregano', + 'quantity':0.3, + 'unit':'g', + 'price':3 + },{ + 'name':'crushed red pepper flakes', + 'quantity':0.6, + 'unit':'g', + 'price':3 + },{ + 'name':'Worcestershire sauce', + 'quantity':6, + 'unit':'ml', + 'price':7 + },{ + 'name':'milk', + 'quantity':20, + 'unit':'ml', + 'price':4 + },{ + 'name':'grated Parmesan cheese', + 'quantity':5, + 'unit':'g', + 'price':8 + },{ + 'name':'seasoned bread crumbs', + 'quantity':15, + 'unit':'g', + 'price':4 + }] + },{ + 'id':101, + 'name':'MD 2', + 'type':'main dish', + 'image':'bakedbrie.jpg', + 'description':"Here is how you make it... Lore ipsum...", + 'ingredients':[{ + 'name':'ingredient 1', + 'quantity':1, + 'unit':'pieces', + 'price':8 + },{ + 'name':'ingredient 2', + 'quantity':15, + 'unit':'g', + 'price':7 + },{ + 'name':'ingredient 3', + 'quantity':10, + 'unit':'ml', + 'price':4 + }] + },{ + 'id':102, + 'name':'MD 3', + 'type':'main dish', + 'image':'meatballs.jpg', + 'description':"Here is how you make it... Lore ipsum...", + 'ingredients':[{ + 'name':'ingredient 1', + 'quantity':2, + 'unit':'pieces', + 'price':8 + },{ + 'name':'ingredient 2', + 'quantity':10, + 'unit':'g', + 'price':7 + },{ + 'name':'ingredient 3', + 'quantity':5, + 'unit':'ml', + 'price':4 + }] + },{ + 'id':103, + 'name':'MD 4', + 'type':'main dish', + 'image':'meatballs.jpg', + 'description':"Here is how you make it... Lore ipsum...", + 'ingredients':[{ + 'name':'ingredient 1', + 'quantity':1, + 'unit':'pieces', + 'price':4 + },{ + 'name':'ingredient 2', + 'quantity':12, + 'unit':'g', + 'price':7 + },{ + 'name':'ingredient 3', + 'quantity':6, + 'unit':'ml', + 'price':4 + }] + },{ + 'id':200, + 'name':'Chocolat Ice cream', + 'type':'dessert', + 'image':'icecream.jpg', + 'description':"Here is how you make it... Lore ipsum...", + 'ingredients':[{ + 'name':'ice cream', + 'quantity':100, + 'unit':'ml', + 'price':6 + }] + },{ + 'id':201, + 'name':'Vanilla Ice cream', + 'type':'dessert', + 'image':'icecream.jpg', + 'description':"Here is how you make it... Lore ipsum...", + 'ingredients':[{ + 'name':'ice cream', + 'quantity':100, + 'unit':'ml', + 'price':6 + }] + },{ + 'id':202, + 'name':'Strawberry', + 'type':'dessert', + 'image':'icecream.jpg', + 'description':"Here is how you make it... Lore ipsum...", + 'ingredients':[{ + 'name':'ice cream', + 'quantity':100, + 'unit':'ml', + 'price':6 + }] + } + ]; + +} diff --git a/Lab3/js/view/headerView.js b/Lab3/js/view/headerView.js old mode 100755 new mode 100644 index 500fe083f..61d732e6e --- a/Lab3/js/view/headerView.js +++ b/Lab3/js/view/headerView.js @@ -1,10 +1,10 @@ -var HeaderView = function (container, model) { - this.container = container; - - this.updateView = function() { - console.log("testar ny funktion - header"); - } -} - - - +var HeaderView = function (container, model) { + this.container = container; + + this.updateView = function() { + console.log("testar ny funktion - header"); + } +} + + + diff --git a/Lab3/js/view/homeView.js b/Lab3/js/view/homeView.js old mode 100755 new mode 100644 index 6f551e4d0..bd5eb335f --- a/Lab3/js/view/homeView.js +++ b/Lab3/js/view/homeView.js @@ -1,11 +1,11 @@ - - -var HomeView = function (container, model) { - this.startButton = container.find("#startButton"); - this.container= container; - - this.updateView = function() { - console.log("testar ny funktion - home"); - } -} + + +var HomeView = function (container, model) { + this.startButton = container.find("#startButton"); + this.container= container; + + this.updateView = function() { + console.log("testar ny funktion - home"); + } +} \ No newline at end of file diff --git a/Lab3/js/view/oneDishView.js b/Lab3/js/view/oneDishView.js old mode 100755 new mode 100644 index 0826fa9a6..069f7f4cb --- a/Lab3/js/view/oneDishView.js +++ b/Lab3/js/view/oneDishView.js @@ -1,63 +1,63 @@ - -/*main view for view3 "dish overview" -gets the pictures and name of the dishes for view2 and 4 */ -var OneDishView = function (container, model) { - this.container = container; - this.model = model; - - - - var headlineDish = container.find("#headlineDish"); - var picDish = container.find("#imgDish"); - var description = container.find("#description"); - var tableString = container.find("#table"); - var sumString = container.find("#td1"); - var rubrik = container.find("#ingrFor"); - - this.loadView = function() { - - var dishId = model.returnDishRecipe(); - - - this.dish = model.getDish(dishId); - - nrOfGuests = model.getNumberOfGuests(); - - headlineDish.html(this.dish.name); - picDish.html(''); - - description.html(this.dish.description); - - Rubrik = 'Ingredients for ' + nrOfGuests + ' people'; - rubrik.html(Rubrik); - - var string = ''; - - var sum = 0; - - for(i in this.dish.ingredients){ - Price = this.dish.ingredients[i].price*nrOfGuests; - string += ''; - sum += Price; - } - summa= ''; - - tableString.html(string); - sumString.html(summa); - - } - - - - - - // load/update view. - //this.loadView(); - //attach as listener - model.addObserver(this); - this.updateView = function(args) { - this.loadView(); - } - -} + +/*main view for view3 "dish overview" +gets the pictures and name of the dishes for view2 and 4 */ +var OneDishView = function (container, model) { + this.container = container; + this.model = model; + + + + var headlineDish = container.find("#headlineDish"); + var picDish = container.find("#imgDish"); + var description = container.find("#description"); + var tableString = container.find("#table"); + var sumString = container.find("#td1"); + var rubrik = container.find("#ingrFor"); + + this.loadView = function() { + + var dishId = model.returnDishRecipe(); + + + this.dish = model.getDish(dishId); + + nrOfGuests = model.getNumberOfGuests(); + + headlineDish.html(this.dish.name); + picDish.html(''); + + description.html(this.dish.description); + + Rubrik = 'Ingredients for ' + nrOfGuests + ' people'; + rubrik.html(Rubrik); + + var string = '
mängdsakSEKpris
' + this.dish.ingredients[i].quantity + ' ' + this.dish.ingredients[i].unit + '' + this.dish.ingredients[i].name + 'SEK' + Price + '
SEK ' + sum + '
'; + + var sum = 0; + + for(i in this.dish.ingredients){ + Price = this.dish.ingredients[i].price*nrOfGuests; + string += ''; + sum += Price; + } + summa= ''; + + tableString.html(string); + sumString.html(summa); + + } + + + + + + // load/update view. + //this.loadView(); + //attach as listener + model.addObserver(this); + this.updateView = function(args) { + this.loadView(); + } + +} \ No newline at end of file diff --git a/Lab3/js/view/overviewView.js b/Lab3/js/view/overviewView.js old mode 100755 new mode 100644 index 3448c05f2..02d7269a2 --- a/Lab3/js/view/overviewView.js +++ b/Lab3/js/view/overviewView.js @@ -1,46 +1,46 @@ -var OverviewView = function (container, model) { - - this.container = container; - this.model = model; - - var header = container.find("#overviewHeader"); - var pictures = container.find("#pictures"); - var total = container.find("#totSum"); - - - //load view - this.loadView = function() { - var nr= model.getNumberOfGuests(); - var string = '

My dinner: '+ nr +' people

'; - var menu = model.getFullMenu(); - header.html(string); - - sum =0; - HTMLPic= ""; - for(i in menu){ - var dishPrice = 0; - for(n in menu[i].ingredients){ - dishPrice += menu[i].ingredients[n].price*nr; - } - HTMLPic += '

'+ dishPrice +' SEK

'; - - sum += dishPrice; - } - pictures.html(HTMLPic); - total.html(sum); - - - } - - - // load/update view. - this.loadView(); - //attach as listener - model.addObserver(this); - - this.updateView = function() { - this.loadView(); - } - -} - +var OverviewView = function (container, model) { + + this.container = container; + this.model = model; + + var header = container.find("#overviewHeader"); + var pictures = container.find("#pictures"); + var total = container.find("#totSum"); + + + //load view + this.loadView = function() { + var nr= model.getNumberOfGuests(); + var string = '

My dinner: '+ nr +' people

'; + var menu = model.getFullMenu(); + header.html(string); + + sum =0; + HTMLPic= ""; + for(i in menu){ + var dishPrice = 0; + for(n in menu[i].ingredients){ + dishPrice += menu[i].ingredients[n].price*nr; + } + HTMLPic += '

'+ dishPrice +' SEK

'; + + sum += dishPrice; + } + pictures.html(HTMLPic); + total.html(sum); + + + } + + + // load/update view. + this.loadView(); + //attach as listener + model.addObserver(this); + + this.updateView = function() { + this.loadView(); + } + +} + diff --git a/Lab3/js/view/printView.js b/Lab3/js/view/printView.js old mode 100755 new mode 100644 index 231070c9c..77719ba59 --- a/Lab3/js/view/printView.js +++ b/Lab3/js/view/printView.js @@ -1,46 +1,46 @@ -var PrintView = function (container, model) { - this.container = container; - this.model = model; - - - - - var print = container.find("#printDish") - var header = container.find("#printHeader") - - - - //load view - this.loadView = function() { - - var nr = model.getNumberOfGuests(); - string = '

My dinner: '+ nr +' people

'; - header.html(string); - - var string = ''; - menu = model.getFullMenu() - - - for(i in menu){ - string += '
'+ - '

' + menu[i].name + - '

Preparation

' + menu[i].description + - '

'; - ; - - } - print.html(string); - - } - - - - // load/update view. - this.loadView(); - //attach as listener - model.addObserver(this); - - this.updateView = function() { - console.log("testar ny funktion - print"); - } +var PrintView = function (container, model) { + this.container = container; + this.model = model; + + + + + var print = container.find("#printDish") + var header = container.find("#printHeader") + + + + //load view + this.loadView = function() { + + var nr = model.getNumberOfGuests(); + string = '

My dinner: '+ nr +' people

'; + header.html(string); + + var string = ''; + menu = model.getFullMenu() + + + for(i in menu){ + string += '
'+ + '

' + menu[i].name + + '

Preparation

' + menu[i].description + + '

'; + ; + + } + print.html(string); + + } + + + + // load/update view. + this.loadView(); + //attach as listener + model.addObserver(this); + + this.updateView = function() { + console.log("testar ny funktion - print"); + } } \ No newline at end of file diff --git a/Lab3/js/view/searchView.js b/Lab3/js/view/searchView.js old mode 100755 new mode 100644 index 0458da17d..57bf4f3ed --- a/Lab3/js/view/searchView.js +++ b/Lab3/js/view/searchView.js @@ -1,39 +1,40 @@ -var SearchView = function (container, model) { - this.container = container; - this.searchButton = container.find("#searchButton"); // knappen ska bara göra loadView(), i den funktionen finns resten av isntruktionerna - - this.picBox = container.find("#template"); //this, app adds eventlistener - - //load view - this.loadView = function() { - - //var type = hämta type - var type = container.find("#selectOption option:selected").val(); - - //var keywords = Hämta filter - var filter = document.getElementById("keywords").value; - - var menu = model.getAllDishes(type, filter); // stoppain filter och type i funktionen. - var string = ''; - - - //lägg in rätterna - for(i in menu){ - string += '
'; - } - this.picBox.html(string); - - - } - - - - // load/update view. - this.loadView(); - //attach as listener - model.addObserver(this); - - this.updateView = function(args) { - this.loadView(); - } +var SearchView = function (container, model) { + this.container = container; + this.searchButton = container.find("#searchButton"); // knappen ska bara göra loadView(), i den funktionen finns resten av isntruktionerna + + this.picBox = container.find("#template"); //this, controller adds eventlistener + //console.log(picBox); + + //load view + this.loadView = function() { + + //var type = hämta type + var type = container.find("#selectOption option:selected").val(); + + //var keywords = Hämta filter + var filter = document.getElementById("keywords").value; + + var menu = model.getAllDishes(type, filter); // stoppain filter och type i funktionen. + var string = ''; + + + //lägg in rätterna + for(i in menu){ + string += '
'; + } + this.picBox.html(string); + + + } + + + + // load/update view. + this.loadView(); + //attach as listener + model.addObserver(this); + + this.updateView = function(args) { + this.loadView(); + } } \ No newline at end of file diff --git a/Lab3/js/view/sideView.js b/Lab3/js/view/sideView.js old mode 100755 new mode 100644 index 64e2418f8..20fd99ae3 --- a/Lab3/js/view/sideView.js +++ b/Lab3/js/view/sideView.js @@ -1,57 +1,57 @@ -var SideView = function (container, model) { - - this.container = container; - this.model = model; - - - var numberOfGuests = container.find("#numberOfGuests"); - var table = container.find("#dinnerTable"); - var summa = container.find("#sum"); - var Summa = container.find("#summa"); - - - - - //load view - this.loadView = function() { - nrOfGuests = model.getNumberOfGuests(); - numberOfGuests.html(nrOfGuests); - - var menu = model.getFullMenu(); // stoppain filter och type i funktionen. - var string = ''; - var sum = 0; - - - //lägg in rätterna från vald menu och räknar ut priset av varje rätt samt totalt - for(i in menu){ - var dishPrice = 0; - for(n in menu[i].ingredients){ - dishPrice += menu[i].ingredients[n].price*nrOfGuests; - } - sum += dishPrice; - - string += ''; - } - - - table.html(string); - summa.html(sum); - Summa.html(sum); - - } - - - - // load/update view. - this.loadView(); - - - //attach as listener - model.addObserver(this); - this.updateView = function(args) { - this.loadView(); - } - - -} - +var SideView = function (container, model) { + + this.container = container; + this.model = model; + + + var numberOfGuests = container.find("#numberOfGuests"); + var table = container.find("#dinnerTable"); + var summa = container.find("#sum"); + var Summa = container.find("#summa"); + + + + + //load view + this.loadView = function() { + nrOfGuests = model.getNumberOfGuests(); + numberOfGuests.html(nrOfGuests); + + var menu = model.getFullMenu(); // stoppain filter och type i funktionen. + var string = ''; + var sum = 0; + + + //lägg in rätterna från vald menu och räknar ut priset av varje rätt samt totalt + for(i in menu){ + var dishPrice = 0; + for(n in menu[i].ingredients){ + dishPrice += menu[i].ingredients[n].price*nrOfGuests; + } + sum += dishPrice; + + string += ''; + } + + + table.html(string); + summa.html(sum); + Summa.html(sum); + + } + + + + // load/update view. + this.loadView(); + + + //attach as listener + model.addObserver(this); + this.updateView = function(args) { + this.loadView(); + } + + +} + diff --git a/Lab3/sem2-diskussion.txt b/Lab3/sem2-diskussion.txt new file mode 100644 index 000000000..34ddc76da --- /dev/null +++ b/Lab3/sem2-diskussion.txt @@ -0,0 +1,3 @@ +1. man vill inte att en view ska veta om en annan. View ska bara visa data (modellen), controller ska bara veta om sin egen view. +använd inte global selector. +3. använd if-statement bara för att bestämma hur det ska uppdateras. behvöer inte vara switch! \ No newline at end of file diff --git a/Lab3/style2D.css b/Lab3/style2D.css old mode 100755 new mode 100644 index 4287fea49..d934c666b --- a/Lab3/style2D.css +++ b/Lab3/style2D.css @@ -1,113 +1,113 @@ -form{ - margin-bottom: 10px; -} - -img{ - width: 100%; -} - -html,body,.container { - height:100%; -} -.home { - background: url("https://fthmb.tqn.com/uZwLBI5jpv1YjOTwGGmFuSyUhg4=/1920x1280/filters:fill(auto,1)/dish-918613_1920-5812723a3df78c2c73a334d9.jpg"); - background-size: cover; - background-position: center; - font-family: 'Lato', sans-serif; - color: #2c3e50; -} - -table { - width: 100%; - -} -.Sum { - text-align: right; -} - -#sum{ - text-align: left; -} -.sidebar { - /*background-color: lightgreen; - /*height: 800px;*/ - /* margin-left: 0;*/ -} - -.caption { - text-align: center; -} - -.jumbotron { - text-align: center; - padding-top: 0px; -} -.page-header { - text-align: center; - margin-top: 0px; -} - -.row { - height: 100%; - display: table-row; -} - -.row .no-float { - display: table-cell; - float: none; -} - -/* Sidebar modules for boxing content */ -.sidebar-module { - padding: 15px; - margin: 0 -15px 15px; -} -.sidebar-module-inset { - padding: 15px; - background-color: #f5f5f5; - border-radius: 4px; -} -.sidebar-module-inset p:last-child, -.sidebar-module-inset ul:last-child, -.sidebar-module-inset ol:last-child { - margin-bottom: 0; -} - - -#imgDish{ - width: 90%; -} -.knapp{ - margin-top: 20px -} -.pull-right{ - text-align: right; -} - -.content { - text-align: center; - padding-top: 25%; - text-shadow: 0px 4px 3px rgba(0,0,0,0.4) - 0px 8px 13px rgba(0,0,0,0.1), - 0px 18px 23px rgba(0,0,0,0.1); -} - -hr { - border: 0; - width: 400px; - height: 1px; - background-image: linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.75), rgba(255, 255, 255, 0)); -} -#collapseSide.collapsing { - margin-top: 10px; - margin-bottom: 10px -} -.margin{ - margin-right: 20px; - margin-top: 10px; - margin-left: 20px; -} - -.margin1{ - margin-bottom: 0px; -} +form{ + margin-bottom: 10px; +} + +img{ + width: 100%; +} + +html,body,.container { + height:100%; +} +.home { + background: url("https://fthmb.tqn.com/uZwLBI5jpv1YjOTwGGmFuSyUhg4=/1920x1280/filters:fill(auto,1)/dish-918613_1920-5812723a3df78c2c73a334d9.jpg"); + background-size: cover; + background-position: center; + font-family: 'Lato', sans-serif; + color: #2c3e50; +} + +table { + width: 100%; + +} +.Sum { + text-align: right; +} + +#sum{ + text-align: left; +} +.sidebar { + /*background-color: lightgreen; + /*height: 800px;*/ + /* margin-left: 0;*/ +} + +.caption { + text-align: center; +} + +.jumbotron { + text-align: center; + padding-top: 0px; +} +.page-header { + text-align: center; + margin-top: 0px; +} + +.row { + height: 100%; + display: table-row; +} + +.row .no-float { + display: table-cell; + float: none; +} + +/* Sidebar modules for boxing content */ +.sidebar-module { + padding: 15px; + margin: 0 -15px 15px; +} +.sidebar-module-inset { + padding: 15px; + background-color: #f5f5f5; + border-radius: 4px; +} +.sidebar-module-inset p:last-child, +.sidebar-module-inset ul:last-child, +.sidebar-module-inset ol:last-child { + margin-bottom: 0; +} + + +#imgDish{ + width: 90%; +} +.knapp{ + margin-top: 20px +} +.pull-right{ + text-align: right; +} + +.content { + text-align: center; + padding-top: 25%; + text-shadow: 0px 4px 3px rgba(0,0,0,0.4) + 0px 8px 13px rgba(0,0,0,0.1), + 0px 18px 23px rgba(0,0,0,0.1); +} + +hr { + border: 0; + width: 400px; + height: 1px; + background-image: linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.75), rgba(255, 255, 255, 0)); +} +#collapseSide.collapsing { + margin-top: 10px; + margin-bottom: 10px +} +.margin{ + margin-right: 20px; + margin-top: 10px; + margin-left: 20px; +} + +.margin1{ + margin-bottom: 0px; +} From 19904a33cb551a8dbd18044ae6c0788619aab67a Mon Sep 17 00:00:00 2001 From: lindelindblad Date: Tue, 27 Feb 2018 09:27:20 +0100 Subject: [PATCH 49/64] lab 3 ok! --- Lab3/README.md | 26 +- Lab3/ej aktuell/lab 1/home.html | 62 +- Lab3/ej aktuell/lab 1/homeViewController.js | 12 +- Lab3/ej aktuell/lab 1/index.html | 74 +- Lab3/ej aktuell/lab 1/start.css | 64 +- Lab3/ej aktuell/lab 1/style.css | 56 +- Lab3/ej aktuell/lab 1/style2B.css | 142 ++-- Lab3/ej aktuell/lab 1/view-2B.html | 290 +++---- Lab3/ej aktuell/lab 1/view2-oaus.html | 70 +- Lab3/ej aktuell/lab 1/view2.html | 190 ++--- Lab3/ej aktuell/lab 1/view4.html | 288 +++---- Lab3/ej aktuell/lab 1/view4B.html | 264 +++--- Lab3/ej aktuell/lab 1/view5B.html | 150 ++-- Lab3/ej aktuell/lab 2/exampleView.js | 110 +-- Lab3/ej aktuell/lab 2/landingPage.html | 86 +- Lab3/ej aktuell/lab 2/mainPic.js | 50 +- Lab3/ej aktuell/lab 2/mainView5.js | 56 +- Lab3/ej aktuell/lab 2/view2.html | 220 ++--- Lab3/ej aktuell/lab 2/view3.html | 214 ++--- Lab3/ej aktuell/lab 2/view4.html | 226 ++--- Lab3/ej aktuell/lab 2/view5.html | 150 ++-- Lab3/ej aktuell/lab 2/view6.html | 216 ++--- Lab3/index.html | 536 ++++++------ Lab3/js/app.js | 198 ++--- Lab3/js/controller/oneDishViewController.js | 32 +- Lab3/js/controller/overviewViewController.js | 32 +- Lab3/js/controller/printViewController.js | 16 +- Lab3/js/controller/searchViewController.js | 39 +- Lab3/js/controller/sideViewController.js | 42 +- Lab3/js/controller/stateController.js | 166 ++-- Lab3/js/model/dinnerModel.js | 835 ++++++++++--------- Lab3/js/view/headerView.js | 20 +- Lab3/js/view/homeView.js | 20 +- Lab3/js/view/oneDishView.js | 124 +-- Lab3/js/view/overviewView.js | 92 +- Lab3/js/view/printView.js | 90 +- Lab3/js/view/searchView.js | 77 +- Lab3/js/view/sideView.js | 114 +-- Lab3/sem2-diskussion.txt | 3 - Lab3/style2D.css | 226 ++--- 40 files changed, 2837 insertions(+), 2841 deletions(-) mode change 100644 => 100755 Lab3/README.md mode change 100644 => 100755 Lab3/ej aktuell/lab 1/home.html mode change 100644 => 100755 Lab3/ej aktuell/lab 1/homeViewController.js mode change 100644 => 100755 Lab3/ej aktuell/lab 1/index.html mode change 100644 => 100755 Lab3/ej aktuell/lab 1/start.css mode change 100644 => 100755 Lab3/ej aktuell/lab 1/style.css mode change 100644 => 100755 Lab3/ej aktuell/lab 1/style2B.css mode change 100644 => 100755 Lab3/ej aktuell/lab 1/view-2B.html mode change 100644 => 100755 Lab3/ej aktuell/lab 1/view2-oaus.html mode change 100644 => 100755 Lab3/ej aktuell/lab 1/view2.html mode change 100644 => 100755 Lab3/ej aktuell/lab 1/view4.html mode change 100644 => 100755 Lab3/ej aktuell/lab 1/view4B.html mode change 100644 => 100755 Lab3/ej aktuell/lab 1/view5B.html mode change 100644 => 100755 Lab3/ej aktuell/lab 2/exampleView.js mode change 100644 => 100755 Lab3/ej aktuell/lab 2/landingPage.html mode change 100644 => 100755 Lab3/ej aktuell/lab 2/mainPic.js mode change 100644 => 100755 Lab3/ej aktuell/lab 2/mainView5.js mode change 100644 => 100755 Lab3/ej aktuell/lab 2/view2.html mode change 100644 => 100755 Lab3/ej aktuell/lab 2/view3.html mode change 100644 => 100755 Lab3/ej aktuell/lab 2/view4.html mode change 100644 => 100755 Lab3/ej aktuell/lab 2/view5.html mode change 100644 => 100755 Lab3/ej aktuell/lab 2/view6.html mode change 100644 => 100755 Lab3/index.html mode change 100644 => 100755 Lab3/js/app.js mode change 100644 => 100755 Lab3/js/controller/oneDishViewController.js mode change 100644 => 100755 Lab3/js/controller/overviewViewController.js mode change 100644 => 100755 Lab3/js/controller/printViewController.js mode change 100644 => 100755 Lab3/js/controller/searchViewController.js mode change 100644 => 100755 Lab3/js/controller/sideViewController.js mode change 100644 => 100755 Lab3/js/controller/stateController.js mode change 100644 => 100755 Lab3/js/model/dinnerModel.js mode change 100644 => 100755 Lab3/js/view/headerView.js mode change 100644 => 100755 Lab3/js/view/homeView.js mode change 100644 => 100755 Lab3/js/view/oneDishView.js mode change 100644 => 100755 Lab3/js/view/overviewView.js mode change 100644 => 100755 Lab3/js/view/printView.js mode change 100644 => 100755 Lab3/js/view/searchView.js mode change 100644 => 100755 Lab3/js/view/sideView.js delete mode 100644 Lab3/sem2-diskussion.txt mode change 100644 => 100755 Lab3/style2D.css diff --git a/Lab3/README.md b/Lab3/README.md old mode 100644 new mode 100755 index 1b91e7dac..e8687b16f --- a/Lab3/README.md +++ b/Lab3/README.md @@ -1,14 +1,14 @@ -Interaction Programing - Lab assignment - HTML -================================================= - -This project contains the startup code for HTML version of the Interaction Programing course lab assignment. For more details on how to complete the assignment follow the instructions on the [course website](https://www.kth.se/social/course/DH2642). - -What's in the project ------ - -* [index.html](https://github.com/kth-csc-iprog/dinnerplanner-html/blob/master/index.html) - the only HTML page you will have in this project (though while testing you can create more to make it easier). You will need to implement the skeleton of the layout there and then through code (JavaScript) create the rest -* [js/model/dinnerModel.js](https://github.com/kth-csc-iprog/dinnerplanner-html/blob/master/js/model/dinnerModel.js) - is JavaScript file that contains the model code. The file contains the model (dish, ingredient and general dinner model) as well as methods and comments that you need to fully implement to support the dinner functionalities (guests, selected dishes, etc.) -* [js/view/](https://github.com/kth-csc-iprog/dinnerplanner-html/tree/master/js/view) - here you can find a JavaScript code of an example view. The view sets up some initial components and their values. -* [js/app.js](https://github.com/kth-csc-iprog/dinnerplanner-html/blob/master/js/app.js) - this is the overall code of the application. It is responsible for initial setup of the app (when the page loads for the first time). -* [images/](https://github.com/kth-csc-iprog/dinnerplanner-html/tree/master/images) - folder contains some pictures you can use for your dishes +Interaction Programing - Lab assignment - HTML +================================================= + +This project contains the startup code for HTML version of the Interaction Programing course lab assignment. For more details on how to complete the assignment follow the instructions on the [course website](https://www.kth.se/social/course/DH2642). + +What's in the project +----- + +* [index.html](https://github.com/kth-csc-iprog/dinnerplanner-html/blob/master/index.html) - the only HTML page you will have in this project (though while testing you can create more to make it easier). You will need to implement the skeleton of the layout there and then through code (JavaScript) create the rest +* [js/model/dinnerModel.js](https://github.com/kth-csc-iprog/dinnerplanner-html/blob/master/js/model/dinnerModel.js) - is JavaScript file that contains the model code. The file contains the model (dish, ingredient and general dinner model) as well as methods and comments that you need to fully implement to support the dinner functionalities (guests, selected dishes, etc.) +* [js/view/](https://github.com/kth-csc-iprog/dinnerplanner-html/tree/master/js/view) - here you can find a JavaScript code of an example view. The view sets up some initial components and their values. +* [js/app.js](https://github.com/kth-csc-iprog/dinnerplanner-html/blob/master/js/app.js) - this is the overall code of the application. It is responsible for initial setup of the app (when the page loads for the first time). +* [images/](https://github.com/kth-csc-iprog/dinnerplanner-html/tree/master/images) - folder contains some pictures you can use for your dishes hej \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 1/home.html b/Lab3/ej aktuell/lab 1/home.html old mode 100644 new mode 100755 index 4b09a1dcc..07b1c748b --- a/Lab3/ej aktuell/lab 1/home.html +++ b/Lab3/ej aktuell/lab 1/home.html @@ -1,32 +1,32 @@ - - - - - - - - Dinner planner - - - - - - - - - -

Dinner Planner

- -
- -

- The path of the righteous man is beset on all sides by the iniquities of the selfish and the tyranny of evil men. Blessed is he who, in the name of charity and good will, shepherds the weak through the valley of darkness, for he is truly his brother's keeper and the finder of lost children. And I will strike down upon thee with great vengeance and furious anger those who would attempt to poison and destroy My brothers. And you will know My name is the Lord when I lay My vengeance upon thee. -

- -
- -
-
- - + + + + + + + + Dinner planner + + + + + + + + + +

Dinner Planner

+ +
+ +

+ The path of the righteous man is beset on all sides by the iniquities of the selfish and the tyranny of evil men. Blessed is he who, in the name of charity and good will, shepherds the weak through the valley of darkness, for he is truly his brother's keeper and the finder of lost children. And I will strike down upon thee with great vengeance and furious anger those who would attempt to poison and destroy My brothers. And you will know My name is the Lord when I lay My vengeance upon thee. +

+ +
+ +
+
+ + \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 1/homeViewController.js b/Lab3/ej aktuell/lab 1/homeViewController.js old mode 100644 new mode 100755 index cde9ff2e0..276759ec1 --- a/Lab3/ej aktuell/lab 1/homeViewController.js +++ b/Lab3/ej aktuell/lab 1/homeViewController.js @@ -1,7 +1,7 @@ -var HomeViewController = function(view, model) { - - view.startButton.click(function() { - console.log("funkar det"); - showSelectDish(); - }); +var HomeViewController = function(view, model) { + + view.startButton.click(function() { + console.log("funkar det"); + showSelectDish(); + }); } \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 1/index.html b/Lab3/ej aktuell/lab 1/index.html old mode 100644 new mode 100755 index 134df8389..a6f065e18 --- a/Lab3/ej aktuell/lab 1/index.html +++ b/Lab3/ej aktuell/lab 1/index.html @@ -1,38 +1,38 @@ - - - - - - - Dinner planner - - - - - - -
-

Dinner planner

-
-
- Number of guests: -
-
- - -
-
-
- - - - - - - - - - - - + + + + + + + Dinner planner + + + + + + +
+

Dinner planner

+
+
+ Number of guests: +
+
+ + +
+
+
+ + + + + + + + + + + + \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 1/start.css b/Lab3/ej aktuell/lab 1/start.css old mode 100644 new mode 100755 index 994d1f45f..a486f97aa --- a/Lab3/ej aktuell/lab 1/start.css +++ b/Lab3/ej aktuell/lab 1/start.css @@ -1,33 +1,33 @@ -body { - background: url("https://fthmb.tqn.com/uZwLBI5jpv1YjOTwGGmFuSyUhg4=/1920x1280/filters:fill(auto,1)/dish-918613_1920-5812723a3df78c2c73a334d9.jpg"); - background-size: cover; - background-position: center; - font-family: 'Lato', sans-serif; - color: #2c3e50; - - -} - -html { - height: 100%; -} - -h1, h3 { - font-weight: 700; -} - -.content { - text-align: center; - padding-top: 25%; - text-shadow: 0px 4px 3px rgba(0,0,0,0.4) - 0px 8px 13px rgba(0,0,0,0.1), - 0px 18px 23px rgba(0,0,0,0.1); -} - - -hr { - border: 0; - width: 400px; - height: 1px; - background-image: linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.75), rgba(255, 255, 255, 0)); +body { + background: url("https://fthmb.tqn.com/uZwLBI5jpv1YjOTwGGmFuSyUhg4=/1920x1280/filters:fill(auto,1)/dish-918613_1920-5812723a3df78c2c73a334d9.jpg"); + background-size: cover; + background-position: center; + font-family: 'Lato', sans-serif; + color: #2c3e50; + + +} + +html { + height: 100%; +} + +h1, h3 { + font-weight: 700; +} + +.content { + text-align: center; + padding-top: 25%; + text-shadow: 0px 4px 3px rgba(0,0,0,0.4) + 0px 8px 13px rgba(0,0,0,0.1), + 0px 18px 23px rgba(0,0,0,0.1); +} + + +hr { + border: 0; + width: 400px; + height: 1px; + background-image: linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.75), rgba(255, 255, 255, 0)); } \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 1/style.css b/Lab3/ej aktuell/lab 1/style.css old mode 100644 new mode 100755 index 0de523aa4..41423ca9b --- a/Lab3/ej aktuell/lab 1/style.css +++ b/Lab3/ej aktuell/lab 1/style.css @@ -1,28 +1,28 @@ -.startPage { - width: 80%; - max-width: 700px -} - -.row { - border: 1px solid black; -} - -.col { - border: 1px solid black; -} - -.viprovar { - border: 1px solid black; - height: 50px; - -} - -.hojd { - height: 500px; -} - -img { - width: 200px; - float: left; - margin: 1.66%; -} +.startPage { + width: 80%; + max-width: 700px +} + +.row { + border: 1px solid black; +} + +.col { + border: 1px solid black; +} + +.viprovar { + border: 1px solid black; + height: 50px; + +} + +.hojd { + height: 500px; +} + +img { + width: 200px; + float: left; + margin: 1.66%; +} diff --git a/Lab3/ej aktuell/lab 1/style2B.css b/Lab3/ej aktuell/lab 1/style2B.css old mode 100644 new mode 100755 index c092ab73b..1dbe7737a --- a/Lab3/ej aktuell/lab 1/style2B.css +++ b/Lab3/ej aktuell/lab 1/style2B.css @@ -1,71 +1,71 @@ -form{ - margin-bottom: 10px; -} -input#numberOfGuests{ - width: 40px; -} - -img{ - width: 100%; -} - -html,body,.container { - height:100%; -} - -table { - width: 100%; - border: 1px solid black; -} - -.sidebar { - background-color: lightgreen; - height: 800px; - /* margin-left: 0;*/ -} - -.nav-sidebar { - margin-right: -21px; /* 20px padding + 1px border */ - margin-bottom: 20px; - margin-left: -20px; -} -.nav-sidebar > li > a { - padding-right: 20px; - padding-left: 20px; -} - -.caption { - text-align: center; -} - -.jumbotron { - text-align: center; -} - -.row { - height: 100%; - display: table-row; -} - -.row .no-float { - display: table-cell; - float: none; -} - -/* Sidebar modules for boxing content */ -.sidebar-module { - padding: 15px; - margin: 0 -15px 15px; -} -.sidebar-module-inset { - padding: 15px; - background-color: #f5f5f5; - border-radius: 4px; -} -.sidebar-module-inset p:last-child, -.sidebar-module-inset ul:last-child, -.sidebar-module-inset ol:last-child { - margin-bottom: 0; -} - - +form{ + margin-bottom: 10px; +} +input#numberOfGuests{ + width: 40px; +} + +img{ + width: 100%; +} + +html,body,.container { + height:100%; +} + +table { + width: 100%; + border: 1px solid black; +} + +.sidebar { + background-color: lightgreen; + height: 800px; + /* margin-left: 0;*/ +} + +.nav-sidebar { + margin-right: -21px; /* 20px padding + 1px border */ + margin-bottom: 20px; + margin-left: -20px; +} +.nav-sidebar > li > a { + padding-right: 20px; + padding-left: 20px; +} + +.caption { + text-align: center; +} + +.jumbotron { + text-align: center; +} + +.row { + height: 100%; + display: table-row; +} + +.row .no-float { + display: table-cell; + float: none; +} + +/* Sidebar modules for boxing content */ +.sidebar-module { + padding: 15px; + margin: 0 -15px 15px; +} +.sidebar-module-inset { + padding: 15px; + background-color: #f5f5f5; + border-radius: 4px; +} +.sidebar-module-inset p:last-child, +.sidebar-module-inset ul:last-child, +.sidebar-module-inset ol:last-child { + margin-bottom: 0; +} + + diff --git a/Lab3/ej aktuell/lab 1/view-2B.html b/Lab3/ej aktuell/lab 1/view-2B.html old mode 100644 new mode 100755 index 1a7e71712..628aae43e --- a/Lab3/ej aktuell/lab 1/view-2B.html +++ b/Lab3/ej aktuell/lab 1/view-2B.html @@ -1,146 +1,146 @@ - - - - View2 update 2 - - - - - - - - - -
-
-
-

Dinner Planner

-
-
- -
-
mängdsakSEKpris
' + this.dish.ingredients[i].quantity + ' ' + this.dish.ingredients[i].unit + '' + this.dish.ingredients[i].name + 'SEK' + Price + '
SEK ' + sum + '
' + menu[i].name + '' + dishPrice + '
' + menu[i].name + '' + dishPrice + '
- - - - -
Dish NameCost
-
- -
- -
-
-

Add another dish

- -
- - - - -
-
-
- - - - - - - - - - - + + + + View2 update 2 + + + + + + + + + +
+
+
+

Dinner Planner

+
+
+ +
+ + +
+
+

Add another dish

+ +
+ + + + +
+
+
+ + + + + + + + + + + \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 1/view2-oaus.html b/Lab3/ej aktuell/lab 1/view2-oaus.html old mode 100644 new mode 100755 index d55d86001..e2a568b3e --- a/Lab3/ej aktuell/lab 1/view2-oaus.html +++ b/Lab3/ej aktuell/lab 1/view2-oaus.html @@ -1,36 +1,36 @@ - - - - - - - - Dinner planner - - - - - - - - - -

Dinner Planner

- -
-
-
-
Hejsan
-
-
-
-
rad 1
-
rad 2
-
-
-
- -
- - + + + + + + + + Dinner planner + + + + + + + + + +

Dinner Planner

+ +
+
+
+
Hejsan
+
+
+
+
rad 1
+
rad 2
+
+
+
+ +
+ + \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 1/view2.html b/Lab3/ej aktuell/lab 1/view2.html old mode 100644 new mode 100755 index ca48564cc..7ba32d953 --- a/Lab3/ej aktuell/lab 1/view2.html +++ b/Lab3/ej aktuell/lab 1/view2.html @@ -1,96 +1,96 @@ - - - - - - - - Dinner planner - - - - - - - - - -

Dinner Planner

- - - -
-
-
-
- -

My Dinner

- -
-
- Number of guests: -
-
- - -
-
-
-
- -
-

Add another dish

- - -
- - - - -
- - - -
-
- -
- -
- -
- -
- -
- -
- -
- - -
-
- - - - -
- - - -
- - + + + + + + + + Dinner planner + + + + + + + + + +

Dinner Planner

+ + + +
+
+
+
+ +

My Dinner

+ +
+
+ Number of guests: +
+
+ + +
+
+
+
+ +
+

Add another dish

+ + +
+ + + + +
+ + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + +
+
+ + + + +
+ + + +
+ + \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 1/view4.html b/Lab3/ej aktuell/lab 1/view4.html old mode 100644 new mode 100755 index 0a01a215e..e4caf2751 --- a/Lab3/ej aktuell/lab 1/view4.html +++ b/Lab3/ej aktuell/lab 1/view4.html @@ -1,145 +1,145 @@ - - - - View 4 - - - - - - - - - -
-
- -

Dinner Planner

- -
- - - - -
- - -
- -
- -
-

Add another dish

- - -
- - - - -
-
-
- -
-
- -
-
- -
- - -
-
- - - - - - - - - - - - - - - - - - - - - - + + + + View 4 + + + + + + + + + +
+
+ +

Dinner Planner

+ +
+ + + + +
+ + +
+ +
+ +
+

Add another dish

+ + +
+ + + + +
+
+
+ +
+
+ +
+
+ +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 1/view4B.html b/Lab3/ej aktuell/lab 1/view4B.html old mode 100644 new mode 100755 index 5498c3307..1dab260cf --- a/Lab3/ej aktuell/lab 1/view4B.html +++ b/Lab3/ej aktuell/lab 1/view4B.html @@ -1,132 +1,132 @@ - - - - View 4 - - - - - - - - - -
-
-
-

Dinner Planner

-
-
- -
- - - - -
-
- -
-

Add another dish

- - -
- - - - -
- -
-
- - -
-
- - - - - - - - - - - - -  + + + + View 4 + + + + + + + + + +
+
+
+

Dinner Planner

+
+
+ +
+ + + + +
+
+ +
+

Add another dish

+ + +
+ + + + +
+ +
+
+ + +
+
+ + + + + + + + + + + + +  diff --git a/Lab3/ej aktuell/lab 1/view5B.html b/Lab3/ej aktuell/lab 1/view5B.html old mode 100644 new mode 100755 index e60c1414c..89d81eaee --- a/Lab3/ej aktuell/lab 1/view5B.html +++ b/Lab3/ej aktuell/lab 1/view5B.html @@ -1,76 +1,76 @@ - - - - View 5 - - - - - - - - - -
-
-
-

Dinner Planner

-
-
- -
-
-

My dinner: 3 people

-
-
- -
-
- - -
-
- - -
-
-
    -

    Total:

    -
- -
    -

    -
- - -
-
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - + + + + View 5 + + + + + + + + + +
+
+
+

Dinner Planner

+
+
+ +
+
+

My dinner: 3 people

+
+
+ +
+
+ + +
+
+ + +
+
+
    +

    Total:

    +
+ +
    +

    +
+ + +
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 2/exampleView.js b/Lab3/ej aktuell/lab 2/exampleView.js old mode 100644 new mode 100755 index 41f695db8..70a3a9c64 --- a/Lab3/ej aktuell/lab 2/exampleView.js +++ b/Lab3/ej aktuell/lab 2/exampleView.js @@ -1,55 +1,55 @@ -/** ExampleView Object constructor - * - * This object represents the code for one specific view (in this case the Example view). - * - * It is responsible for: - * - constructing the view (e.g. if you need to create some HTML elements procedurally) - * - populating the view with the data - * - updating the view when the data changes - * - * You should create a view Object like this for every view in your UI. - * - * @param {jQuery object} container - references the HTML parent element that contains the view. - * @param {Object} model - the reference to the Dinner Model - */ -var ExampleView = function (container, model) { - - /** - * We use the @method find() on @var {jQuery object} container to look for various elements - * inside the view in orther to use them later on. For instance: - * - * @var {jQuery object} numberOfGuests is a reference to the element that - * represents the placeholder for where we want to show the number of guests. It's - * a reference to HTML element (wrapped in jQuery object for added benefit of jQuery methods) - * and we can use it to modify , for example to populate it with dynamic data (for now - * only 'Hello world', but you should change this by end of Lab 1). - * - * We use variables when we want to make the reference private (only available within) the - * ExampleView. - * - * IMPORTANT: Never use $('someSelector') directly in the views. Always use container.find - * or some other way of searching only among the containers child elements. In this way you - * make your view code modular and ensure it dosn't break if by mistake somebody else - * in some other view gives the same ID to another element. - * - */ - var numberOfGuests = container.find("#numberOfGuests"); - console.log(model.getNumberOfGuests()); - numberOfGuests.html(model.getNumberOfGuests()); - - /** - * When we want references to some view elements to be available from outside of view, we - * define them as this.someName. We don't need this in Lab 1 yet, but in Lab 2 it - * will be important for assigning listeners to these buttons, because the listeners - * should not be assigned in the view, but rather in controller. - * - * We can then, in some other code, use exampleView.plusButton to reference the - * this button and do something with it (see Lab 2). - * - */ - this.plusButton = container.find("#plusGuest"); - this.minusButton = container.find("#minusGuest"); - - -} - +/** ExampleView Object constructor + * + * This object represents the code for one specific view (in this case the Example view). + * + * It is responsible for: + * - constructing the view (e.g. if you need to create some HTML elements procedurally) + * - populating the view with the data + * - updating the view when the data changes + * + * You should create a view Object like this for every view in your UI. + * + * @param {jQuery object} container - references the HTML parent element that contains the view. + * @param {Object} model - the reference to the Dinner Model + */ +var ExampleView = function (container, model) { + + /** + * We use the @method find() on @var {jQuery object} container to look for various elements + * inside the view in orther to use them later on. For instance: + * + * @var {jQuery object} numberOfGuests is a reference to the element that + * represents the placeholder for where we want to show the number of guests. It's + * a reference to HTML element (wrapped in jQuery object for added benefit of jQuery methods) + * and we can use it to modify , for example to populate it with dynamic data (for now + * only 'Hello world', but you should change this by end of Lab 1). + * + * We use variables when we want to make the reference private (only available within) the + * ExampleView. + * + * IMPORTANT: Never use $('someSelector') directly in the views. Always use container.find + * or some other way of searching only among the containers child elements. In this way you + * make your view code modular and ensure it dosn't break if by mistake somebody else + * in some other view gives the same ID to another element. + * + */ + var numberOfGuests = container.find("#numberOfGuests"); + console.log(model.getNumberOfGuests()); + numberOfGuests.html(model.getNumberOfGuests()); + + /** + * When we want references to some view elements to be available from outside of view, we + * define them as this.someName. We don't need this in Lab 1 yet, but in Lab 2 it + * will be important for assigning listeners to these buttons, because the listeners + * should not be assigned in the view, but rather in controller. + * + * We can then, in some other code, use exampleView.plusButton to reference the + * this button and do something with it (see Lab 2). + * + */ + this.plusButton = container.find("#plusGuest"); + this.minusButton = container.find("#minusGuest"); + + +} + diff --git a/Lab3/ej aktuell/lab 2/landingPage.html b/Lab3/ej aktuell/lab 2/landingPage.html old mode 100644 new mode 100755 index ba6d3d3a3..e3c2b682a --- a/Lab3/ej aktuell/lab 2/landingPage.html +++ b/Lab3/ej aktuell/lab 2/landingPage.html @@ -1,44 +1,44 @@ - - - - Dinner Planner - - - - - - - - - - - - - - - -
-
-
-
-

Dinner Planner

-

- Normally, both your asses would be dead as fucking fried chicken, but you happen to pull this shit while I'm in a transitional period so I don't wanna kill you, I wanna help you. But I can't give you this case, it don't belong to me. Besides, I've already been through too much shit this morning over this case to hand it over to your dumb ass. -

-
- - -
-
-
-
- - - - - - - - + + + + Dinner Planner + + + + + + + + + + + + + + + +
+
+
+
+

Dinner Planner

+

+ Normally, both your asses would be dead as fucking fried chicken, but you happen to pull this shit while I'm in a transitional period so I don't wanna kill you, I wanna help you. But I can't give you this case, it don't belong to me. Besides, I've already been through too much shit this morning over this case to hand it over to your dumb ass. +

+
+ + +
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 2/mainPic.js b/Lab3/ej aktuell/lab 2/mainPic.js old mode 100644 new mode 100755 index b2ec3d02a..4bc378d19 --- a/Lab3/ej aktuell/lab 2/mainPic.js +++ b/Lab3/ej aktuell/lab 2/mainPic.js @@ -1,26 +1,26 @@ - -/*main pictures -gets the pictures and name of the dishes for view2 and 4 */ -var MainPic = function (container, model) { - this.container = container; - /*var menu =[1,2,101,102]; - Ska ändras i labb 2, ska kopplas till det sökta. */ - /*var menu = model.getFullMenu();*/ - - - //var selected = container.find("#selectOption"); - //var type = selected.options[selected.selectedIndex].text; - var menu = model.getAllDishes("dessert"); - var string = ''; - var picBox = container.find("#template"); - - - for(i in menu){ - - string += ''; - } - - picBox.html(string); - -} + +/*main pictures +gets the pictures and name of the dishes for view2 and 4 */ +var MainPic = function (container, model) { + this.container = container; + /*var menu =[1,2,101,102]; + Ska ändras i labb 2, ska kopplas till det sökta. */ + /*var menu = model.getFullMenu();*/ + + + //var selected = container.find("#selectOption"); + //var type = selected.options[selected.selectedIndex].text; + var menu = model.getAllDishes("dessert"); + var string = ''; + var picBox = container.find("#template"); + + + for(i in menu){ + + string += ''; + } + + picBox.html(string); + +} \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 2/mainView5.js b/Lab3/ej aktuell/lab 2/mainView5.js old mode 100644 new mode 100755 index 433782027..9837129af --- a/Lab3/ej aktuell/lab 2/mainView5.js +++ b/Lab3/ej aktuell/lab 2/mainView5.js @@ -1,29 +1,29 @@ - -/*main pictures -gets the pictures and name of the dishes for view2 and 4 */ -var MainView5 = function (container, model) { - /*var menu =[1,2,101,102] - Ska ändras i labb 2, ska kopplas till det sökta. */ - var menu = model.getFullMenu(); - var string = ''; - var Pictures = container.find("#pictures"); - var Summa = container.find("#summa"); - var sum = 0; - - for(i in menu){ - for(n in menu[i].ingredients){ - sum += menu[i].ingredients[n].price; - } - string += ''; - - } - - - - - Pictures.html(string); - - Summa.html(sum + ' SEK'); - -} + +/*main pictures +gets the pictures and name of the dishes for view2 and 4 */ +var MainView5 = function (container, model) { + /*var menu =[1,2,101,102] + Ska ändras i labb 2, ska kopplas till det sökta. */ + var menu = model.getFullMenu(); + var string = ''; + var Pictures = container.find("#pictures"); + var Summa = container.find("#summa"); + var sum = 0; + + for(i in menu){ + for(n in menu[i].ingredients){ + sum += menu[i].ingredients[n].price; + } + string += ''; + + } + + + + + Pictures.html(string); + + Summa.html(sum + ' SEK'); + +} \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 2/view2.html b/Lab3/ej aktuell/lab 2/view2.html old mode 100644 new mode 100755 index 52dca8864..536705377 --- a/Lab3/ej aktuell/lab 2/view2.html +++ b/Lab3/ej aktuell/lab 2/view2.html @@ -1,111 +1,111 @@ - - - - View2 update 2 - - - - - - - - - -
-
-
-

Dinner Planner

-
-
- - - -
- - - - -
-
- -
-

Find a dish

- - -
- - - - -
- -
-
- -
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - + + + + View2 update 2 + + + + + + + + + +
+
+
+

Dinner Planner

+
+
+ + + +
+ + + + +
+
+ +
+

Find a dish

+ + +
+ + + + +
+ +
+
+ +
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 2/view3.html b/Lab3/ej aktuell/lab 2/view3.html old mode 100644 new mode 100755 index 27ff5c671..71d8e6a6e --- a/Lab3/ej aktuell/lab 2/view3.html +++ b/Lab3/ej aktuell/lab 2/view3.html @@ -1,108 +1,108 @@ - - - - View 3 - - - - - - - - - -
-
-
-

Dinner Planner

-
-
- -
- - - - -
-
-
-

-
- -
- - -
- -
- -

-
- -
-
- -
-
-

Preparation

-

-
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - + + + + View 3 + + + + + + + + + +
+
+
+

Dinner Planner

+
+
+ +
+ + + + +
+
+
+

+
+ +
+ + +
+ +
+ +

+
+ +
+
+ +
+
+

Preparation

+

+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 2/view4.html b/Lab3/ej aktuell/lab 2/view4.html old mode 100644 new mode 100755 index 2e0c3f81e..d7f4f3ff4 --- a/Lab3/ej aktuell/lab 2/view4.html +++ b/Lab3/ej aktuell/lab 2/view4.html @@ -1,114 +1,114 @@ - - - - View 4 - - - - - - - - -
- -
-
-

Dinner Planner

-
-
- - -
- - - - -
- -
- -
-

Add another dish

- - -
- - - - -
-
-
- -
-
- -
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - + + + + View 4 + + + + + + + + +
+ +
+
+

Dinner Planner

+
+
+ + +
+ + + + +
+ +
+ +
+

Add another dish

+ + +
+ + + + +
+
+
+ +
+
+ +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 2/view5.html b/Lab3/ej aktuell/lab 2/view5.html old mode 100644 new mode 100755 index e25a0a927..845c4080d --- a/Lab3/ej aktuell/lab 2/view5.html +++ b/Lab3/ej aktuell/lab 2/view5.html @@ -1,76 +1,76 @@ - - - - View 5 - - - - - - - - - -
-
-
-

Dinner Planner

-
-
- -
-
-

My dinner: 3 people

-
-
- -
-
- - -
-
- - -
-
-
    -

    Total:

    -
- -
    -

    -
- - -
-
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - + + + + View 5 + + + + + + + + + +
+
+
+

Dinner Planner

+
+
+ +
+
+

My dinner: 3 people

+
+
+ +
+
+ + +
+
+ + +
+
+
    +

    Total:

    +
+ +
    +

    +
+ + +
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Lab3/ej aktuell/lab 2/view6.html b/Lab3/ej aktuell/lab 2/view6.html old mode 100644 new mode 100755 index 3cf213fff..aa1736ff2 --- a/Lab3/ej aktuell/lab 2/view6.html +++ b/Lab3/ej aktuell/lab 2/view6.html @@ -1,109 +1,109 @@ - - - - View 6 - - - - - - - - - -
-
-
-

Dinner Planner

-
-
- -
-
-

My dinner: 3 people

-
-
- -
-
- - -
- - -
- - -
- -
- -

Freanch Toast

-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies.

-
- -
-

Preparation

-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies. Nulla in augue lacinia, condimentum tellus ac, semper purus. Suspendisse commodo elit at velit tincidunt, ac laoreet ligula tincidunt.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet.

- -
-
-
- -
- - -
- -
- -

Meatballs

-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies.

-
- -
-

Preparation

-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies. Nulla in augue lacinia, condimentum tellus ac, semper purus. Suspendisse commodo elit at velit tincidunt, ac laoreet ligula tincidunt.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet.

- -
-
-
- -
- - -
- -
- -

Ice Cream

-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies.

-
- -
-

Preparation

-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies. Nulla in augue lacinia, condimentum tellus ac, semper purus. Suspendisse commodo elit at velit tincidunt, ac laoreet ligula tincidunt.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet.

- -
-
-
- - - - - - - - - - - - - - - - - -
- + + + + View 6 + + + + + + + + + +
+
+
+

Dinner Planner

+
+
+ +
+
+

My dinner: 3 people

+
+
+ +
+
+ + +
+ + +
+ + +
+ +
+ +

Freanch Toast

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies.

+
+ +
+

Preparation

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies. Nulla in augue lacinia, condimentum tellus ac, semper purus. Suspendisse commodo elit at velit tincidunt, ac laoreet ligula tincidunt.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet.

+ +
+
+
+ +
+ + +
+ +
+ +

Meatballs

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies.

+
+ +
+

Preparation

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies. Nulla in augue lacinia, condimentum tellus ac, semper purus. Suspendisse commodo elit at velit tincidunt, ac laoreet ligula tincidunt.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet.

+ +
+
+
+ +
+ + +
+ +
+ +

Ice Cream

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies.

+
+ +
+

Preparation

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet. Sed eget luctus ipsum. Morbi eleifend pharetra justo et ultricies. Nulla in augue lacinia, condimentum tellus ac, semper purus. Suspendisse commodo elit at velit tincidunt, ac laoreet ligula tincidunt.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sit amet iaculis ex. Aenean vel cursus mi, eget egestas risus. Aenean ex erat, accumsan eu sapien vel, lacinia aliquet ante. Integer at tortor ultrices, cursus arcu quis, sagittis felis. Fusce ullamcorper velit in nulla auctor imperdiet.

+ +
+
+
+ + + + + + + + + + + + + + + + + +
+ \ No newline at end of file diff --git a/Lab3/index.html b/Lab3/index.html old mode 100644 new mode 100755 index a02068095..471cb9141 --- a/Lab3/index.html +++ b/Lab3/index.html @@ -1,269 +1,269 @@ - - - - DinnerPlanner - - - - - - - - - - - - - - - - -
-
-
-
-

Dinner Planner

-

- Normally, both your asses would be dead as fucking fried chicken, but you happen to pull this shit while I'm in a transitional period so I don't wanna kill you, I wanna help you. But I can't give you this case, it don't belong to me. Besides, I've already been through too much shit this morning over this case to hand it over to your dumb ass. -

-
- - -
-
-
-
- - - - -
- - -
- - - - -
- -
-

Find a dish

- - -
- - - - - -
-
- - - -
- -
- - -
- - -
-
-
- -
- -
- - -
- -
- -

-
- - - - - - - -
-
- -
-
-

Preparation

-

-
-
-
- - -
- -
- - -
- - -
-
- - -
-
- -
    -

    Total:

    -
- -
    -

    -
- -
-
-
-
- -
-
-
- - -
-
- - -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + DinnerPlanner + + + + + + + + + + + + + + + + +
+
+
+
+

Dinner Planner

+

+ Normally, both your asses would be dead as fucking fried chicken, but you happen to pull this shit while I'm in a transitional period so I don't wanna kill you, I wanna help you. But I can't give you this case, it don't belong to me. Besides, I've already been through too much shit this morning over this case to hand it over to your dumb ass. +

+
+ + +
+
+
+
+ + + + +
+ + +
+ + + + +
+ +
+

Find a dish

+ + +
+ + + + + +
+
+ + + +
+ +
+ + +
+ + +
+
+
+ +
+ +
+ + +
+ +
+ +

+
+ + + + + + + +
+
+ +
+
+

Preparation

+

+
+
+
+ + +
+ +
+ + +
+ + +
+
+ + +
+
+ +
    +

    Total:

    +
+ +
    +

    +
+ +
+
+
+
+ +
+
+
+ + +
+
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Lab3/js/app.js b/Lab3/js/app.js old mode 100644 new mode 100755 index 973c1d75c..c09f71a75 --- a/Lab3/js/app.js +++ b/Lab3/js/app.js @@ -1,99 +1,101 @@ -$(function() { - - //We instantiate our model - var model = new DinnerModel(); - - // And create the instance of our views - - // 1. homeView - var homeView = new HomeView($("#homeView"), model); - - // headerView - var headerView = new HeaderView($("#header"), model); - // 2.sideView - var sideView = new SideView($("#sideView"), model); - - // 3.searchView (inkl maträtterna nedanför) - var searchView = new SearchView($("#searchView"), model); - - // 4. oneDishView (inkl div med recept som uppdateras) - var oneDishView = new OneDishView($("#oneDishView"), model); - - // 5. fullMenuView -overviewView - var overviewView = new OverviewView($("#overview"), model); - - // 6. printView - var printView = new PrintView($("#printView"), model); - - // Controllers - var searchViewController = new SearchViewController(searchView, model, this); - - var sideViewController = new SideViewController(sideView, model, this); - - var oneDishViewController = new OneDishViewController(oneDishView, model, this); - - var overviewViewController = new OverviewViewController(overviewView, model, this); - - var printViewController = new PrintViewController(printView, model, this); - - -/*General State Controller*/ - var startDinner = function() { - homeView.startButton.click(function() { - homeView.container.hide(); - sideView.container.show(); - searchView.container.show() - headerView.container.show(); - }); - } - - this.oneDish = function(){ - sideView.container.show(); - searchView.container.hide(); - headerView.container.show(); - oneDishView.loadView(); - oneDishView.container.show(); - - } - this.overview = function(){ - searchView.container.hide(); - oneDishView.container.hide(); - searchView.container.hide(); - sideView.container.hide(); - overviewView.container.show(); - - } - this.printRecipe = function(){ - overviewView.container.hide(); - printView.container.show(); - - } - - this.backToSearch = function() { - oneDishView.container.hide(); - overviewView.container.hide(); - printView.container.hide(); - sideView.container.show(); - searchView.container.show(); - } - - // Gömmer allt utom start - $("#header").hide(); - $("#sideView").hide(); - $("#searchView").hide(); - $("#oneDishView").hide(); - $("#overview").hide(); - $("#printView").hide(); - - startDinner(); - - - - /** - * IMPORTANT: app.js is the only place where you are allowed to - * use the $('someSelector') to search for elements in the whole HTML. - * In other places you should limit the search only to the children - * of the specific view you're working with (see exampleView.js). - */ - +$(function() { + + //We instantiate our model + var model = new DinnerModel(); + + // And create the instance of our views + + // 1. homeView + var homeView = new HomeView($("#homeView"), model); + + // headerView + var headerView = new HeaderView($("#header"), model); + // 2.sideView + var sideView = new SideView($("#sideView"), model); + + // 3.searchView (inkl maträtterna nedanför) + var searchView = new SearchView($("#searchView"), model); + + // 4. oneDishView (inkl div med recept som uppdateras) + var oneDishView = new OneDishView($("#oneDishView"), model); + + // 5. fullMenuView -overviewView + var overviewView = new OverviewView($("#overview"), model); + + + // 6. printView + var printView = new PrintView($("#printView"), model); + + + // Controllers + var searchViewController = new SearchViewController(searchView, model, this); + + var sideViewController = new SideViewController(sideView, model, this); + + var oneDishViewController = new OneDishViewController(oneDishView, model, this); + + var overviewViewController = new OverviewViewController(overviewView, model, this); + + var printViewController = new PrintViewController(printView, model, this); + + +/*General State Controller*/ + var startDinner = function() { + homeView.startButton.click(function() { + homeView.container.hide(); + sideView.container.show(); + searchView.container.show() + headerView.container.show(); + }); + } + + this.oneDish = function(){ + sideView.container.show(); + searchView.container.hide(); + headerView.container.show(); + oneDishView.loadView(); + oneDishView.container.show(); + + } + this.overview = function(){ + searchView.container.hide(); + oneDishView.container.hide(); + searchView.container.hide(); + sideView.container.hide(); + overviewView.container.show(); + + } + this.printRecipe = function(){ + overviewView.container.hide(); + printView.container.show(); + + } + + this.backToSearch = function() { + oneDishView.container.hide(); + overviewView.container.hide(); + printView.container.hide(); + sideView.container.show(); + searchView.container.show(); + } + + // Gömmer allt utom start + $("#header").hide(); + $("#sideView").hide(); + $("#searchView").hide(); + $("#oneDishView").hide(); + $("#overview").hide(); + $("#printView").hide(); + + startDinner(); + + + + /** + * IMPORTANT: app.js is the only place where you are allowed to + * use the $('someSelector') to search for elements in the whole HTML. + * In other places you should limit the search only to the children + * of the specific view you're working with (see exampleView.js). + */ + }); \ No newline at end of file diff --git a/Lab3/js/controller/oneDishViewController.js b/Lab3/js/controller/oneDishViewController.js old mode 100644 new mode 100755 index 6916662cd..83aa818a9 --- a/Lab3/js/controller/oneDishViewController.js +++ b/Lab3/js/controller/oneDishViewController.js @@ -1,17 +1,17 @@ -var OneDishViewController = function(view, model, sControl) { - var view = view; - var model = model; - var backButton = view.container.find("#backButton"); - var add = view.container.find("#add"); //kallas på i controller - var sControl = sControl; - - add.click(function() { - model.addDishToMenu(view.dish.id); - }); - - backButton.click(function() { - sControl.backToSearch(); - }); - - +var OneDishViewController = function(view, model, sControl) { + var view = view; + var model = model; + var backButton = view.container.find("#backButton"); + var add = view.container.find("#add"); //kallas på i controller + var sControl = sControl; + + add.click(function() { + model.addDishToMenu(view.dish.id); + }); + + backButton.click(function() { + sControl.backToSearch(); + }); + + } \ No newline at end of file diff --git a/Lab3/js/controller/overviewViewController.js b/Lab3/js/controller/overviewViewController.js old mode 100644 new mode 100755 index 8df50a5ff..f2b64c063 --- a/Lab3/js/controller/overviewViewController.js +++ b/Lab3/js/controller/overviewViewController.js @@ -1,17 +1,17 @@ -var OverviewViewController = function(view, model, sControl) { - this.view = view; - this.model = model; - - var backButton = view.container.find("#back"); - var printButton = view.container.find("#print"); - - backButton.click(function() { - sControl.backToSearch(); - }); - - printButton.click(function(){ - sControl.printRecipe(); - }); - - +var OverviewViewController = function(view, model, sControl) { + this.view = view; + this.model = model; + + var backButton = view.container.find("#back"); + var printButton = view.container.find("#print"); + + backButton.click(function() { + sControl.backToSearch(); + }); + + printButton.click(function(){ + sControl.printRecipe(); + }); + + } \ No newline at end of file diff --git a/Lab3/js/controller/printViewController.js b/Lab3/js/controller/printViewController.js old mode 100644 new mode 100755 index 0b4321dea..3b11b3c48 --- a/Lab3/js/controller/printViewController.js +++ b/Lab3/js/controller/printViewController.js @@ -1,9 +1,9 @@ -var PrintViewController = function(view, model, sControl) { - this.view = view; - this.model = model; - var backButton = view.container.find("#Back"); - - backButton.click(function() { - sControl.backToSearch(); - }); +var PrintViewController = function(view, model, sControl) { + this.view = view; + this.model = model; + var backButton = view.container.find("#Back"); + + backButton.click(function() { + sControl.backToSearch(); + }); } \ No newline at end of file diff --git a/Lab3/js/controller/searchViewController.js b/Lab3/js/controller/searchViewController.js old mode 100644 new mode 100755 index a8d2b9c8c..1b21c4092 --- a/Lab3/js/controller/searchViewController.js +++ b/Lab3/js/controller/searchViewController.js @@ -1,22 +1,19 @@ - -var SearchViewController = function(view, model, sControl) { - var view = view; - var sControl = sControl; - var dishesView = new Array(); - //var textInput = view.container.find("#keywords"); //document.getElementById("keywords"); // - var dishesView = view.container.find(".thumbnail"); - - - - view.searchButton.click(function() { - view.loadView(); - }); - - view.picBox.on("click", ".thumbnail", function(){ - console.log("funkar"); - model.selectDishRecipe(this.id); - //textInput.value = ""; // nollställer keywordsfönstret när man tryckt sök. - sControl.oneDish(); - - }); + +var SearchViewController = function(view, model, sControl) { + var view = view; + var sControl = sControl; + var dishesView = new Array(); + //var textInput = view.container.find("#keywords"); //document.getElementById("keywords"); // + var dishesView = view.container.find(".thumbnail"); + + + view.searchButton.click(function() { + view.loadView(); + }); + + view.picBox.on("click", ".thumbnail", function(){ + model.selectDishRecipe(this.id); + //textInput.value = ""; // nollställer keywordsfönstret när man tryckt sök. + sControl.oneDish(); + }); } \ No newline at end of file diff --git a/Lab3/js/controller/sideViewController.js b/Lab3/js/controller/sideViewController.js old mode 100644 new mode 100755 index 3b11ff234..fe7fd794c --- a/Lab3/js/controller/sideViewController.js +++ b/Lab3/js/controller/sideViewController.js @@ -1,22 +1,22 @@ -var SideViewController = function(view, model, sControl) { - this.view = view; - this.model = model; - - var plusButton = view.container.find("#plusGuest"); // used by controller - var minusButton = view.container.find("#minusGuest"); - var confirmButton = view.container.find("#confirm"); - - - plusButton.click(function(){ - model.setNumberOfGuests(model.getNumberOfGuests() + 1); - }); - - minusButton.click(function(){ - model.setNumberOfGuests(model.getNumberOfGuests() - 1); - }); - - confirmButton.click(function(){ - sControl.overview(); - }); - +var SideViewController = function(view, model, sControl) { + this.view = view; + this.model = model; + + var plusButton = view.container.find("#plusGuest"); // used by controller + var minusButton = view.container.find("#minusGuest"); + var confirmButton = view.container.find("#confirm"); + + + plusButton.click(function(){ + model.setNumberOfGuests(model.getNumberOfGuests() + 1); + }); + + minusButton.click(function(){ + model.setNumberOfGuests(model.getNumberOfGuests() - 1); + }); + + confirmButton.click(function(){ + sControl.overview(); + }); + } \ No newline at end of file diff --git a/Lab3/js/controller/stateController.js b/Lab3/js/controller/stateController.js old mode 100644 new mode 100755 index 5a1ef4146..ed38b77f9 --- a/Lab3/js/controller/stateController.js +++ b/Lab3/js/controller/stateController.js @@ -1,84 +1,84 @@ -var StateController = function(view1, view2, view3, view4, view5, view6, view7) { - - var homeView = view1; - var sideView = view2; - var searchView = view3; - var headerView = view4; - var oneDishView = view5; - var overviewView = view6; - var printView = view7; - - var startDinner = function() { - homeView.startButton.click(function() { - homeView.container.hide(); - sideView.container.show(); - searchView.container.show() - headerView.container.show(); - - //kunde inte flytta den till searchviewController, då gick det inte att anropa funktionen. - //ändra till bilderna som knappar istället för test! - searchView.testButton.click(function() { - oneDish(); - }); - - - }); - } - var oneDish = function(){ - sideView.container.show(); - searchView.container.hide(); - headerView.container.show(); - oneDishView.container.show(); - - oneDishView.backButton.click(function() { - oneDishView.container.hide(); - searchView.container.show(); - }); - //måste fungera i både oneDish och SearchView - - } - var overview = function(){ - searchView.container.hide(); - oneDishView.container.hide(); - searchView.container.hide(); - sideView.container.hide(); - overviewView.container.show(); - - overviewView.backButton.click(function() { - overviewView.container.hide(); - searchView.container.show(); - sideView.container.show(); - - }); - overviewView.printButton.click(function(){ - printRecipe(); - - }); - } - var printRecipe = function(){ - overviewView.container.hide(); - printView.container.show(); - - printView.BackButton.click(function() { - printView.container.hide(); - sideView.container.show(); - searchView.container.show(); - - }); - - - - } - sideView.confirmButton.click(function(){ - overview(); - }); - - - - - - - startDinner(); - searchView.updateView(); - +var StateController = function(view1, view2, view3, view4, view5, view6, view7) { + + var homeView = view1; + var sideView = view2; + var searchView = view3; + var headerView = view4; + var oneDishView = view5; + var overviewView = view6; + var printView = view7; + + var startDinner = function() { + homeView.startButton.click(function() { + homeView.container.hide(); + sideView.container.show(); + searchView.container.show() + headerView.container.show(); + + //kunde inte flytta den till searchviewController, då gick det inte att anropa funktionen. + //ändra till bilderna som knappar istället för test! + searchView.testButton.click(function() { + oneDish(); + }); + + + }); + } + var oneDish = function(){ + sideView.container.show(); + searchView.container.hide(); + headerView.container.show(); + oneDishView.container.show(); + + oneDishView.backButton.click(function() { + oneDishView.container.hide(); + searchView.container.show(); + }); + //måste fungera i både oneDish och SearchView + + } + var overview = function(){ + searchView.container.hide(); + oneDishView.container.hide(); + searchView.container.hide(); + sideView.container.hide(); + overviewView.container.show(); + + overviewView.backButton.click(function() { + overviewView.container.hide(); + searchView.container.show(); + sideView.container.show(); + + }); + overviewView.printButton.click(function(){ + printRecipe(); + + }); + } + var printRecipe = function(){ + overviewView.container.hide(); + printView.container.show(); + + printView.BackButton.click(function() { + printView.container.hide(); + sideView.container.show(); + searchView.container.show(); + + }); + + + + } + sideView.confirmButton.click(function(){ + overview(); + }); + + + + + + + startDinner(); + searchView.updateView(); + } \ No newline at end of file diff --git a/Lab3/js/model/dinnerModel.js b/Lab3/js/model/dinnerModel.js old mode 100644 new mode 100755 index 0d7edbc6c..93dab56e9 --- a/Lab3/js/model/dinnerModel.js +++ b/Lab3/js/model/dinnerModel.js @@ -1,417 +1,418 @@ -//DinnerModel Object constructor -var DinnerModel = function() { - - //TODO Lab 1 implement the data structure that will hold number of guest - // and selected dishes for the dinner menu - - var numberOfGuests = 2; // ej this. för då blir det en property som man kan nå utifrån. istället var. - var menu = [1, 101, 201] - this.observers = new Array(); - var displayedDish = ""; - - this.addObserver = function(observer) { - this.observers.push(observer); - } - - this.notifyObservers = function(args) { - for(var i = 0; i < this.observers.length; i++) { - //this.observers[i].loadView(); - console.log("nu meddelar vi observer"); - //console.log(args); - console.log(args); - this.observers[i].updateView(args); - } - } - - this.setNumberOfGuests = function(num) { - if(num>0){ - numberOfGuests = num; - } - this.notifyObservers("guestsChanged"); - } - - this.getNumberOfGuests = function() { - return numberOfGuests; - } - - //Returns the dish that is on the menu for selected type - //borde kolla i dishes istället för att filtrera vilka rätter som visas i overview. - this.getSelectedDish = function(type) { - for (dish in menu){ - for(dishId in dishes){ - if(dishes.id === dish && dishes.type === type){ - return dishes[dishId].name; - } - } - } - } - - //Returnerar id på klickad rätt - this.selectDishRecipe = function (selectedID) { - displayedDish = selectedID; - console.log("nu går vi vidare till recept"); - console.log(displayedDish); - //notifyObservers(); - //meddela observers att de ska vidare till nästa. - this.notifyObservers("toRecipe"); - }; - - this.returnDishRecipe = function() { - return displayedDish; - } - - //Returns all the dishes on the menu. - this.getFullMenu = function() { - var fullMenu = []; - for (i in menu){ - fullMenu.push(this.getDish(menu[i])); - } - return fullMenu; - } - - //Returns all ingredients for all the dishes on the menu. - this.getAllIngredients = function() { - var allIngredients = []; - for (dish in menu) { - var ings = []; - ings.push(this.getDish(dish).ingredients) - for (i in ings) { - allIngredients.push(ings[i]); - } - } - return allIngredients; - } - - //Returns the total price of the menu (all the ingredients multiplied by number of guests). - this.getTotalMenuPrice = function() { - var ingredientsPrice = 0; - var groceries = this.getAllIngredients(); - - for (i in groceries){ - ingredientsPrice += groceries[i].price; - } - - var totalPrice = 0; - - totalPrice = numberOfGuests * ingredientsPrice; - - return totalPrice; - } - - //Adds the passed dish to the menu. If the dish of that type already exists on the menu - //it is removed from the menu and the new one added. - this.addDishToMenu = function(id) { - var newType = this.getDish(id).type; - - for (i in menu){ - var menuType = this.getDish(menu[i]).type; - if (newType === menuType){ - this.removeDishFromMenu(menu[i]); - } - } - - menu.push(id); - this.notifyObservers("newDishAdded"); - - - } - - //Removes dish from menu - this.removeDishFromMenu = function(id) { - var i = 0; - for (i in menu){ - - if (menu[i] === id){ - menu.splice(i,1) - } - i++; - } - //notifyObservers(); - - } - - //function that returns all dishes of specific type (i.e. "starter", "main dish" or "dessert") - //you can use the filter argument to filter out the dish by name or ingredient (use for search) - //if you don't pass any filter all the dishes will be returned - this.getAllDishes = function (type,filter) { - return dishes.filter(function(dish) { - var found = true; - if(filter){ - found = false; - dish.ingredients.forEach(function(ingredient) { - if(ingredient.name.indexOf(filter)!=-1) { - found = true; - } - }); - if(dish.name.indexOf(filter) != -1) - { - found = true; - } - } - return dish.type == type && found; - }); - this.notifyObservers("newTypeSelected"); - } - - //function that returns a dish of specific ID - this.getDish = function (id) { - for( var i = 0; i < dishes.length; i++) { - if (dishes[i].id == id) { - return dishes[i]; - } - } - } - - - // the dishes variable contains an array of all the - // dishes in the database. each dish has id, name, type, - // image (name of the image file), description and - // array of ingredients. Each ingredient has name, - // quantity (a number), price (a number) and unit (string - // defining the unit i.e. "g", "slices", "ml". Unit - // can sometimes be empty like in the example of eggs where - // you just say "5 eggs" and not "5 pieces of eggs" or anything else. - var dishes = [{ - 'id':1, - 'name':'French toast', - 'type':'starter', - 'image':'toast.jpg', - 'description':"In a large mixing bowl, beat the eggs. Add the milk, brown sugar and nutmeg; stir well to combine. Soak bread slices in the egg mixture until saturated. Heat a lightly oiled griddle or frying pan over medium high heat. Brown slices on both sides, sprinkle with cinnamon and serve hot.", - 'ingredients':[{ - 'name':'eggs', - 'quantity':0.5, - 'unit':'', - 'price':10 - },{ - 'name':'milk', - 'quantity':30, - 'unit':'ml', - 'price':6 - },{ - 'name':'brown sugar', - 'quantity':7, - 'unit':'g', - 'price':1 - },{ - 'name':'ground nutmeg', - 'quantity':0.5, - 'unit':'g', - 'price':12 - },{ - 'name':'white bread', - 'quantity':2, - 'unit':'slices', - 'price':2 - }] - },{ - 'id':2, - 'name':'Sourdough Starter', - 'type':'starter', - 'image':'sourdough.jpg', - 'description':"Here is how you make it... Lore ipsum...", - 'ingredients':[{ - 'name':'active dry yeast', - 'quantity':0.5, - 'unit':'g', - 'price':4 - },{ - 'name':'warm water', - 'quantity':30, - 'unit':'ml', - 'price':0 - },{ - 'name':'all-purpose flour', - 'quantity':15, - 'unit':'g', - 'price':2 - }] - },{ - 'id':3, - 'name':'Baked Brie with Peaches', - 'type':'starter', - 'image':'bakedbrie.jpg', - 'description':"Here is how you make it... Lore ipsum...", - 'ingredients':[{ - 'name':'round Brie cheese', - 'quantity':10, - 'unit':'g', - 'price':8 - },{ - 'name':'raspberry preserves', - 'quantity':15, - 'unit':'g', - 'price':10 - },{ - 'name':'peaches', - 'quantity':1, - 'unit':'', - 'price':4 - }] - },{ - 'id':100, - 'name':'Meat balls', - 'type':'main dish', - 'image':'meatballs.jpg', - 'description':"Preheat an oven to 400 degrees F (200 degrees C). Place the beef into a mixing bowl, and season with salt, onion, garlic salt, Italian seasoning, oregano, red pepper flakes, hot pepper sauce, and Worcestershire sauce; mix well. Add the milk, Parmesan cheese, and bread crumbs. Mix until evenly blended, then form into 1 1/2-inch meatballs, and place onto a baking sheet. Bake in the preheated oven until no longer pink in the center, 20 to 25 minutes.", - 'ingredients':[{ - 'name':'extra lean ground beef', - 'quantity':115, - 'unit':'g', - 'price':20 - },{ - 'name':'sea salt', - 'quantity':0.7, - 'unit':'g', - 'price':3 - },{ - 'name':'small onion, diced', - 'quantity':0.25, - 'unit':'', - 'price':2 - },{ - 'name':'garlic salt', - 'quantity':0.7, - 'unit':'g', - 'price':2 - },{ - 'name':'Italian seasoning', - 'quantity':0.6, - 'unit':'g', - 'price':3 - },{ - 'name':'dried oregano', - 'quantity':0.3, - 'unit':'g', - 'price':3 - },{ - 'name':'crushed red pepper flakes', - 'quantity':0.6, - 'unit':'g', - 'price':3 - },{ - 'name':'Worcestershire sauce', - 'quantity':6, - 'unit':'ml', - 'price':7 - },{ - 'name':'milk', - 'quantity':20, - 'unit':'ml', - 'price':4 - },{ - 'name':'grated Parmesan cheese', - 'quantity':5, - 'unit':'g', - 'price':8 - },{ - 'name':'seasoned bread crumbs', - 'quantity':15, - 'unit':'g', - 'price':4 - }] - },{ - 'id':101, - 'name':'MD 2', - 'type':'main dish', - 'image':'bakedbrie.jpg', - 'description':"Here is how you make it... Lore ipsum...", - 'ingredients':[{ - 'name':'ingredient 1', - 'quantity':1, - 'unit':'pieces', - 'price':8 - },{ - 'name':'ingredient 2', - 'quantity':15, - 'unit':'g', - 'price':7 - },{ - 'name':'ingredient 3', - 'quantity':10, - 'unit':'ml', - 'price':4 - }] - },{ - 'id':102, - 'name':'MD 3', - 'type':'main dish', - 'image':'meatballs.jpg', - 'description':"Here is how you make it... Lore ipsum...", - 'ingredients':[{ - 'name':'ingredient 1', - 'quantity':2, - 'unit':'pieces', - 'price':8 - },{ - 'name':'ingredient 2', - 'quantity':10, - 'unit':'g', - 'price':7 - },{ - 'name':'ingredient 3', - 'quantity':5, - 'unit':'ml', - 'price':4 - }] - },{ - 'id':103, - 'name':'MD 4', - 'type':'main dish', - 'image':'meatballs.jpg', - 'description':"Here is how you make it... Lore ipsum...", - 'ingredients':[{ - 'name':'ingredient 1', - 'quantity':1, - 'unit':'pieces', - 'price':4 - },{ - 'name':'ingredient 2', - 'quantity':12, - 'unit':'g', - 'price':7 - },{ - 'name':'ingredient 3', - 'quantity':6, - 'unit':'ml', - 'price':4 - }] - },{ - 'id':200, - 'name':'Chocolat Ice cream', - 'type':'dessert', - 'image':'icecream.jpg', - 'description':"Here is how you make it... Lore ipsum...", - 'ingredients':[{ - 'name':'ice cream', - 'quantity':100, - 'unit':'ml', - 'price':6 - }] - },{ - 'id':201, - 'name':'Vanilla Ice cream', - 'type':'dessert', - 'image':'icecream.jpg', - 'description':"Here is how you make it... Lore ipsum...", - 'ingredients':[{ - 'name':'ice cream', - 'quantity':100, - 'unit':'ml', - 'price':6 - }] - },{ - 'id':202, - 'name':'Strawberry', - 'type':'dessert', - 'image':'icecream.jpg', - 'description':"Here is how you make it... Lore ipsum...", - 'ingredients':[{ - 'name':'ice cream', - 'quantity':100, - 'unit':'ml', - 'price':6 - }] - } - ]; - -} +//DinnerModel Object constructor +var DinnerModel = function() { + + //TODO Lab 1 implement the data structure that will hold number of guest + // and selected dishes for the dinner menu + + var numberOfGuests = 2; // ej this. för då blir det en property som man kan nå utifrån. istället var. + var menu = [1, 101, 201] + this.observers = new Array(); + var displayedDish = ""; + + this.addObserver = function(observer) { + this.observers.push(observer); + } + + this.notifyObservers = function(args) { + for(var i = 0; i < this.observers.length; i++) { + //this.observers[i].loadView(); + console.log("nu meddelar vi observer"); + //console.log(args); + console.log(args); + this.observers[i].updateView(args); + } + } + + this.setNumberOfGuests = function(num) { + if(num>0){ + numberOfGuests = num; + } + this.notifyObservers("guestsChanged"); + } + + this.getNumberOfGuests = function() { + return numberOfGuests; + } + + //Returns the dish that is on the menu for selected type + //borde kolla i dishes istället för att filtrera vilka rätter som visas i overview. + this.getSelectedDish = function(type) { + for (dish in menu){ + for(dishId in dishes){ + if(dishes.id === dish && dishes.type === type){ + return dishes[dishId].name; + } + } + } + } + + //Returnerar id på klickad rätt + this.selectDishRecipe = function (selectedID) { + displayedDish = selectedID; + console.log("nu går vi vidare till recept"); + console.log(displayedDish); + //notifyObservers(); + //meddela observers att de ska vidare till nästa. + this.notifyObservers("toRecipe"); + }; + + this.returnDishRecipe = function() { + return displayedDish; + } + + //Returns all the dishes on the menu. + this.getFullMenu = function() { + var fullMenu = []; + for (i in menu){ + fullMenu.push(this.getDish(menu[i])); + } + return fullMenu; + } + + //Returns all ingredients for all the dishes on the menu. + this.getAllIngredients = function() { + var allIngredients = []; + for (dish in menu) { + var ings = []; + ings.push(this.getDish(dish).ingredients) + for (i in ings) { + allIngredients.push(ings[i]); + } + } + return allIngredients; + } + + //Returns the total price of the menu (all the ingredients multiplied by number of guests). + this.getTotalMenuPrice = function() { + var ingredientsPrice = 0; + var groceries = this.getAllIngredients(); + + for (i in groceries){ + ingredientsPrice += groceries[i].price; + } + + var totalPrice = 0; + + totalPrice = numberOfGuests * ingredientsPrice; + + return totalPrice; + } + + //Adds the passed dish to the menu. If the dish of that type already exists on the menu + //it is removed from the menu and the new one added. + this.addDishToMenu = function(id) { + var newType = this.getDish(id).type; + + for (i in menu){ + var menuType = this.getDish(menu[i]).type; + if (newType === menuType){ + this.removeDishFromMenu(menu[i]); + } + } + + menu.push(id); + this.notifyObservers("newDishAdded"); + + + } + + //Removes dish from menu + this.removeDishFromMenu = function(id) { + var i = 0; + for (i in menu){ + + if (menu[i] === id){ + menu.splice(i,1) + } + i++; + } + //notifyObservers(); + + } + + //function that returns all dishes of specific type (i.e. "starter", "main dish" or "dessert") + //you can use the filter argument to filter out the dish by name or ingredient (use for search) + //if you don't pass any filter all the dishes will be returned + this.getAllDishes = function (type,filter) { + return dishes.filter(function(dish) { + var found = true; + if(filter){ + found = false; + dish.ingredients.forEach(function(ingredient) { + if(ingredient.name.indexOf(filter)!=-1) { + found = true; + } + }); + if(dish.name.indexOf(filter) != -1) + { + found = true; + } + } + return dish.type == type || type =="all" && found; + //för att få alla dishes. + }); + this.notifyObservers("newTypeSelected"); + } + + //function that returns a dish of specific ID + this.getDish = function (id) { + for( var i = 0; i < dishes.length; i++) { + if (dishes[i].id == id) { + return dishes[i]; + } + } + } + + + // the dishes variable contains an array of all the + // dishes in the database. each dish has id, name, type, + // image (name of the image file), description and + // array of ingredients. Each ingredient has name, + // quantity (a number), price (a number) and unit (string + // defining the unit i.e. "g", "slices", "ml". Unit + // can sometimes be empty like in the example of eggs where + // you just say "5 eggs" and not "5 pieces of eggs" or anything else. + var dishes = [{ + 'id':1, + 'name':'French toast', + 'type':'starter', + 'image':'toast.jpg', + 'description':"In a large mixing bowl, beat the eggs. Add the milk, brown sugar and nutmeg; stir well to combine. Soak bread slices in the egg mixture until saturated. Heat a lightly oiled griddle or frying pan over medium high heat. Brown slices on both sides, sprinkle with cinnamon and serve hot.", + 'ingredients':[{ + 'name':'eggs', + 'quantity':0.5, + 'unit':'', + 'price':10 + },{ + 'name':'milk', + 'quantity':30, + 'unit':'ml', + 'price':6 + },{ + 'name':'brown sugar', + 'quantity':7, + 'unit':'g', + 'price':1 + },{ + 'name':'ground nutmeg', + 'quantity':0.5, + 'unit':'g', + 'price':12 + },{ + 'name':'white bread', + 'quantity':2, + 'unit':'slices', + 'price':2 + }] + },{ + 'id':2, + 'name':'Sourdough Starter', + 'type':'starter', + 'image':'sourdough.jpg', + 'description':"Here is how you make it... Lore ipsum...", + 'ingredients':[{ + 'name':'active dry yeast', + 'quantity':0.5, + 'unit':'g', + 'price':4 + },{ + 'name':'warm water', + 'quantity':30, + 'unit':'ml', + 'price':0 + },{ + 'name':'all-purpose flour', + 'quantity':15, + 'unit':'g', + 'price':2 + }] + },{ + 'id':3, + 'name':'Baked Brie with Peaches', + 'type':'starter', + 'image':'bakedbrie.jpg', + 'description':"Here is how you make it... Lore ipsum...", + 'ingredients':[{ + 'name':'round Brie cheese', + 'quantity':10, + 'unit':'g', + 'price':8 + },{ + 'name':'raspberry preserves', + 'quantity':15, + 'unit':'g', + 'price':10 + },{ + 'name':'peaches', + 'quantity':1, + 'unit':'', + 'price':4 + }] + },{ + 'id':100, + 'name':'Meat balls', + 'type':'main dish', + 'image':'meatballs.jpg', + 'description':"Preheat an oven to 400 degrees F (200 degrees C). Place the beef into a mixing bowl, and season with salt, onion, garlic salt, Italian seasoning, oregano, red pepper flakes, hot pepper sauce, and Worcestershire sauce; mix well. Add the milk, Parmesan cheese, and bread crumbs. Mix until evenly blended, then form into 1 1/2-inch meatballs, and place onto a baking sheet. Bake in the preheated oven until no longer pink in the center, 20 to 25 minutes.", + 'ingredients':[{ + 'name':'extra lean ground beef', + 'quantity':115, + 'unit':'g', + 'price':20 + },{ + 'name':'sea salt', + 'quantity':0.7, + 'unit':'g', + 'price':3 + },{ + 'name':'small onion, diced', + 'quantity':0.25, + 'unit':'', + 'price':2 + },{ + 'name':'garlic salt', + 'quantity':0.7, + 'unit':'g', + 'price':2 + },{ + 'name':'Italian seasoning', + 'quantity':0.6, + 'unit':'g', + 'price':3 + },{ + 'name':'dried oregano', + 'quantity':0.3, + 'unit':'g', + 'price':3 + },{ + 'name':'crushed red pepper flakes', + 'quantity':0.6, + 'unit':'g', + 'price':3 + },{ + 'name':'Worcestershire sauce', + 'quantity':6, + 'unit':'ml', + 'price':7 + },{ + 'name':'milk', + 'quantity':20, + 'unit':'ml', + 'price':4 + },{ + 'name':'grated Parmesan cheese', + 'quantity':5, + 'unit':'g', + 'price':8 + },{ + 'name':'seasoned bread crumbs', + 'quantity':15, + 'unit':'g', + 'price':4 + }] + },{ + 'id':101, + 'name':'MD 2', + 'type':'main dish', + 'image':'bakedbrie.jpg', + 'description':"Here is how you make it... Lore ipsum...", + 'ingredients':[{ + 'name':'ingredient 1', + 'quantity':1, + 'unit':'pieces', + 'price':8 + },{ + 'name':'ingredient 2', + 'quantity':15, + 'unit':'g', + 'price':7 + },{ + 'name':'ingredient 3', + 'quantity':10, + 'unit':'ml', + 'price':4 + }] + },{ + 'id':102, + 'name':'MD 3', + 'type':'main dish', + 'image':'meatballs.jpg', + 'description':"Here is how you make it... Lore ipsum...", + 'ingredients':[{ + 'name':'ingredient 1', + 'quantity':2, + 'unit':'pieces', + 'price':8 + },{ + 'name':'ingredient 2', + 'quantity':10, + 'unit':'g', + 'price':7 + },{ + 'name':'ingredient 3', + 'quantity':5, + 'unit':'ml', + 'price':4 + }] + },{ + 'id':103, + 'name':'MD 4', + 'type':'main dish', + 'image':'meatballs.jpg', + 'description':"Here is how you make it... Lore ipsum...", + 'ingredients':[{ + 'name':'ingredient 1', + 'quantity':1, + 'unit':'pieces', + 'price':4 + },{ + 'name':'ingredient 2', + 'quantity':12, + 'unit':'g', + 'price':7 + },{ + 'name':'ingredient 3', + 'quantity':6, + 'unit':'ml', + 'price':4 + }] + },{ + 'id':200, + 'name':'Chocolat Ice cream', + 'type':'dessert', + 'image':'icecream.jpg', + 'description':"Here is how you make it... Lore ipsum...", + 'ingredients':[{ + 'name':'ice cream', + 'quantity':100, + 'unit':'ml', + 'price':6 + }] + },{ + 'id':201, + 'name':'Vanilla Ice cream', + 'type':'dessert', + 'image':'icecream.jpg', + 'description':"Here is how you make it... Lore ipsum...", + 'ingredients':[{ + 'name':'ice cream', + 'quantity':100, + 'unit':'ml', + 'price':6 + }] + },{ + 'id':202, + 'name':'Strawberry', + 'type':'dessert', + 'image':'icecream.jpg', + 'description':"Here is how you make it... Lore ipsum...", + 'ingredients':[{ + 'name':'ice cream', + 'quantity':100, + 'unit':'ml', + 'price':6 + }] + } + ]; + +} diff --git a/Lab3/js/view/headerView.js b/Lab3/js/view/headerView.js old mode 100644 new mode 100755 index 61d732e6e..500fe083f --- a/Lab3/js/view/headerView.js +++ b/Lab3/js/view/headerView.js @@ -1,10 +1,10 @@ -var HeaderView = function (container, model) { - this.container = container; - - this.updateView = function() { - console.log("testar ny funktion - header"); - } -} - - - +var HeaderView = function (container, model) { + this.container = container; + + this.updateView = function() { + console.log("testar ny funktion - header"); + } +} + + + diff --git a/Lab3/js/view/homeView.js b/Lab3/js/view/homeView.js old mode 100644 new mode 100755 index bd5eb335f..6f551e4d0 --- a/Lab3/js/view/homeView.js +++ b/Lab3/js/view/homeView.js @@ -1,11 +1,11 @@ - - -var HomeView = function (container, model) { - this.startButton = container.find("#startButton"); - this.container= container; - - this.updateView = function() { - console.log("testar ny funktion - home"); - } -} + + +var HomeView = function (container, model) { + this.startButton = container.find("#startButton"); + this.container= container; + + this.updateView = function() { + console.log("testar ny funktion - home"); + } +} \ No newline at end of file diff --git a/Lab3/js/view/oneDishView.js b/Lab3/js/view/oneDishView.js old mode 100644 new mode 100755 index 069f7f4cb..0826fa9a6 --- a/Lab3/js/view/oneDishView.js +++ b/Lab3/js/view/oneDishView.js @@ -1,63 +1,63 @@ - -/*main view for view3 "dish overview" -gets the pictures and name of the dishes for view2 and 4 */ -var OneDishView = function (container, model) { - this.container = container; - this.model = model; - - - - var headlineDish = container.find("#headlineDish"); - var picDish = container.find("#imgDish"); - var description = container.find("#description"); - var tableString = container.find("#table"); - var sumString = container.find("#td1"); - var rubrik = container.find("#ingrFor"); - - this.loadView = function() { - - var dishId = model.returnDishRecipe(); - - - this.dish = model.getDish(dishId); - - nrOfGuests = model.getNumberOfGuests(); - - headlineDish.html(this.dish.name); - picDish.html(''); - - description.html(this.dish.description); - - Rubrik = 'Ingredients for ' + nrOfGuests + ' people'; - rubrik.html(Rubrik); - - var string = ''; - - var sum = 0; - - for(i in this.dish.ingredients){ - Price = this.dish.ingredients[i].price*nrOfGuests; - string += ''; - sum += Price; - } - summa= ''; - - tableString.html(string); - sumString.html(summa); - - } - - - - - - // load/update view. - //this.loadView(); - //attach as listener - model.addObserver(this); - this.updateView = function(args) { - this.loadView(); - } - -} + +/*main view for view3 "dish overview" +gets the pictures and name of the dishes for view2 and 4 */ +var OneDishView = function (container, model) { + this.container = container; + this.model = model; + + + + var headlineDish = container.find("#headlineDish"); + var picDish = container.find("#imgDish"); + var description = container.find("#description"); + var tableString = container.find("#table"); + var sumString = container.find("#td1"); + var rubrik = container.find("#ingrFor"); + + this.loadView = function() { + + var dishId = model.returnDishRecipe(); + + + this.dish = model.getDish(dishId); + + nrOfGuests = model.getNumberOfGuests(); + + headlineDish.html(this.dish.name); + picDish.html(''); + + description.html(this.dish.description); + + Rubrik = 'Ingredients for ' + nrOfGuests + ' people'; + rubrik.html(Rubrik); + + var string = '
mängdsakSEKpris
' + this.dish.ingredients[i].quantity + ' ' + this.dish.ingredients[i].unit + '' + this.dish.ingredients[i].name + 'SEK' + Price + '
SEK ' + sum + '
'; + + var sum = 0; + + for(i in this.dish.ingredients){ + Price = this.dish.ingredients[i].price*nrOfGuests; + string += ''; + sum += Price; + } + summa= ''; + + tableString.html(string); + sumString.html(summa); + + } + + + + + + // load/update view. + //this.loadView(); + //attach as listener + model.addObserver(this); + this.updateView = function(args) { + this.loadView(); + } + +} \ No newline at end of file diff --git a/Lab3/js/view/overviewView.js b/Lab3/js/view/overviewView.js old mode 100644 new mode 100755 index 02d7269a2..3448c05f2 --- a/Lab3/js/view/overviewView.js +++ b/Lab3/js/view/overviewView.js @@ -1,46 +1,46 @@ -var OverviewView = function (container, model) { - - this.container = container; - this.model = model; - - var header = container.find("#overviewHeader"); - var pictures = container.find("#pictures"); - var total = container.find("#totSum"); - - - //load view - this.loadView = function() { - var nr= model.getNumberOfGuests(); - var string = '

My dinner: '+ nr +' people

'; - var menu = model.getFullMenu(); - header.html(string); - - sum =0; - HTMLPic= ""; - for(i in menu){ - var dishPrice = 0; - for(n in menu[i].ingredients){ - dishPrice += menu[i].ingredients[n].price*nr; - } - HTMLPic += '

'+ dishPrice +' SEK

'; - - sum += dishPrice; - } - pictures.html(HTMLPic); - total.html(sum); - - - } - - - // load/update view. - this.loadView(); - //attach as listener - model.addObserver(this); - - this.updateView = function() { - this.loadView(); - } - -} - +var OverviewView = function (container, model) { + + this.container = container; + this.model = model; + + var header = container.find("#overviewHeader"); + var pictures = container.find("#pictures"); + var total = container.find("#totSum"); + + + //load view + this.loadView = function() { + var nr= model.getNumberOfGuests(); + var string = '

My dinner: '+ nr +' people

'; + var menu = model.getFullMenu(); + header.html(string); + + sum =0; + HTMLPic= ""; + for(i in menu){ + var dishPrice = 0; + for(n in menu[i].ingredients){ + dishPrice += menu[i].ingredients[n].price*nr; + } + HTMLPic += '

'+ dishPrice +' SEK

'; + + sum += dishPrice; + } + pictures.html(HTMLPic); + total.html(sum); + + + } + + + // load/update view. + this.loadView(); + //attach as listener + model.addObserver(this); + + this.updateView = function() { + this.loadView(); + } + +} + diff --git a/Lab3/js/view/printView.js b/Lab3/js/view/printView.js old mode 100644 new mode 100755 index 77719ba59..231070c9c --- a/Lab3/js/view/printView.js +++ b/Lab3/js/view/printView.js @@ -1,46 +1,46 @@ -var PrintView = function (container, model) { - this.container = container; - this.model = model; - - - - - var print = container.find("#printDish") - var header = container.find("#printHeader") - - - - //load view - this.loadView = function() { - - var nr = model.getNumberOfGuests(); - string = '

My dinner: '+ nr +' people

'; - header.html(string); - - var string = ''; - menu = model.getFullMenu() - - - for(i in menu){ - string += '
'+ - '

' + menu[i].name + - '

Preparation

' + menu[i].description + - '

'; - ; - - } - print.html(string); - - } - - - - // load/update view. - this.loadView(); - //attach as listener - model.addObserver(this); - - this.updateView = function() { - console.log("testar ny funktion - print"); - } +var PrintView = function (container, model) { + this.container = container; + this.model = model; + + + + + var print = container.find("#printDish") + var header = container.find("#printHeader") + + + + //load view + this.loadView = function() { + + var nr = model.getNumberOfGuests(); + string = '

My dinner: '+ nr +' people

'; + header.html(string); + + var string = ''; + menu = model.getFullMenu() + + + for(i in menu){ + string += '
'+ + '

' + menu[i].name + + '

Preparation

' + menu[i].description + + '

'; + ; + + } + print.html(string); + + } + + + + // load/update view. + this.loadView(); + //attach as listener + model.addObserver(this); + + this.updateView = function() { + console.log("testar ny funktion - print"); + } } \ No newline at end of file diff --git a/Lab3/js/view/searchView.js b/Lab3/js/view/searchView.js old mode 100644 new mode 100755 index 57bf4f3ed..0458da17d --- a/Lab3/js/view/searchView.js +++ b/Lab3/js/view/searchView.js @@ -1,40 +1,39 @@ -var SearchView = function (container, model) { - this.container = container; - this.searchButton = container.find("#searchButton"); // knappen ska bara göra loadView(), i den funktionen finns resten av isntruktionerna - - this.picBox = container.find("#template"); //this, controller adds eventlistener - //console.log(picBox); - - //load view - this.loadView = function() { - - //var type = hämta type - var type = container.find("#selectOption option:selected").val(); - - //var keywords = Hämta filter - var filter = document.getElementById("keywords").value; - - var menu = model.getAllDishes(type, filter); // stoppain filter och type i funktionen. - var string = ''; - - - //lägg in rätterna - for(i in menu){ - string += '
'; - } - this.picBox.html(string); - - - } - - - - // load/update view. - this.loadView(); - //attach as listener - model.addObserver(this); - - this.updateView = function(args) { - this.loadView(); - } +var SearchView = function (container, model) { + this.container = container; + this.searchButton = container.find("#searchButton"); // knappen ska bara göra loadView(), i den funktionen finns resten av isntruktionerna + + this.picBox = container.find("#template"); //this, app adds eventlistener + + //load view + this.loadView = function() { + + //var type = hämta type + var type = container.find("#selectOption option:selected").val(); + + //var keywords = Hämta filter + var filter = document.getElementById("keywords").value; + + var menu = model.getAllDishes(type, filter); // stoppain filter och type i funktionen. + var string = ''; + + + //lägg in rätterna + for(i in menu){ + string += '
'; + } + this.picBox.html(string); + + + } + + + + // load/update view. + this.loadView(); + //attach as listener + model.addObserver(this); + + this.updateView = function(args) { + this.loadView(); + } } \ No newline at end of file diff --git a/Lab3/js/view/sideView.js b/Lab3/js/view/sideView.js old mode 100644 new mode 100755 index 20fd99ae3..64e2418f8 --- a/Lab3/js/view/sideView.js +++ b/Lab3/js/view/sideView.js @@ -1,57 +1,57 @@ -var SideView = function (container, model) { - - this.container = container; - this.model = model; - - - var numberOfGuests = container.find("#numberOfGuests"); - var table = container.find("#dinnerTable"); - var summa = container.find("#sum"); - var Summa = container.find("#summa"); - - - - - //load view - this.loadView = function() { - nrOfGuests = model.getNumberOfGuests(); - numberOfGuests.html(nrOfGuests); - - var menu = model.getFullMenu(); // stoppain filter och type i funktionen. - var string = ''; - var sum = 0; - - - //lägg in rätterna från vald menu och räknar ut priset av varje rätt samt totalt - for(i in menu){ - var dishPrice = 0; - for(n in menu[i].ingredients){ - dishPrice += menu[i].ingredients[n].price*nrOfGuests; - } - sum += dishPrice; - - string += ''; - } - - - table.html(string); - summa.html(sum); - Summa.html(sum); - - } - - - - // load/update view. - this.loadView(); - - - //attach as listener - model.addObserver(this); - this.updateView = function(args) { - this.loadView(); - } - - -} - +var SideView = function (container, model) { + + this.container = container; + this.model = model; + + + var numberOfGuests = container.find("#numberOfGuests"); + var table = container.find("#dinnerTable"); + var summa = container.find("#sum"); + var Summa = container.find("#summa"); + + + + + //load view + this.loadView = function() { + nrOfGuests = model.getNumberOfGuests(); + numberOfGuests.html(nrOfGuests); + + var menu = model.getFullMenu(); // stoppain filter och type i funktionen. + var string = ''; + var sum = 0; + + + //lägg in rätterna från vald menu och räknar ut priset av varje rätt samt totalt + for(i in menu){ + var dishPrice = 0; + for(n in menu[i].ingredients){ + dishPrice += menu[i].ingredients[n].price*nrOfGuests; + } + sum += dishPrice; + + string += ''; + } + + + table.html(string); + summa.html(sum); + Summa.html(sum); + + } + + + + // load/update view. + this.loadView(); + + + //attach as listener + model.addObserver(this); + this.updateView = function(args) { + this.loadView(); + } + + +} + diff --git a/Lab3/sem2-diskussion.txt b/Lab3/sem2-diskussion.txt deleted file mode 100644 index 34ddc76da..000000000 --- a/Lab3/sem2-diskussion.txt +++ /dev/null @@ -1,3 +0,0 @@ -1. man vill inte att en view ska veta om en annan. View ska bara visa data (modellen), controller ska bara veta om sin egen view. -använd inte global selector. -3. använd if-statement bara för att bestämma hur det ska uppdateras. behvöer inte vara switch! \ No newline at end of file diff --git a/Lab3/style2D.css b/Lab3/style2D.css old mode 100644 new mode 100755 index d934c666b..4287fea49 --- a/Lab3/style2D.css +++ b/Lab3/style2D.css @@ -1,113 +1,113 @@ -form{ - margin-bottom: 10px; -} - -img{ - width: 100%; -} - -html,body,.container { - height:100%; -} -.home { - background: url("https://fthmb.tqn.com/uZwLBI5jpv1YjOTwGGmFuSyUhg4=/1920x1280/filters:fill(auto,1)/dish-918613_1920-5812723a3df78c2c73a334d9.jpg"); - background-size: cover; - background-position: center; - font-family: 'Lato', sans-serif; - color: #2c3e50; -} - -table { - width: 100%; - -} -.Sum { - text-align: right; -} - -#sum{ - text-align: left; -} -.sidebar { - /*background-color: lightgreen; - /*height: 800px;*/ - /* margin-left: 0;*/ -} - -.caption { - text-align: center; -} - -.jumbotron { - text-align: center; - padding-top: 0px; -} -.page-header { - text-align: center; - margin-top: 0px; -} - -.row { - height: 100%; - display: table-row; -} - -.row .no-float { - display: table-cell; - float: none; -} - -/* Sidebar modules for boxing content */ -.sidebar-module { - padding: 15px; - margin: 0 -15px 15px; -} -.sidebar-module-inset { - padding: 15px; - background-color: #f5f5f5; - border-radius: 4px; -} -.sidebar-module-inset p:last-child, -.sidebar-module-inset ul:last-child, -.sidebar-module-inset ol:last-child { - margin-bottom: 0; -} - - -#imgDish{ - width: 90%; -} -.knapp{ - margin-top: 20px -} -.pull-right{ - text-align: right; -} - -.content { - text-align: center; - padding-top: 25%; - text-shadow: 0px 4px 3px rgba(0,0,0,0.4) - 0px 8px 13px rgba(0,0,0,0.1), - 0px 18px 23px rgba(0,0,0,0.1); -} - -hr { - border: 0; - width: 400px; - height: 1px; - background-image: linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.75), rgba(255, 255, 255, 0)); -} -#collapseSide.collapsing { - margin-top: 10px; - margin-bottom: 10px -} -.margin{ - margin-right: 20px; - margin-top: 10px; - margin-left: 20px; -} - -.margin1{ - margin-bottom: 0px; -} +form{ + margin-bottom: 10px; +} + +img{ + width: 100%; +} + +html,body,.container { + height:100%; +} +.home { + background: url("https://fthmb.tqn.com/uZwLBI5jpv1YjOTwGGmFuSyUhg4=/1920x1280/filters:fill(auto,1)/dish-918613_1920-5812723a3df78c2c73a334d9.jpg"); + background-size: cover; + background-position: center; + font-family: 'Lato', sans-serif; + color: #2c3e50; +} + +table { + width: 100%; + +} +.Sum { + text-align: right; +} + +#sum{ + text-align: left; +} +.sidebar { + /*background-color: lightgreen; + /*height: 800px;*/ + /* margin-left: 0;*/ +} + +.caption { + text-align: center; +} + +.jumbotron { + text-align: center; + padding-top: 0px; +} +.page-header { + text-align: center; + margin-top: 0px; +} + +.row { + height: 100%; + display: table-row; +} + +.row .no-float { + display: table-cell; + float: none; +} + +/* Sidebar modules for boxing content */ +.sidebar-module { + padding: 15px; + margin: 0 -15px 15px; +} +.sidebar-module-inset { + padding: 15px; + background-color: #f5f5f5; + border-radius: 4px; +} +.sidebar-module-inset p:last-child, +.sidebar-module-inset ul:last-child, +.sidebar-module-inset ol:last-child { + margin-bottom: 0; +} + + +#imgDish{ + width: 90%; +} +.knapp{ + margin-top: 20px +} +.pull-right{ + text-align: right; +} + +.content { + text-align: center; + padding-top: 25%; + text-shadow: 0px 4px 3px rgba(0,0,0,0.4) + 0px 8px 13px rgba(0,0,0,0.1), + 0px 18px 23px rgba(0,0,0,0.1); +} + +hr { + border: 0; + width: 400px; + height: 1px; + background-image: linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.75), rgba(255, 255, 255, 0)); +} +#collapseSide.collapsing { + margin-top: 10px; + margin-bottom: 10px +} +.margin{ + margin-right: 20px; + margin-top: 10px; + margin-left: 20px; +} + +.margin1{ + margin-bottom: 0px; +} From b2970f37af3cb12ff23b7d88d94e810311fc3c9f Mon Sep 17 00:00:00 2001 From: sofiaJagerstrom Date: Mon, 26 Feb 2018 15:19:47 +0100 Subject: [PATCH 50/64] labb2 klart MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fixat: -print, -mängder i ingred.tabell, -visa All Dishes, -removeDish from menu, -minskat bilderna i searchview, -notifiobserver argumenten har jag fixat så de används. har ännu inte kommit fram till varför onedishView visas på halva sidan i vissa fall... --- Lab3/index.html | 26 +++++++------------- Lab3/js/controller/sideViewController.js | 23 ++++++++++-------- Lab3/js/model/dinnerModel.js | 15 ++++++------ Lab3/js/view/headerView.js | 1 - Lab3/js/view/homeView.js | 1 - Lab3/js/view/oneDishView.js | 21 ++++++++++++---- Lab3/js/view/overviewView.js | 13 +++++++++- Lab3/js/view/printView.js | 4 +-- Lab3/js/view/searchView.js | 13 +++++++--- Lab3/js/view/sideView.js | 31 +++++++++++++++++++----- Lab3/style2D.css | 23 +++++++++++++++--- 11 files changed, 113 insertions(+), 58 deletions(-) diff --git a/Lab3/index.html b/Lab3/index.html index 471cb9141..a458b2ecf 100755 --- a/Lab3/index.html +++ b/Lab3/index.html @@ -39,8 +39,7 @@

- -

mängdsakSEKpris
' + this.dish.ingredients[i].quantity + ' ' + this.dish.ingredients[i].unit + '' + this.dish.ingredients[i].name + 'SEK' + Price + '
SEK ' + sum + '
' + menu[i].name + '' + dishPrice + '
' + menu[i].name + '' + dishPrice + '
@@ -70,11 +68,6 @@

Dinner Planner

My dinner
+
@@ -119,7 +113,7 @@
Number of guests:
-
+

Find a dish

@@ -128,11 +122,11 @@

Find a dish

@@ -150,7 +144,7 @@

Find a dish

-
+
@@ -161,15 +155,13 @@
-
+

- - - + - +
diff --git a/Lab3/js/controller/sideViewController.js b/Lab3/js/controller/sideViewController.js index fe7fd794c..474e0f446 100755 --- a/Lab3/js/controller/sideViewController.js +++ b/Lab3/js/controller/sideViewController.js @@ -4,19 +4,22 @@ var SideViewController = function(view, model, sControl) { var plusButton = view.container.find("#plusGuest"); // used by controller var minusButton = view.container.find("#minusGuest"); - var confirmButton = view.container.find("#confirm"); + var closeButton = view.container.find(".close"); + plusButton.click(function(){ + model.setNumberOfGuests(model.getNumberOfGuests() + 1); + }); - plusButton.click(function(){ - model.setNumberOfGuests(model.getNumberOfGuests() + 1); - }); + minusButton.click(function(){ + model.setNumberOfGuests(model.getNumberOfGuests() - 1); + }); - minusButton.click(function(){ - model.setNumberOfGuests(model.getNumberOfGuests() - 1); - }); - - confirmButton.click(function(){ + view.confirmButton.click(function(){ sControl.overview(); - }); + }); + view.table.on("click", ".close", function(){ + model.removeDishFromMenu(this.id); + }); + } \ No newline at end of file diff --git a/Lab3/js/model/dinnerModel.js b/Lab3/js/model/dinnerModel.js index 93dab56e9..be7fceb61 100755 --- a/Lab3/js/model/dinnerModel.js +++ b/Lab3/js/model/dinnerModel.js @@ -5,7 +5,7 @@ var DinnerModel = function() { // and selected dishes for the dinner menu var numberOfGuests = 2; // ej this. för då blir det en property som man kan nå utifrån. istället var. - var menu = [1, 101, 201] + var menu = []; this.observers = new Array(); var displayedDish = ""; @@ -16,9 +16,8 @@ var DinnerModel = function() { this.notifyObservers = function(args) { for(var i = 0; i < this.observers.length; i++) { //this.observers[i].loadView(); - console.log("nu meddelar vi observer"); + //console.log("nu meddelar vi observer"); //console.log(args); - console.log(args); this.observers[i].updateView(args); } } @@ -49,8 +48,8 @@ var DinnerModel = function() { //Returnerar id på klickad rätt this.selectDishRecipe = function (selectedID) { displayedDish = selectedID; - console.log("nu går vi vidare till recept"); - console.log(displayedDish); + //console.log("nu går vi vidare till recept"); + //console.log(displayedDish); //notifyObservers(); //meddela observers att de ska vidare till nästa. this.notifyObservers("toRecipe"); @@ -118,15 +117,15 @@ var DinnerModel = function() { //Removes dish from menu this.removeDishFromMenu = function(id) { + id = parseInt(id); var i = 0; for (i in menu){ if (menu[i] === id){ menu.splice(i,1) } - i++; } - //notifyObservers(); + this.notifyObservers("removedDish"); } @@ -148,7 +147,7 @@ var DinnerModel = function() { found = true; } } - return dish.type == type || type =="all" && found; + return dish.type == type || type == "all" && found; //för att få alla dishes. }); this.notifyObservers("newTypeSelected"); diff --git a/Lab3/js/view/headerView.js b/Lab3/js/view/headerView.js index 500fe083f..92a1ab889 100755 --- a/Lab3/js/view/headerView.js +++ b/Lab3/js/view/headerView.js @@ -2,7 +2,6 @@ var HeaderView = function (container, model) { this.container = container; this.updateView = function() { - console.log("testar ny funktion - header"); } } diff --git a/Lab3/js/view/homeView.js b/Lab3/js/view/homeView.js index 6f551e4d0..a6150b40a 100755 --- a/Lab3/js/view/homeView.js +++ b/Lab3/js/view/homeView.js @@ -5,7 +5,6 @@ var HomeView = function (container, model) { this.container= container; this.updateView = function() { - console.log("testar ny funktion - home"); } } \ No newline at end of file diff --git a/Lab3/js/view/oneDishView.js b/Lab3/js/view/oneDishView.js index 0826fa9a6..72c59ac51 100755 --- a/Lab3/js/view/oneDishView.js +++ b/Lab3/js/view/oneDishView.js @@ -36,12 +36,13 @@ var OneDishView = function (container, model) { var sum = 0; for(i in this.dish.ingredients){ - Price = this.dish.ingredients[i].price*nrOfGuests; - string += '' + this.dish.ingredients[i].quantity + ' ' + this.dish.ingredients[i].unit + '' + this.dish.ingredients[i].name + 'SEK' + Price + ''; + var Price = this.dish.ingredients[i].price*nrOfGuests; + var Quantity = this.dish.ingredients[i].quantity*nrOfGuests; + string += '' + Quantity + ' ' + this.dish.ingredients[i].unit + '' + this.dish.ingredients[i].name + 'SEK' + Price + ''; sum += Price; } - summa= 'SEK ' + sum + ''; - + summa= 'SEK ' + ' ' + sum + ''; + string += ""; tableString.html(string); sumString.html(summa); @@ -56,8 +57,18 @@ var OneDishView = function (container, model) { //attach as listener model.addObserver(this); this.updateView = function(args) { - this.loadView(); + switch(args) { + case "guestsChanged": + this.loadView(); + break; + case "toRecipe": + this.loadView(); + break; + + default: + break; } + } } \ No newline at end of file diff --git a/Lab3/js/view/overviewView.js b/Lab3/js/view/overviewView.js index 3448c05f2..f7e276573 100755 --- a/Lab3/js/view/overviewView.js +++ b/Lab3/js/view/overviewView.js @@ -34,12 +34,23 @@ var OverviewView = function (container, model) { // load/update view. - this.loadView(); + //this.loadView(); //attach as listener model.addObserver(this); this.updateView = function() { this.loadView(); + /*switch(args) { + case "guestsChanged": + this.loadView(); + break; + case "toRecipe": + this.loadView(); + break; + + default: + break; + }*/ } } diff --git a/Lab3/js/view/printView.js b/Lab3/js/view/printView.js index 231070c9c..f1203a3c5 100755 --- a/Lab3/js/view/printView.js +++ b/Lab3/js/view/printView.js @@ -36,11 +36,11 @@ var PrintView = function (container, model) { // load/update view. - this.loadView(); + //this.loadView(); //attach as listener model.addObserver(this); this.updateView = function() { - console.log("testar ny funktion - print"); + this.loadView(); } } \ No newline at end of file diff --git a/Lab3/js/view/searchView.js b/Lab3/js/view/searchView.js index 0458da17d..cf7b8f723 100755 --- a/Lab3/js/view/searchView.js +++ b/Lab3/js/view/searchView.js @@ -19,7 +19,7 @@ var SearchView = function (container, model) { //lägg in rätterna for(i in menu){ - string += '
'; + string += '
'; } this.picBox.html(string); @@ -34,6 +34,13 @@ var SearchView = function (container, model) { model.addObserver(this); this.updateView = function(args) { - this.loadView(); - } + switch(args) { + case "newTypeSelected": + this.loadView(); + break; + + default: + break; + } + } } \ No newline at end of file diff --git a/Lab3/js/view/sideView.js b/Lab3/js/view/sideView.js index 64e2418f8..85127f216 100755 --- a/Lab3/js/view/sideView.js +++ b/Lab3/js/view/sideView.js @@ -3,9 +3,10 @@ var SideView = function (container, model) { this.container = container; this.model = model; + this.confirmButton = container.find("#confirm"); var numberOfGuests = container.find("#numberOfGuests"); - var table = container.find("#dinnerTable"); + this.table = container.find("#dinnerTable"); var summa = container.find("#sum"); var Summa = container.find("#summa"); @@ -20,8 +21,12 @@ var SideView = function (container, model) { var menu = model.getFullMenu(); // stoppain filter och type i funktionen. var string = ''; var sum = 0; - - + if (menu === undefined || menu.length == 0){ + this.confirmButton.prop('disabled', true); + } + else{ + this.confirmButton.prop('disabled', false); + } //lägg in rätterna från vald menu och räknar ut priset av varje rätt samt totalt for(i in menu){ var dishPrice = 0; @@ -30,11 +35,12 @@ var SideView = function (container, model) { } sum += dishPrice; - string += '' + menu[i].name + '' + dishPrice + ''; + string += '' + menu[i].name + '' + dishPrice + ' '+ + ''; } - table.html(string); + this.table.html(string); summa.html(sum); Summa.html(sum); @@ -49,7 +55,20 @@ var SideView = function (container, model) { //attach as listener model.addObserver(this); this.updateView = function(args) { - this.loadView(); + switch(args) { + case "guestsChanged": + this.loadView(); + break; + case "newDishAdded": + this.loadView(); + break; + case "removedDish": + this.loadView(); + break; + + default: + break; + } } diff --git a/Lab3/style2D.css b/Lab3/style2D.css index 4287fea49..6772445fa 100755 --- a/Lab3/style2D.css +++ b/Lab3/style2D.css @@ -34,10 +34,6 @@ table { /* margin-left: 0;*/ } -.caption { - text-align: center; -} - .jumbotron { text-align: center; padding-top: 0px; @@ -111,3 +107,22 @@ hr { .margin1{ margin-bottom: 0px; } +.caption { + text-align: center; + +} +h3{ + padding: 0px; + margin: 0px; +} +.picture{ + max-width: 200px; + height: 270px; +} +#imgDish{ + max-width: 300px; +} +#headlineDish{ + text-align: left; + +} \ No newline at end of file From fcefa0d4d6b1ca14decf70d4ad9449cb3a4d6bd5 Mon Sep 17 00:00:00 2001 From: lindelindblad Date: Tue, 27 Feb 2018 11:38:37 +0100 Subject: [PATCH 51/64] getAllDishes uppd. med ajaxreq. --- Lab3/index.html | 21 +++++++++++++++------ Lab3/js/model/dinnerModel.js | 32 ++++++++++++++++++++++++++++---- Lab3/js/view/oneDishView.js | 4 ++-- Lab3/js/view/searchView.js | 35 +++++++++++++++++++++++++++++------ 4 files changed, 74 insertions(+), 18 deletions(-) diff --git a/Lab3/index.html b/Lab3/index.html index a458b2ecf..8cc4cd2f1 100755 --- a/Lab3/index.html +++ b/Lab3/index.html @@ -122,11 +122,19 @@

Find a dish

@@ -135,10 +143,11 @@

Find a dish

- +
-
+
+
diff --git a/Lab3/js/model/dinnerModel.js b/Lab3/js/model/dinnerModel.js index be7fceb61..ff8960229 100755 --- a/Lab3/js/model/dinnerModel.js +++ b/Lab3/js/model/dinnerModel.js @@ -132,8 +132,32 @@ var DinnerModel = function() { //function that returns all dishes of specific type (i.e. "starter", "main dish" or "dessert") //you can use the filter argument to filter out the dish by name or ingredient (use for search) //if you don't pass any filter all the dishes will be returned - this.getAllDishes = function (type,filter) { - return dishes.filter(function(dish) { + this.getAllDishes = function (type,filter, loadDishes) { + + $.ajax( { + url: "https://spoonacular-recipe-food-nutrition-v1.p.mashape.com/recipes/search?type=" + type, + + headers: { + 'X-Mashape-Key': "Qu9grxVNWpmshA4Kl9pTwyiJxVGUp1lKzrZjsnghQMkFkfA4LB" + }, + success: function(data) { + var dishes = data.results; + console.log("type: " + type); + console.log(dishes); + //callback(data) + + loadDishes(dishes); + + }, + error: function(error) { + alert("fungerade ej"); + //errorCallback(error) + } + }); + + + + /*return dishes.filter(function(dish) { var found = true; if(filter){ found = false; @@ -149,8 +173,8 @@ var DinnerModel = function() { } return dish.type == type || type == "all" && found; //för att få alla dishes. - }); - this.notifyObservers("newTypeSelected"); + });*/ + //this.notifyObservers("newTypeSelected"); //Behövs inte längre pga använder API istället för att ändra i modellen. } //function that returns a dish of specific ID diff --git a/Lab3/js/view/oneDishView.js b/Lab3/js/view/oneDishView.js index 72c59ac51..c791c0c47 100755 --- a/Lab3/js/view/oneDishView.js +++ b/Lab3/js/view/oneDishView.js @@ -23,8 +23,8 @@ var OneDishView = function (container, model) { nrOfGuests = model.getNumberOfGuests(); - headlineDish.html(this.dish.name); - picDish.html(''); + headlineDish.html(this.dish.title); + picDish.html(''); description.html(this.dish.description); diff --git a/Lab3/js/view/searchView.js b/Lab3/js/view/searchView.js index cf7b8f723..27a82f4df 100755 --- a/Lab3/js/view/searchView.js +++ b/Lab3/js/view/searchView.js @@ -3,6 +3,29 @@ var SearchView = function (container, model) { this.searchButton = container.find("#searchButton"); // knappen ska bara göra loadView(), i den funktionen finns resten av isntruktionerna this.picBox = container.find("#template"); //this, app adds eventlistener + var self = this; + var string = ''; + + var loadDishes = function(dishes) { + string = ""; + + var menu = dishes; + console.log("Menyn är här: "+ menu); + + //lägg in rätterna + for(i in menu){ + string += '
'; + + } + + console.log(string); + self.picBox.html(string); + + + + + } + //load view this.loadView = function() { @@ -13,18 +36,18 @@ var SearchView = function (container, model) { //var keywords = Hämta filter var filter = document.getElementById("keywords").value; - var menu = model.getAllDishes(type, filter); // stoppain filter och type i funktionen. - var string = ''; + model.getAllDishes(type, filter, loadDishes); // stoppain filter och type i funktionen. - //lägg in rätterna - for(i in menu){ - string += '
'; - } this.picBox.html(string); + + + } + + From e416f5313e962a5f1439ae6c9b59b562687a5883 Mon Sep 17 00:00:00 2001 From: lindelindblad Date: Tue, 27 Feb 2018 12:36:44 +0100 Subject: [PATCH 52/64] halv loadRecipe (api) --- Lab3/js/controller/searchViewController.js | 1 + Lab3/js/model/dinnerModel.js | 35 +++++++++++++++++++-- Lab3/js/view/oneDishView.js | 36 ++++++++++++++++++---- Lab3/js/view/searchView.js | 2 +- 4 files changed, 64 insertions(+), 10 deletions(-) diff --git a/Lab3/js/controller/searchViewController.js b/Lab3/js/controller/searchViewController.js index 1b21c4092..25a4385dc 100755 --- a/Lab3/js/controller/searchViewController.js +++ b/Lab3/js/controller/searchViewController.js @@ -13,6 +13,7 @@ var SearchViewController = function(view, model, sControl) { view.picBox.on("click", ".thumbnail", function(){ model.selectDishRecipe(this.id); + //textInput.value = ""; // nollställer keywordsfönstret när man tryckt sök. sControl.oneDish(); }); diff --git a/Lab3/js/model/dinnerModel.js b/Lab3/js/model/dinnerModel.js index ff8960229..eafd32726 100755 --- a/Lab3/js/model/dinnerModel.js +++ b/Lab3/js/model/dinnerModel.js @@ -178,12 +178,41 @@ var DinnerModel = function() { } //function that returns a dish of specific ID - this.getDish = function (id) { - for( var i = 0; i < dishes.length; i++) { + this.getDish = function (id, loadRecipe) { + console.log("Dish id innan ajax: " + id); + $.ajax( { + url: "https://spoonacular-recipe-food-nutrition-v1.p.mashape.com/recipes/" + id + "/information", + + headers: { + 'X-Mashape-Key': "Qu9grxVNWpmshA4Kl9pTwyiJxVGUp1lKzrZjsnghQMkFkfA4LB" + }, + success: function(data) { + + var dishInformation = data; + console.log("Dish: " + dishInformation.title); + console.log("First Ingredient: " + dishInformation.extendedIngredients[0].id); + + loadRecipe(dishInformation); + //callback(data) + + + + }, + error: function(error) { + alert("fungerade ej"); + //errorCallback(error) + } + }); + + + + + + /*for( var i = 0; i < dishes.length; i++) { if (dishes[i].id == id) { return dishes[i]; } - } + }*/ } diff --git a/Lab3/js/view/oneDishView.js b/Lab3/js/view/oneDishView.js index c791c0c47..8401872c2 100755 --- a/Lab3/js/view/oneDishView.js +++ b/Lab3/js/view/oneDishView.js @@ -14,16 +14,40 @@ var OneDishView = function (container, model) { var sumString = container.find("#td1"); var rubrik = container.find("#ingrFor"); + var loadRecipe = function(dish) { + headlineDish.html(dish.title); + picDish.html(''); + description.html(dish.instructions); + var noServings = dish.servings; + var priceServing = dish.pricePerServing; + //hämta antal servings : 4 personer + + //hämta totalpris + + } + + this.updateRecipe = function() { + nrOfGuests = model.getNumberOfGuests(); + + //nytt totalpris + + // ingrediens/antal servibngs * nrOfGuests + } this.loadView = function() { var dishId = model.returnDishRecipe(); - + //nrOfGuests = model.getNumberOfGuests(); + model.getDish(dishId, loadRecipe); + var string = ''; + string += "
AmountIngredient pris
"; + tableString.html(string); - this.dish = model.getDish(dishId); + - nrOfGuests = model.getNumberOfGuests(); + - headlineDish.html(this.dish.title); +/* + picDish.html(''); description.html(this.dish.description); @@ -44,7 +68,7 @@ var OneDishView = function (container, model) { summa= 'SEK ' + ' ' + sum + ''; string += ""; tableString.html(string); - sumString.html(summa); + sumString.html(summa);*/ } @@ -55,7 +79,7 @@ var OneDishView = function (container, model) { // load/update view. //this.loadView(); //attach as listener - model.addObserver(this); + //model.addObserver(this); this.updateView = function(args) { switch(args) { case "guestsChanged": diff --git a/Lab3/js/view/searchView.js b/Lab3/js/view/searchView.js index 27a82f4df..b390cdd83 100755 --- a/Lab3/js/view/searchView.js +++ b/Lab3/js/view/searchView.js @@ -39,7 +39,7 @@ var SearchView = function (container, model) { model.getAllDishes(type, filter, loadDishes); // stoppain filter och type i funktionen. - this.picBox.html(string); + //this.picBox.html(string); From 4c133205e6df3eb3d122a50d63ad697fcac3ae6d Mon Sep 17 00:00:00 2001 From: lindelindblad Date: Tue, 27 Feb 2018 17:41:59 +0100 Subject: [PATCH 53/64] =?UTF-8?q?N=C3=A4stan=20Klar!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Saknar bara bra spinner! --- Lab3/index.html | 7 ++ Lab3/js/app.js | 13 ++ Lab3/js/controller/loadingViewController.js | 21 ++++ Lab3/js/controller/oneDishViewController.js | 5 +- Lab3/js/model/dinnerModel.js | 129 ++++++++------------ Lab3/js/view/loadingView.js | 24 ++++ Lab3/js/view/oneDishView.js | 92 ++++++++------ Lab3/js/view/overviewView.js | 24 +++- Lab3/js/view/printView.js | 8 +- Lab3/js/view/searchView.js | 5 +- Lab3/js/view/sideView.js | 32 +++-- Lab3/style2D.css | 16 ++- 12 files changed, 235 insertions(+), 141 deletions(-) create mode 100644 Lab3/js/controller/loadingViewController.js create mode 100644 Lab3/js/view/loadingView.js diff --git a/Lab3/index.html b/Lab3/index.html index 8cc4cd2f1..1670571c0 100755 --- a/Lab3/index.html +++ b/Lab3/index.html @@ -144,6 +144,7 @@

Find a dish

+
@@ -151,9 +152,15 @@

Find a dish

+ + + +
+
+
diff --git a/Lab3/js/app.js b/Lab3/js/app.js index c09f71a75..0a8985744 100755 --- a/Lab3/js/app.js +++ b/Lab3/js/app.js @@ -25,6 +25,9 @@ $(function() { // 6. printView var printView = new PrintView($("#printView"), model); + + // 7. loadview + //var loadingView = new LoadingView($("#loadView"), model); // Controllers @@ -79,6 +82,15 @@ $(function() { searchView.container.show(); } + this.startLoading = function() { + loadingView.container.show(); + oneDishView.container.hide(); + } + + this.doneLoading = function() { + loadingView.container.hide(); + } + // Gömmer allt utom start $("#header").hide(); $("#sideView").hide(); @@ -86,6 +98,7 @@ $(function() { $("#oneDishView").hide(); $("#overview").hide(); $("#printView").hide(); + $("#loadingView").hide(); startDinner(); diff --git a/Lab3/js/controller/loadingViewController.js b/Lab3/js/controller/loadingViewController.js new file mode 100644 index 000000000..8e5a5d498 --- /dev/null +++ b/Lab3/js/controller/loadingViewController.js @@ -0,0 +1,21 @@ +var LoadViewController = function(view, model, sControl) { + var view = view; + var sControl = sControl; + + view.updateView = function(args) { + switch(args) { + case "startLoading": + console.log("uppdatera"); + sControl.startLoading(); + break; + case "stopLoading": + console.log("klar med load"); + sControl.stopLoading(); + break; + default: + break; + } + } + + +} \ No newline at end of file diff --git a/Lab3/js/controller/oneDishViewController.js b/Lab3/js/controller/oneDishViewController.js index 83aa818a9..fff7f7524 100755 --- a/Lab3/js/controller/oneDishViewController.js +++ b/Lab3/js/controller/oneDishViewController.js @@ -6,11 +6,14 @@ var OneDishViewController = function(view, model, sControl) { var sControl = sControl; add.click(function() { - model.addDishToMenu(view.dish.id); + model.addDishToMenu(model.displayedDish); }); backButton.click(function() { sControl.backToSearch(); + //model.displayedDish =""; + + }); diff --git a/Lab3/js/model/dinnerModel.js b/Lab3/js/model/dinnerModel.js index eafd32726..c152afeae 100755 --- a/Lab3/js/model/dinnerModel.js +++ b/Lab3/js/model/dinnerModel.js @@ -7,7 +7,7 @@ var DinnerModel = function() { var numberOfGuests = 2; // ej this. för då blir det en property som man kan nå utifrån. istället var. var menu = []; this.observers = new Array(); - var displayedDish = ""; + this.displayedDish = ""; this.addObserver = function(observer) { this.observers.push(observer); @@ -33,6 +33,8 @@ var DinnerModel = function() { return numberOfGuests; } + + //Returns the dish that is on the menu for selected type //borde kolla i dishes istället för att filtrera vilka rätter som visas i overview. this.getSelectedDish = function(type) { @@ -47,7 +49,7 @@ var DinnerModel = function() { //Returnerar id på klickad rätt this.selectDishRecipe = function (selectedID) { - displayedDish = selectedID; + this.displayedDish = selectedID; //console.log("nu går vi vidare till recept"); //console.log(displayedDish); //notifyObservers(); @@ -56,16 +58,12 @@ var DinnerModel = function() { }; this.returnDishRecipe = function() { - return displayedDish; + return this.displayedDish; } //Returns all the dishes on the menu. this.getFullMenu = function() { - var fullMenu = []; - for (i in menu){ - fullMenu.push(this.getDish(menu[i])); - } - return fullMenu; + return menu; } //Returns all ingredients for all the dishes on the menu. @@ -97,22 +95,21 @@ var DinnerModel = function() { return totalPrice; } + this.getDishPrice = function(dishObject) { + return dishObject.pricePerServing; + + } + //Adds the passed dish to the menu. If the dish of that type already exists on the menu //it is removed from the menu and the new one added. this.addDishToMenu = function(id) { - var newType = this.getDish(id).type; - - for (i in menu){ - var menuType = this.getDish(menu[i]).type; - if (newType === menuType){ - this.removeDishFromMenu(menu[i]); - } - } - - menu.push(id); - this.notifyObservers("newDishAdded"); - - + this.getDish(id, dish=> { + var newDish = dish; + console.log("vår nya rätt: " + newDish); + menu.push(newDish); + console.log("vår nya meny: " + menu); + this.notifyObservers("newDishAdded"); + }); } //Removes dish from menu @@ -121,64 +118,65 @@ var DinnerModel = function() { var i = 0; for (i in menu){ - if (menu[i] === id){ + if (menu[i].id === id){ menu.splice(i,1) } } this.notifyObservers("removedDish"); - } + $.ajaxSetup({ + beforeSend: function() { + $("#loadingView").show(); + //this.notifyObservers("startLoading"); + }, + complete: function() { + $("#loadingView").hide(); + //this.notifyObservers("stopLoading"); + }, + error: function(jqXHR, exception) { + if (jqXHR.status === 0) { + alert('Not connect.\n Verify Network.'); + } else if (jqXHR.status == 404) { + alert('Requested page not found. [404]'); + } else if (jqXHR.status == 500) { + alert('Internal Server Error [500].'); + } else if (exception === 'parsererror') { + alert('Requested JSON parse failed.'); + } else if (exception === 'timeout') { + alert('Time out error.'); + } else if (exception === 'abort') { + alert('Ajax request aborted.'); + } else { + alert('Uncaught Error.\n' + jqXHR.responseText); + } + } + }); + + //function that returns all dishes of specific type (i.e. "starter", "main dish" or "dessert") //you can use the filter argument to filter out the dish by name or ingredient (use for search) //if you don't pass any filter all the dishes will be returned this.getAllDishes = function (type,filter, loadDishes) { $.ajax( { - url: "https://spoonacular-recipe-food-nutrition-v1.p.mashape.com/recipes/search?type=" + type, + url: "https://spoonacular-recipe-food-nutrition-v1.p.mashape.com/recipes/search?type=" + type + "&query=" + filter, headers: { 'X-Mashape-Key': "Qu9grxVNWpmshA4Kl9pTwyiJxVGUp1lKzrZjsnghQMkFkfA4LB" }, success: function(data) { + var dishes = data.results; - console.log("type: " + type); - console.log(dishes); - //callback(data) loadDishes(dishes); - }, - error: function(error) { - alert("fungerade ej"); - //errorCallback(error) } }); - - - - /*return dishes.filter(function(dish) { - var found = true; - if(filter){ - found = false; - dish.ingredients.forEach(function(ingredient) { - if(ingredient.name.indexOf(filter)!=-1) { - found = true; - } - }); - if(dish.name.indexOf(filter) != -1) - { - found = true; - } - } - return dish.type == type || type == "all" && found; - //för att få alla dishes. - });*/ - //this.notifyObservers("newTypeSelected"); //Behövs inte längre pga använder API istället för att ändra i modellen. } //function that returns a dish of specific ID - this.getDish = function (id, loadRecipe) { + this.getDish = function (id, func) { console.log("Dish id innan ajax: " + id); $.ajax( { url: "https://spoonacular-recipe-food-nutrition-v1.p.mashape.com/recipes/" + id + "/information", @@ -187,32 +185,11 @@ var DinnerModel = function() { 'X-Mashape-Key': "Qu9grxVNWpmshA4Kl9pTwyiJxVGUp1lKzrZjsnghQMkFkfA4LB" }, success: function(data) { - - var dishInformation = data; - console.log("Dish: " + dishInformation.title); - console.log("First Ingredient: " + dishInformation.extendedIngredients[0].id); - - loadRecipe(dishInformation); - //callback(data) - - - - }, - error: function(error) { - alert("fungerade ej"); - //errorCallback(error) + func(data); } - }); - - - + }); - /*for( var i = 0; i < dishes.length; i++) { - if (dishes[i].id == id) { - return dishes[i]; - } - }*/ } diff --git a/Lab3/js/view/loadingView.js b/Lab3/js/view/loadingView.js new file mode 100644 index 000000000..d5a7714dc --- /dev/null +++ b/Lab3/js/view/loadingView.js @@ -0,0 +1,24 @@ +var LoadingView = function (container, model) { + this.container = container; + this.model = model; + + + //attach as listener + model.addObserver(this); + + this.updateView = function(args) { + switch(args) { + case "startLoading": + console.log("uppdatera"); + break; + case "stopLoading": + console.log("klar med load"); + break; + + + default: + break; + } + } + + } \ No newline at end of file diff --git a/Lab3/js/view/oneDishView.js b/Lab3/js/view/oneDishView.js index 8401872c2..e21378f4b 100755 --- a/Lab3/js/view/oneDishView.js +++ b/Lab3/js/view/oneDishView.js @@ -13,81 +13,93 @@ var OneDishView = function (container, model) { var tableString = container.find("#table"); var sumString = container.find("#td1"); var rubrik = container.find("#ingrFor"); + var noServings = ""; + var priceServing = ""; + var ingredients = []; + const self = this; var loadRecipe = function(dish) { + + headlineDish.html(dish.title); picDish.html(''); description.html(dish.instructions); - var noServings = dish.servings; - var priceServing = dish.pricePerServing; + noServings = dish.servings; + priceServing = dish.pricePerServing; + ingredients = dish.extendedIngredients; + console.log("ingredienslista: " + ingredients); + //hämta antal servings : 4 personer //hämta totalpris + //uppdatera tabellen rätt antal + updateRecipe(); + } - this.updateRecipe = function() { + var updateRecipe = function() { + + //console.log("inne i updateREcipe"); nrOfGuests = model.getNumberOfGuests(); //nytt totalpris + var totalPrice = Math.round(priceServing * nrOfGuests*10)/10; //model.getDishPrice() // ingrediens/antal servibngs * nrOfGuests + + var string = ''; + + for(i in ingredients){ + //var Price = ingredients[i].price*nrOfGuests; + var quantity = ingredients[i].amount * nrOfGuests; + string += ''; + } + + + string += "
AmountIngredient
' + quantity + ' ' + ingredients[i].unit + '' + ingredients[i].name + '
"; + var summa= '
SEK ' + ' ' + totalPrice + '
'; + tableString.html(string); + sumString.html(summa); + } - this.loadView = function() { + this.loadView = function() { + clearView(); var dishId = model.returnDishRecipe(); //nrOfGuests = model.getNumberOfGuests(); model.getDish(dishId, loadRecipe); - var string = ''; - string += "
AmountIngredient pris
"; - tableString.html(string); - - - + } -/* - - picDish.html(''); - - description.html(this.dish.description); - - Rubrik = 'Ingredients for ' + nrOfGuests + ' people'; - rubrik.html(Rubrik); - - var string = ''; - - var sum = 0; - - for(i in this.dish.ingredients){ - var Price = this.dish.ingredients[i].price*nrOfGuests; - var Quantity = this.dish.ingredients[i].quantity*nrOfGuests; - string += ''; - sum += Price; - } - summa= ''; - string += "
mängdsakSEKpris
' + Quantity + ' ' + this.dish.ingredients[i].unit + '' + this.dish.ingredients[i].name + 'SEK' + Price + '
SEK ' + ' ' + sum + '
"; - tableString.html(string); - sumString.html(summa);*/ + var clearView = function() { + headlineDish.html(""); + picDish.html(""); + description.html(""); + tableString.html(""); + sumString.html(""); } - - - - // load/update view. - //this.loadView(); //attach as listener - //model.addObserver(this); + model.addObserver(this); + this.updateView = function(args) { switch(args) { case "guestsChanged": - this.loadView(); + updateRecipe(); break; case "toRecipe": this.loadView(); break; + case "dishFetched": + loadRecipe() + break; + case "clearView": + loadRecipe() + break; + default: break; diff --git a/Lab3/js/view/overviewView.js b/Lab3/js/view/overviewView.js index f7e276573..0a34cf359 100755 --- a/Lab3/js/view/overviewView.js +++ b/Lab3/js/view/overviewView.js @@ -15,17 +15,31 @@ var OverviewView = function (container, model) { var menu = model.getFullMenu(); header.html(string); - sum =0; - HTMLPic= ""; - for(i in menu){ + var menuPrice =0; + var HTMLPic= ""; + + for(var i = 0; i < menu.length; i++){ + console.log("inne i loopen"); + var dishPrice = parseInt(model.getDishPrice(menu[i]) * nrOfGuests); + menuPrice += dishPrice; + + HTMLPic += '

'+ dishPrice +' SEK

'; + + + } + + + + + /*for(i in menu){ var dishPrice = 0; for(n in menu[i].ingredients){ dishPrice += menu[i].ingredients[n].price*nr; } - HTMLPic += '

'+ dishPrice +' SEK

'; + HTMLPic += '

'+ dishPrice +' SEK

'; sum += dishPrice; - } + }*/ pictures.html(HTMLPic); total.html(sum); diff --git a/Lab3/js/view/printView.js b/Lab3/js/view/printView.js index f1203a3c5..df1cb2edf 100755 --- a/Lab3/js/view/printView.js +++ b/Lab3/js/view/printView.js @@ -21,10 +21,10 @@ var PrintView = function (container, model) { menu = model.getFullMenu() - for(i in menu){ - string += '
'+ - '

' + menu[i].name + - '

Preparation

' + menu[i].description + + for(var i = 0; i < menu.length; i++){ + string += '

'+ + '

' + menu[i].title + + '

Preparation

' + menu[i].instructions + '

'; ; diff --git a/Lab3/js/view/searchView.js b/Lab3/js/view/searchView.js index b390cdd83..be6dbcc58 100755 --- a/Lab3/js/view/searchView.js +++ b/Lab3/js/view/searchView.js @@ -10,7 +10,6 @@ var SearchView = function (container, model) { string = ""; var menu = dishes; - console.log("Menyn är här: "+ menu); //lägg in rätterna for(i in menu){ @@ -18,12 +17,10 @@ var SearchView = function (container, model) { } - console.log(string); + //console.log(string); self.picBox.html(string); - - } diff --git a/Lab3/js/view/sideView.js b/Lab3/js/view/sideView.js index 85127f216..d47db946f 100755 --- a/Lab3/js/view/sideView.js +++ b/Lab3/js/view/sideView.js @@ -1,14 +1,14 @@ var SideView = function (container, model) { this.container = container; - this.model = model; + //this.model = model; this.confirmButton = container.find("#confirm"); var numberOfGuests = container.find("#numberOfGuests"); this.table = container.find("#dinnerTable"); var summa = container.find("#sum"); - var Summa = container.find("#summa"); + var totalCost = container.find("#summa"); @@ -19,30 +19,42 @@ var SideView = function (container, model) { numberOfGuests.html(nrOfGuests); var menu = model.getFullMenu(); // stoppain filter och type i funktionen. + var string = ''; - var sum = 0; + var menuPrice = 0; + if (menu === undefined || menu.length == 0){ this.confirmButton.prop('disabled', true); } else{ this.confirmButton.prop('disabled', false); } + + console.log("före i loopen"); //lägg in rätterna från vald menu och räknar ut priset av varje rätt samt totalt - for(i in menu){ - var dishPrice = 0; - for(n in menu[i].ingredients){ + + + for(var i = 0; i < menu.length; i++){ + console.log("inne i loopen"); + var dishPrice = parseInt(model.getDishPrice(menu[i]) * nrOfGuests); + menuPrice += dishPrice; + + + + /*for(n in menu[i].ingredients){ dishPrice += menu[i].ingredients[n].price*nrOfGuests; } - sum += dishPrice; + */ - string += '' + menu[i].name + '' + dishPrice + ' '+ + string += '' + menu[i].title + '' + dishPrice + ' '+ ''; } this.table.html(string); - summa.html(sum); - Summa.html(sum); + totalCost.html(menuPrice); + summa.html(menuPrice); + } diff --git a/Lab3/style2D.css b/Lab3/style2D.css index 6772445fa..2429a42ad 100755 --- a/Lab3/style2D.css +++ b/Lab3/style2D.css @@ -125,4 +125,18 @@ h3{ #headlineDish{ text-align: left; -} \ No newline at end of file +} + +.loader { + border: 16px solid #f3f3f3; /* Light grey */ + border-top: 16px solid #3498db; /* Blue */ + border-radius: 50%; + width: 120px; + height: 120px; + animation: spin 2s linear infinite; +} + +@keyframes spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } +} From 1b0a78df09898b7e26defc659091861a7d25ba73 Mon Sep 17 00:00:00 2001 From: lindelindblad Date: Tue, 27 Feb 2018 20:57:29 +0100 Subject: [PATCH 54/64] =?UTF-8?q?sm=C3=A5fix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Lab3/index.html | 14 ++++++-------- Lab3/js/model/dinnerModel.js | 8 +++----- Lab3/js/view/overviewView.js | 12 ------------ Lab3/js/view/searchView.js | 30 ++++++++++++++---------------- Lab3/js/view/sideView.js | 9 +++++++-- 5 files changed, 30 insertions(+), 43 deletions(-) diff --git a/Lab3/index.html b/Lab3/index.html index 1670571c0..aa80a85d3 100755 --- a/Lab3/index.html +++ b/Lab3/index.html @@ -57,12 +57,11 @@

Dinner Planner

@@ -90,7 +89,7 @@
Number of guests:
- +
SEK
@@ -144,7 +143,6 @@

Find a dish

-
diff --git a/Lab3/js/model/dinnerModel.js b/Lab3/js/model/dinnerModel.js index c152afeae..89c901aa1 100755 --- a/Lab3/js/model/dinnerModel.js +++ b/Lab3/js/model/dinnerModel.js @@ -136,7 +136,7 @@ var DinnerModel = function() { }, error: function(jqXHR, exception) { if (jqXHR.status === 0) { - alert('Not connect.\n Verify Network.'); + alert('Not connected.\n Verify network.'); } else if (jqXHR.status == 404) { alert('Requested page not found. [404]'); } else if (jqXHR.status == 500) { @@ -166,9 +166,7 @@ var DinnerModel = function() { 'X-Mashape-Key': "Qu9grxVNWpmshA4Kl9pTwyiJxVGUp1lKzrZjsnghQMkFkfA4LB" }, success: function(data) { - var dishes = data.results; - loadDishes(dishes); } @@ -201,7 +199,7 @@ var DinnerModel = function() { // defining the unit i.e. "g", "slices", "ml". Unit // can sometimes be empty like in the example of eggs where // you just say "5 eggs" and not "5 pieces of eggs" or anything else. - var dishes = [{ + /*var dishes = [{ 'id':1, 'name':'French toast', 'type':'starter', @@ -442,6 +440,6 @@ var DinnerModel = function() { 'price':6 }] } - ]; + ];*/ } diff --git a/Lab3/js/view/overviewView.js b/Lab3/js/view/overviewView.js index 0a34cf359..867891241 100755 --- a/Lab3/js/view/overviewView.js +++ b/Lab3/js/view/overviewView.js @@ -28,18 +28,6 @@ var OverviewView = function (container, model) { } - - - - /*for(i in menu){ - var dishPrice = 0; - for(n in menu[i].ingredients){ - dishPrice += menu[i].ingredients[n].price*nr; - } - HTMLPic += '

'+ dishPrice +' SEK

'; - - sum += dishPrice; - }*/ pictures.html(HTMLPic); total.html(sum); diff --git a/Lab3/js/view/searchView.js b/Lab3/js/view/searchView.js index be6dbcc58..f93a55632 100755 --- a/Lab3/js/view/searchView.js +++ b/Lab3/js/view/searchView.js @@ -1,28 +1,23 @@ var SearchView = function (container, model) { this.container = container; this.searchButton = container.find("#searchButton"); // knappen ska bara göra loadView(), i den funktionen finns resten av isntruktionerna + this.loadingView = this.picBox = container.find("#template"); //this, app adds eventlistener var self = this; var string = ''; - var loadDishes = function(dishes) { + /*var loadDishes = function(dishes) { string = ""; - var menu = dishes; //lägg in rätterna for(i in menu){ - string += '
'; - + string += '
'; } - //console.log(string); self.picBox.html(string); - - - } - + }*/ //load view this.loadView = function() { @@ -33,15 +28,17 @@ var SearchView = function (container, model) { //var keywords = Hämta filter var filter = document.getElementById("keywords").value; - model.getAllDishes(type, filter, loadDishes); // stoppain filter och type i funktionen. - + model.getAllDishes(type, filter, function(data) { + string = ""; + var menu = data; - //this.picBox.html(string); - - - + //lägg in rätterna + for(i in menu){ + string += '
'; + } + self.picBox.html(string); + }); - } @@ -50,6 +47,7 @@ var SearchView = function (container, model) { // load/update view. this.loadView(); + //attach as listener model.addObserver(this); diff --git a/Lab3/js/view/sideView.js b/Lab3/js/view/sideView.js index d47db946f..7a8b9d544 100755 --- a/Lab3/js/view/sideView.js +++ b/Lab3/js/view/sideView.js @@ -21,7 +21,8 @@ var SideView = function (container, model) { var menu = model.getFullMenu(); // stoppain filter och type i funktionen. var string = ''; - var menuPrice = 0; + //var menuPrice = ""; + var mp = 0; if (menu === undefined || menu.length == 0){ this.confirmButton.prop('disabled', true); @@ -37,7 +38,9 @@ var SideView = function (container, model) { for(var i = 0; i < menu.length; i++){ console.log("inne i loopen"); var dishPrice = parseInt(model.getDishPrice(menu[i]) * nrOfGuests); - menuPrice += dishPrice; + mp += dishPrice; + + @@ -50,6 +53,8 @@ var SideView = function (container, model) { ''; } + var menuPrice = "" + mp + ""; + this.table.html(string); totalCost.html(menuPrice); From 2e4bce5021e5e1f4f28d7af8cd830aa398fe50dc Mon Sep 17 00:00:00 2001 From: sofiaJagerstrom Date: Tue, 27 Feb 2018 21:27:51 +0100 Subject: [PATCH 55/64] tog bort kommentarer --- Lab3/js/view/searchView.js | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/Lab3/js/view/searchView.js b/Lab3/js/view/searchView.js index f93a55632..68b142896 100755 --- a/Lab3/js/view/searchView.js +++ b/Lab3/js/view/searchView.js @@ -7,19 +7,6 @@ var SearchView = function (container, model) { var self = this; var string = ''; - /*var loadDishes = function(dishes) { - string = ""; - var menu = dishes; - - //lägg in rätterna - for(i in menu){ - string += '
'; - } - //console.log(string); - self.picBox.html(string); - }*/ - - //load view this.loadView = function() { //var type = hämta type @@ -40,11 +27,7 @@ var SearchView = function (container, model) { }); } - - - - - + // load/update view. this.loadView(); From bf575081017ba039a37a5960e2036971c4b55921 Mon Sep 17 00:00:00 2001 From: sofiaJagerstrom Date: Fri, 16 Mar 2018 12:26:07 +0100 Subject: [PATCH 56/64] lab4 --- dinnerplanner-html-react-master/.gitignore | 21 + dinnerplanner-html-react-master/README.md | 43 + .../package-lock.json | 11724 ++++++++++++++++ dinnerplanner-html-react-master/package.json | 17 + .../public/index.html | 12 + dinnerplanner-html-react-master/src/App.css | 0 dinnerplanner-html-react-master/src/App.js | 32 + .../src/Dishes/Dishes.css | 0 .../src/Dishes/Dishes.js | 67 + .../src/SelectDish/SelectDish.css | 0 .../src/SelectDish/SelectDish.js | 20 + .../src/Sidebar/Sidebar.css | 0 .../src/Sidebar/Sidebar.js | 54 + .../src/Welcome/Welcome.css | 0 .../src/Welcome/Welcome.js | 21 + .../src/data/DinnerModel.js | 62 + dinnerplanner-html-react-master/src/index.css | 0 dinnerplanner-html-react-master/src/index.js | 13 + dinnerplanner-html-react-master/yarn.lock | 6691 +++++++++ 19 files changed, 18777 insertions(+) create mode 100644 dinnerplanner-html-react-master/.gitignore create mode 100644 dinnerplanner-html-react-master/README.md create mode 100644 dinnerplanner-html-react-master/package-lock.json create mode 100644 dinnerplanner-html-react-master/package.json create mode 100644 dinnerplanner-html-react-master/public/index.html create mode 100644 dinnerplanner-html-react-master/src/App.css create mode 100644 dinnerplanner-html-react-master/src/App.js create mode 100644 dinnerplanner-html-react-master/src/Dishes/Dishes.css create mode 100644 dinnerplanner-html-react-master/src/Dishes/Dishes.js create mode 100644 dinnerplanner-html-react-master/src/SelectDish/SelectDish.css create mode 100644 dinnerplanner-html-react-master/src/SelectDish/SelectDish.js create mode 100644 dinnerplanner-html-react-master/src/Sidebar/Sidebar.css create mode 100644 dinnerplanner-html-react-master/src/Sidebar/Sidebar.js create mode 100644 dinnerplanner-html-react-master/src/Welcome/Welcome.css create mode 100644 dinnerplanner-html-react-master/src/Welcome/Welcome.js create mode 100644 dinnerplanner-html-react-master/src/data/DinnerModel.js create mode 100644 dinnerplanner-html-react-master/src/index.css create mode 100644 dinnerplanner-html-react-master/src/index.js create mode 100644 dinnerplanner-html-react-master/yarn.lock diff --git a/dinnerplanner-html-react-master/.gitignore b/dinnerplanner-html-react-master/.gitignore new file mode 100644 index 000000000..d30f40ef4 --- /dev/null +++ b/dinnerplanner-html-react-master/.gitignore @@ -0,0 +1,21 @@ +# See https://help.github.com/ignore-files/ for more about ignoring files. + +# dependencies +/node_modules + +# testing +/coverage + +# production +/build + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/dinnerplanner-html-react-master/README.md b/dinnerplanner-html-react-master/README.md new file mode 100644 index 000000000..dcf8db305 --- /dev/null +++ b/dinnerplanner-html-react-master/README.md @@ -0,0 +1,43 @@ +# Dinner Planner React + +## How to get started + +Since modern frameworks use some advanced features like compiling the templates and source code in pure +JavaScript and dynamically loading the needed content, you cannot anymore just open the HTML file +in the browser. Instead, you will need a local webserver that will serve your app. Follow the instructions +bellow to install all the neded dependencies (e.g. the framework libraries) and the development webserver. + +1. First, make sure that you have npm installed on your system (follow the instructions + at [Installing Node](https://docs.npmjs.com/getting-started/installing-node). The computers in the lab rooms + should already have it, you will just need to do `module add node` to activate it (every time + you start the terminal). + +2. Run `npm install` through the terminal in the root of the repository. Let it + install all the dependencies. + +3. Run `npm start` through the terminal. This will start the webserver and the application should pop up in your + browser ready for use. Alternatively you can open in through [http://localhost:3000]. Whenever you make changes in your code and save, the browser will update automatically, so you don't have to click refresh anymore. + +## Understanding the startup code + +* `public/index.html` - this is the static html file, and as opposed to previous labs, we don't put view's HTML here. It should only contain HTML that's shared among all the views (e.g. header, footer) +* `src/data/DinnerModel.js` - example of dinner model with number of guests, getAllDishes function implemented using `fetch()` and Observer pattern. You can copy other functions from your original model (and modify as needed to make it work with ES6 JavaScript class) +* `src/index.js` - this is where React is started. You will normally not need to modify this file, but you can check it to see how React is started and how it calls the App - which is our root component. +* `src/index.css` - put your global styles here +* `src/App.js` - root component you can modify it's HTML and add different routes to it +* `src/Dishes`, `src/SelectDish` etc. - contain the `.js` and `.css` file for each component. You should create your own components roughly corresponding to your views from previous labs. + +Check the components and see how they work. There are additional comments in the code. + +## What you need to do + +* reimplement the missing views following React practices +* use [Router](https://reacttraining.com/react-router/web/guides/philosophy) to map different url address (e.g. /search, /dish/ID) to specific components (the startup code already does that for welcome screen and select dish screen) +* implement cookies or localStorage so that the numberOfGuests and menu are persisted on the page reload + + +## Credits + +* Michel Tabari for fine tunning the code + +This project was bootstrapped with [Create React App](https://github.com/facebookincubator/create-react-app). \ No newline at end of file diff --git a/dinnerplanner-html-react-master/package-lock.json b/dinnerplanner-html-react-master/package-lock.json new file mode 100644 index 000000000..c64ff7307 --- /dev/null +++ b/dinnerplanner-html-react-master/package-lock.json @@ -0,0 +1,11724 @@ +{ + "name": "dinnerplanner-html-react", + "version": "0.1.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "abab": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", + "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=" + }, + "accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "requires": { + "mime-types": "2.1.18", + "negotiator": "0.6.1" + } + }, + "acorn": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", + "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==" + }, + "acorn-dynamic-import": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", + "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", + "requires": { + "acorn": "4.0.13" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" + } + } + }, + "acorn-globals": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", + "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", + "requires": { + "acorn": "4.0.13" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" + } + } + }, + "acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "requires": { + "acorn": "3.3.0" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=" + } + } + }, + "address": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/address/-/address-1.0.3.tgz", + "integrity": "sha512-z55ocwKBRLryBs394Sm3ushTtBeg6VAeuku7utSoSnsJKvKcnXFIyC6vh27n3rXyxSgkJBBCAvyOn7gSUcTYjg==" + }, + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "ajv-keywords": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.1.0.tgz", + "integrity": "sha1-rCsnk5xUPpXSwG5/f1wnvkqlQ74=" + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" + }, + "ansi-align": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", + "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "requires": { + "string-width": "2.1.1" + } + }, + "ansi-escapes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", + "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==" + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=" + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "1.9.1" + } + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "requires": { + "arr-flatten": "1.1.0" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "requires": { + "is-extglob": "1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + } + } + }, + "append-transform": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "requires": { + "default-require-extensions": "1.0.0" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "1.0.3" + } + }, + "aria-query": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-0.7.1.tgz", + "integrity": "sha1-Jsu1r/ZBRLCoJb4YRuCxbPoAsR4=", + "requires": { + "ast-types-flow": "0.0.7", + "commander": "2.15.0" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" + }, + "array-filter": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", + "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=" + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" + }, + "array-flatten": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz", + "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=" + }, + "array-includes": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", + "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.10.0" + } + }, + "array-map": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", + "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=" + }, + "array-reduce": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", + "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=" + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "requires": { + "array-uniq": "1.0.3" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "requires": { + "bn.js": "4.11.8", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "requires": { + "util": "0.10.3" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + }, + "ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=" + }, + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "requires": { + "lodash": "4.17.5" + } + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "atob": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz", + "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=" + }, + "autoprefixer": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.1.6.tgz", + "integrity": "sha512-C9yv/UF3X+eJTi/zvfxuyfxmLibYrntpF3qoJYrMeQwgUJOZrZvpJiMG2FMQ3qnhWtF/be4pYONBBw95ZGe3vA==", + "requires": { + "browserslist": "2.11.3", + "caniuse-lite": "1.0.30000815", + "normalize-range": "0.1.2", + "num2fraction": "1.2.2", + "postcss": "6.0.19", + "postcss-value-parser": "3.3.0" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=" + }, + "axobject-query": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-0.1.0.tgz", + "integrity": "sha1-YvWdvFnJ+SQnWco0mWDnov48NsA=", + "requires": { + "ast-types-flow": "0.0.7" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "babel-core": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", + "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", + "requires": { + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.1", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.5.1", + "debug": "2.6.9", + "json5": "0.5.1", + "lodash": "4.17.5", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.8", + "slash": "1.0.0", + "source-map": "0.5.7" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "babel-eslint": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-7.2.3.tgz", + "integrity": "sha1-sv4tgBJkcPXBlELcdXJTqJdxCCc=", + "requires": { + "babel-code-frame": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0" + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.5", + "source-map": "0.5.7", + "trim-right": "1.0.1" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "requires": { + "babel-helper-explode-assignable-expression": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-builder-react-jsx": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz", + "integrity": "sha1-Of+DE7dci2Xc7/HzHTg+D/KkCKA=", + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "esutils": "2.0.2" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-define-map": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.5" + } + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "requires": { + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.5" + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "requires": { + "babel-helper-optimise-call-expression": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-jest": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-20.0.3.tgz", + "integrity": "sha1-5KA7E9wQOJ4UD8ZF0J/8TO0wFnE=", + "requires": { + "babel-core": "6.26.0", + "babel-plugin-istanbul": "4.1.5", + "babel-preset-jest": "20.0.3" + } + }, + "babel-loader": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.2.tgz", + "integrity": "sha512-jRwlFbINAeyDStqK6Dd5YuY0k5YuzQUvlz2ZamuXrXmxav3pNqe9vfJ402+2G+OmlJSXxCOpB6Uz0INM7RQe2A==", + "requires": { + "find-cache-dir": "1.0.0", + "loader-utils": "1.1.0", + "mkdirp": "0.5.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-1.1.0.tgz", + "integrity": "sha512-tTfZbM9Ecwj3GK50mnPrUpinTwA4xXmDiQGCk/aBYbvl1+X8YqldK86wZ1owVJ4u3mrKbRlXMma80J18qwiaTQ==", + "requires": { + "babel-plugin-syntax-dynamic-import": "6.18.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-istanbul": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.5.tgz", + "integrity": "sha1-Z2DN2Xf0EdPhdbsGTyvDJ9mbK24=", + "requires": { + "find-up": "2.1.0", + "istanbul-lib-instrument": "1.10.1", + "test-exclude": "4.2.1" + } + }, + "babel-plugin-jest-hoist": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-20.0.3.tgz", + "integrity": "sha1-r+3IU70/jcNUjqZx++adA8wsF2c=" + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=" + }, + "babel-plugin-syntax-class-properties": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", + "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=" + }, + "babel-plugin-syntax-dynamic-import": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", + "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=" + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=" + }, + "babel-plugin-syntax-flow": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", + "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=" + }, + "babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=" + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=" + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "requires": { + "babel-helper-remap-async-to-generator": "6.24.1", + "babel-plugin-syntax-async-functions": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-class-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", + "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-plugin-syntax-class-properties": "6.13.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.5" + } + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "requires": { + "babel-helper-define-map": "6.26.0", + "babel-helper-function-name": "6.24.1", + "babel-helper-optimise-call-expression": "6.24.1", + "babel-helper-replace-supers": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", + "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", + "requires": { + "babel-plugin-transform-strict-mode": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "requires": { + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "requires": { + "babel-helper-replace-supers": "6.24.1", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "requires": { + "babel-helper-call-delegate": "6.24.1", + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "regexpu-core": "2.0.0" + } + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", + "babel-plugin-syntax-exponentiation-operator": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-flow-strip-types": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", + "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", + "requires": { + "babel-plugin-syntax-flow": "6.18.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", + "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", + "requires": { + "babel-plugin-syntax-object-rest-spread": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-react-constant-elements": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-constant-elements/-/babel-plugin-transform-react-constant-elements-6.23.0.tgz", + "integrity": "sha1-LxGb9NLN1F65uqrldAU8YE9hR90=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-react-display-name": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz", + "integrity": "sha1-Z+K/Hx6ck6sI25Z5LgU5K/LMKNE=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-react-jsx": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz", + "integrity": "sha1-hAoCjn30YN/DotKfDA2R9jduZqM=", + "requires": { + "babel-helper-builder-react-jsx": "6.26.0", + "babel-plugin-syntax-jsx": "6.18.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-react-jsx-self": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz", + "integrity": "sha1-322AqdomEqEh5t3XVYvL7PBuY24=", + "requires": { + "babel-plugin-syntax-jsx": "6.18.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-react-jsx-source": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz", + "integrity": "sha1-ZqwSFT9c0tF7PBkmj0vwGX9E7NY=", + "requires": { + "babel-plugin-syntax-jsx": "6.18.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", + "requires": { + "regenerator-transform": "0.10.1" + } + }, + "babel-plugin-transform-runtime": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz", + "integrity": "sha1-iEkNRGUC6puOfvsP4J7E2ZR5se4=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-preset-env": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.6.1.tgz", + "integrity": "sha512-W6VIyA6Ch9ePMI7VptNn2wBM6dbG0eSz25HEiL40nQXCsXGTGZSTZu1Iap+cj3Q0S5a7T9+529l/5Bkvd+afNA==", + "requires": { + "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-syntax-trailing-function-commas": "6.22.0", + "babel-plugin-transform-async-to-generator": "6.24.1", + "babel-plugin-transform-es2015-arrow-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoping": "6.26.0", + "babel-plugin-transform-es2015-classes": "6.24.1", + "babel-plugin-transform-es2015-computed-properties": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", + "babel-plugin-transform-es2015-for-of": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-literals": "6.22.0", + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", + "babel-plugin-transform-es2015-modules-umd": "6.24.1", + "babel-plugin-transform-es2015-object-super": "6.24.1", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", + "babel-plugin-transform-es2015-spread": "6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "6.24.1", + "babel-plugin-transform-es2015-template-literals": "6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "6.24.1", + "babel-plugin-transform-exponentiation-operator": "6.24.1", + "babel-plugin-transform-regenerator": "6.26.0", + "browserslist": "2.11.3", + "invariant": "2.2.4", + "semver": "5.5.0" + } + }, + "babel-preset-flow": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz", + "integrity": "sha1-5xIYiHCFrpoktb5Baa/7WZgWxJ0=", + "requires": { + "babel-plugin-transform-flow-strip-types": "6.22.0" + } + }, + "babel-preset-jest": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-20.0.3.tgz", + "integrity": "sha1-y6yq3stdaJyh4d4TYOv8ZoYsF4o=", + "requires": { + "babel-plugin-jest-hoist": "20.0.3" + } + }, + "babel-preset-react": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-react/-/babel-preset-react-6.24.1.tgz", + "integrity": "sha1-umnfrqRfw+xjm2pOzqbhdwLJE4A=", + "requires": { + "babel-plugin-syntax-jsx": "6.18.0", + "babel-plugin-transform-react-display-name": "6.25.0", + "babel-plugin-transform-react-jsx": "6.24.1", + "babel-plugin-transform-react-jsx-self": "6.22.0", + "babel-plugin-transform-react-jsx-source": "6.22.0", + "babel-preset-flow": "6.23.0" + } + }, + "babel-preset-react-app": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-3.1.1.tgz", + "integrity": "sha512-9fRHopNaGL5ScRZdPSoyxRaABKmkS2fx0HUJ5Yphan5G8QDFD7lETsPyY7El6b7YPT3sNrw9gfrWzl4/LsJcfA==", + "requires": { + "babel-plugin-dynamic-import-node": "1.1.0", + "babel-plugin-syntax-dynamic-import": "6.18.0", + "babel-plugin-transform-class-properties": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-object-rest-spread": "6.26.0", + "babel-plugin-transform-react-constant-elements": "6.23.0", + "babel-plugin-transform-react-jsx": "6.24.1", + "babel-plugin-transform-react-jsx-self": "6.22.0", + "babel-plugin-transform-react-jsx-source": "6.22.0", + "babel-plugin-transform-regenerator": "6.26.0", + "babel-plugin-transform-runtime": "6.23.0", + "babel-preset-env": "1.6.1", + "babel-preset-react": "6.24.1" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "requires": { + "babel-core": "6.26.0", + "babel-runtime": "6.26.0", + "core-js": "2.5.3", + "home-or-tmp": "2.0.0", + "lodash": "4.17.5", + "mkdirp": "0.5.1", + "source-map-support": "0.4.18" + }, + "dependencies": { + "core-js": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=" + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.3", + "regenerator-runtime": "0.11.1" + }, + "dependencies": { + "core-js": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=" + } + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.5" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.4", + "lodash": "4.17.5" + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.5", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "requires": { + "cache-base": "1.0.1", + "class-utils": "0.3.6", + "component-emitter": "1.2.1", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.1", + "pascalcase": "0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "1.0.2" + } + } + } + }, + "base64-js": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.3.tgz", + "integrity": "sha512-MsAhsUW1GxCdgYSO6tAfZrNapmUKk7mWx/k5mFY/A1gBtkaCaNapTg+FExCw1r9yeaZhqx/xPg43xgTFH6KL5w==" + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==" + }, + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=" + }, + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + }, + "body-parser": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", + "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "requires": { + "bytes": "3.0.0", + "content-type": "1.0.4", + "debug": "2.6.9", + "depd": "1.1.2", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "on-finished": "2.3.0", + "qs": "6.5.1", + "raw-body": "2.3.2", + "type-is": "1.6.16" + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "requires": { + "array-flatten": "2.1.1", + "deep-equal": "1.0.1", + "dns-equal": "1.0.0", + "dns-txt": "2.0.2", + "multicast-dns": "6.2.3", + "multicast-dns-service-types": "1.1.0" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + }, + "boom": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "requires": { + "hoek": "4.2.1" + } + }, + "boxen": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", + "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", + "requires": { + "ansi-align": "2.0.0", + "camelcase": "4.1.0", + "chalk": "2.3.2", + "cli-boxes": "1.0.0", + "string-width": "2.1.1", + "term-size": "1.2.0", + "widest-line": "2.0.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + }, + "chalk": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", + "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.3.0" + } + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz", + "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "kind-of": "6.0.2", + "repeat-element": "1.1.2", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "browser-resolve": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", + "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=" + } + } + }, + "browserify-aes": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz", + "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==", + "requires": { + "buffer-xor": "1.0.3", + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "browserify-cipher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", + "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", + "requires": { + "browserify-aes": "1.1.1", + "browserify-des": "1.0.0", + "evp_bytestokey": "1.0.3" + } + }, + "browserify-des": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", + "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", + "requires": { + "cipher-base": "1.0.4", + "des.js": "1.0.0", + "inherits": "2.0.3" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "requires": { + "bn.js": "4.11.8", + "randombytes": "2.0.6" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "elliptic": "6.4.0", + "inherits": "2.0.3", + "parse-asn1": "5.1.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "requires": { + "pako": "1.0.6" + } + }, + "browserslist": { + "version": "2.11.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz", + "integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==", + "requires": { + "caniuse-lite": "1.0.30000815", + "electron-to-chromium": "1.3.38" + } + }, + "bser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", + "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", + "requires": { + "node-int64": "0.4.0" + } + }, + "buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "requires": { + "base64-js": "1.2.3", + "ieee754": "1.1.8", + "isarray": "1.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + } + } + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==" + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "requires": { + "collection-visit": "1.0.0", + "component-emitter": "1.2.1", + "get-value": "2.0.6", + "has-value": "1.0.0", + "isobject": "3.0.1", + "set-value": "2.0.0", + "to-object-path": "0.3.0", + "union-value": "1.0.0", + "unset-value": "1.0.0" + } + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "requires": { + "callsites": "0.2.0" + } + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=" + }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "requires": { + "no-case": "2.3.2", + "upper-case": "1.1.3" + } + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "requires": { + "camelcase": "2.1.1", + "map-obj": "1.0.1" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + } + } + }, + "caniuse-api": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", + "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", + "requires": { + "browserslist": "1.7.7", + "caniuse-db": "1.0.30000815", + "lodash.memoize": "4.1.2", + "lodash.uniq": "4.5.0" + }, + "dependencies": { + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "requires": { + "caniuse-db": "1.0.30000815", + "electron-to-chromium": "1.3.38" + } + } + } + }, + "caniuse-db": { + "version": "1.0.30000815", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000815.tgz", + "integrity": "sha1-DiGPoTPQ0HHIhqoEG0NSWMx0aJE=" + }, + "caniuse-lite": { + "version": "1.0.30000815", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000815.tgz", + "integrity": "sha512-PGSOPK6gFe5fWd+eD0u2bG0aOsN1qC4B1E66tl3jOsIoKkTIcBYAc2+O6AeNzKW8RsFykWgnhkTlfOyuTzgI9A==" + }, + "capture-stack-trace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", + "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=" + }, + "case-sensitive-paths-webpack-plugin": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.1.1.tgz", + "integrity": "sha1-PSnO2MHxJL9vU4Rvs/WJRzH9yQk=" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=" + }, + "chokidar": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.2.tgz", + "integrity": "sha512-l32Hw3wqB0L2kGVmSbK/a+xXLDrUEsc84pSgMkmwygHvD7ubRsP/vxxHa5BtB6oix1XLLVCHyYMsckRXxThmZw==", + "requires": { + "anymatch": "2.0.0", + "async-each": "1.0.1", + "braces": "2.3.1", + "fsevents": "1.1.3", + "glob-parent": "3.1.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "4.0.0", + "normalize-path": "2.1.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0", + "upath": "1.0.4" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "requires": { + "micromatch": "3.1.9", + "normalize-path": "2.1.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, + "ci-info": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.3.tgz", + "integrity": "sha512-SK/846h/Rcy8q9Z9CAwGBLfCJ6EkjJWdpelWDufQpqVDYq2Wnnv8zlSO6AMQap02jvhVruKKpEtQOufo3pFhLg==" + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==" + }, + "clap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", + "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", + "requires": { + "chalk": "1.1.3" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "requires": { + "arr-union": "3.1.0", + "define-property": "0.2.5", + "isobject": "3.0.1", + "static-extend": "0.1.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "clean-css": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.11.tgz", + "integrity": "sha1-Ls3xRaujj1R0DybO/Q/z4D4SXWo=", + "requires": { + "source-map": "0.5.7" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=" + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "requires": { + "restore-cursor": "2.0.0" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" + } + } + }, + "clone": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz", + "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=" + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + }, + "coa": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", + "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", + "requires": { + "q": "1.5.1" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "requires": { + "map-visit": "1.0.0", + "object-visit": "1.0.1" + } + }, + "color": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", + "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", + "requires": { + "clone": "1.0.3", + "color-convert": "1.9.1", + "color-string": "0.3.0" + } + }, + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "color-string": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", + "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", + "requires": { + "color-name": "1.1.3" + } + }, + "colormin": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", + "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", + "requires": { + "color": "0.11.4", + "css-color-names": "0.0.4", + "has": "1.0.1" + } + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=" + }, + "combined-stream": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "requires": { + "delayed-stream": "1.0.0" + } + }, + "commander": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.0.tgz", + "integrity": "sha512-7B1ilBwtYSbetCgTY1NJFg+gVpestg0fdA1MhC1Vs4ssyfSXnCAjFr+QcQM9/RedXC0EaUx1sG8Smgw2VfgKEg==" + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + }, + "compare-versions": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.1.0.tgz", + "integrity": "sha512-4hAxDSBypT/yp2ySFD346So6Ragw5xmBn/e/agIGl3bZr6DLUqnoRZPusxKrXdYRZpgexO9daejmIenlq/wrIQ==" + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + }, + "compressible": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.13.tgz", + "integrity": "sha1-DRAgq5JLL9tNYnmHXH1tq6a6p6k=", + "requires": { + "mime-db": "1.33.0" + } + }, + "compression": { + "version": "1.7.2", + "resolved": "http://registry.npmjs.org/compression/-/compression-1.7.2.tgz", + "integrity": "sha1-qv+81qr4VLROuygDU9WtFlH1mmk=", + "requires": { + "accepts": "1.3.5", + "bytes": "3.0.0", + "compressible": "2.0.13", + "debug": "2.6.9", + "on-headers": "1.0.1", + "safe-buffer": "5.1.1", + "vary": "1.1.2" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.1.tgz", + "integrity": "sha512-gslSSJx03QKa59cIKqeJO9HQ/WZMotvYJCuaUULrLpjj8oG40kV2Z+gz82pVxlTkOADi4PJxQPPfhl1ELYrrXw==", + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.5", + "typedarray": "0.0.6" + } + }, + "configstore": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.1.tgz", + "integrity": "sha512-5oNkD/L++l0O6xGXxb1EWS7SivtjfGQlRyxJsYgE0Z495/L81e2h4/d3r969hoPXuFItzNOKMtsXgYG4c7dYvw==", + "requires": { + "dot-prop": "4.2.0", + "graceful-fs": "4.1.11", + "make-dir": "1.2.0", + "unique-string": "1.0.0", + "write-file-atomic": "2.3.0", + "xdg-basedir": "3.0.0" + } + }, + "connect-history-api-fallback": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", + "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=" + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "requires": { + "date-now": "0.1.4" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=" + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "content-type-parser": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.2.tgz", + "integrity": "sha512-lM4l4CnMEwOLHAHr/P6MEZwZFPJFtAAKgL6pogbXmVZggIqXhdB6RbBtPOTsw2FcXwYhehRGERJmRrjOiIB8pQ==" + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=" + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + }, + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cosmiconfig": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.2.tgz", + "integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==", + "requires": { + "is-directory": "0.3.1", + "js-yaml": "3.7.0", + "minimist": "1.2.0", + "object-assign": "4.1.1", + "os-homedir": "1.0.2", + "parse-json": "2.2.0", + "require-from-string": "1.2.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + } + } + }, + "create-ecdh": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", + "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", + "requires": { + "bn.js": "4.11.8", + "elliptic": "6.4.0" + } + }, + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "requires": { + "capture-stack-trace": "1.0.0" + } + }, + "create-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", + "requires": { + "cipher-base": "1.0.4", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "sha.js": "2.4.10" + } + }, + "create-hmac": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", + "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", + "requires": { + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.10" + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "requires": { + "lru-cache": "4.1.2", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, + "cryptiles": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", + "requires": { + "boom": "5.2.0" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "requires": { + "hoek": "4.2.1" + } + } + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "requires": { + "browserify-cipher": "1.0.0", + "browserify-sign": "4.0.4", + "create-ecdh": "4.0.0", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "diffie-hellman": "5.0.2", + "inherits": "2.0.3", + "pbkdf2": "3.0.14", + "public-encrypt": "4.0.0", + "randombytes": "2.0.6", + "randomfill": "1.0.4" + } + }, + "crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=" + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=" + }, + "css-loader": { + "version": "0.28.7", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.7.tgz", + "integrity": "sha512-GxMpax8a/VgcfRrVy0gXD6yLd5ePYbXX/5zGgTVYp4wXtJklS8Z2VaUArJgc//f6/Dzil7BaJObdSv8eKKCPgg==", + "requires": { + "babel-code-frame": "6.26.0", + "css-selector-tokenizer": "0.7.0", + "cssnano": "3.10.0", + "icss-utils": "2.1.0", + "loader-utils": "1.1.0", + "lodash.camelcase": "4.3.0", + "object-assign": "4.1.1", + "postcss": "5.2.18", + "postcss-modules-extract-imports": "1.1.0", + "postcss-modules-local-by-default": "1.2.0", + "postcss-modules-scope": "1.1.0", + "postcss-modules-values": "1.3.0", + "postcss-value-parser": "3.3.0", + "source-list-map": "2.0.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "requires": { + "boolbase": "1.0.0", + "css-what": "2.1.0", + "domutils": "1.5.1", + "nth-check": "1.0.1" + } + }, + "css-selector-tokenizer": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz", + "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=", + "requires": { + "cssesc": "0.1.0", + "fastparse": "1.1.1", + "regexpu-core": "1.0.0" + }, + "dependencies": { + "regexpu-core": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", + "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", + "requires": { + "regenerate": "1.3.3", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + } + } + } + }, + "css-what": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", + "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=" + }, + "cssesc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", + "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=" + }, + "cssnano": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", + "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", + "requires": { + "autoprefixer": "6.7.7", + "decamelize": "1.2.0", + "defined": "1.0.0", + "has": "1.0.1", + "object-assign": "4.1.1", + "postcss": "5.2.18", + "postcss-calc": "5.3.1", + "postcss-colormin": "2.2.2", + "postcss-convert-values": "2.6.1", + "postcss-discard-comments": "2.0.4", + "postcss-discard-duplicates": "2.1.0", + "postcss-discard-empty": "2.1.0", + "postcss-discard-overridden": "0.1.1", + "postcss-discard-unused": "2.2.3", + "postcss-filter-plugins": "2.0.2", + "postcss-merge-idents": "2.1.7", + "postcss-merge-longhand": "2.0.2", + "postcss-merge-rules": "2.1.2", + "postcss-minify-font-values": "1.0.5", + "postcss-minify-gradients": "1.0.5", + "postcss-minify-params": "1.2.2", + "postcss-minify-selectors": "2.1.1", + "postcss-normalize-charset": "1.1.1", + "postcss-normalize-url": "3.0.8", + "postcss-ordered-values": "2.2.3", + "postcss-reduce-idents": "2.4.0", + "postcss-reduce-initial": "1.0.1", + "postcss-reduce-transforms": "1.0.4", + "postcss-svgo": "2.1.6", + "postcss-unique-selectors": "2.0.2", + "postcss-value-parser": "3.3.0", + "postcss-zindex": "2.2.0" + }, + "dependencies": { + "autoprefixer": { + "version": "6.7.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", + "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", + "requires": { + "browserslist": "1.7.7", + "caniuse-db": "1.0.30000815", + "normalize-range": "0.1.2", + "num2fraction": "1.2.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "requires": { + "caniuse-db": "1.0.30000815", + "electron-to-chromium": "1.3.38" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "csso": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", + "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", + "requires": { + "clap": "1.2.3", + "source-map": "0.5.7" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "cssom": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", + "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=" + }, + "cssstyle": { + "version": "0.2.37", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", + "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", + "requires": { + "cssom": "0.3.2" + } + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "requires": { + "array-find-index": "1.0.2" + } + }, + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "requires": { + "es5-ext": "0.10.40" + } + }, + "damerau-levenshtein": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz", + "integrity": "sha1-AxkcQyy27qFou3fzpV/9zLiXhRQ=" + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "1.0.0" + } + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" + }, + "deep-extend": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=" + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + }, + "default-require-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "requires": { + "strip-bom": "2.0.0" + } + }, + "define-properties": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", + "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", + "requires": { + "foreach": "2.0.5", + "object-keys": "1.0.11" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "1.0.2", + "isobject": "3.0.1" + } + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "requires": { + "globby": "5.0.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "rimraf": "2.6.2" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "requires": { + "repeating": "2.0.1" + } + }, + "detect-node": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz", + "integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc=" + }, + "detect-port-alt": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.5.tgz", + "integrity": "sha512-PlE9BuBz44BSDV8sJvfUxkGquPcDW4oHSYa5wY4yKj943C2I4xNU5Gd/EFroqdWNur7W6yU2zOLqvmKJCB//aA==", + "requires": { + "address": "1.0.3", + "debug": "2.6.9" + } + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" + }, + "diffie-hellman": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", + "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", + "requires": { + "bn.js": "4.11.8", + "miller-rabin": "4.0.1", + "randombytes": "2.0.6" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "requires": { + "ip": "1.1.5", + "safe-buffer": "5.1.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "requires": { + "buffer-indexof": "1.1.1" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "requires": { + "esutils": "2.0.2" + } + }, + "dom-converter": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz", + "integrity": "sha1-pF71cnuJDJv/5tfIduexnLDhfzs=", + "requires": { + "utila": "0.3.3" + }, + "dependencies": { + "utila": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", + "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=" + } + } + }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "requires": { + "domelementtype": "1.1.3", + "entities": "1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=" + } + } + }, + "dom-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/dom-urls/-/dom-urls-1.1.0.tgz", + "integrity": "sha1-AB3fgWKM0ecGElxxdvU8zsVdkY4=", + "requires": { + "urijs": "1.19.1" + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" + }, + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=" + }, + "domhandler": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz", + "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=", + "requires": { + "domelementtype": "1.3.0" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "requires": { + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" + } + }, + "dot-prop": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "requires": { + "is-obj": "1.0.1" + } + }, + "dotenv": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-4.0.0.tgz", + "integrity": "sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0=" + }, + "dotenv-expand": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-4.2.0.tgz", + "integrity": "sha1-3vHxyl1gWdJKdm5YeULCEQbOEnU=" + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "electron-to-chromium": { + "version": "1.3.38", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.38.tgz", + "integrity": "sha1-SSNLAMBZL2KSH5QmvM7+4j3ghrs=" + }, + "elliptic": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", + "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0", + "hash.js": "1.1.3", + "hmac-drbg": "1.0.1", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "emoji-regex": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.5.1.tgz", + "integrity": "sha512-PAHp6TxrCy7MGMFidro8uikr+zlJJKJ/Q6mm2ExZ7HwkyR9lSVFfE3kt36qcwa24BQL7y0G9axycGjK1A/0uNQ==" + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "requires": { + "iconv-lite": "0.4.19" + } + }, + "enhanced-resolve": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", + "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=", + "requires": { + "graceful-fs": "4.1.11", + "memory-fs": "0.4.1", + "object-assign": "4.1.1", + "tapable": "0.2.8" + } + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=" + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "requires": { + "prr": "1.0.1" + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "requires": { + "is-arrayish": "0.2.1" + } + }, + "es-abstract": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.10.0.tgz", + "integrity": "sha512-/uh/DhdqIOSkAWifU+8nG78vlQxdLckUdI/sPgy0VhuXi2qJ7T8czBmqIYtLQVpCIFYafChnsRsB5pyb1JdmCQ==", + "requires": { + "es-to-primitive": "1.1.1", + "function-bind": "1.1.1", + "has": "1.0.1", + "is-callable": "1.1.3", + "is-regex": "1.0.4" + } + }, + "es-to-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", + "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "requires": { + "is-callable": "1.1.3", + "is-date-object": "1.0.1", + "is-symbol": "1.0.1" + } + }, + "es5-ext": { + "version": "0.10.40", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.40.tgz", + "integrity": "sha512-S9Fh3oya5OOvYSNGvPZJ+vyrs6VYpe1IXPowVe3N1OhaiwVaGlwfn3Zf5P5klYcWOA0toIwYQW8XEv/QqhdHvQ==", + "requires": { + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.40", + "es6-symbol": "3.1.1" + } + }, + "es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.40", + "es6-iterator": "2.0.3", + "es6-set": "0.1.5", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-promise": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz", + "integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==" + }, + "es6-set": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.40", + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.40" + } + }, + "es6-weak-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", + "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.40", + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "escodegen": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz", + "integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==", + "requires": { + "esprima": "3.1.3", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "optionator": "0.8.2", + "source-map": "0.6.1" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" + } + } + }, + "escope": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", + "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "requires": { + "es6-map": "0.1.5", + "es6-weak-map": "2.0.2", + "esrecurse": "4.2.1", + "estraverse": "4.2.0" + } + }, + "eslint": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.10.0.tgz", + "integrity": "sha512-MMVl8P/dYUFZEvolL8PYt7qc5LNdS2lwheq9BYa5Y07FblhcZqFyaUqlS8TW5QITGex21tV4Lk0a3fK8lsJIkA==", + "requires": { + "ajv": "5.5.2", + "babel-code-frame": "6.26.0", + "chalk": "2.3.2", + "concat-stream": "1.6.1", + "cross-spawn": "5.1.0", + "debug": "3.1.0", + "doctrine": "2.1.0", + "eslint-scope": "3.7.1", + "espree": "3.5.4", + "esquery": "1.0.0", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "file-entry-cache": "2.0.0", + "functional-red-black-tree": "1.0.1", + "glob": "7.1.2", + "globals": "9.18.0", + "ignore": "3.3.7", + "imurmurhash": "0.1.4", + "inquirer": "3.3.0", + "is-resolvable": "1.1.0", + "js-yaml": "3.11.0", + "json-stable-stringify": "1.0.1", + "levn": "0.3.0", + "lodash": "4.17.5", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "optionator": "0.8.2", + "path-is-inside": "1.0.2", + "pluralize": "7.0.0", + "progress": "2.0.0", + "require-uncached": "1.0.3", + "semver": "5.5.0", + "strip-ansi": "4.0.0", + "strip-json-comments": "2.0.1", + "table": "4.0.3", + "text-table": "0.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "chalk": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", + "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.3.0" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==" + }, + "js-yaml": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", + "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", + "requires": { + "argparse": "1.0.10", + "esprima": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "eslint-config-react-app": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-2.1.0.tgz", + "integrity": "sha512-8QZrKWuHVC57Fmu+SsKAVxnI9LycZl7NFQ4H9L+oeISuCXhYdXqsOOIVSjQFW6JF5MXZLFE+21Syhd7mF1IRZQ==" + }, + "eslint-import-resolver-node": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz", + "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==", + "requires": { + "debug": "2.6.9", + "resolve": "1.5.0" + } + }, + "eslint-loader": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-1.9.0.tgz", + "integrity": "sha512-40aN976qSNPyb9ejTqjEthZITpls1SVKtwguahmH1dzGCwQU/vySE+xX33VZmD8csU0ahVNCtFlsPgKqRBiqgg==", + "requires": { + "loader-fs-cache": "1.0.1", + "loader-utils": "1.1.0", + "object-assign": "4.1.1", + "object-hash": "1.3.0", + "rimraf": "2.6.2" + } + }, + "eslint-module-utils": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz", + "integrity": "sha512-jDI/X5l/6D1rRD/3T43q8Qgbls2nq5km5KSqiwlyUbGo5+04fXhMKdCPhjwbqAa6HXWaMxj8Q4hQDIh7IadJQw==", + "requires": { + "debug": "2.6.9", + "pkg-dir": "1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "requires": { + "find-up": "1.1.2" + } + } + } + }, + "eslint-plugin-flowtype": { + "version": "2.39.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.39.1.tgz", + "integrity": "sha512-RiQv+7Z9QDJuzt+NO8sYgkLGT+h+WeCrxP7y8lI7wpU41x3x/2o3PGtHk9ck8QnA9/mlbNcy/hG0eKvmd7npaA==", + "requires": { + "lodash": "4.17.5" + } + }, + "eslint-plugin-import": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.8.0.tgz", + "integrity": "sha512-Rf7dfKJxZ16QuTgVv1OYNxkZcsu/hULFnC+e+w0Gzi6jMC3guQoWQgxYxc54IDRinlb6/0v5z/PxxIKmVctN+g==", + "requires": { + "builtin-modules": "1.1.1", + "contains-path": "0.1.0", + "debug": "2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "0.3.2", + "eslint-module-utils": "2.1.1", + "has": "1.0.1", + "lodash.cond": "4.5.2", + "minimatch": "3.0.4", + "read-pkg-up": "2.0.0" + }, + "dependencies": { + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "requires": { + "esutils": "2.0.2", + "isarray": "1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "requires": { + "pify": "2.3.0" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + } + } + }, + "eslint-plugin-jsx-a11y": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-5.1.1.tgz", + "integrity": "sha512-5I9SpoP7gT4wBFOtXT8/tXNPYohHBVfyVfO17vkbC7r9kEIxYJF12D3pKqhk8+xnk12rfxKClS3WCFpVckFTPQ==", + "requires": { + "aria-query": "0.7.1", + "array-includes": "3.0.3", + "ast-types-flow": "0.0.7", + "axobject-query": "0.1.0", + "damerau-levenshtein": "1.0.4", + "emoji-regex": "6.5.1", + "jsx-ast-utils": "1.4.1" + } + }, + "eslint-plugin-react": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.4.0.tgz", + "integrity": "sha512-tvjU9u3VqmW2vVuYnE8Qptq+6ji4JltjOjJ9u7VAOxVYkUkyBZWRvNYKbDv5fN+L6wiA+4we9+qQahZ0m63XEA==", + "requires": { + "doctrine": "2.1.0", + "has": "1.0.1", + "jsx-ast-utils": "2.0.1", + "prop-types": "15.6.1" + }, + "dependencies": { + "jsx-ast-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz", + "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=", + "requires": { + "array-includes": "3.0.3" + } + } + } + }, + "eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "requires": { + "esrecurse": "4.2.1", + "estraverse": "4.2.0" + } + }, + "espree": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", + "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", + "requires": { + "acorn": "5.5.3", + "acorn-jsx": "3.0.1" + } + }, + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=" + }, + "esquery": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", + "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", + "requires": { + "estraverse": "4.2.0" + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "requires": { + "estraverse": "4.2.0" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.40" + } + }, + "eventemitter3": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", + "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=" + }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" + }, + "eventsource": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", + "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", + "requires": { + "original": "1.0.0" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "requires": { + "md5.js": "1.3.4", + "safe-buffer": "5.1.1" + } + }, + "exec-sh": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.1.tgz", + "integrity": "sha512-aLt95pexaugVtQerpmE51+4QfWrNc304uez7jvj6fWnN8GeEHpttB8F36n8N7uVhUMbH/1enbxQ9HImZ4w/9qg==", + "requires": { + "merge": "1.2.0" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "requires": { + "fill-range": "2.2.3" + }, + "dependencies": { + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "requires": { + "kind-of": "3.2.2" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "requires": { + "homedir-polyfill": "1.0.1" + } + }, + "express": { + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz", + "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=", + "requires": { + "accepts": "1.3.5", + "array-flatten": "1.1.1", + "body-parser": "1.18.2", + "content-disposition": "0.5.2", + "content-type": "1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "1.1.2", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", + "finalhandler": "1.1.1", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "2.0.3", + "qs": "6.5.1", + "range-parser": "1.2.0", + "safe-buffer": "5.1.1", + "send": "0.16.2", + "serve-static": "1.13.2", + "setprototypeof": "1.1.0", + "statuses": "1.4.0", + "type-is": "1.6.16", + "utils-merge": "1.0.1", + "vary": "1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + } + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "external-editor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", + "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", + "requires": { + "chardet": "0.4.2", + "iconv-lite": "0.4.19", + "tmp": "0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "extract-text-webpack-plugin": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz", + "integrity": "sha512-bt/LZ4m5Rqt/Crl2HiKuAl/oqg0psx1tsTLkvWbJen1CtD+fftkZhMaQ9HOtY2gWsl2Wq+sABmMVi9z3DhKWQQ==", + "requires": { + "async": "2.6.0", + "loader-utils": "1.1.0", + "schema-utils": "0.3.0", + "webpack-sources": "1.1.0" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, + "fastparse": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", + "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=" + }, + "faye-websocket": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", + "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", + "requires": { + "websocket-driver": "0.7.0" + } + }, + "fb-watchman": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", + "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", + "requires": { + "bser": "2.0.0" + } + }, + "fbjs": { + "version": "0.8.16", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz", + "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", + "requires": { + "core-js": "1.2.7", + "isomorphic-fetch": "2.2.1", + "loose-envify": "1.3.1", + "object-assign": "4.1.1", + "promise": "7.3.1", + "setimmediate": "1.0.5", + "ua-parser-js": "0.7.17" + } + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "requires": { + "flat-cache": "1.3.0", + "object-assign": "4.1.1" + } + }, + "file-loader": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.5.tgz", + "integrity": "sha512-RzGHDatcVNpGISTvCpfUfOGpYuSR7HSsSg87ki+wF6rw1Hm0RALPTiAdsxAq1UwLf0RRhbe22/eHK6nhXspiOQ==", + "requires": { + "loader-utils": "1.1.0", + "schema-utils": "0.3.0" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" + }, + "fileset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", + "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "requires": { + "glob": "7.1.2", + "minimatch": "3.0.4" + } + }, + "filesize": { + "version": "3.5.11", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.5.11.tgz", + "integrity": "sha512-ZH7loueKBoDb7yG9esn1U+fgq7BzlzW6NRi5/rMdxIZ05dj7GFD/Xc5rq2CDt5Yq86CyfSYVyx4242QQNZbx1g==" + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "finalhandler": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", + "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", + "requires": { + "debug": "2.6.9", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.4.0", + "unpipe": "1.0.0" + } + }, + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "requires": { + "commondir": "1.0.1", + "make-dir": "1.2.0", + "pkg-dir": "2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "2.0.0" + } + }, + "flat-cache": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", + "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", + "requires": { + "circular-json": "0.3.3", + "del": "2.2.2", + "graceful-fs": "4.1.11", + "write": "0.2.1" + } + }, + "flatten": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", + "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=" + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "requires": { + "for-in": "1.0.2" + } + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.6", + "mime-types": "2.1.18" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "requires": { + "map-cache": "0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "fs-extra": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", + "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "3.0.1", + "universalify": "0.1.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", + "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", + "optional": true, + "requires": { + "nan": "2.9.2", + "node-pre-gyp": "0.6.39" + }, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "aproba": { + "version": "1.1.1", + "bundled": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.2.9" + } + }, + "asn1": { + "version": "0.2.3", + "bundled": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "bundled": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "optional": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "optional": true, + "requires": { + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "optional": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "bundled": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "bundled": true + }, + "mime-types": { + "version": "2.1.15", + "bundled": true, + "requires": { + "mime-db": "1.27.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.39", + "bundled": true, + "optional": true, + "requires": { + "detect-libc": "1.0.2", + "hawk": "3.1.3", + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } + }, + "npmlog": { + "version": "4.1.0", + "bundled": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "bundled": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "bundled": true, + "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.9", + "bundled": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "bundled": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.0.1", + "bundled": true + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sshpk": { + "version": "1.13.0", + "bundled": true, + "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "optional": true + } + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.0", + "bundled": true, + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "optional": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "optional": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=" + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "1.0.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "requires": { + "is-glob": "2.0.1" + } + }, + "global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "requires": { + "ini": "1.3.5" + } + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "requires": { + "global-prefix": "1.0.2", + "is-windows": "1.0.2", + "resolve-dir": "1.0.1" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "requires": { + "expand-tilde": "2.0.2", + "homedir-polyfill": "1.0.1", + "ini": "1.3.5", + "is-windows": "1.0.2", + "which": "1.3.0" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "got": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", + "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", + "requires": { + "create-error-class": "3.0.2", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "is-redirect": "1.0.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "lowercase-keys": "1.0.0", + "safe-buffer": "5.1.1", + "timed-out": "4.0.1", + "unzip-response": "2.0.1", + "url-parse-lax": "1.0.0" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" + }, + "gzip-size": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-3.0.0.tgz", + "integrity": "sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=", + "requires": { + "duplexer": "0.1.1" + } + }, + "handle-thing": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", + "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=" + }, + "handlebars": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "requires": { + "amdefine": "1.0.1" + } + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "optional": true, + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "optional": true + } + } + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "optional": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "requires": { + "ajv": "5.5.2", + "har-schema": "2.0.0" + } + }, + "has": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "requires": { + "function-bind": "1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "requires": { + "get-value": "2.0.6", + "has-values": "1.0.0", + "isobject": "3.0.1" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "hash-base": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", + "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", + "requires": { + "inherits": "2.0.3" + } + }, + "hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "hawk": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", + "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", + "requires": { + "boom": "4.3.1", + "cryptiles": "3.1.2", + "hoek": "4.2.1", + "sntp": "2.1.0" + } + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=" + }, + "history": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/history/-/history-4.7.2.tgz", + "integrity": "sha512-1zkBRWW6XweO0NBcjiphtVJVsIQ+SXF29z9DVkceeaSLVMFXHool+fdCZD4spDCfZJCILPILc3bm7Bc+HRi0nA==", + "requires": { + "invariant": "2.2.4", + "loose-envify": "1.3.1", + "resolve-pathname": "2.2.0", + "value-equal": "0.4.0", + "warning": "3.0.0" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "requires": { + "hash.js": "1.1.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "hoek": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", + "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==" + }, + "hoist-non-react-statics": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.0.tgz", + "integrity": "sha512-6Bl6XsDT1ntE0lHbIhr4Kp2PGcleGZ66qu5Jqk8lc0Xc/IeG6gVLmwUGs/K0Us+L8VWoKgj0uWdPMataOsm31w==" + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "homedir-polyfill": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", + "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "requires": { + "parse-passwd": "1.0.0" + } + }, + "hosted-git-info": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", + "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==" + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "requires": { + "inherits": "2.0.3", + "obuf": "1.1.2", + "readable-stream": "2.3.5", + "wbuf": "1.7.3" + } + }, + "html-comment-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz", + "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=" + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "requires": { + "whatwg-encoding": "1.0.3" + } + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=" + }, + "html-minifier": { + "version": "3.5.11", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.11.tgz", + "integrity": "sha512-kIi9C090qWW5cGxEf+EwNUczduyVR6krk29WB3zDSWBQN6xuh/1jCXgmY4SvqzaJMOZFCnf8wcNzA8iPsfLiUQ==", + "requires": { + "camel-case": "3.0.0", + "clean-css": "4.1.11", + "commander": "2.15.0", + "he": "1.1.1", + "ncname": "1.0.0", + "param-case": "2.1.1", + "relateurl": "0.2.7", + "uglify-js": "3.3.15" + } + }, + "html-webpack-plugin": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-2.29.0.tgz", + "integrity": "sha1-6Yf0IYU9O2k4yMTIFxhC5f0XryM=", + "requires": { + "bluebird": "3.5.1", + "html-minifier": "3.5.11", + "loader-utils": "0.2.17", + "lodash": "4.17.5", + "pretty-error": "2.1.1", + "toposort": "1.0.6" + }, + "dependencies": { + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + } + } + }, + "htmlparser2": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", + "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.1.0", + "domutils": "1.1.6", + "readable-stream": "1.0.34" + }, + "dependencies": { + "domutils": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz", + "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=", + "requires": { + "domelementtype": "1.3.0" + } + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=" + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": "1.4.0" + }, + "dependencies": { + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" + } + } + }, + "http-parser-js": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.11.tgz", + "integrity": "sha512-QCR5O2AjjMW8Mo4HyI1ctFcv+O99j/0g367V3YoVnrNw5hkDvAWZD0lWGcc+F4yN3V55USPCVix4efb75HxFfA==" + }, + "http-proxy": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz", + "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=", + "requires": { + "eventemitter3": "1.2.0", + "requires-port": "1.0.0" + } + }, + "http-proxy-middleware": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz", + "integrity": "sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM=", + "requires": { + "http-proxy": "1.16.2", + "is-glob": "3.1.0", + "lodash": "4.17.5", + "micromatch": "2.3.11" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "requires": { + "arr-flatten": "1.1.0" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "requires": { + "is-extglob": "1.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + } + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "2.1.1" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "requires": { + "is-extglob": "1.0.0" + } + } + } + } + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.14.1" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=" + }, + "icss-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", + "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", + "requires": { + "postcss": "6.0.19" + } + }, + "ieee754": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", + "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=" + }, + "ignore": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", + "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==" + }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=" + }, + "import-local": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-0.1.1.tgz", + "integrity": "sha1-sReVcqrNwRxqkQCftDDbyrX2aKg=", + "requires": { + "pkg-dir": "2.0.0", + "resolve-cwd": "2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "requires": { + "repeating": "2.0.1" + } + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + }, + "inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "requires": { + "ansi-escapes": "3.0.0", + "chalk": "2.3.2", + "cli-cursor": "2.1.0", + "cli-width": "2.2.0", + "external-editor": "2.1.0", + "figures": "2.0.0", + "lodash": "4.17.5", + "mute-stream": "0.0.7", + "run-async": "2.3.0", + "rx-lite": "4.0.8", + "rx-lite-aggregates": "4.0.8", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "through": "2.3.8" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "chalk": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", + "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.3.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "internal-ip": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-1.2.0.tgz", + "integrity": "sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=", + "requires": { + "meow": "3.7.0" + } + }, + "interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=" + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "requires": { + "loose-envify": "1.3.1" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" + }, + "ipaddr.js": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.6.0.tgz", + "integrity": "sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs=" + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=" + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "6.0.2" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "requires": { + "binary-extensions": "1.11.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-callable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", + "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=" + }, + "is-ci": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.1.0.tgz", + "integrity": "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==", + "requires": { + "ci-info": "1.1.3" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "6.0.2" + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=" + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-installed-globally": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", + "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", + "requires": { + "global-dirs": "0.1.1", + "is-path-inside": "1.0.1" + } + }, + "is-npm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=" + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + }, + "is-odd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", + "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", + "requires": { + "is-number": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" + } + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=" + }, + "is-path-in-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", + "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", + "requires": { + "is-path-inside": "1.0.1" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "requires": { + "path-is-inside": "1.0.2" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "3.0.1" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" + }, + "is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=" + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "requires": { + "has": "1.0.1" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" + }, + "is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=" + }, + "is-root": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-1.0.0.tgz", + "integrity": "sha1-B7bCM7w5TNnQK6FclmvWZg1jQtU=" + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-svg": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", + "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", + "requires": { + "html-comment-regex": "1.1.1" + } + }, + "is-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", + "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "isomorphic-fetch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", + "requires": { + "node-fetch": "1.7.3", + "whatwg-fetch": "2.0.3" + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "istanbul-api": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.3.1.tgz", + "integrity": "sha512-duj6AlLcsWNwUpfyfHt0nWIeRiZpuShnP40YTxOGQgtaN8fd6JYSxsvxUphTDy8V5MfDXo4s/xVCIIvVCO808g==", + "requires": { + "async": "2.6.0", + "compare-versions": "3.1.0", + "fileset": "2.0.3", + "istanbul-lib-coverage": "1.2.0", + "istanbul-lib-hook": "1.2.0", + "istanbul-lib-instrument": "1.10.1", + "istanbul-lib-report": "1.1.4", + "istanbul-lib-source-maps": "1.2.4", + "istanbul-reports": "1.3.0", + "js-yaml": "3.7.0", + "mkdirp": "0.5.1", + "once": "1.4.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.4.tgz", + "integrity": "sha512-UzuK0g1wyQijiaYQxj/CdNycFhAd2TLtO2obKQMTZrZ1jzEMRY3rvpASEKkaxbRR6brvdovfA03znPa/pXcejg==", + "requires": { + "debug": "3.1.0", + "istanbul-lib-coverage": "1.2.0", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "source-map": "0.5.7" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "istanbul-lib-coverage": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz", + "integrity": "sha512-GvgM/uXRwm+gLlvkWHTjDAvwynZkL9ns15calTrmhGgowlwJBbWMYzWbKqE2DT6JDP1AFXKa+Zi0EkqNCUqY0A==" + }, + "istanbul-lib-hook": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.2.0.tgz", + "integrity": "sha512-p3En6/oGkFQV55Up8ZPC2oLxvgSxD8CzA0yBrhRZSh3pfv3OFj9aSGVC0yoerAi/O4u7jUVnOGVX1eVFM+0tmQ==", + "requires": { + "append-transform": "0.4.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz", + "integrity": "sha512-1dYuzkOCbuR5GRJqySuZdsmsNKPL3PTuyPevQfoCXJePT9C8y1ga75neU+Tuy9+yS3G/dgx8wgOmp2KLpgdoeQ==", + "requires": { + "babel-generator": "6.26.1", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "istanbul-lib-coverage": "1.2.0", + "semver": "5.5.0" + } + }, + "istanbul-lib-report": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.4.tgz", + "integrity": "sha512-Azqvq5tT0U09nrncK3q82e/Zjkxa4tkFZv7E6VcqP0QCPn6oNljDPfrZEC/umNXds2t7b8sRJfs6Kmpzt8m2kA==", + "requires": { + "istanbul-lib-coverage": "1.2.0", + "mkdirp": "0.5.1", + "path-parse": "1.0.5", + "supports-color": "3.2.3" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.3.tgz", + "integrity": "sha512-fDa0hwU/5sDXwAklXgAoCJCOsFsBplVQ6WBldz5UwaqOzmDhUK4nfuR7/G//G2lERlblUNJB8P6e8cXq3a7MlA==", + "requires": { + "debug": "3.1.0", + "istanbul-lib-coverage": "1.2.0", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "source-map": "0.5.7" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "istanbul-reports": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.3.0.tgz", + "integrity": "sha512-y2Z2IMqE1gefWUaVjrBm0mSKvUkaBy9Vqz8iwr/r40Y9hBbIteH5wqHG/9DLTfJ9xUnUT2j7A3+VVJ6EaYBllA==", + "requires": { + "handlebars": "4.0.11" + } + }, + "jest": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest/-/jest-20.0.4.tgz", + "integrity": "sha1-PdJgwpidba1nix6cxNkZRPbWAqw=", + "requires": { + "jest-cli": "20.0.4" + }, + "dependencies": { + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=" + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "requires": { + "arr-flatten": "1.1.0" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "requires": { + "is-extglob": "1.0.0" + } + }, + "jest-cli": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-20.0.4.tgz", + "integrity": "sha1-5TKxnYiuW8bEF+iwWTpv6VSx3JM=", + "requires": { + "ansi-escapes": "1.4.0", + "callsites": "2.0.0", + "chalk": "1.1.3", + "graceful-fs": "4.1.11", + "is-ci": "1.1.0", + "istanbul-api": "1.3.1", + "istanbul-lib-coverage": "1.2.0", + "istanbul-lib-instrument": "1.10.1", + "istanbul-lib-source-maps": "1.2.3", + "jest-changed-files": "20.0.3", + "jest-config": "20.0.4", + "jest-docblock": "20.0.3", + "jest-environment-jsdom": "20.0.3", + "jest-haste-map": "20.0.5", + "jest-jasmine2": "20.0.4", + "jest-message-util": "20.0.3", + "jest-regex-util": "20.0.3", + "jest-resolve-dependencies": "20.0.3", + "jest-runtime": "20.0.4", + "jest-snapshot": "20.0.3", + "jest-util": "20.0.3", + "micromatch": "2.3.11", + "node-notifier": "5.2.1", + "pify": "2.3.0", + "slash": "1.0.0", + "string-length": "1.0.1", + "throat": "3.2.0", + "which": "1.3.0", + "worker-farm": "1.6.0", + "yargs": "7.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + } + } + }, + "jest-changed-files": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-20.0.3.tgz", + "integrity": "sha1-k5TVzGXEOEBhSb7xv01Sto4D4/g=" + }, + "jest-config": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-20.0.4.tgz", + "integrity": "sha1-43kwqyIXyRNgXv8T5712PsSPruo=", + "requires": { + "chalk": "1.1.3", + "glob": "7.1.2", + "jest-environment-jsdom": "20.0.3", + "jest-environment-node": "20.0.3", + "jest-jasmine2": "20.0.4", + "jest-matcher-utils": "20.0.3", + "jest-regex-util": "20.0.3", + "jest-resolve": "20.0.4", + "jest-validate": "20.0.3", + "pretty-format": "20.0.3" + } + }, + "jest-diff": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-20.0.3.tgz", + "integrity": "sha1-gfKI/Z5nXw+yPHXxwrGURf5YZhc=", + "requires": { + "chalk": "1.1.3", + "diff": "3.5.0", + "jest-matcher-utils": "20.0.3", + "pretty-format": "20.0.3" + } + }, + "jest-docblock": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-20.0.3.tgz", + "integrity": "sha1-F76phDQswz2DxQ++FUXqDvqkRxI=" + }, + "jest-environment-jsdom": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-20.0.3.tgz", + "integrity": "sha1-BIqKwS7iJfcZBBdxODS7mZeH3pk=", + "requires": { + "jest-mock": "20.0.3", + "jest-util": "20.0.3", + "jsdom": "9.12.0" + } + }, + "jest-environment-node": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-20.0.3.tgz", + "integrity": "sha1-1Ii8RhKvLCRumG6K52caCZFj1AM=", + "requires": { + "jest-mock": "20.0.3", + "jest-util": "20.0.3" + } + }, + "jest-haste-map": { + "version": "20.0.5", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-20.0.5.tgz", + "integrity": "sha512-0IKAQjUvuZjMCNi/0VNQQF74/H9KB67hsHJqGiwTWQC6XO5Azs7kLWm+6Q/dwuhvDUvABDOBMFK2/FwZ3sZ07Q==", + "requires": { + "fb-watchman": "2.0.0", + "graceful-fs": "4.1.11", + "jest-docblock": "20.0.3", + "micromatch": "2.3.11", + "sane": "1.6.0", + "worker-farm": "1.6.0" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "requires": { + "arr-flatten": "1.1.0" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "requires": { + "is-extglob": "1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + } + } + }, + "jest-jasmine2": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-20.0.4.tgz", + "integrity": "sha1-/MWxQReA2RHQQpAu8YWehS5g1eE=", + "requires": { + "chalk": "1.1.3", + "graceful-fs": "4.1.11", + "jest-diff": "20.0.3", + "jest-matcher-utils": "20.0.3", + "jest-matchers": "20.0.3", + "jest-message-util": "20.0.3", + "jest-snapshot": "20.0.3", + "once": "1.4.0", + "p-map": "1.2.0" + } + }, + "jest-matcher-utils": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-20.0.3.tgz", + "integrity": "sha1-s6a443yld4A7CDKpixZPRLeBVhI=", + "requires": { + "chalk": "1.1.3", + "pretty-format": "20.0.3" + } + }, + "jest-matchers": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-matchers/-/jest-matchers-20.0.3.tgz", + "integrity": "sha1-ymnbHDLbWm9wf6XgQBq7VXAN/WA=", + "requires": { + "jest-diff": "20.0.3", + "jest-matcher-utils": "20.0.3", + "jest-message-util": "20.0.3", + "jest-regex-util": "20.0.3" + } + }, + "jest-message-util": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-20.0.3.tgz", + "integrity": "sha1-auwoRDBvyw5udNV5bBAG2W/dgxw=", + "requires": { + "chalk": "1.1.3", + "micromatch": "2.3.11", + "slash": "1.0.0" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "requires": { + "arr-flatten": "1.1.0" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "requires": { + "is-extglob": "1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + } + } + }, + "jest-mock": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-20.0.3.tgz", + "integrity": "sha1-i8Bw6QQUqhVcEajWTIaaDVxx2lk=" + }, + "jest-regex-util": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-20.0.3.tgz", + "integrity": "sha1-hburXRM+RGJbGfr4xqpRItCF12I=" + }, + "jest-resolve": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-20.0.4.tgz", + "integrity": "sha1-lEiz6La6/BVHlETGSZBFt//ll6U=", + "requires": { + "browser-resolve": "1.11.2", + "is-builtin-module": "1.0.0", + "resolve": "1.5.0" + } + }, + "jest-resolve-dependencies": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-20.0.3.tgz", + "integrity": "sha1-bhSntxevDyyzZnxUneQK8Bexcjo=", + "requires": { + "jest-regex-util": "20.0.3" + } + }, + "jest-runtime": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-20.0.4.tgz", + "integrity": "sha1-osgCIZxCA/dU3xQE5JAYYWnRJNg=", + "requires": { + "babel-core": "6.26.0", + "babel-jest": "20.0.3", + "babel-plugin-istanbul": "4.1.5", + "chalk": "1.1.3", + "convert-source-map": "1.5.1", + "graceful-fs": "4.1.11", + "jest-config": "20.0.4", + "jest-haste-map": "20.0.5", + "jest-regex-util": "20.0.3", + "jest-resolve": "20.0.4", + "jest-util": "20.0.3", + "json-stable-stringify": "1.0.1", + "micromatch": "2.3.11", + "strip-bom": "3.0.0", + "yargs": "7.1.0" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "requires": { + "arr-flatten": "1.1.0" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "requires": { + "is-extglob": "1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + } + } + }, + "jest-snapshot": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-20.0.3.tgz", + "integrity": "sha1-W4R+GtsaTZCFKn+fElCG4YfHZWY=", + "requires": { + "chalk": "1.1.3", + "jest-diff": "20.0.3", + "jest-matcher-utils": "20.0.3", + "jest-util": "20.0.3", + "natural-compare": "1.4.0", + "pretty-format": "20.0.3" + } + }, + "jest-util": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-20.0.3.tgz", + "integrity": "sha1-DAf32A2C9OWmfG+LnD/n9lz9Mq0=", + "requires": { + "chalk": "1.1.3", + "graceful-fs": "4.1.11", + "jest-message-util": "20.0.3", + "jest-mock": "20.0.3", + "jest-validate": "20.0.3", + "leven": "2.1.0", + "mkdirp": "0.5.1" + } + }, + "jest-validate": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-20.0.3.tgz", + "integrity": "sha1-0M/R3k9XnymEhJJcKA+PHZTsPKs=", + "requires": { + "chalk": "1.1.3", + "jest-matcher-utils": "20.0.3", + "leven": "2.1.0", + "pretty-format": "20.0.3" + } + }, + "js-base64": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.3.tgz", + "integrity": "sha512-H7ErYLM34CvDMto3GbD6xD0JLUGYXR3QTcH6B/tr4Hi/QpSThnCsIp+Sy5FRTw3B0d6py4HcNkW7nO/wdtGWEw==" + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + }, + "js-yaml": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", + "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", + "requires": { + "argparse": "1.0.10", + "esprima": "2.7.3" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "optional": true + }, + "jsdom": { + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-9.12.0.tgz", + "integrity": "sha1-6MVG//ywbADUgzyoRBD+1/igl9Q=", + "requires": { + "abab": "1.0.4", + "acorn": "4.0.13", + "acorn-globals": "3.1.0", + "array-equal": "1.0.0", + "content-type-parser": "1.0.2", + "cssom": "0.3.2", + "cssstyle": "0.2.37", + "escodegen": "1.9.1", + "html-encoding-sniffer": "1.0.2", + "nwmatcher": "1.4.3", + "parse5": "1.5.1", + "request": "2.85.0", + "sax": "1.2.4", + "symbol-tree": "3.2.2", + "tough-cookie": "2.3.4", + "webidl-conversions": "4.0.2", + "whatwg-encoding": "1.0.3", + "whatwg-url": "4.8.0", + "xml-name-validator": "2.0.1" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" + } + } + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=" + }, + "json-loader": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", + "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==" + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=" + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" + }, + "jsonfile": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", + "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=", + "requires": { + "graceful-fs": "4.1.11" + } + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jsx-ast-utils": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz", + "integrity": "sha1-OGchPo3Xm/Ho8jAMDPwe+xgsDfE=" + }, + "killable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.0.tgz", + "integrity": "sha1-2ouEvUfeU5WHj5XWTQLyRJ/gXms=" + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + }, + "klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "requires": { + "graceful-fs": "4.1.11" + } + }, + "latest-version": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", + "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", + "requires": { + "package-json": "4.0.1" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "requires": { + "invert-kv": "1.0.0" + } + }, + "leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=" + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "requires": { + "prelude-ls": "1.1.2", + "type-check": "0.3.2" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, + "loader-fs-cache": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.1.tgz", + "integrity": "sha1-VuC/CL2XCLJqdltoUJhAyN7J/bw=", + "requires": { + "find-cache-dir": "0.1.1", + "mkdirp": "0.5.1" + }, + "dependencies": { + "find-cache-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "requires": { + "commondir": "1.0.1", + "mkdirp": "0.5.1", + "pkg-dir": "1.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "requires": { + "find-up": "1.1.2" + } + } + } + }, + "loader-runner": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", + "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=" + }, + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } + }, + "lodash": { + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" + }, + "lodash.cond": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz", + "integrity": "sha1-9HGh2khr5g9quVXRcRVSPdHSVdU=" + }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=" + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" + }, + "lodash.template": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz", + "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=", + "requires": { + "lodash._reinterpolate": "3.0.0", + "lodash.templatesettings": "4.1.0" + } + }, + "lodash.templatesettings": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz", + "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=", + "requires": { + "lodash._reinterpolate": "3.0.0" + } + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" + }, + "loglevel": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", + "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=" + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "requires": { + "js-tokens": "3.0.2" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "requires": { + "currently-unhandled": "0.4.1", + "signal-exit": "3.0.2" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=" + }, + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=" + }, + "lru-cache": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", + "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "macaddress": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.8.tgz", + "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI=" + }, + "make-dir": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.2.0.tgz", + "integrity": "sha512-aNUAa4UMg/UougV25bbrU4ZaaKNjJ/3/xnvg/twpmKROPdKZPZ9wGgI0opdZzO8q/zUFawoUuixuOv33eZ61Iw==", + "requires": { + "pify": "3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } + } + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "requires": { + "tmpl": "1.0.4" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "requires": { + "object-visit": "1.0.1" + } + }, + "math-expression-evaluator": { + "version": "1.2.17", + "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", + "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=" + }, + "md5.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", + "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "requires": { + "hash-base": "3.0.4", + "inherits": "2.0.3" + }, + "dependencies": { + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + } + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "requires": { + "mimic-fn": "1.2.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "requires": { + "errno": "0.1.7", + "readable-stream": "2.3.5" + } + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "requires": { + "camelcase-keys": "2.1.0", + "decamelize": "1.2.0", + "loud-rejection": "1.6.0", + "map-obj": "1.0.1", + "minimist": "1.2.0", + "normalize-package-data": "2.4.0", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + } + } + }, + "merge": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.0.tgz", + "integrity": "sha1-dTHjnUlJwoGma4xabgJl6LBYlNo=" + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "micromatch": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.9.tgz", + "integrity": "sha512-SlIz6sv5UPaAVVFRKodKjCg48EbNoIhgetzfK/Cy0v5U52Z6zB136M8tp0UC9jM53LYbmIRihJszvvqpKkfm9g==", + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.1", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.9", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" + }, + "mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "requires": { + "mime-db": "1.33.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + }, + "minimalistic-assert": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", + "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "1.1.11" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "requires": { + "for-in": "1.0.2", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "requires": { + "dns-packet": "1.3.1", + "thunky": "1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=" + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" + }, + "nan": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.9.2.tgz", + "integrity": "sha512-ltW65co7f3PQWBDbqVvaU1WtFJUsNW7sWWm4HINhbMQIyVyzIeyZ8toX5TC5eeooE6piZoaEh4cZkueSKG3KYw==", + "optional": true + }, + "nanomatch": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", + "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "fragment-cache": "0.2.1", + "is-odd": "2.0.0", + "is-windows": "1.0.2", + "kind-of": "6.0.2", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" + }, + "ncname": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ncname/-/ncname-1.0.0.tgz", + "integrity": "sha1-W1etGLHKCShk72Kwse2BlPODtxw=", + "requires": { + "xml-char-classes": "1.0.0" + } + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" + }, + "neo-async": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.0.tgz", + "integrity": "sha512-nJmSswG4As/MkRq7QZFuH/sf/yuv8ODdMZrY4Bedjp77a5MK4A6s7YbBB64c9u79EBUOfXUXBvArmvzTD0X+6g==" + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "requires": { + "lower-case": "1.1.4" + } + }, + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "requires": { + "encoding": "0.1.12", + "is-stream": "1.1.0" + } + }, + "node-forge": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.1.tgz", + "integrity": "sha1-naYR6giYL0uUIGs760zJZl8gwwA=" + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=" + }, + "node-libs-browser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", + "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", + "requires": { + "assert": "1.4.1", + "browserify-zlib": "0.2.0", + "buffer": "4.9.1", + "console-browserify": "1.1.0", + "constants-browserify": "1.0.0", + "crypto-browserify": "3.12.0", + "domain-browser": "1.2.0", + "events": "1.1.1", + "https-browserify": "1.0.0", + "os-browserify": "0.3.0", + "path-browserify": "0.0.0", + "process": "0.11.10", + "punycode": "1.4.1", + "querystring-es3": "0.2.1", + "readable-stream": "2.3.5", + "stream-browserify": "2.0.1", + "stream-http": "2.8.1", + "string_decoder": "1.0.3", + "timers-browserify": "2.0.6", + "tty-browserify": "0.0.0", + "url": "0.11.0", + "util": "0.10.3", + "vm-browserify": "0.0.4" + } + }, + "node-notifier": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.2.1.tgz", + "integrity": "sha512-MIBs+AAd6dJ2SklbbE8RUDRlIVhU8MaNLh1A9SUZDUHPiZkWLFde6UNwG41yQHZEToHgJMXqyVZ9UcS/ReOVTg==", + "requires": { + "growly": "1.3.0", + "semver": "5.5.0", + "shellwords": "0.1.1", + "which": "1.3.0" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "requires": { + "hosted-git-info": "2.6.0", + "is-builtin-module": "1.0.0", + "semver": "5.5.0", + "validate-npm-package-license": "3.0.3" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" + }, + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "requires": { + "object-assign": "4.1.1", + "prepend-http": "1.0.4", + "query-string": "4.3.4", + "sort-keys": "1.1.2" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "2.0.1" + } + }, + "nth-check": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", + "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", + "requires": { + "boolbase": "1.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=" + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "nwmatcher": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.3.tgz", + "integrity": "sha512-IKdSTiDWCarf2JTS5e9e2+5tPZGdkRJ79XjYV0pzK8Q9BpsFyBq1RGKxzs7Q8UBushGw7m6TzVKz6fcY99iSWw==" + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "requires": { + "copy-descriptor": "0.1.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "object-hash": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.0.tgz", + "integrity": "sha512-05KzQ70lSeGSrZJQXE5wNDiTkBJDlUT/myi6RX9dVIvz7a7Qh4oH93BQdiPMn27nldYvVQCKMUaM83AfizZlsQ==" + }, + "object-keys": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=" + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "requires": { + "isobject": "3.0.1" + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "requires": { + "isobject": "3.0.1" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", + "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1.0.2" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "requires": { + "mimic-fn": "1.2.0" + } + }, + "opn": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.2.0.tgz", + "integrity": "sha512-Jd/GpzPyHF4P2/aNOVmS3lfMSWV9J7cOhCG1s08XCEAsPkB7lp6ddiU0J7XzyQRDUh8BqJ7PchfINjR8jyofRQ==", + "requires": { + "is-wsl": "1.1.0" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "requires": { + "minimist": "0.0.8", + "wordwrap": "0.0.3" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" + } + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "requires": { + "deep-is": "0.1.3", + "fast-levenshtein": "2.0.6", + "levn": "0.3.0", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "1.0.0" + } + }, + "original": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.0.tgz", + "integrity": "sha1-kUf5P6FpbQS+YeAb1QuurKZWvTs=", + "requires": { + "url-parse": "1.0.5" + }, + "dependencies": { + "url-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.0.5.tgz", + "integrity": "sha1-CFSGBCKv3P7+tsllxmLUgAFpkns=", + "requires": { + "querystringify": "0.0.4", + "requires-port": "1.0.0" + } + } + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "requires": { + "lcid": "1.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-limit": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", + "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "requires": { + "p-try": "1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "1.2.0" + } + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==" + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + }, + "package-json": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", + "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", + "requires": { + "got": "6.7.1", + "registry-auth-token": "3.3.2", + "registry-url": "3.1.0", + "semver": "5.5.0" + } + }, + "pako": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==" + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "requires": { + "no-case": "2.3.2" + } + }, + "parse-asn1": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", + "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", + "requires": { + "asn1.js": "4.10.1", + "browserify-aes": "1.1.1", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "pbkdf2": "3.0.14" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "1.3.1" + } + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" + }, + "parse5": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", + "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=" + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=" + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=" + }, + "path-to-regexp": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", + "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "requires": { + "isarray": "0.0.1" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pbkdf2": { + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", + "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", + "requires": { + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.10" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "2.0.4" + } + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "requires": { + "find-up": "2.1.0" + } + }, + "pluralize": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==" + }, + "portfinder": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz", + "integrity": "sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek=", + "requires": { + "async": "1.5.2", + "debug": "2.6.9", + "mkdirp": "0.5.1" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" + }, + "postcss": { + "version": "6.0.19", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.19.tgz", + "integrity": "sha512-f13HRz0HtVwVaEuW6J6cOUCBLFtymhgyLPV7t4QEk2UD3twRI9IluDcQNdzQdBpiixkXj2OmzejhhTbSbDxNTg==", + "requires": { + "chalk": "2.3.2", + "source-map": "0.6.1", + "supports-color": "5.3.0" + }, + "dependencies": { + "chalk": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", + "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.3.0" + } + } + } + }, + "postcss-calc": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", + "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", + "requires": { + "postcss": "5.2.18", + "postcss-message-helpers": "2.0.0", + "reduce-css-calc": "1.3.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-colormin": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", + "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", + "requires": { + "colormin": "1.1.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-convert-values": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", + "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-discard-comments": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", + "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-discard-duplicates": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", + "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-discard-empty": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", + "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-discard-overridden": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", + "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-discard-unused": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", + "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", + "requires": { + "postcss": "5.2.18", + "uniqs": "2.0.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-filter-plugins": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz", + "integrity": "sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew=", + "requires": { + "postcss": "5.2.18", + "uniqid": "4.1.1" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-flexbugs-fixes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-3.2.0.tgz", + "integrity": "sha512-0AuD9HG1Ey3/3nqPWu9yqf7rL0KCPu5VgjDsjf5mzEcuo9H/z8nco/fljKgjsOUrZypa95MI0kS4xBZeBzz2lw==", + "requires": { + "postcss": "6.0.19" + } + }, + "postcss-load-config": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-1.2.0.tgz", + "integrity": "sha1-U56a/J3chiASHr+djDZz4M5Q0oo=", + "requires": { + "cosmiconfig": "2.2.2", + "object-assign": "4.1.1", + "postcss-load-options": "1.2.0", + "postcss-load-plugins": "2.3.0" + } + }, + "postcss-load-options": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-load-options/-/postcss-load-options-1.2.0.tgz", + "integrity": "sha1-sJixVZ3awt8EvAuzdfmaXP4rbYw=", + "requires": { + "cosmiconfig": "2.2.2", + "object-assign": "4.1.1" + } + }, + "postcss-load-plugins": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz", + "integrity": "sha1-dFdoEWWZrKLwCfrUJrABdQSdjZI=", + "requires": { + "cosmiconfig": "2.2.2", + "object-assign": "4.1.1" + } + }, + "postcss-loader": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.0.8.tgz", + "integrity": "sha512-KtXBiQ/r/WYW8LxTSJK7h8wLqvCMSub/BqmRnud/Mu8RzwflW9cmXxwsMwbn15TNv287Hcufdb3ZSs7xHKnG8Q==", + "requires": { + "loader-utils": "1.1.0", + "postcss": "6.0.19", + "postcss-load-config": "1.2.0", + "schema-utils": "0.3.0" + } + }, + "postcss-merge-idents": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", + "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", + "requires": { + "has": "1.0.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-merge-longhand": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", + "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-merge-rules": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", + "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", + "requires": { + "browserslist": "1.7.7", + "caniuse-api": "1.6.1", + "postcss": "5.2.18", + "postcss-selector-parser": "2.2.3", + "vendors": "1.0.1" + }, + "dependencies": { + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "requires": { + "caniuse-db": "1.0.30000815", + "electron-to-chromium": "1.3.38" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-message-helpers": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", + "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=" + }, + "postcss-minify-font-values": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", + "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", + "requires": { + "object-assign": "4.1.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-minify-gradients": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", + "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-minify-params": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", + "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", + "requires": { + "alphanum-sort": "1.0.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0", + "uniqs": "2.0.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-minify-selectors": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", + "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", + "requires": { + "alphanum-sort": "1.0.2", + "has": "1.0.1", + "postcss": "5.2.18", + "postcss-selector-parser": "2.2.3" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-modules-extract-imports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", + "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=", + "requires": { + "postcss": "6.0.19" + } + }, + "postcss-modules-local-by-default": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", + "requires": { + "css-selector-tokenizer": "0.7.0", + "postcss": "6.0.19" + } + }, + "postcss-modules-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", + "requires": { + "css-selector-tokenizer": "0.7.0", + "postcss": "6.0.19" + } + }, + "postcss-modules-values": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", + "requires": { + "icss-replace-symbols": "1.1.0", + "postcss": "6.0.19" + } + }, + "postcss-normalize-charset": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", + "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-normalize-url": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", + "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", + "requires": { + "is-absolute-url": "2.1.0", + "normalize-url": "1.9.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-ordered-values": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", + "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-reduce-idents": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", + "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-reduce-initial": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", + "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-reduce-transforms": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", + "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", + "requires": { + "has": "1.0.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-selector-parser": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", + "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", + "requires": { + "flatten": "1.0.2", + "indexes-of": "1.0.1", + "uniq": "1.0.1" + } + }, + "postcss-svgo": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", + "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", + "requires": { + "is-svg": "2.1.0", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0", + "svgo": "0.7.2" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-unique-selectors": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", + "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", + "requires": { + "alphanum-sort": "1.0.2", + "postcss": "5.2.18", + "uniqs": "2.0.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-value-parser": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", + "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=" + }, + "postcss-zindex": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", + "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", + "requires": { + "has": "1.0.1", + "postcss": "5.2.18", + "uniqs": "2.0.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" + }, + "pretty-bytes": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", + "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=" + }, + "pretty-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", + "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "requires": { + "renderkid": "2.0.1", + "utila": "0.4.0" + } + }, + "pretty-format": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-20.0.3.tgz", + "integrity": "sha1-Ag41ClYKH+GpjcO+tsz/s4beixQ=", + "requires": { + "ansi-regex": "2.1.1", + "ansi-styles": "3.2.1" + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + }, + "progress": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", + "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=" + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "requires": { + "asap": "2.0.6" + } + }, + "prop-types": { + "version": "15.6.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.1.tgz", + "integrity": "sha512-4ec7bY1Y66LymSUOH/zARVYObB23AT2h8cf6e/O6ZALB/N0sqZFEx7rq6EYPX2MkOdKORuooI/H5k9TlR4q7kQ==", + "requires": { + "fbjs": "0.8.16", + "loose-envify": "1.3.1", + "object-assign": "4.1.1" + } + }, + "proxy-addr": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz", + "integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ==", + "requires": { + "forwarded": "0.1.2", + "ipaddr.js": "1.6.0" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "public-encrypt": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", + "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "parse-asn1": "5.1.0", + "randombytes": "2.0.6" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "requires": { + "object-assign": "4.1.1", + "strict-uri-encode": "1.1.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" + }, + "querystringify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-0.0.4.tgz", + "integrity": "sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw=" + }, + "raf": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.0.tgz", + "integrity": "sha512-pDP/NMRAXoTfrhCfyfSEwJAKLaxBU9eApMeBPB1TkDouZmvPerIClV8lTAd+uF8ZiTaVl69e1FCxQrAd/VTjGw==", + "requires": { + "performance-now": "2.1.0" + } + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "randombytes": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", + "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", + "requires": { + "safe-buffer": "5.1.1" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "requires": { + "randombytes": "2.0.6", + "safe-buffer": "5.1.1" + } + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" + }, + "raw-body": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", + "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + } + }, + "rc": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.6.tgz", + "integrity": "sha1-6xiYnG1PTxYsOZ953dKfODVWgJI=", + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + } + } + }, + "react": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.2.0.tgz", + "integrity": "sha512-ZmIomM7EE1DvPEnSFAHZn9Vs9zJl5A9H7el0EGTE6ZbW9FKe/14IYAlPbC8iH25YarEQxZL+E8VW7Mi7kfQrDQ==", + "requires": { + "fbjs": "0.8.16", + "loose-envify": "1.3.1", + "object-assign": "4.1.1", + "prop-types": "15.6.1" + } + }, + "react-dev-utils": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-5.0.0.tgz", + "integrity": "sha512-j+Rmwct2aOGAbIk046PjBpQ5zxaLtSlTFwyt3yhVfpQgieqyQbtFwATKY4HSB3j+hSQ4UEBBxwjxjSJiGCP+ow==", + "requires": { + "address": "1.0.3", + "babel-code-frame": "6.26.0", + "chalk": "1.1.3", + "cross-spawn": "5.1.0", + "detect-port-alt": "1.1.5", + "escape-string-regexp": "1.0.5", + "filesize": "3.5.11", + "global-modules": "1.0.0", + "gzip-size": "3.0.0", + "inquirer": "3.3.0", + "is-root": "1.0.0", + "opn": "5.2.0", + "react-error-overlay": "4.0.0", + "recursive-readdir": "2.2.1", + "shell-quote": "1.6.1", + "sockjs-client": "1.1.4", + "strip-ansi": "3.0.1", + "text-table": "0.2.0" + } + }, + "react-dom": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.2.0.tgz", + "integrity": "sha512-zpGAdwHVn9K0091d+hr+R0qrjoJ84cIBFL2uU60KvWBPfZ7LPSrfqviTxGHWN0sjPZb2hxWzMexwrvJdKePvjg==", + "requires": { + "fbjs": "0.8.16", + "loose-envify": "1.3.1", + "object-assign": "4.1.1", + "prop-types": "15.6.1" + } + }, + "react-error-overlay": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-4.0.0.tgz", + "integrity": "sha512-FlsPxavEyMuR6TjVbSSywovXSEyOg6ZDj5+Z8nbsRl9EkOzAhEIcS+GLoQDC5fz/t9suhUXWmUrOBrgeUvrMxw==" + }, + "react-router": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-4.2.0.tgz", + "integrity": "sha512-DY6pjwRhdARE4TDw7XjxjZsbx9lKmIcyZoZ+SDO7SBJ1KUeWNxT22Kara2AC7u6/c2SYEHlEDLnzBCcNhLE8Vg==", + "requires": { + "history": "4.7.2", + "hoist-non-react-statics": "2.5.0", + "invariant": "2.2.4", + "loose-envify": "1.3.1", + "path-to-regexp": "1.7.0", + "prop-types": "15.6.1", + "warning": "3.0.0" + } + }, + "react-router-dom": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-4.2.2.tgz", + "integrity": "sha512-cHMFC1ZoLDfEaMFoKTjN7fry/oczMgRt5BKfMAkTu5zEuJvUiPp1J8d0eXSVTnBh6pxlbdqDhozunOOLtmKfPA==", + "requires": { + "history": "4.7.2", + "invariant": "2.2.4", + "loose-envify": "1.3.1", + "prop-types": "15.6.1", + "react-router": "4.2.0", + "warning": "3.0.0" + } + }, + "react-scripts": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-1.1.1.tgz", + "integrity": "sha512-71Bkg8AH/66nhXKW5WpQatKw9xhVT9gdPsB8gb8F5AaO/VDIIUZR0duD6buMeQUg/cn5vkOa9ksy1rYKLUt8EQ==", + "requires": { + "autoprefixer": "7.1.6", + "babel-core": "6.26.0", + "babel-eslint": "7.2.3", + "babel-jest": "20.0.3", + "babel-loader": "7.1.2", + "babel-preset-react-app": "3.1.1", + "babel-runtime": "6.26.0", + "case-sensitive-paths-webpack-plugin": "2.1.1", + "chalk": "1.1.3", + "css-loader": "0.28.7", + "dotenv": "4.0.0", + "dotenv-expand": "4.2.0", + "eslint": "4.10.0", + "eslint-config-react-app": "2.1.0", + "eslint-loader": "1.9.0", + "eslint-plugin-flowtype": "2.39.1", + "eslint-plugin-import": "2.8.0", + "eslint-plugin-jsx-a11y": "5.1.1", + "eslint-plugin-react": "7.4.0", + "extract-text-webpack-plugin": "3.0.2", + "file-loader": "1.1.5", + "fs-extra": "3.0.1", + "fsevents": "1.1.3", + "html-webpack-plugin": "2.29.0", + "jest": "20.0.4", + "object-assign": "4.1.1", + "postcss-flexbugs-fixes": "3.2.0", + "postcss-loader": "2.0.8", + "promise": "8.0.1", + "raf": "3.4.0", + "react-dev-utils": "5.0.0", + "style-loader": "0.19.0", + "sw-precache-webpack-plugin": "0.11.4", + "url-loader": "0.6.2", + "webpack": "3.8.1", + "webpack-dev-server": "2.9.4", + "webpack-manifest-plugin": "1.3.2", + "whatwg-fetch": "2.0.3" + }, + "dependencies": { + "promise": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.0.1.tgz", + "integrity": "sha1-5F1osAoXZHttpxG/he1u1HII9FA=", + "requires": { + "asap": "2.0.6" + } + } + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "2.0.1" + } + } + } + }, + "readable-stream": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + } + } + }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "requires": { + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.5", + "set-immediate-shim": "1.0.1" + } + }, + "recursive-readdir": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.1.tgz", + "integrity": "sha1-kO8jHQd4xc4JPJpI105cVCLROpk=", + "requires": { + "minimatch": "3.0.3" + }, + "dependencies": { + "minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=", + "requires": { + "brace-expansion": "1.1.11" + } + } + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "requires": { + "indent-string": "2.1.0", + "strip-indent": "1.0.1" + } + }, + "reduce-css-calc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", + "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", + "requires": { + "balanced-match": "0.4.2", + "math-expression-evaluator": "1.2.17", + "reduce-function-call": "1.0.2" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" + } + } + }, + "reduce-function-call": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz", + "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=", + "requires": { + "balanced-match": "0.4.2" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" + } + } + }, + "regenerate": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", + "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==" + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + }, + "regenerator-transform": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "private": "0.1.8" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "requires": { + "extend-shallow": "3.0.2", + "safe-regex": "1.1.0" + } + }, + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "requires": { + "regenerate": "1.3.3", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + } + }, + "registry-auth-token": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", + "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", + "requires": { + "rc": "1.2.6", + "safe-buffer": "5.1.1" + } + }, + "registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "requires": { + "rc": "1.2.6" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=" + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "requires": { + "jsesc": "0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=" + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + }, + "renderkid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.1.tgz", + "integrity": "sha1-iYyr/Ivt5Le5ETWj/9Mj5YwNsxk=", + "requires": { + "css-select": "1.2.0", + "dom-converter": "0.1.4", + "htmlparser2": "3.3.0", + "strip-ansi": "3.0.1", + "utila": "0.3.3" + }, + "dependencies": { + "utila": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", + "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=" + } + } + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "requires": { + "is-finite": "1.0.2" + } + }, + "request": { + "version": "2.85.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.85.0.tgz", + "integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==", + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.6", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.3.2", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.18", + "oauth-sign": "0.8.2", + "performance-now": "2.1.0", + "qs": "6.5.1", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.4", + "tunnel-agent": "0.6.0", + "uuid": "3.2.1" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-from-string": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", + "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=" + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + }, + "require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "requires": { + "caller-path": "0.1.0", + "resolve-from": "1.0.1" + } + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" + }, + "resolve": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", + "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", + "requires": { + "path-parse": "1.0.5" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "requires": { + "resolve-from": "3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + } + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "requires": { + "expand-tilde": "2.0.2", + "global-modules": "1.0.0" + } + }, + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=" + }, + "resolve-pathname": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-2.2.0.tgz", + "integrity": "sha512-bAFz9ld18RzJfddgrO2e/0S2O81710++chRMUxHjXOYKF6jTAMrUNZrEZ1PvV0zlhfjidm08iRPdTLPno1FuRg==" + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "requires": { + "onetime": "2.0.1", + "signal-exit": "3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "requires": { + "glob": "7.1.2" + } + }, + "ripemd160": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", + "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", + "requires": { + "hash-base": "2.0.2", + "inherits": "2.0.3" + } + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "requires": { + "is-promise": "2.1.0" + } + }, + "rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=" + }, + "rx-lite-aggregates": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "requires": { + "rx-lite": "4.0.8" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "requires": { + "ret": "0.1.15" + } + }, + "sane": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-1.6.0.tgz", + "integrity": "sha1-lhDEUjB6E10pwf3+JUcDQYDEZ3U=", + "requires": { + "anymatch": "1.3.2", + "exec-sh": "0.2.1", + "fb-watchman": "1.9.2", + "minimatch": "3.0.4", + "minimist": "1.2.0", + "walker": "1.0.7", + "watch": "0.10.0" + }, + "dependencies": { + "bser": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bser/-/bser-1.0.2.tgz", + "integrity": "sha1-OBEWlwsqbe6lZG3RXdcnhES1YWk=", + "requires": { + "node-int64": "0.4.0" + } + }, + "fb-watchman": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-1.9.2.tgz", + "integrity": "sha1-okz0eCf4LTj7Waaa1wt247auc4M=", + "requires": { + "bser": "1.0.2" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + } + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "schema-utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", + "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", + "requires": { + "ajv": "5.5.2" + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" + }, + "selfsigned": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.2.tgz", + "integrity": "sha1-tESVgNmZKbZbEKSDiTAaZZIIh1g=", + "requires": { + "node-forge": "0.7.1" + } + }, + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" + }, + "semver-diff": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "requires": { + "semver": "5.5.0" + } + }, + "send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "requires": { + "debug": "2.6.9", + "depd": "1.1.2", + "destroy": "1.0.4", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", + "fresh": "0.5.2", + "http-errors": "1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.4.0" + }, + "dependencies": { + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" + } + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "requires": { + "accepts": "1.3.5", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "1.0.3", + "http-errors": "1.6.2", + "mime-types": "2.1.18", + "parseurl": "1.3.2" + } + }, + "serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "requires": { + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "parseurl": "1.3.2", + "send": "0.16.2" + } + }, + "serviceworker-cache-polyfill": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serviceworker-cache-polyfill/-/serviceworker-cache-polyfill-4.0.0.tgz", + "integrity": "sha1-3hnuc77yGrPAdAo3sz22JGS6ves=" + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "split-string": "3.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "sha.js": { + "version": "2.4.10", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.10.tgz", + "integrity": "sha512-vnwmrFDlOExK4Nm16J2KMWHLrp14lBrjxMxBJpu++EnsuBmpiYaM/MEs46Vxxm/4FvdP5yTwuCTO9it5FSjrqA==", + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "shell-quote": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", + "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "requires": { + "array-filter": "0.0.1", + "array-map": "0.0.0", + "array-reduce": "0.0.0", + "jsonify": "0.0.0" + } + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==" + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" + }, + "slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "requires": { + "is-fullwidth-code-point": "2.0.0" + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "requires": { + "base": "0.11.2", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.7", + "source-map-resolve": "0.5.1", + "use": "3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "requires": { + "define-property": "1.0.0", + "isobject": "3.0.1", + "snapdragon-util": "3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "1.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "sntp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", + "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", + "requires": { + "hoek": "4.2.1" + } + }, + "sockjs": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.18.tgz", + "integrity": "sha1-2bKJMWyn33dZXvKZ4HXw+TfrQgc=", + "requires": { + "faye-websocket": "0.10.0", + "uuid": "2.0.3" + }, + "dependencies": { + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "requires": { + "websocket-driver": "0.7.0" + } + }, + "uuid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=" + } + } + }, + "sockjs-client": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.4.tgz", + "integrity": "sha1-W6vjhrd15M8U51IJEUUmVAFsixI=", + "requires": { + "debug": "2.6.9", + "eventsource": "0.1.6", + "faye-websocket": "0.11.1", + "inherits": "2.0.3", + "json3": "3.3.2", + "url-parse": "1.2.0" + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "requires": { + "is-plain-obj": "1.1.0" + } + }, + "source-list-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", + "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-resolve": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", + "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", + "requires": { + "atob": "2.0.3", + "decode-uri-component": "0.2.0", + "resolve-url": "0.2.1", + "source-map-url": "0.4.0", + "urix": "0.1.0" + } + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "requires": { + "source-map": "0.5.7" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + }, + "spdx-correct": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", + "requires": { + "spdx-expression-parse": "3.0.0", + "spdx-license-ids": "3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==" + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "requires": { + "spdx-exceptions": "2.1.0", + "spdx-license-ids": "3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==" + }, + "spdy": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", + "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", + "requires": { + "debug": "2.6.9", + "handle-thing": "1.2.5", + "http-deceiver": "1.2.7", + "safe-buffer": "5.1.1", + "select-hose": "2.0.0", + "spdy-transport": "2.0.20" + } + }, + "spdy-transport": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.0.20.tgz", + "integrity": "sha1-c15yBUxIayNU/onnAiVgBKOazk0=", + "requires": { + "debug": "2.6.9", + "detect-node": "2.0.3", + "hpack.js": "2.1.6", + "obuf": "1.1.2", + "readable-stream": "2.3.5", + "safe-buffer": "5.1.1", + "wbuf": "1.7.3" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "requires": { + "extend-shallow": "3.0.2" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "sshpk": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz", + "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=", + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "requires": { + "define-property": "0.2.5", + "object-copy": "0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" + }, + "stream-browserify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.5" + } + }, + "stream-http": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.1.tgz", + "integrity": "sha512-cQ0jo17BLca2r0GfRdZKYAGLU6JRoIWxqSOakUMuKOT6MOK7AAlE856L33QuDmAy/eeOrhLee3dZKX0Uadu93A==", + "requires": { + "builtin-status-codes": "3.0.0", + "inherits": "2.0.3", + "readable-stream": "2.3.5", + "to-arraybuffer": "1.0.1", + "xtend": "4.0.1" + } + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" + }, + "string-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz", + "integrity": "sha1-VpcPscOFWOnnC3KL894mmsRa36w=", + "requires": { + "strip-ansi": "3.0.1" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=" + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "0.2.1" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "requires": { + "get-stdin": "4.0.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, + "style-loader": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.19.0.tgz", + "integrity": "sha512-9mx9sC9nX1dgP96MZOODpGC6l1RzQBITI2D5WJhu+wnbrSYVKLGuy14XJSLVQih/0GFrPpjelt+s//VcZQ2Evw==", + "requires": { + "loader-utils": "1.1.0", + "schema-utils": "0.3.0" + } + }, + "supports-color": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", + "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", + "requires": { + "has-flag": "3.0.0" + } + }, + "svgo": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", + "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", + "requires": { + "coa": "1.0.4", + "colors": "1.1.2", + "csso": "2.3.2", + "js-yaml": "3.7.0", + "mkdirp": "0.5.1", + "sax": "1.2.4", + "whet.extend": "0.9.9" + } + }, + "sw-precache": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/sw-precache/-/sw-precache-5.2.1.tgz", + "integrity": "sha512-8FAy+BP/FXE+ILfiVTt+GQJ6UEf4CVHD9OfhzH0JX+3zoy2uFk7Vn9EfXASOtVmmIVbL3jE/W8Z66VgPSZcMhw==", + "requires": { + "dom-urls": "1.1.0", + "es6-promise": "4.2.4", + "glob": "7.1.2", + "lodash.defaults": "4.2.0", + "lodash.template": "4.4.0", + "meow": "3.7.0", + "mkdirp": "0.5.1", + "pretty-bytes": "4.0.2", + "sw-toolbox": "3.6.0", + "update-notifier": "2.3.0" + } + }, + "sw-precache-webpack-plugin": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/sw-precache-webpack-plugin/-/sw-precache-webpack-plugin-0.11.4.tgz", + "integrity": "sha1-ppUBflTu1XVVFJOlGdwdqNotxeA=", + "requires": { + "del": "2.2.2", + "sw-precache": "5.2.1", + "uglify-js": "3.3.15" + } + }, + "sw-toolbox": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/sw-toolbox/-/sw-toolbox-3.6.0.tgz", + "integrity": "sha1-Jt8dHHA0hljk3qKIQxkUm3sxg7U=", + "requires": { + "path-to-regexp": "1.7.0", + "serviceworker-cache-polyfill": "4.0.0" + } + }, + "symbol-tree": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", + "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=" + }, + "table": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.3.tgz", + "integrity": "sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg==", + "requires": { + "ajv": "6.2.1", + "ajv-keywords": "3.1.0", + "chalk": "2.3.2", + "lodash": "4.17.5", + "slice-ansi": "1.0.0", + "string-width": "2.1.1" + }, + "dependencies": { + "ajv": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.2.1.tgz", + "integrity": "sha1-KKarxJOiq+D7TIUHrK7bQ/pVBnE=", + "requires": { + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "chalk": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", + "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.3.0" + } + } + } + }, + "tapable": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.8.tgz", + "integrity": "sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI=" + }, + "term-size": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", + "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", + "requires": { + "execa": "0.7.0" + } + }, + "test-exclude": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.1.tgz", + "integrity": "sha512-qpqlP/8Zl+sosLxBcVKl9vYy26T9NPalxSzzCP/OY6K7j938ui2oKgo+kRZYfxAeIpLqpbVnsHq1tyV70E4lWQ==", + "requires": { + "arrify": "1.0.1", + "micromatch": "3.1.9", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "require-main-filename": "1.0.1" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" + }, + "throat": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-3.2.0.tgz", + "integrity": "sha512-/EY8VpvlqJ+sFtLPeOgc8Pl7kQVOWv0woD87KTXVHPIAE842FGT+rokxIhe8xIUP1cfgrkt0as0vDLjDiMtr8w==" + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "thunky": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.2.tgz", + "integrity": "sha1-qGLgGOP7HqLsP85dVWBc9X8kc3E=" + }, + "time-stamp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.0.0.tgz", + "integrity": "sha1-lcakRTDhW6jW9KPsuMOj+sRto1c=" + }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" + }, + "timers-browserify": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.6.tgz", + "integrity": "sha512-HQ3nbYRAowdVd0ckGFvmJPPCOH/CHleFN/Y0YQCX1DVaB7t+KFvisuyN09fuP8Jtp1CpfSh8O8bMkHbdbPe6Pw==", + "requires": { + "setimmediate": "1.0.5" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "requires": { + "os-tmpdir": "1.0.2" + } + }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=" + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "requires": { + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "regex-not": "1.0.2", + "safe-regex": "1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "3.0.0", + "repeat-string": "1.6.1" + } + }, + "toposort": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.6.tgz", + "integrity": "sha1-wxdI5V0hDv/AD9zcfW5o19e7nOw=" + }, + "tough-cookie": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "requires": { + "punycode": "1.4.1" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "5.1.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "optional": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "requires": { + "prelude-ls": "1.1.2" + } + }, + "type-is": { + "version": "1.6.16", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", + "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "2.1.18" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "ua-parser-js": { + "version": "0.7.17", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.17.tgz", + "integrity": "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g==" + }, + "uglify-js": { + "version": "3.3.15", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.15.tgz", + "integrity": "sha512-bqtBCAINYXX/OkdnqMGpbXr+OPWc00hsozRpk+dAtfnbdk2jjKiLmyOkQ7zamg648lVMnzATL8JrSN6LmaVpYA==", + "requires": { + "commander": "2.15.0", + "source-map": "0.6.1" + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "optional": true + }, + "uglifyjs-webpack-plugin": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", + "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", + "requires": { + "source-map": "0.5.7", + "uglify-js": "2.8.29", + "webpack-sources": "1.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + } + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "requires": { + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "to-object-path": "0.3.0" + } + } + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" + }, + "uniqid": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz", + "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=", + "requires": { + "macaddress": "0.2.8" + } + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" + }, + "unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "requires": { + "crypto-random-string": "1.0.0" + } + }, + "universalify": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", + "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=" + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "requires": { + "has-value": "0.3.1", + "isobject": "3.0.1" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "requires": { + "get-value": "2.0.6", + "has-values": "0.1.4", + "isobject": "2.1.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + } + } + }, + "unzip-response": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", + "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=" + }, + "upath": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.0.4.tgz", + "integrity": "sha512-d4SJySNBXDaQp+DPrziv3xGS6w3d2Xt69FijJr86zMPBy23JEloMCEOUBBzuN7xCtjLCnmB9tI/z7SBCahHBOw==" + }, + "update-notifier": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.3.0.tgz", + "integrity": "sha1-TognpruRUUCrCTVZ1wFOPruDdFE=", + "requires": { + "boxen": "1.3.0", + "chalk": "2.3.2", + "configstore": "3.1.1", + "import-lazy": "2.1.0", + "is-installed-globally": "0.1.0", + "is-npm": "1.0.0", + "latest-version": "3.1.0", + "semver-diff": "2.1.0", + "xdg-basedir": "3.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", + "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.3.0" + } + } + } + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=" + }, + "urijs": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.1.tgz", + "integrity": "sha512-xVrGVi94ueCJNrBSTjWqjvtgvl3cyOTThp2zaMaFNGp3F542TR6sM3f2o8RqZl+AwteClSVmoCyt0ka4RjQOQg==" + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + } + } + }, + "url-loader": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-0.6.2.tgz", + "integrity": "sha512-h3qf9TNn53BpuXTTcpC+UehiRrl0Cv45Yr/xWayApjw6G8Bg2dGke7rIwDQ39piciWCWrC+WiqLjOh3SUp9n0Q==", + "requires": { + "loader-utils": "1.1.0", + "mime": "1.6.0", + "schema-utils": "0.3.0" + } + }, + "url-parse": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.2.0.tgz", + "integrity": "sha512-DT1XbYAfmQP65M/mE6OALxmXzZ/z1+e5zk2TcSKe/KiYbNGZxgtttzC0mR/sjopbpOXcbniq7eIKmocJnUWlEw==", + "requires": { + "querystringify": "1.0.0", + "requires-port": "1.0.0" + }, + "dependencies": { + "querystringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-1.0.0.tgz", + "integrity": "sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs=" + } + } + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "requires": { + "prepend-http": "1.0.4" + } + }, + "use": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", + "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", + "requires": { + "kind-of": "6.0.2" + } + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "requires": { + "inherits": "2.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" + }, + "validate-npm-package-license": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", + "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", + "requires": { + "spdx-correct": "3.0.0", + "spdx-expression-parse": "3.0.0" + } + }, + "value-equal": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-0.4.0.tgz", + "integrity": "sha512-x+cYdNnaA3CxvMaTX0INdTCN8m8aF2uY9BvEqmxuYp8bL09cs/kWVQPVGcA35fMktdOsP69IgU7wFj/61dJHEw==" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "vendors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.1.tgz", + "integrity": "sha1-N61zyO5Bf7PVgOeFMSMH0nSEfyI=" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + } + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "requires": { + "indexof": "0.0.1" + } + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "requires": { + "makeerror": "1.0.11" + } + }, + "warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", + "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=", + "requires": { + "loose-envify": "1.3.1" + } + }, + "watch": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/watch/-/watch-0.10.0.tgz", + "integrity": "sha1-d3mLLaD5kQ1ZXxrOWwwiWFIfIdw=" + }, + "watchpack": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.5.0.tgz", + "integrity": "sha512-RSlipNQB1u48cq0wH/BNfCu1tD/cJ8ydFIkNYhp9o+3d+8unClkIovpW5qpFPgmL9OE48wfAnlZydXByWP82AA==", + "requires": { + "chokidar": "2.0.2", + "graceful-fs": "4.1.11", + "neo-async": "2.5.0" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "requires": { + "minimalistic-assert": "1.0.0" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + }, + "webpack": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.8.1.tgz", + "integrity": "sha512-5ZXLWWsMqHKFr5y0N3Eo5IIisxeEeRAajNq4mELb/WELOR7srdbQk2N5XiyNy2A/AgvlR3AmeBCZJW8lHrolbw==", + "requires": { + "acorn": "5.5.3", + "acorn-dynamic-import": "2.0.2", + "ajv": "5.5.2", + "ajv-keywords": "2.1.1", + "async": "2.6.0", + "enhanced-resolve": "3.4.1", + "escope": "3.6.0", + "interpret": "1.1.0", + "json-loader": "0.5.7", + "json5": "0.5.1", + "loader-runner": "2.3.0", + "loader-utils": "1.1.0", + "memory-fs": "0.4.1", + "mkdirp": "0.5.1", + "node-libs-browser": "2.1.0", + "source-map": "0.5.7", + "supports-color": "4.5.0", + "tapable": "0.2.8", + "uglifyjs-webpack-plugin": "0.4.6", + "watchpack": "1.5.0", + "webpack-sources": "1.1.0", + "yargs": "8.0.2" + }, + "dependencies": { + "ajv-keywords": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=" + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "1.0.1" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "requires": { + "pify": "2.3.0" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "requires": { + "has-flag": "2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "yargs": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", + "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", + "requires": { + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" + } + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "requires": { + "camelcase": "4.1.0" + } + } + } + }, + "webpack-dev-middleware": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz", + "integrity": "sha512-FCrqPy1yy/sN6U/SaEZcHKRXGlqU0DUaEBL45jkUYoB8foVb6wCnbIJ1HKIx+qUFTW+3JpVcCJCxZ8VATL4e+A==", + "requires": { + "memory-fs": "0.4.1", + "mime": "1.6.0", + "path-is-absolute": "1.0.1", + "range-parser": "1.2.0", + "time-stamp": "2.0.0" + } + }, + "webpack-dev-server": { + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.9.4.tgz", + "integrity": "sha512-thrqC0EQEoSjXeYgP6pUXcUCZ+LNrKsDPn+mItLnn5VyyNZOJKd06hUP5vqkYwL8nWWXsii0loSF9NHNccT6ow==", + "requires": { + "ansi-html": "0.0.7", + "array-includes": "3.0.3", + "bonjour": "3.5.0", + "chokidar": "1.7.0", + "compression": "1.7.2", + "connect-history-api-fallback": "1.5.0", + "debug": "3.1.0", + "del": "3.0.0", + "express": "4.16.3", + "html-entities": "1.2.1", + "http-proxy-middleware": "0.17.4", + "import-local": "0.1.1", + "internal-ip": "1.2.0", + "ip": "1.1.5", + "killable": "1.0.0", + "loglevel": "1.6.1", + "opn": "5.2.0", + "portfinder": "1.0.13", + "selfsigned": "1.10.2", + "serve-index": "1.9.1", + "sockjs": "0.3.18", + "sockjs-client": "1.1.4", + "spdy": "3.4.7", + "strip-ansi": "3.0.1", + "supports-color": "4.5.0", + "webpack-dev-middleware": "1.12.2", + "yargs": "6.6.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "fsevents": "1.1.3", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "del": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", + "requires": { + "globby": "6.1.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "p-map": "1.2.0", + "pify": "3.0.0", + "rimraf": "2.6.2" + } + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "requires": { + "array-union": "1.0.2", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "1.0.1" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "requires": { + "has-flag": "2.0.0" + } + }, + "yargs": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "requires": { + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "y18n": "3.2.1", + "yargs-parser": "4.2.1" + } + }, + "yargs-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "requires": { + "camelcase": "3.0.0" + } + } + } + }, + "webpack-manifest-plugin": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-1.3.2.tgz", + "integrity": "sha512-MX60Bv2G83Zks9pi3oLOmRgnPAnwrlMn+lftMrWBm199VQjk46/xgzBi9lPfpZldw2+EI2S+OevuLIaDuxCWRw==", + "requires": { + "fs-extra": "0.30.0", + "lodash": "4.17.5" + }, + "dependencies": { + "fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "2.4.0", + "klaw": "1.3.1", + "path-is-absolute": "1.0.1", + "rimraf": "2.6.2" + } + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "requires": { + "graceful-fs": "4.1.11" + } + } + } + }, + "webpack-sources": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", + "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", + "requires": { + "source-list-map": "2.0.0", + "source-map": "0.6.1" + } + }, + "websocket-driver": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", + "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "requires": { + "http-parser-js": "0.4.11", + "websocket-extensions": "0.1.3" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==" + }, + "whatwg-encoding": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz", + "integrity": "sha512-jLBwwKUhi8WtBfsMQlL4bUUcT8sMkAtQinscJAe/M4KHCkHuUJAF6vuB0tueNIw4c8ziO6AkRmgY+jL3a0iiPw==", + "requires": { + "iconv-lite": "0.4.19" + } + }, + "whatwg-fetch": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", + "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=" + }, + "whatwg-url": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-4.8.0.tgz", + "integrity": "sha1-0pgaqRSMHgCkHFphMRZqtGg7vMA=", + "requires": { + "tr46": "0.0.3", + "webidl-conversions": "3.0.1" + }, + "dependencies": { + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + } + } + }, + "whet.extend": { + "version": "0.9.9", + "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", + "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=" + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" + }, + "widest-line": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz", + "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", + "requires": { + "string-width": "2.1.1" + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + }, + "worker-farm": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", + "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", + "requires": { + "errno": "0.1.7" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "requires": { + "mkdirp": "0.5.1" + } + }, + "write-file-atomic": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", + "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "signal-exit": "3.0.2" + } + }, + "xdg-basedir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", + "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=" + }, + "xml-char-classes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/xml-char-classes/-/xml-char-classes-1.0.0.tgz", + "integrity": "sha1-ZGV4SKIP/F31g6Qq2KJ3tFErvE0=" + }, + "xml-name-validator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", + "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=" + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + }, + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "requires": { + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "y18n": "3.2.1", + "yargs-parser": "5.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "yargs-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "requires": { + "camelcase": "3.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + } + } + } + } +} diff --git a/dinnerplanner-html-react-master/package.json b/dinnerplanner-html-react-master/package.json new file mode 100644 index 000000000..8fe4a63c8 --- /dev/null +++ b/dinnerplanner-html-react-master/package.json @@ -0,0 +1,17 @@ +{ + "name": "dinnerplanner-html-react", + "version": "0.1.0", + "private": true, + "dependencies": { + "react": "^16.2.0", + "react-dom": "^16.2.0", + "react-router-dom": "^4.2.2", + "react-scripts": "1.1.1" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test --env=jsdom", + "eject": "react-scripts eject" + } +} diff --git a/dinnerplanner-html-react-master/public/index.html b/dinnerplanner-html-react-master/public/index.html new file mode 100644 index 000000000..ba2b9232b --- /dev/null +++ b/dinnerplanner-html-react-master/public/index.html @@ -0,0 +1,12 @@ + + + + + + Dinner Planner React + + +
+ + + diff --git a/dinnerplanner-html-react-master/src/App.css b/dinnerplanner-html-react-master/src/App.css new file mode 100644 index 000000000..e69de29bb diff --git a/dinnerplanner-html-react-master/src/App.js b/dinnerplanner-html-react-master/src/App.js new file mode 100644 index 000000000..658a547bd --- /dev/null +++ b/dinnerplanner-html-react-master/src/App.js @@ -0,0 +1,32 @@ +import React, { Component } from 'react'; +import './App.css'; +import { Route } from 'react-router-dom'; +import Welcome from './Welcome/Welcome'; +import { modelInstance } from './data/DinnerModel' +import SelectDish from "./SelectDish/SelectDish"; + +class App extends Component { + constructor(props) { + super(props) + this.state = { + title: 'Dinner Planner', + } + } + + render() { + return ( +
+
+

{this.state.title}

+ + {/* We rended diffrent component based on the path */} + + }/> + +
+
+ ); + } +} + +export default App; diff --git a/dinnerplanner-html-react-master/src/Dishes/Dishes.css b/dinnerplanner-html-react-master/src/Dishes/Dishes.css new file mode 100644 index 000000000..e69de29bb diff --git a/dinnerplanner-html-react-master/src/Dishes/Dishes.js b/dinnerplanner-html-react-master/src/Dishes/Dishes.js new file mode 100644 index 000000000..8168d7edf --- /dev/null +++ b/dinnerplanner-html-react-master/src/Dishes/Dishes.js @@ -0,0 +1,67 @@ +import React, {Component} from 'react'; +import './Dishes.css'; +// Alternative to passing the moderl as the component property, +// we can import the model instance directly +import {modelInstance} from '../data/DinnerModel'; + + +class Dishes extends Component { + constructor(props) { + super(props); + // We create the state to store the various statuses + // e.g. API data loading or error + this.state = { + status: 'INITIAL' + } + } + + // this methods is called by React lifecycle when the + // component is actually shown to the user (mounted to DOM) + // that's a good place to call the API and get the data + componentDidMount = () => { + // when data is retrieved we update the state + // this will cause the component to re-render + modelInstance.getAllDishes().then(dishes => { + this.setState({ + status: 'LOADED', + dishes: dishes.results + }) + }).catch(() => { + this.setState({ + status: 'ERROR' + }) + }) + } + + render() { + let dishesList = null; + + // depending on the state we either generate + // useful message to the user or show the list + // of returned dishes + switch (this.state.status) { + case 'INITIAL': + dishesList = Loading... + break; + case 'LOADED': + dishesList = this.state.dishes.map((dish) => +
  • {dish.title}
  • + ) + break; + default: + dishesList = Failed to load data, please try again + break; + } + + return ( +
    +

    Dishes

    +
      + {dishesList} +
    +
    + ); + } +} + +export default Dishes; diff --git a/dinnerplanner-html-react-master/src/SelectDish/SelectDish.css b/dinnerplanner-html-react-master/src/SelectDish/SelectDish.css new file mode 100644 index 000000000..e69de29bb diff --git a/dinnerplanner-html-react-master/src/SelectDish/SelectDish.js b/dinnerplanner-html-react-master/src/SelectDish/SelectDish.js new file mode 100644 index 000000000..aad4ddab8 --- /dev/null +++ b/dinnerplanner-html-react-master/src/SelectDish/SelectDish.js @@ -0,0 +1,20 @@ +import React, { Component } from 'react'; +import './SelectDish.css'; +import Sidebar from '../Sidebar/Sidebar'; +import Dishes from '../Dishes/Dishes'; + +class SelectDish extends Component { + render() { + return ( +
    +

    This is the Select Dish screen

    + + {/* We pass the model as property to the Sidebar component */} + + +
    + ); + } +} + +export default SelectDish; diff --git a/dinnerplanner-html-react-master/src/Sidebar/Sidebar.css b/dinnerplanner-html-react-master/src/Sidebar/Sidebar.css new file mode 100644 index 000000000..e69de29bb diff --git a/dinnerplanner-html-react-master/src/Sidebar/Sidebar.js b/dinnerplanner-html-react-master/src/Sidebar/Sidebar.js new file mode 100644 index 000000000..68520a1f8 --- /dev/null +++ b/dinnerplanner-html-react-master/src/Sidebar/Sidebar.js @@ -0,0 +1,54 @@ +import React, { Component } from 'react'; +import './Sidebar.css'; +class Sidebar extends Component { + + constructor(props) { + super(props) + + // we put on state the properties we want to use and modify in the component + this.state = { + numberOfGuests: this.props.model.getNumberOfGuests() + } + } + + // this methods is called by React lifecycle when the + // component is actually shown to the user (mounted to DOM) + // that's a good place to setup model observer + componentDidMount() { + this.props.model.addObserver(this) + } + + // this is called when component is removed from the DOM + // good place to remove observer + componentWillUnmount() { + this.props.model.removeObserver(this) + } + + // in our update function we modify the state which will + // cause the component to re-render + update() { + this.setState({ + numberOfGuests: this.props.model.getNumberOfGuests() + }) + } + + // our handler for the input's on change event + onNumberOfGuestsChanged = (e) => { + this.props.model.setNumberOfGuests(+e.target.value) + } + + render() { + return ( +
    +

    This is the sidebar

    +

    + People: +
    + Total number of guests: {this.state.numberOfGuests} +

    +
    + ); + } +} + +export default Sidebar; diff --git a/dinnerplanner-html-react-master/src/Welcome/Welcome.css b/dinnerplanner-html-react-master/src/Welcome/Welcome.css new file mode 100644 index 000000000..e69de29bb diff --git a/dinnerplanner-html-react-master/src/Welcome/Welcome.js b/dinnerplanner-html-react-master/src/Welcome/Welcome.js new file mode 100644 index 000000000..036446027 --- /dev/null +++ b/dinnerplanner-html-react-master/src/Welcome/Welcome.js @@ -0,0 +1,21 @@ +import React, { Component } from 'react'; +import './Welcome.css'; +import { Link } from 'react-router-dom'; + +class Welcome extends Component { + render() { + return ( +
    +

    + Welcome to the dinner planner React Startup code! +

    + + + + +
    + ); + } +} + +export default Welcome; diff --git a/dinnerplanner-html-react-master/src/data/DinnerModel.js b/dinnerplanner-html-react-master/src/data/DinnerModel.js new file mode 100644 index 000000000..5f5cc8ed5 --- /dev/null +++ b/dinnerplanner-html-react-master/src/data/DinnerModel.js @@ -0,0 +1,62 @@ +const httpOptions = { + headers: {'X-Mashape-Key': 'YOUR_API_KEY'} +}; + +const DinnerModel = function () { + + let numberOfGuests = 4; + let observers = []; + + this.setNumberOfGuests = function (num) { + numberOfGuests = num; + notifyObservers(); + }; + + this.getNumberOfGuests = function () { + return numberOfGuests; + }; + + // API Calls + + this.getAllDishes = function () { + const url = 'https://spoonacular-recipe-food-nutrition-v1.p.mashape.com/recipes/search' + return fetch(url, httpOptions) + .then(processResponse) + .catch(handleError) + } + + // API Helper methods + + const processResponse = function (response) { + if (response.ok) { + return response.json() + } + throw response; + } + + const handleError = function (error) { + if (error.json) { + error.json().then(error => { + console.error('getAllDishes() API Error:', error.message || error) + }) + } else { + console.error('getAllDishes() API Error:', error.message || error) + } + } + + // Observer pattern + + this.addObserver = function (observer) { + observers.push(observer); + }; + + this.removeObserver = function (observer) { + observers = observers.filter(o => o !== observer); + }; + + const notifyObservers = function () { + observers.forEach(o => o.update()); + }; +}; + +export const modelInstance = new DinnerModel(); diff --git a/dinnerplanner-html-react-master/src/index.css b/dinnerplanner-html-react-master/src/index.css new file mode 100644 index 000000000..e69de29bb diff --git a/dinnerplanner-html-react-master/src/index.js b/dinnerplanner-html-react-master/src/index.js new file mode 100644 index 000000000..7ed0b5195 --- /dev/null +++ b/dinnerplanner-html-react-master/src/index.js @@ -0,0 +1,13 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; +import './index.css'; +import App from './App'; +import { BrowserRouter } from 'react-router-dom' + + +ReactDOM.render(( + + + +), document.getElementById('root')); + diff --git a/dinnerplanner-html-react-master/yarn.lock b/dinnerplanner-html-react-master/yarn.lock new file mode 100644 index 000000000..cf3ff68c5 --- /dev/null +++ b/dinnerplanner-html-react-master/yarn.lock @@ -0,0 +1,6691 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +abab@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e" + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + +accepts@~1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.4.tgz#86246758c7dd6d21a6474ff084a4740ec05eb21f" + dependencies: + mime-types "~2.1.16" + negotiator "0.6.1" + +acorn-dynamic-import@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4" + dependencies: + acorn "^4.0.3" + +acorn-globals@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-3.1.0.tgz#fd8270f71fbb4996b004fa880ee5d46573a731bf" + dependencies: + acorn "^4.0.4" + +acorn-jsx@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" + dependencies: + acorn "^3.0.4" + +acorn@^3.0.4: + version "3.3.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" + +acorn@^4.0.3, acorn@^4.0.4: + version "4.0.13" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" + +acorn@^5.0.0, acorn@^5.4.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.4.1.tgz#fdc58d9d17f4a4e98d102ded826a9b9759125102" + +address@1.0.3, address@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/address/-/address-1.0.3.tgz#b5f50631f8d6cec8bd20c963963afb55e06cbce9" + +ajv-keywords@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" + +ajv-keywords@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.1.0.tgz#ac2b27939c543e95d2c06e7f7f5c27be4aa543be" + +ajv@^4.9.1: + version "4.11.8" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" + dependencies: + co "^4.6.0" + json-stable-stringify "^1.0.1" + +ajv@^5.0.0, ajv@^5.1.0, ajv@^5.1.5, ajv@^5.2.0: + version "5.5.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" + dependencies: + co "^4.6.0" + fast-deep-equal "^1.0.0" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.3.0" + +ajv@^6.0.1: + version "6.2.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.2.0.tgz#afac295bbaa0152449e522742e4547c1ae9328d2" + dependencies: + fast-deep-equal "^1.0.0" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.3.0" + +align-text@^0.1.1, align-text@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" + dependencies: + kind-of "^3.0.2" + longest "^1.0.1" + repeat-string "^1.5.2" + +alphanum-sort@^1.0.1, alphanum-sort@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + +ansi-align@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" + dependencies: + string-width "^2.0.0" + +ansi-escapes@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" + +ansi-escapes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92" + +ansi-html@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" + +ansi-regex@^2.0.0, ansi-regex@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + +ansi-styles@^3.0.0, ansi-styles@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" + dependencies: + color-convert "^1.9.0" + +anymatch@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" + dependencies: + micromatch "^2.1.5" + normalize-path "^2.0.0" + +append-transform@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991" + dependencies: + default-require-extensions "^1.0.0" + +aproba@^1.0.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + +are-we-there-yet@~1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + dependencies: + sprintf-js "~1.0.2" + +aria-query@^0.7.0: + version "0.7.1" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-0.7.1.tgz#26cbb5aff64144b0a825be1846e0b16cfa00b11e" + dependencies: + ast-types-flow "0.0.7" + commander "^2.11.0" + +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + dependencies: + arr-flatten "^1.0.1" + +arr-flatten@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + +array-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" + +array-filter@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" + +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + +array-flatten@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.1.tgz#426bb9da84090c1838d812c8150af20a8331e296" + +array-includes@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.7.0" + +array-map@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" + +array-reduce@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + +arrify@^1.0.0, arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + +asap@~2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + +asn1.js@^4.0.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +asn1@~0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + +assert-plus@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" + +assert@^1.1.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" + dependencies: + util "0.10.3" + +ast-types-flow@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + +async-each@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + +async@^1.4.0, async@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + +async@^2.1.2, async@^2.1.4, async@^2.4.1: + version "2.6.0" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" + dependencies: + lodash "^4.14.0" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + +autoprefixer@7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.1.6.tgz#fb933039f74af74a83e71225ce78d9fd58ba84d7" + dependencies: + browserslist "^2.5.1" + caniuse-lite "^1.0.30000748" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^6.0.13" + postcss-value-parser "^3.2.3" + +autoprefixer@^6.3.1: + version "6.7.7" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014" + dependencies: + browserslist "^1.7.6" + caniuse-db "^1.0.30000634" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^5.2.16" + postcss-value-parser "^3.2.3" + +aws-sign2@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + +aws4@^1.2.1, aws4@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" + +axobject-query@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-0.1.0.tgz#62f59dbc59c9f9242759ca349960e7a2fe3c36c0" + dependencies: + ast-types-flow "0.0.7" + +babel-code-frame@6.26.0, babel-code-frame@^6.11.0, babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +babel-core@6.26.0, babel-core@^6.0.0, babel-core@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8" + dependencies: + babel-code-frame "^6.26.0" + babel-generator "^6.26.0" + babel-helpers "^6.24.1" + babel-messages "^6.23.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + convert-source-map "^1.5.0" + debug "^2.6.8" + json5 "^0.5.1" + lodash "^4.17.4" + minimatch "^3.0.4" + path-is-absolute "^1.0.1" + private "^0.1.7" + slash "^1.0.0" + source-map "^0.5.6" + +babel-eslint@7.2.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-7.2.3.tgz#b2fe2d80126470f5c19442dc757253a897710827" + dependencies: + babel-code-frame "^6.22.0" + babel-traverse "^6.23.1" + babel-types "^6.23.0" + babylon "^6.17.0" + +babel-generator@^6.18.0, babel-generator@^6.26.0: + version "6.26.1" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" + dependencies: + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.17.4" + source-map "^0.5.7" + trim-right "^1.0.1" + +babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" + dependencies: + babel-helper-explode-assignable-expression "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-builder-react-jsx@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz#39ff8313b75c8b65dceff1f31d383e0ff2a408a0" + dependencies: + babel-runtime "^6.26.0" + babel-types "^6.26.0" + esutils "^2.0.2" + +babel-helper-call-delegate@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-define-map@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-explode-assignable-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" + dependencies: + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-get-function-arity@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-hoist-variables@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-optimise-call-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-regex@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" + dependencies: + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-remap-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-replace-supers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" + dependencies: + babel-helper-optimise-call-expression "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helpers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-jest@20.0.3, babel-jest@^20.0.3: + version "20.0.3" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-20.0.3.tgz#e4a03b13dc10389e140fc645d09ffc4ced301671" + dependencies: + babel-core "^6.0.0" + babel-plugin-istanbul "^4.0.0" + babel-preset-jest "^20.0.3" + +babel-loader@7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.2.tgz#f6cbe122710f1aa2af4d881c6d5b54358ca24126" + dependencies: + find-cache-dir "^1.0.0" + loader-utils "^1.0.2" + mkdirp "^0.5.1" + +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-check-es2015-constants@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-dynamic-import-node@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-1.1.0.tgz#bd1d88ac7aaf98df4917c384373b04d971a2b37a" + dependencies: + babel-plugin-syntax-dynamic-import "^6.18.0" + babel-template "^6.26.0" + babel-types "^6.26.0" + +babel-plugin-istanbul@^4.0.0: + version "4.1.5" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.5.tgz#6760cdd977f411d3e175bb064f2bc327d99b2b6e" + dependencies: + find-up "^2.1.0" + istanbul-lib-instrument "^1.7.5" + test-exclude "^4.1.1" + +babel-plugin-jest-hoist@^20.0.3: + version "20.0.3" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-20.0.3.tgz#afedc853bd3f8dc3548ea671fbe69d03cc2c1767" + +babel-plugin-syntax-async-functions@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" + +babel-plugin-syntax-class-properties@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" + +babel-plugin-syntax-dynamic-import@6.18.0, babel-plugin-syntax-dynamic-import@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" + +babel-plugin-syntax-exponentiation-operator@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" + +babel-plugin-syntax-flow@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d" + +babel-plugin-syntax-jsx@^6.3.13, babel-plugin-syntax-jsx@^6.8.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" + +babel-plugin-syntax-object-rest-spread@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" + +babel-plugin-syntax-trailing-function-commas@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" + +babel-plugin-transform-async-to-generator@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" + dependencies: + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-functions "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-class-properties@6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac" + dependencies: + babel-helper-function-name "^6.24.1" + babel-plugin-syntax-class-properties "^6.8.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-arrow-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoping@^6.23.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" + dependencies: + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-plugin-transform-es2015-classes@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" + dependencies: + babel-helper-define-map "^6.24.1" + babel-helper-function-name "^6.24.1" + babel-helper-optimise-call-expression "^6.24.1" + babel-helper-replace-supers "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-computed-properties@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-destructuring@6.23.0, babel-plugin-transform-es2015-destructuring@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-duplicate-keys@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-for-of@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-function-name@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" + dependencies: + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz#0d8394029b7dc6abe1a97ef181e00758dd2e5d8a" + dependencies: + babel-plugin-transform-strict-mode "^6.24.1" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-types "^6.26.0" + +babel-plugin-transform-es2015-modules-systemjs@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-umd@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" + dependencies: + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-object-super@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" + dependencies: + babel-helper-replace-supers "^6.24.1" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-parameters@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" + dependencies: + babel-helper-call-delegate "^6.24.1" + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-shorthand-properties@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-spread@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-sticky-regex@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-template-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-typeof-symbol@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-unicode-regex@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + regexpu-core "^2.0.0" + +babel-plugin-transform-exponentiation-operator@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" + dependencies: + babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" + babel-plugin-syntax-exponentiation-operator "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-flow-strip-types@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf" + dependencies: + babel-plugin-syntax-flow "^6.18.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-object-rest-spread@6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" + dependencies: + babel-plugin-syntax-object-rest-spread "^6.8.0" + babel-runtime "^6.26.0" + +babel-plugin-transform-react-constant-elements@6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-constant-elements/-/babel-plugin-transform-react-constant-elements-6.23.0.tgz#2f119bf4d2cdd45eb9baaae574053c604f6147dd" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-react-display-name@^6.23.0: + version "6.25.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz#67e2bf1f1e9c93ab08db96792e05392bf2cc28d1" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-react-jsx-self@6.22.0, babel-plugin-transform-react-jsx-self@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz#df6d80a9da2612a121e6ddd7558bcbecf06e636e" + dependencies: + babel-plugin-syntax-jsx "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-react-jsx-source@6.22.0, babel-plugin-transform-react-jsx-source@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz#66ac12153f5cd2d17b3c19268f4bf0197f44ecd6" + dependencies: + babel-plugin-syntax-jsx "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-react-jsx@6.24.1, babel-plugin-transform-react-jsx@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz#840a028e7df460dfc3a2d29f0c0d91f6376e66a3" + dependencies: + babel-helper-builder-react-jsx "^6.24.1" + babel-plugin-syntax-jsx "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-regenerator@6.26.0, babel-plugin-transform-regenerator@^6.22.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" + dependencies: + regenerator-transform "^0.10.0" + +babel-plugin-transform-runtime@6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz#88490d446502ea9b8e7efb0fe09ec4d99479b1ee" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-strict-mode@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-preset-env@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.6.1.tgz#a18b564cc9b9afdf4aae57ae3c1b0d99188e6f48" + dependencies: + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-to-generator "^6.22.0" + babel-plugin-transform-es2015-arrow-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.23.0" + babel-plugin-transform-es2015-classes "^6.23.0" + babel-plugin-transform-es2015-computed-properties "^6.22.0" + babel-plugin-transform-es2015-destructuring "^6.23.0" + babel-plugin-transform-es2015-duplicate-keys "^6.22.0" + babel-plugin-transform-es2015-for-of "^6.23.0" + babel-plugin-transform-es2015-function-name "^6.22.0" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.22.0" + babel-plugin-transform-es2015-modules-commonjs "^6.23.0" + babel-plugin-transform-es2015-modules-systemjs "^6.23.0" + babel-plugin-transform-es2015-modules-umd "^6.23.0" + babel-plugin-transform-es2015-object-super "^6.22.0" + babel-plugin-transform-es2015-parameters "^6.23.0" + babel-plugin-transform-es2015-shorthand-properties "^6.22.0" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.22.0" + babel-plugin-transform-es2015-template-literals "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.23.0" + babel-plugin-transform-es2015-unicode-regex "^6.22.0" + babel-plugin-transform-exponentiation-operator "^6.22.0" + babel-plugin-transform-regenerator "^6.22.0" + browserslist "^2.1.2" + invariant "^2.2.2" + semver "^5.3.0" + +babel-preset-flow@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz#e71218887085ae9a24b5be4169affb599816c49d" + dependencies: + babel-plugin-transform-flow-strip-types "^6.22.0" + +babel-preset-jest@^20.0.3: + version "20.0.3" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-20.0.3.tgz#cbacaadecb5d689ca1e1de1360ebfc66862c178a" + dependencies: + babel-plugin-jest-hoist "^20.0.3" + +babel-preset-react-app@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-3.1.1.tgz#d3f06a79742f0e89d7afcb72e282d9809c850920" + dependencies: + babel-plugin-dynamic-import-node "1.1.0" + babel-plugin-syntax-dynamic-import "6.18.0" + babel-plugin-transform-class-properties "6.24.1" + babel-plugin-transform-es2015-destructuring "6.23.0" + babel-plugin-transform-object-rest-spread "6.26.0" + babel-plugin-transform-react-constant-elements "6.23.0" + babel-plugin-transform-react-jsx "6.24.1" + babel-plugin-transform-react-jsx-self "6.22.0" + babel-plugin-transform-react-jsx-source "6.22.0" + babel-plugin-transform-regenerator "6.26.0" + babel-plugin-transform-runtime "6.23.0" + babel-preset-env "1.6.1" + babel-preset-react "6.24.1" + +babel-preset-react@6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-react/-/babel-preset-react-6.24.1.tgz#ba69dfaea45fc3ec639b6a4ecea6e17702c91380" + dependencies: + babel-plugin-syntax-jsx "^6.3.13" + babel-plugin-transform-react-display-name "^6.23.0" + babel-plugin-transform-react-jsx "^6.24.1" + babel-plugin-transform-react-jsx-self "^6.22.0" + babel-plugin-transform-react-jsx-source "^6.22.0" + babel-preset-flow "^6.23.0" + +babel-register@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" + dependencies: + babel-core "^6.26.0" + babel-runtime "^6.26.0" + core-js "^2.5.0" + home-or-tmp "^2.0.0" + lodash "^4.17.4" + mkdirp "^0.5.1" + source-map-support "^0.4.15" + +babel-runtime@6.26.0, babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" + dependencies: + babel-runtime "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + lodash "^4.17.4" + +babel-traverse@^6.18.0, babel-traverse@^6.23.1, babel-traverse@^6.24.1, babel-traverse@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" + dependencies: + babel-code-frame "^6.26.0" + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + debug "^2.6.8" + globals "^9.18.0" + invariant "^2.2.2" + lodash "^4.17.4" + +babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.23.0, babel-types@^6.24.1, babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + dependencies: + babel-runtime "^6.26.0" + esutils "^2.0.2" + lodash "^4.17.4" + to-fast-properties "^1.0.3" + +babylon@^6.17.0, babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + +balanced-match@^0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + +base64-js@^1.0.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.3.tgz#fb13668233d9614cf5fb4bce95a9ba4096cdf801" + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + +bcrypt-pbkdf@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" + dependencies: + tweetnacl "^0.14.3" + +big.js@^3.1.3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" + +binary-extensions@^1.0.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" + +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + dependencies: + inherits "~2.0.0" + +bluebird@^3.4.7: + version "3.5.1" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: + version "4.11.8" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + +body-parser@1.18.2: + version "1.18.2" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454" + dependencies: + bytes "3.0.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.1" + http-errors "~1.6.2" + iconv-lite "0.4.19" + on-finished "~2.3.0" + qs "6.5.1" + raw-body "2.3.2" + type-is "~1.6.15" + +bonjour@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + dependencies: + array-flatten "^2.1.0" + deep-equal "^1.0.1" + dns-equal "^1.0.0" + dns-txt "^2.0.2" + multicast-dns "^6.0.1" + multicast-dns-service-types "^1.1.0" + +boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + +boom@2.x.x: + version "2.10.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" + dependencies: + hoek "2.x.x" + +boom@4.x.x: + version "4.3.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31" + dependencies: + hoek "4.x.x" + +boom@5.x.x: + version "5.2.0" + resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02" + dependencies: + hoek "4.x.x" + +boxen@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" + dependencies: + ansi-align "^2.0.0" + camelcase "^4.0.0" + chalk "^2.0.1" + cli-boxes "^1.0.0" + string-width "^2.0.0" + term-size "^1.2.0" + widest-line "^2.0.0" + +brace-expansion@^1.0.0, brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + +brorand@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + +browser-resolve@^1.11.2: + version "1.11.2" + resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce" + dependencies: + resolve "1.1.7" + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.1.1" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.1.1.tgz#38b7ab55edb806ff2dcda1a7f1620773a477c49f" + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a" + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd" + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + +browserify-rsa@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + dependencies: + bn.js "^4.1.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" + dependencies: + bn.js "^4.1.1" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.2" + elliptic "^6.0.0" + inherits "^2.0.1" + parse-asn1 "^5.0.0" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + dependencies: + pako "~1.0.5" + +browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: + version "1.7.7" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" + dependencies: + caniuse-db "^1.0.30000639" + electron-to-chromium "^1.2.7" + +browserslist@^2.1.2, browserslist@^2.5.1: + version "2.11.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.11.3.tgz#fe36167aed1bbcde4827ebfe71347a2cc70b99b2" + dependencies: + caniuse-lite "^1.0.30000792" + electron-to-chromium "^1.3.30" + +bser@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bser/-/bser-1.0.2.tgz#381116970b2a6deea5646dd15dd7278444b56169" + dependencies: + node-int64 "^0.4.0" + +bser@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719" + dependencies: + node-int64 "^0.4.0" + +buffer-indexof@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + +buffer@^4.3.0: + version "4.9.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +builtin-modules@^1.0.0, builtin-modules@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + +caller-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" + dependencies: + callsites "^0.2.0" + +callsites@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + +camel-case@3.0.x: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" + dependencies: + no-case "^2.2.0" + upper-case "^1.1.1" + +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + dependencies: + camelcase "^2.0.0" + map-obj "^1.0.0" + +camelcase@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" + +camelcase@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + +camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + +camelcase@^4.0.0, camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + +caniuse-api@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c" + dependencies: + browserslist "^1.3.6" + caniuse-db "^1.0.30000529" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: + version "1.0.30000810" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000810.tgz#bd25830c41efab64339a2e381f49677343c84509" + +caniuse-lite@^1.0.30000748, caniuse-lite@^1.0.30000792: + version "1.0.30000810" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000810.tgz#47585fffce0e9f3593a6feea4673b945424351d9" + +capture-stack-trace@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" + +case-sensitive-paths-webpack-plugin@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.1.1.tgz#3d29ced8c1f124bf6f53846fb3f5894731fdc909" + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + +center-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" + dependencies: + align-text "^0.1.3" + lazy-cache "^1.0.3" + +chalk@1.1.3, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.1.tgz#523fe2678aec7b04e8041909292fe8b17059b796" + dependencies: + ansi-styles "^3.2.0" + escape-string-regexp "^1.0.5" + supports-color "^5.2.0" + +chardet@^0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" + +chokidar@^1.6.0, chokidar@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" + dependencies: + anymatch "^1.3.0" + async-each "^1.0.0" + glob-parent "^2.0.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^2.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + optionalDependencies: + fsevents "^1.0.0" + +ci-info@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.1.2.tgz#03561259db48d0474c8bdc90f5b47b068b6bbfb4" + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +circular-json@^0.3.1: + version "0.3.3" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" + +clap@^1.0.9: + version "1.2.3" + resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.3.tgz#4f36745b32008492557f46412d66d50cb99bce51" + dependencies: + chalk "^1.1.3" + +clean-css@4.1.x: + version "4.1.9" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.9.tgz#35cee8ae7687a49b98034f70de00c4edd3826301" + dependencies: + source-map "0.5.x" + +cli-boxes@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" + +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + dependencies: + restore-cursor "^2.0.0" + +cli-width@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + +cliui@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" + dependencies: + center-align "^0.1.1" + right-align "^0.1.1" + wordwrap "0.0.2" + +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +clone@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.3.tgz#298d7e2231660f40c003c2ed3140decf3f53085f" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + +coa@~1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.4.tgz#a9ef153660d6a86a8bdec0289a5c684d217432fd" + dependencies: + q "^1.1.2" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + +color-convert@^1.3.0, color-convert@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" + dependencies: + color-name "^1.1.1" + +color-name@^1.0.0, color-name@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + +color-string@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991" + dependencies: + color-name "^1.0.0" + +color@^0.11.0: + version "0.11.4" + resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764" + dependencies: + clone "^1.0.2" + color-convert "^1.3.0" + color-string "^0.3.0" + +colormin@^1.0.5: + version "1.1.2" + resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133" + dependencies: + color "^0.11.0" + css-color-names "0.0.4" + has "^1.0.1" + +colors@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" + +combined-stream@1.0.6, combined-stream@^1.0.5, combined-stream@~1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" + dependencies: + delayed-stream "~1.0.0" + +commander@2.14.x, commander@^2.11.0, commander@~2.14.1: + version "2.14.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.14.1.tgz#2235123e37af8ca3c65df45b026dbd357b01b9aa" + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + +compressible@~2.0.13: + version "2.0.13" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.13.tgz#0d1020ab924b2fdb4d6279875c7d6daba6baa7a9" + dependencies: + mime-db ">= 1.33.0 < 2" + +compression@^1.5.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.2.tgz#aaffbcd6aaf854b44ebb280353d5ad1651f59a69" + dependencies: + accepts "~1.3.4" + bytes "3.0.0" + compressible "~2.0.13" + debug "2.6.9" + on-headers "~1.0.1" + safe-buffer "5.1.1" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + +concat-stream@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" + dependencies: + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +configstore@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.1.tgz#094ee662ab83fad9917678de114faaea8fcdca90" + dependencies: + dot-prop "^4.1.0" + graceful-fs "^4.1.2" + make-dir "^1.0.0" + unique-string "^1.0.0" + write-file-atomic "^2.0.0" + xdg-basedir "^3.0.0" + +connect-history-api-fallback@^1.3.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz#b06873934bc5e344fef611a196a6faae0aee015a" + +console-browserify@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" + dependencies: + date-now "^0.1.4" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + +content-disposition@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" + +content-type-parser@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/content-type-parser/-/content-type-parser-1.0.2.tgz#caabe80623e63638b2502fd4c7f12ff4ce2352e7" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + +convert-source-map@^1.4.0, convert-source-map@^1.5.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + +cookie@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" + +core-js@^1.0.0: + version "1.2.7" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" + +core-js@^2.4.0, core-js@^2.5.0: + version "2.5.3" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.3.tgz#8acc38345824f16d8365b7c9b4259168e8ed603e" + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + +cosmiconfig@^2.1.0, cosmiconfig@^2.1.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-2.2.2.tgz#6173cebd56fac042c1f4390edf7af6c07c7cb892" + dependencies: + is-directory "^0.3.1" + js-yaml "^3.4.3" + minimist "^1.2.0" + object-assign "^4.1.0" + os-homedir "^1.0.1" + parse-json "^2.2.0" + require-from-string "^1.1.0" + +create-ecdh@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d" + dependencies: + bn.js "^4.1.0" + elliptic "^6.0.0" + +create-error-class@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" + dependencies: + capture-stack-trace "^1.0.0" + +create-hash@^1.1.0, create-hash@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd" + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + ripemd160 "^2.0.0" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: + version "1.1.6" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz#acb9e221a4e17bdb076e90657c42b93e3726cf06" + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-spawn@5.1.0, cross-spawn@^5.0.1, cross-spawn@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +cryptiles@2.x.x: + version "2.0.5" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" + dependencies: + boom "2.x.x" + +cryptiles@3.x.x: + version "3.1.2" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe" + dependencies: + boom "5.x.x" + +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +crypto-random-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" + +css-color-names@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" + +css-loader@0.28.7: + version "0.28.7" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.28.7.tgz#5f2ee989dd32edd907717f953317656160999c1b" + dependencies: + babel-code-frame "^6.11.0" + css-selector-tokenizer "^0.7.0" + cssnano ">=2.6.1 <4" + icss-utils "^2.1.0" + loader-utils "^1.0.2" + lodash.camelcase "^4.3.0" + object-assign "^4.0.1" + postcss "^5.0.6" + postcss-modules-extract-imports "^1.0.0" + postcss-modules-local-by-default "^1.0.1" + postcss-modules-scope "^1.0.0" + postcss-modules-values "^1.1.0" + postcss-value-parser "^3.3.0" + source-list-map "^2.0.0" + +css-select@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" + dependencies: + boolbase "~1.0.0" + css-what "2.1" + domutils "1.5.1" + nth-check "~1.0.1" + +css-selector-tokenizer@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86" + dependencies: + cssesc "^0.1.0" + fastparse "^1.1.1" + regexpu-core "^1.0.0" + +css-what@2.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd" + +cssesc@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" + +"cssnano@>=2.6.1 <4": + version "3.10.0" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38" + dependencies: + autoprefixer "^6.3.1" + decamelize "^1.1.2" + defined "^1.0.0" + has "^1.0.1" + object-assign "^4.0.1" + postcss "^5.0.14" + postcss-calc "^5.2.0" + postcss-colormin "^2.1.8" + postcss-convert-values "^2.3.4" + postcss-discard-comments "^2.0.4" + postcss-discard-duplicates "^2.0.1" + postcss-discard-empty "^2.0.1" + postcss-discard-overridden "^0.1.1" + postcss-discard-unused "^2.2.1" + postcss-filter-plugins "^2.0.0" + postcss-merge-idents "^2.1.5" + postcss-merge-longhand "^2.0.1" + postcss-merge-rules "^2.0.3" + postcss-minify-font-values "^1.0.2" + postcss-minify-gradients "^1.0.1" + postcss-minify-params "^1.0.4" + postcss-minify-selectors "^2.0.4" + postcss-normalize-charset "^1.1.0" + postcss-normalize-url "^3.0.7" + postcss-ordered-values "^2.1.0" + postcss-reduce-idents "^2.2.2" + postcss-reduce-initial "^1.0.0" + postcss-reduce-transforms "^1.0.3" + postcss-svgo "^2.1.1" + postcss-unique-selectors "^2.0.2" + postcss-value-parser "^3.2.3" + postcss-zindex "^2.0.1" + +csso@~2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85" + dependencies: + clap "^1.0.9" + source-map "^0.5.3" + +cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": + version "0.3.2" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.2.tgz#b8036170c79f07a90ff2f16e22284027a243848b" + +"cssstyle@>= 0.2.37 < 0.3.0": + version "0.2.37" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54" + dependencies: + cssom "0.3.x" + +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + dependencies: + array-find-index "^1.0.1" + +d@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" + dependencies: + es5-ext "^0.10.9" + +damerau-levenshtein@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz#03191c432cb6eea168bb77f3a55ffdccb8978514" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + dependencies: + assert-plus "^1.0.0" + +date-now@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" + +debug@2.6.9, debug@^2.2.0, debug@^2.6.0, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + dependencies: + ms "2.0.0" + +debug@^3.0.1, debug@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + dependencies: + ms "2.0.0" + +decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + +deep-equal@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" + +deep-extend@~0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + +default-require-extensions@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8" + dependencies: + strip-bom "^2.0.0" + +define-properties@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" + dependencies: + foreach "^2.0.5" + object-keys "^1.0.8" + +defined@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" + +del@^2.0.2, del@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" + dependencies: + globby "^5.0.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + rimraf "^2.2.8" + +del@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" + dependencies: + globby "^6.1.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + p-map "^1.1.1" + pify "^3.0.0" + rimraf "^2.2.8" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + +depd@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" + +depd@~1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + +des.js@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + +detect-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" + dependencies: + repeating "^2.0.0" + +detect-libc@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + +detect-node@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.3.tgz#a2033c09cc8e158d37748fbde7507832bd6ce127" + +detect-port-alt@1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.5.tgz#a1aa8fc805a4a5df9b905b7ddc7eed036bcce889" + dependencies: + address "^1.0.1" + debug "^2.6.0" + +diff@^3.2.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.4.0.tgz#b1d85507daf3964828de54b37d0d73ba67dda56c" + +diffie-hellman@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e" + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + +dns-packet@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" + dependencies: + ip "^1.1.0" + safe-buffer "^5.0.1" + +dns-txt@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + dependencies: + buffer-indexof "^1.0.0" + +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +doctrine@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + dependencies: + esutils "^2.0.2" + +dom-converter@~0.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b" + dependencies: + utila "~0.3" + +dom-serializer@0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" + dependencies: + domelementtype "~1.1.1" + entities "~1.1.1" + +dom-urls@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/dom-urls/-/dom-urls-1.1.0.tgz#001ddf81628cd1e706125c7176f53ccec55d918e" + dependencies: + urijs "^1.16.1" + +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + +domelementtype@1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" + +domelementtype@~1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" + +domhandler@2.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594" + dependencies: + domelementtype "1" + +domutils@1.1: + version "1.1.6" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485" + dependencies: + domelementtype "1" + +domutils@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + dependencies: + dom-serializer "0" + domelementtype "1" + +dot-prop@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" + dependencies: + is-obj "^1.0.0" + +dotenv-expand@4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-4.2.0.tgz#def1f1ca5d6059d24a766e587942c21106ce1275" + +dotenv@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-4.0.0.tgz#864ef1379aced55ce6f95debecdce179f7a0cd1d" + +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + +duplexer@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + +ecc-jsbn@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" + dependencies: + jsbn "~0.1.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + +electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.30: + version "1.3.34" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.34.tgz#d93498f40391bb0c16a603d8241b9951404157ed" + +elliptic@^6.0.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + +emoji-regex@^6.1.0: + version "6.5.1" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.5.1.tgz#9baea929b155565c11ea41c6626eaa65cef992c2" + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + +encodeurl@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + +encoding@^0.1.11: + version "0.1.12" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" + dependencies: + iconv-lite "~0.4.13" + +enhanced-resolve@^3.4.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz#0421e339fd71419b3da13d129b3979040230476e" + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.4.0" + object-assign "^4.0.1" + tapable "^0.2.7" + +entities@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" + +errno@^0.1.3, errno@~0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + dependencies: + prr "~1.0.1" + +error-ex@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.7.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.10.0.tgz#1ecb36c197842a00d8ee4c2dfd8646bb97d60864" + dependencies: + es-to-primitive "^1.1.1" + function-bind "^1.1.1" + has "^1.0.1" + is-callable "^1.1.3" + is-regex "^1.0.4" + +es-to-primitive@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" + dependencies: + is-callable "^1.1.1" + is-date-object "^1.0.1" + is-symbol "^1.0.1" + +es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14: + version "0.10.39" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.39.tgz#fca21b67559277ca4ac1a1ed7048b107b6f76d87" + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.1" + +es6-iterator@^2.0.1, es6-iterator@~2.0.1, es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-map@^0.1.3: + version "0.1.5" + resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" + dependencies: + d "1" + es5-ext "~0.10.14" + es6-iterator "~2.0.1" + es6-set "~0.1.5" + es6-symbol "~3.1.1" + event-emitter "~0.3.5" + +es6-promise@^4.0.5: + version "4.2.4" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.4.tgz#dc4221c2b16518760bd8c39a52d8f356fc00ed29" + +es6-set@~0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" + dependencies: + d "1" + es5-ext "~0.10.14" + es6-iterator "~2.0.1" + es6-symbol "3.1.1" + event-emitter "~0.3.5" + +es6-symbol@3.1.1, es6-symbol@^3.1.1, es6-symbol@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" + dependencies: + d "1" + es5-ext "~0.10.14" + +es6-weak-map@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" + dependencies: + d "1" + es5-ext "^0.10.14" + es6-iterator "^2.0.1" + es6-symbol "^3.1.1" + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + +escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + +escodegen@^1.6.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.1.tgz#dbae17ef96c8e4bedb1356f4504fa4cc2f7cb7e2" + dependencies: + esprima "^3.1.3" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +escope@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" + dependencies: + es6-map "^0.1.3" + es6-weak-map "^2.0.1" + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-config-react-app@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-2.1.0.tgz#23c909f71cbaff76b945b831d2d814b8bde169eb" + +eslint-import-resolver-node@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a" + dependencies: + debug "^2.6.9" + resolve "^1.5.0" + +eslint-loader@1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-1.9.0.tgz#7e1be9feddca328d3dcfaef1ad49d5beffe83a13" + dependencies: + loader-fs-cache "^1.0.0" + loader-utils "^1.0.2" + object-assign "^4.0.1" + object-hash "^1.1.4" + rimraf "^2.6.1" + +eslint-module-utils@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz#abaec824177613b8a95b299639e1b6facf473449" + dependencies: + debug "^2.6.8" + pkg-dir "^1.0.0" + +eslint-plugin-flowtype@2.39.1: + version "2.39.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.39.1.tgz#b5624622a0388bcd969f4351131232dcb9649cd5" + dependencies: + lodash "^4.15.0" + +eslint-plugin-import@2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.8.0.tgz#fa1b6ef31fcb3c501c09859c1b86f1fc5b986894" + dependencies: + builtin-modules "^1.1.1" + contains-path "^0.1.0" + debug "^2.6.8" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.1" + eslint-module-utils "^2.1.1" + has "^1.0.1" + lodash.cond "^4.3.0" + minimatch "^3.0.3" + read-pkg-up "^2.0.0" + +eslint-plugin-jsx-a11y@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-5.1.1.tgz#5c96bb5186ca14e94db1095ff59b3e2bd94069b1" + dependencies: + aria-query "^0.7.0" + array-includes "^3.0.3" + ast-types-flow "0.0.7" + axobject-query "^0.1.0" + damerau-levenshtein "^1.0.0" + emoji-regex "^6.1.0" + jsx-ast-utils "^1.4.0" + +eslint-plugin-react@7.4.0: + version "7.4.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.4.0.tgz#300a95861b9729c087d362dd64abcc351a74364a" + dependencies: + doctrine "^2.0.0" + has "^1.0.1" + jsx-ast-utils "^2.0.0" + prop-types "^15.5.10" + +eslint-scope@^3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint@4.10.0: + version "4.10.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.10.0.tgz#f25d0d7955c81968c2309aa5c9a229e045176bb7" + dependencies: + ajv "^5.2.0" + babel-code-frame "^6.22.0" + chalk "^2.1.0" + concat-stream "^1.6.0" + cross-spawn "^5.1.0" + debug "^3.0.1" + doctrine "^2.0.0" + eslint-scope "^3.7.1" + espree "^3.5.1" + esquery "^1.0.0" + estraverse "^4.2.0" + esutils "^2.0.2" + file-entry-cache "^2.0.0" + functional-red-black-tree "^1.0.1" + glob "^7.1.2" + globals "^9.17.0" + ignore "^3.3.3" + imurmurhash "^0.1.4" + inquirer "^3.0.6" + is-resolvable "^1.0.0" + js-yaml "^3.9.1" + json-stable-stringify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.4" + minimatch "^3.0.2" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.2" + pluralize "^7.0.0" + progress "^2.0.0" + require-uncached "^1.0.3" + semver "^5.3.0" + strip-ansi "^4.0.0" + strip-json-comments "~2.0.1" + table "^4.0.1" + text-table "~0.2.0" + +espree@^3.5.1: + version "3.5.3" + resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.3.tgz#931e0af64e7fbbed26b050a29daad1fc64799fa6" + dependencies: + acorn "^5.4.0" + acorn-jsx "^3.0.0" + +esprima@^2.6.0: + version "2.7.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" + +esprima@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + +esprima@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" + +esquery@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa" + dependencies: + estraverse "^4.0.0" + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + dependencies: + estraverse "^4.1.0" + +estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + +esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + +event-emitter@~0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + dependencies: + d "1" + es5-ext "~0.10.14" + +eventemitter3@1.x.x: + version "1.2.0" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" + +events@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" + +eventsource@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232" + dependencies: + original ">=0.0.5" + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +exec-sh@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.1.tgz#163b98a6e89e6b65b47c2a28d215bc1f63989c38" + dependencies: + merge "^1.1.3" + +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + dependencies: + is-posix-bracket "^0.1.0" + +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + dependencies: + fill-range "^2.1.0" + +expand-tilde@^2.0.0, expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + dependencies: + homedir-polyfill "^1.0.1" + +express@^4.13.3: + version "4.16.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.16.2.tgz#e35c6dfe2d64b7dca0a5cd4f21781be3299e076c" + dependencies: + accepts "~1.3.4" + array-flatten "1.1.1" + body-parser "1.18.2" + content-disposition "0.5.2" + content-type "~1.0.4" + cookie "0.3.1" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.1" + encodeurl "~1.0.1" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.1.0" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.2" + path-to-regexp "0.1.7" + proxy-addr "~2.0.2" + qs "6.5.1" + range-parser "~1.2.0" + safe-buffer "5.1.1" + send "0.16.1" + serve-static "1.13.1" + setprototypeof "1.1.0" + statuses "~1.3.1" + type-is "~1.6.15" + utils-merge "1.0.1" + vary "~1.1.2" + +extend@~3.0.0, extend@~3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" + +external-editor@^2.0.4: + version "2.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.1.0.tgz#3d026a21b7f95b5726387d4200ac160d372c3b48" + dependencies: + chardet "^0.4.0" + iconv-lite "^0.4.17" + tmp "^0.0.33" + +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + dependencies: + is-extglob "^1.0.0" + +extract-text-webpack-plugin@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz#5f043eaa02f9750a9258b78c0a6e0dc1408fb2f7" + dependencies: + async "^2.4.1" + loader-utils "^1.1.0" + schema-utils "^0.3.0" + webpack-sources "^1.0.1" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + +fast-deep-equal@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" + +fast-json-stable-stringify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + +fast-levenshtein@~2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + +fastparse@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8" + +faye-websocket@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" + dependencies: + websocket-driver ">=0.5.1" + +faye-websocket@~0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38" + dependencies: + websocket-driver ">=0.5.1" + +fb-watchman@^1.8.0: + version "1.9.2" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-1.9.2.tgz#a24cf47827f82d38fb59a69ad70b76e3b6ae7383" + dependencies: + bser "1.0.2" + +fb-watchman@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58" + dependencies: + bser "^2.0.0" + +fbjs@^0.8.16: + version "0.8.16" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.16.tgz#5e67432f550dc41b572bf55847b8aca64e5337db" + dependencies: + core-js "^1.0.0" + isomorphic-fetch "^2.1.1" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.9" + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" + dependencies: + flat-cache "^1.2.1" + object-assign "^4.0.1" + +file-loader@1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-1.1.5.tgz#91c25b6b6fbe56dae99f10a425fd64933b5c9daa" + dependencies: + loader-utils "^1.0.2" + schema-utils "^0.3.0" + +filename-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + +fileset@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0" + dependencies: + glob "^7.0.3" + minimatch "^3.0.3" + +filesize@3.5.11: + version "3.5.11" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.5.11.tgz#1919326749433bb3cf77368bd158caabcc19e9ee" + +fill-range@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^1.1.3" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + +finalhandler@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5" + dependencies: + debug "2.6.9" + encodeurl "~1.0.1" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.2" + statuses "~1.3.1" + unpipe "~1.0.0" + +find-cache-dir@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" + dependencies: + commondir "^1.0.1" + mkdirp "^0.5.1" + pkg-dir "^1.0.0" + +find-cache-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" + dependencies: + commondir "^1.0.1" + make-dir "^1.0.0" + pkg-dir "^2.0.0" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + dependencies: + locate-path "^2.0.0" + +flat-cache@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481" + dependencies: + circular-json "^0.3.1" + del "^2.0.2" + graceful-fs "^4.1.2" + write "^0.2.1" + +flatten@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" + +for-in@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + +for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + dependencies: + for-in "^1.0.1" + +foreach@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + +form-data@~2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.12" + +form-data@~2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099" + dependencies: + asynckit "^0.4.0" + combined-stream "1.0.6" + mime-types "^2.1.12" + +forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + +fs-extra@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^3.0.0" + universalify "^0.1.0" + +fs-extra@^0.30.0: + version "0.30.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + path-is-absolute "^1.0.0" + rimraf "^2.2.8" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +fsevents@^1.0.0, fsevents@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz#11f82318f5fe7bb2cd22965a108e9306208216d8" + dependencies: + nan "^2.3.0" + node-pre-gyp "^0.6.39" + +fstream-ignore@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" + dependencies: + fstream "^1.0.0" + inherits "2" + minimatch "^3.0.0" + +fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: + version "1.0.11" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +function-bind@^1.0.2, function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +get-caller-file@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" + +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + dependencies: + assert-plus "^1.0.0" + +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + dependencies: + is-glob "^2.0.0" + +glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-dirs@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" + dependencies: + ini "^1.3.4" + +global-modules@1.0.0, global-modules@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + dependencies: + global-prefix "^1.0.1" + is-windows "^1.0.1" + resolve-dir "^1.0.0" + +global-prefix@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + dependencies: + expand-tilde "^2.0.2" + homedir-polyfill "^1.0.1" + ini "^1.3.4" + is-windows "^1.0.1" + which "^1.2.14" + +globals@^9.17.0, globals@^9.18.0: + version "9.18.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" + +globby@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" + dependencies: + array-union "^1.0.1" + arrify "^1.0.0" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +got@^6.7.1: + version "6.7.1" + resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" + dependencies: + create-error-class "^3.0.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + is-redirect "^1.0.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + lowercase-keys "^1.0.0" + safe-buffer "^5.0.1" + timed-out "^4.0.0" + unzip-response "^2.0.1" + url-parse-lax "^1.0.0" + +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: + version "4.1.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + +growly@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" + +gzip-size@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-3.0.0.tgz#546188e9bdc337f673772f81660464b389dce520" + dependencies: + duplexer "^0.1.1" + +handle-thing@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4" + +handlebars@^4.0.3: + version "4.0.11" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.11.tgz#630a35dfe0294bc281edae6ffc5d329fc7982dcc" + dependencies: + async "^1.4.0" + optimist "^0.6.1" + source-map "^0.4.4" + optionalDependencies: + uglify-js "^2.6" + +har-schema@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + +har-validator@~4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" + dependencies: + ajv "^4.9.1" + har-schema "^1.0.5" + +har-validator@~5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" + dependencies: + ajv "^5.1.0" + har-schema "^2.0.0" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + dependencies: + ansi-regex "^2.0.0" + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + +has-flag@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + +has@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" + dependencies: + function-bind "^1.0.2" + +hash-base@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1" + dependencies: + inherits "^2.0.1" + +hash-base@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.0" + +hawk@3.1.3, hawk@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" + dependencies: + boom "2.x.x" + cryptiles "2.x.x" + hoek "2.x.x" + sntp "1.x.x" + +hawk@~6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038" + dependencies: + boom "4.x.x" + cryptiles "3.x.x" + hoek "4.x.x" + sntp "2.x.x" + +he@1.1.x: + version "1.1.1" + resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" + +history@^4.7.2: + version "4.7.2" + resolved "https://registry.yarnpkg.com/history/-/history-4.7.2.tgz#22b5c7f31633c5b8021c7f4a8a954ac139ee8d5b" + dependencies: + invariant "^2.2.1" + loose-envify "^1.2.0" + resolve-pathname "^2.2.0" + value-equal "^0.4.0" + warning "^3.0.0" + +hmac-drbg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hoek@2.x.x: + version "2.16.3" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" + +hoek@4.x.x: + version "4.2.1" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb" + +hoist-non-react-statics@^2.3.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.0.tgz#d2ca2dfc19c5a91c5a6615ce8e564ef0347e2a40" + +home-or-tmp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.1" + +homedir-polyfill@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" + dependencies: + parse-passwd "^1.0.0" + +hosted-git-info@^2.1.4: + version "2.5.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +html-comment-regex@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e" + +html-encoding-sniffer@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" + dependencies: + whatwg-encoding "^1.0.1" + +html-entities@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" + +html-minifier@^3.2.3: + version "3.5.9" + resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.9.tgz#74424014b872598d4bb0e20ac420926ec61024b6" + dependencies: + camel-case "3.0.x" + clean-css "4.1.x" + commander "2.14.x" + he "1.1.x" + ncname "1.0.x" + param-case "2.1.x" + relateurl "0.2.x" + uglify-js "3.3.x" + +html-webpack-plugin@2.29.0: + version "2.29.0" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-2.29.0.tgz#e987f421853d3b6938c8c4c8171842e5fd17af23" + dependencies: + bluebird "^3.4.7" + html-minifier "^3.2.3" + loader-utils "^0.2.16" + lodash "^4.17.3" + pretty-error "^2.0.2" + toposort "^1.0.0" + +htmlparser2@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe" + dependencies: + domelementtype "1" + domhandler "2.1" + domutils "1.1" + readable-stream "1.0" + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + +http-errors@1.6.2, http-errors@~1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736" + dependencies: + depd "1.1.1" + inherits "2.0.3" + setprototypeof "1.0.3" + statuses ">= 1.3.1 < 2" + +http-parser-js@>=0.4.0: + version "0.4.10" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4" + +http-proxy-middleware@~0.17.4: + version "0.17.4" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz#642e8848851d66f09d4f124912846dbaeb41b833" + dependencies: + http-proxy "^1.16.2" + is-glob "^3.1.0" + lodash "^4.17.2" + micromatch "^2.3.11" + +http-proxy@^1.16.2: + version "1.16.2" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742" + dependencies: + eventemitter3 "1.x.x" + requires-port "1.x.x" + +http-signature@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" + dependencies: + assert-plus "^0.2.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + +iconv-lite@0.4.19, iconv-lite@^0.4.17, iconv-lite@~0.4.13: + version "0.4.19" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" + +icss-replace-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" + +icss-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-2.1.0.tgz#83f0a0ec378bf3246178b6c2ad9136f135b1c962" + dependencies: + postcss "^6.0.1" + +ieee754@^1.1.4: + version "1.1.8" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" + +ignore@^3.3.3: + version "3.3.7" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.7.tgz#612289bfb3c220e186a58118618d5be8c1bab021" + +import-lazy@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" + +import-local@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-0.1.1.tgz#b1179572aacdc11c6a91009fb430dbcab5f668a8" + dependencies: + pkg-dir "^2.0.0" + resolve-cwd "^2.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + dependencies: + repeating "^2.0.0" + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + +indexof@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + +ini@^1.3.4, ini@~1.3.0: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + +inquirer@3.3.0, inquirer@^3.0.6: + version "3.3.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.0.4" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rx-lite "^4.0.8" + rx-lite-aggregates "^4.0.8" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" + +internal-ip@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-1.2.0.tgz#ae9fbf93b984878785d50a8de1b356956058cf5c" + dependencies: + meow "^3.3.0" + +interpret@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" + +invariant@^2.2.1, invariant@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.3.tgz#1a827dfde7dcbd7c323f0ca826be8fa7c5e9d688" + dependencies: + loose-envify "^1.0.0" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + +ip@^1.1.0, ip@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + +ipaddr.js@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.6.0.tgz#e3fa357b773da619f26e95f049d055c72796f86b" + +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + dependencies: + binary-extensions "^1.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + +is-builtin-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + dependencies: + builtin-modules "^1.0.0" + +is-callable@^1.1.1, is-callable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" + +is-ci@^1.0.10: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.1.0.tgz#247e4162e7860cebbdaf30b774d6b0ac7dcfe7a5" + dependencies: + ci-info "^1.0.0" + +is-date-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + +is-dotfile@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + dependencies: + is-primitive "^2.0.0" + +is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + +is-extglob@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + dependencies: + is-extglob "^1.0.0" + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + dependencies: + is-extglob "^2.1.0" + +is-installed-globally@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" + dependencies: + global-dirs "^0.1.0" + is-path-inside "^1.0.0" + +is-npm@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" + +is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + dependencies: + kind-of "^3.0.2" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + dependencies: + kind-of "^3.0.2" + +is-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + +is-path-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" + +is-path-in-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc" + dependencies: + is-path-inside "^1.0.0" + +is-path-inside@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" + dependencies: + path-is-inside "^1.0.1" + +is-plain-obj@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + +is-promise@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + +is-redirect@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" + +is-regex@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + dependencies: + has "^1.0.1" + +is-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + +is-retry-allowed@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" + +is-root@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-root/-/is-root-1.0.0.tgz#07b6c233bc394cd9d02ba15c966bd6660d6342d5" + +is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + +is-svg@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9" + dependencies: + html-comment-regex "^1.1.0" + +is-symbol@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + +is-windows@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + dependencies: + isarray "1.0.0" + +isomorphic-fetch@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" + dependencies: + node-fetch "^1.0.1" + whatwg-fetch ">=0.10.0" + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + +istanbul-api@^1.1.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.2.2.tgz#e17cd519dd5ec4141197f246fdf380b75487f3b1" + dependencies: + async "^2.1.4" + fileset "^2.0.2" + istanbul-lib-coverage "^1.1.2" + istanbul-lib-hook "^1.1.0" + istanbul-lib-instrument "^1.9.2" + istanbul-lib-report "^1.1.3" + istanbul-lib-source-maps "^1.2.3" + istanbul-reports "^1.1.4" + js-yaml "^3.7.0" + mkdirp "^0.5.1" + once "^1.4.0" + +istanbul-lib-coverage@^1.0.1, istanbul-lib-coverage@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.2.tgz#4113c8ff6b7a40a1ef7350b01016331f63afde14" + +istanbul-lib-hook@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz#8538d970372cb3716d53e55523dd54b557a8d89b" + dependencies: + append-transform "^0.4.0" + +istanbul-lib-instrument@^1.4.2, istanbul-lib-instrument@^1.7.5, istanbul-lib-instrument@^1.9.2: + version "1.9.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.2.tgz#84905bf47f7e0b401d6b840da7bad67086b4aab6" + dependencies: + babel-generator "^6.18.0" + babel-template "^6.16.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + babylon "^6.18.0" + istanbul-lib-coverage "^1.1.2" + semver "^5.3.0" + +istanbul-lib-report@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.3.tgz#2df12188c0fa77990c0d2176d2d0ba3394188259" + dependencies: + istanbul-lib-coverage "^1.1.2" + mkdirp "^0.5.1" + path-parse "^1.0.5" + supports-color "^3.1.2" + +istanbul-lib-source-maps@^1.1.0, istanbul-lib-source-maps@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.3.tgz#20fb54b14e14b3fb6edb6aca3571fd2143db44e6" + dependencies: + debug "^3.1.0" + istanbul-lib-coverage "^1.1.2" + mkdirp "^0.5.1" + rimraf "^2.6.1" + source-map "^0.5.3" + +istanbul-reports@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.4.tgz#5ccba5e22b7b5a5d91d5e0a830f89be334bf97bd" + dependencies: + handlebars "^4.0.3" + +jest-changed-files@^20.0.3: + version "20.0.3" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-20.0.3.tgz#9394d5cc65c438406149bef1bf4d52b68e03e3f8" + +jest-cli@^20.0.4: + version "20.0.4" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-20.0.4.tgz#e532b19d88ae5bc6c417e8b0593a6fe954b1dc93" + dependencies: + ansi-escapes "^1.4.0" + callsites "^2.0.0" + chalk "^1.1.3" + graceful-fs "^4.1.11" + is-ci "^1.0.10" + istanbul-api "^1.1.1" + istanbul-lib-coverage "^1.0.1" + istanbul-lib-instrument "^1.4.2" + istanbul-lib-source-maps "^1.1.0" + jest-changed-files "^20.0.3" + jest-config "^20.0.4" + jest-docblock "^20.0.3" + jest-environment-jsdom "^20.0.3" + jest-haste-map "^20.0.4" + jest-jasmine2 "^20.0.4" + jest-message-util "^20.0.3" + jest-regex-util "^20.0.3" + jest-resolve-dependencies "^20.0.3" + jest-runtime "^20.0.4" + jest-snapshot "^20.0.3" + jest-util "^20.0.3" + micromatch "^2.3.11" + node-notifier "^5.0.2" + pify "^2.3.0" + slash "^1.0.0" + string-length "^1.0.1" + throat "^3.0.0" + which "^1.2.12" + worker-farm "^1.3.1" + yargs "^7.0.2" + +jest-config@^20.0.4: + version "20.0.4" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-20.0.4.tgz#e37930ab2217c913605eff13e7bd763ec48faeea" + dependencies: + chalk "^1.1.3" + glob "^7.1.1" + jest-environment-jsdom "^20.0.3" + jest-environment-node "^20.0.3" + jest-jasmine2 "^20.0.4" + jest-matcher-utils "^20.0.3" + jest-regex-util "^20.0.3" + jest-resolve "^20.0.4" + jest-validate "^20.0.3" + pretty-format "^20.0.3" + +jest-diff@^20.0.3: + version "20.0.3" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-20.0.3.tgz#81f288fd9e675f0fb23c75f1c2b19445fe586617" + dependencies: + chalk "^1.1.3" + diff "^3.2.0" + jest-matcher-utils "^20.0.3" + pretty-format "^20.0.3" + +jest-docblock@^20.0.3: + version "20.0.3" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-20.0.3.tgz#17bea984342cc33d83c50fbe1545ea0efaa44712" + +jest-environment-jsdom@^20.0.3: + version "20.0.3" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-20.0.3.tgz#048a8ac12ee225f7190417713834bb999787de99" + dependencies: + jest-mock "^20.0.3" + jest-util "^20.0.3" + jsdom "^9.12.0" + +jest-environment-node@^20.0.3: + version "20.0.3" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-20.0.3.tgz#d488bc4612af2c246e986e8ae7671a099163d403" + dependencies: + jest-mock "^20.0.3" + jest-util "^20.0.3" + +jest-haste-map@^20.0.4: + version "20.0.5" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-20.0.5.tgz#abad74efb1a005974a7b6517e11010709cab9112" + dependencies: + fb-watchman "^2.0.0" + graceful-fs "^4.1.11" + jest-docblock "^20.0.3" + micromatch "^2.3.11" + sane "~1.6.0" + worker-farm "^1.3.1" + +jest-jasmine2@^20.0.4: + version "20.0.4" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-20.0.4.tgz#fcc5b1411780d911d042902ef1859e852e60d5e1" + dependencies: + chalk "^1.1.3" + graceful-fs "^4.1.11" + jest-diff "^20.0.3" + jest-matcher-utils "^20.0.3" + jest-matchers "^20.0.3" + jest-message-util "^20.0.3" + jest-snapshot "^20.0.3" + once "^1.4.0" + p-map "^1.1.1" + +jest-matcher-utils@^20.0.3: + version "20.0.3" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-20.0.3.tgz#b3a6b8e37ca577803b0832a98b164f44b7815612" + dependencies: + chalk "^1.1.3" + pretty-format "^20.0.3" + +jest-matchers@^20.0.3: + version "20.0.3" + resolved "https://registry.yarnpkg.com/jest-matchers/-/jest-matchers-20.0.3.tgz#ca69db1c32db5a6f707fa5e0401abb55700dfd60" + dependencies: + jest-diff "^20.0.3" + jest-matcher-utils "^20.0.3" + jest-message-util "^20.0.3" + jest-regex-util "^20.0.3" + +jest-message-util@^20.0.3: + version "20.0.3" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-20.0.3.tgz#6aec2844306fcb0e6e74d5796c1006d96fdd831c" + dependencies: + chalk "^1.1.3" + micromatch "^2.3.11" + slash "^1.0.0" + +jest-mock@^20.0.3: + version "20.0.3" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-20.0.3.tgz#8bc070e90414aa155c11a8d64c869a0d5c71da59" + +jest-regex-util@^20.0.3: + version "20.0.3" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-20.0.3.tgz#85bbab5d133e44625b19faf8c6aa5122d085d762" + +jest-resolve-dependencies@^20.0.3: + version "20.0.3" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-20.0.3.tgz#6e14a7b717af0f2cb3667c549de40af017b1723a" + dependencies: + jest-regex-util "^20.0.3" + +jest-resolve@^20.0.4: + version "20.0.4" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-20.0.4.tgz#9448b3e8b6bafc15479444c6499045b7ffe597a5" + dependencies: + browser-resolve "^1.11.2" + is-builtin-module "^1.0.0" + resolve "^1.3.2" + +jest-runtime@^20.0.4: + version "20.0.4" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-20.0.4.tgz#a2c802219c4203f754df1404e490186169d124d8" + dependencies: + babel-core "^6.0.0" + babel-jest "^20.0.3" + babel-plugin-istanbul "^4.0.0" + chalk "^1.1.3" + convert-source-map "^1.4.0" + graceful-fs "^4.1.11" + jest-config "^20.0.4" + jest-haste-map "^20.0.4" + jest-regex-util "^20.0.3" + jest-resolve "^20.0.4" + jest-util "^20.0.3" + json-stable-stringify "^1.0.1" + micromatch "^2.3.11" + strip-bom "3.0.0" + yargs "^7.0.2" + +jest-snapshot@^20.0.3: + version "20.0.3" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-20.0.3.tgz#5b847e1adb1a4d90852a7f9f125086e187c76566" + dependencies: + chalk "^1.1.3" + jest-diff "^20.0.3" + jest-matcher-utils "^20.0.3" + jest-util "^20.0.3" + natural-compare "^1.4.0" + pretty-format "^20.0.3" + +jest-util@^20.0.3: + version "20.0.3" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-20.0.3.tgz#0c07f7d80d82f4e5a67c6f8b9c3fe7f65cfd32ad" + dependencies: + chalk "^1.1.3" + graceful-fs "^4.1.11" + jest-message-util "^20.0.3" + jest-mock "^20.0.3" + jest-validate "^20.0.3" + leven "^2.1.0" + mkdirp "^0.5.1" + +jest-validate@^20.0.3: + version "20.0.3" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-20.0.3.tgz#d0cfd1de4f579f298484925c280f8f1d94ec3cab" + dependencies: + chalk "^1.1.3" + jest-matcher-utils "^20.0.3" + leven "^2.1.0" + pretty-format "^20.0.3" + +jest@20.0.4: + version "20.0.4" + resolved "https://registry.yarnpkg.com/jest/-/jest-20.0.4.tgz#3dd260c2989d6dad678b1e9cc4d91944f6d602ac" + dependencies: + jest-cli "^20.0.4" + +js-base64@^2.1.9: + version "2.4.3" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.3.tgz#2e545ec2b0f2957f41356510205214e98fad6582" + +js-tokens@^3.0.0, js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + +js-yaml@^3.4.3, js-yaml@^3.7.0, js-yaml@^3.9.1: + version "3.10.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@~3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" + dependencies: + argparse "^1.0.7" + esprima "^2.6.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + +jsdom@^9.12.0: + version "9.12.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-9.12.0.tgz#e8c546fffcb06c00d4833ca84410fed7f8a097d4" + dependencies: + abab "^1.0.3" + acorn "^4.0.4" + acorn-globals "^3.1.0" + array-equal "^1.0.0" + content-type-parser "^1.0.1" + cssom ">= 0.3.2 < 0.4.0" + cssstyle ">= 0.2.37 < 0.3.0" + escodegen "^1.6.1" + html-encoding-sniffer "^1.0.1" + nwmatcher ">= 1.3.9 < 2.0.0" + parse5 "^1.5.1" + request "^2.79.0" + sax "^1.2.1" + symbol-tree "^3.2.1" + tough-cookie "^2.3.2" + webidl-conversions "^4.0.0" + whatwg-encoding "^1.0.1" + whatwg-url "^4.3.0" + xml-name-validator "^2.0.1" + +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + +json-loader@^0.5.4: + version "0.5.7" + resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d" + +json-schema-traverse@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + +json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + dependencies: + jsonify "~0.0.0" + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + +json3@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" + +json5@^0.5.0, json5@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + +jsonfile@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.1.tgz#a5ecc6f65f53f662c4415c7675a0331d0992ec66" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +jsx-ast-utils@^1.4.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz#3867213e8dd79bf1e8f2300c0cfc1efb182c0df1" + +jsx-ast-utils@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz#e801b1b39985e20fffc87b40e3748080e2dcac7f" + dependencies: + array-includes "^3.0.3" + +killable@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.0.tgz#da8b84bd47de5395878f95d64d02f2449fe05e6b" + +kind-of@^3.0.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + dependencies: + is-buffer "^1.1.5" + +klaw@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" + optionalDependencies: + graceful-fs "^4.1.9" + +latest-version@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" + dependencies: + package-json "^4.0.0" + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + dependencies: + invert-kv "^1.0.0" + +leven@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" + +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +loader-fs-cache@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/loader-fs-cache/-/loader-fs-cache-1.0.1.tgz#56e0bf08bd9708b26a765b68509840c8dec9fdbc" + dependencies: + find-cache-dir "^0.1.1" + mkdirp "0.5.1" + +loader-runner@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" + +loader-utils@^0.2.16: + version "0.2.17" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + object-assign "^4.0.1" + +loader-utils@^1.0.2, loader-utils@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +lodash._reinterpolate@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + +lodash.cond@^4.3.0: + version "4.5.2" + resolved "https://registry.yarnpkg.com/lodash.cond/-/lodash.cond-4.5.2.tgz#f471a1da486be60f6ab955d17115523dd1d255d5" + +lodash.defaults@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + +lodash.template@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.4.0.tgz#e73a0385c8355591746e020b99679c690e68fba0" + dependencies: + lodash._reinterpolate "~3.0.0" + lodash.templatesettings "^4.0.0" + +lodash.templatesettings@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz#2b4d4e95ba440d915ff08bc899e4553666713316" + dependencies: + lodash._reinterpolate "~3.0.0" + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + +"lodash@>=3.5 <5", lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.3.0: + version "4.17.5" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" + +loglevel@^1.4.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" + +longest@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" + dependencies: + js-tokens "^3.0.0" + +loud-rejection@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" + +lower-case@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" + +lowercase-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" + +lru-cache@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55" + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +macaddress@^0.2.8: + version "0.2.8" + resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12" + +make-dir@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.2.0.tgz#6d6a49eead4aae296c53bbf3a1a008bd6c89469b" + dependencies: + pify "^3.0.0" + +makeerror@1.0.x: + version "1.0.11" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" + dependencies: + tmpl "1.0.x" + +map-obj@^1.0.0, map-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + +math-expression-evaluator@^1.2.14: + version "1.2.17" + resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac" + +md5.js@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d" + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + +mem@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + dependencies: + mimic-fn "^1.0.0" + +memory-fs@^0.4.0, memory-fs@~0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +meow@^3.3.0, meow@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + dependencies: + camelcase-keys "^2.0.0" + decamelize "^1.1.2" + loud-rejection "^1.0.0" + map-obj "^1.0.1" + minimist "^1.1.3" + normalize-package-data "^2.3.4" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + +merge@^1.1.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + +micromatch@^2.1.5, micromatch@^2.3.11: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +"mime-db@>= 1.33.0 < 2", mime-db@~1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" + +mime-types@^2.1.12, mime-types@~2.1.16, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.7: + version "2.1.18" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" + dependencies: + mime-db "~1.33.0" + +mime@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" + +mime@^1.4.1, mime@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + +minimalistic-assert@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" + +minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + +minimatch@3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" + dependencies: + brace-expansion "^1.0.0" + +minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + +minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + +minimist@~0.0.1: + version "0.0.10" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + +mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + dependencies: + minimist "0.0.8" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + +multicast-dns-service-types@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + +multicast-dns@^6.0.1: + version "6.2.3" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" + dependencies: + dns-packet "^1.3.1" + thunky "^1.0.2" + +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + +nan@^2.3.0: + version "2.9.2" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.9.2.tgz#f564d75f5f8f36a6d9456cca7a6c4fe488ab7866" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + +ncname@1.0.x: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ncname/-/ncname-1.0.0.tgz#5b57ad18b1ca092864ef62b0b1ed8194f383b71c" + dependencies: + xml-char-classes "^1.0.0" + +negotiator@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" + +no-case@^2.2.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" + dependencies: + lower-case "^1.1.1" + +node-fetch@^1.0.1: + version "1.7.3" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" + dependencies: + encoding "^0.1.11" + is-stream "^1.0.1" + +node-forge@0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.1.tgz#9da611ea08982f4b94206b3beb4cc9665f20c300" + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + +node-libs-browser@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz#5f94263d404f6e44767d726901fff05478d600df" + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^1.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.0" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.10.3" + vm-browserify "0.0.4" + +node-notifier@^5.0.2: + version "5.2.1" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.2.1.tgz#fa313dd08f5517db0e2502e5758d664ac69f9dea" + dependencies: + growly "^1.3.0" + semver "^5.4.1" + shellwords "^0.1.1" + which "^1.3.0" + +node-pre-gyp@^0.6.39: + version "0.6.39" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649" + dependencies: + detect-libc "^1.0.2" + hawk "3.1.3" + mkdirp "^0.5.1" + nopt "^4.0.1" + npmlog "^4.0.2" + rc "^1.1.7" + request "2.81.0" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^2.2.1" + tar-pack "^3.4.0" + +nopt@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + dependencies: + abbrev "1" + osenv "^0.1.4" + +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: + version "2.4.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" + dependencies: + hosted-git-info "^2.1.4" + is-builtin-module "^1.0.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.0.0, normalize-path@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + +normalize-url@^1.4.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + dependencies: + path-key "^2.0.0" + +npmlog@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +nth-check@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4" + dependencies: + boolbase "~1.0.0" + +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + +"nwmatcher@>= 1.3.9 < 2.0.0": + version "1.4.3" + resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.3.tgz#64348e3b3d80f035b40ac11563d278f8b72db89c" + +oauth-sign@~0.8.1, oauth-sign@~0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" + +object-assign@4.1.1, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + +object-hash@^1.1.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.2.0.tgz#e96af0e96981996a1d47f88ead8f74f1ebc4422b" + +object-keys@^1.0.8: + version "1.0.11" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" + +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + +obuf@^1.0.0, obuf@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.1.tgz#104124b6c602c6796881a042541d36db43a5264e" + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" + +once@^1.3.0, once@^1.3.3, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + dependencies: + mimic-fn "^1.0.0" + +opn@5.2.0, opn@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.2.0.tgz#71fdf934d6827d676cecbea1531f95d354641225" + dependencies: + is-wsl "^1.1.0" + +optimist@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + dependencies: + minimist "~0.0.1" + wordwrap "~0.0.2" + +optionator@^0.8.1, optionator@^0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.4" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + wordwrap "~1.0.0" + +original@>=0.0.5: + version "1.0.0" + resolved "https://registry.yarnpkg.com/original/-/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b" + dependencies: + url-parse "1.0.x" + +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + +os-homedir@^1.0.0, os-homedir@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + dependencies: + lcid "^1.0.0" + +os-locale@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" + dependencies: + execa "^0.7.0" + lcid "^1.0.0" + mem "^1.1.0" + +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + +osenv@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + +p-limit@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.2.0.tgz#0e92b6bedcb59f022c13d0f1949dc82d15909f1c" + dependencies: + p-try "^1.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + dependencies: + p-limit "^1.1.0" + +p-map@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + +package-json@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" + dependencies: + got "^6.7.1" + registry-auth-token "^3.0.1" + registry-url "^3.0.3" + semver "^5.1.0" + +pako@~1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258" + +param-case@2.1.x: + version "2.1.1" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" + dependencies: + no-case "^2.2.0" + +parse-asn1@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712" + dependencies: + asn1.js "^4.0.0" + browserify-aes "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + dependencies: + error-ex "^1.2.0" + +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + +parse5@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94" + +parseurl@~1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" + +path-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + dependencies: + pinkie-promise "^2.0.0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + +path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +path-is-inside@^1.0.1, path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + +path-key@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + +path-parse@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + +path-to-regexp@^1.0.1, path-to-regexp@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d" + dependencies: + isarray "0.0.1" + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + dependencies: + pify "^2.0.0" + +pbkdf2@^3.0.3: + version "3.0.14" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.14.tgz#a35e13c64799b06ce15320f459c230e68e73bade" + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +performance-now@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + +pify@^2.0.0, pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + +pkg-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" + dependencies: + find-up "^1.0.0" + +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + dependencies: + find-up "^2.1.0" + +pluralize@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" + +portfinder@^1.0.9: + version "1.0.13" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9" + dependencies: + async "^1.5.2" + debug "^2.2.0" + mkdirp "0.5.x" + +postcss-calc@^5.2.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e" + dependencies: + postcss "^5.0.2" + postcss-message-helpers "^2.0.0" + reduce-css-calc "^1.2.6" + +postcss-colormin@^2.1.8: + version "2.2.2" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b" + dependencies: + colormin "^1.0.5" + postcss "^5.0.13" + postcss-value-parser "^3.2.3" + +postcss-convert-values@^2.3.4: + version "2.6.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d" + dependencies: + postcss "^5.0.11" + postcss-value-parser "^3.1.2" + +postcss-discard-comments@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d" + dependencies: + postcss "^5.0.14" + +postcss-discard-duplicates@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932" + dependencies: + postcss "^5.0.4" + +postcss-discard-empty@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5" + dependencies: + postcss "^5.0.14" + +postcss-discard-overridden@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58" + dependencies: + postcss "^5.0.16" + +postcss-discard-unused@^2.2.1: + version "2.2.3" + resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433" + dependencies: + postcss "^5.0.14" + uniqs "^2.0.0" + +postcss-filter-plugins@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz#6d85862534d735ac420e4a85806e1f5d4286d84c" + dependencies: + postcss "^5.0.4" + uniqid "^4.0.0" + +postcss-flexbugs-fixes@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-3.2.0.tgz#9b8b932c53f9cf13ba0f61875303e447c33dcc51" + dependencies: + postcss "^6.0.1" + +postcss-load-config@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-1.2.0.tgz#539e9afc9ddc8620121ebf9d8c3673e0ce50d28a" + dependencies: + cosmiconfig "^2.1.0" + object-assign "^4.1.0" + postcss-load-options "^1.2.0" + postcss-load-plugins "^2.3.0" + +postcss-load-options@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/postcss-load-options/-/postcss-load-options-1.2.0.tgz#b098b1559ddac2df04bc0bb375f99a5cfe2b6d8c" + dependencies: + cosmiconfig "^2.1.0" + object-assign "^4.1.0" + +postcss-load-plugins@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz#745768116599aca2f009fad426b00175049d8d92" + dependencies: + cosmiconfig "^2.1.1" + object-assign "^4.1.0" + +postcss-loader@2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-2.0.8.tgz#8c67ddb029407dfafe684a406cfc16bad2ce0814" + dependencies: + loader-utils "^1.1.0" + postcss "^6.0.0" + postcss-load-config "^1.2.0" + schema-utils "^0.3.0" + +postcss-merge-idents@^2.1.5: + version "2.1.7" + resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270" + dependencies: + has "^1.0.1" + postcss "^5.0.10" + postcss-value-parser "^3.1.1" + +postcss-merge-longhand@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658" + dependencies: + postcss "^5.0.4" + +postcss-merge-rules@^2.0.3: + version "2.1.2" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721" + dependencies: + browserslist "^1.5.2" + caniuse-api "^1.5.2" + postcss "^5.0.4" + postcss-selector-parser "^2.2.2" + vendors "^1.0.0" + +postcss-message-helpers@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e" + +postcss-minify-font-values@^1.0.2: + version "1.0.5" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69" + dependencies: + object-assign "^4.0.1" + postcss "^5.0.4" + postcss-value-parser "^3.0.2" + +postcss-minify-gradients@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1" + dependencies: + postcss "^5.0.12" + postcss-value-parser "^3.3.0" + +postcss-minify-params@^1.0.4: + version "1.2.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3" + dependencies: + alphanum-sort "^1.0.1" + postcss "^5.0.2" + postcss-value-parser "^3.0.2" + uniqs "^2.0.0" + +postcss-minify-selectors@^2.0.4: + version "2.1.1" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf" + dependencies: + alphanum-sort "^1.0.2" + has "^1.0.1" + postcss "^5.0.14" + postcss-selector-parser "^2.0.0" + +postcss-modules-extract-imports@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz#b614c9720be6816eaee35fb3a5faa1dba6a05ddb" + dependencies: + postcss "^6.0.1" + +postcss-modules-local-by-default@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069" + dependencies: + css-selector-tokenizer "^0.7.0" + postcss "^6.0.1" + +postcss-modules-scope@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90" + dependencies: + css-selector-tokenizer "^0.7.0" + postcss "^6.0.1" + +postcss-modules-values@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20" + dependencies: + icss-replace-symbols "^1.1.0" + postcss "^6.0.1" + +postcss-normalize-charset@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1" + dependencies: + postcss "^5.0.5" + +postcss-normalize-url@^3.0.7: + version "3.0.8" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222" + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^1.4.0" + postcss "^5.0.14" + postcss-value-parser "^3.2.3" + +postcss-ordered-values@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d" + dependencies: + postcss "^5.0.4" + postcss-value-parser "^3.0.1" + +postcss-reduce-idents@^2.2.2: + version "2.4.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3" + dependencies: + postcss "^5.0.4" + postcss-value-parser "^3.0.2" + +postcss-reduce-initial@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea" + dependencies: + postcss "^5.0.4" + +postcss-reduce-transforms@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1" + dependencies: + has "^1.0.1" + postcss "^5.0.8" + postcss-value-parser "^3.0.1" + +postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90" + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-svgo@^2.1.1: + version "2.1.6" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d" + dependencies: + is-svg "^2.0.0" + postcss "^5.0.14" + postcss-value-parser "^3.2.3" + svgo "^0.7.0" + +postcss-unique-selectors@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d" + dependencies: + alphanum-sort "^1.0.1" + postcss "^5.0.4" + uniqs "^2.0.0" + +postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15" + +postcss-zindex@^2.0.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22" + dependencies: + has "^1.0.1" + postcss "^5.0.4" + uniqs "^2.0.0" + +postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.16: + version "5.2.18" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" + dependencies: + chalk "^1.1.3" + js-base64 "^2.1.9" + source-map "^0.5.6" + supports-color "^3.2.3" + +postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.13: + version "6.0.19" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.19.tgz#76a78386f670b9d9494a655bf23ac012effd1555" + dependencies: + chalk "^2.3.1" + source-map "^0.6.1" + supports-color "^5.2.0" + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + +prepend-http@^1.0.0, prepend-http@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + +pretty-bytes@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9" + +pretty-error@^2.0.2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" + dependencies: + renderkid "^2.0.1" + utila "~0.4" + +pretty-format@^20.0.3: + version "20.0.3" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-20.0.3.tgz#020e350a560a1fe1a98dc3beb6ccffb386de8b14" + dependencies: + ansi-regex "^2.1.1" + ansi-styles "^3.0.0" + +private@^0.1.6, private@^0.1.7: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + +process-nextick-args@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + +progress@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" + +promise@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-8.0.1.tgz#e45d68b00a17647b6da711bf85ed6ed47208f450" + dependencies: + asap "~2.0.3" + +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + dependencies: + asap "~2.0.3" + +prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.6.0: + version "15.6.0" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.0.tgz#ceaf083022fc46b4a35f69e13ef75aed0d639856" + dependencies: + fbjs "^0.8.16" + loose-envify "^1.3.1" + object-assign "^4.1.1" + +proxy-addr@~2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.3.tgz#355f262505a621646b3130a728eb647e22055341" + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.6.0" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + +public-encrypt@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6" + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + +punycode@^1.2.4, punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + +q@^1.1.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + +qs@6.5.1, qs@~6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" + +qs@~6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" + +query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" + dependencies: + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + +querystringify@0.0.x: + version "0.0.4" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c" + +querystringify@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-1.0.0.tgz#6286242112c5b712fa654e526652bf6a13ff05cb" + +raf@3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.0.tgz#a28876881b4bc2ca9117d4138163ddb80f781575" + dependencies: + performance-now "^2.1.0" + +randomatic@^1.1.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80" + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +range-parser@^1.0.3, range-parser@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" + +raw-body@2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89" + dependencies: + bytes "3.0.0" + http-errors "1.6.2" + iconv-lite "0.4.19" + unpipe "1.0.0" + +rc@^1.0.1, rc@^1.1.6, rc@^1.1.7: + version "1.2.5" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.5.tgz#275cd687f6e3b36cc756baa26dfee80a790301fd" + dependencies: + deep-extend "~0.4.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +react-dev-utils@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-5.0.0.tgz#425ac7c9c40c2603bc4f7ab8836c1406e96bb473" + dependencies: + address "1.0.3" + babel-code-frame "6.26.0" + chalk "1.1.3" + cross-spawn "5.1.0" + detect-port-alt "1.1.5" + escape-string-regexp "1.0.5" + filesize "3.5.11" + global-modules "1.0.0" + gzip-size "3.0.0" + inquirer "3.3.0" + is-root "1.0.0" + opn "5.2.0" + react-error-overlay "^4.0.0" + recursive-readdir "2.2.1" + shell-quote "1.6.1" + sockjs-client "1.1.4" + strip-ansi "3.0.1" + text-table "0.2.0" + +react-dom@^16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.2.0.tgz#69003178601c0ca19b709b33a83369fe6124c044" + dependencies: + fbjs "^0.8.16" + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.0" + +react-error-overlay@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-4.0.0.tgz#d198408a85b4070937a98667f500c832f86bd5d4" + +react-router-dom@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-4.2.2.tgz#c8a81df3adc58bba8a76782e946cbd4eae649b8d" + dependencies: + history "^4.7.2" + invariant "^2.2.2" + loose-envify "^1.3.1" + prop-types "^15.5.4" + react-router "^4.2.0" + warning "^3.0.0" + +react-router@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-4.2.0.tgz#61f7b3e3770daeb24062dae3eedef1b054155986" + dependencies: + history "^4.7.2" + hoist-non-react-statics "^2.3.0" + invariant "^2.2.2" + loose-envify "^1.3.1" + path-to-regexp "^1.7.0" + prop-types "^15.5.4" + warning "^3.0.0" + +react-scripts@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-1.1.1.tgz#279d449f7311fed910506987a1ade014027788a8" + dependencies: + autoprefixer "7.1.6" + babel-core "6.26.0" + babel-eslint "7.2.3" + babel-jest "20.0.3" + babel-loader "7.1.2" + babel-preset-react-app "^3.1.1" + babel-runtime "6.26.0" + case-sensitive-paths-webpack-plugin "2.1.1" + chalk "1.1.3" + css-loader "0.28.7" + dotenv "4.0.0" + dotenv-expand "4.2.0" + eslint "4.10.0" + eslint-config-react-app "^2.1.0" + eslint-loader "1.9.0" + eslint-plugin-flowtype "2.39.1" + eslint-plugin-import "2.8.0" + eslint-plugin-jsx-a11y "5.1.1" + eslint-plugin-react "7.4.0" + extract-text-webpack-plugin "3.0.2" + file-loader "1.1.5" + fs-extra "3.0.1" + html-webpack-plugin "2.29.0" + jest "20.0.4" + object-assign "4.1.1" + postcss-flexbugs-fixes "3.2.0" + postcss-loader "2.0.8" + promise "8.0.1" + raf "3.4.0" + react-dev-utils "^5.0.0" + style-loader "0.19.0" + sw-precache-webpack-plugin "0.11.4" + url-loader "0.6.2" + webpack "3.8.1" + webpack-dev-server "2.9.4" + webpack-manifest-plugin "1.3.2" + whatwg-fetch "2.0.3" + optionalDependencies: + fsevents "^1.1.3" + +react@^16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/react/-/react-16.2.0.tgz#a31bd2dab89bff65d42134fa187f24d054c273ba" + dependencies: + fbjs "^0.8.16" + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.0" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +readable-stream@1.0: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.3: + version "2.3.4" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.4.tgz#c946c3f47fa7d8eabc0b6150f4a12f69a4574071" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.0.3" + util-deprecate "~1.0.1" + +readdirp@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" + dependencies: + graceful-fs "^4.1.2" + minimatch "^3.0.2" + readable-stream "^2.0.2" + set-immediate-shim "^1.0.1" + +recursive-readdir@2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.1.tgz#90ef231d0778c5ce093c9a48d74e5c5422d13a99" + dependencies: + minimatch "3.0.3" + +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + dependencies: + indent-string "^2.1.0" + strip-indent "^1.0.1" + +reduce-css-calc@^1.2.6: + version "1.3.0" + resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716" + dependencies: + balanced-match "^0.4.2" + math-expression-evaluator "^1.2.14" + reduce-function-call "^1.0.1" + +reduce-function-call@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99" + dependencies: + balanced-match "^0.4.2" + +regenerate@^1.2.1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f" + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + +regenerator-transform@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" + dependencies: + babel-runtime "^6.18.0" + babel-types "^6.19.0" + private "^0.1.6" + +regex-cache@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" + dependencies: + is-equal-shallow "^0.1.3" + +regexpu-core@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +regexpu-core@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +registry-auth-token@^3.0.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.2.tgz#851fd49038eecb586911115af845260eec983f20" + dependencies: + rc "^1.1.6" + safe-buffer "^5.0.1" + +registry-url@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" + dependencies: + rc "^1.0.1" + +regjsgen@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" + +regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + dependencies: + jsesc "~0.5.0" + +relateurl@0.2.x: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + +renderkid@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.1.tgz#898cabfc8bede4b7b91135a3ffd323e58c0db319" + dependencies: + css-select "^1.1.0" + dom-converter "~0.1" + htmlparser2 "~3.3.0" + strip-ansi "^3.0.0" + utila "~0.3" + +repeat-element@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" + +repeat-string@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + dependencies: + is-finite "^1.0.0" + +request@2.81.0: + version "2.81.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~4.2.1" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + oauth-sign "~0.8.1" + performance-now "^0.2.0" + qs "~6.4.0" + safe-buffer "^5.0.1" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "^0.6.0" + uuid "^3.0.0" + +request@^2.79.0: + version "2.83.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356" + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.6.0" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.1" + forever-agent "~0.6.1" + form-data "~2.3.1" + har-validator "~5.0.3" + hawk "~6.0.2" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.17" + oauth-sign "~0.8.2" + performance-now "^2.1.0" + qs "~6.5.1" + safe-buffer "^5.1.1" + stringstream "~0.0.5" + tough-cookie "~2.3.3" + tunnel-agent "^0.6.0" + uuid "^3.1.0" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + +require-from-string@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418" + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + +require-uncached@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" + dependencies: + caller-path "^0.1.0" + resolve-from "^1.0.0" + +requires-port@1.0.x, requires-port@1.x.x, requires-port@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + dependencies: + resolve-from "^3.0.0" + +resolve-dir@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + dependencies: + expand-tilde "^2.0.0" + global-modules "^1.0.0" + +resolve-from@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + +resolve-pathname@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-2.2.0.tgz#7e9ae21ed815fd63ab189adeee64dc831eefa879" + +resolve@1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + +resolve@^1.3.2, resolve@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36" + dependencies: + path-parse "^1.0.5" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +right-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" + dependencies: + align-text "^0.1.1" + +rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.6.1: + version "2.6.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" + dependencies: + glob "^7.0.5" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7" + dependencies: + hash-base "^2.0.0" + inherits "^2.0.1" + +run-async@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" + dependencies: + is-promise "^2.1.0" + +rx-lite-aggregates@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" + dependencies: + rx-lite "*" + +rx-lite@*, rx-lite@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" + +safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" + +sane@~1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/sane/-/sane-1.6.0.tgz#9610c452307a135d29c1fdfe2547034180c46775" + dependencies: + anymatch "^1.3.0" + exec-sh "^0.2.0" + fb-watchman "^1.8.0" + minimatch "^3.0.2" + minimist "^1.1.1" + walker "~1.0.5" + watch "~0.10.0" + +sax@^1.2.1, sax@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + +schema-utils@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.3.0.tgz#f5877222ce3e931edae039f17eb3716e7137f8cf" + dependencies: + ajv "^5.0.0" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + +selfsigned@^1.9.1: + version "1.10.2" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.2.tgz#b4449580d99929b65b10a48389301a6592088758" + dependencies: + node-forge "0.7.1" + +semver-diff@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" + dependencies: + semver "^5.0.3" + +"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1: + version "5.5.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" + +send@0.16.1: + version "0.16.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.16.1.tgz#a70e1ca21d1382c11d0d9f6231deb281080d7ab3" + dependencies: + debug "2.6.9" + depd "~1.1.1" + destroy "~1.0.4" + encodeurl "~1.0.1" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.6.2" + mime "1.4.1" + ms "2.0.0" + on-finished "~2.3.0" + range-parser "~1.2.0" + statuses "~1.3.1" + +serve-index@^1.7.2: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.13.1: + version "1.13.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.1.tgz#4c57d53404a761d8f2e7c1e8a18a47dbf278a719" + dependencies: + encodeurl "~1.0.1" + escape-html "~1.0.3" + parseurl "~1.3.2" + send "0.16.1" + +serviceworker-cache-polyfill@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/serviceworker-cache-polyfill/-/serviceworker-cache-polyfill-4.0.0.tgz#de19ee73bef21ab3c0740a37b33db62464babdeb" + +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + +set-immediate-shim@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + +setimmediate@^1.0.4, setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + +setprototypeof@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.10" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.10.tgz#b1fde5cd7d11a5626638a07c604ab909cfa31f9b" + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + +shell-quote@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" + dependencies: + array-filter "~0.0.0" + array-map "~0.0.0" + array-reduce "~0.0.0" + jsonify "~0.0.0" + +shellwords@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + +slice-ansi@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" + dependencies: + is-fullwidth-code-point "^2.0.0" + +sntp@1.x.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" + dependencies: + hoek "2.x.x" + +sntp@2.x.x: + version "2.1.0" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8" + dependencies: + hoek "4.x.x" + +sockjs-client@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.4.tgz#5babe386b775e4cf14e7520911452654016c8b12" + dependencies: + debug "^2.6.6" + eventsource "0.1.6" + faye-websocket "~0.11.0" + inherits "^2.0.1" + json3 "^3.3.2" + url-parse "^1.1.8" + +sockjs@0.3.18: + version "0.3.18" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.18.tgz#d9b289316ca7df77595ef299e075f0f937eb4207" + dependencies: + faye-websocket "^0.10.0" + uuid "^2.0.2" + +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + dependencies: + is-plain-obj "^1.0.0" + +source-list-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085" + +source-map-support@^0.4.15: + version "0.4.18" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" + dependencies: + source-map "^0.5.6" + +source-map@0.5.x, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + +source-map@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + dependencies: + amdefine ">=0.0.4" + +source-map@^0.6.1, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + +spdx-correct@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" + dependencies: + spdx-license-ids "^1.0.2" + +spdx-expression-parse@~1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" + +spdx-license-ids@^1.0.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" + +spdy-transport@^2.0.18: + version "2.0.20" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.0.20.tgz#735e72054c486b2354fe89e702256004a39ace4d" + dependencies: + debug "^2.6.8" + detect-node "^2.0.3" + hpack.js "^2.1.6" + obuf "^1.1.1" + readable-stream "^2.2.9" + safe-buffer "^5.0.1" + wbuf "^1.7.2" + +spdy@^3.4.1: + version "3.4.7" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-3.4.7.tgz#42ff41ece5cc0f99a3a6c28aabb73f5c3b03acbc" + dependencies: + debug "^2.6.8" + handle-thing "^1.2.5" + http-deceiver "^1.2.7" + safe-buffer "^5.0.1" + select-hose "^2.0.0" + spdy-transport "^2.0.18" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + +sshpk@^1.7.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + dashdash "^1.12.0" + getpass "^0.1.1" + optionalDependencies: + bcrypt-pbkdf "^1.0.0" + ecc-jsbn "~0.1.1" + jsbn "~0.1.0" + tweetnacl "~0.14.0" + +"statuses@>= 1.3.1 < 2": + version "1.4.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" + +statuses@~1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" + +stream-browserify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-http@^2.7.2: + version "2.8.0" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.0.tgz#fd86546dac9b1c91aff8fc5d287b98fafb41bc10" + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.3" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + +string-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-1.0.1.tgz#56970fb1c38558e9e70b728bf3de269ac45adfac" + dependencies: + strip-ansi "^3.0.0" + +string-width@^1.0.1, string-width@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string_decoder@^1.0.0, string_decoder@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" + dependencies: + safe-buffer "~5.1.0" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + +stringstream@~0.0.4, stringstream@~0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" + +strip-ansi@3.0.1, strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + dependencies: + ansi-regex "^3.0.0" + +strip-bom@3.0.0, strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + dependencies: + is-utf8 "^0.2.0" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + +strip-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + dependencies: + get-stdin "^4.0.1" + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + +style-loader@0.19.0: + version "0.19.0" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.19.0.tgz#7258e788f0fee6a42d710eaf7d6c2412a4c50759" + dependencies: + loader-utils "^1.0.2" + schema-utils "^0.3.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + +supports-color@^3.1.2, supports-color@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + dependencies: + has-flag "^1.0.0" + +supports-color@^4.2.1: + version "4.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" + dependencies: + has-flag "^2.0.0" + +supports-color@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.2.0.tgz#b0d5333b1184dd3666cbe5aa0b45c5ac7ac17a4a" + dependencies: + has-flag "^3.0.0" + +svgo@^0.7.0: + version "0.7.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5" + dependencies: + coa "~1.0.1" + colors "~1.1.2" + csso "~2.3.1" + js-yaml "~3.7.0" + mkdirp "~0.5.1" + sax "~1.2.1" + whet.extend "~0.9.9" + +sw-precache-webpack-plugin@0.11.4: + version "0.11.4" + resolved "https://registry.yarnpkg.com/sw-precache-webpack-plugin/-/sw-precache-webpack-plugin-0.11.4.tgz#a695017e54eed575551493a519dc1da8da2dc5e0" + dependencies: + del "^2.2.2" + sw-precache "^5.1.1" + uglify-js "^3.0.13" + +sw-precache@^5.1.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/sw-precache/-/sw-precache-5.2.1.tgz#06134f319eec68f3b9583ce9a7036b1c119f7179" + dependencies: + dom-urls "^1.1.0" + es6-promise "^4.0.5" + glob "^7.1.1" + lodash.defaults "^4.2.0" + lodash.template "^4.4.0" + meow "^3.7.0" + mkdirp "^0.5.1" + pretty-bytes "^4.0.2" + sw-toolbox "^3.4.0" + update-notifier "^2.3.0" + +sw-toolbox@^3.4.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/sw-toolbox/-/sw-toolbox-3.6.0.tgz#26df1d1c70348658e4dea2884319149b7b3183b5" + dependencies: + path-to-regexp "^1.0.1" + serviceworker-cache-polyfill "^4.0.0" + +symbol-tree@^3.2.1: + version "3.2.2" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" + +table@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/table/-/table-4.0.3.tgz#00b5e2b602f1794b9acaf9ca908a76386a7813bc" + dependencies: + ajv "^6.0.1" + ajv-keywords "^3.0.0" + chalk "^2.1.0" + lodash "^4.17.4" + slice-ansi "1.0.0" + string-width "^2.1.1" + +tapable@^0.2.7: + version "0.2.8" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.8.tgz#99372a5c999bf2df160afc0d74bed4f47948cd22" + +tar-pack@^3.4.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f" + dependencies: + debug "^2.2.0" + fstream "^1.0.10" + fstream-ignore "^1.0.5" + once "^1.3.3" + readable-stream "^2.1.4" + rimraf "^2.5.1" + tar "^2.2.1" + uid-number "^0.0.6" + +tar@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" + dependencies: + block-stream "*" + fstream "^1.0.2" + inherits "2" + +term-size@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" + dependencies: + execa "^0.7.0" + +test-exclude@^4.1.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.2.0.tgz#07e3613609a362c74516a717515e13322ab45b3c" + dependencies: + arrify "^1.0.1" + micromatch "^2.3.11" + object-assign "^4.1.0" + read-pkg-up "^1.0.1" + require-main-filename "^1.0.1" + +text-table@0.2.0, text-table@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + +throat@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-3.2.0.tgz#50cb0670edbc40237b9e347d7e1f88e4620af836" + +through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + +thunky@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.2.tgz#a862e018e3fb1ea2ec3fce5d55605cf57f247371" + +time-stamp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-2.0.0.tgz#95c6a44530e15ba8d6f4a3ecb8c3a3fac46da357" + +timed-out@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + +timers-browserify@^2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.6.tgz#241e76927d9ca05f4d959819022f5b3664b64bae" + dependencies: + setimmediate "^1.0.4" + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + dependencies: + os-tmpdir "~1.0.2" + +tmpl@1.0.x: + version "1.0.4" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + +to-fast-properties@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + +toposort@^1.0.0: + version "1.0.6" + resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.6.tgz#c31748e55d210effc00fdcdc7d6e68d7d7bb9cec" + +tough-cookie@^2.3.2, tough-cookie@~2.3.0, tough-cookie@~2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561" + dependencies: + punycode "^1.4.1" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + dependencies: + prelude-ls "~1.1.2" + +type-is@~1.6.15: + version "1.6.16" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" + dependencies: + media-typer "0.3.0" + mime-types "~2.1.18" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + +ua-parser-js@^0.7.9: + version "0.7.17" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.17.tgz#e9ec5f9498b9ec910e7ae3ac626a805c4d09ecac" + +uglify-js@3.3.x, uglify-js@^3.0.13: + version "3.3.12" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.3.12.tgz#efd87c16a1f4c674a8a5ede571001ef634dcc883" + dependencies: + commander "~2.14.1" + source-map "~0.6.1" + +uglify-js@^2.6, uglify-js@^2.8.29: + version "2.8.29" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" + dependencies: + source-map "~0.5.1" + yargs "~3.10.0" + optionalDependencies: + uglify-to-browserify "~1.0.0" + +uglify-to-browserify@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" + +uglifyjs-webpack-plugin@^0.4.6: + version "0.4.6" + resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz#b951f4abb6bd617e66f63eb891498e391763e309" + dependencies: + source-map "^0.5.6" + uglify-js "^2.8.29" + webpack-sources "^1.0.1" + +uid-number@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + +uniqid@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/uniqid/-/uniqid-4.1.1.tgz#89220ddf6b751ae52b5f72484863528596bb84c1" + dependencies: + macaddress "^0.2.8" + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + +unique-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" + dependencies: + crypto-random-string "^1.0.0" + +universalify@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.1.tgz#fa71badd4437af4c148841e3b3b165f9e9e590b7" + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + +unzip-response@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" + +update-notifier@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.3.0.tgz#4e8827a6bb915140ab093559d7014e3ebb837451" + dependencies: + boxen "^1.2.1" + chalk "^2.0.1" + configstore "^3.0.0" + import-lazy "^2.1.0" + is-installed-globally "^0.1.0" + is-npm "^1.0.0" + latest-version "^3.0.0" + semver-diff "^2.0.0" + xdg-basedir "^3.0.0" + +upper-case@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" + +urijs@^1.16.1: + version "1.19.1" + resolved "https://registry.yarnpkg.com/urijs/-/urijs-1.19.1.tgz#5b0ff530c0cbde8386f6342235ba5ca6e995d25a" + +url-loader@0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-0.6.2.tgz#a007a7109620e9d988d14bce677a1decb9a993f7" + dependencies: + loader-utils "^1.0.2" + mime "^1.4.1" + schema-utils "^0.3.0" + +url-parse-lax@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" + dependencies: + prepend-http "^1.0.1" + +url-parse@1.0.x: + version "1.0.5" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b" + dependencies: + querystringify "0.0.x" + requires-port "1.0.x" + +url-parse@^1.1.8: + version "1.2.0" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.2.0.tgz#3a19e8aaa6d023ddd27dcc44cb4fc8f7fec23986" + dependencies: + querystringify "~1.0.0" + requires-port "~1.0.0" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + +util@0.10.3, util@^0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + dependencies: + inherits "2.0.1" + +utila@~0.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226" + +utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + +uuid@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" + +uuid@^3.0.0, uuid@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" + +validate-npm-package-license@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" + dependencies: + spdx-correct "~1.0.0" + spdx-expression-parse "~1.0.0" + +value-equal@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-0.4.0.tgz#c5bdd2f54ee093c04839d71ce2e4758a6890abc7" + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + +vendors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22" + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vm-browserify@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" + dependencies: + indexof "0.0.1" + +walker@~1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" + dependencies: + makeerror "1.0.x" + +warning@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c" + dependencies: + loose-envify "^1.0.0" + +watch@~0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/watch/-/watch-0.10.0.tgz#77798b2da0f9910d595f1ace5b0c2258521f21dc" + +watchpack@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.4.0.tgz#4a1472bcbb952bd0a9bb4036801f954dfb39faac" + dependencies: + async "^2.1.2" + chokidar "^1.7.0" + graceful-fs "^4.1.2" + +wbuf@^1.1.0, wbuf@^1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.2.tgz#d697b99f1f59512df2751be42769c1580b5801fe" + dependencies: + minimalistic-assert "^1.0.0" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + +webidl-conversions@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + +webpack-dev-middleware@^1.11.0: + version "1.12.2" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz#f8fc1120ce3b4fc5680ceecb43d777966b21105e" + dependencies: + memory-fs "~0.4.1" + mime "^1.5.0" + path-is-absolute "^1.0.0" + range-parser "^1.0.3" + time-stamp "^2.0.0" + +webpack-dev-server@2.9.4: + version "2.9.4" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.9.4.tgz#7883e61759c6a4b33e9b19ec4037bd4ab61428d1" + dependencies: + ansi-html "0.0.7" + array-includes "^3.0.3" + bonjour "^3.5.0" + chokidar "^1.6.0" + compression "^1.5.2" + connect-history-api-fallback "^1.3.0" + debug "^3.1.0" + del "^3.0.0" + express "^4.13.3" + html-entities "^1.2.0" + http-proxy-middleware "~0.17.4" + import-local "^0.1.1" + internal-ip "1.2.0" + ip "^1.1.5" + killable "^1.0.0" + loglevel "^1.4.1" + opn "^5.1.0" + portfinder "^1.0.9" + selfsigned "^1.9.1" + serve-index "^1.7.2" + sockjs "0.3.18" + sockjs-client "1.1.4" + spdy "^3.4.1" + strip-ansi "^3.0.1" + supports-color "^4.2.1" + webpack-dev-middleware "^1.11.0" + yargs "^6.6.0" + +webpack-manifest-plugin@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-1.3.2.tgz#5ea8ee5756359ddc1d98814324fe43496349a7d4" + dependencies: + fs-extra "^0.30.0" + lodash ">=3.5 <5" + +webpack-sources@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.1.0.tgz#a101ebae59d6507354d71d8013950a3a8b7a5a54" + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack@3.8.1: + version "3.8.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.8.1.tgz#b16968a81100abe61608b0153c9159ef8bb2bd83" + dependencies: + acorn "^5.0.0" + acorn-dynamic-import "^2.0.0" + ajv "^5.1.5" + ajv-keywords "^2.0.0" + async "^2.1.2" + enhanced-resolve "^3.4.0" + escope "^3.6.0" + interpret "^1.0.0" + json-loader "^0.5.4" + json5 "^0.5.1" + loader-runner "^2.3.0" + loader-utils "^1.1.0" + memory-fs "~0.4.1" + mkdirp "~0.5.0" + node-libs-browser "^2.0.0" + source-map "^0.5.3" + supports-color "^4.2.1" + tapable "^0.2.7" + uglifyjs-webpack-plugin "^0.4.6" + watchpack "^1.4.0" + webpack-sources "^1.0.1" + yargs "^8.0.2" + +websocket-driver@>=0.5.1: + version "0.7.0" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb" + dependencies: + http-parser-js ">=0.4.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" + +whatwg-encoding@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz#57c235bc8657e914d24e1a397d3c82daee0a6ba3" + dependencies: + iconv-lite "0.4.19" + +whatwg-fetch@2.0.3, whatwg-fetch@>=0.10.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84" + +whatwg-url@^4.3.0: + version "4.8.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-4.8.0.tgz#d2981aa9148c1e00a41c5a6131166ab4683bbcc0" + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +whet.extend@~0.9.9: + version "0.9.9" + resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" + +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + +which@^1.2.12, which@^1.2.14, which@^1.2.9, which@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" + dependencies: + string-width "^1.0.2" + +widest-line@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.0.tgz#0142a4e8a243f8882c0233aa0e0281aa76152273" + dependencies: + string-width "^2.1.1" + +window-size@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" + +wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" + +wordwrap@~0.0.2: + version "0.0.3" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + +wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + +worker-farm@^1.3.1: + version "1.5.4" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.5.4.tgz#4debbe46b40edefcc717ebde74a90b1ae1e909a1" + dependencies: + errno "~0.1.7" + xtend "~4.0.1" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + +write-file-atomic@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +write@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" + dependencies: + mkdirp "^0.5.1" + +xdg-basedir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" + +xml-char-classes@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/xml-char-classes/-/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d" + +xml-name-validator@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635" + +xtend@^4.0.0, xtend@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + +y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + +yargs-parser@^4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c" + dependencies: + camelcase "^3.0.0" + +yargs-parser@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" + dependencies: + camelcase "^3.0.0" + +yargs-parser@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" + dependencies: + camelcase "^4.1.0" + +yargs@^6.6.0: + version "6.6.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208" + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + y18n "^3.2.1" + yargs-parser "^4.2.0" + +yargs@^7.0.2: + version "7.1.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + y18n "^3.2.1" + yargs-parser "^5.0.0" + +yargs@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" + dependencies: + camelcase "^4.1.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + read-pkg-up "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^7.0.0" + +yargs@~3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" + dependencies: + camelcase "^1.0.2" + cliui "^2.1.0" + decamelize "^1.0.0" + window-size "0.1.0" From 48dd928b8e7dbc164d794d0af7b2f56384f4e00b Mon Sep 17 00:00:00 2001 From: lindelindblad Date: Fri, 16 Mar 2018 13:54:22 +0100 Subject: [PATCH 57/64] sideview + searchview ok inkl API titel och bilder --- .../package-lock.json | 89 +++++++++++++++++++ dinnerplanner-html-react-master/package.json | 1 + .../public/index.html | 2 + dinnerplanner-html-react-master/src/App.js | 3 +- .../src/Dishes/Dishes.js | 9 +- .../src/SelectDish/SelectDish.js | 15 ++-- .../src/data/DinnerModel.js | 2 +- 7 files changed, 113 insertions(+), 8 deletions(-) diff --git a/dinnerplanner-html-react-master/package-lock.json b/dinnerplanner-html-react-master/package-lock.json index c64ff7307..5d3d71fa4 100644 --- a/dinnerplanner-html-react-master/package-lock.json +++ b/dinnerplanner-html-react-master/package-lock.json @@ -1682,6 +1682,11 @@ "lazy-cache": "1.0.4" } }, + "chain-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/chain-function/-/chain-function-1.0.0.tgz", + "integrity": "sha1-DUqzfn4Y6tC9xHuSB2QRjOWHM9w=" + }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", @@ -1872,6 +1877,11 @@ } } }, + "classnames": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.5.tgz", + "integrity": "sha1-+zgB1FNGdknvNgPH1hoCvRKb3m0=" + }, "clean-css": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.11.tgz", @@ -2698,6 +2708,11 @@ } } }, + "dom-helpers": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.3.1.tgz", + "integrity": "sha512-2Sm+JaYn74OiTM2wHvxJOo3roiq/h25Yi69Fqk269cNUwIXsCvATB6CRSFC9Am/20G2b28hGv/+7NiWydIrPvg==" + }, "dom-serializer": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", @@ -6607,6 +6622,11 @@ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz", "integrity": "sha1-OGchPo3Xm/Ho8jAMDPwe+xgsDfE=" }, + "keycode": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/keycode/-/keycode-2.1.9.tgz", + "integrity": "sha1-lkojxU5IiUBbSGGlyfBIDUUUHfo=" + }, "killable": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.0.tgz", @@ -8949,6 +8969,14 @@ "object-assign": "4.1.1" } }, + "prop-types-extra": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.0.1.tgz", + "integrity": "sha1-pXvUgQ6C0no/9DF+zBtK0AX3moI=", + "requires": { + "warning": "3.0.0" + } + }, "proxy-addr": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz", @@ -9108,6 +9136,25 @@ "prop-types": "15.6.1" } }, + "react-bootstrap": { + "version": "0.32.1", + "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-0.32.1.tgz", + "integrity": "sha512-RbfzKUbsukWsToWqGHfCCyMFq9QQI0TznutdyxyJw6dih2NvIne25Mrssg8LZsprqtPpyQi8bN0L0Fx3fUsL8Q==", + "requires": { + "babel-runtime": "6.26.0", + "classnames": "2.2.5", + "dom-helpers": "3.3.1", + "invariant": "2.2.4", + "keycode": "2.1.9", + "prop-types": "15.6.1", + "prop-types-extra": "1.0.1", + "react-overlays": "0.8.3", + "react-prop-types": "0.4.0", + "react-transition-group": "2.2.1", + "uncontrollable": "4.1.0", + "warning": "3.0.0" + } + }, "react-dev-utils": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-5.0.0.tgz", @@ -9149,6 +9196,27 @@ "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-4.0.0.tgz", "integrity": "sha512-FlsPxavEyMuR6TjVbSSywovXSEyOg6ZDj5+Z8nbsRl9EkOzAhEIcS+GLoQDC5fz/t9suhUXWmUrOBrgeUvrMxw==" }, + "react-overlays": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-0.8.3.tgz", + "integrity": "sha512-h6GT3jgy90PgctleP39Yu3eK1v9vaJAW73GOA/UbN9dJ7aAN4BTZD6793eI1D5U+ukMk17qiqN/wl3diK1Z5LA==", + "requires": { + "classnames": "2.2.5", + "dom-helpers": "3.3.1", + "prop-types": "15.6.1", + "prop-types-extra": "1.0.1", + "react-transition-group": "2.2.1", + "warning": "3.0.0" + } + }, + "react-prop-types": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/react-prop-types/-/react-prop-types-0.4.0.tgz", + "integrity": "sha1-+ZsL+0AGkpya8gUefBQUpcdbk9A=", + "requires": { + "warning": "3.0.0" + } + }, "react-router": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/react-router/-/react-router-4.2.0.tgz", @@ -9231,6 +9299,19 @@ } } }, + "react-transition-group": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.2.1.tgz", + "integrity": "sha512-q54UBM22bs/CekG8r3+vi9TugSqh0t7qcEVycaRc9M0p0aCEu+h6rp/RFiW7fHfgd1IKpd9oILFTl5QK+FpiPA==", + "requires": { + "chain-function": "1.0.0", + "classnames": "2.2.5", + "dom-helpers": "3.3.1", + "loose-envify": "1.3.1", + "prop-types": "15.6.1", + "warning": "3.0.0" + } + }, "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", @@ -10742,6 +10823,14 @@ } } }, + "uncontrollable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-4.1.0.tgz", + "integrity": "sha1-4DWCkSUuGGUiLZCTmxny9J+Bwak=", + "requires": { + "invariant": "2.2.4" + } + }, "union-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", diff --git a/dinnerplanner-html-react-master/package.json b/dinnerplanner-html-react-master/package.json index 8fe4a63c8..4690b6d8e 100644 --- a/dinnerplanner-html-react-master/package.json +++ b/dinnerplanner-html-react-master/package.json @@ -4,6 +4,7 @@ "private": true, "dependencies": { "react": "^16.2.0", + "react-bootstrap": "^0.32.1", "react-dom": "^16.2.0", "react-router-dom": "^4.2.2", "react-scripts": "1.1.1" diff --git a/dinnerplanner-html-react-master/public/index.html b/dinnerplanner-html-react-master/public/index.html index ba2b9232b..4ec93de1d 100644 --- a/dinnerplanner-html-react-master/public/index.html +++ b/dinnerplanner-html-react-master/public/index.html @@ -3,6 +3,8 @@ + + Dinner Planner React diff --git a/dinnerplanner-html-react-master/src/App.js b/dinnerplanner-html-react-master/src/App.js index 658a547bd..ca6872fe3 100644 --- a/dinnerplanner-html-react-master/src/App.js +++ b/dinnerplanner-html-react-master/src/App.js @@ -4,6 +4,7 @@ import { Route } from 'react-router-dom'; import Welcome from './Welcome/Welcome'; import { modelInstance } from './data/DinnerModel' import SelectDish from "./SelectDish/SelectDish"; +//import OneDish from "./OneDish/OneDish"; class App extends Component { constructor(props) { @@ -17,7 +18,7 @@ class App extends Component { return (
    -

    {this.state.title}

    +

    {this.state.title}

    {/* We rended diffrent component based on the path */} diff --git a/dinnerplanner-html-react-master/src/Dishes/Dishes.js b/dinnerplanner-html-react-master/src/Dishes/Dishes.js index 8168d7edf..e01c03038 100644 --- a/dinnerplanner-html-react-master/src/Dishes/Dishes.js +++ b/dinnerplanner-html-react-master/src/Dishes/Dishes.js @@ -45,7 +45,14 @@ class Dishes extends Component { break; case 'LOADED': dishesList = this.state.dishes.map((dish) => -
  • {dish.title}
  • +
    +
    +

    {dish.title}

    + +
    +
    + + ) break; default: diff --git a/dinnerplanner-html-react-master/src/SelectDish/SelectDish.js b/dinnerplanner-html-react-master/src/SelectDish/SelectDish.js index aad4ddab8..8ee6e0113 100644 --- a/dinnerplanner-html-react-master/src/SelectDish/SelectDish.js +++ b/dinnerplanner-html-react-master/src/SelectDish/SelectDish.js @@ -7,11 +7,16 @@ class SelectDish extends Component { render() { return (
    -

    This is the Select Dish screen

    - - {/* We pass the model as property to the Sidebar component */} - - +
    +
    + {/* We pass the model as property to the Sidebar component */} + +
    +
    +

    This is the Select Dish screen

    + +
    +
    ); } diff --git a/dinnerplanner-html-react-master/src/data/DinnerModel.js b/dinnerplanner-html-react-master/src/data/DinnerModel.js index 5f5cc8ed5..24af8ab1d 100644 --- a/dinnerplanner-html-react-master/src/data/DinnerModel.js +++ b/dinnerplanner-html-react-master/src/data/DinnerModel.js @@ -1,5 +1,5 @@ const httpOptions = { - headers: {'X-Mashape-Key': 'YOUR_API_KEY'} + headers: {'X-Mashape-Key': 'Qu9grxVNWpmshA4Kl9pTwyiJxVGUp1lKzrZjsnghQMkFkfA4LB'} }; const DinnerModel = function () { From 948620d14156b4cd32fa210ae932653acf43ca0e Mon Sep 17 00:00:00 2001 From: lindelindblad Date: Fri, 16 Mar 2018 14:14:12 +0100 Subject: [PATCH 58/64] search ok! --- dinnerplanner-html-react-master/src/App.js | 2 +- .../src/Dishes/Dishes.js | 7 ++-- .../src/SelectDish/SelectDish.js | 39 ++++++++++++++++++- 3 files changed, 42 insertions(+), 6 deletions(-) diff --git a/dinnerplanner-html-react-master/src/App.js b/dinnerplanner-html-react-master/src/App.js index ca6872fe3..dabcba3c7 100644 --- a/dinnerplanner-html-react-master/src/App.js +++ b/dinnerplanner-html-react-master/src/App.js @@ -18,7 +18,7 @@ class App extends Component { return (
    -

    {this.state.title}

    +

    {this.state.title}

    {/* We rended diffrent component based on the path */} diff --git a/dinnerplanner-html-react-master/src/Dishes/Dishes.js b/dinnerplanner-html-react-master/src/Dishes/Dishes.js index e01c03038..991d5eb92 100644 --- a/dinnerplanner-html-react-master/src/Dishes/Dishes.js +++ b/dinnerplanner-html-react-master/src/Dishes/Dishes.js @@ -45,13 +45,14 @@ class Dishes extends Component { break; case 'LOADED': dishesList = this.state.dishes.map((dish) => -
    +
    -

    {dish.title}

    +
    +

    {dish.title}

    +
    - ) break; diff --git a/dinnerplanner-html-react-master/src/SelectDish/SelectDish.js b/dinnerplanner-html-react-master/src/SelectDish/SelectDish.js index 8ee6e0113..cc30cdec6 100644 --- a/dinnerplanner-html-react-master/src/SelectDish/SelectDish.js +++ b/dinnerplanner-html-react-master/src/SelectDish/SelectDish.js @@ -13,8 +13,43 @@ class SelectDish extends Component {
    -

    This is the Select Dish screen

    - +
    +
    +

    Find a dish

    + + + +
    + +
    +
    + +
    + +
    + +
    + +
    +
    + +
    +

    This is the Select Dish screen

    + +
    From 53a701693c768bca58076dd61ea7c412390b2ffe Mon Sep 17 00:00:00 2001 From: lindelindblad Date: Fri, 16 Mar 2018 16:29:15 +0100 Subject: [PATCH 59/64] getalldishes update --- .../src/Dishes/Dishes.js | 9 ++-- .../src/SelectDish/SelectDish.js | 50 ++++++++++++++++--- .../src/Sidebar/Sidebar.js | 27 ++++++++++ .../src/data/DinnerModel.js | 8 ++- 4 files changed, 82 insertions(+), 12 deletions(-) diff --git a/dinnerplanner-html-react-master/src/Dishes/Dishes.js b/dinnerplanner-html-react-master/src/Dishes/Dishes.js index 991d5eb92..7b6c91fd3 100644 --- a/dinnerplanner-html-react-master/src/Dishes/Dishes.js +++ b/dinnerplanner-html-react-master/src/Dishes/Dishes.js @@ -11,17 +11,19 @@ class Dishes extends Component { // We create the state to store the various statuses // e.g. API data loading or error this.state = { - status: 'INITIAL' + status: 'INITIAL', } } + + // this methods is called by React lifecycle when the // component is actually shown to the user (mounted to DOM) // that's a good place to call the API and get the data componentDidMount = () => { // when data is retrieved we update the state // this will cause the component to re-render - modelInstance.getAllDishes().then(dishes => { + modelInstance.getAllDishes(this.state.search).then(dishes => { this.setState({ status: 'LOADED', dishes: dishes.results @@ -47,7 +49,7 @@ class Dishes extends Component { dishesList = this.state.dishes.map((dish) =>
    - +

    {dish.title}

    @@ -63,6 +65,7 @@ class Dishes extends Component { return (
    +

    här finns {this.props.searchTerm}

    Dishes