From 7824610b8debba0028e4877ebaf20a45994987d8 Mon Sep 17 00:00:00 2001 From: Tammy Date: Mon, 1 Feb 2016 15:05:03 -0800 Subject: [PATCH 01/60] we succefuly added a 2 into a random available cell --- javascripts/2048.js | 47 ++++++++++++++++++++++++++++++--------------- 1 file changed, 32 insertions(+), 15 deletions(-) diff --git a/javascripts/2048.js b/javascripts/2048.js index 4b2746c..a793a8a 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -1,7 +1,24 @@ var Game = function() { - // Game logic and initialization here + var board = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]; }; +Game.prototype.randTile = function(board) { + console.log(board) + var arr = []; + for(var i = 0; i < 4; i++) { + for(var j = 0; j < 4; j++ ) { + if( board[i][j] === 0 ) { + arr.push([i,j]); + } + } + } + var randNum = Math.floor((Math.random() * arr.length)); + var i_board = arr[randNum][0]; + var j_board = arr[randNum][1]; + board[i_board][j_board] = 2; + return board; +} + Game.prototype.moveTile = function(tile, direction) { // Game method here switch(direction) { @@ -20,17 +37,17 @@ Game.prototype.moveTile = function(tile, direction) { } }; -$(document).ready(function() { - console.log("ready to go!"); - // Any interactive jQuery functionality - var game = new Game(); - - $('body').keydown(function(event){ - var arrows = [37, 38, 39, 40]; - if (arrows.indexOf(event.which) > -1) { - var tile = $('.tile'); - - game.moveTile(tile, event.which); - } - }); -}); +// $(document).ready(function() { +// console.log("ready to go!"); +// // Any interactive jQuery functionality +// var game = new Game(); +// +// $('body').keydown(function(event){ +// var arrows = [37, 38, 39, 40]; +// if (arrows.indexOf(event.which) > -1) { +// var tile = $('.tile'); +// +// game.moveTile(tile, event.which); +// } +// }); +// }); From 2d473cd6cf8f8b975a19c851d5825db11e231d6c Mon Sep 17 00:00:00 2001 From: Tammy Date: Mon, 1 Feb 2016 15:17:00 -0800 Subject: [PATCH 02/60] 1 out of 10 will be a tile of 4 --- javascripts/2048.js | 8 +++++++- javascripts/test.js | 21 +++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 javascripts/test.js diff --git a/javascripts/2048.js b/javascripts/2048.js index a793a8a..6772e88 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -15,7 +15,10 @@ Game.prototype.randTile = function(board) { var randNum = Math.floor((Math.random() * arr.length)); var i_board = arr[randNum][0]; var j_board = arr[randNum][1]; - board[i_board][j_board] = 2; + + if (Math.floor((Math.random() * 10) + 1) == 7) { + board[i_board][j_board] = 4; + } else { board[i_board][j_board] = 2; } return board; } @@ -51,3 +54,6 @@ Game.prototype.moveTile = function(tile, direction) { // } // }); // }); +// +// var game = new Game(); +// game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); diff --git a/javascripts/test.js b/javascripts/test.js new file mode 100644 index 0000000..4f12595 --- /dev/null +++ b/javascripts/test.js @@ -0,0 +1,21 @@ + +var game = new Game(); +game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); +// game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); +// game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); +// game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); +// game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); +// game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); +// game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); +// game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); +// game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); +// game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); +// game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); +// game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); +// game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); +// game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); +// game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); +// game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); +// game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); +// game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); +// game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); From 28e98c28509c31d6394075a669274cd42ab73f44 Mon Sep 17 00:00:00 2001 From: noglows Date: Mon, 1 Feb 2016 15:44:49 -0800 Subject: [PATCH 03/60] Move tile left behavior partially working --- javascripts/2048.js | 45 ++++++++++++++++++++++++++++++++++----------- 1 file changed, 34 insertions(+), 11 deletions(-) diff --git a/javascripts/2048.js b/javascripts/2048.js index 6772e88..92a3ac2 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -1,13 +1,15 @@ var Game = function() { - var board = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]; + this.board = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]; }; -Game.prototype.randTile = function(board) { - console.log(board) +Game.prototype.board = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]; + +Game.prototype.randTile = function() { + console.log(this.board); var arr = []; for(var i = 0; i < 4; i++) { for(var j = 0; j < 4; j++ ) { - if( board[i][j] === 0 ) { + if( this.board[i][j] === 0 ) { arr.push([i,j]); } } @@ -17,10 +19,11 @@ Game.prototype.randTile = function(board) { var j_board = arr[randNum][1]; if (Math.floor((Math.random() * 10) + 1) == 7) { - board[i_board][j_board] = 4; - } else { board[i_board][j_board] = 2; } - return board; -} + this.board[i_board][j_board] = 4; + } else { this.board[i_board][j_board] = 2; } + // return this.board; + return [i_board, j_board]; +}; Game.prototype.moveTile = function(tile, direction) { // Game method here @@ -40,6 +43,24 @@ Game.prototype.moveTile = function(tile, direction) { } }; +Game.prototype.moveLeft = function(tile) { + // tile[0] is the row + // tile[1] is the column position + var row = tile[0]; + var col = tile[1]; + var value = this.board[row][col]; + + var board_row = this.board[tile[0]]; + + for(j=0; j<4; j++) { + if (board_row[j] === 0) { + this.board[row][j] = value; + this.board[row][col] = 0; + break; + } + } +}; + // $(document).ready(function() { // console.log("ready to go!"); // // Any interactive jQuery functionality @@ -54,6 +75,8 @@ Game.prototype.moveTile = function(tile, direction) { // } // }); // }); -// -// var game = new Game(); -// game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); +// +var game = new Game(); +game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); +game.moveLeft(game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]])); +//game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); From 22d67f4219d9a5af15a4639b300c90873ce6f24f Mon Sep 17 00:00:00 2001 From: Tammy Date: Mon, 1 Feb 2016 16:24:21 -0800 Subject: [PATCH 04/60] fix a bug. noe move left works great --- javascripts/2048.js | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/javascripts/2048.js b/javascripts/2048.js index 92a3ac2..58ca9c3 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -2,10 +2,9 @@ var Game = function() { this.board = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]; }; -Game.prototype.board = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]; +// Game.prototype.board = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]; Game.prototype.randTile = function() { - console.log(this.board); var arr = []; for(var i = 0; i < 4; i++) { for(var j = 0; j < 4; j++ ) { @@ -14,6 +13,7 @@ Game.prototype.randTile = function() { } } } + console.log(arr) var randNum = Math.floor((Math.random() * arr.length)); var i_board = arr[randNum][0]; var j_board = arr[randNum][1]; @@ -22,6 +22,7 @@ Game.prototype.randTile = function() { this.board[i_board][j_board] = 4; } else { this.board[i_board][j_board] = 2; } // return this.board; + console.log(this.board) return [i_board, j_board]; }; @@ -49,18 +50,22 @@ Game.prototype.moveLeft = function(tile) { var row = tile[0]; var col = tile[1]; var value = this.board[row][col]; - var board_row = this.board[tile[0]]; - for(j=0; j<4; j++) { + for(j=0; j < col; j++) { if (board_row[j] === 0) { this.board[row][j] = value; this.board[row][col] = 0; break; } } + return this.board; }; + + + + // $(document).ready(function() { // console.log("ready to go!"); // // Any interactive jQuery functionality @@ -77,6 +82,6 @@ Game.prototype.moveLeft = function(tile) { // }); // var game = new Game(); -game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); -game.moveLeft(game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]])); +var f = game.randTile(); +game.moveLeft(f); //game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); From 39e52c4aeee78a15ef77919278108c1e6caa3633 Mon Sep 17 00:00:00 2001 From: Tammy Date: Mon, 1 Feb 2016 16:28:19 -0800 Subject: [PATCH 05/60] we can move right --- javascripts/2048.js | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/javascripts/2048.js b/javascripts/2048.js index 58ca9c3..6ac9892 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -62,6 +62,26 @@ Game.prototype.moveLeft = function(tile) { return this.board; }; +Game.prototype.moveRight = function(tile) { + // tile[0] is the row + // tile[1] is the column position + var row = tile[0]; + var col = tile[1]; + var value = this.board[row][col]; + var board_row = this.board[tile[0]]; + + for(j= 3; j > col; j--) { + if (board_row[j] === 0) { + this.board[row][j] = value; + this.board[row][col] = 0; + break; + } + } + return this.board; +}; + + + @@ -83,5 +103,6 @@ Game.prototype.moveLeft = function(tile) { // var game = new Game(); var f = game.randTile(); -game.moveLeft(f); +// game.moveLeft(f); +game.moveRight(f); //game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); From 563b6e81fd7db896b2194dbd1d76341f010272d6 Mon Sep 17 00:00:00 2001 From: Tammy Date: Mon, 1 Feb 2016 16:44:25 -0800 Subject: [PATCH 06/60] we can move down A tile --- javascripts/2048.js | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/javascripts/2048.js b/javascripts/2048.js index 6ac9892..f24a2da 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -13,7 +13,6 @@ Game.prototype.randTile = function() { } } } - console.log(arr) var randNum = Math.floor((Math.random() * arr.length)); var i_board = arr[randNum][0]; var j_board = arr[randNum][1]; @@ -70,7 +69,7 @@ Game.prototype.moveRight = function(tile) { var value = this.board[row][col]; var board_row = this.board[tile[0]]; - for(j= 3; j > col; j--) { + for(var j= 3; j > col; j--) { if (board_row[j] === 0) { this.board[row][j] = value; this.board[row][col] = 0; @@ -80,6 +79,21 @@ Game.prototype.moveRight = function(tile) { return this.board; }; +Game.prototype.moveDown = function(tile) { + var row = tile[0]; + var col = tile[1]; + var value = this.board[row][col]; + // var board_col = this.board[tile[1]]; + for(var i = 3; i > row ; i--) { + if ((this.board[i][col]) === 0) { + this.board[i][col] = value; + this.board[row][col] = 0; + break; + } + } + return this.board +} + @@ -103,6 +117,4 @@ Game.prototype.moveRight = function(tile) { // var game = new Game(); var f = game.randTile(); -// game.moveLeft(f); -game.moveRight(f); -//game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); + game.moveDown(f); From dd7676c82b039f85cd2d8b9dd1513ab9ec9ce8e4 Mon Sep 17 00:00:00 2001 From: noglows Date: Mon, 1 Feb 2016 16:46:17 -0800 Subject: [PATCH 07/60] Added move up functionality --- javascripts/2048.js | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/javascripts/2048.js b/javascripts/2048.js index f24a2da..0baef9b 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -21,7 +21,7 @@ Game.prototype.randTile = function() { this.board[i_board][j_board] = 4; } else { this.board[i_board][j_board] = 2; } // return this.board; - console.log(this.board) + console.log(this.board); return [i_board, j_board]; }; @@ -91,8 +91,23 @@ Game.prototype.moveDown = function(tile) { break; } } - return this.board -} + return this.board; +}; + +Game.prototype.moveUp = function(tile) { + var row = tile[0]; + var col = tile[1]; + var value = this.board[row][col]; + + for(var i = 0; i < row ; i++) { + if ((this.board[i][col]) === 0) { + this.board[i][col] = value; + this.board[row][col] = 0; + break; + } + } + return this.board; +}; @@ -117,4 +132,4 @@ Game.prototype.moveDown = function(tile) { // var game = new Game(); var f = game.randTile(); - game.moveDown(f); +game.moveUp(f); From 41192475b10648bd85dd8749c22ba9842a274634 Mon Sep 17 00:00:00 2001 From: noglows Date: Mon, 1 Feb 2016 16:48:05 -0800 Subject: [PATCH 08/60] Code cleanup --- javascripts/2048.js | 9 --------- 1 file changed, 9 deletions(-) diff --git a/javascripts/2048.js b/javascripts/2048.js index 0baef9b..8ef5d35 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -2,8 +2,6 @@ var Game = function() { this.board = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]; }; -// Game.prototype.board = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]; - Game.prototype.randTile = function() { var arr = []; for(var i = 0; i < 4; i++) { @@ -83,7 +81,6 @@ Game.prototype.moveDown = function(tile) { var row = tile[0]; var col = tile[1]; var value = this.board[row][col]; - // var board_col = this.board[tile[1]]; for(var i = 3; i > row ; i--) { if ((this.board[i][col]) === 0) { this.board[i][col] = value; @@ -98,7 +95,6 @@ Game.prototype.moveUp = function(tile) { var row = tile[0]; var col = tile[1]; var value = this.board[row][col]; - for(var i = 0; i < row ; i++) { if ((this.board[i][col]) === 0) { this.board[i][col] = value; @@ -110,11 +106,6 @@ Game.prototype.moveUp = function(tile) { }; - - - - - // $(document).ready(function() { // console.log("ready to go!"); // // Any interactive jQuery functionality From a713af1965e50472bc0386eea2f277d6188a83c7 Mon Sep 17 00:00:00 2001 From: noglows Date: Tue, 2 Feb 2016 10:39:12 -0800 Subject: [PATCH 09/60] Collide right logic is working --- javascripts/2048.js | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/javascripts/2048.js b/javascripts/2048.js index 8ef5d35..cb19f9b 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -37,6 +37,8 @@ Game.prototype.moveTile = function(tile, direction) { break; case 39: //right console.log('right'); + // this.moveRight(tile); + // this.collideRight(tile); break; } }; @@ -49,7 +51,7 @@ Game.prototype.moveLeft = function(tile) { var value = this.board[row][col]; var board_row = this.board[tile[0]]; - for(j=0; j < col; j++) { + for(var j=0; j < col; j++) { if (board_row[j] === 0) { this.board[row][j] = value; this.board[row][col] = 0; @@ -77,6 +79,31 @@ Game.prototype.moveRight = function(tile) { return this.board; }; +Game.prototype.collideRight = function() { + self = this; + for (var brow = 0; brow < 4; brow++) { + var row = this.board[brow]; + for (var x = 3; x > 0; x--) { + //console.log(row[x-1]); + if ((row[x] === row[x-1]) && row[x] !== 0) { + row[x] = (row[x] + row[x-1]); + row[x-1] = 0; + switch(x) { + case 3: + self.moveRight([brow, x-2]); + self.moveRight([brow, x-3]); + break; + case 2: + self.moveRight([brow, x-2]); + break; + } + } + } + } + return this.board; +}; + + Game.prototype.moveDown = function(tile) { var row = tile[0]; var col = tile[1]; @@ -123,4 +150,5 @@ Game.prototype.moveUp = function(tile) { // var game = new Game(); var f = game.randTile(); -game.moveUp(f); +game.moveRight(f); +game.collideRight(); From 54da42335de9dedb9571c6c7239b9bdfb03e33ee Mon Sep 17 00:00:00 2001 From: Tammy Date: Tue, 2 Feb 2016 10:56:56 -0800 Subject: [PATCH 10/60] we can collide left --- javascripts/2048.js | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/javascripts/2048.js b/javascripts/2048.js index cb19f9b..633b557 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -61,6 +61,31 @@ Game.prototype.moveLeft = function(tile) { return this.board; }; +Game.prototype.collideLeft = function() { + self = this; + for (var brow = 0; brow < 4; brow++) { + var row = this.board[brow]; + for (var x = 0; x < 4; x++) { + //console.log(row[x-1]); + if ((row[x] === row[x+1]) && row[x] !== 0) { + row[x] = (row[x] + row[x+1]); + row[x+1] = 0; + switch(x) { + case 0: + self.moveRight([brow, x+2]); + self.moveRight([brow, x+3]); + break; + case 1: + self.moveRight([brow, x+2]); + break; + } + } + } + } + return this.board; +}; + + Game.prototype.moveRight = function(tile) { // tile[0] is the row // tile[1] is the column position @@ -150,5 +175,5 @@ Game.prototype.moveUp = function(tile) { // var game = new Game(); var f = game.randTile(); -game.moveRight(f); -game.collideRight(); +game.moveLeft(f); +game.collideLeft(); From be6f8cde61d521a7b1744599727300129aefaa8a Mon Sep 17 00:00:00 2001 From: Tammy Date: Tue, 2 Feb 2016 11:13:20 -0800 Subject: [PATCH 11/60] we can collide down --- javascripts/2048.js | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/javascripts/2048.js b/javascripts/2048.js index 633b557..4588806 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -143,6 +143,31 @@ Game.prototype.moveDown = function(tile) { return this.board; }; +Game.prototype.collideDown = function() { + self = this; + board = this.board; + for (var bcol = 0; bcol < 4 ; bcol++) { + for (var row = 3; row > 0; row--) { + //console.log(row[x-1]); + if (( board[row][bcol] === board[row-1][bcol]) && board[row][bcol] !== 0) { + board[row][bcol] = (board[row][bcol] + board[row-1][bcol]); + board[row-1][bcol] = 0; + switch(row) { + case 3: + self.moveDown([row-2, bcol]); + self.moveDown([row-3, bcol]); + break; + case 2: + self.moveDown([row-2, bcol]); + break; + } + } + } + } + return this.board; +}; + + Game.prototype.moveUp = function(tile) { var row = tile[0]; var col = tile[1]; @@ -175,5 +200,5 @@ Game.prototype.moveUp = function(tile) { // var game = new Game(); var f = game.randTile(); -game.moveLeft(f); -game.collideLeft(); +game.moveDown(f); +game.collideDown(); From 6c22ee6c4aa6bfd5c63be860d09122d53e1ba34a Mon Sep 17 00:00:00 2001 From: noglows Date: Tue, 2 Feb 2016 11:28:36 -0800 Subject: [PATCH 12/60] Collide Up functionality working --- javascripts/2048.js | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/javascripts/2048.js b/javascripts/2048.js index 4588806..5689aef 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -182,6 +182,29 @@ Game.prototype.moveUp = function(tile) { return this.board; }; +Game.prototype.collideUp = function() { + self = this; + board = this.board; + for (var bcol = 0; bcol < 4 ; bcol++) { + for (var row = 0; row < 3; row++) { + if (( board[row][bcol] === board[row+1][bcol]) && (board[row][bcol] !== 0)) { + board[row][bcol] = (board[row][bcol] + board[row+1][bcol]); + board[row+1][bcol] = 0; + switch(row) { + case 0: + self.moveUp([row+2, bcol]); + self.moveUp([row+3, bcol]); + break; + case 1: + self.moveUp([row+2, bcol]); + break; + } + } + } + } + return this.board; +}; + // $(document).ready(function() { // console.log("ready to go!"); @@ -200,5 +223,5 @@ Game.prototype.moveUp = function(tile) { // var game = new Game(); var f = game.randTile(); -game.moveDown(f); -game.collideDown(); +game.moveUp(f); +game.collideUp(); From 61a10b85b6408016beee757370ba70223068b782 Mon Sep 17 00:00:00 2001 From: Tammy Date: Tue, 2 Feb 2016 11:58:06 -0800 Subject: [PATCH 13/60] Scoring is working --- javascripts/2048.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/javascripts/2048.js b/javascripts/2048.js index 5689aef..30f0eb9 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -1,7 +1,21 @@ var Game = function() { this.board = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]; + this.score = 0; }; +Game.prototype.scoring = function() { + var currentScore = 0; + for (var i = 0; i < 4; i++) { + for (var j = 0; j < 4; j++ ) { + currentScore += this.board[i][j]; + } + } + this.score = currentScore; + console.log(this.score) + return this.score; +} + + Game.prototype.randTile = function() { var arr = []; for(var i = 0; i < 4; i++) { From b303acab2401345f06dd76ec6bc8565875787fd0 Mon Sep 17 00:00:00 2001 From: Tammy Date: Tue, 2 Feb 2016 12:25:55 -0800 Subject: [PATCH 14/60] fixed the scoring --- javascripts/2048.js | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/javascripts/2048.js b/javascripts/2048.js index 30f0eb9..da10026 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -3,16 +3,9 @@ var Game = function() { this.score = 0; }; -Game.prototype.scoring = function() { - var currentScore = 0; - for (var i = 0; i < 4; i++) { - for (var j = 0; j < 4; j++ ) { - currentScore += this.board[i][j]; - } - } - this.score = currentScore; +Game.prototype.scoring = function(tile) { + this.score += tile; console.log(this.score) - return this.score; } @@ -83,6 +76,7 @@ Game.prototype.collideLeft = function() { //console.log(row[x-1]); if ((row[x] === row[x+1]) && row[x] !== 0) { row[x] = (row[x] + row[x+1]); + self.scoring(row[x]); row[x+1] = 0; switch(x) { case 0: @@ -126,6 +120,7 @@ Game.prototype.collideRight = function() { //console.log(row[x-1]); if ((row[x] === row[x-1]) && row[x] !== 0) { row[x] = (row[x] + row[x-1]); + self.scoring(row[x]); row[x-1] = 0; switch(x) { case 3: @@ -165,6 +160,7 @@ Game.prototype.collideDown = function() { //console.log(row[x-1]); if (( board[row][bcol] === board[row-1][bcol]) && board[row][bcol] !== 0) { board[row][bcol] = (board[row][bcol] + board[row-1][bcol]); + self.scoring(board[row][bcol]); board[row-1][bcol] = 0; switch(row) { case 3: @@ -203,6 +199,7 @@ Game.prototype.collideUp = function() { for (var row = 0; row < 3; row++) { if (( board[row][bcol] === board[row+1][bcol]) && (board[row][bcol] !== 0)) { board[row][bcol] = (board[row][bcol] + board[row+1][bcol]); + self.scoring(board[row][bcol]); board[row+1][bcol] = 0; switch(row) { case 0: @@ -237,5 +234,5 @@ Game.prototype.collideUp = function() { // var game = new Game(); var f = game.randTile(); -game.moveUp(f); -game.collideUp(); +game.moveLeft(f); +game.collideLeft(); From 8bd0e868e32953b53dd4c3be45250c8e41bc9dc8 Mon Sep 17 00:00:00 2001 From: Tammy Date: Tue, 2 Feb 2016 12:42:06 -0800 Subject: [PATCH 15/60] added functiong to check if lost, but havn't tested it yet --- javascripts/2048.js | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/javascripts/2048.js b/javascripts/2048.js index da10026..6d2a4a1 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -1,11 +1,35 @@ var Game = function() { this.board = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]; this.score = 0; + this.win = false; }; Game.prototype.scoring = function(tile) { this.score += tile; - console.log(this.score) + if (this.score == 2048) { + this.win = true; + } +} + +Game.prototype.lost = function() { + var count = 0; + board = this.board; + //check col + for (var i = 0; i < 4; i++) { + for (var j = 0; j < 3; j ++) { + if (borad[i][j] === [i+1][j]) + { return false; + } + } + //check row + for (var x = 0; x < 3; i++) { + for (var y = 0; y < 4; y ++) { + if (borad[x][y] === [x][y+1]) { + return false; + } + } + return true; + } } From ca62542ff80714577cd96d4655b62283d26e5bdc Mon Sep 17 00:00:00 2001 From: Tammy Date: Tue, 2 Feb 2016 13:35:09 -0800 Subject: [PATCH 16/60] added lost function- not tested yet --- javascripts/2048.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/javascripts/2048.js b/javascripts/2048.js index 6d2a4a1..02463ef 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -17,19 +17,20 @@ Game.prototype.lost = function() { //check col for (var i = 0; i < 4; i++) { for (var j = 0; j < 3; j ++) { - if (borad[i][j] === [i+1][j]) + if (board[i][j] === [i+1][j]) { return false; } } //check row - for (var x = 0; x < 3; i++) { + for (var x = 0; x < 3; i++) for (var y = 0; y < 4; y ++) { - if (borad[x][y] === [x][y+1]) { + if (board[x][y] === [x][y+1]) { return false; } } - return true; } + console.log("Game Over!"); + return true; } From 8633bb20d012bf946aa5f8172ed597245632d459 Mon Sep 17 00:00:00 2001 From: noglows Date: Tue, 2 Feb 2016 14:17:02 -0800 Subject: [PATCH 17/60] Added move board right function --- javascripts/2048.js | 55 ++++++++++++++++++++++++++++----------------- 1 file changed, 35 insertions(+), 20 deletions(-) diff --git a/javascripts/2048.js b/javascripts/2048.js index 02463ef..73bd1ec 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -9,7 +9,7 @@ Game.prototype.scoring = function(tile) { if (this.score == 2048) { this.win = true; } -} +}; Game.prototype.lost = function() { var count = 0; @@ -31,7 +31,7 @@ Game.prototype.lost = function() { } console.log("Game Over!"); return true; -} +}; Game.prototype.randTile = function() { @@ -55,23 +55,25 @@ Game.prototype.randTile = function() { return [i_board, j_board]; }; -Game.prototype.moveTile = function(tile, direction) { +Game.prototype.moveTile = function(direction) { // Game method here - switch(direction) { - case 38: //up - console.log('up'); - break; - case 40: //down - console.log('down'); - break; - case 37: //left - console.log('left'); - break; - case 39: //right - console.log('right'); - // this.moveRight(tile); - // this.collideRight(tile); - break; + board = this.board; + self = this; + switch(direction) { + case 38: //up + console.log('up'); + break; + case 40: //down + console.log('down'); + break; + case 37: //left + console.log('left'); + break; + case 39: //right + console.log('right'); + //this.moveRight(tile); + //this.collideRight(tile); + break; } }; @@ -81,6 +83,7 @@ Game.prototype.moveLeft = function(tile) { var row = tile[0]; var col = tile[1]; var value = this.board[row][col]; + var board_row = this.board[tile[0]]; for(var j=0; j < col; j++) { @@ -93,6 +96,7 @@ Game.prototype.moveLeft = function(tile) { return this.board; }; + Game.prototype.collideLeft = function() { self = this; for (var brow = 0; brow < 4; brow++) { @@ -137,6 +141,17 @@ Game.prototype.moveRight = function(tile) { return this.board; }; +Game.prototype.moveBoardRight = function() { + self = this; + for (var row=0; row < 4; row++) { + for (var col=3; col >= 0; col--) { + self.moveRight([row, col]); + } + } + return this.board; +}; + + Game.prototype.collideRight = function() { self = this; for (var brow = 0; brow < 4; brow++) { @@ -259,5 +274,5 @@ Game.prototype.collideUp = function() { // var game = new Game(); var f = game.randTile(); -game.moveLeft(f); -game.collideLeft(); +game.moveBoardRight(); +game.collideRight(); From d475fc535858a174264939e81f9ca9689d03fbf7 Mon Sep 17 00:00:00 2001 From: Tammy Date: Tue, 2 Feb 2016 14:31:02 -0800 Subject: [PATCH 18/60] function that move the entire board down --- javascripts/2048.js | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/javascripts/2048.js b/javascripts/2048.js index 73bd1ec..57ad345 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -96,6 +96,16 @@ Game.prototype.moveLeft = function(tile) { return this.board; }; +Game.prototype.moveBoardLeft = function() { + self = this; + for (var row=0; row < 4; row++) { + for (var col=0; col < 4; col++) { + self.moveLeft([row, col]); + } + } + return this.board; +}; + Game.prototype.collideLeft = function() { self = this; @@ -192,6 +202,17 @@ Game.prototype.moveDown = function(tile) { return this.board; }; +Game.prototype.moveBoardDown = function() { + self = this; + for (var row = 2; row >= 0; row--) { + for (var col = 0; col < 4; col++) { + + self.moveDown([row, col]); + } + } + return this.board; +}; + Game.prototype.collideDown = function() { self = this; board = this.board; @@ -274,5 +295,5 @@ Game.prototype.collideUp = function() { // var game = new Game(); var f = game.randTile(); -game.moveBoardRight(); -game.collideRight(); +game.moveBoardDown(); +game.collideDown(); From f38b2b122267ef9682f02fe3d081aba634a618f7 Mon Sep 17 00:00:00 2001 From: noglows Date: Tue, 2 Feb 2016 14:33:12 -0800 Subject: [PATCH 19/60] Move board up functionality working --- javascripts/2048.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/javascripts/2048.js b/javascripts/2048.js index 57ad345..423cb25 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -253,6 +253,16 @@ Game.prototype.moveUp = function(tile) { return this.board; }; +Game.prototype.moveBoardUp = function() { + self = this; + for (var row = 1; row < 4; row++) { + for (var col = 0; col < 4; col++) { + self.moveUp([row, col]); + } + } + return this.board; +}; + Game.prototype.collideUp = function() { self = this; board = this.board; @@ -295,5 +305,5 @@ Game.prototype.collideUp = function() { // var game = new Game(); var f = game.randTile(); -game.moveBoardDown(); -game.collideDown(); +game.moveBoardUp(); +game.collideUp(); From 4dfa951e05624323a1ed0dc9c69d6bdd4f50dfa1 Mon Sep 17 00:00:00 2001 From: Tammy Date: Tue, 2 Feb 2016 15:02:21 -0800 Subject: [PATCH 20/60] we have starting point in front end- two random tiles --- index.html | 1 - javascripts/2048.js | 42 +++++++++++++++++++++++++----------------- 2 files changed, 25 insertions(+), 18 deletions(-) diff --git a/index.html b/index.html index 4740408..4a7e370 100644 --- a/index.html +++ b/index.html @@ -26,7 +26,6 @@
-
2
diff --git a/javascripts/2048.js b/javascripts/2048.js index 423cb25..747a766 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -51,7 +51,8 @@ Game.prototype.randTile = function() { this.board[i_board][j_board] = 4; } else { this.board[i_board][j_board] = 2; } // return this.board; - console.log(this.board); + var val = this.board[i_board][j_board]; + $('#gameboard').append('
'+ val +'
') return [i_board, j_board]; }; @@ -61,15 +62,23 @@ Game.prototype.moveTile = function(direction) { self = this; switch(direction) { case 38: //up + self.moveBoardUp(); + self.collideUp(); console.log('up'); break; case 40: //down + self.moveBoardDown(); + self.collideDown(); console.log('down'); break; case 37: //left + self.moveBoardLeft(); + self.collideLeft(); console.log('left'); break; case 39: //right + self.moveBoardRight(); + self.collideRight(); console.log('right'); //this.moveRight(tile); //this.collideRight(tile); @@ -288,22 +297,21 @@ Game.prototype.collideUp = function() { }; -// $(document).ready(function() { -// console.log("ready to go!"); -// // Any interactive jQuery functionality -// var game = new Game(); -// -// $('body').keydown(function(event){ -// var arrows = [37, 38, 39, 40]; -// if (arrows.indexOf(event.which) > -1) { -// var tile = $('.tile'); -// -// game.moveTile(tile, event.which); -// } -// }); -// }); +$(document).ready(function() { + console.log("ready to go!"); + // Any interactive jQuery functionality + var game = new Game(); + game.randTile(); + game.randTile(); + + $('body').keydown(function(event){ + var arrows = [37, 38, 39, 40]; + if (arrows.indexOf(event.which) > -1) { + // var tile = $('.tile'); + game.moveTile(event.which); + } + }); +}); // var game = new Game(); var f = game.randTile(); -game.moveBoardUp(); -game.collideUp(); From 09fe28867bb6828f0ca37304665401179ba73430 Mon Sep 17 00:00:00 2001 From: noglows Date: Wed, 3 Feb 2016 10:50:18 -0800 Subject: [PATCH 21/60] Tiles are moving --- javascripts/2048.js | 36 ++++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/javascripts/2048.js b/javascripts/2048.js index 747a766..a219996 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -52,7 +52,7 @@ Game.prototype.randTile = function() { } else { this.board[i_board][j_board] = 2; } // return this.board; var val = this.board[i_board][j_board]; - $('#gameboard').append('
'+ val +'
') + $('#gameboard').append('
'+ val +'
'); return [i_board, j_board]; }; @@ -89,20 +89,26 @@ Game.prototype.moveTile = function(direction) { Game.prototype.moveLeft = function(tile) { // tile[0] is the row // tile[1] is the column position + self = this; + var $tile; var row = tile[0]; var col = tile[1]; var value = this.board[row][col]; - + var newCol; + $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); var board_row = this.board[tile[0]]; for(var j=0; j < col; j++) { if (board_row[j] === 0) { + newCol = j; this.board[row][j] = value; this.board[row][col] = 0; break; } } - return this.board; + $tile.attr('data-col', 'c' + newCol); + return [row, newCol]; + //return this.board; }; Game.prototype.moveBoardLeft = function() { @@ -145,26 +151,31 @@ Game.prototype.collideLeft = function() { Game.prototype.moveRight = function(tile) { // tile[0] is the row // tile[1] is the column position + var $tile; + var newCol; var row = tile[0]; var col = tile[1]; var value = this.board[row][col]; var board_row = this.board[tile[0]]; + $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); for(var j= 3; j > col; j--) { if (board_row[j] === 0) { + newCol = j; this.board[row][j] = value; this.board[row][col] = 0; break; } } - return this.board; + $tile.attr('data-col', 'c' + newCol); + return [row, newCol]; }; Game.prototype.moveBoardRight = function() { self = this; for (var row=0; row < 4; row++) { for (var col=3; col >= 0; col--) { - self.moveRight([row, col]); + array = self.moveRight([row, col]); } } return this.board; @@ -198,16 +209,21 @@ Game.prototype.collideRight = function() { Game.prototype.moveDown = function(tile) { + var $tile; + var newRow; var row = tile[0]; var col = tile[1]; var value = this.board[row][col]; + $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); for(var i = 3; i > row ; i--) { if ((this.board[i][col]) === 0) { + newRow = i; this.board[i][col] = value; this.board[row][col] = 0; break; } } + $tile.attr('data-row', 'r' + newRow); return this.board; }; @@ -215,13 +231,13 @@ Game.prototype.moveBoardDown = function() { self = this; for (var row = 2; row >= 0; row--) { for (var col = 0; col < 4; col++) { - self.moveDown([row, col]); } } return this.board; }; + Game.prototype.collideDown = function() { self = this; board = this.board; @@ -249,16 +265,21 @@ Game.prototype.collideDown = function() { Game.prototype.moveUp = function(tile) { + var newRow; + var $tile; var row = tile[0]; var col = tile[1]; + $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); var value = this.board[row][col]; for(var i = 0; i < row ; i++) { if ((this.board[i][col]) === 0) { + newRow = i; this.board[i][col] = value; this.board[row][col] = 0; break; } } + $tile.attr('data-row', 'r' + newRow); return this.board; }; @@ -299,7 +320,6 @@ Game.prototype.collideUp = function() { $(document).ready(function() { console.log("ready to go!"); - // Any interactive jQuery functionality var game = new Game(); game.randTile(); game.randTile(); @@ -307,9 +327,9 @@ $(document).ready(function() { $('body').keydown(function(event){ var arrows = [37, 38, 39, 40]; if (arrows.indexOf(event.which) > -1) { - // var tile = $('.tile'); game.moveTile(event.which); } + }); }); // From 1506ddd99b40f9775854b82b2009c365d8098f63 Mon Sep 17 00:00:00 2001 From: Tammy Date: Wed, 3 Feb 2016 11:07:52 -0800 Subject: [PATCH 22/60] added a left collides- currently not working --- javascripts/2048.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/javascripts/2048.js b/javascripts/2048.js index a219996..adf73f8 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -123,6 +123,8 @@ Game.prototype.moveBoardLeft = function() { Game.prototype.collideLeft = function() { + var $tile1; + var $tile2; self = this; for (var brow = 0; brow < 4; brow++) { var row = this.board[brow]; @@ -130,6 +132,11 @@ Game.prototype.collideLeft = function() { //console.log(row[x-1]); if ((row[x] === row[x+1]) && row[x] !== 0) { row[x] = (row[x] + row[x+1]); + $tile1 = $('.tile[data-row="r' + brow + '"][data-col="c' + x + '"]'); + $tile2 = $('.tile[data-row="r' + brow + '"][data-col="c' + x+1 + '"]'); + $tile1.attr('data-val', row[x]); + $tile1.innerHTML(row[x]); + $tile2.remove(); self.scoring(row[x]); row[x+1] = 0; switch(x) { From 66903307dc2883e8a8a869bc156e3c375ea91f84 Mon Sep 17 00:00:00 2001 From: noglows Date: Wed, 3 Feb 2016 11:11:52 -0800 Subject: [PATCH 23/60] Adding random tile each turn --- javascripts/2048.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/javascripts/2048.js b/javascripts/2048.js index a219996..88fff70 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -64,21 +64,25 @@ Game.prototype.moveTile = function(direction) { case 38: //up self.moveBoardUp(); self.collideUp(); + self.randTile(); console.log('up'); break; case 40: //down self.moveBoardDown(); self.collideDown(); + self.randTile(); console.log('down'); break; case 37: //left self.moveBoardLeft(); self.collideLeft(); + self.randTile(); console.log('left'); break; case 39: //right self.moveBoardRight(); self.collideRight(); + self.randTile(); console.log('right'); //this.moveRight(tile); //this.collideRight(tile); From de687bd7a184a3150364d7a5defbae8e4932699f Mon Sep 17 00:00:00 2001 From: noglows Date: Wed, 3 Feb 2016 11:31:09 -0800 Subject: [PATCH 24/60] Collision working better for left --- javascripts/2048.js | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/javascripts/2048.js b/javascripts/2048.js index 6871c4b..b436257 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -62,15 +62,15 @@ Game.prototype.moveTile = function(direction) { self = this; switch(direction) { case 38: //up - self.moveBoardUp(); - self.collideUp(); - self.randTile(); + // self.moveBoardUp(); + // self.collideUp(); + // self.randTile(); console.log('up'); break; case 40: //down - self.moveBoardDown(); - self.collideDown(); - self.randTile(); + // self.moveBoardDown(); + // self.collideDown(); + // self.randTile(); console.log('down'); break; case 37: //left @@ -80,9 +80,9 @@ Game.prototype.moveTile = function(direction) { console.log('left'); break; case 39: //right - self.moveBoardRight(); - self.collideRight(); - self.randTile(); + // self.moveBoardRight(); + // self.collideRight(); + // self.randTile(); console.log('right'); //this.moveRight(tile); //this.collideRight(tile); @@ -101,7 +101,6 @@ Game.prototype.moveLeft = function(tile) { var newCol; $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); var board_row = this.board[tile[0]]; - for(var j=0; j < col; j++) { if (board_row[j] === 0) { newCol = j; @@ -125,6 +124,11 @@ Game.prototype.moveBoardLeft = function() { return this.board; }; +Game.prototype.selectTile = function(row, col) { + var $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); + return $tile; +}; + Game.prototype.collideLeft = function() { var $tile1; @@ -136,11 +140,12 @@ Game.prototype.collideLeft = function() { //console.log(row[x-1]); if ((row[x] === row[x+1]) && row[x] !== 0) { row[x] = (row[x] + row[x+1]); - $tile1 = $('.tile[data-row="r' + brow + '"][data-col="c' + x + '"]'); - $tile2 = $('.tile[data-row="r' + brow + '"][data-col="c' + x+1 + '"]'); + $tile1 = self.selectTile(brow, x); + $tile2 = self.selectTile(brow, x+1); $tile1.attr('data-val', row[x]); - $tile1.innerHTML(row[x]); + $tile1.html(row[x]); $tile2.remove(); + console.log($tile2); self.scoring(row[x]); row[x+1] = 0; switch(x) { @@ -201,6 +206,8 @@ Game.prototype.collideRight = function() { //console.log(row[x-1]); if ((row[x] === row[x-1]) && row[x] !== 0) { row[x] = (row[x] + row[x-1]); + $tile1 = self.selectTile(brow, x); + $tile2 = self.selectTile(brow, x-1); self.scoring(row[x]); row[x-1] = 0; switch(x) { From f15ce4263f14e6315d95d34861183409856ddf75 Mon Sep 17 00:00:00 2001 From: noglows Date: Wed, 3 Feb 2016 14:45:51 -0800 Subject: [PATCH 25/60] Working on collide left logic --- javascripts/2048.js | 68 ++++++++++++++++++++++++++++----------------- 1 file changed, 42 insertions(+), 26 deletions(-) diff --git a/javascripts/2048.js b/javascripts/2048.js index b436257..c88a5f3 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -75,8 +75,8 @@ Game.prototype.moveTile = function(direction) { break; case 37: //left self.moveBoardLeft(); - self.collideLeft(); - self.randTile(); + self.collideBoardLeft(); + //self.randTile(); console.log('left'); break; case 39: //right @@ -124,42 +124,58 @@ Game.prototype.moveBoardLeft = function() { return this.board; }; -Game.prototype.selectTile = function(row, col) { - var $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); +Game.prototype.selectTile = function(row, col, value) { + //console.log("row = " + row) + //console.log("col = " + col) + var $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"][data-val="' + value + '"]'); return $tile; }; -Game.prototype.collideLeft = function() { - var $tile1; - var $tile2; +Game.prototype.collideLeft = function(row, col) { + self = this; + //var $tile1; + //var $tile2; + // self = this; + // for (var brow = 0; brow < 4; brow++) { + // var row = this.board[brow]; + // for (var x = 0; x < 4; x++) { + // //console.log(row[x-1]); + // if ((row[x] === row[x+1]) && row[x] !== 0) { + var value = this.board[row][col]; + var value2 = this.board[row][col+1]; + $tile1 = self.selectTile(row, col, value); + $tile2 = self.selectTile(row, col+1, value2); + this.board[row][col] = (value + value2); + $tile1.attr('data-val', this.board[row][col]); + $tile1.html(this.board[row][col]); + $tile2.remove(); + //self.scoring(row[x]); + this.board[row][col+1] = 0; + switch(col) { + case 0: + self.moveRight([row, col+2]); + self.moveRight([row, col+3]); + break; + case 1: + self.moveRight([row, col+2]); + break; + } + return this.board; +}; + +Game.prototype.collideBoardLeft = function() { self = this; for (var brow = 0; brow < 4; brow++) { var row = this.board[brow]; for (var x = 0; x < 4; x++) { //console.log(row[x-1]); if ((row[x] === row[x+1]) && row[x] !== 0) { - row[x] = (row[x] + row[x+1]); - $tile1 = self.selectTile(brow, x); - $tile2 = self.selectTile(brow, x+1); - $tile1.attr('data-val', row[x]); - $tile1.html(row[x]); - $tile2.remove(); - console.log($tile2); - self.scoring(row[x]); - row[x+1] = 0; - switch(x) { - case 0: - self.moveRight([brow, x+2]); - self.moveRight([brow, x+3]); - break; - case 1: - self.moveRight([brow, x+2]); - break; - } - } + self.collideLeft(brow, x); + } } } + console.log(this.board) return this.board; }; From 42a85b6266213885e5ccde0d6e25e6f8d613a209 Mon Sep 17 00:00:00 2001 From: noglows Date: Thu, 4 Feb 2016 10:34:42 -0800 Subject: [PATCH 26/60] Added backup file to troubleshoot bugs --- index.html | 2 +- javascripts/2048.js | 4 +- javascripts/2048_2.js | 155 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 159 insertions(+), 2 deletions(-) create mode 100644 javascripts/2048_2.js diff --git a/index.html b/index.html index 4a7e370..93768f0 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ 2048 - +
diff --git a/javascripts/2048.js b/javascripts/2048.js index c88a5f3..2f9039d 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -127,6 +127,7 @@ Game.prototype.moveBoardLeft = function() { Game.prototype.selectTile = function(row, col, value) { //console.log("row = " + row) //console.log("col = " + col) + console.log(col) var $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"][data-val="' + value + '"]'); return $tile; }; @@ -175,7 +176,7 @@ Game.prototype.collideBoardLeft = function() { } } } - console.log(this.board) + console.log(this.board); return this.board; }; @@ -222,6 +223,7 @@ Game.prototype.collideRight = function() { //console.log(row[x-1]); if ((row[x] === row[x-1]) && row[x] !== 0) { row[x] = (row[x] + row[x-1]); + $tile1 = self.selectTile(brow, x); $tile2 = self.selectTile(brow, x-1); self.scoring(row[x]); diff --git a/javascripts/2048_2.js b/javascripts/2048_2.js new file mode 100644 index 0000000..ec8cf78 --- /dev/null +++ b/javascripts/2048_2.js @@ -0,0 +1,155 @@ +var Game = function() { + this.board = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]; + this.score = 0; + this.win = false; +}; + +Game.prototype.randTile = function() { + var arr = []; + for(var i = 0; i < 4; i++) { + for(var j = 0; j < 4; j++ ) { + if( this.board[i][j] === 0 ) { + arr.push([i,j]); + } + } + } + var randNum = Math.floor((Math.random() * arr.length)); + var i_board = arr[randNum][0]; + var j_board = arr[randNum][1]; + + if (Math.floor((Math.random() * 10) + 1) == 7) { + this.board[i_board][j_board] = 4; + } else { this.board[i_board][j_board] = 2; } + // return this.board; + var val = this.board[i_board][j_board]; + //$('#gameboard').append('
'+ val +'
'); + + return [i_board, j_board]; +}; + +Game.prototype.moveLeft = function(row,col) { + // tile[0] is the row + // tile[1] is the column position + self = this; + var $tile; + var value = this.board[row][col]; + var newCol; + $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); + var board_row = this.board[row]; + for(var j=0; j < col; j++) { + if (board_row[j] === 0) { + this.board[row][j] = value; + $tile.attr('data-col', 'c' + j); + this.board[row][col] = 0; + break; + } + } + return [row, newCol]; +}; + +Game.prototype.moveBoardLeft = function() { + self = this; + for (var row=0; row < 4; row++) { + for (var col=0; col < 4; col++) { + self.moveLeft(row, col); + } + } + return this.board; +}; + +Game.prototype.selectTile = function(row, col, value) { + //console.log("row = " + row) + //console.log("col = " + col) + var $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"][data-val="' + value + '"]'); + return $tile; +}; + +Game.prototype.collideLeft = function(row, col) { + self = this; + var value = this.board[row][col]; + var value2 = this.board[row][col+1]; + $tile1 = self.selectTile(row, col, value); + $tile2 = self.selectTile(row, col+1, value2); + this.board[row][col] = (value + value2); + $tile1.attr('data-val', this.board[row][col]); + $tile1.html(this.board[row][col]); + $tile2.remove(); + this.board[row][col+1] = 0; + switch(col) { + case 0: + self.moveLeft([row, col+2]); + self.moveLeft([row, col+3]); + break; + case 1: + self.moveLeft([row, col+2]); + break; + } + return this.board; +}; + +Game.prototype.collideBoardLeft = function() { + self = this; + for (var brow = 0; brow < 4; brow++) { + var row = this.board[brow]; + for (var x = 0; x < 4; x++) { + //console.log(row[x-1]); + if ((row[x] === row[x+1]) && row[x] !== 0) { + self.collideLeft(brow, x); + } + } + } + return this.board; +}; + +Game.prototype.moveTile = function(direction) { + // Game method here + board = this.board; + self = this; + switch(direction) { + case 38: //up + // self.moveBoardUp(); + // self.collideUp(); + // self.randTile(); + console.log('up'); + break; + case 40: //down + // self.moveBoardDown(); + // self.collideDown(); + // self.randTile(); + console.log('down'); + break; + case 37: //left + self.moveBoardLeft(); + self.collideBoardLeft(); + //self.randTile(); + console.log('left'); + break; + case 39: //right + // self.moveBoardRight(); + // self.collideRight(); + // self.randTile(); + console.log('right'); + //this.moveRight(tile); + //this.collideRight(tile); + break; + } +}; + +$(document).ready(function() { + console.log("ready to go!"); + var game = new Game(); + //game.randTile(); + //game.randTile(); + game.board[0][2] = 2; + game.board[0][3] = 2; + $('#gameboard').append('
'+ 2 +'
'); + $('#gameboard').append('
'+ 2 +'
'); + + $('body').keydown(function(event){ + var arrows = [37, 38, 39, 40]; + if (arrows.indexOf(event.which) > -1) { + game.moveTile(event.which); + } + + }); +}); From ee8012680a24f82482f852d70b7bd68c2863bb7f Mon Sep 17 00:00:00 2001 From: noglows Date: Thu, 4 Feb 2016 10:35:14 -0800 Subject: [PATCH 27/60] File reorg --- javascripts/2048_2.js | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/javascripts/2048_2.js b/javascripts/2048_2.js index ec8cf78..7c0c819 100644 --- a/javascripts/2048_2.js +++ b/javascripts/2048_2.js @@ -27,6 +27,11 @@ Game.prototype.randTile = function() { return [i_board, j_board]; }; +Game.prototype.selectTile = function(row, col, value) { + var $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"][data-val="' + value + '"]'); + return $tile; +}; + Game.prototype.moveLeft = function(row,col) { // tile[0] is the row // tile[1] is the column position @@ -57,13 +62,6 @@ Game.prototype.moveBoardLeft = function() { return this.board; }; -Game.prototype.selectTile = function(row, col, value) { - //console.log("row = " + row) - //console.log("col = " + col) - var $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"][data-val="' + value + '"]'); - return $tile; -}; - Game.prototype.collideLeft = function(row, col) { self = this; var value = this.board[row][col]; From 698354a8a648dfa4cdfecf3c596aab9cd36e3492 Mon Sep 17 00:00:00 2001 From: noglows Date: Thu, 4 Feb 2016 10:41:27 -0800 Subject: [PATCH 28/60] Minor bug fixes --- javascripts/2048_2.js | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/javascripts/2048_2.js b/javascripts/2048_2.js index 7c0c819..b51a2fa 100644 --- a/javascripts/2048_2.js +++ b/javascripts/2048_2.js @@ -75,11 +75,11 @@ Game.prototype.collideLeft = function(row, col) { this.board[row][col+1] = 0; switch(col) { case 0: - self.moveLeft([row, col+2]); - self.moveLeft([row, col+3]); + self.moveLeft(row, col+2); + self.moveLeft(row, col+3); break; case 1: - self.moveLeft([row, col+2]); + self.moveLeft(row, col+2); break; } return this.board; @@ -138,16 +138,15 @@ $(document).ready(function() { var game = new Game(); //game.randTile(); //game.randTile(); - game.board[0][2] = 2; - game.board[0][3] = 2; - $('#gameboard').append('
'+ 2 +'
'); - $('#gameboard').append('
'+ 2 +'
'); + game.board[1][1] = 2; + game.board[1][3] = 2; + $('#gameboard').append('
'+ 2 +'
'); + $('#gameboard').append('
'+ 2 +'
'); $('body').keydown(function(event){ var arrows = [37, 38, 39, 40]; if (arrows.indexOf(event.which) > -1) { game.moveTile(event.which); } - }); }); From dce022adee772de2b5eb031e6add8a581afda149 Mon Sep 17 00:00:00 2001 From: noglows Date: Thu, 4 Feb 2016 10:55:18 -0800 Subject: [PATCH 29/60] Rewrote move right logic in 2048_2 --- javascripts/2048_2.js | 88 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 76 insertions(+), 12 deletions(-) diff --git a/javascripts/2048_2.js b/javascripts/2048_2.js index b51a2fa..239793a 100644 --- a/javascripts/2048_2.js +++ b/javascripts/2048_2.js @@ -33,9 +33,7 @@ Game.prototype.selectTile = function(row, col, value) { }; Game.prototype.moveLeft = function(row,col) { - // tile[0] is the row - // tile[1] is the column position - self = this; + //self = this; var $tile; var value = this.board[row][col]; var newCol; @@ -52,6 +50,24 @@ Game.prototype.moveLeft = function(row,col) { return [row, newCol]; }; +Game.prototype.moveRight = function(row,col) { + //self = this; + var $tile; + var value = this.board[row][col]; + var newCol; + $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); + var board_row = this.board[row]; + for(var j= 3; j > col; j--) { + if (board_row[j] === 0) { + this.board[row][j] = value; + $tile.attr('data-col', 'c' + j); + this.board[row][col] = 0; + break; + } + } + return [row, newCol]; +}; + Game.prototype.moveBoardLeft = function() { self = this; for (var row=0; row < 4; row++) { @@ -62,6 +78,16 @@ Game.prototype.moveBoardLeft = function() { return this.board; }; +Game.prototype.moveBoardRight = function() { + self = this; + for (var row=0; row < 4; row++) { + for (var col=3; col >= 0; col--) { + self.moveRight(row, col); + } + } + return this.board; +}; + Game.prototype.collideLeft = function(row, col) { self = this; var value = this.board[row][col]; @@ -85,12 +111,34 @@ Game.prototype.collideLeft = function(row, col) { return this.board; }; +Game.prototype.collideRight = function(row, col) { + self = this; + var value = this.board[row][col]; + var value2 = this.board[row][col-1]; + $tile1 = self.selectTile(row, col, value); + $tile2 = self.selectTile(row, col-1, value2); + this.board[row][col] = (value + value2); + $tile1.attr('data-val', this.board[row][col]); + $tile1.html(this.board[row][col]); + $tile2.remove(); + this.board[row][col+1] = 0; + switch(col) { + case 3: + self.moveRight(row, col-2); + self.moveRight(row, col-3); + break; + case 2: + self.moveRight(row, col-2); + break; + } + return this.board; +}; + Game.prototype.collideBoardLeft = function() { self = this; for (var brow = 0; brow < 4; brow++) { var row = this.board[brow]; for (var x = 0; x < 4; x++) { - //console.log(row[x-1]); if ((row[x] === row[x+1]) && row[x] !== 0) { self.collideLeft(brow, x); } @@ -99,6 +147,19 @@ Game.prototype.collideBoardLeft = function() { return this.board; }; +Game.prototype.collideBoardRight = function() { + self = this; + for (var brow = 0; brow < 4; brow++) { + var row = this.board[brow]; + for (var x = 3; x >= 0; x--) { + if ((row[x] === row[x-1]) && row[x] !== 0) { + self.collideRight(brow, x); + } + } + } + return this.board; +}; + Game.prototype.moveTile = function(direction) { // Game method here board = this.board; @@ -117,14 +178,14 @@ Game.prototype.moveTile = function(direction) { console.log('down'); break; case 37: //left - self.moveBoardLeft(); - self.collideBoardLeft(); + //self.moveBoardLeft(); + //self.collideBoardLeft(); //self.randTile(); console.log('left'); break; case 39: //right - // self.moveBoardRight(); - // self.collideRight(); + self.moveBoardRight(); + self.collideBoardRight(); // self.randTile(); console.log('right'); //this.moveRight(tile); @@ -138,10 +199,13 @@ $(document).ready(function() { var game = new Game(); //game.randTile(); //game.randTile(); - game.board[1][1] = 2; - game.board[1][3] = 2; - $('#gameboard').append('
'+ 2 +'
'); - $('#gameboard').append('
'+ 2 +'
'); + var test_row = 3 + var test_col1 = 0 + var test_col2 = 1 + game.board[test_row][test_col1] = 2; + game.board[test_row][test_col2] = 2; + $('#gameboard').append('
'+ 2 +'
'); + $('#gameboard').append('
'+ 2 +'
'); $('body').keydown(function(event){ var arrows = [37, 38, 39, 40]; From c158734eb365323eb318968f097397aecfbac74c Mon Sep 17 00:00:00 2001 From: noglows Date: Thu, 4 Feb 2016 11:22:12 -0800 Subject: [PATCH 30/60] Timing fixes --- javascripts/2048_2.js | 66 ++++++++++++++++++++++++------------------- 1 file changed, 37 insertions(+), 29 deletions(-) diff --git a/javascripts/2048_2.js b/javascripts/2048_2.js index 239793a..1743259 100644 --- a/javascripts/2048_2.js +++ b/javascripts/2048_2.js @@ -17,12 +17,13 @@ Game.prototype.randTile = function() { var i_board = arr[randNum][0]; var j_board = arr[randNum][1]; - if (Math.floor((Math.random() * 10) + 1) == 7) { - this.board[i_board][j_board] = 4; - } else { this.board[i_board][j_board] = 2; } - // return this.board; + if (Math.floor((Math.random() * 10) + 1) == 7) { + this.board[i_board][j_board] = 4; + } else { + this.board[i_board][j_board] = 2; + } var val = this.board[i_board][j_board]; - //$('#gameboard').append('
'+ val +'
'); + $('#gameboard').append('
'+ val +'
'); return [i_board, j_board]; }; @@ -33,10 +34,8 @@ Game.prototype.selectTile = function(row, col, value) { }; Game.prototype.moveLeft = function(row,col) { - //self = this; var $tile; var value = this.board[row][col]; - var newCol; $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); var board_row = this.board[row]; for(var j=0; j < col; j++) { @@ -47,14 +46,12 @@ Game.prototype.moveLeft = function(row,col) { break; } } - return [row, newCol]; + return [row, col]; }; Game.prototype.moveRight = function(row,col) { - //self = this; var $tile; var value = this.board[row][col]; - var newCol; $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); var board_row = this.board[row]; for(var j= 3; j > col; j--) { @@ -65,7 +62,7 @@ Game.prototype.moveRight = function(row,col) { break; } } - return [row, newCol]; + return [row, col]; }; Game.prototype.moveBoardLeft = function() { @@ -95,9 +92,12 @@ Game.prototype.collideLeft = function(row, col) { $tile1 = self.selectTile(row, col, value); $tile2 = self.selectTile(row, col+1, value2); this.board[row][col] = (value + value2); - $tile1.attr('data-val', this.board[row][col]); - $tile1.html(this.board[row][col]); - $tile2.remove(); + $tile2.attr('data-col', col); + setTimeout(function() { + $tile1.attr('data-val', this.board[row][col]); + $tile1.html(this.board[row][col]); + $tile2.remove(); + }, 200); this.board[row][col+1] = 0; switch(col) { case 0: @@ -118,6 +118,7 @@ Game.prototype.collideRight = function(row, col) { $tile1 = self.selectTile(row, col, value); $tile2 = self.selectTile(row, col-1, value2); this.board[row][col] = (value + value2); + $tile2.attr('data-col', col); $tile1.attr('data-val', this.board[row][col]); $tile1.html(this.board[row][col]); $tile2.remove(); @@ -178,18 +179,25 @@ Game.prototype.moveTile = function(direction) { console.log('down'); break; case 37: //left - //self.moveBoardLeft(); - //self.collideBoardLeft(); + self.moveBoardLeft(); + setTimeout(function() { + self.collideBoardLeft(); + }, 200); + setTimeout(function() { + self.randTile(); + }, 200); //self.randTile(); console.log('left'); break; case 39: //right self.moveBoardRight(); - self.collideBoardRight(); - // self.randTile(); + setTimeout(function() { + self.collideBoardRight(); + }, 200); + setTimeout(function() { + self.randTile(); + }, 200); console.log('right'); - //this.moveRight(tile); - //this.collideRight(tile); break; } }; @@ -197,15 +205,15 @@ Game.prototype.moveTile = function(direction) { $(document).ready(function() { console.log("ready to go!"); var game = new Game(); - //game.randTile(); - //game.randTile(); - var test_row = 3 - var test_col1 = 0 - var test_col2 = 1 - game.board[test_row][test_col1] = 2; - game.board[test_row][test_col2] = 2; - $('#gameboard').append('
'+ 2 +'
'); - $('#gameboard').append('
'+ 2 +'
'); + game.randTile(); + game.randTile(); + // var test_row = 3 + // var test_col1 = 0 + // var test_col2 = 1 + // game.board[test_row][test_col1] = 2; + // game.board[test_row][test_col2] = 2; + // $('#gameboard').append('
'+ 2 +'
'); + // $('#gameboard').append('
'+ 2 +'
'); $('body').keydown(function(event){ var arrows = [37, 38, 39, 40]; From 8563d3d75ad69f0dd98d9c616b9f04040d33e2cc Mon Sep 17 00:00:00 2001 From: noglows Date: Thu, 4 Feb 2016 12:10:20 -0800 Subject: [PATCH 31/60] Potentially fixed the terrible bug --- javascripts/2048_2.js | 67 +++++++++++++++++++++++++++++++++---------- 1 file changed, 52 insertions(+), 15 deletions(-) diff --git a/javascripts/2048_2.js b/javascripts/2048_2.js index 1743259..428b961 100644 --- a/javascripts/2048_2.js +++ b/javascripts/2048_2.js @@ -34,6 +34,7 @@ Game.prototype.selectTile = function(row, col, value) { }; Game.prototype.moveLeft = function(row,col) { + console.log("move left is about to happen") var $tile; var value = this.board[row][col]; $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); @@ -46,10 +47,11 @@ Game.prototype.moveLeft = function(row,col) { break; } } - return [row, col]; + console.log(this.board) }; Game.prototype.moveRight = function(row,col) { + console.log("move right is about to happen") var $tile; var value = this.board[row][col]; $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); @@ -62,26 +64,34 @@ Game.prototype.moveRight = function(row,col) { break; } } - return [row, col]; + console.log(this.board) }; Game.prototype.moveBoardLeft = function() { + console.log("move board left is about to happen") self = this; for (var row=0; row < 4; row++) { - for (var col=0; col < 4; col++) { - self.moveLeft(row, col); + for (var col=1; col < 4; col++) { + if (this.board[row][col] !== 0) { + self.moveLeft(row, col); + } } } + console.log(this.board) return this.board; }; Game.prototype.moveBoardRight = function() { + console.log("move board right is about to happen") self = this; for (var row=0; row < 4; row++) { for (var col=3; col >= 0; col--) { - self.moveRight(row, col); + if (this.board[row][col] !== 0) { + self.moveRight(row, col); + } } } + console.log(this.board) return this.board; }; @@ -92,22 +102,34 @@ Game.prototype.collideLeft = function(row, col) { $tile1 = self.selectTile(row, col, value); $tile2 = self.selectTile(row, col+1, value2); this.board[row][col] = (value + value2); + this.board[row][col+1] = 0; $tile2.attr('data-col', col); setTimeout(function() { $tile1.attr('data-val', this.board[row][col]); $tile1.html(this.board[row][col]); + console.log("This is tile 1"); + console.log($tile1); $tile2.remove(); }, 200); - this.board[row][col+1] = 0; + switch(col) { case 0: - self.moveLeft(row, col+2); - self.moveLeft(row, col+3); + console.log("case 0 is breaking it on collide left") + if (this.board[row][col+2] !== 0) { + self.moveLeft(row, col+2); + } + if (this.board[row][col+3] !== 0) { + self.moveLeft(row, col+3); + } + console.log(this.board) break; case 1: + console.log("case 0 is breaking it on collide left") self.moveLeft(row, col+2); + console.log(this.board) break; } + console.log(this.board) return this.board; }; @@ -118,37 +140,50 @@ Game.prototype.collideRight = function(row, col) { $tile1 = self.selectTile(row, col, value); $tile2 = self.selectTile(row, col-1, value2); this.board[row][col] = (value + value2); + this.board[row][col-1] = 0; $tile2.attr('data-col', col); $tile1.attr('data-val', this.board[row][col]); $tile1.html(this.board[row][col]); $tile2.remove(); - this.board[row][col+1] = 0; + switch(col) { case 3: - self.moveRight(row, col-2); - self.moveRight(row, col-3); + console.log("case 3 is breaking it on collide right") + if (this.board[row][col-2] !== 0) { + self.moveRight(row, col-2); + } + if (this.board[row][col-3] !== 0) { + self.moveRight(row, col-3); + } + console.log(this.board) break; case 2: + console.log("case 2 is breaking it on collide right") self.moveRight(row, col-2); + console.log(this.board) break; } + console.log(this.board); return this.board; }; Game.prototype.collideBoardLeft = function() { + console.log("collide board left is about to happen") self = this; for (var brow = 0; brow < 4; brow++) { var row = this.board[brow]; for (var x = 0; x < 4; x++) { - if ((row[x] === row[x+1]) && row[x] !== 0) { + if ((row[x] === row[x+1]) && (row[x] !== 0)) { self.collideLeft(brow, x); } } } + console.log(this.board); return this.board; }; Game.prototype.collideBoardRight = function() { + console.log("collide board right is about to happen") self = this; for (var brow = 0; brow < 4; brow++) { var row = this.board[brow]; @@ -158,6 +193,7 @@ Game.prototype.collideBoardRight = function() { } } } + console.log(this.board) return this.board; }; @@ -170,13 +206,11 @@ Game.prototype.moveTile = function(direction) { // self.moveBoardUp(); // self.collideUp(); // self.randTile(); - console.log('up'); break; case 40: //down // self.moveBoardDown(); // self.collideDown(); // self.randTile(); - console.log('down'); break; case 37: //left self.moveBoardLeft(); @@ -207,13 +241,16 @@ $(document).ready(function() { var game = new Game(); game.randTile(); game.randTile(); - // var test_row = 3 + // var test_row = 0 // var test_col1 = 0 // var test_col2 = 1 + // var test_col3 = 2 // game.board[test_row][test_col1] = 2; // game.board[test_row][test_col2] = 2; + // game.board[test_row][test_col3] = 2; // $('#gameboard').append('
'+ 2 +'
'); // $('#gameboard').append('
'+ 2 +'
'); + // $('#gameboard').append('
'+ 2 +'
'); $('body').keydown(function(event){ var arrows = [37, 38, 39, 40]; From 7116f2f2bfaf85cf81236bc0daca62543ba3426c Mon Sep 17 00:00:00 2001 From: noglows Date: Thu, 4 Feb 2016 12:17:30 -0800 Subject: [PATCH 32/60] Removed console.logs --- javascripts/2048_2.js | 30 +++--------------------------- 1 file changed, 3 insertions(+), 27 deletions(-) diff --git a/javascripts/2048_2.js b/javascripts/2048_2.js index 428b961..508e4f8 100644 --- a/javascripts/2048_2.js +++ b/javascripts/2048_2.js @@ -34,7 +34,6 @@ Game.prototype.selectTile = function(row, col, value) { }; Game.prototype.moveLeft = function(row,col) { - console.log("move left is about to happen") var $tile; var value = this.board[row][col]; $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); @@ -47,11 +46,9 @@ Game.prototype.moveLeft = function(row,col) { break; } } - console.log(this.board) }; Game.prototype.moveRight = function(row,col) { - console.log("move right is about to happen") var $tile; var value = this.board[row][col]; $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); @@ -64,11 +61,9 @@ Game.prototype.moveRight = function(row,col) { break; } } - console.log(this.board) }; Game.prototype.moveBoardLeft = function() { - console.log("move board left is about to happen") self = this; for (var row=0; row < 4; row++) { for (var col=1; col < 4; col++) { @@ -77,12 +72,10 @@ Game.prototype.moveBoardLeft = function() { } } } - console.log(this.board) return this.board; }; Game.prototype.moveBoardRight = function() { - console.log("move board right is about to happen") self = this; for (var row=0; row < 4; row++) { for (var col=3; col >= 0; col--) { @@ -91,7 +84,6 @@ Game.prototype.moveBoardRight = function() { } } } - console.log(this.board) return this.board; }; @@ -107,29 +99,22 @@ Game.prototype.collideLeft = function(row, col) { setTimeout(function() { $tile1.attr('data-val', this.board[row][col]); $tile1.html(this.board[row][col]); - console.log("This is tile 1"); - console.log($tile1); $tile2.remove(); }, 200); switch(col) { case 0: - console.log("case 0 is breaking it on collide left") if (this.board[row][col+2] !== 0) { self.moveLeft(row, col+2); - } + }; if (this.board[row][col+3] !== 0) { self.moveLeft(row, col+3); - } - console.log(this.board) + }; break; case 1: - console.log("case 0 is breaking it on collide left") self.moveLeft(row, col+2); - console.log(this.board) break; - } - console.log(this.board) + }; return this.board; }; @@ -148,27 +133,21 @@ Game.prototype.collideRight = function(row, col) { switch(col) { case 3: - console.log("case 3 is breaking it on collide right") if (this.board[row][col-2] !== 0) { self.moveRight(row, col-2); } if (this.board[row][col-3] !== 0) { self.moveRight(row, col-3); } - console.log(this.board) break; case 2: - console.log("case 2 is breaking it on collide right") self.moveRight(row, col-2); - console.log(this.board) break; } - console.log(this.board); return this.board; }; Game.prototype.collideBoardLeft = function() { - console.log("collide board left is about to happen") self = this; for (var brow = 0; brow < 4; brow++) { var row = this.board[brow]; @@ -178,12 +157,10 @@ Game.prototype.collideBoardLeft = function() { } } } - console.log(this.board); return this.board; }; Game.prototype.collideBoardRight = function() { - console.log("collide board right is about to happen") self = this; for (var brow = 0; brow < 4; brow++) { var row = this.board[brow]; @@ -193,7 +170,6 @@ Game.prototype.collideBoardRight = function() { } } } - console.log(this.board) return this.board; }; From 52d9ede1acb81e101b16e19c560b264cf06da736 Mon Sep 17 00:00:00 2001 From: Tammy Date: Thu, 4 Feb 2016 12:23:07 -0800 Subject: [PATCH 33/60] the up seems to work --- index.html | 2 +- javascripts/2048_3.js | 165 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 166 insertions(+), 1 deletion(-) create mode 100644 javascripts/2048_3.js diff --git a/index.html b/index.html index 93768f0..a9d2d7c 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ 2048 - +
diff --git a/javascripts/2048_3.js b/javascripts/2048_3.js new file mode 100644 index 0000000..4228dea --- /dev/null +++ b/javascripts/2048_3.js @@ -0,0 +1,165 @@ +var Game = function() { + this.board = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]; + this.score = 0; + this.win = false; +}; + +Game.prototype.randTile = function() { + var arr = []; + for(var i = 0; i < 4; i++) { + for(var j = 0; j < 4; j++ ) { + if( this.board[i][j] === 0 ) { + arr.push([i,j]); + } + } + } + var randNum = Math.floor((Math.random() * arr.length)); + var i_board = arr[randNum][0]; + var j_board = arr[randNum][1]; + + if (Math.floor((Math.random() * 10) + 1) == 7) { + this.board[i_board][j_board] = 4; + } else { this.board[i_board][j_board] = 2; } + // return this.board; + var val = this.board[i_board][j_board]; + //$('#gameboard').append('
'+ val +'
'); + + return [i_board, j_board]; +}; + +Game.prototype.selectTile = function(row, col, value) { + var $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"][data-val="' + value + '"]'); + return $tile; +}; + + +Game.prototype.moveUp = function(row, col) { + self = this; + var $tile; + var value = this.board[row][col]; + $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); + if (this.board[row][col] !== 0) { + for(var i = 0; i < row ; i++) { + if ((this.board[i][col]) === 0) { + this.board[i][col] = value; + $tile.attr('data-row', 'r' + i); + this.board[row][col] = 0; + break; + } + } + } +}; + +Game.prototype.moveBoardUp = function() { + self = this; + for (var row = 1; row < 4; row++) { + for (var col = 0; col < 4; col++) { + self.moveUp(row, col); + } + } + return this.board; +}; + +Game.prototype.collideUp = function(row, col) { + self = this; + var value = this.board[row][col]; + var value2 = this.board[row+1][col]; + $tile1 = self.selectTile(row, col, value); + $tile2 = self.selectTile(row+1, col, value2); + this.board[row][col] = (value + value2); + $tile1.attr('data-val', this.board[row][col]); + $tile1.html(this.board[row][col]); + $tile2.remove(); + this.board[row+1][col] = 0; + switch(row) { + case 0: + $tile3 = self.selectTile(2, col, this.board[2][col]); + $tile4 = self.selectTile(3, col, this.board[3][col]); + $tile3.attr('data-row', 'r' + 1); + $tile4.attr('data-row', 'r' + 2); + this.board[1][col] = this.board[2][col]; + this.board[2][col] = this.board[3][col]; + this.board[3][col] = 0; + // self.moveUp([row+3, col]); + break; + case 1: + $tile5 = self.selectTile(3, col, this.board[3][col]); + $tile5.attr('data-row', 'r' + 2); + this.board[2][col] = this.board[3][col]; + this.board[3][col] = 0; + break; + } + return this.board; +} + +Game.prototype.collideBoardUp = function() { +self = this; +for (var row = 0; row < 3 ; row++) { + for (var col = 0; col < 4; col++) { + if (( board[row][col] === board[row+1][col]) && (board[row][col] !== 0)) { + self.collideUp(row, col); + } + } +} +return this.board; +} + +Game.prototype.moveTile = function(direction) { +// Game method here +board = this.board; +self = this; + switch(direction) { + case 38: //up + self.moveBoardUp(); + self.collideBoardUp(); + self.randTile(); + console.log('up'); + break; + case 40: //down + // self.moveBoardDown(); + // self.collideDown(); + // self.randTile(); + console.log('down'); + break; + case 37: //left + // self.moveBoardLeft(); + // self.collideBoardLeft(); + //self.randTile(); + console.log('left'); + break; + case 39: //right + // self.moveBoardRight(); + // self.collideRight(); + // self.randTile(); + console.log('right'); + //this.moveRight(tile); + //this.collideRight(tile); + break; + } +}; + +$(document).ready(function() { + console.log("ready to go!"); + var game = new Game(); + //game.randTile(); + //game.randTile(); + col = 2; + rowo =3; + row2 = 1; + row3 = 0; + row4 = 2; + game.board[rowo][col] = 2; + game.board[row2][col] = 2; + game.board[row4][col] = 2; + game.board[row3][col] = 2; + $('#gameboard').append('
'+ 2 +'
'); + $('#gameboard').append('
'+ 2 +'
'); + $('#gameboard').append('
'+ 2 +'
'); + $('#gameboard').append('
'+ 2 +'
'); + $('body').keydown(function(event){ + var arrows = [37, 38, 39, 40]; + if (arrows.indexOf(event.which) > -1) { + game.moveTile(event.which); + } + }); +}); From 8077655adc40c6464eacb9e171f6f7de81b9b6e8 Mon Sep 17 00:00:00 2001 From: Tammy Date: Thu, 4 Feb 2016 12:31:59 -0800 Subject: [PATCH 34/60] moving up looks great --- index.html | 2 +- javascripts/2048.js | 96 +++++++++++++++++++++++++------------------ javascripts/2048_3.js | 30 +++++++------- 3 files changed, 73 insertions(+), 55 deletions(-) diff --git a/index.html b/index.html index a9d2d7c..4a7e370 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ 2048 - +
diff --git a/javascripts/2048.js b/javascripts/2048.js index 2f9039d..22f7eba 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -62,9 +62,9 @@ Game.prototype.moveTile = function(direction) { self = this; switch(direction) { case 38: //up - // self.moveBoardUp(); - // self.collideUp(); - // self.randTile(); + self.moveBoardUp(); + self.collideBoardUp(); + self.randTile(); console.log('up'); break; case 40: //down @@ -74,8 +74,8 @@ Game.prototype.moveTile = function(direction) { console.log('down'); break; case 37: //left - self.moveBoardLeft(); - self.collideBoardLeft(); + // self.moveBoardLeft(); + // self.collideBoardLeft(); //self.randTile(); console.log('left'); break; @@ -300,58 +300,76 @@ Game.prototype.collideDown = function() { }; -Game.prototype.moveUp = function(tile) { - var newRow; +Game.prototype.moveUp = function(row, col) { + self = this; var $tile; - var row = tile[0]; - var col = tile[1]; - $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); var value = this.board[row][col]; - for(var i = 0; i < row ; i++) { - if ((this.board[i][col]) === 0) { - newRow = i; - this.board[i][col] = value; - this.board[row][col] = 0; - break; + $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); + if (this.board[row][col] !== 0) { + for(var i = 0; i < row ; i++) { + if ((this.board[i][col]) === 0) { + this.board[i][col] = value; + $tile.attr('data-row', 'r' + i); + this.board[row][col] = 0; + break; + } } } - $tile.attr('data-row', 'r' + newRow); - return this.board; }; Game.prototype.moveBoardUp = function() { self = this; for (var row = 1; row < 4; row++) { for (var col = 0; col < 4; col++) { - self.moveUp([row, col]); + self.moveUp(row, col); } } return this.board; }; -Game.prototype.collideUp = function() { +Game.prototype.collideUp = function(row, col) { self = this; - board = this.board; - for (var bcol = 0; bcol < 4 ; bcol++) { - for (var row = 0; row < 3; row++) { - if (( board[row][bcol] === board[row+1][bcol]) && (board[row][bcol] !== 0)) { - board[row][bcol] = (board[row][bcol] + board[row+1][bcol]); - self.scoring(board[row][bcol]); - board[row+1][bcol] = 0; - switch(row) { - case 0: - self.moveUp([row+2, bcol]); - self.moveUp([row+3, bcol]); - break; - case 1: - self.moveUp([row+2, bcol]); - break; - } - } - } + var value = this.board[row][col]; + var value2 = this.board[row+1][col]; + $tile1 = self.selectTile(row, col, value); + $tile2 = self.selectTile(row+1, col, value2); + this.board[row][col] = (value + value2); + $tile1.attr('data-val', this.board[row][col]); + $tile1.html(this.board[row][col]); + $tile2.remove(); + this.board[row+1][col] = 0; + switch(row) { + case 0: + $tile3 = self.selectTile(2, col, this.board[2][col]); + $tile4 = self.selectTile(3, col, this.board[3][col]); + $tile3.attr('data-row', 'r' + 1); + $tile4.attr('data-row', 'r' + 2); + this.board[1][col] = this.board[2][col]; + this.board[2][col] = this.board[3][col]; + this.board[3][col] = 0; + // self.moveUp([row+3, col]); + break; + case 1: + $tile5 = self.selectTile(3, col, this.board[3][col]); + $tile5.attr('data-row', 'r' + 2); + this.board[2][col] = this.board[3][col]; + this.board[3][col] = 0; + break; } return this.board; -}; +} + +Game.prototype.collideBoardUp = function() { +self = this; +for (var row = 0; row < 3 ; row++) { + for (var col = 0; col < 4; col++) { + if (( board[row][col] === board[row+1][col]) && (board[row][col] !== 0)) { + self.collideUp(row, col); + } + } +} +return this.board; +} $(document).ready(function() { diff --git a/javascripts/2048_3.js b/javascripts/2048_3.js index 4228dea..d1e0226 100644 --- a/javascripts/2048_3.js +++ b/javascripts/2048_3.js @@ -141,21 +141,21 @@ self = this; $(document).ready(function() { console.log("ready to go!"); var game = new Game(); - //game.randTile(); - //game.randTile(); - col = 2; - rowo =3; - row2 = 1; - row3 = 0; - row4 = 2; - game.board[rowo][col] = 2; - game.board[row2][col] = 2; - game.board[row4][col] = 2; - game.board[row3][col] = 2; - $('#gameboard').append('
'+ 2 +'
'); - $('#gameboard').append('
'+ 2 +'
'); - $('#gameboard').append('
'+ 2 +'
'); - $('#gameboard').append('
'+ 2 +'
'); + game.randTile(); + game.randTile(); + // col = 2; + // rowo =3; + // row2 = 1; + // row3 = 0; + // row4 = 2; + // game.board[rowo][col] = 2; + // game.board[row2][col] = 2; + // game.board[row4][col] = 2; + // game.board[row3][col] = 2; + // $('#gameboard').append('
'+ 2 +'
'); + // $('#gameboard').append('
'+ 2 +'
'); + // $('#gameboard').append('
'+ 2 +'
'); + // $('#gameboard').append('
'+ 2 +'
'); $('body').keydown(function(event){ var arrows = [37, 38, 39, 40]; if (arrows.indexOf(event.which) > -1) { From 5edb8baf1f9de777a0c5a16a0bae3ac3f901b14f Mon Sep 17 00:00:00 2001 From: noglows Date: Thu, 4 Feb 2016 12:32:50 -0800 Subject: [PATCH 35/60] Bug fixing never ends --- javascripts/2048_2.js | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/javascripts/2048_2.js b/javascripts/2048_2.js index 508e4f8..e1cb665 100644 --- a/javascripts/2048_2.js +++ b/javascripts/2048_2.js @@ -106,15 +106,16 @@ Game.prototype.collideLeft = function(row, col) { case 0: if (this.board[row][col+2] !== 0) { self.moveLeft(row, col+2); - }; + } if (this.board[row][col+3] !== 0) { self.moveLeft(row, col+3); - }; + } break; case 1: self.moveLeft(row, col+2); break; - }; + } + console.log(this.board); return this.board; }; @@ -151,7 +152,7 @@ Game.prototype.collideBoardLeft = function() { self = this; for (var brow = 0; brow < 4; brow++) { var row = this.board[brow]; - for (var x = 0; x < 4; x++) { + for (var x = 0; x < 3; x++) { if ((row[x] === row[x+1]) && (row[x] !== 0)) { self.collideLeft(brow, x); } @@ -164,7 +165,7 @@ Game.prototype.collideBoardRight = function() { self = this; for (var brow = 0; brow < 4; brow++) { var row = this.board[brow]; - for (var x = 3; x >= 0; x--) { + for (var x = 3; x >= 1; x--) { if ((row[x] === row[x-1]) && row[x] !== 0) { self.collideRight(brow, x); } @@ -173,6 +174,28 @@ Game.prototype.collideBoardRight = function() { return this.board; }; +Game.prototype.lost = function() { + var count = 0; + board = this.board; + //check col + for (var i = 0; i < 4; i++) { + for (var j = 0; j < 3; j ++) { + if (board[i][j] === [i+1][j]) + { return false; + } + } + //check row + for (var x = 0; x < 3; i++) + for (var y = 0; y < 4; y ++) { + if (board[x][y] === [x][y+1]) { + return false; + } + } + } + console.log("Game Over!"); + return true; +}; + Game.prototype.moveTile = function(direction) { // Game method here board = this.board; @@ -196,6 +219,7 @@ Game.prototype.moveTile = function(direction) { setTimeout(function() { self.randTile(); }, 200); + //self.lost(); //self.randTile(); console.log('left'); break; @@ -207,6 +231,7 @@ Game.prototype.moveTile = function(direction) { setTimeout(function() { self.randTile(); }, 200); + //self.lost(); console.log('right'); break; } From d41011b5c7bd5db87843ca72717ebb13e857b1b6 Mon Sep 17 00:00:00 2001 From: noglows Date: Thu, 4 Feb 2016 13:54:38 -0800 Subject: [PATCH 36/60] Left/Right problems still exist --- index.html | 2 +- javascripts/2048.js | 314 +++++++++++++++++++++--------------------- javascripts/2048_2.js | 113 ++++++++++----- 3 files changed, 234 insertions(+), 195 deletions(-) diff --git a/index.html b/index.html index 4a7e370..93768f0 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ 2048 - +
diff --git a/javascripts/2048.js b/javascripts/2048.js index 22f7eba..e1f8feb 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -47,15 +47,22 @@ Game.prototype.randTile = function() { var i_board = arr[randNum][0]; var j_board = arr[randNum][1]; - if (Math.floor((Math.random() * 10) + 1) == 7) { - this.board[i_board][j_board] = 4; - } else { this.board[i_board][j_board] = 2; } - // return this.board; + if (Math.floor((Math.random() * 10) + 1) == 7) { + this.board[i_board][j_board] = 4; + } else { + this.board[i_board][j_board] = 2; + } var val = this.board[i_board][j_board]; $('#gameboard').append('
'+ val +'
'); + return [i_board, j_board]; }; +Game.prototype.selectTile = function(row, col, value) { + var $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"][data-val="' + value + '"]'); + return $tile; +}; + Game.prototype.moveTile = function(direction) { // Game method here board = this.board; @@ -90,158 +97,149 @@ Game.prototype.moveTile = function(direction) { } }; -Game.prototype.moveLeft = function(tile) { - // tile[0] is the row - // tile[1] is the column position - self = this; - var $tile; - var row = tile[0]; - var col = tile[1]; - var value = this.board[row][col]; - var newCol; - $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); - var board_row = this.board[tile[0]]; - for(var j=0; j < col; j++) { - if (board_row[j] === 0) { - newCol = j; - this.board[row][j] = value; - this.board[row][col] = 0; - break; - } - } - $tile.attr('data-col', 'c' + newCol); - return [row, newCol]; - //return this.board; -}; - -Game.prototype.moveBoardLeft = function() { - self = this; - for (var row=0; row < 4; row++) { - for (var col=0; col < 4; col++) { - self.moveLeft([row, col]); - } - } - return this.board; -}; - -Game.prototype.selectTile = function(row, col, value) { - //console.log("row = " + row) - //console.log("col = " + col) - console.log(col) - var $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"][data-val="' + value + '"]'); - return $tile; -}; - - -Game.prototype.collideLeft = function(row, col) { - self = this; - //var $tile1; - //var $tile2; - // self = this; - // for (var brow = 0; brow < 4; brow++) { - // var row = this.board[brow]; - // for (var x = 0; x < 4; x++) { - // //console.log(row[x-1]); - // if ((row[x] === row[x+1]) && row[x] !== 0) { - var value = this.board[row][col]; - var value2 = this.board[row][col+1]; - $tile1 = self.selectTile(row, col, value); - $tile2 = self.selectTile(row, col+1, value2); - this.board[row][col] = (value + value2); - $tile1.attr('data-val', this.board[row][col]); - $tile1.html(this.board[row][col]); - $tile2.remove(); - //self.scoring(row[x]); - this.board[row][col+1] = 0; - switch(col) { - case 0: - self.moveRight([row, col+2]); - self.moveRight([row, col+3]); - break; - case 1: - self.moveRight([row, col+2]); - break; - } - return this.board; -}; - -Game.prototype.collideBoardLeft = function() { - self = this; - for (var brow = 0; brow < 4; brow++) { - var row = this.board[brow]; - for (var x = 0; x < 4; x++) { - //console.log(row[x-1]); - if ((row[x] === row[x+1]) && row[x] !== 0) { - self.collideLeft(brow, x); - } - } - } - console.log(this.board); - return this.board; -}; - - -Game.prototype.moveRight = function(tile) { - // tile[0] is the row - // tile[1] is the column position - var $tile; - var newCol; - var row = tile[0]; - var col = tile[1]; - var value = this.board[row][col]; - var board_row = this.board[tile[0]]; - $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); - - for(var j= 3; j > col; j--) { - if (board_row[j] === 0) { - newCol = j; - this.board[row][j] = value; - this.board[row][col] = 0; - break; - } - } - $tile.attr('data-col', 'c' + newCol); - return [row, newCol]; -}; - -Game.prototype.moveBoardRight = function() { - self = this; - for (var row=0; row < 4; row++) { - for (var col=3; col >= 0; col--) { - array = self.moveRight([row, col]); - } - } - return this.board; -}; - - -Game.prototype.collideRight = function() { - self = this; - for (var brow = 0; brow < 4; brow++) { - var row = this.board[brow]; - for (var x = 3; x > 0; x--) { - //console.log(row[x-1]); - if ((row[x] === row[x-1]) && row[x] !== 0) { - row[x] = (row[x] + row[x-1]); - - $tile1 = self.selectTile(brow, x); - $tile2 = self.selectTile(brow, x-1); - self.scoring(row[x]); - row[x-1] = 0; - switch(x) { - case 3: - self.moveRight([brow, x-2]); - self.moveRight([brow, x-3]); - break; - case 2: - self.moveRight([brow, x-2]); - break; - } - } - } - } - return this.board; -}; +// Game.prototype.moveLeft = function(tile) { +// // tile[0] is the row +// // tile[1] is the column position +// self = this; +// var $tile; +// var row = tile[0]; +// var col = tile[1]; +// var value = this.board[row][col]; +// var newCol; +// $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); +// var board_row = this.board[tile[0]]; +// for(var j=0; j < col; j++) { +// if (board_row[j] === 0) { +// newCol = j; +// this.board[row][j] = value; +// this.board[row][col] = 0; +// break; +// } +// } +// $tile.attr('data-col', 'c' + newCol); +// return [row, newCol]; +// //return this.board; +// }; +// +// Game.prototype.moveBoardLeft = function() { +// self = this; +// for (var row=0; row < 4; row++) { +// for (var col=0; col < 4; col++) { +// self.moveLeft([row, col]); +// } +// } +// return this.board; +// }; +// +// Game.prototype.collideLeft = function(row, col) { +// self = this; +// //var $tile1; +// //var $tile2; +// // self = this; +// // for (var brow = 0; brow < 4; brow++) { +// // var row = this.board[brow]; +// // for (var x = 0; x < 4; x++) { +// // //console.log(row[x-1]); +// // if ((row[x] === row[x+1]) && row[x] !== 0) { +// var value = this.board[row][col]; +// var value2 = this.board[row][col+1]; +// $tile1 = self.selectTile(row, col, value); +// $tile2 = self.selectTile(row, col+1, value2); +// this.board[row][col] = (value + value2); +// $tile1.attr('data-val', this.board[row][col]); +// $tile1.html(this.board[row][col]); +// $tile2.remove(); +// //self.scoring(row[x]); +// this.board[row][col+1] = 0; +// switch(col) { +// case 0: +// self.moveRight([row, col+2]); +// self.moveRight([row, col+3]); +// break; +// case 1: +// self.moveRight([row, col+2]); +// break; +// } +// return this.board; +// }; +// +// Game.prototype.collideBoardLeft = function() { +// self = this; +// for (var brow = 0; brow < 4; brow++) { +// var row = this.board[brow]; +// for (var x = 0; x < 4; x++) { +// //console.log(row[x-1]); +// if ((row[x] === row[x+1]) && row[x] !== 0) { +// self.collideLeft(brow, x); +// } +// } +// } +// console.log(this.board); +// return this.board; +// }; +// +// +// Game.prototype.moveRight = function(tile) { +// // tile[0] is the row +// // tile[1] is the column position +// var $tile; +// var newCol; +// var row = tile[0]; +// var col = tile[1]; +// var value = this.board[row][col]; +// var board_row = this.board[tile[0]]; +// $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); +// +// for(var j= 3; j > col; j--) { +// if (board_row[j] === 0) { +// newCol = j; +// this.board[row][j] = value; +// this.board[row][col] = 0; +// break; +// } +// } +// $tile.attr('data-col', 'c' + newCol); +// return [row, newCol]; +// }; +// +// Game.prototype.moveBoardRight = function() { +// self = this; +// for (var row=0; row < 4; row++) { +// for (var col=3; col >= 0; col--) { +// array = self.moveRight([row, col]); +// } +// } +// return this.board; +// }; +// +// +// Game.prototype.collideRight = function() { +// self = this; +// for (var brow = 0; brow < 4; brow++) { +// var row = this.board[brow]; +// for (var x = 3; x > 0; x--) { +// //console.log(row[x-1]); +// if ((row[x] === row[x-1]) && row[x] !== 0) { +// row[x] = (row[x] + row[x-1]); +// +// $tile1 = self.selectTile(brow, x); +// $tile2 = self.selectTile(brow, x-1); +// self.scoring(row[x]); +// row[x-1] = 0; +// switch(x) { +// case 3: +// self.moveRight([brow, x-2]); +// self.moveRight([brow, x-3]); +// break; +// case 2: +// self.moveRight([brow, x-2]); +// break; +// } +// } +// } +// } +// return this.board; +// }; Game.prototype.moveDown = function(tile) { @@ -301,7 +299,7 @@ Game.prototype.collideDown = function() { Game.prototype.moveUp = function(row, col) { - self = this; + //self = this; var $tile; var value = this.board[row][col]; $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); @@ -334,10 +332,10 @@ Game.prototype.collideUp = function(row, col) { $tile1 = self.selectTile(row, col, value); $tile2 = self.selectTile(row+1, col, value2); this.board[row][col] = (value + value2); + this.board[row+1][col] = 0; $tile1.attr('data-val', this.board[row][col]); $tile1.html(this.board[row][col]); $tile2.remove(); - this.board[row+1][col] = 0; switch(row) { case 0: $tile3 = self.selectTile(2, col, this.board[2][col]); diff --git a/javascripts/2048_2.js b/javascripts/2048_2.js index e1cb665..17015b6 100644 --- a/javascripts/2048_2.js +++ b/javascripts/2048_2.js @@ -37,39 +37,61 @@ Game.prototype.moveLeft = function(row,col) { var $tile; var value = this.board[row][col]; $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); - var board_row = this.board[row]; - for(var j=0; j < col; j++) { - if (board_row[j] === 0) { - this.board[row][j] = value; - $tile.attr('data-col', 'c' + j); - this.board[row][col] = 0; - break; + if (this.board[row][col] !== 0) { + for(var j=0; j < col; j++) { + if (this.board[row][j] === 0) { + this.board[row][j] = value; + $tile.attr('data-col', 'c' + j); + this.board[row][col] = 0; + break; + } } } }; +// var board_row = this.board[row]; +// for(var j=0; j < col; j++) { +// if (board_row[j] === 0) { +// this.board[row][j] = value; +// $tile.attr('data-col', 'c' + j); +// this.board[row][col] = 0; +// break; +// } +// } +// }; Game.prototype.moveRight = function(row,col) { var $tile; var value = this.board[row][col]; $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); - var board_row = this.board[row]; - for(var j= 3; j > col; j--) { - if (board_row[j] === 0) { - this.board[row][j] = value; - $tile.attr('data-col', 'c' + j); - this.board[row][col] = 0; - break; + if (this.board[row][col] !== 0) { + for(var j=3; j > col; j--) { + if (this.board[row][j] === 0) { + this.board[row][j] = value; + $tile.attr('data-col', 'c' + j); + this.board[row][col] = 0; + break; + } } } + // var $tile; + // var value = this.board[row][col]; + // $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); + // var board_row = this.board[row]; + // for(var j= 3; j > col; j--) { + // if (board_row[j] === 0) { + // this.board[row][j] = value; + // $tile.attr('data-col', 'c' + j); + // this.board[row][col] = 0; + // break; + // } + // } }; Game.prototype.moveBoardLeft = function() { self = this; for (var row=0; row < 4; row++) { for (var col=1; col < 4; col++) { - if (this.board[row][col] !== 0) { - self.moveLeft(row, col); - } + self.moveLeft(row, col); } } return this.board; @@ -79,9 +101,7 @@ Game.prototype.moveBoardRight = function() { self = this; for (var row=0; row < 4; row++) { for (var col=3; col >= 0; col--) { - if (this.board[row][col] !== 0) { - self.moveRight(row, col); - } + self.moveRight(row, col); } } return this.board; @@ -104,19 +124,29 @@ Game.prototype.collideLeft = function(row, col) { switch(col) { case 0: - if (this.board[row][col+2] !== 0) { - self.moveLeft(row, col+2); - } - if (this.board[row][col+3] !== 0) { - self.moveLeft(row, col+3); - } + $tile3 = self.selectTile(row, 2, this.board[row][2]); + $tile4 = self.selectTile(row, 3, this.board[row][3]); + $tile3.attr('data-col', 'c' + 1); + $tile4.attr('data-col', 'c' + 2); + this.board[row][1] = this.board[row][2]; + this.board[row][2] = this.board[row][3]; + this.board[row][3] = 0; + // if (this.board[row][col+2] !== 0) { + // self.moveLeft(row, col+2); + // } + // if (this.board[row][col+3] !== 0) { + // self.moveLeft(row, col+3); + // } break; case 1: - self.moveLeft(row, col+2); + $tile4 = self.selectTile(row, 3, this.board[row][3]); + $tile4.attr('data-col', 'c' + 2); + this.board[row][2] = this.board[row][3]; + this.board[row][3] = 0; + //self.moveLeft(row, col+2); break; } - console.log(this.board); - return this.board; + return this.board; }; Game.prototype.collideRight = function(row, col) { @@ -134,15 +164,26 @@ Game.prototype.collideRight = function(row, col) { switch(col) { case 3: - if (this.board[row][col-2] !== 0) { - self.moveRight(row, col-2); - } - if (this.board[row][col-3] !== 0) { - self.moveRight(row, col-3); - } + $tile3 = self.selectTile(row, 1, this.board[row][1]); + $tile4 = self.selectTile(row, 0, this.board[row][0]); + $tile3.attr('data-col', 'c' + 2); + $tile4.attr('data-col', 'c' + 1); + this.board[row][2] = this.board[row][1]; + this.board[row][1] = this.board[row][0]; + this.board[row][0] = 0; + // if (this.board[row][col-2] !== 0) { + // self.moveRight(row, col-2); + // } + // if (this.board[row][col-3] !== 0) { + // self.moveRight(row, col-3); + // } break; case 2: - self.moveRight(row, col-2); + $tile4 = self.selectTile(row, 0, this.board[row][0]); + $tile4.attr('data-col', 'c' + 1); + this.board[row][1] = this.board[row][0]; + this.board[row][0] = 0; + //self.moveRight(row, col-2); break; } return this.board; From 4f10cf282aa8cde7ba451b42ee7fca9005da0dc5 Mon Sep 17 00:00:00 2001 From: Tammy Date: Thu, 4 Feb 2016 13:55:17 -0800 Subject: [PATCH 37/60] during up-down moving and collide --- javascripts/2048_3.js | 107 +++++++++++++++++++----------------------- 1 file changed, 49 insertions(+), 58 deletions(-) diff --git a/javascripts/2048_3.js b/javascripts/2048_3.js index d1e0226..39b0c1d 100644 --- a/javascripts/2048_3.js +++ b/javascripts/2048_3.js @@ -33,13 +33,13 @@ Game.prototype.selectTile = function(row, col, value) { }; -Game.prototype.moveUp = function(row, col) { - self = this; - var $tile; - var value = this.board[row][col]; - $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); - if (this.board[row][col] !== 0) { - for(var i = 0; i < row ; i++) { +Game.prototype.moveDown = function(row, col) { +self = this; +var $tile; +var value = this.board[row][col]; +$tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); + if (this.board[i][col] !== 0) { + for(var i = 3; i > row; i++) { if ((this.board[i][col]) === 0) { this.board[i][col] = value; $tile.attr('data-row', 'r' + i); @@ -50,59 +50,50 @@ Game.prototype.moveUp = function(row, col) { } }; -Game.prototype.moveBoardUp = function() { +Game.prototype.moveBoardDown = function() { self = this; - for (var row = 1; row < 4; row++) { + for (var row = 2; row >= 0; row--) { for (var col = 0; col < 4; col++) { - self.moveUp(row, col); + self.moveDown(row, col); } } return this.board; }; -Game.prototype.collideUp = function(row, col) { + +Game.prototype.collideDown = function(row, col) { self = this; var value = this.board[row][col]; - var value2 = this.board[row+1][col]; + var value2 = this.board[row-1][col]; $tile1 = self.selectTile(row, col, value); - $tile2 = self.selectTile(row+1, col, value2); + $tile2 = self.selectTile(row-1, col, value2); this.board[row][col] = (value + value2); $tile1.attr('data-val', this.board[row][col]); $tile1.html(this.board[row][col]); $tile2.remove(); - this.board[row+1][col] = 0; - switch(row) { - case 0: - $tile3 = self.selectTile(2, col, this.board[2][col]); - $tile4 = self.selectTile(3, col, this.board[3][col]); - $tile3.attr('data-row', 'r' + 1); - $tile4.attr('data-row', 'r' + 2); - this.board[1][col] = this.board[2][col]; - this.board[2][col] = this.board[3][col]; - this.board[3][col] = 0; - // self.moveUp([row+3, col]); - break; - case 1: - $tile5 = self.selectTile(3, col, this.board[3][col]); - $tile5.attr('data-row', 'r' + 2); - this.board[2][col] = this.board[3][col]; - this.board[3][col] = 0; - break; - } - return this.board; -} - -Game.prototype.collideBoardUp = function() { -self = this; -for (var row = 0; row < 3 ; row++) { - for (var col = 0; col < 4; col++) { - if (( board[row][col] === board[row+1][col]) && (board[row][col] !== 0)) { - self.collideUp(row, col); + this.board[row-1][col] = 0; + + for (var bcol = 0; bcol < 4 ; bcol++) { + for (var row = 3; row > 0; row--) { + //console.log(row[x-1]); + if (( board[row][bcol] === board[row-1][bcol]) && board[row][bcol] !== 0) { + board[row][bcol] = (board[row][bcol] + board[row-1][bcol]); + self.scoring(board[row][bcol]); + board[row-1][bcol] = 0; + switch(row) { + case 3: + self.moveDown([row-2, bcol]); + self.moveDown([row-3, bcol]); + break; + case 2: + self.moveDown([row-2, bcol]); + break; + } + } } } -} -return this.board; -} + return this.board; +}; Game.prototype.moveTile = function(direction) { // Game method here @@ -116,7 +107,7 @@ self = this; console.log('up'); break; case 40: //down - // self.moveBoardDown(); + self.moveBoardDown(); // self.collideDown(); // self.randTile(); console.log('down'); @@ -143,19 +134,19 @@ $(document).ready(function() { var game = new Game(); game.randTile(); game.randTile(); - // col = 2; - // rowo =3; - // row2 = 1; - // row3 = 0; - // row4 = 2; - // game.board[rowo][col] = 2; - // game.board[row2][col] = 2; - // game.board[row4][col] = 2; - // game.board[row3][col] = 2; - // $('#gameboard').append('
'+ 2 +'
'); - // $('#gameboard').append('
'+ 2 +'
'); - // $('#gameboard').append('
'+ 2 +'
'); - // $('#gameboard').append('
'+ 2 +'
'); + col = 2; + rowo =3; + row2 = 1; + row3 = 0; + row4 = 2; + game.board[rowo][col] = 2; + game.board[row2][col] = 2; + game.board[row4][col] = 2; + game.board[row3][col] = 2; + $('#gameboard').append('
'+ 2 +'
'); + $('#gameboard').append('
'+ 2 +'
'); + $('#gameboard').append('
'+ 2 +'
'); + $('#gameboard').append('
'+ 2 +'
'); $('body').keydown(function(event){ var arrows = [37, 38, 39, 40]; if (arrows.indexOf(event.which) > -1) { From d7a273710bac9eaa2eb02aee4267382264472382 Mon Sep 17 00:00:00 2001 From: noglows Date: Thu, 4 Feb 2016 14:14:41 -0800 Subject: [PATCH 38/60] Up/Down are functional --- index.html | 2 +- javascripts/2048.js | 133 +++++++++++++++++++++++------------------- javascripts/2048_3.js | 95 ++++++++++++++++++++---------- 3 files changed, 138 insertions(+), 92 deletions(-) diff --git a/index.html b/index.html index 93768f0..4a7e370 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ 2048 - +
diff --git a/javascripts/2048.js b/javascripts/2048.js index e1f8feb..3efde5b 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -75,9 +75,9 @@ Game.prototype.moveTile = function(direction) { console.log('up'); break; case 40: //down - // self.moveBoardDown(); - // self.collideDown(); - // self.randTile(); + self.moveBoardDown(); + self.collideBoardDown(); + self.randTile(); console.log('down'); break; case 37: //left @@ -242,61 +242,6 @@ Game.prototype.moveTile = function(direction) { // }; -Game.prototype.moveDown = function(tile) { - var $tile; - var newRow; - var row = tile[0]; - var col = tile[1]; - var value = this.board[row][col]; - $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); - for(var i = 3; i > row ; i--) { - if ((this.board[i][col]) === 0) { - newRow = i; - this.board[i][col] = value; - this.board[row][col] = 0; - break; - } - } - $tile.attr('data-row', 'r' + newRow); - return this.board; -}; - -Game.prototype.moveBoardDown = function() { - self = this; - for (var row = 2; row >= 0; row--) { - for (var col = 0; col < 4; col++) { - self.moveDown([row, col]); - } - } - return this.board; -}; - - -Game.prototype.collideDown = function() { - self = this; - board = this.board; - for (var bcol = 0; bcol < 4 ; bcol++) { - for (var row = 3; row > 0; row--) { - //console.log(row[x-1]); - if (( board[row][bcol] === board[row-1][bcol]) && board[row][bcol] !== 0) { - board[row][bcol] = (board[row][bcol] + board[row-1][bcol]); - self.scoring(board[row][bcol]); - board[row-1][bcol] = 0; - switch(row) { - case 3: - self.moveDown([row-2, bcol]); - self.moveDown([row-3, bcol]); - break; - case 2: - self.moveDown([row-2, bcol]); - break; - } - } - } - } - return this.board; -}; - Game.prototype.moveUp = function(row, col) { //self = this; @@ -355,7 +300,7 @@ Game.prototype.collideUp = function(row, col) { break; } return this.board; -} +}; Game.prototype.collideBoardUp = function() { self = this; @@ -367,8 +312,76 @@ for (var row = 0; row < 3 ; row++) { } } return this.board; -} +}; + +Game.prototype.moveDown = function(row, col) { + var $tile; + var value = this.board[row][col]; + $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); + if (this.board[row][col] !== 0) { + for(var i = 3; i > row; i--) { + if ((this.board[i][col]) === 0) { + this.board[i][col] = value; + $tile.attr('data-row', 'r' + i); + this.board[row][col] = 0; + break; + } + } + } +}; + +Game.prototype.moveBoardDown = function() { + self = this; + for (var row = 2; row >= 0; row--) { + for (var col = 0; col < 4; col++) { + self.moveDown(row, col); + } + } + return this.board; +}; + +Game.prototype.collideDown = function(row, col) { + self = this; + var value = this.board[row][col]; + var value2 = this.board[row-1][col]; + $tile1 = self.selectTile(row, col, value); + $tile2 = self.selectTile(row-1, col, value2); + this.board[row][col] = (value + value2); + this.board[row-1][col] = 0; + $tile1.attr('data-val', this.board[row][col]); + $tile1.html(this.board[row][col]); + $tile2.remove(); + switch(row) { + case 3: + $tile3 = self.selectTile(1, col, this.board[1][col]); + $tile4 = self.selectTile(0, col, this.board[0][col]); + $tile3.attr('data-row', 'r' + 2); + $tile4.attr('data-row', 'r' + 1); + this.board[2][col] = this.board[1][col]; + this.board[1][col] = this.board[0][col]; + this.board[0][col] = 0; + break; + case 2: + $tile5 = self.selectTile(0, col, this.board[0][col]); + $tile5.attr('data-row', 'r' + 1); + this.board[1][col] = this.board[0][col]; + this.board[0][col] = 0; + break; + } + return this.board; +}; +Game.prototype.collideBoardDown = function() { +self = this; +for (var row = 3; row > 0 ; row--) { + for (var col = 0; col < 4; col++) { + if (( board[row][col] === board[row-1][col]) && (board[row][col] !== 0)) { + self.collideDown(row, col); + } + } +} +return this.board; +}; $(document).ready(function() { console.log("ready to go!"); diff --git a/javascripts/2048_3.js b/javascripts/2048_3.js index 39b0c1d..ea1290f 100644 --- a/javascripts/2048_3.js +++ b/javascripts/2048_3.js @@ -34,12 +34,13 @@ Game.prototype.selectTile = function(row, col, value) { Game.prototype.moveDown = function(row, col) { -self = this; -var $tile; -var value = this.board[row][col]; -$tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); - if (this.board[i][col] !== 0) { - for(var i = 3; i > row; i++) { +//self = this; +//console.log("This is working") + var $tile; + var value = this.board[row][col]; + $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); + if (this.board[row][col] !== 0) { + for(var i = 3; i > row; i--) { if ((this.board[i][col]) === 0) { this.board[i][col] = value; $tile.attr('data-row', 'r' + i); @@ -65,51 +66,83 @@ Game.prototype.collideDown = function(row, col) { self = this; var value = this.board[row][col]; var value2 = this.board[row-1][col]; + console.log(value) + console.log(value2) $tile1 = self.selectTile(row, col, value); $tile2 = self.selectTile(row-1, col, value2); this.board[row][col] = (value + value2); + this.board[row-1][col] = 0; $tile1.attr('data-val', this.board[row][col]); $tile1.html(this.board[row][col]); $tile2.remove(); - this.board[row-1][col] = 0; - - for (var bcol = 0; bcol < 4 ; bcol++) { - for (var row = 3; row > 0; row--) { - //console.log(row[x-1]); - if (( board[row][bcol] === board[row-1][bcol]) && board[row][bcol] !== 0) { - board[row][bcol] = (board[row][bcol] + board[row-1][bcol]); - self.scoring(board[row][bcol]); - board[row-1][bcol] = 0; - switch(row) { - case 3: - self.moveDown([row-2, bcol]); - self.moveDown([row-3, bcol]); - break; - case 2: - self.moveDown([row-2, bcol]); - break; - } - } - } + switch(row) { + case 3: + $tile3 = self.selectTile(1, col, this.board[1][col]); + $tile4 = self.selectTile(0, col, this.board[0][col]); + $tile3.attr('data-row', 'r' + 2); + $tile4.attr('data-row', 'r' + 1); + this.board[2][col] = this.board[1][col]; + this.board[1][col] = this.board[0][col]; + this.board[0][col] = 0; + break; + case 2: + $tile5 = self.selectTile(0, col, this.board[0][col]); + $tile5.attr('data-row', 'r' + 1); + this.board[1][col] = this.board[0][col]; + this.board[0][col] = 0; + break; } return this.board; }; +Game.prototype.collideBoardDown = function() { +self = this; +for (var row = 3; row > 0 ; row--) { + for (var col = 0; col < 4; col++) { + if (( board[row][col] === board[row-1][col]) && (board[row][col] !== 0)) { + self.collideDown(row, col); + } + } +} +return this.board; +}; +// for (var bcol = 0; bcol < 4 ; bcol++) { +// for (var row = 3; row > 0; row--) { +// //console.log(row[x-1]); +// if (( board[row][bcol] === board[row-1][bcol]) && board[row][bcol] !== 0) { +// board[row][bcol] = (board[row][bcol] + board[row-1][bcol]); +// self.scoring(board[row][bcol]); +// board[row-1][bcol] = 0; +// switch(row) { +// case 3: +// self.moveDown([row-2, bcol]); +// self.moveDown([row-3, bcol]); +// break; +// case 2: +// self.moveDown([row-2, bcol]); +// break; +// } +// } +// } +// } +// return this.board; +// }; + Game.prototype.moveTile = function(direction) { // Game method here board = this.board; self = this; switch(direction) { case 38: //up - self.moveBoardUp(); - self.collideBoardUp(); - self.randTile(); + //self.moveBoardUp(); + //self.collideBoardUp(); + //self.randTile(); console.log('up'); break; case 40: //down self.moveBoardDown(); - // self.collideDown(); - // self.randTile(); + self.collideBoardDown(); + self.randTile(); console.log('down'); break; case 37: //left From 2bc6cb04d66e7b43cc94ac77471b077f157bfe34 Mon Sep 17 00:00:00 2001 From: noglows Date: Thu, 4 Feb 2016 14:41:32 -0800 Subject: [PATCH 39/60] Working on movement timing --- javascripts/2048.js | 82 ++++++++++++++++++++++++++----------------- javascripts/2048_3.js | 26 +------------- 2 files changed, 51 insertions(+), 57 deletions(-) diff --git a/javascripts/2048.js b/javascripts/2048.js index 3efde5b..18829cb 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -65,19 +65,28 @@ Game.prototype.selectTile = function(row, col, value) { Game.prototype.moveTile = function(direction) { // Game method here - board = this.board; - self = this; + var board = this.board; + var self = this; switch(direction) { case 38: //up self.moveBoardUp(); - self.collideBoardUp(); - self.randTile(); + setTimeout(function() { + self.collideBoardUp(); + }, 200); + setTimeout(function() { + self.randTile(); + }, 400); + console.log('up'); break; case 40: //down self.moveBoardDown(); - self.collideBoardDown(); - self.randTile(); + setTimeout(function() { + self.collideBoardDown(); + }, 200); + setTimeout(function() { + self.randTile(); + }, 200); console.log('down'); break; case 37: //left @@ -261,7 +270,7 @@ Game.prototype.moveUp = function(row, col) { }; Game.prototype.moveBoardUp = function() { - self = this; + var self = this; for (var row = 1; row < 4; row++) { for (var col = 0; col < 4; col++) { self.moveUp(row, col); @@ -271,29 +280,33 @@ Game.prototype.moveBoardUp = function() { }; Game.prototype.collideUp = function(row, col) { - self = this; + var self = this; var value = this.board[row][col]; var value2 = this.board[row+1][col]; - $tile1 = self.selectTile(row, col, value); - $tile2 = self.selectTile(row+1, col, value2); + var $tile1 = self.selectTile(row, col, value); + var $tile2 = self.selectTile(row+1, col, value2); this.board[row][col] = (value + value2); this.board[row+1][col] = 0; - $tile1.attr('data-val', this.board[row][col]); - $tile1.html(this.board[row][col]); - $tile2.remove(); + $tile2.attr('data-row', row); + setTimeout(function() { + $tile1.attr('data-val', self.board[row][col]); + $tile1.html(self.board[row][col]); + $tile2.remove(); + }, 200); + switch(row) { case 0: - $tile3 = self.selectTile(2, col, this.board[2][col]); - $tile4 = self.selectTile(3, col, this.board[3][col]); + var $tile3 = self.selectTile(2, col, this.board[2][col]); + var $tile4 = self.selectTile(3, col, this.board[3][col]); $tile3.attr('data-row', 'r' + 1); $tile4.attr('data-row', 'r' + 2); this.board[1][col] = this.board[2][col]; this.board[2][col] = this.board[3][col]; this.board[3][col] = 0; - // self.moveUp([row+3, col]); + break; case 1: - $tile5 = self.selectTile(3, col, this.board[3][col]); + var $tile5 = self.selectTile(3, col, this.board[3][col]); $tile5.attr('data-row', 'r' + 2); this.board[2][col] = this.board[3][col]; this.board[3][col] = 0; @@ -303,7 +316,8 @@ Game.prototype.collideUp = function(row, col) { }; Game.prototype.collideBoardUp = function() { -self = this; +var self = this; +var board = this.board; for (var row = 0; row < 3 ; row++) { for (var col = 0; col < 4; col++) { if (( board[row][col] === board[row+1][col]) && (board[row][col] !== 0)) { @@ -331,7 +345,7 @@ Game.prototype.moveDown = function(row, col) { }; Game.prototype.moveBoardDown = function() { - self = this; + var self = this; for (var row = 2; row >= 0; row--) { for (var col = 0; col < 4; col++) { self.moveDown(row, col); @@ -341,20 +355,26 @@ Game.prototype.moveBoardDown = function() { }; Game.prototype.collideDown = function(row, col) { - self = this; + var self = this; var value = this.board[row][col]; var value2 = this.board[row-1][col]; - $tile1 = self.selectTile(row, col, value); - $tile2 = self.selectTile(row-1, col, value2); + var $tile1 = self.selectTile(row, col, value); + var $tile2 = self.selectTile(row-1, col, value2); this.board[row][col] = (value + value2); this.board[row-1][col] = 0; - $tile1.attr('data-val', this.board[row][col]); - $tile1.html(this.board[row][col]); - $tile2.remove(); + console.log($tile2) + $tile2.attr('data-row', row); + console.log($tile2) + setTimeout(function() { + $tile1.attr('data-val', self.board[row][col]); + $tile1.html(self.board[row][col]); + $tile2.remove(); + }, 200); + switch(row) { case 3: - $tile3 = self.selectTile(1, col, this.board[1][col]); - $tile4 = self.selectTile(0, col, this.board[0][col]); + var $tile3 = self.selectTile(1, col, this.board[1][col]); + var $tile4 = self.selectTile(0, col, this.board[0][col]); $tile3.attr('data-row', 'r' + 2); $tile4.attr('data-row', 'r' + 1); this.board[2][col] = this.board[1][col]; @@ -362,7 +382,7 @@ Game.prototype.collideDown = function(row, col) { this.board[0][col] = 0; break; case 2: - $tile5 = self.selectTile(0, col, this.board[0][col]); + var $tile5 = self.selectTile(0, col, this.board[0][col]); $tile5.attr('data-row', 'r' + 1); this.board[1][col] = this.board[0][col]; this.board[0][col] = 0; @@ -372,7 +392,8 @@ Game.prototype.collideDown = function(row, col) { }; Game.prototype.collideBoardDown = function() { -self = this; +var self = this; +var board = this.board; for (var row = 3; row > 0 ; row--) { for (var col = 0; col < 4; col++) { if (( board[row][col] === board[row-1][col]) && (board[row][col] !== 0)) { @@ -397,6 +418,3 @@ $(document).ready(function() { }); }); -// -var game = new Game(); -var f = game.randTile(); diff --git a/javascripts/2048_3.js b/javascripts/2048_3.js index ea1290f..c8c4804 100644 --- a/javascripts/2048_3.js +++ b/javascripts/2048_3.js @@ -34,8 +34,6 @@ Game.prototype.selectTile = function(row, col, value) { Game.prototype.moveDown = function(row, col) { -//self = this; -//console.log("This is working") var $tile; var value = this.board[row][col]; $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); @@ -66,8 +64,6 @@ Game.prototype.collideDown = function(row, col) { self = this; var value = this.board[row][col]; var value2 = this.board[row-1][col]; - console.log(value) - console.log(value2) $tile1 = self.selectTile(row, col, value); $tile2 = self.selectTile(row-1, col, value2); this.board[row][col] = (value + value2); @@ -106,27 +102,7 @@ for (var row = 3; row > 0 ; row--) { } return this.board; }; -// for (var bcol = 0; bcol < 4 ; bcol++) { -// for (var row = 3; row > 0; row--) { -// //console.log(row[x-1]); -// if (( board[row][bcol] === board[row-1][bcol]) && board[row][bcol] !== 0) { -// board[row][bcol] = (board[row][bcol] + board[row-1][bcol]); -// self.scoring(board[row][bcol]); -// board[row-1][bcol] = 0; -// switch(row) { -// case 3: -// self.moveDown([row-2, bcol]); -// self.moveDown([row-3, bcol]); -// break; -// case 2: -// self.moveDown([row-2, bcol]); -// break; -// } -// } -// } -// } -// return this.board; -// }; + Game.prototype.moveTile = function(direction) { // Game method here From 9fdc410d0b7dd5f5a286902771df95ee3f71a7b8 Mon Sep 17 00:00:00 2001 From: noglows Date: Thu, 4 Feb 2016 14:43:25 -0800 Subject: [PATCH 40/60] Fixed animation bug --- javascripts/2048.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/javascripts/2048.js b/javascripts/2048.js index 18829cb..ab63eb0 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -287,7 +287,7 @@ Game.prototype.collideUp = function(row, col) { var $tile2 = self.selectTile(row+1, col, value2); this.board[row][col] = (value + value2); this.board[row+1][col] = 0; - $tile2.attr('data-row', row); + $tile2.attr('data-row', 'r' + row); setTimeout(function() { $tile1.attr('data-val', self.board[row][col]); $tile1.html(self.board[row][col]); @@ -363,7 +363,7 @@ Game.prototype.collideDown = function(row, col) { this.board[row][col] = (value + value2); this.board[row-1][col] = 0; console.log($tile2) - $tile2.attr('data-row', row); + $tile2.attr('data-row', 'r' + row); console.log($tile2) setTimeout(function() { $tile1.attr('data-val', self.board[row][col]); From 0ae1692d587bfe3125e008816d4758352ba2f4ab Mon Sep 17 00:00:00 2001 From: Tammy Date: Thu, 4 Feb 2016 14:52:29 -0800 Subject: [PATCH 41/60] the game looks working --- javascripts/2048.js | 316 ++++++++++++++++++++++-------------------- javascripts/2048_2.js | 112 ++++++--------- 2 files changed, 209 insertions(+), 219 deletions(-) diff --git a/javascripts/2048.js b/javascripts/2048.js index ab63eb0..cddb9de 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -90,166 +90,180 @@ Game.prototype.moveTile = function(direction) { console.log('down'); break; case 37: //left - // self.moveBoardLeft(); - // self.collideBoardLeft(); - //self.randTile(); + self.moveBoardLeft(); + self.collideBoardLeft(); + self.randTile(); console.log('left'); break; case 39: //right - // self.moveBoardRight(); - // self.collideRight(); - // self.randTile(); + self.moveBoardRight(); + self.collideBoardRight(); + self.randTile(); console.log('right'); - //this.moveRight(tile); - //this.collideRight(tile); + break; } }; -// Game.prototype.moveLeft = function(tile) { -// // tile[0] is the row -// // tile[1] is the column position -// self = this; -// var $tile; -// var row = tile[0]; -// var col = tile[1]; -// var value = this.board[row][col]; -// var newCol; -// $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); -// var board_row = this.board[tile[0]]; -// for(var j=0; j < col; j++) { -// if (board_row[j] === 0) { -// newCol = j; -// this.board[row][j] = value; -// this.board[row][col] = 0; -// break; -// } -// } -// $tile.attr('data-col', 'c' + newCol); -// return [row, newCol]; -// //return this.board; -// }; -// -// Game.prototype.moveBoardLeft = function() { -// self = this; -// for (var row=0; row < 4; row++) { -// for (var col=0; col < 4; col++) { -// self.moveLeft([row, col]); -// } -// } -// return this.board; -// }; -// -// Game.prototype.collideLeft = function(row, col) { -// self = this; -// //var $tile1; -// //var $tile2; -// // self = this; -// // for (var brow = 0; brow < 4; brow++) { -// // var row = this.board[brow]; -// // for (var x = 0; x < 4; x++) { -// // //console.log(row[x-1]); -// // if ((row[x] === row[x+1]) && row[x] !== 0) { -// var value = this.board[row][col]; -// var value2 = this.board[row][col+1]; -// $tile1 = self.selectTile(row, col, value); -// $tile2 = self.selectTile(row, col+1, value2); -// this.board[row][col] = (value + value2); -// $tile1.attr('data-val', this.board[row][col]); -// $tile1.html(this.board[row][col]); -// $tile2.remove(); -// //self.scoring(row[x]); -// this.board[row][col+1] = 0; -// switch(col) { -// case 0: -// self.moveRight([row, col+2]); -// self.moveRight([row, col+3]); -// break; -// case 1: -// self.moveRight([row, col+2]); -// break; -// } -// return this.board; -// }; -// -// Game.prototype.collideBoardLeft = function() { -// self = this; -// for (var brow = 0; brow < 4; brow++) { -// var row = this.board[brow]; -// for (var x = 0; x < 4; x++) { -// //console.log(row[x-1]); -// if ((row[x] === row[x+1]) && row[x] !== 0) { -// self.collideLeft(brow, x); -// } -// } -// } -// console.log(this.board); -// return this.board; -// }; -// -// -// Game.prototype.moveRight = function(tile) { -// // tile[0] is the row -// // tile[1] is the column position -// var $tile; -// var newCol; -// var row = tile[0]; -// var col = tile[1]; -// var value = this.board[row][col]; -// var board_row = this.board[tile[0]]; -// $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); -// -// for(var j= 3; j > col; j--) { -// if (board_row[j] === 0) { -// newCol = j; -// this.board[row][j] = value; -// this.board[row][col] = 0; -// break; -// } -// } -// $tile.attr('data-col', 'c' + newCol); -// return [row, newCol]; -// }; -// -// Game.prototype.moveBoardRight = function() { -// self = this; -// for (var row=0; row < 4; row++) { -// for (var col=3; col >= 0; col--) { -// array = self.moveRight([row, col]); -// } -// } -// return this.board; -// }; -// -// -// Game.prototype.collideRight = function() { -// self = this; -// for (var brow = 0; brow < 4; brow++) { -// var row = this.board[brow]; -// for (var x = 3; x > 0; x--) { -// //console.log(row[x-1]); -// if ((row[x] === row[x-1]) && row[x] !== 0) { -// row[x] = (row[x] + row[x-1]); -// -// $tile1 = self.selectTile(brow, x); -// $tile2 = self.selectTile(brow, x-1); -// self.scoring(row[x]); -// row[x-1] = 0; -// switch(x) { -// case 3: -// self.moveRight([brow, x-2]); -// self.moveRight([brow, x-3]); -// break; -// case 2: -// self.moveRight([brow, x-2]); -// break; -// } -// } -// } -// } -// return this.board; -// }; +Game.prototype.moveLeft = function(row,col) { + var $tile; + var value = this.board[row][col]; + $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); + if (this.board[row][col] !== 0) { + for(var j=0; j < col; j++) { + if (this.board[row][j] === 0) { + this.board[row][j] = value; + $tile.attr('data-col', 'c' + j); + this.board[row][col] = 0; + break; + } + } + } +}; + +Game.prototype.moveRight = function(row,col) { + var $tile; + var value = this.board[row][col]; + $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); + if (this.board[row][col] !== 0) { + for(var j=3; j > col; j--) { + if (this.board[row][j] === 0) { + this.board[row][j] = value; + $tile.attr('data-col', 'c' + j); + this.board[row][col] = 0; + break; + } + } + } + // var $tile; + // var value = this.board[row][col]; + // $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); + // var board_row = this.board[row]; + // for(var j= 3; j > col; j--) { + // if (board_row[j] === 0) { + // this.board[row][j] = value; + // $tile.attr('data-col', 'c' + j); + // this.board[row][col] = 0; + // break; + // } + // } +}; + +Game.prototype.moveBoardLeft = function() { + self = this; + for (var row=0; row < 4; row++) { + for (var col=1; col < 4; col++) { + self.moveLeft(row, col); + } + } + return this.board; +}; + +Game.prototype.moveBoardRight = function() { + self = this; + for (var row=0; row < 4; row++) { + for (var col=3; col >= 0; col--) { + self.moveRight(row, col); + } + } + return this.board; +}; + +Game.prototype.collideBoardLeft = function() { + self = this; + for (var row = 0; row < 4; row++) { + for (var col = 0; col < 3; col++) { + if ((this.board[row][col] === this.board[row][col+1]) && (this.board[row][col] !== 0)) { + self.collideLeft(row, col); + } + } + } + return this.board; +}; + +Game.prototype.collideLeft = function(row, col) { + self = this; + var value = this.board[row][col]; + var value2 = this.board[row][col+1]; + $tile1 = self.selectTile(row, col, value); + $tile2 = self.selectTile(row, col+1, value2); + this.board[row][col] = (value + value2); + this.board[row][col+1] = 0; + //$tile2.attr('data-col', col); +// setTimeout(function() { + $tile1.attr('data-val', this.board[row][col]); + $tile1.html(this.board[row][col]); + $tile2.remove(); +// }, 200); + + switch(col) { + case 0: + $tile3 = self.selectTile(row, 2, this.board[row][2]); + $tile4 = self.selectTile(row, 3, this.board[row][3]); + $tile3.attr('data-col', 'c' + 1); + $tile4.attr('data-col', 'c' + 2); + this.board[row][1] = this.board[row][2]; + this.board[row][2] = this.board[row][3]; + this.board[row][3] = 0; + break; + case 1: + $tile5 = self.selectTile(row, 3, this.board[row][3]); + $tile5.attr('data-col', 'c' + 2); + this.board[row][2] = this.board[row][3]; + this.board[row][3] = 0; + break; + } + return this.board; +}; + + +Game.prototype.collideRight = function(row, col) { + self = this; + var value = this.board[row][col]; + var value2 = this.board[row][col-1]; + $tile1 = self.selectTile(row, col, value); + $tile2 = self.selectTile(row, col-1, value2); + this.board[row][col] = (value + value2); + this.board[row][col-1] = 0; + $tile2.attr('data-col', col); + $tile1.attr('data-val', this.board[row][col]); + $tile1.html(this.board[row][col]); + $tile2.remove(); + + switch(col) { + case 3: + $tile3 = self.selectTile(row, 1, this.board[row][1]); + $tile4 = self.selectTile(row, 0, this.board[row][0]); + $tile3.attr('data-col', 'c' + 2); + $tile4.attr('data-col', 'c' + 1); + this.board[row][2] = this.board[row][1]; + this.board[row][1] = this.board[row][0]; + this.board[row][0] = 0; + break; + case 2: + $tile5 = self.selectTile(row, 0, this.board[row][0]); + $tile5.attr('data-col', 'c' + 1); + this.board[row][1] = this.board[row][0]; + this.board[row][0] = 0; + break; + } + return this.board; +}; + + + +Game.prototype.collideBoardRight = function() { + self = this; + for (var row = 0; row < 4; row++) { + for (var col = 3; col >= 1; col--) { + if ((this.board[row][col] === this.board[row][col-1]) && this.board[row][col] !== 0) { + self.collideRight(row, col); + } + } + } + return this.board; +}; Game.prototype.moveUp = function(row, col) { diff --git a/javascripts/2048_2.js b/javascripts/2048_2.js index 17015b6..7fe7c2a 100644 --- a/javascripts/2048_2.js +++ b/javascripts/2048_2.js @@ -48,16 +48,6 @@ Game.prototype.moveLeft = function(row,col) { } } }; -// var board_row = this.board[row]; -// for(var j=0; j < col; j++) { -// if (board_row[j] === 0) { -// this.board[row][j] = value; -// $tile.attr('data-col', 'c' + j); -// this.board[row][col] = 0; -// break; -// } -// } -// }; Game.prototype.moveRight = function(row,col) { var $tile; @@ -107,6 +97,18 @@ Game.prototype.moveBoardRight = function() { return this.board; }; +Game.prototype.collideBoardLeft = function() { + self = this; + for (var row = 0; row < 4; row++) { + for (var col = 0; col < 3; col++) { + if ((this.board[row][col] === this.board[row][col+1]) && (this.board[row][col] !== 0)) { + self.collideLeft(row, col); + } + } + } + return this.board; +}; + Game.prototype.collideLeft = function(row, col) { self = this; var value = this.board[row][col]; @@ -115,12 +117,12 @@ Game.prototype.collideLeft = function(row, col) { $tile2 = self.selectTile(row, col+1, value2); this.board[row][col] = (value + value2); this.board[row][col+1] = 0; - $tile2.attr('data-col', col); - setTimeout(function() { + //$tile2.attr('data-col', col); +// setTimeout(function() { $tile1.attr('data-val', this.board[row][col]); $tile1.html(this.board[row][col]); $tile2.remove(); - }, 200); +// }, 200); switch(col) { case 0: @@ -131,24 +133,18 @@ Game.prototype.collideLeft = function(row, col) { this.board[row][1] = this.board[row][2]; this.board[row][2] = this.board[row][3]; this.board[row][3] = 0; - // if (this.board[row][col+2] !== 0) { - // self.moveLeft(row, col+2); - // } - // if (this.board[row][col+3] !== 0) { - // self.moveLeft(row, col+3); - // } break; case 1: - $tile4 = self.selectTile(row, 3, this.board[row][3]); - $tile4.attr('data-col', 'c' + 2); + $tile5 = self.selectTile(row, 3, this.board[row][3]); + $tile5.attr('data-col', 'c' + 2); this.board[row][2] = this.board[row][3]; this.board[row][3] = 0; - //self.moveLeft(row, col+2); break; } return this.board; }; + Game.prototype.collideRight = function(row, col) { self = this; var value = this.board[row][col]; @@ -171,44 +167,25 @@ Game.prototype.collideRight = function(row, col) { this.board[row][2] = this.board[row][1]; this.board[row][1] = this.board[row][0]; this.board[row][0] = 0; - // if (this.board[row][col-2] !== 0) { - // self.moveRight(row, col-2); - // } - // if (this.board[row][col-3] !== 0) { - // self.moveRight(row, col-3); - // } break; case 2: - $tile4 = self.selectTile(row, 0, this.board[row][0]); - $tile4.attr('data-col', 'c' + 1); + $tile5 = self.selectTile(row, 0, this.board[row][0]); + $tile5.attr('data-col', 'c' + 1); this.board[row][1] = this.board[row][0]; this.board[row][0] = 0; - //self.moveRight(row, col-2); break; } return this.board; }; -Game.prototype.collideBoardLeft = function() { - self = this; - for (var brow = 0; brow < 4; brow++) { - var row = this.board[brow]; - for (var x = 0; x < 3; x++) { - if ((row[x] === row[x+1]) && (row[x] !== 0)) { - self.collideLeft(brow, x); - } - } - } - return this.board; -}; + Game.prototype.collideBoardRight = function() { self = this; - for (var brow = 0; brow < 4; brow++) { - var row = this.board[brow]; - for (var x = 3; x >= 1; x--) { - if ((row[x] === row[x-1]) && row[x] !== 0) { - self.collideRight(brow, x); + for (var row = 0; row < 4; row++) { + for (var col = 3; col >= 1; col--) { + if ((this.board[row][col] === this.board[row][col-1]) && this.board[row][col] !== 0) { + self.collideRight(row, col); } } } @@ -254,26 +231,25 @@ Game.prototype.moveTile = function(direction) { break; case 37: //left self.moveBoardLeft(); - setTimeout(function() { + // setTimeout(function() { self.collideBoardLeft(); - }, 200); - setTimeout(function() { + // }, 200); + // setTimeout(function() { self.randTile(); - }, 200); + // }, 200); //self.lost(); //self.randTile(); - console.log('left'); break; case 39: //right self.moveBoardRight(); - setTimeout(function() { + // setTimeout(function() { self.collideBoardRight(); - }, 200); - setTimeout(function() { + // }, 200); + // setTimeout(function() { self.randTile(); - }, 200); + // }, 200); //self.lost(); - console.log('right'); + // console.log('right'); break; } }; @@ -283,16 +259,16 @@ $(document).ready(function() { var game = new Game(); game.randTile(); game.randTile(); - // var test_row = 0 - // var test_col1 = 0 - // var test_col2 = 1 - // var test_col3 = 2 - // game.board[test_row][test_col1] = 2; - // game.board[test_row][test_col2] = 2; - // game.board[test_row][test_col3] = 2; - // $('#gameboard').append('
'+ 2 +'
'); - // $('#gameboard').append('
'+ 2 +'
'); - // $('#gameboard').append('
'+ 2 +'
'); + var test_row = 3 + var test_col1 = 0 + var test_col2 = 1 + var test_col3 = 2 + game.board[test_row][test_col1] = 2; + game.board[2][test_col2] = 2; + game.board[test_row][test_col3] = 2; + $('#gameboard').append('
'+ 2 +'
'); + $('#gameboard').append('
'+ 2 +'
'); + $('#gameboard').append('
'+ 2 +'
'); $('body').keydown(function(event){ var arrows = [37, 38, 39, 40]; From 172cc03cd40681ded04516e0de17c47e9e27c2f5 Mon Sep 17 00:00:00 2001 From: noglows Date: Thu, 4 Feb 2016 15:05:14 -0800 Subject: [PATCH 42/60] Fixed bugs and changed animation times --- index.html | 1 + javascripts/2048.js | 125 +++++++++++++++++++------------------------ stylesheets/2048.css | 5 ++ 3 files changed, 61 insertions(+), 70 deletions(-) diff --git a/index.html b/index.html index 4a7e370..1b2c089 100644 --- a/index.html +++ b/index.html @@ -7,6 +7,7 @@ +

2048

diff --git a/javascripts/2048.js b/javascripts/2048.js index cddb9de..8073b94 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -67,45 +67,46 @@ Game.prototype.moveTile = function(direction) { // Game method here var board = this.board; var self = this; - switch(direction) { - case 38: //up - self.moveBoardUp(); - setTimeout(function() { - self.collideBoardUp(); - }, 200); - setTimeout(function() { - self.randTile(); - }, 400); - - console.log('up'); - break; - case 40: //down - self.moveBoardDown(); - setTimeout(function() { - self.collideBoardDown(); - }, 200); - setTimeout(function() { - self.randTile(); - }, 200); - console.log('down'); - break; - case 37: //left - self.moveBoardLeft(); - self.collideBoardLeft(); - self.randTile(); - console.log('left'); - break; - case 39: //right - self.moveBoardRight(); - self.collideBoardRight(); - self.randTile(); - console.log('right'); - - break; + switch(direction) { + case 38: //up + self.moveBoardUp(); + setTimeout(function() { + self.collideBoardUp(); + }, 100); + setTimeout(function() { + self.randTile(); + }, 300); + break; + case 40: //down + self.moveBoardDown(); + setTimeout(function() { + self.collideBoardDown(); + }, 100); + setTimeout(function() { + self.randTile(); + }, 300); + break; + case 37: //left + self.moveBoardLeft(); + setTimeout(function() { + self.collideBoardLeft(); + }, 100); + setTimeout(function() { + self.randTile(); + }, 300); + break; + case 39: //right + self.moveBoardRight(); + setTimeout(function() { + self.collideBoardRight(); + }, 100); + setTimeout(function() { + self.randTile(); + }, 300); + break; } }; - Game.prototype.moveLeft = function(row,col) { var $tile; var value = this.board[row][col]; @@ -136,18 +137,6 @@ Game.prototype.moveRight = function(row,col) { } } } - // var $tile; - // var value = this.board[row][col]; - // $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); - // var board_row = this.board[row]; - // for(var j= 3; j > col; j--) { - // if (board_row[j] === 0) { - // this.board[row][j] = value; - // $tile.attr('data-col', 'c' + j); - // this.board[row][col] = 0; - // break; - // } - // } }; Game.prototype.moveBoardLeft = function() { @@ -186,17 +175,17 @@ Game.prototype.collideLeft = function(row, col) { self = this; var value = this.board[row][col]; var value2 = this.board[row][col+1]; - $tile1 = self.selectTile(row, col, value); - $tile2 = self.selectTile(row, col+1, value2); + var $tile1 = self.selectTile(row, col, value); + var $tile2 = self.selectTile(row, col+1, value2); this.board[row][col] = (value + value2); this.board[row][col+1] = 0; - //$tile2.attr('data-col', col); -// setTimeout(function() { - $tile1.attr('data-val', this.board[row][col]); - $tile1.html(this.board[row][col]); + $tile2.attr('data-col', 'c' + col); + setTimeout(function() { + //console.log() + $tile1.attr('data-val', self.board[row][col]); + $tile1.html(self.board[row][col]); $tile2.remove(); -// }, 200); - + }, 100); switch(col) { case 0: $tile3 = self.selectTile(row, 2, this.board[row][2]); @@ -217,20 +206,20 @@ Game.prototype.collideLeft = function(row, col) { return this.board; }; - Game.prototype.collideRight = function(row, col) { self = this; var value = this.board[row][col]; var value2 = this.board[row][col-1]; - $tile1 = self.selectTile(row, col, value); - $tile2 = self.selectTile(row, col-1, value2); + var $tile1 = self.selectTile(row, col, value); + var $tile2 = self.selectTile(row, col-1, value2); this.board[row][col] = (value + value2); this.board[row][col-1] = 0; - $tile2.attr('data-col', col); - $tile1.attr('data-val', this.board[row][col]); - $tile1.html(this.board[row][col]); - $tile2.remove(); - + $tile2.attr('data-col', 'c' + col); + setTimeout(function() { + $tile1.attr('data-val', self.board[row][col]); + $tile1.html(self.board[row][col]); + $tile2.remove(); + }, 100); switch(col) { case 3: $tile3 = self.selectTile(row, 1, this.board[row][1]); @@ -251,8 +240,6 @@ Game.prototype.collideRight = function(row, col) { return this.board; }; - - Game.prototype.collideBoardRight = function() { self = this; for (var row = 0; row < 4; row++) { @@ -306,7 +293,7 @@ Game.prototype.collideUp = function(row, col) { $tile1.attr('data-val', self.board[row][col]); $tile1.html(self.board[row][col]); $tile2.remove(); - }, 200); + }, 100); switch(row) { case 0: @@ -376,14 +363,12 @@ Game.prototype.collideDown = function(row, col) { var $tile2 = self.selectTile(row-1, col, value2); this.board[row][col] = (value + value2); this.board[row-1][col] = 0; - console.log($tile2) $tile2.attr('data-row', 'r' + row); - console.log($tile2) setTimeout(function() { $tile1.attr('data-val', self.board[row][col]); $tile1.html(self.board[row][col]); $tile2.remove(); - }, 200); + }, 100); switch(row) { case 3: diff --git a/stylesheets/2048.css b/stylesheets/2048.css index 2a46a94..618eb85 100644 --- a/stylesheets/2048.css +++ b/stylesheets/2048.css @@ -2,6 +2,11 @@ html { font: normal normal 30px/1 "Clear Sans", "Helvetica Neue", Arial, sans-serif; } +h1 { + text-align: center; + font-size: 100px; +} + #gameboard { background: #bbada0; border-radius: 0.5rem; From 815c398cac840c1a92b175dacadcf43d1120147e Mon Sep 17 00:00:00 2001 From: noglows Date: Thu, 4 Feb 2016 15:05:45 -0800 Subject: [PATCH 43/60] Deleted old files --- javascripts/2048_2.js | 279 ------------------------------------------ javascripts/2048_3.js | 165 ------------------------- javascripts/test.js | 21 ---- 3 files changed, 465 deletions(-) delete mode 100644 javascripts/2048_2.js delete mode 100644 javascripts/2048_3.js delete mode 100644 javascripts/test.js diff --git a/javascripts/2048_2.js b/javascripts/2048_2.js deleted file mode 100644 index 7fe7c2a..0000000 --- a/javascripts/2048_2.js +++ /dev/null @@ -1,279 +0,0 @@ -var Game = function() { - this.board = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]; - this.score = 0; - this.win = false; -}; - -Game.prototype.randTile = function() { - var arr = []; - for(var i = 0; i < 4; i++) { - for(var j = 0; j < 4; j++ ) { - if( this.board[i][j] === 0 ) { - arr.push([i,j]); - } - } - } - var randNum = Math.floor((Math.random() * arr.length)); - var i_board = arr[randNum][0]; - var j_board = arr[randNum][1]; - - if (Math.floor((Math.random() * 10) + 1) == 7) { - this.board[i_board][j_board] = 4; - } else { - this.board[i_board][j_board] = 2; - } - var val = this.board[i_board][j_board]; - $('#gameboard').append('
'+ val +'
'); - - return [i_board, j_board]; -}; - -Game.prototype.selectTile = function(row, col, value) { - var $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"][data-val="' + value + '"]'); - return $tile; -}; - -Game.prototype.moveLeft = function(row,col) { - var $tile; - var value = this.board[row][col]; - $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); - if (this.board[row][col] !== 0) { - for(var j=0; j < col; j++) { - if (this.board[row][j] === 0) { - this.board[row][j] = value; - $tile.attr('data-col', 'c' + j); - this.board[row][col] = 0; - break; - } - } - } -}; - -Game.prototype.moveRight = function(row,col) { - var $tile; - var value = this.board[row][col]; - $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); - if (this.board[row][col] !== 0) { - for(var j=3; j > col; j--) { - if (this.board[row][j] === 0) { - this.board[row][j] = value; - $tile.attr('data-col', 'c' + j); - this.board[row][col] = 0; - break; - } - } - } - // var $tile; - // var value = this.board[row][col]; - // $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); - // var board_row = this.board[row]; - // for(var j= 3; j > col; j--) { - // if (board_row[j] === 0) { - // this.board[row][j] = value; - // $tile.attr('data-col', 'c' + j); - // this.board[row][col] = 0; - // break; - // } - // } -}; - -Game.prototype.moveBoardLeft = function() { - self = this; - for (var row=0; row < 4; row++) { - for (var col=1; col < 4; col++) { - self.moveLeft(row, col); - } - } - return this.board; -}; - -Game.prototype.moveBoardRight = function() { - self = this; - for (var row=0; row < 4; row++) { - for (var col=3; col >= 0; col--) { - self.moveRight(row, col); - } - } - return this.board; -}; - -Game.prototype.collideBoardLeft = function() { - self = this; - for (var row = 0; row < 4; row++) { - for (var col = 0; col < 3; col++) { - if ((this.board[row][col] === this.board[row][col+1]) && (this.board[row][col] !== 0)) { - self.collideLeft(row, col); - } - } - } - return this.board; -}; - -Game.prototype.collideLeft = function(row, col) { - self = this; - var value = this.board[row][col]; - var value2 = this.board[row][col+1]; - $tile1 = self.selectTile(row, col, value); - $tile2 = self.selectTile(row, col+1, value2); - this.board[row][col] = (value + value2); - this.board[row][col+1] = 0; - //$tile2.attr('data-col', col); -// setTimeout(function() { - $tile1.attr('data-val', this.board[row][col]); - $tile1.html(this.board[row][col]); - $tile2.remove(); -// }, 200); - - switch(col) { - case 0: - $tile3 = self.selectTile(row, 2, this.board[row][2]); - $tile4 = self.selectTile(row, 3, this.board[row][3]); - $tile3.attr('data-col', 'c' + 1); - $tile4.attr('data-col', 'c' + 2); - this.board[row][1] = this.board[row][2]; - this.board[row][2] = this.board[row][3]; - this.board[row][3] = 0; - break; - case 1: - $tile5 = self.selectTile(row, 3, this.board[row][3]); - $tile5.attr('data-col', 'c' + 2); - this.board[row][2] = this.board[row][3]; - this.board[row][3] = 0; - break; - } - return this.board; -}; - - -Game.prototype.collideRight = function(row, col) { - self = this; - var value = this.board[row][col]; - var value2 = this.board[row][col-1]; - $tile1 = self.selectTile(row, col, value); - $tile2 = self.selectTile(row, col-1, value2); - this.board[row][col] = (value + value2); - this.board[row][col-1] = 0; - $tile2.attr('data-col', col); - $tile1.attr('data-val', this.board[row][col]); - $tile1.html(this.board[row][col]); - $tile2.remove(); - - switch(col) { - case 3: - $tile3 = self.selectTile(row, 1, this.board[row][1]); - $tile4 = self.selectTile(row, 0, this.board[row][0]); - $tile3.attr('data-col', 'c' + 2); - $tile4.attr('data-col', 'c' + 1); - this.board[row][2] = this.board[row][1]; - this.board[row][1] = this.board[row][0]; - this.board[row][0] = 0; - break; - case 2: - $tile5 = self.selectTile(row, 0, this.board[row][0]); - $tile5.attr('data-col', 'c' + 1); - this.board[row][1] = this.board[row][0]; - this.board[row][0] = 0; - break; - } - return this.board; -}; - - - -Game.prototype.collideBoardRight = function() { - self = this; - for (var row = 0; row < 4; row++) { - for (var col = 3; col >= 1; col--) { - if ((this.board[row][col] === this.board[row][col-1]) && this.board[row][col] !== 0) { - self.collideRight(row, col); - } - } - } - return this.board; -}; - -Game.prototype.lost = function() { - var count = 0; - board = this.board; - //check col - for (var i = 0; i < 4; i++) { - for (var j = 0; j < 3; j ++) { - if (board[i][j] === [i+1][j]) - { return false; - } - } - //check row - for (var x = 0; x < 3; i++) - for (var y = 0; y < 4; y ++) { - if (board[x][y] === [x][y+1]) { - return false; - } - } - } - console.log("Game Over!"); - return true; -}; - -Game.prototype.moveTile = function(direction) { - // Game method here - board = this.board; - self = this; - switch(direction) { - case 38: //up - // self.moveBoardUp(); - // self.collideUp(); - // self.randTile(); - break; - case 40: //down - // self.moveBoardDown(); - // self.collideDown(); - // self.randTile(); - break; - case 37: //left - self.moveBoardLeft(); - // setTimeout(function() { - self.collideBoardLeft(); - // }, 200); - // setTimeout(function() { - self.randTile(); - // }, 200); - //self.lost(); - //self.randTile(); - break; - case 39: //right - self.moveBoardRight(); - // setTimeout(function() { - self.collideBoardRight(); - // }, 200); - // setTimeout(function() { - self.randTile(); - // }, 200); - //self.lost(); - // console.log('right'); - break; - } -}; - -$(document).ready(function() { - console.log("ready to go!"); - var game = new Game(); - game.randTile(); - game.randTile(); - var test_row = 3 - var test_col1 = 0 - var test_col2 = 1 - var test_col3 = 2 - game.board[test_row][test_col1] = 2; - game.board[2][test_col2] = 2; - game.board[test_row][test_col3] = 2; - $('#gameboard').append('
'+ 2 +'
'); - $('#gameboard').append('
'+ 2 +'
'); - $('#gameboard').append('
'+ 2 +'
'); - - $('body').keydown(function(event){ - var arrows = [37, 38, 39, 40]; - if (arrows.indexOf(event.which) > -1) { - game.moveTile(event.which); - } - }); -}); diff --git a/javascripts/2048_3.js b/javascripts/2048_3.js deleted file mode 100644 index c8c4804..0000000 --- a/javascripts/2048_3.js +++ /dev/null @@ -1,165 +0,0 @@ -var Game = function() { - this.board = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]; - this.score = 0; - this.win = false; -}; - -Game.prototype.randTile = function() { - var arr = []; - for(var i = 0; i < 4; i++) { - for(var j = 0; j < 4; j++ ) { - if( this.board[i][j] === 0 ) { - arr.push([i,j]); - } - } - } - var randNum = Math.floor((Math.random() * arr.length)); - var i_board = arr[randNum][0]; - var j_board = arr[randNum][1]; - - if (Math.floor((Math.random() * 10) + 1) == 7) { - this.board[i_board][j_board] = 4; - } else { this.board[i_board][j_board] = 2; } - // return this.board; - var val = this.board[i_board][j_board]; - //$('#gameboard').append('
'+ val +'
'); - - return [i_board, j_board]; -}; - -Game.prototype.selectTile = function(row, col, value) { - var $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"][data-val="' + value + '"]'); - return $tile; -}; - - -Game.prototype.moveDown = function(row, col) { - var $tile; - var value = this.board[row][col]; - $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); - if (this.board[row][col] !== 0) { - for(var i = 3; i > row; i--) { - if ((this.board[i][col]) === 0) { - this.board[i][col] = value; - $tile.attr('data-row', 'r' + i); - this.board[row][col] = 0; - break; - } - } - } -}; - -Game.prototype.moveBoardDown = function() { - self = this; - for (var row = 2; row >= 0; row--) { - for (var col = 0; col < 4; col++) { - self.moveDown(row, col); - } - } - return this.board; -}; - - -Game.prototype.collideDown = function(row, col) { - self = this; - var value = this.board[row][col]; - var value2 = this.board[row-1][col]; - $tile1 = self.selectTile(row, col, value); - $tile2 = self.selectTile(row-1, col, value2); - this.board[row][col] = (value + value2); - this.board[row-1][col] = 0; - $tile1.attr('data-val', this.board[row][col]); - $tile1.html(this.board[row][col]); - $tile2.remove(); - switch(row) { - case 3: - $tile3 = self.selectTile(1, col, this.board[1][col]); - $tile4 = self.selectTile(0, col, this.board[0][col]); - $tile3.attr('data-row', 'r' + 2); - $tile4.attr('data-row', 'r' + 1); - this.board[2][col] = this.board[1][col]; - this.board[1][col] = this.board[0][col]; - this.board[0][col] = 0; - break; - case 2: - $tile5 = self.selectTile(0, col, this.board[0][col]); - $tile5.attr('data-row', 'r' + 1); - this.board[1][col] = this.board[0][col]; - this.board[0][col] = 0; - break; - } - return this.board; -}; - -Game.prototype.collideBoardDown = function() { -self = this; -for (var row = 3; row > 0 ; row--) { - for (var col = 0; col < 4; col++) { - if (( board[row][col] === board[row-1][col]) && (board[row][col] !== 0)) { - self.collideDown(row, col); - } - } -} -return this.board; -}; - - -Game.prototype.moveTile = function(direction) { -// Game method here -board = this.board; -self = this; - switch(direction) { - case 38: //up - //self.moveBoardUp(); - //self.collideBoardUp(); - //self.randTile(); - console.log('up'); - break; - case 40: //down - self.moveBoardDown(); - self.collideBoardDown(); - self.randTile(); - console.log('down'); - break; - case 37: //left - // self.moveBoardLeft(); - // self.collideBoardLeft(); - //self.randTile(); - console.log('left'); - break; - case 39: //right - // self.moveBoardRight(); - // self.collideRight(); - // self.randTile(); - console.log('right'); - //this.moveRight(tile); - //this.collideRight(tile); - break; - } -}; - -$(document).ready(function() { - console.log("ready to go!"); - var game = new Game(); - game.randTile(); - game.randTile(); - col = 2; - rowo =3; - row2 = 1; - row3 = 0; - row4 = 2; - game.board[rowo][col] = 2; - game.board[row2][col] = 2; - game.board[row4][col] = 2; - game.board[row3][col] = 2; - $('#gameboard').append('
'+ 2 +'
'); - $('#gameboard').append('
'+ 2 +'
'); - $('#gameboard').append('
'+ 2 +'
'); - $('#gameboard').append('
'+ 2 +'
'); - $('body').keydown(function(event){ - var arrows = [37, 38, 39, 40]; - if (arrows.indexOf(event.which) > -1) { - game.moveTile(event.which); - } - }); -}); diff --git a/javascripts/test.js b/javascripts/test.js deleted file mode 100644 index 4f12595..0000000 --- a/javascripts/test.js +++ /dev/null @@ -1,21 +0,0 @@ - -var game = new Game(); -game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); -// game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); -// game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); -// game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); -// game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); -// game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); -// game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); -// game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); -// game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); -// game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); -// game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); -// game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); -// game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); -// game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); -// game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); -// game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); -// game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); -// game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); -// game.randTile([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); From e2415be4e974835ba78af8aa2cf74d42114618ab Mon Sep 17 00:00:00 2001 From: noglows Date: Thu, 4 Feb 2016 15:09:32 -0800 Subject: [PATCH 44/60] Reorganized code --- index.html | 1 + javascripts/2048.js | 182 +++++++++++++++++++++---------------------- stylesheets/2048.css | 5 ++ 3 files changed, 97 insertions(+), 91 deletions(-) diff --git a/index.html b/index.html index 1b2c089..53a2e92 100644 --- a/index.html +++ b/index.html @@ -8,6 +8,7 @@

2048

+
diff --git a/javascripts/2048.js b/javascripts/2048.js index 8073b94..10d52db 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -139,6 +139,38 @@ Game.prototype.moveRight = function(row,col) { } }; +Game.prototype.moveUp = function(row, col) { + var $tile; + var value = this.board[row][col]; + $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); + if (this.board[row][col] !== 0) { + for(var i = 0; i < row ; i++) { + if ((this.board[i][col]) === 0) { + this.board[i][col] = value; + $tile.attr('data-row', 'r' + i); + this.board[row][col] = 0; + break; + } + } + } +}; + +Game.prototype.moveDown = function(row, col) { + var $tile; + var value = this.board[row][col]; + $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); + if (this.board[row][col] !== 0) { + for(var i = 3; i > row; i--) { + if ((this.board[i][col]) === 0) { + this.board[i][col] = value; + $tile.attr('data-row', 'r' + i); + this.board[row][col] = 0; + break; + } + } + } +}; + Game.prototype.moveBoardLeft = function() { self = this; for (var row=0; row < 4; row++) { @@ -159,6 +191,26 @@ Game.prototype.moveBoardRight = function() { return this.board; }; +Game.prototype.moveBoardUp = function() { + var self = this; + for (var row = 1; row < 4; row++) { + for (var col = 0; col < 4; col++) { + self.moveUp(row, col); + } + } + return this.board; +}; + +Game.prototype.moveBoardDown = function() { + var self = this; + for (var row = 2; row >= 0; row--) { + for (var col = 0; col < 4; col++) { + self.moveDown(row, col); + } + } + return this.board; +}; + Game.prototype.collideBoardLeft = function() { self = this; for (var row = 0; row < 4; row++) { @@ -171,6 +223,44 @@ Game.prototype.collideBoardLeft = function() { return this.board; }; +Game.prototype.collideBoardRight = function() { + self = this; + for (var row = 0; row < 4; row++) { + for (var col = 3; col >= 1; col--) { + if ((this.board[row][col] === this.board[row][col-1]) && this.board[row][col] !== 0) { + self.collideRight(row, col); + } + } + } + return this.board; +}; + +Game.prototype.collideBoardUp = function() { +var self = this; +var board = this.board; +for (var row = 0; row < 3 ; row++) { + for (var col = 0; col < 4; col++) { + if (( board[row][col] === board[row+1][col]) && (board[row][col] !== 0)) { + self.collideUp(row, col); + } + } +} +return this.board; +}; + +Game.prototype.collideBoardDown = function() { +var self = this; +var board = this.board; +for (var row = 3; row > 0 ; row--) { + for (var col = 0; col < 4; col++) { + if (( board[row][col] === board[row-1][col]) && (board[row][col] !== 0)) { + self.collideDown(row, col); + } + } +} +return this.board; +}; + Game.prototype.collideLeft = function(row, col) { self = this; var value = this.board[row][col]; @@ -240,46 +330,6 @@ Game.prototype.collideRight = function(row, col) { return this.board; }; -Game.prototype.collideBoardRight = function() { - self = this; - for (var row = 0; row < 4; row++) { - for (var col = 3; col >= 1; col--) { - if ((this.board[row][col] === this.board[row][col-1]) && this.board[row][col] !== 0) { - self.collideRight(row, col); - } - } - } - return this.board; -}; - - -Game.prototype.moveUp = function(row, col) { - //self = this; - var $tile; - var value = this.board[row][col]; - $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); - if (this.board[row][col] !== 0) { - for(var i = 0; i < row ; i++) { - if ((this.board[i][col]) === 0) { - this.board[i][col] = value; - $tile.attr('data-row', 'r' + i); - this.board[row][col] = 0; - break; - } - } - } -}; - -Game.prototype.moveBoardUp = function() { - var self = this; - for (var row = 1; row < 4; row++) { - for (var col = 0; col < 4; col++) { - self.moveUp(row, col); - } - } - return this.board; -}; - Game.prototype.collideUp = function(row, col) { var self = this; var value = this.board[row][col]; @@ -316,45 +366,6 @@ Game.prototype.collideUp = function(row, col) { return this.board; }; -Game.prototype.collideBoardUp = function() { -var self = this; -var board = this.board; -for (var row = 0; row < 3 ; row++) { - for (var col = 0; col < 4; col++) { - if (( board[row][col] === board[row+1][col]) && (board[row][col] !== 0)) { - self.collideUp(row, col); - } - } -} -return this.board; -}; - -Game.prototype.moveDown = function(row, col) { - var $tile; - var value = this.board[row][col]; - $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); - if (this.board[row][col] !== 0) { - for(var i = 3; i > row; i--) { - if ((this.board[i][col]) === 0) { - this.board[i][col] = value; - $tile.attr('data-row', 'r' + i); - this.board[row][col] = 0; - break; - } - } - } -}; - -Game.prototype.moveBoardDown = function() { - var self = this; - for (var row = 2; row >= 0; row--) { - for (var col = 0; col < 4; col++) { - self.moveDown(row, col); - } - } - return this.board; -}; - Game.prototype.collideDown = function(row, col) { var self = this; var value = this.board[row][col]; @@ -390,18 +401,7 @@ Game.prototype.collideDown = function(row, col) { return this.board; }; -Game.prototype.collideBoardDown = function() { -var self = this; -var board = this.board; -for (var row = 3; row > 0 ; row--) { - for (var col = 0; col < 4; col++) { - if (( board[row][col] === board[row-1][col]) && (board[row][col] !== 0)) { - self.collideDown(row, col); - } - } -} -return this.board; -}; + $(document).ready(function() { console.log("ready to go!"); diff --git a/stylesheets/2048.css b/stylesheets/2048.css index 618eb85..407f3d4 100644 --- a/stylesheets/2048.css +++ b/stylesheets/2048.css @@ -7,6 +7,11 @@ h1 { font-size: 100px; } +#score { + text-align: center; + font-size: 40px; +} + #gameboard { background: #bbada0; border-radius: 0.5rem; From dce088d1fb5d8792e0950d07a577d52c3be8a283 Mon Sep 17 00:00:00 2001 From: noglows Date: Thu, 4 Feb 2016 15:20:33 -0800 Subject: [PATCH 45/60] Working score bar --- index.html | 2 +- javascripts/2048.js | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/index.html b/index.html index 53a2e92..a7b75f7 100644 --- a/index.html +++ b/index.html @@ -8,7 +8,7 @@

2048

- +

Score: 0

diff --git a/javascripts/2048.js b/javascripts/2048.js index 10d52db..6f648a9 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -4,8 +4,8 @@ var Game = function() { this.win = false; }; -Game.prototype.scoring = function(tile) { - this.score += tile; +Game.prototype.scoring = function(value) { + this.score += value; if (this.score == 2048) { this.win = true; } @@ -275,6 +275,8 @@ Game.prototype.collideLeft = function(row, col) { $tile1.attr('data-val', self.board[row][col]); $tile1.html(self.board[row][col]); $tile2.remove(); + self.scoring(self.board[row][col]); + $("#score").html("Score: " + self.score); }, 100); switch(col) { case 0: @@ -309,6 +311,8 @@ Game.prototype.collideRight = function(row, col) { $tile1.attr('data-val', self.board[row][col]); $tile1.html(self.board[row][col]); $tile2.remove(); + self.scoring(self.board[row][col]); + $("#score").html("Score: " + self.score); }, 100); switch(col) { case 3: @@ -343,6 +347,8 @@ Game.prototype.collideUp = function(row, col) { $tile1.attr('data-val', self.board[row][col]); $tile1.html(self.board[row][col]); $tile2.remove(); + self.scoring(self.board[row][col]); + $("#score").html("Score: " + self.score); }, 100); switch(row) { @@ -379,6 +385,8 @@ Game.prototype.collideDown = function(row, col) { $tile1.attr('data-val', self.board[row][col]); $tile1.html(self.board[row][col]); $tile2.remove(); + self.scoring(self.board[row][col]); + $("#score").html("Score: " + self.score); }, 100); switch(row) { @@ -408,6 +416,7 @@ $(document).ready(function() { var game = new Game(); game.randTile(); game.randTile(); + //$("#score").html(this.score); $('body').keydown(function(event){ var arrows = [37, 38, 39, 40]; From 00c22ef6a6dd55ec19dbafc4c3538e903728590a Mon Sep 17 00:00:00 2001 From: noglows Date: Thu, 4 Feb 2016 15:52:35 -0800 Subject: [PATCH 46/60] Added a restart button --- index.html | 1 + javascripts/2048.js | 15 +++++++++++++++ stylesheets/2048.css | 8 ++++++++ 3 files changed, 24 insertions(+) diff --git a/index.html b/index.html index a7b75f7..bb9f520 100644 --- a/index.html +++ b/index.html @@ -9,6 +9,7 @@

2048

Score: 0

+
diff --git a/javascripts/2048.js b/javascripts/2048.js index 6f648a9..bb4072b 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -409,6 +409,17 @@ Game.prototype.collideDown = function(row, col) { return this.board; }; +Game.prototype.restart = function() { + console.log("in the function") + this.board = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]; + this.score = 0; + this.win = false; + $("#score").html("Score: " + self.score); + $(".tile").remove(); + this.randTile(); + this.randTile(); +} + $(document).ready(function() { @@ -423,6 +434,10 @@ $(document).ready(function() { if (arrows.indexOf(event.which) > -1) { game.moveTile(event.which); } + }); + $('#restart').click(function() { + game.restart(); + console.log(game.board); }); }); diff --git a/stylesheets/2048.css b/stylesheets/2048.css index 407f3d4..26a6efb 100644 --- a/stylesheets/2048.css +++ b/stylesheets/2048.css @@ -12,6 +12,14 @@ h1 { font-size: 40px; } +button { + text-align: center; + display: block; + margin: auto; + font-size: 30px; + font: normal normal "Clear Sans", "Helvetica Neue", Arial, sans-serif; +} + #gameboard { background: #bbada0; border-radius: 0.5rem; From 514a7be87b4cd9235170ad39f0a9b578efa87090 Mon Sep 17 00:00:00 2001 From: noglows Date: Thu, 4 Feb 2016 15:53:57 -0800 Subject: [PATCH 47/60] Small change to scoring --- javascripts/2048.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/javascripts/2048.js b/javascripts/2048.js index bb4072b..e20e74e 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -6,7 +6,7 @@ var Game = function() { Game.prototype.scoring = function(value) { this.score += value; - if (this.score == 2048) { + if (this.value == 2048) { this.win = true; } }; From b8ad93fe600024fe91b9bf09ff59f4281ddbb4ab Mon Sep 17 00:00:00 2001 From: Tammy Date: Thu, 4 Feb 2016 15:57:50 -0800 Subject: [PATCH 48/60] fixed a bug --- javascripts/2048.js | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/javascripts/2048.js b/javascripts/2048.js index 6f648a9..abd1c4a 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -43,19 +43,21 @@ Game.prototype.randTile = function() { } } } - var randNum = Math.floor((Math.random() * arr.length)); - var i_board = arr[randNum][0]; - var j_board = arr[randNum][1]; - - if (Math.floor((Math.random() * 10) + 1) == 7) { - this.board[i_board][j_board] = 4; - } else { - this.board[i_board][j_board] = 2; - } - var val = this.board[i_board][j_board]; - $('#gameboard').append('
'+ val +'
'); + if (arr.length !== 0) { + var randNum = Math.floor((Math.random() * arr.length)); + var i_board = arr[randNum][0]; + var j_board = arr[randNum][1]; + + if (Math.floor((Math.random() * 10) + 1) == 7) { + this.board[i_board][j_board] = 4; + } else { + this.board[i_board][j_board] = 2; + } + var val = this.board[i_board][j_board]; + $('#gameboard').append('
'+ val +'
'); - return [i_board, j_board]; + return [i_board, j_board]; + } }; Game.prototype.selectTile = function(row, col, value) { From 077368e3525db094d55b9c8f05dc46cbbfd80e14 Mon Sep 17 00:00:00 2001 From: noglows Date: Thu, 4 Feb 2016 16:15:27 -0800 Subject: [PATCH 49/60] Troubleshooting bugs --- javascripts/2048.js | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/javascripts/2048.js b/javascripts/2048.js index 5c327b1..a22aa7b 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -15,22 +15,26 @@ Game.prototype.lost = function() { var count = 0; board = this.board; //check col - for (var i = 0; i < 4; i++) { - for (var j = 0; j < 3; j ++) { - if (board[i][j] === [i+1][j]) - { return false; + for (var i = 0; i < 3; i++) { + for (var j = 0; j < 4; j ++) { + if (board[i][j] === [i+1][j]) { + return false; + } } } //check row - for (var x = 0; x < 3; i++) - for (var y = 0; y < 4; y ++) { + for (var x = 0; x < 4; i++) { + for (var y = 0; y < 3; y ++) { if (board[x][y] === [x][y+1]) { return false; } } } - console.log("Game Over!"); - return true; + console.log(this.board); + alert("Game Over!"); + console.log("Game Over"); + //this.restart(); + }; @@ -43,6 +47,8 @@ Game.prototype.randTile = function() { } } } + console.log(this.board) + console.log(arr) if (arr.length !== 0) { var randNum = Math.floor((Math.random() * arr.length)); var i_board = arr[randNum][0]; @@ -57,6 +63,9 @@ Game.prototype.randTile = function() { $('#gameboard').append('
'+ val +'
'); return [i_board, j_board]; + } else { + console.log("Inside the else") + this.lost(); } }; @@ -420,7 +429,7 @@ Game.prototype.restart = function() { $(".tile").remove(); this.randTile(); this.randTile(); -} +}; From 2ce3f335c861fca3520efb313d6b5ef4abc768fe Mon Sep 17 00:00:00 2001 From: noglows Date: Thu, 4 Feb 2016 16:48:16 -0800 Subject: [PATCH 50/60] Working game over logic --- javascripts/2048.js | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/javascripts/2048.js b/javascripts/2048.js index a22aa7b..d554260 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -12,34 +12,33 @@ Game.prototype.scoring = function(value) { }; Game.prototype.lost = function() { - var count = 0; + //var count = 0; board = this.board; //check col for (var i = 0; i < 3; i++) { - for (var j = 0; j < 4; j ++) { - if (board[i][j] === [i+1][j]) { + for (var j = 0; j < 4; j++) { + if (board[i][j] === board[i+1][j]) { return false; } } } //check row - for (var x = 0; x < 4; i++) { - for (var y = 0; y < 3; y ++) { - if (board[x][y] === [x][y+1]) { + for (var x = 0; x < 4; x++) { + for (var y = 0; y < 3; y++) { + if (board[x][y] === board[x][y+1]) { return false; } } } - console.log(this.board); - alert("Game Over!"); - console.log("Game Over"); - //this.restart(); + alert("Game Over!"); + this.restart(); }; Game.prototype.randTile = function() { var arr = []; + self = this; for(var i = 0; i < 4; i++) { for(var j = 0; j < 4; j++ ) { if( this.board[i][j] === 0 ) { @@ -47,8 +46,7 @@ Game.prototype.randTile = function() { } } } - console.log(this.board) - console.log(arr) + //console.log(arr) if (arr.length !== 0) { var randNum = Math.floor((Math.random() * arr.length)); var i_board = arr[randNum][0]; @@ -61,12 +59,13 @@ Game.prototype.randTile = function() { } var val = this.board[i_board][j_board]; $('#gameboard').append('
'+ val +'
'); + console.log(arr.length); + - return [i_board, j_board]; } else { - console.log("Inside the else") - this.lost(); + self.lost(); } + //return [i_board, j_board]; }; Game.prototype.selectTile = function(row, col, value) { From bb59f8ce57832d0e4ecf39af84071e1efb94dbc0 Mon Sep 17 00:00:00 2001 From: noglows Date: Thu, 4 Feb 2016 16:52:32 -0800 Subject: [PATCH 51/60] Added winning logic --- javascripts/2048.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/javascripts/2048.js b/javascripts/2048.js index d554260..dcb09ba 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -6,8 +6,8 @@ var Game = function() { Game.prototype.scoring = function(value) { this.score += value; - if (this.value == 2048) { - this.win = true; + if (value == 2048) { + alert("You made it to 2048! Keep playing or click the restart button!"); } }; @@ -30,7 +30,6 @@ Game.prototype.lost = function() { } } } - alert("Game Over!"); this.restart(); }; From 4af66e30041d666ee6ef69f37c37be8af3ae540f Mon Sep 17 00:00:00 2001 From: noglows Date: Thu, 4 Feb 2016 16:58:48 -0800 Subject: [PATCH 52/60] Added sweetalert --- index.html | 1 + javascripts/2048.js | 5 +- node_modules/sweetalert/.editorconfig | 11 + node_modules/sweetalert/.jshintrc | 11 + node_modules/sweetalert/.npmignore | 5 + node_modules/sweetalert/.travis.yml | 8 + node_modules/sweetalert/LICENSE | 22 + node_modules/sweetalert/README.md | 157 ++ node_modules/sweetalert/bower.json | 25 + .../sweetalert/dev/gulpfile-wrap-template.js | 18 + node_modules/sweetalert/dev/ie9.css | 23 + .../sweetalert/dev/loader-animation.css | 209 +++ .../sweetalert/dev/modules/default-params.js | 26 + .../sweetalert/dev/modules/handle-click.js | 128 ++ .../sweetalert/dev/modules/handle-dom.js | 161 +++ .../sweetalert/dev/modules/handle-key.js | 73 + .../sweetalert/dev/modules/handle-swal-dom.js | 148 ++ .../sweetalert/dev/modules/injected-html.js | 69 + .../sweetalert/dev/modules/set-params.js | 221 +++ node_modules/sweetalert/dev/modules/utils.js | 71 + node_modules/sweetalert/dev/sweetalert.es6.js | 311 ++++ node_modules/sweetalert/dev/sweetalert.scss | 648 +++++++++ .../sweetalert/dist/sweetalert-dev.js | 1285 +++++++++++++++++ node_modules/sweetalert/dist/sweetalert.css | 932 ++++++++++++ .../sweetalert/dist/sweetalert.min.js | 1 + node_modules/sweetalert/example/example.css | 442 ++++++ node_modules/sweetalert/example/example.scss | 580 ++++++++ .../sweetalert/example/images/logo_big.png | Bin 0 -> 17162 bytes .../sweetalert/example/images/logo_big@2x.png | Bin 0 -> 37467 bytes .../sweetalert/example/images/logo_small.png | Bin 0 -> 4459 bytes .../example/images/logo_small@2x.png | Bin 0 -> 9760 bytes .../example/images/te-logo-small.svg | 12 + .../sweetalert/example/images/thumbs-up.jpg | Bin 0 -> 30052 bytes .../sweetalert/example/images/vs_icon.png | Bin 0 -> 3873 bytes .../sweetalert/example/images/vs_icon@2x.png | Bin 0 -> 8254 bytes node_modules/sweetalert/gulpfile.js | 108 ++ node_modules/sweetalert/index.html | 584 ++++++++ .../sweetalert/lib/modules/default-params.js | 32 + .../sweetalert/lib/modules/handle-click.js | 135 ++ .../sweetalert/lib/modules/handle-dom.js | 191 +++ .../sweetalert/lib/modules/handle-key.js | 79 + .../sweetalert/lib/modules/handle-swal-dom.js | 167 +++ .../sweetalert/lib/modules/injected-html.js | 42 + .../sweetalert/lib/modules/set-params.js | 225 +++ node_modules/sweetalert/lib/modules/utils.js | 73 + node_modules/sweetalert/lib/sweetalert.js | 303 ++++ node_modules/sweetalert/package.json | 71 + node_modules/sweetalert/sweetalert.gif | Bin 0 -> 495936 bytes node_modules/sweetalert/test/index.html | 25 + node_modules/sweetalert/test/tests.js | 141 ++ .../sweetalert/themes/facebook/facebook.css | 111 ++ .../sweetalert/themes/facebook/facebook.scss | 146 ++ .../sweetalert/themes/google/google.css | 115 ++ .../sweetalert/themes/google/google.scss | 148 ++ .../sweetalert/themes/twitter/twitter.css | 140 ++ .../sweetalert/themes/twitter/twitter.scss | 177 +++ 56 files changed, 8614 insertions(+), 2 deletions(-) create mode 100644 node_modules/sweetalert/.editorconfig create mode 100644 node_modules/sweetalert/.jshintrc create mode 100644 node_modules/sweetalert/.npmignore create mode 100644 node_modules/sweetalert/.travis.yml create mode 100644 node_modules/sweetalert/LICENSE create mode 100644 node_modules/sweetalert/README.md create mode 100644 node_modules/sweetalert/bower.json create mode 100644 node_modules/sweetalert/dev/gulpfile-wrap-template.js create mode 100644 node_modules/sweetalert/dev/ie9.css create mode 100644 node_modules/sweetalert/dev/loader-animation.css create mode 100644 node_modules/sweetalert/dev/modules/default-params.js create mode 100644 node_modules/sweetalert/dev/modules/handle-click.js create mode 100644 node_modules/sweetalert/dev/modules/handle-dom.js create mode 100644 node_modules/sweetalert/dev/modules/handle-key.js create mode 100644 node_modules/sweetalert/dev/modules/handle-swal-dom.js create mode 100644 node_modules/sweetalert/dev/modules/injected-html.js create mode 100644 node_modules/sweetalert/dev/modules/set-params.js create mode 100644 node_modules/sweetalert/dev/modules/utils.js create mode 100644 node_modules/sweetalert/dev/sweetalert.es6.js create mode 100644 node_modules/sweetalert/dev/sweetalert.scss create mode 100644 node_modules/sweetalert/dist/sweetalert-dev.js create mode 100644 node_modules/sweetalert/dist/sweetalert.css create mode 100644 node_modules/sweetalert/dist/sweetalert.min.js create mode 100644 node_modules/sweetalert/example/example.css create mode 100644 node_modules/sweetalert/example/example.scss create mode 100644 node_modules/sweetalert/example/images/logo_big.png create mode 100644 node_modules/sweetalert/example/images/logo_big@2x.png create mode 100644 node_modules/sweetalert/example/images/logo_small.png create mode 100644 node_modules/sweetalert/example/images/logo_small@2x.png create mode 100644 node_modules/sweetalert/example/images/te-logo-small.svg create mode 100644 node_modules/sweetalert/example/images/thumbs-up.jpg create mode 100644 node_modules/sweetalert/example/images/vs_icon.png create mode 100644 node_modules/sweetalert/example/images/vs_icon@2x.png create mode 100644 node_modules/sweetalert/gulpfile.js create mode 100644 node_modules/sweetalert/index.html create mode 100644 node_modules/sweetalert/lib/modules/default-params.js create mode 100644 node_modules/sweetalert/lib/modules/handle-click.js create mode 100644 node_modules/sweetalert/lib/modules/handle-dom.js create mode 100644 node_modules/sweetalert/lib/modules/handle-key.js create mode 100644 node_modules/sweetalert/lib/modules/handle-swal-dom.js create mode 100644 node_modules/sweetalert/lib/modules/injected-html.js create mode 100644 node_modules/sweetalert/lib/modules/set-params.js create mode 100644 node_modules/sweetalert/lib/modules/utils.js create mode 100644 node_modules/sweetalert/lib/sweetalert.js create mode 100644 node_modules/sweetalert/package.json create mode 100644 node_modules/sweetalert/sweetalert.gif create mode 100644 node_modules/sweetalert/test/index.html create mode 100644 node_modules/sweetalert/test/tests.js create mode 100644 node_modules/sweetalert/themes/facebook/facebook.css create mode 100644 node_modules/sweetalert/themes/facebook/facebook.scss create mode 100644 node_modules/sweetalert/themes/google/google.css create mode 100644 node_modules/sweetalert/themes/google/google.scss create mode 100644 node_modules/sweetalert/themes/twitter/twitter.css create mode 100644 node_modules/sweetalert/themes/twitter/twitter.scss diff --git a/index.html b/index.html index bb9f520..6843d47 100644 --- a/index.html +++ b/index.html @@ -5,6 +5,7 @@ +

2048

diff --git a/javascripts/2048.js b/javascripts/2048.js index dcb09ba..edf007b 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -7,7 +7,7 @@ var Game = function() { Game.prototype.scoring = function(value) { this.score += value; if (value == 2048) { - alert("You made it to 2048! Keep playing or click the restart button!"); + sweetAlert({ title: "Winner!", text: "You made it to 2048! Keep playing or hit the restart button to start from the beginning", type: "success", confirmButtonText: "I'm the best!" }); } }; @@ -30,7 +30,8 @@ Game.prototype.lost = function() { } } } - alert("Game Over!"); + sweetAlert({ title: "You Lost", text: "You lost. You should try again!", type: "error", confirmButtonText: "Okay" }); + //alert("Game Over!"); this.restart(); }; diff --git a/node_modules/sweetalert/.editorconfig b/node_modules/sweetalert/.editorconfig new file mode 100644 index 0000000..f29d257 --- /dev/null +++ b/node_modules/sweetalert/.editorconfig @@ -0,0 +1,11 @@ +# editorconfig.org + +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_size = 2 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true diff --git a/node_modules/sweetalert/.jshintrc b/node_modules/sweetalert/.jshintrc new file mode 100644 index 0000000..f6dd383 --- /dev/null +++ b/node_modules/sweetalert/.jshintrc @@ -0,0 +1,11 @@ +{ + "predef": [ + "document", + "window", + "module", + "define" + ], + "browser": true, + "esnext": true, + "validthis": true +} diff --git a/node_modules/sweetalert/.npmignore b/node_modules/sweetalert/.npmignore new file mode 100644 index 0000000..84bfeb2 --- /dev/null +++ b/node_modules/sweetalert/.npmignore @@ -0,0 +1,5 @@ +*.codekit +*.sass-cache +*.DS_STORE +node_modules +bower_components diff --git a/node_modules/sweetalert/.travis.yml b/node_modules/sweetalert/.travis.yml new file mode 100644 index 0000000..46614b6 --- /dev/null +++ b/node_modules/sweetalert/.travis.yml @@ -0,0 +1,8 @@ +language: node_js +node_js: + - "0.12" +before script: + - npm install -g gulp + - npm install -g bower + - bower install +script: gulp test diff --git a/node_modules/sweetalert/LICENSE b/node_modules/sweetalert/LICENSE new file mode 100644 index 0000000..2d4ac32 --- /dev/null +++ b/node_modules/sweetalert/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2014 Tristan Edwards + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/node_modules/sweetalert/README.md b/node_modules/sweetalert/README.md new file mode 100644 index 0000000..f03a952 --- /dev/null +++ b/node_modules/sweetalert/README.md @@ -0,0 +1,157 @@ +SweetAlert [![Build Status](https://travis-ci.org/t4t5/sweetalert.svg?branch=master)](https://travis-ci.org/t4t5/sweetalert) +========== + +An awesome replacement for JavaScript's alert. + +![A success modal](https://raw.github.com/t4t5/sweetalert/master/sweetalert.gif) + +[See it in action!](http://t4t5.github.io/sweetalert) + +[Learn how to use it!](https://www.ludu.co/lesson/how-to-use-sweetalert) + + +Usage +----- + +You can install SweetAlert through bower: + +```bash +bower install sweetalert +``` + +Or through npm: + +```bash +npm install sweetalert +``` + +Alternatively, download the package and reference the JavaScript and CSS files manually: + +```html + + +``` +**Note:** If you're using an older version than v1.0.0, the files are `lib/sweet-alert.min.js` and `lib/sweet-alert.css` + + +Tutorial +-------- + +The easiest way to get started is follow the [SweetAlert tutorial on Ludu](https://www.ludu.co/lesson/how-to-use-sweetalert)! + + +Examples +-------- + +The most basic message: + +```javascript +swal("Hello world!"); +``` + +A message signaling an error: + +```javascript +swal("Oops...", "Something went wrong!", "error"); +``` + +A warning message, with a function attached to the "Confirm"-button: + +```javascript +swal({ + title: "Are you sure?", + text: "You will not be able to recover this imaginary file!", + type: "warning", + showCancelButton: true, + confirmButtonColor: "#DD6B55", + confirmButtonText: "Yes, delete it!", + closeOnConfirm: false, + html: false +}, function(){ + swal("Deleted!", + "Your imaginary file has been deleted.", + "success"); +}); +``` + +A prompt modal where the user's input is logged: + +```javascript +swal({ + title: "An input!", + text: 'Write something interesting:', + type: 'input', + showCancelButton: true, + closeOnConfirm: false, + animation: "slide-from-top" +}, function(inputValue){ + console.log("You wrote", inputValue); +}); +``` + +Ajax request example: + +```javascript +swal({ + title: 'Ajax request example', + text: 'Submit to run ajax request', + type: 'info', + showCancelButton: true, + closeOnConfirm: false, + disableButtonsOnConfirm: true, + confirmLoadingButtonColor: '#DD6B55' +}, function(inputValue){ + setTimeout(function() { + swal('Ajax request finished!'); + }, 2000); +}); +``` + +[View more examples](http://t4t5.github.io/sweetalert) + + +Themes +------ + +SweetAlert can easily be themed to fit your site's design. SweetAlert comes with three example themes that you can try out: **facebook**, **twitter** and **google**. They can be referenced right after the intial sweetalert-CSS: +```html + + +``` + + +Browser compatibility +--------------------- + +SweetAlert works in most major browsers (yes, even IE). Some details: + +- **IE8**: (Dropped since v1.0.0-beta) +- **IE9**: Works, but icons are not animated. +- **IE10+**: Works! +- **Safari 4+**: Works! +- **Firefox 3+**: Works! +- **Chrome 14+**: Works! +- **Opera 15+**: Works! + + +Contributing +------------ + +If you want to contribute: + +- Fork the repo + +- Make sure you have [Node](http://nodejs.org/), [NPM](https://www.npmjs.com/) and [Gulp](http://gulpjs.com/) installed. When in the SweetAlert directory, run `npm install` to install the dependencies. Then run `gulp` while working to automatically minify the SCSS and JS-files. + +- Keep in mind that SweetAlert uses Browserify in order to compile ES6-files. For easy debugging, make sure you reference the file `dist/sweetalert-dev.js` instead of `sweetalert.js`. + +- After you're done, make a pull request and wait for approval! :) + + +Related projects +---------------- + +* [SweetAlert for Android](https://github.com/pedant/sweet-alert-dialog) +* [SweetAlert for Bootstrap](https://github.com/lipis/bootstrap-sweetalert) +* [SweetAlert for AngularJS](https://github.com/oitozero/ngSweetAlert) +* [SweetAlert for RubyOnRails](https://github.com/sharshenov/sweetalert-rails) diff --git a/node_modules/sweetalert/bower.json b/node_modules/sweetalert/bower.json new file mode 100644 index 0000000..019653c --- /dev/null +++ b/node_modules/sweetalert/bower.json @@ -0,0 +1,25 @@ +{ + "name": "sweetalert", + "homepage": "http://tristanedwards.me/sweetalert", + "authors": [ + "Tristan Edwards (http://tristanedwards.me)" + ], + "description": "A beautiful replacement for JavaScript's alert.", + "main": [ + "dist/sweetalert.min.js", + "dist/sweetalert.css" + ], + "keywords": [ + "alert", + "modal" + ], + "repository": { + "type": "git", + "url": "git@github.com:t4t5/sweetalert.git" + }, + "license": "MIT", + "devDependencies": { + "qunit": "~1.18.0", + "jquery": "~2.1.4" + } +} diff --git a/node_modules/sweetalert/dev/gulpfile-wrap-template.js b/node_modules/sweetalert/dev/gulpfile-wrap-template.js new file mode 100644 index 0000000..5522acd --- /dev/null +++ b/node_modules/sweetalert/dev/gulpfile-wrap-template.js @@ -0,0 +1,18 @@ +;(function(window, document, undefined) { + "use strict"; + + <%= contents %> + + /* + * Use SweetAlert with RequireJS + */ + + if (typeof define === 'function' && define.amd) { + define(function () { + return sweetAlert; + }); + } else if (typeof module !== 'undefined' && module.exports) { + module.exports = sweetAlert; + } + +})(window, document); \ No newline at end of file diff --git a/node_modules/sweetalert/dev/ie9.css b/node_modules/sweetalert/dev/ie9.css new file mode 100644 index 0000000..6524fba --- /dev/null +++ b/node_modules/sweetalert/dev/ie9.css @@ -0,0 +1,23 @@ +/* Internet Explorer 9 has some special quirks that are fixed here */ +/* The icons are not animated. */ +/* This file is automatically merged into sweet-alert.min.js through Gulp */ + +/* Error icon */ +.sweet-alert .sa-icon.sa-error .sa-line.sa-left { + -ms-transform: rotate(45deg)\9; +} +.sweet-alert .sa-icon.sa-error .sa-line.sa-right { + -ms-transform: rotate(-45deg)\9; +} + + +/* Success icon */ +.sweet-alert .sa-icon.sa-success { + border-color: transparent\9; +} +.sweet-alert .sa-icon.sa-success .sa-line.sa-tip { + -ms-transform: rotate(45deg)\9; +} +.sweet-alert .sa-icon.sa-success .sa-line.sa-long { + -ms-transform: rotate(-45deg)\9; +} \ No newline at end of file diff --git a/node_modules/sweetalert/dev/loader-animation.css b/node_modules/sweetalert/dev/loader-animation.css new file mode 100644 index 0000000..2855635 --- /dev/null +++ b/node_modules/sweetalert/dev/loader-animation.css @@ -0,0 +1,209 @@ +/*! + * Load Awesome v1.1.0 (http://github.danielcardoso.net/load-awesome/) + * Copyright 2015 Daniel Cardoso <@DanielCardoso> + * Licensed under MIT + */ +.la-ball-fall, +.la-ball-fall > div { +position: relative; +-webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.la-ball-fall { + display: block; + font-size: 0; + color: #fff; +} +.la-ball-fall.la-dark { + color: #333; +} +.la-ball-fall > div { + display: inline-block; + float: none; + background-color: currentColor; + border: 0 solid currentColor; +} +.la-ball-fall { + width: 54px; + height: 18px; +} +.la-ball-fall > div { + width: 10px; + height: 10px; + margin: 4px; + border-radius: 100%; + opacity: 0; + -webkit-animation: ball-fall 1s ease-in-out infinite; + -moz-animation: ball-fall 1s ease-in-out infinite; + -o-animation: ball-fall 1s ease-in-out infinite; + animation: ball-fall 1s ease-in-out infinite; +} +.la-ball-fall > div:nth-child(1) { + -webkit-animation-delay: -200ms; + -moz-animation-delay: -200ms; + -o-animation-delay: -200ms; + animation-delay: -200ms; +} +.la-ball-fall > div:nth-child(2) { + -webkit-animation-delay: -100ms; + -moz-animation-delay: -100ms; + -o-animation-delay: -100ms; + animation-delay: -100ms; +} +.la-ball-fall > div:nth-child(3) { + -webkit-animation-delay: 0ms; + -moz-animation-delay: 0ms; + -o-animation-delay: 0ms; + animation-delay: 0ms; +} +.la-ball-fall.la-sm { + width: 26px; + height: 8px; +} +.la-ball-fall.la-sm > div { + width: 4px; + height: 4px; + margin: 2px; +} +.la-ball-fall.la-2x { + width: 108px; + height: 36px; +} +.la-ball-fall.la-2x > div { + width: 20px; + height: 20px; + margin: 8px; +} +.la-ball-fall.la-3x { + width: 162px; + height: 54px; +} +.la-ball-fall.la-3x > div { + width: 30px; + height: 30px; + margin: 12px; +} +/* + * Animation + */ +@-webkit-keyframes ball-fall { + 0% { + opacity: 0; + -webkit-transform: translateY(-145%); + transform: translateY(-145%); + } + 10% { + opacity: .5; + } + 20% { + opacity: 1; + -webkit-transform: translateY(0); + transform: translateY(0); + } + 80% { + opacity: 1; + -webkit-transform: translateY(0); + transform: translateY(0); + } + 90% { + opacity: .5; + } + 100% { + opacity: 0; + -webkit-transform: translateY(145%); + transform: translateY(145%); + } +} +@-moz-keyframes ball-fall { + 0% { + opacity: 0; + -moz-transform: translateY(-145%); + transform: translateY(-145%); + } + 10% { + opacity: .5; + } + 20% { + opacity: 1; + -moz-transform: translateY(0); + transform: translateY(0); + } + 80% { + opacity: 1; + -moz-transform: translateY(0); + transform: translateY(0); + } + 90% { + opacity: .5; + } + 100% { + opacity: 0; + -moz-transform: translateY(145%); + transform: translateY(145%); + } +} +@-o-keyframes ball-fall { + 0% { + opacity: 0; + -o-transform: translateY(-145%); + transform: translateY(-145%); + } + 10% { + opacity: .5; + } + 20% { + opacity: 1; + -o-transform: translateY(0); + transform: translateY(0); + } + 80% { + opacity: 1; + -o-transform: translateY(0); + transform: translateY(0); + } + 90% { + opacity: .5; + } + 100% { + opacity: 0; + -o-transform: translateY(145%); + transform: translateY(145%); + } +} +@keyframes ball-fall { + 0% { + opacity: 0; + -webkit-transform: translateY(-145%); + -moz-transform: translateY(-145%); + -o-transform: translateY(-145%); + transform: translateY(-145%); + } + 10% { + opacity: .5; + } + 20% { + opacity: 1; + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -o-transform: translateY(0); + transform: translateY(0); + } + 80% { + opacity: 1; + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -o-transform: translateY(0); + transform: translateY(0); + } + 90% { + opacity: .5; + } + 100% { + opacity: 0; + -webkit-transform: translateY(145%); + -moz-transform: translateY(145%); + -o-transform: translateY(145%); + transform: translateY(145%); + } +} diff --git a/node_modules/sweetalert/dev/modules/default-params.js b/node_modules/sweetalert/dev/modules/default-params.js new file mode 100644 index 0000000..a919acd --- /dev/null +++ b/node_modules/sweetalert/dev/modules/default-params.js @@ -0,0 +1,26 @@ +var defaultParams = { + title: '', + text: '', + type: null, + allowOutsideClick: false, + showConfirmButton: true, + showCancelButton: false, + closeOnConfirm: true, + closeOnCancel: true, + confirmButtonText: 'OK', + confirmButtonColor: '#8CD4F5', + cancelButtonText: 'Cancel', + imageUrl: null, + imageSize: null, + timer: null, + customClass: '', + html: false, + animation: true, + allowEscapeKey: true, + inputType: 'text', + inputPlaceholder: '', + inputValue: '', + showLoaderOnConfirm: false +}; + +export default defaultParams; diff --git a/node_modules/sweetalert/dev/modules/handle-click.js b/node_modules/sweetalert/dev/modules/handle-click.js new file mode 100644 index 0000000..b303237 --- /dev/null +++ b/node_modules/sweetalert/dev/modules/handle-click.js @@ -0,0 +1,128 @@ +import { colorLuminance } from './utils'; +import { getModal } from './handle-swal-dom'; +import { hasClass, isDescendant } from './handle-dom'; + + +/* + * User clicked on "Confirm"/"OK" or "Cancel" + */ +var handleButton = function(event, params, modal) { + var e = event || window.event; + var target = e.target || e.srcElement; + + var targetedConfirm = target.className.indexOf('confirm') !== -1; + var targetedOverlay = target.className.indexOf('sweet-overlay') !== -1; + var modalIsVisible = hasClass(modal, 'visible'); + var doneFunctionExists = (params.doneFunction && modal.getAttribute('data-has-done-function') === 'true'); + + // Since the user can change the background-color of the confirm button programmatically, + // we must calculate what the color should be on hover/active + var normalColor, hoverColor, activeColor; + if (targetedConfirm && params.confirmButtonColor) { + normalColor = params.confirmButtonColor; + hoverColor = colorLuminance(normalColor, -0.04); + activeColor = colorLuminance(normalColor, -0.14); + } + + function shouldSetConfirmButtonColor(color) { + if (targetedConfirm && params.confirmButtonColor) { + target.style.backgroundColor = color; + } + } + + switch (e.type) { + case 'mouseover': + shouldSetConfirmButtonColor(hoverColor); + break; + + case 'mouseout': + shouldSetConfirmButtonColor(normalColor); + break; + + case 'mousedown': + shouldSetConfirmButtonColor(activeColor); + break; + + case 'mouseup': + shouldSetConfirmButtonColor(hoverColor); + break; + + case 'focus': + let $confirmButton = modal.querySelector('button.confirm'); + let $cancelButton = modal.querySelector('button.cancel'); + + if (targetedConfirm) { + $cancelButton.style.boxShadow = 'none'; + } else { + $confirmButton.style.boxShadow = 'none'; + } + break; + + case 'click': + let clickedOnModal = (modal === target); + let clickedOnModalChild = isDescendant(modal, target); + + // Ignore click outside if allowOutsideClick is false + if (!clickedOnModal && !clickedOnModalChild && modalIsVisible && !params.allowOutsideClick) { + break; + } + + if (targetedConfirm && doneFunctionExists && modalIsVisible) { + handleConfirm(modal, params); + } else if (doneFunctionExists && modalIsVisible || targetedOverlay) { + handleCancel(modal, params); + } else if (isDescendant(modal, target) && target.tagName === 'BUTTON') { + sweetAlert.close(); + } + break; + } +}; + +/* + * User clicked on "Confirm"/"OK" + */ +var handleConfirm = function(modal, params) { + var callbackValue = true; + + if (hasClass(modal, 'show-input')) { + callbackValue = modal.querySelector('input').value; + + if (!callbackValue) { + callbackValue = ''; + } + } + + params.doneFunction(callbackValue); + + if (params.closeOnConfirm) { + sweetAlert.close(); + } + // Disable cancel and confirm button if the parameter is true + if (params.showLoaderOnConfirm) { + sweetAlert.disableButtons(); + } +}; + +/* + * User clicked on "Cancel" + */ +var handleCancel = function(modal, params) { + // Check if callback function expects a parameter (to track cancel actions) + var functionAsStr = String(params.doneFunction).replace(/\s/g, ''); + var functionHandlesCancel = functionAsStr.substring(0, 9) === 'function(' && functionAsStr.substring(9, 10) !== ')'; + + if (functionHandlesCancel) { + params.doneFunction(false); + } + + if (params.closeOnCancel) { + sweetAlert.close(); + } +}; + + +export default { + handleButton, + handleConfirm, + handleCancel +}; diff --git a/node_modules/sweetalert/dev/modules/handle-dom.js b/node_modules/sweetalert/dev/modules/handle-dom.js new file mode 100644 index 0000000..bd31c6e --- /dev/null +++ b/node_modules/sweetalert/dev/modules/handle-dom.js @@ -0,0 +1,161 @@ +var hasClass = function(elem, className) { + return new RegExp(' ' + className + ' ').test(' ' + elem.className + ' '); +}; + +var addClass = function(elem, className) { + if (!hasClass(elem, className)) { + elem.className += ' ' + className; + } +}; + +var removeClass = function(elem, className) { + var newClass = ' ' + elem.className.replace(/[\t\r\n]/g, ' ') + ' '; + if (hasClass(elem, className)) { + while (newClass.indexOf(' ' + className + ' ') >= 0) { + newClass = newClass.replace(' ' + className + ' ', ' '); + } + elem.className = newClass.replace(/^\s+|\s+$/g, ''); + } +}; + +var escapeHtml = function(str) { + var div = document.createElement('div'); + div.appendChild(document.createTextNode(str)); + return div.innerHTML; +}; + +var _show = function(elem) { + elem.style.opacity = ''; + elem.style.display = 'block'; +}; + +var show = function(elems) { + if (elems && !elems.length) { + return _show(elems); + } + for (var i = 0; i < elems.length; ++i) { + _show(elems[i]); + } +}; + +var _hide = function(elem) { + elem.style.opacity = ''; + elem.style.display = 'none'; +}; + +var hide = function(elems) { + if (elems && !elems.length) { + return _hide(elems); + } + for (var i = 0; i < elems.length; ++i) { + _hide(elems[i]); + } +}; + +var isDescendant = function(parent, child) { + var node = child.parentNode; + while (node !== null) { + if (node === parent) { + return true; + } + node = node.parentNode; + } + return false; +}; + +var getTopMargin = function(elem) { + elem.style.left = '-9999px'; + elem.style.display = 'block'; + + var height = elem.clientHeight, + padding; + if (typeof getComputedStyle !== "undefined") { // IE 8 + padding = parseInt(getComputedStyle(elem).getPropertyValue('padding-top'), 10); + } else { + padding = parseInt(elem.currentStyle.padding); + } + + elem.style.left = ''; + elem.style.display = 'none'; + return ('-' + parseInt((height + padding) / 2) + 'px'); +}; + +var fadeIn = function(elem, interval) { + if (+elem.style.opacity < 1) { + interval = interval || 16; + elem.style.opacity = 0; + elem.style.display = 'block'; + var last = +new Date(); + var tick = function() { + elem.style.opacity = +elem.style.opacity + (new Date() - last) / 100; + last = +new Date(); + + if (+elem.style.opacity < 1) { + setTimeout(tick, interval); + } + }; + tick(); + } + elem.style.display = 'block'; //fallback IE8 +}; + +var fadeOut = function(elem, interval) { + interval = interval || 16; + elem.style.opacity = 1; + var last = +new Date(); + var tick = function() { + elem.style.opacity = +elem.style.opacity - (new Date() - last) / 100; + last = +new Date(); + + if (+elem.style.opacity > 0) { + setTimeout(tick, interval); + } else { + elem.style.display = 'none'; + } + }; + tick(); +}; + +var fireClick = function(node) { + // Taken from http://www.nonobtrusive.com/2011/11/29/programatically-fire-crossbrowser-click-event-with-javascript/ + // Then fixed for today's Chrome browser. + if (typeof MouseEvent === 'function') { + // Up-to-date approach + var mevt = new MouseEvent('click', { + view: window, + bubbles: false, + cancelable: true + }); + node.dispatchEvent(mevt); + } else if ( document.createEvent ) { + // Fallback + var evt = document.createEvent('MouseEvents'); + evt.initEvent('click', false, false); + node.dispatchEvent(evt); + } else if (document.createEventObject) { + node.fireEvent('onclick') ; + } else if (typeof node.onclick === 'function' ) { + node.onclick(); + } +}; + +var stopEventPropagation = function(e) { + // In particular, make sure the space bar doesn't scroll the main window. + if (typeof e.stopPropagation === 'function') { + e.stopPropagation(); + e.preventDefault(); + } else if (window.event && window.event.hasOwnProperty('cancelBubble')) { + window.event.cancelBubble = true; + } +}; + +export { + hasClass, addClass, removeClass, + escapeHtml, + _show, show, _hide, hide, + isDescendant, + getTopMargin, + fadeIn, fadeOut, + fireClick, + stopEventPropagation +}; diff --git a/node_modules/sweetalert/dev/modules/handle-key.js b/node_modules/sweetalert/dev/modules/handle-key.js new file mode 100644 index 0000000..b6cc75c --- /dev/null +++ b/node_modules/sweetalert/dev/modules/handle-key.js @@ -0,0 +1,73 @@ +import { stopEventPropagation, fireClick } from './handle-dom'; +import { setFocusStyle } from './handle-swal-dom'; + + +var handleKeyDown = function(event, params, modal) { + var e = event || window.event; + var keyCode = e.keyCode || e.which; + + var $okButton = modal.querySelector('button.confirm'); + var $cancelButton = modal.querySelector('button.cancel'); + var $modalButtons = modal.querySelectorAll('button[tabindex]'); + + + if ([9, 13, 32, 27].indexOf(keyCode) === -1) { + // Don't do work on keys we don't care about. + return; + } + + var $targetElement = e.target || e.srcElement; + + var btnIndex = -1; // Find the button - note, this is a nodelist, not an array. + for (var i = 0; i < $modalButtons.length; i++) { + if ($targetElement === $modalButtons[i]) { + btnIndex = i; + break; + } + } + + if (keyCode === 9) { + // TAB + if (btnIndex === -1) { + // No button focused. Jump to the confirm button. + $targetElement = $okButton; + } else { + // Cycle to the next button + if (btnIndex === $modalButtons.length - 1) { + $targetElement = $modalButtons[0]; + } else { + $targetElement = $modalButtons[btnIndex + 1]; + } + } + + stopEventPropagation(e); + $targetElement.focus(); + + if (params.confirmButtonColor) { + setFocusStyle($targetElement, params.confirmButtonColor); + } + } else { + if (keyCode === 13) { + if ($targetElement.tagName === 'INPUT') { + $targetElement = $okButton; + $okButton.focus(); + } + + if (btnIndex === -1) { + // ENTER/SPACE clicked outside of a button. + $targetElement = $okButton; + } else { + // Do nothing - let the browser handle it. + $targetElement = undefined; + } + } else if (keyCode === 27 && params.allowEscapeKey === true) { + $targetElement = $cancelButton; + fireClick($targetElement, e); + } else { + // Fallback - let the browser handle it. + $targetElement = undefined; + } + } +}; + +export default handleKeyDown; diff --git a/node_modules/sweetalert/dev/modules/handle-swal-dom.js b/node_modules/sweetalert/dev/modules/handle-swal-dom.js new file mode 100644 index 0000000..ac148ea --- /dev/null +++ b/node_modules/sweetalert/dev/modules/handle-swal-dom.js @@ -0,0 +1,148 @@ +import { hexToRgb } from './utils'; +import { removeClass, getTopMargin, fadeIn, show, addClass } from './handle-dom'; +import defaultParams from './default-params'; + +var modalClass = '.sweet-alert'; +var overlayClass = '.sweet-overlay'; + +/* + * Add modal + overlay to DOM + */ +import injectedHTML from './injected-html'; + +var sweetAlertInitialize = function() { + var sweetWrap = document.createElement('div'); + sweetWrap.innerHTML = injectedHTML; + + // Append elements to body + while (sweetWrap.firstChild) { + document.body.appendChild(sweetWrap.firstChild); + } +}; + +/* + * Get DOM element of modal + */ +var getModal = function() { + var $modal = document.querySelector(modalClass); + + if (!$modal) { + sweetAlertInitialize(); + $modal = getModal(); + } + + return $modal; +}; + +/* + * Get DOM element of input (in modal) + */ +var getInput = function() { + var $modal = getModal(); + if ($modal) { + return $modal.querySelector('input'); + } +}; + +/* + * Get DOM element of overlay + */ +var getOverlay = function() { + return document.querySelector(overlayClass); +}; + +/* + * Add box-shadow style to button (depending on its chosen bg-color) + */ +var setFocusStyle = function($button, bgColor) { + var rgbColor = hexToRgb(bgColor); + $button.style.boxShadow = '0 0 2px rgba(' + rgbColor + ', 0.8), inset 0 0 0 1px rgba(0, 0, 0, 0.05)'; +}; + +/* + * Animation when opening modal + */ +var openModal = function(callback) { + var $modal = getModal(); + fadeIn(getOverlay(), 10); + show($modal); + addClass($modal, 'showSweetAlert'); + removeClass($modal, 'hideSweetAlert'); + + window.previousActiveElement = document.activeElement; + var $okButton = $modal.querySelector('button.confirm'); + $okButton.focus(); + + setTimeout(function () { + addClass($modal, 'visible'); + }, 500); + + var timer = $modal.getAttribute('data-timer'); + + if (timer !== 'null' && timer !== '') { + var timerCallback = callback; + $modal.timeout = setTimeout(function() { + var doneFunctionExists = ((timerCallback || null) && $modal.getAttribute('data-has-done-function') === 'true'); + if (doneFunctionExists) { + timerCallback(null); + } + else { + sweetAlert.close(); + } + }, timer); + } +}; + +/* + * Reset the styling of the input + * (for example if errors have been shown) + */ +var resetInput = function() { + var $modal = getModal(); + var $input = getInput(); + + removeClass($modal, 'show-input'); + $input.value = defaultParams.inputValue; + $input.setAttribute('type', defaultParams.inputType); + $input.setAttribute('placeholder', defaultParams.inputPlaceholder); + + resetInputError(); +}; + + +var resetInputError = function(event) { + // If press enter => ignore + if (event && event.keyCode === 13) { + return false; + } + + var $modal = getModal(); + + var $errorIcon = $modal.querySelector('.sa-input-error'); + removeClass($errorIcon, 'show'); + + var $errorContainer = $modal.querySelector('.sa-error-container'); + removeClass($errorContainer, 'show'); +}; + + +/* + * Set "margin-top"-property on modal based on its computed height + */ +var fixVerticalPosition = function() { + var $modal = getModal(); + $modal.style.marginTop = getTopMargin(getModal()); +}; + + +export { + sweetAlertInitialize, + getModal, + getOverlay, + getInput, + setFocusStyle, + openModal, + resetInput, + resetInputError, + fixVerticalPosition +}; diff --git a/node_modules/sweetalert/dev/modules/injected-html.js b/node_modules/sweetalert/dev/modules/injected-html.js new file mode 100644 index 0000000..b0776fc --- /dev/null +++ b/node_modules/sweetalert/dev/modules/injected-html.js @@ -0,0 +1,69 @@ +var injectedHTML = + + // Dark overlay + `
` + + + // Modal + `
` + + + // Error icon + `
+ + + + +
` + + + // Warning icon + `
+ + +
` + + + // Info icon + `
` + + + // Success icon + `
+ + + +
+
+
` + + + `
` + + + // Title, text and input + `

Title

+

Text

+
+ +
+
` + + + // Input errors + `
+
!
+

Not valid!

+
` + + + // Cancel and confirm buttons + `
+ +
+ ` + + + // Loading animation + `
+
+
+
+
+
+
` + + + // End of modal + `
`; + +export default injectedHTML; diff --git a/node_modules/sweetalert/dev/modules/set-params.js b/node_modules/sweetalert/dev/modules/set-params.js new file mode 100644 index 0000000..b3a797b --- /dev/null +++ b/node_modules/sweetalert/dev/modules/set-params.js @@ -0,0 +1,221 @@ +var alertTypes = ['error', 'warning', 'info', 'success', 'input', 'prompt']; + +import { + isIE8 +} from './utils'; + +import { + getModal, + getInput, + setFocusStyle +} from './handle-swal-dom'; + +import { + hasClass, addClass, removeClass, + escapeHtml, + _show, show, _hide, hide +} from './handle-dom'; + + +/* + * Set type, text and actions on modal + */ +var setParameters = function(params) { + var modal = getModal(); + + var $title = modal.querySelector('h2'); + var $text = modal.querySelector('p'); + var $cancelBtn = modal.querySelector('button.cancel'); + var $confirmBtn = modal.querySelector('button.confirm'); + + /* + * Title + */ + $title.innerHTML = params.html ? params.title : escapeHtml(params.title).split('\n').join('
'); + + /* + * Text + */ + $text.innerHTML = params.html ? params.text : escapeHtml(params.text || '').split('\n').join('
'); + if (params.text) show($text); + + /* + * Custom class + */ + if (params.customClass) { + addClass(modal, params.customClass); + modal.setAttribute('data-custom-class', params.customClass); + } else { + // Find previously set classes and remove them + let customClass = modal.getAttribute('data-custom-class'); + removeClass(modal, customClass); + modal.setAttribute('data-custom-class', ''); + } + + /* + * Icon + */ + hide(modal.querySelectorAll('.sa-icon')); + + if (params.type && !isIE8()) { + + let validType = false; + + for (let i = 0; i < alertTypes.length; i++) { + if (params.type === alertTypes[i]) { + validType = true; + break; + } + } + + if (!validType) { + logStr('Unknown alert type: ' + params.type); + return false; + } + + let typesWithIcons = ['success', 'error', 'warning', 'info']; + let $icon; + + if (typesWithIcons.indexOf(params.type) !== -1) { + $icon = modal.querySelector('.sa-icon.' + 'sa-' + params.type); + show($icon); + } + + let $input = getInput(); + + // Animate icon + switch (params.type) { + + case 'success': + addClass($icon, 'animate'); + addClass($icon.querySelector('.sa-tip'), 'animateSuccessTip'); + addClass($icon.querySelector('.sa-long'), 'animateSuccessLong'); + break; + + case 'error': + addClass($icon, 'animateErrorIcon'); + addClass($icon.querySelector('.sa-x-mark'), 'animateXMark'); + break; + + case 'warning': + addClass($icon, 'pulseWarning'); + addClass($icon.querySelector('.sa-body'), 'pulseWarningIns'); + addClass($icon.querySelector('.sa-dot'), 'pulseWarningIns'); + break; + + case 'input': + case 'prompt': + $input.setAttribute('type', params.inputType); + $input.value = params.inputValue; + $input.setAttribute('placeholder', params.inputPlaceholder); + addClass(modal, 'show-input'); + setTimeout(function () { + $input.focus(); + $input.addEventListener('keyup', swal.resetInputError); + }, 400); + break; + } + } + + /* + * Custom image + */ + if (params.imageUrl) { + let $customIcon = modal.querySelector('.sa-icon.sa-custom'); + + $customIcon.style.backgroundImage = 'url(' + params.imageUrl + ')'; + show($customIcon); + + let _imgWidth = 80; + let _imgHeight = 80; + + if (params.imageSize) { + let dimensions = params.imageSize.toString().split('x'); + let imgWidth = dimensions[0]; + let imgHeight = dimensions[1]; + + if (!imgWidth || !imgHeight) { + logStr('Parameter imageSize expects value with format WIDTHxHEIGHT, got ' + params.imageSize); + } else { + _imgWidth = imgWidth; + _imgHeight = imgHeight; + } + } + + $customIcon.setAttribute('style', $customIcon.getAttribute('style') + 'width:' + _imgWidth + 'px; height:' + _imgHeight + 'px'); + } + + /* + * Show cancel button? + */ + modal.setAttribute('data-has-cancel-button', params.showCancelButton); + if (params.showCancelButton) { + $cancelBtn.style.display = 'inline-block'; + } else { + hide($cancelBtn); + } + + /* + * Show confirm button? + */ + modal.setAttribute('data-has-confirm-button', params.showConfirmButton); + if (params.showConfirmButton) { + $confirmBtn.style.display = 'inline-block'; + } else { + hide($confirmBtn); + } + + /* + * Custom text on cancel/confirm buttons + */ + if (params.cancelButtonText) { + $cancelBtn.innerHTML = escapeHtml(params.cancelButtonText); + } + if (params.confirmButtonText) { + $confirmBtn.innerHTML = escapeHtml(params.confirmButtonText); + } + + /* + * Custom color on confirm button + */ + if (params.confirmButtonColor) { + // Set confirm button to selected background color + $confirmBtn.style.backgroundColor = params.confirmButtonColor; + + // Set the confirm button color to the loading ring + $confirmBtn.style.borderLeftColor = params.confirmLoadingButtonColor; + $confirmBtn.style.borderRightColor = params.confirmLoadingButtonColor; + + // Set box-shadow to default focused button + setFocusStyle($confirmBtn, params.confirmButtonColor); + } + + /* + * Allow outside click + */ + modal.setAttribute('data-allow-outside-click', params.allowOutsideClick); + + /* + * Callback function + */ + var hasDoneFunction = params.doneFunction ? true : false; + modal.setAttribute('data-has-done-function', hasDoneFunction); + + /* + * Animation + */ + if (!params.animation) { + modal.setAttribute('data-animation', 'none'); + } else if (typeof params.animation === 'string') { + modal.setAttribute('data-animation', params.animation); // Custom animation + } else { + modal.setAttribute('data-animation', 'pop'); + } + + /* + * Timer + */ + modal.setAttribute('data-timer', params.timer); +}; + +export default setParameters; diff --git a/node_modules/sweetalert/dev/modules/utils.js b/node_modules/sweetalert/dev/modules/utils.js new file mode 100644 index 0000000..ce6944e --- /dev/null +++ b/node_modules/sweetalert/dev/modules/utils.js @@ -0,0 +1,71 @@ +/* + * Allow user to pass their own params + */ +var extend = function(a, b) { + for (var key in b) { + if (b.hasOwnProperty(key)) { + a[key] = b[key]; + } + } + return a; +}; + +/* + * Convert HEX codes to RGB values (#000000 -> rgb(0,0,0)) + */ +var hexToRgb = function(hex) { + var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); + return result ? parseInt(result[1], 16) + ', ' + parseInt(result[2], 16) + ', ' + parseInt(result[3], 16) : null; +}; + +/* + * Check if the user is using Internet Explorer 8 (for fallbacks) + */ +var isIE8 = function() { + return (window.attachEvent && !window.addEventListener); +}; + +/* + * IE compatible logging for developers + */ +var logStr = function(string) { + if (window.console) { + // IE... + window.console.log('SweetAlert: ' + string); + } +}; + +/* + * Set hover, active and focus-states for buttons + * (source: http://www.sitepoint.com/javascript-generate-lighter-darker-color) + */ +var colorLuminance = function(hex, lum) { + // Validate hex string + hex = String(hex).replace(/[^0-9a-f]/gi, ''); + if (hex.length < 6) { + hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2]; + } + lum = lum || 0; + + // Convert to decimal and change luminosity + var rgb = '#'; + var c; + var i; + + for (i = 0; i < 3; i++) { + c = parseInt(hex.substr(i * 2, 2), 16); + c = Math.round(Math.min(Math.max(0, c + c * lum), 255)).toString(16); + rgb += ('00' + c).substr(c.length); + } + + return rgb; +}; + + +export { + extend, + hexToRgb, + isIE8, + logStr, + colorLuminance +}; diff --git a/node_modules/sweetalert/dev/sweetalert.es6.js b/node_modules/sweetalert/dev/sweetalert.es6.js new file mode 100644 index 0000000..ea69eef --- /dev/null +++ b/node_modules/sweetalert/dev/sweetalert.es6.js @@ -0,0 +1,311 @@ +// SweetAlert +// 2014-2015 (c) - Tristan Edwards +// github.com/t4t5/sweetalert + +/* + * jQuery-like functions for manipulating the DOM + */ +import { + hasClass, addClass, removeClass, + escapeHtml, + _show, show, _hide, hide, + isDescendant, + getTopMargin, + fadeIn, fadeOut, + fireClick, + stopEventPropagation +} from './modules/handle-dom'; + +/* + * Handy utilities + */ +import { + extend, + hexToRgb, + isIE8, + logStr, + colorLuminance +} from './modules/utils'; + +/* + * Handle sweetAlert's DOM elements + */ +import { + sweetAlertInitialize, + getModal, + getOverlay, + getInput, + setFocusStyle, + openModal, + resetInput, + fixVerticalPosition +} from './modules/handle-swal-dom'; + + +// Handle button events and keyboard events +import { handleButton, handleConfirm, handleCancel } from './modules/handle-click'; +import handleKeyDown from './modules/handle-key'; + + +// Default values +import defaultParams from './modules/default-params'; +import setParameters from './modules/set-params'; + +/* + * Remember state in cases where opening and handling a modal will fiddle with it. + * (We also use window.previousActiveElement as a global variable) + */ +var previousWindowKeyDown; +var lastFocusedButton; + + +/* + * Global sweetAlert function + * (this is what the user calls) + */ +var sweetAlert, swal; + +export default sweetAlert = swal = function() { + var customizations = arguments[0]; + + addClass(document.body, 'stop-scrolling'); + resetInput(); + + /* + * Use argument if defined or default value from params object otherwise. + * Supports the case where a default value is boolean true and should be + * overridden by a corresponding explicit argument which is boolean false. + */ + function argumentOrDefault(key) { + var args = customizations; + return (args[key] === undefined) ? defaultParams[key] : args[key]; + } + + if (customizations === undefined) { + logStr('SweetAlert expects at least 1 attribute!'); + return false; + } + + var params = extend({}, defaultParams); + + switch (typeof customizations) { + + // Ex: swal("Hello", "Just testing", "info"); + case 'string': + params.title = customizations; + params.text = arguments[1] || ''; + params.type = arguments[2] || ''; + break; + + // Ex: swal({ title:"Hello", text: "Just testing", type: "info" }); + case 'object': + if (customizations.title === undefined) { + logStr('Missing "title" argument!'); + return false; + } + + params.title = customizations.title; + + for (let customName in defaultParams) { + params[customName] = argumentOrDefault(customName); + } + + // Show "Confirm" instead of "OK" if cancel button is visible + params.confirmButtonText = params.showCancelButton ? 'Confirm' : defaultParams.confirmButtonText; + params.confirmButtonText = argumentOrDefault('confirmButtonText'); + + // Callback function when clicking on "OK"/"Cancel" + params.doneFunction = arguments[1] || null; + + break; + + default: + logStr('Unexpected type of argument! Expected "string" or "object", got ' + typeof customizations); + return false; + + } + + setParameters(params); + fixVerticalPosition(); + openModal(arguments[1]); + + // Modal interactions + var modal = getModal(); + + + /* + * Make sure all modal buttons respond to all events + */ + var $buttons = modal.querySelectorAll('button'); + var buttonEvents = ['onclick', 'onmouseover', 'onmouseout', 'onmousedown', 'onmouseup', 'onfocus']; + var onButtonEvent = (e) => handleButton(e, params, modal); + + for (let btnIndex = 0; btnIndex < $buttons.length; btnIndex++) { + for (let evtIndex = 0; evtIndex < buttonEvents.length; evtIndex++) { + let btnEvt = buttonEvents[evtIndex]; + $buttons[btnIndex][btnEvt] = onButtonEvent; + } + } + + // Clicking outside the modal dismisses it (if allowed by user) + getOverlay().onclick = onButtonEvent; + + previousWindowKeyDown = window.onkeydown; + + var onKeyEvent = (e) => handleKeyDown(e, params, modal); + window.onkeydown = onKeyEvent; + + window.onfocus = function () { + // When the user has focused away and focused back from the whole window. + setTimeout(function () { + // Put in a timeout to jump out of the event sequence. + // Calling focus() in the event sequence confuses things. + if (lastFocusedButton !== undefined) { + lastFocusedButton.focus(); + lastFocusedButton = undefined; + } + }, 0); + }; + + // Show alert with enabled buttons always + swal.enableButtons(); +}; + + + +/* + * Set default params for each popup + * @param {Object} userParams + */ +sweetAlert.setDefaults = swal.setDefaults = function(userParams) { + if (!userParams) { + throw new Error('userParams is required'); + } + if (typeof userParams !== 'object') { + throw new Error('userParams has to be a object'); + } + + extend(defaultParams, userParams); +}; + + +/* + * Animation when closing modal + */ +sweetAlert.close = swal.close = function() { + var modal = getModal(); + + fadeOut(getOverlay(), 5); + fadeOut(modal, 5); + removeClass(modal, 'showSweetAlert'); + addClass(modal, 'hideSweetAlert'); + removeClass(modal, 'visible'); + + /* + * Reset icon animations + */ + var $successIcon = modal.querySelector('.sa-icon.sa-success'); + removeClass($successIcon, 'animate'); + removeClass($successIcon.querySelector('.sa-tip'), 'animateSuccessTip'); + removeClass($successIcon.querySelector('.sa-long'), 'animateSuccessLong'); + + var $errorIcon = modal.querySelector('.sa-icon.sa-error'); + removeClass($errorIcon, 'animateErrorIcon'); + removeClass($errorIcon.querySelector('.sa-x-mark'), 'animateXMark'); + + var $warningIcon = modal.querySelector('.sa-icon.sa-warning'); + removeClass($warningIcon, 'pulseWarning'); + removeClass($warningIcon.querySelector('.sa-body'), 'pulseWarningIns'); + removeClass($warningIcon.querySelector('.sa-dot'), 'pulseWarningIns'); + + // Reset custom class (delay so that UI changes aren't visible) + setTimeout(function() { + var customClass = modal.getAttribute('data-custom-class'); + removeClass(modal, customClass); + }, 300); + + // Make page scrollable again + removeClass(document.body, 'stop-scrolling'); + + // Reset the page to its previous state + window.onkeydown = previousWindowKeyDown; + if (window.previousActiveElement) { + window.previousActiveElement.focus(); + } + lastFocusedButton = undefined; + clearTimeout(modal.timeout); + + return true; +}; + + +/* + * Validation of the input field is done by user + * If something is wrong => call showInputError with errorMessage + */ +sweetAlert.showInputError = swal.showInputError = function(errorMessage) { + var modal = getModal(); + + var $errorIcon = modal.querySelector('.sa-input-error'); + addClass($errorIcon, 'show'); + + var $errorContainer = modal.querySelector('.sa-error-container'); + addClass($errorContainer, 'show'); + + $errorContainer.querySelector('p').innerHTML = errorMessage; + + setTimeout(function() { + sweetAlert.enableButtons(); + }, 1); + + modal.querySelector('input').focus(); +}; + + +/* + * Reset input error DOM elements + */ +sweetAlert.resetInputError = swal.resetInputError = function(event) { + // If press enter => ignore + if (event && event.keyCode === 13) { + return false; + } + + var $modal = getModal(); + + var $errorIcon = $modal.querySelector('.sa-input-error'); + removeClass($errorIcon, 'show'); + + var $errorContainer = $modal.querySelector('.sa-error-container'); + removeClass($errorContainer, 'show'); +}; + +/* + * Disable confirm and cancel buttons + */ +sweetAlert.disableButtons = swal.disableButtons = function(event) { + var modal = getModal(); + var $confirmButton = modal.querySelector('button.confirm'); + var $cancelButton = modal.querySelector('button.cancel'); + $confirmButton.disabled = true; + $cancelButton.disabled = true; +}; + +/* + * Enable confirm and cancel buttons + */ +sweetAlert.enableButtons = swal.enableButtons = function(event) { + var modal = getModal(); + var $confirmButton = modal.querySelector('button.confirm'); + var $cancelButton = modal.querySelector('button.cancel'); + $confirmButton.disabled = false; + $cancelButton.disabled = false; +}; + +if (typeof window !== 'undefined') { + // The 'handle-click' module requires + // that 'sweetAlert' was set as global. + window.sweetAlert = window.swal = sweetAlert; +} else { + logStr('SweetAlert is a frontend module!'); +} diff --git a/node_modules/sweetalert/dev/sweetalert.scss b/node_modules/sweetalert/dev/sweetalert.scss new file mode 100644 index 0000000..1b6bf35 --- /dev/null +++ b/node_modules/sweetalert/dev/sweetalert.scss @@ -0,0 +1,648 @@ +// SweetAlert +// 2014-2015 (c) - Tristan Edwards +// github.com/t4t5/sweetalert + + +body.stop-scrolling { + height: 100%; + overflow: hidden; +} + +.sweet-overlay { + background-color: rgb(0, 0, 0); /* IE8 */ + -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=40)"; /* IE8 */ + background-color: rgba(black, 0.4); + + position: fixed; + left: 0; + right: 0; + top: 0; + bottom: 0; + + display: none; + z-index: 10000; +} + +.sweet-alert { + $width: 478px; + $padding: 17px; + + background-color: white; + font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; + width: $width; + padding: $padding; + border-radius: 5px; + text-align: center; + + position: fixed; + left: 50%; + top: 50%; + margin-left: -($width/2 + $padding); + margin-top: -200px; + + overflow: hidden; + display: none; + z-index: 99999; + + @media all and (max-width: 540px) { + width: auto; + margin-left: 0; + margin-right: 0; + + left: 15px; + right: 15px; + } + + h2 { + color: #575757; + font-size: 30px; + text-align: center; + font-weight: 600; + text-transform: none; + position: relative; + margin: 25px 0; + padding: 0; + line-height: 40px; + display: block; + } + + p { + color: #797979; + font-size: 16px; + text-align: center; + font-weight: 300; + position: relative; + text-align: inherit; + float: none; + margin: 0; + padding: 0; + line-height: normal; + } + + fieldset { + border: none; + position: relative; + } + + .sa-error-container { + background-color: #f1f1f1; + margin-left: -17px; + margin-right: -17px; + overflow: hidden; + padding: 0 10px; + max-height: 0; + webkit-transition: padding 0.15s, max-height 0.15s; + transition: padding 0.15s, max-height 0.15s; + &.show { + padding: 10px 0; + max-height: 100px; + webkit-transition: padding 0.2s, max-height 0.2s; + transition: padding 0.25s, max-height 0.25s; + } + + .icon { + display: inline-block; + width: 24px; + height: 24px; + border-radius: 50%; + background-color: rgb(234, 125, 125); + color: white; + line-height: 24px; + text-align: center; + margin-right: 3px; + } + p { + display: inline-block; + } + } + + .sa-input-error { + position: absolute; + top: 29px; + right: 26px; + width: 20px; + height: 20px; + opacity: 0; + -webkit-transform: scale(0.5); + transform: scale(0.5); + -webkit-transform-origin: 50% 50%; + transform-origin: 50% 50%; + -webkit-transition: all 0.1s; + transition: all 0.1s; + &::before, &::after { + content: ""; + width: 20px; + height: 6px; + background-color: #f06e57; + border-radius: 3px; + position: absolute; + top: 50%; + margin-top: -4px; + left: 50%; + margin-left: -9px; + } + &::before { + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + } + &::after { + -webkit-transform: rotate(45deg); + transform: rotate(45deg); + } + &.show { + opacity: 1; + -webkit-transform: scale(1); + transform: scale(1); + } + } + + input { + width: 100%; + box-sizing: border-box; + border-radius: 3px; + border: 1px solid rgb(215, 215, 215); + height: 43px; + margin-top: 10px; + margin-bottom: 17px; + font-size: 18px; + box-shadow: inset 0px 1px 1px rgba(black, 0.06); + padding: 0 12px; + display: none; + -webkit-transition: all 0.3s; + transition: all 0.3s; + &:focus { + outline: none; + box-shadow: 0px 0px 3px rgb(196, 230, 245); + border: 1px solid rgb(180, 219, 237); + &::-moz-placeholder { + transition: opacity 0.3s 0.03s ease; + opacity: 0.5; + } + &:-ms-input-placeholder { + transition: opacity 0.3s 0.03s ease; + opacity: 0.5; + } + &::-webkit-input-placeholder { + transition: opacity 0.3s 0.03s ease; + opacity: 0.5; + } + } + &::-moz-placeholder { + color: lighten(#575757, 40); + } + &:-ms-input-placeholder { + color: lighten(#575757, 40); + } + &::-webkit-input-placeholder { + color: lighten(#575757, 40); + } + } + &.show-input input { + display: block; + } + + .sa-confirm-button-container { + display: inline-block; + position: relative; + } + + .la-ball-fall { + position: absolute; + left: 50%; + top: 50%; + margin-left: -27px; + margin-top: 4px; + opacity: 0; + visibility: hidden; + } + + button { + $btnBlue: #8CD4F5; + $btnGray: #C1C1C1; + + background-color: $btnBlue; + color: white; + border: none; + box-shadow: none; + font-size: 17px; + font-weight: 500; + -webkit-border-radius: 4px; + border-radius: 5px; + padding: 10px 32px; + margin: 26px 5px 0 5px; + cursor: pointer; + &:focus { + outline: none; + box-shadow: 0 0 2px rgba(128, 179, 235, 0.5), inset 0 0 0 1px rgba(0, 0, 0, 0.05); + } + &:hover { + background-color: darken($btnBlue, 3%); + } + &:active { + background-color: darken($btnBlue, 10%); + } + &.cancel { + background-color: $btnGray; + &:hover { + background-color: darken($btnGray, 3%); + } + &:active { + background-color: darken($btnGray, 10%); + } + // Cancel button should keep the same style + &:focus { + box-shadow: rgba(197, 205, 211, 0.8) 0px 0px 2px, rgba(0, 0, 0, 0.0470588) 0px 0px 0px 1px inset !important; + } + } + + &[disabled] { + opacity: .6; + cursor: default; + } + + &.confirm[disabled] { + color: transparent; + ~ .la-ball-fall { + opacity: 1; + visibility: visible; + transition-delay: 0s; + } + } + + // Removes selection outline in Firefox + &::-moz-focus-inner { + border: 0; + } + } + + // Only show focus-style when there is multiple choice of actions + &[data-has-cancel-button=false] button { + box-shadow: none !important; + } + + &[data-has-confirm-button=false][data-has-cancel-button=false] { + padding-bottom: 40px; + } + + .sa-icon { + $red: #F27474; + $orange: #F8BB86; + $blue: #C9DAE1; + $green: #A5DC86; + + width: 80px; + height: 80px; + border: 4px solid gray; + -webkit-border-radius: 40px; + border-radius: 40px; + border-radius: 50%; + margin: 20px auto; + padding: 0; + position: relative; + box-sizing: content-box; + + &.sa-error { + border-color: $red; + + .sa-x-mark { + position: relative; + display: block; + } + + .sa-line { + position: absolute; + height: 5px; + width: 47px; + background-color: $red; + display: block; + top: 37px; + border-radius: 2px; + + &.sa-left { + -webkit-transform: rotate(45deg); + transform: rotate(45deg); + left: 17px; + } + &.sa-right { + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + right: 16px; + } + } + } + &.sa-warning { + border-color: $orange; + + .sa-body { // Exclamation mark body + position: absolute; + width: 5px; + height: 47px; + left: 50%; + top: 10px; + -webkit-border-radius: 2px; + border-radius: 2px; + margin-left: -2px; + background-color: $orange; + } + .sa-dot { // Exclamation mark dot + position: absolute; + width: 7px; + height: 7px; + -webkit-border-radius: 50%; + border-radius: 50%; + margin-left: -3px; + left: 50%; + bottom: 10px; + background-color: $orange; + } + } + &.sa-info { + border-color: $blue; + + &::before { // i-letter body + content: ""; + position: absolute; + width: 5px; + height: 29px; + left: 50%; + bottom: 17px; + border-radius: 2px; + margin-left: -2px; + background-color: $blue; + } + &::after { // i-letter dot + content: ""; + position: absolute; + width: 7px; + height: 7px; + border-radius: 50%; + margin-left: -3px; + top: 19px; + background-color: $blue; + } + } + &.sa-success { + border-color: $green; + + &::before, &::after { // Emulate moving circular line + content: ''; + -webkit-border-radius: 40px; + border-radius: 40px; + border-radius: 50%; + position: absolute; + width: 60px; + height: 120px; + background: white; + -webkit-transform: rotate(45deg); + transform: rotate(45deg); + } + &::before { + -webkit-border-radius: 120px 0 0 120px; + border-radius: 120px 0 0 120px; + top: -7px; + left: -33px; + + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + -webkit-transform-origin: 60px 60px; + transform-origin: 60px 60px; + } + &::after { + -webkit-border-radius: 0 120px 120px 0; + border-radius: 0 120px 120px 0; + top: -11px; + left: 30px; + + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + -webkit-transform-origin: 0px 60px; + transform-origin: 0px 60px; + } + + .sa-placeholder { // Ring + width: 80px; + height: 80px; + border: 4px solid rgba($green, 0.2); + -webkit-border-radius: 40px; + border-radius: 40px; + border-radius: 50%; + box-sizing: content-box; + + position: absolute; + left: -4px; + top: -4px; + z-index: 2; + } + + .sa-fix { // Hide corners left from animation + width: 5px; + height: 90px; + background-color: white; + + position: absolute; + left: 28px; + top: 8px; + z-index: 1; + + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + } + + .sa-line { + height: 5px; + background-color: $green; + display: block; + border-radius: 2px; + + position: absolute; + z-index: 2; + + &.sa-tip { + width: 25px; + + left: 14px; + top: 46px; + + -webkit-transform: rotate(45deg); + transform: rotate(45deg); + } + &.sa-long { + width: 47px; + + right: 8px; + top: 38px; + + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + } + } + } + &.sa-custom { + background-size: contain; + border-radius: 0; + border: none; + background-position: center center; + background-repeat: no-repeat; + } + } + +} + +/* + * Animations + */ + +@mixin keyframes($animation-name) { + @-webkit-keyframes #{$animation-name} { + @content; + } + @keyframes #{$animation-name} { + @content; + } +} +@mixin animation($str) { + -webkit-animation: #{$str}; + animation: #{$str}; +} + + +// Modal animation + +@include keyframes(showSweetAlert) { + 0% { transform: scale(0.7); -webkit-transform: scale(0.7); } + 45% { transform: scale(1.05); -webkit-transform: scale(1.05); } + 80% { transform: scale(0.95); -webkit-transform: scale(0.95); } + 100% { transform: scale(1); -webkit-transform: scale(1); } +} +@include keyframes(hideSweetAlert) { + 0% { transform: scale(1); -webkit-transform: scale(1); } + 100% { transform: scale(0.5); -webkit-transform: scale(0.5); } +} + +@include keyframes(slideFromTop) { + 0% { top: 0%; } + 100% { top: 50%; } +} +@include keyframes(slideToTop) { + 0% { top: 50%; } + 100% { top: 0%; } +} + +@include keyframes(slideFromBottom) { + 0% { top: 70%; } + 100% { top: 50%; } +} +@include keyframes(slideToBottom) { + 0% { top: 50%; } + 100% { top: 70%; } +} + +.showSweetAlert { + &[data-animation=pop] { + @include animation('showSweetAlert 0.3s'); + } + &[data-animation=none] { + @include animation('none'); + } + &[data-animation=slide-from-top] { + @include animation('slideFromTop 0.3s'); + } + &[data-animation=slide-from-bottom] { + @include animation('slideFromBottom 0.3s'); + } +} + +.hideSweetAlert { + &[data-animation=pop] { + @include animation('hideSweetAlert 0.2s'); + } + &[data-animation=none] { + @include animation('none'); + } + &[data-animation=slide-from-top] { + @include animation('slideToTop 0.4s'); + } + &[data-animation=slide-from-bottom] { + @include animation('slideToBottom 0.3s'); + } +} + + + +// Success icon animation + +@include keyframes(animateSuccessTip) { + 0% { width: 0; left: 1px; top: 19px; } + 54% { width: 0; left: 1px; top: 19px; } + 70% { width: 50px; left: -8px; top: 37px; } + 84% { width: 17px; left: 21px; top: 48px; } + 100% { width: 25px; left: 14px; top: 45px; } +} +@include keyframes(animateSuccessLong) { + 0% { width: 0; right: 46px; top: 54px; } + 65% { width: 0; right: 46px; top: 54px; } + 84% { width: 55px; right: 0px; top: 35px; } + 100% { width: 47px; right: 8px; top: 38px; } +} +@include keyframes(rotatePlaceholder) { + 0% { transform: rotate(-45deg); -webkit-transform: rotate(-45deg); } + 5% { transform: rotate(-45deg); -webkit-transform: rotate(-45deg); } + 12% { transform: rotate(-405deg); -webkit-transform: rotate(-405deg); } + 100% { transform: rotate(-405deg); -webkit-transform: rotate(-405deg); } +} + +.animateSuccessTip { + @include animation('animateSuccessTip 0.75s'); +} +.animateSuccessLong { + @include animation('animateSuccessLong 0.75s'); +} +.sa-icon.sa-success.animate::after { + @include animation('rotatePlaceholder 4.25s ease-in'); +} + + +// Error icon animation + +@include keyframes(animateErrorIcon) { + 0% { transform: rotateX(100deg); -webkit-transform: rotateX(100deg); opacity: 0; } + 100% { transform: rotateX(0deg); -webkit-transform: rotateX(0deg); opacity: 1; } +} +.animateErrorIcon { + @include animation('animateErrorIcon 0.5s'); +} +@include keyframes(animateXMark) { + 0% { transform: scale(0.4); -webkit-transform: scale(0.4); margin-top: 26px; opacity: 0; } + 50% { transform: scale(0.4); -webkit-transform: scale(0.4); margin-top: 26px; opacity: 0; } + 80% { transform: scale(1.15); -webkit-transform: scale(1.15); margin-top: -6px; } + 100% { transform: scale(1); -webkit-transform: scale(1); margin-top: 0; opacity: 1; } +} +.animateXMark { + @include animation('animateXMark 0.5s'); +} + +@include keyframes(pulseWarning) { + 0% { border-color: #F8D486; } + 100% { border-color: #F8BB86; } +} +.pulseWarning { + @include animation('pulseWarning 0.75s infinite alternate'); +} + +@include keyframes(pulseWarningIns) { + 0% { background-color: #F8D486; } + 100% { background-color: #F8BB86; } +} +.pulseWarningIns { + @include animation('pulseWarningIns 0.75s infinite alternate'); +} + +@include keyframes(rotate-loading) { + 0% { + transform: rotate(0deg); + } + + 100% { + transform: rotate(360deg); + } +} diff --git a/node_modules/sweetalert/dist/sweetalert-dev.js b/node_modules/sweetalert/dist/sweetalert-dev.js new file mode 100644 index 0000000..7e294b8 --- /dev/null +++ b/node_modules/sweetalert/dist/sweetalert-dev.js @@ -0,0 +1,1285 @@ +;(function(window, document, undefined) { + "use strict"; + + (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o call showInputError with errorMessage + */ +sweetAlert.showInputError = swal.showInputError = function (errorMessage) { + var modal = _sweetAlertInitialize$getModal$getOverlay$getInput$setFocusStyle$openModal$resetInput$fixVerticalPosition.getModal(); + + var $errorIcon = modal.querySelector('.sa-input-error'); + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.addClass($errorIcon, 'show'); + + var $errorContainer = modal.querySelector('.sa-error-container'); + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.addClass($errorContainer, 'show'); + + $errorContainer.querySelector('p').innerHTML = errorMessage; + + setTimeout(function () { + sweetAlert.enableButtons(); + }, 1); + + modal.querySelector('input').focus(); +}; + +/* + * Reset input error DOM elements + */ +sweetAlert.resetInputError = swal.resetInputError = function (event) { + // If press enter => ignore + if (event && event.keyCode === 13) { + return false; + } + + var $modal = _sweetAlertInitialize$getModal$getOverlay$getInput$setFocusStyle$openModal$resetInput$fixVerticalPosition.getModal(); + + var $errorIcon = $modal.querySelector('.sa-input-error'); + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.removeClass($errorIcon, 'show'); + + var $errorContainer = $modal.querySelector('.sa-error-container'); + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.removeClass($errorContainer, 'show'); +}; + +/* + * Disable confirm and cancel buttons + */ +sweetAlert.disableButtons = swal.disableButtons = function (event) { + var modal = _sweetAlertInitialize$getModal$getOverlay$getInput$setFocusStyle$openModal$resetInput$fixVerticalPosition.getModal(); + var $confirmButton = modal.querySelector('button.confirm'); + var $cancelButton = modal.querySelector('button.cancel'); + $confirmButton.disabled = true; + $cancelButton.disabled = true; +}; + +/* + * Enable confirm and cancel buttons + */ +sweetAlert.enableButtons = swal.enableButtons = function (event) { + var modal = _sweetAlertInitialize$getModal$getOverlay$getInput$setFocusStyle$openModal$resetInput$fixVerticalPosition.getModal(); + var $confirmButton = modal.querySelector('button.confirm'); + var $cancelButton = modal.querySelector('button.cancel'); + $confirmButton.disabled = false; + $cancelButton.disabled = false; +}; + +if (typeof window !== 'undefined') { + // The 'handle-click' module requires + // that 'sweetAlert' was set as global. + window.sweetAlert = window.swal = sweetAlert; +} else { + _extend$hexToRgb$isIE8$logStr$colorLuminance.logStr('SweetAlert is a frontend module!'); +} +module.exports = exports['default']; + +},{"./modules/default-params":2,"./modules/handle-click":3,"./modules/handle-dom":4,"./modules/handle-key":5,"./modules/handle-swal-dom":6,"./modules/set-params":8,"./modules/utils":9}],2:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); +var defaultParams = { + title: '', + text: '', + type: null, + allowOutsideClick: false, + showConfirmButton: true, + showCancelButton: false, + closeOnConfirm: true, + closeOnCancel: true, + confirmButtonText: 'OK', + confirmButtonColor: '#8CD4F5', + cancelButtonText: 'Cancel', + imageUrl: null, + imageSize: null, + timer: null, + customClass: '', + html: false, + animation: true, + allowEscapeKey: true, + inputType: 'text', + inputPlaceholder: '', + inputValue: '', + showLoaderOnConfirm: false +}; + +exports['default'] = defaultParams; +module.exports = exports['default']; + +},{}],3:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); + +var _colorLuminance = require('./utils'); + +var _getModal = require('./handle-swal-dom'); + +var _hasClass$isDescendant = require('./handle-dom'); + +/* + * User clicked on "Confirm"/"OK" or "Cancel" + */ +var handleButton = function handleButton(event, params, modal) { + var e = event || window.event; + var target = e.target || e.srcElement; + + var targetedConfirm = target.className.indexOf('confirm') !== -1; + var targetedOverlay = target.className.indexOf('sweet-overlay') !== -1; + var modalIsVisible = _hasClass$isDescendant.hasClass(modal, 'visible'); + var doneFunctionExists = params.doneFunction && modal.getAttribute('data-has-done-function') === 'true'; + + // Since the user can change the background-color of the confirm button programmatically, + // we must calculate what the color should be on hover/active + var normalColor, hoverColor, activeColor; + if (targetedConfirm && params.confirmButtonColor) { + normalColor = params.confirmButtonColor; + hoverColor = _colorLuminance.colorLuminance(normalColor, -0.04); + activeColor = _colorLuminance.colorLuminance(normalColor, -0.14); + } + + function shouldSetConfirmButtonColor(color) { + if (targetedConfirm && params.confirmButtonColor) { + target.style.backgroundColor = color; + } + } + + switch (e.type) { + case 'mouseover': + shouldSetConfirmButtonColor(hoverColor); + break; + + case 'mouseout': + shouldSetConfirmButtonColor(normalColor); + break; + + case 'mousedown': + shouldSetConfirmButtonColor(activeColor); + break; + + case 'mouseup': + shouldSetConfirmButtonColor(hoverColor); + break; + + case 'focus': + var $confirmButton = modal.querySelector('button.confirm'); + var $cancelButton = modal.querySelector('button.cancel'); + + if (targetedConfirm) { + $cancelButton.style.boxShadow = 'none'; + } else { + $confirmButton.style.boxShadow = 'none'; + } + break; + + case 'click': + var clickedOnModal = modal === target; + var clickedOnModalChild = _hasClass$isDescendant.isDescendant(modal, target); + + // Ignore click outside if allowOutsideClick is false + if (!clickedOnModal && !clickedOnModalChild && modalIsVisible && !params.allowOutsideClick) { + break; + } + + if (targetedConfirm && doneFunctionExists && modalIsVisible) { + handleConfirm(modal, params); + } else if (doneFunctionExists && modalIsVisible || targetedOverlay) { + handleCancel(modal, params); + } else if (_hasClass$isDescendant.isDescendant(modal, target) && target.tagName === 'BUTTON') { + sweetAlert.close(); + } + break; + } +}; + +/* + * User clicked on "Confirm"/"OK" + */ +var handleConfirm = function handleConfirm(modal, params) { + var callbackValue = true; + + if (_hasClass$isDescendant.hasClass(modal, 'show-input')) { + callbackValue = modal.querySelector('input').value; + + if (!callbackValue) { + callbackValue = ''; + } + } + + params.doneFunction(callbackValue); + + if (params.closeOnConfirm) { + sweetAlert.close(); + } + // Disable cancel and confirm button if the parameter is true + if (params.showLoaderOnConfirm) { + sweetAlert.disableButtons(); + } +}; + +/* + * User clicked on "Cancel" + */ +var handleCancel = function handleCancel(modal, params) { + // Check if callback function expects a parameter (to track cancel actions) + var functionAsStr = String(params.doneFunction).replace(/\s/g, ''); + var functionHandlesCancel = functionAsStr.substring(0, 9) === 'function(' && functionAsStr.substring(9, 10) !== ')'; + + if (functionHandlesCancel) { + params.doneFunction(false); + } + + if (params.closeOnCancel) { + sweetAlert.close(); + } +}; + +exports['default'] = { + handleButton: handleButton, + handleConfirm: handleConfirm, + handleCancel: handleCancel +}; +module.exports = exports['default']; + +},{"./handle-dom":4,"./handle-swal-dom":6,"./utils":9}],4:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); +var hasClass = function hasClass(elem, className) { + return new RegExp(' ' + className + ' ').test(' ' + elem.className + ' '); +}; + +var addClass = function addClass(elem, className) { + if (!hasClass(elem, className)) { + elem.className += ' ' + className; + } +}; + +var removeClass = function removeClass(elem, className) { + var newClass = ' ' + elem.className.replace(/[\t\r\n]/g, ' ') + ' '; + if (hasClass(elem, className)) { + while (newClass.indexOf(' ' + className + ' ') >= 0) { + newClass = newClass.replace(' ' + className + ' ', ' '); + } + elem.className = newClass.replace(/^\s+|\s+$/g, ''); + } +}; + +var escapeHtml = function escapeHtml(str) { + var div = document.createElement('div'); + div.appendChild(document.createTextNode(str)); + return div.innerHTML; +}; + +var _show = function _show(elem) { + elem.style.opacity = ''; + elem.style.display = 'block'; +}; + +var show = function show(elems) { + if (elems && !elems.length) { + return _show(elems); + } + for (var i = 0; i < elems.length; ++i) { + _show(elems[i]); + } +}; + +var _hide = function _hide(elem) { + elem.style.opacity = ''; + elem.style.display = 'none'; +}; + +var hide = function hide(elems) { + if (elems && !elems.length) { + return _hide(elems); + } + for (var i = 0; i < elems.length; ++i) { + _hide(elems[i]); + } +}; + +var isDescendant = function isDescendant(parent, child) { + var node = child.parentNode; + while (node !== null) { + if (node === parent) { + return true; + } + node = node.parentNode; + } + return false; +}; + +var getTopMargin = function getTopMargin(elem) { + elem.style.left = '-9999px'; + elem.style.display = 'block'; + + var height = elem.clientHeight, + padding; + if (typeof getComputedStyle !== 'undefined') { + // IE 8 + padding = parseInt(getComputedStyle(elem).getPropertyValue('padding-top'), 10); + } else { + padding = parseInt(elem.currentStyle.padding); + } + + elem.style.left = ''; + elem.style.display = 'none'; + return '-' + parseInt((height + padding) / 2) + 'px'; +}; + +var fadeIn = function fadeIn(elem, interval) { + if (+elem.style.opacity < 1) { + interval = interval || 16; + elem.style.opacity = 0; + elem.style.display = 'block'; + var last = +new Date(); + var tick = (function (_tick) { + function tick() { + return _tick.apply(this, arguments); + } + + tick.toString = function () { + return _tick.toString(); + }; + + return tick; + })(function () { + elem.style.opacity = +elem.style.opacity + (new Date() - last) / 100; + last = +new Date(); + + if (+elem.style.opacity < 1) { + setTimeout(tick, interval); + } + }); + tick(); + } + elem.style.display = 'block'; //fallback IE8 +}; + +var fadeOut = function fadeOut(elem, interval) { + interval = interval || 16; + elem.style.opacity = 1; + var last = +new Date(); + var tick = (function (_tick2) { + function tick() { + return _tick2.apply(this, arguments); + } + + tick.toString = function () { + return _tick2.toString(); + }; + + return tick; + })(function () { + elem.style.opacity = +elem.style.opacity - (new Date() - last) / 100; + last = +new Date(); + + if (+elem.style.opacity > 0) { + setTimeout(tick, interval); + } else { + elem.style.display = 'none'; + } + }); + tick(); +}; + +var fireClick = function fireClick(node) { + // Taken from http://www.nonobtrusive.com/2011/11/29/programatically-fire-crossbrowser-click-event-with-javascript/ + // Then fixed for today's Chrome browser. + if (typeof MouseEvent === 'function') { + // Up-to-date approach + var mevt = new MouseEvent('click', { + view: window, + bubbles: false, + cancelable: true + }); + node.dispatchEvent(mevt); + } else if (document.createEvent) { + // Fallback + var evt = document.createEvent('MouseEvents'); + evt.initEvent('click', false, false); + node.dispatchEvent(evt); + } else if (document.createEventObject) { + node.fireEvent('onclick'); + } else if (typeof node.onclick === 'function') { + node.onclick(); + } +}; + +var stopEventPropagation = function stopEventPropagation(e) { + // In particular, make sure the space bar doesn't scroll the main window. + if (typeof e.stopPropagation === 'function') { + e.stopPropagation(); + e.preventDefault(); + } else if (window.event && window.event.hasOwnProperty('cancelBubble')) { + window.event.cancelBubble = true; + } +}; + +exports.hasClass = hasClass; +exports.addClass = addClass; +exports.removeClass = removeClass; +exports.escapeHtml = escapeHtml; +exports._show = _show; +exports.show = show; +exports._hide = _hide; +exports.hide = hide; +exports.isDescendant = isDescendant; +exports.getTopMargin = getTopMargin; +exports.fadeIn = fadeIn; +exports.fadeOut = fadeOut; +exports.fireClick = fireClick; +exports.stopEventPropagation = stopEventPropagation; + +},{}],5:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); + +var _stopEventPropagation$fireClick = require('./handle-dom'); + +var _setFocusStyle = require('./handle-swal-dom'); + +var handleKeyDown = function handleKeyDown(event, params, modal) { + var e = event || window.event; + var keyCode = e.keyCode || e.which; + + var $okButton = modal.querySelector('button.confirm'); + var $cancelButton = modal.querySelector('button.cancel'); + var $modalButtons = modal.querySelectorAll('button[tabindex]'); + + if ([9, 13, 32, 27].indexOf(keyCode) === -1) { + // Don't do work on keys we don't care about. + return; + } + + var $targetElement = e.target || e.srcElement; + + var btnIndex = -1; // Find the button - note, this is a nodelist, not an array. + for (var i = 0; i < $modalButtons.length; i++) { + if ($targetElement === $modalButtons[i]) { + btnIndex = i; + break; + } + } + + if (keyCode === 9) { + // TAB + if (btnIndex === -1) { + // No button focused. Jump to the confirm button. + $targetElement = $okButton; + } else { + // Cycle to the next button + if (btnIndex === $modalButtons.length - 1) { + $targetElement = $modalButtons[0]; + } else { + $targetElement = $modalButtons[btnIndex + 1]; + } + } + + _stopEventPropagation$fireClick.stopEventPropagation(e); + $targetElement.focus(); + + if (params.confirmButtonColor) { + _setFocusStyle.setFocusStyle($targetElement, params.confirmButtonColor); + } + } else { + if (keyCode === 13) { + if ($targetElement.tagName === 'INPUT') { + $targetElement = $okButton; + $okButton.focus(); + } + + if (btnIndex === -1) { + // ENTER/SPACE clicked outside of a button. + $targetElement = $okButton; + } else { + // Do nothing - let the browser handle it. + $targetElement = undefined; + } + } else if (keyCode === 27 && params.allowEscapeKey === true) { + $targetElement = $cancelButton; + _stopEventPropagation$fireClick.fireClick($targetElement, e); + } else { + // Fallback - let the browser handle it. + $targetElement = undefined; + } + } +}; + +exports['default'] = handleKeyDown; +module.exports = exports['default']; + +},{"./handle-dom":4,"./handle-swal-dom":6}],6:[function(require,module,exports){ +'use strict'; + +var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; + +Object.defineProperty(exports, '__esModule', { + value: true +}); + +var _hexToRgb = require('./utils'); + +var _removeClass$getTopMargin$fadeIn$show$addClass = require('./handle-dom'); + +var _defaultParams = require('./default-params'); + +var _defaultParams2 = _interopRequireWildcard(_defaultParams); + +/* + * Add modal + overlay to DOM + */ + +var _injectedHTML = require('./injected-html'); + +var _injectedHTML2 = _interopRequireWildcard(_injectedHTML); + +var modalClass = '.sweet-alert'; +var overlayClass = '.sweet-overlay'; + +var sweetAlertInitialize = function sweetAlertInitialize() { + var sweetWrap = document.createElement('div'); + sweetWrap.innerHTML = _injectedHTML2['default']; + + // Append elements to body + while (sweetWrap.firstChild) { + document.body.appendChild(sweetWrap.firstChild); + } +}; + +/* + * Get DOM element of modal + */ +var getModal = (function (_getModal) { + function getModal() { + return _getModal.apply(this, arguments); + } + + getModal.toString = function () { + return _getModal.toString(); + }; + + return getModal; +})(function () { + var $modal = document.querySelector(modalClass); + + if (!$modal) { + sweetAlertInitialize(); + $modal = getModal(); + } + + return $modal; +}); + +/* + * Get DOM element of input (in modal) + */ +var getInput = function getInput() { + var $modal = getModal(); + if ($modal) { + return $modal.querySelector('input'); + } +}; + +/* + * Get DOM element of overlay + */ +var getOverlay = function getOverlay() { + return document.querySelector(overlayClass); +}; + +/* + * Add box-shadow style to button (depending on its chosen bg-color) + */ +var setFocusStyle = function setFocusStyle($button, bgColor) { + var rgbColor = _hexToRgb.hexToRgb(bgColor); + $button.style.boxShadow = '0 0 2px rgba(' + rgbColor + ', 0.8), inset 0 0 0 1px rgba(0, 0, 0, 0.05)'; +}; + +/* + * Animation when opening modal + */ +var openModal = function openModal(callback) { + var $modal = getModal(); + _removeClass$getTopMargin$fadeIn$show$addClass.fadeIn(getOverlay(), 10); + _removeClass$getTopMargin$fadeIn$show$addClass.show($modal); + _removeClass$getTopMargin$fadeIn$show$addClass.addClass($modal, 'showSweetAlert'); + _removeClass$getTopMargin$fadeIn$show$addClass.removeClass($modal, 'hideSweetAlert'); + + window.previousActiveElement = document.activeElement; + var $okButton = $modal.querySelector('button.confirm'); + $okButton.focus(); + + setTimeout(function () { + _removeClass$getTopMargin$fadeIn$show$addClass.addClass($modal, 'visible'); + }, 500); + + var timer = $modal.getAttribute('data-timer'); + + if (timer !== 'null' && timer !== '') { + var timerCallback = callback; + $modal.timeout = setTimeout(function () { + var doneFunctionExists = (timerCallback || null) && $modal.getAttribute('data-has-done-function') === 'true'; + if (doneFunctionExists) { + timerCallback(null); + } else { + sweetAlert.close(); + } + }, timer); + } +}; + +/* + * Reset the styling of the input + * (for example if errors have been shown) + */ +var resetInput = function resetInput() { + var $modal = getModal(); + var $input = getInput(); + + _removeClass$getTopMargin$fadeIn$show$addClass.removeClass($modal, 'show-input'); + $input.value = _defaultParams2['default'].inputValue; + $input.setAttribute('type', _defaultParams2['default'].inputType); + $input.setAttribute('placeholder', _defaultParams2['default'].inputPlaceholder); + + resetInputError(); +}; + +var resetInputError = function resetInputError(event) { + // If press enter => ignore + if (event && event.keyCode === 13) { + return false; + } + + var $modal = getModal(); + + var $errorIcon = $modal.querySelector('.sa-input-error'); + _removeClass$getTopMargin$fadeIn$show$addClass.removeClass($errorIcon, 'show'); + + var $errorContainer = $modal.querySelector('.sa-error-container'); + _removeClass$getTopMargin$fadeIn$show$addClass.removeClass($errorContainer, 'show'); +}; + +/* + * Set "margin-top"-property on modal based on its computed height + */ +var fixVerticalPosition = function fixVerticalPosition() { + var $modal = getModal(); + $modal.style.marginTop = _removeClass$getTopMargin$fadeIn$show$addClass.getTopMargin(getModal()); +}; + +exports.sweetAlertInitialize = sweetAlertInitialize; +exports.getModal = getModal; +exports.getOverlay = getOverlay; +exports.getInput = getInput; +exports.setFocusStyle = setFocusStyle; +exports.openModal = openModal; +exports.resetInput = resetInput; +exports.resetInputError = resetInputError; +exports.fixVerticalPosition = fixVerticalPosition; + +},{"./default-params":2,"./handle-dom":4,"./injected-html":7,"./utils":9}],7:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var injectedHTML = + +// Dark overlay +"
" + + +// Modal +"
" + + +// Error icon +"
\n \n \n \n \n
" + + +// Warning icon +"
\n \n \n
" + + +// Info icon +"
" + + +// Success icon +"
\n \n \n\n
\n
\n
" + "
" + + +// Title, text and input +"

Title

\n

Text

\n
\n \n
\n
" + + +// Input errors +"
\n
!
\n

Not valid!

\n
" + + +// Cancel and confirm buttons +"
\n \n
\n " + + +// Loading animation +"
\n
\n
\n
\n
\n
\n
" + + +// End of modal +"
"; + +exports["default"] = injectedHTML; +module.exports = exports["default"]; + +},{}],8:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); + +var _isIE8 = require('./utils'); + +var _getModal$getInput$setFocusStyle = require('./handle-swal-dom'); + +var _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide = require('./handle-dom'); + +var alertTypes = ['error', 'warning', 'info', 'success', 'input', 'prompt']; + +/* + * Set type, text and actions on modal + */ +var setParameters = function setParameters(params) { + var modal = _getModal$getInput$setFocusStyle.getModal(); + + var $title = modal.querySelector('h2'); + var $text = modal.querySelector('p'); + var $cancelBtn = modal.querySelector('button.cancel'); + var $confirmBtn = modal.querySelector('button.confirm'); + + /* + * Title + */ + $title.innerHTML = params.html ? params.title : _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.escapeHtml(params.title).split('\n').join('
'); + + /* + * Text + */ + $text.innerHTML = params.html ? params.text : _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.escapeHtml(params.text || '').split('\n').join('
'); + if (params.text) _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.show($text); + + /* + * Custom class + */ + if (params.customClass) { + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.addClass(modal, params.customClass); + modal.setAttribute('data-custom-class', params.customClass); + } else { + // Find previously set classes and remove them + var customClass = modal.getAttribute('data-custom-class'); + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.removeClass(modal, customClass); + modal.setAttribute('data-custom-class', ''); + } + + /* + * Icon + */ + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.hide(modal.querySelectorAll('.sa-icon')); + + if (params.type && !_isIE8.isIE8()) { + var _ret = (function () { + + var validType = false; + + for (var i = 0; i < alertTypes.length; i++) { + if (params.type === alertTypes[i]) { + validType = true; + break; + } + } + + if (!validType) { + logStr('Unknown alert type: ' + params.type); + return { + v: false + }; + } + + var typesWithIcons = ['success', 'error', 'warning', 'info']; + var $icon = undefined; + + if (typesWithIcons.indexOf(params.type) !== -1) { + $icon = modal.querySelector('.sa-icon.' + 'sa-' + params.type); + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.show($icon); + } + + var $input = _getModal$getInput$setFocusStyle.getInput(); + + // Animate icon + switch (params.type) { + + case 'success': + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.addClass($icon, 'animate'); + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.addClass($icon.querySelector('.sa-tip'), 'animateSuccessTip'); + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.addClass($icon.querySelector('.sa-long'), 'animateSuccessLong'); + break; + + case 'error': + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.addClass($icon, 'animateErrorIcon'); + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.addClass($icon.querySelector('.sa-x-mark'), 'animateXMark'); + break; + + case 'warning': + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.addClass($icon, 'pulseWarning'); + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.addClass($icon.querySelector('.sa-body'), 'pulseWarningIns'); + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.addClass($icon.querySelector('.sa-dot'), 'pulseWarningIns'); + break; + + case 'input': + case 'prompt': + $input.setAttribute('type', params.inputType); + $input.value = params.inputValue; + $input.setAttribute('placeholder', params.inputPlaceholder); + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.addClass(modal, 'show-input'); + setTimeout(function () { + $input.focus(); + $input.addEventListener('keyup', swal.resetInputError); + }, 400); + break; + } + })(); + + if (typeof _ret === 'object') { + return _ret.v; + } + } + + /* + * Custom image + */ + if (params.imageUrl) { + var $customIcon = modal.querySelector('.sa-icon.sa-custom'); + + $customIcon.style.backgroundImage = 'url(' + params.imageUrl + ')'; + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.show($customIcon); + + var _imgWidth = 80; + var _imgHeight = 80; + + if (params.imageSize) { + var dimensions = params.imageSize.toString().split('x'); + var imgWidth = dimensions[0]; + var imgHeight = dimensions[1]; + + if (!imgWidth || !imgHeight) { + logStr('Parameter imageSize expects value with format WIDTHxHEIGHT, got ' + params.imageSize); + } else { + _imgWidth = imgWidth; + _imgHeight = imgHeight; + } + } + + $customIcon.setAttribute('style', $customIcon.getAttribute('style') + 'width:' + _imgWidth + 'px; height:' + _imgHeight + 'px'); + } + + /* + * Show cancel button? + */ + modal.setAttribute('data-has-cancel-button', params.showCancelButton); + if (params.showCancelButton) { + $cancelBtn.style.display = 'inline-block'; + } else { + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.hide($cancelBtn); + } + + /* + * Show confirm button? + */ + modal.setAttribute('data-has-confirm-button', params.showConfirmButton); + if (params.showConfirmButton) { + $confirmBtn.style.display = 'inline-block'; + } else { + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.hide($confirmBtn); + } + + /* + * Custom text on cancel/confirm buttons + */ + if (params.cancelButtonText) { + $cancelBtn.innerHTML = _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.escapeHtml(params.cancelButtonText); + } + if (params.confirmButtonText) { + $confirmBtn.innerHTML = _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.escapeHtml(params.confirmButtonText); + } + + /* + * Custom color on confirm button + */ + if (params.confirmButtonColor) { + // Set confirm button to selected background color + $confirmBtn.style.backgroundColor = params.confirmButtonColor; + + // Set the confirm button color to the loading ring + $confirmBtn.style.borderLeftColor = params.confirmLoadingButtonColor; + $confirmBtn.style.borderRightColor = params.confirmLoadingButtonColor; + + // Set box-shadow to default focused button + _getModal$getInput$setFocusStyle.setFocusStyle($confirmBtn, params.confirmButtonColor); + } + + /* + * Allow outside click + */ + modal.setAttribute('data-allow-outside-click', params.allowOutsideClick); + + /* + * Callback function + */ + var hasDoneFunction = params.doneFunction ? true : false; + modal.setAttribute('data-has-done-function', hasDoneFunction); + + /* + * Animation + */ + if (!params.animation) { + modal.setAttribute('data-animation', 'none'); + } else if (typeof params.animation === 'string') { + modal.setAttribute('data-animation', params.animation); // Custom animation + } else { + modal.setAttribute('data-animation', 'pop'); + } + + /* + * Timer + */ + modal.setAttribute('data-timer', params.timer); +}; + +exports['default'] = setParameters; +module.exports = exports['default']; + +},{"./handle-dom":4,"./handle-swal-dom":6,"./utils":9}],9:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); +/* + * Allow user to pass their own params + */ +var extend = function extend(a, b) { + for (var key in b) { + if (b.hasOwnProperty(key)) { + a[key] = b[key]; + } + } + return a; +}; + +/* + * Convert HEX codes to RGB values (#000000 -> rgb(0,0,0)) + */ +var hexToRgb = function hexToRgb(hex) { + var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); + return result ? parseInt(result[1], 16) + ', ' + parseInt(result[2], 16) + ', ' + parseInt(result[3], 16) : null; +}; + +/* + * Check if the user is using Internet Explorer 8 (for fallbacks) + */ +var isIE8 = function isIE8() { + return window.attachEvent && !window.addEventListener; +}; + +/* + * IE compatible logging for developers + */ +var logStr = function logStr(string) { + if (window.console) { + // IE... + window.console.log('SweetAlert: ' + string); + } +}; + +/* + * Set hover, active and focus-states for buttons + * (source: http://www.sitepoint.com/javascript-generate-lighter-darker-color) + */ +var colorLuminance = function colorLuminance(hex, lum) { + // Validate hex string + hex = String(hex).replace(/[^0-9a-f]/gi, ''); + if (hex.length < 6) { + hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2]; + } + lum = lum || 0; + + // Convert to decimal and change luminosity + var rgb = '#'; + var c; + var i; + + for (i = 0; i < 3; i++) { + c = parseInt(hex.substr(i * 2, 2), 16); + c = Math.round(Math.min(Math.max(0, c + c * lum), 255)).toString(16); + rgb += ('00' + c).substr(c.length); + } + + return rgb; +}; + +exports.extend = extend; +exports.hexToRgb = hexToRgb; +exports.isIE8 = isIE8; +exports.logStr = logStr; +exports.colorLuminance = colorLuminance; + +},{}]},{},[1]) +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5L25vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCIvVXNlcnMvVHJpc3Rhbi9kZXYvU3dlZXRBbGVydC9kZXYvc3dlZXRhbGVydC5lczYuanMiLCIvVXNlcnMvVHJpc3Rhbi9kZXYvU3dlZXRBbGVydC9kZXYvbW9kdWxlcy9kZWZhdWx0LXBhcmFtcy5qcyIsIi9Vc2Vycy9UcmlzdGFuL2Rldi9Td2VldEFsZXJ0L2Rldi9tb2R1bGVzL2hhbmRsZS1jbGljay5qcyIsIi9Vc2Vycy9UcmlzdGFuL2Rldi9Td2VldEFsZXJ0L2Rldi9tb2R1bGVzL2hhbmRsZS1kb20uanMiLCIvVXNlcnMvVHJpc3Rhbi9kZXYvU3dlZXRBbGVydC9kZXYvbW9kdWxlcy9oYW5kbGUta2V5LmpzIiwiL1VzZXJzL1RyaXN0YW4vZGV2L1N3ZWV0QWxlcnQvZGV2L21vZHVsZXMvaGFuZGxlLXN3YWwtZG9tLmpzIiwiL1VzZXJzL1RyaXN0YW4vZGV2L1N3ZWV0QWxlcnQvZGV2L21vZHVsZXMvaW5qZWN0ZWQtaHRtbC5qcyIsIi9Vc2Vycy9UcmlzdGFuL2Rldi9Td2VldEFsZXJ0L2Rldi9tb2R1bGVzL3NldC1wYXJhbXMuanMiLCIvVXNlcnMvVHJpc3Rhbi9kZXYvU3dlZXRBbGVydC9kZXYvbW9kdWxlcy91dGlscy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7OztzSkNnQk8sc0JBQXNCOzs7Ozs7MkRBV3RCLGlCQUFpQjs7Ozs7O3dIQWNqQiwyQkFBMkI7Ozs7dURBSXdCLHdCQUF3Qjs7NkJBQ3hELHNCQUFzQjs7Ozs7OzZCQUl0QiwwQkFBMEI7Ozs7NkJBQzFCLHNCQUFzQjs7Ozs7Ozs7QUFNaEQsSUFBSSxxQkFBcUIsQ0FBQztBQUMxQixJQUFJLGlCQUFpQixDQUFDOzs7Ozs7QUFPdEIsSUFBSSxVQUFVLEVBQUUsSUFBSSxDQUFDOztxQkFFTixVQUFVLEdBQUcsSUFBSSxHQUFHLFlBQVc7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RyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3JFLE9BQUcsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUEsQ0FBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0dBQ3BDOztBQUVELFNBQU8sR0FBRyxDQUFDO0NBQ1osQ0FBQzs7UUFJQSxNQUFNLEdBQU4sTUFBTTtRQUNOLFFBQVEsR0FBUixRQUFRO1FBQ1IsS0FBSyxHQUFMLEtBQUs7UUFDTCxNQUFNLEdBQU4sTUFBTTtRQUNOLGNBQWMsR0FBZCxjQUFjIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrbytcIidcIik7dGhyb3cgZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSIsIi8vIFN3ZWV0QWxlcnRcbi8vIDIwMTQtMjAxNSAoYykgLSBUcmlzdGFuIEVkd2FyZHNcbi8vIGdpdGh1Yi5jb20vdDR0NS9zd2VldGFsZXJ0XG5cbi8qXG4gKiBqUXVlcnktbGlrZSBmdW5jdGlvbnMgZm9yIG1hbmlwdWxhdGluZyB0aGUgRE9NXG4gKi9cbmltcG9ydCB7XG4gIGhhc0NsYXNzLCBhZGRDbGFzcywgcmVtb3ZlQ2xhc3MsXG4gIGVzY2FwZUh0bWwsXG4gIF9zaG93LCBzaG93LCBfaGlkZSwgaGlkZSxcbiAgaXNEZXNjZW5kYW50LFxuICBnZXRUb3BNYXJnaW4sXG4gIGZhZGVJbiwgZmFkZU91dCxcbiAgZmlyZUNsaWNrLFxuICBzdG9wRXZlbnRQcm9wYWdhdGlvblxufSBmcm9tICcuL21vZHVsZXMvaGFuZGxlLWRvbSc7XG5cbi8qXG4gKiBIYW5keSB1dGlsaXRpZXNcbiAqL1xuaW1wb3J0IHtcbiAgZXh0ZW5kLFxuICBoZXhUb1JnYixcbiAgaXNJRTgsXG4gIGxvZ1N0cixcbiAgY29sb3JMdW1pbmFuY2Vcbn0gZnJvbSAnLi9tb2R1bGVzL3V0aWxzJztcblxuLypcbiAqICBIYW5kbGUgc3dlZXRBbGVydCdzIERPTSBlbGVtZW50c1xuICovXG5pbXBvcnQge1xuICBzd2VldEFsZXJ0SW5pdGlhbGl6ZSxcbiAgZ2V0TW9kYWwsXG4gIGdldE92ZXJsYXksXG4gIGdldElucHV0LFxuICBzZXRGb2N1c1N0eWxlLFxuICBvcGVuTW9kYWwsXG4gIHJlc2V0SW5wdXQsXG4gIGZpeFZlcnRpY2FsUG9zaXRpb25cbn0gZnJvbSAnLi9tb2R1bGVzL2hhbmRsZS1zd2FsLWRvbSc7XG5cblxuLy8gSGFuZGxlIGJ1dHRvbiBldmVudHMgYW5kIGtleWJvYXJkIGV2ZW50c1xuaW1wb3J0IHsgaGFuZGxlQnV0dG9uLCBoYW5kbGVDb25maXJtLCBoYW5kbGVDYW5jZWwgfSBmcm9tICcuL21vZHVsZXMvaGFuZGxlLWNsaWNrJztcbmltcG9ydCBoYW5kbGVLZXlEb3duIGZyb20gJy4vbW9kdWxlcy9oYW5kbGUta2V5JztcblxuXG4vLyBEZWZhdWx0IHZhbHVlc1xuaW1wb3J0IGRlZmF1bHRQYXJhbXMgZnJvbSAnLi9tb2R1bGVzL2RlZmF1bHQtcGFyYW1zJztcbmltcG9ydCBzZXRQYXJhbWV0ZXJzIGZyb20gJy4vbW9kdWxlcy9zZXQtcGFyYW1zJztcblxuLypcbiAqIFJlbWVtYmVyIHN0YXRlIGluIGNhc2VzIHdoZXJlIG9wZW5pbmcgYW5kIGhhbmRsaW5nIGEgbW9kYWwgd2lsbCBmaWRkbGUgd2l0aCBpdC5cbiAqIChXZSBhbHNvIHVzZSB3aW5kb3cucHJldmlvdXNBY3RpdmVFbGVtZW50IGFzIGEgZ2xvYmFsIHZhcmlhYmxlKVxuICovXG52YXIgcHJldmlvdXNXaW5kb3dLZXlEb3duO1xudmFyIGxhc3RGb2N1c2VkQnV0dG9uO1xuXG5cbi8qXG4gKiBHbG9iYWwgc3dlZXRBbGVydCBmdW5jdGlvblxuICogKHRoaXMgaXMgd2hhdCB0aGUgdXNlciBjYWxscylcbiAqL1xudmFyIHN3ZWV0QWxlcnQsIHN3YWw7XG5cbmV4cG9ydCBkZWZhdWx0IHN3ZWV0QWxlcnQgPSBzd2FsID0gZnVuY3Rpb24oKSB7XG4gIHZhciBjdXN0b21pemF0aW9ucyA9IGFyZ3VtZW50c1swXTtcblxuICBhZGRDbGFzcyhkb2N1bWVudC5ib2R5LCAnc3RvcC1zY3JvbGxpbmcnKTtcbiAgcmVzZXRJbnB1dCgpO1xuXG4gIC8qXG4gICAqIFVzZSBhcmd1bWVudCBpZiBkZWZpbmVkIG9yIGRlZmF1bHQgdmFsdWUgZnJvbSBwYXJhbXMgb2JqZWN0IG90aGVyd2lzZS5cbiAgICogU3VwcG9ydHMgdGhlIGNhc2Ugd2hlcmUgYSBkZWZhdWx0IHZhbHVlIGlzIGJvb2xlYW4gdHJ1ZSBhbmQgc2hvdWxkIGJlXG4gICAqIG92ZXJyaWRkZW4gYnkgYSBjb3JyZXNwb25kaW5nIGV4cGxpY2l0IGFyZ3VtZW50IHdoaWNoIGlzIGJvb2xlYW4gZmFsc2UuXG4gICAqL1xuICBmdW5jdGlvbiBhcmd1bWVudE9yRGVmYXVsdChrZXkpIHtcbiAgICB2YXIgYXJncyA9IGN1c3RvbWl6YXRpb25zO1xuICAgIHJldHVybiAoYXJnc1trZXldID09PSB1bmRlZmluZWQpID8gIGRlZmF1bHRQYXJhbXNba2V5XSA6IGFyZ3Nba2V5XTtcbiAgfVxuXG4gIGlmIChjdXN0b21pemF0aW9ucyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgbG9nU3RyKCdTd2VldEFsZXJ0IGV4cGVjdHMgYXQgbGVhc3QgMSBhdHRyaWJ1dGUhJyk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIHBhcmFtcyA9IGV4dGVuZCh7fSwgZGVmYXVsdFBhcmFtcyk7XG5cbiAgc3dpdGNoICh0eXBlb2YgY3VzdG9taXphdGlvbnMpIHtcblxuICAgIC8vIEV4OiBzd2FsKFwiSGVsbG9cIiwgXCJKdXN0IHRlc3RpbmdcIiwgXCJpbmZvXCIpO1xuICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICBwYXJhbXMudGl0bGUgPSBjdXN0b21pemF0aW9ucztcbiAgICAgIHBhcmFtcy50ZXh0ICA9IGFyZ3VtZW50c1sxXSB8fCAnJztcbiAgICAgIHBhcmFtcy50eXBlICA9IGFyZ3VtZW50c1syXSB8fCAnJztcbiAgICAgIGJyZWFrO1xuXG4gICAgLy8gRXg6IHN3YWwoeyB0aXRsZTpcIkhlbGxvXCIsIHRleHQ6IFwiSnVzdCB0ZXN0aW5nXCIsIHR5cGU6IFwiaW5mb1wiIH0pO1xuICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICBpZiAoY3VzdG9taXphdGlvbnMudGl0bGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsb2dTdHIoJ01pc3NpbmcgXCJ0aXRsZVwiIGFyZ3VtZW50IScpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHBhcmFtcy50aXRsZSA9IGN1c3RvbWl6YXRpb25zLnRpdGxlO1xuXG4gICAgICBmb3IgKGxldCBjdXN0b21OYW1lIGluIGRlZmF1bHRQYXJhbXMpIHtcbiAgICAgICAgcGFyYW1zW2N1c3RvbU5hbWVdID0gYXJndW1lbnRPckRlZmF1bHQoY3VzdG9tTmFtZSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFNob3cgXCJDb25maXJtXCIgaW5zdGVhZCBvZiBcIk9LXCIgaWYgY2FuY2VsIGJ1dHRvbiBpcyB2aXNpYmxlXG4gICAgICBwYXJhbXMuY29uZmlybUJ1dHRvblRleHQgPSBwYXJhbXMuc2hvd0NhbmNlbEJ1dHRvbiA/ICdDb25maXJtJyA6IGRlZmF1bHRQYXJhbXMuY29uZmlybUJ1dHRvblRleHQ7XG4gICAgICBwYXJhbXMuY29uZmlybUJ1dHRvblRleHQgPSBhcmd1bWVudE9yRGVmYXVsdCgnY29uZmlybUJ1dHRvblRleHQnKTtcblxuICAgICAgLy8gQ2FsbGJhY2sgZnVuY3Rpb24gd2hlbiBjbGlja2luZyBvbiBcIk9LXCIvXCJDYW5jZWxcIlxuICAgICAgcGFyYW1zLmRvbmVGdW5jdGlvbiA9IGFyZ3VtZW50c1sxXSB8fCBudWxsO1xuXG4gICAgICBicmVhaztcblxuICAgIGRlZmF1bHQ6XG4gICAgICBsb2dTdHIoJ1VuZXhwZWN0ZWQgdHlwZSBvZiBhcmd1bWVudCEgRXhwZWN0ZWQgXCJzdHJpbmdcIiBvciBcIm9iamVjdFwiLCBnb3QgJyArIHR5cGVvZiBjdXN0b21pemF0aW9ucyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG5cbiAgfVxuXG4gIHNldFBhcmFtZXRlcnMocGFyYW1zKTtcbiAgZml4VmVydGljYWxQb3NpdGlvbigpO1xuICBvcGVuTW9kYWwoYXJndW1lbnRzWzFdKTtcblxuICAvLyBNb2RhbCBpbnRlcmFjdGlvbnNcbiAgdmFyIG1vZGFsID0gZ2V0TW9kYWwoKTtcblxuXG4gIC8qXG4gICAqIE1ha2Ugc3VyZSBhbGwgbW9kYWwgYnV0dG9ucyByZXNwb25kIHRvIGFsbCBldmVudHNcbiAgICovXG4gIHZhciAkYnV0dG9ucyA9IG1vZGFsLnF1ZXJ5U2VsZWN0b3JBbGwoJ2J1dHRvbicpO1xuICB2YXIgYnV0dG9uRXZlbnRzID0gWydvbmNsaWNrJywgJ29ubW91c2VvdmVyJywgJ29ubW91c2VvdXQnLCAnb25tb3VzZWRvd24nLCAnb25tb3VzZXVwJywgJ29uZm9jdXMnXTtcbiAgdmFyIG9uQnV0dG9uRXZlbnQgPSAoZSkgPT4gaGFuZGxlQnV0dG9uKGUsIHBhcmFtcywgbW9kYWwpO1xuXG4gIGZvciAobGV0IGJ0bkluZGV4ID0gMDsgYnRuSW5kZXggPCAkYnV0dG9ucy5sZW5ndGg7IGJ0bkluZGV4KyspIHtcbiAgICBmb3IgKGxldCBldnRJbmRleCA9IDA7IGV2dEluZGV4IDwgYnV0dG9uRXZlbnRzLmxlbmd0aDsgZXZ0SW5kZXgrKykge1xuICAgICAgbGV0IGJ0bkV2dCA9IGJ1dHRvbkV2ZW50c1tldnRJbmRleF07XG4gICAgICAkYnV0dG9uc1tidG5JbmRleF1bYnRuRXZ0XSA9IG9uQnV0dG9uRXZlbnQ7XG4gICAgfVxuICB9XG5cbiAgLy8gQ2xpY2tpbmcgb3V0c2lkZSB0aGUgbW9kYWwgZGlzbWlzc2VzIGl0IChpZiBhbGxvd2VkIGJ5IHVzZXIpXG4gIGdldE92ZXJsYXkoKS5vbmNsaWNrID0gb25CdXR0b25FdmVudDtcblxuICBwcmV2aW91c1dpbmRvd0tleURvd24gPSB3aW5kb3cub25rZXlkb3duO1xuXG4gIHZhciBvbktleUV2ZW50ID0gKGUpID0+IGhhbmRsZUtleURvd24oZSwgcGFyYW1zLCBtb2RhbCk7XG4gIHdpbmRvdy5vbmtleWRvd24gPSBvbktleUV2ZW50O1xuXG4gIHdpbmRvdy5vbmZvY3VzID0gZnVuY3Rpb24gKCkge1xuICAgIC8vIFdoZW4gdGhlIHVzZXIgaGFzIGZvY3VzZWQgYXdheSBhbmQgZm9jdXNlZCBiYWNrIGZyb20gdGhlIHdob2xlIHdpbmRvdy5cbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFB1dCBpbiBhIHRpbWVvdXQgdG8ganVtcCBvdXQgb2YgdGhlIGV2ZW50IHNlcXVlbmNlLlxuICAgICAgLy8gQ2FsbGluZyBmb2N1cygpIGluIHRoZSBldmVudCBzZXF1ZW5jZSBjb25mdXNlcyB0aGluZ3MuXG4gICAgICBpZiAobGFzdEZvY3VzZWRCdXR0b24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsYXN0Rm9jdXNlZEJ1dHRvbi5mb2N1cygpO1xuICAgICAgICBsYXN0Rm9jdXNlZEJ1dHRvbiA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9LCAwKTtcbiAgfTtcbiAgXG4gIC8vIFNob3cgYWxlcnQgd2l0aCBlbmFibGVkIGJ1dHRvbnMgYWx3YXlzXG4gIHN3YWwuZW5hYmxlQnV0dG9ucygpO1xufTtcblxuXG5cbi8qXG4gKiBTZXQgZGVmYXVsdCBwYXJhbXMgZm9yIGVhY2ggcG9wdXBcbiAqIEBwYXJhbSB7T2JqZWN0fSB1c2VyUGFyYW1zXG4gKi9cbnN3ZWV0QWxlcnQuc2V0RGVmYXVsdHMgPSBzd2FsLnNldERlZmF1bHRzID0gZnVuY3Rpb24odXNlclBhcmFtcykge1xuICBpZiAoIXVzZXJQYXJhbXMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3VzZXJQYXJhbXMgaXMgcmVxdWlyZWQnKTtcbiAgfVxuICBpZiAodHlwZW9mIHVzZXJQYXJhbXMgIT09ICdvYmplY3QnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd1c2VyUGFyYW1zIGhhcyB0byBiZSBhIG9iamVjdCcpO1xuICB9XG5cbiAgZXh0ZW5kKGRlZmF1bHRQYXJhbXMsIHVzZXJQYXJhbXMpO1xufTtcblxuXG4vKlxuICogQW5pbWF0aW9uIHdoZW4gY2xvc2luZyBtb2RhbFxuICovXG5zd2VldEFsZXJ0LmNsb3NlID0gc3dhbC5jbG9zZSA9IGZ1bmN0aW9uKCkge1xuICB2YXIgbW9kYWwgPSBnZXRNb2RhbCgpO1xuXG4gIGZhZGVPdXQoZ2V0T3ZlcmxheSgpLCA1KTtcbiAgZmFkZU91dChtb2RhbCwgNSk7XG4gIHJlbW92ZUNsYXNzKG1vZGFsLCAnc2hvd1N3ZWV0QWxlcnQnKTtcbiAgYWRkQ2xhc3MobW9kYWwsICdoaWRlU3dlZXRBbGVydCcpO1xuICByZW1vdmVDbGFzcyhtb2RhbCwgJ3Zpc2libGUnKTtcblxuICAvKlxuICAgKiBSZXNldCBpY29uIGFuaW1hdGlvbnNcbiAgICovXG4gIHZhciAkc3VjY2Vzc0ljb24gPSBtb2RhbC5xdWVyeVNlbGVjdG9yKCcuc2EtaWNvbi5zYS1zdWNjZXNzJyk7XG4gIHJlbW92ZUNsYXNzKCRzdWNjZXNzSWNvbiwgJ2FuaW1hdGUnKTtcbiAgcmVtb3ZlQ2xhc3MoJHN1Y2Nlc3NJY29uLnF1ZXJ5U2VsZWN0b3IoJy5zYS10aXAnKSwgJ2FuaW1hdGVTdWNjZXNzVGlwJyk7XG4gIHJlbW92ZUNsYXNzKCRzdWNjZXNzSWNvbi5xdWVyeVNlbGVjdG9yKCcuc2EtbG9uZycpLCAnYW5pbWF0ZVN1Y2Nlc3NMb25nJyk7XG5cbiAgdmFyICRlcnJvckljb24gPSBtb2RhbC5xdWVyeVNlbGVjdG9yKCcuc2EtaWNvbi5zYS1lcnJvcicpO1xuICByZW1vdmVDbGFzcygkZXJyb3JJY29uLCAnYW5pbWF0ZUVycm9ySWNvbicpO1xuICByZW1vdmVDbGFzcygkZXJyb3JJY29uLnF1ZXJ5U2VsZWN0b3IoJy5zYS14LW1hcmsnKSwgJ2FuaW1hdGVYTWFyaycpO1xuXG4gIHZhciAkd2FybmluZ0ljb24gPSBtb2RhbC5xdWVyeVNlbGVjdG9yKCcuc2EtaWNvbi5zYS13YXJuaW5nJyk7XG4gIHJlbW92ZUNsYXNzKCR3YXJuaW5nSWNvbiwgJ3B1bHNlV2FybmluZycpO1xuICByZW1vdmVDbGFzcygkd2FybmluZ0ljb24ucXVlcnlTZWxlY3RvcignLnNhLWJvZHknKSwgJ3B1bHNlV2FybmluZ0lucycpO1xuICByZW1vdmVDbGFzcygkd2FybmluZ0ljb24ucXVlcnlTZWxlY3RvcignLnNhLWRvdCcpLCAncHVsc2VXYXJuaW5nSW5zJyk7XG5cbiAgLy8gUmVzZXQgY3VzdG9tIGNsYXNzIChkZWxheSBzbyB0aGF0IFVJIGNoYW5nZXMgYXJlbid0IHZpc2libGUpXG4gIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgdmFyIGN1c3RvbUNsYXNzID0gbW9kYWwuZ2V0QXR0cmlidXRlKCdkYXRhLWN1c3RvbS1jbGFzcycpO1xuICAgIHJlbW92ZUNsYXNzKG1vZGFsLCBjdXN0b21DbGFzcyk7XG4gIH0sIDMwMCk7XG5cbiAgLy8gTWFrZSBwYWdlIHNjcm9sbGFibGUgYWdhaW5cbiAgcmVtb3ZlQ2xhc3MoZG9jdW1lbnQuYm9keSwgJ3N0b3Atc2Nyb2xsaW5nJyk7XG5cbiAgLy8gUmVzZXQgdGhlIHBhZ2UgdG8gaXRzIHByZXZpb3VzIHN0YXRlXG4gIHdpbmRvdy5vbmtleWRvd24gPSBwcmV2aW91c1dpbmRvd0tleURvd247XG4gIGlmICh3aW5kb3cucHJldmlvdXNBY3RpdmVFbGVtZW50KSB7XG4gICAgd2luZG93LnByZXZpb3VzQWN0aXZlRWxlbWVudC5mb2N1cygpO1xuICB9XG4gIGxhc3RGb2N1c2VkQnV0dG9uID0gdW5kZWZpbmVkO1xuICBjbGVhclRpbWVvdXQobW9kYWwudGltZW91dCk7XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG5cbi8qXG4gKiBWYWxpZGF0aW9uIG9mIHRoZSBpbnB1dCBmaWVsZCBpcyBkb25lIGJ5IHVzZXJcbiAqIElmIHNvbWV0aGluZyBpcyB3cm9uZyA9PiBjYWxsIHNob3dJbnB1dEVycm9yIHdpdGggZXJyb3JNZXNzYWdlXG4gKi9cbnN3ZWV0QWxlcnQuc2hvd0lucHV0RXJyb3IgPSBzd2FsLnNob3dJbnB1dEVycm9yID0gZnVuY3Rpb24oZXJyb3JNZXNzYWdlKSB7XG4gIHZhciBtb2RhbCA9IGdldE1vZGFsKCk7XG5cbiAgdmFyICRlcnJvckljb24gPSBtb2RhbC5xdWVyeVNlbGVjdG9yKCcuc2EtaW5wdXQtZXJyb3InKTtcbiAgYWRkQ2xhc3MoJGVycm9ySWNvbiwgJ3Nob3cnKTtcblxuICB2YXIgJGVycm9yQ29udGFpbmVyID0gbW9kYWwucXVlcnlTZWxlY3RvcignLnNhLWVycm9yLWNvbnRhaW5lcicpO1xuICBhZGRDbGFzcygkZXJyb3JDb250YWluZXIsICdzaG93Jyk7XG5cbiAgJGVycm9yQ29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ3AnKS5pbm5lckhUTUwgPSBlcnJvck1lc3NhZ2U7XG5cbiAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICBzd2VldEFsZXJ0LmVuYWJsZUJ1dHRvbnMoKTtcbiAgfSwgMSk7XG5cbiAgbW9kYWwucXVlcnlTZWxlY3RvcignaW5wdXQnKS5mb2N1cygpO1xufTtcblxuXG4vKlxuICogUmVzZXQgaW5wdXQgZXJyb3IgRE9NIGVsZW1lbnRzXG4gKi9cbnN3ZWV0QWxlcnQucmVzZXRJbnB1dEVycm9yID0gc3dhbC5yZXNldElucHV0RXJyb3IgPSBmdW5jdGlvbihldmVudCkge1xuICAvLyBJZiBwcmVzcyBlbnRlciA9PiBpZ25vcmVcbiAgaWYgKGV2ZW50ICYmIGV2ZW50LmtleUNvZGUgPT09IDEzKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyICRtb2RhbCA9IGdldE1vZGFsKCk7XG5cbiAgdmFyICRlcnJvckljb24gPSAkbW9kYWwucXVlcnlTZWxlY3RvcignLnNhLWlucHV0LWVycm9yJyk7XG4gIHJlbW92ZUNsYXNzKCRlcnJvckljb24sICdzaG93Jyk7XG5cbiAgdmFyICRlcnJvckNvbnRhaW5lciA9ICRtb2RhbC5xdWVyeVNlbGVjdG9yKCcuc2EtZXJyb3ItY29udGFpbmVyJyk7XG4gIHJlbW92ZUNsYXNzKCRlcnJvckNvbnRhaW5lciwgJ3Nob3cnKTtcbn07XG5cbi8qXG4gKiBEaXNhYmxlIGNvbmZpcm0gYW5kIGNhbmNlbCBidXR0b25zXG4gKi9cbnN3ZWV0QWxlcnQuZGlzYWJsZUJ1dHRvbnMgPSBzd2FsLmRpc2FibGVCdXR0b25zID0gZnVuY3Rpb24oZXZlbnQpIHtcbiAgdmFyIG1vZGFsID0gZ2V0TW9kYWwoKTtcbiAgdmFyICRjb25maXJtQnV0dG9uID0gbW9kYWwucXVlcnlTZWxlY3RvcignYnV0dG9uLmNvbmZpcm0nKTtcbiAgdmFyICRjYW5jZWxCdXR0b24gPSBtb2RhbC5xdWVyeVNlbGVjdG9yKCdidXR0b24uY2FuY2VsJyk7XG4gICRjb25maXJtQnV0dG9uLmRpc2FibGVkID0gdHJ1ZTtcbiAgJGNhbmNlbEJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7XG59O1xuXG4vKlxuICogRW5hYmxlIGNvbmZpcm0gYW5kIGNhbmNlbCBidXR0b25zXG4gKi9cbnN3ZWV0QWxlcnQuZW5hYmxlQnV0dG9ucyA9IHN3YWwuZW5hYmxlQnV0dG9ucyA9IGZ1bmN0aW9uKGV2ZW50KSB7XG4gIHZhciBtb2RhbCA9IGdldE1vZGFsKCk7XG4gIHZhciAkY29uZmlybUJ1dHRvbiA9IG1vZGFsLnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbi5jb25maXJtJyk7XG4gIHZhciAkY2FuY2VsQnV0dG9uID0gbW9kYWwucXVlcnlTZWxlY3RvcignYnV0dG9uLmNhbmNlbCcpO1xuICAkY29uZmlybUJ1dHRvbi5kaXNhYmxlZCA9IGZhbHNlO1xuICAkY2FuY2VsQnV0dG9uLmRpc2FibGVkID0gZmFsc2U7XG59O1xuXG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgLy8gVGhlICdoYW5kbGUtY2xpY2snIG1vZHVsZSByZXF1aXJlc1xuICAvLyB0aGF0ICdzd2VldEFsZXJ0JyB3YXMgc2V0IGFzIGdsb2JhbC5cbiAgd2luZG93LnN3ZWV0QWxlcnQgPSB3aW5kb3cuc3dhbCA9IHN3ZWV0QWxlcnQ7XG59IGVsc2Uge1xuICBsb2dTdHIoJ1N3ZWV0QWxlcnQgaXMgYSBmcm9udGVuZCBtb2R1bGUhJyk7XG59XG4iLCJ2YXIgZGVmYXVsdFBhcmFtcyA9IHtcbiAgdGl0bGU6ICcnLFxuICB0ZXh0OiAnJyxcbiAgdHlwZTogbnVsbCxcbiAgYWxsb3dPdXRzaWRlQ2xpY2s6IGZhbHNlLFxuICBzaG93Q29uZmlybUJ1dHRvbjogdHJ1ZSxcbiAgc2hvd0NhbmNlbEJ1dHRvbjogZmFsc2UsXG4gIGNsb3NlT25Db25maXJtOiB0cnVlLFxuICBjbG9zZU9uQ2FuY2VsOiB0cnVlLFxuICBjb25maXJtQnV0dG9uVGV4dDogJ09LJyxcbiAgY29uZmlybUJ1dHRvbkNvbG9yOiAnIzhDRDRGNScsXG4gIGNhbmNlbEJ1dHRvblRleHQ6ICdDYW5jZWwnLFxuICBpbWFnZVVybDogbnVsbCxcbiAgaW1hZ2VTaXplOiBudWxsLFxuICB0aW1lcjogbnVsbCxcbiAgY3VzdG9tQ2xhc3M6ICcnLFxuICBodG1sOiBmYWxzZSxcbiAgYW5pbWF0aW9uOiB0cnVlLFxuICBhbGxvd0VzY2FwZUtleTogdHJ1ZSxcbiAgaW5wdXRUeXBlOiAndGV4dCcsXG4gIGlucHV0UGxhY2Vob2xkZXI6ICcnLFxuICBpbnB1dFZhbHVlOiAnJyxcbiAgc2hvd0xvYWRlck9uQ29uZmlybTogZmFsc2Vcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmF1bHRQYXJhbXM7XG4iLCJpbXBvcnQgeyBjb2xvckx1bWluYW5jZSB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgZ2V0TW9kYWwgfSBmcm9tICcuL2hhbmRsZS1zd2FsLWRvbSc7XG5pbXBvcnQgeyBoYXNDbGFzcywgaXNEZXNjZW5kYW50IH0gZnJvbSAnLi9oYW5kbGUtZG9tJztcblxuXG4vKlxuICogVXNlciBjbGlja2VkIG9uIFwiQ29uZmlybVwiL1wiT0tcIiBvciBcIkNhbmNlbFwiXG4gKi9cbnZhciBoYW5kbGVCdXR0b24gPSBmdW5jdGlvbihldmVudCwgcGFyYW1zLCBtb2RhbCkge1xuICB2YXIgZSA9IGV2ZW50IHx8IHdpbmRvdy5ldmVudDtcbiAgdmFyIHRhcmdldCA9IGUudGFyZ2V0IHx8IGUuc3JjRWxlbWVudDtcblxuICB2YXIgdGFyZ2V0ZWRDb25maXJtID0gdGFyZ2V0LmNsYXNzTmFtZS5pbmRleE9mKCdjb25maXJtJykgIT09IC0xO1xuICB2YXIgdGFyZ2V0ZWRPdmVybGF5ID0gdGFyZ2V0LmNsYXNzTmFtZS5pbmRleE9mKCdzd2VldC1vdmVybGF5JykgIT09IC0xO1xuICB2YXIgbW9kYWxJc1Zpc2libGUgID0gaGFzQ2xhc3MobW9kYWwsICd2aXNpYmxlJyk7XG4gIHZhciBkb25lRnVuY3Rpb25FeGlzdHMgPSAocGFyYW1zLmRvbmVGdW5jdGlvbiAmJiBtb2RhbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtaGFzLWRvbmUtZnVuY3Rpb24nKSA9PT0gJ3RydWUnKTtcblxuICAvLyBTaW5jZSB0aGUgdXNlciBjYW4gY2hhbmdlIHRoZSBiYWNrZ3JvdW5kLWNvbG9yIG9mIHRoZSBjb25maXJtIGJ1dHRvbiBwcm9ncmFtbWF0aWNhbGx5LFxuICAvLyB3ZSBtdXN0IGNhbGN1bGF0ZSB3aGF0IHRoZSBjb2xvciBzaG91bGQgYmUgb24gaG92ZXIvYWN0aXZlXG4gIHZhciBub3JtYWxDb2xvciwgaG92ZXJDb2xvciwgYWN0aXZlQ29sb3I7XG4gIGlmICh0YXJnZXRlZENvbmZpcm0gJiYgcGFyYW1zLmNvbmZpcm1CdXR0b25Db2xvcikge1xuICAgIG5vcm1hbENvbG9yICA9IHBhcmFtcy5jb25maXJtQnV0dG9uQ29sb3I7XG4gICAgaG92ZXJDb2xvciAgID0gY29sb3JMdW1pbmFuY2Uobm9ybWFsQ29sb3IsIC0wLjA0KTtcbiAgICBhY3RpdmVDb2xvciAgPSBjb2xvckx1bWluYW5jZShub3JtYWxDb2xvciwgLTAuMTQpO1xuICB9XG5cbiAgZnVuY3Rpb24gc2hvdWxkU2V0Q29uZmlybUJ1dHRvbkNvbG9yKGNvbG9yKSB7XG4gICAgaWYgKHRhcmdldGVkQ29uZmlybSAmJiBwYXJhbXMuY29uZmlybUJ1dHRvbkNvbG9yKSB7XG4gICAgICB0YXJnZXQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gY29sb3I7XG4gICAgfVxuICB9XG5cbiAgc3dpdGNoIChlLnR5cGUpIHtcbiAgICBjYXNlICdtb3VzZW92ZXInOlxuICAgICAgc2hvdWxkU2V0Q29uZmlybUJ1dHRvbkNvbG9yKGhvdmVyQ29sb3IpO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdtb3VzZW91dCc6XG4gICAgICBzaG91bGRTZXRDb25maXJtQnV0dG9uQ29sb3Iobm9ybWFsQ29sb3IpO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdtb3VzZWRvd24nOlxuICAgICAgc2hvdWxkU2V0Q29uZmlybUJ1dHRvbkNvbG9yKGFjdGl2ZUNvbG9yKTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnbW91c2V1cCc6XG4gICAgICBzaG91bGRTZXRDb25maXJtQnV0dG9uQ29sb3IoaG92ZXJDb2xvcik7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ2ZvY3VzJzpcbiAgICAgIGxldCAkY29uZmlybUJ1dHRvbiA9IG1vZGFsLnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbi5jb25maXJtJyk7XG4gICAgICBsZXQgJGNhbmNlbEJ1dHRvbiAgPSBtb2RhbC5xdWVyeVNlbGVjdG9yKCdidXR0b24uY2FuY2VsJyk7XG5cbiAgICAgIGlmICh0YXJnZXRlZENvbmZpcm0pIHtcbiAgICAgICAgJGNhbmNlbEJ1dHRvbi5zdHlsZS5ib3hTaGFkb3cgPSAnbm9uZSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAkY29uZmlybUJ1dHRvbi5zdHlsZS5ib3hTaGFkb3cgPSAnbm9uZSc7XG4gICAgICB9XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ2NsaWNrJzpcbiAgICAgIGxldCBjbGlja2VkT25Nb2RhbCA9IChtb2RhbCA9PT0gdGFyZ2V0KTtcbiAgICAgIGxldCBjbGlja2VkT25Nb2RhbENoaWxkID0gaXNEZXNjZW5kYW50KG1vZGFsLCB0YXJnZXQpO1xuXG4gICAgICAvLyBJZ25vcmUgY2xpY2sgb3V0c2lkZSBpZiBhbGxvd091dHNpZGVDbGljayBpcyBmYWxzZVxuICAgICAgaWYgKCFjbGlja2VkT25Nb2RhbCAmJiAhY2xpY2tlZE9uTW9kYWxDaGlsZCAmJiBtb2RhbElzVmlzaWJsZSAmJiAhcGFyYW1zLmFsbG93T3V0c2lkZUNsaWNrKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAodGFyZ2V0ZWRDb25maXJtICYmIGRvbmVGdW5jdGlvbkV4aXN0cyAmJiBtb2RhbElzVmlzaWJsZSkge1xuICAgICAgICBoYW5kbGVDb25maXJtKG1vZGFsLCBwYXJhbXMpO1xuICAgICAgfSBlbHNlIGlmIChkb25lRnVuY3Rpb25FeGlzdHMgJiYgbW9kYWxJc1Zpc2libGUgfHwgdGFyZ2V0ZWRPdmVybGF5KSB7XG4gICAgICAgIGhhbmRsZUNhbmNlbChtb2RhbCwgcGFyYW1zKTtcbiAgICAgIH0gZWxzZSBpZiAoaXNEZXNjZW5kYW50KG1vZGFsLCB0YXJnZXQpICYmIHRhcmdldC50YWdOYW1lID09PSAnQlVUVE9OJykge1xuICAgICAgICBzd2VldEFsZXJ0LmNsb3NlKCk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgfVxufTtcblxuLypcbiAqICBVc2VyIGNsaWNrZWQgb24gXCJDb25maXJtXCIvXCJPS1wiXG4gKi9cbnZhciBoYW5kbGVDb25maXJtID0gZnVuY3Rpb24obW9kYWwsIHBhcmFtcykge1xuICB2YXIgY2FsbGJhY2tWYWx1ZSA9IHRydWU7XG5cbiAgaWYgKGhhc0NsYXNzKG1vZGFsLCAnc2hvdy1pbnB1dCcpKSB7XG4gICAgY2FsbGJhY2tWYWx1ZSA9IG1vZGFsLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykudmFsdWU7XG5cbiAgICBpZiAoIWNhbGxiYWNrVmFsdWUpIHtcbiAgICAgIGNhbGxiYWNrVmFsdWUgPSAnJztcbiAgICB9XG4gIH1cblxuICBwYXJhbXMuZG9uZUZ1bmN0aW9uKGNhbGxiYWNrVmFsdWUpO1xuXG4gIGlmIChwYXJhbXMuY2xvc2VPbkNvbmZpcm0pIHtcbiAgICBzd2VldEFsZXJ0LmNsb3NlKCk7XG4gIH1cbiAgLy8gRGlzYWJsZSBjYW5jZWwgYW5kIGNvbmZpcm0gYnV0dG9uIGlmIHRoZSBwYXJhbWV0ZXIgaXMgdHJ1ZVxuICBpZiAocGFyYW1zLnNob3dMb2FkZXJPbkNvbmZpcm0pIHtcbiAgICBzd2VldEFsZXJ0LmRpc2FibGVCdXR0b25zKCk7XG4gIH1cbn07XG5cbi8qXG4gKiAgVXNlciBjbGlja2VkIG9uIFwiQ2FuY2VsXCJcbiAqL1xudmFyIGhhbmRsZUNhbmNlbCA9IGZ1bmN0aW9uKG1vZGFsLCBwYXJhbXMpIHtcbiAgLy8gQ2hlY2sgaWYgY2FsbGJhY2sgZnVuY3Rpb24gZXhwZWN0cyBhIHBhcmFtZXRlciAodG8gdHJhY2sgY2FuY2VsIGFjdGlvbnMpXG4gIHZhciBmdW5jdGlvbkFzU3RyID0gU3RyaW5nKHBhcmFtcy5kb25lRnVuY3Rpb24pLnJlcGxhY2UoL1xccy9nLCAnJyk7XG4gIHZhciBmdW5jdGlvbkhhbmRsZXNDYW5jZWwgPSBmdW5jdGlvbkFzU3RyLnN1YnN0cmluZygwLCA5KSA9PT0gJ2Z1bmN0aW9uKCcgJiYgZnVuY3Rpb25Bc1N0ci5zdWJzdHJpbmcoOSwgMTApICE9PSAnKSc7XG5cbiAgaWYgKGZ1bmN0aW9uSGFuZGxlc0NhbmNlbCkge1xuICAgIHBhcmFtcy5kb25lRnVuY3Rpb24oZmFsc2UpO1xuICB9XG5cbiAgaWYgKHBhcmFtcy5jbG9zZU9uQ2FuY2VsKSB7XG4gICAgc3dlZXRBbGVydC5jbG9zZSgpO1xuICB9XG59O1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgaGFuZGxlQnV0dG9uLFxuICBoYW5kbGVDb25maXJtLFxuICBoYW5kbGVDYW5jZWxcbn07XG4iLCJ2YXIgaGFzQ2xhc3MgPSBmdW5jdGlvbihlbGVtLCBjbGFzc05hbWUpIHtcbiAgcmV0dXJuIG5ldyBSZWdFeHAoJyAnICsgY2xhc3NOYW1lICsgJyAnKS50ZXN0KCcgJyArIGVsZW0uY2xhc3NOYW1lICsgJyAnKTtcbn07XG5cbnZhciBhZGRDbGFzcyA9IGZ1bmN0aW9uKGVsZW0sIGNsYXNzTmFtZSkge1xuICBpZiAoIWhhc0NsYXNzKGVsZW0sIGNsYXNzTmFtZSkpIHtcbiAgICBlbGVtLmNsYXNzTmFtZSArPSAnICcgKyBjbGFzc05hbWU7XG4gIH1cbn07XG5cbnZhciByZW1vdmVDbGFzcyA9IGZ1bmN0aW9uKGVsZW0sIGNsYXNzTmFtZSkge1xuICB2YXIgbmV3Q2xhc3MgPSAnICcgKyBlbGVtLmNsYXNzTmFtZS5yZXBsYWNlKC9bXFx0XFxyXFxuXS9nLCAnICcpICsgJyAnO1xuICBpZiAoaGFzQ2xhc3MoZWxlbSwgY2xhc3NOYW1lKSkge1xuICAgIHdoaWxlIChuZXdDbGFzcy5pbmRleE9mKCcgJyArIGNsYXNzTmFtZSArICcgJykgPj0gMCkge1xuICAgICAgbmV3Q2xhc3MgPSBuZXdDbGFzcy5yZXBsYWNlKCcgJyArIGNsYXNzTmFtZSArICcgJywgJyAnKTtcbiAgICB9XG4gICAgZWxlbS5jbGFzc05hbWUgPSBuZXdDbGFzcy5yZXBsYWNlKC9eXFxzK3xcXHMrJC9nLCAnJyk7XG4gIH1cbn07XG5cbnZhciBlc2NhcGVIdG1sID0gZnVuY3Rpb24oc3RyKSB7XG4gIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHN0cikpO1xuICByZXR1cm4gZGl2LmlubmVySFRNTDtcbn07XG5cbnZhciBfc2hvdyA9IGZ1bmN0aW9uKGVsZW0pIHtcbiAgZWxlbS5zdHlsZS5vcGFjaXR5ID0gJyc7XG4gIGVsZW0uc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG59O1xuXG52YXIgc2hvdyA9IGZ1bmN0aW9uKGVsZW1zKSB7XG4gIGlmIChlbGVtcyAmJiAhZWxlbXMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIF9zaG93KGVsZW1zKTtcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1zLmxlbmd0aDsgKytpKSB7XG4gICAgX3Nob3coZWxlbXNbaV0pO1xuICB9XG59O1xuXG52YXIgX2hpZGUgPSBmdW5jdGlvbihlbGVtKSB7XG4gIGVsZW0uc3R5bGUub3BhY2l0eSA9ICcnO1xuICBlbGVtLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG59O1xuXG52YXIgaGlkZSA9IGZ1bmN0aW9uKGVsZW1zKSB7XG4gIGlmIChlbGVtcyAmJiAhZWxlbXMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIF9oaWRlKGVsZW1zKTtcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1zLmxlbmd0aDsgKytpKSB7XG4gICAgX2hpZGUoZWxlbXNbaV0pO1xuICB9XG59O1xuXG52YXIgaXNEZXNjZW5kYW50ID0gZnVuY3Rpb24ocGFyZW50LCBjaGlsZCkge1xuICB2YXIgbm9kZSA9IGNoaWxkLnBhcmVudE5vZGU7XG4gIHdoaWxlIChub2RlICE9PSBudWxsKSB7XG4gICAgaWYgKG5vZGUgPT09IHBhcmVudCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIG5vZGUgPSBub2RlLnBhcmVudE5vZGU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxudmFyIGdldFRvcE1hcmdpbiA9IGZ1bmN0aW9uKGVsZW0pIHtcbiAgZWxlbS5zdHlsZS5sZWZ0ID0gJy05OTk5cHgnO1xuICBlbGVtLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuXG4gIHZhciBoZWlnaHQgPSBlbGVtLmNsaWVudEhlaWdodCxcbiAgICAgIHBhZGRpbmc7XG4gIGlmICh0eXBlb2YgZ2V0Q29tcHV0ZWRTdHlsZSAhPT0gXCJ1bmRlZmluZWRcIikgeyAvLyBJRSA4XG4gICAgcGFkZGluZyA9IHBhcnNlSW50KGdldENvbXB1dGVkU3R5bGUoZWxlbSkuZ2V0UHJvcGVydHlWYWx1ZSgncGFkZGluZy10b3AnKSwgMTApO1xuICB9IGVsc2Uge1xuICAgIHBhZGRpbmcgPSBwYXJzZUludChlbGVtLmN1cnJlbnRTdHlsZS5wYWRkaW5nKTtcbiAgfVxuXG4gIGVsZW0uc3R5bGUubGVmdCA9ICcnO1xuICBlbGVtLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIHJldHVybiAoJy0nICsgcGFyc2VJbnQoKGhlaWdodCArIHBhZGRpbmcpIC8gMikgKyAncHgnKTtcbn07XG5cbnZhciBmYWRlSW4gPSBmdW5jdGlvbihlbGVtLCBpbnRlcnZhbCkge1xuICBpZiAoK2VsZW0uc3R5bGUub3BhY2l0eSA8IDEpIHtcbiAgICBpbnRlcnZhbCA9IGludGVydmFsIHx8IDE2O1xuICAgIGVsZW0uc3R5bGUub3BhY2l0eSA9IDA7XG4gICAgZWxlbS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcbiAgICB2YXIgbGFzdCA9ICtuZXcgRGF0ZSgpO1xuICAgIHZhciB0aWNrID0gZnVuY3Rpb24oKSB7XG4gICAgICBlbGVtLnN0eWxlLm9wYWNpdHkgPSArZWxlbS5zdHlsZS5vcGFjaXR5ICsgKG5ldyBEYXRlKCkgLSBsYXN0KSAvIDEwMDtcbiAgICAgIGxhc3QgPSArbmV3IERhdGUoKTtcblxuICAgICAgaWYgKCtlbGVtLnN0eWxlLm9wYWNpdHkgPCAxKSB7XG4gICAgICAgIHNldFRpbWVvdXQodGljaywgaW50ZXJ2YWwpO1xuICAgICAgfVxuICAgIH07XG4gICAgdGljaygpO1xuICB9XG4gIGVsZW0uc3R5bGUuZGlzcGxheSA9ICdibG9jayc7IC8vZmFsbGJhY2sgSUU4XG59O1xuXG52YXIgZmFkZU91dCA9IGZ1bmN0aW9uKGVsZW0sIGludGVydmFsKSB7XG4gIGludGVydmFsID0gaW50ZXJ2YWwgfHwgMTY7XG4gIGVsZW0uc3R5bGUub3BhY2l0eSA9IDE7XG4gIHZhciBsYXN0ID0gK25ldyBEYXRlKCk7XG4gIHZhciB0aWNrID0gZnVuY3Rpb24oKSB7XG4gICAgZWxlbS5zdHlsZS5vcGFjaXR5ID0gK2VsZW0uc3R5bGUub3BhY2l0eSAtIChuZXcgRGF0ZSgpIC0gbGFzdCkgLyAxMDA7XG4gICAgbGFzdCA9ICtuZXcgRGF0ZSgpO1xuXG4gICAgaWYgKCtlbGVtLnN0eWxlLm9wYWNpdHkgPiAwKSB7XG4gICAgICBzZXRUaW1lb3V0KHRpY2ssIGludGVydmFsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWxlbS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgIH1cbiAgfTtcbiAgdGljaygpO1xufTtcblxudmFyIGZpcmVDbGljayA9IGZ1bmN0aW9uKG5vZGUpIHtcbiAgLy8gVGFrZW4gZnJvbSBodHRwOi8vd3d3Lm5vbm9idHJ1c2l2ZS5jb20vMjAxMS8xMS8yOS9wcm9ncmFtYXRpY2FsbHktZmlyZS1jcm9zc2Jyb3dzZXItY2xpY2stZXZlbnQtd2l0aC1qYXZhc2NyaXB0L1xuICAvLyBUaGVuIGZpeGVkIGZvciB0b2RheSdzIENocm9tZSBicm93c2VyLlxuICBpZiAodHlwZW9mIE1vdXNlRXZlbnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyBVcC10by1kYXRlIGFwcHJvYWNoXG4gICAgdmFyIG1ldnQgPSBuZXcgTW91c2VFdmVudCgnY2xpY2snLCB7XG4gICAgICB2aWV3OiB3aW5kb3csXG4gICAgICBidWJibGVzOiBmYWxzZSxcbiAgICAgIGNhbmNlbGFibGU6IHRydWVcbiAgICB9KTtcbiAgICBub2RlLmRpc3BhdGNoRXZlbnQobWV2dCk7XG4gIH0gZWxzZSBpZiAoIGRvY3VtZW50LmNyZWF0ZUV2ZW50ICkge1xuICAgIC8vIEZhbGxiYWNrXG4gICAgdmFyIGV2dCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdNb3VzZUV2ZW50cycpO1xuICAgIGV2dC5pbml0RXZlbnQoJ2NsaWNrJywgZmFsc2UsIGZhbHNlKTtcbiAgICBub2RlLmRpc3BhdGNoRXZlbnQoZXZ0KTtcbiAgfSBlbHNlIGlmIChkb2N1bWVudC5jcmVhdGVFdmVudE9iamVjdCkge1xuICAgIG5vZGUuZmlyZUV2ZW50KCdvbmNsaWNrJykgO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBub2RlLm9uY2xpY2sgPT09ICdmdW5jdGlvbicgKSB7XG4gICAgbm9kZS5vbmNsaWNrKCk7XG4gIH1cbn07XG5cbnZhciBzdG9wRXZlbnRQcm9wYWdhdGlvbiA9IGZ1bmN0aW9uKGUpIHtcbiAgLy8gSW4gcGFydGljdWxhciwgbWFrZSBzdXJlIHRoZSBzcGFjZSBiYXIgZG9lc24ndCBzY3JvbGwgdGhlIG1haW4gd2luZG93LlxuICBpZiAodHlwZW9mIGUuc3RvcFByb3BhZ2F0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gIH0gZWxzZSBpZiAod2luZG93LmV2ZW50ICYmIHdpbmRvdy5ldmVudC5oYXNPd25Qcm9wZXJ0eSgnY2FuY2VsQnViYmxlJykpIHtcbiAgICB3aW5kb3cuZXZlbnQuY2FuY2VsQnViYmxlID0gdHJ1ZTtcbiAgfVxufTtcblxuZXhwb3J0IHsgXG4gIGhhc0NsYXNzLCBhZGRDbGFzcywgcmVtb3ZlQ2xhc3MsIFxuICBlc2NhcGVIdG1sLCBcbiAgX3Nob3csIHNob3csIF9oaWRlLCBoaWRlLCBcbiAgaXNEZXNjZW5kYW50LCBcbiAgZ2V0VG9wTWFyZ2luLFxuICBmYWRlSW4sIGZhZGVPdXQsXG4gIGZpcmVDbGljayxcbiAgc3RvcEV2ZW50UHJvcGFnYXRpb25cbn07XG4iLCJpbXBvcnQgeyBzdG9wRXZlbnRQcm9wYWdhdGlvbiwgZmlyZUNsaWNrIH0gZnJvbSAnLi9oYW5kbGUtZG9tJztcbmltcG9ydCB7IHNldEZvY3VzU3R5bGUgfSBmcm9tICcuL2hhbmRsZS1zd2FsLWRvbSc7XG5cblxudmFyIGhhbmRsZUtleURvd24gPSBmdW5jdGlvbihldmVudCwgcGFyYW1zLCBtb2RhbCkge1xuICB2YXIgZSA9IGV2ZW50IHx8IHdpbmRvdy5ldmVudDtcbiAgdmFyIGtleUNvZGUgPSBlLmtleUNvZGUgfHwgZS53aGljaDtcblxuICB2YXIgJG9rQnV0dG9uICAgICA9IG1vZGFsLnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbi5jb25maXJtJyk7XG4gIHZhciAkY2FuY2VsQnV0dG9uID0gbW9kYWwucXVlcnlTZWxlY3RvcignYnV0dG9uLmNhbmNlbCcpO1xuICB2YXIgJG1vZGFsQnV0dG9ucyA9IG1vZGFsLnF1ZXJ5U2VsZWN0b3JBbGwoJ2J1dHRvblt0YWJpbmRleF0nKTtcblxuXG4gIGlmIChbOSwgMTMsIDMyLCAyN10uaW5kZXhPZihrZXlDb2RlKSA9PT0gLTEpIHtcbiAgICAvLyBEb24ndCBkbyB3b3JrIG9uIGtleXMgd2UgZG9uJ3QgY2FyZSBhYm91dC5cbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgJHRhcmdldEVsZW1lbnQgPSBlLnRhcmdldCB8fCBlLnNyY0VsZW1lbnQ7XG5cbiAgdmFyIGJ0bkluZGV4ID0gLTE7IC8vIEZpbmQgdGhlIGJ1dHRvbiAtIG5vdGUsIHRoaXMgaXMgYSBub2RlbGlzdCwgbm90IGFuIGFycmF5LlxuICBmb3IgKHZhciBpID0gMDsgaSA8ICRtb2RhbEJ1dHRvbnMubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoJHRhcmdldEVsZW1lbnQgPT09ICRtb2RhbEJ1dHRvbnNbaV0pIHtcbiAgICAgIGJ0bkluZGV4ID0gaTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGlmIChrZXlDb2RlID09PSA5KSB7XG4gICAgLy8gVEFCXG4gICAgaWYgKGJ0bkluZGV4ID09PSAtMSkge1xuICAgICAgLy8gTm8gYnV0dG9uIGZvY3VzZWQuIEp1bXAgdG8gdGhlIGNvbmZpcm0gYnV0dG9uLlxuICAgICAgJHRhcmdldEVsZW1lbnQgPSAkb2tCdXR0b247XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEN5Y2xlIHRvIHRoZSBuZXh0IGJ1dHRvblxuICAgICAgaWYgKGJ0bkluZGV4ID09PSAkbW9kYWxCdXR0b25zLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgJHRhcmdldEVsZW1lbnQgPSAkbW9kYWxCdXR0b25zWzBdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgJHRhcmdldEVsZW1lbnQgPSAkbW9kYWxCdXR0b25zW2J0bkluZGV4ICsgMV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgc3RvcEV2ZW50UHJvcGFnYXRpb24oZSk7XG4gICAgJHRhcmdldEVsZW1lbnQuZm9jdXMoKTtcblxuICAgIGlmIChwYXJhbXMuY29uZmlybUJ1dHRvbkNvbG9yKSB7XG4gICAgICBzZXRGb2N1c1N0eWxlKCR0YXJnZXRFbGVtZW50LCBwYXJhbXMuY29uZmlybUJ1dHRvbkNvbG9yKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKGtleUNvZGUgPT09IDEzKSB7XG4gICAgICBpZiAoJHRhcmdldEVsZW1lbnQudGFnTmFtZSA9PT0gJ0lOUFVUJykge1xuICAgICAgICAkdGFyZ2V0RWxlbWVudCA9ICRva0J1dHRvbjtcbiAgICAgICAgJG9rQnV0dG9uLmZvY3VzKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChidG5JbmRleCA9PT0gLTEpIHtcbiAgICAgICAgLy8gRU5URVIvU1BBQ0UgY2xpY2tlZCBvdXRzaWRlIG9mIGEgYnV0dG9uLlxuICAgICAgICAkdGFyZ2V0RWxlbWVudCA9ICRva0J1dHRvbjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERvIG5vdGhpbmcgLSBsZXQgdGhlIGJyb3dzZXIgaGFuZGxlIGl0LlxuICAgICAgICAkdGFyZ2V0RWxlbWVudCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGtleUNvZGUgPT09IDI3ICYmIHBhcmFtcy5hbGxvd0VzY2FwZUtleSA9PT0gdHJ1ZSkge1xuICAgICAgJHRhcmdldEVsZW1lbnQgPSAkY2FuY2VsQnV0dG9uO1xuICAgICAgZmlyZUNsaWNrKCR0YXJnZXRFbGVtZW50LCBlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRmFsbGJhY2sgLSBsZXQgdGhlIGJyb3dzZXIgaGFuZGxlIGl0LlxuICAgICAgJHRhcmdldEVsZW1lbnQgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBoYW5kbGVLZXlEb3duO1xuIiwiaW1wb3J0IHsgaGV4VG9SZ2IgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IHJlbW92ZUNsYXNzLCBnZXRUb3BNYXJnaW4sIGZhZGVJbiwgc2hvdywgYWRkQ2xhc3MgfSBmcm9tICcuL2hhbmRsZS1kb20nO1xuaW1wb3J0IGRlZmF1bHRQYXJhbXMgZnJvbSAnLi9kZWZhdWx0LXBhcmFtcyc7XG5cbnZhciBtb2RhbENsYXNzICAgPSAnLnN3ZWV0LWFsZXJ0JztcbnZhciBvdmVybGF5Q2xhc3MgPSAnLnN3ZWV0LW92ZXJsYXknO1xuXG4vKlxuICogQWRkIG1vZGFsICsgb3ZlcmxheSB0byBET01cbiAqL1xuaW1wb3J0IGluamVjdGVkSFRNTCBmcm9tICcuL2luamVjdGVkLWh0bWwnO1xuXG52YXIgc3dlZXRBbGVydEluaXRpYWxpemUgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHN3ZWV0V3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBzd2VldFdyYXAuaW5uZXJIVE1MID0gaW5qZWN0ZWRIVE1MO1xuXG4gIC8vIEFwcGVuZCBlbGVtZW50cyB0byBib2R5XG4gIHdoaWxlIChzd2VldFdyYXAuZmlyc3RDaGlsZCkge1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc3dlZXRXcmFwLmZpcnN0Q2hpbGQpO1xuICB9XG59O1xuXG4vKlxuICogR2V0IERPTSBlbGVtZW50IG9mIG1vZGFsXG4gKi9cbnZhciBnZXRNb2RhbCA9IGZ1bmN0aW9uKCkge1xuICB2YXIgJG1vZGFsID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcihtb2RhbENsYXNzKTtcblxuICBpZiAoISRtb2RhbCkge1xuICAgIHN3ZWV0QWxlcnRJbml0aWFsaXplKCk7XG4gICAgJG1vZGFsID0gZ2V0TW9kYWwoKTtcbiAgfVxuXG4gIHJldHVybiAkbW9kYWw7XG59O1xuXG4vKlxuICogR2V0IERPTSBlbGVtZW50IG9mIGlucHV0IChpbiBtb2RhbClcbiAqL1xudmFyIGdldElucHV0ID0gZnVuY3Rpb24oKSB7XG4gIHZhciAkbW9kYWwgPSBnZXRNb2RhbCgpO1xuICBpZiAoJG1vZGFsKSB7XG4gICAgcmV0dXJuICRtb2RhbC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpO1xuICB9XG59O1xuXG4vKlxuICogR2V0IERPTSBlbGVtZW50IG9mIG92ZXJsYXlcbiAqL1xudmFyIGdldE92ZXJsYXkgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Iob3ZlcmxheUNsYXNzKTtcbn07XG5cbi8qXG4gKiBBZGQgYm94LXNoYWRvdyBzdHlsZSB0byBidXR0b24gKGRlcGVuZGluZyBvbiBpdHMgY2hvc2VuIGJnLWNvbG9yKVxuICovXG52YXIgc2V0Rm9jdXNTdHlsZSA9IGZ1bmN0aW9uKCRidXR0b24sIGJnQ29sb3IpIHtcbiAgdmFyIHJnYkNvbG9yID0gaGV4VG9SZ2IoYmdDb2xvcik7XG4gICRidXR0b24uc3R5bGUuYm94U2hhZG93ID0gJzAgMCAycHggcmdiYSgnICsgcmdiQ29sb3IgKyAnLCAwLjgpLCBpbnNldCAwIDAgMCAxcHggcmdiYSgwLCAwLCAwLCAwLjA1KSc7XG59O1xuXG4vKlxuICogQW5pbWF0aW9uIHdoZW4gb3BlbmluZyBtb2RhbFxuICovXG52YXIgb3Blbk1vZGFsID0gZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgdmFyICRtb2RhbCA9IGdldE1vZGFsKCk7XG4gIGZhZGVJbihnZXRPdmVybGF5KCksIDEwKTtcbiAgc2hvdygkbW9kYWwpO1xuICBhZGRDbGFzcygkbW9kYWwsICdzaG93U3dlZXRBbGVydCcpO1xuICByZW1vdmVDbGFzcygkbW9kYWwsICdoaWRlU3dlZXRBbGVydCcpO1xuXG4gIHdpbmRvdy5wcmV2aW91c0FjdGl2ZUVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICB2YXIgJG9rQnV0dG9uID0gJG1vZGFsLnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbi5jb25maXJtJyk7XG4gICRva0J1dHRvbi5mb2N1cygpO1xuXG4gIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgIGFkZENsYXNzKCRtb2RhbCwgJ3Zpc2libGUnKTtcbiAgfSwgNTAwKTtcblxuICB2YXIgdGltZXIgPSAkbW9kYWwuZ2V0QXR0cmlidXRlKCdkYXRhLXRpbWVyJyk7XG5cbiAgaWYgKHRpbWVyICE9PSAnbnVsbCcgJiYgdGltZXIgIT09ICcnKSB7XG4gICAgdmFyIHRpbWVyQ2FsbGJhY2sgPSBjYWxsYmFjaztcbiAgICAkbW9kYWwudGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgZG9uZUZ1bmN0aW9uRXhpc3RzID0gKCh0aW1lckNhbGxiYWNrIHx8IG51bGwpICYmICRtb2RhbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtaGFzLWRvbmUtZnVuY3Rpb24nKSA9PT0gJ3RydWUnKTtcbiAgICAgIGlmIChkb25lRnVuY3Rpb25FeGlzdHMpIHsgXG4gICAgICAgIHRpbWVyQ2FsbGJhY2sobnVsbCk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgc3dlZXRBbGVydC5jbG9zZSgpO1xuICAgICAgfVxuICAgIH0sIHRpbWVyKTtcbiAgfVxufTtcblxuLypcbiAqIFJlc2V0IHRoZSBzdHlsaW5nIG9mIHRoZSBpbnB1dFxuICogKGZvciBleGFtcGxlIGlmIGVycm9ycyBoYXZlIGJlZW4gc2hvd24pXG4gKi9cbnZhciByZXNldElucHV0ID0gZnVuY3Rpb24oKSB7XG4gIHZhciAkbW9kYWwgPSBnZXRNb2RhbCgpO1xuICB2YXIgJGlucHV0ID0gZ2V0SW5wdXQoKTtcblxuICByZW1vdmVDbGFzcygkbW9kYWwsICdzaG93LWlucHV0Jyk7XG4gICRpbnB1dC52YWx1ZSA9IGRlZmF1bHRQYXJhbXMuaW5wdXRWYWx1ZTtcbiAgJGlucHV0LnNldEF0dHJpYnV0ZSgndHlwZScsIGRlZmF1bHRQYXJhbXMuaW5wdXRUeXBlKTtcbiAgJGlucHV0LnNldEF0dHJpYnV0ZSgncGxhY2Vob2xkZXInLCBkZWZhdWx0UGFyYW1zLmlucHV0UGxhY2Vob2xkZXIpO1xuXG4gIHJlc2V0SW5wdXRFcnJvcigpO1xufTtcblxuXG52YXIgcmVzZXRJbnB1dEVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHtcbiAgLy8gSWYgcHJlc3MgZW50ZXIgPT4gaWdub3JlXG4gIGlmIChldmVudCAmJiBldmVudC5rZXlDb2RlID09PSAxMykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciAkbW9kYWwgPSBnZXRNb2RhbCgpO1xuXG4gIHZhciAkZXJyb3JJY29uID0gJG1vZGFsLnF1ZXJ5U2VsZWN0b3IoJy5zYS1pbnB1dC1lcnJvcicpO1xuICByZW1vdmVDbGFzcygkZXJyb3JJY29uLCAnc2hvdycpO1xuXG4gIHZhciAkZXJyb3JDb250YWluZXIgPSAkbW9kYWwucXVlcnlTZWxlY3RvcignLnNhLWVycm9yLWNvbnRhaW5lcicpO1xuICByZW1vdmVDbGFzcygkZXJyb3JDb250YWluZXIsICdzaG93Jyk7XG59O1xuXG5cbi8qXG4gKiBTZXQgXCJtYXJnaW4tdG9wXCItcHJvcGVydHkgb24gbW9kYWwgYmFzZWQgb24gaXRzIGNvbXB1dGVkIGhlaWdodFxuICovXG52YXIgZml4VmVydGljYWxQb3NpdGlvbiA9IGZ1bmN0aW9uKCkge1xuICB2YXIgJG1vZGFsID0gZ2V0TW9kYWwoKTtcbiAgJG1vZGFsLnN0eWxlLm1hcmdpblRvcCA9IGdldFRvcE1hcmdpbihnZXRNb2RhbCgpKTtcbn07XG5cblxuZXhwb3J0IHsgXG4gIHN3ZWV0QWxlcnRJbml0aWFsaXplLFxuICBnZXRNb2RhbCxcbiAgZ2V0T3ZlcmxheSxcbiAgZ2V0SW5wdXQsXG4gIHNldEZvY3VzU3R5bGUsXG4gIG9wZW5Nb2RhbCxcbiAgcmVzZXRJbnB1dCxcbiAgcmVzZXRJbnB1dEVycm9yLFxuICBmaXhWZXJ0aWNhbFBvc2l0aW9uXG59O1xuIiwidmFyIGluamVjdGVkSFRNTCA9IFxuXG4gIC8vIERhcmsgb3ZlcmxheVxuICBgPGRpdiBjbGFzcz1cInN3ZWV0LW92ZXJsYXlcIiB0YWJJbmRleD1cIi0xXCI+PC9kaXY+YCArXG5cbiAgLy8gTW9kYWxcbiAgYDxkaXYgY2xhc3M9XCJzd2VldC1hbGVydFwiPmAgK1xuXG4gICAgLy8gRXJyb3IgaWNvblxuICAgIGA8ZGl2IGNsYXNzPVwic2EtaWNvbiBzYS1lcnJvclwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJzYS14LW1hcmtcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzYS1saW5lIHNhLWxlZnRcIj48L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2EtbGluZSBzYS1yaWdodFwiPjwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5gICtcblxuICAgIC8vIFdhcm5pbmcgaWNvblxuICAgIGA8ZGl2IGNsYXNzPVwic2EtaWNvbiBzYS13YXJuaW5nXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInNhLWJvZHlcIj48L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cInNhLWRvdFwiPjwvc3Bhbj5cbiAgICA8L2Rpdj5gICtcblxuICAgIC8vIEluZm8gaWNvblxuICAgIGA8ZGl2IGNsYXNzPVwic2EtaWNvbiBzYS1pbmZvXCI+PC9kaXY+YCArXG5cbiAgICAvLyBTdWNjZXNzIGljb25cbiAgICBgPGRpdiBjbGFzcz1cInNhLWljb24gc2Etc3VjY2Vzc1wiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJzYS1saW5lIHNhLXRpcFwiPjwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwic2EtbGluZSBzYS1sb25nXCI+PC9zcGFuPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwic2EtcGxhY2Vob2xkZXJcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzYS1maXhcIj48L2Rpdj5cbiAgICA8L2Rpdj5gICtcblxuICAgIGA8ZGl2IGNsYXNzPVwic2EtaWNvbiBzYS1jdXN0b21cIj48L2Rpdj5gICtcblxuICAgIC8vIFRpdGxlLCB0ZXh0IGFuZCBpbnB1dFxuICAgIGA8aDI+VGl0bGU8L2gyPlxuICAgIDxwPlRleHQ8L3A+XG4gICAgPGZpZWxkc2V0PlxuICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgdGFiSW5kZXg9XCIzXCIgLz5cbiAgICAgIDxkaXYgY2xhc3M9XCJzYS1pbnB1dC1lcnJvclwiPjwvZGl2PlxuICAgIDwvZmllbGRzZXQ+YCArXG5cbiAgICAvLyBJbnB1dCBlcnJvcnNcbiAgICBgPGRpdiBjbGFzcz1cInNhLWVycm9yLWNvbnRhaW5lclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImljb25cIj4hPC9kaXY+XG4gICAgICA8cD5Ob3QgdmFsaWQhPC9wPlxuICAgIDwvZGl2PmAgK1xuXG4gICAgLy8gQ2FuY2VsIGFuZCBjb25maXJtIGJ1dHRvbnNcbiAgICBgPGRpdiBjbGFzcz1cInNhLWJ1dHRvbi1jb250YWluZXJcIj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJjYW5jZWxcIiB0YWJJbmRleD1cIjJcIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzYS1jb25maXJtLWJ1dHRvbi1jb250YWluZXJcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvbmZpcm1cIiB0YWJJbmRleD1cIjFcIj5PSzwvYnV0dG9uPmAgKyBcblxuICAgICAgICAvLyBMb2FkaW5nIGFuaW1hdGlvblxuICAgICAgICBgPGRpdiBjbGFzcz1cImxhLWJhbGwtZmFsbFwiPlxuICAgICAgICAgIDxkaXY+PC9kaXY+XG4gICAgICAgICAgPGRpdj48L2Rpdj5cbiAgICAgICAgICA8ZGl2PjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PmAgK1xuXG4gIC8vIEVuZCBvZiBtb2RhbFxuICBgPC9kaXY+YDtcblxuZXhwb3J0IGRlZmF1bHQgaW5qZWN0ZWRIVE1MO1xuIiwidmFyIGFsZXJ0VHlwZXMgPSBbJ2Vycm9yJywgJ3dhcm5pbmcnLCAnaW5mbycsICdzdWNjZXNzJywgJ2lucHV0JywgJ3Byb21wdCddO1xuXG5pbXBvcnQge1xuICBpc0lFOFxufSBmcm9tICcuL3V0aWxzJztcblxuaW1wb3J0IHtcbiAgZ2V0TW9kYWwsXG4gIGdldElucHV0LFxuICBzZXRGb2N1c1N0eWxlXG59IGZyb20gJy4vaGFuZGxlLXN3YWwtZG9tJztcblxuaW1wb3J0IHtcbiAgaGFzQ2xhc3MsIGFkZENsYXNzLCByZW1vdmVDbGFzcyxcbiAgZXNjYXBlSHRtbCxcbiAgX3Nob3csIHNob3csIF9oaWRlLCBoaWRlXG59IGZyb20gJy4vaGFuZGxlLWRvbSc7XG5cblxuLypcbiAqIFNldCB0eXBlLCB0ZXh0IGFuZCBhY3Rpb25zIG9uIG1vZGFsXG4gKi9cbnZhciBzZXRQYXJhbWV0ZXJzID0gZnVuY3Rpb24ocGFyYW1zKSB7XG4gIHZhciBtb2RhbCA9IGdldE1vZGFsKCk7XG5cbiAgdmFyICR0aXRsZSA9IG1vZGFsLnF1ZXJ5U2VsZWN0b3IoJ2gyJyk7XG4gIHZhciAkdGV4dCA9IG1vZGFsLnF1ZXJ5U2VsZWN0b3IoJ3AnKTtcbiAgdmFyICRjYW5jZWxCdG4gPSBtb2RhbC5xdWVyeVNlbGVjdG9yKCdidXR0b24uY2FuY2VsJyk7XG4gIHZhciAkY29uZmlybUJ0biA9IG1vZGFsLnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbi5jb25maXJtJyk7XG5cbiAgLypcbiAgICogVGl0bGVcbiAgICovXG4gICR0aXRsZS5pbm5lckhUTUwgPSBwYXJhbXMuaHRtbCA/IHBhcmFtcy50aXRsZSA6IGVzY2FwZUh0bWwocGFyYW1zLnRpdGxlKS5zcGxpdCgnXFxuJykuam9pbignPGJyPicpO1xuXG4gIC8qXG4gICAqIFRleHRcbiAgICovXG4gICR0ZXh0LmlubmVySFRNTCA9IHBhcmFtcy5odG1sID8gcGFyYW1zLnRleHQgOiBlc2NhcGVIdG1sKHBhcmFtcy50ZXh0IHx8ICcnKS5zcGxpdCgnXFxuJykuam9pbignPGJyPicpO1xuICBpZiAocGFyYW1zLnRleHQpIHNob3coJHRleHQpO1xuXG4gIC8qXG4gICAqIEN1c3RvbSBjbGFzc1xuICAgKi9cbiAgaWYgKHBhcmFtcy5jdXN0b21DbGFzcykge1xuICAgIGFkZENsYXNzKG1vZGFsLCBwYXJhbXMuY3VzdG9tQ2xhc3MpO1xuICAgIG1vZGFsLnNldEF0dHJpYnV0ZSgnZGF0YS1jdXN0b20tY2xhc3MnLCBwYXJhbXMuY3VzdG9tQ2xhc3MpO1xuICB9IGVsc2Uge1xuICAgIC8vIEZpbmQgcHJldmlvdXNseSBzZXQgY2xhc3NlcyBhbmQgcmVtb3ZlIHRoZW1cbiAgICBsZXQgY3VzdG9tQ2xhc3MgPSBtb2RhbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtY3VzdG9tLWNsYXNzJyk7XG4gICAgcmVtb3ZlQ2xhc3MobW9kYWwsIGN1c3RvbUNsYXNzKTtcbiAgICBtb2RhbC5zZXRBdHRyaWJ1dGUoJ2RhdGEtY3VzdG9tLWNsYXNzJywgJycpO1xuICB9XG5cbiAgLypcbiAgICogSWNvblxuICAgKi9cbiAgaGlkZShtb2RhbC5xdWVyeVNlbGVjdG9yQWxsKCcuc2EtaWNvbicpKTtcblxuICBpZiAocGFyYW1zLnR5cGUgJiYgIWlzSUU4KCkpIHtcblxuICAgIGxldCB2YWxpZFR5cGUgPSBmYWxzZTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWxlcnRUeXBlcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHBhcmFtcy50eXBlID09PSBhbGVydFR5cGVzW2ldKSB7XG4gICAgICAgIHZhbGlkVHlwZSA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghdmFsaWRUeXBlKSB7XG4gICAgICBsb2dTdHIoJ1Vua25vd24gYWxlcnQgdHlwZTogJyArIHBhcmFtcy50eXBlKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBsZXQgdHlwZXNXaXRoSWNvbnMgPSBbJ3N1Y2Nlc3MnLCAnZXJyb3InLCAnd2FybmluZycsICdpbmZvJ107XG4gICAgbGV0ICRpY29uO1xuXG4gICAgaWYgKHR5cGVzV2l0aEljb25zLmluZGV4T2YocGFyYW1zLnR5cGUpICE9PSAtMSkge1xuICAgICAgJGljb24gPSBtb2RhbC5xdWVyeVNlbGVjdG9yKCcuc2EtaWNvbi4nICsgJ3NhLScgKyBwYXJhbXMudHlwZSk7XG4gICAgICBzaG93KCRpY29uKTtcbiAgICB9XG5cbiAgICBsZXQgJGlucHV0ID0gZ2V0SW5wdXQoKTtcblxuICAgIC8vIEFuaW1hdGUgaWNvblxuICAgIHN3aXRjaCAocGFyYW1zLnR5cGUpIHtcblxuICAgICAgY2FzZSAnc3VjY2Vzcyc6XG4gICAgICAgIGFkZENsYXNzKCRpY29uLCAnYW5pbWF0ZScpO1xuICAgICAgICBhZGRDbGFzcygkaWNvbi5xdWVyeVNlbGVjdG9yKCcuc2EtdGlwJyksICdhbmltYXRlU3VjY2Vzc1RpcCcpO1xuICAgICAgICBhZGRDbGFzcygkaWNvbi5xdWVyeVNlbGVjdG9yKCcuc2EtbG9uZycpLCAnYW5pbWF0ZVN1Y2Nlc3NMb25nJyk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgIGFkZENsYXNzKCRpY29uLCAnYW5pbWF0ZUVycm9ySWNvbicpO1xuICAgICAgICBhZGRDbGFzcygkaWNvbi5xdWVyeVNlbGVjdG9yKCcuc2EteC1tYXJrJyksICdhbmltYXRlWE1hcmsnKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3dhcm5pbmcnOlxuICAgICAgICBhZGRDbGFzcygkaWNvbiwgJ3B1bHNlV2FybmluZycpO1xuICAgICAgICBhZGRDbGFzcygkaWNvbi5xdWVyeVNlbGVjdG9yKCcuc2EtYm9keScpLCAncHVsc2VXYXJuaW5nSW5zJyk7XG4gICAgICAgIGFkZENsYXNzKCRpY29uLnF1ZXJ5U2VsZWN0b3IoJy5zYS1kb3QnKSwgJ3B1bHNlV2FybmluZ0lucycpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnaW5wdXQnOlxuICAgICAgY2FzZSAncHJvbXB0JzpcbiAgICAgICAgJGlucHV0LnNldEF0dHJpYnV0ZSgndHlwZScsIHBhcmFtcy5pbnB1dFR5cGUpO1xuICAgICAgICAkaW5wdXQudmFsdWUgPSBwYXJhbXMuaW5wdXRWYWx1ZTtcbiAgICAgICAgJGlucHV0LnNldEF0dHJpYnV0ZSgncGxhY2Vob2xkZXInLCBwYXJhbXMuaW5wdXRQbGFjZWhvbGRlcik7XG4gICAgICAgIGFkZENsYXNzKG1vZGFsLCAnc2hvdy1pbnB1dCcpO1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAkaW5wdXQuZm9jdXMoKTtcbiAgICAgICAgICAkaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCBzd2FsLnJlc2V0SW5wdXRFcnJvcik7XG4gICAgICAgIH0sIDQwMCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8qXG4gICAqIEN1c3RvbSBpbWFnZVxuICAgKi9cbiAgaWYgKHBhcmFtcy5pbWFnZVVybCkge1xuICAgIGxldCAkY3VzdG9tSWNvbiA9IG1vZGFsLnF1ZXJ5U2VsZWN0b3IoJy5zYS1pY29uLnNhLWN1c3RvbScpO1xuXG4gICAgJGN1c3RvbUljb24uc3R5bGUuYmFja2dyb3VuZEltYWdlID0gJ3VybCgnICsgcGFyYW1zLmltYWdlVXJsICsgJyknO1xuICAgIHNob3coJGN1c3RvbUljb24pO1xuXG4gICAgbGV0IF9pbWdXaWR0aCA9IDgwO1xuICAgIGxldCBfaW1nSGVpZ2h0ID0gODA7XG5cbiAgICBpZiAocGFyYW1zLmltYWdlU2l6ZSkge1xuICAgICAgbGV0IGRpbWVuc2lvbnMgPSBwYXJhbXMuaW1hZ2VTaXplLnRvU3RyaW5nKCkuc3BsaXQoJ3gnKTtcbiAgICAgIGxldCBpbWdXaWR0aCA9IGRpbWVuc2lvbnNbMF07XG4gICAgICBsZXQgaW1nSGVpZ2h0ID0gZGltZW5zaW9uc1sxXTtcblxuICAgICAgaWYgKCFpbWdXaWR0aCB8fCAhaW1nSGVpZ2h0KSB7XG4gICAgICAgIGxvZ1N0cignUGFyYW1ldGVyIGltYWdlU2l6ZSBleHBlY3RzIHZhbHVlIHdpdGggZm9ybWF0IFdJRFRIeEhFSUdIVCwgZ290ICcgKyBwYXJhbXMuaW1hZ2VTaXplKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIF9pbWdXaWR0aCA9IGltZ1dpZHRoO1xuICAgICAgICBfaW1nSGVpZ2h0ID0gaW1nSGVpZ2h0O1xuICAgICAgfVxuICAgIH1cblxuICAgICRjdXN0b21JY29uLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAkY3VzdG9tSWNvbi5nZXRBdHRyaWJ1dGUoJ3N0eWxlJykgKyAnd2lkdGg6JyArIF9pbWdXaWR0aCArICdweDsgaGVpZ2h0OicgKyBfaW1nSGVpZ2h0ICsgJ3B4Jyk7XG4gIH1cblxuICAvKlxuICAgKiBTaG93IGNhbmNlbCBidXR0b24/XG4gICAqL1xuICBtb2RhbC5zZXRBdHRyaWJ1dGUoJ2RhdGEtaGFzLWNhbmNlbC1idXR0b24nLCBwYXJhbXMuc2hvd0NhbmNlbEJ1dHRvbik7XG4gIGlmIChwYXJhbXMuc2hvd0NhbmNlbEJ1dHRvbikge1xuICAgICRjYW5jZWxCdG4uc3R5bGUuZGlzcGxheSA9ICdpbmxpbmUtYmxvY2snO1xuICB9IGVsc2Uge1xuICAgIGhpZGUoJGNhbmNlbEJ0bik7XG4gIH1cblxuICAvKlxuICAgKiBTaG93IGNvbmZpcm0gYnV0dG9uP1xuICAgKi9cbiAgbW9kYWwuc2V0QXR0cmlidXRlKCdkYXRhLWhhcy1jb25maXJtLWJ1dHRvbicsIHBhcmFtcy5zaG93Q29uZmlybUJ1dHRvbik7XG4gIGlmIChwYXJhbXMuc2hvd0NvbmZpcm1CdXR0b24pIHtcbiAgICAkY29uZmlybUJ0bi5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZS1ibG9jayc7XG4gIH0gZWxzZSB7XG4gICAgaGlkZSgkY29uZmlybUJ0bik7XG4gIH1cblxuICAvKlxuICAgKiBDdXN0b20gdGV4dCBvbiBjYW5jZWwvY29uZmlybSBidXR0b25zXG4gICAqL1xuICBpZiAocGFyYW1zLmNhbmNlbEJ1dHRvblRleHQpIHtcbiAgICAkY2FuY2VsQnRuLmlubmVySFRNTCA9IGVzY2FwZUh0bWwocGFyYW1zLmNhbmNlbEJ1dHRvblRleHQpO1xuICB9XG4gIGlmIChwYXJhbXMuY29uZmlybUJ1dHRvblRleHQpIHtcbiAgICAkY29uZmlybUJ0bi5pbm5lckhUTUwgPSBlc2NhcGVIdG1sKHBhcmFtcy5jb25maXJtQnV0dG9uVGV4dCk7XG4gIH1cblxuICAvKlxuICAgKiBDdXN0b20gY29sb3Igb24gY29uZmlybSBidXR0b25cbiAgICovXG4gIGlmIChwYXJhbXMuY29uZmlybUJ1dHRvbkNvbG9yKSB7XG4gICAgLy8gU2V0IGNvbmZpcm0gYnV0dG9uIHRvIHNlbGVjdGVkIGJhY2tncm91bmQgY29sb3JcbiAgICAkY29uZmlybUJ0bi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBwYXJhbXMuY29uZmlybUJ1dHRvbkNvbG9yO1xuXG4gICAgLy8gU2V0IHRoZSBjb25maXJtIGJ1dHRvbiBjb2xvciB0byB0aGUgbG9hZGluZyByaW5nXG4gICAgJGNvbmZpcm1CdG4uc3R5bGUuYm9yZGVyTGVmdENvbG9yID0gcGFyYW1zLmNvbmZpcm1Mb2FkaW5nQnV0dG9uQ29sb3I7XG4gICAgJGNvbmZpcm1CdG4uc3R5bGUuYm9yZGVyUmlnaHRDb2xvciA9IHBhcmFtcy5jb25maXJtTG9hZGluZ0J1dHRvbkNvbG9yO1xuXG4gICAgLy8gU2V0IGJveC1zaGFkb3cgdG8gZGVmYXVsdCBmb2N1c2VkIGJ1dHRvblxuICAgIHNldEZvY3VzU3R5bGUoJGNvbmZpcm1CdG4sIHBhcmFtcy5jb25maXJtQnV0dG9uQ29sb3IpO1xuICB9XG5cbiAgLypcbiAgICogQWxsb3cgb3V0c2lkZSBjbGlja1xuICAgKi9cbiAgbW9kYWwuc2V0QXR0cmlidXRlKCdkYXRhLWFsbG93LW91dHNpZGUtY2xpY2snLCBwYXJhbXMuYWxsb3dPdXRzaWRlQ2xpY2spO1xuXG4gIC8qXG4gICAqIENhbGxiYWNrIGZ1bmN0aW9uXG4gICAqL1xuICB2YXIgaGFzRG9uZUZ1bmN0aW9uID0gcGFyYW1zLmRvbmVGdW5jdGlvbiA/IHRydWUgOiBmYWxzZTtcbiAgbW9kYWwuc2V0QXR0cmlidXRlKCdkYXRhLWhhcy1kb25lLWZ1bmN0aW9uJywgaGFzRG9uZUZ1bmN0aW9uKTtcblxuICAvKlxuICAgKiBBbmltYXRpb25cbiAgICovXG4gIGlmICghcGFyYW1zLmFuaW1hdGlvbikge1xuICAgIG1vZGFsLnNldEF0dHJpYnV0ZSgnZGF0YS1hbmltYXRpb24nLCAnbm9uZScpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBwYXJhbXMuYW5pbWF0aW9uID09PSAnc3RyaW5nJykge1xuICAgIG1vZGFsLnNldEF0dHJpYnV0ZSgnZGF0YS1hbmltYXRpb24nLCBwYXJhbXMuYW5pbWF0aW9uKTsgLy8gQ3VzdG9tIGFuaW1hdGlvblxuICB9IGVsc2Uge1xuICAgIG1vZGFsLnNldEF0dHJpYnV0ZSgnZGF0YS1hbmltYXRpb24nLCAncG9wJyk7XG4gIH1cblxuICAvKlxuICAgKiBUaW1lclxuICAgKi9cbiAgbW9kYWwuc2V0QXR0cmlidXRlKCdkYXRhLXRpbWVyJywgcGFyYW1zLnRpbWVyKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHNldFBhcmFtZXRlcnM7XG4iLCIvKlxuICogQWxsb3cgdXNlciB0byBwYXNzIHRoZWlyIG93biBwYXJhbXNcbiAqL1xudmFyIGV4dGVuZCA9IGZ1bmN0aW9uKGEsIGIpIHtcbiAgZm9yICh2YXIga2V5IGluIGIpIHtcbiAgICBpZiAoYi5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICBhW2tleV0gPSBiW2tleV07XG4gICAgfVxuICB9XG4gIHJldHVybiBhO1xufTtcblxuLypcbiAqIENvbnZlcnQgSEVYIGNvZGVzIHRvIFJHQiB2YWx1ZXMgKCMwMDAwMDAgLT4gcmdiKDAsMCwwKSlcbiAqL1xudmFyIGhleFRvUmdiID0gZnVuY3Rpb24oaGV4KSB7XG4gIHZhciByZXN1bHQgPSAvXiM/KFthLWZcXGRdezJ9KShbYS1mXFxkXXsyfSkoW2EtZlxcZF17Mn0pJC9pLmV4ZWMoaGV4KTtcbiAgcmV0dXJuIHJlc3VsdCA/IHBhcnNlSW50KHJlc3VsdFsxXSwgMTYpICsgJywgJyArIHBhcnNlSW50KHJlc3VsdFsyXSwgMTYpICsgJywgJyArIHBhcnNlSW50KHJlc3VsdFszXSwgMTYpIDogbnVsbDtcbn07XG5cbi8qXG4gKiBDaGVjayBpZiB0aGUgdXNlciBpcyB1c2luZyBJbnRlcm5ldCBFeHBsb3JlciA4IChmb3IgZmFsbGJhY2tzKVxuICovXG52YXIgaXNJRTggPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuICh3aW5kb3cuYXR0YWNoRXZlbnQgJiYgIXdpbmRvdy5hZGRFdmVudExpc3RlbmVyKTtcbn07XG5cbi8qXG4gKiBJRSBjb21wYXRpYmxlIGxvZ2dpbmcgZm9yIGRldmVsb3BlcnNcbiAqL1xudmFyIGxvZ1N0ciA9IGZ1bmN0aW9uKHN0cmluZykge1xuICBpZiAod2luZG93LmNvbnNvbGUpIHtcbiAgICAvLyBJRS4uLlxuICAgIHdpbmRvdy5jb25zb2xlLmxvZygnU3dlZXRBbGVydDogJyArIHN0cmluZyk7XG4gIH1cbn07XG5cbi8qXG4gKiBTZXQgaG92ZXIsIGFjdGl2ZSBhbmQgZm9jdXMtc3RhdGVzIGZvciBidXR0b25zIFxuICogKHNvdXJjZTogaHR0cDovL3d3dy5zaXRlcG9pbnQuY29tL2phdmFzY3JpcHQtZ2VuZXJhdGUtbGlnaHRlci1kYXJrZXItY29sb3IpXG4gKi9cbnZhciBjb2xvckx1bWluYW5jZSA9IGZ1bmN0aW9uKGhleCwgbHVtKSB7XG4gIC8vIFZhbGlkYXRlIGhleCBzdHJpbmdcbiAgaGV4ID0gU3RyaW5nKGhleCkucmVwbGFjZSgvW14wLTlhLWZdL2dpLCAnJyk7XG4gIGlmIChoZXgubGVuZ3RoIDwgNikge1xuICAgIGhleCA9IGhleFswXSArIGhleFswXSArIGhleFsxXSArIGhleFsxXSArIGhleFsyXSArIGhleFsyXTtcbiAgfVxuICBsdW0gPSBsdW0gfHwgMDtcblxuICAvLyBDb252ZXJ0IHRvIGRlY2ltYWwgYW5kIGNoYW5nZSBsdW1pbm9zaXR5XG4gIHZhciByZ2IgPSAnIyc7XG4gIHZhciBjO1xuICB2YXIgaTtcblxuICBmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKSB7XG4gICAgYyA9IHBhcnNlSW50KGhleC5zdWJzdHIoaSAqIDIsIDIpLCAxNik7XG4gICAgYyA9IE1hdGgucm91bmQoTWF0aC5taW4oTWF0aC5tYXgoMCwgYyArIGMgKiBsdW0pLCAyNTUpKS50b1N0cmluZygxNik7XG4gICAgcmdiICs9ICgnMDAnICsgYykuc3Vic3RyKGMubGVuZ3RoKTtcbiAgfVxuXG4gIHJldHVybiByZ2I7XG59O1xuXG5cbmV4cG9ydCB7XG4gIGV4dGVuZCxcbiAgaGV4VG9SZ2IsXG4gIGlzSUU4LFxuICBsb2dTdHIsXG4gIGNvbG9yTHVtaW5hbmNlXG59O1xuIl19 + + + /* + * Use SweetAlert with RequireJS + */ + + if (typeof define === 'function' && define.amd) { + define(function () { + return sweetAlert; + }); + } else if (typeof module !== 'undefined' && module.exports) { + module.exports = sweetAlert; + } + +})(window, document); \ No newline at end of file diff --git a/node_modules/sweetalert/dist/sweetalert.css b/node_modules/sweetalert/dist/sweetalert.css new file mode 100644 index 0000000..76f159d --- /dev/null +++ b/node_modules/sweetalert/dist/sweetalert.css @@ -0,0 +1,932 @@ +body.stop-scrolling { + height: 100%; + overflow: hidden; } + +.sweet-overlay { + background-color: black; + /* IE8 */ + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)"; + /* IE8 */ + background-color: rgba(0, 0, 0, 0.4); + position: fixed; + left: 0; + right: 0; + top: 0; + bottom: 0; + display: none; + z-index: 10000; } + +.sweet-alert { + background-color: white; + font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; + width: 478px; + padding: 17px; + border-radius: 5px; + text-align: center; + position: fixed; + left: 50%; + top: 50%; + margin-left: -256px; + margin-top: -200px; + overflow: hidden; + display: none; + z-index: 99999; } + @media all and (max-width: 540px) { + .sweet-alert { + width: auto; + margin-left: 0; + margin-right: 0; + left: 15px; + right: 15px; } } + .sweet-alert h2 { + color: #575757; + font-size: 30px; + text-align: center; + font-weight: 600; + text-transform: none; + position: relative; + margin: 25px 0; + padding: 0; + line-height: 40px; + display: block; } + .sweet-alert p { + color: #797979; + font-size: 16px; + text-align: center; + font-weight: 300; + position: relative; + text-align: inherit; + float: none; + margin: 0; + padding: 0; + line-height: normal; } + .sweet-alert fieldset { + border: none; + position: relative; } + .sweet-alert .sa-error-container { + background-color: #f1f1f1; + margin-left: -17px; + margin-right: -17px; + overflow: hidden; + padding: 0 10px; + max-height: 0; + webkit-transition: padding 0.15s, max-height 0.15s; + transition: padding 0.15s, max-height 0.15s; } + .sweet-alert .sa-error-container.show { + padding: 10px 0; + max-height: 100px; + webkit-transition: padding 0.2s, max-height 0.2s; + transition: padding 0.25s, max-height 0.25s; } + .sweet-alert .sa-error-container .icon { + display: inline-block; + width: 24px; + height: 24px; + border-radius: 50%; + background-color: #ea7d7d; + color: white; + line-height: 24px; + text-align: center; + margin-right: 3px; } + .sweet-alert .sa-error-container p { + display: inline-block; } + .sweet-alert .sa-input-error { + position: absolute; + top: 29px; + right: 26px; + width: 20px; + height: 20px; + opacity: 0; + -webkit-transform: scale(0.5); + transform: scale(0.5); + -webkit-transform-origin: 50% 50%; + transform-origin: 50% 50%; + -webkit-transition: all 0.1s; + transition: all 0.1s; } + .sweet-alert .sa-input-error::before, .sweet-alert .sa-input-error::after { + content: ""; + width: 20px; + height: 6px; + background-color: #f06e57; + border-radius: 3px; + position: absolute; + top: 50%; + margin-top: -4px; + left: 50%; + margin-left: -9px; } + .sweet-alert .sa-input-error::before { + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); } + .sweet-alert .sa-input-error::after { + -webkit-transform: rotate(45deg); + transform: rotate(45deg); } + .sweet-alert .sa-input-error.show { + opacity: 1; + -webkit-transform: scale(1); + transform: scale(1); } + .sweet-alert input { + width: 100%; + box-sizing: border-box; + border-radius: 3px; + border: 1px solid #d7d7d7; + height: 43px; + margin-top: 10px; + margin-bottom: 17px; + font-size: 18px; + box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.06); + padding: 0 12px; + display: none; + -webkit-transition: all 0.3s; + transition: all 0.3s; } + .sweet-alert input:focus { + outline: none; + box-shadow: 0px 0px 3px #c4e6f5; + border: 1px solid #b4dbed; } + .sweet-alert input:focus::-moz-placeholder { + transition: opacity 0.3s 0.03s ease; + opacity: 0.5; } + .sweet-alert input:focus:-ms-input-placeholder { + transition: opacity 0.3s 0.03s ease; + opacity: 0.5; } + .sweet-alert input:focus::-webkit-input-placeholder { + transition: opacity 0.3s 0.03s ease; + opacity: 0.5; } + .sweet-alert input::-moz-placeholder { + color: #bdbdbd; } + .sweet-alert input:-ms-input-placeholder { + color: #bdbdbd; } + .sweet-alert input::-webkit-input-placeholder { + color: #bdbdbd; } + .sweet-alert.show-input input { + display: block; } + .sweet-alert .sa-confirm-button-container { + display: inline-block; + position: relative; } + .sweet-alert .la-ball-fall { + position: absolute; + left: 50%; + top: 50%; + margin-left: -27px; + margin-top: 4px; + opacity: 0; + visibility: hidden; } + .sweet-alert button { + background-color: #8CD4F5; + color: white; + border: none; + box-shadow: none; + font-size: 17px; + font-weight: 500; + -webkit-border-radius: 4px; + border-radius: 5px; + padding: 10px 32px; + margin: 26px 5px 0 5px; + cursor: pointer; } + .sweet-alert button:focus { + outline: none; + box-shadow: 0 0 2px rgba(128, 179, 235, 0.5), inset 0 0 0 1px rgba(0, 0, 0, 0.05); } + .sweet-alert button:hover { + background-color: #7ecff4; } + .sweet-alert button:active { + background-color: #5dc2f1; } + .sweet-alert button.cancel { + background-color: #C1C1C1; } + .sweet-alert button.cancel:hover { + background-color: #b9b9b9; } + .sweet-alert button.cancel:active { + background-color: #a8a8a8; } + .sweet-alert button.cancel:focus { + box-shadow: rgba(197, 205, 211, 0.8) 0px 0px 2px, rgba(0, 0, 0, 0.0470588) 0px 0px 0px 1px inset !important; } + .sweet-alert button[disabled] { + opacity: .6; + cursor: default; } + .sweet-alert button.confirm[disabled] { + color: transparent; } + .sweet-alert button.confirm[disabled] ~ .la-ball-fall { + opacity: 1; + visibility: visible; + transition-delay: 0s; } + .sweet-alert button::-moz-focus-inner { + border: 0; } + .sweet-alert[data-has-cancel-button=false] button { + box-shadow: none !important; } + .sweet-alert[data-has-confirm-button=false][data-has-cancel-button=false] { + padding-bottom: 40px; } + .sweet-alert .sa-icon { + width: 80px; + height: 80px; + border: 4px solid gray; + -webkit-border-radius: 40px; + border-radius: 40px; + border-radius: 50%; + margin: 20px auto; + padding: 0; + position: relative; + box-sizing: content-box; } + .sweet-alert .sa-icon.sa-error { + border-color: #F27474; } + .sweet-alert .sa-icon.sa-error .sa-x-mark { + position: relative; + display: block; } + .sweet-alert .sa-icon.sa-error .sa-line { + position: absolute; + height: 5px; + width: 47px; + background-color: #F27474; + display: block; + top: 37px; + border-radius: 2px; } + .sweet-alert .sa-icon.sa-error .sa-line.sa-left { + -webkit-transform: rotate(45deg); + transform: rotate(45deg); + left: 17px; } + .sweet-alert .sa-icon.sa-error .sa-line.sa-right { + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + right: 16px; } + .sweet-alert .sa-icon.sa-warning { + border-color: #F8BB86; } + .sweet-alert .sa-icon.sa-warning .sa-body { + position: absolute; + width: 5px; + height: 47px; + left: 50%; + top: 10px; + -webkit-border-radius: 2px; + border-radius: 2px; + margin-left: -2px; + background-color: #F8BB86; } + .sweet-alert .sa-icon.sa-warning .sa-dot { + position: absolute; + width: 7px; + height: 7px; + -webkit-border-radius: 50%; + border-radius: 50%; + margin-left: -3px; + left: 50%; + bottom: 10px; + background-color: #F8BB86; } + .sweet-alert .sa-icon.sa-info { + border-color: #C9DAE1; } + .sweet-alert .sa-icon.sa-info::before { + content: ""; + position: absolute; + width: 5px; + height: 29px; + left: 50%; + bottom: 17px; + border-radius: 2px; + margin-left: -2px; + background-color: #C9DAE1; } + .sweet-alert .sa-icon.sa-info::after { + content: ""; + position: absolute; + width: 7px; + height: 7px; + border-radius: 50%; + margin-left: -3px; + top: 19px; + background-color: #C9DAE1; } + .sweet-alert .sa-icon.sa-success { + border-color: #A5DC86; } + .sweet-alert .sa-icon.sa-success::before, .sweet-alert .sa-icon.sa-success::after { + content: ''; + -webkit-border-radius: 40px; + border-radius: 40px; + border-radius: 50%; + position: absolute; + width: 60px; + height: 120px; + background: white; + -webkit-transform: rotate(45deg); + transform: rotate(45deg); } + .sweet-alert .sa-icon.sa-success::before { + -webkit-border-radius: 120px 0 0 120px; + border-radius: 120px 0 0 120px; + top: -7px; + left: -33px; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + -webkit-transform-origin: 60px 60px; + transform-origin: 60px 60px; } + .sweet-alert .sa-icon.sa-success::after { + -webkit-border-radius: 0 120px 120px 0; + border-radius: 0 120px 120px 0; + top: -11px; + left: 30px; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + -webkit-transform-origin: 0px 60px; + transform-origin: 0px 60px; } + .sweet-alert .sa-icon.sa-success .sa-placeholder { + width: 80px; + height: 80px; + border: 4px solid rgba(165, 220, 134, 0.2); + -webkit-border-radius: 40px; + border-radius: 40px; + border-radius: 50%; + box-sizing: content-box; + position: absolute; + left: -4px; + top: -4px; + z-index: 2; } + .sweet-alert .sa-icon.sa-success .sa-fix { + width: 5px; + height: 90px; + background-color: white; + position: absolute; + left: 28px; + top: 8px; + z-index: 1; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); } + .sweet-alert .sa-icon.sa-success .sa-line { + height: 5px; + background-color: #A5DC86; + display: block; + border-radius: 2px; + position: absolute; + z-index: 2; } + .sweet-alert .sa-icon.sa-success .sa-line.sa-tip { + width: 25px; + left: 14px; + top: 46px; + -webkit-transform: rotate(45deg); + transform: rotate(45deg); } + .sweet-alert .sa-icon.sa-success .sa-line.sa-long { + width: 47px; + right: 8px; + top: 38px; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); } + .sweet-alert .sa-icon.sa-custom { + background-size: contain; + border-radius: 0; + border: none; + background-position: center center; + background-repeat: no-repeat; } + +/* + * Animations + */ +@-webkit-keyframes showSweetAlert { + 0% { + transform: scale(0.7); + -webkit-transform: scale(0.7); } + 45% { + transform: scale(1.05); + -webkit-transform: scale(1.05); } + 80% { + transform: scale(0.95); + -webkit-transform: scale(0.95); } + 100% { + transform: scale(1); + -webkit-transform: scale(1); } } + +@keyframes showSweetAlert { + 0% { + transform: scale(0.7); + -webkit-transform: scale(0.7); } + 45% { + transform: scale(1.05); + -webkit-transform: scale(1.05); } + 80% { + transform: scale(0.95); + -webkit-transform: scale(0.95); } + 100% { + transform: scale(1); + -webkit-transform: scale(1); } } + +@-webkit-keyframes hideSweetAlert { + 0% { + transform: scale(1); + -webkit-transform: scale(1); } + 100% { + transform: scale(0.5); + -webkit-transform: scale(0.5); } } + +@keyframes hideSweetAlert { + 0% { + transform: scale(1); + -webkit-transform: scale(1); } + 100% { + transform: scale(0.5); + -webkit-transform: scale(0.5); } } + +@-webkit-keyframes slideFromTop { + 0% { + top: 0%; } + 100% { + top: 50%; } } + +@keyframes slideFromTop { + 0% { + top: 0%; } + 100% { + top: 50%; } } + +@-webkit-keyframes slideToTop { + 0% { + top: 50%; } + 100% { + top: 0%; } } + +@keyframes slideToTop { + 0% { + top: 50%; } + 100% { + top: 0%; } } + +@-webkit-keyframes slideFromBottom { + 0% { + top: 70%; } + 100% { + top: 50%; } } + +@keyframes slideFromBottom { + 0% { + top: 70%; } + 100% { + top: 50%; } } + +@-webkit-keyframes slideToBottom { + 0% { + top: 50%; } + 100% { + top: 70%; } } + +@keyframes slideToBottom { + 0% { + top: 50%; } + 100% { + top: 70%; } } + +.showSweetAlert[data-animation=pop] { + -webkit-animation: showSweetAlert 0.3s; + animation: showSweetAlert 0.3s; } + +.showSweetAlert[data-animation=none] { + -webkit-animation: none; + animation: none; } + +.showSweetAlert[data-animation=slide-from-top] { + -webkit-animation: slideFromTop 0.3s; + animation: slideFromTop 0.3s; } + +.showSweetAlert[data-animation=slide-from-bottom] { + -webkit-animation: slideFromBottom 0.3s; + animation: slideFromBottom 0.3s; } + +.hideSweetAlert[data-animation=pop] { + -webkit-animation: hideSweetAlert 0.2s; + animation: hideSweetAlert 0.2s; } + +.hideSweetAlert[data-animation=none] { + -webkit-animation: none; + animation: none; } + +.hideSweetAlert[data-animation=slide-from-top] { + -webkit-animation: slideToTop 0.4s; + animation: slideToTop 0.4s; } + +.hideSweetAlert[data-animation=slide-from-bottom] { + -webkit-animation: slideToBottom 0.3s; + animation: slideToBottom 0.3s; } + +@-webkit-keyframes animateSuccessTip { + 0% { + width: 0; + left: 1px; + top: 19px; } + 54% { + width: 0; + left: 1px; + top: 19px; } + 70% { + width: 50px; + left: -8px; + top: 37px; } + 84% { + width: 17px; + left: 21px; + top: 48px; } + 100% { + width: 25px; + left: 14px; + top: 45px; } } + +@keyframes animateSuccessTip { + 0% { + width: 0; + left: 1px; + top: 19px; } + 54% { + width: 0; + left: 1px; + top: 19px; } + 70% { + width: 50px; + left: -8px; + top: 37px; } + 84% { + width: 17px; + left: 21px; + top: 48px; } + 100% { + width: 25px; + left: 14px; + top: 45px; } } + +@-webkit-keyframes animateSuccessLong { + 0% { + width: 0; + right: 46px; + top: 54px; } + 65% { + width: 0; + right: 46px; + top: 54px; } + 84% { + width: 55px; + right: 0px; + top: 35px; } + 100% { + width: 47px; + right: 8px; + top: 38px; } } + +@keyframes animateSuccessLong { + 0% { + width: 0; + right: 46px; + top: 54px; } + 65% { + width: 0; + right: 46px; + top: 54px; } + 84% { + width: 55px; + right: 0px; + top: 35px; } + 100% { + width: 47px; + right: 8px; + top: 38px; } } + +@-webkit-keyframes rotatePlaceholder { + 0% { + transform: rotate(-45deg); + -webkit-transform: rotate(-45deg); } + 5% { + transform: rotate(-45deg); + -webkit-transform: rotate(-45deg); } + 12% { + transform: rotate(-405deg); + -webkit-transform: rotate(-405deg); } + 100% { + transform: rotate(-405deg); + -webkit-transform: rotate(-405deg); } } + +@keyframes rotatePlaceholder { + 0% { + transform: rotate(-45deg); + -webkit-transform: rotate(-45deg); } + 5% { + transform: rotate(-45deg); + -webkit-transform: rotate(-45deg); } + 12% { + transform: rotate(-405deg); + -webkit-transform: rotate(-405deg); } + 100% { + transform: rotate(-405deg); + -webkit-transform: rotate(-405deg); } } + +.animateSuccessTip { + -webkit-animation: animateSuccessTip 0.75s; + animation: animateSuccessTip 0.75s; } + +.animateSuccessLong { + -webkit-animation: animateSuccessLong 0.75s; + animation: animateSuccessLong 0.75s; } + +.sa-icon.sa-success.animate::after { + -webkit-animation: rotatePlaceholder 4.25s ease-in; + animation: rotatePlaceholder 4.25s ease-in; } + +@-webkit-keyframes animateErrorIcon { + 0% { + transform: rotateX(100deg); + -webkit-transform: rotateX(100deg); + opacity: 0; } + 100% { + transform: rotateX(0deg); + -webkit-transform: rotateX(0deg); + opacity: 1; } } + +@keyframes animateErrorIcon { + 0% { + transform: rotateX(100deg); + -webkit-transform: rotateX(100deg); + opacity: 0; } + 100% { + transform: rotateX(0deg); + -webkit-transform: rotateX(0deg); + opacity: 1; } } + +.animateErrorIcon { + -webkit-animation: animateErrorIcon 0.5s; + animation: animateErrorIcon 0.5s; } + +@-webkit-keyframes animateXMark { + 0% { + transform: scale(0.4); + -webkit-transform: scale(0.4); + margin-top: 26px; + opacity: 0; } + 50% { + transform: scale(0.4); + -webkit-transform: scale(0.4); + margin-top: 26px; + opacity: 0; } + 80% { + transform: scale(1.15); + -webkit-transform: scale(1.15); + margin-top: -6px; } + 100% { + transform: scale(1); + -webkit-transform: scale(1); + margin-top: 0; + opacity: 1; } } + +@keyframes animateXMark { + 0% { + transform: scale(0.4); + -webkit-transform: scale(0.4); + margin-top: 26px; + opacity: 0; } + 50% { + transform: scale(0.4); + -webkit-transform: scale(0.4); + margin-top: 26px; + opacity: 0; } + 80% { + transform: scale(1.15); + -webkit-transform: scale(1.15); + margin-top: -6px; } + 100% { + transform: scale(1); + -webkit-transform: scale(1); + margin-top: 0; + opacity: 1; } } + +.animateXMark { + -webkit-animation: animateXMark 0.5s; + animation: animateXMark 0.5s; } + +@-webkit-keyframes pulseWarning { + 0% { + border-color: #F8D486; } + 100% { + border-color: #F8BB86; } } + +@keyframes pulseWarning { + 0% { + border-color: #F8D486; } + 100% { + border-color: #F8BB86; } } + +.pulseWarning { + -webkit-animation: pulseWarning 0.75s infinite alternate; + animation: pulseWarning 0.75s infinite alternate; } + +@-webkit-keyframes pulseWarningIns { + 0% { + background-color: #F8D486; } + 100% { + background-color: #F8BB86; } } + +@keyframes pulseWarningIns { + 0% { + background-color: #F8D486; } + 100% { + background-color: #F8BB86; } } + +.pulseWarningIns { + -webkit-animation: pulseWarningIns 0.75s infinite alternate; + animation: pulseWarningIns 0.75s infinite alternate; } + +@-webkit-keyframes rotate-loading { + 0% { + transform: rotate(0deg); } + 100% { + transform: rotate(360deg); } } + +@keyframes rotate-loading { + 0% { + transform: rotate(0deg); } + 100% { + transform: rotate(360deg); } } + +/* Internet Explorer 9 has some special quirks that are fixed here */ +/* The icons are not animated. */ +/* This file is automatically merged into sweet-alert.min.js through Gulp */ +/* Error icon */ +.sweet-alert .sa-icon.sa-error .sa-line.sa-left { + -ms-transform: rotate(45deg) \9; } + +.sweet-alert .sa-icon.sa-error .sa-line.sa-right { + -ms-transform: rotate(-45deg) \9; } + +/* Success icon */ +.sweet-alert .sa-icon.sa-success { + border-color: transparent\9; } + +.sweet-alert .sa-icon.sa-success .sa-line.sa-tip { + -ms-transform: rotate(45deg) \9; } + +.sweet-alert .sa-icon.sa-success .sa-line.sa-long { + -ms-transform: rotate(-45deg) \9; } + +/*! + * Load Awesome v1.1.0 (http://github.danielcardoso.net/load-awesome/) + * Copyright 2015 Daniel Cardoso <@DanielCardoso> + * Licensed under MIT + */ +.la-ball-fall, +.la-ball-fall > div { + position: relative; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; } + +.la-ball-fall { + display: block; + font-size: 0; + color: #fff; } + +.la-ball-fall.la-dark { + color: #333; } + +.la-ball-fall > div { + display: inline-block; + float: none; + background-color: currentColor; + border: 0 solid currentColor; } + +.la-ball-fall { + width: 54px; + height: 18px; } + +.la-ball-fall > div { + width: 10px; + height: 10px; + margin: 4px; + border-radius: 100%; + opacity: 0; + -webkit-animation: ball-fall 1s ease-in-out infinite; + -moz-animation: ball-fall 1s ease-in-out infinite; + -o-animation: ball-fall 1s ease-in-out infinite; + animation: ball-fall 1s ease-in-out infinite; } + +.la-ball-fall > div:nth-child(1) { + -webkit-animation-delay: -200ms; + -moz-animation-delay: -200ms; + -o-animation-delay: -200ms; + animation-delay: -200ms; } + +.la-ball-fall > div:nth-child(2) { + -webkit-animation-delay: -100ms; + -moz-animation-delay: -100ms; + -o-animation-delay: -100ms; + animation-delay: -100ms; } + +.la-ball-fall > div:nth-child(3) { + -webkit-animation-delay: 0ms; + -moz-animation-delay: 0ms; + -o-animation-delay: 0ms; + animation-delay: 0ms; } + +.la-ball-fall.la-sm { + width: 26px; + height: 8px; } + +.la-ball-fall.la-sm > div { + width: 4px; + height: 4px; + margin: 2px; } + +.la-ball-fall.la-2x { + width: 108px; + height: 36px; } + +.la-ball-fall.la-2x > div { + width: 20px; + height: 20px; + margin: 8px; } + +.la-ball-fall.la-3x { + width: 162px; + height: 54px; } + +.la-ball-fall.la-3x > div { + width: 30px; + height: 30px; + margin: 12px; } + +/* + * Animation + */ +@-webkit-keyframes ball-fall { + 0% { + opacity: 0; + -webkit-transform: translateY(-145%); + transform: translateY(-145%); } + 10% { + opacity: .5; } + 20% { + opacity: 1; + -webkit-transform: translateY(0); + transform: translateY(0); } + 80% { + opacity: 1; + -webkit-transform: translateY(0); + transform: translateY(0); } + 90% { + opacity: .5; } + 100% { + opacity: 0; + -webkit-transform: translateY(145%); + transform: translateY(145%); } } + +@-moz-keyframes ball-fall { + 0% { + opacity: 0; + -moz-transform: translateY(-145%); + transform: translateY(-145%); } + 10% { + opacity: .5; } + 20% { + opacity: 1; + -moz-transform: translateY(0); + transform: translateY(0); } + 80% { + opacity: 1; + -moz-transform: translateY(0); + transform: translateY(0); } + 90% { + opacity: .5; } + 100% { + opacity: 0; + -moz-transform: translateY(145%); + transform: translateY(145%); } } + +@-o-keyframes ball-fall { + 0% { + opacity: 0; + -o-transform: translateY(-145%); + transform: translateY(-145%); } + 10% { + opacity: .5; } + 20% { + opacity: 1; + -o-transform: translateY(0); + transform: translateY(0); } + 80% { + opacity: 1; + -o-transform: translateY(0); + transform: translateY(0); } + 90% { + opacity: .5; } + 100% { + opacity: 0; + -o-transform: translateY(145%); + transform: translateY(145%); } } + +@keyframes ball-fall { + 0% { + opacity: 0; + -webkit-transform: translateY(-145%); + -moz-transform: translateY(-145%); + -o-transform: translateY(-145%); + transform: translateY(-145%); } + 10% { + opacity: .5; } + 20% { + opacity: 1; + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -o-transform: translateY(0); + transform: translateY(0); } + 80% { + opacity: 1; + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -o-transform: translateY(0); + transform: translateY(0); } + 90% { + opacity: .5; } + 100% { + opacity: 0; + -webkit-transform: translateY(145%); + -moz-transform: translateY(145%); + -o-transform: translateY(145%); + transform: translateY(145%); } } diff --git a/node_modules/sweetalert/dist/sweetalert.min.js b/node_modules/sweetalert/dist/sweetalert.min.js new file mode 100644 index 0000000..5c997b4 --- /dev/null +++ b/node_modules/sweetalert/dist/sweetalert.min.js @@ -0,0 +1 @@ +!function(e,t,n){"use strict";!function o(e,t,n){function a(s,l){if(!t[s]){if(!e[s]){var i="function"==typeof require&&require;if(!l&&i)return i(s,!0);if(r)return r(s,!0);var u=new Error("Cannot find module '"+s+"'");throw u.code="MODULE_NOT_FOUND",u}var c=t[s]={exports:{}};e[s][0].call(c.exports,function(t){var n=e[s][1][t];return a(n?n:t)},c,c.exports,o,e,t,n)}return t[s].exports}for(var r="function"==typeof require&&require,s=0;s=0;)n=n.replace(" "+t+" "," ");e.className=n.replace(/^\s+|\s+$/g,"")}},i=function(e){var n=t.createElement("div");return n.appendChild(t.createTextNode(e)),n.innerHTML},u=function(e){e.style.opacity="",e.style.display="block"},c=function(e){if(e&&!e.length)return u(e);for(var t=0;t0?setTimeout(o,t):e.style.display="none"});o()},h=function(n){if("function"==typeof MouseEvent){var o=new MouseEvent("click",{view:e,bubbles:!1,cancelable:!0});n.dispatchEvent(o)}else if(t.createEvent){var a=t.createEvent("MouseEvents");a.initEvent("click",!1,!1),n.dispatchEvent(a)}else t.createEventObject?n.fireEvent("onclick"):"function"==typeof n.onclick&&n.onclick()},b=function(t){"function"==typeof t.stopPropagation?(t.stopPropagation(),t.preventDefault()):e.event&&e.event.hasOwnProperty("cancelBubble")&&(e.event.cancelBubble=!0)};a.hasClass=r,a.addClass=s,a.removeClass=l,a.escapeHtml=i,a._show=u,a.show=c,a._hide=d,a.hide=f,a.isDescendant=p,a.getTopMargin=m,a.fadeIn=v,a.fadeOut=y,a.fireClick=h,a.stopEventPropagation=b},{}],5:[function(t,o,a){Object.defineProperty(a,"__esModule",{value:!0});var r=t("./handle-dom"),s=t("./handle-swal-dom"),l=function(t,o,a){var l=t||e.event,i=l.keyCode||l.which,u=a.querySelector("button.confirm"),c=a.querySelector("button.cancel"),d=a.querySelectorAll("button[tabindex]");if(-1!==[9,13,32,27].indexOf(i)){for(var f=l.target||l.srcElement,p=-1,m=0;m"),i.innerHTML=e.html?e.text:s.escapeHtml(e.text||"").split("\n").join("
"),e.text&&s.show(i),e.customClass)s.addClass(t,e.customClass),t.setAttribute("data-custom-class",e.customClass);else{var d=t.getAttribute("data-custom-class");s.removeClass(t,d),t.setAttribute("data-custom-class","")}if(s.hide(t.querySelectorAll(".sa-icon")),e.type&&!a.isIE8()){var f=function(){for(var o=!1,a=0;ao;o++)n=parseInt(e.substr(2*o,2),16),n=Math.round(Math.min(Math.max(0,n+n*t),255)).toString(16),a+=("00"+n).substr(n.length);return a};o.extend=a,o.hexToRgb=r,o.isIE8=s,o.logStr=l,o.colorLuminance=i},{}]},{},[1]),"function"==typeof define&&define.amd?define(function(){return sweetAlert}):"undefined"!=typeof module&&module.exports&&(module.exports=sweetAlert)}(window,document); \ No newline at end of file diff --git a/node_modules/sweetalert/example/example.css b/node_modules/sweetalert/example/example.css new file mode 100644 index 0000000..c9bbe7a --- /dev/null +++ b/node_modules/sweetalert/example/example.css @@ -0,0 +1,442 @@ +@import url(http://fonts.googleapis.com/css?family=Open+Sans:400,600,700,300); +@import url(http://fonts.googleapis.com/css?family=Open+Sans+Condensed:700); +body { + background-color: #f2f4f6; + font-family: 'Open Sans', sans-serif; + text-align: center; } + +h1 { + background-image: url("images/logo_big.png"); + background-image: -webkit-image-set(url("images/logo_big.png") 1x, url("images/logo_big@2x.png") 2x); + width: 385px; + height: 81px; + text-indent: -9999px; + white-space: nowrap; + margin: 50px auto; } + @media all and (max-width: 420px) { + h1 { + width: 300px; + background-size: contain; + background-repeat: no-repeat; + background-position: center; } } + @media all and (max-width: 330px) { + h1 { + width: 250px; } } + +h2 { + font-size: 20px; + color: #A9B2BC; + line-height: 25px; + text-transform: uppercase; + font-weight: 300; + text-align: center; + display: block; } + +h3 { + font-size: 28px; + color: #C7CCD1; + text-transform: uppercase; + font-family: 'Open Sans Condensed', sans-serif; + margin-top: 100px; + text-align: center; + position: relative; } + h3#download-section { + margin-top: 50px; + padding-top: 40px; } + h3::after { + content: ""; + background-color: #e2e5e8; + height: 4px; + width: 700px; + left: 50%; + margin-left: -350px; + position: absolute; + margin-top: -50px; + border-radius: 2px; } + @media all and (max-width: 740px) { + h3::after { + width: auto; + left: 20px; + right: 20px; + margin-left: 0; } } + +a { + text-decoration: none; } + +p { + max-width: 826px; + margin: 30px auto; + font-size: 17px; + font-weight: 300; + color: #848D94; + line-height: 25px; + text-align: left; } + p.center { + text-align: center; } + p strong { + color: #8A8F94; + font-weight: 600; } + p a { + color: #9ECADF; + font-weight: 600; } + p a:hover { + text-decoration: underline; } + p a.twitter { + color: #5eaade; } + p a.dribbble { + color: #f26798; } + p a.github { + color: #323131; } + +button, .button { + background-color: #AEDEF4; + color: white; + border: none; + box-shadow: none; + font-size: 17px; + font-weight: 500; + font-weight: 600; + border-radius: 3px; + padding: 15px 35px; + margin: 26px 5px 0 5px; + cursor: pointer; } + button:focus, .button:focus { + outline: none; } + button:hover, .button:hover { + background-color: #a1d9f2; } + button:active, .button:active { + background-color: #81ccee; } + button.cancel, .button.cancel { + background-color: #D0D0D0; } + button.cancel:hover, .button.cancel:hover { + background-color: #c8c8c8; } + button.cancel:active, .button.cancel:active { + background-color: #b6b6b6; } + button.download, .button.download { + position: fixed; + right: 30px; + top: 0; + background-color: rgba(255, 255, 255, 0.9); + color: #ABCADA; + font-weight: 500; + text-transform: uppercase; + z-index: 3; } + @media all and (max-width: 1278px) { + button.download, .button.download { + display: none; } } + +.center-container { + max-width: 700px; + margin: 70px auto; } + +pre { + background-color: #49483e; + color: #f8f8f2; + padding: 10px; + border-radius: 5px; + white-space: pre-line; + text-align: left; + font-size: 14px; + max-width: 600px; } + pre .str { + color: #e6db74; } + pre .func { + color: #66d9ef; } + pre .val { + color: #a381ff; } + pre .tag { + color: #e92772; } + pre .attr { + color: #a6e22d; } + pre .arg { + color: #fd9720; } + +.showcase { + background-color: #eceef0; + padding: 20px; + display: inline-block; + width: 383px; + vertical-align: top; + position: relative; } + @media all and (max-width: 865px) { + .showcase { + margin: 5px auto; + padding: 46px 20px; } } + @media all and (max-width: 440px) { + .showcase { + width: auto; } } + .showcase h4 { + font-size: 16px; + color: #BCBCBC; + line-height: 22px; + margin: 0 auto; + font-weight: 400; } + .showcase.sweet h4 { + width: 117px; + height: 25px; + margin-top: -3px; + text-indent: -9999px; + background-image: url("images/logo_small.png"); + background-image: -webkit-image-set(url("images/logo_small.png") 1x, url("images/logo_small@2x.png") 2x); } + .showcase h5 { + margin-bottom: -7px; + text-align: left; + font-weight: 500; + text-transform: uppercase; + color: #c2c2c2; } + .showcase button { + margin-bottom: 10px; } + .showcase .vs-icon { + background-image: url("images/vs_icon.png"); + background-image: -webkit-image-set(url("images/vs_icon.png") 1x, url("images/vs_icon@2x.png") 2x); + width: 69px; + height: 69px; + position: absolute; + right: -34px; + top: 60px; + z-index: 2; } + @media all and (max-width: 865px) { + .showcase .vs-icon { + margin: 5px auto; + right: auto; + left: 50%; + margin-left: -35px; + top: auto; + bottom: -35px; } } + +ul.examples { + list-style-type: none; + width: 700px; + margin: 0 auto; + text-align: left; + padding-left: 0; } + @media all and (max-width: 758px) { + ul.examples { + width: auto; } } + ul.examples li { + padding-left: 0; } + ul.examples .ui, ul.examples pre { + display: inline-block; + vertical-align: top; } + @media all and (max-width: 758px) { + ul.examples .ui, ul.examples pre { + display: block; + max-width: none; + margin: 0 auto; } } + ul.examples .ui { + width: 300px; + text-align: center; } + ul.examples .ui button { + margin-top: 12px; } + ul.examples .ui p { + text-align: center; + margin-bottom: 0; } + ul.examples pre { + max-width: 370px; + margin-top: 67px; } + @media all and (max-width: 758px) { + ul.examples pre { + margin-top: 16px !important; + margin-bottom: 60px; } } + ul.examples .warning pre { + margin-top: 93px; } + +ol { + max-width: 700px; + margin: 70px auto; + list-style-position: inside; + padding-left: 0; } + ol li { + color: #A7ADB2; } + ol li p { + margin-bottom: 10px; } + +table { + width: 700px; + font-size: 14px; + color: #8a8f94; + margin: 10px auto; + text-align: left; + border-collapse: collapse; } + @media all and (max-width: 750px) { + table { + width: auto; + margin: 10px 20px; } } + table th { + background-color: white; + padding: 9px; + color: #acb9be; + font-weight: 400; + text-align: center; + position: relative; } + table th .border-left, table th .border-right { + position: absolute; + background-color: white; + border-radius: 50%; + top: 0; + left: -17px; + width: 37px; + height: 37px; } + table th .border-right { + left: auto; + right: -17px; } + @media all and (max-width: 750px) { + table th:nth-child(2) { + display: none; } } + table td { + padding: 10px 20px; + vertical-align: top; } + table td:first-child { + padding-left: 0px; } + table td:last-child { + padding-right: 0px; } + @media all and (max-width: 750px) { + table td:nth-child(2) { + display: none; } } + @media all and (max-width: 360px) { + table td { + padding: 10px 4px; } + table td b { + font-size: 13px; } } + +footer { + margin-top: 100px; + padding-bottom: 30px; + color: #9A999F; + display: inline-block; + position: relative; + color: gray; + font-weight: 400; + color: #93a1aa; + font-weight: 300; } + footer .te-logo { + text-indent: -99999px; + background-size: contain; + background-repeat: no-repeat; + background-position: center center; + height: 16px; + width: 16px; + display: inline-block; + margin-right: 5px; + background-image: url("images/te-logo-small.svg"); + position: absolute; + left: -22px; + top: 3px; } + +.sweet-alert.twitter { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + padding: 15px; + padding-top: 55px; + text-align: right; + border-radius: 6px; + box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.11), 0px 6px 30px rgba(0, 0, 0, 0.14); } + .sweet-alert.twitter ~ .sweet-overlay { + background: rgba(41, 47, 51, 0.9); } + .sweet-alert.twitter h2 { + position: absolute; + top: 0; + left: 0; + right: 0; + height: 40px; + line-height: 40px; + font-size: 16px; + font-weight: 400; + color: #8899a6; + margin: 0; + color: #66757f; + border-bottom: 1px solid #e1e8ed; } + .sweet-alert.twitter p { + display: block; + text-align: center; + color: #66757f; + font-weight: 400; + font-size: 13px; + margin-top: 7px; } + .sweet-alert.twitter .sa-button-container { + background-color: #f5f8fa; + border-top: 1px solid #e1e8ed; + box-shadow: 0px -1px 0px white; + margin: -15px; + margin-top: 0; } + .sweet-alert.twitter[data-has-confirm-button=false][data-has-cancel-button=false] { + padding-bottom: 10px; } + .sweet-alert.twitter[data-has-confirm-button=false][data-has-cancel-button=false] .sa-button-container { + display: none; } + .sweet-alert.twitter button { + border-radius: 2px; + box-shadow: none !important; + text-shadow: 0px -1px 0px rgba(0, 0, 0, 0.3); + margin: 17px 0px; + border-radius: 4px; + font-size: 14px; + font-weight: 600; + padding: 8px 16px; + position: relative; } + .sweet-alert.twitter button:focus, .sweet-alert.twitter button.cancel:focus { + box-shadow: none !important; } + .sweet-alert.twitter button:focus::before, .sweet-alert.twitter button.cancel:focus::before { + content: ""; + position: absolute; + left: -5px; + top: -5px; + right: -5px; + bottom: -5px; + border: 2px solid #a5b0b4; + border-radius: 8px; } + .sweet-alert.twitter button.confirm { + background-color: #55acee !important; + background-image: linear-gradient(transparent, rgba(0, 0, 0, 0.05)); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#00000000, endColorstr=#0C000000)"; + border: 1px solid #3b88c3; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15); + margin-right: 15px; } + .sweet-alert.twitter button.confirm:hover { + background-color: #55acee; + background-image: linear-gradient(transparent, rgba(0, 0, 0, 0.15)); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#00000000, endColorstr=#26000000)"; + border-color: #3b88c3; } + .sweet-alert.twitter button.cancel { + color: #66757e; + background-color: #f5f8fa; + background-image: linear-gradient(#fff, #f5f8fa); + text-shadow: 0px -1px 0px white; + margin-right: 9px; + border: 1px solid #e1e8ed; } + .sweet-alert.twitter button.cancel:hover, .sweet-alert.twitter button.cancel:focus:hover { + background-color: #e1e8ed; + background-image: linear-gradient(#fff, #e1e8ed); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(enabled=false)"; + border-color: #e1e8ed; } + .sweet-alert.twitter button.cancel:focus { + background: #fff; + border-color: #fff; } + .sweet-alert.twitter .sa-icon { + transform: scale(0.72); + margin-bottom: -2px; + margin-top: -10px; } + .sweet-alert.twitter input { + border: 1px solid #e1e8ed; + border-radius: 3px; + padding: 10px 7px; + height: auto; + box-shadow: none; + font-size: 13px; + margin: 10px 0; } + .sweet-alert.twitter input:focus { + border-color: #94A1A6; + box-shadow: inset 0 0 0 1px rgba(77, 99, 107, 0.7); } + .sweet-alert.twitter fieldset .sa-input-error { + display: none; } + .sweet-alert.twitter .sa-error-container { + text-align: center; + border: none; + background-color: #fbedc0; + margin-bottom: 6px; } + .sweet-alert.twitter .sa-error-container.show { + border: 1px solid #f0e1b9; } + .sweet-alert.twitter .sa-error-container .icon { + display: none; } + .sweet-alert.twitter .sa-error-container p { + color: #292f33; + font-weight: 600; + margin-top: 0; } diff --git a/node_modules/sweetalert/example/example.scss b/node_modules/sweetalert/example/example.scss new file mode 100644 index 0000000..b915a10 --- /dev/null +++ b/node_modules/sweetalert/example/example.scss @@ -0,0 +1,580 @@ +@import url(http://fonts.googleapis.com/css?family=Open+Sans:400,600,700,300); // Open Sans font +@import url(http://fonts.googleapis.com/css?family=Open+Sans+Condensed:700); // Condensed + +@mixin retina-background($url, $type:png) { + background-image: url("#{$url}.#{$type}"); + background-image: -webkit-image-set(url("#{$url}.#{$type}") 1x, + url("#{$url}@2x.#{$type}") 2x); +} + +body { + background-color: #f2f4f6; + font-family: 'Open Sans', sans-serif; + text-align: center; +} + +h1 { + @include retina-background("images/logo_big"); + width: 385px; + height: 81px; + text-indent: -9999px; + white-space: nowrap; + margin: 50px auto; + @media all and (max-width: 420px) { + width: 300px; + background-size: contain; + background-repeat: no-repeat; + background-position: center; + } + @media all and (max-width: 330px) { + width: 250px; + } +} +h2 { + font-size: 20px; + color: #A9B2BC; + line-height: 25px; + text-transform: uppercase; + font-weight: 300; + text-align: center; + display: block; +} +h3 { + font-size: 28px; + color: #C7CCD1; + text-transform: uppercase; + font-family: 'Open Sans Condensed', sans-serif; + margin-top: 100px; + text-align: center; + position: relative; + &#download-section { + margin-top: 50px; + padding-top: 40px; + } + &::after { + content: ""; + background-color: #e2e5e8; + height: 4px; + width: 700px; + left: 50%; + margin-left: -350px; + position: absolute; + margin-top: -50px; + border-radius: 2px; + + @media all and (max-width: 740px) { + width: auto; + left: 20px; + right: 20px; + margin-left: 0; + } + } +} + +a { + text-decoration: none; +} + +p { + max-width: 826px; + margin: 30px auto; + font-size: 17px; + font-weight: 300; + color: #848D94; + line-height: 25px; + text-align: left; + &.center { + text-align: center; + } + + strong { + color: #8A8F94; + font-weight: 600; + } + a { + color: #9ECADF; + font-weight: 600; + &:hover { + text-decoration: underline; + } + &.twitter { + color: #5eaade; + } + &.dribbble { + color: #f26798; + } + &.github { + color: #323131; + } + } +} + +button, .button { + $btnBlue: #AEDEF4; + $btnGray: #D0D0D0; + + background-color: $btnBlue; + color: white; + border: none; + box-shadow: none; + font-size: 17px; + font-weight: 500; + font-weight: 600; + border-radius: 3px; + padding: 15px 35px; + margin: 26px 5px 0 5px; + cursor: pointer; + &:focus { + outline: none; + } + &:hover { + background-color: darken($btnBlue, 3%); + } + &:active { + background-color: darken($btnBlue, 10%); + } + &.cancel { + background-color: $btnGray; + &:hover { + background-color: darken($btnGray, 3%); + } + &:active { + background-color: darken($btnGray, 10%); + } + } + &.download { + position: fixed; + right: 30px; + top: 0; + background-color: rgba(white, 0.9); + color: #ABCADA; + font-weight: 500; + text-transform: uppercase; + z-index: 3; + + @media all and (max-width: 1278px) { + display: none; + } + } +} + +.center-container { + max-width: 700px; + margin: 70px auto; +} + +pre { + background-color: #49483e; + color: #f8f8f2; + padding: 10px; + border-radius: 5px; + white-space: pre-line; + text-align: left; + font-size: 14px; + max-width: 600px; + + .str { + color: #e6db74; + } + .func { + color: #66d9ef; + } + .val { + color: #a381ff; + } + .tag { + color: #e92772; + } + .attr { + color: #a6e22d; + } + .arg { + color: #fd9720; + } +} + +.showcase { + background-color: #eceef0; + padding: 20px; + display: inline-block; + width: 383px; + vertical-align: top; + position: relative; + + @media all and (max-width: 865px) { + margin: 5px auto; + padding: 46px 20px; + } + @media all and (max-width: 440px) { + width: auto; + } + + h4 { + font-size: 16px; + color: #BCBCBC; + line-height: 22px; + margin: 0 auto; + font-weight: 400; + } + &.sweet h4 { + width: 117px; + height: 25px; + margin-top: -3px; + text-indent: -9999px; + @include retina-background("images/logo_small"); + } + h5 { + margin-bottom: -7px; + text-align: left; + font-weight: 500; + text-transform: uppercase; + color: rgb(194, 194, 194); + } + + button { + margin-bottom: 10px; + } + + .vs-icon { + @include retina-background("images/vs_icon"); + width: 69px; + height: 69px; + position: absolute; + right: -34px; + top: 60px; + z-index: 2; + + @media all and (max-width: 865px) { + margin: 5px auto; + right: auto; + left: 50%; + margin-left: -35px; + top: auto; + bottom: -35px; + } + } +} + + +ul.examples { + list-style-type: none; + width: 700px; + margin: 0 auto; + text-align: left; + padding-left: 0; + @media all and (max-width: 758px) { + width: auto; + } + + li { + padding-left: 0; + } + + .ui, pre { + display: inline-block; + vertical-align: top; + + @media all and (max-width: 758px) { + display: block; + max-width: none; + margin: 0 auto; + } + } + .ui { + width: 300px; + text-align: center; + + button { + margin-top: 12px; + } + + p { + text-align: center; + margin-bottom: 0; + } + } + + pre { + max-width: 370px; + margin-top: 67px; + + @media all and (max-width: 758px) { + margin-top: 16px !important; + margin-bottom: 60px; + } + } + .warning pre { + margin-top: 93px; + } +} + + +ol { + max-width: 700px; + margin: 70px auto; + list-style-position: inside; + padding-left: 0; + + li { + color: #A7ADB2; + + p { + margin-bottom: 10px; + } + } +} + + +table { + width: 700px; + font-size: 14px; + color: #8a8f94; + margin: 10px auto; + text-align: left; + border-collapse: collapse; + @media all and (max-width: 750px) { + width: auto; + margin: 10px 20px; + } + + th { + background-color: white; + padding: 9px; + color: rgb(172, 185, 190); + font-weight: 400; + text-align: center; + position: relative; + .border-left, .border-right { + position: absolute; + background-color: white; + border-radius: 50%; + top: 0; + left: -17px; + width: 37px; + height: 37px; + } + .border-right { + left: auto; + right: -17px; + } + @media all and (max-width: 750px) { + &:nth-child(2) { + display: none; + } + } + } + + td { + padding: 10px 20px; + vertical-align: top; + &:first-child { + padding-left: 0px; + } + &:last-child { + padding-right: 0px; + } + @media all and (max-width: 750px) { + &:nth-child(2) { + display: none; + } + } + @media all and (max-width: 360px) { + padding: 10px 4px; + b { + font-size: 13px; + } + } + } +} + +footer { + margin-top: 100px; + padding-bottom: 30px; + color: #9A999F; + display: inline-block; + position: relative; + color: gray; + font-weight: 400; + color: rgb(147, 161, 170); + font-weight: 300; + + .te-logo { + text-indent: -99999px; + background-size: contain; + background-repeat: no-repeat; + background-position: center center; + height: 16px; + width: 16px; + display: inline-block; + margin-right: 5px; + background-image: url("images/te-logo-small.svg"); + position: absolute; + left: -22px; + top: 3px; + } +} + + +// Theme example (Twitter) +// Twitter Theme for SweetAlert +// By Tristan Edwards + +.sweet-alert.twitter { + $header-height: 40px; + $footer-height: 66px; + $text-color: #66757f; + $padding: 15px; + + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + padding: $padding; + padding-top: $header-height + $padding; + text-align: right; // Align buttons + border-radius: 6px; + box-shadow: 0px 0px 0px 1px rgba(black, 0.11), 0px 6px 30px rgba(black, 0.14); + + ~ .sweet-overlay { + background: rgba(41,47,51,0.9); + } + + h2 { + position: absolute; + top: 0; + left: 0; + right: 0; + height: $header-height; + line-height: $header-height; + font-size: 16px; + font-weight: 400; + color: #8899a6; + margin: 0; + color: $text-color; + border-bottom: 1px solid #e1e8ed; + } + + p { + display: block; + text-align: center; + color: #66757f; + font-weight: 400; + font-size: 13px; + margin-top: 7px; + } + + .sa-button-container { + background-color: #f5f8fa; + border-top: 1px solid #e1e8ed; + box-shadow: 0px -1px 0px white; + margin: -$padding; + margin-top: 0; + } + &[data-has-confirm-button=false][data-has-cancel-button=false] { + padding-bottom: 10px; + .sa-button-container { + display: none; + } + } + + button { + border-radius: 2px; + box-shadow: none !important; + text-shadow: 0px -1px 0px rgba(black, 0.3); + margin: 17px 0px; + border-radius: 4px; + font-size: 14px; + font-weight: 600; + padding: 8px 16px; + position: relative; + &:focus, &.cancel:focus { + box-shadow: none !important; + &::before { + content: ""; + position: absolute; + left: -5px; + top: -5px; + right: -5px; + bottom: -5px; + border: 2px solid #a5b0b4; + border-radius: 8px; + } + } + + &.confirm { + background-color: #55acee !important; + background-image: linear-gradient(rgba(0,0,0,0),rgba(0,0,0,0.05)); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#00000000, endColorstr=#0C000000)"; + border: 1px solid #3b88c3; + box-shadow: inset 0 1px 0 rgba(255,255,255,0.15); + margin-right: $padding; + &:hover { + background-color: #55acee; + background-image: linear-gradient(rgba(0,0,0,0),rgba(0,0,0,0.15)); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#00000000, endColorstr=#26000000)"; + border-color: #3b88c3; + } + } + &.cancel { + color: #66757e; + background-color: #f5f8fa; + background-image: linear-gradient(#fff,#f5f8fa); + text-shadow: 0px -1px 0px white; + margin-right: 9px; + border: 1px solid #e1e8ed; + &:hover, &:focus:hover { + background-color: #e1e8ed; + background-image: linear-gradient(#fff,#e1e8ed); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(enabled=false)"; + border-color: #e1e8ed; + } + &:focus { + background: #fff; + border-color: #fff; + } + } + } + + .sa-icon { + transform: scale(0.72); + margin-bottom: -2px; + margin-top: -10px; + } + + input { + border: 1px solid #e1e8ed; + border-radius: 3px; + padding: 10px 7px; + height: auto; + box-shadow: none; + font-size: 13px; + margin: 10px 0; + &:focus { + border-color: #94A1A6; + box-shadow: inset 0 0 0 1px rgba(77, 99, 107, 0.7); + } + } + + fieldset .sa-input-error { + display: none; + } + + .sa-error-container { + text-align: center; + border: none; + background-color: #fbedc0; + margin-bottom: 6px; + &.show { + border: 1px solid #f0e1b9; + } + + .icon { + display: none; + } + p { + color: #292f33; + font-weight: 600; + margin-top: 0; + } + } +} + + + diff --git a/node_modules/sweetalert/example/images/logo_big.png b/node_modules/sweetalert/example/images/logo_big.png new file mode 100644 index 0000000000000000000000000000000000000000..115df19f2a7a1479e464cd5722f563af39b2413b GIT binary patch literal 17162 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 Rvo8Pu002ovPDHLkV1kY*4sieg literal 0 HcmV?d00001 diff --git a/node_modules/sweetalert/example/images/logo_big@2x.png b/node_modules/sweetalert/example/images/logo_big@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..f2e9b8ff32c1ce344079ef8907207b32069d6770 GIT binary patch literal 37467 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 literal 0 HcmV?d00001 diff --git a/node_modules/sweetalert/example/images/logo_small.png b/node_modules/sweetalert/example/images/logo_small.png new file mode 100644 index 0000000000000000000000000000000000000000..710365fdf5269408da0a2e7b988df3f2f058f06a GIT binary patch literal 4459 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 z

S<7X3Tpq?fz-)Qd>PHQfpAq&xZ2!BEF7YTnc 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 literal 0 HcmV?d00001 diff --git a/node_modules/sweetalert/example/images/te-logo-small.svg b/node_modules/sweetalert/example/images/te-logo-small.svg new file mode 100644 index 0000000..88c8b6b --- /dev/null +++ b/node_modules/sweetalert/example/images/te-logo-small.svg @@ -0,0 +1,12 @@ + + + + te-logo-small + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/node_modules/sweetalert/example/images/thumbs-up.jpg b/node_modules/sweetalert/example/images/thumbs-up.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3e7c7474f0ce33c927eddc9f50ecbbf00464c526 GIT binary patch literal 30052 zcma&N1#}!ulP%a{W@ct)W@czHGfNgTTe6rLEoNr4z+$$TnaN^?)%Wkt?3##T^k5(; z08kVVFcgr_0l@dKVSjb@Pw!tt{a1m3g@%KGgaQZqde(nd{zoG+000RJ^3O9t!686F z;l3sU4E*bEXaEW-3<(-63n{t?1|}JniZLs;C>uEij#H2cyQ*`)7|_&3oRSI`<-hg# zxe9;>`x*oa7z#iL&@&9u>xd8aKb&a7j=mk>FDZP}co&@EOp&|%J-=QJmFf}`Q^6_k z^W&UhUIm6$LA8U54sS{}R5_;swv#n}W(w>&MdY@iT_jI^!fkkeVPBRf)hRyk1}>SH z5>e)5eXx{RVOOVNl+iQ;MhAg)+-^7?!4&ghKt%(SJ0{v7IQ=0)Tx{)XI88}t6N~W* zS=U~3nXiUQe@+~K_kBLNbEtqx#{P0zcdQ68eS%^jwlBQEU;>@PZ}I~ znQM1%oU_Wyuz$>K9g4jRW49{XN3Z*PwW4+!sY!Y1ffgR74CW9xRYl?{hnmUZN??<( z_=H$WXHhnXF!^iXHa8;Jzi|oz7b5utP$70%c)qmiu$+&vbQ0v|w*AHiA5;Ss?O|cT zZFr>5T|p+i{#acQ7)DS>%^_9fjUg>&wMj3)Xnx9lGAXf;MB*>LDAvZiRdYx};cb@d zXut`N&}DFY314r#2(2pDvL*dUbvTJCiUztN?n1}+LQ)3>f`jQDCFj6T z8sZ`B5BSTyx$|WrXm+maX%?5UPMcGZ(5SKjSltyoN8-fQoOmLg`RS-&7dP8^8&EE> zp>dR^Oh)(Odlpmer>HhJ41afOhZ^Q=z%ec0DRIWRR=QD~HkQ#=+1JFG(3$3d+qrhq zQK{4l2h-rV5AjO!N|H?ANd5m<-2ZBdU>cU=XjXQeE(eKFz~i%Ao1Q9;QwNNS->euZ zl5(u(eL*b-`lQ0FIkRv~Y*66k(!$6ZSf%Uy2r0M`wHVcM3zPnf-ih|XaFDyajGQ9l zYN6-{28(p(g@>i{G{0{7>nAC9UcYBus(4Vbbc=i9VD&mOKL)r##{Kek`+3j%wox`{ z{uV$72SE89>;u(VjtOlYYv!%)dBxnwQ+NX?}0|8KFVPHyO z(Je`WlD?k+Bfh~53bUmNpC03tGhHv#HfNF0Qtk6jBqq##z!?r_5S9ieO|m>qi3$nt zLl~Ho&_8T|VEj6e(Pi`2M6=?}eX&jB1!i$oV(NUt5k3j}$K9EeGb77@kGlkhG~?jB zC0|Gx85JE|s_cH-?&{ye4!Dk2+k|BA2Sw{EDd{ne0D}E56_X8UeEE$n@u^-b4b{%7@{d}Po& z!acr9CPAT6VQIer5rhK%f0&J<%y;gTs_YqZKDrY#lEGlbEvQKIphTH=eB4yN+dWCb zZ6HsDJ8yM=ITVGkyZGb|ux;l#{Y$Vt9Tuotjv>br7)+|n{ssr50vi4jA*}xr zkOtOy^}oKK|A9jBVT<1eZfVnx2FCH-|J+>U9Bm{Gs!7=^Goup;t7Gfjbl$YT2KF!D zMB+P!1E67l5F?d>A^4+m6WClfI2erlie{x6^U92i$TLe54`mCl5>oLpOTnZ=x{v;& zZP%o>@CgW1x1Qlm|31U`{tvLg^wXwr(4#WD{J0TwZ`wNf3-UezgBK)r!%$MSXLH?s zF9Cmhdnj8P4fymO@qOZ%c}zp=O}PL8_rVudGt#tBFMhrGP_@rj0;T^30|su}9zOS4 z^y!S}XYT${lb5p}ngtq|vI@koL%!iCORVPb#_d(E z3xMTaapKmSEpjArA5tfDQX=R!SZ%Nd0Yxg+!oRx$sR1C;i84XLV8i!YnaeVkGPd@~F;q(a|c!qR&v&&1r1W-iOTuwARh`7>zT*-t~i;_=5%; z9UBDViCQ&{z`ID7nywbI4yzx#>D;rn5(-nJL_-*mWRvr;g20M`=nS*S2Lb>Da9;zu z(EGCC4|$XL5}pZFoPIGT?0N}BXi(a0Y%CIue?9tg1oaLCg6!W#qJF!BImlHPNCD9|25@@cZk zH($@K5%~(XlfiSuKU}H3PwE}85$2|N)5D-VQY7r4fQt2GS-Jy}&Vsu)uXgOsp0jP= z0NkH=HC^7G`=xw6B9%yWc#?-ge20*U2oP0+=FwfU(x&(hZ;`H!!A++&#f}#Z#k4V$ z#YJeyUvIK5?tkKl|DwN2xyEZp8}TtJ{}A%k^RMV1={HLXTq+nN7Q|B0ygU=Jg3>Qa z)WMdG9^&b#nCMbGMqa}gLz_T#1Vy7>Z;K5xeXzf|>}D%iMUwkFjRyO!)mgI0GOq4t zb-7wmD61>>a-$Kp~Ble+surq@_}uau*#6wjA@CUd=$+*a{#Y%9m&!6`@qY`#UuAbgz)#csCTy#&2{tn4SVBC`(B9nE(ktW74nE#HH&=8s=8U^b4+O;-qS0TIw zn0m-G*h=!0G$yFnnTL{VI0V>#7}gEaLiq?0=8rg5O3}+;@WL2y$IvA428sJgF8bX) z<3A(BCy%zn&N+AyUvduCW!$*Mmn-%?m2*`j6j2zUl;bWLXY)u$u~sZ%r*tUhyhf%M zIV3$=L#}okEb4KUawFl`8h}=Cm6}v3=~(MlOCU=(9{Ddh-?+np2dRqRa%Qntj0+|C z=8H(hWz&`if^Pr>9s{=}bB|2n?~!;@wHJZrZ8D=)e^COH?#Nz;SO7t;sHie}Asi}OOr-Cd~hH~JR4n_3q8&_96S7DXTC znKGh*77a`vVu>b(pb_Q`kIRDs4J0BqOh%9L!mCMqn&`#}m#QVvn9Oof_a(lN3a75b ziDc{<=R}4aX;BW7xbFswm=|&)g%?e3fQ8WISAU9M4PfHg*x561QMk0>x1 zx;|>OSJd#k{6a%MI?!iKx+GA2uKyDddVX@S#6yUQe4}-weLbJ-oUzAWP4Jf^)TXZJIGGlO zfRf%$TeiQ~C##k4@Q-~olEEiHX<201esF$6u2)Aa*jneHTI+*}VE2?w$U52-^>x-I zal9m6Zq0s9HtqKO5f1h^xVDG@`;6X^My#2XG6Rh4UlYkqKu5mU;b1WA(WR1Ll&O9F zAz!L(#pS(s`3d-)TfVlFE39RLA1SGzT1bXQTp`H<4@^dyF8~Gb!-CFk{pA{nGHRqZ zouCqE{h+;l9}JDeBN3r(5?|oeZg42vR$?=<>Q}{#OHS{jm422~tyYa}F6!$zC*WYU zDOsnQ)BRBQCulswzR|w5@6@$tLZ#}~m`*<&M9#7VJ5LcGI+2ikj*ASW&U>KlDs;gP zLBkGtaU{3mA9yNaHp)C$gu>X1V8{@nQ$8hcP=2!GTJ^aCA!>VzdNxt-OV>^3<=0ozOEo}wVv%k+?|lvqRj&MPvV200DPBr4>%w^>&=HD`p*4VDk;~Zi z%?>GDV9Yk6Qnk@6(vNzN>^#>imuzMJI0XmCjbQl#sLD7|Udq&pgOMsqk~#J|n;01x znH`hpegIf!E5}U>ZVCXHURW>j>dGoI4Xe=9$62M5HVwR06q6iYaz2~QI8^^Qu=0m= zBYhSPO4WLYRhy-?j%Stn4`v_&FH+Onw>|c1TSP-awbwAGz@VP&3bFf61&+SX?mM_@ z%i+G@Izho}gFe6_l@}NW%2D$R%U98irqrEIDNaGziTPQ{Yp*R^NWJoVai?%W!$rkJ zekN^wpx_>?i78T9cpTVW#gp+hm%Mw@F%d!L4^1oYqNZQSMcUCKCv#;GnY4P{8$t#- zo;doV^ZLqzw*HFDiws`Fh`g?Ek%X8-_YecTuE%tmXDX*ic>!@?#K!ioGf6!u^CB;&tos<0GFhY^2IXwpuf#7%LM1kZ zE_#qx#(;o4afh7#V$n^;`o~Cnwo+qg*Fs7cie~E9#o>MTvLZ_?`H~j_W*_XqPe4;r z3Jp4W3cDIAB`DNxk%yFgO)f7>zxKb}c&{%V$7%JP%)wvvg^BtP7rA^JqVi`>W!1= z!okK#k$A&VTQj3z<_7uVdoSMS#FTKSYewB#kT zEL$X~+tnT!V;gmXXr^n-&v-MHuTpIU4<{Y<%btoC6X*;?}r^YW{EkY_`3y{&ub{FFtOKwBa_1)04jE!ly-R8iu;_qc(@w{K1(d!;YIM|2M@pa30Bk#8th@)?#Kcw>NPcU=h0fB1}6NU z0B3My&#LNX$p~CXoY@jIOhOV)6dEXz2l!IwFc|KCRDO`?&umEA!T`jXu1(2k-2MDU z3wX7YYiQNcsXxJt)ec5~W^;Pomer01M`xHsz>_nzyu;cAME(8QG1m^J`~8z-%rJ6! z6QXL(I#Rsm_9wDJtz5e%<13oP<<=q48e=NOIW3lZ2_PC>U)+#XU^f1{X8|Gh%ix!! z+F}e%?TJ5sjzX^H`u!Gbhd*A;sO&@M{06(uu1gAZ@2ax$Tjw-26`1+BHpMDM@#>Z6l{>(ndeHb5;84sL#R3yb4X zQFaf#GX2BlrHR#v!kRp3oJAGZeiu;tk=xQXqbz~Isq`al=2X>X`gV5N56%JfjJ1sp zdA~wNtu{(oUQCuU`U(g?4#w^BCZlCUDA#+}1gdq%Z55$mhXV~(NYfj-8|JO_R_F6N z)%ayGmHOH)b(F|X18r#t7t}qZ2|z4IV!L#FRFwJ&bb!?&PK5dR{8%=q@EfYAE~-*j(Q@~`y^Y|&3RiAeNfDF!gXnq_=0h6xu9Xf3`|DE>&Y2VZpSmmBR#Fp%gU z2ffG&CW#`Vk2!5Jvzx2QC9Ka?FWZG}k<-aaaxbJ$f`Ik<{sf$}zmd$jm9;VpZ z1-E%J1M$^FGR>?q6TfNsTeAH4EIG$|g~-6uewE;FhU z_qj@40?h>`xE=!wmx43{@#o)f6<6?uhgGuip8zkt<-;V$cY|)BitWvyyKOU%{}x62 z1b_we z1(H&hfea?)p_Y?_+zucNV5VWDIQfdxt@`XN$z>fA#Uki0KB646bo84(c+l4sSYvQ( zm{-MCr0HH0R1ope3kmz3J_h#{%(m;qsBfGZL{?x&?ekF(;$l#;cxmQA4tLPqAs zAc?`1-B*D)gT4%51vq3|17O3b2Kn)+0QxLev#A8DOdovE0&Q=FFtSIpZu<@A)&71` z7B{!14~G^$E&~445mu{W*G^I*MxkT|q9HzKkX=q$<3(cJIO8FAIgHNE{*#o*Rbzi@kJ{X&A9h_=6G+P(nPnN< zo^YR0C5>NxbZd20%r>JLTK{21QD24Z)?u11$;VNW8&R6%6uR>EC(%(KKe6^u#OHRg zbnb|v|8|O9I1eVkj5PohuUu^9VRN~a9Qc+hm*lvzzaA^qE<0m$%ea<2_?98r?A7{A zsbU(BM*N{)?>Z0>B%T8<7R2gCgg{7jd=5ikc)eC8*oP`Z4ZeVGP4Ke`*5o~~EdpF^E0ZUEg&K-Tk@PKYWl=--`eY2l*1 ztN25P^`Z67M9p;YYP&Tf&}7#zwhI2_e%Xo#22p6^{M)0oJB-|0{L$H2e65$|3Gw$?xeX zW*F-8?CP~-aa44UxY%qMXQd%iih5MlW4|CYdQn|xM`0A!U>?Q<1A)z&ge4TGHv^% zbQ4tW-jCYUa5Z^>U-@+{dq3-b@F%(;`HgEmq)|?k=giS5G~hzG@2it9$)BbwtU1i) zV8|K~m5OY8iB&)Uv4CX#_9&!QI8T*78&J2L5LrZ+<4v7a=}bk^;U5g(M{GMA)r>76 zCcX7*8m&W@2m5RHfKDaC^wJG^u{0MnOUd8%)D);7VeT7g4RkIdP*i)+Mefu*o6AQw zw{vXxf${<(OUe)L-Q*j>&!UE@4r55HrM~m$6QI11(6y<`b@B(}L>&&45j^0n5w8{u z>(Y?67NI$LBeN%?VN+4Nd?56j@Dly-!jW|c%t~j+g0)j5CCMX5bUQ4?3-lFv&oEPB zj@QliF#Gmay=Aj>ok=?KF_Y(Iy?QlEg;o+C95DR`RN(}8OL~U+;N+-AVv8D(X{V{o zA|7bh2?Oxpf0kCUIiX;8E^ZgP`U1ZNAKD@x+1R%d$c>3{OHlocdsZx%X;%Lkq1S>H z?+!h`Pr88}*{WhOQn^|n31GHupUZBo+d`YB;9-Kj$Q4Q(!HsCJ5|!j1V}B|{PqX0= zbkLf|--rqA53{=*mlU19uTCv$EZ`L<%FfFlsK3PjF>LR?LXXjso?4rIKTNg2dPvvC z39)0}Oat0w1DC=cdr7LD87isRZ4$*gNVYtD%;`UBcv2H-iI|P_?f)xxT`Lb|hqW4D zd?XcnRO<)L%jGRO=?*Gj^TF4PF8;FKJV0IlIYH0anU~LVJtf-fEqEOJ1dJ!YVU6*&46x>_R6M36VO*-nFBS94FDJ14aLY&jY z^bR3~#DX$}nYS`o5J|!O8GLd`3fnfrl-^CCXn1d*EHS-WIEC@om9COaz(5Q(DY_F3 z3{YM^`wwRncEz{e{&B4Jhj0H-eAjo2$Lz`w>PI(Ibrp5sI2JYwcd|d zD<#zG-%Q!U?~dJf0U*7(mF6uy2Fk$nkrW;4K~`$Dqpf~6ZsZMFbsuwbob&;n-!uL> ze%#o#RwF6aZW!!@8#ZJP71=qdV>yCbtIlzonZdt#)TZ3z)(JL?iEg&N*b5fJ%rqZz z>aQyr!tP~cs%_b>nC417SvMes14_Tpv7OrdkP%r)*wea+SqKf|LD?LqG>8pk^hTex4!XevzQz z1V-LfLj;YI7+5|}|LrS(2FkxNCpArPkasDpBnG3Qv)oS;)`Y4WmQE;NZAHA=V!C~Q z6h%!wiJvGOrzg=WKWtTFWS1bJ+aN6{D+RX*0<~PbNZoWcq6)Z8a)zl5&idYAPHz%YEK ze$)H}jC=yVw5sJNVD<5@eL$PgCGa6`GoZPr%O7el0OvjFGYN8=O@5n zTWjk-;&@-qFP^T`!Q;?kOwODC$i)y%nXc&{74_=@@XF|jWWdR5F)5wtg!k;UT^#Fa zf!T8(q0leeO6&+5qA*Vc+9!$6Z`+VnzQiAk2XH<`66utpxh0g$&HF1IbU zQ9NsicX^A@dcDPJ0pV8rst5=n)Sk@K=JVBNC#~j2SV(d?e}?ju=7?@u9j(HOIHm#w zqK9(Atd|^Rlh#Q%GMW=^m>AWvLoc-}jCJ2nXc*J7$%pa3(JpFHGlq-I7G%!v5`wdj zC^?t!=CQN{h-5RvH8jV{ul|3V7?O4y2NpY@;(kA7OVln#=evJPyo{-Bm6Oy+ts0#Y z%(es{>-y8=?50z#%FBsSN$EHGl^vsosVxRu0tOEVLS4eyD=$9 z#-Ox3Aw*^4Jz|lnT0#=&(#1W@CuO43+0F1TU(=i^Q9h&&5nt-v*d~N ze4goh1O8S91rc0z3l9ViCyn1=r-rm}C^DGaJs{sBC+2L~_n6jr;89+6tTafi^Oof|_usr-&;`bgD%5qq>)Q-U-!u}M_2w11w#Zo1q&sUf)p=1k|} zA~q4iN(qN1V`f+Iq}qxd1EYsDH3c8nBm;uWSV3JnFSTjIsmNDK(KAkEm3pjZa(Jj(Ei_YZUD-^r3P|BMk z5j`v*{cQK5Wnrb{faocRJ-^XSW=F8+n;II*Cjju`$bX`bG%M~ixHX7m8(CW(Qsv^$ z;TxxNObX7YUk`eBNf-#hGB&_9UH;8j?or+9ciI% zh4M^gdT_M@NVNlCYGm^5C1kO%f3cwAP{lB@+b-R9jJu>mm<&q~sjo`6f!=}W5cGJ= zaO0l$)VF_oj|*rg>P`OmiivgvocCN3jDP%jpZ%Eo1h7B&)qWV>3PpVa9)F%*yn26R zBb@vzGww^$KsR^)KENin!*>&+{7o5oh^su zI^tBxrF{lgW-td)Gjl=)>mLYE0l@FgP587il5^*`2+CV)k(gh7Jzx2&?MSmfxJys zGDDghXjn7CKqH|5LuF{@A_XM9Zf zjRa!1B>7o3GG;(_N|env8erAFB{fbttmndpDIQ~o_8N{e@^)kB^?v!-Hz4vh5WVls z%+GncHpP-Ey$j{oVldJ=N9a;8*`9+7ZzFrCld1jr>e|Z(;cP!&{N(2!<~ICo!Sd{0 zlHS2JLh7Z8PryM)PZU%9VY4i|JgT<6`AYV1V%`e?d$-HkGtQ@h-Q_zm<+1WNteIW_ zLE+uD3CCDk1-Qe-+rzPMYx8s9BZk&%v8@9UiwQviX|OZg4xgqfI@}ES-xQ(`#%y@F zQF~utHa>2^1ks3%o9p{*ErEH(VFuQ&bC?);el_=4({kxw>U*$susgyW-Yd4bz4sqo zuDbj&BnkJGd|v94UI8dOb}`mYRIN=NZnlUdhIP0^_|m~QKQk|vFK5~|Myw7al8ab? z`oOGa66(-#PF>3@!rWarNzWDee9eKjhPQ* zLb4g>=iQ$+GWee8r8OJwx(80}2`p2#tzBq4d>VfzkL;Wf)t!)7>RLv`qQXby;G-Y{ zP)&(fap_g7CNs|(3VL}}M5~IjiZHyf+Nzg`X%?1YV^nc@J2fl%2Q}&3p4`Lh!h-|9 zn}nG0vjZXb6*{SpM-I#Lf@zYA6iCsF0RTiOj<1AWf8Ug@5N+QoFR(#EK{t@jt{mY$ z9uQwmWn17Uphk)H{9;id#bAyGy@T@2vU$uniwXk&+?$JLl=`X?Co6d#(E9fS>YC~U zN$8sExh`Nlpml3psMD~OXyp^&{xjok>$Ujf=lUnW^uy^BV0(V~R=aC>C$Pbdk+ z@s!x#4y4$LPD!|>uq8H;yZ?>5QGnTpHEb5w{HF@(jO_y1wJ$4KpG#JiLs>yJ&ZayN zTL7G!0O4C|PiRx1ct#Qv4>D*t20lolEF}sxbg~dB1L!?|bNgqzRETSOKCqzhSf84YV$JU*aT2^1_Y{XGmWueEa!J&%yiA?NyiX>0&5L z2net(IA|Hp1os~))pEi);v^M?>rfG){Ywy6cS81N_`CsuVNyzZzqEg;`4zE>|5{SH z-oI9JKYJ~;kDlwYep14t6a{;;hm`kV67186^+pb<9f1x^_jbD^gmgcX>Q~*Pw`f6_ z+puaYRZPYLvUj_cb~pUeHlHe}`~y89iQzw-M<}o-WqELB zN^%H!AgIBSK_9Sbh#DJ~*qEtQ<>YJzDhT&Az`S^A3QhY+`N4;5L5s2-ZPYvO^1#ar zzmGL}Sk=AsN3H9`X;5Sw@Xiv9eg&E4`wefP2e|O~`SftZ66s|R*FK&(^JIFM3Jq`Q zmRncy4jhHwj<|^Dv+Skf2(s-!w~Zqz4o2cDI5=QMbvO`R5S)JRYbO`g;7CVqHcxm3<<8Fc{oVQ{+>sw@csNR+^X55|fqC^-t#VhM z%dmkw)@16kV4tiWlltu@@BFTVoVNjqlA-1BnhyOUKZ{R$RQROqc~3m$tq&p9pP8S> zx-~M}m)Vo_=UWzo7Fj0es1K62-IN^7=6Z=}#+({au!U%v65p>-WpB&&ow zbk(q?_ph)-!oS0}qK`&w4N}x=U?$_?S6ja}L$n~QM@{iMG|+e#WKzp>4V@Oje1!7A zs>aQDdtdRnDDXe07$;JpfOxK*!9j+Ca;X#i9^m202P(ZoNZYsjJ8c;UdOt(}r0x;B z5dFUX7dUWxRHQq#j#iNj$G%l+eB>D#3VSCnb&$>7U4E%rL8#>t-{&$(WS~ZK6Wjwf zG?kKmv$OoJz^`B^%UFDmv^?*0-Y~- z?|nM>qTyj8cU&FHC@)9`kW#1LhKI+}k|sJer*hrcerf+0nCFs?X2fYQ3ttmdZf_CU zYP&?mrTj_y5fowr1f+j|oD6J?9TO<$6dxv=4}SKvg*VCZ8e(5(38Ci5HjZ+7W3z(w zBQ3;DHY2CEHA109B-MbxE-|Rxe zzGW?wm_ht6R}rmIkta6N1e{ZWl^oonds@ zzD)2^(d5|fG3m%TD%u4j2z!-4Savl!IVGW;AxnuWV=J`s8TC+V4G|sa0r7!ojRZl#XyzySPeX200=AvW3d)OLPAb)(`7LF z1i12$t;oZ6+WK3^##o)d=Rv9n58uhk4RmD91ESJOpRd@4QGH$Bn0AT_H#P4x@pQ~g zqp8T&>jmOnK=8{*DgXK*CE7pO?A81s63s|64iMg!y`=BM7K0Q|1%ox7&<-~m%d`fU zWEsAf#kVSncP|05R*Da{a-$38$nqm;{FgW$)WpRZC-jHhqkRU~qi+7+PJPOe*UKe^ zN;SWQSW%xEeR}aZCWBJtZRJx^klx=p-J{&U3MJFNugD7}UT7h@q0iRs^MBK9*~fGZ zr219+*FF7QgVsXN9|bf)L-sdfUq4FWySYIlYGAm8J{hK^Zya{>-tSL9HneZ40AQp?e%EG`ZTmR z%f3U)@AlxuHw@b!Spnn`u(YHn&0vh0mrInO1VQu2u@`>J-cwXGsyO=QAzW=&WH%kgDUfYpJA{dc8k?2 zLJA6u`B>wy7Rd`_iLsIu>!f%tr)98F?7|FF-k)8veS^zZqjR~Z1{o2%L%9ceapbK^ z9q=Lu6h7m=o{ssOCm|jpNV=IB65k~bPmHKrn#vrDC&J7kR#sB5P4VJ^1XeWW1-Y83 z4a5)I`2={60ljmE$U09fEbT<^iIip0tnw-4NkNwK8mT`4e@}XESGHJ*27gzF4SHli z3KRIm;S|d=TE&ZH@N=~wh6bXOG{C1OdjynbG zef>)535rEa-5KTS#uqREZq@AmsPkB#re5in6v0E!gL~7A(s-Ch`#2!Zq--1`J9e+1 zG=(jPfN>oV`?;d;IoN3)MrYSFck}S*-?@6+nl@_+e(R#r&%C_;8MQe#inRbZcamfTe{O# zu+dNgzFM|;oUe-`p>R--4_)Sr-iPb)Zn3%Hr1nja`vI~s*{Lk3 zICXY%G`Vj5*tStCxZd;%aYCxiFO`K&9Tx;GHZq%|qGi4x5QM`CkOxKOwE4SRNNWc0 zIPe+X9Px}=H8%^uK&TwHqfe;_xhr2H3Gk@B7;0>Elj|xf>_;DTv5aKqIwlxm5_1&z ziEiV5R86S;7vm>c+r+J`yEtTbT#K>1ZqtZV9T-Sq!BRI{e3Mp2Ix1N5HnP12GBqHn z%nk72%>C9$4Uu53>yoEkoW#tdQa`7yzD?L8Tzv1YwVpx}tJTbn3_e5}3L18@6a*Av z#t|Ezj1`Cx8>Og8A0pWsjMG_lEIp_y)lQ^TD-+6vkQEU! zR)0hU81--s^V;Kl0$?*?ud!%4Alv#Ep!4T=lrF0E$8jJbG=?uwE>z0*y6dT50@H$M zo;goHvJ|B1DrEQrNsS3(r5vem}Yh?(Fro<@ZjL@Nwkp2gax1=y#raf zlB+mRELr6?Ed>`zl1dWw3JR+x;?kf3-jAeX_qB5vsZ+1ApwyYZ0s(v5M!E8nan?Ve z+I@O4*C@l8E^3Vzw&$bUiH(7Oq!rzpsZ zI}XEZN+AU%|pF$6Hp9!E~i3j(Fw6s z%cq+;DThcN1YU7Dml1WoIIQ&~HIz8AAkFkrpvKLWekJ%HttNa^eXU&m1lT!c&~&1Z zFoc&`WKKO@XHlOD8rC(|)Wz2C>ol2JMf>V;GodwsYdb9Ah2JMZH~VU+u6$=-nbR}cf!_v^ASvgtdYH1TPLiZ<4XTn9 z@Ge!6jwmD8(sK04hKks;X`$n3Kvb-kl{Ld(OU8_oWLQ+1@PI%K@NCQEL18h;pSp^u z3yA?M%VzNU4m}@D%_bKVpN#<2*{HhN)clb5N;M>8_pZUI_)Dm?JdxxQdD`TvK{UYQ z<#8Q{K&}=YiO8zfByR@<0kHIWIjX^uONgO!HvI4LUdXIxrOq2t`>5JZ#uH0XXfU`o zg>FqBrX!1U17-8x+}{a@V-(Nfwx%8}B}d<7$F210Szau%^bQ)IBFkZx39t)8IrNgK^!3qGS?(d z0;IbX8f3GkFv~UfZpr^(QROufh$Qj?{qBjm z{FLqGHITjvRttLS2#uV6~#%YwF(apCM_bU!^ z?Hhurz-P(4;7;0{p+oS_qnCEk~JaFW(nFn&l=MyB!KLmmrk-$LO zkpUYKHs2k}RCpnlas;j!s-sh}mtrL|IGXL2>JZ}j{-;4$*`_}W-D88x4 z$>JNPEf-@be~tlzDLn_mI|k4lDF`d@)E7~nj0`GE5XF8yuDw57Ah>>=6oQ+sX=p8D z1@F8g%1|}QxK~`MD{sk+5{+??ePrpWVipR^pC|D|w3|&=U2R7CF68{^v{IY>G@*R1 zX{-hrk*X4^vi;pWO+*Y-dkr9S*c$w%5RiIpVs5dj8UXUqpltjoyPcD2>f&Z!g5N@Qq%i|6jUMFp ztlhP&R0`zB6z7#9f<(lcAd2&ZuEl;yF_j-%tpQJTccIzw_f+SJh(=BQ18Xz<;o^uA zFZEig%E(Pza(+N-dLOElF8q~NgFRstZf(;m5H3wZ%n57a0eBbGZ=Z;U?ocVTHc7FI}HKBbGGM!Ilv6mwS4wp9;`8rE1q zh|?aFs4oHnVc|6s)ZX#|S8uO~IUOE@|MkNp*hRqZp5oLp0tEZWx5`_Ml|mZOK|8Q% z8}C7yR)aj6N2OcCxOKZxOuo)c2W_efq2l?eG8!}1B@1q4v$GQDDNRwA{=RO=ssB)1 zzYPcZec;BeZLoIs-Noh_X5Dpdnxq}c_(&XHY+Lq_d&!U`jY7T4`~EhqNsE`vA-QqR zyV<64JuiH%e5*- z>xNj8-YwZ;86PgEIi=zsjnx8)n2~&H2>3Q{9G$#R(VzI_)p>a{B~D$=`ePUq_9lls zZ0Z-kd%M3N*wb$u~clr^y%wS7s5~BUpn*WiBghT=DBkJRlvM(+=zX#kND?f&($I zj{irnGZE3|%p_sdjS+WxTnwl-`Dyi_*er+o)oR!Cti#TLvSdfgD@;nFIQfVT$eLJ2 z@(I&N;Et=Tm!S%|cLo=H(UGmqI&<^bHcP^qHi=8M1PYJ$eCO3-$FhrwfITjqYJ+UZ zYJ{o_IIFkuN-Kw)Ft5Mx%y6R7{WddI&~BI~NnS1L6;#X_*gGd1o=qE)Hl28g3Jcfk z&b)xl?lje-ocLQ)p3`Q_MXy+*2Up&X3X9~QEVFy&2dKD`E^E@mKNg#7!nb(LmMpAK=dFVUqSBmx|_+9^N@dWS?rn zBX!1jmJQuecf5{}V!6_j`xxeA7JAbEgIW7urRqOdDCDaTZ94eO=6WTvU*yK9f z>XgUXk5#Fe*v`k`JZOSBNm}~qZ3eXbngUW28XtDg zu0{-=0-&*ku3W0ag{vlqkoJVly0&ECB{1GHDXIU34VOjpN?wzQhKWp-KB|LUX*u{& z;HKo3V*a^&{l12)p=Q<$TKL#Ia)baNl!LscM*Qn`H1 z<3dP`dIbP{ok103KGRhP&faNTgHMrJ<5cPF30t^;RSGJUv-W}Fc%vUipmL=4TuEhW z=T8`~3C6Hy=by%x+>)a84@*w9+o@3}_Ej1*bCZnytHD4-J;vRObe7oRrm!vV(nV~Q zS(t8^N(8<2-Gd!3>~onb5=CxE8GhpFcl+}^8m*?US;_2L@Y+Z)zgoT@3J7wvq??%{ z2*}GM1lhIufx-CQ?htA%Y8hGPpKY&OL9NOmaXh9T)Mc&MfWL#;U3^dpR7VUIO6`@o z;d+~=R*+q4B{wV$&`q)u3Hku>=UJIxHKm5<`R9;M{EPAw=S>!3NCK88Br&5~CJEw+ z8;qI8gX}eGbUc)n|tJ=4a=+p($J~B{dm>10|oox0`*i6&C#M|!Z(Zt-o+f7`@DvQL& zdQR;+T%m4qMy(*=G!>k)fW@j(0MJR?#6=$xnh?x9-b>Jn<(Y+c*far*#pF4KVSr%R zW`P3BZFwSWf4_MhU;XX(=u=B{MM)ev0D0(gWl+#HubxQeQ4*u(i%sptUJCZof&M+b z+Amw{j}aJn^_<_9E?iL)#ELM-ruQfF%fa_WcM(%mG&06QF2xh>5A1|6HV!Ix@7b9h zEBB=DZ7{=^1ym~B0qWL+hW>76evArcO{EC3{QVv$-9>37B^!vCdi(hros_?m;usDt zSV;_TlH@rrFX2xR0M|5M2HQr8arLk2+U&=bIzHEKp7^*kH@RrzcM!e-vGr$4yvEnc zYjM7erA+Gigti0?r+ZTn;x&44$PJv3lR-Hu!#{)IpxD9y09Z*$-;b{{^8aMkVgAwu z9neh($(zDp`675gp%x0k7rsV7^LO_w>Kh5_`k*)T@R&24)DMn*a7JJ5H~Y>1Q2v1v zzEU~qjZqAI+}8XD*uF|O;j4H-9zrFl_g+z8?geLN&Lf65TQ5a+m+3YM$@ZPlU#V6~ zl^4D#YJaFssBjO@{~dM`{8C*lOIdwZolOhMTGX>t*8C+$IYFbQrO6xo0X_htVnH97 zBr?H3Kcyp)Vder%rFz4S4J8WOnB(l{e*oYFQ`VK~xw1HRXeEkic*!Zl`1^x#B;UW1MH?#9iECV&FC(Ub=NiAri7HZV3s&AdK4XQ8e zkYzYC(o)P>Na!Ikl?%SP18T=W(*AcWK1{_^TJt2%F^ft!H1X6hD7IL$Hzf54wQUQ_ z1HmIrCm#P#hjp1}mk2RWyx(pt-i5nkC@`e3O>itn>ZlE*g^k!?$cg#q&MnFWG$_N= zg(d*fB%}Kc7y`#9>Fqv5!wB* zN(~P5I#}U5)jsSN(7cQvw!qr(Z)siuH)01s3$9ekB#yN=f??N2Ws4&v(m!^7pX+sJ ztQz;tl@kG!C1bXW%AzbTGi21PW+N&^{(TQb(R{&^36IeY1fV%O2j^wLq4gJoB#tOU z-YPJWhvs+!iu?SZu-XkGWz&zh6_O5)VafWz7`da(2h-~;D-_45w-z@9=#ggT>W6tC$wh%5Th9u<@pZMH)FEzLKu_KR`py%APmcvFYTT+S#@6Gm=BhZfyYjj?j0k6DO!w=ej;lSYEDE zq23RGzPRxJNRu7-L~l|7GerG2fO|w)C#mZAljq3H7(Ko{d>jkSivn?CY_bE)CTScy zv(#d=Hvo`{X)3KO3(q2+xhYX;hJ8kDaP8-XT-Pl^VI=1;{bTw?fVd2+XR>G%U6F=d z`a-QAKfE+XbNXb?PvE;0yKh1z-jBE||5D2=vQNBQ`*C|$%u!1MJe+xJH#>B76*eyK z$+fldAo7(ihZBx}03~O&Q1OgQ4AlHwG?j&%c(XO8`oZU)Rv)1%_;HKNld*p{jBf3< z_nREM_!_}nQEk}c69)_wGwF_Zi{}?B?+V(DSGWRVhDfmJa7Z{WBi<3f9lINPUN1b0 zDHTn{A%2fsdxg5WLIn4D*c3jqGmIveZC6TwDo@)2@=5=_GEDH%Wrar5I`OaFDf;jA z)Z+&Sr>3A7t%5?G#P962YR~~EpxGhc8y1ZsBCy{CoNv@KNpOFS%EajSXE%)&ke`O_ zud$w$yv=T*d=0v5Gq*dN$@!Rgx+>ivhN>b;;b?jlGSMRr2J}Y^-WE3HnXfL zaa>D&{a1ZtP}&~C&<9WzFne)KjBS!uU!WCV&v4_jhbv%Brzz{%wD>A5P;F*65S<%M z9K3h>oZpwm#Jonkj|xg|V#LA>iVE042c)oI8;f>NI7yFA)3m>H?cLw0^|j*Q`@TWG z=CyVtMSYYguNsmvtcP;ZX4afW8QJ~@YNU52qa;kts>4P#DGJ7k1aigz3lQ=7oQiIR(M@Y#^5R&>M>JdKKU3oT~0W`@HA(UrD zWJ-*2vpd|q8j*5!1eGh(~|b}(f%ZlT{Dd+CI+^mQloZmUjvd5kk(38N~jX7 z&7Hl@MyDtWl$)Z?1QrqAL$N^9a^va<>-kp8#P4zon748lku!a5#WqNu!aCqc%?@z`&ZHi0~Cur9NS_6R%pQwh6VOe#5gdf{>68df zqtk*k>2o&IM2CXrUt%BDI>xM-33Kgki?Q*jNJ>3U!_B24t>_(aKg^{}BjBsbE5Kr= z-u~OboL8u}gPz|WM#Jk9^&qd>WQJvVL@nm;UfD2;9pKMCN?wj`i(Eu~JX2+)Q%Rye7oL0%>OS*fwUeEIAmN2}B|p zCIgwtLV;thF6^j`>W8*)M1eB_6257K(>-Ei+qOHgeYi1fE z-;HWXqt&^T)km4DW1Rb5}#)u{Ax3A0?IIYtXJ^T#Do_@8zR37=cbgFxHh zeVW(;?6znvr59XB!WLs`@VfoO2XiTjAszr@vY2L_TI(Xsk>otL+%0@+8>p5TnZ=4C z+vbgYYu)#aG9oR3W%-1^G#SiU-)<*l@N7(H7ZZ{?V>n0L8=+$vbO%=B&TmAy#n*_T7_$4yB3t{kU*!wGRDex;~kAlKoFfw zOK+Y;Ft_&=w)tNP=sW|Ug)a_EEeH`>YsyQdLA_8NR_>x0aY(zQgklVl<}st#Y|TXU zep{wq;|{8vf3uPMv*Y@iR*D+)^j2`wMVH_brG2IbmllrQ;+}mz$Mjrj#>nJI$%{$s zTW(93Vy@f0mYCI#HH}=32K1x9z(&=0hjv0v^VmgWFcZ@27vMgBxIM*oxN(~(V(-KNhNhriIgD!_28f zgWfV07B)g?3{}zh@7x`E(T7~}GGO}QCY&awNH_L(gK0CfO5khfx`~tED~X`a##j}V z#V+u|6E=!M2KE1LX}O)t>zE+tYZS5G{<0%cdF#k_#Wnl>#!+p-ug~^ae6YIqZqPry z(XPh&SKpzI4ubfA$thx@db63dte9g4p>z8E6M1FSlBOih`N3%VMkQl1p_Pky-;h@C z%XWIsr=D{S>v23JHyLST$06(C~o#~k@R2DpX9!#t5LoNqZXlL0{pcFRT|d`#;w(TWp1W#&(LpJ z)ymEcAzWVYhfynSmTY5PSsm$Zw6FI;^a1&2_)RPtuKjPH4c3p{d=Yncpa{L+yV7WgjUv z?4c!nBI{VRu6=54Bn-|{OrjT2QSOs3LV<(@OZSLXZaH(ps#Ct5z)u>xKOtzzhT38m{7ao zQEks_VLZ%R1YaRL1SXU7G1EI8HH2zPK{VR7mwM569G>*~o3?$0-%huCccaViS(5M* zdU~$Uq2)r@(+^>6tl@dPSUDueFe4&TNg{QE&Hq%3Id~&r`{T*J56TOhc0csz#hgNY z^U;P|HeB$E5wQC%?X-*ZSyKw!MIQw7lJ&Uui7TBd^ybr0&473^!HNGxUZCNRXC}+g zQ@2QtXpD2w`@XLd>)aR~?`7Fa0;>Lu$$@z}KeDxx_BFS^^r9+btCIhbJVd`lKh2a; z@$fPv8JjW_1jZe6XZ35mP`z@u&pj%&R<^ZWwRc(~7N(4O@x-GfNl6`mH*1SRt70k6 z`o~HBrx;=E^$Kw8p%Ly?W$PqvlvPs|cR}aN;96&J8Z@71!BGK~Y|d3^e-Bz``$o%W z%9hZ6PnU#mFE(j_(fbW~aV&m@+~GHMVU$@~d(QedWI3_9;bm7qu}CzmeP0S#y8NMK zt5U7MA}&yC(8TU4@z;MQrxk#OV?#|rGZ__X$4#)3i`%Au09DZVH7ea^;DtZ;(inT% zw9NI?Nl5#wEu*eI+PxXqB|Y;9v37jlzR2mOWPc_k98`u52zM-xh#2=a{$VoNPUPSA zyx_w|y|~^fphe}iE??XDjX|z`^uby|?6+%lDxC1vc)T$#y%?oNYlevNi!IY%ZZNY>V9U#j3d2^P-H>1 z9xxl|4NLpm{=pH{lpluF!FQ=&>m?ELy+mCV8BP=uX1E~-Y_D`(E0r#;Y-S$Hk#EB;kjH#nAmfMV`N%w?t$<)Rnp z3N88h;j|y#cnvb}c}lusaFF$!KYGF9KoPd ztPJ)|P==S;<^@vSyxkD1+*b79&RcUs(74*~w4AU2#(!#deT|GzUO*>_%JfYT-K`~Y4-kL7o)C}e>t!gsOBcfV zJzerAxSCHGn%*V5$Dt%t2P(C%d~#C zTAZL?s`4Ya)EaTz?&7O!rgD~s&BS=Bj{6);2Q5B_js+L{Q$Es#GjXA87+Zg;aOSPx-HN3K_{iWe82_y8 z!7!V9aMXvas!oYu3InOROej~qwgPUWT7Qn`8%j-13aex}w=C))b7ouR=sYMIvaEA} zAZ77r>r0tZIj{sH@E1u+dW}!R+qz!C5g%2weSryPe(J6@3+tExBeL@9pvZK=Fm9>+ zcWHbowQwmrTf9bqR_g)fc!H1bAH-UZxJPOiz;ft~%fjENeZq+)iCehbvDZzQhLm)} zE7x}U#3M(C)v50^oZsmxT#JS8+DBO|&->=tg0trwCY%9!!bL4;|J(Hb-|cTO0pa8! z%xFUVh*R?FW?W^zG0=_~-|RK0A#e)QTqu9QvT#w3obFRhlgRz%{9ICjp$gpC>i!nwq4FZ{|^TegiRMy<&9N~S}#zBQ!MS^3K8vbTRj)Bf@ zh+t0q@`C5%k&#+wz7g8?BHzadnJ#6>p40srd1Gk6r3H(IZP8?b*XihjmmHu=?NX4Y z(;oV!g#xu4oY}c`eR1oRi={jV;X_6_1M*2>dV$uKZGEy_qh?On>ubVy*j^Lpm5H!a z){1mmKyB^N&?I@1G#T*z4EF>DC>2k8=AI&4Yd8tcD@IzHWxGf*Ix*C)Wn{m)Q<*LY zEcG(`%`t3;G5Dg1_t7y}pxcsO{3fi2W!!3?or&X)j4to$8C|f?6zFJpk-;YjjH|`C zozYc{CAopA6npZaaw zb>#&m);B5ZaH`3tDp~WirrRlEH>S4V{sYW6>kn{s`MZK(!8_TeaIEg1@5JYG$;zm_ z;D@ObeUv#R zy1m0}zWriV0nVRNl;ahs!k43=?@kOjQO@7Xh+k$~cHL1faG5b2z|SS zjGT+q^e%gIjI4Qne(8JS%IcZgVB9~p1Tn;i?|ZZ7ib;&(shFea{s-9GHtb{ESZH9L zV5_A{9(dHk&Y>cf=};}HD~w9wn>k670sUMqs-*&zfxbq@e4nutEsW}y>_$lX`Jy0h z2RT+eYURrFYNoy0R6c6CcAA27h||4}AG#4A6A znlC0E0GF%I`v$kP=El!;D0V8gOimJiVI30yKaX6f5jl2nZ4@Qw!FXUpeX7Wijg0D2 zm~R0BM*d#Vv?a#w>s#7xPNX-qIkYQKv~kP?*FhPrMxvt8M+^^; zc=vO#=s$pN#0Heen#GRAVEn3mE6f^$cJwJ@+3y_h{!gfv^dkX&fU8tm%y>`lNp7e(#*myNbxNQ6ud#c(YA7LLrJ8k!2Qkso2a- zq#JN>SYMEhEl5dpkfZ$4bQ(1^-xS^O1}OUP^Wpa)W35s;sMvB{o+q@Bv)Up|DJ*re zJS{EFU3KbYFzx?}IJFr+f2N?M95#3~>BMf4p6}mU5f<;?=`fg#=&)rvkodsn4=LxoES6bKF~iwJ}>hg;FtBm)q1>km0u92<*j>c(?sJ|5A&!SaMVsCto+o1(sHv znR;PiUCH4SE4zSo|_=*o;{DJ092flm_O(`sPtb(j5s0+&9?7g=EVn1o8S6xnj9)P2?KY_e#% zN|$a{B3N-c>ILSd_V&pywcnR8o*k9AY&vUR-NI2Zv}uifFcbcp5!S}O;bE9BhsR@7 zD_iu=hN+f?pI^^4n?wW5^8Mb zYSSM^xAfImH&|7xxegI=>W>pf27@QAiBQbf^SGCKP6svGacy0U{OI?xdh0PQ7_+CX z>@_6Ctj;g6CK-L>tgE>*cbT1~?%-y15!|TF*yU-n27=cA0j@9CHaIve#)SD?4Lt|; ze(+!EnxlksA&bwjp^SE@tm&;#Let>xi*u7pig{!-bg052NJm#a5i!8zdiZ%gpxWy8 z#4I{=M36QEGpShc>gV<1JhSPerM-X-PQys&U96hI%P1SQQJq1lgA4G%@skH9717aG zdZiCPf&eqbLjF4zP+yTgX$@3Yo6>#-$jk>nqiQC;fpjC@tJ_K6XPrfW2ly$G&}wsK z7$iZ&^$QqhuK<{kkF}|HUE@!l0*97bgD>Ba4xuUjY6sgi;%h_(i$=lP>+~0e4bB1p zG7T`CE^RSCS@^;T=)`90YQ3kQy*Sg-f8cb22}(&W7m-E0!h^nnq%TP3v-+{N3KO7p zA6QiW?s%i6r`>*cUH+E#S4d90Lu19kL?ERyh24h+XyVW~>y)Xa!?tlzcj4SPe-!V! zrsYaqDi}!yiL75CE_Cip$Gf!+`kT8Q=Ju(bEn|w)wK@L%%B$@)-8GG4W1m-LS%F5h8=&p&w)`*dRpDK5rxIIS9SM~4`NjS32FImBGEE3z>nJ1`nIAF)j zvZ6f)m1)xkT?^3@qL`hY+LoCN<1Hal_8m}tmZ}*p|43#jmsYdED)<8rGrQjEFpbG$ zv-zo#niwe7DOVT;^A{o8k`9UV6&~hk+e6?0Gbh!S`}|81gBmV9@nZ*vYKP|0Y6UqW zxOT;2LrQ620-_7Y!w4?fq)iSdtx^=?M{9r%G8nxv*)U?AU>EqZCDy@C_cV zty{Rz`jtV7nEuW8QFzQU(E>j8EG}7!GdOH8@&%V^LK7QNN^(S%V!My5E}=r7z_ftl zUGQdP&d8-JJ!ytnCtI?->hdc>+yr9jCH+5uPH?mz`gKr2cgS2VIgb06ZljzkO+ad{ z$`RT~uU@EfmHe&TzJ!#4d=uW&N{zdV2kw}37c?SzxIC8eKEZF7Nn~;A4U}kV{dr6^ z#nLNi1b0@?FlT9qgZrdUtODOn{{~{27D#r?ygNMiul9La(+!}S)%}tI7Cf2bx{_P! zRQ>oJoLLK?IE9%NU>X$ls;9%5KJhgPI zFOOkWKV${?>XDQFPG;m$RJKoe!@5leA3R`U{@zBQMn!MWfr0*VZJNthD1;fli}WWK z=M)dd){Y8U;=!Y!Y)QR=Z)`wv*iyjY*Sp)vqF$crpH`270!yZKU{mWxUAxMQygu%A z-%OwwFOeJG-4mFgL)Q;lT-IV&gB7jwg7qV?pV9UAxlhoGu*uQ)K{>XenOg5>c|BUe zoG6__9nBF z<4;t6olD%>fn$8z$aku>HS=5|1}Hr%DPrzIi^G{$Bn-w>w&llpwY!L#a;az_@_z_D znE1@h$Og%Al@Hlm?8hLR2OS#+>q`q*QPToT`QSV@HD*!OYB+}bBuh$Lb6<%aOVR9q z4ja(wPV#SYS5f~glE9_ce%WfD@T3Rx3jRUf2wu?=I8bPry8>9gFvI|Up7$-IOiwg9aijW z=&IWiOlCTdPnKkObF`6>&P*8wwaavkY+U-`0hm>~!Qfahwrd;K0O}_kz9v7y(V@ZN z!X;t8WY~L3;eU6H|51DJRw4Qx)qldZxL9ns{sFL#=wDRTx+o#o{2*6l ztm>TZ)1_Jk9;WEpyS@b?=`OntNtvR-%4>$4ra;sNoK;I}S8sDKp)=U#2zp+5;T#_c zkh&V2=q^|ZCUx(;)dXCfi6UOYAA}Cm0@GFqki^k>7O@;*Kx*gt+B99%5j3E!XYzTq z(jFwFw4#<;X#n9P3W`uJdA7NKxc`W+0jk_6-<5@EswtA^HX)a;3tU<823osX3HTN! z%B*{9R#YuePp1ON1K;{{OXe#+!qkcL5<*l`>&8W^^tlyiC6-JcY#tUz$HFJ{YqhI` zFvJ3JjXT%M3^^~*+QSlb2S~-yppEZ=JBuMV_vZn6w_;hA+zn*JbCz4X(H!ek1{nDU zzolG+TF+lR^+c$!loO+Z`bHCV+GRVHfv2C4*%xk<&1))-zCq@1x=<)9_!5g z7efx5;K-fVr#{`P`H)e}*lCYPg>g)^OTCe{K)efFNlWx4W6={@Q7!Ia)f#~69h=ip zc3={YH4&4N_18Wv!?EI>)^5{smMVfj3B~zBJQsI-{7OU7E)30J_Xvp95##=lYB_^N zIW?>|PW;W+>!<#9Oa4clTM=8crYt5hYuYUsb>d0M?dqC=KTb%$mW6)NFQ;v`Y8E0< z!bV15T**ma&7rIQa3fG6NQ<*;bXW9HtyQh!N~asqp}Swf>l`+R<|8RiL9oHot}Wif zFQ>+Uos<1AXOrZ2qt5^55B(2A`~St&{?8a!=gVWljZ<5JUfcSM)9UeG&t)Y0F))2= z+g>)-_~8Zpa4(3a+r;`d6+6Gqz)~E+k~kfwjg9rBDV)39$+f&FphRP_=$&d*mr_wv8n zZKvLQO9o1DboV`Eh@YUNovEFfDD5;zbQs97C@gf%KNCL`VUpg@#YGj)epF!uV@b+a99xbIJ%8Y%*prrT+Z!di`RmS|)~$E18O2n849=7b_pE^E2N>N< z9!sC(EWnxc0SY%S6^%Xn!8_;2?mc+W4nJz;x-C#HKJn0YBbR>(9o-)8O!NVWL5oD5 z*Ta=hvg(q&V3V8%^@I{A>pdx*?+lK;d@NL)`LbnDE^t9rc09{_+Uxzc@PXzX`?Zgos8&7wHEYXr3LN&pBT6>BUqHs!AxAUt9I7-|ed zR-k0?7)`_cV{y-}AGHcfW=bjU*}WH>ax~~5C&;)SV6Zed5wD#z(BMINy@Q-z5DkB_YE$Z&PtJ= zFrE+EU_dqkkT%6@(9RXUU_HlWieWuRC)XVv7(1{}-`2|;f^uQ>8(-&jiI=@K0$sz{ z)IqRc>b19`$|V#*1yI*5~@T7T}GyfxeRR6xfIu_4S z6{P%21x0D9LVVt91%O-+3dyBbO=)uF6|q2INg479+|F~XH`2sfxbVcT&zhF;p;p}m zWWTXGqQ%#1YsHtlMQFe0q2zI5lR&zkTRnE*h*wbipZNTy#m1d)%Ro~V19hpa*2*<< zC18&c=A;tlh^3V(i6WpBpWO8&EW!u%9F^+6!bPthYnEK`7nmbKf@QB<9zlV35g`L< z8qetUq>Q^Iv1LGQg-$YiI?2G##I@1gNi=BMCF@-XQylT*_R;71vx!aeIlJkIaIo~F`UCzNkV_qklT ztU%*EzEJB<(k%mfe;drbMk%KCxUQxAAx)%>xosk(YpoLw6{N9C~cy7~b!{;8yfI{w|An4Nq?7b=FNZ|daIhM4Pw zyC4JzS2b33$KF^VH_hE+N4Jj=Lo0gx7g9HyH}v}t{eIaJZQbDkX?uwJZ5qs zP@Q#KDi`^foM5Cazj)0{lo-Rj0c&`3djOtc_f~E5{J&15cU6z_VAiA^%2Ha4wa{JO; zti-!D`aR-Ieb}tf1Wzh-G^^F{xpJu2YTS=YHFWFj4|i?Ff?1=U0iw(<#p(<>u(QA# zqRHwa6THF=Z&ks+k(QbomrAOE_w;lt0L-2ah;#fpYRrA%-NUp{N^d`{&qx`pe#Pza zI+oBn-o+f=_wsQopEvFbDr#*nC}?y6>yw>0{<^Hy1jH=4LVgT6$$MAVB`8P~`cPJk zQCyBXzHkF|^gzk-=(yH&%9YuJN^OF|%AC@0%O0q_t&1*>!v`(z)O}^967_;jF18wy z$s`NPQ6xe9q<%{SqA^mDZzS9k*#P0%=C;pJ?>#%H@4oGn3n{DoEK3TzQ`J5!&lB6xmaq6WI@ACh-DkfUtC)8PGN$*pbFWlh((uIT5Iw=+|c(GwT74sdZOmk`$`8N6h9spVEt z&)u5{25GcKyF@c@jYlZW%Jq@e6=!DP3r!TxXv5we&sjr^d@YwUr39d8M~qj!`G0wt zc||gbo}SpUz@}B&RwrtiS|{Q?_Oym^PDb!rulN?O5l2D&uF~h1${Hw{u zR=x8MJf3NtT1m0&Ox6+0S_7`P#Gv-ZHD9&uM=cf z=V;;dB@**S&QdiMbsAoX{!n7mrTcnMtUSp~pl41sf>59uj zi>&?}Rc1qE?k}}CeB^7uJT~VNc*Rf-k_PXwvFZ113=R4NbjW7R07~Vf3IFLLvk)jC zKSiqW+9Pa=#8%ZbfA!EB%hH`&#sn~tcoLWtMqewg&eqj{A(^QHJlu(Kn)c^v-MXE+ z6YW9=+OP_u*?`kZkbSyH*vMI2Vg?^1j<;hdx7k)g-ISn&onO z7F5UTdNhfi>nMk~N3jaFP)`?ZmR!^-o|~ldKR+R-ishFwG5h2HQu&NQPN_=yJGWEk zsyMH~_AR>}s%&k8%EC)EI+TWYF$?|_SB7OpN058Y>Un&fzJ_fiAM&JB!n-b@(G0e; zKwY;qhy%=-jhUkZ%2LD(Cat@O^e!lW+YXu*>+c*s7=jL9B9L-SJr@iM69W-Ol;mw2OYRG^_> z0d)O7Us|?ZJ(PodR|#r6@4YJP(JRUHUjf23r^;AL{fVU%Zp1xzhRR1Ff}QN3$f-%H zOnI${DVr<~&WR+8y1sZLBovmYQKs@+$J171M<#&%#`Qw??R)huMvj755Hyf7bU_a%zt*4F+o(t72!H=U1!^wy}M0xmK zn2AG_#Wmp6fuK-PiT`cD?$7I}Zibvucn!br;fJtYheS($6@JT4&H~vJ{?>s5yXc0j zu1Vbhl!L(y)O*W7!XYl9!z@fdtdF0h^0-$&Uno##f1GMO-)}X8G8gjZW8&gh44V(IMsxHpsTl#FU(T)!ex@Ial*ym&cUlcy8tR_+=iS1sIeUae#7(qMjcWy z$>BGg-S-;?g~QwR$P_5mOY?s*2D?h&B?S)LCNq<7*}>HqMqSNZ9Y+&+7YrtxdyF)WCdu!BjgSX#xwIU$tre z{r^Bpr7AU%E>uu5vk9GW@Iha4u2n7a_fik)hw@_c#&zAL&Ed~wBNP1JovSD*;I(g3 zZp$!rtb^B$H|ZmQa19uty>Y$Tdo%u@qqKE`2J&Y7BuD^?s^rS2gUSf)4l6dgd^z&! z;iEMD=7%)%&c|e@`F2wW;b3wA{p+HM{((?LWoY{$Yl=gzE+YKh7Jm;dDmP%1JvwrR9#Sb;wpySb)O1A zU|>$deqp!e3QtVc-hqYCSfx9XF7{{t{}!YhJ$SMh@RUpOA0 zhr(xm2KF9!A|BJbg*RO0x_#TOF2^ib85jh82{|XMMPr%%E^(|LhM_ zjYna4TOFiCRCcT0I&N<%6E7Ea0u?HRmNIA`2)R#XIpY%^OG}{ei+lzMF>=3AZU)^F zoKh?DU?l`av$H*V3gNtEQ21s4ED#@k@lJa9EvhJO_)psji3krW>or^QY`BJP8UNiw ztWq>O)6=Mrwm{(qKRvA709NlPj5^jI9CQe(!;#F!R3#Ws#*4NoCEh-t08s}X1l<>ZrtXgj7hA~&)UfW1n*6~#ybz}XlK82JMCn7 z=Zb+6@0^2}Ic66Nf{>P)r004>z1^@s6b%)Yq001BbNkl3xoY;viXF8co zER)y?5GRE&WnfAs2^J3zke1M7U?$UgfB*?ic#Ij0@l%#$Nw)R6kF)*$b9JuHy=V8F zJ@=mbkaTyXIp^&A@!fy_-T&WzIh*~C_ib6fHWH6rgr=_Gj4#1+2^VaMz&ppgV4{t> zfpeB&f@Q?i6J8nkjxjEd;QcTc{0PDiGbRo*Qyd=Y>p!sO!RIC@?QD1Gr`hA4z2b`K z#p^oGHzUR+T!>4!!QKxrybq0>UzS!1mI8=g1$dq}1$zOwdcJ+=tQI_(mnCXlM z%8_l?wl%Wo-*C=91(NWIvVlT-ki@VMd_U*niF8uzTfD3Hgm%&zjyNNMGPrHy1pvmU z8E2ouZ}&q0NTf#l*c3wSXF@!dO0mb6?(RKUqxJNy){Ftl;Y}Nxnwr=R;4%IMAi2!9 zWwjaM70gQaB`1d;TDtq0(b}w{yjC?2l#^SoJ2w)K-U8_)$zPrPY&CHyVsL7>v;*6$M?wzx~c4c&9iv3+jAk@R7#4 zD3yIOJO#d4a_YM@jG8F(Ni4PQ?&#V3Y-w4QH#K!nO}YN98$Vzed?&DRbx{?g7BvAB z00wIWAP5|BJWIrytS%yDGByt2Okljn@s4K>Y_bGienLE(F~ydSJ9=O8idL<#ngNP6 z#l#}tL4`I39#x_c^CI{MC=vjPQJrRiaRqPynlto|Ef}IaL7bHV|M{djxqaCk``!tX zwA^v4)1!`7S<71<`wqtTA3^`4jv(*X7{IY0YJtO|9^SF55=vBt03*%spT~;az389j|1!RAdzTyEiN|SnP4I6zlvN#}|Nlw1bL( zS)EIcmfE5pfI02Y!vHKVn(2x49p8K6Sf%=??4vQTedFa^7zC2#o{a)9jAZ~wqE^K= zp0y7xP>h4=J(gm$vFGJzDl$!RO{Ml-$_kW$Z5#iA8^(Poq|vL<)-=r}+Ed#ok(aZnepjXR(P zwCCFZ%eOo;D>1MvKpE`r+KoMquX)vtw}2O+sisavyt;{5%x)j3iy!YI#GXYxd%xnD zSqXum0|g-Y0YI|Jt4;V!7n8%Wy%V11PR3a#yJgjkVpm~s22%9 zjnxf|HK>2%#2;oC6G3xV$5)r8PLme`kaQuFUnnJX1d>$%2`LKIU1&W(%2VdMlb%v( z(==~v-`V?67=@NJdQ(b9zXgJuq?M_IMA|K3dHR6`%jOBd=`Y)N^x`Nkjm|nHk@ii9p1xoa?3l??mv;0#cD$5gi{ep8BOV~xrvwS6nL0>H z85aGtG^Nwj&J?mS5}lBojfArLxw>N(1(ZY+zY`#lADIA+vQ{^Bp2XeTW%9AWf)yoG zj3xim8Y;PzJVLzX5wCpOY2>euOWn%WkB7Qw2{Fwknxh z#y?Bys6nfx#iJbB`pMQ7qxnq$r9)PL(Fwk!xz3l!`lecbVhsGsyV&ZNI0z5>#zpeI zD|bFVC<&H&X;GAUM)P(RNG!$YI!L6QTTM^W6r{0{IhukRah6IJrtu?hEt-+>RU8h9Vzg6`oO*!)*w)v%Ml_H%^W-eH~>(K)`mGq@34MxKbDM*mJ zr7}cr=0|yz(%&uO~$zSx&^@F9Im8c-AThx+Qg2`#oSDPcktg z(Z7X00uIJsrlX+kNl^fjT{4i6i3r*=sk@oc19bewGV4)TT@V1W98u^k`&I&_zq{*7 zfaFS9B1>z2h92$YvAG9uIwM76CUd~b)ntoC7UuMmr$!9$%yN}RK#NZB)w1J_4a{i5 z|GY+KBpO+y1@8?pX2el%Bh4oM=QWm`6GlI$M~TKvb>11A%r_A8H`B4*Z!X@0qMX>g zaZS9zcnhyCio+K}F?x}TL2?&R8J{SNzi$nTw@iV-v(OBi{N3wpazyupxMyZFDp0AQ z4PGUk%ADu50&)R?S{{q@FX7=1BWePx0+n$vYmv|eBxjKYO<9WJTe%2}z;wo3bk_7E zYdYp1tbo4g)h8~Ba$@txn&S-%j}RmZ6Y@o%CX00kuQ0XbI|48?U|O)Jhh_{mz!AYT z!QhQaZJj7!QZj^z9GA8>ZrMoC=xb)9hycuB7(OJ=An$s*p25OpI&5>5u(2OTdJi|R{ z45dJU#mz*c@waH+1F|McrWfN2vWN`!(Rkb)T^iTZ6DRi5$V&$#$S2a)?3tS#XpYL| z8g{tz$(!d%SBuU#v-RCFL`1gkWR45v^plr@m{_F0M3#r4SYFBE`uSPrH~k{n;ZeP* z&K#AHQ#+5sXB0p!^qWK9hJw!ot8y7x1($V29#FuNaCz!Tz064S`I@OI#jMu)!t;ib@eilAoSeTC$z2N*Rr_ zhz@I%!jz`U!{v_+C_O^uN;w-mKsjJhQ_-n(zktN$fO2xn#-;e>eozu8^s~ZZWHi8_ zLcLOFP*Z1EMw?BEu;_f9Ol7?>JN!s(QtEIC1(|d$49fu}8t0_-l>5#_B<(d=f)3TC zk}RXW-xX!ig*t-@TWH#OVg;9QYfXgO#v0Gevdt@7Bw|a2uC*zwehvX3+t(BZ(l>9( zMUe#;={Jd$kA6~){T6?RCGr`+{g&xmjOM!JTSZkcHMyoAdjv?2KtAo1MXNr=G67a8 z+Dqhdef04}vlf#)4XxStrUD9h)lblEYR(p09|PO2J5RdFM$3(`r=6+NgDsKs>g=q4 z-n(g06!|geyomG>Q_Rt>h+%kOIo=346oizKW(X=?Kf7X6BM@0JqokQeKo|KhlF(B6sNU9yI+WWbJVkEk?(| zB+u8Q6wxLY#S%FcmK50~jv&c(d`fDq0wqjXpbnX^>fq`TZx2g_l?cI@o4KQV8Id|4 zCmzwN z8MNM|B#Qc*ABzZwgvCHWOuR={M|Vuh~Nlenqd=dBPZQW`5|y``%LAjx0bO9Z(U z%g|#MGb12VD>Zw$A;6|vYJ{aHI$2zm^%NK~dQQf=h+FC0S_b~hhl6VYrbl& zCZ)(uwUuIWIrt>YSh{=UR@h!(u1(XNdC#Y5;%K?S@UP@6aGW7&u5HV?M&D*JQmht;> z=LQB#WQ9$aKmtbWy6U(fQ!Uq=YIVx>i=!HATuMF-6fA>s^H5%fYLw+gE9nFCy8gBs z{c;PLK3VC|OVQ61D{onz`1J=^JsB-3#wEXgnW6D~509_xRO=BT%pe8(2W(6O1yhfF z(XN=c!mJ-Sy#PyO98=QToWc^>mtUA}MWj_O8w#{~N@!}~rF55HFwbLGDd{Ynw zOsGzvC>U|QNxsC|gQ5gj&Kj+nOXRdZN#SuhBVw(dbX$jwG94FaFGhE&)hXC7j)Eva z!zZV}L|VoQ!sC~F7~!}80JfENooX&EOrJRwK+4u6-%H5~7z=Y&e3O7t2P=W5+N>N% zQDV5>8brYW!y*TYM&dAPn;Fp`RNkT|85WZPwtTTfj>rZ%sDM$HM_~tPPPH&`!_0A# zgjdKZ3WDN5Zmy(#6gf~TRmVyFX@bEp4B=PNuIUQ$ zT>&FawWt}k%|$YWcl?iGf8`8TYNHd`cTFLss|w}t5DuWg@LNQxa-!GEC09=jpT?l- zQ3^JtL*i?R07@o-1{pfJDc7-8TrV2{!#t6|rd)S;&PO^!&haD6`mYc(GiUK-(YV%b&)YCt=DB|?t z*Sy-*0=kM!zH)R$EzJX#3(0CBiMutNu>jjXM}7CpJ+D%86{A?Pq+ff3oqnw#cBGXx ztkqRuDng5{pty>BDv1Igv&#oX5q*ZLMSgQL8xj15%7X`yY6vgF;?8^LI5kv6EoWWeKX*`g( zkQDipKlv}>*s5Ln4S6UyZ&tmp>K7v5K=p|R?5S6 zdaAmdqNq@2rws8a0-VQT5SHlxSd5$vFrLU$XCK6BGx0x#6cAIV0z4cWdXXjvNGK0% z&)1Ywj5QbBK~XUEWOpYDs;->33gU(EDTYbSP=AR`mIzFreL4=MVGN(trTYf3qM1@I z8c!lG?YYFtFLSJ)O$=emJdM2%JAGm?Yx&SpEfCww{LqeyNLv}eQ$cW2jPYO3hG*QqV%$`t?s>ql}J98UGB$Jcuc z$mFi-WX%_^WR0uaSq$225hz$ka8#qTmg&{h8B5SXyh4_XA_$fm>FYmW$E9@|7Cz$l zAn6~mJ?*Ce(p2X@>^R{((`@pUw^%9ySqNkw!mjw@Rc!u+x_cJ-HL*1MLsv7To!lfS ziUE*=??F2=YK+r{1e6L+`izY$O5@_yH4i?Q;{>e*J@(&T#?s9N z6uMqnS5Mj1=ztz#Y|IU8%iNacX~F>IP471bNTd-p^~X2d>bD74!30pWC@9(?}3)(#?TRVx(q;}#fnd zQ;AU_2O?dKq0=n+E(CIK9AcyUVafWPoCv}&ARBQyvFP4~f)j|Psr#z5Q zu}x(%`a{%2%A$zj_MMNu>1?s}TfOqR=hA~8?s^();Vx$&z0;-3O3OTjkwgCmll$@k zR!DTYay2BWz|>Bzv_B-#i}Hf`1fvla7n-4q5}5!6JL||M#U}rFn57%QsEg6=`J@-Vr=wZojPwh(+j-txLEN7O-vp29g)DNr1(u8G&6JGo>q$5+|OuVp0A zqYXZ?ngp$TvW;Sp6(y$(hw?C?jsT!Id)XWsa_#VE?c!=Khs(s|iZc>whbC|?o+#{& z98e}$`acsQ2J&H@otusa9)XzJa@tCnE===Ho5{s+rJ-(UFSj+bFO0_9J6X%ct%ct5 zZ!lD37uQ$7IAs@Cwuo?N9KO1O#l*^GJZ3s6_7&D42Nb#k_tf?-A~}Ci7|EJ`6er#b z<5uLGm|XlAva&T&EF%3=+Pi=X^UfR&a?2e+^b%5iM9ungI^2^9&2du8eF-h;BR zJfKhn%=rH%i^$G`R0gr+D9vQ%da6b7k~YaUFD20e9b1LbA3erbQjo(-Br!8!Eagtz zC-(<0RTzK+Y7YY~Qo|f#*pEXi%x(63rw4QLG2cdI)ir&iF}^bLxXgYb?#kCc#aJ>wjD3CeG zr^bJeO*$x@XU%%aA_ey&ag24Ptt2US^Y34}`3gHG$R^h^2Lwf6 ze&Y(`Gpa&ngMTo)xD71YPO1f@l!T2rGG06n#*1|g7vmhOfDO2uxq_atC?22n1PcdT+mV0w?xome5cozDx z=KbQx1Q!{}0d+7*NJ)y;B&Z}^lnQQI(sI~5rl9;nOir4~?RGQ#o_Xz4MIPwxx(9dq z+#(C-tvFY^Bs@8Utc=?BGg$PT4rZi573kz3gn^X=gIC{}eK5{EB;O>3sOI}^J$pBM zrFVvT@+fx136c6HHe~wjZ|9RLA_7<=aHgFd?VsC>2zZOiQVg&DBf*~vB;Y&y z&zhqPdJLtKzU1i0Sn}3lN(%%O2n$||&12xSRj1=siR%6(_W&utQ{Sr`e&9dBD(6?Ka6kXR zK%opzoj&tLOhI`k$#Ml@qtZMAu&Cz9T*UfISUo^}O?@uieMKPv$%|v-VpA#QY3-xP z3h3|Nu*_hw-@%yia#=W8c{ElvV4JS!BBa^YJ@b3O0?A>>aTJD+0Ft9-dgAhq?>%uW zKV`75q9_U#(b4nRaly@Nu_%_Se&NWZ`7ZVq>Xaqehy;jjfdqZ*0g`dZ>#ivkBvhrM zfkKJfcl5p>O!J@UUFzy!k#xcyjT@|)W?B)X` zfz$@|W9S||AE^d*_1puJQdN0NII%AULDzp!^- zIae{D*i8c8@^QT1?>iMy0?b0Z9bj3A|5>K#Z}A}jht~-{yU*weD$<9Q%`KLup);UD z?-d6Mwd>&R>lZFa#P?uD^f|3|5?}}{3&Hfl*8EI%q@hoyC#(bG{Jn~FGV zR8^o*MGkHKWa~Vmc{?idWdMdO+UYsyyO5z|5(n@aT`7^)8Ev~;465&5h_l%ujYAFp zPRC^E1cWoBTJKc{irw(zTi35{FdA^yM0^&2305y`-0>EiSR@$|Koc~%U58Si){zyM zgtx#!y2IW(?(X71dce>2(&rf~J)d9$Qh|E*Z{7HTh{1PZw683xIBF3j)I?=0 zNp%xI6bqlPv4#{X6qbH4uB)+bB2n6w_iqXE`)@J|5SIRke~H0j)ErRk>i2hdU5QEM zHXQ2xH2g{%X_62$063(UNv1mRZ@tquEx+++Ip>p>s$?*TH1t3mEPWd5oxlMs{4!q zinCLvsLTfNF&of;4Irn=J;>Tw#|s80hJPtlDfwX(c*_E|CSGae`fjphT}t~(DL>N?nSS;x4z z9Hjmt{HkLG@k03|P|yvpba|)1y^M6_9^Ix!7iEP~Kn-Ow+koQg+JiS;(U@4?_8wfp z)X9WFHncjiT){u<#BGUCeGp_77z-?{e?<0)%?wME3TvZ5fT0gy=);}AWFMvvOej5% wW|FB_>CR}pBTC)Xd!XI}^&Y7AfPN4BKk`lK7@Cg*YybcN07*qoM6N<$f-fJ4!~g&Q literal 0 HcmV?d00001 diff --git a/node_modules/sweetalert/gulpfile.js b/node_modules/sweetalert/gulpfile.js new file mode 100644 index 0000000..31f8c0a --- /dev/null +++ b/node_modules/sweetalert/gulpfile.js @@ -0,0 +1,108 @@ +var gulp = require('gulp'); + +var glob = require('glob'); +var path = require('path'); +var jshint = require('gulp-jshint'); +var sass = require('gulp-sass'); +var concat = require('gulp-concat'); +var uglify = require('gulp-uglify'); +var rename = require('gulp-rename'); +var minifyCSS = require('gulp-minify-css'); +var babelify = require('babelify'); +var browserify = require('browserify'); +var source = require('vinyl-source-stream'); +var buffer = require('vinyl-buffer'); +var wrap = require('gulp-wrap'); +var qunit = require('gulp-qunit'); +var babel = require('gulp-babel'); + +// Lint Task +gulp.task('lint', function() { + gulp.src('dev/sweetalert.es6.js') + .pipe(jshint()) + .pipe(jshint.reporter('default')); + + return gulp.src('dev/*/*.js') + .pipe(jshint()) + .pipe(jshint.reporter('default')); +}); + +// Compile Our Sass +gulp.task('sass', function() { + + gulp.src('example/example.scss') + .pipe(sass()) + .pipe(rename('example.css')) + .pipe(gulp.dest('example')); + + // (We don't use minifyCSS since it breaks the ie9 file for some reason) + gulp.src(['dev/sweetalert.scss', 'dev/ie9.css', 'dev/loader-animation.css']) + .pipe(sass()) + .pipe(concat('sweetalert.css')) + .pipe(gulp.dest('dist')); +}); + + +// Compile theme CSS +var themes = glob.sync('themes/*').map(function(themeDir) { + return path.basename(themeDir); +}); + +themes.forEach(function(name) { + gulp.task(name + '-theme', function() { + return gulp.src('themes/' + name + '/' + name + '.scss') + .pipe(sass()) // etc + .pipe(rename(name + '.css')) + .pipe(gulp.dest('themes/' + name)) + }); +}); + +gulp.task('themes', themes.map(function(name){ return name + '-theme'; })); + +// Compile ES5 CommonJS entry point +gulp.task('commonjs', function() { + gulp.src('./dev/sweetalert.es6.js') + .pipe(babel()) + .pipe(rename('sweetalert.js')) + .pipe(gulp.dest('lib')); + gulp.src('./dev/modules/*.js') + .pipe(babel()) + .pipe(gulp.dest('lib/modules')); +}); + +// Concatenate & Minify JS +gulp.task('scripts', function() { + return browserify({ + entries: './dev/sweetalert.es6.js', + debug: true + }) + .transform(babelify) + .bundle() + .pipe(source('sweetalert-dev.js')) + .pipe(wrap({ + src: './dev/gulpfile-wrap-template.js' + })) + .pipe(gulp.dest('dist')) // Developer version + + .pipe(rename('sweetalert.min.js')) + .pipe(buffer()) + .pipe(uglify()) + .pipe(gulp.dest('dist')); // User version +}); + +gulp.task('test', function() { + return gulp.src('./test/index.html') + .pipe(qunit({ + timeout: 20 + })); +}); + +// Watch Files For Changes +gulp.task('watch', function() { + gulp.watch(['dev/*.js', 'dev/*/*.js'], ['lint', 'scripts']); + gulp.watch(['dev/*.scss', 'dev/*.css'], ['sass']); + gulp.watch('themes/*/*.scss', ['themes']); +}); + +// Default Task +gulp.task('default', ['lint', 'sass', 'scripts', 'commonjs', 'watch', 'test']); diff --git a/node_modules/sweetalert/index.html b/node_modules/sweetalert/index.html new file mode 100644 index 0000000..5f2b6ff --- /dev/null +++ b/node_modules/sweetalert/index.html @@ -0,0 +1,584 @@ + + + + + + + + SweetAlert + + + + + + + + + + + + + +

Sweet Alert

+

A beautiful replacement for JavaScript's "Alert"

+ + + +

So... What does it do?

+

Here’s a comparison of a standard error message. The first one uses the built-in alert-function, while the second is using sweetAlert.

+ +
+

Normal alert

+ + +
Code:
+
alert("Oops... Something went wrong!");
+
+	
+ +
+
+ +
+

Sweet Alert

+ + +
Code:
+
sweetAlert("Oops...", "Something went wrong!", "error");
+
+ +

Pretty cool huh? SweetAlert automatically centers itself on the page and looks great no matter if you're using a desktop computer, mobile or tablet. It's even highly customizeable, as you can see below!

+ + + +

More examples

+ +

In these examples, we're using the shorthand function swal to call sweetAlert.

+ +
    + +
  • +
    +

    A basic message

    + +
    +
    swal("Here's a message!")
    +
  • + +
  • +
    +

    A title with a text under

    + +
    +
    swal("Here's a message!", "It's pretty, isn't it?")
    +
  • + +
  • +
    +

    A success message!

    + +
    +
    swal("Good job!", "You clicked the button!", "success")
    +
  • + +
  • +
    +

    A warning message, with a function attached to the "Confirm"-button...

    + +
    +
    swal({
    +  title: "Are you sure?",
    +  text: "You will not be able to recover this imaginary file!",
    +  type: "warning",
    +  showCancelButton: true,
    +  confirmButtonColor: "#DD6B55",
    +  confirmButtonText: "Yes, delete it!",
    +  closeOnConfirm: false
    +},
    +function(){
    +  swal("Deleted!", "Your imaginary file has been deleted.", "success");
    +});
    +
  • + +
  • +
    +

    ... and by passing a parameter, you can execute something else for "Cancel".

    + +
    +
    swal({
    +  title: "Are you sure?",
    +  text: "You will not be able to recover this imaginary file!",
    +  type: "warning",
    +  showCancelButton: true,
    +  confirmButtonColor: "#DD6B55",
    +  confirmButtonText: "Yes, delete it!",
    +  cancelButtonText: "No, cancel plx!",
    +  closeOnConfirm: false,
    +  closeOnCancel: false
    +},
    +function(isConfirm){
    +  if (isConfirm) {
    +    swal("Deleted!", "Your imaginary file has been deleted.", "success");
    +  } else {
    +	    swal("Cancelled", "Your imaginary file is safe :)", "error");
    +  }
    +});
    +
  • + +
  • +
    +

    A message with a custom icon

    + +
    +
    swal({
    +  title: "Sweet!",
    +  text: "Here's a custom image.",
    +  imageUrl: "images/thumbs-up.jpg"
    +});
    +
  • + +
  • +
    +

    An HTML message

    + +
    +
    swal({
    +  title: "HTML <small>Title</small>!",
    +  text: "A custom <span style="color:#F8BB86">html<span> message.",
    +  html: true
    +});
    +
  • + +
  • +
    +

    A message with auto close timer

    + +
    +
    swal({
    +  title: "Auto close alert!",
    +  text: "I will close in 2 seconds.",
    +  timer: 2000,
    +  showConfirmButton: false
    +});
    +
  • + + +
  • +
    +

    A replacement for the "prompt" function

    + +
    +
    swal({
    +  title: "An input!",
    +  text: "Write something interesting:",
    +  type: "input",
    +  showCancelButton: true,
    +  closeOnConfirm: false,
    +  animation: "slide-from-top",
    +  inputPlaceholder: "Write something"
    +},
    +function(inputValue){
    +  if (inputValue === false) return false;
    +  
    +  if (inputValue === "") {
    +    swal.showInputError("You need to write something!");
    +    return false
    +  }
    +  
    +  swal("Nice!", "You wrote: " + inputValue, "success");
    +});
    +
  • + +
  • +
    +

    With a loader (for AJAX request for example)

    + +
    +
    swal({
    +  title: "Ajax request example",
    +  text: "Submit to run ajax request",
    +  type: "info",
    +  showCancelButton: true,
    +  closeOnConfirm: false,
    +  showLoaderOnConfirm: true,
    +},
    +function(){
    +  setTimeout(function(){
    +    swal("Ajax request finished!");
    +  }, 2000);
    +});
    +
  • + +
  • +
    +

    You can also change the theme of SweetAlert!

    + +
    +
    <link rel="stylesheet" type="text/css" href="dist/sweetalert.css">
    +			<link rel="stylesheet" type="text/css" href="themes/twitter.css">
    +
  • + +
+ + + +

Download & install

+ +
+

Method 1: Install through bower:

+
$ bower install sweetalert
+
+ +
+

Method 2: Install through NPM:

+
$ npm install sweetalert
+
+ +

Method 3: Download the sweetAlert CSS and JavaScript files.

+ +Download files + +
    +
  1. +

    Initialize the plugin by referencing the necessary files:

    +
    <script src="dist/sweetalert.min.js"></script>
    +<link rel="stylesheet" type="text/css" href="dist/sweetalert.css">
    +
  2. + +
  3. +

    Call the sweetAlert-function after the page has loaded

    +
    swal({
    +  title: "Error!",
    +  text: "Here's my error message!",
    +  type: "error",
    +  confirmButtonText: "Cool"
    +});
    +
    +
  4. +
+ + + + +

Configuration

+ +

Here are the keys that you can use if you pass an object into sweetAlert:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ Argument +
Default value +
+ Description +
titlenull (required)The title of the modal. It can either be added to the object under the key "title" or passed as the first parameter of the function.
textnullA description for the modal. It can either be added to the object under the key "text" or passed as the second parameter of the function.
typenullThe type of the modal. SweetAlert comes with 4 built-in types which will show a corresponding icon animation: "warning", "error", "success" and "info". You can also set it as "input" to get a prompt modal. It can either be put in the object under the key "type" or passed as the third parameter of the function.
allowEscapeKeytrueIf set to true, the user can dismiss the modal by pressing the Escape key.
customClassnullA custom CSS class for the modal. It can be added to the object under the key "customClass".
allowOutsideClickfalseIf set to true, the user can dismiss the modal by clicking outside it.
showCancelButtonfalseIf set to true, a "Cancel"-button will be shown, which the user can click on to dismiss the modal.
showConfirmButtontrueIf set to false, the "OK/Confirm"-button will be hidden. Make sure you set a timer or set allowOutsideClick to true when using this, in order not to annoy the user.
confirmButtonText"OK"Use this to change the text on the "Confirm"-button. If showCancelButton is set as true, the confirm button will automatically show "Confirm" instead of "OK".
confirmButtonColor"#AEDEF4"Use this to change the background color of the "Confirm"-button (must be a HEX value).
cancelButtonText"Cancel"Use this to change the text on the "Cancel"-button.
closeOnConfirmtrueSet to false if you want the modal to stay open even if the user presses the "Confirm"-button. This is especially useful if the function attached to the "Confirm"-button is another SweetAlert.
closeOnCanceltrueSame as closeOnConfirm, but for the cancel button.
imageUrlnullAdd a customized icon for the modal. Should contain a string with the path to the image.
imageSize"80x80"If imageUrl is set, you can specify imageSize to describes how big you want the icon to be in px. Pass in a string with two values separated by an "x". The first value is the width, the second is the height.
timernullAuto close timer of the modal. Set in ms (milliseconds).
htmlfalseIf set to true, will not escape title and text parameters. (Set to false if you're worried about XSS attacks.)
animationtrueIf set to false, the modal's animation will be disabled. Possible (string) values : pop (default when animation set to true), slide-from-top, slide-from-bottom
inputType"text"Change the type of the input field when using type: "input" (this can be useful if you want users to type in their password for example).
inputPlaceholdernullWhen using the input-type, you can specify a placeholder to help the user.
inputValuenullSpecify a default text value that you want your input to show when using type: "input"
showLoaderOnConfirmfalseSet to true to disable the buttons and show that something is loading.
+ + + +

Methods

+ +

SweetAlert also comes with some simple methods that you can call:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ Function +
Example +
+ Description +
setDefaultsswal.setDefaults({ confirmButtonColor: '#0000' });If you end up using a lot of the same settings when calling SweetAlert, you can use setDefaults at the start of your program to set them once and for all!
closeswal.close();Close the currently open SweetAlert programatically.
showInputErrorswal.showInputError("Invalid email!");Show an error message after validating the input field, if the user's data is bad
enableButtons, disableButtonsswal.disableButtons();Disable or enable the user to click on the cancel and confirm buttons.
+ + + + +

Contribute

+

SweetAlert was created by Tristan Edwards, you can follow him on or Dribbble for updates and other cool projects!

+

Feel free to fork SweetAlert on GitHub if you have any features that you want to add!

+ + +
+ • +
+ + + + + + + + + diff --git a/node_modules/sweetalert/lib/modules/default-params.js b/node_modules/sweetalert/lib/modules/default-params.js new file mode 100644 index 0000000..8f07f2e --- /dev/null +++ b/node_modules/sweetalert/lib/modules/default-params.js @@ -0,0 +1,32 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); +var defaultParams = { + title: '', + text: '', + type: null, + allowOutsideClick: false, + showConfirmButton: true, + showCancelButton: false, + closeOnConfirm: true, + closeOnCancel: true, + confirmButtonText: 'OK', + confirmButtonColor: '#8CD4F5', + cancelButtonText: 'Cancel', + imageUrl: null, + imageSize: null, + timer: null, + customClass: '', + html: false, + animation: true, + allowEscapeKey: true, + inputType: 'text', + inputPlaceholder: '', + inputValue: '', + showLoaderOnConfirm: false +}; + +exports['default'] = defaultParams; +module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/sweetalert/lib/modules/handle-click.js b/node_modules/sweetalert/lib/modules/handle-click.js new file mode 100644 index 0000000..67a59b0 --- /dev/null +++ b/node_modules/sweetalert/lib/modules/handle-click.js @@ -0,0 +1,135 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); + +var _colorLuminance = require('./utils'); + +var _getModal = require('./handle-swal-dom'); + +var _hasClass$isDescendant = require('./handle-dom'); + +/* + * User clicked on "Confirm"/"OK" or "Cancel" + */ +var handleButton = function handleButton(event, params, modal) { + var e = event || window.event; + var target = e.target || e.srcElement; + + var targetedConfirm = target.className.indexOf('confirm') !== -1; + var targetedOverlay = target.className.indexOf('sweet-overlay') !== -1; + var modalIsVisible = _hasClass$isDescendant.hasClass(modal, 'visible'); + var doneFunctionExists = params.doneFunction && modal.getAttribute('data-has-done-function') === 'true'; + + // Since the user can change the background-color of the confirm button programmatically, + // we must calculate what the color should be on hover/active + var normalColor, hoverColor, activeColor; + if (targetedConfirm && params.confirmButtonColor) { + normalColor = params.confirmButtonColor; + hoverColor = _colorLuminance.colorLuminance(normalColor, -0.04); + activeColor = _colorLuminance.colorLuminance(normalColor, -0.14); + } + + function shouldSetConfirmButtonColor(color) { + if (targetedConfirm && params.confirmButtonColor) { + target.style.backgroundColor = color; + } + } + + switch (e.type) { + case 'mouseover': + shouldSetConfirmButtonColor(hoverColor); + break; + + case 'mouseout': + shouldSetConfirmButtonColor(normalColor); + break; + + case 'mousedown': + shouldSetConfirmButtonColor(activeColor); + break; + + case 'mouseup': + shouldSetConfirmButtonColor(hoverColor); + break; + + case 'focus': + var $confirmButton = modal.querySelector('button.confirm'); + var $cancelButton = modal.querySelector('button.cancel'); + + if (targetedConfirm) { + $cancelButton.style.boxShadow = 'none'; + } else { + $confirmButton.style.boxShadow = 'none'; + } + break; + + case 'click': + var clickedOnModal = modal === target; + var clickedOnModalChild = _hasClass$isDescendant.isDescendant(modal, target); + + // Ignore click outside if allowOutsideClick is false + if (!clickedOnModal && !clickedOnModalChild && modalIsVisible && !params.allowOutsideClick) { + break; + } + + if (targetedConfirm && doneFunctionExists && modalIsVisible) { + handleConfirm(modal, params); + } else if (doneFunctionExists && modalIsVisible || targetedOverlay) { + handleCancel(modal, params); + } else if (_hasClass$isDescendant.isDescendant(modal, target) && target.tagName === 'BUTTON') { + sweetAlert.close(); + } + break; + } +}; + +/* + * User clicked on "Confirm"/"OK" + */ +var handleConfirm = function handleConfirm(modal, params) { + var callbackValue = true; + + if (_hasClass$isDescendant.hasClass(modal, 'show-input')) { + callbackValue = modal.querySelector('input').value; + + if (!callbackValue) { + callbackValue = ''; + } + } + + params.doneFunction(callbackValue); + + if (params.closeOnConfirm) { + sweetAlert.close(); + } + // Disable cancel and confirm button if the parameter is true + if (params.showLoaderOnConfirm) { + sweetAlert.disableButtons(); + } +}; + +/* + * User clicked on "Cancel" + */ +var handleCancel = function handleCancel(modal, params) { + // Check if callback function expects a parameter (to track cancel actions) + var functionAsStr = String(params.doneFunction).replace(/\s/g, ''); + var functionHandlesCancel = functionAsStr.substring(0, 9) === 'function(' && functionAsStr.substring(9, 10) !== ')'; + + if (functionHandlesCancel) { + params.doneFunction(false); + } + + if (params.closeOnCancel) { + sweetAlert.close(); + } +}; + +exports['default'] = { + handleButton: handleButton, + handleConfirm: handleConfirm, + handleCancel: handleCancel +}; +module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/sweetalert/lib/modules/handle-dom.js b/node_modules/sweetalert/lib/modules/handle-dom.js new file mode 100644 index 0000000..e8c22a5 --- /dev/null +++ b/node_modules/sweetalert/lib/modules/handle-dom.js @@ -0,0 +1,191 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); +var hasClass = function hasClass(elem, className) { + return new RegExp(' ' + className + ' ').test(' ' + elem.className + ' '); +}; + +var addClass = function addClass(elem, className) { + if (!hasClass(elem, className)) { + elem.className += ' ' + className; + } +}; + +var removeClass = function removeClass(elem, className) { + var newClass = ' ' + elem.className.replace(/[\t\r\n]/g, ' ') + ' '; + if (hasClass(elem, className)) { + while (newClass.indexOf(' ' + className + ' ') >= 0) { + newClass = newClass.replace(' ' + className + ' ', ' '); + } + elem.className = newClass.replace(/^\s+|\s+$/g, ''); + } +}; + +var escapeHtml = function escapeHtml(str) { + var div = document.createElement('div'); + div.appendChild(document.createTextNode(str)); + return div.innerHTML; +}; + +var _show = function _show(elem) { + elem.style.opacity = ''; + elem.style.display = 'block'; +}; + +var show = function show(elems) { + if (elems && !elems.length) { + return _show(elems); + } + for (var i = 0; i < elems.length; ++i) { + _show(elems[i]); + } +}; + +var _hide = function _hide(elem) { + elem.style.opacity = ''; + elem.style.display = 'none'; +}; + +var hide = function hide(elems) { + if (elems && !elems.length) { + return _hide(elems); + } + for (var i = 0; i < elems.length; ++i) { + _hide(elems[i]); + } +}; + +var isDescendant = function isDescendant(parent, child) { + var node = child.parentNode; + while (node !== null) { + if (node === parent) { + return true; + } + node = node.parentNode; + } + return false; +}; + +var getTopMargin = function getTopMargin(elem) { + elem.style.left = '-9999px'; + elem.style.display = 'block'; + + var height = elem.clientHeight, + padding; + if (typeof getComputedStyle !== 'undefined') { + // IE 8 + padding = parseInt(getComputedStyle(elem).getPropertyValue('padding-top'), 10); + } else { + padding = parseInt(elem.currentStyle.padding); + } + + elem.style.left = ''; + elem.style.display = 'none'; + return '-' + parseInt((height + padding) / 2) + 'px'; +}; + +var fadeIn = function fadeIn(elem, interval) { + if (+elem.style.opacity < 1) { + interval = interval || 16; + elem.style.opacity = 0; + elem.style.display = 'block'; + var last = +new Date(); + var tick = (function (_tick) { + function tick() { + return _tick.apply(this, arguments); + } + + tick.toString = function () { + return _tick.toString(); + }; + + return tick; + })(function () { + elem.style.opacity = +elem.style.opacity + (new Date() - last) / 100; + last = +new Date(); + + if (+elem.style.opacity < 1) { + setTimeout(tick, interval); + } + }); + tick(); + } + elem.style.display = 'block'; //fallback IE8 +}; + +var fadeOut = function fadeOut(elem, interval) { + interval = interval || 16; + elem.style.opacity = 1; + var last = +new Date(); + var tick = (function (_tick2) { + function tick() { + return _tick2.apply(this, arguments); + } + + tick.toString = function () { + return _tick2.toString(); + }; + + return tick; + })(function () { + elem.style.opacity = +elem.style.opacity - (new Date() - last) / 100; + last = +new Date(); + + if (+elem.style.opacity > 0) { + setTimeout(tick, interval); + } else { + elem.style.display = 'none'; + } + }); + tick(); +}; + +var fireClick = function fireClick(node) { + // Taken from http://www.nonobtrusive.com/2011/11/29/programatically-fire-crossbrowser-click-event-with-javascript/ + // Then fixed for today's Chrome browser. + if (typeof MouseEvent === 'function') { + // Up-to-date approach + var mevt = new MouseEvent('click', { + view: window, + bubbles: false, + cancelable: true + }); + node.dispatchEvent(mevt); + } else if (document.createEvent) { + // Fallback + var evt = document.createEvent('MouseEvents'); + evt.initEvent('click', false, false); + node.dispatchEvent(evt); + } else if (document.createEventObject) { + node.fireEvent('onclick'); + } else if (typeof node.onclick === 'function') { + node.onclick(); + } +}; + +var stopEventPropagation = function stopEventPropagation(e) { + // In particular, make sure the space bar doesn't scroll the main window. + if (typeof e.stopPropagation === 'function') { + e.stopPropagation(); + e.preventDefault(); + } else if (window.event && window.event.hasOwnProperty('cancelBubble')) { + window.event.cancelBubble = true; + } +}; + +exports.hasClass = hasClass; +exports.addClass = addClass; +exports.removeClass = removeClass; +exports.escapeHtml = escapeHtml; +exports._show = _show; +exports.show = show; +exports._hide = _hide; +exports.hide = hide; +exports.isDescendant = isDescendant; +exports.getTopMargin = getTopMargin; +exports.fadeIn = fadeIn; +exports.fadeOut = fadeOut; +exports.fireClick = fireClick; +exports.stopEventPropagation = stopEventPropagation; \ No newline at end of file diff --git a/node_modules/sweetalert/lib/modules/handle-key.js b/node_modules/sweetalert/lib/modules/handle-key.js new file mode 100644 index 0000000..4869f9e --- /dev/null +++ b/node_modules/sweetalert/lib/modules/handle-key.js @@ -0,0 +1,79 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); + +var _stopEventPropagation$fireClick = require('./handle-dom'); + +var _setFocusStyle = require('./handle-swal-dom'); + +var handleKeyDown = function handleKeyDown(event, params, modal) { + var e = event || window.event; + var keyCode = e.keyCode || e.which; + + var $okButton = modal.querySelector('button.confirm'); + var $cancelButton = modal.querySelector('button.cancel'); + var $modalButtons = modal.querySelectorAll('button[tabindex]'); + + if ([9, 13, 32, 27].indexOf(keyCode) === -1) { + // Don't do work on keys we don't care about. + return; + } + + var $targetElement = e.target || e.srcElement; + + var btnIndex = -1; // Find the button - note, this is a nodelist, not an array. + for (var i = 0; i < $modalButtons.length; i++) { + if ($targetElement === $modalButtons[i]) { + btnIndex = i; + break; + } + } + + if (keyCode === 9) { + // TAB + if (btnIndex === -1) { + // No button focused. Jump to the confirm button. + $targetElement = $okButton; + } else { + // Cycle to the next button + if (btnIndex === $modalButtons.length - 1) { + $targetElement = $modalButtons[0]; + } else { + $targetElement = $modalButtons[btnIndex + 1]; + } + } + + _stopEventPropagation$fireClick.stopEventPropagation(e); + $targetElement.focus(); + + if (params.confirmButtonColor) { + _setFocusStyle.setFocusStyle($targetElement, params.confirmButtonColor); + } + } else { + if (keyCode === 13) { + if ($targetElement.tagName === 'INPUT') { + $targetElement = $okButton; + $okButton.focus(); + } + + if (btnIndex === -1) { + // ENTER/SPACE clicked outside of a button. + $targetElement = $okButton; + } else { + // Do nothing - let the browser handle it. + $targetElement = undefined; + } + } else if (keyCode === 27 && params.allowEscapeKey === true) { + $targetElement = $cancelButton; + _stopEventPropagation$fireClick.fireClick($targetElement, e); + } else { + // Fallback - let the browser handle it. + $targetElement = undefined; + } + } +}; + +exports['default'] = handleKeyDown; +module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/sweetalert/lib/modules/handle-swal-dom.js b/node_modules/sweetalert/lib/modules/handle-swal-dom.js new file mode 100644 index 0000000..1a18bea --- /dev/null +++ b/node_modules/sweetalert/lib/modules/handle-swal-dom.js @@ -0,0 +1,167 @@ +'use strict'; + +var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; + +Object.defineProperty(exports, '__esModule', { + value: true +}); + +var _hexToRgb = require('./utils'); + +var _removeClass$getTopMargin$fadeIn$show$addClass = require('./handle-dom'); + +var _defaultParams = require('./default-params'); + +var _defaultParams2 = _interopRequireWildcard(_defaultParams); + +/* + * Add modal + overlay to DOM + */ + +var _injectedHTML = require('./injected-html'); + +var _injectedHTML2 = _interopRequireWildcard(_injectedHTML); + +var modalClass = '.sweet-alert'; +var overlayClass = '.sweet-overlay'; + +var sweetAlertInitialize = function sweetAlertInitialize() { + var sweetWrap = document.createElement('div'); + sweetWrap.innerHTML = _injectedHTML2['default']; + + // Append elements to body + while (sweetWrap.firstChild) { + document.body.appendChild(sweetWrap.firstChild); + } +}; + +/* + * Get DOM element of modal + */ +var getModal = (function (_getModal) { + function getModal() { + return _getModal.apply(this, arguments); + } + + getModal.toString = function () { + return _getModal.toString(); + }; + + return getModal; +})(function () { + var $modal = document.querySelector(modalClass); + + if (!$modal) { + sweetAlertInitialize(); + $modal = getModal(); + } + + return $modal; +}); + +/* + * Get DOM element of input (in modal) + */ +var getInput = function getInput() { + var $modal = getModal(); + if ($modal) { + return $modal.querySelector('input'); + } +}; + +/* + * Get DOM element of overlay + */ +var getOverlay = function getOverlay() { + return document.querySelector(overlayClass); +}; + +/* + * Add box-shadow style to button (depending on its chosen bg-color) + */ +var setFocusStyle = function setFocusStyle($button, bgColor) { + var rgbColor = _hexToRgb.hexToRgb(bgColor); + $button.style.boxShadow = '0 0 2px rgba(' + rgbColor + ', 0.8), inset 0 0 0 1px rgba(0, 0, 0, 0.05)'; +}; + +/* + * Animation when opening modal + */ +var openModal = function openModal(callback) { + var $modal = getModal(); + _removeClass$getTopMargin$fadeIn$show$addClass.fadeIn(getOverlay(), 10); + _removeClass$getTopMargin$fadeIn$show$addClass.show($modal); + _removeClass$getTopMargin$fadeIn$show$addClass.addClass($modal, 'showSweetAlert'); + _removeClass$getTopMargin$fadeIn$show$addClass.removeClass($modal, 'hideSweetAlert'); + + window.previousActiveElement = document.activeElement; + var $okButton = $modal.querySelector('button.confirm'); + $okButton.focus(); + + setTimeout(function () { + _removeClass$getTopMargin$fadeIn$show$addClass.addClass($modal, 'visible'); + }, 500); + + var timer = $modal.getAttribute('data-timer'); + + if (timer !== 'null' && timer !== '') { + var timerCallback = callback; + $modal.timeout = setTimeout(function () { + var doneFunctionExists = (timerCallback || null) && $modal.getAttribute('data-has-done-function') === 'true'; + if (doneFunctionExists) { + timerCallback(null); + } else { + sweetAlert.close(); + } + }, timer); + } +}; + +/* + * Reset the styling of the input + * (for example if errors have been shown) + */ +var resetInput = function resetInput() { + var $modal = getModal(); + var $input = getInput(); + + _removeClass$getTopMargin$fadeIn$show$addClass.removeClass($modal, 'show-input'); + $input.value = _defaultParams2['default'].inputValue; + $input.setAttribute('type', _defaultParams2['default'].inputType); + $input.setAttribute('placeholder', _defaultParams2['default'].inputPlaceholder); + + resetInputError(); +}; + +var resetInputError = function resetInputError(event) { + // If press enter => ignore + if (event && event.keyCode === 13) { + return false; + } + + var $modal = getModal(); + + var $errorIcon = $modal.querySelector('.sa-input-error'); + _removeClass$getTopMargin$fadeIn$show$addClass.removeClass($errorIcon, 'show'); + + var $errorContainer = $modal.querySelector('.sa-error-container'); + _removeClass$getTopMargin$fadeIn$show$addClass.removeClass($errorContainer, 'show'); +}; + +/* + * Set "margin-top"-property on modal based on its computed height + */ +var fixVerticalPosition = function fixVerticalPosition() { + var $modal = getModal(); + $modal.style.marginTop = _removeClass$getTopMargin$fadeIn$show$addClass.getTopMargin(getModal()); +}; + +exports.sweetAlertInitialize = sweetAlertInitialize; +exports.getModal = getModal; +exports.getOverlay = getOverlay; +exports.getInput = getInput; +exports.setFocusStyle = setFocusStyle; +exports.openModal = openModal; +exports.resetInput = resetInput; +exports.resetInputError = resetInputError; +exports.fixVerticalPosition = fixVerticalPosition; \ No newline at end of file diff --git a/node_modules/sweetalert/lib/modules/injected-html.js b/node_modules/sweetalert/lib/modules/injected-html.js new file mode 100644 index 0000000..67623dc --- /dev/null +++ b/node_modules/sweetalert/lib/modules/injected-html.js @@ -0,0 +1,42 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var injectedHTML = + +// Dark overlay +"
" + + +// Modal +"
" + + +// Error icon +"
\n \n \n \n \n
" + + +// Warning icon +"
\n \n \n
" + + +// Info icon +"
" + + +// Success icon +"
\n \n \n\n
\n
\n
" + "
" + + +// Title, text and input +"

Title

\n

Text

\n
\n \n
\n
" + + +// Input errors +"
\n
!
\n

Not valid!

\n
" + + +// Cancel and confirm buttons +"
\n \n
\n " + + +// Loading animation +"
\n
\n
\n
\n
\n
\n
" + + +// End of modal +"
"; + +exports["default"] = injectedHTML; +module.exports = exports["default"]; \ No newline at end of file diff --git a/node_modules/sweetalert/lib/modules/set-params.js b/node_modules/sweetalert/lib/modules/set-params.js new file mode 100644 index 0000000..9aeea0e --- /dev/null +++ b/node_modules/sweetalert/lib/modules/set-params.js @@ -0,0 +1,225 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); + +var _isIE8 = require('./utils'); + +var _getModal$getInput$setFocusStyle = require('./handle-swal-dom'); + +var _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide = require('./handle-dom'); + +var alertTypes = ['error', 'warning', 'info', 'success', 'input', 'prompt']; + +/* + * Set type, text and actions on modal + */ +var setParameters = function setParameters(params) { + var modal = _getModal$getInput$setFocusStyle.getModal(); + + var $title = modal.querySelector('h2'); + var $text = modal.querySelector('p'); + var $cancelBtn = modal.querySelector('button.cancel'); + var $confirmBtn = modal.querySelector('button.confirm'); + + /* + * Title + */ + $title.innerHTML = params.html ? params.title : _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.escapeHtml(params.title).split('\n').join('
'); + + /* + * Text + */ + $text.innerHTML = params.html ? params.text : _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.escapeHtml(params.text || '').split('\n').join('
'); + if (params.text) _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.show($text); + + /* + * Custom class + */ + if (params.customClass) { + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.addClass(modal, params.customClass); + modal.setAttribute('data-custom-class', params.customClass); + } else { + // Find previously set classes and remove them + var customClass = modal.getAttribute('data-custom-class'); + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.removeClass(modal, customClass); + modal.setAttribute('data-custom-class', ''); + } + + /* + * Icon + */ + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.hide(modal.querySelectorAll('.sa-icon')); + + if (params.type && !_isIE8.isIE8()) { + var _ret = (function () { + + var validType = false; + + for (var i = 0; i < alertTypes.length; i++) { + if (params.type === alertTypes[i]) { + validType = true; + break; + } + } + + if (!validType) { + logStr('Unknown alert type: ' + params.type); + return { + v: false + }; + } + + var typesWithIcons = ['success', 'error', 'warning', 'info']; + var $icon = undefined; + + if (typesWithIcons.indexOf(params.type) !== -1) { + $icon = modal.querySelector('.sa-icon.' + 'sa-' + params.type); + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.show($icon); + } + + var $input = _getModal$getInput$setFocusStyle.getInput(); + + // Animate icon + switch (params.type) { + + case 'success': + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.addClass($icon, 'animate'); + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.addClass($icon.querySelector('.sa-tip'), 'animateSuccessTip'); + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.addClass($icon.querySelector('.sa-long'), 'animateSuccessLong'); + break; + + case 'error': + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.addClass($icon, 'animateErrorIcon'); + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.addClass($icon.querySelector('.sa-x-mark'), 'animateXMark'); + break; + + case 'warning': + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.addClass($icon, 'pulseWarning'); + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.addClass($icon.querySelector('.sa-body'), 'pulseWarningIns'); + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.addClass($icon.querySelector('.sa-dot'), 'pulseWarningIns'); + break; + + case 'input': + case 'prompt': + $input.setAttribute('type', params.inputType); + $input.value = params.inputValue; + $input.setAttribute('placeholder', params.inputPlaceholder); + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.addClass(modal, 'show-input'); + setTimeout(function () { + $input.focus(); + $input.addEventListener('keyup', swal.resetInputError); + }, 400); + break; + } + })(); + + if (typeof _ret === 'object') { + return _ret.v; + } + } + + /* + * Custom image + */ + if (params.imageUrl) { + var $customIcon = modal.querySelector('.sa-icon.sa-custom'); + + $customIcon.style.backgroundImage = 'url(' + params.imageUrl + ')'; + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.show($customIcon); + + var _imgWidth = 80; + var _imgHeight = 80; + + if (params.imageSize) { + var dimensions = params.imageSize.toString().split('x'); + var imgWidth = dimensions[0]; + var imgHeight = dimensions[1]; + + if (!imgWidth || !imgHeight) { + logStr('Parameter imageSize expects value with format WIDTHxHEIGHT, got ' + params.imageSize); + } else { + _imgWidth = imgWidth; + _imgHeight = imgHeight; + } + } + + $customIcon.setAttribute('style', $customIcon.getAttribute('style') + 'width:' + _imgWidth + 'px; height:' + _imgHeight + 'px'); + } + + /* + * Show cancel button? + */ + modal.setAttribute('data-has-cancel-button', params.showCancelButton); + if (params.showCancelButton) { + $cancelBtn.style.display = 'inline-block'; + } else { + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.hide($cancelBtn); + } + + /* + * Show confirm button? + */ + modal.setAttribute('data-has-confirm-button', params.showConfirmButton); + if (params.showConfirmButton) { + $confirmBtn.style.display = 'inline-block'; + } else { + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.hide($confirmBtn); + } + + /* + * Custom text on cancel/confirm buttons + */ + if (params.cancelButtonText) { + $cancelBtn.innerHTML = _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.escapeHtml(params.cancelButtonText); + } + if (params.confirmButtonText) { + $confirmBtn.innerHTML = _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide.escapeHtml(params.confirmButtonText); + } + + /* + * Custom color on confirm button + */ + if (params.confirmButtonColor) { + // Set confirm button to selected background color + $confirmBtn.style.backgroundColor = params.confirmButtonColor; + + // Set the confirm button color to the loading ring + $confirmBtn.style.borderLeftColor = params.confirmLoadingButtonColor; + $confirmBtn.style.borderRightColor = params.confirmLoadingButtonColor; + + // Set box-shadow to default focused button + _getModal$getInput$setFocusStyle.setFocusStyle($confirmBtn, params.confirmButtonColor); + } + + /* + * Allow outside click + */ + modal.setAttribute('data-allow-outside-click', params.allowOutsideClick); + + /* + * Callback function + */ + var hasDoneFunction = params.doneFunction ? true : false; + modal.setAttribute('data-has-done-function', hasDoneFunction); + + /* + * Animation + */ + if (!params.animation) { + modal.setAttribute('data-animation', 'none'); + } else if (typeof params.animation === 'string') { + modal.setAttribute('data-animation', params.animation); // Custom animation + } else { + modal.setAttribute('data-animation', 'pop'); + } + + /* + * Timer + */ + modal.setAttribute('data-timer', params.timer); +}; + +exports['default'] = setParameters; +module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/sweetalert/lib/modules/utils.js b/node_modules/sweetalert/lib/modules/utils.js new file mode 100644 index 0000000..fe1285a --- /dev/null +++ b/node_modules/sweetalert/lib/modules/utils.js @@ -0,0 +1,73 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); +/* + * Allow user to pass their own params + */ +var extend = function extend(a, b) { + for (var key in b) { + if (b.hasOwnProperty(key)) { + a[key] = b[key]; + } + } + return a; +}; + +/* + * Convert HEX codes to RGB values (#000000 -> rgb(0,0,0)) + */ +var hexToRgb = function hexToRgb(hex) { + var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); + return result ? parseInt(result[1], 16) + ', ' + parseInt(result[2], 16) + ', ' + parseInt(result[3], 16) : null; +}; + +/* + * Check if the user is using Internet Explorer 8 (for fallbacks) + */ +var isIE8 = function isIE8() { + return window.attachEvent && !window.addEventListener; +}; + +/* + * IE compatible logging for developers + */ +var logStr = function logStr(string) { + if (window.console) { + // IE... + window.console.log('SweetAlert: ' + string); + } +}; + +/* + * Set hover, active and focus-states for buttons + * (source: http://www.sitepoint.com/javascript-generate-lighter-darker-color) + */ +var colorLuminance = function colorLuminance(hex, lum) { + // Validate hex string + hex = String(hex).replace(/[^0-9a-f]/gi, ''); + if (hex.length < 6) { + hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2]; + } + lum = lum || 0; + + // Convert to decimal and change luminosity + var rgb = '#'; + var c; + var i; + + for (i = 0; i < 3; i++) { + c = parseInt(hex.substr(i * 2, 2), 16); + c = Math.round(Math.min(Math.max(0, c + c * lum), 255)).toString(16); + rgb += ('00' + c).substr(c.length); + } + + return rgb; +}; + +exports.extend = extend; +exports.hexToRgb = hexToRgb; +exports.isIE8 = isIE8; +exports.logStr = logStr; +exports.colorLuminance = colorLuminance; \ No newline at end of file diff --git a/node_modules/sweetalert/lib/sweetalert.js b/node_modules/sweetalert/lib/sweetalert.js new file mode 100644 index 0000000..3a7db98 --- /dev/null +++ b/node_modules/sweetalert/lib/sweetalert.js @@ -0,0 +1,303 @@ +'use strict'; + +var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; + +Object.defineProperty(exports, '__esModule', { + value: true +}); +// SweetAlert +// 2014-2015 (c) - Tristan Edwards +// github.com/t4t5/sweetalert + +/* + * jQuery-like functions for manipulating the DOM + */ + +var _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation = require('./modules/handle-dom'); + +/* + * Handy utilities + */ + +var _extend$hexToRgb$isIE8$logStr$colorLuminance = require('./modules/utils'); + +/* + * Handle sweetAlert's DOM elements + */ + +var _sweetAlertInitialize$getModal$getOverlay$getInput$setFocusStyle$openModal$resetInput$fixVerticalPosition = require('./modules/handle-swal-dom'); + +// Handle button events and keyboard events + +var _handleButton$handleConfirm$handleCancel = require('./modules/handle-click'); + +var _handleKeyDown = require('./modules/handle-key'); + +var _handleKeyDown2 = _interopRequireWildcard(_handleKeyDown); + +// Default values + +var _defaultParams = require('./modules/default-params'); + +var _defaultParams2 = _interopRequireWildcard(_defaultParams); + +var _setParameters = require('./modules/set-params'); + +var _setParameters2 = _interopRequireWildcard(_setParameters); + +/* + * Remember state in cases where opening and handling a modal will fiddle with it. + * (We also use window.previousActiveElement as a global variable) + */ +var previousWindowKeyDown; +var lastFocusedButton; + +/* + * Global sweetAlert function + * (this is what the user calls) + */ +var sweetAlert, swal; + +exports['default'] = sweetAlert = swal = function () { + var customizations = arguments[0]; + + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.addClass(document.body, 'stop-scrolling'); + _sweetAlertInitialize$getModal$getOverlay$getInput$setFocusStyle$openModal$resetInput$fixVerticalPosition.resetInput(); + + /* + * Use argument if defined or default value from params object otherwise. + * Supports the case where a default value is boolean true and should be + * overridden by a corresponding explicit argument which is boolean false. + */ + function argumentOrDefault(key) { + var args = customizations; + return args[key] === undefined ? _defaultParams2['default'][key] : args[key]; + } + + if (customizations === undefined) { + _extend$hexToRgb$isIE8$logStr$colorLuminance.logStr('SweetAlert expects at least 1 attribute!'); + return false; + } + + var params = _extend$hexToRgb$isIE8$logStr$colorLuminance.extend({}, _defaultParams2['default']); + + switch (typeof customizations) { + + // Ex: swal("Hello", "Just testing", "info"); + case 'string': + params.title = customizations; + params.text = arguments[1] || ''; + params.type = arguments[2] || ''; + break; + + // Ex: swal({ title:"Hello", text: "Just testing", type: "info" }); + case 'object': + if (customizations.title === undefined) { + _extend$hexToRgb$isIE8$logStr$colorLuminance.logStr('Missing "title" argument!'); + return false; + } + + params.title = customizations.title; + + for (var customName in _defaultParams2['default']) { + params[customName] = argumentOrDefault(customName); + } + + // Show "Confirm" instead of "OK" if cancel button is visible + params.confirmButtonText = params.showCancelButton ? 'Confirm' : _defaultParams2['default'].confirmButtonText; + params.confirmButtonText = argumentOrDefault('confirmButtonText'); + + // Callback function when clicking on "OK"/"Cancel" + params.doneFunction = arguments[1] || null; + + break; + + default: + _extend$hexToRgb$isIE8$logStr$colorLuminance.logStr('Unexpected type of argument! Expected "string" or "object", got ' + typeof customizations); + return false; + + } + + _setParameters2['default'](params); + _sweetAlertInitialize$getModal$getOverlay$getInput$setFocusStyle$openModal$resetInput$fixVerticalPosition.fixVerticalPosition(); + _sweetAlertInitialize$getModal$getOverlay$getInput$setFocusStyle$openModal$resetInput$fixVerticalPosition.openModal(arguments[1]); + + // Modal interactions + var modal = _sweetAlertInitialize$getModal$getOverlay$getInput$setFocusStyle$openModal$resetInput$fixVerticalPosition.getModal(); + + /* + * Make sure all modal buttons respond to all events + */ + var $buttons = modal.querySelectorAll('button'); + var buttonEvents = ['onclick', 'onmouseover', 'onmouseout', 'onmousedown', 'onmouseup', 'onfocus']; + var onButtonEvent = function onButtonEvent(e) { + return _handleButton$handleConfirm$handleCancel.handleButton(e, params, modal); + }; + + for (var btnIndex = 0; btnIndex < $buttons.length; btnIndex++) { + for (var evtIndex = 0; evtIndex < buttonEvents.length; evtIndex++) { + var btnEvt = buttonEvents[evtIndex]; + $buttons[btnIndex][btnEvt] = onButtonEvent; + } + } + + // Clicking outside the modal dismisses it (if allowed by user) + _sweetAlertInitialize$getModal$getOverlay$getInput$setFocusStyle$openModal$resetInput$fixVerticalPosition.getOverlay().onclick = onButtonEvent; + + previousWindowKeyDown = window.onkeydown; + + var onKeyEvent = function onKeyEvent(e) { + return _handleKeyDown2['default'](e, params, modal); + }; + window.onkeydown = onKeyEvent; + + window.onfocus = function () { + // When the user has focused away and focused back from the whole window. + setTimeout(function () { + // Put in a timeout to jump out of the event sequence. + // Calling focus() in the event sequence confuses things. + if (lastFocusedButton !== undefined) { + lastFocusedButton.focus(); + lastFocusedButton = undefined; + } + }, 0); + }; + + // Show alert with enabled buttons always + swal.enableButtons(); +}; + +/* + * Set default params for each popup + * @param {Object} userParams + */ +sweetAlert.setDefaults = swal.setDefaults = function (userParams) { + if (!userParams) { + throw new Error('userParams is required'); + } + if (typeof userParams !== 'object') { + throw new Error('userParams has to be a object'); + } + + _extend$hexToRgb$isIE8$logStr$colorLuminance.extend(_defaultParams2['default'], userParams); +}; + +/* + * Animation when closing modal + */ +sweetAlert.close = swal.close = function () { + var modal = _sweetAlertInitialize$getModal$getOverlay$getInput$setFocusStyle$openModal$resetInput$fixVerticalPosition.getModal(); + + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.fadeOut(_sweetAlertInitialize$getModal$getOverlay$getInput$setFocusStyle$openModal$resetInput$fixVerticalPosition.getOverlay(), 5); + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.fadeOut(modal, 5); + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.removeClass(modal, 'showSweetAlert'); + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.addClass(modal, 'hideSweetAlert'); + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.removeClass(modal, 'visible'); + + /* + * Reset icon animations + */ + var $successIcon = modal.querySelector('.sa-icon.sa-success'); + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.removeClass($successIcon, 'animate'); + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.removeClass($successIcon.querySelector('.sa-tip'), 'animateSuccessTip'); + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.removeClass($successIcon.querySelector('.sa-long'), 'animateSuccessLong'); + + var $errorIcon = modal.querySelector('.sa-icon.sa-error'); + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.removeClass($errorIcon, 'animateErrorIcon'); + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.removeClass($errorIcon.querySelector('.sa-x-mark'), 'animateXMark'); + + var $warningIcon = modal.querySelector('.sa-icon.sa-warning'); + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.removeClass($warningIcon, 'pulseWarning'); + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.removeClass($warningIcon.querySelector('.sa-body'), 'pulseWarningIns'); + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.removeClass($warningIcon.querySelector('.sa-dot'), 'pulseWarningIns'); + + // Reset custom class (delay so that UI changes aren't visible) + setTimeout(function () { + var customClass = modal.getAttribute('data-custom-class'); + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.removeClass(modal, customClass); + }, 300); + + // Make page scrollable again + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.removeClass(document.body, 'stop-scrolling'); + + // Reset the page to its previous state + window.onkeydown = previousWindowKeyDown; + if (window.previousActiveElement) { + window.previousActiveElement.focus(); + } + lastFocusedButton = undefined; + clearTimeout(modal.timeout); + + return true; +}; + +/* + * Validation of the input field is done by user + * If something is wrong => call showInputError with errorMessage + */ +sweetAlert.showInputError = swal.showInputError = function (errorMessage) { + var modal = _sweetAlertInitialize$getModal$getOverlay$getInput$setFocusStyle$openModal$resetInput$fixVerticalPosition.getModal(); + + var $errorIcon = modal.querySelector('.sa-input-error'); + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.addClass($errorIcon, 'show'); + + var $errorContainer = modal.querySelector('.sa-error-container'); + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.addClass($errorContainer, 'show'); + + $errorContainer.querySelector('p').innerHTML = errorMessage; + + setTimeout(function () { + sweetAlert.enableButtons(); + }, 1); + + modal.querySelector('input').focus(); +}; + +/* + * Reset input error DOM elements + */ +sweetAlert.resetInputError = swal.resetInputError = function (event) { + // If press enter => ignore + if (event && event.keyCode === 13) { + return false; + } + + var $modal = _sweetAlertInitialize$getModal$getOverlay$getInput$setFocusStyle$openModal$resetInput$fixVerticalPosition.getModal(); + + var $errorIcon = $modal.querySelector('.sa-input-error'); + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.removeClass($errorIcon, 'show'); + + var $errorContainer = $modal.querySelector('.sa-error-container'); + _hasClass$addClass$removeClass$escapeHtml$_show$show$_hide$hide$isDescendant$getTopMargin$fadeIn$fadeOut$fireClick$stopEventPropagation.removeClass($errorContainer, 'show'); +}; + +/* + * Disable confirm and cancel buttons + */ +sweetAlert.disableButtons = swal.disableButtons = function (event) { + var modal = _sweetAlertInitialize$getModal$getOverlay$getInput$setFocusStyle$openModal$resetInput$fixVerticalPosition.getModal(); + var $confirmButton = modal.querySelector('button.confirm'); + var $cancelButton = modal.querySelector('button.cancel'); + $confirmButton.disabled = true; + $cancelButton.disabled = true; +}; + +/* + * Enable confirm and cancel buttons + */ +sweetAlert.enableButtons = swal.enableButtons = function (event) { + var modal = _sweetAlertInitialize$getModal$getOverlay$getInput$setFocusStyle$openModal$resetInput$fixVerticalPosition.getModal(); + var $confirmButton = modal.querySelector('button.confirm'); + var $cancelButton = modal.querySelector('button.cancel'); + $confirmButton.disabled = false; + $cancelButton.disabled = false; +}; + +if (typeof window !== 'undefined') { + // The 'handle-click' module requires + // that 'sweetAlert' was set as global. + window.sweetAlert = window.swal = sweetAlert; +} else { + _extend$hexToRgb$isIE8$logStr$colorLuminance.logStr('SweetAlert is a frontend module!'); +} +module.exports = exports['default']; \ No newline at end of file diff --git a/node_modules/sweetalert/package.json b/node_modules/sweetalert/package.json new file mode 100644 index 0000000..1f9effa --- /dev/null +++ b/node_modules/sweetalert/package.json @@ -0,0 +1,71 @@ +{ + "name": "sweetalert", + "version": "1.1.3", + "description": "A beautiful replacement for JavaScript's \"alert\"", + "main": "lib/sweetalert.js", + "directories": { + "example": "example" + }, + "scripts": { + "test": "gulp test" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/t4t5/sweetalert.git" + }, + "keywords": [ + "sweetalert", + "alert", + "modal", + "popup" + ], + "author": { + "name": "Tristan Edwards", + "email": "tristan.edwards@me.com", + "url": "http://tristanedwards.me" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/t4t5/sweetalert/issues" + }, + "homepage": "http://tristanedwards.me/sweetalert", + "devDependencies": { + "babelify": "^6.0.2", + "browserify": "^9.0.8", + "glob": "^5.0.3", + "gulp": "^3.9.0", + "gulp-babel": "^5.2.1", + "gulp-concat": "^2.4.3", + "gulp-jshint": "^1.9.0", + "gulp-minify-css": "^0.3.13", + "gulp-qunit": "latest", + "gulp-rename": "^1.2.0", + "gulp-sass": "^2.0.1", + "gulp-uglify": "^1.0.2", + "gulp-wrap": "^0.11.0", + "path": "^0.11.14", + "vinyl-buffer": "^1.0.0", + "vinyl-source-stream": "^1.1.0" + }, + "gitHead": "3b9d8eb90268e0b1f8f58b2eba240631df0ad18f", + "_id": "sweetalert@1.1.3", + "_shasum": "d2c31ea492b22b6a8d887aea15989a238fc084ae", + "_from": "sweetalert@*", + "_npmVersion": "2.12.1", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "t4t5", + "email": "tristan.edwards@me.com" + }, + "maintainers": [ + { + "name": "t4t5", + "email": "tristan.edwards@me.com" + } + ], + "dist": { + "shasum": "d2c31ea492b22b6a8d887aea15989a238fc084ae", + "tarball": "http://registry.npmjs.org/sweetalert/-/sweetalert-1.1.3.tgz" + }, + "_resolved": "https://registry.npmjs.org/sweetalert/-/sweetalert-1.1.3.tgz" +} diff --git a/node_modules/sweetalert/sweetalert.gif b/node_modules/sweetalert/sweetalert.gif new file mode 100644 index 0000000000000000000000000000000000000000..be45c38be966ce07b4928f745dadb78fce9647c4 GIT binary patch literal 495936 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

>k5l@=AxMFs`VuT~h{K8J^S5?A7lVS*mM7v|rs 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 z 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

w3tNNfX`}V^tx)6yY}DekW#uVCYQ!ME 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 QAKWTT*vC`Y2n9L+7XvZnR{#J2 literal 0 HcmV?d00001 diff --git a/node_modules/sweetalert/test/index.html b/node_modules/sweetalert/test/index.html new file mode 100644 index 0000000..96789a8 --- /dev/null +++ b/node_modules/sweetalert/test/index.html @@ -0,0 +1,25 @@ + + + + + Tests + + + + +

+
+ + + + + + + + + + + + + + diff --git a/node_modules/sweetalert/test/tests.js b/node_modules/sweetalert/test/tests.js new file mode 100644 index 0000000..d5c29f6 --- /dev/null +++ b/node_modules/sweetalert/test/tests.js @@ -0,0 +1,141 @@ +// swal() sould add the modal to the DOM + make it visible +test("modal shows up", function() { + equal($('.sweet-alert').length, 0); + + swal("Hello world!"); + + ok($('.sweet-alert').is(':visible')); +}); + +// Clicking the confirm-button should dismiss the modal +test("dismiss modal with confirm-button", function(assert) { + var done = assert.async(); + swal("Dismiss me"); + + var $modal = $('.sweet-alert'); + $modal.find('button.confirm').click(); + + setTimeout(function() { + assert.ok($modal.is(':hidden')); + done(); + }, 500); +}); + +test("dismiss modal with esc-key", function(assert) { + var done = assert.async(); + swal("Dismiss me"); + + var $modal = $('.sweet-alert'); + $(document).trigger($.Event('keydown', { + keyCode: 27 + })); + + setTimeout(function() { + assert.ok($modal.is(':hidden')); + done(); + }, 500); +}); + +test("modals stays on with esc-key if allowEscapeKey is false", function(assert) { + var done = assert.async(); + swal({ + title: "Dismiss me", + allowEscapeKey: false + }); + + var $modal = $('.sweet-alert'); + $(document).trigger($.Event('keydown', { + keyCode: 27 + })); + + setTimeout(function() { + assert.ok($modal.is(':visible')); + done(); + }, 500); +}); + +/* + * Make sure that when using { showCancelButton: true }: + * - The cancel-button is visible on the modal + * - Clicking on it dismisses the modal + */ +test("cancel-button works", function(assert) { + var done = assert.async(); + swal({ + title: "Test", + showCancelButton: true + }); + + var $modal = $('.sweet-alert'); + var $cancelBtn = $modal.find('button.cancel'); + ok($cancelBtn.is(':visible')); + + $cancelBtn.click(); + + setTimeout(function() { + assert.ok($modal.is(':hidden')); + done(); + }, 500); +}); + +// Clicking the overlay should not dismiss the modal... +test("clicking the overlay does not dismiss modal", function(assert) { + var done = assert.async(); + swal("Test"); + + var $modal = $('.sweet-alert'); + $('.sweet-overlay').click(); + + setTimeout(function() { + assert.ok($modal.is(':visible')); + done(); + }, 500); +}); + + +// ...except if we pass allowOutsideClick: true +test("clicking the overlay (with allowOutsideClick option) dismisses modal", function(assert) { + var done = assert.async(); + swal({ + title: "Test", + allowOutsideClick: true + }); + + var $modal = $('.sweet-alert'); + $('.sweet-overlay').click(); + + setTimeout(function() { + assert.ok($modal.is(':hidden')); + done(); + }, 500); +}); + +test("timer works", function(assert) { + var done = assert.async(); + swal({ + title: "Timer test", + showConfirmButton: false, + timer: 500 + }); + + var $modal = $('.sweet-alert'); + assert.ok($modal.find('button.cancel, button.confirm').is(':hidden')); + + setTimeout(function() { + assert.ok($modal.is(':hidden')); + done(); + }, 1000); +}); + +test("prompt functionality works", function() { + swal({ + title: "Prompt test", + type: "input", + inputPlaceholder: "Placeholder text" + }); + + var $modal = $('.sweet-alert'); + + ok($modal.find('fieldset input').is(':visible')); + equal($modal.find('fieldset input').attr('placeholder'), "Placeholder text"); +}); diff --git a/node_modules/sweetalert/themes/facebook/facebook.css b/node_modules/sweetalert/themes/facebook/facebook.css new file mode 100644 index 0000000..4c81b56 --- /dev/null +++ b/node_modules/sweetalert/themes/facebook/facebook.css @@ -0,0 +1,111 @@ +.sweet-overlay { + border-radius: 3px; } + +.sweet-alert { + font-family: Helvetica, Arial, 'lucida grande', tahoma, verdana, arial, sans-serif; + padding: 12px; + padding-top: 53px; + text-align: right; + box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.11), 0px 6px 30px rgba(0, 0, 0, 0.14); } + .sweet-alert h2 { + position: absolute; + top: 0; + left: 0; + right: 0; + height: 41px; + background-color: #f6f7f8; + margin: 0; + font-size: 15px; + text-align: left; + padding-left: 12px; + color: #131722; + border-bottom: 1px solid #e5e5e5; } + .sweet-alert p { + display: block; + text-align: center; + color: #131722; + font-weight: 400; + font-size: 15px; + margin-top: 7px; } + .sweet-alert .sa-button-container { + border-top: 1px solid #dcdee3; } + .sweet-alert[data-has-confirm-button=false][data-has-cancel-button=false] { + padding-bottom: 10px; } + .sweet-alert[data-has-confirm-button=false][data-has-cancel-button=false] .sa-button-container { + display: none; } + .sweet-alert button { + font-size: 12px; + padding: 5px 10px; + border-radius: 2px; + box-shadow: none !important; + text-shadow: 0px -1px 0px rgba(0, 0, 0, 0.3); + font-weight: 500; + margin: 0; + margin-top: 12px; } + .sweet-alert button:focus, .sweet-alert button.cancel:focus { + box-shadow: 0 0 1px 2px rgba(88, 144, 255, 0.75), 0 1px 1px rgba(0, 0, 0, 0.15) !important; } + .sweet-alert button.confirm { + border: 1px solid #3d5586; + background-color: #47639c !important; + margin-left: 4px; } + .sweet-alert button.cancel { + color: #4e5664; + background-color: #fafbfb; + text-shadow: 0px -1px 0px white; + border: 1px solid #c5c6c8; + box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.04) !important; + font-weight: 600; } + .sweet-alert button.cancel:hover { + background-color: #fafbfb; } + .sweet-alert .sa-icon:not(.sa-custom) { + transform: scale(0.7); + margin-bottom: -10px; + margin-top: -10px; } + .sweet-alert input { + border: 1px solid #bdc7d8; + padding: 3px; + border-radius: 0; + box-shadow: none; + font-size: 15px; + height: 33px; + margin: 10px 0; } + .sweet-alert input:focus { + box-shadow: 0 0 1px 2px rgba(88, 144, 255, 0.75), 0 1px 1px rgba(0, 0, 0, 0.15) !important; } + .sweet-alert fieldset .sa-input-error { + display: none; } + .sweet-alert .sa-error-container { + text-align: center; + background-color: #fdebe8; + margin: 0; + border: none; } + .sweet-alert .sa-error-container.show { + margin: 14px; + margin-top: 0; + border: 1px solid #d5512d; } + .sweet-alert .sa-error-container .icon { + display: none; } + .sweet-alert .sa-error-container p { + color: #303b44; + margin-top: 3px; } + +@-webkit-keyframes animateErrorIcon { + 0% { + transform: rotateX(100deg), scale(0.5); + -webkit-transform: rotateX(100deg), scale(0.5); + opacity: 0; } + + 100% { + transform: rotateX(0deg), scale(0.5); + -webkit-transform: rotateX(0deg), scale(0.5); + opacity: 1; } } + +@keyframes animateErrorIcon { + 0% { + transform: rotateX(100deg), scale(0.5); + -webkit-transform: rotateX(100deg), scale(0.5); + opacity: 0; } + + 100% { + transform: rotateX(0deg), scale(0.5); + -webkit-transform: rotateX(0deg), scale(0.5); + opacity: 1; } } diff --git a/node_modules/sweetalert/themes/facebook/facebook.scss b/node_modules/sweetalert/themes/facebook/facebook.scss new file mode 100644 index 0000000..2ea546d --- /dev/null +++ b/node_modules/sweetalert/themes/facebook/facebook.scss @@ -0,0 +1,146 @@ +// Facebook Theme for SweetAlert +// By Tristan Edwards + +.sweet-overlay { + border-radius: 3px; +} + + +.sweet-alert { + $header-height: 41px; + $footer-height: 50px; + $text-color: #131722; + $fb-focus: 0 0 1px 2px rgba(88, 144, 255, .75), 0 1px 1px rgba(0, 0, 0, .15) !important; + $padding: 12px; + + font-family: Helvetica, Arial, 'lucida grande', tahoma, verdana, arial, sans-serif; + padding: $padding; + padding-top: $header-height + $padding; + text-align: right; // Align buttons + box-shadow: 0px 0px 0px 1px rgba(black, 0.11), 0px 6px 30px rgba(black, 0.14); + + h2 { + position: absolute; + top: 0; + left: 0; + right: 0; + height: $header-height; + background-color: #f6f7f8; + margin: 0; + font-size: 15px; + text-align: left; + padding-left: 12px; + color: $text-color; + border-bottom: 1px solid #e5e5e5; + } + + p { + display: block; + text-align: center; + color: #131722; + font-weight: 400; + font-size: 15px; + margin-top: 7px; + } + + .sa-button-container { + border-top: 1px solid #dcdee3; + } + &[data-has-confirm-button=false][data-has-cancel-button=false] { + padding-bottom: 10px; + .sa-button-container { + display: none; + } + } + + button { + font-size: 12px; + padding: 5px 10px; + border-radius: 2px; + box-shadow: none !important; + text-shadow: 0px -1px 0px rgba(black, 0.3); + font-weight: 500; + margin: 0; + margin-top: $padding; + &:focus, &.cancel:focus { + box-shadow: $fb-focus; + } + + &.confirm { + border: 1px solid #3d5586; + background-color: #47639c !important; + margin-left: 4px; + } + &.cancel { + color: #4e5664; + background-color: #fafbfb; + text-shadow: 0px -1px 0px white; + border: 1px solid #c5c6c8; + box-shadow: 0px 1px 1px rgba(black, 0.04) !important; + font-weight: 600; + &:hover { + background-color: #fafbfb; + } + } + } + + .sa-icon:not(.sa-custom) { + transform: scale(0.7); + margin-bottom: -10px; + margin-top: -10px; + } + + input { + border: 1px solid #bdc7d8; + padding: 3px; + border-radius: 0; + box-shadow: none; + font-size: 15px; + height: 33px; + margin: 10px 0; + &:focus { + box-shadow: $fb-focus; + } + } + + fieldset .sa-input-error { + display: none; + } + + .sa-error-container { + text-align: center; + background-color: #fdebe8; + margin: 0; + border: none; + &.show { + margin: 14px; + margin-top: 0; + border: 1px solid #d5512d; + } + + .icon { + display: none; + } + p { + color: #303b44; + margin-top: 3px; + } + } +} + + +// Animations + +@mixin keyframes($animation-name) { + @-webkit-keyframes #{$animation-name} { + @content; + } + @keyframes #{$animation-name} { + @content; + } +} + +@include keyframes(animateErrorIcon) { + 0% { transform: rotateX(100deg), scale(0.5); -webkit-transform: rotateX(100deg), scale(0.5); opacity: 0; } + 100% { transform: rotateX(0deg), scale(0.5); -webkit-transform: rotateX(0deg), scale(0.5); opacity: 1; } +} \ No newline at end of file diff --git a/node_modules/sweetalert/themes/google/google.css b/node_modules/sweetalert/themes/google/google.css new file mode 100644 index 0000000..5e53a99 --- /dev/null +++ b/node_modules/sweetalert/themes/google/google.css @@ -0,0 +1,115 @@ +.sweet-overlay { + background: rgba(10, 10, 10, 0.6); } + +.sweet-alert { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + padding: 24px; + padding-top: 64px; + padding-bottom: 13px; + text-align: right; + border-radius: 0; + box-shadow: 0 0 14px rgba(0, 0, 0, 0.24), 0 14px 28px rgba(0, 0, 0, 0.48); } + .sweet-alert h2 { + position: absolute; + top: 0; + left: 0; + right: 0; + height: auto; + font-weight: 400; + color: #212121; + margin: 20px 0; + font-size: 1.2em; + line-height: 1.25; + text-align: left; + padding: 0 24px; } + .sweet-alert p { + display: block; + text-align: center; + color: #212121; + font-weight: 400; + font-size: 14px; + margin: 20px 0; } + .sweet-alert button { + border-radius: 2px; + box-shadow: none !important; + background: none !important; + border-radius: 2px; + text-transform: uppercase; + font-size: 14px; + font-weight: 600; + padding: 8px 16px; + position: relative; + margin-top: 0; } + .sweet-alert button:hover, .sweet-alert button:focus { + background-color: #f6f6f6 !important; } + .sweet-alert button.confirm { + color: #3c80f6; } + .sweet-alert button.cancel { + color: #757575; } + .sweet-alert button.cancel:focus { + box-shadow: none !important; } + .sweet-alert .sa-icon:not(.sa-custom) { + transform: scale(0.8); + margin-bottom: -10px; + margin-top: -10px; } + .sweet-alert input { + border: none; + border-radius: 0; + border-bottom: 1px solid #c9c9c9; + color: #212121; + margin-bottom: 8px; + padding: 1px; + padding-bottom: 8px; + height: auto; + box-shadow: none; + font-size: 13px; + margin: 10px 0; } + .sweet-alert input:focus { + border: none; + border-bottom: 1px solid #3c80f6; + box-shadow: inset 0 -1px 0 #3c80f6; } + .sweet-alert fieldset { + padding: 0; } + .sweet-alert fieldset .sa-input-error { + display: none; } + .sweet-alert .sa-error-container { + display: none; + background: none; + height: auto; + padding: 0 24px; + margin: 0 -20px; + text-align: left; } + .sweet-alert .sa-error-container.show { + padding: 0 24px; + display: block; } + .sweet-alert .sa-error-container.show ~ fieldset input { + background: red; + border-bottom: 1px solid #d9453c; + box-shadow: inset 0 -1px 0 #d9453c; } + .sweet-alert .sa-error-container .icon { + display: none; } + .sweet-alert .sa-error-container p { + color: #d9453c; + margin-top: 0; } + +@-webkit-keyframes animateErrorIcon { + 0% { + transform: rotateX(100deg), scale(0.5); + -webkit-transform: rotateX(100deg), scale(0.5); + opacity: 0; } + + 100% { + transform: rotateX(0deg), scale(0.5); + -webkit-transform: rotateX(0deg), scale(0.5); + opacity: 1; } } + +@keyframes animateErrorIcon { + 0% { + transform: rotateX(100deg), scale(0.5); + -webkit-transform: rotateX(100deg), scale(0.5); + opacity: 0; } + + 100% { + transform: rotateX(0deg), scale(0.5); + -webkit-transform: rotateX(0deg), scale(0.5); + opacity: 1; } } diff --git a/node_modules/sweetalert/themes/google/google.scss b/node_modules/sweetalert/themes/google/google.scss new file mode 100644 index 0000000..86285d6 --- /dev/null +++ b/node_modules/sweetalert/themes/google/google.scss @@ -0,0 +1,148 @@ +// Google Theme for SweetAlert +// By Tristan Edwards + +.sweet-overlay { + background: rgba(10,10,10,.6); +} + + +.sweet-alert { + $header-height: 40px; + $footer-height: 66px; + $text-color: #212121; + $padding: 24px; + $error-color: #d9453c; + + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + padding: $padding; + padding-top: $header-height + $padding; + padding-bottom: 13px; + text-align: right; // Align buttons + border-radius: 0; + box-shadow: 0 0 14px rgba(black, 0.24),0 14px 28px rgba(black, 0.48); + + h2 { + position: absolute; + top: 0; + left: 0; + right: 0; + height: auto; + font-weight: 400; + color: $text-color; + margin: 20px 0; + font-size: 1.2em; + line-height: 1.25; + text-align: left; + padding: 0 $padding; + } + + p { + display: block; + text-align: center; + color: $text-color; + font-weight: 400; + font-size: 14px; + margin: 20px 0; + } + + button { + border-radius: 2px; + box-shadow: none !important; + background: none !important; + border-radius: 2px; + text-transform: uppercase; + font-size: 14px; + font-weight: 600; + padding: 8px 16px; + position: relative; + margin-top: 0; + &:hover, &:focus { + background-color: #f6f6f6 !important; + } + + &.confirm { + color: #3c80f6; + } + &.cancel { + color: #757575; + &:focus { + box-shadow: none !important; + } + } + } + + .sa-icon:not(.sa-custom) { + transform: scale(0.8); + margin-bottom: -10px; + margin-top: -10px; + } + + input { + border: none; + border-radius: 0; + border-bottom: 1px solid #c9c9c9; + color: #212121; + margin-bottom: 8px; + padding: 1px; + padding-bottom: 8px; + height: auto; + box-shadow: none; + font-size: 13px; + margin: 10px 0; + &:focus { + border: none; + border-bottom: 1px solid #3c80f6; + box-shadow: inset 0 -1px 0 #3c80f6; + } + } + + fieldset { + padding: 0; + .sa-input-error { + display: none; + } + } + + .sa-error-container { + display: none; + background: none; + height: auto; + padding: 0 $padding; + margin: 0 -20px; + text-align: left; + &.show { + padding: 0 $padding; + display: block; + ~ fieldset input { + background: red; + border-bottom: 1px solid $error-color; + box-shadow: inset 0 -1px 0 $error-color; + } + } + + .icon { + display: none; + } + p { + color: $error-color; + margin-top: 0; + } + } +} + + +// Animations + +@mixin keyframes($animation-name) { + @-webkit-keyframes #{$animation-name} { + @content; + } + @keyframes #{$animation-name} { + @content; + } +} + +@include keyframes(animateErrorIcon) { + 0% { transform: rotateX(100deg), scale(0.5); -webkit-transform: rotateX(100deg), scale(0.5); opacity: 0; } + 100% { transform: rotateX(0deg), scale(0.5); -webkit-transform: rotateX(0deg), scale(0.5); opacity: 1; } +} \ No newline at end of file diff --git a/node_modules/sweetalert/themes/twitter/twitter.css b/node_modules/sweetalert/themes/twitter/twitter.css new file mode 100644 index 0000000..062ded6 --- /dev/null +++ b/node_modules/sweetalert/themes/twitter/twitter.css @@ -0,0 +1,140 @@ +.sweet-overlay { + background: rgba(41, 47, 51, 0.9); } + +.sweet-alert { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + padding: 15px; + padding-top: 55px; + text-align: right; + border-radius: 6px; + box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.11), 0px 6px 30px rgba(0, 0, 0, 0.14); } + .sweet-alert h2 { + position: absolute; + top: 0; + left: 0; + right: 0; + height: 40px; + line-height: 40px; + font-size: 16px; + font-weight: 400; + color: #8899a6; + margin: 0; + color: #66757f; + border-bottom: 1px solid #e1e8ed; } + .sweet-alert p { + display: block; + text-align: center; + color: #66757f; + font-weight: 400; + font-size: 13px; + margin-top: 7px; } + .sweet-alert .sa-button-container { + background-color: #f5f8fa; + border-top: 1px solid #e1e8ed; + box-shadow: 0px -1px 0px white; + margin: -15px; + margin-top: 0; } + .sweet-alert[data-has-confirm-button=false][data-has-cancel-button=false] { + padding-bottom: 10px; } + .sweet-alert[data-has-confirm-button=false][data-has-cancel-button=false] .sa-button-container { + display: none; } + .sweet-alert button { + border-radius: 2px; + box-shadow: none !important; + text-shadow: 0px -1px 0px rgba(0, 0, 0, 0.3); + margin: 17px 0px; + border-radius: 4px; + font-size: 14px; + font-weight: 600; + padding: 8px 16px; + position: relative; } + .sweet-alert button:focus, .sweet-alert button.cancel:focus { + box-shadow: none !important; } + .sweet-alert button:focus::before, .sweet-alert button.cancel:focus::before { + content: ""; + position: absolute; + left: -5px; + top: -5px; + right: -5px; + bottom: -5px; + border: 2px solid #a5b0b4; + border-radius: 8px; } + .sweet-alert button.confirm { + background-color: #55acee !important; + background-image: linear-gradient(transparent, rgba(0, 0, 0, 0.05)); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#00000000, endColorstr=#0C000000)"; + border: 1px solid #3b88c3; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15); + margin-right: 15px; } + .sweet-alert button.confirm:hover { + background-color: #55acee; + background-image: linear-gradient(transparent, rgba(0, 0, 0, 0.15)); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#00000000, endColorstr=#26000000)"; + border-color: #3b88c3; } + .sweet-alert button.cancel { + color: #66757e; + background-color: #f5f8fa; + background-image: linear-gradient(#fff, #f5f8fa); + text-shadow: 0px -1px 0px white; + margin-right: 9px; + border: 1px solid #e1e8ed; } + .sweet-alert button.cancel:hover, .sweet-alert button.cancel:focus:hover { + background-color: #e1e8ed; + background-image: linear-gradient(#fff, #e1e8ed); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(enabled=false)"; + border-color: #e1e8ed; } + .sweet-alert button.cancel:focus { + background: #fff; + border-color: #fff; } + .sweet-alert .sa-icon:not(.sa-custom) { + transform: scale(0.72); + margin-bottom: -2px; + margin-top: -10px; } + .sweet-alert input { + border: 1px solid #e1e8ed; + border-radius: 3px; + padding: 10px 7px; + height: auto; + box-shadow: none; + font-size: 13px; + margin: 10px 0; } + .sweet-alert input:focus { + border-color: #94A1A6; + box-shadow: inset 0 0 0 1px rgba(77, 99, 107, 0.7); } + .sweet-alert fieldset .sa-input-error { + display: none; } + .sweet-alert .sa-error-container { + text-align: center; + border: none; + background-color: #fbedc0; + margin-bottom: 6px; } + .sweet-alert .sa-error-container.show { + border: 1px solid #f0e1b9; } + .sweet-alert .sa-error-container .icon { + display: none; } + .sweet-alert .sa-error-container p { + color: #292f33; + font-weight: 600; + margin-top: 0; } + +@-webkit-keyframes animateErrorIcon { + 0% { + transform: rotateX(100deg), scale(0.5); + -webkit-transform: rotateX(100deg), scale(0.5); + opacity: 0; } + + 100% { + transform: rotateX(0deg), scale(0.5); + -webkit-transform: rotateX(0deg), scale(0.5); + opacity: 1; } } + +@keyframes animateErrorIcon { + 0% { + transform: rotateX(100deg), scale(0.5); + -webkit-transform: rotateX(100deg), scale(0.5); + opacity: 0; } + + 100% { + transform: rotateX(0deg), scale(0.5); + -webkit-transform: rotateX(0deg), scale(0.5); + opacity: 1; } } diff --git a/node_modules/sweetalert/themes/twitter/twitter.scss b/node_modules/sweetalert/themes/twitter/twitter.scss new file mode 100644 index 0000000..2a7ec9f --- /dev/null +++ b/node_modules/sweetalert/themes/twitter/twitter.scss @@ -0,0 +1,177 @@ +// Twitter Theme for SweetAlert +// By Tristan Edwards + +.sweet-overlay { + background: rgba(41,47,51,0.9); +} + + +.sweet-alert { + $header-height: 40px; + $footer-height: 66px; + $text-color: #66757f; + $padding: 15px; + + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + padding: $padding; + padding-top: $header-height + $padding; + text-align: right; // Align buttons + border-radius: 6px; + box-shadow: 0px 0px 0px 1px rgba(black, 0.11), 0px 6px 30px rgba(black, 0.14); + + h2 { + position: absolute; + top: 0; + left: 0; + right: 0; + height: $header-height; + line-height: $header-height; + font-size: 16px; + font-weight: 400; + color: #8899a6; + margin: 0; + color: $text-color; + border-bottom: 1px solid #e1e8ed; + } + + p { + display: block; + text-align: center; + color: #66757f; + font-weight: 400; + font-size: 13px; + margin-top: 7px; + } + + .sa-button-container { + background-color: #f5f8fa; + border-top: 1px solid #e1e8ed; + box-shadow: 0px -1px 0px white; + margin: -$padding; + margin-top: 0; + } + &[data-has-confirm-button=false][data-has-cancel-button=false] { + padding-bottom: 10px; + .sa-button-container { + display: none; + } + } + + button { + border-radius: 2px; + box-shadow: none !important; + text-shadow: 0px -1px 0px rgba(black, 0.3); + margin: 17px 0px; + border-radius: 4px; + font-size: 14px; + font-weight: 600; + padding: 8px 16px; + position: relative; + &:focus, &.cancel:focus { + box-shadow: none !important; + &::before { + content: ""; + position: absolute; + left: -5px; + top: -5px; + right: -5px; + bottom: -5px; + border: 2px solid #a5b0b4; + border-radius: 8px; + } + } + + &.confirm { + background-color: #55acee !important; + background-image: linear-gradient(rgba(0,0,0,0),rgba(0,0,0,0.05)); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#00000000, endColorstr=#0C000000)"; + border: 1px solid #3b88c3; + box-shadow: inset 0 1px 0 rgba(255,255,255,0.15); + margin-right: $padding; + &:hover { + background-color: #55acee; + background-image: linear-gradient(rgba(0,0,0,0),rgba(0,0,0,0.15)); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#00000000, endColorstr=#26000000)"; + border-color: #3b88c3; + } + } + &.cancel { + color: #66757e; + background-color: #f5f8fa; + background-image: linear-gradient(#fff,#f5f8fa); + text-shadow: 0px -1px 0px white; + margin-right: 9px; + border: 1px solid #e1e8ed; + &:hover, &:focus:hover { + background-color: #e1e8ed; + background-image: linear-gradient(#fff,#e1e8ed); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(enabled=false)"; + border-color: #e1e8ed; + } + &:focus { + background: #fff; + border-color: #fff; + } + } + } + + .sa-icon:not(.sa-custom) { + transform: scale(0.72); + margin-bottom: -2px; + margin-top: -10px; + } + + input { + border: 1px solid #e1e8ed; + border-radius: 3px; + padding: 10px 7px; + height: auto; + box-shadow: none; + font-size: 13px; + margin: 10px 0; + &:focus { + border-color: #94A1A6; + box-shadow: inset 0 0 0 1px rgba(77, 99, 107, 0.7); + } + } + + fieldset .sa-input-error { + display: none; + } + + .sa-error-container { + text-align: center; + border: none; + background-color: #fbedc0; + margin-bottom: 6px; + &.show { + border: 1px solid #f0e1b9; + } + + .icon { + display: none; + } + p { + color: #292f33; + font-weight: 600; + margin-top: 0; + } + } +} + + +// Animations + +@mixin keyframes($animation-name) { + @-webkit-keyframes #{$animation-name} { + @content; + } + @keyframes #{$animation-name} { + @content; + } +} + +@include keyframes(animateErrorIcon) { + 0% { transform: rotateX(100deg), scale(0.5); -webkit-transform: rotateX(100deg), scale(0.5); opacity: 0; } + 100% { transform: rotateX(0deg), scale(0.5); -webkit-transform: rotateX(0deg), scale(0.5); opacity: 1; } +} \ No newline at end of file From 7ae0cae5d3ed49c76b5c2258b07293ad34e21ecf Mon Sep 17 00:00:00 2001 From: Tammy Date: Fri, 5 Feb 2016 12:33:49 -0800 Subject: [PATCH 53/60] when you move right and nothing is really moving- a new tile wont show up --- javascripts/2048.js | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/javascripts/2048.js b/javascripts/2048.js index edf007b..25ada43 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -7,7 +7,7 @@ var Game = function() { Game.prototype.scoring = function(value) { this.score += value; if (value == 2048) { - sweetAlert({ title: "Winner!", text: "You made it to 2048! Keep playing or hit the restart button to start from the beginning", type: "success", confirmButtonText: "I'm the best!" }); + alert("You made it to 2048! Keep playing or click the restart button!"); } }; @@ -30,8 +30,7 @@ Game.prototype.lost = function() { } } } - sweetAlert({ title: "You Lost", text: "You lost. You should try again!", type: "error", confirmButtonText: "Okay" }); - //alert("Game Over!"); + alert("Game Over!"); this.restart(); }; @@ -106,13 +105,16 @@ Game.prototype.moveTile = function(direction) { }, 300); break; case 39: //right + var count = self.moveBoardRight(); self.moveBoardRight(); setTimeout(function() { self.collideBoardRight(); }, 100); - setTimeout(function() { - self.randTile(); - }, 300); + if (count > 0) { + setTimeout(function() { + self.randTile(); + }, 300); + } break; } }; @@ -133,13 +135,14 @@ Game.prototype.moveLeft = function(row,col) { } }; -Game.prototype.moveRight = function(row,col) { +Game.prototype.moveRight = function(row,col, count) { var $tile; var value = this.board[row][col]; $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); if (this.board[row][col] !== 0) { for(var j=3; j > col; j--) { if (this.board[row][j] === 0) { + count += 1; this.board[row][j] = value; $tile.attr('data-col', 'c' + j); this.board[row][col] = 0; @@ -147,6 +150,7 @@ Game.prototype.moveRight = function(row,col) { } } } + return count; }; Game.prototype.moveUp = function(row, col) { @@ -193,12 +197,13 @@ Game.prototype.moveBoardLeft = function() { Game.prototype.moveBoardRight = function() { self = this; + count = 0; for (var row=0; row < 4; row++) { for (var col=3; col >= 0; col--) { - self.moveRight(row, col); + count += self.moveRight(row, col, count); } } - return this.board; + return count; }; Game.prototype.moveBoardUp = function() { @@ -283,7 +288,9 @@ Game.prototype.collideLeft = function(row, col) { setTimeout(function() { //console.log() $tile1.attr('data-val', self.board[row][col]); + $tile1.height('5px'); $tile1.html(self.board[row][col]); + $tile1.animate({width: '4rem', height: '4rem'}, "fast"); $tile2.remove(); self.scoring(self.board[row][col]); $("#score").html("Score: " + self.score); From 9cef6414c8826a03dc902ce45fe20573a82765e6 Mon Sep 17 00:00:00 2001 From: Tammy Date: Fri, 5 Feb 2016 13:22:17 -0800 Subject: [PATCH 54/60] new random tile wont show up if you cant move --- javascripts/2048.js | 62 +++++++++++++++++++++++++++++---------------- 1 file changed, 40 insertions(+), 22 deletions(-) diff --git a/javascripts/2048.js b/javascripts/2048.js index 25ada43..b0a87e4 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -78,39 +78,48 @@ Game.prototype.moveTile = function(direction) { var self = this; switch(direction) { case 38: //up + var countU = self.moveBoardUp(); self.moveBoardUp(); setTimeout(function() { self.collideBoardUp(); }, 100); - setTimeout(function() { - self.randTile(); - }, 300); + if (countU > 0) { + setTimeout(function() { + self.randTile(); + }, 300); + } break; case 40: //down + var countD = self.moveBoardDown(); self.moveBoardDown(); setTimeout(function() { self.collideBoardDown(); }, 100); - setTimeout(function() { - self.randTile(); - }, 300); + if (countD > 0) { + setTimeout(function() { + self.randTile(); + }, 300); + } break; case 37: //left + countL = self.moveBoardLeft(); self.moveBoardLeft(); setTimeout(function() { self.collideBoardLeft(); }, 100); - setTimeout(function() { - self.randTile(); - }, 300); + if (countL > 0) { + setTimeout(function() { + self.randTile(); + }, 300); + } break; case 39: //right - var count = self.moveBoardRight(); + var countR = self.moveBoardRight(); self.moveBoardRight(); setTimeout(function() { self.collideBoardRight(); }, 100); - if (count > 0) { + if (countR > 0) { setTimeout(function() { self.randTile(); }, 300); @@ -119,13 +128,14 @@ Game.prototype.moveTile = function(direction) { } }; -Game.prototype.moveLeft = function(row,col) { +Game.prototype.moveLeft = function(row,col, count) { var $tile; var value = this.board[row][col]; $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); if (this.board[row][col] !== 0) { for(var j=0; j < col; j++) { if (this.board[row][j] === 0) { + count += 1; this.board[row][j] = value; $tile.attr('data-col', 'c' + j); this.board[row][col] = 0; @@ -133,6 +143,7 @@ Game.prototype.moveLeft = function(row,col) { } } } + return count; }; Game.prototype.moveRight = function(row,col, count) { @@ -153,13 +164,14 @@ Game.prototype.moveRight = function(row,col, count) { return count; }; -Game.prototype.moveUp = function(row, col) { +Game.prototype.moveUp = function(row, col, count) { var $tile; var value = this.board[row][col]; $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); if (this.board[row][col] !== 0) { for(var i = 0; i < row ; i++) { if ((this.board[i][col]) === 0) { + count += 1; this.board[i][col] = value; $tile.attr('data-row', 'r' + i); this.board[row][col] = 0; @@ -167,15 +179,17 @@ Game.prototype.moveUp = function(row, col) { } } } + return count; }; -Game.prototype.moveDown = function(row, col) { +Game.prototype.moveDown = function(row, col, count) { var $tile; var value = this.board[row][col]; $tile = $('.tile[data-row="r' + row + '"][data-col="c' + col + '"]'); if (this.board[row][col] !== 0) { for(var i = 3; i > row; i--) { if ((this.board[i][col]) === 0) { + count += 1; this.board[i][col] = value; $tile.attr('data-row', 'r' + i); this.board[row][col] = 0; @@ -183,16 +197,18 @@ Game.prototype.moveDown = function(row, col) { } } } + return count; }; Game.prototype.moveBoardLeft = function() { + count = 0; self = this; for (var row=0; row < 4; row++) { for (var col=1; col < 4; col++) { - self.moveLeft(row, col); + count += self.moveLeft(row, col, count); } } - return this.board; + return count; }; Game.prototype.moveBoardRight = function() { @@ -207,23 +223,25 @@ Game.prototype.moveBoardRight = function() { }; Game.prototype.moveBoardUp = function() { + count = 0; var self = this; for (var row = 1; row < 4; row++) { for (var col = 0; col < 4; col++) { - self.moveUp(row, col); + count += self.moveUp(row, col, count); } } - return this.board; + return count; }; Game.prototype.moveBoardDown = function() { + count = 0; var self = this; for (var row = 2; row >= 0; row--) { for (var col = 0; col < 4; col++) { - self.moveDown(row, col); + count+= self.moveDown(row, col, count); } } - return this.board; + return count; }; Game.prototype.collideBoardLeft = function() { @@ -288,9 +306,9 @@ Game.prototype.collideLeft = function(row, col) { setTimeout(function() { //console.log() $tile1.attr('data-val', self.board[row][col]); - $tile1.height('5px'); + // $tile1.height('5px'); $tile1.html(self.board[row][col]); - $tile1.animate({width: '4rem', height: '4rem'}, "fast"); + // $tile1.animate({width: '4rem', height: '4rem'}, "fast"); $tile2.remove(); self.scoring(self.board[row][col]); $("#score").html("Score: " + self.score); From 75c4529682325721372762fa69e39c31485d20a5 Mon Sep 17 00:00:00 2001 From: Tammy Date: Fri, 5 Feb 2016 13:58:57 -0800 Subject: [PATCH 55/60] add style --- index.html | 12 ++++++--- stylesheets/2048.css | 61 +++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 66 insertions(+), 7 deletions(-) diff --git a/index.html b/index.html index 6843d47..06bbc48 100644 --- a/index.html +++ b/index.html @@ -5,12 +5,16 @@ - -

2048

-

Score: 0

- +
+

2048

+

+

Score: 0

+
New Game + +
+
diff --git a/stylesheets/2048.css b/stylesheets/2048.css index 26a6efb..44b1967 100644 --- a/stylesheets/2048.css +++ b/stylesheets/2048.css @@ -4,7 +4,7 @@ html { h1 { text-align: center; - font-size: 100px; + font-size: 80px; } #score { @@ -12,13 +12,13 @@ h1 { font-size: 40px; } -button { +/*button { text-align: center; display: block; margin: auto; font-size: 30px; font: normal normal "Clear Sans", "Helvetica Neue", Arial, sans-serif; -} +}*/ #gameboard { background: #bbada0; @@ -40,6 +40,7 @@ button { .tile { position: absolute; + text-align: center; top: 0; left: 0; transition: all 0.2s ease-in-out; @@ -77,3 +78,57 @@ button { .tile[data-val="512"] { background: #edc850; } .tile[data-val="1024"] { background: #edc53f; } .tile[data-val="2048"] { background: #edc22e; } +/* +.container { + width: 500px; + margin: 0 auto; +}*/ + +html, body { + color: #776e65; + font-family: "Clear Sans", "Helvetica Neue", Arial, sans-serif; + font-size: 18px; +} + +h1.title { + font-size: 80px; + font-weight: bold; + margin: 0; + display: block; + float: left; +} +.score-container, .best-container { + position: relative; + display: inline-block; + background: #bbada0; + padding: 15px 25px; + font-size: 25px; + height: 25px; + line-height: 47px; + font-weight: bold; + border-radius: 3px; + color: white; + margin-top: 8px; + text-align: center; +} + +.game-intro { + float: left; + line-height: 42px; + margin-bottom: 0; +} +.restart-button { + display: inline-block; + background: #8f7a66; + border-radius: 3px; + padding: 0 20px; + text-decoration: none; + color: #f9f6f2; + height: 40px; + line-height: 42px; + cursor: pointer; + display: block; + text-align: center; + margin-left: 640px; + width: 100px; +} From df63a909c7f7f3ed88e4f6656830884207a92843 Mon Sep 17 00:00:00 2001 From: Tammy Date: Fri, 5 Feb 2016 15:24:31 -0800 Subject: [PATCH 56/60] the game looks fine. no serious bugs --- index.html | 2 +- javascripts/2048.js | 14 +++++++------- stylesheets/2048.css | 17 +++-------------- 3 files changed, 11 insertions(+), 22 deletions(-) diff --git a/index.html b/index.html index 06bbc48..7600e2b 100644 --- a/index.html +++ b/index.html @@ -8,7 +8,7 @@
-

2048

+

2048

Score: 0

New Game diff --git a/javascripts/2048.js b/javascripts/2048.js index b0a87e4..ac032e2 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -30,6 +30,7 @@ Game.prototype.lost = function() { } } } + console.log(this.board) alert("Game Over!"); this.restart(); }; @@ -46,7 +47,7 @@ Game.prototype.randTile = function() { } } //console.log(arr) - if (arr.length !== 0) { + //if (arr.length !== 0) { var randNum = Math.floor((Math.random() * arr.length)); var i_board = arr[randNum][0]; var j_board = arr[randNum][1]; @@ -59,12 +60,11 @@ Game.prototype.randTile = function() { var val = this.board[i_board][j_board]; $('#gameboard').append('
'+ val +'
'); console.log(arr.length); - - - } else { - self.lost(); - } - //return [i_board, j_board]; + if (arr.length <= 1) { + self.lost(); + } + //} + //else {console.log(this.board);} }; Game.prototype.selectTile = function(row, col, value) { diff --git a/stylesheets/2048.css b/stylesheets/2048.css index 44b1967..ea8f1ff 100644 --- a/stylesheets/2048.css +++ b/stylesheets/2048.css @@ -12,14 +12,6 @@ h1 { font-size: 40px; } -/*button { - text-align: center; - display: block; - margin: auto; - font-size: 30px; - font: normal normal "Clear Sans", "Helvetica Neue", Arial, sans-serif; -}*/ - #gameboard { background: #bbada0; border-radius: 0.5rem; @@ -90,13 +82,10 @@ html, body { font-size: 18px; } -h1.title { - font-size: 80px; - font-weight: bold; - margin: 0; - display: block; - float: left; +h1 { + font-size: 70px; } + .score-container, .best-container { position: relative; display: inline-block; From d74062deadf830ec564626d62f6c43378c09ba36 Mon Sep 17 00:00:00 2001 From: noglows Date: Fri, 5 Feb 2016 15:28:16 -0800 Subject: [PATCH 57/60] Added sweetalert for win and loss --- index.html | 1 + javascripts/2048.js | 10 ++++------ 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/index.html b/index.html index 7600e2b..03e9fa1 100644 --- a/index.html +++ b/index.html @@ -5,6 +5,7 @@ +
diff --git a/javascripts/2048.js b/javascripts/2048.js index ac032e2..81d8991 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -6,8 +6,8 @@ var Game = function() { Game.prototype.scoring = function(value) { this.score += value; - if (value == 2048) { - alert("You made it to 2048! Keep playing or click the restart button!"); + if (value == 32) { + sweetAlert({ title: "You won!", text: "You won the game!!! Keep playing or click restart to start a new game.", type: "success", confirmButtonText: "I'm the best!" }); } }; @@ -30,8 +30,8 @@ Game.prototype.lost = function() { } } } - console.log(this.board) - alert("Game Over!"); + + sweetAlert({ title: "You lost!", text: "You lost the game. You should try again!", type: "error", confirmButtonText: "Okay" }); this.restart(); }; @@ -445,7 +445,6 @@ Game.prototype.collideDown = function(row, col) { }; Game.prototype.restart = function() { - console.log("in the function") this.board = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]; this.score = 0; this.win = false; @@ -458,7 +457,6 @@ Game.prototype.restart = function() { $(document).ready(function() { - console.log("ready to go!"); var game = new Game(); game.randTile(); game.randTile(); From ae567faee621f89467cc72bd4c6dbbb66d6e3f80 Mon Sep 17 00:00:00 2001 From: noglows Date: Fri, 5 Feb 2016 15:28:38 -0800 Subject: [PATCH 58/60] Updated the winning score --- javascripts/2048.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/javascripts/2048.js b/javascripts/2048.js index 81d8991..d487da4 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -6,7 +6,7 @@ var Game = function() { Game.prototype.scoring = function(value) { this.score += value; - if (value == 32) { + if (value == 2048) { sweetAlert({ title: "You won!", text: "You won the game!!! Keep playing or click restart to start a new game.", type: "success", confirmButtonText: "I'm the best!" }); } }; From d923b412c6c422d663a06ab363cacd6562e0fc6f Mon Sep 17 00:00:00 2001 From: noglows Date: Fri, 5 Feb 2016 15:29:38 -0800 Subject: [PATCH 59/60] Fixed CSS for the restart button --- stylesheets/2048.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/stylesheets/2048.css b/stylesheets/2048.css index ea8f1ff..9a2b742 100644 --- a/stylesheets/2048.css +++ b/stylesheets/2048.css @@ -118,6 +118,7 @@ h1 { cursor: pointer; display: block; text-align: center; - margin-left: 640px; + margin: auto; + /*margin-left: 640px;*/ width: 100px; } From 0f7f2e5ea85696622a6d64a145c780d4fd22bdab Mon Sep 17 00:00:00 2001 From: Tammy Date: Fri, 5 Feb 2016 15:34:25 -0800 Subject: [PATCH 60/60] comment out restart --- javascripts/2048.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/javascripts/2048.js b/javascripts/2048.js index d487da4..4b28e54 100644 --- a/javascripts/2048.js +++ b/javascripts/2048.js @@ -32,7 +32,7 @@ Game.prototype.lost = function() { } sweetAlert({ title: "You lost!", text: "You lost the game. You should try again!", type: "error", confirmButtonText: "Okay" }); - this.restart(); +// this.restart(); };