fyenne commited on
Commit
4513766
1 Parent(s): 464ae7e

add react and vue

Browse files
Files changed (48) hide show
  1. demo.ipynb +0 -548
  2. jsfiles/data_nivo.js +272 -0
  3. jsfiles/index.html +44 -0
  4. jsfiles/index.js +143 -0
  5. jsfiles/js_script.js +2 -1
  6. jsfiles/jslearn.html +0 -21
  7. jsfiles/jslearn.md +0 -49
  8. jsfiles/main.css +51 -0
  9. jsfiles/nivo.js +76 -0
  10. my-app/.gitignore +23 -0
  11. my-app/README.md +70 -0
  12. my-app/package-lock.json +0 -0
  13. my-app/package.json +38 -0
  14. my-app/public/favicon.ico +0 -0
  15. my-app/public/index.html +43 -0
  16. my-app/public/manifest.json +25 -0
  17. my-app/public/robots.txt +3 -0
  18. my-app/src/App.css +38 -0
  19. my-app/src/App.js +25 -0
  20. my-app/src/App.test.js +8 -0
  21. my-app/src/index.css +13 -0
  22. my-app/src/index.js +17 -0
  23. my-app/src/logo.svg +1 -0
  24. my-app/src/reportWebVitals.js +13 -0
  25. my-app/src/setupTests.js +5 -0
  26. notebook_for_knit.html +0 -0
  27. notebook_for_knit.ipynb +0 -0
  28. vue-project/.gitignore +28 -0
  29. vue-project/.vscode/extensions.json +3 -0
  30. vue-project/README.md +29 -0
  31. vue-project/index.html +13 -0
  32. vue-project/package-lock.json +435 -0
  33. vue-project/package.json +16 -0
  34. vue-project/public/favicon.ico +0 -0
  35. vue-project/src/App.vue +47 -0
  36. vue-project/src/assets/base.css +74 -0
  37. vue-project/src/assets/logo.svg +1 -0
  38. vue-project/src/assets/main.css +35 -0
  39. vue-project/src/components/HelloWorld.vue +43 -0
  40. vue-project/src/components/TheWelcome.vue +84 -0
  41. vue-project/src/components/WelcomeItem.vue +86 -0
  42. vue-project/src/components/icons/IconCommunity.vue +7 -0
  43. vue-project/src/components/icons/IconDocumentation.vue +7 -0
  44. vue-project/src/components/icons/IconEcosystem.vue +7 -0
  45. vue-project/src/components/icons/IconSupport.vue +7 -0
  46. vue-project/src/components/icons/IconTooling.vue +19 -0
  47. vue-project/src/main.js +6 -0
  48. vue-project/vite.config.js +14 -0
demo.ipynb DELETED
@@ -1,548 +0,0 @@
1
- {
2
- "cells": [
3
- {
4
- "cell_type": "code",
5
- "execution_count": 1,
6
- "metadata": {},
7
- "outputs": [],
8
- "source": [
9
- "%load_ext pretty_jupyter\n",
10
- "\n",
11
- "import pandas as pd\n",
12
- "import matplotlib.pyplot as plt\n",
13
- "import seaborn as sns"
14
- ]
15
- },
16
- {
17
- "cell_type": "code",
18
- "execution_count": 2,
19
- "metadata": {},
20
- "outputs": [],
21
- "source": [
22
- "# set theming to \"seaborn\" (instead of matplotlib) and set background to white so it works with both normal and darkmode\n",
23
- "plt.plot([0, 1], [0, 1])\n",
24
- "plt.close()\n",
25
- "sns.set(rc={'figure.facecolor':'white'})\n",
26
- "sns.set_style()\n",
27
- "\n",
28
- "\n",
29
- "blue_color = sns.color_palette()[0]"
30
- ]
31
- },
32
- {
33
- "cell_type": "code",
34
- "execution_count": 3,
35
- "metadata": {},
36
- "outputs": [
37
- {
38
- "data": {
39
- "text/markdown": [
40
- "\n",
41
- "## Motivation\n",
42
- "The goal of this file is to demonstrate the capabilities of Pretty Jupyter package."
43
- ],
44
- "text/plain": [
45
- "<IPython.core.display.Markdown object>"
46
- ]
47
- },
48
- "execution_count": 3,
49
- "metadata": {},
50
- "output_type": "execute_result"
51
- }
52
- ],
53
- "source": [
54
- "%%jinja markdown\n",
55
- "\n",
56
- "## Motivation\n",
57
- "The goal of this file is to demonstrate the capabilities of Pretty Jupyter package."
58
- ]
59
- },
60
- {
61
- "cell_type": "code",
62
- "execution_count": 4,
63
- "metadata": {},
64
- "outputs": [
65
- {
66
- "data": {
67
- "text/markdown": [
68
- "\n",
69
- "## Input Data\n",
70
- "<span class='pj-token tabset tabset-pills' style='display: none;'></span>\n",
71
- "\n",
72
- "In this section, we inspect the input data."
73
- ],
74
- "text/plain": [
75
- "<IPython.core.display.Markdown object>"
76
- ]
77
- },
78
- "execution_count": 4,
79
- "metadata": {},
80
- "output_type": "execute_result"
81
- }
82
- ],
83
- "source": [
84
- "%%jinja markdown\n",
85
- "\n",
86
- "## Input Data\n",
87
- "[//]: <> (-.- tabset tabset-pills)\n",
88
- "\n",
89
- "In this section, we inspect the input data."
90
- ]
91
- },
92
- {
93
- "cell_type": "code",
94
- "execution_count": 5,
95
- "metadata": {},
96
- "outputs": [
97
- {
98
- "data": {
99
- "text/html": [
100
- "<div>\n",
101
- "<style scoped>\n",
102
- " .dataframe tbody tr th:only-of-type {\n",
103
- " vertical-align: middle;\n",
104
- " }\n",
105
- "\n",
106
- " .dataframe tbody tr th {\n",
107
- " vertical-align: top;\n",
108
- " }\n",
109
- "\n",
110
- " .dataframe thead th {\n",
111
- " text-align: right;\n",
112
- " }\n",
113
- "</style>\n",
114
- "<table border=\"1\" class=\"dataframe\">\n",
115
- " <thead>\n",
116
- " <tr style=\"text-align: right;\">\n",
117
- " <th></th>\n",
118
- " <th>money</th>\n",
119
- " <th>weight</th>\n",
120
- " <th>gender</th>\n",
121
- " </tr>\n",
122
- " </thead>\n",
123
- " <tbody>\n",
124
- " <tr>\n",
125
- " <th>0</th>\n",
126
- " <td>30000</td>\n",
127
- " <td>80</td>\n",
128
- " <td>Male</td>\n",
129
- " </tr>\n",
130
- " <tr>\n",
131
- " <th>1</th>\n",
132
- " <td>40000</td>\n",
133
- " <td>50</td>\n",
134
- " <td>Female</td>\n",
135
- " </tr>\n",
136
- " <tr>\n",
137
- " <th>2</th>\n",
138
- " <td>70000</td>\n",
139
- " <td>80</td>\n",
140
- " <td>Male</td>\n",
141
- " </tr>\n",
142
- " <tr>\n",
143
- " <th>3</th>\n",
144
- " <td>65000</td>\n",
145
- " <td>70</td>\n",
146
- " <td>Male</td>\n",
147
- " </tr>\n",
148
- " <tr>\n",
149
- " <th>4</th>\n",
150
- " <td>25000</td>\n",
151
- " <td>54</td>\n",
152
- " <td>Female</td>\n",
153
- " </tr>\n",
154
- " </tbody>\n",
155
- "</table>\n",
156
- "</div>"
157
- ],
158
- "text/plain": [
159
- " money weight gender\n",
160
- "0 30000 80 Male\n",
161
- "1 40000 50 Female\n",
162
- "2 70000 80 Male\n",
163
- "3 65000 70 Male\n",
164
- "4 25000 54 Female"
165
- ]
166
- },
167
- "execution_count": 5,
168
- "metadata": {},
169
- "output_type": "execute_result"
170
- }
171
- ],
172
- "source": [
173
- "data = pd.DataFrame({\n",
174
- " \"money\": [30000, 40000, 70000, 65000, 25000],\n",
175
- " \"weight\": [80, 50, 80, 70, 54],\n",
176
- " \"gender\": [\"Male\", \"Female\", \"Male\", \"Male\", \"Female\"]\n",
177
- "})\n",
178
- "data.head()"
179
- ]
180
- },
181
- {
182
- "cell_type": "code",
183
- "execution_count": 6,
184
- "metadata": {},
185
- "outputs": [
186
- {
187
- "data": {
188
- "text/markdown": [
189
- "\n",
190
- "The input dataset has:\n",
191
- "- 5 rows,\n",
192
- "- 3 columns.\n",
193
- "\n",
194
- "The columns and their dtypes are the following:"
195
- ],
196
- "text/plain": [
197
- "<IPython.core.display.Markdown object>"
198
- ]
199
- },
200
- "execution_count": 6,
201
- "metadata": {},
202
- "output_type": "execute_result"
203
- }
204
- ],
205
- "source": [
206
- "%%jinja markdown\n",
207
- "\n",
208
- "The input dataset has:\n",
209
- "- {{ data.shape[0] }} rows,\n",
210
- "- {{ data.columns.shape[0]}} columns.\n",
211
- "\n",
212
- "The columns and their dtypes are the following:"
213
- ]
214
- },
215
- {
216
- "cell_type": "code",
217
- "execution_count": 7,
218
- "metadata": {},
219
- "outputs": [
220
- {
221
- "data": {
222
- "text/html": [
223
- "<div>\n",
224
- "<style scoped>\n",
225
- " .dataframe tbody tr th:only-of-type {\n",
226
- " vertical-align: middle;\n",
227
- " }\n",
228
- "\n",
229
- " .dataframe tbody tr th {\n",
230
- " vertical-align: top;\n",
231
- " }\n",
232
- "\n",
233
- " .dataframe thead th {\n",
234
- " text-align: right;\n",
235
- " }\n",
236
- "</style>\n",
237
- "<table border=\"1\" class=\"dataframe\">\n",
238
- " <thead>\n",
239
- " <tr style=\"text-align: right;\">\n",
240
- " <th></th>\n",
241
- " <th>col_name</th>\n",
242
- " <th>dtype</th>\n",
243
- " </tr>\n",
244
- " </thead>\n",
245
- " <tbody>\n",
246
- " <tr>\n",
247
- " <th>0</th>\n",
248
- " <td>money</td>\n",
249
- " <td>int64</td>\n",
250
- " </tr>\n",
251
- " <tr>\n",
252
- " <th>1</th>\n",
253
- " <td>weight</td>\n",
254
- " <td>int64</td>\n",
255
- " </tr>\n",
256
- " <tr>\n",
257
- " <th>2</th>\n",
258
- " <td>gender</td>\n",
259
- " <td>object</td>\n",
260
- " </tr>\n",
261
- " </tbody>\n",
262
- "</table>\n",
263
- "</div>"
264
- ],
265
- "text/plain": [
266
- " col_name dtype\n",
267
- "0 money int64\n",
268
- "1 weight int64\n",
269
- "2 gender object"
270
- ]
271
- },
272
- "execution_count": 7,
273
- "metadata": {},
274
- "output_type": "execute_result"
275
- }
276
- ],
277
- "source": [
278
- "data.dtypes.reset_index().rename(columns={\"index\": \"col_name\", 0: \"dtype\"})"
279
- ]
280
- },
281
- {
282
- "cell_type": "code",
283
- "execution_count": 8,
284
- "metadata": {},
285
- "outputs": [
286
- {
287
- "data": {
288
- "text/markdown": [
289
- "\n",
290
- "### Money"
291
- ],
292
- "text/plain": [
293
- "<IPython.core.display.Markdown object>"
294
- ]
295
- },
296
- "execution_count": 8,
297
- "metadata": {},
298
- "output_type": "execute_result"
299
- }
300
- ],
301
- "source": [
302
- "%%jinja markdown\n",
303
- "\n",
304
- "### Money"
305
- ]
306
- },
307
- {
308
- "cell_type": "code",
309
- "execution_count": 9,
310
- "metadata": {},
311
- "outputs": [
312
- {
313
- "data": {
314
- "image/png": "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",
315
- "text/plain": [
316
- "<Figure size 432x288 with 1 Axes>"
317
- ]
318
- },
319
- "metadata": {},
320
- "output_type": "display_data"
321
- }
322
- ],
323
- "source": [
324
- "fig, ax = plt.subplots()\n",
325
- "bins = data[\"money\"].sort_values().pipe(pd.cut,\n",
326
- " [0, 20000, 30000, 50000, 100000, 1000000000000],\n",
327
- " labels=[\"0-20000\", \"20000-30000\", \"30000-50000\", \"50000-100000\", \">100000\"]).value_counts()\n",
328
- "sns.barplot(x=bins.index, y=bins.values, color=blue_color)\n",
329
- "ax.set(title=\"Histogram of money\", xlabel=\"Money category\", ylabel=\"Count\")\n",
330
- "ax.set_xticklabels(ax.get_xticklabels(), rotation=45)\n",
331
- "plt.show()"
332
- ]
333
- },
334
- {
335
- "cell_type": "code",
336
- "execution_count": 10,
337
- "metadata": {},
338
- "outputs": [
339
- {
340
- "data": {
341
- "text/markdown": [
342
- "### Gender"
343
- ],
344
- "text/plain": [
345
- "<IPython.core.display.Markdown object>"
346
- ]
347
- },
348
- "execution_count": 10,
349
- "metadata": {},
350
- "output_type": "execute_result"
351
- }
352
- ],
353
- "source": [
354
- "%%jinja markdown\n",
355
- "### Gender"
356
- ]
357
- },
358
- {
359
- "cell_type": "code",
360
- "execution_count": 11,
361
- "metadata": {},
362
- "outputs": [
363
- {
364
- "name": "stderr",
365
- "output_type": "stream",
366
- "text": [
367
- "C:\\Users\\janpa\\AppData\\Local\\Temp\\ipykernel_12236\\2606098142.py:3: UserWarning: Matplotlib is currently using module://matplotlib_inline.backend_inline, which is a non-GUI backend, so cannot show the figure.\n",
368
- " ax.figure.show()\n"
369
- ]
370
- },
371
- {
372
- "data": {
373
- "image/png": "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",
374
- "text/plain": [
375
- "<Figure size 432x288 with 1 Axes>"
376
- ]
377
- },
378
- "metadata": {},
379
- "output_type": "display_data"
380
- }
381
- ],
382
- "source": [
383
- "ax = sns.barplot(data=data[\"gender\"].value_counts().reset_index(), x=\"index\", y=\"gender\", color=blue_color)\n",
384
- "ax.set(title=\"Gender countplot\", xlabel=\"Gender\", ylabel=\"Count\")\n",
385
- "ax.figure.show()"
386
- ]
387
- },
388
- {
389
- "cell_type": "code",
390
- "execution_count": 12,
391
- "metadata": {},
392
- "outputs": [
393
- {
394
- "data": {
395
- "text/markdown": [
396
- "\n",
397
- "### Weight\n",
398
- "Weight is a continuous variable."
399
- ],
400
- "text/plain": [
401
- "<IPython.core.display.Markdown object>"
402
- ]
403
- },
404
- "execution_count": 12,
405
- "metadata": {},
406
- "output_type": "execute_result"
407
- }
408
- ],
409
- "source": [
410
- "%%jinja markdown\n",
411
- "\n",
412
- "### Weight\n",
413
- "Weight is a continuous variable."
414
- ]
415
- },
416
- {
417
- "cell_type": "code",
418
- "execution_count": 13,
419
- "metadata": {},
420
- "outputs": [
421
- {
422
- "data": {
423
- "image/png": "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",
424
- "text/plain": [
425
- "<Figure size 432x288 with 1 Axes>"
426
- ]
427
- },
428
- "metadata": {},
429
- "output_type": "display_data"
430
- }
431
- ],
432
- "source": [
433
- "ax = sns.kdeplot(data[\"weight\"])\n",
434
- "ax.set(title=\"Weight KDE\", xlabel=\"Weight\")\n",
435
- "plt.show()"
436
- ]
437
- },
438
- {
439
- "cell_type": "code",
440
- "execution_count": 14,
441
- "metadata": {},
442
- "outputs": [
443
- {
444
- "data": {
445
- "text/markdown": [
446
- "### Correlations\n",
447
- "\n",
448
- "Correlation between the money and weight seems to be rather weak. The gender is not analyzed because it's a categorical variable."
449
- ],
450
- "text/plain": [
451
- "<IPython.core.display.Markdown object>"
452
- ]
453
- },
454
- "execution_count": 14,
455
- "metadata": {},
456
- "output_type": "execute_result"
457
- }
458
- ],
459
- "source": [
460
- "%%jinja markdown\n",
461
- "### Correlations\n",
462
- "\n",
463
- "Correlation between the money and weight seems to be rather weak. The gender is not analyzed because it's a categorical variable.\n"
464
- ]
465
- },
466
- {
467
- "cell_type": "code",
468
- "execution_count": 15,
469
- "metadata": {},
470
- "outputs": [
471
- {
472
- "data": {
473
- "image/png": "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",
474
- "text/plain": [
475
- "<Figure size 432x288 with 2 Axes>"
476
- ]
477
- },
478
- "metadata": {},
479
- "output_type": "display_data"
480
- }
481
- ],
482
- "source": [
483
- "sns.heatmap(data.corr().abs(), cmap=\"Blues\", vmin=0, vmax=1)\n",
484
- "plt.show()"
485
- ]
486
- },
487
- {
488
- "cell_type": "code",
489
- "execution_count": 16,
490
- "metadata": {},
491
- "outputs": [
492
- {
493
- "data": {
494
- "text/markdown": [
495
- "\n",
496
- "## Conclusion\n",
497
- "\n",
498
- "**Pretty Jupyter is awesome and I'm definitely installing it ;).**"
499
- ],
500
- "text/plain": [
501
- "<IPython.core.display.Markdown object>"
502
- ]
503
- },
504
- "execution_count": 16,
505
- "metadata": {},
506
- "output_type": "execute_result"
507
- }
508
- ],
509
- "source": [
510
- "%%jinja markdown\n",
511
- "\n",
512
- "## Conclusion\n",
513
- "\n",
514
- "**Pretty Jupyter is awesome and I'm definitely installing it ;).**"
515
- ]
516
- }
517
- ],
518
- "metadata": {
519
- "code_folding": "hide",
520
- "kernelspec": {
521
- "display_name": "Python 3.8.8 ('siming')",
522
- "language": "python",
523
- "name": "python3"
524
- },
525
- "language_info": {
526
- "codemirror_mode": {
527
- "name": "ipython",
528
- "version": 3
529
- },
530
- "file_extension": ".py",
531
- "mimetype": "text/x-python",
532
- "name": "python",
533
- "nbconvert_exporter": "python",
534
- "pygments_lexer": "ipython3",
535
- "version": "3.8.8"
536
- },
537
- "orig_nbformat": 4,
538
- "title": "Pretty Jupyter Demo",
539
- "toc": true,
540
- "vscode": {
541
- "interpreter": {
542
- "hash": "2537094cdaaf8cbca77398104c426db43a9f1c17b808f90867ef58a7e69b756d"
543
- }
544
- }
545
- },
546
- "nbformat": 4,
547
- "nbformat_minor": 2
548
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
jsfiles/data_nivo.js ADDED
@@ -0,0 +1,272 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "id": "japan",
4
+ "color": "hsl(174, 70%, 50%)",
5
+ "data": [
6
+ {
7
+ "x": "plane",
8
+ "y": 258
9
+ },
10
+ {
11
+ "x": "helicopter",
12
+ "y": 88
13
+ },
14
+ {
15
+ "x": "boat",
16
+ "y": 160
17
+ },
18
+ {
19
+ "x": "train",
20
+ "y": 45
21
+ },
22
+ {
23
+ "x": "subway",
24
+ "y": 27
25
+ },
26
+ {
27
+ "x": "bus",
28
+ "y": 89
29
+ },
30
+ {
31
+ "x": "car",
32
+ "y": 211
33
+ },
34
+ {
35
+ "x": "moto",
36
+ "y": 147
37
+ },
38
+ {
39
+ "x": "bicycle",
40
+ "y": 269
41
+ },
42
+ {
43
+ "x": "horse",
44
+ "y": 108
45
+ },
46
+ {
47
+ "x": "skateboard",
48
+ "y": 238
49
+ },
50
+ {
51
+ "x": "others",
52
+ "y": 37
53
+ }
54
+ ]
55
+ },
56
+ {
57
+ "id": "france",
58
+ "color": "hsl(159, 70%, 50%)",
59
+ "data": [
60
+ {
61
+ "x": "plane",
62
+ "y": 153
63
+ },
64
+ {
65
+ "x": "helicopter",
66
+ "y": 90
67
+ },
68
+ {
69
+ "x": "boat",
70
+ "y": 216
71
+ },
72
+ {
73
+ "x": "train",
74
+ "y": 48
75
+ },
76
+ {
77
+ "x": "subway",
78
+ "y": 116
79
+ },
80
+ {
81
+ "x": "bus",
82
+ "y": 283
83
+ },
84
+ {
85
+ "x": "car",
86
+ "y": 213
87
+ },
88
+ {
89
+ "x": "moto",
90
+ "y": 206
91
+ },
92
+ {
93
+ "x": "bicycle",
94
+ "y": 171
95
+ },
96
+ {
97
+ "x": "horse",
98
+ "y": 33
99
+ },
100
+ {
101
+ "x": "skateboard",
102
+ "y": 272
103
+ },
104
+ {
105
+ "x": "others",
106
+ "y": 294
107
+ }
108
+ ]
109
+ },
110
+ {
111
+ "id": "us",
112
+ "color": "hsl(108, 70%, 50%)",
113
+ "data": [
114
+ {
115
+ "x": "plane",
116
+ "y": 279
117
+ },
118
+ {
119
+ "x": "helicopter",
120
+ "y": 12
121
+ },
122
+ {
123
+ "x": "boat",
124
+ "y": 207
125
+ },
126
+ {
127
+ "x": "train",
128
+ "y": 246
129
+ },
130
+ {
131
+ "x": "subway",
132
+ "y": 132
133
+ },
134
+ {
135
+ "x": "bus",
136
+ "y": 259
137
+ },
138
+ {
139
+ "x": "car",
140
+ "y": 272
141
+ },
142
+ {
143
+ "x": "moto",
144
+ "y": 120
145
+ },
146
+ {
147
+ "x": "bicycle",
148
+ "y": 6
149
+ },
150
+ {
151
+ "x": "horse",
152
+ "y": 296
153
+ },
154
+ {
155
+ "x": "skateboard",
156
+ "y": 108
157
+ },
158
+ {
159
+ "x": "others",
160
+ "y": 34
161
+ }
162
+ ]
163
+ },
164
+ {
165
+ "id": "germany",
166
+ "color": "hsl(283, 70%, 50%)",
167
+ "data": [
168
+ {
169
+ "x": "plane",
170
+ "y": 141
171
+ },
172
+ {
173
+ "x": "helicopter",
174
+ "y": 145
175
+ },
176
+ {
177
+ "x": "boat",
178
+ "y": 16
179
+ },
180
+ {
181
+ "x": "train",
182
+ "y": 60
183
+ },
184
+ {
185
+ "x": "subway",
186
+ "y": 68
187
+ },
188
+ {
189
+ "x": "bus",
190
+ "y": 191
191
+ },
192
+ {
193
+ "x": "car",
194
+ "y": 108
195
+ },
196
+ {
197
+ "x": "moto",
198
+ "y": 74
199
+ },
200
+ {
201
+ "x": "bicycle",
202
+ "y": 280
203
+ },
204
+ {
205
+ "x": "horse",
206
+ "y": 94
207
+ },
208
+ {
209
+ "x": "skateboard",
210
+ "y": 167
211
+ },
212
+ {
213
+ "x": "others",
214
+ "y": 88
215
+ }
216
+ ]
217
+ },
218
+ {
219
+ "id": "norway",
220
+ "color": "hsl(2, 70%, 50%)",
221
+ "data": [
222
+ {
223
+ "x": "plane",
224
+ "y": 18
225
+ },
226
+ {
227
+ "x": "helicopter",
228
+ "y": 146
229
+ },
230
+ {
231
+ "x": "boat",
232
+ "y": 153
233
+ },
234
+ {
235
+ "x": "train",
236
+ "y": 17
237
+ },
238
+ {
239
+ "x": "subway",
240
+ "y": 134
241
+ },
242
+ {
243
+ "x": "bus",
244
+ "y": 98
245
+ },
246
+ {
247
+ "x": "car",
248
+ "y": 213
249
+ },
250
+ {
251
+ "x": "moto",
252
+ "y": 60
253
+ },
254
+ {
255
+ "x": "bicycle",
256
+ "y": 242
257
+ },
258
+ {
259
+ "x": "horse",
260
+ "y": 23
261
+ },
262
+ {
263
+ "x": "skateboard",
264
+ "y": 224
265
+ },
266
+ {
267
+ "x": "others",
268
+ "y": 209
269
+ }
270
+ ]
271
+ }
272
+ ]
jsfiles/index.html ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div
2
+ id="errors"
3
+ style="
4
+ background: #c00;
5
+ color: #fff;
6
+ display: none;
7
+ margin: -20px -20px 20px;
8
+ padding: 20px;
9
+ white-space: pre-wrap;
10
+ "
11
+ ></div>
12
+ <div id="root"></div>
13
+ <script>
14
+ window.addEventListener("mousedown", function (e) {
15
+ document.body.classList.add("mouse-navigation");
16
+ document.body.classList.remove("kbd-navigation");
17
+ });
18
+ window.addEventListener("keydown", function (e) {
19
+ if (e.keyCode === 9) {
20
+ document.body.classList.add("kbd-navigation");
21
+ document.body.classList.remove("mouse-navigation");
22
+ }
23
+ });
24
+ window.addEventListener("click", function (e) {
25
+ if (e.target.tagName === "A" && e.target.getAttribute("href") === "#") {
26
+ e.preventDefault();
27
+ }
28
+ });
29
+ window.onerror = function (message, source, line, col, error) {
30
+ var text = error
31
+ ? error.stack || error
32
+ : message + " (at " + source + ":" + line + ":" + col + ")";
33
+ errors.textContent += text + "\n";
34
+ errors.style.display = "";
35
+ };
36
+ console.error = (function (old) {
37
+ return function error() {
38
+ errors.textContent +=
39
+ Array.prototype.slice.call(arguments).join(" ") + "\n";
40
+ errors.style.display = "";
41
+ old.apply(this, arguments);
42
+ };
43
+ })(console.error);
44
+ </script>
jsfiles/index.js ADDED
@@ -0,0 +1,143 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ function Square(props) {
2
+ return (
3
+ <button className="square" onClick={props.onClick}>
4
+ {props.value}
5
+ </button>
6
+ );
7
+ }
8
+
9
+ class Board extends React.Component {
10
+ renderSquare(i) {
11
+ return (
12
+ <Square
13
+ value={this.props.squares[i]}
14
+ onClick={() => this.props.onClick(i)}
15
+ />
16
+ );
17
+ }
18
+
19
+ render() {
20
+ return (
21
+ <div>
22
+ <div className="board-row">
23
+ {this.renderSquare(0)}
24
+ {this.renderSquare(1)}
25
+ {this.renderSquare(2)}
26
+ </div>
27
+ <div className="board-row">
28
+ {this.renderSquare(3)}
29
+ {this.renderSquare(4)}
30
+ {this.renderSquare(5)}
31
+ </div>
32
+ <div className="board-row">
33
+ {this.renderSquare(6)}
34
+ {this.renderSquare(7)}
35
+ {this.renderSquare(8)}
36
+ </div>
37
+ </div>
38
+ );
39
+ }
40
+ }
41
+
42
+ class Game extends React.Component {
43
+ constructor(props) {
44
+ super(props);
45
+ this.state = {
46
+ history: [
47
+ {
48
+ squares: Array(9).fill(null),
49
+ },
50
+ ],
51
+ stepNumber: 0,
52
+ xIsNext: true,
53
+ };
54
+ }
55
+
56
+ handleClick(i) {
57
+ const history = this.state.history.slice(0, this.state.stepNumber + 1);
58
+ const current = history[history.length - 1];
59
+ const squares = current.squares.slice();
60
+ if (calculateWinner(squares) || squares[i]) {
61
+ return;
62
+ }
63
+ squares[i] = this.state.xIsNext ? "X" : "O";
64
+ this.setState({
65
+ history: history.concat([
66
+ {
67
+ squares: squares,
68
+ },
69
+ ]),
70
+ stepNumber: history.length,
71
+ xIsNext: !this.state.xIsNext,
72
+ });
73
+ }
74
+
75
+ jumpTo(step) {
76
+ this.setState({
77
+ stepNumber: step,
78
+ xIsNext: step % 2 === 0,
79
+ });
80
+ }
81
+
82
+ render() {
83
+ const history = this.state.history;
84
+ const current = history[this.state.stepNumber];
85
+ const winner = calculateWinner(current.squares);
86
+
87
+ const moves = history.map((step, move) => {
88
+ const desc = move ? "Go to move #" + move : "Go to game start";
89
+ return (
90
+ <li key={move}>
91
+ <button onClick={() => this.jumpTo(move)}>{desc}</button>
92
+ </li>
93
+ );
94
+ });
95
+
96
+ let status;
97
+ if (winner) {
98
+ status = "Winner: " + winner;
99
+ } else {
100
+ status = "Next player: " + (this.state.xIsNext ? "X" : "O");
101
+ }
102
+
103
+ return (
104
+ <div className="game">
105
+ <div className="game-board">
106
+ <Board
107
+ squares={current.squares}
108
+ onClick={(i) => this.handleClick(i)}
109
+ />
110
+ </div>
111
+ <div className="game-info">
112
+ <div>{status}</div>
113
+ <ol>{moves}</ol>
114
+ </div>
115
+ </div>
116
+ );
117
+ }
118
+ }
119
+
120
+ // ========================================
121
+
122
+ const root = ReactDOM.createRoot(document.getElementById("root"));
123
+ root.render(<Game />);
124
+
125
+ function calculateWinner(squares) {
126
+ const lines = [
127
+ [0, 1, 2],
128
+ [3, 4, 5],
129
+ [6, 7, 8],
130
+ [0, 3, 6],
131
+ [1, 4, 7],
132
+ [2, 5, 8],
133
+ [0, 4, 8],
134
+ [2, 4, 6],
135
+ ];
136
+ for (let i = 0; i < lines.length; i++) {
137
+ const [a, b, c] = lines[i];
138
+ if (squares[a] && squares[a] === squares[b] && squares[a] === squares[c]) {
139
+ return squares[a];
140
+ }
141
+ }
142
+ return null;
143
+ }
jsfiles/js_script.js CHANGED
@@ -216,9 +216,10 @@ var arr = [2, 7, 0, 6, 1, 4, 8, 3]
216
  console.log((arr) instanceof Array, typeof arr)
217
  console.log(arr.sort())
218
  console.log(arr.sort().reverse())
219
-
220
  console.log(arr.sort((a, b) => a - b)) // 递增
221
  console.log(arr.sort((a, b) => b - a)) // 递减
 
222
 
223
 
224
  /* ========================================================================== */
 
216
  console.log((arr) instanceof Array, typeof arr)
217
  console.log(arr.sort())
218
  console.log(arr.sort().reverse())
219
+ console.log("==========================================================================")
220
  console.log(arr.sort((a, b) => a - b)) // 递增
221
  console.log(arr.sort((a, b) => b - a)) // 递减
222
+ console.log(arr.sort((a, b) => b - a > 0)) // 递减 这个hide了一个条件.
223
 
224
 
225
  /* ========================================================================== */
jsfiles/jslearn.html DELETED
@@ -1,21 +0,0 @@
1
- <!DOCTYPE html>
2
- <!-- <script src="https://cdn.jsdelivr.net/npm/vue@2.7.7/dist/vue.js"></script> -->
3
- <html>
4
- <body>
5
- <p>Before the script...</p>
6
-
7
- <script>
8
- var main = function() {
9
- var fahr;
10
- fahr = prompt("Enter the temperature in F: ");
11
- const ratio = 5.0/9.0;
12
- let cel = (fahr - 32) * ratio;
13
- alert("The temperature in C is: " + cel);
14
- }
15
- main()
16
-
17
- </script>
18
-
19
- <p>...After the script.</p>
20
- </body>
21
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
jsfiles/jslearn.md DELETED
@@ -1,49 +0,0 @@
1
- ```yaml
2
- author: Siming Yan
3
- title: jslearning
4
- url: https://runestone.academy/ns/books/published/JS4Python/TheBasics/loops.html
5
- ```
6
-
7
- ---
8
-
9
- ```javascript
10
-
11
-
12
- function main() {
13
- console.log("Hello World!");
14
- }
15
- main()
16
- var main = function() {
17
- console.log("Hello World!2");
18
- }
19
- main()
20
- let a = 5 > 4 ? 'yes' : 'no';
21
- let b = 10 == '100' ? 'yes': 'no';
22
- console.log(a,'haha',b)
23
- ```
24
-
25
- ```javascript
26
- main(85)
27
- main(44)
28
- main(98)
29
-
30
- function main(grade) {
31
- if (grade < 60) {
32
- console.log('F');
33
- } else if (grade < 70) {
34
- console.log('D');
35
- } else if (grade < 80) {
36
- console.log('C');
37
- } else if (grade < 90) {
38
- console.log('B');
39
- } else console.log('A');
40
- }
41
-
42
-
43
- ```
44
-
45
-
46
-
47
-
48
-
49
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
jsfiles/main.css ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ body {
2
+ font: 14px "Century Gothic", Futura, sans-serif;
3
+ margin: 20px;
4
+ }
5
+
6
+ ol,
7
+ ul {
8
+ padding-left: 30px;
9
+ }
10
+
11
+ .board-row:after {
12
+ clear: both;
13
+ content: "";
14
+ display: table;
15
+ }
16
+
17
+ .status {
18
+ margin-bottom: 10px;
19
+ }
20
+
21
+ .square {
22
+ background: #fff;
23
+ border: 1px solid #999;
24
+ float: left;
25
+ font-size: 24px;
26
+ font-weight: bold;
27
+ line-height: 34px;
28
+ height: 34px;
29
+ margin-right: -1px;
30
+ margin-top: -1px;
31
+ padding: 0;
32
+ text-align: center;
33
+ width: 34px;
34
+ }
35
+
36
+ .square:focus {
37
+ outline: none;
38
+ }
39
+
40
+ .kbd-navigation .square:focus {
41
+ background: #ddd;
42
+ }
43
+
44
+ .game {
45
+ display: flex;
46
+ flex-direction: row;
47
+ }
48
+
49
+ .game-info {
50
+ margin-left: 20px;
51
+ }
jsfiles/nivo.js ADDED
@@ -0,0 +1,76 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // install (please make sure versions match peerDependencies)
2
+ // yarn add @nivo/core @nivo/line
3
+ import { ResponsiveLine } from '@nivo/line'
4
+
5
+ // make sure parent container have a defined height when using
6
+ // responsive component, otherwise height will be 0 and
7
+ // no chart will be rendered.
8
+ // website examples showcase many properties,
9
+ // you'll often use just a few of them.
10
+ const MyResponsiveLine = ({ /* see data tab */ }) => (
11
+ <ResponsiveLine
12
+ data={data_nivo}
13
+ margin={{ top: 50, right: 110, bottom: 50, left: 60 }}
14
+ xScale={{ type: 'point' }}
15
+ yScale={{
16
+ type: 'linear',
17
+ min: 'auto',
18
+ max: 'auto',
19
+ stacked: true,
20
+ reverse: false
21
+ }}
22
+ yFormat=" >-.2f"
23
+ axisTop={null}
24
+ axisRight={null}
25
+ axisBottom={{
26
+ orient: 'bottom',
27
+ tickSize: 5,
28
+ tickPadding: 5,
29
+ tickRotation: 0,
30
+ legend: 'transportation',
31
+ legendOffset: 36,
32
+ legendPosition: 'middle'
33
+ }}
34
+ axisLeft={{
35
+ orient: 'left',
36
+ tickSize: 5,
37
+ tickPadding: 5,
38
+ tickRotation: 0,
39
+ legend: 'count',
40
+ legendOffset: -40,
41
+ legendPosition: 'middle'
42
+ }}
43
+ pointSize={10}
44
+ pointColor={{ theme: 'background' }}
45
+ pointBorderWidth={2}
46
+ pointBorderColor={{ from: 'serieColor' }}
47
+ pointLabelYOffset={-12}
48
+ useMesh={true}
49
+ legends={[
50
+ {
51
+ anchor: 'bottom-right',
52
+ direction: 'column',
53
+ justify: false,
54
+ translateX: 100,
55
+ translateY: 0,
56
+ itemsSpacing: 0,
57
+ itemDirection: 'left-to-right',
58
+ itemWidth: 80,
59
+ itemHeight: 20,
60
+ itemOpacity: 0.75,
61
+ symbolSize: 12,
62
+ symbolShape: 'circle',
63
+ symbolBorderColor: 'rgba(0, 0, 0, .5)',
64
+ effects: [
65
+ {
66
+ on: 'hover',
67
+ style: {
68
+ itemBackground: 'rgba(0, 0, 0, .03)',
69
+ itemOpacity: 1
70
+ }
71
+ }
72
+ ]
73
+ }
74
+ ]}
75
+ />
76
+ )
my-app/.gitignore ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2
+
3
+ # dependencies
4
+ /node_modules
5
+ /.pnp
6
+ .pnp.js
7
+
8
+ # testing
9
+ /coverage
10
+
11
+ # production
12
+ /build
13
+
14
+ # misc
15
+ .DS_Store
16
+ .env.local
17
+ .env.development.local
18
+ .env.test.local
19
+ .env.production.local
20
+
21
+ npm-debug.log*
22
+ yarn-debug.log*
23
+ yarn-error.log*
my-app/README.md ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Getting Started with Create React App
2
+
3
+ This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).
4
+
5
+ ## Available Scripts
6
+
7
+ In the project directory, you can run:
8
+
9
+ ### `npm start`
10
+
11
+ Runs the app in the development mode.\
12
+ Open [http://localhost:3000](http://localhost:3000) to view it in your browser.
13
+
14
+ The page will reload when you make changes.\
15
+ You may also see any lint errors in the console.
16
+
17
+ ### `npm test`
18
+
19
+ Launches the test runner in the interactive watch mode.\
20
+ See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.
21
+
22
+ ### `npm run build`
23
+
24
+ Builds the app for production to the `build` folder.\
25
+ It correctly bundles React in production mode and optimizes the build for the best performance.
26
+
27
+ The build is minified and the filenames include the hashes.\
28
+ Your app is ready to be deployed!
29
+
30
+ See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.
31
+
32
+ ### `npm run eject`
33
+
34
+ **Note: this is a one-way operation. Once you `eject`, you can't go back!**
35
+
36
+ If you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.
37
+
38
+ Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.
39
+
40
+ You don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.
41
+
42
+ ## Learn More
43
+
44
+ You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).
45
+
46
+ To learn React, check out the [React documentation](https://reactjs.org/).
47
+
48
+ ### Code Splitting
49
+
50
+ This section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)
51
+
52
+ ### Analyzing the Bundle Size
53
+
54
+ This section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)
55
+
56
+ ### Making a Progressive Web App
57
+
58
+ This section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)
59
+
60
+ ### Advanced Configuration
61
+
62
+ This section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)
63
+
64
+ ### Deployment
65
+
66
+ This section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)
67
+
68
+ ### `npm run build` fails to minify
69
+
70
+ This section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)
my-app/package-lock.json ADDED
The diff for this file is too large to render. See raw diff
 
my-app/package.json ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "my-app",
3
+ "version": "0.1.0",
4
+ "private": true,
5
+ "dependencies": {
6
+ "@testing-library/jest-dom": "^5.16.5",
7
+ "@testing-library/react": "^13.3.0",
8
+ "@testing-library/user-event": "^13.5.0",
9
+ "react": "^18.2.0",
10
+ "react-dom": "^18.2.0",
11
+ "react-scripts": "5.0.1",
12
+ "web-vitals": "^2.1.4"
13
+ },
14
+ "scripts": {
15
+ "start": "react-scripts start",
16
+ "build": "react-scripts build",
17
+ "test": "react-scripts test",
18
+ "eject": "react-scripts eject"
19
+ },
20
+ "eslintConfig": {
21
+ "extends": [
22
+ "react-app",
23
+ "react-app/jest"
24
+ ]
25
+ },
26
+ "browserslist": {
27
+ "production": [
28
+ ">0.2%",
29
+ "not dead",
30
+ "not op_mini all"
31
+ ],
32
+ "development": [
33
+ "last 1 chrome version",
34
+ "last 1 firefox version",
35
+ "last 1 safari version"
36
+ ]
37
+ }
38
+ }
my-app/public/favicon.ico ADDED
my-app/public/index.html ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
7
+ <meta name="theme-color" content="#000000" />
8
+ <meta
9
+ name="description"
10
+ content="Web site created using create-react-app"
11
+ />
12
+ <link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
13
+ <!--
14
+ manifest.json provides metadata used when your web app is installed on a
15
+ user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
16
+ -->
17
+ <link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
18
+ <!--
19
+ Notice the use of %PUBLIC_URL% in the tags above.
20
+ It will be replaced with the URL of the `public` folder during the build.
21
+ Only files inside the `public` folder can be referenced from the HTML.
22
+
23
+ Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
24
+ work correctly both with client-side routing and a non-root public URL.
25
+ Learn how to configure a non-root public URL by running `npm run build`.
26
+ -->
27
+ <title>React App</title>
28
+ </head>
29
+ <body>
30
+ <noscript>You need to enable JavaScript to run this app.</noscript>
31
+ <div id="root"></div>
32
+ <!--
33
+ This HTML file is a template.
34
+ If you open it directly in the browser, you will see an empty page.
35
+
36
+ You can add webfonts, meta tags, or analytics to this file.
37
+ The build step will place the bundled scripts into the <body> tag.
38
+
39
+ To begin the development, run `npm start` or `yarn start`.
40
+ To create a production bundle, use `npm run build` or `yarn build`.
41
+ -->
42
+ </body>
43
+ </html>
my-app/public/manifest.json ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "short_name": "React App",
3
+ "name": "Create React App Sample",
4
+ "icons": [
5
+ {
6
+ "src": "favicon.ico",
7
+ "sizes": "64x64 32x32 24x24 16x16",
8
+ "type": "image/x-icon"
9
+ },
10
+ {
11
+ "src": "logo192.png",
12
+ "type": "image/png",
13
+ "sizes": "192x192"
14
+ },
15
+ {
16
+ "src": "logo512.png",
17
+ "type": "image/png",
18
+ "sizes": "512x512"
19
+ }
20
+ ],
21
+ "start_url": ".",
22
+ "display": "standalone",
23
+ "theme_color": "#000000",
24
+ "background_color": "#ffffff"
25
+ }
my-app/public/robots.txt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ # https://www.robotstxt.org/robotstxt.html
2
+ User-agent: *
3
+ Disallow:
my-app/src/App.css ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .App {
2
+ text-align: center;
3
+ }
4
+
5
+ .App-logo {
6
+ height: 40vmin;
7
+ pointer-events: none;
8
+ }
9
+
10
+ @media (prefers-reduced-motion: no-preference) {
11
+ .App-logo {
12
+ animation: App-logo-spin infinite 20s linear;
13
+ }
14
+ }
15
+
16
+ .App-header {
17
+ background-color: #282c34;
18
+ min-height: 100vh;
19
+ display: flex;
20
+ flex-direction: column;
21
+ align-items: center;
22
+ justify-content: center;
23
+ font-size: calc(10px + 2vmin);
24
+ color: white;
25
+ }
26
+
27
+ .App-link {
28
+ color: #61dafb;
29
+ }
30
+
31
+ @keyframes App-logo-spin {
32
+ from {
33
+ transform: rotate(0deg);
34
+ }
35
+ to {
36
+ transform: rotate(360deg);
37
+ }
38
+ }
my-app/src/App.js ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import logo from './logo.svg';
2
+ import './App.css';
3
+
4
+ function App() {
5
+ return (
6
+ <div className="App">
7
+ <header className="App-header">
8
+ <img src={logo} className="App-logo" alt="logo" />
9
+ <p>
10
+ Edit <code>src/App.js</code> and save to reload.
11
+ </p>
12
+ <a
13
+ className="App-link"
14
+ href="https://reactjs.org"
15
+ target="_blank"
16
+ rel="noopener noreferrer"
17
+ >
18
+ Learn React
19
+ </a>
20
+ </header>
21
+ </div>
22
+ );
23
+ }
24
+
25
+ export default App;
my-app/src/App.test.js ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ import { render, screen } from '@testing-library/react';
2
+ import App from './App';
3
+
4
+ test('renders learn react link', () => {
5
+ render(<App />);
6
+ const linkElement = screen.getByText(/learn react/i);
7
+ expect(linkElement).toBeInTheDocument();
8
+ });
my-app/src/index.css ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ body {
2
+ margin: 0;
3
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
4
+ 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
5
+ sans-serif;
6
+ -webkit-font-smoothing: antialiased;
7
+ -moz-osx-font-smoothing: grayscale;
8
+ }
9
+
10
+ code {
11
+ font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
12
+ monospace;
13
+ }
my-app/src/index.js ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import React from 'react';
2
+ import ReactDOM from 'react-dom/client';
3
+ import './index.css';
4
+ import App from './App';
5
+ import reportWebVitals from './reportWebVitals';
6
+
7
+ const root = ReactDOM.createRoot(document.getElementById('root'));
8
+ root.render(
9
+ <React.StrictMode>
10
+ <App />
11
+ </React.StrictMode>
12
+ );
13
+
14
+ // If you want to start measuring performance in your app, pass a function
15
+ // to log results (for example: reportWebVitals(console.log))
16
+ // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
17
+ reportWebVitals();
my-app/src/logo.svg ADDED
my-app/src/reportWebVitals.js ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ const reportWebVitals = onPerfEntry => {
2
+ if (onPerfEntry && onPerfEntry instanceof Function) {
3
+ import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
4
+ getCLS(onPerfEntry);
5
+ getFID(onPerfEntry);
6
+ getFCP(onPerfEntry);
7
+ getLCP(onPerfEntry);
8
+ getTTFB(onPerfEntry);
9
+ });
10
+ }
11
+ };
12
+
13
+ export default reportWebVitals;
my-app/src/setupTests.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ // jest-dom adds custom jest matchers for asserting on DOM nodes.
2
+ // allows you to do things like:
3
+ // expect(element).toHaveTextContent(/react/i)
4
+ // learn more: https://github.com/testing-library/jest-dom
5
+ import '@testing-library/jest-dom';
notebook_for_knit.html CHANGED
The diff for this file is too large to render. See raw diff
 
notebook_for_knit.ipynb CHANGED
The diff for this file is too large to render. See raw diff
 
vue-project/.gitignore ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Logs
2
+ logs
3
+ *.log
4
+ npm-debug.log*
5
+ yarn-debug.log*
6
+ yarn-error.log*
7
+ pnpm-debug.log*
8
+ lerna-debug.log*
9
+
10
+ node_modules
11
+ .DS_Store
12
+ dist
13
+ dist-ssr
14
+ coverage
15
+ *.local
16
+
17
+ /cypress/videos/
18
+ /cypress/screenshots/
19
+
20
+ # Editor directories and files
21
+ .vscode/*
22
+ !.vscode/extensions.json
23
+ .idea
24
+ *.suo
25
+ *.ntvs*
26
+ *.njsproj
27
+ *.sln
28
+ *.sw?
vue-project/.vscode/extensions.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ {
2
+ "recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"]
3
+ }
vue-project/README.md ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # vue-project
2
+
3
+ This template should help get you started developing with Vue 3 in Vite.
4
+
5
+ ## Recommended IDE Setup
6
+
7
+ [VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin).
8
+
9
+ ## Customize configuration
10
+
11
+ See [Vite Configuration Reference](https://vitejs.dev/config/).
12
+
13
+ ## Project Setup
14
+
15
+ ```sh
16
+ npm install
17
+ ```
18
+
19
+ ### Compile and Hot-Reload for Development
20
+
21
+ ```sh
22
+ npm run dev
23
+ ```
24
+
25
+ ### Compile and Minify for Production
26
+
27
+ ```sh
28
+ npm run build
29
+ ```
vue-project/index.html ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <link rel="icon" href="/favicon.ico" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
+ <title>Vite App</title>
8
+ </head>
9
+ <body>
10
+ <div id="app"></div>
11
+ <script type="module" src="/src/main.js"></script>
12
+ </body>
13
+ </html>
vue-project/package-lock.json ADDED
@@ -0,0 +1,435 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "vue-project",
3
+ "version": "0.0.0",
4
+ "lockfileVersion": 1,
5
+ "requires": true,
6
+ "dependencies": {
7
+ "@babel/parser": {
8
+ "version": "7.18.11",
9
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.11.tgz",
10
+ "integrity": "sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ=="
11
+ },
12
+ "@esbuild/linux-loong64": {
13
+ "version": "0.14.53",
14
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.53.tgz",
15
+ "integrity": "sha512-W2dAL6Bnyn4xa/QRSU3ilIK4EzD5wgYXKXJiS1HDF5vU3675qc2bvFyLwbUcdmssDveyndy7FbitrCoiV/eMLg==",
16
+ "dev": true,
17
+ "optional": true
18
+ },
19
+ "@vitejs/plugin-vue": {
20
+ "version": "3.0.1",
21
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-3.0.1.tgz",
22
+ "integrity": "sha512-Ll9JgxG7ONIz/XZv3dssfoMUDu9qAnlJ+km+pBA0teYSXzwPCIzS/e1bmwNYl5dcQGs677D21amgfYAnzMl17A==",
23
+ "dev": true
24
+ },
25
+ "@vue/compiler-core": {
26
+ "version": "3.2.37",
27
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.37.tgz",
28
+ "integrity": "sha512-81KhEjo7YAOh0vQJoSmAD68wLfYqJvoiD4ulyedzF+OEk/bk6/hx3fTNVfuzugIIaTrOx4PGx6pAiBRe5e9Zmg==",
29
+ "requires": {
30
+ "@babel/parser": "^7.16.4",
31
+ "@vue/shared": "3.2.37",
32
+ "estree-walker": "^2.0.2",
33
+ "source-map": "^0.6.1"
34
+ }
35
+ },
36
+ "@vue/compiler-dom": {
37
+ "version": "3.2.37",
38
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.37.tgz",
39
+ "integrity": "sha512-yxJLH167fucHKxaqXpYk7x8z7mMEnXOw3G2q62FTkmsvNxu4FQSu5+3UMb+L7fjKa26DEzhrmCxAgFLLIzVfqQ==",
40
+ "requires": {
41
+ "@vue/compiler-core": "3.2.37",
42
+ "@vue/shared": "3.2.37"
43
+ }
44
+ },
45
+ "@vue/compiler-sfc": {
46
+ "version": "3.2.37",
47
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.37.tgz",
48
+ "integrity": "sha512-+7i/2+9LYlpqDv+KTtWhOZH+pa8/HnX/905MdVmAcI/mPQOBwkHHIzrsEsucyOIZQYMkXUiTkmZq5am/NyXKkg==",
49
+ "requires": {
50
+ "@babel/parser": "^7.16.4",
51
+ "@vue/compiler-core": "3.2.37",
52
+ "@vue/compiler-dom": "3.2.37",
53
+ "@vue/compiler-ssr": "3.2.37",
54
+ "@vue/reactivity-transform": "3.2.37",
55
+ "@vue/shared": "3.2.37",
56
+ "estree-walker": "^2.0.2",
57
+ "magic-string": "^0.25.7",
58
+ "postcss": "^8.1.10",
59
+ "source-map": "^0.6.1"
60
+ }
61
+ },
62
+ "@vue/compiler-ssr": {
63
+ "version": "3.2.37",
64
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.37.tgz",
65
+ "integrity": "sha512-7mQJD7HdXxQjktmsWp/J67lThEIcxLemz1Vb5I6rYJHR5vI+lON3nPGOH3ubmbvYGt8xEUaAr1j7/tIFWiEOqw==",
66
+ "requires": {
67
+ "@vue/compiler-dom": "3.2.37",
68
+ "@vue/shared": "3.2.37"
69
+ }
70
+ },
71
+ "@vue/reactivity": {
72
+ "version": "3.2.37",
73
+ "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.37.tgz",
74
+ "integrity": "sha512-/7WRafBOshOc6m3F7plwzPeCu/RCVv9uMpOwa/5PiY1Zz+WLVRWiy0MYKwmg19KBdGtFWsmZ4cD+LOdVPcs52A==",
75
+ "requires": {
76
+ "@vue/shared": "3.2.37"
77
+ }
78
+ },
79
+ "@vue/reactivity-transform": {
80
+ "version": "3.2.37",
81
+ "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.37.tgz",
82
+ "integrity": "sha512-IWopkKEb+8qpu/1eMKVeXrK0NLw9HicGviJzhJDEyfxTR9e1WtpnnbYkJWurX6WwoFP0sz10xQg8yL8lgskAZg==",
83
+ "requires": {
84
+ "@babel/parser": "^7.16.4",
85
+ "@vue/compiler-core": "3.2.37",
86
+ "@vue/shared": "3.2.37",
87
+ "estree-walker": "^2.0.2",
88
+ "magic-string": "^0.25.7"
89
+ }
90
+ },
91
+ "@vue/runtime-core": {
92
+ "version": "3.2.37",
93
+ "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.37.tgz",
94
+ "integrity": "sha512-JPcd9kFyEdXLl/i0ClS7lwgcs0QpUAWj+SKX2ZC3ANKi1U4DOtiEr6cRqFXsPwY5u1L9fAjkinIdB8Rz3FoYNQ==",
95
+ "requires": {
96
+ "@vue/reactivity": "3.2.37",
97
+ "@vue/shared": "3.2.37"
98
+ }
99
+ },
100
+ "@vue/runtime-dom": {
101
+ "version": "3.2.37",
102
+ "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.37.tgz",
103
+ "integrity": "sha512-HimKdh9BepShW6YozwRKAYjYQWg9mQn63RGEiSswMbW+ssIht1MILYlVGkAGGQbkhSh31PCdoUcfiu4apXJoPw==",
104
+ "requires": {
105
+ "@vue/runtime-core": "3.2.37",
106
+ "@vue/shared": "3.2.37",
107
+ "csstype": "^2.6.8"
108
+ }
109
+ },
110
+ "@vue/server-renderer": {
111
+ "version": "3.2.37",
112
+ "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.37.tgz",
113
+ "integrity": "sha512-kLITEJvaYgZQ2h47hIzPh2K3jG8c1zCVbp/o/bzQOyvzaKiCquKS7AaioPI28GNxIsE/zSx+EwWYsNxDCX95MA==",
114
+ "requires": {
115
+ "@vue/compiler-ssr": "3.2.37",
116
+ "@vue/shared": "3.2.37"
117
+ }
118
+ },
119
+ "@vue/shared": {
120
+ "version": "3.2.37",
121
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.37.tgz",
122
+ "integrity": "sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw=="
123
+ },
124
+ "csstype": {
125
+ "version": "2.6.20",
126
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.20.tgz",
127
+ "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA=="
128
+ },
129
+ "esbuild": {
130
+ "version": "0.14.53",
131
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.53.tgz",
132
+ "integrity": "sha512-ohO33pUBQ64q6mmheX1mZ8mIXj8ivQY/L4oVuAshr+aJI+zLl+amrp3EodrUNDNYVrKJXGPfIHFGhO8slGRjuw==",
133
+ "dev": true,
134
+ "requires": {
135
+ "@esbuild/linux-loong64": "0.14.53",
136
+ "esbuild-android-64": "0.14.53",
137
+ "esbuild-android-arm64": "0.14.53",
138
+ "esbuild-darwin-64": "0.14.53",
139
+ "esbuild-darwin-arm64": "0.14.53",
140
+ "esbuild-freebsd-64": "0.14.53",
141
+ "esbuild-freebsd-arm64": "0.14.53",
142
+ "esbuild-linux-32": "0.14.53",
143
+ "esbuild-linux-64": "0.14.53",
144
+ "esbuild-linux-arm": "0.14.53",
145
+ "esbuild-linux-arm64": "0.14.53",
146
+ "esbuild-linux-mips64le": "0.14.53",
147
+ "esbuild-linux-ppc64le": "0.14.53",
148
+ "esbuild-linux-riscv64": "0.14.53",
149
+ "esbuild-linux-s390x": "0.14.53",
150
+ "esbuild-netbsd-64": "0.14.53",
151
+ "esbuild-openbsd-64": "0.14.53",
152
+ "esbuild-sunos-64": "0.14.53",
153
+ "esbuild-windows-32": "0.14.53",
154
+ "esbuild-windows-64": "0.14.53",
155
+ "esbuild-windows-arm64": "0.14.53"
156
+ }
157
+ },
158
+ "esbuild-android-64": {
159
+ "version": "0.14.53",
160
+ "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.53.tgz",
161
+ "integrity": "sha512-fIL93sOTnEU+NrTAVMIKiAw0YH22HWCAgg4N4Z6zov2t0kY9RAJ50zY9ZMCQ+RT6bnOfDt8gCTnt/RaSNA2yRA==",
162
+ "dev": true,
163
+ "optional": true
164
+ },
165
+ "esbuild-android-arm64": {
166
+ "version": "0.14.53",
167
+ "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.53.tgz",
168
+ "integrity": "sha512-PC7KaF1v0h/nWpvlU1UMN7dzB54cBH8qSsm7S9mkwFA1BXpaEOufCg8hdoEI1jep0KeO/rjZVWrsH8+q28T77A==",
169
+ "dev": true,
170
+ "optional": true
171
+ },
172
+ "esbuild-darwin-64": {
173
+ "version": "0.14.53",
174
+ "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.53.tgz",
175
+ "integrity": "sha512-gE7P5wlnkX4d4PKvLBUgmhZXvL7lzGRLri17/+CmmCzfncIgq8lOBvxGMiQ4xazplhxq+72TEohyFMZLFxuWvg==",
176
+ "dev": true,
177
+ "optional": true
178
+ },
179
+ "esbuild-darwin-arm64": {
180
+ "version": "0.14.53",
181
+ "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.53.tgz",
182
+ "integrity": "sha512-otJwDU3hnI15Q98PX4MJbknSZ/WSR1I45il7gcxcECXzfN4Mrpft5hBDHXNRnCh+5858uPXBXA1Vaz2jVWLaIA==",
183
+ "dev": true,
184
+ "optional": true
185
+ },
186
+ "esbuild-freebsd-64": {
187
+ "version": "0.14.53",
188
+ "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.53.tgz",
189
+ "integrity": "sha512-WkdJa8iyrGHyKiPF4lk0MiOF87Q2SkE+i+8D4Cazq3/iqmGPJ6u49je300MFi5I2eUsQCkaOWhpCVQMTKGww2w==",
190
+ "dev": true,
191
+ "optional": true
192
+ },
193
+ "esbuild-freebsd-arm64": {
194
+ "version": "0.14.53",
195
+ "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.53.tgz",
196
+ "integrity": "sha512-9T7WwCuV30NAx0SyQpw8edbKvbKELnnm1FHg7gbSYaatH+c8WJW10g/OdM7JYnv7qkimw2ZTtSA+NokOLd2ydQ==",
197
+ "dev": true,
198
+ "optional": true
199
+ },
200
+ "esbuild-linux-32": {
201
+ "version": "0.14.53",
202
+ "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.53.tgz",
203
+ "integrity": "sha512-VGanLBg5en2LfGDgLEUxQko2lqsOS7MTEWUi8x91YmsHNyzJVT/WApbFFx3MQGhkf+XdimVhpyo5/G0PBY91zg==",
204
+ "dev": true,
205
+ "optional": true
206
+ },
207
+ "esbuild-linux-64": {
208
+ "version": "0.14.53",
209
+ "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.53.tgz",
210
+ "integrity": "sha512-pP/FA55j/fzAV7N9DF31meAyjOH6Bjuo3aSKPh26+RW85ZEtbJv9nhoxmGTd9FOqjx59Tc1ZbrJabuiXlMwuZQ==",
211
+ "dev": true,
212
+ "optional": true
213
+ },
214
+ "esbuild-linux-arm": {
215
+ "version": "0.14.53",
216
+ "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.53.tgz",
217
+ "integrity": "sha512-/u81NGAVZMopbmzd21Nu/wvnKQK3pT4CrvQ8BTje1STXcQAGnfyKgQlj3m0j2BzYbvQxSy+TMck4TNV2onvoPA==",
218
+ "dev": true,
219
+ "optional": true
220
+ },
221
+ "esbuild-linux-arm64": {
222
+ "version": "0.14.53",
223
+ "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.53.tgz",
224
+ "integrity": "sha512-GDmWITT+PMsjCA6/lByYk7NyFssW4Q6in32iPkpjZ/ytSyH+xeEx8q7HG3AhWH6heemEYEWpTll/eui3jwlSnw==",
225
+ "dev": true,
226
+ "optional": true
227
+ },
228
+ "esbuild-linux-mips64le": {
229
+ "version": "0.14.53",
230
+ "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.53.tgz",
231
+ "integrity": "sha512-d6/XHIQW714gSSp6tOOX2UscedVobELvQlPMkInhx1NPz4ThZI9uNLQ4qQJHGBGKGfu+rtJsxM4NVHLhnNRdWQ==",
232
+ "dev": true,
233
+ "optional": true
234
+ },
235
+ "esbuild-linux-ppc64le": {
236
+ "version": "0.14.53",
237
+ "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.53.tgz",
238
+ "integrity": "sha512-ndnJmniKPCB52m+r6BtHHLAOXw+xBCWIxNnedbIpuREOcbSU/AlyM/2dA3BmUQhsHdb4w3amD5U2s91TJ3MzzA==",
239
+ "dev": true,
240
+ "optional": true
241
+ },
242
+ "esbuild-linux-riscv64": {
243
+ "version": "0.14.53",
244
+ "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.53.tgz",
245
+ "integrity": "sha512-yG2sVH+QSix6ct4lIzJj329iJF3MhloLE6/vKMQAAd26UVPVkhMFqFopY+9kCgYsdeWvXdPgmyOuKa48Y7+/EQ==",
246
+ "dev": true,
247
+ "optional": true
248
+ },
249
+ "esbuild-linux-s390x": {
250
+ "version": "0.14.53",
251
+ "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.53.tgz",
252
+ "integrity": "sha512-OCJlgdkB+XPYndHmw6uZT7jcYgzmx9K+28PVdOa/eLjdoYkeAFvH5hTwX4AXGLZLH09tpl4bVsEtvuyUldaNCg==",
253
+ "dev": true,
254
+ "optional": true
255
+ },
256
+ "esbuild-netbsd-64": {
257
+ "version": "0.14.53",
258
+ "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.53.tgz",
259
+ "integrity": "sha512-gp2SB+Efc7MhMdWV2+pmIs/Ja/Mi5rjw+wlDmmbIn68VGXBleNgiEZG+eV2SRS0kJEUyHNedDtwRIMzaohWedQ==",
260
+ "dev": true,
261
+ "optional": true
262
+ },
263
+ "esbuild-openbsd-64": {
264
+ "version": "0.14.53",
265
+ "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.53.tgz",
266
+ "integrity": "sha512-eKQ30ZWe+WTZmteDYg8S+YjHV5s4iTxeSGhJKJajFfQx9TLZJvsJX0/paqwP51GicOUruFpSUAs2NCc0a4ivQQ==",
267
+ "dev": true,
268
+ "optional": true
269
+ },
270
+ "esbuild-sunos-64": {
271
+ "version": "0.14.53",
272
+ "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.53.tgz",
273
+ "integrity": "sha512-OWLpS7a2FrIRukQqcgQqR1XKn0jSJoOdT+RlhAxUoEQM/IpytS3FXzCJM6xjUYtpO5GMY0EdZJp+ur2pYdm39g==",
274
+ "dev": true,
275
+ "optional": true
276
+ },
277
+ "esbuild-windows-32": {
278
+ "version": "0.14.53",
279
+ "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.53.tgz",
280
+ "integrity": "sha512-m14XyWQP5rwGW0tbEfp95U6A0wY0DYPInWBB7D69FAXUpBpBObRoGTKRv36lf2RWOdE4YO3TNvj37zhXjVL5xg==",
281
+ "dev": true,
282
+ "optional": true
283
+ },
284
+ "esbuild-windows-64": {
285
+ "version": "0.14.53",
286
+ "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.53.tgz",
287
+ "integrity": "sha512-s9skQFF0I7zqnQ2K8S1xdLSfZFsPLuOGmSx57h2btSEswv0N0YodYvqLcJMrNMXh6EynOmWD7rz+0rWWbFpIHQ==",
288
+ "dev": true,
289
+ "optional": true
290
+ },
291
+ "esbuild-windows-arm64": {
292
+ "version": "0.14.53",
293
+ "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.53.tgz",
294
+ "integrity": "sha512-E+5Gvb+ZWts+00T9II6wp2L3KG2r3iGxByqd/a1RmLmYWVsSVUjkvIxZuJ3hYTIbhLkH5PRwpldGTKYqVz0nzQ==",
295
+ "dev": true,
296
+ "optional": true
297
+ },
298
+ "estree-walker": {
299
+ "version": "2.0.2",
300
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
301
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
302
+ },
303
+ "fsevents": {
304
+ "version": "2.3.2",
305
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
306
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
307
+ "dev": true,
308
+ "optional": true
309
+ },
310
+ "function-bind": {
311
+ "version": "1.1.1",
312
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
313
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
314
+ "dev": true
315
+ },
316
+ "has": {
317
+ "version": "1.0.3",
318
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
319
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
320
+ "dev": true,
321
+ "requires": {
322
+ "function-bind": "^1.1.1"
323
+ }
324
+ },
325
+ "is-core-module": {
326
+ "version": "2.10.0",
327
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz",
328
+ "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==",
329
+ "dev": true,
330
+ "requires": {
331
+ "has": "^1.0.3"
332
+ }
333
+ },
334
+ "magic-string": {
335
+ "version": "0.25.9",
336
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
337
+ "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
338
+ "requires": {
339
+ "sourcemap-codec": "^1.4.8"
340
+ }
341
+ },
342
+ "nanoid": {
343
+ "version": "3.3.4",
344
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
345
+ "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw=="
346
+ },
347
+ "path-parse": {
348
+ "version": "1.0.7",
349
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
350
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
351
+ "dev": true
352
+ },
353
+ "picocolors": {
354
+ "version": "1.0.0",
355
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
356
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
357
+ },
358
+ "postcss": {
359
+ "version": "8.4.14",
360
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz",
361
+ "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==",
362
+ "requires": {
363
+ "nanoid": "^3.3.4",
364
+ "picocolors": "^1.0.0",
365
+ "source-map-js": "^1.0.2"
366
+ }
367
+ },
368
+ "resolve": {
369
+ "version": "1.22.1",
370
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
371
+ "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
372
+ "dev": true,
373
+ "requires": {
374
+ "is-core-module": "^2.9.0",
375
+ "path-parse": "^1.0.7",
376
+ "supports-preserve-symlinks-flag": "^1.0.0"
377
+ }
378
+ },
379
+ "rollup": {
380
+ "version": "2.77.2",
381
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.77.2.tgz",
382
+ "integrity": "sha512-m/4YzYgLcpMQbxX3NmAqDvwLATZzxt8bIegO78FZLl+lAgKJBd1DRAOeEiZcKOIOPjxE6ewHWHNgGEalFXuz1g==",
383
+ "dev": true,
384
+ "requires": {
385
+ "fsevents": "~2.3.2"
386
+ }
387
+ },
388
+ "source-map": {
389
+ "version": "0.6.1",
390
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
391
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
392
+ },
393
+ "source-map-js": {
394
+ "version": "1.0.2",
395
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
396
+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw=="
397
+ },
398
+ "sourcemap-codec": {
399
+ "version": "1.4.8",
400
+ "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
401
+ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA=="
402
+ },
403
+ "supports-preserve-symlinks-flag": {
404
+ "version": "1.0.0",
405
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
406
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
407
+ "dev": true
408
+ },
409
+ "vite": {
410
+ "version": "3.0.4",
411
+ "resolved": "https://registry.npmjs.org/vite/-/vite-3.0.4.tgz",
412
+ "integrity": "sha512-NU304nqnBeOx2MkQnskBQxVsa0pRAH5FphokTGmyy8M3oxbvw7qAXts2GORxs+h/2vKsD+osMhZ7An6yK6F1dA==",
413
+ "dev": true,
414
+ "requires": {
415
+ "esbuild": "^0.14.47",
416
+ "fsevents": "~2.3.2",
417
+ "postcss": "^8.4.14",
418
+ "resolve": "^1.22.1",
419
+ "rollup": "^2.75.6"
420
+ }
421
+ },
422
+ "vue": {
423
+ "version": "3.2.37",
424
+ "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.37.tgz",
425
+ "integrity": "sha512-bOKEZxrm8Eh+fveCqS1/NkG/n6aMidsI6hahas7pa0w/l7jkbssJVsRhVDs07IdDq7h9KHswZOgItnwJAgtVtQ==",
426
+ "requires": {
427
+ "@vue/compiler-dom": "3.2.37",
428
+ "@vue/compiler-sfc": "3.2.37",
429
+ "@vue/runtime-dom": "3.2.37",
430
+ "@vue/server-renderer": "3.2.37",
431
+ "@vue/shared": "3.2.37"
432
+ }
433
+ }
434
+ }
435
+ }
vue-project/package.json ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "vue-project",
3
+ "version": "0.0.0",
4
+ "scripts": {
5
+ "dev": "vite",
6
+ "build": "vite build",
7
+ "preview": "vite preview --port 4173"
8
+ },
9
+ "dependencies": {
10
+ "vue": "^3.2.37"
11
+ },
12
+ "devDependencies": {
13
+ "@vitejs/plugin-vue": "^3.0.1",
14
+ "vite": "^3.0.1"
15
+ }
16
+ }
vue-project/public/favicon.ico ADDED
vue-project/src/App.vue ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <script setup>
2
+ import HelloWorld from './components/HelloWorld.vue'
3
+ import TheWelcome from './components/TheWelcome.vue'
4
+ </script>
5
+
6
+ <template>
7
+ <header>
8
+ <img alt="Vue logo" class="logo" src="./assets/logo.svg" width="125" height="125" />
9
+
10
+ <div class="wrapper">
11
+ <HelloWorld msg="You did it!" />
12
+ </div>
13
+ </header>
14
+
15
+ <main>
16
+ <TheWelcome />
17
+ </main>
18
+ </template>
19
+
20
+ <style scoped>
21
+ header {
22
+ line-height: 1.5;
23
+ }
24
+
25
+ .logo {
26
+ display: block;
27
+ margin: 0 auto 2rem;
28
+ }
29
+
30
+ @media (min-width: 1024px) {
31
+ header {
32
+ display: flex;
33
+ place-items: center;
34
+ padding-right: calc(var(--section-gap) / 2);
35
+ }
36
+
37
+ .logo {
38
+ margin: 0 2rem 0 0;
39
+ }
40
+
41
+ header .wrapper {
42
+ display: flex;
43
+ place-items: flex-start;
44
+ flex-wrap: wrap;
45
+ }
46
+ }
47
+ </style>
vue-project/src/assets/base.css ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* color palette from <https://github.com/vuejs/theme> */
2
+ :root {
3
+ --vt-c-white: #ffffff;
4
+ --vt-c-white-soft: #f8f8f8;
5
+ --vt-c-white-mute: #f2f2f2;
6
+
7
+ --vt-c-black: #181818;
8
+ --vt-c-black-soft: #222222;
9
+ --vt-c-black-mute: #282828;
10
+
11
+ --vt-c-indigo: #2c3e50;
12
+
13
+ --vt-c-divider-light-1: rgba(60, 60, 60, 0.29);
14
+ --vt-c-divider-light-2: rgba(60, 60, 60, 0.12);
15
+ --vt-c-divider-dark-1: rgba(84, 84, 84, 0.65);
16
+ --vt-c-divider-dark-2: rgba(84, 84, 84, 0.48);
17
+
18
+ --vt-c-text-light-1: var(--vt-c-indigo);
19
+ --vt-c-text-light-2: rgba(60, 60, 60, 0.66);
20
+ --vt-c-text-dark-1: var(--vt-c-white);
21
+ --vt-c-text-dark-2: rgba(235, 235, 235, 0.64);
22
+ }
23
+
24
+ /* semantic color variables for this project */
25
+ :root {
26
+ --color-background: var(--vt-c-white);
27
+ --color-background-soft: var(--vt-c-white-soft);
28
+ --color-background-mute: var(--vt-c-white-mute);
29
+
30
+ --color-border: var(--vt-c-divider-light-2);
31
+ --color-border-hover: var(--vt-c-divider-light-1);
32
+
33
+ --color-heading: var(--vt-c-text-light-1);
34
+ --color-text: var(--vt-c-text-light-1);
35
+
36
+ --section-gap: 160px;
37
+ }
38
+
39
+ @media (prefers-color-scheme: dark) {
40
+ :root {
41
+ --color-background: var(--vt-c-black);
42
+ --color-background-soft: var(--vt-c-black-soft);
43
+ --color-background-mute: var(--vt-c-black-mute);
44
+
45
+ --color-border: var(--vt-c-divider-dark-2);
46
+ --color-border-hover: var(--vt-c-divider-dark-1);
47
+
48
+ --color-heading: var(--vt-c-text-dark-1);
49
+ --color-text: var(--vt-c-text-dark-2);
50
+ }
51
+ }
52
+
53
+ *,
54
+ *::before,
55
+ *::after {
56
+ box-sizing: border-box;
57
+ margin: 0;
58
+ position: relative;
59
+ font-weight: normal;
60
+ }
61
+
62
+ body {
63
+ min-height: 100vh;
64
+ color: var(--color-text);
65
+ background: var(--color-background);
66
+ transition: color 0.5s, background-color 0.5s;
67
+ line-height: 1.6;
68
+ font-family: Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu,
69
+ Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
70
+ font-size: 15px;
71
+ text-rendering: optimizeLegibility;
72
+ -webkit-font-smoothing: antialiased;
73
+ -moz-osx-font-smoothing: grayscale;
74
+ }
vue-project/src/assets/logo.svg ADDED
vue-project/src/assets/main.css ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import "./base.css";
2
+
3
+ #app {
4
+ max-width: 1280px;
5
+ margin: 0 auto;
6
+ padding: 2rem;
7
+
8
+ font-weight: normal;
9
+ }
10
+
11
+ a,
12
+ .green {
13
+ text-decoration: none;
14
+ color: hsla(160, 100%, 37%, 1);
15
+ transition: 0.4s;
16
+ }
17
+
18
+ @media (hover: hover) {
19
+ a:hover {
20
+ background-color: hsla(160, 100%, 37%, 0.2);
21
+ }
22
+ }
23
+
24
+ @media (min-width: 1024px) {
25
+ body {
26
+ display: flex;
27
+ place-items: center;
28
+ }
29
+
30
+ #app {
31
+ display: grid;
32
+ grid-template-columns: 1fr 1fr;
33
+ padding: 0 2rem;
34
+ }
35
+ }
vue-project/src/components/HelloWorld.vue ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <script setup>
2
+ defineProps({
3
+ msg: {
4
+ type: String,
5
+ required: true
6
+ }
7
+ })
8
+ </script>
9
+
10
+ <template>
11
+ <div class="greetings">
12
+ <h1 class="green">{{ msg }}</h1>
13
+ <h3>
14
+ You’ve successfully created a project with
15
+ <a target="_blank" href="https://vitejs.dev/">Vite</a> +
16
+ <a target="_blank" href="https://vuejs.org/">Vue 3</a>.
17
+ </h3>
18
+ </div>
19
+ </template>
20
+
21
+ <style scoped>
22
+ h1 {
23
+ font-weight: 500;
24
+ font-size: 2.6rem;
25
+ top: -10px;
26
+ }
27
+
28
+ h3 {
29
+ font-size: 1.2rem;
30
+ }
31
+
32
+ .greetings h1,
33
+ .greetings h3 {
34
+ text-align: center;
35
+ }
36
+
37
+ @media (min-width: 1024px) {
38
+ .greetings h1,
39
+ .greetings h3 {
40
+ text-align: left;
41
+ }
42
+ }
43
+ </style>
vue-project/src/components/TheWelcome.vue ADDED
@@ -0,0 +1,84 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <script setup>
2
+ import WelcomeItem from './WelcomeItem.vue'
3
+ import DocumentationIcon from './icons/IconDocumentation.vue'
4
+ import ToolingIcon from './icons/IconTooling.vue'
5
+ import EcosystemIcon from './icons/IconEcosystem.vue'
6
+ import CommunityIcon from './icons/IconCommunity.vue'
7
+ import SupportIcon from './icons/IconSupport.vue'
8
+ </script>
9
+
10
+ <template>
11
+ <WelcomeItem>
12
+ <template #icon>
13
+ <DocumentationIcon />
14
+ </template>
15
+ <template #heading>Documentation</template>
16
+
17
+ Vue’s
18
+ <a target="_blank" href="https://vuejs.org/">official documentation</a>
19
+ provides you with all information you need to get started.
20
+ </WelcomeItem>
21
+
22
+ <WelcomeItem>
23
+ <template #icon>
24
+ <ToolingIcon />
25
+ </template>
26
+ <template #heading>Tooling</template>
27
+
28
+ This project is served and bundled with
29
+ <a href="https://vitejs.dev/guide/features.html" target="_blank">Vite</a>. The recommended IDE
30
+ setup is <a href="https://code.visualstudio.com/" target="_blank">VSCode</a> +
31
+ <a href="https://github.com/johnsoncodehk/volar" target="_blank">Volar</a>. If you need to test
32
+ your components and web pages, check out
33
+ <a href="https://www.cypress.io/" target="_blank">Cypress</a> and
34
+ <a href="https://on.cypress.io/component" target="_blank"
35
+ >Cypress Component Testing</a
36
+ >.
37
+
38
+ <br />
39
+
40
+ More instructions are available in <code>README.md</code>.
41
+ </WelcomeItem>
42
+
43
+ <WelcomeItem>
44
+ <template #icon>
45
+ <EcosystemIcon />
46
+ </template>
47
+ <template #heading>Ecosystem</template>
48
+
49
+ Get official tools and libraries for your project:
50
+ <a target="_blank" href="https://pinia.vuejs.org/">Pinia</a>,
51
+ <a target="_blank" href="https://router.vuejs.org/">Vue Router</a>,
52
+ <a target="_blank" href="https://test-utils.vuejs.org/">Vue Test Utils</a>, and
53
+ <a target="_blank" href="https://github.com/vuejs/devtools">Vue Dev Tools</a>. If you need more
54
+ resources, we suggest paying
55
+ <a target="_blank" href="https://github.com/vuejs/awesome-vue">Awesome Vue</a>
56
+ a visit.
57
+ </WelcomeItem>
58
+
59
+ <WelcomeItem>
60
+ <template #icon>
61
+ <CommunityIcon />
62
+ </template>
63
+ <template #heading>Community</template>
64
+
65
+ Got stuck? Ask your question on
66
+ <a target="_blank" href="https://chat.vuejs.org">Vue Land</a>, our official Discord server, or
67
+ <a target="_blank" href="https://stackoverflow.com/questions/tagged/vue.js">StackOverflow</a>.
68
+ You should also subscribe to
69
+ <a target="_blank" href="https://news.vuejs.org">our mailing list</a> and follow the official
70
+ <a target="_blank" href="https://twitter.com/vuejs">@vuejs</a>
71
+ twitter account for latest news in the Vue world.
72
+ </WelcomeItem>
73
+
74
+ <WelcomeItem>
75
+ <template #icon>
76
+ <SupportIcon />
77
+ </template>
78
+ <template #heading>Support Vue</template>
79
+
80
+ As an independent project, Vue relies on community backing for its sustainability. You can help
81
+ us by
82
+ <a target="_blank" href="https://vuejs.org/sponsor/">becoming a sponsor</a>.
83
+ </WelcomeItem>
84
+ </template>
vue-project/src/components/WelcomeItem.vue ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <template>
2
+ <div class="item">
3
+ <i>
4
+ <slot name="icon"></slot>
5
+ </i>
6
+ <div class="details">
7
+ <h3>
8
+ <slot name="heading"></slot>
9
+ </h3>
10
+ <slot></slot>
11
+ </div>
12
+ </div>
13
+ </template>
14
+
15
+ <style scoped>
16
+ .item {
17
+ margin-top: 2rem;
18
+ display: flex;
19
+ }
20
+
21
+ .details {
22
+ flex: 1;
23
+ margin-left: 1rem;
24
+ }
25
+
26
+ i {
27
+ display: flex;
28
+ place-items: center;
29
+ place-content: center;
30
+ width: 32px;
31
+ height: 32px;
32
+
33
+ color: var(--color-text);
34
+ }
35
+
36
+ h3 {
37
+ font-size: 1.2rem;
38
+ font-weight: 500;
39
+ margin-bottom: 0.4rem;
40
+ color: var(--color-heading);
41
+ }
42
+
43
+ @media (min-width: 1024px) {
44
+ .item {
45
+ margin-top: 0;
46
+ padding: 0.4rem 0 1rem calc(var(--section-gap) / 2);
47
+ }
48
+
49
+ i {
50
+ top: calc(50% - 25px);
51
+ left: -26px;
52
+ position: absolute;
53
+ border: 1px solid var(--color-border);
54
+ background: var(--color-background);
55
+ border-radius: 8px;
56
+ width: 50px;
57
+ height: 50px;
58
+ }
59
+
60
+ .item:before {
61
+ content: ' ';
62
+ border-left: 1px solid var(--color-border);
63
+ position: absolute;
64
+ left: 0;
65
+ bottom: calc(50% + 25px);
66
+ height: calc(50% - 25px);
67
+ }
68
+
69
+ .item:after {
70
+ content: ' ';
71
+ border-left: 1px solid var(--color-border);
72
+ position: absolute;
73
+ left: 0;
74
+ top: calc(50% + 25px);
75
+ height: calc(50% - 25px);
76
+ }
77
+
78
+ .item:first-of-type:before {
79
+ display: none;
80
+ }
81
+
82
+ .item:last-of-type:after {
83
+ display: none;
84
+ }
85
+ }
86
+ </style>
vue-project/src/components/icons/IconCommunity.vue ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ <template>
2
+ <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor">
3
+ <path
4
+ d="M15 4a1 1 0 1 0 0 2V4zm0 11v-1a1 1 0 0 0-1 1h1zm0 4l-.707.707A1 1 0 0 0 16 19h-1zm-4-4l.707-.707A1 1 0 0 0 11 14v1zm-4.707-1.293a1 1 0 0 0-1.414 1.414l1.414-1.414zm-.707.707l-.707-.707.707.707zM9 11v-1a1 1 0 0 0-.707.293L9 11zm-4 0h1a1 1 0 0 0-1-1v1zm0 4H4a1 1 0 0 0 1.707.707L5 15zm10-9h2V4h-2v2zm2 0a1 1 0 0 1 1 1h2a3 3 0 0 0-3-3v2zm1 1v6h2V7h-2zm0 6a1 1 0 0 1-1 1v2a3 3 0 0 0 3-3h-2zm-1 1h-2v2h2v-2zm-3 1v4h2v-4h-2zm1.707 3.293l-4-4-1.414 1.414 4 4 1.414-1.414zM11 14H7v2h4v-2zm-4 0c-.276 0-.525-.111-.707-.293l-1.414 1.414C5.42 15.663 6.172 16 7 16v-2zm-.707 1.121l3.414-3.414-1.414-1.414-3.414 3.414 1.414 1.414zM9 12h4v-2H9v2zm4 0a3 3 0 0 0 3-3h-2a1 1 0 0 1-1 1v2zm3-3V3h-2v6h2zm0-6a3 3 0 0 0-3-3v2a1 1 0 0 1 1 1h2zm-3-3H3v2h10V0zM3 0a3 3 0 0 0-3 3h2a1 1 0 0 1 1-1V0zM0 3v6h2V3H0zm0 6a3 3 0 0 0 3 3v-2a1 1 0 0 1-1-1H0zm3 3h2v-2H3v2zm1-1v4h2v-4H4zm1.707 4.707l.586-.586-1.414-1.414-.586.586 1.414 1.414z"
5
+ />
6
+ </svg>
7
+ </template>
vue-project/src/components/icons/IconDocumentation.vue ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ <template>
2
+ <svg xmlns="http://www.w3.org/2000/svg" width="20" height="17" fill="currentColor">
3
+ <path
4
+ d="M11 2.253a1 1 0 1 0-2 0h2zm-2 13a1 1 0 1 0 2 0H9zm.447-12.167a1 1 0 1 0 1.107-1.666L9.447 3.086zM1 2.253L.447 1.42A1 1 0 0 0 0 2.253h1zm0 13H0a1 1 0 0 0 1.553.833L1 15.253zm8.447.833a1 1 0 1 0 1.107-1.666l-1.107 1.666zm0-14.666a1 1 0 1 0 1.107 1.666L9.447 1.42zM19 2.253h1a1 1 0 0 0-.447-.833L19 2.253zm0 13l-.553.833A1 1 0 0 0 20 15.253h-1zm-9.553-.833a1 1 0 1 0 1.107 1.666L9.447 14.42zM9 2.253v13h2v-13H9zm1.553-.833C9.203.523 7.42 0 5.5 0v2c1.572 0 2.961.431 3.947 1.086l1.107-1.666zM5.5 0C3.58 0 1.797.523.447 1.42l1.107 1.666C2.539 2.431 3.928 2 5.5 2V0zM0 2.253v13h2v-13H0zm1.553 13.833C2.539 15.431 3.928 15 5.5 15v-2c-1.92 0-3.703.523-5.053 1.42l1.107 1.666zM5.5 15c1.572 0 2.961.431 3.947 1.086l1.107-1.666C9.203 13.523 7.42 13 5.5 13v2zm5.053-11.914C11.539 2.431 12.928 2 14.5 2V0c-1.92 0-3.703.523-5.053 1.42l1.107 1.666zM14.5 2c1.573 0 2.961.431 3.947 1.086l1.107-1.666C18.203.523 16.421 0 14.5 0v2zm3.5.253v13h2v-13h-2zm1.553 12.167C18.203 13.523 16.421 13 14.5 13v2c1.573 0 2.961.431 3.947 1.086l1.107-1.666zM14.5 13c-1.92 0-3.703.523-5.053 1.42l1.107 1.666C11.539 15.431 12.928 15 14.5 15v-2z"
5
+ />
6
+ </svg>
7
+ </template>
vue-project/src/components/icons/IconEcosystem.vue ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ <template>
2
+ <svg xmlns="http://www.w3.org/2000/svg" width="18" height="20" fill="currentColor">
3
+ <path
4
+ d="M11.447 8.894a1 1 0 1 0-.894-1.789l.894 1.789zm-2.894-.789a1 1 0 1 0 .894 1.789l-.894-1.789zm0 1.789a1 1 0 1 0 .894-1.789l-.894 1.789zM7.447 7.106a1 1 0 1 0-.894 1.789l.894-1.789zM10 9a1 1 0 1 0-2 0h2zm-2 2.5a1 1 0 1 0 2 0H8zm9.447-5.606a1 1 0 1 0-.894-1.789l.894 1.789zm-2.894-.789a1 1 0 1 0 .894 1.789l-.894-1.789zm2 .789a1 1 0 1 0 .894-1.789l-.894 1.789zm-1.106-2.789a1 1 0 1 0-.894 1.789l.894-1.789zM18 5a1 1 0 1 0-2 0h2zm-2 2.5a1 1 0 1 0 2 0h-2zm-5.447-4.606a1 1 0 1 0 .894-1.789l-.894 1.789zM9 1l.447-.894a1 1 0 0 0-.894 0L9 1zm-2.447.106a1 1 0 1 0 .894 1.789l-.894-1.789zm-6 3a1 1 0 1 0 .894 1.789L.553 4.106zm2.894.789a1 1 0 1 0-.894-1.789l.894 1.789zm-2-.789a1 1 0 1 0-.894 1.789l.894-1.789zm1.106 2.789a1 1 0 1 0 .894-1.789l-.894 1.789zM2 5a1 1 0 1 0-2 0h2zM0 7.5a1 1 0 1 0 2 0H0zm8.553 12.394a1 1 0 1 0 .894-1.789l-.894 1.789zm-1.106-2.789a1 1 0 1 0-.894 1.789l.894-1.789zm1.106 1a1 1 0 1 0 .894 1.789l-.894-1.789zm2.894.789a1 1 0 1 0-.894-1.789l.894 1.789zM8 19a1 1 0 1 0 2 0H8zm2-2.5a1 1 0 1 0-2 0h2zm-7.447.394a1 1 0 1 0 .894-1.789l-.894 1.789zM1 15H0a1 1 0 0 0 .553.894L1 15zm1-2.5a1 1 0 1 0-2 0h2zm12.553 2.606a1 1 0 1 0 .894 1.789l-.894-1.789zM17 15l.447.894A1 1 0 0 0 18 15h-1zm1-2.5a1 1 0 1 0-2 0h2zm-7.447-5.394l-2 1 .894 1.789 2-1-.894-1.789zm-1.106 1l-2-1-.894 1.789 2 1 .894-1.789zM8 9v2.5h2V9H8zm8.553-4.894l-2 1 .894 1.789 2-1-.894-1.789zm.894 0l-2-1-.894 1.789 2 1 .894-1.789zM16 5v2.5h2V5h-2zm-4.553-3.894l-2-1-.894 1.789 2 1 .894-1.789zm-2.894-1l-2 1 .894 1.789 2-1L8.553.106zM1.447 5.894l2-1-.894-1.789-2 1 .894 1.789zm-.894 0l2 1 .894-1.789-2-1-.894 1.789zM0 5v2.5h2V5H0zm9.447 13.106l-2-1-.894 1.789 2 1 .894-1.789zm0 1.789l2-1-.894-1.789-2 1 .894 1.789zM10 19v-2.5H8V19h2zm-6.553-3.894l-2-1-.894 1.789 2 1 .894-1.789zM2 15v-2.5H0V15h2zm13.447 1.894l2-1-.894-1.789-2 1 .894 1.789zM18 15v-2.5h-2V15h2z"
5
+ />
6
+ </svg>
7
+ </template>
vue-project/src/components/icons/IconSupport.vue ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ <template>
2
+ <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor">
3
+ <path
4
+ d="M10 3.22l-.61-.6a5.5 5.5 0 0 0-7.666.105 5.5 5.5 0 0 0-.114 7.665L10 18.78l8.39-8.4a5.5 5.5 0 0 0-.114-7.665 5.5 5.5 0 0 0-7.666-.105l-.61.61z"
5
+ />
6
+ </svg>
7
+ </template>
vue-project/src/components/icons/IconTooling.vue ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!-- This icon is from <https://github.com/Templarian/MaterialDesign>, distributed under Apache 2.0 (https://www.apache.org/licenses/LICENSE-2.0) license-->
2
+ <template>
3
+ <svg
4
+ xmlns="http://www.w3.org/2000/svg"
5
+ xmlns:xlink="http://www.w3.org/1999/xlink"
6
+ aria-hidden="true"
7
+ role="img"
8
+ class="iconify iconify--mdi"
9
+ width="24"
10
+ height="24"
11
+ preserveAspectRatio="xMidYMid meet"
12
+ viewBox="0 0 24 24"
13
+ >
14
+ <path
15
+ d="M20 18v-4h-3v1h-2v-1H9v1H7v-1H4v4h16M6.33 8l-1.74 4H7v-1h2v1h6v-1h2v1h2.41l-1.74-4H6.33M9 5v1h6V5H9m12.84 7.61c.1.22.16.48.16.8V18c0 .53-.21 1-.6 1.41c-.4.4-.85.59-1.4.59H4c-.55 0-1-.19-1.4-.59C2.21 19 2 18.53 2 18v-4.59c0-.32.06-.58.16-.8L4.5 7.22C4.84 6.41 5.45 6 6.33 6H7V5c0-.55.18-1 .57-1.41C7.96 3.2 8.44 3 9 3h6c.56 0 1.04.2 1.43.59c.39.41.57.86.57 1.41v1h.67c.88 0 1.49.41 1.83 1.22l2.34 5.39z"
16
+ fill="currentColor"
17
+ ></path>
18
+ </svg>
19
+ </template>
vue-project/src/main.js ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ import { createApp } from 'vue'
2
+ import App from './App.vue'
3
+
4
+ import './assets/main.css'
5
+
6
+ createApp(App).mount('#app')
vue-project/vite.config.js ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { fileURLToPath, URL } from 'node:url'
2
+
3
+ import { defineConfig } from 'vite'
4
+ import vue from '@vitejs/plugin-vue'
5
+
6
+ // https://vitejs.dev/config/
7
+ export default defineConfig({
8
+ plugins: [vue()],
9
+ resolve: {
10
+ alias: {
11
+ '@': fileURLToPath(new URL('./src', import.meta.url))
12
+ }
13
+ }
14
+ })