@sectile/vue 0.7.0 → 0.9.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.
Files changed (319) hide show
  1. package/README.md +4 -2
  2. package/dist/accordion.d.ts +0 -1
  3. package/dist/alert-dialog.d.ts +0 -2
  4. package/dist/alert-dialog.js.map +1 -1
  5. package/dist/calendar.d.ts +2 -3
  6. package/dist/calendar.js +14 -14
  7. package/dist/calendar.js.map +1 -1
  8. package/dist/carousel.d.ts +22 -1
  9. package/dist/carousel.js +7 -1
  10. package/dist/carousel.js.map +1 -1
  11. package/dist/cascade-list.d.ts +339 -0
  12. package/dist/cascade-list.js +240 -0
  13. package/dist/cascade-list.js.map +1 -0
  14. package/dist/cascade-select.d.ts +11 -42
  15. package/dist/cascade-select.js +19 -27
  16. package/dist/cascade-select.js.map +1 -1
  17. package/dist/checkbox-group.d.ts +9 -1
  18. package/dist/checkbox-group.js +57 -13
  19. package/dist/checkbox-group.js.map +1 -1
  20. package/dist/checkbox.d.ts +0 -1
  21. package/dist/checkbox.js +15 -8
  22. package/dist/checkbox.js.map +1 -1
  23. package/dist/color-picker.d.ts +0 -1
  24. package/dist/combobox.d.ts +0 -1
  25. package/dist/combobox.js +46 -6
  26. package/dist/combobox.js.map +1 -1
  27. package/dist/data-grid.d.ts +207 -0
  28. package/dist/data-grid.js +107 -0
  29. package/dist/data-grid.js.map +1 -0
  30. package/dist/data-table.d.ts +239 -0
  31. package/dist/data-table.js +120 -0
  32. package/dist/data-table.js.map +1 -0
  33. package/dist/data-tree-grid.d.ts +218 -0
  34. package/dist/data-tree-grid.js +95 -0
  35. package/dist/data-tree-grid.js.map +1 -0
  36. package/dist/date-field.d.ts +1 -2
  37. package/dist/date-field.js +1 -1
  38. package/dist/date-field.js.map +1 -1
  39. package/dist/date-picker.d.ts +37 -6
  40. package/dist/date-picker.js +3 -1
  41. package/dist/date-picker.js.map +1 -1
  42. package/dist/date-range-field.d.ts +2 -3
  43. package/dist/date-range-field.js +24 -6
  44. package/dist/date-range-field.js.map +1 -1
  45. package/dist/date-range-picker.d.ts +37 -6
  46. package/dist/date-range-picker.js +3 -1
  47. package/dist/date-range-picker.js.map +1 -1
  48. package/dist/date-time-field.d.ts +1 -2
  49. package/dist/date-time-field.js +1 -1
  50. package/dist/date-time-field.js.map +1 -1
  51. package/dist/date-time-picker.d.ts +38 -7
  52. package/dist/date-time-picker.js +3 -1
  53. package/dist/date-time-picker.js.map +1 -1
  54. package/dist/date-time-range-picker.d.ts +38 -7
  55. package/dist/date-time-range-picker.js +3 -1
  56. package/dist/date-time-range-picker.js.map +1 -1
  57. package/dist/dialog.d.ts +0 -2
  58. package/dist/dialog.js.map +1 -1
  59. package/dist/disclosure.d.ts +0 -1
  60. package/dist/drawer.d.ts +1 -2
  61. package/dist/editable.d.ts +0 -1
  62. package/dist/editable.js +25 -6
  63. package/dist/editable.js.map +1 -1
  64. package/dist/feed.d.ts +0 -1
  65. package/dist/form.d.ts +88 -115
  66. package/dist/form.js +461 -233
  67. package/dist/form.js.map +1 -1
  68. package/dist/grid.d.ts +0 -1
  69. package/dist/grid.js +51 -6
  70. package/dist/grid.js.map +1 -1
  71. package/dist/host-provider.d.ts +0 -13
  72. package/dist/host-provider.js +0 -16
  73. package/dist/host-provider.js.map +1 -1
  74. package/dist/index.d.ts +14 -39
  75. package/dist/index.js +6 -19
  76. package/dist/index.js.map +1 -1
  77. package/dist/internal/cascade-choice.d.ts +204 -0
  78. package/dist/internal/cascade-choice.js +161 -0
  79. package/dist/internal/cascade-choice.js.map +1 -0
  80. package/dist/internal/collection.d.ts +3 -8
  81. package/dist/internal/collection.js +14 -20
  82. package/dist/internal/collection.js.map +1 -1
  83. package/dist/internal/controlled-state.d.ts +0 -1
  84. package/dist/internal/date-picker.d.ts +78 -9
  85. package/dist/internal/date-picker.js +116 -27
  86. package/dist/internal/date-picker.js.map +1 -1
  87. package/dist/internal/decimal-input.d.ts +1 -0
  88. package/dist/internal/decimal-input.js +24 -0
  89. package/dist/internal/decimal-input.js.map +1 -0
  90. package/dist/internal/form-control-inventory.d.ts +4 -1
  91. package/dist/internal/form-control-inventory.js +1 -0
  92. package/dist/internal/form-control-inventory.js.map +1 -1
  93. package/dist/internal/form-control.d.ts +100 -2
  94. package/dist/internal/form-control.js +103 -1
  95. package/dist/internal/form-control.js.map +1 -1
  96. package/dist/internal/native-field.d.ts +0 -1
  97. package/dist/internal/native-field.js +11 -2
  98. package/dist/internal/native-field.js.map +1 -1
  99. package/dist/internal/native-input.d.ts +0 -1
  100. package/dist/internal/part-contract.d.ts +0 -1
  101. package/dist/internal/popup.d.ts +5 -27
  102. package/dist/internal/popup.js +15 -21
  103. package/dist/internal/popup.js.map +1 -1
  104. package/dist/internal/presence.d.ts +0 -1
  105. package/dist/internal/scheduled-task.d.ts +5 -0
  106. package/dist/internal/scheduled-task.js +28 -0
  107. package/dist/internal/scheduled-task.js.map +1 -0
  108. package/dist/internal/tabs-context.d.ts +2 -3
  109. package/dist/internal/tabular-components.d.ts +27 -0
  110. package/dist/internal/tabular-components.js +26 -0
  111. package/dist/internal/tabular-components.js.map +1 -0
  112. package/dist/internal/tabular-parts.d.ts +57 -0
  113. package/dist/internal/tabular-parts.js +239 -0
  114. package/dist/internal/tabular-parts.js.map +1 -0
  115. package/dist/internal/tabular-profile.d.ts +75 -0
  116. package/dist/internal/tabular-profile.js +211 -0
  117. package/dist/internal/tabular-profile.js.map +1 -0
  118. package/dist/internal/virtual-collection-model.d.ts +42 -0
  119. package/dist/internal/virtual-collection-model.js +241 -0
  120. package/dist/internal/virtual-collection-model.js.map +1 -0
  121. package/dist/internal/virtual-collection.d.ts +38 -0
  122. package/dist/internal/virtual-collection.js +87 -0
  123. package/dist/internal/virtual-collection.js.map +1 -0
  124. package/dist/{virtual.d.ts → internal/virtual-core.d.ts} +9 -4
  125. package/dist/{virtual.js → internal/virtual-core.js} +7 -7
  126. package/dist/internal/virtual-core.js.map +1 -0
  127. package/dist/internal/virtual-list.d.ts +214 -0
  128. package/dist/internal/virtual-list.js +401 -0
  129. package/dist/internal/virtual-list.js.map +1 -0
  130. package/dist/listbox.d.ts +0 -1
  131. package/dist/listbox.js +52 -6
  132. package/dist/listbox.js.map +1 -1
  133. package/dist/menu-button.d.ts +0 -1
  134. package/dist/menu.d.ts +0 -1
  135. package/dist/menubar.d.ts +0 -1
  136. package/dist/meter-group.d.ts +369 -0
  137. package/dist/meter-group.js +271 -0
  138. package/dist/meter-group.js.map +1 -0
  139. package/dist/meter.d.ts +191 -0
  140. package/dist/meter.js +133 -0
  141. package/dist/meter.js.map +1 -0
  142. package/dist/month-picker.d.ts +37 -6
  143. package/dist/month-picker.js +3 -1
  144. package/dist/month-picker.js.map +1 -1
  145. package/dist/month-range-picker.d.ts +37 -6
  146. package/dist/month-range-picker.js +3 -1
  147. package/dist/month-range-picker.js.map +1 -1
  148. package/dist/multi-thumb-slider.d.ts +0 -1
  149. package/dist/navigation-menu.d.ts +0 -1
  150. package/dist/number-field.d.ts +0 -1
  151. package/dist/pagination.d.ts +23 -2
  152. package/dist/pagination.js +6 -1
  153. package/dist/pagination.js.map +1 -1
  154. package/dist/pin-input.d.ts +0 -1
  155. package/dist/pin-input.js +1 -1
  156. package/dist/pin-input.js.map +1 -1
  157. package/dist/popover.d.ts +0 -2
  158. package/dist/popover.js.map +1 -1
  159. package/dist/primitive.d.ts +0 -1
  160. package/dist/primitive.js +8 -4
  161. package/dist/primitive.js.map +1 -1
  162. package/dist/progress.d.ts +148 -0
  163. package/dist/progress.js +110 -0
  164. package/dist/progress.js.map +1 -0
  165. package/dist/quantity-field.d.ts +0 -1
  166. package/dist/radio-group.d.ts +0 -1
  167. package/dist/radio-group.js +1 -1
  168. package/dist/radio-group.js.map +1 -1
  169. package/dist/range-calendar.d.ts +2 -3
  170. package/dist/rating.d.ts +0 -1
  171. package/dist/rating.js +10 -1
  172. package/dist/rating.js.map +1 -1
  173. package/dist/reorder.d.ts +1 -2
  174. package/dist/select.d.ts +18 -44
  175. package/dist/select.js +11 -13
  176. package/dist/select.js.map +1 -1
  177. package/dist/slider.d.ts +0 -1
  178. package/dist/spin-button.d.ts +0 -1
  179. package/dist/spin-button.js +17 -4
  180. package/dist/spin-button.js.map +1 -1
  181. package/dist/stepper.d.ts +0 -1
  182. package/dist/stepper.js +19 -2
  183. package/dist/stepper.js.map +1 -1
  184. package/dist/switch.d.ts +0 -1
  185. package/dist/tabs.d.ts +0 -1
  186. package/dist/tabs.js +4 -22
  187. package/dist/tabs.js.map +1 -1
  188. package/dist/tags-input.d.ts +0 -1
  189. package/dist/tags-input.js +18 -5
  190. package/dist/tags-input.js.map +1 -1
  191. package/dist/temporal-provider.d.ts +21 -0
  192. package/dist/temporal-provider.js +30 -0
  193. package/dist/temporal-provider.js.map +1 -0
  194. package/dist/text.d.ts +0 -1
  195. package/dist/text.js +18 -4
  196. package/dist/text.js.map +1 -1
  197. package/dist/time-field.d.ts +1 -2
  198. package/dist/time-field.js +1 -1
  199. package/dist/time-field.js.map +1 -1
  200. package/dist/time-range-field.d.ts +2 -2
  201. package/dist/time-range-field.js +6 -4
  202. package/dist/time-range-field.js.map +1 -1
  203. package/dist/timer.d.ts +0 -1
  204. package/dist/toast.d.ts +11 -2
  205. package/dist/toast.js +22 -9
  206. package/dist/toast.js.map +1 -1
  207. package/dist/toggle-button.d.ts +0 -1
  208. package/dist/toggle-group.d.ts +0 -1
  209. package/dist/toggle-group.js +1 -1
  210. package/dist/toggle-group.js.map +1 -1
  211. package/dist/toolbar.d.ts +0 -1
  212. package/dist/tooltip.d.ts +1 -3
  213. package/dist/tooltip.js.map +1 -1
  214. package/dist/tree-grid.d.ts +0 -1
  215. package/dist/tree-grid.js +62 -8
  216. package/dist/tree-grid.js.map +1 -1
  217. package/dist/tree-view.d.ts +0 -1
  218. package/dist/tree-view.js +51 -10
  219. package/dist/tree-view.js.map +1 -1
  220. package/dist/virtual-core.d.ts +1 -0
  221. package/dist/virtual-core.js +2 -0
  222. package/dist/virtual-core.js.map +1 -0
  223. package/dist/virtual-grid.d.ts +188 -0
  224. package/dist/virtual-grid.js +306 -0
  225. package/dist/virtual-grid.js.map +1 -0
  226. package/dist/virtual-list.d.ts +1 -0
  227. package/dist/virtual-list.js +2 -0
  228. package/dist/virtual-list.js.map +1 -0
  229. package/dist/virtual-masonry.d.ts +198 -0
  230. package/dist/virtual-masonry.js +221 -0
  231. package/dist/virtual-masonry.js.map +1 -0
  232. package/dist/virtual-spatial.d.ts +157 -0
  233. package/dist/virtual-spatial.js +159 -0
  234. package/dist/virtual-spatial.js.map +1 -0
  235. package/dist/window-splitter.d.ts +0 -1
  236. package/dist/year-picker.d.ts +37 -6
  237. package/dist/year-picker.js +3 -1
  238. package/dist/year-picker.js.map +1 -1
  239. package/dist/year-range-picker.d.ts +37 -6
  240. package/dist/year-range-picker.js +3 -1
  241. package/dist/year-range-picker.js.map +1 -1
  242. package/package.json +173 -89
  243. package/dist/accordion.d.ts.map +0 -1
  244. package/dist/alert-dialog.d.ts.map +0 -1
  245. package/dist/calendar.d.ts.map +0 -1
  246. package/dist/carousel.d.ts.map +0 -1
  247. package/dist/cascade-select.d.ts.map +0 -1
  248. package/dist/checkbox-group.d.ts.map +0 -1
  249. package/dist/checkbox.d.ts.map +0 -1
  250. package/dist/color-picker.d.ts.map +0 -1
  251. package/dist/combobox.d.ts.map +0 -1
  252. package/dist/date-field.d.ts.map +0 -1
  253. package/dist/date-picker.d.ts.map +0 -1
  254. package/dist/date-range-field.d.ts.map +0 -1
  255. package/dist/date-range-picker.d.ts.map +0 -1
  256. package/dist/date-time-field.d.ts.map +0 -1
  257. package/dist/date-time-picker.d.ts.map +0 -1
  258. package/dist/date-time-range-picker.d.ts.map +0 -1
  259. package/dist/dialog.d.ts.map +0 -1
  260. package/dist/disclosure.d.ts.map +0 -1
  261. package/dist/drawer.d.ts.map +0 -1
  262. package/dist/editable.d.ts.map +0 -1
  263. package/dist/feed.d.ts.map +0 -1
  264. package/dist/form.d.ts.map +0 -1
  265. package/dist/grid.d.ts.map +0 -1
  266. package/dist/host-provider.d.ts.map +0 -1
  267. package/dist/index.d.ts.map +0 -1
  268. package/dist/internal/collection.d.ts.map +0 -1
  269. package/dist/internal/controlled-state.d.ts.map +0 -1
  270. package/dist/internal/date-picker.d.ts.map +0 -1
  271. package/dist/internal/form-control-inventory.d.ts.map +0 -1
  272. package/dist/internal/form-control.d.ts.map +0 -1
  273. package/dist/internal/native-field.d.ts.map +0 -1
  274. package/dist/internal/native-input.d.ts.map +0 -1
  275. package/dist/internal/part-contract.d.ts.map +0 -1
  276. package/dist/internal/popup.d.ts.map +0 -1
  277. package/dist/internal/presence.d.ts.map +0 -1
  278. package/dist/internal/tabs-context.d.ts.map +0 -1
  279. package/dist/listbox.d.ts.map +0 -1
  280. package/dist/menu-button.d.ts.map +0 -1
  281. package/dist/menu.d.ts.map +0 -1
  282. package/dist/menubar.d.ts.map +0 -1
  283. package/dist/month-picker.d.ts.map +0 -1
  284. package/dist/month-range-picker.d.ts.map +0 -1
  285. package/dist/multi-thumb-slider.d.ts.map +0 -1
  286. package/dist/navigation-menu.d.ts.map +0 -1
  287. package/dist/number-field.d.ts.map +0 -1
  288. package/dist/pagination.d.ts.map +0 -1
  289. package/dist/pin-input.d.ts.map +0 -1
  290. package/dist/popover.d.ts.map +0 -1
  291. package/dist/primitive.d.ts.map +0 -1
  292. package/dist/quantity-field.d.ts.map +0 -1
  293. package/dist/radio-group.d.ts.map +0 -1
  294. package/dist/range-calendar.d.ts.map +0 -1
  295. package/dist/rating.d.ts.map +0 -1
  296. package/dist/reorder.d.ts.map +0 -1
  297. package/dist/select.d.ts.map +0 -1
  298. package/dist/slider.d.ts.map +0 -1
  299. package/dist/spin-button.d.ts.map +0 -1
  300. package/dist/stepper.d.ts.map +0 -1
  301. package/dist/switch.d.ts.map +0 -1
  302. package/dist/tabs.d.ts.map +0 -1
  303. package/dist/tags-input.d.ts.map +0 -1
  304. package/dist/text.d.ts.map +0 -1
  305. package/dist/time-field.d.ts.map +0 -1
  306. package/dist/time-range-field.d.ts.map +0 -1
  307. package/dist/timer.d.ts.map +0 -1
  308. package/dist/toast.d.ts.map +0 -1
  309. package/dist/toggle-button.d.ts.map +0 -1
  310. package/dist/toggle-group.d.ts.map +0 -1
  311. package/dist/toolbar.d.ts.map +0 -1
  312. package/dist/tooltip.d.ts.map +0 -1
  313. package/dist/tree-grid.d.ts.map +0 -1
  314. package/dist/tree-view.d.ts.map +0 -1
  315. package/dist/virtual.d.ts.map +0 -1
  316. package/dist/virtual.js.map +0 -1
  317. package/dist/window-splitter.d.ts.map +0 -1
  318. package/dist/year-picker.d.ts.map +0 -1
  319. package/dist/year-range-picker.d.ts.map +0 -1
@@ -0,0 +1,369 @@
1
+ import { type PropType, type SlotsType, type VNodeChild } from 'vue';
2
+ import { type PrimitiveAs } from './primitive.js';
3
+ export interface MeterGroupEntry {
4
+ readonly id: string;
5
+ readonly value: number | string;
6
+ readonly label: string;
7
+ }
8
+ export type MeterGroupValueFormatter = (value: string, entry: MeterGroupEntry) => string;
9
+ export type MeterGroupTotalFormatter = (total: string, max: string) => string;
10
+ export interface MeterGroupRootProps {
11
+ readonly items: readonly MeterGroupEntry[];
12
+ readonly max?: number | string;
13
+ readonly low?: number | string;
14
+ readonly high?: number | string;
15
+ readonly optimum?: number | string;
16
+ readonly label?: string;
17
+ readonly formatValue?: MeterGroupValueFormatter;
18
+ readonly formatTotal?: MeterGroupTotalFormatter;
19
+ readonly as?: PrimitiveAs;
20
+ readonly asChild?: boolean;
21
+ }
22
+ export interface MeterGroupSegmentSlotProps {
23
+ readonly id: string;
24
+ readonly label: string;
25
+ readonly value: string;
26
+ readonly valueText: string;
27
+ readonly start: string;
28
+ readonly end: string;
29
+ readonly percentage: number;
30
+ readonly startPercentage: number;
31
+ readonly endPercentage: number;
32
+ }
33
+ export interface MeterGroupRootSlotProps {
34
+ readonly segments: readonly MeterGroupSegmentSlotProps[];
35
+ readonly max: string;
36
+ readonly total: string;
37
+ readonly remaining: string;
38
+ readonly percentage: number;
39
+ readonly zone: 'optimum' | 'suboptimal' | 'even-less-good';
40
+ readonly valueText: string;
41
+ }
42
+ export interface MeterGroupSegmentProps {
43
+ readonly id: string;
44
+ readonly as?: PrimitiveAs;
45
+ readonly asChild?: boolean;
46
+ }
47
+ export interface MeterGroupItemProps {
48
+ readonly id: string;
49
+ readonly as?: PrimitiveAs;
50
+ readonly asChild?: boolean;
51
+ }
52
+ export type MeterGroupItemSlotProps = MeterGroupSegmentSlotProps;
53
+ export interface MeterGroupPartProps {
54
+ readonly as?: PrimitiveAs;
55
+ readonly asChild?: boolean;
56
+ }
57
+ export declare const MeterGroupRoot: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
58
+ items: {
59
+ type: PropType<readonly MeterGroupEntry[]>;
60
+ required: true;
61
+ };
62
+ max: {
63
+ type: (NumberConstructor | StringConstructor)[];
64
+ default: number;
65
+ };
66
+ low: {
67
+ type: (NumberConstructor | StringConstructor)[];
68
+ default: undefined;
69
+ };
70
+ high: {
71
+ type: (NumberConstructor | StringConstructor)[];
72
+ default: undefined;
73
+ };
74
+ optimum: {
75
+ type: (NumberConstructor | StringConstructor)[];
76
+ default: undefined;
77
+ };
78
+ label: {
79
+ type: StringConstructor;
80
+ default: undefined;
81
+ };
82
+ formatValue: {
83
+ type: PropType<MeterGroupValueFormatter>;
84
+ default: undefined;
85
+ };
86
+ formatTotal: {
87
+ type: PropType<MeterGroupTotalFormatter>;
88
+ default: undefined;
89
+ };
90
+ as: {
91
+ type: PropType<PrimitiveAs>;
92
+ default: string;
93
+ };
94
+ asChild: {
95
+ type: BooleanConstructor;
96
+ default: boolean;
97
+ };
98
+ }>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
99
+ items: {
100
+ type: PropType<readonly MeterGroupEntry[]>;
101
+ required: true;
102
+ };
103
+ max: {
104
+ type: (NumberConstructor | StringConstructor)[];
105
+ default: number;
106
+ };
107
+ low: {
108
+ type: (NumberConstructor | StringConstructor)[];
109
+ default: undefined;
110
+ };
111
+ high: {
112
+ type: (NumberConstructor | StringConstructor)[];
113
+ default: undefined;
114
+ };
115
+ optimum: {
116
+ type: (NumberConstructor | StringConstructor)[];
117
+ default: undefined;
118
+ };
119
+ label: {
120
+ type: StringConstructor;
121
+ default: undefined;
122
+ };
123
+ formatValue: {
124
+ type: PropType<MeterGroupValueFormatter>;
125
+ default: undefined;
126
+ };
127
+ formatTotal: {
128
+ type: PropType<MeterGroupTotalFormatter>;
129
+ default: undefined;
130
+ };
131
+ as: {
132
+ type: PropType<PrimitiveAs>;
133
+ default: string;
134
+ };
135
+ asChild: {
136
+ type: BooleanConstructor;
137
+ default: boolean;
138
+ };
139
+ }>> & Readonly<{}>, {
140
+ max: string | number;
141
+ low: string | number;
142
+ high: string | number;
143
+ optimum: string | number;
144
+ label: string;
145
+ formatValue: MeterGroupValueFormatter;
146
+ formatTotal: MeterGroupTotalFormatter;
147
+ as: PrimitiveAs;
148
+ asChild: boolean;
149
+ }, SlotsType<{
150
+ default: (props: MeterGroupRootSlotProps) => VNodeChild;
151
+ }>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
152
+ export declare const MeterGroupTrack: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
153
+ as: {
154
+ type: PropType<PrimitiveAs>;
155
+ default: string;
156
+ };
157
+ asChild: {
158
+ type: BooleanConstructor;
159
+ default: boolean;
160
+ };
161
+ }>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
162
+ as: {
163
+ type: PropType<PrimitiveAs>;
164
+ default: string;
165
+ };
166
+ asChild: {
167
+ type: BooleanConstructor;
168
+ default: boolean;
169
+ };
170
+ }>> & Readonly<{}>, {
171
+ as: PrimitiveAs;
172
+ asChild: boolean;
173
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
174
+ export declare const MeterGroupSegment: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
175
+ as: {
176
+ type: PropType<PrimitiveAs>;
177
+ default: string;
178
+ };
179
+ asChild: {
180
+ type: BooleanConstructor;
181
+ default: boolean;
182
+ };
183
+ id: {
184
+ type: StringConstructor;
185
+ required: true;
186
+ };
187
+ }>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
188
+ as: {
189
+ type: PropType<PrimitiveAs>;
190
+ default: string;
191
+ };
192
+ asChild: {
193
+ type: BooleanConstructor;
194
+ default: boolean;
195
+ };
196
+ id: {
197
+ type: StringConstructor;
198
+ required: true;
199
+ };
200
+ }>> & Readonly<{}>, {
201
+ as: PrimitiveAs;
202
+ asChild: boolean;
203
+ }, SlotsType<{
204
+ default: (props: MeterGroupSegmentSlotProps) => VNodeChild;
205
+ }>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
206
+ export declare const MeterGroupIndicator: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
207
+ as: {
208
+ type: PropType<PrimitiveAs>;
209
+ default: PrimitiveAs;
210
+ };
211
+ asChild: {
212
+ type: BooleanConstructor;
213
+ default: boolean;
214
+ };
215
+ }>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
216
+ as: {
217
+ type: PropType<PrimitiveAs>;
218
+ default: PrimitiveAs;
219
+ };
220
+ asChild: {
221
+ type: BooleanConstructor;
222
+ default: boolean;
223
+ };
224
+ }>> & Readonly<{}>, {
225
+ as: PrimitiveAs;
226
+ asChild: boolean;
227
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
228
+ export declare const MeterGroupValueText: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
229
+ as: {
230
+ type: PropType<PrimitiveAs>;
231
+ default: string;
232
+ };
233
+ asChild: {
234
+ type: BooleanConstructor;
235
+ default: boolean;
236
+ };
237
+ }>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
238
+ as: {
239
+ type: PropType<PrimitiveAs>;
240
+ default: string;
241
+ };
242
+ asChild: {
243
+ type: BooleanConstructor;
244
+ default: boolean;
245
+ };
246
+ }>> & Readonly<{}>, {
247
+ as: PrimitiveAs;
248
+ asChild: boolean;
249
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
250
+ export declare const MeterGroupList: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
251
+ as: {
252
+ type: PropType<PrimitiveAs>;
253
+ default: PrimitiveAs;
254
+ };
255
+ asChild: {
256
+ type: BooleanConstructor;
257
+ default: boolean;
258
+ };
259
+ }>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
260
+ as: {
261
+ type: PropType<PrimitiveAs>;
262
+ default: PrimitiveAs;
263
+ };
264
+ asChild: {
265
+ type: BooleanConstructor;
266
+ default: boolean;
267
+ };
268
+ }>> & Readonly<{}>, {
269
+ as: PrimitiveAs;
270
+ asChild: boolean;
271
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
272
+ export declare const MeterGroupItem: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
273
+ id: {
274
+ type: StringConstructor;
275
+ required: true;
276
+ };
277
+ as: {
278
+ type: PropType<PrimitiveAs>;
279
+ default: string;
280
+ };
281
+ asChild: {
282
+ type: BooleanConstructor;
283
+ default: boolean;
284
+ };
285
+ }>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
286
+ id: {
287
+ type: StringConstructor;
288
+ required: true;
289
+ };
290
+ as: {
291
+ type: PropType<PrimitiveAs>;
292
+ default: string;
293
+ };
294
+ asChild: {
295
+ type: BooleanConstructor;
296
+ default: boolean;
297
+ };
298
+ }>> & Readonly<{}>, {
299
+ as: PrimitiveAs;
300
+ asChild: boolean;
301
+ }, SlotsType<{
302
+ default: (props: MeterGroupItemSlotProps) => VNodeChild;
303
+ }>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
304
+ export declare const MeterGroupItemIndicator: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
305
+ as: {
306
+ type: PropType<PrimitiveAs>;
307
+ default: PrimitiveAs;
308
+ };
309
+ asChild: {
310
+ type: BooleanConstructor;
311
+ default: boolean;
312
+ };
313
+ }>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
314
+ as: {
315
+ type: PropType<PrimitiveAs>;
316
+ default: PrimitiveAs;
317
+ };
318
+ asChild: {
319
+ type: BooleanConstructor;
320
+ default: boolean;
321
+ };
322
+ }>> & Readonly<{}>, {
323
+ as: PrimitiveAs;
324
+ asChild: boolean;
325
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
326
+ export declare const MeterGroupItemLabel: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
327
+ as: {
328
+ type: PropType<PrimitiveAs>;
329
+ default: string;
330
+ };
331
+ asChild: {
332
+ type: BooleanConstructor;
333
+ default: boolean;
334
+ };
335
+ }>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
336
+ as: {
337
+ type: PropType<PrimitiveAs>;
338
+ default: string;
339
+ };
340
+ asChild: {
341
+ type: BooleanConstructor;
342
+ default: boolean;
343
+ };
344
+ }>> & Readonly<{}>, {
345
+ as: PrimitiveAs;
346
+ asChild: boolean;
347
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
348
+ export declare const MeterGroupItemValue: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
349
+ as: {
350
+ type: PropType<PrimitiveAs>;
351
+ default: string;
352
+ };
353
+ asChild: {
354
+ type: BooleanConstructor;
355
+ default: boolean;
356
+ };
357
+ }>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
358
+ as: {
359
+ type: PropType<PrimitiveAs>;
360
+ default: string;
361
+ };
362
+ asChild: {
363
+ type: BooleanConstructor;
364
+ default: boolean;
365
+ };
366
+ }>> & Readonly<{}>, {
367
+ as: PrimitiveAs;
368
+ asChild: boolean;
369
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
@@ -0,0 +1,271 @@
1
+ import { computed, defineComponent, h, inject, mergeProps, provide, } from 'vue';
2
+ import { createMeterGroupState } from '@sectile/core/meter-group';
3
+ import { getMeterGroupRootAttributes, getMeterGroupSegmentAttributes, getMeterGroupTrackAttributes, } from '@sectile/dom/meter-group';
4
+ import { Primitive } from './primitive.js';
5
+ import { normalizeDecimalInput } from './internal/decimal-input.js';
6
+ const meterGroupKey = Symbol('SectileMeterGroupRoot');
7
+ const meterGroupEntryKey = Symbol('SectileMeterGroupEntry');
8
+ const partProps = {
9
+ as: { type: [String, Object, Function], default: 'div' },
10
+ asChild: { type: Boolean, default: false },
11
+ };
12
+ const keyedPartProps = {
13
+ id: { type: String, required: true },
14
+ ...partProps,
15
+ };
16
+ export const MeterGroupRoot = defineComponent({
17
+ name: 'SectileMeterGroupRoot',
18
+ inheritAttrs: false,
19
+ props: {
20
+ items: { type: Array, required: true },
21
+ max: { type: [Number, String], default: 100 },
22
+ low: { type: [Number, String], default: undefined },
23
+ high: { type: [Number, String], default: undefined },
24
+ optimum: { type: [Number, String], default: undefined },
25
+ label: { type: String, default: undefined },
26
+ formatValue: { type: Function, default: undefined },
27
+ formatTotal: { type: Function, default: undefined },
28
+ as: { type: [String, Object, Function], default: 'div' },
29
+ asChild: { type: Boolean, default: false },
30
+ },
31
+ slots: Object,
32
+ setup(props, { attrs, slots }) {
33
+ const projection = computed(() => {
34
+ const entries = new Map(props.items.map((entry) => [entry.id, entry]));
35
+ const state = createMeterGroupState({
36
+ items: props.items.map((entry) => ({ id: entry.id, value: normalizeDecimalInput(entry.value) })),
37
+ max: normalizeDecimalInput(props.max),
38
+ ...(props.low === undefined ? {} : { low: normalizeDecimalInput(props.low) }),
39
+ ...(props.high === undefined ? {} : { high: normalizeDecimalInput(props.high) }),
40
+ ...(props.optimum === undefined ? {} : { optimum: normalizeDecimalInput(props.optimum) }),
41
+ });
42
+ const segments = Object.freeze(state.segments.map((segment) => {
43
+ const entry = entries.get(segment.id);
44
+ if (entry === undefined)
45
+ throw new Error('Internal invariant breach: MeterGroup entry lookup failed.');
46
+ return projectSegment(state, entry, props.formatValue);
47
+ }));
48
+ const rootAttributes = getMeterGroupRootAttributes(state);
49
+ return Object.freeze({
50
+ state,
51
+ entries,
52
+ slot: Object.freeze({
53
+ segments,
54
+ max: state.max,
55
+ total: state.total,
56
+ remaining: state.remaining,
57
+ percentage: Number(rootAttributes['data-percentage']),
58
+ zone: state.zone,
59
+ valueText: props.formatTotal?.(state.total, state.max) ?? `${state.total} / ${state.max}`,
60
+ }),
61
+ });
62
+ });
63
+ provide(meterGroupKey, { projection });
64
+ return () => {
65
+ const current = projection.value;
66
+ const projected = getMeterGroupRootAttributes(current.state, {
67
+ ...(props.label === undefined ? {} : { label: props.label }),
68
+ ...(typeof attrs['aria-labelledby'] === 'string' ? { labelledBy: attrs['aria-labelledby'] } : {}),
69
+ ...(typeof attrs['aria-describedby'] === 'string' ? { describedBy: attrs['aria-describedby'] } : {}),
70
+ });
71
+ return h(Primitive, mergeProps(attrs, projected, {
72
+ as: props.as,
73
+ asChild: props.asChild,
74
+ }), { default: () => slots['default']?.(current.slot) });
75
+ };
76
+ },
77
+ });
78
+ export const MeterGroupTrack = defineComponent({
79
+ name: 'SectileMeterGroupTrack',
80
+ inheritAttrs: false,
81
+ props: partProps,
82
+ setup(props, { attrs, slots }) {
83
+ const root = useMeterGroup('MeterGroupTrack');
84
+ return () => h(Primitive, mergeProps(attrs, getMeterGroupTrackAttributes(root.projection.value.state), {
85
+ as: props.as,
86
+ asChild: props.asChild,
87
+ }), slots);
88
+ },
89
+ });
90
+ export const MeterGroupSegment = defineComponent({
91
+ name: 'SectileMeterGroupSegment',
92
+ inheritAttrs: false,
93
+ props: keyedPartProps,
94
+ slots: Object,
95
+ setup(props, { attrs, slots }) {
96
+ const root = useMeterGroup('MeterGroupSegment');
97
+ const segment = computed(() => segmentByID(root, props.id ?? '', 'MeterGroupSegment'));
98
+ provide(meterGroupEntryKey, { segment });
99
+ return () => {
100
+ const current = segment.value;
101
+ const projected = getMeterGroupSegmentAttributes(root.projection.value.state, current.id, {
102
+ label: current.label,
103
+ formatValue: () => current.valueText,
104
+ });
105
+ if (!projected.ok)
106
+ throw new TypeError(`MeterGroupSegment id ${current.id} is unavailable.`);
107
+ return h(Primitive, mergeProps(attrs, projected.value, {
108
+ as: props.as,
109
+ asChild: props.asChild,
110
+ }), { default: () => slots['default']?.(current) });
111
+ };
112
+ },
113
+ });
114
+ export const MeterGroupIndicator = entryPart('SectileMeterGroupIndicator', 'indicator', 'div', (segment) => ({
115
+ 'aria-hidden': 'true',
116
+ 'data-percentage': segment.percentage,
117
+ 'data-start-percentage': segment.startPercentage,
118
+ 'data-end-percentage': segment.endPercentage,
119
+ style: [
120
+ `--sectile-meter-group-percentage: ${segment.percentage}%`,
121
+ `--sectile-meter-group-start-percentage: ${segment.startPercentage}%`,
122
+ `--sectile-meter-group-end-percentage: ${segment.endPercentage}%`,
123
+ ].join('; '),
124
+ }));
125
+ export const MeterGroupValueText = defineComponent({
126
+ name: 'SectileMeterGroupValueText',
127
+ inheritAttrs: false,
128
+ props: {
129
+ as: { type: [String, Object, Function], default: 'span' },
130
+ asChild: { type: Boolean, default: false },
131
+ },
132
+ setup(props, { attrs, slots }) {
133
+ const root = useMeterGroup('MeterGroupValueText');
134
+ return () => h(Primitive, mergeProps(attrs, {
135
+ as: props.as,
136
+ asChild: props.asChild,
137
+ 'data-scope': 'meter-group',
138
+ 'data-part': 'value-text',
139
+ }), { default: () => slots['default']?.(root.projection.value.slot) ?? root.projection.value.slot.valueText });
140
+ },
141
+ });
142
+ export const MeterGroupList = meterGroupPart('SectileMeterGroupList', 'list', 'ul', { 'aria-hidden': 'true' });
143
+ export const MeterGroupItem = defineComponent({
144
+ name: 'SectileMeterGroupItem',
145
+ inheritAttrs: false,
146
+ props: {
147
+ id: { type: String, required: true },
148
+ as: { type: [String, Object, Function], default: 'li' },
149
+ asChild: { type: Boolean, default: false },
150
+ },
151
+ slots: Object,
152
+ setup(props, { attrs, slots }) {
153
+ const root = useMeterGroup('MeterGroupItem');
154
+ const segment = computed(() => segmentByID(root, props.id, 'MeterGroupItem'));
155
+ provide(meterGroupEntryKey, { segment });
156
+ return () => h(Primitive, mergeProps(attrs, {
157
+ as: props.as,
158
+ asChild: props.asChild,
159
+ 'data-scope': 'meter-group',
160
+ 'data-part': 'item',
161
+ 'data-id': segment.value.id,
162
+ 'aria-hidden': 'true',
163
+ }), { default: () => slots['default']?.(segment.value) });
164
+ },
165
+ });
166
+ export const MeterGroupItemIndicator = entryPart('SectileMeterGroupItemIndicator', 'item-indicator', 'span', (segment) => ({
167
+ 'aria-hidden': 'true',
168
+ 'data-percentage': segment.percentage,
169
+ }));
170
+ export const MeterGroupItemLabel = entryTextPart('SectileMeterGroupItemLabel', 'item-label', (segment) => segment.label);
171
+ export const MeterGroupItemValue = entryTextPart('SectileMeterGroupItemValue', 'item-value', (segment) => segment.valueText);
172
+ function projectSegment(state, entry, formatValue) {
173
+ const attributes = getMeterGroupSegmentAttributes(state, entry.id, {
174
+ label: entry.label,
175
+ ...(formatValue === undefined ? {} : { formatValue: (value) => formatValue(value, entry) }),
176
+ });
177
+ if (!attributes.ok)
178
+ throw new Error('Internal invariant breach: MeterGroup segment projection failed.');
179
+ const segment = state.segments.find((candidate) => candidate.id === entry.id);
180
+ if (segment === undefined)
181
+ throw new Error('Internal invariant breach: MeterGroup segment lookup failed.');
182
+ return Object.freeze({
183
+ id: entry.id,
184
+ label: entry.label,
185
+ value: segment.value,
186
+ valueText: String(attributes.value['aria-valuetext']),
187
+ start: segment.start,
188
+ end: segment.end,
189
+ percentage: Number(attributes.value['data-percentage']),
190
+ startPercentage: Number(attributes.value['data-start-percentage']),
191
+ endPercentage: Number(attributes.value['data-end-percentage']),
192
+ });
193
+ }
194
+ function segmentByID(root, id, part) {
195
+ const segment = root.projection.value.slot.segments.find((candidate) => candidate.id === id);
196
+ if (segment === undefined)
197
+ throw new TypeError(`${part} id ${id} is unavailable.`);
198
+ return segment;
199
+ }
200
+ function meterGroupPart(name, part, defaultAs = 'div', extra = {}) {
201
+ return defineComponent({
202
+ name,
203
+ inheritAttrs: false,
204
+ props: {
205
+ as: { type: [String, Object, Function], default: defaultAs },
206
+ asChild: { type: Boolean, default: false },
207
+ },
208
+ setup(props, { attrs, slots }) {
209
+ useMeterGroup(name);
210
+ return () => h(Primitive, mergeProps(attrs, extra, {
211
+ as: props.as,
212
+ asChild: props.asChild,
213
+ 'data-scope': 'meter-group',
214
+ 'data-part': part,
215
+ }), slots);
216
+ },
217
+ });
218
+ }
219
+ function entryPart(name, part, defaultAs, project) {
220
+ return defineComponent({
221
+ name,
222
+ inheritAttrs: false,
223
+ props: {
224
+ as: { type: [String, Object, Function], default: defaultAs },
225
+ asChild: { type: Boolean, default: false },
226
+ },
227
+ setup(props, { attrs, slots }) {
228
+ const entry = useMeterGroupEntry(name);
229
+ return () => h(Primitive, mergeProps(attrs, project(entry.segment.value), {
230
+ as: props.as,
231
+ asChild: props.asChild,
232
+ 'data-scope': 'meter-group',
233
+ 'data-part': part,
234
+ 'data-id': entry.segment.value.id,
235
+ }), slots);
236
+ },
237
+ });
238
+ }
239
+ function entryTextPart(name, part, text) {
240
+ return defineComponent({
241
+ name,
242
+ inheritAttrs: false,
243
+ props: {
244
+ as: { type: [String, Object, Function], default: 'span' },
245
+ asChild: { type: Boolean, default: false },
246
+ },
247
+ setup(props, { attrs, slots }) {
248
+ const entry = useMeterGroupEntry(name);
249
+ return () => h(Primitive, mergeProps(attrs, {
250
+ as: props.as,
251
+ asChild: props.asChild,
252
+ 'data-scope': 'meter-group',
253
+ 'data-part': part,
254
+ 'data-id': entry.segment.value.id,
255
+ }), { default: () => slots['default']?.(entry.segment.value) ?? text(entry.segment.value) });
256
+ },
257
+ });
258
+ }
259
+ function useMeterGroup(part) {
260
+ const root = inject(meterGroupKey);
261
+ if (root === undefined)
262
+ throw new TypeError(`${part} must be used inside MeterGroupRoot.`);
263
+ return root;
264
+ }
265
+ function useMeterGroupEntry(part) {
266
+ const entry = inject(meterGroupEntryKey);
267
+ if (entry === undefined)
268
+ throw new TypeError(`${part} must be used inside MeterGroupSegment or MeterGroupItem.`);
269
+ return entry;
270
+ }
271
+ //# sourceMappingURL=meter-group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meter-group.js","sourceRoot":"","sources":["../src/meter-group.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,eAAe,EACf,CAAC,EACD,MAAM,EACN,UAAU,EACV,OAAO,GAKR,MAAM,KAAK,CAAC;AACb,OAAO,EAAE,qBAAqB,EAAwB,MAAM,2BAA2B,CAAC;AACxF,OAAO,EACL,2BAA2B,EAC3B,8BAA8B,EAC9B,4BAA4B,GAC7B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAAoB,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAsDpE,MAAM,aAAa,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC;AACtD,MAAM,kBAAkB,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAC5D,MAAM,SAAS,GAAG;IAChB,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAA0B,EAAE,OAAO,EAAE,KAAK,EAAE;IACjF,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;CAC3C,CAAC;AACF,MAAM,cAAc,GAAG;IACrB,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAa,EAAE;IAC7C,GAAG,SAAS;CACb,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,eAAe,CAAC;IAC5C,IAAI,EAAE,uBAAuB;IAC7B,YAAY,EAAE,KAAK;IACnB,KAAK,EAAE;QACL,KAAK,EAAE,EAAE,IAAI,EAAE,KAA6C,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC9E,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE;QAC7C,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE;QACnD,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE;QACpD,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE;QACvD,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;QAC3C,WAAW,EAAE,EAAE,IAAI,EAAE,QAA8C,EAAE,OAAO,EAAE,SAAS,EAAE;QACzF,WAAW,EAAE,EAAE,IAAI,EAAE,QAA8C,EAAE,OAAO,EAAE,SAAS,EAAE;QACzF,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAA0B,EAAE,OAAO,EAAE,KAAK,EAAE;QACjF,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;KAC3C;IACD,KAAK,EAAE,MAAgF;IACvF,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;QAC3B,MAAM,UAAU,GAAG,QAAQ,CAAuB,GAAG,EAAE;YACrD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YACvE,MAAM,KAAK,GAAG,qBAAqB,CAAC;gBAClC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAChG,GAAG,EAAE,qBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC;gBACrC,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,qBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7E,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChF,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,qBAAqB,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;aAC1F,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC5D,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACtC,IAAI,KAAK,KAAK,SAAS;oBAAE,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;gBACvG,OAAO,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;YACzD,CAAC,CAAC,CAAC,CAAC;YACJ,MAAM,cAAc,GAAG,2BAA2B,CAAC,KAAK,CAAC,CAAC;YAC1D,OAAO,MAAM,CAAC,MAAM,CAAC;gBACnB,KAAK;gBACL,OAAO;gBACP,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC;oBAClB,QAAQ;oBACR,GAAG,EAAE,KAAK,CAAC,GAAG;oBACd,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,UAAU,EAAE,MAAM,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;oBACrD,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,SAAS,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,MAAM,KAAK,CAAC,GAAG,EAAE;iBAC1F,CAAC;aACH,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,OAAO,CAAoB,aAAa,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;QAC1D,OAAO,GAAe,EAAE;YACtB,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC;YACjC,MAAM,SAAS,GAAG,2BAA2B,CAAC,OAAO,CAAC,KAAK,EAAE;gBAC3D,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC5D,GAAG,CAAC,OAAO,KAAK,CAAC,iBAAiB,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjG,GAAG,CAAC,OAAO,KAAK,CAAC,kBAAkB,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACrG,CAAC,CAAC;YACH,OAAO,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE;gBAC/C,EAAE,EAAE,KAAK,CAAC,EAAE;gBACZ,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3D,CAAC,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,eAAe,CAAC;IAC7C,IAAI,EAAE,wBAAwB;IAC9B,YAAY,EAAE,KAAK;IACnB,KAAK,EAAE,SAAS;IAChB,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;QAC3B,MAAM,IAAI,GAAG,aAAa,CAAC,iBAAiB,CAAC,CAAC;QAC9C,OAAO,GAAe,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,KAAK,EAAE,4BAA4B,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACjH,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,EAAE,KAAK,CAAC,CAAC;IACb,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,eAAe,CAAC;IAC/C,IAAI,EAAE,0BAA0B;IAChC,YAAY,EAAE,KAAK;IACnB,KAAK,EAAE,cAAc;IACrB,KAAK,EAAE,MAAmF;IAC1F,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;QAC3B,MAAM,IAAI,GAAG,aAAa,CAAC,mBAAmB,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,mBAAmB,CAAC,CAAC,CAAC;QACvF,OAAO,CAAyB,kBAAkB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QACjE,OAAO,GAAe,EAAE;YACtB,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;YAC9B,MAAM,SAAS,GAAG,8BAA8B,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE;gBACxF,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,WAAW,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS;aACrC,CAAC,CAAC;YACH,IAAI,CAAC,SAAS,CAAC,EAAE;gBAAE,MAAM,IAAI,SAAS,CAAC,wBAAwB,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC;YAC7F,OAAO,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE;gBACrD,EAAE,EAAE,KAAK,CAAC,EAAE;gBACZ,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACtD,CAAC,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,SAAS,CAAC,4BAA4B,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC3G,aAAa,EAAE,MAAM;IACrB,iBAAiB,EAAE,OAAO,CAAC,UAAU;IACrC,uBAAuB,EAAE,OAAO,CAAC,eAAe;IAChD,qBAAqB,EAAE,OAAO,CAAC,aAAa;IAC5C,KAAK,EAAE;QACL,qCAAqC,OAAO,CAAC,UAAU,GAAG;QAC1D,2CAA2C,OAAO,CAAC,eAAe,GAAG;QACrE,yCAAyC,OAAO,CAAC,aAAa,GAAG;KAClE,CAAC,IAAI,CAAC,IAAI,CAAC;CACb,CAAC,CAAC,CAAC;AAEJ,MAAM,CAAC,MAAM,mBAAmB,GAAG,eAAe,CAAC;IACjD,IAAI,EAAE,4BAA4B;IAClC,YAAY,EAAE,KAAK;IACnB,KAAK,EAAE;QACL,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAA0B,EAAE,OAAO,EAAE,MAAM,EAAE;QAClF,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;KAC3C;IACD,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;QAC3B,MAAM,IAAI,GAAG,aAAa,CAAC,qBAAqB,CAAC,CAAC;QAClD,OAAO,GAAe,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,KAAK,EAAE;YACtD,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,YAAY,EAAE,aAAa;YAC3B,WAAW,EAAE,YAAY;SAC1B,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IACjH,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,cAAc,CAAC,uBAAuB,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC;AAE/G,MAAM,CAAC,MAAM,cAAc,GAAG,eAAe,CAAC;IAC5C,IAAI,EAAE,uBAAuB;IAC7B,YAAY,EAAE,KAAK;IACnB,KAAK,EAAE;QACL,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;QACpC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAA0B,EAAE,OAAO,EAAE,IAAI,EAAE;QAChF,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;KAC3C;IACD,KAAK,EAAE,MAAgF;IACvF,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;QAC3B,MAAM,IAAI,GAAG,aAAa,CAAC,gBAAgB,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;QAC9E,OAAO,CAAyB,kBAAkB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QACjE,OAAO,GAAe,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,KAAK,EAAE;YACtD,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,YAAY,EAAE,aAAa;YAC3B,WAAW,EAAE,MAAM;YACnB,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE;YAC3B,aAAa,EAAE,MAAM;SACtB,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG,SAAS,CAAC,gCAAgC,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACzH,aAAa,EAAE,MAAM;IACrB,iBAAiB,EAAE,OAAO,CAAC,UAAU;CACtC,CAAC,CAAC,CAAC;AACJ,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,CAAC,4BAA4B,EAAE,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACzH,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,CAAC,4BAA4B,EAAE,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAE7H,SAAS,cAAc,CACrB,KAA8B,EAC9B,KAAsB,EACtB,WAAiD;IAEjD,MAAM,UAAU,GAAG,8BAA8B,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE;QACjE,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;KAC5F,CAAC,CAAC;IACH,IAAI,CAAC,UAAU,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;IACxG,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;IAC9E,IAAI,OAAO,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IAC3G,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACrD,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACvD,eAAe,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAClE,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;KAC/D,CAAC,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,IAAuB,EAAE,EAAU,EAAE,IAAY;IACpE,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7F,IAAI,OAAO,KAAK,SAAS;QAAE,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,OAAO,EAAE,kBAAkB,CAAC,CAAC;IACnF,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,cAAc,CACrB,IAAY,EACZ,IAAY,EACZ,SAAS,GAAgB,KAAK,EAC9B,KAAK,GAAqC,EAAE;IAE5C,OAAO,eAAe,CAAC;QACrB,IAAI;QACJ,YAAY,EAAE,KAAK;QACnB,KAAK,EAAE;YACL,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAA0B,EAAE,OAAO,EAAE,SAAS,EAAE;YACrF,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;SAC3C;QACD,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;YAC3B,aAAa,CAAC,IAAI,CAAC,CAAC;YACpB,OAAO,GAAe,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE;gBAC7D,EAAE,EAAE,KAAK,CAAC,EAAE;gBACZ,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,YAAY,EAAE,aAAa;gBAC3B,WAAW,EAAE,IAAI;aAClB,CAAC,EAAE,KAAK,CAAC,CAAC;QACb,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,SAAS,CAChB,IAAY,EACZ,IAAY,EACZ,SAAsB,EACtB,OAA2F;IAE3F,OAAO,eAAe,CAAC;QACrB,IAAI;QACJ,YAAY,EAAE,KAAK;QACnB,KAAK,EAAE;YACL,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAA0B,EAAE,OAAO,EAAE,SAAS,EAAE;YACrF,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;SAC3C;QACD,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;YAC3B,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACvC,OAAO,GAAe,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACpF,EAAE,EAAE,KAAK,CAAC,EAAE;gBACZ,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,YAAY,EAAE,aAAa;gBAC3B,WAAW,EAAE,IAAI;gBACjB,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;aAClC,CAAC,EAAE,KAAK,CAAC,CAAC;QACb,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CACpB,IAAY,EACZ,IAAY,EACZ,IAAqD;IAErD,OAAO,eAAe,CAAC;QACrB,IAAI;QACJ,YAAY,EAAE,KAAK;QACnB,KAAK,EAAE;YACL,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAA0B,EAAE,OAAO,EAAE,MAAM,EAAE;YAClF,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;SAC3C;QACD,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;YAC3B,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACvC,OAAO,GAAe,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,KAAK,EAAE;gBACtD,EAAE,EAAE,KAAK,CAAC,EAAE;gBACZ,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,YAAY,EAAE,aAAa;gBAC3B,WAAW,EAAE,IAAI;gBACjB,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;aAClC,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC/F,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,IAAI,GAAG,MAAM,CAAoB,aAAa,CAAC,CAAC;IACtD,IAAI,IAAI,KAAK,SAAS;QAAE,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,sCAAsC,CAAC,CAAC;IAC3F,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY;IACtC,MAAM,KAAK,GAAG,MAAM,CAAyB,kBAAkB,CAAC,CAAC;IACjE,IAAI,KAAK,KAAK,SAAS;QAAE,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,2DAA2D,CAAC,CAAC;IACjH,OAAO,KAAK,CAAC;AACf,CAAC"}