├── .gitignore ├── .npmrc ├── 02 - Starter Files and Tooling Setup └── test-START.html ├── 03 - CSS Grid Fundamentals ├── css-grid-fundamentals-FINISHED.html └── css-grid-fundamentals-START.html ├── 04 - CSS Grid Dev Tools ├── Line Meanings.png ├── dev-tools-FINISHED.html └── dev-tools-START.html ├── 05 - CSS Grid Implicit vs Explicit Tracks ├── implicit-vs-explicit-FINISHED.html └── implicit-vs-explicit-START.html ├── 06 - CSS grid-auto-flow Explained ├── autoflow-FINISHED.html └── autoflow-START.html ├── 07 - Sizing tracks in CSS Grid ├── sizing-tracks-FINISHED.html └── sizing-tracks-START.html ├── 08 - CSS Grid repeat function ├── repeat-FINISHED.html └── repeat-START.html ├── 09 - Sizing Grid Items ├── sizing-items-FINISHED.html └── sizing-items-START.html ├── 10 - Placing Grid Items ├── placing-FINISHED.html └── placing-START.html ├── 11 - Spanning and Placing Cardio ├── get-sweaty-FINISHED.html └── get-sweaty-START.html ├── 12 - auto-fit and auto-fill ├── auto-fit-and-auto-fill-FINISHED.html └── auto-fit-and-auto-fill-START.html ├── 13 - Using minmax() for Responsive Grids ├── minmax-FINISHED.html └── minmax-START.html ├── 14 - Grid Template Areas ├── area-line-names-FINISHED.html ├── area-line-names-START.html ├── areas-FINISHED.html └── areas-START.html ├── 15 - Naming Lines in CSS Grid ├── naming-lines-FINISHED.html └── naming-lines-START.html ├── 16 - grid-auto-flow dense Block Fitting ├── dense-FINISHED.html └── dense-START.html ├── 17 - CSS Grid Alignment + Centering ├── alignment-and-centering-FINISHED.html └── alignment-and-centering-START.html ├── 18 - Re-ordering Grid Items ├── order-FINISH.html └── order-START.html ├── 19 - Nesting Grid with Album Layouts ├── albums-FINISHED.html └── albums-START.html ├── 20 - CSS Grid Image Gallery ├── image-gallery-FINISHED.html ├── image-gallery-START.html └── images │ ├── 1.jpg │ ├── 10.jpg │ ├── 11.jpg │ ├── 12.jpg │ ├── 2.jpg │ ├── 3.jpg │ ├── 4.jpg │ ├── 5.jpg │ ├── 6.jpg │ ├── 7.jpg │ ├── 8.jpg │ └── 9.jpg ├── 21 - Flexbox vs CSS Grid ├── axis-flipping-FINISHED.html ├── axis-flipping-START.html ├── controls-on-right-FINISHED.html ├── controls-on-right-START.html ├── flex-on-item-FINISHED.html ├── flex-on-item-START.html ├── perfectly-centered-FINISHED.html ├── perfectly-centered-START.html ├── self-control-FINISHED.html ├── self-control-START.html ├── stacked-layout-FINISHED.html ├── stacked-layout-START.html ├── unknown-content-size-FINISHED.html ├── unknown-content-size-START.html ├── unknown-number-of-items-FINISHED.html ├── unknown-number-of-items-START.html ├── variable-widths-each-row-FINISHED.html └── variable-widths-each-row-START.html ├── 22 - Recreating Codepen ├── codepen-FINISHED.html ├── codepen-START.html ├── style-FINISHED.css └── style-START.css ├── 23 - Bootstrappy Grid with CSS Variables ├── grid-FINISHED.html └── grid-START.html ├── 24 - Responisve Website ├── images │ ├── queso-taco.png │ └── taco.jpg ├── responsive-FINISHED.css ├── responsive-FINISHED.html ├── responsive-START.css └── responsive-START.html ├── 25 - Full Bleed Blog Layout ├── full-bleed-blog-FINISHED.html └── full-bleed-blog-START.html ├── assets ├── images │ ├── flower.png │ └── topography.svg └── style.css ├── package-lock.json ├── package.json └── readme.md /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | .DS_Store 3 | haters -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | fund=false 2 | audit=false 3 | legacy-peer-deps=true 4 | -------------------------------------------------------------------------------- /02 - Starter Files and Tooling Setup/test-START.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Starter Files and Tooling Setup! 9 | 10 | 11 | 18 | 19 | 20 |

Hello!

21 | 22 | 23 | -------------------------------------------------------------------------------- /03 - CSS Grid Fundamentals/css-grid-fundamentals-FINISHED.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | CSS Grid Fundamentals! 9 | 10 | 11 | 12 |
13 |
1
14 |
2
15 |
3
16 |
4
17 |
5
18 |
6
19 |
7
20 |
8
21 |
9
22 |
10
23 |
24 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /03 - CSS Grid Fundamentals/css-grid-fundamentals-START.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | CSS Grid Fundamentals! 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /04 - CSS Grid Dev Tools/Line Meanings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wesbos/css-grid/72d544e70c8661e427c8eedefdf593b18a0ee2b5/04 - CSS Grid Dev Tools/Line Meanings.png -------------------------------------------------------------------------------- /04 - CSS Grid Dev Tools/dev-tools-FINISHED.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | CSS Grid Dev Tools! 9 | 10 | 11 | 12 |
13 |
1
14 |
2
15 |
3
16 |
4
17 |
5
18 |
6
19 |
7
20 |
8
21 |
9
22 |
10
23 |
24 | 25 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /04 - CSS Grid Dev Tools/dev-tools-START.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | CSS Grid Dev Tools! 9 | 10 | 11 | 12 |
13 |
1
14 |
2
15 |
3
16 |
4
17 |
5
18 |
6
19 |
7
20 |
8
21 |
9
22 |
10
23 |
24 | 25 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /05 - CSS Grid Implicit vs Explicit Tracks/implicit-vs-explicit-FINISHED.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | CSS Grid Implicit vs Explicit Grid Tracks! 9 | 10 | 11 | 12 |
13 |
1
14 |
2
15 |
3
16 |
4
17 |
5
18 |
6
19 |
7
20 |
8
21 |
22 | 23 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /05 - CSS Grid Implicit vs Explicit Tracks/implicit-vs-explicit-START.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | CSS Grid Implicit vs Explicit Grid Tracks! 9 | 10 | 11 | 12 |
13 |
1
14 |
2
15 |
3
16 |
4
17 |
18 | 19 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /06 - CSS grid-auto-flow Explained/autoflow-FINISHED.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | CSS grid-auto-flow Explained! 9 | 10 | 11 | 12 |
13 |
1
14 |
2
15 |
3
16 |
3
17 |
3
18 |
3
19 |
3
20 |
3
21 |
3
22 |
3
23 |
3
24 |
3
25 |
3
26 |
3
27 |
28 | 29 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /06 - CSS grid-auto-flow Explained/autoflow-START.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | CSS grid-auto-flow Explained! 9 | 10 | 11 | 12 |
13 |
1
14 |
2
15 |
16 | 17 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /07 - Sizing tracks in CSS Grid/sizing-tracks-FINISHED.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Sizing Tracks in CSS Grid! 9 | 10 | 11 | 12 |
13 |
1
14 |
2
15 |
Wes Bos Is Cool
16 |
4
17 |
5
18 |
6
19 |
7
20 |
8
21 |
9
22 |
10
23 |
11
24 |
12
25 |
13
26 |
14
27 |
15
28 |
29 | 30 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /07 - Sizing tracks in CSS Grid/sizing-tracks-START.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Sizing Tracks in CSS Grid! 9 | 10 | 11 | 12 |
13 |
1
14 |
2
15 |
3
16 |
4
17 |
5
18 |
6
19 |
7
20 |
8
21 |
9
22 |
10
23 |
11
24 |
12
25 |
13
26 |
14
27 |
15
28 |
29 | 30 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /08 - CSS Grid repeat function/repeat-FINISHED.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | CSS Grid repeat Function! 9 | 10 | 11 | 12 |
13 |
1
14 |
2
15 |
3
16 |
4
17 |
5
18 |
6
19 |
7
20 |
8
21 |
9
22 |
10
23 |
11
24 |
12
25 |
13
26 |
14
27 |
15
28 |
29 | 30 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /08 - CSS Grid repeat function/repeat-START.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | CSS Grid repeat Function! 9 | 10 | 11 | 12 |
13 |
1
14 |
2
15 |
3
16 |
4
17 |
5
18 |
6
19 |
7
20 |
8
21 |
9
22 |
10
23 |
11
24 |
12
25 |
13
26 |
14
27 |
15
28 |
29 | 30 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /09 - Sizing Grid Items/sizing-items-FINISHED.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Sizing Grid Items! 9 | 10 | 11 | 12 |
13 |
1
14 |
2
15 |
3
16 |
4
17 |
5
18 |
6
19 |
7
20 |
8
21 |
💩
22 |
9
23 |
10
24 |
11
25 |
12
26 |
13
27 |
14
28 |
15
29 |
16
30 |
17
31 |
18
32 |
19
33 |
20
34 |
21
35 |
22
36 |
23
37 |
24
38 |
25
39 |
26
40 |
27
41 |
28
42 |
29
43 |
30
44 |
45 | 46 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /09 - Sizing Grid Items/sizing-items-START.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Sizing Grid Items! 9 | 10 | 11 | 12 |
13 | 14 |
15 | 16 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /10 - Placing Grid Items/placing-FINISHED.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Placing Grid Items! 9 | 10 | 11 | 12 |
13 |
1
14 |
2
15 |
3
16 |
4
17 |
5
18 |
6
19 |
7
20 |
8
21 |
💩
22 |
9
23 |
10
24 |
11
25 |
12
26 |
13
27 |
14
28 |
15
29 |
16
30 |
17
31 |
18
32 |
19
33 |
20
34 |
21
35 |
22
36 |
23
37 |
24
38 |
25
39 |
26
40 |
27
41 |
28
42 |
29
43 |
30
44 |
45 | 46 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /10 - Placing Grid Items/placing-START.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Placing Grid Items! 9 | 10 | 11 | 12 |
13 |
1
14 |
2
15 |
3
16 |
4
17 |
5
18 |
6
19 |
7
20 |
8
21 |
💩
22 |
9
23 |
10
24 |
11
25 |
12
26 |
13
27 |
14
28 |
15
29 |
16
30 |
17
31 |
18
32 |
19
33 |
20
34 |
21
35 |
22
36 |
23
37 |
24
38 |
25
39 |
26
40 |
27
41 |
28
42 |
29
43 |
30
44 |
45 | 46 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /11 - Spanning and Placing Cardio/get-sweaty-FINISHED.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Spanning & Placing Cardio! 9 | 10 | 11 | 12 |
13 |
1
14 |
2
15 |
3
16 |
4
17 |
5
18 |
6
19 |
7
20 |
8
21 |
💩
22 |
9
23 |
10
24 |
11
25 |
12
26 |
13
27 |
14
28 |
15
29 |
16
30 |
17
31 |
18
32 |
19
33 |
20
34 |
21
35 |
22
36 |
23
37 |
24
38 |
25
39 |
26
40 |
27
41 |
28
42 |
29
43 |
30
44 |
45 | 46 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /11 - Spanning and Placing Cardio/get-sweaty-START.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Spanning & Placing Cardio! 9 | 10 | 11 | 12 |
13 |
1
14 |
2
15 |
3
16 |
4
17 |
5
18 |
6
19 |
7
20 |
8
21 |
💩
22 |
9
23 |
10
24 |
11
25 |
12
26 |
13
27 |
14
28 |
15
29 |
16
30 |
17
31 |
18
32 |
19
33 |
20
34 |
21
35 |
22
36 |
23
37 |
24
38 |
25
39 |
26
40 |
27
41 |
28
42 |
29
43 |
30
44 |
45 | 46 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /12 - auto-fit and auto-fill/auto-fit-and-auto-fill-FINISHED.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | auto-fit and auto-fill! 9 | 10 | 11 | 12 |
13 |
Item 01
14 |
Item 02
15 |
Item 03
16 |
Item 04
17 |
18 | 19 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /12 - auto-fit and auto-fill/auto-fit-and-auto-fill-START.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | auto-fit and auto-fill! 9 | 10 | 11 | 12 |
13 |
Item 01
14 |
Item 02
15 |
Item 03
16 |
Item 04
17 |
Item 05
18 |
Item 06
19 |
Item 07
20 |
Item 08
21 |
Item 09
22 |
Item 10
23 |
Item 11
24 |
Item 12
25 |
Item 13
26 |
Item 14
27 |
Item 15
28 |
Item 16
29 |
Item 17
30 |
Item 18
31 |
Item 19
32 |
Item 20
33 |
34 | 35 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /13 - Using minmax() for Responsive Grids/minmax-FINISHED.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Using minmax() for Responsive Grids! 9 | 10 | 11 | 12 |
13 |
Item 01
14 |
Bonjour!
15 |
Item 03
16 |
Item 04
17 |
18 | 19 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /13 - Using minmax() for Responsive Grids/minmax-START.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Using minmax() for Responsive Grids! 9 | 10 | 11 | 12 |
13 |
Item 01
14 |
Bonjour!
15 |
Item 03
16 |
Item 04
17 |
18 | 19 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /14 - Grid Template Areas/area-line-names-FINISHED.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Grid Template Areas: Line Names from Grid Areas! 9 | 10 | 11 | 12 |
13 |
1
14 |
2
15 |
3
16 |
4
17 |
5
18 |
6
19 |
7
20 |
8
21 |
9
22 |
10
23 |
11
24 |
12
25 |
13
26 |
14
27 |
15
28 |
16
29 |
17
30 |
18
31 |
19
32 |
20
33 |
21
34 |
22
35 |
23
36 |
24
37 |
25
38 |
26
39 |
27
40 |
28
41 |
29
42 |
30
43 |
44 | 45 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /14 - Grid Template Areas/area-line-names-START.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Grid Template Areas: Line Names from Grid Areas! 9 | 10 | 11 | 12 |
13 |
1
14 |
2
15 |
3
16 |
4
17 |
5
18 |
6
19 |
7
20 |
8
21 |
9
22 |
10
23 |
11
24 |
12
25 |
13
26 |
14
27 |
15
28 |
16
29 |
17
30 |
18
31 |
19
32 |
20
33 |
21
34 |
22
35 |
23
36 |
24
37 |
25
38 |
26
39 |
27
40 |
28
41 |
29
42 |
30
43 |
44 | 45 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /14 - Grid Template Areas/areas-FINISHED.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Grid Template Areas 9 | 10 | 11 | 12 |
13 |
14 |

I'm Sidebar #1

15 |
16 |
17 |

Lorem ipsum dolor sit amet consectetur adipisicing elit. Inventore, sed.

18 |

Lorem ipsum d

19 |
20 |
21 |

I'm Sidebar #2

22 |
23 | 26 |
27 | 28 | 65 | 66 | 67 | -------------------------------------------------------------------------------- /14 - Grid Template Areas/areas-START.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Grid Template Areas 9 | 10 | 11 | 12 |
13 |
14 |

I'm Sidebar #1

15 |
16 |
17 |

Lorem ipsum dolor sit amet consectetur adipisicing elit. Inventore, sed.

18 |

Lorem ipsum d

19 |
20 |
21 |

I'm Sidebar #2

22 |
23 | 26 |
27 | 28 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /15 - Naming Lines in CSS Grid/naming-lines-FINISHED.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Naming Lines in CSS Grid! 9 | 10 | 11 | 12 |
13 |
1
14 |
2
15 |
3
16 |
4
17 |
5
18 |
6
19 |
7
20 |
8
21 |
9
22 |
10
23 |
11
24 |
12
25 |
13
26 |
14
27 |
15
28 |
16
29 |
17
30 |
18
31 |
19
32 |
20
33 |
21
34 |
22
35 |
23
36 |
24
37 |
25
38 |
26
39 |
27
40 |
28
41 |
29
42 |
30
43 |
44 | 45 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /15 - Naming Lines in CSS Grid/naming-lines-START.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Naming Lines in CSS Grid! 9 | 10 | 11 | 12 |
13 |
1
14 |
2
15 |
3
16 |
4
17 |
5
18 |
6
19 |
7
20 |
8
21 |
9
22 |
10
23 |
11
24 |
12
25 |
13
26 |
14
27 |
15
28 |
16
29 |
17
30 |
18
31 |
19
32 |
20
33 |
21
34 |
22
35 |
23
36 |
24
37 |
25
38 |
26
39 |
27
40 |
28
41 |
29
42 |
30
43 |
44 | 45 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /16 - grid-auto-flow dense Block Fitting/dense-FINISHED.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | grid-auto-flow dense Block Fitting! 9 | 10 | 11 | 12 |
13 |
1
14 |
2
15 |
3
16 |
4
17 |
5
18 |
6
19 |
7
20 |
8
21 |
9
22 |
10
23 |
11
24 |
12
25 |
13
26 |
14
27 |
15
28 |
16
29 |
17
30 |
18
31 |
19
32 |
20
33 |
21
34 |
22
35 |
23
36 |
24
37 |
25
38 |
26
39 |
27
40 |
28
41 |
29
42 |
30
43 |
31
44 |
32
45 |
33
46 |
34
47 |
35
48 |
36
49 |
37
50 |
38
51 |
39
52 |
40
53 |
41
54 |
42
55 |
43
56 |
44
57 |
45
58 |
46
59 |
47
60 |
48
61 |
49
62 |
50
63 |
51
64 |
52
65 |
53
66 |
54
67 |
55
68 |
56
69 |
57
70 |
58
71 |
59
72 |
60
73 |
61
74 |
62
75 |
63
76 |
64
77 |
65
78 |
66
79 |
67
80 |
68
81 |
69
82 |
70
83 |
84 | 85 | 112 | 113 | 114 | -------------------------------------------------------------------------------- /16 - grid-auto-flow dense Block Fitting/dense-START.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | grid-auto-flow dense Block Fitting! 9 | 10 | 11 | 12 |
13 |
1
14 |
2
15 |
3
16 |
4
17 |
5
18 |
6
19 |
7
20 |
8
21 |
9
22 |
10
23 |
11
24 |
12
25 |
13
26 |
14
27 |
15
28 |
16
29 |
17
30 |
18
31 |
19
32 |
20
33 |
21
34 |
22
35 |
23
36 |
24
37 |
25
38 |
26
39 |
27
40 |
28
41 |
29
42 |
30
43 |
31
44 |
32
45 |
33
46 |
34
47 |
35
48 |
36
49 |
37
50 |
38
51 |
39
52 |
40
53 |
41
54 |
42
55 |
43
56 |
44
57 |
45
58 |
46
59 |
47
60 |
48
61 |
49
62 |
50
63 |
51
64 |
52
65 |
53
66 |
54
67 |
55
68 |
56
69 |
57
70 |
58
71 |
59
72 |
60
73 |
61
74 |
62
75 |
63
76 |
64
77 |
65
78 |
66
79 |
67
80 |
68
81 |
69
82 |
70
83 |
84 | 85 | 91 | 92 | 93 | -------------------------------------------------------------------------------- /17 - CSS Grid Alignment + Centering/alignment-and-centering-FINISHED.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | CSS Grid Alignment + Centering! 9 | 10 | 11 | 12 |
13 |
1
14 |
2
15 |
3
16 |
4
17 |
Wes Is Cool
18 |
6
19 |
7
20 |
8
21 |
9
22 |
10
23 |
24 | 25 | 62 | 63 | 64 | -------------------------------------------------------------------------------- /17 - CSS Grid Alignment + Centering/alignment-and-centering-START.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | CSS Grid Alignment + Centering! 9 | 10 | 11 | 12 |
13 |
1
14 |
2
15 |
3
16 |
4
17 |
5
18 |
6
19 |
7
20 |
8
21 |
9
22 |
10
23 |
11
24 |
12
25 |
13
26 |
14
27 |
15
28 |
16
29 |
17
30 |
18
31 |
19
32 |
20
33 |
21
34 |
22
35 |
23
36 |
24
37 |
25
38 |
26
39 |
27
40 |
28
41 |
29
42 |
30
43 |
31
44 |
32
45 |
33
46 |
34
47 |
35
48 |
36
49 |
37
50 |
38
51 |
39
52 |
40
53 |
54 | 55 | 76 | 77 | 78 | -------------------------------------------------------------------------------- /18 - Re-ordering Grid Items/order-FINISH.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Re-ordering Grid Items! 9 | 10 | 11 | 12 |
13 | 14 | 15 |
16 |

I'm the Content!

17 |
18 |
19 | 20 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /18 - Re-ordering Grid Items/order-START.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Re-ordering Grid Items! 9 | 10 | 11 | 12 |
13 | 14 | 15 |
16 |

I'm the Content!

17 |
18 |
19 | 20 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /19 - Nesting Grid with Album Layouts/albums-FINISHED.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Nesting Grid with Album Layouts! 9 | 10 | 11 | 12 | 13 |
14 |
15 | 16 |
17 |

Album Title

18 |

Artist Name

19 |

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsum sed sint doloremque repellat, iste debitis.

20 |

Lorem ipsum dolor sit amet consectetur, adipisicing elit. Facilis, excepturi!

21 |
22 |
23 |
24 | 25 |
26 |

Album Title

27 |

Artist Name

28 |

short.

29 |
30 |
31 |
32 | 33 |
34 |

Album Title

35 |

Artist Name

36 |

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsum sed sint doloremque repellat, iste debitis.

37 |
38 |
39 |
40 | 41 |
42 |

Album Title

43 |

Artist Name

44 |

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsum sed sint doloremque repellat, iste debitis.

45 |
46 |
47 |
48 | 49 |
50 |

Album Title

51 |

Artist Name

52 |

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsum sed sint doloremque repellat, iste debitis.

53 |
54 |
55 |
56 | 57 |
58 |

Album Title

59 |

Artist Name

60 |

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsum sed sint doloremque repellat, iste debitis.

61 |
62 |
63 |
64 | 65 |
66 |

Album Title

67 |

Artist Name

68 |

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsum sed sint doloremque repellat, iste debitis.

69 |
70 |
71 |
72 | 73 |
74 |

Album Title

75 |

Artist Name

76 |

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsum sed sint doloremque repellat, iste debitis.

77 |
78 |
79 |
80 | 81 |
82 |

Album Title

83 |

Artist Name

84 |

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsum sed sint doloremque repellat, iste debitis.

85 |
86 |
87 |
88 | 89 |
90 |

Album Title

91 |

Artist Name

92 |

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsum sed sint doloremque repellat, iste debitis.

93 |
94 |
95 | 96 |
97 | 98 | 99 | 122 | 123 | 124 | -------------------------------------------------------------------------------- /19 - Nesting Grid with Album Layouts/albums-START.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Nesting Grid with Album Layouts! 9 | 10 | 11 | 12 | 13 |
14 |
15 | 16 |
17 |

Album Title

18 |

Artist Name

19 |

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsum sed sint doloremque repellat, iste debitis.

20 |

Lorem ipsum dolor sit amet consectetur, adipisicing elit. Facilis, excepturi!

21 |
22 |
23 |
24 | 25 |
26 |

Album Title

27 |

Artist Name

28 |

short.

29 |
30 |
31 |
32 | 33 |
34 |

Album Title

35 |

Artist Name

36 |

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsum sed sint doloremque repellat, iste debitis.

37 |
38 |
39 |
40 | 41 |
42 |

Album Title

43 |

Artist Name

44 |

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsum sed sint doloremque repellat, iste debitis.

45 |
46 |
47 |
48 | 49 |
50 |

Album Title

51 |

Artist Name

52 |

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsum sed sint doloremque repellat, iste debitis.

53 |
54 |
55 |
56 | 57 |
58 |

Album Title

59 |

Artist Name

60 |

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsum sed sint doloremque repellat, iste debitis.

61 |
62 |
63 |
64 | 65 |
66 |

Album Title

67 |

Artist Name

68 |

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsum sed sint doloremque repellat, iste debitis.

69 |
70 |
71 |
72 | 73 |
74 |

Album Title

75 |

Artist Name

76 |

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsum sed sint doloremque repellat, iste debitis.

77 |
78 |
79 |
80 | 81 |
82 |

Album Title

83 |

Artist Name

84 |

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsum sed sint doloremque repellat, iste debitis.

85 |
86 |
87 |
88 | 89 |
90 |

Album Title

91 |

Artist Name

92 |

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsum sed sint doloremque repellat, iste debitis.

93 |
94 |
95 | 96 |
97 | 98 | 99 | 101 | 102 | 103 | -------------------------------------------------------------------------------- /20 - CSS Grid Image Gallery/image-gallery-FINISHED.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | CSS Grid Image Gallery! 9 | 10 | 11 | 12 | 13 |
14 |
15 | 16 | 17 |
18 |
19 | 20 | 22 | 23 | 24 | 154 | 155 | 199 | 200 | 201 | 202 | -------------------------------------------------------------------------------- /20 - CSS Grid Image Gallery/image-gallery-START.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | CSS Grid Image Gallery! 9 | 10 | 11 | 12 | 13 |
14 |
15 | 16 | 17 |
18 |
19 | 20 | 22 | 23 | 24 | 83 | 84 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /20 - CSS Grid Image Gallery/images/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wesbos/css-grid/72d544e70c8661e427c8eedefdf593b18a0ee2b5/20 - CSS Grid Image Gallery/images/1.jpg -------------------------------------------------------------------------------- /20 - CSS Grid Image Gallery/images/10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wesbos/css-grid/72d544e70c8661e427c8eedefdf593b18a0ee2b5/20 - CSS Grid Image Gallery/images/10.jpg -------------------------------------------------------------------------------- /20 - CSS Grid Image Gallery/images/11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wesbos/css-grid/72d544e70c8661e427c8eedefdf593b18a0ee2b5/20 - CSS Grid Image Gallery/images/11.jpg -------------------------------------------------------------------------------- /20 - CSS Grid Image Gallery/images/12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wesbos/css-grid/72d544e70c8661e427c8eedefdf593b18a0ee2b5/20 - CSS Grid Image Gallery/images/12.jpg -------------------------------------------------------------------------------- /20 - CSS Grid Image Gallery/images/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wesbos/css-grid/72d544e70c8661e427c8eedefdf593b18a0ee2b5/20 - CSS Grid Image Gallery/images/2.jpg -------------------------------------------------------------------------------- /20 - CSS Grid Image Gallery/images/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wesbos/css-grid/72d544e70c8661e427c8eedefdf593b18a0ee2b5/20 - CSS Grid Image Gallery/images/3.jpg -------------------------------------------------------------------------------- /20 - CSS Grid Image Gallery/images/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wesbos/css-grid/72d544e70c8661e427c8eedefdf593b18a0ee2b5/20 - CSS Grid Image Gallery/images/4.jpg -------------------------------------------------------------------------------- /20 - CSS Grid Image Gallery/images/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wesbos/css-grid/72d544e70c8661e427c8eedefdf593b18a0ee2b5/20 - CSS Grid Image Gallery/images/5.jpg -------------------------------------------------------------------------------- /20 - CSS Grid Image Gallery/images/6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wesbos/css-grid/72d544e70c8661e427c8eedefdf593b18a0ee2b5/20 - CSS Grid Image Gallery/images/6.jpg -------------------------------------------------------------------------------- /20 - CSS Grid Image Gallery/images/7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wesbos/css-grid/72d544e70c8661e427c8eedefdf593b18a0ee2b5/20 - CSS Grid Image Gallery/images/7.jpg -------------------------------------------------------------------------------- /20 - CSS Grid Image Gallery/images/8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wesbos/css-grid/72d544e70c8661e427c8eedefdf593b18a0ee2b5/20 - CSS Grid Image Gallery/images/8.jpg -------------------------------------------------------------------------------- /20 - CSS Grid Image Gallery/images/9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wesbos/css-grid/72d544e70c8661e427c8eedefdf593b18a0ee2b5/20 - CSS Grid Image Gallery/images/9.jpg -------------------------------------------------------------------------------- /21 - Flexbox vs CSS Grid/axis-flipping-FINISHED.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Flexbox vs CSS Grid: Axis Flipping! 9 | 10 | 11 | 12 | 13 | 14 | 15 | 21 | 22 |
23 |
1
24 |
2
25 |
3
26 |
4
27 |
5
28 |
6
29 |
7
30 |
8
31 |
9
32 |
10
33 | 34 |
35 | 36 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /21 - Flexbox vs CSS Grid/axis-flipping-START.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Flexbox vs CSS Grid: Axis Flipping! 9 | 10 | 11 | 12 | 13 | 14 | 15 | 21 | 22 | 23 |
24 |
1
25 |
2
26 |
3
27 |
4
28 |
5
29 |
6
30 |
7
31 |
8
32 |
9
33 |
10
34 | 35 |
36 | 37 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /21 - Flexbox vs CSS Grid/controls-on-right-FINISHED.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Flexbox vs CSS Grid: Controls on Right! 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 |
17 |

The Future (Ft. The R.O.C.)

18 | 19 | 20 | 21 |
22 |
23 |

Bounce With Me (Ft. Jermaine Dupri & Xscape)

24 | 25 | 26 | 27 |
28 |
29 |

Puppy Love (Ft. Jagged Edge & Jermaine Dupri)

30 | 31 | 32 | 33 |
34 |
35 |

You Know Me (Ft. Da Brat & Jermaine Dupri)

36 | 37 | 38 | 39 |
40 |
41 |

The Dog in Me

42 | 43 | 44 | 45 |
46 |
47 |

Bow Wow (That's My Name) (Ft. Snoop Dogg)

48 | 49 | 50 | 51 |
52 |
53 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /21 - Flexbox vs CSS Grid/controls-on-right-START.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Flexbox vs CSS Grid: Controls on Right! 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 |
17 |

The Future (Ft. The R.O.C.)

18 | 19 | 20 | 21 |
22 |
23 |

Bounce With Me (Ft. Jermaine Dupri & Xscape)

24 | 25 | 26 | 27 |
28 |
29 |

Puppy Love (Ft. Jagged Edge & Jermaine Dupri)

30 | 31 | 32 | 33 |
34 |
35 |

You Know Me (Ft. Da Brat & Jermaine Dupri)

36 | 37 | 38 | 39 |
40 |
41 |

The Dog in Me

42 | 43 | 44 | 45 |
46 |
47 |

Bow Wow (That's My Name) (Ft. Snoop Dogg)

48 | 49 | 50 | 51 |
52 |
53 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /21 - Flexbox vs CSS Grid/flex-on-item-FINISHED.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Flexbox vs CSS Grid: Flex on Item! 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 |
18 | 19 | 20 |
21 | 22 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /21 - Flexbox vs CSS Grid/flex-on-item-START.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Flexbox vs CSS Grid: Flex on Item! 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 |
18 | 19 | 20 |
21 | 22 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /21 - Flexbox vs CSS Grid/perfectly-centered-FINISHED.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Flexbox vs CSS Grid: Perfectly Centered! 9 | 10 | 11 | 12 | 13 | 14 |
15 |

Something Big Is Coming

16 |

Get Ready...

17 |
18 | 19 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /21 - Flexbox vs CSS Grid/perfectly-centered-START.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Flexbox vs CSS Grid: Perfectly Centered! 9 | 10 | 11 | 12 | 13 | 14 |
15 |

Something Big Is Coming

16 |

Get Ready...

17 |
18 | 19 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /21 - Flexbox vs CSS Grid/self-control-FINISHED.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Flexbox vs CSS Grid: Self Control! 9 | 10 | 11 | 12 | 13 | 14 |
15 |
1
16 |
TWO
17 |
3
18 |
4
19 |
20 | 21 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /21 - Flexbox vs CSS Grid/self-control-START.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Flexbox vs CSS Grid: Self Control! 9 | 10 | 11 | 12 | 13 | 14 |
15 |
1
16 |
TWO
17 |
3
18 |
4
19 |
20 | 21 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /21 - Flexbox vs CSS Grid/stacked-layout-FINISHED.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Flexbox vs CSS Grid: Stacked Layout! 9 | 10 | 11 | 12 | 13 |
14 |
1
15 |
2
16 |
3
17 |
4
18 |
5
19 |
20 | 21 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /21 - Flexbox vs CSS Grid/stacked-layout-START.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Flexbox vs CSS Grid: Stacked Layout! 9 | 10 | 11 | 12 | 13 |
14 |
1
15 |
2
16 |
3
17 |
4
18 |
5
19 |
20 | 21 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /21 - Flexbox vs CSS Grid/unknown-content-size-FINISHED.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Flexbox vs CSS Grid: Unknown Content Size! 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 |
Short
17 |
Longerrrrrr
18 |
19 | 20 |
21 |
💩
22 |
23 | 24 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /21 - Flexbox vs CSS Grid/unknown-content-size-START.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Flexbox vs CSS Grid: Unknown Content Size! 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 |
Short
17 |
Longerrrrrr
18 |
19 | 20 |
21 |
💩
22 |
23 | 24 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /21 - Flexbox vs CSS Grid/unknown-number-of-items-FINISHED.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Flexbox vs CSS Grid: Unknown Number of Items! 9 | 10 | 11 | 12 | 13 | 19 | 20 |
21 |
1
22 |
2
23 |
3
24 |
25 | 26 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /21 - Flexbox vs CSS Grid/unknown-number-of-items-START.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Flexbox vs CSS Grid: Unknown Number of Items! 9 | 10 | 11 | 12 | 13 | 19 | 20 |
21 |
1
22 |
2
23 |
3
24 |
25 | 26 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /21 - Flexbox vs CSS Grid/variable-widths-each-row-FINISHED.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Flexbox vs CSS Grid: Variable Widths on Each Row! 9 | 10 | 11 | 12 |
13 |
Short
14 |
Longerrrrrrrrrrrrrr
15 |
💩
16 |
This is Many Words
17 |
Lorem, ipsum.
18 |
10
19 |
Snickers
20 |
Wes Is Cool
21 |
Short
22 |
23 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /21 - Flexbox vs CSS Grid/variable-widths-each-row-START.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Flexbox vs CSS Grid: Variable Widths on Each Row! 9 | 10 | 11 | 12 |
13 |
Short
14 |
Longerrrrrrrrrrrrrr
15 |
💩
16 |
This is Many Words
17 |
Lorem, ipsum.
18 |
10
19 |
Snickers
20 |
Wes Is Cool
21 |
Short
22 |
23 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /22 - Recreating Codepen/codepen-FINISHED.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Recreating Codepen! 8 | 9 | 10 | 11 | 12 |
13 |
14 |
15 |

Some Amazing Pen Name

16 |

A Pen by Wes Bos

17 |
18 | 19 | 20 | 21 | 22 | Wes Bos 23 |
24 |
25 |
26 |
27 | 28 |

HTML

29 | 30 |
31 |
32 |
33 | 1 34 |
35 | 36 | 37 |
38 |
39 |
40 |
41 | 42 |

CSS

43 | 44 |
45 |
46 |
47 | 1 48 | 2 49 | 3 50 |
51 | 52 | 56 |
57 | 58 |
59 |
60 |
61 | 62 |

JS

63 | 64 |
65 |
66 |
67 | 1 68 |
69 | 70 |
71 | 72 |
73 |
74 |
75 | 76 |
77 | 82 |
83 | 84 | 85 | -------------------------------------------------------------------------------- /22 - Recreating Codepen/codepen-START.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Recreating Codepen! 8 | 9 | 10 | 11 | 12 |
13 |
14 |
15 |

Some Amazing Pen Name

16 |

A Pen by Wes Bos

17 |
18 | 19 | 20 | 21 | 22 | Wes Bos 23 |
24 |
25 |
26 |
27 | 28 |

HTML

29 | 30 |
31 |
32 |
33 | 1 34 |
35 | 36 | 37 |
38 |
39 |
40 |
41 | 42 |

CSS

43 | 44 |
45 |
46 |
47 | 1 48 | 2 49 | 3 50 |
51 | 52 | 56 |
57 | 58 |
59 |
60 |
61 | 62 |

JS

63 | 64 |
65 |
66 |
67 | 1 68 |
69 | 70 |
71 | 72 |
73 |
74 |
75 | 76 |
77 | 82 |
83 | 84 | 85 | -------------------------------------------------------------------------------- /22 - Recreating Codepen/style-FINISHED.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --grey: #343436; 3 | } 4 | html { 5 | box-sizing: border-box; 6 | font-family: "Lato", "Lucida Grande", "Lucida Sans Unicode", Tahoma, 7 | Sans-Serif; 8 | font-weight: normal; 9 | color: #272727; 10 | text-shadow: 0 2px 0 rgba(0, 0, 0, 0.07); 11 | } 12 | 13 | *, 14 | *:before, 15 | *:after { 16 | box-sizing: inherit; 17 | } 18 | 19 | body { 20 | margin: 0; 21 | } 22 | 23 | iframe { 24 | width: 100%; 25 | height: 100%; 26 | } 27 | 28 | h1, 29 | h2, 30 | h3, 31 | h4, 32 | h5, 33 | h6 { 34 | font-weight: normal; 35 | margin: 0; 36 | font-size: 1.5em; 37 | } 38 | 39 | .codepen { 40 | display: grid; 41 | grid-template-rows: auto 1fr 1fr auto; 42 | height: 100vh; 43 | color: white; 44 | } 45 | 46 | .codepen >* { 47 | border:1px solid black; 48 | } 49 | 50 | 51 | /* Editor! */ 52 | .code { 53 | display:grid; 54 | grid-template-columns: repeat(3, 1fr); 55 | background: #1b2b34; 56 | } 57 | 58 | .editor { 59 | display: grid; 60 | grid-template-rows: auto 1fr; 61 | } 62 | 63 | .editor__header { 64 | display: grid; 65 | grid-template-columns: auto 1fr auto; 66 | align-items: center; 67 | padding: 5px; 68 | grid-gap: 5px; 69 | background: rgba(0,0,0,0.1); 70 | } 71 | 72 | .editor__code { 73 | display: grid; 74 | grid-template-columns: auto 1fr; 75 | } 76 | 77 | .editor__number { 78 | display: block; 79 | padding: 0 10px; 80 | } 81 | 82 | .editor__input { 83 | resize: none; 84 | background: none; 85 | border: 0; 86 | color: grey; 87 | font-size: 16px; 88 | line-height: 19px; 89 | } 90 | 91 | /* Pen Header */ 92 | 93 | .pen { 94 | display: grid; 95 | grid-template-columns: 1fr; 96 | grid-auto-flow: column; 97 | align-items: center; 98 | grid-gap: 10px; 99 | background: black; 100 | border-bottom: 5px solid var(--grey); 101 | color: white; 102 | padding: 10px; 103 | } 104 | 105 | .preview { 106 | display: grid; 107 | } 108 | 109 | /* Buttons */ 110 | 111 | .button { 112 | background: var(--grey); 113 | border: 0; 114 | color: white; 115 | padding: 10px; 116 | border-radius:5px; 117 | font-size: 15px; 118 | position: relative; 119 | } 120 | 121 | .button--small { 122 | font-size: 12px; 123 | padding: 4px; 124 | } 125 | 126 | .button--dirty:before { 127 | background: #ffc600; 128 | display: block; 129 | content: ''; 130 | height: 2px; 131 | width: calc(100% - 6px); 132 | position: absolute; 133 | left: 3px; 134 | top: 3px; 135 | } 136 | 137 | 138 | .settings { 139 | padding: 5px; 140 | background: black; 141 | border-top: 1px solid grey; 142 | } -------------------------------------------------------------------------------- /22 - Recreating Codepen/style-START.css: -------------------------------------------------------------------------------- 1 | html { 2 | box-sizing: border-box; 3 | font-family: "Lato", "Lucida Grande", "Lucida Sans Unicode", Tahoma, 4 | Sans-Serif; 5 | font-weight: normal; 6 | color: #272727; 7 | text-shadow: 0 2px 0 rgba(0, 0, 0, 0.07); 8 | } 9 | 10 | *, 11 | *:before, 12 | *:after { 13 | box-sizing: inherit; 14 | } 15 | 16 | body { 17 | margin: 0; 18 | } 19 | 20 | iframe { 21 | width: 100%; 22 | height: 100%; 23 | } 24 | 25 | h1, 26 | h2, 27 | h3, 28 | h4, 29 | h5, 30 | h6 { 31 | font-weight: normal; 32 | margin: 0; 33 | font-size: 1.5em; 34 | } 35 | -------------------------------------------------------------------------------- /23 - Bootstrappy Grid with CSS Variables/grid-FINISHED.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Bootstrappy Grid with CSS Variables! 9 | 10 | 11 | 12 | 13 | 14 |
15 |
1
16 |
17 | 18 |
19 |
1
20 |
2
21 |
22 | 23 |
24 |
3
25 |
4
26 |
27 | 28 | 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /23 - Bootstrappy Grid with CSS Variables/grid-START.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Bootstrappy Grid with CSS Variables! 9 | 10 | 11 | 12 | 13 | 14 |
15 |
1
16 |
2
17 |
3
18 |
4
19 |
20 | 21 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /24 - Responisve Website/images/queso-taco.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wesbos/css-grid/72d544e70c8661e427c8eedefdf593b18a0ee2b5/24 - Responisve Website/images/queso-taco.png -------------------------------------------------------------------------------- /24 - Responisve Website/images/taco.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wesbos/css-grid/72d544e70c8661e427c8eedefdf593b18a0ee2b5/24 - Responisve Website/images/taco.jpg -------------------------------------------------------------------------------- /24 - Responisve Website/responsive-FINISHED.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-size: 15px; 3 | } 4 | 5 | button { 6 | background: #ffc600; 7 | border: 0; 8 | padding: 10px 20px; 9 | } 10 | 11 | img { 12 | max-width: 100%; 13 | } 14 | 15 | /* .wrapper */ 16 | 17 | .wrapper { 18 | display: grid; 19 | grid-gap: 20px; 20 | } 21 | 22 | .top { 23 | display: grid; 24 | grid-gap: 20px; 25 | grid-template-areas: 26 | "hero hero cta1" 27 | "hero hero cta2" 28 | } 29 | 30 | .hero { 31 | grid-area: hero; 32 | min-height: 400px; 33 | background: white url(images/taco.jpg); 34 | background-size: cover; 35 | background-position: bottom right; 36 | padding: 50px; 37 | display: flex; 38 | flex-direction: column; 39 | align-items: start; 40 | justify-content: center; 41 | } 42 | 43 | .hero > * { 44 | background: var(--yellow); 45 | padding: 5px; 46 | } 47 | 48 | .cta { 49 | background: var(--yellow); 50 | display: grid; 51 | align-items: center; 52 | justify-items: center; 53 | align-content: center; 54 | } 55 | 56 | .cta p { 57 | margin: 0; 58 | } 59 | 60 | .cta1 { 61 | grid-area: cta1; 62 | } 63 | 64 | .cta2 { 65 | grid-area: cta2; 66 | } 67 | 68 | .price { 69 | font-size: 60px; 70 | font-weight: 300; 71 | } 72 | 73 | /* Navigation */ 74 | 75 | .menu ul { 76 | display: grid; 77 | grid-gap: 10px; 78 | padding: 0; 79 | list-style: none; 80 | grid-template-columns: repeat(auto-fit, minmax(100px, 1fr)); 81 | } 82 | 83 | .menu a { 84 | background: var(--yellow); 85 | display: block; 86 | text-decoration: none; 87 | padding: 10px; 88 | text-align: center; 89 | color: var(--black); 90 | text-transform: uppercase; 91 | font-size: 20px; 92 | } 93 | 94 | [aria-controls="menu-list"] { 95 | display: none; 96 | } 97 | 98 | /* Features! */ 99 | 100 | .features { 101 | display: grid; 102 | grid-gap: 20px; 103 | grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); 104 | } 105 | 106 | .feature { 107 | background: white; 108 | padding: 10px; 109 | border: 1px solid white; 110 | text-align: center; 111 | box-shadow: 0 0 4px rgba(0,0,0,0.1); 112 | } 113 | 114 | .feature .icon { 115 | font-size: 50px; 116 | } 117 | .feature p { 118 | color: rgba(0,0,0,0.5); 119 | } 120 | 121 | /* About Section */ 122 | 123 | .about { 124 | background: white; 125 | padding:50px; 126 | display: grid; 127 | grid-template-columns: 400px 1fr; 128 | align-items: center; 129 | } 130 | 131 | /* Gallery! */ 132 | 133 | .gallery { 134 | display: grid; 135 | grid-gap: 20px; 136 | grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); 137 | } 138 | 139 | .gallery img { 140 | width: 100%; 141 | } 142 | 143 | .gallery h2 { 144 | grid-column: 1 / -1; 145 | display: grid; 146 | grid-template-columns: 1fr auto 1fr; 147 | grid-gap: 20px; 148 | align-items: center; 149 | } 150 | 151 | .gallery h2:before, .gallery h2:after { 152 | display: block; 153 | content: ''; 154 | height: 10px; 155 | background: linear-gradient(to var(--direction, left), var(--yellow), transparent); 156 | } 157 | 158 | .gallery h2:after { 159 | --direction: right; 160 | } 161 | 162 | @media (max-width: 1000px) { 163 | .menu { 164 | order: -1; 165 | perspective: 800px; 166 | } 167 | [aria-controls="menu-list"] { 168 | display: block; 169 | margin-bottom: 10px; 170 | } 171 | 172 | .menu ul { 173 | max-height: 0; 174 | overflow: hidden; 175 | transform: rotateX(90deg); 176 | transition: all 0.5s; 177 | } 178 | 179 | [aria-expanded="true"] ~ ul { 180 | display: grid; 181 | max-height: 500px; 182 | transform: rotateX(0); 183 | } 184 | 185 | [aria-expanded="false"] .close { 186 | display: none; 187 | } 188 | 189 | [aria-expanded="true"] .close { 190 | display: inline-block; 191 | } 192 | 193 | [aria-expanded="true"] .open { 194 | display: none; 195 | } 196 | 197 | } 198 | 199 | @media (max-width: 700px) { 200 | .top { 201 | grid-template-areas: 202 | "hero hero" 203 | "cta1 cta2" 204 | } 205 | /* About */ 206 | .about { 207 | grid-template-columns: 1fr; 208 | } 209 | } 210 | 211 | @media (max-width: 500px) { 212 | .top { 213 | grid-template-areas: 214 | "hero" 215 | "cta1" 216 | "cta2" 217 | } 218 | } -------------------------------------------------------------------------------- /24 - Responisve Website/responsive-FINISHED.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Responsive Website! 10 | 11 | 12 | 13 | 14 |
15 |
16 |
17 |

Terry's Taco Joint

18 |

Pretty Good Tacos!

19 |
20 |
21 |

$1.99

22 |

Tacos

23 |
24 |
25 |

$3.99

26 |

Kombucha

27 |
28 | 29 |
30 | 54 | 55 |
56 |
57 | 🌮 58 |

Tacos

59 |

Lorem ipsum dolor sit amet consectetur adipisicing elit. Animi, assumenda.

60 |
61 |
62 | 🍺 63 |

Beer

64 |

Lorem ipsum dolor sit amet consectetur adipisicing elit. Animi, assumenda.

65 |
66 |
67 | 🍷 68 |

Wine

69 |

Lorem ipsum dolor sit amet consectetur adipisicing elit. Animi, assumenda.

70 |
71 |
72 | 🎵 73 |

Music

74 |

Lorem ipsum dolor sit amet consectetur adipisicing elit. Animi, assumenda.

75 |
76 |
77 | 78 |
79 | Yummy Taco 80 |
81 |

Featured Taco

82 |

Slim Profile, easy to hold and loaded with cheese.

83 |

This is the one you have been waiting for

84 | 85 |
86 |
87 | 88 | 89 | 102 |
103 | 104 | 115 | 116 | 117 | -------------------------------------------------------------------------------- /24 - Responisve Website/responsive-START.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-size: 15px; 3 | } 4 | 5 | button { 6 | background: #ffc600; 7 | border: 0; 8 | padding: 10px 20px; 9 | } 10 | 11 | img { 12 | max-width: 100%; 13 | } 14 | 15 | -------------------------------------------------------------------------------- /24 - Responisve Website/responsive-START.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Responsive Website! 10 | 11 | 12 | 13 | 14 |
15 |
16 |
17 |

Terry's Taco Joint

18 |

Pretty Good Tacos!

19 |
20 |
21 |

$1.99

22 |

Tacos

23 |
24 |
25 |

$3.99

26 |

Kombucha

27 |
28 | 29 |
30 | 54 | 55 |
56 |
57 | 🌮 58 |

Tacos

59 |

Lorem ipsum dolor sit amet consectetur adipisicing elit. Animi, assumenda.

60 |
61 |
62 | 🍺 63 |

Beer

64 |

Lorem ipsum dolor sit amet consectetur adipisicing elit. Animi, assumenda.

65 |
66 |
67 | 🍷 68 |

Wine

69 |

Lorem ipsum dolor sit amet consectetur adipisicing elit. Animi, assumenda.

70 |
71 |
72 | 🎵 73 |

Music

74 |

Lorem ipsum dolor sit amet consectetur adipisicing elit. Animi, assumenda.

75 |
76 |
77 | 78 |
79 | Yummy Taco 80 |
81 |

Featured Taco

82 |

Slim Profile, easy to hold and loaded with cheese.

83 |

This is the one you have been waiting for

84 | 85 |
86 |
87 | 88 | 89 | 102 |
103 | 104 | 106 | 107 | 108 | 109 | 110 | -------------------------------------------------------------------------------- /25 - Full Bleed Blog Layout/full-bleed-blog-FINISHED.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Full Bleed Blog Layout! 8 | 9 | 10 | 11 | 15 |
16 |

Chapter Three: The Great American Game

17 | 18 |

Dear Diary,

19 | 20 |

Grandfather's creaky as his front porch, loads his shotgun beneath the awning, spittoon restless for rain, carpenter's 21 | chair against the whistling air. Rocking, back and forth, rocking snap shot picture - worth it, just like the movies

22 | 23 |
24 |

This is a song by 25 | Levi The Poet 26 |

27 |
28 | 29 | 30 |

She said that he loved baseball, and James Earl Jones; said that he's got god talking inside of his thoughts while he's 31 | rounding those bases on his way back home

32 | 33 |
34 |

"If you build it, they will come"

35 |
36 | 37 |

If you build it, they will come (and baby listens to what the Lord say). But I've been getting pretty worn, building 38 | for nearly a decade

39 | 40 |
41 | Big Ass Image 42 |
Super Nice Photo
43 |
44 | 45 | 46 |

In a perfect world we shouldn’t have been allowed to lose sight of what it means to love wholly. I’ve got a Polaroid 47 | hanging on my wall that a friend took of me and my angel. I remember the day like it’s something I can touch, but it’s 48 | stuck in the square between the borders of the film, and I can run my fingers over our faces, but I can’t get back 49 | to the places we were

50 | 51 | 52 |
53 |

You’ve got a pain deep in your bones, son.

54 |
55 |

"You’ve got a pain deep in your bones, son. It compels you forward like you’re tied to a slave master’s cruel hand, and 56 | it's the same pain that drives that oppressor’s heart of stone, so you’ve grown to love the man. You keep pouring yourself 57 | out, again and again, into legible lines through a crooked pen." Yeah, it’s painful, but it’s familiar – so habit breeds 58 | comfort, and I don’t know what I’d do without him

59 | 60 |
61 |

You can listen to this song on 62 | YouTube 63 |

64 |
65 | 66 |

So in the early morning, when you’ve fallen asleep in our home, I drift back into the memories that I’ve claimed as my 67 | own, and wonder if tonight will be a night I’ll hang on my wall like I did before we stopped taking photos, out of 68 | the habit of being comfortable with not trying at all

69 | 70 |

In a perfect world, we’ll have albums labeled Seasons, with chapter headings, and we’ll staple them to the cork-board 71 | that hangs at the foot of the bed. There’s longevity in a memory spilt out in pen, and if a picture is worth a thousand 72 | words then I’ve written down every one of them

73 | 74 |

I work hard, scarred, toil through that soil for the youth I see in my friends, but these journals are moments in time, 75 | snapshots of our lives, and in retrospect, age is an overexposed photo that the memories can't mend

76 | 77 |
78 | Correspondence Album Cover 79 |

Buy the album on 80 | BandCamp 81 |

82 |

Lorem ipsum dolor sit amet consectetur adipisicing elit. Molestiae totam quia vel eveniet porro, rem ducimus quam incidunt, 83 | dicta laborum quod earum tempore natus placeat neque aspernatur pariatur iusto quos.

84 |
85 |

I know my sweet seductress, and her name is Depression. I wrote best beneath that demon’s destructive oppression

86 | 87 | 88 |

In those Polaroids, she drove the ink into the canvas like a slave beneath his master’s cruel hand, and I hated that 89 | whip but always wondered what I’d do without it, so I grew to love the man

90 | 91 |

Oh, I wept for change! I begged for movement and the good Lord, he answered my prayers, but you don’t know how to breathe 92 | easy when you let go of your habits, even if your comforts left you gasping for air

93 | 94 | 95 |
96 | Big Ass Image 97 |
Super Nice Photo
98 |
99 | 100 |

Dear Time

101 | 102 |

Grandfather's as creaky as his front porch, scent like oil in the gun barrel, dip-can kicked over the railing, sandpaper 103 | hands stuck behind thumb tacks on my wall. I’ve got an ache in my chest for every season I miss and it gets worse when 104 | the snow starts to fall. There are butterflies alive in that couple’s eyes a few years since forgotten by all, and 105 | sometimes, if the phone starts to ring, I can still hear their wings when you call

106 | 107 |

But I begged for movement and I got what I asked for, and I can picture the answer like it came yesterday. And in the 108 | land of the gods, I think that things are timeless, but we are still prone to decay

109 | 110 |

You know I still lift up hope of certain smiles in those photos for us when I pray

111 | 112 |
113 |

"Idle hands build nothing that you can call your own"

114 |
115 | 116 |

Time is a cruel lover, and she breaks her house apart at its bones. You know comfort is no good reason for standing still, 117 | and idle hands build nothing that you can call your own.

118 | 119 |
120 |

— Levi The Poet

121 |
122 | 123 |
124 | 125 | 204 | 205 | 206 | -------------------------------------------------------------------------------- /25 - Full Bleed Blog Layout/full-bleed-blog-START.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Full Bleed Blog Layout! 8 | 9 | 10 | 11 | 12 | 16 |
17 |

Chapter Three: The Great American Game

18 | 19 |

Dear Diary,

20 | 21 |

Grandfather's creaky as his front porch, loads his shotgun beneath the awning, spittoon restless for rain, carpenter's 22 | chair against the whistling air. Rocking, back and forth, rocking snap shot picture - worth it, just like the movies

23 | 24 |
25 |

This is a song by 26 | Levi The Poet 27 |

28 |
29 | 30 | 31 |

She said that he loved baseball, and James Earl Jones; said that he's got god talking inside of his thoughts while he's 32 | rounding those bases on his way back home

33 | 34 |
35 |

"If you build it, they will come"

36 |
37 | 38 |

If you build it, they will come (and baby listens to what the Lord say). But I've been getting pretty worn, building 39 | for nearly a decade

40 | 41 |
42 | Big Ass Image 43 |
Super Nice Photo
44 |
45 | 46 | 47 |

In a perfect world we shouldn’t have been allowed to lose sight of what it means to love wholly. I’ve got a Polaroid 48 | hanging on my wall that a friend took of me and my angel. I remember the day like it’s something I can touch, but it’s 49 | stuck in the square between the borders of the film, and I can run my fingers over our faces, but I can’t get back 50 | to the places we were

51 | 52 | 53 |
54 |

You’ve got a pain deep in your bones, son.

55 |
56 |

"You’ve got a pain deep in your bones, son. It compels you forward like you’re tied to a slave master’s cruel hand, and 57 | it's the same pain that drives that oppressor’s heart of stone, so you’ve grown to love the man. You keep pouring yourself 58 | out, again and again, into legible lines through a crooked pen." Yeah, it’s painful, but it’s familiar – so habit breeds 59 | comfort, and I don’t know what I’d do without him

60 | 61 |
62 |

You can listen to this song on 63 | YouTube 64 |

65 |
66 | 67 |

So in the early morning, when you’ve fallen asleep in our home, I drift back into the memories that I’ve claimed as my 68 | own, and wonder if tonight will be a night I’ll hang on my wall like I did before we stopped taking photos, out of 69 | the habit of being comfortable with not trying at all

70 | 71 |

In a perfect world, we’ll have albums labeled Seasons, with chapter headings, and we’ll staple them to the cork-board 72 | that hangs at the foot of the bed. There’s longevity in a memory spilt out in pen, and if a picture is worth a thousand 73 | words then I’ve written down every one of them

74 | 75 |

I work hard, scarred, toil through that soil for the youth I see in my friends, but these journals are moments in time, 76 | snapshots of our lives, and in retrospect, age is an overexposed photo that the memories can't mend

77 | 78 |
79 | Correspondence Album Cover 80 |

Buy the album on 81 | BandCamp 82 |

83 |

Lorem ipsum dolor sit amet consectetur adipisicing elit. Molestiae totam quia vel eveniet porro, rem ducimus quam incidunt, 84 | dicta laborum quod earum tempore natus placeat neque aspernatur pariatur iusto quos.

85 |
86 |

I know my sweet seductress, and her name is Depression. I wrote best beneath that demon’s destructive oppression

87 | 88 | 89 |

In those Polaroids, she drove the ink into the canvas like a slave beneath his master’s cruel hand, and I hated that 90 | whip but always wondered what I’d do without it, so I grew to love the man

91 | 92 |

Oh, I wept for change! I begged for movement and the good Lord, he answered my prayers, but you don’t know how to breathe 93 | easy when you let go of your habits, even if your comforts left you gasping for air

94 | 95 | 96 |
97 | Big Ass Image 98 |
Super Nice Photo
99 |
100 | 101 |

Dear Time

102 | 103 |

Grandfather's as creaky as his front porch, scent like oil in the gun barrel, dip-can kicked over the railing, sandpaper 104 | hands stuck behind thumb tacks on my wall. I’ve got an ache in my chest for every season I miss and it gets worse when 105 | the snow starts to fall. There are butterflies alive in that couple’s eyes a few years since forgotten by all, and 106 | sometimes, if the phone starts to ring, I can still hear their wings when you call

107 | 108 |

But I begged for movement and I got what I asked for, and I can picture the answer like it came yesterday. And in the 109 | land of the gods, I think that things are timeless, but we are still prone to decay

110 | 111 |

You know I still lift up hope of certain smiles in those photos for us when I pray

112 | 113 |
114 |

"Idle hands build nothing that you can call your own"

115 |
116 | 117 |

Time is a cruel lover, and she breaks her house apart at its bones. You know comfort is no good reason for standing still, 118 | and idle hands build nothing that you can call your own.

119 | 120 |
121 |

— Levi The Poet

122 |
123 | 124 |
125 | 126 | 158 | 159 | 160 | 161 | -------------------------------------------------------------------------------- /assets/images/flower.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wesbos/css-grid/72d544e70c8661e427c8eedefdf593b18a0ee2b5/assets/images/flower.png -------------------------------------------------------------------------------- /assets/style.css: -------------------------------------------------------------------------------- 1 | /* 2 | Oh Hello! 3 | 4 | These are some base styles so that our tutorial looks good. 5 | 6 | Let's go through the important bits real quick 7 | */ 8 | :root { 9 | --yellow: #ffc600; 10 | --black: #272727; 11 | } 12 | 13 | html { 14 | /* border-box box model allows us to add padding and border to our elements without increasing their size */ 15 | box-sizing: border-box; 16 | /* A system font stack so things load nice and quick! */ 17 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, 18 | Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; 19 | font-weight: 900; 20 | font-size: 10px; 21 | color: var(--black); 22 | text-shadow: 0 2px 0 rgba(0, 0, 0, 0.07); 23 | } 24 | 25 | /* 26 | WAT IS THIS?! 27 | We inherit box-sizing: border-box; from our selector 28 | Apparently this is a bit better than applying box-sizing: border-box; directly to the * selector 29 | */ 30 | *, 31 | *:before, 32 | *:after { 33 | box-sizing: inherit; 34 | } 35 | 36 | body { 37 | background-image: url("./images/topography.svg"), 38 | linear-gradient(110deg, #f93d66, #6d47d9); 39 | background-size: 340px, auto; 40 | min-height: calc(100vh - 100px); 41 | margin: 50px; 42 | /* background: white; */ 43 | background-attachment: fixed; 44 | letter-spacing: -1px; 45 | } 46 | 47 | h1, 48 | h2, 49 | h3, 50 | h4, 51 | h5, 52 | h6 { 53 | margin: 0 0 5px 0; 54 | } 55 | /* Each item in our grid will contain numbers */ 56 | .item { 57 | /* We center the contents of these items. You can also do this with flexbox too! */ 58 | display: grid; 59 | justify-content: center; 60 | align-items: center; 61 | border: 5px solid rgba(0, 0, 0, 0.03); 62 | border-radius: 3px; 63 | font-size: 35px; 64 | background-color: var(--yellow); /* best colour */ 65 | } 66 | 67 | .item p { 68 | margin: 0 0 5px 0; 69 | } 70 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "css-grid", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "accepts": { 8 | "version": "1.3.7", 9 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", 10 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", 11 | "dev": true, 12 | "requires": { 13 | "mime-types": "~2.1.24", 14 | "negotiator": "0.6.2" 15 | } 16 | }, 17 | "after": { 18 | "version": "0.8.2", 19 | "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", 20 | "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", 21 | "dev": true 22 | }, 23 | "ansi-regex": { 24 | "version": "2.1.1", 25 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 26 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 27 | "dev": true 28 | }, 29 | "ansi-styles": { 30 | "version": "2.2.1", 31 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 32 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 33 | "dev": true 34 | }, 35 | "anymatch": { 36 | "version": "3.1.1", 37 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", 38 | "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", 39 | "dev": true, 40 | "requires": { 41 | "normalize-path": "^3.0.0", 42 | "picomatch": "^2.0.4" 43 | } 44 | }, 45 | "arraybuffer.slice": { 46 | "version": "0.0.7", 47 | "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", 48 | "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==", 49 | "dev": true 50 | }, 51 | "async": { 52 | "version": "1.5.2", 53 | "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", 54 | "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", 55 | "dev": true 56 | }, 57 | "async-each-series": { 58 | "version": "0.1.1", 59 | "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz", 60 | "integrity": "sha1-dhfBkXQB/Yykooqtzj266Yr+tDI=", 61 | "dev": true 62 | }, 63 | "async-limiter": { 64 | "version": "1.0.1", 65 | "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", 66 | "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", 67 | "dev": true 68 | }, 69 | "axios": { 70 | "version": "0.19.0", 71 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz", 72 | "integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==", 73 | "dev": true, 74 | "requires": { 75 | "follow-redirects": "1.5.10", 76 | "is-buffer": "^2.0.2" 77 | }, 78 | "dependencies": { 79 | "follow-redirects": { 80 | "version": "1.5.10", 81 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", 82 | "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", 83 | "dev": true, 84 | "requires": { 85 | "debug": "=3.1.0" 86 | } 87 | } 88 | } 89 | }, 90 | "backo2": { 91 | "version": "1.0.2", 92 | "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", 93 | "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", 94 | "dev": true 95 | }, 96 | "balanced-match": { 97 | "version": "1.0.0", 98 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 99 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 100 | "dev": true 101 | }, 102 | "base64-arraybuffer": { 103 | "version": "0.1.4", 104 | "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", 105 | "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=", 106 | "dev": true 107 | }, 108 | "base64id": { 109 | "version": "1.0.0", 110 | "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", 111 | "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", 112 | "dev": true 113 | }, 114 | "batch": { 115 | "version": "0.6.1", 116 | "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", 117 | "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", 118 | "dev": true 119 | }, 120 | "better-assert": { 121 | "version": "1.0.2", 122 | "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", 123 | "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", 124 | "dev": true, 125 | "requires": { 126 | "callsite": "1.0.0" 127 | } 128 | }, 129 | "binary-extensions": { 130 | "version": "2.1.0", 131 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", 132 | "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", 133 | "dev": true 134 | }, 135 | "blob": { 136 | "version": "0.0.5", 137 | "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", 138 | "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==", 139 | "dev": true 140 | }, 141 | "brace-expansion": { 142 | "version": "1.1.11", 143 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 144 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 145 | "dev": true, 146 | "requires": { 147 | "balanced-match": "^1.0.0", 148 | "concat-map": "0.0.1" 149 | } 150 | }, 151 | "braces": { 152 | "version": "3.0.2", 153 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 154 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 155 | "dev": true, 156 | "requires": { 157 | "fill-range": "^7.0.1" 158 | } 159 | }, 160 | "browser-sync": { 161 | "version": "2.26.13", 162 | "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.26.13.tgz", 163 | "integrity": "sha512-JPYLTngIzI+Dzx+StSSlMtF+Q9yjdh58HW6bMFqkFXuzQkJL8FCvp4lozlS6BbECZcsM2Gmlgp0uhEjvl18X4w==", 164 | "dev": true, 165 | "requires": { 166 | "browser-sync-client": "^2.26.13", 167 | "browser-sync-ui": "^2.26.13", 168 | "bs-recipes": "1.3.4", 169 | "bs-snippet-injector": "^2.0.1", 170 | "chokidar": "^3.4.1", 171 | "connect": "3.6.6", 172 | "connect-history-api-fallback": "^1", 173 | "dev-ip": "^1.0.1", 174 | "easy-extender": "^2.3.4", 175 | "eazy-logger": "3.1.0", 176 | "etag": "^1.8.1", 177 | "fresh": "^0.5.2", 178 | "fs-extra": "3.0.1", 179 | "http-proxy": "^1.18.1", 180 | "immutable": "^3", 181 | "localtunnel": "^2.0.0", 182 | "micromatch": "^4.0.2", 183 | "opn": "5.3.0", 184 | "portscanner": "2.1.1", 185 | "qs": "6.2.3", 186 | "raw-body": "^2.3.2", 187 | "resp-modifier": "6.0.2", 188 | "rx": "4.1.0", 189 | "send": "0.16.2", 190 | "serve-index": "1.9.1", 191 | "serve-static": "1.13.2", 192 | "server-destroy": "1.0.1", 193 | "socket.io": "2.1.1", 194 | "ua-parser-js": "^0.7.18", 195 | "yargs": "^15.4.1" 196 | } 197 | }, 198 | "browser-sync-client": { 199 | "version": "2.26.13", 200 | "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.26.13.tgz", 201 | "integrity": "sha512-p2VbZoYrpuDhkreq+/Sv1MkToHklh7T1OaIntDwpG6Iy2q/XkBcgwPcWjX+WwRNiZjN8MEehxIjEUh12LweLmQ==", 202 | "dev": true, 203 | "requires": { 204 | "etag": "1.8.1", 205 | "fresh": "0.5.2", 206 | "mitt": "^1.1.3", 207 | "rxjs": "^5.5.6" 208 | } 209 | }, 210 | "browser-sync-ui": { 211 | "version": "2.26.13", 212 | "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.26.13.tgz", 213 | "integrity": "sha512-6NJ/pCnhCnBMzaty1opWo7ipDmFAIk8U71JMQGKJxblCUaGfdsbF2shf6XNZSkXYia1yS0vwKu9LIOzpXqQZCA==", 214 | "dev": true, 215 | "requires": { 216 | "async-each-series": "0.1.1", 217 | "connect-history-api-fallback": "^1", 218 | "immutable": "^3", 219 | "server-destroy": "1.0.1", 220 | "socket.io-client": "^2.0.4", 221 | "stream-throttle": "^0.1.3" 222 | } 223 | }, 224 | "bs-recipes": { 225 | "version": "1.3.4", 226 | "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", 227 | "integrity": "sha1-DS1NSKcYyMBEdp/cT4lZLci2lYU=", 228 | "dev": true 229 | }, 230 | "bs-snippet-injector": { 231 | "version": "2.0.1", 232 | "resolved": "https://registry.npmjs.org/bs-snippet-injector/-/bs-snippet-injector-2.0.1.tgz", 233 | "integrity": "sha1-YbU5PxH1JVntEgaTEANDtu2wTdU=", 234 | "dev": true 235 | }, 236 | "bytes": { 237 | "version": "3.1.0", 238 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", 239 | "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", 240 | "dev": true 241 | }, 242 | "callsite": { 243 | "version": "1.0.0", 244 | "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", 245 | "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", 246 | "dev": true 247 | }, 248 | "camelcase": { 249 | "version": "5.3.1", 250 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", 251 | "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", 252 | "dev": true 253 | }, 254 | "chalk": { 255 | "version": "1.1.3", 256 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 257 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 258 | "dev": true, 259 | "requires": { 260 | "ansi-styles": "^2.2.1", 261 | "escape-string-regexp": "^1.0.2", 262 | "has-ansi": "^2.0.0", 263 | "strip-ansi": "^3.0.0", 264 | "supports-color": "^2.0.0" 265 | } 266 | }, 267 | "chokidar": { 268 | "version": "3.4.3", 269 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz", 270 | "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==", 271 | "dev": true, 272 | "requires": { 273 | "anymatch": "~3.1.1", 274 | "braces": "~3.0.2", 275 | "fsevents": "~2.1.2", 276 | "glob-parent": "~5.1.0", 277 | "is-binary-path": "~2.1.0", 278 | "is-glob": "~4.0.1", 279 | "normalize-path": "~3.0.0", 280 | "readdirp": "~3.5.0" 281 | } 282 | }, 283 | "cliui": { 284 | "version": "5.0.0", 285 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", 286 | "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", 287 | "dev": true, 288 | "requires": { 289 | "string-width": "^3.1.0", 290 | "strip-ansi": "^5.2.0", 291 | "wrap-ansi": "^5.1.0" 292 | }, 293 | "dependencies": { 294 | "ansi-regex": { 295 | "version": "4.1.0", 296 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 297 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 298 | "dev": true 299 | }, 300 | "strip-ansi": { 301 | "version": "5.2.0", 302 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 303 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 304 | "dev": true, 305 | "requires": { 306 | "ansi-regex": "^4.1.0" 307 | } 308 | } 309 | } 310 | }, 311 | "color-convert": { 312 | "version": "1.9.3", 313 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 314 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 315 | "dev": true, 316 | "requires": { 317 | "color-name": "1.1.3" 318 | } 319 | }, 320 | "color-name": { 321 | "version": "1.1.3", 322 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 323 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 324 | "dev": true 325 | }, 326 | "commander": { 327 | "version": "2.20.3", 328 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 329 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", 330 | "dev": true 331 | }, 332 | "component-bind": { 333 | "version": "1.0.0", 334 | "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", 335 | "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", 336 | "dev": true 337 | }, 338 | "component-emitter": { 339 | "version": "1.3.0", 340 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", 341 | "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", 342 | "dev": true 343 | }, 344 | "component-inherit": { 345 | "version": "0.0.3", 346 | "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", 347 | "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", 348 | "dev": true 349 | }, 350 | "concat-map": { 351 | "version": "0.0.1", 352 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 353 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 354 | "dev": true 355 | }, 356 | "connect": { 357 | "version": "3.6.6", 358 | "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", 359 | "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", 360 | "dev": true, 361 | "requires": { 362 | "debug": "2.6.9", 363 | "finalhandler": "1.1.0", 364 | "parseurl": "~1.3.2", 365 | "utils-merge": "1.0.1" 366 | }, 367 | "dependencies": { 368 | "debug": { 369 | "version": "2.6.9", 370 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 371 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 372 | "dev": true, 373 | "requires": { 374 | "ms": "2.0.0" 375 | } 376 | } 377 | } 378 | }, 379 | "connect-history-api-fallback": { 380 | "version": "1.6.0", 381 | "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", 382 | "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", 383 | "dev": true 384 | }, 385 | "cookie": { 386 | "version": "0.3.1", 387 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", 388 | "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", 389 | "dev": true 390 | }, 391 | "debug": { 392 | "version": "3.1.0", 393 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 394 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 395 | "dev": true, 396 | "requires": { 397 | "ms": "2.0.0" 398 | } 399 | }, 400 | "decamelize": { 401 | "version": "1.2.0", 402 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 403 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", 404 | "dev": true 405 | }, 406 | "depd": { 407 | "version": "1.1.2", 408 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 409 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", 410 | "dev": true 411 | }, 412 | "destroy": { 413 | "version": "1.0.4", 414 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 415 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", 416 | "dev": true 417 | }, 418 | "dev-ip": { 419 | "version": "1.0.1", 420 | "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz", 421 | "integrity": "sha1-p2o+0YVb56ASu4rBbLgPPADcKPA=", 422 | "dev": true 423 | }, 424 | "dlv": { 425 | "version": "1.1.3", 426 | "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", 427 | "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", 428 | "dev": true 429 | }, 430 | "easy-extender": { 431 | "version": "2.3.4", 432 | "resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.4.tgz", 433 | "integrity": "sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==", 434 | "dev": true, 435 | "requires": { 436 | "lodash": "^4.17.10" 437 | } 438 | }, 439 | "eazy-logger": { 440 | "version": "3.1.0", 441 | "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-3.1.0.tgz", 442 | "integrity": "sha512-/snsn2JqBtUSSstEl4R0RKjkisGHAhvYj89i7r3ytNUKW12y178KDZwXLXIgwDqLW6E/VRMT9qfld7wvFae8bQ==", 443 | "dev": true, 444 | "requires": { 445 | "tfunk": "^4.0.0" 446 | } 447 | }, 448 | "ee-first": { 449 | "version": "1.1.1", 450 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 451 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", 452 | "dev": true 453 | }, 454 | "emoji-regex": { 455 | "version": "7.0.3", 456 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", 457 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", 458 | "dev": true 459 | }, 460 | "encodeurl": { 461 | "version": "1.0.2", 462 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 463 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", 464 | "dev": true 465 | }, 466 | "engine.io": { 467 | "version": "3.2.1", 468 | "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.1.tgz", 469 | "integrity": "sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w==", 470 | "dev": true, 471 | "requires": { 472 | "accepts": "~1.3.4", 473 | "base64id": "1.0.0", 474 | "cookie": "0.3.1", 475 | "debug": "~3.1.0", 476 | "engine.io-parser": "~2.1.0", 477 | "ws": "~3.3.1" 478 | }, 479 | "dependencies": { 480 | "base64-arraybuffer": { 481 | "version": "0.1.5", 482 | "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", 483 | "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", 484 | "dev": true 485 | }, 486 | "engine.io-parser": { 487 | "version": "2.1.3", 488 | "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", 489 | "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", 490 | "dev": true, 491 | "requires": { 492 | "after": "0.8.2", 493 | "arraybuffer.slice": "~0.0.7", 494 | "base64-arraybuffer": "0.1.5", 495 | "blob": "0.0.5", 496 | "has-binary2": "~1.0.2" 497 | } 498 | }, 499 | "ws": { 500 | "version": "3.3.3", 501 | "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", 502 | "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", 503 | "dev": true, 504 | "requires": { 505 | "async-limiter": "~1.0.0", 506 | "safe-buffer": "~5.1.0", 507 | "ultron": "~1.1.0" 508 | } 509 | } 510 | } 511 | }, 512 | "engine.io-client": { 513 | "version": "3.4.4", 514 | "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.4.4.tgz", 515 | "integrity": "sha512-iU4CRr38Fecj8HoZEnFtm2EiKGbYZcPn3cHxqNGl/tmdWRf60KhK+9vE0JeSjgnlS/0oynEfLgKbT9ALpim0sQ==", 516 | "dev": true, 517 | "requires": { 518 | "component-emitter": "~1.3.0", 519 | "component-inherit": "0.0.3", 520 | "debug": "~3.1.0", 521 | "engine.io-parser": "~2.2.0", 522 | "has-cors": "1.1.0", 523 | "indexof": "0.0.1", 524 | "parseqs": "0.0.6", 525 | "parseuri": "0.0.6", 526 | "ws": "~6.1.0", 527 | "xmlhttprequest-ssl": "~1.5.4", 528 | "yeast": "0.1.2" 529 | } 530 | }, 531 | "engine.io-parser": { 532 | "version": "2.2.1", 533 | "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.1.tgz", 534 | "integrity": "sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==", 535 | "dev": true, 536 | "requires": { 537 | "after": "0.8.2", 538 | "arraybuffer.slice": "~0.0.7", 539 | "base64-arraybuffer": "0.1.4", 540 | "blob": "0.0.5", 541 | "has-binary2": "~1.0.2" 542 | } 543 | }, 544 | "escape-html": { 545 | "version": "1.0.3", 546 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 547 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", 548 | "dev": true 549 | }, 550 | "escape-string-regexp": { 551 | "version": "1.0.5", 552 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 553 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 554 | "dev": true 555 | }, 556 | "etag": { 557 | "version": "1.8.1", 558 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 559 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", 560 | "dev": true 561 | }, 562 | "eventemitter3": { 563 | "version": "4.0.7", 564 | "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", 565 | "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", 566 | "dev": true 567 | }, 568 | "fill-range": { 569 | "version": "7.0.1", 570 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 571 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 572 | "dev": true, 573 | "requires": { 574 | "to-regex-range": "^5.0.1" 575 | } 576 | }, 577 | "finalhandler": { 578 | "version": "1.1.0", 579 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", 580 | "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", 581 | "dev": true, 582 | "requires": { 583 | "debug": "2.6.9", 584 | "encodeurl": "~1.0.1", 585 | "escape-html": "~1.0.3", 586 | "on-finished": "~2.3.0", 587 | "parseurl": "~1.3.2", 588 | "statuses": "~1.3.1", 589 | "unpipe": "~1.0.0" 590 | }, 591 | "dependencies": { 592 | "debug": { 593 | "version": "2.6.9", 594 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 595 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 596 | "dev": true, 597 | "requires": { 598 | "ms": "2.0.0" 599 | } 600 | } 601 | } 602 | }, 603 | "find-up": { 604 | "version": "3.0.0", 605 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", 606 | "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", 607 | "dev": true, 608 | "requires": { 609 | "locate-path": "^3.0.0" 610 | } 611 | }, 612 | "follow-redirects": { 613 | "version": "1.13.0", 614 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz", 615 | "integrity": "sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==", 616 | "dev": true 617 | }, 618 | "fresh": { 619 | "version": "0.5.2", 620 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 621 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", 622 | "dev": true 623 | }, 624 | "fs-extra": { 625 | "version": "3.0.1", 626 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", 627 | "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", 628 | "dev": true, 629 | "requires": { 630 | "graceful-fs": "^4.1.2", 631 | "jsonfile": "^3.0.0", 632 | "universalify": "^0.1.0" 633 | } 634 | }, 635 | "fsevents": { 636 | "version": "2.1.3", 637 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", 638 | "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", 639 | "dev": true, 640 | "optional": true 641 | }, 642 | "get-caller-file": { 643 | "version": "2.0.5", 644 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 645 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 646 | "dev": true 647 | }, 648 | "glob-parent": { 649 | "version": "5.1.1", 650 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", 651 | "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", 652 | "dev": true, 653 | "requires": { 654 | "is-glob": "^4.0.1" 655 | } 656 | }, 657 | "graceful-fs": { 658 | "version": "4.2.4", 659 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", 660 | "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", 661 | "dev": true 662 | }, 663 | "has-ansi": { 664 | "version": "2.0.0", 665 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 666 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 667 | "dev": true, 668 | "requires": { 669 | "ansi-regex": "^2.0.0" 670 | } 671 | }, 672 | "has-binary2": { 673 | "version": "1.0.3", 674 | "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", 675 | "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", 676 | "dev": true, 677 | "requires": { 678 | "isarray": "2.0.1" 679 | } 680 | }, 681 | "has-cors": { 682 | "version": "1.1.0", 683 | "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", 684 | "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", 685 | "dev": true 686 | }, 687 | "http-errors": { 688 | "version": "1.7.3", 689 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", 690 | "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", 691 | "dev": true, 692 | "requires": { 693 | "depd": "~1.1.2", 694 | "inherits": "2.0.4", 695 | "setprototypeof": "1.1.1", 696 | "statuses": ">= 1.5.0 < 2", 697 | "toidentifier": "1.0.0" 698 | }, 699 | "dependencies": { 700 | "statuses": { 701 | "version": "1.5.0", 702 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 703 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", 704 | "dev": true 705 | } 706 | } 707 | }, 708 | "http-proxy": { 709 | "version": "1.18.1", 710 | "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", 711 | "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", 712 | "dev": true, 713 | "requires": { 714 | "eventemitter3": "^4.0.0", 715 | "follow-redirects": "^1.0.0", 716 | "requires-port": "^1.0.0" 717 | } 718 | }, 719 | "iconv-lite": { 720 | "version": "0.4.24", 721 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 722 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 723 | "dev": true, 724 | "requires": { 725 | "safer-buffer": ">= 2.1.2 < 3" 726 | } 727 | }, 728 | "immutable": { 729 | "version": "3.8.2", 730 | "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", 731 | "integrity": "sha1-wkOZUUVbs5kT2vKBN28VMOEErfM=", 732 | "dev": true 733 | }, 734 | "indexof": { 735 | "version": "0.0.1", 736 | "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", 737 | "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", 738 | "dev": true 739 | }, 740 | "inherits": { 741 | "version": "2.0.4", 742 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 743 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 744 | "dev": true 745 | }, 746 | "is-binary-path": { 747 | "version": "2.1.0", 748 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 749 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 750 | "dev": true, 751 | "requires": { 752 | "binary-extensions": "^2.0.0" 753 | } 754 | }, 755 | "is-buffer": { 756 | "version": "2.0.5", 757 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", 758 | "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", 759 | "dev": true 760 | }, 761 | "is-extglob": { 762 | "version": "2.1.1", 763 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 764 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 765 | "dev": true 766 | }, 767 | "is-fullwidth-code-point": { 768 | "version": "2.0.0", 769 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 770 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 771 | "dev": true 772 | }, 773 | "is-glob": { 774 | "version": "4.0.1", 775 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 776 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 777 | "dev": true, 778 | "requires": { 779 | "is-extglob": "^2.1.1" 780 | } 781 | }, 782 | "is-number": { 783 | "version": "7.0.0", 784 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 785 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 786 | "dev": true 787 | }, 788 | "is-number-like": { 789 | "version": "1.0.8", 790 | "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", 791 | "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", 792 | "dev": true, 793 | "requires": { 794 | "lodash.isfinite": "^3.3.2" 795 | } 796 | }, 797 | "is-wsl": { 798 | "version": "1.1.0", 799 | "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", 800 | "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", 801 | "dev": true 802 | }, 803 | "isarray": { 804 | "version": "2.0.1", 805 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", 806 | "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", 807 | "dev": true 808 | }, 809 | "jsonfile": { 810 | "version": "3.0.1", 811 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", 812 | "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=", 813 | "dev": true, 814 | "requires": { 815 | "graceful-fs": "^4.1.6" 816 | } 817 | }, 818 | "limiter": { 819 | "version": "1.1.5", 820 | "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", 821 | "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==", 822 | "dev": true 823 | }, 824 | "localtunnel": { 825 | "version": "2.0.0", 826 | "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-2.0.0.tgz", 827 | "integrity": "sha512-g6E0aLgYYDvQDxIjIXkgJo2+pHj3sGg4Wz/XP3h2KtZnRsWPbOQY+hw1H8Z91jep998fkcVE9l+kghO+97vllg==", 828 | "dev": true, 829 | "requires": { 830 | "axios": "0.19.0", 831 | "debug": "4.1.1", 832 | "openurl": "1.1.1", 833 | "yargs": "13.3.0" 834 | }, 835 | "dependencies": { 836 | "debug": { 837 | "version": "4.1.1", 838 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", 839 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", 840 | "dev": true, 841 | "requires": { 842 | "ms": "^2.1.1" 843 | } 844 | }, 845 | "ms": { 846 | "version": "2.1.2", 847 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 848 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 849 | "dev": true 850 | }, 851 | "yargs": { 852 | "version": "13.3.0", 853 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", 854 | "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", 855 | "dev": true, 856 | "requires": { 857 | "cliui": "^5.0.0", 858 | "find-up": "^3.0.0", 859 | "get-caller-file": "^2.0.1", 860 | "require-directory": "^2.1.1", 861 | "require-main-filename": "^2.0.0", 862 | "set-blocking": "^2.0.0", 863 | "string-width": "^3.0.0", 864 | "which-module": "^2.0.0", 865 | "y18n": "^4.0.0", 866 | "yargs-parser": "^13.1.1" 867 | } 868 | } 869 | } 870 | }, 871 | "locate-path": { 872 | "version": "3.0.0", 873 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", 874 | "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", 875 | "dev": true, 876 | "requires": { 877 | "p-locate": "^3.0.0", 878 | "path-exists": "^3.0.0" 879 | } 880 | }, 881 | "lodash": { 882 | "version": "4.17.20", 883 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", 884 | "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", 885 | "dev": true 886 | }, 887 | "lodash.isfinite": { 888 | "version": "3.3.2", 889 | "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", 890 | "integrity": "sha1-+4m2WpqAKBgz8LdHizpRBPiY67M=", 891 | "dev": true 892 | }, 893 | "micromatch": { 894 | "version": "4.0.2", 895 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", 896 | "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", 897 | "dev": true, 898 | "requires": { 899 | "braces": "^3.0.1", 900 | "picomatch": "^2.0.5" 901 | } 902 | }, 903 | "mime": { 904 | "version": "1.4.1", 905 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", 906 | "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", 907 | "dev": true 908 | }, 909 | "mime-db": { 910 | "version": "1.44.0", 911 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", 912 | "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", 913 | "dev": true 914 | }, 915 | "mime-types": { 916 | "version": "2.1.27", 917 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", 918 | "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", 919 | "dev": true, 920 | "requires": { 921 | "mime-db": "1.44.0" 922 | } 923 | }, 924 | "minimatch": { 925 | "version": "3.0.4", 926 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 927 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 928 | "dev": true, 929 | "requires": { 930 | "brace-expansion": "^1.1.7" 931 | } 932 | }, 933 | "mitt": { 934 | "version": "1.2.0", 935 | "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", 936 | "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==", 937 | "dev": true 938 | }, 939 | "ms": { 940 | "version": "2.0.0", 941 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 942 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 943 | "dev": true 944 | }, 945 | "negotiator": { 946 | "version": "0.6.2", 947 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", 948 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", 949 | "dev": true 950 | }, 951 | "normalize-path": { 952 | "version": "3.0.0", 953 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 954 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 955 | "dev": true 956 | }, 957 | "object-component": { 958 | "version": "0.0.3", 959 | "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", 960 | "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", 961 | "dev": true 962 | }, 963 | "on-finished": { 964 | "version": "2.3.0", 965 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 966 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 967 | "dev": true, 968 | "requires": { 969 | "ee-first": "1.1.1" 970 | } 971 | }, 972 | "openurl": { 973 | "version": "1.1.1", 974 | "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz", 975 | "integrity": "sha1-OHW0sO96UsFW8NtB1GCduw+Us4c=", 976 | "dev": true 977 | }, 978 | "opn": { 979 | "version": "5.3.0", 980 | "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", 981 | "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", 982 | "dev": true, 983 | "requires": { 984 | "is-wsl": "^1.1.0" 985 | } 986 | }, 987 | "p-limit": { 988 | "version": "2.3.0", 989 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 990 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 991 | "dev": true, 992 | "requires": { 993 | "p-try": "^2.0.0" 994 | } 995 | }, 996 | "p-locate": { 997 | "version": "3.0.0", 998 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", 999 | "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", 1000 | "dev": true, 1001 | "requires": { 1002 | "p-limit": "^2.0.0" 1003 | } 1004 | }, 1005 | "p-try": { 1006 | "version": "2.2.0", 1007 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 1008 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 1009 | "dev": true 1010 | }, 1011 | "parseqs": { 1012 | "version": "0.0.6", 1013 | "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", 1014 | "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==", 1015 | "dev": true 1016 | }, 1017 | "parseuri": { 1018 | "version": "0.0.6", 1019 | "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz", 1020 | "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==", 1021 | "dev": true 1022 | }, 1023 | "parseurl": { 1024 | "version": "1.3.3", 1025 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 1026 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", 1027 | "dev": true 1028 | }, 1029 | "path-exists": { 1030 | "version": "3.0.0", 1031 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 1032 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", 1033 | "dev": true 1034 | }, 1035 | "picomatch": { 1036 | "version": "2.2.2", 1037 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", 1038 | "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", 1039 | "dev": true 1040 | }, 1041 | "portscanner": { 1042 | "version": "2.1.1", 1043 | "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.1.1.tgz", 1044 | "integrity": "sha1-6rtAnk3iSVD1oqUW01rnaTQ/u5Y=", 1045 | "dev": true, 1046 | "requires": { 1047 | "async": "1.5.2", 1048 | "is-number-like": "^1.0.3" 1049 | } 1050 | }, 1051 | "qs": { 1052 | "version": "6.2.3", 1053 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.3.tgz", 1054 | "integrity": "sha1-HPyyXBCpsrSDBT/zn138kjOQjP4=", 1055 | "dev": true 1056 | }, 1057 | "range-parser": { 1058 | "version": "1.2.1", 1059 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 1060 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", 1061 | "dev": true 1062 | }, 1063 | "raw-body": { 1064 | "version": "2.4.1", 1065 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz", 1066 | "integrity": "sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==", 1067 | "dev": true, 1068 | "requires": { 1069 | "bytes": "3.1.0", 1070 | "http-errors": "1.7.3", 1071 | "iconv-lite": "0.4.24", 1072 | "unpipe": "1.0.0" 1073 | } 1074 | }, 1075 | "readdirp": { 1076 | "version": "3.5.0", 1077 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", 1078 | "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", 1079 | "dev": true, 1080 | "requires": { 1081 | "picomatch": "^2.2.1" 1082 | } 1083 | }, 1084 | "require-directory": { 1085 | "version": "2.1.1", 1086 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 1087 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", 1088 | "dev": true 1089 | }, 1090 | "require-main-filename": { 1091 | "version": "2.0.0", 1092 | "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", 1093 | "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", 1094 | "dev": true 1095 | }, 1096 | "requires-port": { 1097 | "version": "1.0.0", 1098 | "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", 1099 | "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", 1100 | "dev": true 1101 | }, 1102 | "resp-modifier": { 1103 | "version": "6.0.2", 1104 | "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", 1105 | "integrity": "sha1-sSTeXE+6/LpUH0j/pzlw9KpFa08=", 1106 | "dev": true, 1107 | "requires": { 1108 | "debug": "^2.2.0", 1109 | "minimatch": "^3.0.2" 1110 | }, 1111 | "dependencies": { 1112 | "debug": { 1113 | "version": "2.6.9", 1114 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1115 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1116 | "dev": true, 1117 | "requires": { 1118 | "ms": "2.0.0" 1119 | } 1120 | } 1121 | } 1122 | }, 1123 | "run-script-os": { 1124 | "version": "1.1.3", 1125 | "resolved": "https://registry.npmjs.org/run-script-os/-/run-script-os-1.1.3.tgz", 1126 | "integrity": "sha512-xPlzE6533nvWVea5z7e5J7+JAIepfpxTu/HLGxcjJYlemVukOCWJBaRCod/DWXJFRIWEFOgSGbjd2m1QWTJi5w==", 1127 | "dev": true 1128 | }, 1129 | "rx": { 1130 | "version": "4.1.0", 1131 | "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", 1132 | "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=", 1133 | "dev": true 1134 | }, 1135 | "rxjs": { 1136 | "version": "5.5.12", 1137 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", 1138 | "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", 1139 | "dev": true, 1140 | "requires": { 1141 | "symbol-observable": "1.0.1" 1142 | } 1143 | }, 1144 | "safe-buffer": { 1145 | "version": "5.1.2", 1146 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1147 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 1148 | "dev": true 1149 | }, 1150 | "safer-buffer": { 1151 | "version": "2.1.2", 1152 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1153 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 1154 | "dev": true 1155 | }, 1156 | "send": { 1157 | "version": "0.16.2", 1158 | "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", 1159 | "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", 1160 | "dev": true, 1161 | "requires": { 1162 | "debug": "2.6.9", 1163 | "depd": "~1.1.2", 1164 | "destroy": "~1.0.4", 1165 | "encodeurl": "~1.0.2", 1166 | "escape-html": "~1.0.3", 1167 | "etag": "~1.8.1", 1168 | "fresh": "0.5.2", 1169 | "http-errors": "~1.6.2", 1170 | "mime": "1.4.1", 1171 | "ms": "2.0.0", 1172 | "on-finished": "~2.3.0", 1173 | "range-parser": "~1.2.0", 1174 | "statuses": "~1.4.0" 1175 | }, 1176 | "dependencies": { 1177 | "debug": { 1178 | "version": "2.6.9", 1179 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1180 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1181 | "dev": true, 1182 | "requires": { 1183 | "ms": "2.0.0" 1184 | } 1185 | }, 1186 | "http-errors": { 1187 | "version": "1.6.3", 1188 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", 1189 | "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", 1190 | "dev": true, 1191 | "requires": { 1192 | "depd": "~1.1.2", 1193 | "inherits": "2.0.3", 1194 | "setprototypeof": "1.1.0", 1195 | "statuses": ">= 1.4.0 < 2" 1196 | } 1197 | }, 1198 | "inherits": { 1199 | "version": "2.0.3", 1200 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1201 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 1202 | "dev": true 1203 | }, 1204 | "setprototypeof": { 1205 | "version": "1.1.0", 1206 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", 1207 | "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", 1208 | "dev": true 1209 | }, 1210 | "statuses": { 1211 | "version": "1.4.0", 1212 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", 1213 | "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", 1214 | "dev": true 1215 | } 1216 | } 1217 | }, 1218 | "serve-index": { 1219 | "version": "1.9.1", 1220 | "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", 1221 | "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", 1222 | "dev": true, 1223 | "requires": { 1224 | "accepts": "~1.3.4", 1225 | "batch": "0.6.1", 1226 | "debug": "2.6.9", 1227 | "escape-html": "~1.0.3", 1228 | "http-errors": "~1.6.2", 1229 | "mime-types": "~2.1.17", 1230 | "parseurl": "~1.3.2" 1231 | }, 1232 | "dependencies": { 1233 | "debug": { 1234 | "version": "2.6.9", 1235 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1236 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1237 | "dev": true, 1238 | "requires": { 1239 | "ms": "2.0.0" 1240 | } 1241 | }, 1242 | "http-errors": { 1243 | "version": "1.6.3", 1244 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", 1245 | "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", 1246 | "dev": true, 1247 | "requires": { 1248 | "depd": "~1.1.2", 1249 | "inherits": "2.0.3", 1250 | "setprototypeof": "1.1.0", 1251 | "statuses": ">= 1.4.0 < 2" 1252 | } 1253 | }, 1254 | "inherits": { 1255 | "version": "2.0.3", 1256 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1257 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 1258 | "dev": true 1259 | }, 1260 | "setprototypeof": { 1261 | "version": "1.1.0", 1262 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", 1263 | "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", 1264 | "dev": true 1265 | }, 1266 | "statuses": { 1267 | "version": "1.5.0", 1268 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 1269 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", 1270 | "dev": true 1271 | } 1272 | } 1273 | }, 1274 | "serve-static": { 1275 | "version": "1.13.2", 1276 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", 1277 | "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", 1278 | "dev": true, 1279 | "requires": { 1280 | "encodeurl": "~1.0.2", 1281 | "escape-html": "~1.0.3", 1282 | "parseurl": "~1.3.2", 1283 | "send": "0.16.2" 1284 | } 1285 | }, 1286 | "server-destroy": { 1287 | "version": "1.0.1", 1288 | "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", 1289 | "integrity": "sha1-8Tv5KOQrnD55OD5hzDmYtdFObN0=", 1290 | "dev": true 1291 | }, 1292 | "set-blocking": { 1293 | "version": "2.0.0", 1294 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 1295 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", 1296 | "dev": true 1297 | }, 1298 | "setprototypeof": { 1299 | "version": "1.1.1", 1300 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", 1301 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", 1302 | "dev": true 1303 | }, 1304 | "socket.io": { 1305 | "version": "2.1.1", 1306 | "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.1.1.tgz", 1307 | "integrity": "sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==", 1308 | "dev": true, 1309 | "requires": { 1310 | "debug": "~3.1.0", 1311 | "engine.io": "~3.2.0", 1312 | "has-binary2": "~1.0.2", 1313 | "socket.io-adapter": "~1.1.0", 1314 | "socket.io-client": "2.1.1", 1315 | "socket.io-parser": "~3.2.0" 1316 | }, 1317 | "dependencies": { 1318 | "base64-arraybuffer": { 1319 | "version": "0.1.5", 1320 | "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", 1321 | "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", 1322 | "dev": true 1323 | }, 1324 | "component-emitter": { 1325 | "version": "1.2.1", 1326 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", 1327 | "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", 1328 | "dev": true 1329 | }, 1330 | "engine.io-client": { 1331 | "version": "3.2.1", 1332 | "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz", 1333 | "integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==", 1334 | "dev": true, 1335 | "requires": { 1336 | "component-emitter": "1.2.1", 1337 | "component-inherit": "0.0.3", 1338 | "debug": "~3.1.0", 1339 | "engine.io-parser": "~2.1.1", 1340 | "has-cors": "1.1.0", 1341 | "indexof": "0.0.1", 1342 | "parseqs": "0.0.5", 1343 | "parseuri": "0.0.5", 1344 | "ws": "~3.3.1", 1345 | "xmlhttprequest-ssl": "~1.5.4", 1346 | "yeast": "0.1.2" 1347 | } 1348 | }, 1349 | "engine.io-parser": { 1350 | "version": "2.1.3", 1351 | "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", 1352 | "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", 1353 | "dev": true, 1354 | "requires": { 1355 | "after": "0.8.2", 1356 | "arraybuffer.slice": "~0.0.7", 1357 | "base64-arraybuffer": "0.1.5", 1358 | "blob": "0.0.5", 1359 | "has-binary2": "~1.0.2" 1360 | } 1361 | }, 1362 | "parseqs": { 1363 | "version": "0.0.5", 1364 | "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", 1365 | "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", 1366 | "dev": true, 1367 | "requires": { 1368 | "better-assert": "~1.0.0" 1369 | } 1370 | }, 1371 | "parseuri": { 1372 | "version": "0.0.5", 1373 | "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", 1374 | "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", 1375 | "dev": true, 1376 | "requires": { 1377 | "better-assert": "~1.0.0" 1378 | } 1379 | }, 1380 | "socket.io-client": { 1381 | "version": "2.1.1", 1382 | "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.1.tgz", 1383 | "integrity": "sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==", 1384 | "dev": true, 1385 | "requires": { 1386 | "backo2": "1.0.2", 1387 | "base64-arraybuffer": "0.1.5", 1388 | "component-bind": "1.0.0", 1389 | "component-emitter": "1.2.1", 1390 | "debug": "~3.1.0", 1391 | "engine.io-client": "~3.2.0", 1392 | "has-binary2": "~1.0.2", 1393 | "has-cors": "1.1.0", 1394 | "indexof": "0.0.1", 1395 | "object-component": "0.0.3", 1396 | "parseqs": "0.0.5", 1397 | "parseuri": "0.0.5", 1398 | "socket.io-parser": "~3.2.0", 1399 | "to-array": "0.1.4" 1400 | } 1401 | }, 1402 | "socket.io-parser": { 1403 | "version": "3.2.0", 1404 | "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz", 1405 | "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==", 1406 | "dev": true, 1407 | "requires": { 1408 | "component-emitter": "1.2.1", 1409 | "debug": "~3.1.0", 1410 | "isarray": "2.0.1" 1411 | } 1412 | }, 1413 | "ws": { 1414 | "version": "3.3.3", 1415 | "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", 1416 | "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", 1417 | "dev": true, 1418 | "requires": { 1419 | "async-limiter": "~1.0.0", 1420 | "safe-buffer": "~5.1.0", 1421 | "ultron": "~1.1.0" 1422 | } 1423 | } 1424 | } 1425 | }, 1426 | "socket.io-adapter": { 1427 | "version": "1.1.2", 1428 | "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz", 1429 | "integrity": "sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g==", 1430 | "dev": true 1431 | }, 1432 | "socket.io-client": { 1433 | "version": "2.3.1", 1434 | "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.3.1.tgz", 1435 | "integrity": "sha512-YXmXn3pA8abPOY//JtYxou95Ihvzmg8U6kQyolArkIyLd0pgVhrfor/iMsox8cn07WCOOvvuJ6XKegzIucPutQ==", 1436 | "dev": true, 1437 | "requires": { 1438 | "backo2": "1.0.2", 1439 | "component-bind": "1.0.0", 1440 | "component-emitter": "~1.3.0", 1441 | "debug": "~3.1.0", 1442 | "engine.io-client": "~3.4.0", 1443 | "has-binary2": "~1.0.2", 1444 | "indexof": "0.0.1", 1445 | "parseqs": "0.0.6", 1446 | "parseuri": "0.0.6", 1447 | "socket.io-parser": "~3.3.0", 1448 | "to-array": "0.1.4" 1449 | } 1450 | }, 1451 | "socket.io-parser": { 1452 | "version": "3.3.1", 1453 | "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.1.tgz", 1454 | "integrity": "sha512-1QLvVAe8dTz+mKmZ07Swxt+LAo4Y1ff50rlyoEx00TQmDFVQYPfcqGvIDJLGaBdhdNCecXtyKpD+EgKGcmmbuQ==", 1455 | "dev": true, 1456 | "requires": { 1457 | "component-emitter": "~1.3.0", 1458 | "debug": "~3.1.0", 1459 | "isarray": "2.0.1" 1460 | } 1461 | }, 1462 | "statuses": { 1463 | "version": "1.3.1", 1464 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", 1465 | "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", 1466 | "dev": true 1467 | }, 1468 | "stream-throttle": { 1469 | "version": "0.1.3", 1470 | "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz", 1471 | "integrity": "sha1-rdV8jXzHOoFjDTHNVdOWHPr7qcM=", 1472 | "dev": true, 1473 | "requires": { 1474 | "commander": "^2.2.0", 1475 | "limiter": "^1.0.5" 1476 | } 1477 | }, 1478 | "string-width": { 1479 | "version": "3.1.0", 1480 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 1481 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 1482 | "dev": true, 1483 | "requires": { 1484 | "emoji-regex": "^7.0.1", 1485 | "is-fullwidth-code-point": "^2.0.0", 1486 | "strip-ansi": "^5.1.0" 1487 | }, 1488 | "dependencies": { 1489 | "ansi-regex": { 1490 | "version": "4.1.0", 1491 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 1492 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 1493 | "dev": true 1494 | }, 1495 | "strip-ansi": { 1496 | "version": "5.2.0", 1497 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 1498 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 1499 | "dev": true, 1500 | "requires": { 1501 | "ansi-regex": "^4.1.0" 1502 | } 1503 | } 1504 | } 1505 | }, 1506 | "strip-ansi": { 1507 | "version": "3.0.1", 1508 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 1509 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 1510 | "dev": true, 1511 | "requires": { 1512 | "ansi-regex": "^2.0.0" 1513 | } 1514 | }, 1515 | "supports-color": { 1516 | "version": "2.0.0", 1517 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 1518 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 1519 | "dev": true 1520 | }, 1521 | "symbol-observable": { 1522 | "version": "1.0.1", 1523 | "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", 1524 | "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", 1525 | "dev": true 1526 | }, 1527 | "tfunk": { 1528 | "version": "4.0.0", 1529 | "resolved": "https://registry.npmjs.org/tfunk/-/tfunk-4.0.0.tgz", 1530 | "integrity": "sha512-eJQ0dGfDIzWNiFNYFVjJ+Ezl/GmwHaFTBTjrtqNPW0S7cuVDBrZrmzUz6VkMeCR4DZFqhd4YtLwsw3i2wYHswQ==", 1531 | "dev": true, 1532 | "requires": { 1533 | "chalk": "^1.1.3", 1534 | "dlv": "^1.1.3" 1535 | } 1536 | }, 1537 | "to-array": { 1538 | "version": "0.1.4", 1539 | "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", 1540 | "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", 1541 | "dev": true 1542 | }, 1543 | "to-regex-range": { 1544 | "version": "5.0.1", 1545 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1546 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1547 | "dev": true, 1548 | "requires": { 1549 | "is-number": "^7.0.0" 1550 | } 1551 | }, 1552 | "toidentifier": { 1553 | "version": "1.0.0", 1554 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", 1555 | "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", 1556 | "dev": true 1557 | }, 1558 | "ua-parser-js": { 1559 | "version": "0.7.22", 1560 | "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.22.tgz", 1561 | "integrity": "sha512-YUxzMjJ5T71w6a8WWVcMGM6YWOTX27rCoIQgLXiWaxqXSx9D7DNjiGWn1aJIRSQ5qr0xuhra77bSIh6voR/46Q==", 1562 | "dev": true 1563 | }, 1564 | "ultron": { 1565 | "version": "1.1.1", 1566 | "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", 1567 | "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", 1568 | "dev": true 1569 | }, 1570 | "universalify": { 1571 | "version": "0.1.2", 1572 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", 1573 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", 1574 | "dev": true 1575 | }, 1576 | "unpipe": { 1577 | "version": "1.0.0", 1578 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 1579 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", 1580 | "dev": true 1581 | }, 1582 | "utils-merge": { 1583 | "version": "1.0.1", 1584 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 1585 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", 1586 | "dev": true 1587 | }, 1588 | "which-module": { 1589 | "version": "2.0.0", 1590 | "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", 1591 | "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", 1592 | "dev": true 1593 | }, 1594 | "wrap-ansi": { 1595 | "version": "5.1.0", 1596 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", 1597 | "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", 1598 | "dev": true, 1599 | "requires": { 1600 | "ansi-styles": "^3.2.0", 1601 | "string-width": "^3.0.0", 1602 | "strip-ansi": "^5.0.0" 1603 | }, 1604 | "dependencies": { 1605 | "ansi-regex": { 1606 | "version": "4.1.0", 1607 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 1608 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 1609 | "dev": true 1610 | }, 1611 | "ansi-styles": { 1612 | "version": "3.2.1", 1613 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 1614 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 1615 | "dev": true, 1616 | "requires": { 1617 | "color-convert": "^1.9.0" 1618 | } 1619 | }, 1620 | "strip-ansi": { 1621 | "version": "5.2.0", 1622 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 1623 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 1624 | "dev": true, 1625 | "requires": { 1626 | "ansi-regex": "^4.1.0" 1627 | } 1628 | } 1629 | } 1630 | }, 1631 | "ws": { 1632 | "version": "6.1.4", 1633 | "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz", 1634 | "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==", 1635 | "dev": true, 1636 | "requires": { 1637 | "async-limiter": "~1.0.0" 1638 | } 1639 | }, 1640 | "xmlhttprequest-ssl": { 1641 | "version": "1.5.5", 1642 | "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", 1643 | "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", 1644 | "dev": true 1645 | }, 1646 | "y18n": { 1647 | "version": "4.0.1", 1648 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", 1649 | "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", 1650 | "dev": true 1651 | }, 1652 | "yargs": { 1653 | "version": "15.4.1", 1654 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", 1655 | "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", 1656 | "dev": true, 1657 | "requires": { 1658 | "cliui": "^6.0.0", 1659 | "decamelize": "^1.2.0", 1660 | "find-up": "^4.1.0", 1661 | "get-caller-file": "^2.0.1", 1662 | "require-directory": "^2.1.1", 1663 | "require-main-filename": "^2.0.0", 1664 | "set-blocking": "^2.0.0", 1665 | "string-width": "^4.2.0", 1666 | "which-module": "^2.0.0", 1667 | "y18n": "^4.0.0", 1668 | "yargs-parser": "^18.1.2" 1669 | }, 1670 | "dependencies": { 1671 | "ansi-regex": { 1672 | "version": "5.0.0", 1673 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", 1674 | "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", 1675 | "dev": true 1676 | }, 1677 | "ansi-styles": { 1678 | "version": "4.3.0", 1679 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1680 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1681 | "dev": true, 1682 | "requires": { 1683 | "color-convert": "^2.0.1" 1684 | } 1685 | }, 1686 | "cliui": { 1687 | "version": "6.0.0", 1688 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", 1689 | "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", 1690 | "dev": true, 1691 | "requires": { 1692 | "string-width": "^4.2.0", 1693 | "strip-ansi": "^6.0.0", 1694 | "wrap-ansi": "^6.2.0" 1695 | } 1696 | }, 1697 | "color-convert": { 1698 | "version": "2.0.1", 1699 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1700 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1701 | "dev": true, 1702 | "requires": { 1703 | "color-name": "~1.1.4" 1704 | } 1705 | }, 1706 | "color-name": { 1707 | "version": "1.1.4", 1708 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1709 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1710 | "dev": true 1711 | }, 1712 | "emoji-regex": { 1713 | "version": "8.0.0", 1714 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1715 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 1716 | "dev": true 1717 | }, 1718 | "find-up": { 1719 | "version": "4.1.0", 1720 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", 1721 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", 1722 | "dev": true, 1723 | "requires": { 1724 | "locate-path": "^5.0.0", 1725 | "path-exists": "^4.0.0" 1726 | } 1727 | }, 1728 | "is-fullwidth-code-point": { 1729 | "version": "3.0.0", 1730 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1731 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1732 | "dev": true 1733 | }, 1734 | "locate-path": { 1735 | "version": "5.0.0", 1736 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", 1737 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", 1738 | "dev": true, 1739 | "requires": { 1740 | "p-locate": "^4.1.0" 1741 | } 1742 | }, 1743 | "p-locate": { 1744 | "version": "4.1.0", 1745 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", 1746 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", 1747 | "dev": true, 1748 | "requires": { 1749 | "p-limit": "^2.2.0" 1750 | } 1751 | }, 1752 | "path-exists": { 1753 | "version": "4.0.0", 1754 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 1755 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 1756 | "dev": true 1757 | }, 1758 | "string-width": { 1759 | "version": "4.2.0", 1760 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", 1761 | "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", 1762 | "dev": true, 1763 | "requires": { 1764 | "emoji-regex": "^8.0.0", 1765 | "is-fullwidth-code-point": "^3.0.0", 1766 | "strip-ansi": "^6.0.0" 1767 | } 1768 | }, 1769 | "strip-ansi": { 1770 | "version": "6.0.0", 1771 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 1772 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 1773 | "dev": true, 1774 | "requires": { 1775 | "ansi-regex": "^5.0.0" 1776 | } 1777 | }, 1778 | "wrap-ansi": { 1779 | "version": "6.2.0", 1780 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", 1781 | "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", 1782 | "dev": true, 1783 | "requires": { 1784 | "ansi-styles": "^4.0.0", 1785 | "string-width": "^4.1.0", 1786 | "strip-ansi": "^6.0.0" 1787 | } 1788 | }, 1789 | "yargs-parser": { 1790 | "version": "18.1.3", 1791 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", 1792 | "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", 1793 | "dev": true, 1794 | "requires": { 1795 | "camelcase": "^5.0.0", 1796 | "decamelize": "^1.2.0" 1797 | } 1798 | } 1799 | } 1800 | }, 1801 | "yargs-parser": { 1802 | "version": "13.1.2", 1803 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", 1804 | "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", 1805 | "dev": true, 1806 | "requires": { 1807 | "camelcase": "^5.0.0", 1808 | "decamelize": "^1.2.0" 1809 | } 1810 | }, 1811 | "yeast": { 1812 | "version": "0.1.2", 1813 | "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", 1814 | "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", 1815 | "dev": true 1816 | } 1817 | } 1818 | } 1819 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "css-grid", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "start": "run-script-os", 8 | "start:win32": "browser-sync start --server --files '**/*.css, **/*.html, **/*.js, !node_modules/**/*' --directory --port 7777 --browser \"C:\\Program Files\\Firefox Developer Edition\\firefox.exe\"", 9 | "//": "Hello! If you are having trouble running this command. Try changing Firefox Developer Edition to FirefoxDeveloperEdition", 10 | "start:darwin:linux": "browser-sync start --server --files '**/*.css, **/*.html, **/*.js, !node_modules/**/*' --directory --port 7777 --browser 'Firefox Developer Edition'" 11 | }, 12 | "author": "", 13 | "license": "ISC", 14 | "devDependencies": { 15 | "browser-sync": "^2.26.13", 16 | "run-script-os": "^1.1.5" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | ![](https://res.cloudinary.com/wesbos/image/upload/v1515524452/GRID-social-share_wlfzk3.png) 2 | 3 | # CSS Grid Video Course 4 | 5 | Hey! These are the starter files and finished solutions. Grab the full course over at [CSSGrid.io](https://CSSGrid.io). 6 | 7 | ## Course FAQ 8 | 9 | ### Q: I'm getting "This is meant to be run from within npm script." 10 | 11 | Not sure why this is happening, but try these commands instead: 12 | 13 | **windows:** `npm run start:win32` 14 | 15 | **mac and linux:** `start:darwin:linux` 16 | 17 | Very few people get this, but please contact me if you find out why `npm start` command isn't running. 18 | 19 | ### Q: I'm getting Browsersync Couldn't open browser (if you are using BrowserSync in a headless environment, you might want to set the open option to false) 20 | 21 | This is because some versions of Firefox are "FirefoxDeveloperEdition" and some new downloads are "Firefox Developer Edition". If you had downloaded the browser before the course, just remove the spaces from the package.json command so it says "FirefoxDeveloperEdition" 22 | 23 | ### Q: I can't see the lines / numbers of Firefox' CSS Grid Inspection Tools 24 | 25 | Make sure to turn off both "Use recommended performance settings" & "Use hardware acceleration when available“ within Preferences > Performance 26 | 27 | ## Community CSS Grid Content 28 | 29 | Feel free to submit a PR adding a link to your own recaps, guides or reviews! 30 | 31 | * [Course Review](https://www.bencodezen.io/blog/review-css-grid-with-wes-bos/) by [@bencodezen](https://www.twitter.com/bencodezen) 32 | * [Recap and lessons learned](https://marcokuehbauch.com/blog/learning-css-grid/) by [@mkuehb](https://twitter.com/Mkuehb) 33 | * [cssgrid.io course review](https://krzysztofzuraw.com/blog/2020/css-grid-io-course) by [@krzysztof_zuraw](https://twitter.com/krzysztof_zuraw) 34 | * My [gh-page](https://herminiotorres.github.io/cssgrid) by [@herminiotorres](https://twitter.com/herminiotorres) 35 | 36 | ## A note on Pull Requests 37 | 38 | These are meant to be 1:1 copies of what is done in the video. If you found a better / different way to do things, great, but I will be keeping them the same as the videos. 39 | 40 | The starter files + solutions will be updated if/when the videos are updated. 41 | 42 | Thanks! 43 | 44 | ## Live editable examples 45 | 46 | I recommend you use the files in the repo, but if you prefer to use JSFiddle instead, here are all the starter files ready to go: 47 | 48 | 02. [Starter Files and Tooling Setup](https://jsfiddle.net/6qvwur9q/) 49 | 03. [CSS Grid Fundamentals](https://jsfiddle.net/qxxpgg4j/) 50 | 04. [CSS Grid Dev Tools](https://jsfiddle.net/b55x8vh2/) 51 | 05. [CSS Grid Implicit vs Explicit Tracks](https://jsfiddle.net/mon8xdgb/) 52 | 06. [CSS grid-auto-flow Explained](https://jsfiddle.net/Loq4uj16/) 53 | 07. [Sizing tracks in CSS Grid](https://jsfiddle.net/q8h3r8yb/) 54 | 08. [CSS Grid repeat function](https://jsfiddle.net/8f8xyx86/) 55 | 09. [Sizing Grid Items](https://jsfiddle.net/wqs6tcuk/) 56 | 10. [Placing Grid Items](https://jsfiddle.net/hs5xhvpp/) 57 | 11. [Spanning and Placing Cardio](https://jsfiddle.net/2z7z6o9k/) 58 | 12. [auto-fit and auto-fill](https://jsfiddle.net/d1pLngzx/) 59 | 13. [Using minmax() for Responsive Grids](https://jsfiddle.net/xthszm2j/) 60 | 14. Grid Template Areas: 61 | - [Area Line Names](https://jsfiddle.net/tkyxomht/) 62 | - [Areas](https://jsfiddle.net/p0sn7L7v/) 63 | 15. [Naming Lines in CSS Grid](https://jsfiddle.net/ygpmn0xh/) 64 | 16. [grid-auto-flow dense Block Fitting](https://jsfiddle.net/sxj83p70/) 65 | 17. [CSS Grid Alignment + Centering](https://jsfiddle.net/eyL9a2gv/) 66 | 18. [Re-ordering Grid Items](https://jsfiddle.net/uscf9mk0/) 67 | 19. [Nesting Grid with Album Layouts](https://jsfiddle.net/yn7jak0y/) 68 | 20. [CSS Grid Image Gallery](https://jsfiddle.net/cbjzped2/) 69 | 21. Flexbox vs CSS Grid: 70 | - [Axis Flipping](https://jsfiddle.net/pt8hym9s/) 71 | - [Controls on Right](https://jsfiddle.net/4o7gavuj/) 72 | - [Flex on Item](https://jsfiddle.net/1u264ftd/) 73 | - [Perfectly Centered](https://jsfiddle.net/sgbrtrjo/) 74 | - [Self Control](https://jsfiddle.net/c6gg8pkn/) 75 | - [Stacked Layout](https://jsfiddle.net/mnfm1sw0/) 76 | - [Unknown Content Size](https://jsfiddle.net/4ze02bkj/) 77 | - [Unknown Number of Items](https://jsfiddle.net/Lg7r3jmy/) 78 | - [Variable Widths on Each Row](https://jsfiddle.net/qymhootd/) 79 | 22. [Recreating Codepen](https://jsfiddle.net/br6n54qt/) 80 | 23. [Bootstrappy Grid with CSS Variables](https://jsfiddle.net/gLLht2hd/) 81 | 24. [Responsive Website](https://jsfiddle.net/bh16ofp8/) 82 | 25. [Full Bleed Blog Layout](https://jsfiddle.net/j8w6v3mh/) 83 | --------------------------------------------------------------------------------