@italia/button 0.1.0-alpha.1 → 1.0.0-alpha.4
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 +2 -2
- package/custom-elements.json +56 -29
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +5 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/it-button.d.ts +3 -4
- package/dist/src/it-button.d.ts.map +1 -1
- package/dist/src/it-button.js +1034 -85
- package/dist/src/it-button.js.map +1 -1
- package/package.json +14 -12
- package/styles/globals.scss +7 -1
package/README.md
CHANGED
|
@@ -5,14 +5,14 @@ This webcomponent follows the [open-wc](https://github.com/open-wc/open-wc) reco
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
npm i
|
|
8
|
+
npm i @italia/button
|
|
9
9
|
```
|
|
10
10
|
|
|
11
11
|
## Usage
|
|
12
12
|
|
|
13
13
|
```html
|
|
14
14
|
<script type="module">
|
|
15
|
-
import '@italia/
|
|
15
|
+
import '@italia/button';
|
|
16
16
|
</script>
|
|
17
17
|
|
|
18
18
|
<it-button></it-button>
|
package/custom-elements.json
CHANGED
|
@@ -14,6 +14,14 @@
|
|
|
14
14
|
"name": "ItButton",
|
|
15
15
|
"module": "./it-button.js"
|
|
16
16
|
}
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"kind": "js",
|
|
20
|
+
"name": "*",
|
|
21
|
+
"declaration": {
|
|
22
|
+
"name": "*",
|
|
23
|
+
"module": "src/types.js"
|
|
24
|
+
}
|
|
17
25
|
}
|
|
18
26
|
]
|
|
19
27
|
},
|
|
@@ -40,16 +48,6 @@
|
|
|
40
48
|
},
|
|
41
49
|
"privacy": "private"
|
|
42
50
|
},
|
|
43
|
-
{
|
|
44
|
-
"kind": "field",
|
|
45
|
-
"name": "_buttonClasses",
|
|
46
|
-
"type": {
|
|
47
|
-
"text": "string"
|
|
48
|
-
},
|
|
49
|
-
"privacy": "private",
|
|
50
|
-
"default": "''",
|
|
51
|
-
"attribute": "_buttonClasses"
|
|
52
|
-
},
|
|
53
51
|
{
|
|
54
52
|
"kind": "field",
|
|
55
53
|
"name": "type",
|
|
@@ -124,6 +122,24 @@
|
|
|
124
122
|
"name": "internals",
|
|
125
123
|
"attribute": "internals"
|
|
126
124
|
},
|
|
125
|
+
{
|
|
126
|
+
"kind": "field",
|
|
127
|
+
"name": "disabled",
|
|
128
|
+
"type": {
|
|
129
|
+
"text": "boolean | undefined"
|
|
130
|
+
},
|
|
131
|
+
"attribute": "disabled",
|
|
132
|
+
"reflects": true
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"kind": "field",
|
|
136
|
+
"name": "expanded",
|
|
137
|
+
"type": {
|
|
138
|
+
"text": "boolean | undefined"
|
|
139
|
+
},
|
|
140
|
+
"attribute": "it-aria-expanded",
|
|
141
|
+
"reflects": true
|
|
142
|
+
},
|
|
127
143
|
{
|
|
128
144
|
"kind": "method",
|
|
129
145
|
"name": "surfaceSubmitEvent",
|
|
@@ -141,6 +157,11 @@
|
|
|
141
157
|
"name": "form",
|
|
142
158
|
"readonly": true
|
|
143
159
|
},
|
|
160
|
+
{
|
|
161
|
+
"kind": "method",
|
|
162
|
+
"name": "focus",
|
|
163
|
+
"privacy": "public"
|
|
164
|
+
},
|
|
144
165
|
{
|
|
145
166
|
"kind": "field",
|
|
146
167
|
"name": "_onKeyDown",
|
|
@@ -148,14 +169,6 @@
|
|
|
148
169
|
}
|
|
149
170
|
],
|
|
150
171
|
"attributes": [
|
|
151
|
-
{
|
|
152
|
-
"name": "_buttonClasses",
|
|
153
|
-
"type": {
|
|
154
|
-
"text": "string"
|
|
155
|
-
},
|
|
156
|
-
"default": "''",
|
|
157
|
-
"fieldName": "_buttonClasses"
|
|
158
|
-
},
|
|
159
172
|
{
|
|
160
173
|
"name": "type",
|
|
161
174
|
"type": {
|
|
@@ -215,6 +228,20 @@
|
|
|
215
228
|
{
|
|
216
229
|
"name": "internals",
|
|
217
230
|
"fieldName": "internals"
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
"name": "disabled",
|
|
234
|
+
"type": {
|
|
235
|
+
"text": "boolean | undefined"
|
|
236
|
+
},
|
|
237
|
+
"fieldName": "disabled"
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
"name": "it-aria-expanded",
|
|
241
|
+
"type": {
|
|
242
|
+
"text": "boolean | undefined"
|
|
243
|
+
},
|
|
244
|
+
"fieldName": "expanded"
|
|
218
245
|
}
|
|
219
246
|
],
|
|
220
247
|
"superclass": {
|
|
@@ -291,7 +318,7 @@
|
|
|
291
318
|
{
|
|
292
319
|
"kind": "variable",
|
|
293
320
|
"name": "meta",
|
|
294
|
-
"default": "{ title: 'Componenti/Button', tags: ['
|
|
321
|
+
"default": "{ title: 'Componenti/Button', tags: ['a11y-ok', 'web-component'], component: 'it-button', args: { slot: 'Testo del pulsante', variant: 'primary', size: undefined, block: false, outline: false, disabled: false, icon: false, type: 'button', value: '', }, argTypes: { variant: { control: 'select', description: 'Varianti di colore', options: BUTTON_VARIANTS, }, size: { control: 'select', description: 'Dimensione del pulsante', options: BUTTON_SIZES, }, block: { control: 'boolean', type: 'boolean', description: 'Quando abilitato, estende il componente Button fino a prendere tutta la larghezza disponibile', table: { defaultValue: { summary: 'false' } }, }, disabled: { control: 'boolean', type: 'boolean', table: { defaultValue: { summary: 'false' } }, }, outline: { control: 'boolean', type: 'boolean', description: 'Applica il colore solamente al bordo, usando il colore di sfondo come colore interno del pulsante.', table: { defaultValue: { summary: 'false' } }, }, icon: { control: 'boolean', type: 'boolean', description: \"Se il pulsante mostra un'icona, è necessario aggiungere questo attributo.\", table: { defaultValue: { summary: 'false' } }, }, slot: { control: 'text', description: 'Testo del pulsante', }, type: { control: 'select', description: 'Tipologia di pulsante', options: ['button', 'submit', 'reset'], table: { defaultValue: { summary: 'button' } }, }, value: { control: 'text', }, }, } satisfies Meta<ButtonProps>"
|
|
295
322
|
},
|
|
296
323
|
{
|
|
297
324
|
"kind": "variable",
|
|
@@ -299,15 +326,15 @@
|
|
|
299
326
|
"type": {
|
|
300
327
|
"text": "Story"
|
|
301
328
|
},
|
|
302
|
-
"default": "{ ...meta, name: 'Esempio interattivo', args: { variant: 'primary', }, tags: ['!
|
|
329
|
+
"default": "{ ...meta, name: 'Esempio interattivo', args: { variant: 'primary', }, tags: ['!dev'], parameters: { docs: { canvas: { sourceState: 'shown', }, }, }, render: (params) => html` ${renderComponent({ ...params, })}`, }"
|
|
303
330
|
},
|
|
304
331
|
{
|
|
305
332
|
"kind": "variable",
|
|
306
|
-
"name": "
|
|
333
|
+
"name": "Disabilitato",
|
|
307
334
|
"type": {
|
|
308
335
|
"text": "Story"
|
|
309
336
|
},
|
|
310
|
-
"default": "{ name: '
|
|
337
|
+
"default": "{ name: 'Stato disabilitato', args: { slot: '', disabled: true }, argTypes: { variant: { table: { disable: true, }, }, outline: { table: { disable: true, }, }, disabled: { table: { disable: true, }, }, }, render: (args) => html` ${renderComponent({ ...args, variant: 'primary' }, 'Primary')} ${renderComponent({ ...args, variant: 'secondary' }, 'Secondary')} ${renderComponent({ ...args, variant: 'success' }, 'Success')} ${renderComponent({ ...args, variant: 'danger' }, 'Danger')} ${renderComponent({ ...args, variant: 'warning' }, 'Warning')} ${renderComponent({ ...args, variant: 'link' }, 'Pulsante link')} `, }"
|
|
311
338
|
},
|
|
312
339
|
{
|
|
313
340
|
"kind": "variable",
|
|
@@ -315,7 +342,7 @@
|
|
|
315
342
|
"type": {
|
|
316
343
|
"text": "Story"
|
|
317
344
|
},
|
|
318
|
-
"default": "{ name: 'Varianti di colore', args: { slot: '' }, argTypes: { variant: { table: { disable: true, }, }, outline: { table: { disable: true, }, },
|
|
345
|
+
"default": "{ name: 'Varianti di colore', args: { slot: '' }, argTypes: { variant: { table: { disable: true, }, }, outline: { table: { disable: true, }, }, disabled: { table: { disable: true, }, }, }, render: (args) => html` ${renderVariant({ ...args, variant: 'primary' }, 'Primary')} ${renderVariant({ ...args, variant: 'secondary' }, 'Secondary')} ${renderVariant({ ...args, variant: 'success' }, 'Success')} ${renderVariant({ ...args, variant: 'danger' }, 'Danger')} ${renderVariant({ ...args, variant: 'warning' }, 'Warning')} ${renderVariant({ ...args, variant: 'link' }, 'Pulsante link')} `, }"
|
|
319
346
|
},
|
|
320
347
|
{
|
|
321
348
|
"kind": "variable",
|
|
@@ -323,7 +350,7 @@
|
|
|
323
350
|
"type": {
|
|
324
351
|
"text": "Story"
|
|
325
352
|
},
|
|
326
|
-
"default": "{ name: 'Varianti di dimensione', args: { slot: '' }, argTypes: { variant: { table: { disable: true, }, }, size: { table: { disable: true, }, }, block: { table: { disable: true, }, }, },
|
|
353
|
+
"default": "{ name: 'Varianti di dimensione', args: { slot: '' }, argTypes: { variant: { table: { disable: true, }, }, size: { table: { disable: true, }, }, block: { table: { disable: true, }, }, }, render: (args) => html` ${renderSizeVariant({ ...args, size: 'lg' }, 'Large')} ${renderSizeVariant({ ...args }, 'Default')} ${renderSizeVariant({ ...args, size: 'xs' }, 'Extra Small')} <div class=\"flex\"> ${renderComponent( { ...args, block: true, variant: 'primary', }, 'Primary Block', )} </div> <div class=\"flex\"> ${renderComponent( { ...args, block: true, variant: 'secondary', }, 'Secondary Block', )} </div> `, }"
|
|
327
354
|
},
|
|
328
355
|
{
|
|
329
356
|
"kind": "variable",
|
|
@@ -339,7 +366,7 @@
|
|
|
339
366
|
"type": {
|
|
340
367
|
"text": "Story"
|
|
341
368
|
},
|
|
342
|
-
"default": "{ name: 'Sfondo scuro', args: { slot: '' }, argTypes: { variant: { table: { disable: true, }, }, outline: { table: { disable: true, }, },
|
|
369
|
+
"default": "{ name: 'Sfondo scuro', args: { slot: '' }, argTypes: { variant: { table: { disable: true, }, }, outline: { table: { disable: true, }, }, disabled: { table: { disable: true, }, }, }, parameters: { docs: { description: { story: ` <div class=\"callout callout-success\"><div class=\"callout-inner\"><div class=\"callout-title\"><span class=\"text\">Trasmettere significato alle tecnologie assistive</span></div> <p> L’uso del colore per aggiungere un significato fornisce solo un’indicazione visiva, che non sarà trasmesso agli utenti di tecnologie assistive – come gli screen reader. Assicurati che le informazioni denotate dal colore siano rese disponibili anche dal contenuto stesso (es.: il testo visibile), o siano incluse attraverso mezzi alternativi, come testo aggiuntivo nascosto con la classe <code>.visually-hidden</code>.</p></div></div>`, }, }, }, render: (args) => html` <div class=\"bg-dark p-4\"> ${renderVariant({ ...args, variant: 'primary' }, 'Primary')} ${renderVariant({ ...args, variant: 'secondary' }, 'Secondary')} ${renderVariant({ ...args, variant: 'link' }, 'Pulsante link')} </div> `, }"
|
|
343
370
|
},
|
|
344
371
|
{
|
|
345
372
|
"kind": "variable",
|
|
@@ -347,7 +374,7 @@
|
|
|
347
374
|
"type": {
|
|
348
375
|
"text": "Story"
|
|
349
376
|
},
|
|
350
|
-
"default": "{ ...meta, name: 'Con icona', args: {}, argTypes: { variant: { table: { disable: true, }, }, size: { table: { disable: true, }, }, }, parameters: { docs: { description: { story: `
|
|
377
|
+
"default": "{ ...meta, name: 'Con icona', args: {}, argTypes: { variant: { table: { disable: true, }, }, size: { table: { disable: true, }, }, }, parameters: { docs: { description: { story: ` <div class=\"callout callout-success\"><div class=\"callout-inner\"><div class=\"callout-title\"><span class=\"text\">Accessibilità</span></div> <p> Le icone sono di default puramente decorative. Nel caso in cui l'icona non debba essere un elemento decorativo, è necessario utilizzare correttamente gli attributi \\`label\\`, \\`role\\` e \\`aria-hidden\\` sul componente \\`<it-icon>\\`. Per maggiori dettagli visita la [guida dedicata](?path=/docs/componenti-icon--documentazione) al componente \\`<it-icon>\\`.</p></div></div> `, }, }, }, render: (params) => { const slot = params.slot?.length > 0 ? params.slot : null; return html` <div class=\"flex\"> <it-button variant=\"success\" size=\"lg\" icon ?outline=\"${params.outline}\" ?block=\"${params.block}\" ?disabled=\"${params.disabled}\" type=\"${params.type}\" > <it-icon name=\"it-star-full\" color=\"inverse\" size=\"sm\"></it-icon> <span>${slot ?? 'Pulsante Large con icona'}</span> </it-button> <it-button variant=\"primary\" icon ?outline=\"${params.outline}\" ?block=\"${params.block}\" ?disabled=\"${params.disabled}\" type=\"${params.type}\" > <it-icon name=\"it-star-full\" color=\"inverse\" size=\"sm\"></it-icon> <span>${slot ?? 'Pulsante con icona'}</span> </it-button> <it-button variant=\"danger\" size=\"xs\" icon ?outline=\"${params.outline}\" ?block=\"${params.block}\" ?disabled=\"${params.disabled}\" type=\"${params.type}\" > <it-icon name=\"it-star-full\" color=\"inverse\" size=\"xs\"></it-icon> <span>${slot ?? 'Pulsante Extra Small con icona'}</span> </it-button> <it-button variant=\"link\" size=\"xs\" icon ?outline=\"${params.outline}\" ?block=\"${params.block}\" ?disabled=\"${params.disabled}\" type=\"${params.type}\" > <it-icon name=\"it-star-full\" color=\"primary\" size=\"xs\"></it-icon> <span>${slot ?? 'Pulsante Link Extra Small con icona'}</span> </it-button> </div>`; }, }"
|
|
351
378
|
},
|
|
352
379
|
{
|
|
353
380
|
"kind": "variable",
|
|
@@ -355,7 +382,7 @@
|
|
|
355
382
|
"type": {
|
|
356
383
|
"text": "Story"
|
|
357
384
|
},
|
|
358
|
-
"default": "{ ...meta, name: 'Con icona cerchiata', args: {}, argTypes: { variant: { table: { disable: true, }, }, size: { table: { disable: true, }, }, },
|
|
385
|
+
"default": "{ ...meta, name: 'Con icona cerchiata', args: {}, argTypes: { variant: { table: { disable: true, }, }, size: { table: { disable: true, }, }, }, render: (params) => { const slot = params.slot?.length > 0 ? params.slot : null; return html` <it-button class=\"me-2\" variant=\"success\" size=\"lg\" icon ?outline=\"${params.outline}\" ?block=\"${params.block}\" ?disabled=\"${params.disabled}\" type=\"${params.type}\" > <span class=\"rounded-icon\"> <it-icon name=\"it-user\" color=\"success\" size=\"xs\"></it-icon> </span> <span>${slot ?? 'Pulsante Large con icona'}</span> </it-button> <it-button class=\"me-2\" variant=\"primary\" icon ?outline=\"${params.outline}\" ?block=\"${params.block}\" ?disabled=\"${params.disabled}\" type=\"${params.type}\" > <span class=\"rounded-icon\" size=\"sm\"> <it-icon name=\"it-user\" color=\"primary\" size=\"xs\"></it-icon> </span> <span>${slot ?? 'Pulsante con icona'}</span> </it-button> <it-button class=\"me-2\" variant=\"danger\" icon ?outline=\"${params.outline}\" ?block=\"${params.block}\" ?disabled=\"${params.disabled}\" type=\"${params.type}\" > <span class=\"rounded-icon\"> <it-icon name=\"it-user\" color=\"danger\" size=\"xs\"></it-icon> </span> <span>${slot ?? 'Pulsante Small con icona'}</span> </it-button> <it-button class=\"me-2\" variant=\"secondary\" size=\"xs\" icon ?outline=\"${params.outline}\" ?block=\"${params.block}\" ?disabled=\"${params.disabled}\" type=\"${params.type}\" > <span class=\"rounded-icon\"> <it-icon name=\"it-user\" color=\"secondary\" size=\"xs\"></it-icon> </span> <span>${slot ?? 'Pulsante Link Extra Small con icona'}</span> </it-button> `; }, }"
|
|
359
386
|
}
|
|
360
387
|
],
|
|
361
388
|
"exports": [
|
|
@@ -377,9 +404,9 @@
|
|
|
377
404
|
},
|
|
378
405
|
{
|
|
379
406
|
"kind": "js",
|
|
380
|
-
"name": "
|
|
407
|
+
"name": "Disabilitato",
|
|
381
408
|
"declaration": {
|
|
382
|
-
"name": "
|
|
409
|
+
"name": "Disabilitato",
|
|
383
410
|
"module": "stories/it-button.stories.ts"
|
|
384
411
|
}
|
|
385
412
|
},
|
package/dist/src/index.d.ts
CHANGED
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,cAAc,YAAY,CAAC"}
|
package/dist/src/index.js
CHANGED
|
@@ -3,4 +3,9 @@ import 'lit/directive.js';
|
|
|
3
3
|
import 'lit';
|
|
4
4
|
import 'lit/decorators.js';
|
|
5
5
|
import 'lit/directives/if-defined.js';
|
|
6
|
+
|
|
7
|
+
const BUTTON_SIZES = ['lg', 'sm', 'xs'];
|
|
8
|
+
const BUTTON_VARIANTS = ['primary', 'secondary', 'success', 'danger', 'warning', 'link'];
|
|
9
|
+
|
|
10
|
+
export { BUTTON_SIZES, BUTTON_VARIANTS };
|
|
6
11
|
//# sourceMappingURL=index.js.map
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/types.ts"],"sourcesContent":["export const BUTTON_SIZES = ['lg', 'sm', 'xs'];\nexport const BUTTON_VARIANTS = ['primary', 'secondary', 'success', 'danger', 'warning', 'link'];\n\nexport type Sizes = (typeof BUTTON_SIZES)[number];\nexport type Variants = (typeof BUTTON_VARIANTS)[number] | string;\n"],"names":[],"mappings":";;;;;;AAAO,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI;AACtC,MAAM,eAAe,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM;;;;"}
|
package/dist/src/it-button.d.ts
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { BaseComponent } from '@italia/globals';
|
|
2
|
-
import { PropertyValues } from 'lit';
|
|
3
2
|
import { type Sizes, type Variants } from './types.js';
|
|
4
3
|
export declare class ItButton extends BaseComponent {
|
|
5
4
|
static styles: import("lit").CSSResultGroup;
|
|
6
5
|
static get formAssociated(): boolean;
|
|
7
6
|
private _nativeButton;
|
|
8
|
-
private _buttonClasses;
|
|
9
7
|
type: string;
|
|
10
8
|
variant: Variants;
|
|
11
9
|
size: Sizes;
|
|
@@ -14,10 +12,11 @@ export declare class ItButton extends BaseComponent {
|
|
|
14
12
|
icon: boolean;
|
|
15
13
|
value: string;
|
|
16
14
|
internals: ElementInternals;
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
disabled?: boolean;
|
|
16
|
+
expanded?: boolean;
|
|
19
17
|
surfaceSubmitEvent(event: any): void;
|
|
20
18
|
get form(): HTMLFormElement | null;
|
|
19
|
+
focus(): void;
|
|
21
20
|
private _onKeyDown;
|
|
22
21
|
connectedCallback(): void;
|
|
23
22
|
disconnectedCallback(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"it-button.d.ts","sourceRoot":"","sources":["../../src/it-button.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAiB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"it-button.d.ts","sourceRoot":"","sources":["../../src/it-button.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAiB,MAAM,iBAAiB,CAAC;AAI/D,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGvD,qBACa,QAAS,SAAQ,aAAa;IACzC,MAAM,CAAC,MAAM,+BAAU;IAEvB,MAAM,KAAK,cAAc,YAExB;IAEgB,OAAO,CAAC,aAAa,CAAqB;IAEhB,IAAI,SAAY;IAEhB,OAAO,EAAE,QAAQ,CAAM;IAEvB,IAAI,EAAE,KAAK,CAAM;IAEhB,OAAO,UAAS;IAEhB,KAAK,UAAS;IAEd,IAAI,UAAS;IAE7B,KAAK,SAAM;IAE3B,SAAS,mBAA0B;IAEH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEY,QAAQ,CAAC,EAAE,OAAO,CAAC;IAE9F,kBAAkB,CAAC,KAAK,EAAE,GAAG;IAmC7B,IAAI,IAAI,2BAEP;IAEe,KAAK;IAIrB,OAAO,CAAC,UAAU,CAShB;IAEF,iBAAiB,IAAI,IAAI;IAUzB,oBAAoB,IAAI,IAAI;IAMnB,MAAM;CA6BhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,WAAW,EAAE,QAAQ,CAAC;KACvB;CACF"}
|