@fluentui/web-components 3.0.0-beta.39 → 3.0.0-beta.40

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 (77) hide show
  1. package/CHANGELOG.md +13 -2
  2. package/dist/dts/accordion/accordion.d.ts +35 -12
  3. package/dist/dts/accordion-item/accordion-item.d.ts +42 -14
  4. package/dist/dts/accordion-item/accordion-item.options.d.ts +2 -2
  5. package/dist/dts/accordion-item/index.d.ts +1 -1
  6. package/dist/dts/checkbox/checkbox.d.ts +98 -48
  7. package/dist/dts/field/field.d.ts +30 -1
  8. package/dist/dts/field/field.options.d.ts +2 -0
  9. package/dist/dts/index.d.ts +1 -1
  10. package/dist/dts/radio/index.d.ts +1 -1
  11. package/dist/dts/radio/radio.d.ts +38 -35
  12. package/dist/dts/radio/radio.options.d.ts +14 -0
  13. package/dist/dts/radio/radio.styles.d.ts +3 -1
  14. package/dist/dts/radio/radio.template.d.ts +13 -1
  15. package/dist/dts/radio-group/radio-group.d.ts +211 -49
  16. package/dist/dts/radio-group/radio-group.template.d.ts +1 -1
  17. package/dist/dts/styles/states/index.d.ts +20 -0
  18. package/dist/dts/switch/switch.d.ts +1 -0
  19. package/dist/dts/utils/root-active-element.d.ts +1 -0
  20. package/dist/esm/accordion/accordion.js +46 -85
  21. package/dist/esm/accordion/accordion.js.map +1 -1
  22. package/dist/esm/accordion-item/accordion-item.js +63 -19
  23. package/dist/esm/accordion-item/accordion-item.js.map +1 -1
  24. package/dist/esm/accordion-item/accordion-item.options.js +1 -1
  25. package/dist/esm/accordion-item/accordion-item.options.js.map +1 -1
  26. package/dist/esm/accordion-item/accordion-item.styles.js +41 -63
  27. package/dist/esm/accordion-item/accordion-item.styles.js.map +1 -1
  28. package/dist/esm/accordion-item/accordion-item.template.js +24 -43
  29. package/dist/esm/accordion-item/accordion-item.template.js.map +1 -1
  30. package/dist/esm/accordion-item/index.js +1 -1
  31. package/dist/esm/accordion-item/index.js.map +1 -1
  32. package/dist/esm/checkbox/checkbox.js +146 -97
  33. package/dist/esm/checkbox/checkbox.js.map +1 -1
  34. package/dist/esm/checkbox/checkbox.styles.js +1 -6
  35. package/dist/esm/checkbox/checkbox.styles.js.map +1 -1
  36. package/dist/esm/checkbox/checkbox.template.js.map +1 -1
  37. package/dist/esm/field/field.js +91 -29
  38. package/dist/esm/field/field.js.map +1 -1
  39. package/dist/esm/field/field.options.js.map +1 -1
  40. package/dist/esm/field/field.styles.js +31 -16
  41. package/dist/esm/field/field.styles.js.map +1 -1
  42. package/dist/esm/field/field.template.js +1 -1
  43. package/dist/esm/field/field.template.js.map +1 -1
  44. package/dist/esm/index.js +1 -1
  45. package/dist/esm/index.js.map +1 -1
  46. package/dist/esm/radio/radio.js +59 -72
  47. package/dist/esm/radio/radio.js.map +1 -1
  48. package/dist/esm/radio/radio.options.js +2 -0
  49. package/dist/esm/radio/radio.options.js.map +1 -0
  50. package/dist/esm/radio/radio.styles.js +95 -88
  51. package/dist/esm/radio/radio.styles.js.map +1 -1
  52. package/dist/esm/radio/radio.template.js +21 -24
  53. package/dist/esm/radio/radio.template.js.map +1 -1
  54. package/dist/esm/radio-group/radio-group.js +416 -313
  55. package/dist/esm/radio-group/radio-group.js.map +1 -1
  56. package/dist/esm/radio-group/radio-group.styles.js +26 -32
  57. package/dist/esm/radio-group/radio-group.styles.js.map +1 -1
  58. package/dist/esm/radio-group/radio-group.template.js +6 -21
  59. package/dist/esm/radio-group/radio-group.template.js.map +1 -1
  60. package/dist/esm/styles/states/index.js +20 -0
  61. package/dist/esm/styles/states/index.js.map +1 -1
  62. package/dist/esm/switch/switch.js +4 -0
  63. package/dist/esm/switch/switch.js.map +1 -1
  64. package/dist/esm/switch/switch.styles.js +3 -6
  65. package/dist/esm/switch/switch.styles.js.map +1 -1
  66. package/dist/esm/switch/switch.template.js.map +1 -1
  67. package/dist/esm/theme/set-theme.js +3 -6
  68. package/dist/esm/theme/set-theme.js.map +1 -1
  69. package/dist/esm/utils/root-active-element.js +9 -0
  70. package/dist/esm/utils/root-active-element.js.map +1 -0
  71. package/dist/web-components.d.ts +461 -181
  72. package/dist/web-components.js +1387 -1233
  73. package/dist/web-components.min.js +262 -258
  74. package/package.json +1 -1
  75. package/dist/dts/radio/radio.form-associated.d.ts +0 -14
  76. package/dist/esm/radio/radio.form-associated.js +0 -14
  77. package/dist/esm/radio/radio.form-associated.js.map +0 -1
@@ -1,118 +1,125 @@
1
1
  import { css } from '@microsoft/fast-element';
2
- import { display, forcedColorsStylesheetBehavior } from '../utils/index.js';
3
- import { borderRadiusCircular, borderRadiusSmall, colorCompoundBrandForeground1, colorCompoundBrandForeground1Pressed, colorCompoundBrandStrokeHover, colorCompoundBrandStrokePressed, colorNeutralForeground2, colorNeutralForeground3, colorNeutralForegroundDisabled, colorNeutralStrokeAccessible, colorNeutralStrokeAccessibleHover, colorNeutralStrokeAccessiblePressed, colorStrokeFocus1, colorStrokeFocus2, fontFamilyBase, fontSizeBase300, fontWeightRegular, lineHeightBase300, spacingHorizontalS, spacingHorizontalXS, spacingVerticalS, } from '../theme/design-tokens.js';
4
- /** Radio styles
2
+ import { checkedState, disabledState } from '../styles/states/index.js';
3
+ import { borderRadiusCircular, borderRadiusMedium, colorCompoundBrandBackground, colorCompoundBrandBackgroundHover, colorCompoundBrandBackgroundPressed, colorCompoundBrandStroke, colorNeutralBackground1, colorNeutralBackgroundDisabled, colorNeutralForegroundInverted, colorNeutralStrokeAccessible, colorNeutralStrokeAccessibleHover, colorNeutralStrokeAccessiblePressed, colorNeutralStrokeDisabled, colorStrokeFocus2, colorTransparentStroke, strokeWidthThick, strokeWidthThin, } from '../theme/design-tokens.js';
4
+ import { forcedColorsStylesheetBehavior } from '../utils/behaviors/match-media-stylesheet-behavior.js';
5
+ import { display } from '../utils/display.js';
6
+ /**
7
+ * Styles for the Radio component
8
+ *
5
9
  * @public
6
10
  */
7
11
  export const styles = css `
8
- ${display('inline-grid')}
12
+ ${display('inline-flex')}
9
13
 
10
14
  :host {
11
- grid-auto-flow: column;
12
- grid-template-columns: max-content;
13
- gap: ${spacingHorizontalXS};
14
- align-items: center;
15
- height: 32px;
16
- cursor: pointer;
17
- outline: none;
18
- position: relative;
19
- user-select: none;
20
- color: blue;
21
- color: var(--state-color, ${colorNeutralForeground3});
22
- padding-inline-end: ${spacingHorizontalS};
23
- --control-border-color: ${colorNeutralStrokeAccessible};
24
- --checked-indicator-background-color: ${colorCompoundBrandForeground1};
25
- --state-color: ${colorNeutralForeground3};
26
- }
27
- :host([disabled]) {
28
- --control-border-color: ${colorNeutralForegroundDisabled};
29
- --checked-indicator-background-color: ${colorNeutralForegroundDisabled};
30
- --state-color: ${colorNeutralForegroundDisabled};
31
- }
32
- .label {
33
- cursor: pointer;
34
- font-family: ${fontFamilyBase};
35
- font-size: ${fontSizeBase300};
36
- font-weight: ${fontWeightRegular};
37
- line-height: ${lineHeightBase300};
38
- }
39
- .label__hidden {
40
- display: none;
41
- }
42
- .control {
43
- box-sizing: border-box;
44
- align-items: center;
45
- border: 1px solid var(--control-border-color, ${colorNeutralStrokeAccessible});
15
+ --size: 16px;
16
+ aspect-ratio: 1;
17
+ background-color: ${colorNeutralBackground1};
18
+ border: ${strokeWidthThin} solid ${colorNeutralStrokeAccessible};
46
19
  border-radius: ${borderRadiusCircular};
47
- display: flex;
48
- height: 16px;
49
- justify-content: center;
50
- margin: ${spacingVerticalS} ${spacingHorizontalS};
20
+ box-sizing: border-box;
51
21
  position: relative;
52
- width: 16px;
53
- justify-self: center;
22
+ width: var(--size);
23
+ }
24
+
25
+ :host([size='large']) {
26
+ --size: 20px;
54
27
  }
28
+
55
29
  .checked-indicator {
30
+ aspect-ratio: 1;
56
31
  border-radius: ${borderRadiusCircular};
57
- height: 10px;
58
- opacity: 0;
59
- width: 10px;
32
+ color: ${colorNeutralForegroundInverted};
33
+ inset: 0;
34
+ margin: auto;
35
+ position: absolute;
36
+ width: calc(var(--size) * 0.625);
60
37
  }
61
- :host([aria-checked='false']:hover) .control {
62
- color: ${colorNeutralForeground2};
38
+
39
+ :host(:not([slot='input']))::after {
40
+ content: '' / '';
41
+ position: absolute;
42
+ display: block;
43
+ inset: -8px;
44
+ box-sizing: border-box;
45
+ outline: none;
46
+ border: ${strokeWidthThick} solid ${colorTransparentStroke};
47
+ border-radius: ${borderRadiusMedium};
63
48
  }
64
- :host(:focus-visible) {
65
- border-radius: ${borderRadiusSmall};
66
- box-shadow: 0 0 0 3px ${colorStrokeFocus2};
67
- outline: 1px solid ${colorStrokeFocus1};
49
+
50
+ :host(:not([slot='input']):focus-visible)::after {
51
+ border-color: ${colorStrokeFocus2};
68
52
  }
69
- :host(:hover) .control {
53
+
54
+ :host(:hover) {
70
55
  border-color: ${colorNeutralStrokeAccessibleHover};
71
56
  }
72
- :host(:active) .control {
73
- border-color: ${colorNeutralStrokeAccessiblePressed};
74
- }
75
- :host([aria-checked='true']) .checked-indicator {
76
- opacity: 1;
77
- }
78
- :host([aria-checked='true']) .control {
79
- border-color: var(--control-border-color, ${colorNeutralStrokeAccessible});
80
- }
81
- :host([aria-checked='true']) .checked-indicator {
82
- background-color: var(--checked-indicator-background-color, ${colorCompoundBrandForeground1});
57
+
58
+ :host(${checkedState}) {
59
+ border-color: ${colorCompoundBrandStroke};
83
60
  }
84
- :host([aria-checked='true']:hover) .control {
85
- border-color: ${colorCompoundBrandStrokeHover};
61
+
62
+ :host(${checkedState}) .checked-indicator {
63
+ background-color: ${colorCompoundBrandBackground};
86
64
  }
87
- :host([aria-checked='true']:hover) .checked-indicator {
88
- background-color: ${colorCompoundBrandStrokeHover};
65
+
66
+ :host(${checkedState}:hover) .checked-indicator {
67
+ background-color: ${colorCompoundBrandBackgroundHover};
89
68
  }
90
- :host([aria-checked='true']:active) .control {
91
- border-color: ${colorCompoundBrandStrokePressed};
69
+
70
+ :host(:active) {
71
+ border-color: ${colorNeutralStrokeAccessiblePressed};
92
72
  }
93
- :host([aria-checked='true']:active) .checked-indicator {
94
- background: ${colorCompoundBrandForeground1Pressed};
73
+
74
+ :host(${checkedState}:active) .checked-indicator {
75
+ background-color: ${colorCompoundBrandBackgroundPressed};
95
76
  }
96
- :host([disabled]) {
97
- color: ${colorNeutralForegroundDisabled};
98
- pointer-events: none;
77
+
78
+ :host(:focus-visible) {
79
+ outline: none;
99
80
  }
100
- :host([disabled]) .control {
101
- pointer-events: none;
102
- border-color: ${colorNeutralForegroundDisabled};
81
+
82
+ :host(${disabledState}) {
83
+ background-color: ${colorNeutralBackgroundDisabled};
84
+ border-color: ${colorNeutralStrokeDisabled};
103
85
  }
104
- :host([disabled]) .checked-indicator {
105
- background: ${colorNeutralForegroundDisabled};
86
+
87
+ :host(${checkedState}${disabledState}) .checked-indicator {
88
+ background-color: ${colorNeutralStrokeDisabled};
106
89
  }
107
90
  `.withBehaviors(forcedColorsStylesheetBehavior(css `
108
- :host .control {
109
- border-color: InactiveBorder;
91
+ :host {
92
+ border-color: FieldText;
93
+ }
94
+
95
+ :host(:not([slot='input']:focus-visible))::after {
96
+ border-color: Canvas;
110
97
  }
111
- :host([aria-checked='true']) .checked-indicator,
112
- :host([aria-checked='true']:active) .checked-indicator,
113
- :host([aria-checked='true']:hover) .checked-indicator {
98
+
99
+ :host(:not(${disabledState}):hover),
100
+ :host(:not([slot='input']):focus-visible)::after {
101
+ border-color: Highlight;
102
+ }
103
+
104
+ .checked-indicator {
105
+ color: HighlightText;
106
+ }
107
+
108
+ :host(${checkedState}) .checked-indicator {
109
+ background-color: FieldText;
110
+ }
111
+
112
+ :host(${checkedState}:not(${disabledState}):hover) .checked-indicator {
114
113
  background-color: Highlight;
115
- border-color: ActiveBorder;
114
+ }
115
+
116
+ :host(${disabledState}) {
117
+ border-color: GrayText;
118
+ color: GrayText;
119
+ }
120
+
121
+ :host(${disabledState}${checkedState}) .checked-indicator {
122
+ background-color: GrayText;
116
123
  }
117
124
  `));
118
125
  //# sourceMappingURL=radio.styles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"radio.styles.js","sourceRoot":"","sources":["../../../src/radio/radio.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,8BAA8B,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,6BAA6B,EAC7B,oCAAoC,EACpC,6BAA6B,EAC7B,+BAA+B,EAC/B,uBAAuB,EACvB,uBAAuB,EACvB,8BAA8B,EAC9B,4BAA4B,EAC5B,iCAAiC,EACjC,mCAAmC,EACnC,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,2BAA2B,CAAC;AAEnC;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;IACrB,OAAO,CAAC,aAAa,CAAC;;;;;WAKf,mBAAmB;;;;;;;;gCAQE,uBAAuB;0BAC7B,kBAAkB;8BACd,4BAA4B;4CACd,6BAA6B;qBACpD,uBAAuB;;;8BAGd,8BAA8B;4CAChB,8BAA8B;qBACrD,8BAA8B;;;;mBAIhC,cAAc;iBAChB,eAAe;mBACb,iBAAiB;mBACjB,iBAAiB;;;;;;;;oDAQgB,4BAA4B;qBAC3D,oBAAoB;;;;cAI3B,gBAAgB,IAAI,kBAAkB;;;;;;qBAM/B,oBAAoB;;;;;;aAM5B,uBAAuB;;;qBAGf,iBAAiB;4BACV,iBAAiB;yBACpB,iBAAiB;;;oBAGtB,iCAAiC;;;oBAGjC,mCAAmC;;;;;;gDAMP,4BAA4B;;;kEAGV,6BAA6B;;;oBAG3E,6BAA6B;;;wBAGzB,6BAA6B;;;oBAGjC,+BAA+B;;;kBAGjC,oCAAoC;;;aAGzC,8BAA8B;;;;;oBAKvB,8BAA8B;;;kBAGhC,8BAA8B;;CAE/C,CAAC,aAAa,CACb,8BAA8B,CAAC,GAAG,CAAA;;;;;;;;;;GAUjC,CAAC,CACH,CAAC"}
1
+ {"version":3,"file":"radio.styles.js","sourceRoot":"","sources":["../../../src/radio/radio.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,4BAA4B,EAC5B,iCAAiC,EACjC,mCAAmC,EACnC,wBAAwB,EACxB,uBAAuB,EACvB,8BAA8B,EAC9B,8BAA8B,EAC9B,4BAA4B,EAC5B,iCAAiC,EACjC,mCAAmC,EACnC,0BAA0B,EAC1B,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EAChB,eAAe,GAChB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,8BAA8B,EAAE,MAAM,uDAAuD,CAAC;AACvG,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;IACrB,OAAO,CAAC,aAAa,CAAC;;;;;wBAKF,uBAAuB;cACjC,eAAe,UAAU,4BAA4B;qBAC9C,oBAAoB;;;;;;;;;;;;qBAYpB,oBAAoB;aAC5B,8BAA8B;;;;;;;;;;;;;;cAc7B,gBAAgB,UAAU,sBAAsB;qBACzC,kBAAkB;;;;oBAInB,iBAAiB;;;;oBAIjB,iCAAiC;;;UAG3C,YAAY;oBACF,wBAAwB;;;UAGlC,YAAY;wBACE,4BAA4B;;;UAG1C,YAAY;wBACE,iCAAiC;;;;oBAIrC,mCAAmC;;;UAG7C,YAAY;wBACE,mCAAmC;;;;;;;UAOjD,aAAa;wBACC,8BAA8B;oBAClC,0BAA0B;;;UAGpC,YAAY,GAAG,aAAa;wBACd,0BAA0B;;CAEjD,CAAC,aAAa,CACb,8BAA8B,CAAC,GAAG,CAAA;;;;;;;;;iBASnB,aAAa;;;;;;;;;YASlB,YAAY;;;;YAIZ,YAAY,QAAQ,aAAa;;;;YAIjC,aAAa;;;;;YAKb,aAAa,GAAG,YAAY;;;GAGrC,CAAC,CACH,CAAC"}
@@ -1,32 +1,29 @@
1
- import { html, slotted } from '@microsoft/fast-element';
2
- import { staticallyCompose, whitespaceFilter } from '../utils/index.js';
1
+ import { html } from '@microsoft/fast-element';
2
+ import { staticallyCompose } from '../utils/index.js';
3
+ const checkedIndicator = html.partial(/* html */ `
4
+ <span part="checked-indicator" class="checked-indicator" role="presentation"></span>
5
+ `);
6
+ /**
7
+ * Generates a template for the {@link (Radio:class)} component.
8
+ *
9
+ * @param options - Radio configuration options
10
+ * @public
11
+ */
3
12
  export function radioTemplate(options = {}) {
4
13
  return html `
5
14
  <template
6
- role="radio"
7
- aria-checked="${x => x.checked}"
8
- aria-required="${x => x.required}"
9
- aria-disabled="${x => x.disabled}"
10
- @keypress="${(x, c) => x.keypressHandler(c.event)}"
15
+ @click="${(x, c) => x.clickHandler(c.event)}"
16
+ @keydown="${(x, c) => x.keydownHandler(c.event)}"
17
+ @keyup="${(x, c) => x.keyupHandler(c.event)}"
11
18
  >
12
- <div part="control" class="control">
13
- <slot name="checked-indicator"> ${staticallyCompose(options.checkedIndicator)} </slot>
14
- </div>
15
- <label
16
- part="label"
17
- class="${x => { var _a; return ['label', !((_a = x.defaultSlottedNodes) === null || _a === void 0 ? void 0 : _a.length) && 'label__hidden'].filter(Boolean).join(' '); }}"
18
- >
19
- <slot
20
- ${slotted({
21
- property: 'defaultSlottedNodes',
22
- filter: whitespaceFilter,
23
- })}
24
- ></slot>
25
- </label>
19
+ <slot name="checked-indicator">${staticallyCompose(options.checkedIndicator)}</slot>
26
20
  </template>
27
21
  `;
28
22
  }
29
- export const template = radioTemplate({
30
- checkedIndicator: html `<div part="checked-indicator" class="checked-indicator"></div>`,
31
- });
23
+ /**
24
+ * Template for the Radio component
25
+ *
26
+ * @public
27
+ */
28
+ export const template = radioTemplate({ checkedIndicator });
32
29
  //# sourceMappingURL=radio.template.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"radio.template.js","sourceRoot":"","sources":["../../../src/radio/radio.template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,IAAI,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGxE,MAAM,UAAU,aAAa,CAAkB,UAAwB,EAAE;IACvE,OAAO,IAAI,CAAG;;;sBAGM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO;uBACb,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ;uBACf,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ;mBACnB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,KAAsB,CAAC;;;0CAG9B,iBAAiB,CAAC,OAAO,CAAC,gBAAgB,CAAC;;;;iBAIpE,CAAC,CAAC,EAAE,WAAC,OAAA,CAAC,OAAO,EAAE,CAAC,CAAA,MAAA,CAAC,CAAC,mBAAmB,0CAAE,MAAM,CAAA,IAAI,eAAe,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,EAAA;;;YAGhG,OAAO,CAAC;QACR,QAAQ,EAAE,qBAAqB;QAC/B,MAAM,EAAE,gBAAgB;KACzB,CAAC;;;;GAIT,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAA+B,aAAa,CAAC;IAChE,gBAAgB,EAAE,IAAI,CAAA,gEAAgE;CACvF,CAAC,CAAC"}
1
+ {"version":3,"file":"radio.template.js","sourceRoot":"","sources":["../../../src/radio/radio.template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,IAAI,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAItD,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;;CAEhD,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAkB,UAAwB,EAAE;IACvE,OAAO,IAAI,CAAG;;gBAEA,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAmB,CAAC;kBAC7C,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,KAAsB,CAAC;gBACtD,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAsB,CAAC;;uCAE3B,iBAAiB,CAAC,OAAO,CAAC,gBAAgB,CAAC;;GAE/E,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,QAAQ,GAA+B,aAAa,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC"}