@aurodesignsystem-dev/auro-table 0.0.0-pr134.1 → 0.0.0-pr139.0
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.
- package/README.md +267 -43
- package/custom-elements.json +563 -0
- package/demo/api.html +1 -1
- package/demo/api.md +43 -31
- package/demo/auro-table.min.js +532 -59
- package/demo/index.html +1 -1
- package/demo/index.md +26 -120
- package/dist/auro-table-C52RNUva.js +12 -0
- package/dist/index.d.ts +185 -15
- package/dist/index.js +1 -1
- package/dist/registered.js +1 -1
- package/package.json +20 -11
- package/dist/auro-table-CifFJTj6.js +0 -11
|
@@ -0,0 +1,563 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "1.0.0",
|
|
3
|
+
"readme": "",
|
|
4
|
+
"modules": [
|
|
5
|
+
{
|
|
6
|
+
"kind": "javascript-module",
|
|
7
|
+
"path": "src/auro-table.js",
|
|
8
|
+
"declarations": [
|
|
9
|
+
{
|
|
10
|
+
"kind": "class",
|
|
11
|
+
"description": "\nThe `auro-table` element supports two types of tables, either a generated table created by providing data for columns and rows via attributes, or by projecting your own custom table into the default slot of the component to be styled.",
|
|
12
|
+
"name": "AuroTable",
|
|
13
|
+
"slots": [
|
|
14
|
+
{
|
|
15
|
+
"description": "Default slot for projecting a native `<table>` element. Only available when `columnHeaders` and `componentData` are not set.",
|
|
16
|
+
"name": ""
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
"members": [
|
|
20
|
+
{
|
|
21
|
+
"kind": "method",
|
|
22
|
+
"name": "_initializeDefaults",
|
|
23
|
+
"type": {
|
|
24
|
+
"text": "_initializeDefaults() => void"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"kind": "method",
|
|
29
|
+
"name": "#bindToSlottedTable",
|
|
30
|
+
"privacy": "private",
|
|
31
|
+
"parameters": [
|
|
32
|
+
{
|
|
33
|
+
"name": "table",
|
|
34
|
+
"type": {
|
|
35
|
+
"text": "HTMLTableElement"
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
],
|
|
39
|
+
"description": "Binds the component to a slotted table element.\nThis includes extracting existing elements and observing for mutations."
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"kind": "method",
|
|
43
|
+
"name": "#classMapFor",
|
|
44
|
+
"privacy": "private",
|
|
45
|
+
"parameters": [
|
|
46
|
+
{
|
|
47
|
+
"name": "tag",
|
|
48
|
+
"type": {
|
|
49
|
+
"text": "HTMLElement.tagName"
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
],
|
|
53
|
+
"description": "Gets the class map based on this.#elementClasses for a given tag.",
|
|
54
|
+
"return": {
|
|
55
|
+
"type": {
|
|
56
|
+
"text": "Object"
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"kind": "field",
|
|
62
|
+
"name": "#elementClasses",
|
|
63
|
+
"privacy": "private",
|
|
64
|
+
"type": {
|
|
65
|
+
"text": "object"
|
|
66
|
+
},
|
|
67
|
+
"default": "{ 'TABLE': ['body-default'], 'TH': ['heading-2xs'], // 'TD': [], // No specific classes for TD as per current requirements // 'TR': [], // No specific classes for TR as per current requirements // 'THEAD': [], // No specific classes for THEAD as per current requirements // 'TBODY': [] // No specific classes for TBODY as per current requirements }"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"kind": "method",
|
|
71
|
+
"name": "#extractElementsFromSlottedTable",
|
|
72
|
+
"privacy": "private",
|
|
73
|
+
"parameters": [
|
|
74
|
+
{
|
|
75
|
+
"name": "table",
|
|
76
|
+
"type": {
|
|
77
|
+
"text": "HTMLTableElement"
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
],
|
|
81
|
+
"description": "Extracts relevant elements from a slotted table and adds them to collections for tracking."
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"kind": "method",
|
|
85
|
+
"name": "#extractHeaders",
|
|
86
|
+
"privacy": "private",
|
|
87
|
+
"description": "Extracts headers from the columnHeaders property and populates the table header.",
|
|
88
|
+
"return": {
|
|
89
|
+
"type": {
|
|
90
|
+
"text": "void"
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"kind": "method",
|
|
96
|
+
"name": "#extractRows",
|
|
97
|
+
"privacy": "private",
|
|
98
|
+
"description": "Extracts rows from the componentData property and populates the table body.",
|
|
99
|
+
"return": {
|
|
100
|
+
"type": {
|
|
101
|
+
"text": "void"
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"kind": "method",
|
|
107
|
+
"name": "#handleExternalTableSlotChange",
|
|
108
|
+
"privacy": "private",
|
|
109
|
+
"description": "Handles when elements are projected into the default slot",
|
|
110
|
+
"return": {
|
|
111
|
+
"type": {
|
|
112
|
+
"text": "void"
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"kind": "method",
|
|
118
|
+
"name": "#injectStylesIntoSlottedTable",
|
|
119
|
+
"privacy": "private",
|
|
120
|
+
"parameters": [
|
|
121
|
+
{
|
|
122
|
+
"name": "table",
|
|
123
|
+
"type": {
|
|
124
|
+
"text": "HTMLTableElement"
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
],
|
|
128
|
+
"description": "Injects styles into the slotted table.",
|
|
129
|
+
"return": {
|
|
130
|
+
"type": {
|
|
131
|
+
"text": "void"
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"kind": "method",
|
|
137
|
+
"name": "#observeTableMutations",
|
|
138
|
+
"privacy": "private",
|
|
139
|
+
"parameters": [
|
|
140
|
+
{
|
|
141
|
+
"name": "table",
|
|
142
|
+
"type": {
|
|
143
|
+
"text": "HTMLTableElement"
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
],
|
|
147
|
+
"description": "Observes mutations to the table element and adds or removes elements from collections accordingly."
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
"kind": "field",
|
|
151
|
+
"name": "#runtimeUtils",
|
|
152
|
+
"privacy": "private",
|
|
153
|
+
"default": "new AuroLibraryRuntimeUtils()"
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"kind": "field",
|
|
157
|
+
"name": "#tableBody",
|
|
158
|
+
"privacy": "private",
|
|
159
|
+
"readonly": true
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
"kind": "field",
|
|
163
|
+
"name": "#tableBodyRef",
|
|
164
|
+
"privacy": "private"
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"kind": "field",
|
|
168
|
+
"name": "#tableHeader",
|
|
169
|
+
"privacy": "private",
|
|
170
|
+
"readonly": true
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
"kind": "field",
|
|
174
|
+
"name": "#tableHeaderRef",
|
|
175
|
+
"privacy": "private"
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
"kind": "field",
|
|
179
|
+
"name": "#tableObserver",
|
|
180
|
+
"privacy": "private",
|
|
181
|
+
"type": {
|
|
182
|
+
"text": "null"
|
|
183
|
+
},
|
|
184
|
+
"default": "null"
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
"kind": "field",
|
|
188
|
+
"name": "#tableStylesTextContent",
|
|
189
|
+
"privacy": "private",
|
|
190
|
+
"static": true,
|
|
191
|
+
"default": "`${styleCss.cssText} ${tokensCss.cssText}`",
|
|
192
|
+
"readonly": true
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
"kind": "field",
|
|
196
|
+
"name": "#tableTag",
|
|
197
|
+
"privacy": "private",
|
|
198
|
+
"readonly": true
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
"kind": "field",
|
|
202
|
+
"name": "#tableTagRef",
|
|
203
|
+
"privacy": "private"
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"kind": "field",
|
|
207
|
+
"name": "#tagCollections",
|
|
208
|
+
"privacy": "private",
|
|
209
|
+
"description": "Creates a ChildItemService for each relevant table tag to manage collections of those elements.\nTo create a collection for a new tag, add it to the tagCollections array.",
|
|
210
|
+
"type": {
|
|
211
|
+
"text": "Object<string, ChildItemService>"
|
|
212
|
+
}
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
"kind": "field",
|
|
216
|
+
"name": "collectionUpdated",
|
|
217
|
+
"description": "Handles the addition of new elements to the table.\nCallback function for ChildItemService subscriptions contained in tagCollections.",
|
|
218
|
+
"parameters": [
|
|
219
|
+
{
|
|
220
|
+
"name": "addedNodes",
|
|
221
|
+
"type": {
|
|
222
|
+
"text": "NodeList"
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
],
|
|
226
|
+
"privacy": "private"
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
"kind": "field",
|
|
230
|
+
"name": "columnHeaders",
|
|
231
|
+
"privacy": "public",
|
|
232
|
+
"type": {
|
|
233
|
+
"text": "array"
|
|
234
|
+
},
|
|
235
|
+
"description": "An array of strings representing the table's column headers.",
|
|
236
|
+
"attribute": "columnHeaders",
|
|
237
|
+
"reflects": true
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
"kind": "field",
|
|
241
|
+
"name": "componentData",
|
|
242
|
+
"privacy": "public",
|
|
243
|
+
"type": {
|
|
244
|
+
"text": "array"
|
|
245
|
+
},
|
|
246
|
+
"description": "An array of objects representing the table's data rows.",
|
|
247
|
+
"attribute": "componentData",
|
|
248
|
+
"reflects": true
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
"kind": "field",
|
|
252
|
+
"name": "nowrap",
|
|
253
|
+
"privacy": "public",
|
|
254
|
+
"type": {
|
|
255
|
+
"text": "boolean"
|
|
256
|
+
},
|
|
257
|
+
"description": "When true, prevents the table from wrapping its content.",
|
|
258
|
+
"attribute": "nowrap",
|
|
259
|
+
"reflects": true
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
"kind": "method",
|
|
263
|
+
"name": "register",
|
|
264
|
+
"static": true,
|
|
265
|
+
"parameters": [
|
|
266
|
+
{
|
|
267
|
+
"name": "name",
|
|
268
|
+
"default": "\"auro-table\"",
|
|
269
|
+
"description": "The name of the element that you want to register.",
|
|
270
|
+
"optional": true,
|
|
271
|
+
"type": {
|
|
272
|
+
"text": "string"
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
],
|
|
276
|
+
"description": "This will register this element with the browser.",
|
|
277
|
+
"type": {
|
|
278
|
+
"text": "register(name?: string = \"auro-table\") => void"
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
],
|
|
282
|
+
"attributes": [
|
|
283
|
+
{
|
|
284
|
+
"name": "columnHeaders",
|
|
285
|
+
"type": {
|
|
286
|
+
"text": "array"
|
|
287
|
+
},
|
|
288
|
+
"description": "An array of strings representing the table's column headers.",
|
|
289
|
+
"fieldName": "columnHeaders"
|
|
290
|
+
},
|
|
291
|
+
{
|
|
292
|
+
"name": "componentData",
|
|
293
|
+
"type": {
|
|
294
|
+
"text": "array"
|
|
295
|
+
},
|
|
296
|
+
"description": "An array of objects representing the table's data rows.",
|
|
297
|
+
"fieldName": "componentData"
|
|
298
|
+
},
|
|
299
|
+
{
|
|
300
|
+
"name": "nowrap",
|
|
301
|
+
"type": {
|
|
302
|
+
"text": "boolean"
|
|
303
|
+
},
|
|
304
|
+
"description": "When true, prevents the table from wrapping its content.",
|
|
305
|
+
"fieldName": "nowrap"
|
|
306
|
+
}
|
|
307
|
+
],
|
|
308
|
+
"superclass": {
|
|
309
|
+
"name": "LitElement",
|
|
310
|
+
"package": "lit"
|
|
311
|
+
},
|
|
312
|
+
"tagName": "auro-table",
|
|
313
|
+
"customElement": true,
|
|
314
|
+
"modulePath": "src/auro-table.js"
|
|
315
|
+
}
|
|
316
|
+
],
|
|
317
|
+
"exports": [
|
|
318
|
+
{
|
|
319
|
+
"kind": "js",
|
|
320
|
+
"name": "AuroTable",
|
|
321
|
+
"declaration": {
|
|
322
|
+
"name": "AuroTable",
|
|
323
|
+
"module": "src/auro-table.js"
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
]
|
|
327
|
+
},
|
|
328
|
+
{
|
|
329
|
+
"kind": "javascript-module",
|
|
330
|
+
"path": "src/child-service.js",
|
|
331
|
+
"declarations": [
|
|
332
|
+
{
|
|
333
|
+
"kind": "class",
|
|
334
|
+
"description": "",
|
|
335
|
+
"name": "ChildItemService",
|
|
336
|
+
"members": [
|
|
337
|
+
{
|
|
338
|
+
"kind": "method",
|
|
339
|
+
"name": "#getPreviousItems",
|
|
340
|
+
"privacy": "private"
|
|
341
|
+
},
|
|
342
|
+
{
|
|
343
|
+
"kind": "field",
|
|
344
|
+
"name": "#items",
|
|
345
|
+
"privacy": "private",
|
|
346
|
+
"type": {
|
|
347
|
+
"text": "array"
|
|
348
|
+
},
|
|
349
|
+
"default": "[]"
|
|
350
|
+
},
|
|
351
|
+
{
|
|
352
|
+
"kind": "method",
|
|
353
|
+
"name": "#notifySubscribers",
|
|
354
|
+
"privacy": "private",
|
|
355
|
+
"description": "Notify all subscribers of changes in the items array."
|
|
356
|
+
},
|
|
357
|
+
{
|
|
358
|
+
"kind": "field",
|
|
359
|
+
"name": "#previousItems",
|
|
360
|
+
"privacy": "private",
|
|
361
|
+
"type": {
|
|
362
|
+
"text": "array"
|
|
363
|
+
},
|
|
364
|
+
"default": "[]"
|
|
365
|
+
},
|
|
366
|
+
{
|
|
367
|
+
"kind": "field",
|
|
368
|
+
"name": "#subscribers",
|
|
369
|
+
"privacy": "private",
|
|
370
|
+
"type": {
|
|
371
|
+
"text": "array"
|
|
372
|
+
},
|
|
373
|
+
"default": "[]"
|
|
374
|
+
},
|
|
375
|
+
{
|
|
376
|
+
"kind": "method",
|
|
377
|
+
"name": "add",
|
|
378
|
+
"parameters": [
|
|
379
|
+
{
|
|
380
|
+
"name": "item",
|
|
381
|
+
"description": "An item to add to the scroller.",
|
|
382
|
+
"type": {
|
|
383
|
+
"text": "Object"
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
],
|
|
387
|
+
"return": {
|
|
388
|
+
"type": {
|
|
389
|
+
"text": "void"
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
},
|
|
393
|
+
{
|
|
394
|
+
"kind": "method",
|
|
395
|
+
"name": "addMany",
|
|
396
|
+
"parameters": [
|
|
397
|
+
{
|
|
398
|
+
"name": "items",
|
|
399
|
+
"type": {
|
|
400
|
+
"text": "ArrayLike<any>"
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
],
|
|
404
|
+
"return": {
|
|
405
|
+
"type": {
|
|
406
|
+
"text": "void"
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
},
|
|
410
|
+
{
|
|
411
|
+
"kind": "method",
|
|
412
|
+
"name": "clear"
|
|
413
|
+
},
|
|
414
|
+
{
|
|
415
|
+
"kind": "field",
|
|
416
|
+
"name": "current",
|
|
417
|
+
"readonly": true
|
|
418
|
+
},
|
|
419
|
+
{
|
|
420
|
+
"kind": "method",
|
|
421
|
+
"name": "getItemByIndex",
|
|
422
|
+
"parameters": [
|
|
423
|
+
{
|
|
424
|
+
"name": "index",
|
|
425
|
+
"type": {
|
|
426
|
+
"text": "Number"
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
],
|
|
430
|
+
"description": "Gets an item by its index in the items array.",
|
|
431
|
+
"return": {
|
|
432
|
+
"type": {
|
|
433
|
+
"text": "HTMLElement"
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
},
|
|
437
|
+
{
|
|
438
|
+
"kind": "method",
|
|
439
|
+
"name": "getItemByNumber",
|
|
440
|
+
"parameters": [
|
|
441
|
+
{
|
|
442
|
+
"name": "number",
|
|
443
|
+
"type": {
|
|
444
|
+
"text": "Number"
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
],
|
|
448
|
+
"description": "Gets an item by its number (1-based index).",
|
|
449
|
+
"return": {
|
|
450
|
+
"type": {
|
|
451
|
+
"text": "HTMLElement"
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
},
|
|
455
|
+
{
|
|
456
|
+
"kind": "method",
|
|
457
|
+
"name": "getNextItem",
|
|
458
|
+
"parameters": [
|
|
459
|
+
{
|
|
460
|
+
"name": "currentNumber"
|
|
461
|
+
}
|
|
462
|
+
]
|
|
463
|
+
},
|
|
464
|
+
{
|
|
465
|
+
"kind": "method",
|
|
466
|
+
"name": "getPreviousItem",
|
|
467
|
+
"parameters": [
|
|
468
|
+
{
|
|
469
|
+
"name": "currentNumber"
|
|
470
|
+
}
|
|
471
|
+
]
|
|
472
|
+
},
|
|
473
|
+
{
|
|
474
|
+
"kind": "method",
|
|
475
|
+
"name": "remove",
|
|
476
|
+
"parameters": [
|
|
477
|
+
{
|
|
478
|
+
"name": "item",
|
|
479
|
+
"description": "An item to remove from the scroller.",
|
|
480
|
+
"type": {
|
|
481
|
+
"text": "Object"
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
],
|
|
485
|
+
"return": {
|
|
486
|
+
"type": {
|
|
487
|
+
"text": "void"
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
},
|
|
491
|
+
{
|
|
492
|
+
"kind": "method",
|
|
493
|
+
"name": "subscribe",
|
|
494
|
+
"parameters": [
|
|
495
|
+
{
|
|
496
|
+
"name": "callback",
|
|
497
|
+
"description": "A callback function that will be called when the items change.",
|
|
498
|
+
"type": {
|
|
499
|
+
"text": "Function"
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
],
|
|
503
|
+
"return": {
|
|
504
|
+
"type": {
|
|
505
|
+
"text": "Function"
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
},
|
|
509
|
+
{
|
|
510
|
+
"kind": "method",
|
|
511
|
+
"name": "unsubscribe",
|
|
512
|
+
"parameters": [
|
|
513
|
+
{
|
|
514
|
+
"name": "callback",
|
|
515
|
+
"description": "A callback function that will be called when the items change.",
|
|
516
|
+
"type": {
|
|
517
|
+
"text": "Function"
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
],
|
|
521
|
+
"return": {
|
|
522
|
+
"type": {
|
|
523
|
+
"text": "Boolean"
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
]
|
|
528
|
+
}
|
|
529
|
+
],
|
|
530
|
+
"exports": [
|
|
531
|
+
{
|
|
532
|
+
"kind": "js",
|
|
533
|
+
"name": "ChildItemService",
|
|
534
|
+
"declaration": {
|
|
535
|
+
"name": "ChildItemService",
|
|
536
|
+
"module": "src/child-service.js"
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
]
|
|
540
|
+
},
|
|
541
|
+
{
|
|
542
|
+
"kind": "javascript-module",
|
|
543
|
+
"path": "src/index.js",
|
|
544
|
+
"declarations": [],
|
|
545
|
+
"exports": [
|
|
546
|
+
{
|
|
547
|
+
"kind": "js",
|
|
548
|
+
"name": "AuroTable",
|
|
549
|
+
"declaration": {
|
|
550
|
+
"name": "AuroTable",
|
|
551
|
+
"module": "src/index.js"
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
]
|
|
555
|
+
},
|
|
556
|
+
{
|
|
557
|
+
"kind": "javascript-module",
|
|
558
|
+
"path": "src/registered.js",
|
|
559
|
+
"declarations": [],
|
|
560
|
+
"exports": []
|
|
561
|
+
}
|
|
562
|
+
]
|
|
563
|
+
}
|
package/demo/api.html
CHANGED
|
@@ -51,6 +51,6 @@
|
|
|
51
51
|
<script type="module" src="./api.min.js" data-demo-script="true"></script>
|
|
52
52
|
|
|
53
53
|
<!-- If additional elements are needed for the demo, add them here. -->
|
|
54
|
-
<script src="https://cdn.jsdelivr.net/npm/@aurodesignsystem/auro-accordion@latest
|
|
54
|
+
<script src="https://cdn.jsdelivr.net/npm/@aurodesignsystem/auro-accordion@latest/+esm" type="module"></script>
|
|
55
55
|
</body>
|
|
56
56
|
</html>
|