├── .vscode └── settings.json ├── Bee ├── index.css └── index.html ├── CSSBattel ├── index.css ├── index.html └── song.mp3 ├── DOGMAKEOVER ├── bg.jpg ├── bg1.jpg ├── dog-01.png ├── eyes-01.png ├── eyes-02.png ├── eyes-03.png ├── eyes-04.png ├── glasses-01.png ├── glasses-02.png ├── hats-01.png ├── hats-02.png ├── hats-03.png ├── index.css ├── index.html ├── index.js ├── mouth-01.png ├── mouth-02.png ├── mouth-03.png └── mouth-04.png ├── Diwali ├── index.css └── index.html ├── Ferb Illustration ├── index.css └── index.html ├── PUMPKIN ├── Momos.html ├── index.css └── index.html ├── README.md ├── SHEEP └── index.html ├── bird ├── index.css └── index.html ├── cake.html ├── candle ├── index.css ├── index.html └── rain.png ├── cat.html ├── edit.js ├── egg.html ├── frog.html ├── handingImages ├── index.css └── index.html ├── icecream.html ├── image1.png ├── index.html ├── package-lock.json ├── package.json ├── sanak.js ├── script.js ├── script1.js ├── script2.js ├── script3.js ├── script4.js ├── sketch.js ├── sketch1.js ├── snake.js ├── snow.html ├── solar ├── index.css └── index.html ├── style.css └── sunset ├── building.png ├── index.css └── index.html /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "liveServer.settings.port": 5501 3 | } -------------------------------------------------------------------------------- /Bee/index.css: -------------------------------------------------------------------------------- 1 | *, 2 | *::before, 3 | *::after{ 4 | padding: 0; 5 | margin: 0; 6 | box-sizing: border-box; 7 | } 8 | body{ 9 | 10 | background-color: rgb(19, 78, 50); 11 | } 12 | .bee{ 13 | height: 100px; 14 | width: 270px; 15 | position: absolute; 16 | margin: auto; 17 | left: 0; 18 | right: 0; 19 | top: 0; 20 | bottom:-150px; 21 | border-radius:50px; 22 | background-color: rgba(255,255,255,0.5); 23 | 24 | 25 | } 26 | .bee::before{ 27 | position: absolute; 28 | content: ""; 29 | height: 200px; 30 | width: 140px; 31 | background: linear-gradient( 32 | #ffec02 70%, 33 | #202020 70%, 34 | #202020 75%, 35 | #ffec02 75%, 36 | #ffec02 80%, 37 | #202020 80%, 38 | #202020 85%, 39 | #ffec02 85%, 40 | #ffec02 90%, 41 | #202020 90%, 42 | #202020 95%, 43 | #ffec02 95%); 44 | border-radius: 70px; 45 | left: 65px; 46 | bottom: -45px; 47 | } 48 | .eye, 49 | .eye::before{ 50 | position: absolute; 51 | height: 13.5px; 52 | width: 25px; 53 | border: 7px solid #202020; 54 | border-radius:20px 20px 0 0 ; 55 | bottom: 95px; 56 | border-bottom: none; 57 | } 58 | .eye{ 59 | left: 98px; 60 | } 61 | .eye::before{ 62 | content: ""; 63 | bottom: 0; 64 | left: 40px; 65 | } 66 | .antenna, 67 | .antenna::before{ 68 | position: absolute; 69 | height: 50px; 70 | width: 8px; 71 | background-color: #202020; 72 | } 73 | 74 | .antenna::before{ 75 | content: ""; 76 | right: 55px; 77 | top: 25px; 78 | transform: rotate(-50deg); 79 | } 80 | .antenna{ 81 | left: 164px; 82 | bottom: 130px; 83 | transform: rotate(25deg); 84 | z-index: -1; 85 | } 86 | .antenna::after{ 87 | position: absolute; 88 | content: ""; 89 | height: 20px; 90 | width: 20px; 91 | background-color:#202020; 92 | border-radius:50%; 93 | left:-6px; 94 | bottom: 40px; 95 | box-shadow: -72px 35px #202020; 96 | 97 | } 98 | .mouth{ 99 | position: absolute; 100 | height: 40px; 101 | width: 80px; 102 | background: radial-gradient(circle at 50% 100%, 103 | #ef072e 15px , #202020 16px); 104 | top: 20px; 105 | left: 93px; 106 | border-radius: 0 0 40px 40px; 107 | } 108 | .mouth::before{ 109 | position: absolute; 110 | content: ""; 111 | height: 10px; 112 | width: 50px; 113 | background-color: #ffffff; 114 | left: 14px; 115 | top:-0.5px; 116 | } -------------------------------------------------------------------------------- /Bee/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Bee Css-Art 8 | 9 | 10 | 11 |
12 |
13 |
14 |
15 |
16 | 17 | -------------------------------------------------------------------------------- /CSSBattel/index.css: -------------------------------------------------------------------------------- 1 | .white-keys{ 2 | display: flex; 3 | gap: 5px; 4 | align-items: stretch; 5 | background-color: black; 6 | padding: 1rem; 7 | height: 100px; 8 | position: absolute; 9 | top: 33%; 10 | padding: 5px; 11 | border-radius: 5px; 12 | padding-top: 35px; 13 | left: 112px; 14 | } 15 | 16 | .black-keys{ 17 | position: absolute; 18 | 19 | height: 50px; 20 | top: 38%; 21 | left: 132px; 22 | display: flex; 23 | gap: 10px; 24 | align-items: stretch; 25 | } 26 | 27 | 28 | .white{ 29 | background: white; 30 | width: 20px; 31 | border-radius: 5px; 32 | /* height: 30px; */ 33 | 34 | } 35 | .black{ 36 | background: black; 37 | width: 15px; 38 | 39 | /* border-radius: 5px; */ 40 | /* height: 30px; */ 41 | 42 | } 43 | 44 | .empty{ 45 | background: none ; 46 | } 47 | .black1{ 48 | background: black; 49 | width: 15px; 50 | animation: anim 5s infinite; 51 | } 52 | 53 | @keyframes anim { 54 | 0%{ 55 | background: none; 56 | 57 | } 58 | 10%{ 59 | background:black; 60 | } 61 | 20%{ 62 | background:none; 63 | } 64 | 40%{ 65 | background: none; 66 | } 67 | 60%{ 68 | background: black; 69 | } 70 | 80%{ 71 | background: none; 72 | } 73 | 100%{ 74 | background: black; 75 | } 76 | } 77 | .wrapper { 78 | display: flex; 79 | justify-content: center; 80 | align-items: center; 81 | height: 100vh; 82 | background-color: yellow; 83 | } 84 | 85 | *{ 86 | box-sizing: border-box; 87 | 88 | } 89 | 90 | .black2{ 91 | background: black; 92 | width: 15px; 93 | animation: anim2 5s infinite; 94 | } 95 | 96 | @keyframes anim2 { 97 | 10%{ 98 | background: none; 99 | 100 | } 101 | 20%{ 102 | background:black; 103 | } 104 | 30%{ 105 | background:none; 106 | } 107 | 50%{ 108 | background: black; 109 | } 110 | 60%{ 111 | background: black; 112 | } 113 | 80%{ 114 | background: none; 115 | } 116 | 90%{ 117 | background: black; 118 | } 119 | 100%{ 120 | background: black; 121 | } 122 | } 123 | 124 | .black3{ 125 | background: black; 126 | width: 15px; 127 | animation: anim3 5s infinite; 128 | } 129 | 130 | @keyframes anim3 { 131 | 0%{ 132 | background: none; 133 | 134 | } 135 | 50%{ 136 | background:black; 137 | } 138 | 139 | 100%{ 140 | background: black; 141 | } 142 | } 143 | 144 | .black4{ 145 | background: black; 146 | width: 15px; 147 | animation: anim4 5s infinite; 148 | } 149 | 150 | @keyframes anim4 { 151 | 0%{ 152 | background: none; 153 | 154 | } 155 | 15%{ 156 | background:black; 157 | } 158 | 159 | 30%{ 160 | background:none 161 | } 162 | 45%{ 163 | background: black; 164 | } 165 | 60%{ 166 | background: none; 167 | } 168 | 75%{ 169 | background: black; 170 | } 171 | 90%{ 172 | background: none; 173 | } 174 | } -------------------------------------------------------------------------------- /CSSBattel/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | CSS BATTEL 8 | 9 | 10 | 11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | 22 |
23 |
24 |
25 |
26 |
27 | 28 |
29 |
30 | 31 |
32 | 33 |
34 | 35 | 36 | 52 | -------------------------------------------------------------------------------- /CSSBattel/song.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chhavi48/Canvas-And-P5.javascript/671dc17699e081bc3ae8622b292294f87d72ba65/CSSBattel/song.mp3 -------------------------------------------------------------------------------- /DOGMAKEOVER/bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chhavi48/Canvas-And-P5.javascript/671dc17699e081bc3ae8622b292294f87d72ba65/DOGMAKEOVER/bg.jpg -------------------------------------------------------------------------------- /DOGMAKEOVER/bg1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chhavi48/Canvas-And-P5.javascript/671dc17699e081bc3ae8622b292294f87d72ba65/DOGMAKEOVER/bg1.jpg -------------------------------------------------------------------------------- /DOGMAKEOVER/dog-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chhavi48/Canvas-And-P5.javascript/671dc17699e081bc3ae8622b292294f87d72ba65/DOGMAKEOVER/dog-01.png -------------------------------------------------------------------------------- /DOGMAKEOVER/eyes-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chhavi48/Canvas-And-P5.javascript/671dc17699e081bc3ae8622b292294f87d72ba65/DOGMAKEOVER/eyes-01.png -------------------------------------------------------------------------------- /DOGMAKEOVER/eyes-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chhavi48/Canvas-And-P5.javascript/671dc17699e081bc3ae8622b292294f87d72ba65/DOGMAKEOVER/eyes-02.png -------------------------------------------------------------------------------- /DOGMAKEOVER/eyes-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chhavi48/Canvas-And-P5.javascript/671dc17699e081bc3ae8622b292294f87d72ba65/DOGMAKEOVER/eyes-03.png -------------------------------------------------------------------------------- /DOGMAKEOVER/eyes-04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chhavi48/Canvas-And-P5.javascript/671dc17699e081bc3ae8622b292294f87d72ba65/DOGMAKEOVER/eyes-04.png -------------------------------------------------------------------------------- /DOGMAKEOVER/glasses-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chhavi48/Canvas-And-P5.javascript/671dc17699e081bc3ae8622b292294f87d72ba65/DOGMAKEOVER/glasses-01.png -------------------------------------------------------------------------------- /DOGMAKEOVER/glasses-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chhavi48/Canvas-And-P5.javascript/671dc17699e081bc3ae8622b292294f87d72ba65/DOGMAKEOVER/glasses-02.png -------------------------------------------------------------------------------- /DOGMAKEOVER/hats-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chhavi48/Canvas-And-P5.javascript/671dc17699e081bc3ae8622b292294f87d72ba65/DOGMAKEOVER/hats-01.png -------------------------------------------------------------------------------- /DOGMAKEOVER/hats-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chhavi48/Canvas-And-P5.javascript/671dc17699e081bc3ae8622b292294f87d72ba65/DOGMAKEOVER/hats-02.png -------------------------------------------------------------------------------- /DOGMAKEOVER/hats-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chhavi48/Canvas-And-P5.javascript/671dc17699e081bc3ae8622b292294f87d72ba65/DOGMAKEOVER/hats-03.png -------------------------------------------------------------------------------- /DOGMAKEOVER/index.css: -------------------------------------------------------------------------------- 1 | * { 2 | padding: 0; 3 | margin: 0; 4 | box-sizing: border-box; 5 | } 6 | body { 7 | background-size:cover; 8 | /* background-position: right; */ 9 | background-repeat: no-repeat; 10 | background-image: url("bg.jpg"); 11 | /* background-color: #b1ea7c; */ 12 | } 13 | .container { 14 | width: 31.25em; 15 | position: absolute; 16 | transform: translateX(10%); 17 | left: 50%; 18 | margin: 1em auto; 19 | /* border: 2px solid black; */ 20 | box-shadow: 0 0 0 0.62em #ffffff, 0 1.25em 3.12em rgb(83, 66, 15, 0.5); 21 | background-color: #ffffff; 22 | border-radius: 0.5em; 23 | } 24 | .dog { 25 | width: 95%; 26 | height: 21.87em; 27 | position: relative; 28 | margin: 1em auto; 29 | display: grid; 30 | place-items: center; 31 | background-color: #ffedb8; 32 | overflow: hidden; 33 | } 34 | .dog img { 35 | position: relative; 36 | height: 18.75em; 37 | bottom: -1.87em; 38 | } 39 | .draggables { 40 | padding: 1em 0; 41 | width: 31.25em; 42 | position: relative; 43 | background-color: #ffffff; 44 | } 45 | .draggables div { 46 | position: relative; 47 | } 48 | [draggable] { 49 | cursor: move; 50 | } 51 | img { 52 | position: absolute; 53 | } 54 | .eyes { 55 | height: 3.75em; 56 | } 57 | .mouths { 58 | height: 3.12em; 59 | } 60 | .glasses { 61 | height: 5em; 62 | } 63 | .hats { 64 | height: 7em; 65 | } 66 | #eye-01, 67 | #mouth-01 { 68 | left: 0.93em; 69 | } 70 | #hat-01 { 71 | left: 5em; 72 | } 73 | #glass-01 { 74 | left: 4.37em; 75 | } 76 | 77 | #eye-02, 78 | #mouth-02 { 79 | left: 8.43em; 80 | } 81 | #hat-02 { 82 | left: 12.5em; 83 | } 84 | #glass-02 { 85 | left: 18.75em; 86 | } 87 | 88 | #eye-03, 89 | #mouth-03 { 90 | left: 15.93em; 91 | } 92 | #hat-03 { 93 | left: 22.5em; 94 | } 95 | 96 | #eye-04, 97 | #mouth-04 { 98 | left: 23.43em; 99 | } -------------------------------------------------------------------------------- /DOGMAKEOVER/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Dog Makeover 6 | 7 | 8 | 9 | 10 |
11 |
12 | 13 |
14 |
15 |
16 | 22 | 28 | 34 | 40 |
41 |
42 | 48 | 54 | 60 | 66 |
67 |
68 | 74 | 80 |
81 |
82 | 88 | 94 | 100 |
101 |
102 |
103 | 104 | 105 | 106 | -------------------------------------------------------------------------------- /DOGMAKEOVER/index.js: -------------------------------------------------------------------------------- 1 | let currele=""; 2 | let initX=0; 3 | let initY=0; 4 | 5 | const isTouch=()=>{ 6 | try{ 7 | document.createEvent("TouchEvent") 8 | return true; 9 | 10 | 11 | 12 | 13 | }catch(e){ 14 | return false; 15 | } 16 | }; 17 | 18 | function dragStart(e){ 19 | initX=isTouch() ? e.touches[0].clientX : 20 | e.clientX; 21 | initY=isTouch() ? e.touches[0].clientY : 22 | e.clientY; 23 | currele=e.target; 24 | 25 | } 26 | function dragover(e){ 27 | e.preventDefault(); 28 | 29 | } 30 | const drop=(e)=>{ 31 | e.preventDefault() 32 | let newX = isTouch() ? e.touches[0].clientX : e.clientX; 33 | let newY = isTouch() ? e.touches[0].clientY : e.clientY; 34 | currele.style.top = 35 | currele.offsetTop-(initY-newY)+"px"; 36 | currele.style.left= 37 | currele.offsetLeft-(initX-newX)+"px"; 38 | }; 39 | 40 | window.onload=()=>{ 41 | currele=""; 42 | let body=document.body; 43 | body.addEventListener('dragstart',dragStart, 44 | false); 45 | body.addEventListener('dragover',dragover, 46 | false); 47 | body.addEventListener('drop',drop, 48 | false); 49 | body.addEventListener('touchstart',dragStart, 50 | false); 51 | body.addEventListener("touchmove", drop, false); 52 | } 53 | -------------------------------------------------------------------------------- /DOGMAKEOVER/mouth-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chhavi48/Canvas-And-P5.javascript/671dc17699e081bc3ae8622b292294f87d72ba65/DOGMAKEOVER/mouth-01.png -------------------------------------------------------------------------------- /DOGMAKEOVER/mouth-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chhavi48/Canvas-And-P5.javascript/671dc17699e081bc3ae8622b292294f87d72ba65/DOGMAKEOVER/mouth-02.png -------------------------------------------------------------------------------- /DOGMAKEOVER/mouth-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chhavi48/Canvas-And-P5.javascript/671dc17699e081bc3ae8622b292294f87d72ba65/DOGMAKEOVER/mouth-03.png -------------------------------------------------------------------------------- /DOGMAKEOVER/mouth-04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chhavi48/Canvas-And-P5.javascript/671dc17699e081bc3ae8622b292294f87d72ba65/DOGMAKEOVER/mouth-04.png -------------------------------------------------------------------------------- /Diwali/index.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css?family=Sacramento'); 2 | 3 | *{ 4 | margin: 0; 5 | padding: 0; 6 | box-sizing: border-box; 7 | 8 | } 9 | body{ 10 | background-color: black; 11 | 12 | font-family: 'Sacramento', cursive; 13 | 14 | } 15 | .top_surface{ 16 | width: 100%; 17 | height: 300px; 18 | position: relative; 19 | top: 0; 20 | 21 | } 22 | .bottom_surface{ 23 | clip-path: ellipse(63% 68% at 50% 28%); 24 | position: absolute; 25 | width: 100%; 26 | height: 100px; 27 | 28 | bottom: -50px; 29 | } 30 | .semi_circle{ 31 | width: 300px; 32 | height: 150px; 33 | border-radius: 0 0 150px 150px; 34 | background-color: #f7d658; 35 | position: absolute; 36 | bottom:-150px; 37 | left: 40%; 38 | } 39 | .top_circle{ 40 | position: absolute; 41 | width: 100%; 42 | height: 100px; 43 | border-radius: 100%; 44 | top: -48px; 45 | background-color: #f35d22; 46 | 47 | } 48 | ul{ 49 | position: relative; 50 | width: 300px; 51 | height: 300px; 52 | border-radius: 100%; 53 | margin-top: -200px; 54 | background-color: #9c9c9c49; 55 | list-style: none; 56 | animation: myfirst 5s linear 2s infinite alternate; 57 | } 58 | @keyframes myfirst { 59 | 0%{ 60 | background-color: #9c9c9c49; 61 | width: 300px; 62 | height: 300px; 63 | margin-top: -200px; 64 | } 65 | 100%{ 66 | background-color: #9c9c9c80; 67 | width: 350px; 68 | height: 350px; 69 | margin-top: -248px; 70 | margin-left: -30px; 71 | } 72 | } 73 | li{ 74 | width: 150px; 75 | height: 150px; 76 | background-color: #9c9c9c49; 77 | list-style: none; 78 | border-radius: 50%; 79 | position: absolute; 80 | } 81 | li:nth-child(1){ 82 | bottom: 70px; 83 | left:30px; 84 | } 85 | li:nth-child(2){ 86 | bottom: 110px; 87 | left:90px; 88 | } 89 | li:nth-child(3){ 90 | bottom: 35px; 91 | left:98px; 92 | } 93 | .outer_flame{ 94 | position: absolute; 95 | width: 150px; 96 | height: 140px; 97 | border-radius: 15px 180px 0px 180px; 98 | top: -38px; 99 | left: -2px; 100 | background-color: #fff; 101 | transform: rotate(44deg); 102 | transform-origin: bottom right; 103 | overflow: hidden; 104 | animation: mysecond 5s linear 2s infinite alternate; 105 | } 106 | @keyframes mysecond { 107 | 0%{ 108 | transform:rotate(30deg); 109 | box-shadow: -10px -7px 10px 10px #f7d758cb; 110 | } 111 | 100%{ 112 | transform:rotate(60deg); 113 | box-shadow: 0px -16px 10px 10px #f7d758cb; 114 | } 115 | } 116 | .inner_flame{ 117 | width: 120px; 118 | height: 60px; 119 | position: absolute; 120 | right: 49px; 121 | border-radius: 79px 0px 80px 2px; 122 | top: 100px; 123 | background-color: #f7d658; 124 | transform: rotate(66deg); 125 | transform-origin: bottom right; 126 | animation: mythird 5s linear 2s infinite alternate; 127 | } 128 | @keyframes mythird { 129 | 0%{ 130 | background: #ffcc00; 131 | box-shadow: 0px 10px 10px 3px #f94d08; 132 | } 133 | 100%{ 134 | background: #ffdd53; 135 | box-shadow: 0px 10px 10px 3px #f94d08; 136 | } 137 | 138 | } 139 | .title{ 140 | font-size:5rem; 141 | color:white; 142 | text-align:center; 143 | text-shadow:0px 2px 1px orange, 144 | 0px 0px 6px orangered,0px 5px 10px rgba(0,0,0,1); 145 | } 146 | 147 | 148 | 149 | 150 | 151 | 152 | .candle { 153 | width: 15em; 154 | height: 30em; 155 | font-size: 7px; 156 | left: 15%; 157 | 158 | background: linear-gradient( 159 | orange, 160 | darkorange, 161 | sienna, 162 | saddlebrown 50%, 163 | rgba(0, 0, 0, 0.6) 164 | ); 165 | box-shadow: 166 | inset 2em -3em 5em rgba(0, 0, 0, 0.4), 167 | inset -2em 0 5em rgba(0, 0, 0, 0.4); 168 | border-radius: 10em / 4em; 169 | position: relative; 170 | display: flex; 171 | justify-content: center; 172 | 173 | } 174 | .candle2 { 175 | width: 15em; 176 | height: 30em; 177 | font-size: 7px; 178 | left: 70%; 179 | 180 | background: linear-gradient( 181 | orange, 182 | darkorange, 183 | sienna, 184 | saddlebrown 50%, 185 | rgba(0, 0, 0, 0.6) 186 | ); 187 | box-shadow: 188 | inset 2em -3em 5em rgba(0, 0, 0, 0.4), 189 | inset -2em 0 5em rgba(0, 0, 0, 0.4); 190 | border-radius: 10em / 4em; 191 | position: relative; 192 | display: flex; 193 | justify-content: center; 194 | top:-200px; 195 | 196 | } 197 | 198 | 199 | .candle::before { 200 | content: ''; 201 | position: absolute; 202 | width: inherit; 203 | height: 5em; 204 | border: 0.2em solid darkorange; 205 | border-radius: 50%; 206 | box-sizing: border-box; 207 | background: radial-gradient( 208 | #444, 209 | orange, 210 | saddlebrown, 211 | sienna, 212 | darkorange 213 | ); 214 | filter: opacity(0.7); 215 | } 216 | 217 | .thread { 218 | position: absolute; 219 | width: 0.6em; 220 | height: 3.6em; 221 | top: -1.8em; 222 | background: linear-gradient( 223 | #111, 224 | black, 225 | orange 90% 226 | ); 227 | border-radius: 40% 40% 0 0; 228 | } 229 | 230 | .flames { 231 | position: absolute; 232 | width: 2.4em; 233 | } 234 | 235 | .flames::before { 236 | content: ''; 237 | position: absolute; 238 | width: inherit; 239 | height: 6em; 240 | background-color: royalblue; 241 | top: -4.8em; 242 | border-radius: 50% 50% 35% 35%; 243 | border: 0.2em solid dodgerblue; 244 | box-sizing: border-box; 245 | filter: opacity(0.7); 246 | } 247 | 248 | .flames::after { 249 | content: ''; 250 | position: absolute; 251 | width: inherit; 252 | height: 12em; 253 | top: -12em; 254 | background: linear-gradient(white 80%, transparent); 255 | border-radius: 50% 50% 20% 20%; 256 | box-shadow: 0 -0.6em 0.4em darkorange; 257 | animation: 258 | enlarge 5s linear infinite, 259 | move 6s linear infinite; 260 | } 261 | 262 | @keyframes move { 263 | 0%, 100% { 264 | transform: rotate(2deg); 265 | } 266 | 267 | 50% { 268 | transform: rotate(-2deg); 269 | } 270 | } 271 | 272 | @keyframes enlarge { 273 | 0%, 100% { 274 | height: 12em; 275 | top: -12em; 276 | } 277 | 278 | 50% { 279 | height: 14em; 280 | top: -13em; 281 | } 282 | } 283 | 284 | .glow { 285 | position: absolute; 286 | width: 10em; 287 | height: 18em; 288 | background-color: orangered; 289 | border-radius: 50%; 290 | top: -17em; 291 | filter: blur(6em); 292 | animation: blink 100ms infinite; 293 | } 294 | 295 | @keyframes blink { 296 | to { 297 | filter: blur(6em) opacity(0.8); 298 | } 299 | } 300 | -------------------------------------------------------------------------------- /Diwali/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Happy Diwali 8 | 9 | 10 | 11 | 12 | 13 | 14 |
Wishing You & Your Family
A Very Happy Diwali!
15 |
16 |
17 |
18 |
19 |
    20 |
  • 21 |
  • 22 |
  • 23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 | 32 | 33 | 34 |
35 | 36 |
37 | 38 | 39 | 40 |
41 | 42 | -------------------------------------------------------------------------------- /Ferb Illustration/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: black; 3 | padding: 0; 4 | margin: 0; 5 | } 6 | .container { 7 | height: 350px; 8 | width: 350px; 9 | position: absolute; 10 | margin: auto; 11 | top: 0; 12 | bottom: 0; 13 | left: 0; 14 | right: 0; 15 | } 16 | .face { 17 | height: 0; 18 | width: 45px; 19 | border-top: 160px solid #fee1c3; 20 | border-left: 5px solid transparent; 21 | border-right: 5px solid transparent; 22 | position: relative; 23 | top: 100px; 24 | left: 140px; 25 | } 26 | .eye1 { 27 | height: 35px; 28 | width: 29px; 29 | background-color: white; 30 | position: relative; 31 | bottom: 146px; 32 | right: 17px; 33 | border-radius: 50%; 34 | border: 1px solid black; 35 | } 36 | .eyeball1 { 37 | background-color: black; 38 | width: 6px; 39 | height: 6px; 40 | border-radius: 50%; 41 | position: relative; 42 | top: 20px; 43 | left: 8px; 44 | } 45 | .nose { 46 | background-color: #fee1c3; 47 | height: 45px; 48 | width: 45px; 49 | position: relative; 50 | right: 32px; 51 | bottom: 152px; 52 | border-radius: 10px 0 0 10px; 53 | } 54 | .ear { 55 | background-color: #fee1c3; 56 | height: 22px; 57 | width: 20px; 58 | position: relative; 59 | bottom: 180px; 60 | left: 42px; 61 | border-radius: 0 20px 20px 0; 62 | } 63 | .lip { 64 | height: 0; 65 | width: 0; 66 | border-bottom: 20px solid #fee1c3; 67 | border-right: 8px solid transparent; 68 | border-left: 8px solid transparent; 69 | position: relative; 70 | bottom: 162px; 71 | right: 7px; 72 | } 73 | .hair { 74 | position: relative; 75 | bottom: 304px; 76 | } 77 | .hair > div:nth-child(1) { 78 | background-color: transparent; 79 | height: 30px; 80 | width: 100px; 81 | border-top: 20px solid #20a44a; 82 | border-radius: 50px 40px 0 0; 83 | position: relative; 84 | right: 38px; 85 | top: 2px; 86 | transform: rotate(-5deg); 87 | } 88 | .hair > div:nth-child(2) { 89 | height: 30px; 90 | width: 40px; 91 | border-top: 10px solid #20a44a; 92 | border-radius: 30px 50px 0 0; 93 | position: relative; 94 | bottom: 33px; 95 | left: 15px; 96 | } 97 | .hair > div:nth-child(3) { 98 | height: 30px; 99 | width: 45px; 100 | border-top: 10px solid #20a44a; 101 | border-radius: 50%; 102 | position: relative; 103 | bottom: 90px; 104 | left: 18px; 105 | transform: rotate(-20deg); 106 | } 107 | .hair > div:nth-child(4) { 108 | height: 30px; 109 | width: 30px; 110 | border-top: 10px solid #20a44a; 111 | border-radius: 50%; 112 | position: relative; 113 | bottom: 147px; 114 | left: 25px; 115 | transform: rotate(-120deg); 116 | } 117 | .hair > div:nth-child(5) { 118 | height: 0px; 119 | width: 0px; 120 | border-top: 50px solid #20a44a; 121 | border-left: 5px solid transparent; 122 | border-right: 5px solid transparent; 123 | position: relative; 124 | bottom: relative; 125 | bottom: 195px; 126 | right: 5px; 127 | transform: rotate(-70deg); 128 | } 129 | .eyer { 130 | background-color: white; 131 | width: 28px; 132 | height: 25px; 133 | position: relative; 134 | bottom: 480px; 135 | border-radius: 50%; 136 | border: 1px solid black; 137 | } 138 | .eyeball2 { 139 | background-color: black; 140 | width: 6px; 141 | height: 6px; 142 | border-radius: 50%; 143 | position: relative; 144 | top: 15px; 145 | left: 8px; 146 | } 147 | -------------------------------------------------------------------------------- /Ferb Illustration/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Ferb Illustration 8 | 9 | 10 | 11 |
12 |
13 |
14 |
15 |
16 | 17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /PUMPKIN/Momos.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Document 8 | 63 | 64 | 65 |
66 | 67 |
68 | 69 | -------------------------------------------------------------------------------- /PUMPKIN/index.css: -------------------------------------------------------------------------------- 1 | body{ 2 | width: 100%; 3 | height: 100%; 4 | background-color: black; 5 | overflow: hidden; 6 | margin-top: 15%; 7 | } 8 | #outer{ 9 | height: 70px; 10 | width: 70px; 11 | border-radius: 50%; 12 | 13 | 14 | 15 | } 16 | @keyframes outerlight { 17 | 0%{ 18 | background-color: #967532; 19 | } 20 | 50%{ 21 | background-color: #bdcf56; 22 | } 23 | 24 | 100%{ 25 | background-color: #e05539; 26 | } 27 | 28 | } 29 | .pumpkin{ 30 | 31 | height: 100%; 32 | z-index: 10; 33 | position: relative; 34 | width: 120px; 35 | height: 100px; 36 | background-color: #f18b36; 37 | border-radius: 70px; 38 | margin: 2em auto; 39 | background-image: linear-gradient( 40 | to right, #f6ad60 50%, 41 | #f18b36 50% 42 | 43 | 44 | ); 45 | box-shadow:-30px 0 0 0 #f38b36, 46 | -50px 0 0 0 #c95927, 47 | 30px 0 0 0 #c95927, 48 | 50px 0 0 0 #97441a; 49 | transform: scaleY(1.5); 50 | 51 | } 52 | .pumpkin::before{ 53 | content: ""; 54 | position: absolute; 55 | 56 | width: 11px; 57 | height: 25px; 58 | top:-25%; 59 | left: 41%; 60 | background-image: linear-gradient(-70deg,#967532 50%, 61 | transparent 50%); 62 | } 63 | .pumpkin::after{ 64 | content: ""; 65 | position: absolute; 66 | width: 11px; 67 | height: 25px; 68 | top:-25%; 69 | left: 50%; 70 | background-color: #7b6200; 71 | } 72 | .eye{ 73 | 74 | width: 25px; 75 | height: 30px; 76 | background:#967532 ; 77 | position: absolute; 78 | top: 10px; 79 | right: 60%; 80 | border-radius: 100% 0 0 50%; 81 | box-shadow: inset 3px 5px 0 rgba(0 ,0, 0, 0.2); 82 | transition: rotate(-15deg); 83 | animation:eyeanim 3s infinite; 84 | } 85 | .eye::after{ 86 | width: 25px; 87 | height: 30px; 88 | background:#967532 ; 89 | position: absolute; 90 | animation:eyeanim 3s infinite; 91 | right: 60%; 92 | border-radius: 100% 0 0 50%; 93 | box-shadow: inset 3px 5px 0 rgba(0 ,0, 0, 0.2); 94 | transform: translateX(63px) scaleX(-1) rotate(-30deg) translateY(2px); 95 | content: ""; 96 | } 97 | .mouth{ 98 | position: absolute; 99 | animation: hasna 0.7s infinite; 100 | width: 90px; 101 | height: 30px; 102 | background-color: #967532; 103 | top: 55%; 104 | left: 50%; 105 | transform: translateX(-50%); 106 | border-radius: 0 0 30px 30px; 107 | box-shadow:inset 4px 4px 0px rgba(0,0,0,0.2); 108 | 109 | } 110 | .mouth::before{ 111 | content: ""; 112 | position: absolute; 113 | top:0; 114 | left: 24%; 115 | width: 1px; 116 | height: 1px; 117 | 118 | border-left: 6px solid transparent; 119 | border-right: 6px solid transparent; 120 | border-top: 13px solid #f6ad60; 121 | ; 122 | 123 | } 124 | .mouth::after{ 125 | content: ""; 126 | position: absolute; 127 | top:0; 128 | right: 24%; 129 | width: 1px; 130 | height: 1px; 131 | 132 | border-left: 6px solid transparent; 133 | border-right: 6px solid transparent; 134 | border-top: 13px solid #f18b36; 135 | ; 136 | 137 | } 138 | .eye, .eye::after { 139 | animation:eyeanim 3s infinite; 140 | } 141 | @keyframes eyeanim{ 142 | 0%{ 143 | background:#a24d13 ; 144 | } 145 | 50%{ 146 | height: 1.5em; 147 | } 148 | 20%{ 149 | background: #967532; 150 | } 151 | 152 | } 153 | @keyframes hasna { 154 | 50%{ 155 | height: 1.5em; 156 | background-color: #a24d13; 157 | } 158 | 159 | } 160 | 161 | 162 | #container { 163 | width: 400px; 164 | height: 400px; 165 | margin-top: -15%; 166 | box-sizing: border-box; 167 | 168 | margin-left: 10%; 169 | } 170 | #container1 { 171 | width: 400px; 172 | height: 400px; 173 | margin-top: -35%; 174 | box-sizing: border-box; 175 | margin-left: 60%; 176 | 177 | } 178 | 179 | *:after, 180 | *:before { 181 | 182 | box-sizing: inherit; 183 | } 184 | 185 | /*body positiong*/ 186 | #ghost { 187 | margin: 10% auto; 188 | width: 70%; 189 | height: 70%; 190 | animation: floaty 2s infinite; 191 | } 192 | 193 | /*ghost body*/ 194 | #ghost #body { 195 | 196 | position: relative; 197 | margin: 50px auto 0; 198 | width: 180px; 199 | height: 220px; 200 | background: white; 201 | border-top-left-radius: 90px; 202 | border-top-right-radius: 90px; 203 | 204 | } 205 | 206 | /*ghost arms*/ 207 | #ghost #body:before, 208 | #ghost #body:after { 209 | content: ''; 210 | position: absolute; 211 | top: 130px; 212 | display: inline-block; 213 | width: 36px; 214 | height: 36px; 215 | border-radius: 50%; 216 | background:white; 217 | animation: floaty .2s infinite; 218 | 219 | 220 | 221 | } 222 | /*left arm*/ 223 | #ghost #body:before{ 224 | left: -18px; 225 | } 226 | /*right arm*/ 227 | #ghost #body:after{ 228 | right: -18px; 229 | } 230 | /*eyes*/ 231 | #ghost #body #eyes { 232 | display: flex; 233 | justify-content: space-between; 234 | margin: 0 auto; 235 | padding: 90px 0 0; 236 | width: 80px; 237 | height: 20px; 238 | } 239 | /*eyes*/ 240 | #ghost #body #eyes:before, 241 | #ghost #body #eyes:after { 242 | content: ''; 243 | display: block; 244 | width: 30px; 245 | height: 20px; 246 | background: black; 247 | border-radius: 50%; 248 | 249 | } 250 | /*mouth*/ 251 | #ghost #body #mouth { 252 | background: black; 253 | margin: 25px auto 0; 254 | width: 60px; 255 | height: 30px; 256 | border-bottom-left-radius: 60px; 257 | border-bottom-right-radius: 30px; 258 | 259 | } 260 | /* ghost legs*/ 261 | #ghost #body #mouth:before{ 262 | content: ''; 263 | display: block; 264 | background: f2bf1; 265 | margin-left: 20px; 266 | width: 10px; 267 | height: 10px; 268 | 269 | } 270 | 271 | #ghost #body #feet { 272 | position: absolute; 273 | display: flex; 274 | bottom: -18px; 275 | width: 180px; 276 | height: 36px; 277 | left: .5px; 278 | } 279 | 280 | /*ghost feet*/ 281 | #ghost #body #feet > * , 282 | #ghost #body #feet:before , 283 | #ghost #body #feet:after { 284 | 285 | content: ''; 286 | width: 36px; 287 | height: 36px; 288 | background:black; 289 | border-radius: 50%; 290 | } 291 | 292 | @keyframes floaty { 293 | 0%, 100% { 294 | transform: translateY(0); 295 | 296 | } 297 | 50%{ 298 | transform: translateY(-20px); 299 | } 300 | } 301 | 302 | @keyframes zoomy { 303 | 0%, 100% { 304 | transform: scale(1); 305 | } 306 | 50% { 307 | transform: scale(0.8); 308 | } 309 | } -------------------------------------------------------------------------------- /PUMPKIN/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Pumpkin 8 | 9 | 10 | 11 |
12 |
13 |
14 |
15 |
16 | 17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 | 34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 | 51 | 52 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Canvas_javascript 2 | let's learn about canvas API 3 |

Canvas

4 |

The Canvas API provides a means for drawing graphics via JavaScript and the HTML

5 | 6 |

What p5.js Is ?

7 |
8 |

Hello!

9 |

10 | p5.js is a JavaScript library for creative coding, with a focus on making coding accessible and inclusive for artists, designers, educators, beginners, and anyone else! p5.js is free and open-source because we believe software, and the tools to learn it, should be accessible to everyone. 11 | 12 | Using the metaphor of a sketch, p5.js has a full set of drawing functionality. However, you’re not limited to your drawing canvas. You can think of your whole browser page as your sketch, including HTML5 objects for text, input, video, webcam, and sound.

13 | 14 |

Coming about p5 shaps

15 | . rect(x,y,height,width)
16 | . ellipse(x,y,height,width)
17 | . line(x1,y1,x2,y2)
18 | . arc(x,y,height,width)
19 | . point(x,y,height,width)
-------------------------------------------------------------------------------- /SHEEP/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | sheep 8 | 149 | 150 | 151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 | 163 | 164 | -------------------------------------------------------------------------------- /bird/index.css: -------------------------------------------------------------------------------- 1 | *, 2 | *:before, 3 | *:after { 4 | padding: 0; 5 | margin: 0; 6 | box-sizing: border-box; 7 | } 8 | body { 9 | background-color: #49befe; 10 | } 11 | .container { 12 | height: 550px; 13 | width: 100vw; 14 | z-index: 1; 15 | overflow: hidden; 16 | position: absolute; 17 | margin: auto; 18 | left: 0; 19 | right: 0; 20 | top: 0; 21 | bottom: 0; 22 | } 23 | .container1 { 24 | height: 550px; 25 | width: 100vw; 26 | z-index: 1; 27 | overflow: hidden; 28 | position: absolute; 29 | 30 | left: -300px; 31 | right: 0; 32 | top: 0; 33 | bottom: 0; 34 | } 35 | .chick { 36 | position: absolute; 37 | height: 300px; 38 | width: 80px; 39 | margin: auto; 40 | left: 0; 41 | right: 0; 42 | top: 260px; 43 | } 44 | .body { 45 | position: absolute; 46 | height: 65px; 47 | width: 100px; 48 | background-color: #ffec02; 49 | border-radius: 100px 100px 0 0; 50 | top: -2px; 51 | animation: body-walk 0.8s infinite; 52 | } 53 | @keyframes body-walk { 54 | 50% { 55 | top: 7px; 56 | } 57 | } 58 | .body:before { 59 | content: ""; 60 | position: absolute; 61 | height: 80px; 62 | width: 150px; 63 | background-color: #ffec02; 64 | top: 65px; 65 | right: 0; 66 | border-radius: 15px 0 150px 150px; 67 | } 68 | .wing { 69 | height: 37px; 70 | width: 74px; 71 | background-color: #ffce00; 72 | position: absolute; 73 | top: 55px; 74 | left: -40px; 75 | border-radius: 10px 10px 74px 74px; 76 | transform-origin: right; 77 | animation: wing 1s infinite; 78 | } 79 | @keyframes wing { 80 | 50% { 81 | transform: rotate(10deg); 82 | } 83 | } 84 | .beak { 85 | position: absolute; 86 | background-color: #f17c00; 87 | height: 40px; 88 | width: 40px; 89 | border-radius: 5px; 90 | top: 30px; 91 | left: 68px; 92 | transform: skewX(30deg) rotate(-25deg); 93 | z-index: -1; 94 | } 95 | .left-leg, 96 | .right-leg { 97 | height: 50px; 98 | width: 13px; 99 | background-color: #f17c00; 100 | position: absolute; 101 | top: 100px; 102 | left: 35px; 103 | transform-origin: top; 104 | transform: rotate(-45deg); 105 | animation: walk 1s infinite; 106 | z-index: -1; 107 | } 108 | .left-leg:before, 109 | .right-leg:before { 110 | content: ""; 111 | position: absolute; 112 | height: 13px; 113 | width: 40px; 114 | background-color: #f17c00; 115 | right: -20px; 116 | top: 50px; 117 | border-radius: 40px; 118 | } 119 | .right-leg { 120 | animation-delay: 0.5s; 121 | } 122 | @keyframes walk { 123 | 33.33% { 124 | transform: translateY(20px) rotate(0deg); 125 | } 126 | 66.66% { 127 | transform: translate(-25px, 10px) rotate(30deg); 128 | } 129 | } 130 | .eye { 131 | background-color: #1c1c1c; 132 | height: 20px; 133 | width: 20px; 134 | position: absolute; 135 | top: 32px; 136 | left: 65px; 137 | border-radius: 20px; 138 | transform-origin: bottom; 139 | animation: blink 2.5s infinite; 140 | } 141 | @keyframes blink { 142 | 30% { 143 | height: 1px; 144 | top: 40px; 145 | } 146 | } 147 | .blush { 148 | background-color: rgba(201, 223, 122, 0.5); 149 | position: absolute; 150 | height: 15px; 151 | width: 15px; 152 | border-radius: 50%; 153 | top: 48px; 154 | left: 46px; 155 | } 156 | .feather { 157 | height: 35px; 158 | width: 12px; 159 | border-radius: 35px; 160 | background-color: #ffec02; 161 | position: absolute; 162 | left: 30px; 163 | top: -20px; 164 | transform: rotate(-15deg); 165 | } 166 | .feather:before { 167 | content: ""; 168 | position: absolute; 169 | height: 25px; 170 | width: 12px; 171 | background-color: #ffec02; 172 | top: 5px; 173 | left: 10px; 174 | border-radius: 25px; 175 | transform: rotate(25deg); 176 | } 177 | .shadow { 178 | background-color: #39a4f0; 179 | height: 18px; 180 | width: 110px; 181 | position: absolute; 182 | bottom: 99px; 183 | margin: auto; 184 | left: 0; 185 | right: 0; 186 | z-index: -2; 187 | border-radius: 20px; 188 | animation: shadow 1s infinite; 189 | } 190 | @keyframes shadow { 191 | 50% { 192 | transform: scaleX(1.13); 193 | } 194 | } 195 | .cloud { 196 | background-color: #ffffff; 197 | height: 35px; 198 | width: 120px; 199 | border-radius: 120px; 200 | position: absolute; 201 | z-index: -3; 202 | right: -130px; 203 | } 204 | .cloud:before { 205 | position: absolute; 206 | content: ""; 207 | background-color: #ffffff; 208 | height: 65px; 209 | width: 65px; 210 | border-radius: 50%; 211 | bottom: 10px; 212 | left: 15px; 213 | } 214 | .cloud:after { 215 | position: absolute; 216 | content: ""; 217 | background-color: #ffffff; 218 | height: 45px; 219 | width: 45px; 220 | border-radius: 50%; 221 | bottom: 10px; 222 | right: 10px; 223 | } 224 | .cloud1 { 225 | top: 240px; 226 | animation: cloud 10s 18px infinite linear; 227 | } 228 | .cloud2 { 229 | top: 160px; 230 | animation: cloud 10s infinite linear; 231 | } 232 | .cloud3 { 233 | top: 60px; 234 | animation: cloud 10s 5s infinite linear; 235 | } 236 | .cloud4 { 237 | top: 300px; 238 | animation: cloud 10s 12s infinite linear; 239 | } 240 | @keyframes cloud { 241 | 100% { 242 | transform: translateX(calc(-100vw - 130px)); 243 | } 244 | } 245 | 246 | 247 | .body1 { 248 | position: absolute; 249 | height: 65px; 250 | width: 100px; 251 | background-color: #ed8cc8; 252 | border-radius: 100px 100px 0 0; 253 | top: -2px; 254 | animation: body-walk 0.8s infinite; 255 | } 256 | @keyframes body-walk { 257 | 50% { 258 | top: 7px; 259 | } 260 | } 261 | .body1:before { 262 | content: ""; 263 | position: absolute; 264 | height: 80px; 265 | width: 150px; 266 | background-color:#ed8cc8; 267 | top: 65px; 268 | right: 0; 269 | border-radius: 15px 0 150px 150px; 270 | } 271 | .wing1{ 272 | height: 37px; 273 | width: 74px; 274 | background-color:#ed8cc8; 275 | position: absolute; 276 | top: 55px; 277 | left: -40px; 278 | border-radius: 10px 10px 74px 74px; 279 | transform-origin: right; 280 | animation: wing 1s infinite; 281 | } 282 | @keyframes wing { 283 | 50% { 284 | transform: rotate(10deg); 285 | } 286 | } -------------------------------------------------------------------------------- /bird/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Bird 8 | 9 | 10 | 11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 | 30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /cake.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Document 8 | 122 | 123 | 124 | 125 | 126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 | 134 | 136 | 147 | 148 | 151 | 170 | 171 | 173 | 186 | 187 | 190 | 207 | 208 | 210 | 232 | 233 | 237 | 278 | 279 | 280 | 281 |
282 |

happy birthday!

283 |

DOST

284 |
285 | 286 | -------------------------------------------------------------------------------- /candle/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: black; 3 | /* animation: change-background 3s infinite linear; */ 4 | } 5 | 6 | 7 | .floor { 8 | position: absolute; 9 | left: 50%; 10 | top: 50%; 11 | width: 350px; 12 | height: 5px; 13 | background: rgb(222, 30, 190); 14 | transform: translate(-50%, -50%); 15 | box-shadow: 0px 2px 5px #111; 16 | z-index: 2; 17 | } 18 | 19 | .candles { 20 | position: absolute; 21 | left: 50%; 22 | top: 50%; 23 | width: 250px; 24 | height: 150px; 25 | transform: translate(-50%, -100%); 26 | z-index: 1; 27 | } 28 | 29 | .candle1 { 30 | position: absolute; 31 | left: 50%; 32 | top: 50%; 33 | width: 35px; 34 | height: 100px; 35 | background: #fff; 36 | border: 3px solid rgb(222, 30, 190);; 37 | border-bottom: 0px; 38 | border-radius: 3px; 39 | transform-origin: center right; 40 | transform: translate(60%, -25%); 41 | box-shadow: -2px 0px 0px #95c6f2 inset; 42 | /* animation: expand-body 3s infinite linear; */ 43 | } 44 | 45 | .candle1__stick, .candle2__stick { 46 | position: absolute; 47 | left: 50%; 48 | top: 0%; 49 | width: 3px; 50 | height: 18px; 51 | background: rgb(222, 30, 190);;; 52 | border-radius: 8px; 53 | transform: translate(-50%, -100%); 54 | } 55 | 56 | .candle2__stick { 57 | height: 12px; 58 | transform-origin: bottom center; 59 | /* animation: stick-animation 3s infinite linear; */ 60 | } 61 | 62 | .candle1__eyes, .candle2__eyes { 63 | position: absolute; 64 | left: 50%; 65 | top: 0%; 66 | width: 35px; 67 | height: 30px; 68 | transform: translate(-50%, 0%); 69 | } 70 | 71 | .candle1__eyes-one { 72 | position: absolute; 73 | left: 30%; 74 | top: 20%; 75 | width: 5px; 76 | height: 5px; 77 | border-radius: 100%; 78 | background: rgb(222, 30, 190);;; 79 | transform: translate(-70%, 0%); 80 | animation: blink-eyes 3s infinite linear; 81 | } 82 | 83 | .candle1__eyes-two { 84 | position: absolute; 85 | left: 70%; 86 | top: 20%; 87 | width: 5px; 88 | height: 5px; 89 | border-radius: 100%; 90 | background: rgb(222, 30, 190);;; 91 | transform: translate(-70%, 0%); 92 | animation: blink-eyes 3s infinite linear; 93 | } 94 | 95 | .candle1__mouth { 96 | position: absolute; 97 | left: 40%; 98 | top: 20%; 99 | width: 0px; 100 | height: 0px; 101 | border-radius: 20px; 102 | background: rgb(222, 30, 190);;; 103 | transform: translate(-50%, -50%); 104 | /* animation: uff 3s infinite linear; */ 105 | } 106 | 107 | 108 | 109 | .candle2 { 110 | position: absolute; 111 | left: 20%; 112 | top: 65%; 113 | width: 42px; 114 | height: 60px; 115 | background: #fff; 116 | border: 3px solid rgb(222, 30, 190);;; 117 | border-bottom: 0px; 118 | border-radius: 3px; 119 | transform: translate(60%, -15%); 120 | transform-origin: center right; 121 | box-shadow: -2px 0px 0px #95c6f2 inset; 122 | /* animation: shake-left 3s infinite linear; */ 123 | } 124 | 125 | .candle2__eyes-one { 126 | position: absolute; 127 | left: 30%; 128 | top: 50%; 129 | width: 5px; 130 | height: 5px; 131 | display: inline-block; 132 | border: 0px solid #673C63; 133 | border-radius: 100%; 134 | /* float: left; */ 135 | background: rgb(222, 30, 190); 136 | transform: translate(-80%, 0%); 137 | /* animation: changeto-lower 3s infinite linear; */ 138 | } 139 | 140 | .candle2__eyes-two { 141 | position: absolute; 142 | left: 70%; 143 | top: 50%; 144 | width: 5px; 145 | height: 5px; 146 | display: inline-block; 147 | border: 0px solid #673C63; 148 | border-radius: 100%; 149 | /* float: left; */ 150 | background: rgb(222, 30, 190);;; 151 | transform: translate(-80%, 0%); 152 | /* animation: changeto-greater 3s infinite linear; */ 153 | } 154 | 155 | 156 | 157 | .candle2__fire { 158 | position: absolute; 159 | top: 50%; 160 | left: 40%; 161 | display: block; 162 | width: 16px; 163 | height: 20px; 164 | background-color: red; 165 | border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%; 166 | background: #FF9800; 167 | transform: translate(-50%, -50%); 168 | animation: dance-fire 3s infinite linear; 169 | } 170 | .candle1__fire { 171 | position: absolute; 172 | top: -27%; 173 | right: 10%; 174 | display: block; 175 | width: 16px; 176 | height: 20px; 177 | background-color: red; 178 | border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%; 179 | background: #FF9800; 180 | transform: translate(-30%, -50%); 181 | animation: dance-fire 3s infinite linear; 182 | } 183 | 184 | 185 | 186 | 187 | @keyframes dance-fire { 188 | 59%,89% { 189 | left: 40.8%; 190 | width: 16px; 191 | height: 20px; 192 | } 193 | 90%,0%,7%,15%,23%,31%,39%,47%,55% { 194 | left: 40.8%; 195 | width: 16px; 196 | height: 20px; 197 | background: #FFC107; 198 | } 199 | 94%,3%,11%,19%,27%,35%,43%,51%,58% { 200 | left: 41.2%; 201 | width: 16px; 202 | height: 20px; 203 | background: #FF9800; 204 | } 205 | } 206 | 207 | -------------------------------------------------------------------------------- /candle/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Candle Fun (Pure CSS Animation) 7 | 8 | 9 | 10 | 11 | 12 |
13 |
14 | 15 |
16 |
17 |
18 | 19 | 20 |
21 |
22 |
23 |
24 |
25 |
26 | 27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 | 38 | 39 |
40 | 41 |
42 |
43 | 44 | 45 |
46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /candle/rain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chhavi48/Canvas-And-P5.javascript/671dc17699e081bc3ae8622b292294f87d72ba65/candle/rain.png -------------------------------------------------------------------------------- /cat.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Document 8 | 209 | 210 | 211 |
212 |
213 |
214 |
215 | 216 | 217 |
218 |
219 | 220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
239 | 240 | -------------------------------------------------------------------------------- /edit.js: -------------------------------------------------------------------------------- 1 | const fileInput = document.querySelector("#imageFileInput"); 2 | const canvas = document.querySelector("#canvas"); 3 | const canvasCtx = canvas.getContext("2d"); 4 | const brightnessInput = document.querySelector("#brightness"); 5 | const saturationInput = document.querySelector("#saturation"); 6 | const blurInput = document.querySelector("#blur"); 7 | const inversionInput = document.querySelector("#inversion"); 8 | 9 | const settings = {}; 10 | let image = null; 11 | 12 | function resetSettings() { 13 | settings.brightness = "100"; 14 | settings.saturation = "100"; 15 | settings.blur = "0"; 16 | settings.inversion = "0"; 17 | 18 | brightnessInput.value = settings.brightness; 19 | saturationInput.value = settings.saturation; 20 | blurInput.value = settings.blur; 21 | inversionInput.value = settings.inversion; 22 | } 23 | 24 | function updateSetting(key, value) { 25 | if (!image) return; 26 | 27 | settings[key] = value; 28 | renderImage(); 29 | } 30 | 31 | function generateFilter() { 32 | const { brightness, saturation, blur, inversion } = settings; 33 | 34 | return `brightness(${brightness}%) saturate(${saturation}%) blur(${blur}px) invert(${inversion}%)`; 35 | } 36 | 37 | function renderImage() { 38 | canvas.width = image.width; 39 | canvas.height = image.height; 40 | 41 | canvasCtx.filter = generateFilter(); 42 | canvasCtx.drawImage(image, 0, 0); 43 | } 44 | 45 | brightnessInput.addEventListener("change", () => 46 | updateSetting("brightness", brightnessInput.value) 47 | ); 48 | saturationInput.addEventListener("change", () => 49 | updateSetting("saturation", saturationInput.value) 50 | ); 51 | blurInput.addEventListener("change", () => 52 | updateSetting("blur", blurInput.value) 53 | ); 54 | inversionInput.addEventListener("change", () => 55 | updateSetting("inversion", inversionInput.value) 56 | ); 57 | 58 | fileInput.addEventListener("change", () => { 59 | image = new Image(); 60 | 61 | image.addEventListener("load", () => { 62 | resetSettings(); 63 | renderImage(); 64 | }); 65 | 66 | image.src = URL.createObjectURL(fileInput.files[0]); 67 | }); 68 | 69 | resetSettings(); 70 | -------------------------------------------------------------------------------- /egg.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Document 8 | 66 | 67 | 68 |
69 | 70 | -------------------------------------------------------------------------------- /frog.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Frog 8 | 166 | 167 | 168 |
169 |
170 |
171 |
172 | 173 |
174 |
175 |
176 | 177 |
178 |
179 |
180 |
181 | 182 |
183 |
184 |
185 |
186 |
187 |
188 | 189 | -------------------------------------------------------------------------------- /handingImages/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: rgb(54, 53, 52); 3 | overflow: hidden; 4 | } 5 | 6 | img { 7 | max-width: 100%; 8 | } 9 | 10 | .hangings { 11 | display: flex; 12 | align-items: flex-start; 13 | justify-content: center; 14 | margin-top: 5rem; 15 | } 16 | 17 | .hangings__image { 18 | padding: 0.5rem 0.5rem 1.5rem; 19 | background: white; 20 | position: relative; 21 | box-shadow: 0 0 5px rgba(0, 0, 0, 0.5); 22 | transform-origin: center -5rem; 23 | } 24 | 25 | .hangings__image::before { 26 | content: ''; 27 | display: block; 28 | height: 10rem; 29 | width: 2px; 30 | background: saddlebrown; 31 | position: absolute; 32 | bottom: 100%; 33 | left: 50%; 34 | } 35 | 36 | .hangings__image:nth-child(1) { 37 | animation: image1 5s infinite ease-in-out; 38 | transform: rotate(-10deg); 39 | } 40 | 41 | .hangings__image:nth-child(2) { 42 | animation: image2 4.5s infinite ease-in-out; 43 | transform: rotate(8deg); 44 | } 45 | 46 | .hangings__image:nth-child(3) { 47 | animation: image3 4s infinite ease-in-out; 48 | transform: rotate(-4deg); 49 | } 50 | 51 | @keyframes image1 { 52 | 50% { 53 | transform: rotate(10deg); 54 | } 55 | } 56 | 57 | @keyframes image2 { 58 | 50% { 59 | transform: rotate(-5deg); 60 | } 61 | } 62 | 63 | @keyframes image3 { 64 | 50% { 65 | transform: rotate(6deg); 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /handingImages/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | CSS Hangings Images 7 | 8 | 9 | 10 |
11 |
12 | 16 |
17 |
18 | 19 |
20 | 21 |
22 | 23 |
24 | 25 | 26 |
27 | 28 | 29 | -------------------------------------------------------------------------------- /icecream.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Document 8 | 80 | 81 | 82 | 83 |
84 |
85 |
86 |
87 |
88 | 89 | -------------------------------------------------------------------------------- /image1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chhavi48/Canvas-And-P5.javascript/671dc17699e081bc3ae8622b292294f87d72ba65/image1.png -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | Canvas 20 | 21 | 22 | 23 | 24 |
25 |
26 |
27 | 28 |
29 |
30 | 31 | 32 |
33 |
34 | 35 | 36 |
37 |
38 | 39 | 40 |
41 |
42 | 43 | 44 |
45 |
46 |
47 | 48 |
49 |
50 | 51 | 54 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "canvas", 3 | "lockfileVersion": 2, 4 | "requires": true, 5 | "packages": { 6 | "": { 7 | "dependencies": { 8 | "canvas": "^2.9.1" 9 | } 10 | }, 11 | "node_modules/@mapbox/node-pre-gyp": { 12 | "version": "1.0.9", 13 | "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.9.tgz", 14 | "integrity": "sha512-aDF3S3rK9Q2gey/WAttUlISduDItz5BU3306M9Eyv6/oS40aMprnopshtlKTykxRNIBEZuRMaZAnbrQ4QtKGyw==", 15 | "dependencies": { 16 | "detect-libc": "^2.0.0", 17 | "https-proxy-agent": "^5.0.0", 18 | "make-dir": "^3.1.0", 19 | "node-fetch": "^2.6.7", 20 | "nopt": "^5.0.0", 21 | "npmlog": "^5.0.1", 22 | "rimraf": "^3.0.2", 23 | "semver": "^7.3.5", 24 | "tar": "^6.1.11" 25 | }, 26 | "bin": { 27 | "node-pre-gyp": "bin/node-pre-gyp" 28 | } 29 | }, 30 | "node_modules/abbrev": { 31 | "version": "1.1.1", 32 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", 33 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" 34 | }, 35 | "node_modules/agent-base": { 36 | "version": "6.0.2", 37 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 38 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 39 | "dependencies": { 40 | "debug": "4" 41 | }, 42 | "engines": { 43 | "node": ">= 6.0.0" 44 | } 45 | }, 46 | "node_modules/ansi-regex": { 47 | "version": "5.0.1", 48 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 49 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 50 | "engines": { 51 | "node": ">=8" 52 | } 53 | }, 54 | "node_modules/aproba": { 55 | "version": "2.0.0", 56 | "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", 57 | "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" 58 | }, 59 | "node_modules/are-we-there-yet": { 60 | "version": "2.0.0", 61 | "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", 62 | "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", 63 | "dependencies": { 64 | "delegates": "^1.0.0", 65 | "readable-stream": "^3.6.0" 66 | }, 67 | "engines": { 68 | "node": ">=10" 69 | } 70 | }, 71 | "node_modules/balanced-match": { 72 | "version": "1.0.2", 73 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 74 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 75 | }, 76 | "node_modules/brace-expansion": { 77 | "version": "1.1.11", 78 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 79 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 80 | "dependencies": { 81 | "balanced-match": "^1.0.0", 82 | "concat-map": "0.0.1" 83 | } 84 | }, 85 | "node_modules/canvas": { 86 | "version": "2.9.1", 87 | "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.9.1.tgz", 88 | "integrity": "sha512-vSQti1uG/2gjv3x6QLOZw7TctfufaerTWbVe+NSduHxxLGB+qf3kFgQ6n66DSnuoINtVUjrLLIK2R+lxrBG07A==", 89 | "hasInstallScript": true, 90 | "dependencies": { 91 | "@mapbox/node-pre-gyp": "^1.0.0", 92 | "nan": "^2.15.0", 93 | "simple-get": "^3.0.3" 94 | }, 95 | "engines": { 96 | "node": ">=6" 97 | } 98 | }, 99 | "node_modules/chownr": { 100 | "version": "2.0.0", 101 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", 102 | "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", 103 | "engines": { 104 | "node": ">=10" 105 | } 106 | }, 107 | "node_modules/color-support": { 108 | "version": "1.1.3", 109 | "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", 110 | "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", 111 | "bin": { 112 | "color-support": "bin.js" 113 | } 114 | }, 115 | "node_modules/concat-map": { 116 | "version": "0.0.1", 117 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 118 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 119 | }, 120 | "node_modules/console-control-strings": { 121 | "version": "1.1.0", 122 | "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", 123 | "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" 124 | }, 125 | "node_modules/debug": { 126 | "version": "4.3.4", 127 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 128 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 129 | "dependencies": { 130 | "ms": "2.1.2" 131 | }, 132 | "engines": { 133 | "node": ">=6.0" 134 | }, 135 | "peerDependenciesMeta": { 136 | "supports-color": { 137 | "optional": true 138 | } 139 | } 140 | }, 141 | "node_modules/decompress-response": { 142 | "version": "4.2.1", 143 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", 144 | "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", 145 | "dependencies": { 146 | "mimic-response": "^2.0.0" 147 | }, 148 | "engines": { 149 | "node": ">=8" 150 | } 151 | }, 152 | "node_modules/delegates": { 153 | "version": "1.0.0", 154 | "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", 155 | "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" 156 | }, 157 | "node_modules/detect-libc": { 158 | "version": "2.0.1", 159 | "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", 160 | "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", 161 | "engines": { 162 | "node": ">=8" 163 | } 164 | }, 165 | "node_modules/emoji-regex": { 166 | "version": "8.0.0", 167 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 168 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" 169 | }, 170 | "node_modules/fs-minipass": { 171 | "version": "2.1.0", 172 | "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", 173 | "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", 174 | "dependencies": { 175 | "minipass": "^3.0.0" 176 | }, 177 | "engines": { 178 | "node": ">= 8" 179 | } 180 | }, 181 | "node_modules/fs.realpath": { 182 | "version": "1.0.0", 183 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 184 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 185 | }, 186 | "node_modules/gauge": { 187 | "version": "3.0.2", 188 | "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", 189 | "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", 190 | "dependencies": { 191 | "aproba": "^1.0.3 || ^2.0.0", 192 | "color-support": "^1.1.2", 193 | "console-control-strings": "^1.0.0", 194 | "has-unicode": "^2.0.1", 195 | "object-assign": "^4.1.1", 196 | "signal-exit": "^3.0.0", 197 | "string-width": "^4.2.3", 198 | "strip-ansi": "^6.0.1", 199 | "wide-align": "^1.1.2" 200 | }, 201 | "engines": { 202 | "node": ">=10" 203 | } 204 | }, 205 | "node_modules/glob": { 206 | "version": "7.2.3", 207 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 208 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 209 | "dependencies": { 210 | "fs.realpath": "^1.0.0", 211 | "inflight": "^1.0.4", 212 | "inherits": "2", 213 | "minimatch": "^3.1.1", 214 | "once": "^1.3.0", 215 | "path-is-absolute": "^1.0.0" 216 | }, 217 | "engines": { 218 | "node": "*" 219 | }, 220 | "funding": { 221 | "url": "https://github.com/sponsors/isaacs" 222 | } 223 | }, 224 | "node_modules/has-unicode": { 225 | "version": "2.0.1", 226 | "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", 227 | "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" 228 | }, 229 | "node_modules/https-proxy-agent": { 230 | "version": "5.0.1", 231 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", 232 | "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", 233 | "dependencies": { 234 | "agent-base": "6", 235 | "debug": "4" 236 | }, 237 | "engines": { 238 | "node": ">= 6" 239 | } 240 | }, 241 | "node_modules/inflight": { 242 | "version": "1.0.6", 243 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 244 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 245 | "dependencies": { 246 | "once": "^1.3.0", 247 | "wrappy": "1" 248 | } 249 | }, 250 | "node_modules/inherits": { 251 | "version": "2.0.4", 252 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 253 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 254 | }, 255 | "node_modules/is-fullwidth-code-point": { 256 | "version": "3.0.0", 257 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 258 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 259 | "engines": { 260 | "node": ">=8" 261 | } 262 | }, 263 | "node_modules/lru-cache": { 264 | "version": "6.0.0", 265 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 266 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 267 | "dependencies": { 268 | "yallist": "^4.0.0" 269 | }, 270 | "engines": { 271 | "node": ">=10" 272 | } 273 | }, 274 | "node_modules/make-dir": { 275 | "version": "3.1.0", 276 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", 277 | "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", 278 | "dependencies": { 279 | "semver": "^6.0.0" 280 | }, 281 | "engines": { 282 | "node": ">=8" 283 | }, 284 | "funding": { 285 | "url": "https://github.com/sponsors/sindresorhus" 286 | } 287 | }, 288 | "node_modules/make-dir/node_modules/semver": { 289 | "version": "6.3.0", 290 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 291 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 292 | "bin": { 293 | "semver": "bin/semver.js" 294 | } 295 | }, 296 | "node_modules/mimic-response": { 297 | "version": "2.1.0", 298 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", 299 | "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", 300 | "engines": { 301 | "node": ">=8" 302 | }, 303 | "funding": { 304 | "url": "https://github.com/sponsors/sindresorhus" 305 | } 306 | }, 307 | "node_modules/minimatch": { 308 | "version": "3.1.2", 309 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 310 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 311 | "dependencies": { 312 | "brace-expansion": "^1.1.7" 313 | }, 314 | "engines": { 315 | "node": "*" 316 | } 317 | }, 318 | "node_modules/minipass": { 319 | "version": "3.1.6", 320 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", 321 | "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", 322 | "dependencies": { 323 | "yallist": "^4.0.0" 324 | }, 325 | "engines": { 326 | "node": ">=8" 327 | } 328 | }, 329 | "node_modules/minizlib": { 330 | "version": "2.1.2", 331 | "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", 332 | "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", 333 | "dependencies": { 334 | "minipass": "^3.0.0", 335 | "yallist": "^4.0.0" 336 | }, 337 | "engines": { 338 | "node": ">= 8" 339 | } 340 | }, 341 | "node_modules/mkdirp": { 342 | "version": "1.0.4", 343 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", 344 | "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", 345 | "bin": { 346 | "mkdirp": "bin/cmd.js" 347 | }, 348 | "engines": { 349 | "node": ">=10" 350 | } 351 | }, 352 | "node_modules/ms": { 353 | "version": "2.1.2", 354 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 355 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 356 | }, 357 | "node_modules/nan": { 358 | "version": "2.15.0", 359 | "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", 360 | "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==" 361 | }, 362 | "node_modules/node-fetch": { 363 | "version": "2.6.7", 364 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", 365 | "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", 366 | "dependencies": { 367 | "whatwg-url": "^5.0.0" 368 | }, 369 | "engines": { 370 | "node": "4.x || >=6.0.0" 371 | }, 372 | "peerDependencies": { 373 | "encoding": "^0.1.0" 374 | }, 375 | "peerDependenciesMeta": { 376 | "encoding": { 377 | "optional": true 378 | } 379 | } 380 | }, 381 | "node_modules/nopt": { 382 | "version": "5.0.0", 383 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", 384 | "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", 385 | "dependencies": { 386 | "abbrev": "1" 387 | }, 388 | "bin": { 389 | "nopt": "bin/nopt.js" 390 | }, 391 | "engines": { 392 | "node": ">=6" 393 | } 394 | }, 395 | "node_modules/npmlog": { 396 | "version": "5.0.1", 397 | "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", 398 | "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", 399 | "dependencies": { 400 | "are-we-there-yet": "^2.0.0", 401 | "console-control-strings": "^1.1.0", 402 | "gauge": "^3.0.0", 403 | "set-blocking": "^2.0.0" 404 | } 405 | }, 406 | "node_modules/object-assign": { 407 | "version": "4.1.1", 408 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 409 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 410 | "engines": { 411 | "node": ">=0.10.0" 412 | } 413 | }, 414 | "node_modules/once": { 415 | "version": "1.4.0", 416 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 417 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 418 | "dependencies": { 419 | "wrappy": "1" 420 | } 421 | }, 422 | "node_modules/path-is-absolute": { 423 | "version": "1.0.1", 424 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 425 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 426 | "engines": { 427 | "node": ">=0.10.0" 428 | } 429 | }, 430 | "node_modules/readable-stream": { 431 | "version": "3.6.0", 432 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 433 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 434 | "dependencies": { 435 | "inherits": "^2.0.3", 436 | "string_decoder": "^1.1.1", 437 | "util-deprecate": "^1.0.1" 438 | }, 439 | "engines": { 440 | "node": ">= 6" 441 | } 442 | }, 443 | "node_modules/rimraf": { 444 | "version": "3.0.2", 445 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 446 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 447 | "dependencies": { 448 | "glob": "^7.1.3" 449 | }, 450 | "bin": { 451 | "rimraf": "bin.js" 452 | }, 453 | "funding": { 454 | "url": "https://github.com/sponsors/isaacs" 455 | } 456 | }, 457 | "node_modules/safe-buffer": { 458 | "version": "5.2.1", 459 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 460 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 461 | "funding": [ 462 | { 463 | "type": "github", 464 | "url": "https://github.com/sponsors/feross" 465 | }, 466 | { 467 | "type": "patreon", 468 | "url": "https://www.patreon.com/feross" 469 | }, 470 | { 471 | "type": "consulting", 472 | "url": "https://feross.org/support" 473 | } 474 | ] 475 | }, 476 | "node_modules/semver": { 477 | "version": "7.3.7", 478 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", 479 | "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", 480 | "dependencies": { 481 | "lru-cache": "^6.0.0" 482 | }, 483 | "bin": { 484 | "semver": "bin/semver.js" 485 | }, 486 | "engines": { 487 | "node": ">=10" 488 | } 489 | }, 490 | "node_modules/set-blocking": { 491 | "version": "2.0.0", 492 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 493 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" 494 | }, 495 | "node_modules/signal-exit": { 496 | "version": "3.0.7", 497 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 498 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" 499 | }, 500 | "node_modules/simple-concat": { 501 | "version": "1.0.1", 502 | "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", 503 | "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", 504 | "funding": [ 505 | { 506 | "type": "github", 507 | "url": "https://github.com/sponsors/feross" 508 | }, 509 | { 510 | "type": "patreon", 511 | "url": "https://www.patreon.com/feross" 512 | }, 513 | { 514 | "type": "consulting", 515 | "url": "https://feross.org/support" 516 | } 517 | ] 518 | }, 519 | "node_modules/simple-get": { 520 | "version": "3.1.1", 521 | "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", 522 | "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", 523 | "dependencies": { 524 | "decompress-response": "^4.2.0", 525 | "once": "^1.3.1", 526 | "simple-concat": "^1.0.0" 527 | } 528 | }, 529 | "node_modules/string_decoder": { 530 | "version": "1.3.0", 531 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 532 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 533 | "dependencies": { 534 | "safe-buffer": "~5.2.0" 535 | } 536 | }, 537 | "node_modules/string-width": { 538 | "version": "4.2.3", 539 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 540 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 541 | "dependencies": { 542 | "emoji-regex": "^8.0.0", 543 | "is-fullwidth-code-point": "^3.0.0", 544 | "strip-ansi": "^6.0.1" 545 | }, 546 | "engines": { 547 | "node": ">=8" 548 | } 549 | }, 550 | "node_modules/strip-ansi": { 551 | "version": "6.0.1", 552 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 553 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 554 | "dependencies": { 555 | "ansi-regex": "^5.0.1" 556 | }, 557 | "engines": { 558 | "node": ">=8" 559 | } 560 | }, 561 | "node_modules/tar": { 562 | "version": "6.1.11", 563 | "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", 564 | "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", 565 | "dependencies": { 566 | "chownr": "^2.0.0", 567 | "fs-minipass": "^2.0.0", 568 | "minipass": "^3.0.0", 569 | "minizlib": "^2.1.1", 570 | "mkdirp": "^1.0.3", 571 | "yallist": "^4.0.0" 572 | }, 573 | "engines": { 574 | "node": ">= 10" 575 | } 576 | }, 577 | "node_modules/tr46": { 578 | "version": "0.0.3", 579 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 580 | "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" 581 | }, 582 | "node_modules/util-deprecate": { 583 | "version": "1.0.2", 584 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 585 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 586 | }, 587 | "node_modules/webidl-conversions": { 588 | "version": "3.0.1", 589 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 590 | "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" 591 | }, 592 | "node_modules/whatwg-url": { 593 | "version": "5.0.0", 594 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 595 | "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", 596 | "dependencies": { 597 | "tr46": "~0.0.3", 598 | "webidl-conversions": "^3.0.0" 599 | } 600 | }, 601 | "node_modules/wide-align": { 602 | "version": "1.1.5", 603 | "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", 604 | "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", 605 | "dependencies": { 606 | "string-width": "^1.0.2 || 2 || 3 || 4" 607 | } 608 | }, 609 | "node_modules/wrappy": { 610 | "version": "1.0.2", 611 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 612 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 613 | }, 614 | "node_modules/yallist": { 615 | "version": "4.0.0", 616 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 617 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 618 | } 619 | }, 620 | "dependencies": { 621 | "@mapbox/node-pre-gyp": { 622 | "version": "1.0.9", 623 | "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.9.tgz", 624 | "integrity": "sha512-aDF3S3rK9Q2gey/WAttUlISduDItz5BU3306M9Eyv6/oS40aMprnopshtlKTykxRNIBEZuRMaZAnbrQ4QtKGyw==", 625 | "requires": { 626 | "detect-libc": "^2.0.0", 627 | "https-proxy-agent": "^5.0.0", 628 | "make-dir": "^3.1.0", 629 | "node-fetch": "^2.6.7", 630 | "nopt": "^5.0.0", 631 | "npmlog": "^5.0.1", 632 | "rimraf": "^3.0.2", 633 | "semver": "^7.3.5", 634 | "tar": "^6.1.11" 635 | } 636 | }, 637 | "abbrev": { 638 | "version": "1.1.1", 639 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", 640 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" 641 | }, 642 | "agent-base": { 643 | "version": "6.0.2", 644 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 645 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 646 | "requires": { 647 | "debug": "4" 648 | } 649 | }, 650 | "ansi-regex": { 651 | "version": "5.0.1", 652 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 653 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" 654 | }, 655 | "aproba": { 656 | "version": "2.0.0", 657 | "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", 658 | "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" 659 | }, 660 | "are-we-there-yet": { 661 | "version": "2.0.0", 662 | "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", 663 | "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", 664 | "requires": { 665 | "delegates": "^1.0.0", 666 | "readable-stream": "^3.6.0" 667 | } 668 | }, 669 | "balanced-match": { 670 | "version": "1.0.2", 671 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 672 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 673 | }, 674 | "brace-expansion": { 675 | "version": "1.1.11", 676 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 677 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 678 | "requires": { 679 | "balanced-match": "^1.0.0", 680 | "concat-map": "0.0.1" 681 | } 682 | }, 683 | "canvas": { 684 | "version": "2.9.1", 685 | "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.9.1.tgz", 686 | "integrity": "sha512-vSQti1uG/2gjv3x6QLOZw7TctfufaerTWbVe+NSduHxxLGB+qf3kFgQ6n66DSnuoINtVUjrLLIK2R+lxrBG07A==", 687 | "requires": { 688 | "@mapbox/node-pre-gyp": "^1.0.0", 689 | "nan": "^2.15.0", 690 | "simple-get": "^3.0.3" 691 | } 692 | }, 693 | "chownr": { 694 | "version": "2.0.0", 695 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", 696 | "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" 697 | }, 698 | "color-support": { 699 | "version": "1.1.3", 700 | "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", 701 | "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" 702 | }, 703 | "concat-map": { 704 | "version": "0.0.1", 705 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 706 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 707 | }, 708 | "console-control-strings": { 709 | "version": "1.1.0", 710 | "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", 711 | "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" 712 | }, 713 | "debug": { 714 | "version": "4.3.4", 715 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 716 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 717 | "requires": { 718 | "ms": "2.1.2" 719 | } 720 | }, 721 | "decompress-response": { 722 | "version": "4.2.1", 723 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", 724 | "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", 725 | "requires": { 726 | "mimic-response": "^2.0.0" 727 | } 728 | }, 729 | "delegates": { 730 | "version": "1.0.0", 731 | "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", 732 | "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" 733 | }, 734 | "detect-libc": { 735 | "version": "2.0.1", 736 | "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", 737 | "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==" 738 | }, 739 | "emoji-regex": { 740 | "version": "8.0.0", 741 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 742 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" 743 | }, 744 | "fs-minipass": { 745 | "version": "2.1.0", 746 | "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", 747 | "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", 748 | "requires": { 749 | "minipass": "^3.0.0" 750 | } 751 | }, 752 | "fs.realpath": { 753 | "version": "1.0.0", 754 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 755 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 756 | }, 757 | "gauge": { 758 | "version": "3.0.2", 759 | "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", 760 | "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", 761 | "requires": { 762 | "aproba": "^1.0.3 || ^2.0.0", 763 | "color-support": "^1.1.2", 764 | "console-control-strings": "^1.0.0", 765 | "has-unicode": "^2.0.1", 766 | "object-assign": "^4.1.1", 767 | "signal-exit": "^3.0.0", 768 | "string-width": "^4.2.3", 769 | "strip-ansi": "^6.0.1", 770 | "wide-align": "^1.1.2" 771 | } 772 | }, 773 | "glob": { 774 | "version": "7.2.3", 775 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 776 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 777 | "requires": { 778 | "fs.realpath": "^1.0.0", 779 | "inflight": "^1.0.4", 780 | "inherits": "2", 781 | "minimatch": "^3.1.1", 782 | "once": "^1.3.0", 783 | "path-is-absolute": "^1.0.0" 784 | } 785 | }, 786 | "has-unicode": { 787 | "version": "2.0.1", 788 | "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", 789 | "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" 790 | }, 791 | "https-proxy-agent": { 792 | "version": "5.0.1", 793 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", 794 | "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", 795 | "requires": { 796 | "agent-base": "6", 797 | "debug": "4" 798 | } 799 | }, 800 | "inflight": { 801 | "version": "1.0.6", 802 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 803 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 804 | "requires": { 805 | "once": "^1.3.0", 806 | "wrappy": "1" 807 | } 808 | }, 809 | "inherits": { 810 | "version": "2.0.4", 811 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 812 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 813 | }, 814 | "is-fullwidth-code-point": { 815 | "version": "3.0.0", 816 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 817 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" 818 | }, 819 | "lru-cache": { 820 | "version": "6.0.0", 821 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 822 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 823 | "requires": { 824 | "yallist": "^4.0.0" 825 | } 826 | }, 827 | "make-dir": { 828 | "version": "3.1.0", 829 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", 830 | "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", 831 | "requires": { 832 | "semver": "^6.0.0" 833 | }, 834 | "dependencies": { 835 | "semver": { 836 | "version": "6.3.0", 837 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 838 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" 839 | } 840 | } 841 | }, 842 | "mimic-response": { 843 | "version": "2.1.0", 844 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", 845 | "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==" 846 | }, 847 | "minimatch": { 848 | "version": "3.1.2", 849 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 850 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 851 | "requires": { 852 | "brace-expansion": "^1.1.7" 853 | } 854 | }, 855 | "minipass": { 856 | "version": "3.1.6", 857 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", 858 | "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", 859 | "requires": { 860 | "yallist": "^4.0.0" 861 | } 862 | }, 863 | "minizlib": { 864 | "version": "2.1.2", 865 | "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", 866 | "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", 867 | "requires": { 868 | "minipass": "^3.0.0", 869 | "yallist": "^4.0.0" 870 | } 871 | }, 872 | "mkdirp": { 873 | "version": "1.0.4", 874 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", 875 | "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" 876 | }, 877 | "ms": { 878 | "version": "2.1.2", 879 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 880 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 881 | }, 882 | "nan": { 883 | "version": "2.15.0", 884 | "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", 885 | "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==" 886 | }, 887 | "node-fetch": { 888 | "version": "2.6.7", 889 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", 890 | "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", 891 | "requires": { 892 | "whatwg-url": "^5.0.0" 893 | } 894 | }, 895 | "nopt": { 896 | "version": "5.0.0", 897 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", 898 | "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", 899 | "requires": { 900 | "abbrev": "1" 901 | } 902 | }, 903 | "npmlog": { 904 | "version": "5.0.1", 905 | "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", 906 | "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", 907 | "requires": { 908 | "are-we-there-yet": "^2.0.0", 909 | "console-control-strings": "^1.1.0", 910 | "gauge": "^3.0.0", 911 | "set-blocking": "^2.0.0" 912 | } 913 | }, 914 | "object-assign": { 915 | "version": "4.1.1", 916 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 917 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" 918 | }, 919 | "once": { 920 | "version": "1.4.0", 921 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 922 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 923 | "requires": { 924 | "wrappy": "1" 925 | } 926 | }, 927 | "path-is-absolute": { 928 | "version": "1.0.1", 929 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 930 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" 931 | }, 932 | "readable-stream": { 933 | "version": "3.6.0", 934 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 935 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 936 | "requires": { 937 | "inherits": "^2.0.3", 938 | "string_decoder": "^1.1.1", 939 | "util-deprecate": "^1.0.1" 940 | } 941 | }, 942 | "rimraf": { 943 | "version": "3.0.2", 944 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 945 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 946 | "requires": { 947 | "glob": "^7.1.3" 948 | } 949 | }, 950 | "safe-buffer": { 951 | "version": "5.2.1", 952 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 953 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 954 | }, 955 | "semver": { 956 | "version": "7.3.7", 957 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", 958 | "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", 959 | "requires": { 960 | "lru-cache": "^6.0.0" 961 | } 962 | }, 963 | "set-blocking": { 964 | "version": "2.0.0", 965 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 966 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" 967 | }, 968 | "signal-exit": { 969 | "version": "3.0.7", 970 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 971 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" 972 | }, 973 | "simple-concat": { 974 | "version": "1.0.1", 975 | "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", 976 | "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" 977 | }, 978 | "simple-get": { 979 | "version": "3.1.1", 980 | "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", 981 | "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", 982 | "requires": { 983 | "decompress-response": "^4.2.0", 984 | "once": "^1.3.1", 985 | "simple-concat": "^1.0.0" 986 | } 987 | }, 988 | "string_decoder": { 989 | "version": "1.3.0", 990 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 991 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 992 | "requires": { 993 | "safe-buffer": "~5.2.0" 994 | } 995 | }, 996 | "string-width": { 997 | "version": "4.2.3", 998 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 999 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 1000 | "requires": { 1001 | "emoji-regex": "^8.0.0", 1002 | "is-fullwidth-code-point": "^3.0.0", 1003 | "strip-ansi": "^6.0.1" 1004 | } 1005 | }, 1006 | "strip-ansi": { 1007 | "version": "6.0.1", 1008 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1009 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1010 | "requires": { 1011 | "ansi-regex": "^5.0.1" 1012 | } 1013 | }, 1014 | "tar": { 1015 | "version": "6.1.11", 1016 | "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", 1017 | "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", 1018 | "requires": { 1019 | "chownr": "^2.0.0", 1020 | "fs-minipass": "^2.0.0", 1021 | "minipass": "^3.0.0", 1022 | "minizlib": "^2.1.1", 1023 | "mkdirp": "^1.0.3", 1024 | "yallist": "^4.0.0" 1025 | } 1026 | }, 1027 | "tr46": { 1028 | "version": "0.0.3", 1029 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 1030 | "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" 1031 | }, 1032 | "util-deprecate": { 1033 | "version": "1.0.2", 1034 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1035 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 1036 | }, 1037 | "webidl-conversions": { 1038 | "version": "3.0.1", 1039 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 1040 | "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" 1041 | }, 1042 | "whatwg-url": { 1043 | "version": "5.0.0", 1044 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 1045 | "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", 1046 | "requires": { 1047 | "tr46": "~0.0.3", 1048 | "webidl-conversions": "^3.0.0" 1049 | } 1050 | }, 1051 | "wide-align": { 1052 | "version": "1.1.5", 1053 | "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", 1054 | "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", 1055 | "requires": { 1056 | "string-width": "^1.0.2 || 2 || 3 || 4" 1057 | } 1058 | }, 1059 | "wrappy": { 1060 | "version": "1.0.2", 1061 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1062 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 1063 | }, 1064 | "yallist": { 1065 | "version": "4.0.0", 1066 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 1067 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 1068 | } 1069 | } 1070 | } 1071 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "canvas": "^2.9.1" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /sanak.js: -------------------------------------------------------------------------------- 1 | var s; 2 | var scl=20 3 | function setup(){ 4 | createCanvas(640,360) 5 | s=new Snake() 6 | } 7 | 8 | function draw(){ 9 | background(51) 10 | s.update() 11 | s.show() 12 | } 13 | 14 | function keyPressed(){ 15 | if(key===UP_ARROW){ 16 | s.dir(0,-1) 17 | } 18 | else if(keyCode===DOWN_ARROW){ 19 | s.dir(0,1) 20 | } 21 | else if(keyCode===LEFT_ARROW){ 22 | s.dir(-1,0) 23 | } 24 | else if(keyCode===RIGHT_ARROW){ 25 | s.dir(1,0) 26 | } 27 | } 28 | 29 | -------------------------------------------------------------------------------- /script.js: -------------------------------------------------------------------------------- 1 | const image = new Image(); 2 | image.src = 'data:image/jpeg;base64,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'; 3 | 4 | image.addEventListener('load', function(){ 5 | const canvas = document.getElementById('canvas1'); 6 | const ctx = canvas.getContext('2d'); 7 | canvas.width = 572; 8 | canvas.height = 352; 9 | 10 | let particlesArray = []; 11 | const numberOfParticles = 12000; 12 | const detail = 1; 13 | 14 | ctx.drawImage(image, 0, 0, canvas.width, canvas.height); 15 | const pixels = ctx.getImageData(0, 0, canvas.width, canvas.height); 16 | ctx.clearRect(0, 0, canvas.width, canvas.height); 17 | 18 | let grid = []; 19 | for (let y = 0; y < canvas.height; y += detail){ 20 | let row = []; 21 | for (let x = 0; x < canvas.width; x += detail){ 22 | const red = pixels.data[(y * 4 * pixels.width) + (x * 4)] 23 | const green = pixels.data[(y * 4 * pixels.width) + (x * 4 + 1)] 24 | const blue = pixels.data[(y * 4 * pixels.width) + (x * 4 + 2)] 25 | const color = 'rgb(' + red +',' + green + ',' + blue + ')'; 26 | const brightness = calculateBrightness(red, green, blue)/100; 27 | 28 | row.push(brightness); 29 | } 30 | grid.push(row); 31 | } 32 | 33 | class Particle { 34 | constructor(){ 35 | this.x = Math.random() * canvas.width; 36 | this.y = 0; 37 | //this.prevX = this.x; 38 | this.speed = 0; 39 | this.velocity = Math.random() * 0.7; 40 | this.size = Math.random() * 2 + .1; 41 | } 42 | update () { 43 | this.speed = grid[Math.floor(this.y / detail)][Math.floor(this.x / detail)]; 44 | let movement = (2.5 - this.speed) + this.velocity; 45 | this.y += movement; 46 | if (this.y >= canvas.height) { 47 | this.y = 0; 48 | this.x = Math.random() * canvas.width; 49 | } 50 | //console.log(this.x += movement) 51 | } 52 | draw(){ 53 | ctx.beginPath(); 54 | ctx.fillStyle = 'white'; 55 | ctx.arc(this.x, this.y, this.size, 0, 2 * Math.PI); 56 | ctx.fill(); 57 | } 58 | } 59 | 60 | function init(){ 61 | for (let i = 0; i < numberOfParticles; i++){ 62 | particlesArray.push(new Particle()); 63 | } 64 | } 65 | init(); 66 | 67 | function animate () { 68 | ctx.globalAlpha = 0.05; 69 | ctx.fillStyle = 'rgb(0, 0,0)'; 70 | ctx.fillRect(0, 0, canvas.width, canvas.height); 71 | ctx.globalAlpha = 0.2; 72 | for (let i = 0; i < particlesArray.length; i++) { 73 | particlesArray[i].update(); 74 | ctx.globalAlpha = particlesArray[i].speed * 0.3; 75 | particlesArray[i].draw(); 76 | } 77 | requestAnimationFrame( animate ); 78 | } 79 | animate(); 80 | 81 | function calculateBrightness(red, green, blue){ 82 | return Math.sqrt( 83 | (red * red) * 0.299 + 84 | (green * green) * 0.587 + 85 | (blue * blue) * 0.114 86 | ); 87 | } 88 | 89 | }); 90 | // const myImage=new Image(); 91 | 92 | // myImage.src="data:image/png;base64,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"; 93 | // // const canvas=document.getElementById("canvas1"); 94 | // // const ctx=canvas.getContext('2d'); 95 | // // canvas.width=500; 96 | // // canvas.height=706; 97 | // // ctx.drawImage(myImage,0,0,canvaswidth,canvasheight); 98 | // myImage.addEventListener('load',function(){ 99 | // const canvas=document.getElementById("canvas1"); 100 | // const ctx=canvas.getContext('2d'); 101 | // canvas.width=500; 102 | // canvas.height=706; 103 | // ctx.drawImage(myImage,0,0,canvas.width,canvas.height); 104 | // let particlesArray=[]; 105 | // let numberOfParticles=5000; 106 | // class Particle{ 107 | // constructor(){ 108 | // this.x=Math.random() * canvas.width; 109 | // this.y=1; 110 | // this.speed=0; 111 | // this.velocity=Math.random() * 3.5; 112 | // this.size=Math.random() * 1.5+ 1; 113 | // } 114 | // update(){ 115 | // this.y += this.velocity; 116 | // if(this.y>=canvas.height){ 117 | // this.y=0; 118 | // this.x=Math.random() * canvas.width; 119 | // } 120 | // } 121 | // draw(){ 122 | // ctx.beginPath(); 123 | // ctx.fillStyle='white'; 124 | // ctx.arc=(this.x,this.y,this.size,0,Math.PI * 2) 125 | // ctx.fill() 126 | // } 127 | // } 128 | // function init(){ 129 | // for(let i=0;i128){ 81 | let positionX=x+adjustX; 82 | let positionY=y+adjustY; 83 | particalArr.push(new Partical(positionX*20, 84 | positionY*20)) 85 | } 86 | } 87 | 88 | } 89 | 90 | // for(let i =0;i<1000;i++){ 91 | // let x=Math.random()*canvas.width; 92 | // let y=Math.random()*canvas.height; 93 | // particalArr.push(new Partical(x,y)) 94 | // } 95 | // particalArr.push(new Partical(200,200)) 96 | // particalArr.push(new Partical(50,50)) 97 | } 98 | init(); 99 | console.log(particalArr) 100 | 101 | function animate(){ 102 | ctx.clearRect(0,0,canvas.width,canvas.height); 103 | for(let i=0;i128){ 81 | let positionX=x+adjustX; 82 | let positionY=y+adjustY; 83 | particalArr.push(new Partical(positionX*20, 84 | positionY*20)) 85 | } 86 | } 87 | 88 | } 89 | 90 | // for(let i =0;i<1000;i++){ 91 | // let x=Math.random()*canvas.width; 92 | // let y=Math.random()*canvas.height; 93 | // particalArr.push(new Partical(x,y)) 94 | // } 95 | // particalArr.push(new Partical(200,200)) 96 | // particalArr.push(new Partical(50,50)) 97 | } 98 | init(); 99 | console.log(particalArr) 100 | 101 | function animate(){ 102 | ctx.clearRect(0,0,canvas.width,canvas.height); 103 | for(let i=0;i 4) { 20 | push(); 21 | rotate(angle); 22 | branch(len * 0.67); 23 | pop(); 24 | push(); 25 | rotate(-angle); 26 | branch(len * 0.67); 27 | pop(); 28 | } 29 | 30 | // line(0,0,0,-len*0.67) 31 | } 32 | -------------------------------------------------------------------------------- /sketch1.js: -------------------------------------------------------------------------------- 1 | function setup(){ 2 | createCanvas(640,360) 3 | } 4 | function draw(){ 5 | rect(100,200,75,150) 6 | } -------------------------------------------------------------------------------- /snake.js: -------------------------------------------------------------------------------- 1 | 2 | function Snake(){ 3 | this.x=0; 4 | this.y=0; 5 | this.xspeed=1; 6 | this.yspeed=0; 7 | 8 | this.dir=function(x,y){ 9 | this.xspeed=x; 10 | this.yspeed=y; 11 | } 12 | 13 | this.update=function(){ 14 | this.x=this.x+ this.xspeed +scl; 15 | this.y=this.y+ this.yspeed +scl; 16 | } 17 | 18 | this.show=function(){ 19 | fill(255) 20 | rect(this.x,this.y,scl,scl) 21 | } 22 | } -------------------------------------------------------------------------------- /snow.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 157 | 158 |
159 | 160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 | 171 |
172 |
173 |
174 |
175 |
176 | 177 |
178 |
179 |
180 | 181 |
182 | 183 | 184 | -------------------------------------------------------------------------------- /solar/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: black; 3 | display: flex; 4 | overflow: hidden; 5 | perspective: 800px; 6 | } 7 | 8 | .planet-wrapper { 9 | width: 400px; 10 | height: 400px; 11 | margin: auto; 12 | display: flex; 13 | flex-shrink: 0; 14 | position: relative; 15 | transform-style: preserve-3d; 16 | transform: rotateX(65deg) rotateY(15deg); 17 | transition: transform 300ms cubic-bezier(0.25, 0.55, 0.3, 1.75); 18 | } 19 | 20 | .ring { 21 | margin: auto; 22 | display: flex; 23 | flex-shrink: 0; 24 | position: relative; 25 | box-sizing: border-box; 26 | border-radius: 50%; 27 | } 28 | 29 | .ring.ring-1 { 30 | width: 400px; 31 | height: 400px; 32 | border: solid 20px #efefef; 33 | } 34 | 35 | .ring.ring-2 { 36 | width: 356px; 37 | height: 356px; 38 | border: solid 46px #dfdfdf; 39 | } 40 | 41 | .planet { 42 | background-image: linear-gradient(195deg, #ba8700, #f5c719, #e2ae09, #ce9e01, #eecd1c, #e2ae09, #eac62d, #ba9a00, #f5c719, #ba8700); 43 | width: 200px; 44 | height: 200px; 45 | margin: auto; 46 | overflow: hidden; 47 | position: relative; 48 | border-radius: 50%; 49 | transform-style: preserve-3d; 50 | transform: rotateX(-65deg) rotateY(-15deg) rotateZ(-15deg) translateY(5%); 51 | transition: transform 300ms cubic-bezier(0.25, 0.55, 0.3, 1.75); 52 | } 53 | 54 | .face { 55 | width: 100%; 56 | height: 100%; 57 | } 58 | 59 | .eyes { 60 | width: 100%; 61 | height: 12.5px; 62 | display: flex; 63 | justify-content: space-evenly; 64 | position: absolute; 65 | top: 40%; 66 | } 67 | 68 | .eye { 69 | background-color: #0a0a0a; 70 | height: 12.5px; 71 | width: 12.5px; 72 | position: relative; 73 | border-radius: 50%; 74 | } 75 | 76 | .eye:after { 77 | content: ''; 78 | background-color: #f0f0f0; 79 | width: 20%; 80 | height: 20%; 81 | position: absolute; 82 | top: 20%; 83 | left: 20%; 84 | border-radius: 50%; 85 | } 86 | 87 | .blushes { 88 | width: 100%; 89 | height: 7.5px; 90 | display: flex; 91 | justify-content: space-evenly; 92 | position: absolute; 93 | top: 50%; 94 | } 95 | 96 | .blush { 97 | background-color: #ff5985; 98 | width: 15px; 99 | height: 7.5px; 100 | border-radius: 50%; 101 | } 102 | 103 | .blush:first-child { 104 | margin-right: 15px; 105 | } 106 | 107 | .blush:last-child { 108 | margin-left: 15px; 109 | } 110 | 111 | .mouth { 112 | width: 30px; 113 | height: 24.5px; 114 | border: solid 4px #000000; 115 | border-top: 0; 116 | position: absolute; 117 | top: 55%; 118 | left: calc(50% - 15px); 119 | box-sizing: border-box; 120 | border-radius: 0 0 50% 50% / 0 0 70% 70%; 121 | } 122 | 123 | .mask { 124 | background-image: radial-gradient(circle at 50% 30%, rgba(255, 255, 255, 0.25) 30%, black 90%); 125 | width: 125%; 126 | height: 125%; 127 | position: absolute; 128 | top: 0; 129 | } -------------------------------------------------------------------------------- /solar/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Planet 8 | 9 | 10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 | 32 | 33 | -------------------------------------------------------------------------------- /style.css: -------------------------------------------------------------------------------- 1 | /* { 2 | margin: 0; 3 | padding: 0; 4 | box-sizing: border-box; 5 | 6 | } */ 7 | /* body{ 8 | overflow: hidden; 9 | background: black; 10 | } */ 11 | /* #canvas{ 12 | position: absolute; 13 | top:0; 14 | left:0; 15 | 16 | } */ 17 | /* #canvas1{ 18 | border: 5px solid white; 19 | top:50%; 20 | position:absolute ; 21 | left: 50%; 22 | transform: translate(-50%,-50%); 23 | width: 600px; 24 | height:600px ; 25 | } */ 26 | 27 | body{ 28 | margin: 0; 29 | font-family: sans-serif; 30 | } 31 | .editor{ 32 | display: flex; 33 | width: 100vw; 34 | height: 100vh; 35 | /* background: gray; */ 36 | 37 | } 38 | .toolbar{ 39 | width: 250px; 40 | background: #eeeeee; 41 | } 42 | .toolbar-item{ 43 | padding: 15px; 44 | 45 | } 46 | .tool-label{ 47 | display: block; 48 | margin-bottom: 5px; 49 | font-size: 14px; 50 | font-weight: bold; 51 | 52 | } 53 | .tool-input{ 54 | width: 100%; 55 | } 56 | .image-area{ 57 | flex-grow: 1; 58 | padding: 20px; 59 | background: gray; 60 | } 61 | #canvas{ 62 | max-width: 100%; 63 | max-height: 100%; 64 | 65 | 66 | } -------------------------------------------------------------------------------- /sunset/building.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chhavi48/Canvas-And-P5.javascript/671dc17699e081bc3ae8622b292294f87d72ba65/sunset/building.png -------------------------------------------------------------------------------- /sunset/index.css: -------------------------------------------------------------------------------- 1 | body{ 2 | background-color: #ccccff; 3 | margin: 0; 4 | overflow-y: hidden; 5 | animation:sky 5.5s 2s forwards; 6 | } 7 | @keyframes sky { 8 | 50%{ 9 | background-color: #ffd700; 10 | 11 | } 12 | 65%{ 13 | background-color: #ffb90f; 14 | 15 | } 16 | 85%{ 17 | background-color: #b39800; 18 | 19 | } 20 | 100%{ 21 | background-color: #68228b; 22 | 23 | } 24 | 25 | } 26 | img{ 27 | position: absolute; 28 | bottom: 0px; 29 | 30 | } 31 | .sun 32 | { 33 | background-color: #ff8c1a; 34 | height: 100px; 35 | width: 100px; 36 | border-radius: 50%; 37 | position:absolute; 38 | left: 50%; 39 | box-shadow: 0px 0px 20px 5px #ff8c1a; 40 | animation: sunset 15s forwards; 41 | 42 | } 43 | @keyframes sunset { 44 | 100%{ 45 | transform: translateY(750px); 46 | } 47 | 48 | 49 | 50 | 51 | } 52 | .moon{ 53 | background-color: transparent; 54 | height: 100px; 55 | width: 100px; 56 | border-radius: 50%; 57 | box-shadow: -20px 10px white; 58 | position: absolute; 59 | left: 10%; 60 | top: 5%; 61 | opacity: 0; 62 | animation: night 0.8s 7s forwards; 63 | 64 | } 65 | @keyframes night { 66 | 100%{ 67 | opacity: 1; 68 | } 69 | 70 | } -------------------------------------------------------------------------------- /sunset/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Document 8 | 78 | 79 | 80 | 81 | 82 |
83 | 84 |
85 | 86 | 87 | 88 | 89 | 90 | --------------------------------------------------------------------------------