@strapi/plugin-documentation 4.0.0-next.7 → 4.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/admin/src/components/FieldActionWrapper/index.js +14 -0
  2. package/admin/src/components/PluginIcon/index.js +12 -0
  3. package/admin/src/index.js +27 -12
  4. package/admin/src/pages/PluginPage/index.js +199 -0
  5. package/admin/src/pages/PluginPage/tests/index.test.js +873 -0
  6. package/admin/src/pages/PluginPage/tests/server.js +23 -0
  7. package/admin/src/pages/SettingsPage/index.js +181 -0
  8. package/admin/src/pages/SettingsPage/tests/index.test.js +612 -0
  9. package/admin/src/pages/SettingsPage/tests/server.js +18 -0
  10. package/admin/src/pages/{HomePage/utils → utils}/api.js +5 -4
  11. package/admin/src/pages/{HomePage/utils → utils}/schema.js +0 -0
  12. package/admin/src/pages/utils/useReactQuery.js +46 -0
  13. package/admin/src/translations/ar.json +0 -3
  14. package/admin/src/translations/cs.json +0 -3
  15. package/admin/src/translations/de.json +0 -3
  16. package/admin/src/translations/en.json +14 -3
  17. package/admin/src/translations/es.json +0 -3
  18. package/admin/src/translations/fr.json +0 -3
  19. package/admin/src/translations/id.json +0 -3
  20. package/admin/src/translations/it.json +0 -3
  21. package/admin/src/translations/ko.json +41 -22
  22. package/admin/src/translations/ms.json +0 -3
  23. package/admin/src/translations/nl.json +0 -3
  24. package/admin/src/translations/pl.json +0 -3
  25. package/admin/src/translations/pt-BR.json +0 -3
  26. package/admin/src/translations/pt.json +0 -3
  27. package/admin/src/translations/ru.json +0 -3
  28. package/admin/src/translations/sk.json +0 -3
  29. package/admin/src/translations/th.json +0 -3
  30. package/admin/src/translations/tr.json +0 -3
  31. package/admin/src/translations/uk.json +0 -3
  32. package/admin/src/translations/vi.json +0 -3
  33. package/admin/src/translations/zh-Hans.json +3 -6
  34. package/admin/src/translations/zh.json +0 -3
  35. package/package.json +32 -47
  36. package/server/bootstrap.js +19 -105
  37. package/server/config/default-config.js +12 -15
  38. package/server/config/index.js +10 -2
  39. package/server/controllers/documentation.js +61 -127
  40. package/server/index.js +17 -0
  41. package/server/middlewares/documentation.js +18 -41
  42. package/server/{policies/index-policy.js → middlewares/restrict-access.js} +5 -16
  43. package/{public → server/public}/index.html +0 -0
  44. package/{public → server/public}/login.html +0 -0
  45. package/server/register.js +11 -0
  46. package/server/routes/index.js +81 -3
  47. package/server/services/documentation.js +125 -1835
  48. package/server/utils/builders/build-api-endpoint-path.js +174 -0
  49. package/server/utils/builders/build-api-requests.js +41 -0
  50. package/server/utils/builders/build-api-responses.js +108 -0
  51. package/server/utils/builders/index.js +11 -0
  52. package/server/utils/clean-schema-attributes.js +205 -0
  53. package/server/utils/error-response.js +22 -0
  54. package/server/utils/get-schema-data.js +32 -0
  55. package/server/utils/query-params.js +84 -0
  56. package/strapi-admin.js +3 -0
  57. package/strapi-server.js +1 -19
  58. package/admin/src/assets/images/logo.svg +0 -1
  59. package/admin/src/components/Block/components.js +0 -26
  60. package/admin/src/components/Block/index.js +0 -39
  61. package/admin/src/components/Copy/index.js +0 -36
  62. package/admin/src/components/Header/index.js +0 -72
  63. package/admin/src/components/Row/ButtonContainer.js +0 -67
  64. package/admin/src/components/Row/components.js +0 -83
  65. package/admin/src/components/Row/index.js +0 -51
  66. package/admin/src/pages/App/index.js +0 -21
  67. package/admin/src/pages/HomePage/components.js +0 -59
  68. package/admin/src/pages/HomePage/index.js +0 -168
  69. package/admin/src/pages/HomePage/useHomePage.js +0 -56
  70. package/server/policies/index.js +0 -7
  71. package/server/routes/routes.json +0 -74
  72. package/server/services/utils/forms.json +0 -29
@@ -0,0 +1,873 @@
1
+ import React from 'react';
2
+ import { render, screen, waitFor } from '@testing-library/react';
3
+ import { IntlProvider } from 'react-intl';
4
+ import { QueryClient, QueryClientProvider } from 'react-query';
5
+ import { ThemeProvider, lightTheme } from '@strapi/design-system';
6
+ import { Router } from 'react-router-dom';
7
+ import { createMemoryHistory } from 'history';
8
+
9
+ import PluginPage from '../index';
10
+ import server from './server';
11
+
12
+ jest.mock('@strapi/helper-plugin', () => ({
13
+ ...jest.requireActual('@strapi/helper-plugin'),
14
+ useNotification: jest.fn(),
15
+ CheckPermissions: jest.fn(({ children }) => children),
16
+ }));
17
+
18
+ const client = new QueryClient({
19
+ defaultOptions: {
20
+ queries: {
21
+ retry: false,
22
+ },
23
+ },
24
+ });
25
+
26
+ const makeApp = history => (
27
+ <Router history={history}>
28
+ <ThemeProvider theme={lightTheme}>
29
+ <QueryClientProvider client={client}>
30
+ <IntlProvider locale="en" messages={{}} textComponent="span">
31
+ <PluginPage />
32
+ </IntlProvider>
33
+ </QueryClientProvider>
34
+ </ThemeProvider>
35
+ </Router>
36
+ );
37
+
38
+ describe('Plugin | Documentation | PluginPage', () => {
39
+ beforeAll(() => server.listen());
40
+
41
+ beforeEach(() => {
42
+ jest.clearAllMocks();
43
+ });
44
+
45
+ afterEach(() => server.resetHandlers());
46
+
47
+ afterAll(() => server.close());
48
+
49
+ it('should show a loader when fetching data', () => {
50
+ const history = createMemoryHistory();
51
+ const App = makeApp(history);
52
+ render(App);
53
+
54
+ expect(screen.getByTestId('loader')).toBeInTheDocument();
55
+ });
56
+
57
+ it('should show a list of versions', async () => {
58
+ const history = createMemoryHistory();
59
+ const App = makeApp(history);
60
+ const {
61
+ container: { firstChild },
62
+ } = render(App);
63
+
64
+ await waitFor(() => expect(screen.getByText('1.0.0')).toBeInTheDocument());
65
+
66
+ expect(firstChild).toMatchInlineSnapshot(`
67
+ .c14 {
68
+ font-weight: 600;
69
+ color: #32324d;
70
+ font-size: 0.75rem;
71
+ line-height: 1.33;
72
+ }
73
+
74
+ .c11 {
75
+ padding-right: 8px;
76
+ }
77
+
78
+ .c8 {
79
+ display: -webkit-box;
80
+ display: -webkit-flex;
81
+ display: -ms-flexbox;
82
+ display: flex;
83
+ cursor: pointer;
84
+ padding: 8px;
85
+ border-radius: 4px;
86
+ background: #ffffff;
87
+ border: 1px solid #dcdce4;
88
+ position: relative;
89
+ outline: none;
90
+ }
91
+
92
+ .c8 svg {
93
+ height: 12px;
94
+ width: 12px;
95
+ }
96
+
97
+ .c8 svg > g,
98
+ .c8 svg path {
99
+ fill: #ffffff;
100
+ }
101
+
102
+ .c8[aria-disabled='true'] {
103
+ pointer-events: none;
104
+ }
105
+
106
+ .c8:after {
107
+ -webkit-transition-property: all;
108
+ transition-property: all;
109
+ -webkit-transition-duration: 0.2s;
110
+ transition-duration: 0.2s;
111
+ border-radius: 8px;
112
+ content: '';
113
+ position: absolute;
114
+ top: -4px;
115
+ bottom: -4px;
116
+ left: -4px;
117
+ right: -4px;
118
+ border: 2px solid transparent;
119
+ }
120
+
121
+ .c8:focus-visible {
122
+ outline: none;
123
+ }
124
+
125
+ .c8:focus-visible:after {
126
+ border-radius: 8px;
127
+ content: '';
128
+ position: absolute;
129
+ top: -5px;
130
+ bottom: -5px;
131
+ left: -5px;
132
+ right: -5px;
133
+ border: 2px solid #4945ff;
134
+ }
135
+
136
+ .c12 {
137
+ height: 100%;
138
+ }
139
+
140
+ .c9 {
141
+ -webkit-align-items: center;
142
+ -webkit-box-align: center;
143
+ -ms-flex-align: center;
144
+ align-items: center;
145
+ padding: 8px 16px;
146
+ background: #4945ff;
147
+ border: none;
148
+ border: 1px solid #4945ff;
149
+ background: #4945ff;
150
+ }
151
+
152
+ .c9 .c10 {
153
+ display: -webkit-box;
154
+ display: -webkit-flex;
155
+ display: -ms-flexbox;
156
+ display: flex;
157
+ -webkit-align-items: center;
158
+ -webkit-box-align: center;
159
+ -ms-flex-align: center;
160
+ align-items: center;
161
+ }
162
+
163
+ .c9 .c13 {
164
+ color: #ffffff;
165
+ }
166
+
167
+ .c9[aria-disabled='true'] {
168
+ border: 1px solid #dcdce4;
169
+ background: #eaeaef;
170
+ }
171
+
172
+ .c9[aria-disabled='true'] .c13 {
173
+ color: #666687;
174
+ }
175
+
176
+ .c9[aria-disabled='true'] svg > g,
177
+ .c9[aria-disabled='true'] svg path {
178
+ fill: #666687;
179
+ }
180
+
181
+ .c9[aria-disabled='true']:active {
182
+ border: 1px solid #dcdce4;
183
+ background: #eaeaef;
184
+ }
185
+
186
+ .c9[aria-disabled='true']:active .c13 {
187
+ color: #666687;
188
+ }
189
+
190
+ .c9[aria-disabled='true']:active svg > g,
191
+ .c9[aria-disabled='true']:active svg path {
192
+ fill: #666687;
193
+ }
194
+
195
+ .c9:hover {
196
+ border: 1px solid #7b79ff;
197
+ background: #7b79ff;
198
+ }
199
+
200
+ .c9:active {
201
+ border: 1px solid #4945ff;
202
+ background: #4945ff;
203
+ }
204
+
205
+ .c32 {
206
+ display: -webkit-box;
207
+ display: -webkit-flex;
208
+ display: -ms-flexbox;
209
+ display: flex;
210
+ -webkit-flex-direction: row;
211
+ -ms-flex-direction: row;
212
+ flex-direction: row;
213
+ -webkit-box-pack: end;
214
+ -webkit-justify-content: end;
215
+ -ms-flex-pack: end;
216
+ justify-content: end;
217
+ -webkit-align-items: center;
218
+ -webkit-box-align: center;
219
+ -ms-flex-align: center;
220
+ align-items: center;
221
+ }
222
+
223
+ .c33 {
224
+ display: -webkit-box;
225
+ display: -webkit-flex;
226
+ display: -ms-flexbox;
227
+ display: flex;
228
+ cursor: pointer;
229
+ padding: 8px;
230
+ border-radius: 4px;
231
+ background: #ffffff;
232
+ border: 1px solid #dcdce4;
233
+ position: relative;
234
+ outline: none;
235
+ }
236
+
237
+ .c33 svg {
238
+ height: 12px;
239
+ width: 12px;
240
+ }
241
+
242
+ .c33 svg > g,
243
+ .c33 svg path {
244
+ fill: #ffffff;
245
+ }
246
+
247
+ .c33[aria-disabled='true'] {
248
+ pointer-events: none;
249
+ }
250
+
251
+ .c33:after {
252
+ -webkit-transition-property: all;
253
+ transition-property: all;
254
+ -webkit-transition-duration: 0.2s;
255
+ transition-duration: 0.2s;
256
+ border-radius: 8px;
257
+ content: '';
258
+ position: absolute;
259
+ top: -4px;
260
+ bottom: -4px;
261
+ left: -4px;
262
+ right: -4px;
263
+ border: 2px solid transparent;
264
+ }
265
+
266
+ .c33:focus-visible {
267
+ outline: none;
268
+ }
269
+
270
+ .c33:focus-visible:after {
271
+ border-radius: 8px;
272
+ content: '';
273
+ position: absolute;
274
+ top: -5px;
275
+ bottom: -5px;
276
+ left: -5px;
277
+ right: -5px;
278
+ border: 2px solid #4945ff;
279
+ }
280
+
281
+ .c34 {
282
+ display: -webkit-box;
283
+ display: -webkit-flex;
284
+ display: -ms-flexbox;
285
+ display: flex;
286
+ -webkit-align-items: center;
287
+ -webkit-box-align: center;
288
+ -ms-flex-align: center;
289
+ align-items: center;
290
+ -webkit-box-pack: center;
291
+ -webkit-justify-content: center;
292
+ -ms-flex-pack: center;
293
+ justify-content: center;
294
+ height: 2rem;
295
+ width: 2rem;
296
+ border: none;
297
+ }
298
+
299
+ .c34 svg > g,
300
+ .c34 svg path {
301
+ fill: #8e8ea9;
302
+ }
303
+
304
+ .c34:hover svg > g,
305
+ .c34:hover svg path {
306
+ fill: #666687;
307
+ }
308
+
309
+ .c34:active svg > g,
310
+ .c34:active svg path {
311
+ fill: #a5a5ba;
312
+ }
313
+
314
+ .c34[aria-disabled='true'] {
315
+ background-color: #eaeaef;
316
+ }
317
+
318
+ .c34[aria-disabled='true'] svg path {
319
+ fill: #666687;
320
+ }
321
+
322
+ .c17 {
323
+ background: #ffffff;
324
+ border-radius: 4px;
325
+ box-shadow: 0px 1px 4px rgba(33,33,52,0.1);
326
+ }
327
+
328
+ .c20 {
329
+ padding-right: 24px;
330
+ padding-left: 24px;
331
+ }
332
+
333
+ .c30 {
334
+ width: 50%;
335
+ }
336
+
337
+ .c18 {
338
+ overflow: hidden;
339
+ }
340
+
341
+ .c22 {
342
+ width: 100%;
343
+ white-space: nowrap;
344
+ }
345
+
346
+ .c19 {
347
+ position: relative;
348
+ }
349
+
350
+ .c19:before {
351
+ background: linear-gradient(90deg,#c0c0cf 0%,rgba(0,0,0,0) 100%);
352
+ opacity: 0.2;
353
+ position: absolute;
354
+ height: 100%;
355
+ box-shadow: 0px 1px 4px rgba(33,33,52,0.1);
356
+ width: 8px;
357
+ left: 0;
358
+ }
359
+
360
+ .c19:after {
361
+ background: linear-gradient(270deg,#c0c0cf 0%,rgba(0,0,0,0) 100%);
362
+ opacity: 0.2;
363
+ position: absolute;
364
+ height: 100%;
365
+ box-shadow: 0px 1px 4px rgba(33,33,52,0.1);
366
+ width: 8px;
367
+ right: 0;
368
+ top: 0;
369
+ }
370
+
371
+ .c21 {
372
+ overflow-x: auto;
373
+ }
374
+
375
+ .c29 tr:last-of-type {
376
+ border-bottom: none;
377
+ }
378
+
379
+ .c23 {
380
+ border-bottom: 1px solid #eaeaef;
381
+ }
382
+
383
+ .c24 {
384
+ border-bottom: 1px solid #eaeaef;
385
+ }
386
+
387
+ .c24 td,
388
+ .c24 th {
389
+ padding: 16px;
390
+ }
391
+
392
+ .c24 td:first-of-type,
393
+ .c24 th:first-of-type {
394
+ padding: 0 4px;
395
+ }
396
+
397
+ .c24 th {
398
+ padding-top: 0;
399
+ padding-bottom: 0;
400
+ height: 3.5rem;
401
+ }
402
+
403
+ .c26 {
404
+ display: -webkit-box;
405
+ display: -webkit-flex;
406
+ display: -ms-flexbox;
407
+ display: flex;
408
+ -webkit-flex-direction: row;
409
+ -ms-flex-direction: row;
410
+ flex-direction: row;
411
+ -webkit-align-items: center;
412
+ -webkit-box-align: center;
413
+ -ms-flex-align: center;
414
+ align-items: center;
415
+ }
416
+
417
+ .c25 {
418
+ vertical-align: middle;
419
+ text-align: left;
420
+ color: #666687;
421
+ outline-offset: -4px;
422
+ }
423
+
424
+ .c25 input {
425
+ vertical-align: sub;
426
+ }
427
+
428
+ .c28 svg {
429
+ height: 0.25rem;
430
+ }
431
+
432
+ .c27 {
433
+ color: #666687;
434
+ font-weight: 600;
435
+ font-size: 0.6875rem;
436
+ line-height: 1.45;
437
+ text-transform: uppercase;
438
+ }
439
+
440
+ .c31 {
441
+ color: #32324d;
442
+ font-size: 0.875rem;
443
+ line-height: 1.43;
444
+ }
445
+
446
+ .c1 {
447
+ padding-bottom: 56px;
448
+ }
449
+
450
+ .c4 {
451
+ background: #f6f6f9;
452
+ padding-top: 40px;
453
+ padding-right: 56px;
454
+ padding-bottom: 40px;
455
+ padding-left: 56px;
456
+ }
457
+
458
+ .c16 {
459
+ padding-right: 56px;
460
+ padding-left: 56px;
461
+ }
462
+
463
+ .c0 {
464
+ display: grid;
465
+ grid-template-columns: 1fr;
466
+ }
467
+
468
+ .c2 {
469
+ overflow-x: hidden;
470
+ }
471
+
472
+ .c5 {
473
+ display: -webkit-box;
474
+ display: -webkit-flex;
475
+ display: -ms-flexbox;
476
+ display: flex;
477
+ -webkit-flex-direction: row;
478
+ -ms-flex-direction: row;
479
+ flex-direction: row;
480
+ -webkit-box-pack: justify;
481
+ -webkit-justify-content: space-between;
482
+ -ms-flex-pack: justify;
483
+ justify-content: space-between;
484
+ -webkit-align-items: center;
485
+ -webkit-box-align: center;
486
+ -ms-flex-align: center;
487
+ align-items: center;
488
+ }
489
+
490
+ .c6 {
491
+ display: -webkit-box;
492
+ display: -webkit-flex;
493
+ display: -ms-flexbox;
494
+ display: flex;
495
+ -webkit-flex-direction: row;
496
+ -ms-flex-direction: row;
497
+ flex-direction: row;
498
+ -webkit-align-items: center;
499
+ -webkit-box-align: center;
500
+ -ms-flex-align: center;
501
+ align-items: center;
502
+ }
503
+
504
+ .c7 {
505
+ color: #32324d;
506
+ font-weight: 600;
507
+ font-size: 2rem;
508
+ line-height: 1.25;
509
+ }
510
+
511
+ .c15 {
512
+ color: #666687;
513
+ font-size: 1rem;
514
+ line-height: 1.5;
515
+ }
516
+
517
+ .c3:focus-visible {
518
+ outline: none;
519
+ }
520
+
521
+ <div
522
+ class="c0"
523
+ >
524
+ <div
525
+ class="c1 c2"
526
+ >
527
+ <main
528
+ aria-busy="false"
529
+ aria-labelledby="main-content-title"
530
+ class="c3"
531
+ id="main-content"
532
+ tabindex="-1"
533
+ >
534
+ <div
535
+ style="height: 0px;"
536
+ >
537
+ <div
538
+ class="c4"
539
+ data-strapi-header="true"
540
+ >
541
+ <div
542
+ class="c5"
543
+ >
544
+ <div
545
+ class="c6"
546
+ >
547
+ <h1
548
+ class="c7"
549
+ >
550
+ Documentation
551
+ </h1>
552
+ </div>
553
+ <button
554
+ aria-disabled="false"
555
+ class="c8 c9"
556
+ type="button"
557
+ >
558
+ <div
559
+ aria-hidden="true"
560
+ class="c10 c11 c12"
561
+ >
562
+ <svg
563
+ fill="none"
564
+ height="1em"
565
+ viewBox="0 0 24 24"
566
+ width="1em"
567
+ xmlns="http://www.w3.org/2000/svg"
568
+ >
569
+ <path
570
+ d="M15.2 12a3.2 3.2 0 11-6.399 0 3.2 3.2 0 016.4 0z"
571
+ fill="#212134"
572
+ />
573
+ <path
574
+ clip-rule="evenodd"
575
+ d="M18.78 6.103c1.923 1.243 3.64 2.981 4.963 5.027a1.61 1.61 0 01.005 1.738c-1.318 2.063-3.031 3.807-4.954 5.046-2.12 1.364-4.475 2.086-6.81 2.086-2.388 0-4.683-.7-6.816-2.082-1.894-1.225-3.593-2.966-4.914-5.032a1.596 1.596 0 01.032-1.777C1.89 8.811 3.734 7.027 5.77 5.805 7.767 4.608 9.858 4 11.984 4c2.317 0 4.667.728 6.795 2.103zm-9.446 9.888a4.8 4.8 0 105.334-7.982 4.8 4.8 0 00-5.334 7.982z"
576
+ fill="#212134"
577
+ fill-rule="evenodd"
578
+ />
579
+ </svg>
580
+ </div>
581
+ <span
582
+ class="c13 c14"
583
+ >
584
+ Open Documentation
585
+ </span>
586
+ </button>
587
+ </div>
588
+ <p
589
+ class="c15"
590
+ >
591
+ Configure the documentation plugin
592
+ </p>
593
+ </div>
594
+ </div>
595
+ <div
596
+ class="c16"
597
+ >
598
+ <div
599
+ class="c17 c18"
600
+ >
601
+ <div
602
+ class="c19"
603
+ >
604
+ <div
605
+ class="c20 c21"
606
+ >
607
+ <table
608
+ aria-colcount="4"
609
+ aria-rowcount="3"
610
+ class="c22"
611
+ >
612
+ <thead
613
+ class="c23"
614
+ >
615
+ <tr
616
+ aria-rowindex="1"
617
+ class="c24"
618
+ >
619
+ <th
620
+ aria-colindex="1"
621
+ class="c25"
622
+ tabindex="0"
623
+ >
624
+ <div
625
+ class="c26"
626
+ >
627
+ <span
628
+ class="c27"
629
+ >
630
+ Version
631
+ </span>
632
+ <span
633
+ class="c28"
634
+ />
635
+ </div>
636
+ </th>
637
+ <th
638
+ aria-colindex="2"
639
+ class="c25"
640
+ tabindex="-1"
641
+ >
642
+ <div
643
+ class="c26"
644
+ >
645
+ <span
646
+ class="c27"
647
+ >
648
+ Last Generated
649
+ </span>
650
+ <span
651
+ class="c28"
652
+ />
653
+ </div>
654
+ </th>
655
+ </tr>
656
+ </thead>
657
+ <tbody
658
+ class="c29"
659
+ >
660
+ <tr
661
+ aria-rowindex="2"
662
+ class="c24"
663
+ >
664
+ <td
665
+ aria-colindex="1"
666
+ class="c30 c25"
667
+ tabindex="-1"
668
+ width="50%"
669
+ >
670
+ <span
671
+ class="c31"
672
+ >
673
+ 1.2.0
674
+ </span>
675
+ </td>
676
+ <td
677
+ aria-colindex="2"
678
+ class="c30 c25"
679
+ tabindex="-1"
680
+ width="50%"
681
+ >
682
+ <span
683
+ class="c31"
684
+ />
685
+ </td>
686
+ <td
687
+ aria-colindex="3"
688
+ class="c25"
689
+ >
690
+ <div
691
+ aria-hidden="true"
692
+ class="c32"
693
+ role="button"
694
+ >
695
+ <span>
696
+ <button
697
+ aria-disabled="false"
698
+ aria-labelledby="tooltip-1"
699
+ class="c33 c34"
700
+ tabindex="-1"
701
+ type="button"
702
+ >
703
+ <svg
704
+ fill="none"
705
+ height="1em"
706
+ viewBox="0 0 24 24"
707
+ width="1em"
708
+ xmlns="http://www.w3.org/2000/svg"
709
+ >
710
+ <path
711
+ d="M15.2 12a3.2 3.2 0 11-6.399 0 3.2 3.2 0 016.4 0z"
712
+ fill="#212134"
713
+ />
714
+ <path
715
+ clip-rule="evenodd"
716
+ d="M18.78 6.103c1.923 1.243 3.64 2.981 4.963 5.027a1.61 1.61 0 01.005 1.738c-1.318 2.063-3.031 3.807-4.954 5.046-2.12 1.364-4.475 2.086-6.81 2.086-2.388 0-4.683-.7-6.816-2.082-1.894-1.225-3.593-2.966-4.914-5.032a1.596 1.596 0 01.032-1.777C1.89 8.811 3.734 7.027 5.77 5.805 7.767 4.608 9.858 4 11.984 4c2.317 0 4.667.728 6.795 2.103zm-9.446 9.888a4.8 4.8 0 105.334-7.982 4.8 4.8 0 00-5.334 7.982z"
717
+ fill="#212134"
718
+ fill-rule="evenodd"
719
+ />
720
+ </svg>
721
+ </button>
722
+ </span>
723
+ <span>
724
+ <button
725
+ aria-disabled="false"
726
+ aria-labelledby="tooltip-3"
727
+ class="c33 c34"
728
+ tabindex="-1"
729
+ type="button"
730
+ >
731
+ <svg
732
+ fill="none"
733
+ height="1em"
734
+ viewBox="0 0 24 24"
735
+ width="1em"
736
+ xmlns="http://www.w3.org/2000/svg"
737
+ >
738
+ <path
739
+ clip-rule="evenodd"
740
+ d="M15.681 2.804A9.64 9.64 0 0011.818 2C6.398 2 2 6.48 2 12c0 5.521 4.397 10 9.818 10 2.03 0 4.011-.641 5.67-1.835a9.987 9.987 0 003.589-4.831 1.117 1.117 0 00-.664-1.418 1.086 1.086 0 00-1.393.676 7.769 7.769 0 01-2.792 3.758 7.546 7.546 0 01-4.41 1.428V4.222h.002a7.492 7.492 0 013.003.625 7.61 7.61 0 012.5 1.762l.464.551-2.986 3.042a.186.186 0 00.129.316H22V3.317a.188.188 0 00-.112-.172.179.179 0 00-.199.04l-2.355 2.4-.394-.468-.02-.02a9.791 9.791 0 00-3.239-2.293zm-3.863 1.418V2v2.222zm0 0v15.556c-4.216 0-7.636-3.484-7.636-7.778s3.42-7.777 7.636-7.778z"
741
+ fill="#212134"
742
+ fill-rule="evenodd"
743
+ />
744
+ </svg>
745
+ </button>
746
+ </span>
747
+ <span>
748
+ <button
749
+ aria-disabled="false"
750
+ aria-labelledby="tooltip-5"
751
+ class="c33 c34"
752
+ tabindex="-1"
753
+ type="button"
754
+ >
755
+ <svg
756
+ fill="none"
757
+ height="1em"
758
+ viewBox="0 0 24 24"
759
+ width="1em"
760
+ xmlns="http://www.w3.org/2000/svg"
761
+ >
762
+ <path
763
+ d="M3.236 6.149a.2.2 0 00-.197.233L6 24h12l2.96-17.618a.2.2 0 00-.196-.233H3.236zM21.8 1.983c.11 0 .2.09.2.2v1.584a.2.2 0 01-.2.2H2.2a.2.2 0 01-.2-.2V2.183c0-.11.09-.2.2-.2h5.511c.9 0 1.631-1.09 1.631-1.983h5.316c0 .894.73 1.983 1.631 1.983H21.8z"
764
+ fill="#32324D"
765
+ />
766
+ </svg>
767
+ </button>
768
+ </span>
769
+ </div>
770
+ </td>
771
+ </tr>
772
+ <tr
773
+ aria-rowindex="3"
774
+ class="c24"
775
+ >
776
+ <td
777
+ aria-colindex="1"
778
+ class="c30 c25"
779
+ tabindex="-1"
780
+ width="50%"
781
+ >
782
+ <span
783
+ class="c31"
784
+ >
785
+ 1.0.0
786
+ </span>
787
+ </td>
788
+ <td
789
+ aria-colindex="2"
790
+ class="c30 c25"
791
+ tabindex="-1"
792
+ width="50%"
793
+ >
794
+ <span
795
+ class="c31"
796
+ />
797
+ </td>
798
+ <td
799
+ aria-colindex="3"
800
+ class="c25"
801
+ >
802
+ <div
803
+ aria-hidden="true"
804
+ class="c32"
805
+ role="button"
806
+ >
807
+ <span>
808
+ <button
809
+ aria-disabled="false"
810
+ aria-labelledby="tooltip-7"
811
+ class="c33 c34"
812
+ tabindex="-1"
813
+ type="button"
814
+ >
815
+ <svg
816
+ fill="none"
817
+ height="1em"
818
+ viewBox="0 0 24 24"
819
+ width="1em"
820
+ xmlns="http://www.w3.org/2000/svg"
821
+ >
822
+ <path
823
+ d="M15.2 12a3.2 3.2 0 11-6.399 0 3.2 3.2 0 016.4 0z"
824
+ fill="#212134"
825
+ />
826
+ <path
827
+ clip-rule="evenodd"
828
+ d="M18.78 6.103c1.923 1.243 3.64 2.981 4.963 5.027a1.61 1.61 0 01.005 1.738c-1.318 2.063-3.031 3.807-4.954 5.046-2.12 1.364-4.475 2.086-6.81 2.086-2.388 0-4.683-.7-6.816-2.082-1.894-1.225-3.593-2.966-4.914-5.032a1.596 1.596 0 01.032-1.777C1.89 8.811 3.734 7.027 5.77 5.805 7.767 4.608 9.858 4 11.984 4c2.317 0 4.667.728 6.795 2.103zm-9.446 9.888a4.8 4.8 0 105.334-7.982 4.8 4.8 0 00-5.334 7.982z"
829
+ fill="#212134"
830
+ fill-rule="evenodd"
831
+ />
832
+ </svg>
833
+ </button>
834
+ </span>
835
+ <span>
836
+ <button
837
+ aria-disabled="false"
838
+ aria-labelledby="tooltip-9"
839
+ class="c33 c34"
840
+ tabindex="-1"
841
+ type="button"
842
+ >
843
+ <svg
844
+ fill="none"
845
+ height="1em"
846
+ viewBox="0 0 24 24"
847
+ width="1em"
848
+ xmlns="http://www.w3.org/2000/svg"
849
+ >
850
+ <path
851
+ clip-rule="evenodd"
852
+ d="M15.681 2.804A9.64 9.64 0 0011.818 2C6.398 2 2 6.48 2 12c0 5.521 4.397 10 9.818 10 2.03 0 4.011-.641 5.67-1.835a9.987 9.987 0 003.589-4.831 1.117 1.117 0 00-.664-1.418 1.086 1.086 0 00-1.393.676 7.769 7.769 0 01-2.792 3.758 7.546 7.546 0 01-4.41 1.428V4.222h.002a7.492 7.492 0 013.003.625 7.61 7.61 0 012.5 1.762l.464.551-2.986 3.042a.186.186 0 00.129.316H22V3.317a.188.188 0 00-.112-.172.179.179 0 00-.199.04l-2.355 2.4-.394-.468-.02-.02a9.791 9.791 0 00-3.239-2.293zm-3.863 1.418V2v2.222zm0 0v15.556c-4.216 0-7.636-3.484-7.636-7.778s3.42-7.777 7.636-7.778z"
853
+ fill="#212134"
854
+ fill-rule="evenodd"
855
+ />
856
+ </svg>
857
+ </button>
858
+ </span>
859
+ </div>
860
+ </td>
861
+ </tr>
862
+ </tbody>
863
+ </table>
864
+ </div>
865
+ </div>
866
+ </div>
867
+ </div>
868
+ </main>
869
+ </div>
870
+ </div>
871
+ `);
872
+ });
873
+ });