@vuetify/nightly 3.0.0-beta.10 → 3.0.0-beta.13

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 (224) hide show
  1. package/CHANGELOG.md +13 -2
  2. package/dist/json/attributes.json +37 -29
  3. package/dist/json/importMap.json +46 -46
  4. package/dist/json/tags.json +10 -8
  5. package/dist/json/web-types.json +101 -87
  6. package/dist/vuetify.css +545 -441
  7. package/dist/vuetify.d.ts +12095 -10059
  8. package/dist/vuetify.esm.js +401 -266
  9. package/dist/vuetify.esm.js.map +1 -1
  10. package/dist/vuetify.js +371 -236
  11. package/dist/vuetify.js.map +1 -1
  12. package/dist/vuetify.min.css +3 -3
  13. package/dist/vuetify.min.js +496 -490
  14. package/dist/vuetify.min.js.map +1 -1
  15. package/lib/blueprints/index.d.ts +171 -0
  16. package/lib/blueprints/md1.d.ts +167 -0
  17. package/lib/blueprints/md2.d.ts +167 -0
  18. package/lib/blueprints/md3.d.ts +167 -0
  19. package/lib/components/VAlert/index.d.ts +185 -0
  20. package/lib/components/VApp/index.d.ts +83 -0
  21. package/lib/components/VAppBar/VAppBar.css +3 -0
  22. package/lib/components/VAppBar/VAppBar.sass +3 -0
  23. package/lib/components/VAppBar/index.d.ts +156 -0
  24. package/lib/components/VAutocomplete/VAutocomplete.mjs +1 -1
  25. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  26. package/lib/components/VAutocomplete/index.d.ts +1569 -0
  27. package/lib/components/VAvatar/VAvatar.css +44 -2
  28. package/lib/components/VAvatar/VAvatar.mjs +16 -12
  29. package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
  30. package/lib/components/VAvatar/VAvatar.sass +5 -1
  31. package/lib/components/VAvatar/_variables.scss +9 -4
  32. package/lib/components/VAvatar/index.d.ts +80 -0
  33. package/lib/components/VBadge/index.d.ts +123 -0
  34. package/lib/components/VBanner/index.d.ts +122 -0
  35. package/lib/components/VBottomNavigation/index.d.ts +143 -0
  36. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs +2 -2
  37. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs.map +1 -1
  38. package/lib/components/VBreadcrumbs/index.d.ts +301 -0
  39. package/lib/components/VBtn/VBtn.css +8 -3
  40. package/lib/components/VBtn/VBtn.mjs +16 -6
  41. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  42. package/lib/components/VBtn/index.d.ts +210 -0
  43. package/lib/components/VBtnGroup/index.d.ts +65 -0
  44. package/lib/components/VBtnToggle/VBtnToggle.mjs +1 -3
  45. package/lib/components/VBtnToggle/VBtnToggle.mjs.map +1 -1
  46. package/lib/components/VBtnToggle/index.d.ts +175 -0
  47. package/lib/components/VCard/VCard.css +8 -3
  48. package/lib/components/VCard/index.d.ts +230 -0
  49. package/lib/components/VCarousel/VCarousel.mjs +3 -3
  50. package/lib/components/VCarousel/VCarousel.mjs.map +1 -1
  51. package/lib/components/VCarousel/index.d.ts +80 -0
  52. package/lib/components/VCheckbox/index.d.ts +291 -0
  53. package/lib/components/VChip/index.d.ts +195 -0
  54. package/lib/components/VChipGroup/index.d.ts +89 -0
  55. package/lib/components/VCode/index.d.ts +19 -0
  56. package/lib/components/VColorPicker/index.d.ts +116 -0
  57. package/lib/components/VCombobox/VCombobox.mjs +1 -1
  58. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  59. package/lib/components/VCombobox/index.d.ts +1590 -0
  60. package/lib/components/VCounter/index.d.ts +223 -0
  61. package/lib/components/VDefaultsProvider/index.d.ts +26 -0
  62. package/lib/components/VDialog/VDialog.css +2 -0
  63. package/lib/components/VDialog/VDialog.mjs +17 -12
  64. package/lib/components/VDialog/VDialog.mjs.map +1 -1
  65. package/lib/components/VDialog/VDialog.sass +2 -0
  66. package/lib/components/VDialog/index.d.ts +859 -0
  67. package/lib/components/VDivider/index.d.ts +22 -0
  68. package/lib/components/VExpansionPanel/VExpansionPanel.css +8 -3
  69. package/lib/components/VExpansionPanel/index.d.ts +206 -0
  70. package/lib/components/VField/VField.css +27 -24
  71. package/lib/components/VField/VField.mjs +1 -1
  72. package/lib/components/VField/VField.mjs.map +1 -1
  73. package/lib/components/VField/VField.sass +23 -21
  74. package/lib/components/VField/index.d.ts +332 -0
  75. package/lib/components/VFileInput/VFileInput.mjs +3 -3
  76. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  77. package/lib/components/VFileInput/index.d.ts +236 -0
  78. package/lib/components/VFooter/VFooter.css +7 -0
  79. package/lib/components/VFooter/VFooter.sass +1 -1
  80. package/lib/components/VFooter/_variables.scss +11 -0
  81. package/lib/components/VFooter/index.d.ts +76 -0
  82. package/lib/components/VForm/index.d.ts +72 -0
  83. package/lib/components/VGrid/index.d.ts +154 -0
  84. package/lib/components/VHover/index.d.ts +30 -0
  85. package/lib/components/VIcon/index.d.ts +124 -0
  86. package/lib/components/VImg/VImg.mjs +29 -27
  87. package/lib/components/VImg/VImg.mjs.map +1 -1
  88. package/lib/components/VImg/index.d.ts +89 -0
  89. package/lib/components/VInput/VInput.mjs +4 -4
  90. package/lib/components/VInput/VInput.mjs.map +1 -1
  91. package/lib/components/VInput/index.d.ts +325 -0
  92. package/lib/components/VItemGroup/index.d.ts +210 -0
  93. package/lib/components/VKbd/index.d.ts +19 -0
  94. package/lib/components/VLabel/VLabel.css +4 -1
  95. package/lib/components/VLabel/VLabel.mjs +4 -1
  96. package/lib/components/VLabel/VLabel.mjs.map +1 -1
  97. package/lib/components/VLabel/VLabel.sass +3 -1
  98. package/lib/components/VLabel/index.d.ts +16 -0
  99. package/lib/components/VLayout/index.d.ts +75 -0
  100. package/lib/components/VLazy/index.d.ts +85 -0
  101. package/lib/components/VList/VListItem.css +8 -3
  102. package/lib/components/VList/VListItem.mjs +4 -4
  103. package/lib/components/VList/VListItem.mjs.map +1 -1
  104. package/lib/components/VList/index.d.ts +1250 -0
  105. package/lib/components/VLocaleProvider/index.d.ts +23 -0
  106. package/lib/components/VMain/index.d.ts +26 -0
  107. package/lib/components/VMenu/VMenu.mjs +16 -3
  108. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  109. package/lib/components/VMenu/index.d.ts +817 -0
  110. package/lib/components/VMessages/index.d.ts +234 -0
  111. package/lib/components/VNavigationDrawer/index.d.ts +148 -0
  112. package/lib/components/VNoSsr/index.d.ts +7 -0
  113. package/lib/components/VOverlay/VOverlay.mjs +4 -3
  114. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  115. package/lib/components/VOverlay/index.d.ts +579 -0
  116. package/lib/components/VOverlay/useActivator.mjs +27 -1
  117. package/lib/components/VOverlay/useActivator.mjs.map +1 -1
  118. package/lib/components/VPagination/VPagination.mjs +6 -3
  119. package/lib/components/VPagination/VPagination.mjs.map +1 -1
  120. package/lib/components/VPagination/index.d.ts +247 -0
  121. package/lib/components/VParallax/VParallax.mjs +24 -10
  122. package/lib/components/VParallax/VParallax.mjs.map +1 -1
  123. package/lib/components/VParallax/index.d.ts +18 -0
  124. package/lib/components/VProgressCircular/index.d.ts +68 -0
  125. package/lib/components/VProgressLinear/index.d.ts +101 -0
  126. package/lib/components/VRadio/index.d.ts +103 -0
  127. package/lib/components/VRadioGroup/VRadioGroup.css +2 -3
  128. package/lib/components/VRadioGroup/VRadioGroup.mjs +2 -1
  129. package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
  130. package/lib/components/VRadioGroup/VRadioGroup.sass +2 -2
  131. package/lib/components/VRadioGroup/_variables.scss +0 -1
  132. package/lib/components/VRadioGroup/index.d.ts +186 -0
  133. package/lib/components/VRangeSlider/VRangeSlider.mjs +12 -2
  134. package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
  135. package/lib/components/VRangeSlider/index.d.ts +242 -0
  136. package/lib/components/VRating/index.d.ts +356 -0
  137. package/lib/components/VResponsive/index.d.ts +23 -0
  138. package/lib/components/VSelect/VSelect.mjs +1 -1
  139. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  140. package/lib/components/VSelect/index.d.ts +1521 -0
  141. package/lib/components/VSelectionControl/VSelectionControl.mjs +2 -1
  142. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  143. package/lib/components/VSelectionControl/index.d.ts +275 -0
  144. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.css +5 -0
  145. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs +3 -1
  146. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs.map +1 -1
  147. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.sass +5 -0
  148. package/lib/components/VSelectionControlGroup/index.d.ts +47 -0
  149. package/lib/components/VSheet/index.d.ts +68 -0
  150. package/lib/components/VSlideGroup/index.d.ts +151 -0
  151. package/lib/components/VSlider/VSlider.css +7 -2
  152. package/lib/components/VSlider/VSlider.mjs +14 -4
  153. package/lib/components/VSlider/VSlider.mjs.map +1 -1
  154. package/lib/components/VSlider/VSlider.sass +6 -2
  155. package/lib/components/VSlider/VSliderTrack.css +20 -20
  156. package/lib/components/VSlider/VSliderTrack.mjs +7 -3
  157. package/lib/components/VSlider/VSliderTrack.mjs.map +1 -1
  158. package/lib/components/VSlider/VSliderTrack.sass +14 -14
  159. package/lib/components/VSlider/_variables.scss +2 -2
  160. package/lib/components/VSlider/index.d.ts +239 -0
  161. package/lib/components/VSlider/slider.mjs +2 -2
  162. package/lib/components/VSlider/slider.mjs.map +1 -1
  163. package/lib/components/VSnackbar/VSnackbar.mjs +3 -2
  164. package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
  165. package/lib/components/VSnackbar/index.d.ts +892 -0
  166. package/lib/components/VSwitch/index.d.ts +175 -0
  167. package/lib/components/VSystemBar/index.d.ts +61 -0
  168. package/lib/components/VTable/index.d.ts +39 -0
  169. package/lib/components/VTabs/VTab.mjs +1 -0
  170. package/lib/components/VTabs/VTab.mjs.map +1 -1
  171. package/lib/components/VTabs/index.d.ts +178 -0
  172. package/lib/components/VTextField/VTextField.css +2 -3
  173. package/lib/components/VTextField/VTextField.sass +2 -4
  174. package/lib/components/VTextField/index.d.ts +582 -0
  175. package/lib/components/VTextarea/VTextarea.css +5 -3
  176. package/lib/components/VTextarea/VTextarea.mjs +2 -1
  177. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  178. package/lib/components/VTextarea/VTextarea.sass +5 -4
  179. package/lib/components/VTextarea/index.d.ts +218 -0
  180. package/lib/components/VThemeProvider/index.d.ts +24 -0
  181. package/lib/components/VTimeline/VTimeline.css +21 -6
  182. package/lib/components/VTimeline/VTimeline.mjs +6 -1
  183. package/lib/components/VTimeline/VTimeline.mjs.map +1 -1
  184. package/lib/components/VTimeline/VTimeline.sass +16 -2
  185. package/lib/components/VTimeline/_variables.scss +4 -3
  186. package/lib/components/VTimeline/index.d.ts +154 -0
  187. package/lib/components/VToolbar/VToolbar.css +0 -1
  188. package/lib/components/VToolbar/VToolbar.sass +0 -1
  189. package/lib/components/VToolbar/index.d.ts +414 -0
  190. package/lib/components/VTooltip/VTooltip.mjs.map +1 -1
  191. package/lib/components/VTooltip/index.d.ts +799 -0
  192. package/lib/components/VValidation/index.d.ts +61 -0
  193. package/lib/components/VWindow/index.d.ts +428 -0
  194. package/lib/components/index.d.ts +12037 -10009
  195. package/lib/components/transitions/index.d.ts +454 -0
  196. package/lib/composables/display.mjs +3 -3
  197. package/lib/composables/display.mjs.map +1 -1
  198. package/lib/composables/items.mjs.map +1 -1
  199. package/lib/composables/locale.mjs +10 -3
  200. package/lib/composables/locale.mjs.map +1 -1
  201. package/lib/composables/proxiedModel.mjs +28 -10
  202. package/lib/composables/proxiedModel.mjs.map +1 -1
  203. package/lib/composables/router.mjs +10 -2
  204. package/lib/composables/router.mjs.map +1 -1
  205. package/lib/composables/selectLink.mjs +4 -4
  206. package/lib/composables/selectLink.mjs.map +1 -1
  207. package/lib/composables/theme.mjs +37 -33
  208. package/lib/composables/theme.mjs.map +1 -1
  209. package/lib/composables/validation.mjs +1 -1
  210. package/lib/composables/validation.mjs.map +1 -1
  211. package/lib/entry-bundler.mjs +1 -1
  212. package/lib/framework.mjs +46 -51
  213. package/lib/framework.mjs.map +1 -1
  214. package/lib/index.d.ts +31 -22
  215. package/lib/locale/adapters/vue-i18n.d.ts +35 -0
  216. package/lib/locale/adapters/vue-intl.d.ts +42 -0
  217. package/lib/styles/main.css +73 -73
  218. package/lib/styles/settings/_colors.scss +84 -84
  219. package/lib/styles/tools/_states.sass +8 -3
  220. package/lib/util/getCurrentInstance.mjs +2 -3
  221. package/lib/util/getCurrentInstance.mjs.map +1 -1
  222. package/lib/util/helpers.mjs +6 -11
  223. package/lib/util/helpers.mjs.map +1 -1
  224. package/package.json +4 -2
@@ -0,0 +1,68 @@
1
+ import * as vue from 'vue';
2
+ import { PropType } from 'vue';
3
+
4
+ declare const VProgressCircular: vue.DefineComponent<{
5
+ theme: StringConstructor;
6
+ tag: Omit<{
7
+ type: StringConstructor;
8
+ default: string;
9
+ }, "type" | "default"> & {
10
+ type: PropType<string>;
11
+ default: string;
12
+ };
13
+ size: {
14
+ type: (StringConstructor | NumberConstructor)[];
15
+ default: string;
16
+ };
17
+ bgColor: StringConstructor;
18
+ color: StringConstructor;
19
+ indeterminate: PropType<boolean | "disable-shrink">;
20
+ modelValue: {
21
+ type: (StringConstructor | NumberConstructor)[];
22
+ default: number;
23
+ };
24
+ rotate: {
25
+ type: (StringConstructor | NumberConstructor)[];
26
+ default: number;
27
+ };
28
+ width: {
29
+ type: (StringConstructor | NumberConstructor)[];
30
+ default: number;
31
+ };
32
+ }, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
33
+ theme: StringConstructor;
34
+ tag: Omit<{
35
+ type: StringConstructor;
36
+ default: string;
37
+ }, "type" | "default"> & {
38
+ type: PropType<string>;
39
+ default: string;
40
+ };
41
+ size: {
42
+ type: (StringConstructor | NumberConstructor)[];
43
+ default: string;
44
+ };
45
+ bgColor: StringConstructor;
46
+ color: StringConstructor;
47
+ indeterminate: PropType<boolean | "disable-shrink">;
48
+ modelValue: {
49
+ type: (StringConstructor | NumberConstructor)[];
50
+ default: number;
51
+ };
52
+ rotate: {
53
+ type: (StringConstructor | NumberConstructor)[];
54
+ default: number;
55
+ };
56
+ width: {
57
+ type: (StringConstructor | NumberConstructor)[];
58
+ default: number;
59
+ };
60
+ }>>, {
61
+ width: string | number;
62
+ rotate: string | number;
63
+ size: string | number;
64
+ tag: string;
65
+ modelValue: string | number;
66
+ }>;
67
+
68
+ export { VProgressCircular };
@@ -0,0 +1,101 @@
1
+ import * as vue from 'vue';
2
+
3
+ declare const VProgressLinear: vue.DefineComponent<{
4
+ theme: StringConstructor;
5
+ tag: {
6
+ type: StringConstructor;
7
+ default: string;
8
+ };
9
+ rounded: {
10
+ type: (StringConstructor | BooleanConstructor | NumberConstructor)[];
11
+ default: undefined;
12
+ };
13
+ active: {
14
+ type: BooleanConstructor;
15
+ default: boolean;
16
+ };
17
+ bgColor: StringConstructor;
18
+ bgOpacity: (StringConstructor | NumberConstructor)[];
19
+ bufferValue: {
20
+ type: (StringConstructor | NumberConstructor)[];
21
+ default: number;
22
+ };
23
+ clickable: BooleanConstructor;
24
+ color: StringConstructor;
25
+ height: {
26
+ type: (StringConstructor | NumberConstructor)[];
27
+ default: number;
28
+ };
29
+ indeterminate: BooleanConstructor;
30
+ max: {
31
+ type: (StringConstructor | NumberConstructor)[];
32
+ default: number;
33
+ };
34
+ modelValue: {
35
+ type: (StringConstructor | NumberConstructor)[];
36
+ default: number;
37
+ };
38
+ reverse: BooleanConstructor;
39
+ stream: BooleanConstructor;
40
+ striped: BooleanConstructor;
41
+ roundedBar: BooleanConstructor;
42
+ }, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
43
+ 'update:modelValue': (value: number) => true;
44
+ }, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
45
+ theme: StringConstructor;
46
+ tag: {
47
+ type: StringConstructor;
48
+ default: string;
49
+ };
50
+ rounded: {
51
+ type: (StringConstructor | BooleanConstructor | NumberConstructor)[];
52
+ default: undefined;
53
+ };
54
+ active: {
55
+ type: BooleanConstructor;
56
+ default: boolean;
57
+ };
58
+ bgColor: StringConstructor;
59
+ bgOpacity: (StringConstructor | NumberConstructor)[];
60
+ bufferValue: {
61
+ type: (StringConstructor | NumberConstructor)[];
62
+ default: number;
63
+ };
64
+ clickable: BooleanConstructor;
65
+ color: StringConstructor;
66
+ height: {
67
+ type: (StringConstructor | NumberConstructor)[];
68
+ default: number;
69
+ };
70
+ indeterminate: BooleanConstructor;
71
+ max: {
72
+ type: (StringConstructor | NumberConstructor)[];
73
+ default: number;
74
+ };
75
+ modelValue: {
76
+ type: (StringConstructor | NumberConstructor)[];
77
+ default: number;
78
+ };
79
+ reverse: BooleanConstructor;
80
+ stream: BooleanConstructor;
81
+ striped: BooleanConstructor;
82
+ roundedBar: BooleanConstructor;
83
+ }>> & {
84
+ "onUpdate:modelValue"?: ((value: number) => any) | undefined;
85
+ }, {
86
+ reverse: boolean;
87
+ max: string | number;
88
+ height: string | number;
89
+ active: boolean;
90
+ tag: string;
91
+ indeterminate: boolean;
92
+ rounded: string | number | boolean;
93
+ modelValue: string | number;
94
+ bufferValue: string | number;
95
+ clickable: boolean;
96
+ stream: boolean;
97
+ striped: boolean;
98
+ roundedBar: boolean;
99
+ }>;
100
+
101
+ export { VProgressLinear };
@@ -0,0 +1,103 @@
1
+ import * as vue from 'vue';
2
+ import { JSXComponent, PropType } from 'vue';
3
+
4
+ declare function deepEqual(a: any, b: any): boolean;
5
+
6
+ declare type IconValue = string | JSXComponent;
7
+ declare const IconValue: PropType<IconValue>;
8
+
9
+ declare const VRadio: vue.DefineComponent<{
10
+ density: {
11
+ type: vue.PropType<"default" | "compact" | "comfortable" | null>;
12
+ default: string;
13
+ validator: (v: any) => boolean;
14
+ };
15
+ theme: StringConstructor;
16
+ color: StringConstructor;
17
+ disabled: BooleanConstructor;
18
+ error: BooleanConstructor;
19
+ id: StringConstructor;
20
+ inline: BooleanConstructor;
21
+ label: StringConstructor;
22
+ falseIcon: {
23
+ type: vue.PropType<(string & {}) | IconValue>;
24
+ default: (string & {}) | IconValue;
25
+ };
26
+ trueIcon: {
27
+ type: vue.PropType<(string & {}) | IconValue>;
28
+ default: (string & {}) | IconValue;
29
+ };
30
+ ripple: {
31
+ type: BooleanConstructor;
32
+ default: boolean;
33
+ };
34
+ multiple: {
35
+ type: vue.PropType<boolean | null>;
36
+ default: null;
37
+ };
38
+ name: StringConstructor;
39
+ readonly: BooleanConstructor;
40
+ trueValue: null;
41
+ falseValue: null;
42
+ modelValue: null;
43
+ type: StringConstructor;
44
+ value: null;
45
+ valueComparator: {
46
+ type: vue.PropType<typeof deepEqual>;
47
+ default: typeof deepEqual;
48
+ };
49
+ }, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
50
+ density: {
51
+ type: vue.PropType<"default" | "compact" | "comfortable" | null>;
52
+ default: string;
53
+ validator: (v: any) => boolean;
54
+ };
55
+ theme: StringConstructor;
56
+ color: StringConstructor;
57
+ disabled: BooleanConstructor;
58
+ error: BooleanConstructor;
59
+ id: StringConstructor;
60
+ inline: BooleanConstructor;
61
+ label: StringConstructor;
62
+ falseIcon: {
63
+ type: vue.PropType<(string & {}) | IconValue>;
64
+ default: (string & {}) | IconValue;
65
+ };
66
+ trueIcon: {
67
+ type: vue.PropType<(string & {}) | IconValue>;
68
+ default: (string & {}) | IconValue;
69
+ };
70
+ ripple: {
71
+ type: BooleanConstructor;
72
+ default: boolean;
73
+ };
74
+ multiple: {
75
+ type: vue.PropType<boolean | null>;
76
+ default: null;
77
+ };
78
+ name: StringConstructor;
79
+ readonly: BooleanConstructor;
80
+ trueValue: null;
81
+ falseValue: null;
82
+ modelValue: null;
83
+ type: StringConstructor;
84
+ value: null;
85
+ valueComparator: {
86
+ type: vue.PropType<typeof deepEqual>;
87
+ default: typeof deepEqual;
88
+ };
89
+ }>>, {
90
+ inline: boolean;
91
+ error: boolean;
92
+ disabled: boolean;
93
+ multiple: boolean | null;
94
+ readonly: boolean;
95
+ density: "default" | "compact" | "comfortable" | null;
96
+ ripple: boolean;
97
+ falseIcon: (string & {}) | IconValue;
98
+ trueIcon: (string & {}) | IconValue;
99
+ valueComparator: typeof deepEqual;
100
+ }>;
101
+ declare type VRadio = InstanceType<typeof VRadio>;
102
+
103
+ export { VRadio };
@@ -1,8 +1,7 @@
1
- .v-radio-group {
2
- grid-template-areas: "prepend label append" ". control ." "a messages b";
1
+ .v-radio-group > .v-input__control {
2
+ flex-direction: column;
3
3
  }
4
4
  .v-radio-group > .v-label {
5
- grid-area: label;
6
5
  margin-inline-start: 12px;
7
6
  }
8
7
  .v-radio-group > .v-label + .v-selection-control-group {
@@ -78,7 +78,8 @@ export const VRadioGroup = defineComponent({
78
78
  isReadonly
79
79
  } = _ref2;
80
80
  return _createVNode(_Fragment, null, [label && _createVNode(VLabel, {
81
- "for": id.value
81
+ "for": id.value,
82
+ "clickable": true
82
83
  }, {
83
84
  default: () => [label]
84
85
  }), _createVNode(VSelectionControlGroup, _mergeProps(controlProps, {
@@ -1 +1 @@
1
- {"version":3,"file":"VRadioGroup.mjs","names":["filterControlProps","makeSelectionControlProps","filterInputProps","makeVInputProps","VInput","VLabel","VSelectionControlGroup","IconValue","provideDefaults","useProxiedModel","computed","toRef","defineComponent","filterInputAttrs","getUid","useRender","VRadioGroup","name","inheritAttrs","props","height","type","Number","String","default","trueIcon","falseIcon","emits","val","setup","attrs","slots","uid","id","model","VRadio","color","density","inputAttrs","controlAttrs","inputProps","_1","controlProps","_2","label","for","value","isDisabled","isReadonly"],"sources":["../../../src/components/VRadioGroup/VRadioGroup.tsx"],"sourcesContent":["// Styles\nimport './VRadioGroup.sass'\n\n// Components\nimport { filterControlProps, makeSelectionControlProps } from '@/components/VSelectionControl/VSelectionControl'\nimport { filterInputProps, makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VLabel } from '@/components/VLabel'\nimport { VSelectionControlGroup } from '@/components/VSelectionControlGroup'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { provideDefaults } from '@/composables/defaults'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { defineComponent, filterInputAttrs, getUid, useRender } from '@/util'\n\nexport const VRadioGroup = defineComponent({\n name: 'VRadioGroup',\n\n inheritAttrs: false,\n\n props: {\n height: {\n type: [Number, String],\n default: 'auto',\n },\n\n ...makeVInputProps(),\n ...makeSelectionControlProps(),\n\n trueIcon: {\n type: IconValue,\n default: '$radioOn',\n },\n falseIcon: {\n type: IconValue,\n default: '$radioOff',\n },\n type: {\n type: String,\n default: 'radio',\n },\n },\n\n emits: {\n 'update:modelValue': (val: any) => true,\n },\n\n setup (props, { attrs, slots }) {\n const uid = getUid()\n const id = computed(() => props.id || `radio-group-${uid}`)\n const model = useProxiedModel(props, 'modelValue')\n\n provideDefaults({\n VRadio: {\n color: toRef(props, 'color'),\n density: toRef(props, 'density'),\n },\n })\n\n useRender(() => {\n const [inputAttrs, controlAttrs] = filterInputAttrs(attrs)\n const [inputProps, _1] = filterInputProps(props)\n const [controlProps, _2] = filterControlProps(props)\n const label = slots.label\n ? slots.label({\n label: props.label,\n props: { for: id.value },\n })\n : props.label\n\n return (\n <VInput\n class=\"v-radio-group\"\n { ...inputAttrs }\n { ...inputProps }\n v-model={ model.value }\n id={ id.value }\n >\n {{\n ...slots,\n default: ({\n id,\n isDisabled,\n isReadonly,\n }) => (\n <>\n { label && (\n <VLabel for={ id.value }>\n { label }\n </VLabel>\n ) }\n\n <VSelectionControlGroup\n { ...controlProps }\n id={ id.value }\n trueIcon={ props.trueIcon }\n falseIcon={ props.falseIcon }\n type={ props.type }\n disabled={ isDisabled.value }\n readonly={ isReadonly.value }\n { ...controlAttrs }\n v-model={ model.value }\n v-slots={ slots }\n />\n </>\n ),\n }}\n </VInput>\n )\n })\n\n return {}\n },\n})\n"],"mappings":"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"}
1
+ {"version":3,"file":"VRadioGroup.mjs","names":["filterControlProps","makeSelectionControlProps","filterInputProps","makeVInputProps","VInput","VLabel","VSelectionControlGroup","IconValue","provideDefaults","useProxiedModel","computed","toRef","defineComponent","filterInputAttrs","getUid","useRender","VRadioGroup","name","inheritAttrs","props","height","type","Number","String","default","trueIcon","falseIcon","emits","val","setup","attrs","slots","uid","id","model","VRadio","color","density","inputAttrs","controlAttrs","inputProps","_1","controlProps","_2","label","for","value","isDisabled","isReadonly"],"sources":["../../../src/components/VRadioGroup/VRadioGroup.tsx"],"sourcesContent":["// Styles\nimport './VRadioGroup.sass'\n\n// Components\nimport { filterControlProps, makeSelectionControlProps } from '@/components/VSelectionControl/VSelectionControl'\nimport { filterInputProps, makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VLabel } from '@/components/VLabel'\nimport { VSelectionControlGroup } from '@/components/VSelectionControlGroup'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { provideDefaults } from '@/composables/defaults'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { defineComponent, filterInputAttrs, getUid, useRender } from '@/util'\n\nexport const VRadioGroup = defineComponent({\n name: 'VRadioGroup',\n\n inheritAttrs: false,\n\n props: {\n height: {\n type: [Number, String],\n default: 'auto',\n },\n\n ...makeVInputProps(),\n ...makeSelectionControlProps(),\n\n trueIcon: {\n type: IconValue,\n default: '$radioOn',\n },\n falseIcon: {\n type: IconValue,\n default: '$radioOff',\n },\n type: {\n type: String,\n default: 'radio',\n },\n },\n\n emits: {\n 'update:modelValue': (val: any) => true,\n },\n\n setup (props, { attrs, slots }) {\n const uid = getUid()\n const id = computed(() => props.id || `radio-group-${uid}`)\n const model = useProxiedModel(props, 'modelValue')\n\n provideDefaults({\n VRadio: {\n color: toRef(props, 'color'),\n density: toRef(props, 'density'),\n },\n })\n\n useRender(() => {\n const [inputAttrs, controlAttrs] = filterInputAttrs(attrs)\n const [inputProps, _1] = filterInputProps(props)\n const [controlProps, _2] = filterControlProps(props)\n const label = slots.label\n ? slots.label({\n label: props.label,\n props: { for: id.value },\n })\n : props.label\n\n return (\n <VInput\n class=\"v-radio-group\"\n { ...inputAttrs }\n { ...inputProps }\n v-model={ model.value }\n id={ id.value }\n >\n {{\n ...slots,\n default: ({\n id,\n isDisabled,\n isReadonly,\n }) => (\n <>\n { label && (\n <VLabel for={ id.value } clickable>\n { label }\n </VLabel>\n ) }\n\n <VSelectionControlGroup\n { ...controlProps }\n id={ id.value }\n trueIcon={ props.trueIcon }\n falseIcon={ props.falseIcon }\n type={ props.type }\n disabled={ isDisabled.value }\n readonly={ isReadonly.value }\n { ...controlAttrs }\n v-model={ model.value }\n v-slots={ slots }\n />\n </>\n ),\n }}\n </VInput>\n )\n })\n\n return {}\n },\n})\n"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  @use './variables' as *
2
2
 
3
3
  .v-radio-group
4
- grid-template-areas: "prepend label append" ". control ." "a messages b"
4
+ > .v-input__control
5
+ flex-direction: column
5
6
 
6
7
  > .v-label
7
- grid-area: $radio-group-label-grid-area
8
8
  margin-inline-start: $radio-group-label-margin-inline-start
9
9
 
10
10
  + .v-selection-control-group
@@ -1,3 +1,2 @@
1
- $radio-group-label-grid-area: label !default;
2
1
  $radio-group-label-margin-inline-start: 12px !default;
3
2
  $radio-group-label-selection-group-margin-top: 16px !default;
@@ -0,0 +1,186 @@
1
+ import * as vue from 'vue';
2
+ import { PropType, JSXComponent } from 'vue';
3
+
4
+ declare function deepEqual(a: any, b: any): boolean;
5
+ declare type EventProp<T = (...args: any[]) => any> = T | T[];
6
+ declare const EventProp: PropType<EventProp<(...args: any[]) => any>>;
7
+
8
+ declare type ValidationResult = string | boolean;
9
+ declare type ValidationRule = ValidationResult | PromiseLike<ValidationResult> | ((value: any) => ValidationResult) | ((value: any) => PromiseLike<ValidationResult>);
10
+
11
+ declare type IconValue = string | JSXComponent;
12
+ declare const IconValue: PropType<IconValue>;
13
+
14
+ declare const VRadioGroup: vue.DefineComponent<{
15
+ trueIcon: {
16
+ type: vue.PropType<IconValue>;
17
+ default: string;
18
+ };
19
+ falseIcon: {
20
+ type: vue.PropType<IconValue>;
21
+ default: string;
22
+ };
23
+ type: {
24
+ type: StringConstructor;
25
+ default: string;
26
+ };
27
+ density: {
28
+ type: vue.PropType<"default" | "compact" | "comfortable" | null>;
29
+ default: string;
30
+ validator: (v: any) => boolean;
31
+ };
32
+ theme: StringConstructor;
33
+ color: StringConstructor;
34
+ disabled: BooleanConstructor;
35
+ error: BooleanConstructor;
36
+ id: StringConstructor;
37
+ inline: BooleanConstructor;
38
+ label: StringConstructor;
39
+ ripple: {
40
+ type: BooleanConstructor;
41
+ default: boolean;
42
+ };
43
+ multiple: {
44
+ type: vue.PropType<boolean | null>;
45
+ default: null;
46
+ };
47
+ name: StringConstructor;
48
+ readonly: BooleanConstructor;
49
+ trueValue: null;
50
+ falseValue: null;
51
+ modelValue: null;
52
+ value: null;
53
+ valueComparator: {
54
+ type: vue.PropType<typeof deepEqual>;
55
+ default: typeof deepEqual;
56
+ };
57
+ errorMessages: {
58
+ type: vue.PropType<string | string[]>;
59
+ default: () => never[];
60
+ };
61
+ maxErrors: {
62
+ type: (StringConstructor | NumberConstructor)[];
63
+ default: number;
64
+ };
65
+ rules: {
66
+ type: vue.PropType<ValidationRule[]>;
67
+ default: () => never[];
68
+ };
69
+ validationValue: null;
70
+ appendIcon: vue.PropType<IconValue>;
71
+ prependIcon: vue.PropType<IconValue>;
72
+ hideDetails: vue.PropType<boolean | "auto">;
73
+ messages: {
74
+ type: vue.PropType<string | string[]>;
75
+ default: () => never[];
76
+ };
77
+ direction: {
78
+ type: vue.PropType<"horizontal" | "vertical">;
79
+ default: string;
80
+ validator: (v: any) => boolean;
81
+ };
82
+ 'onClick:prepend': vue.PropType<EventProp<(...args: any[]) => any>>;
83
+ 'onClick:append': vue.PropType<EventProp<(...args: any[]) => any>>;
84
+ height: {
85
+ type: (StringConstructor | NumberConstructor)[];
86
+ default: string;
87
+ };
88
+ }, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
89
+ 'update:modelValue': (val: any) => true;
90
+ }, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
91
+ trueIcon: {
92
+ type: vue.PropType<IconValue>;
93
+ default: string;
94
+ };
95
+ falseIcon: {
96
+ type: vue.PropType<IconValue>;
97
+ default: string;
98
+ };
99
+ type: {
100
+ type: StringConstructor;
101
+ default: string;
102
+ };
103
+ density: {
104
+ type: vue.PropType<"default" | "compact" | "comfortable" | null>;
105
+ default: string;
106
+ validator: (v: any) => boolean;
107
+ };
108
+ theme: StringConstructor;
109
+ color: StringConstructor;
110
+ disabled: BooleanConstructor;
111
+ error: BooleanConstructor;
112
+ id: StringConstructor;
113
+ inline: BooleanConstructor;
114
+ label: StringConstructor;
115
+ ripple: {
116
+ type: BooleanConstructor;
117
+ default: boolean;
118
+ };
119
+ multiple: {
120
+ type: vue.PropType<boolean | null>;
121
+ default: null;
122
+ };
123
+ name: StringConstructor;
124
+ readonly: BooleanConstructor;
125
+ trueValue: null;
126
+ falseValue: null;
127
+ modelValue: null;
128
+ value: null;
129
+ valueComparator: {
130
+ type: vue.PropType<typeof deepEqual>;
131
+ default: typeof deepEqual;
132
+ };
133
+ errorMessages: {
134
+ type: vue.PropType<string | string[]>;
135
+ default: () => never[];
136
+ };
137
+ maxErrors: {
138
+ type: (StringConstructor | NumberConstructor)[];
139
+ default: number;
140
+ };
141
+ rules: {
142
+ type: vue.PropType<ValidationRule[]>;
143
+ default: () => never[];
144
+ };
145
+ validationValue: null;
146
+ appendIcon: vue.PropType<IconValue>;
147
+ prependIcon: vue.PropType<IconValue>;
148
+ hideDetails: vue.PropType<boolean | "auto">;
149
+ messages: {
150
+ type: vue.PropType<string | string[]>;
151
+ default: () => never[];
152
+ };
153
+ direction: {
154
+ type: vue.PropType<"horizontal" | "vertical">;
155
+ default: string;
156
+ validator: (v: any) => boolean;
157
+ };
158
+ 'onClick:prepend': vue.PropType<EventProp<(...args: any[]) => any>>;
159
+ 'onClick:append': vue.PropType<EventProp<(...args: any[]) => any>>;
160
+ height: {
161
+ type: (StringConstructor | NumberConstructor)[];
162
+ default: string;
163
+ };
164
+ }>> & {
165
+ "onUpdate:modelValue"?: ((val: any) => any) | undefined;
166
+ }, {
167
+ type: string;
168
+ inline: boolean;
169
+ error: boolean;
170
+ height: string | number;
171
+ direction: "horizontal" | "vertical";
172
+ disabled: boolean;
173
+ multiple: boolean | null;
174
+ readonly: boolean;
175
+ messages: string | string[];
176
+ density: "default" | "compact" | "comfortable" | null;
177
+ ripple: boolean;
178
+ errorMessages: string | string[];
179
+ maxErrors: string | number;
180
+ rules: ValidationRule[];
181
+ falseIcon: IconValue;
182
+ trueIcon: IconValue;
183
+ valueComparator: typeof deepEqual;
184
+ }>;
185
+
186
+ export { VRadioGroup };
@@ -1,9 +1,10 @@
1
- import { mergeProps as _mergeProps, createVNode as _createVNode } from "vue";
1
+ import { mergeProps as _mergeProps, createVNode as _createVNode, Fragment as _Fragment } from "vue";
2
2
  // Styles
3
3
  import "../VSlider/VSlider.css"; // Components
4
4
 
5
- import { getOffset, makeSliderProps, useSlider } from "../VSlider/slider.mjs";
6
5
  import { filterInputProps, makeVInputProps, VInput } from "../VInput/VInput.mjs";
6
+ import { getOffset, makeSliderProps, useSlider } from "../VSlider/slider.mjs";
7
+ import { VLabel } from "../VLabel/index.mjs";
7
8
  import { VSliderThumb } from "../VSlider/VSliderThumb.mjs";
8
9
  import { VSliderTrack } from "../VSlider/VSliderTrack.mjs"; // Composables
9
10
 
@@ -100,6 +101,7 @@ export const VRangeSlider = defineComponent({
100
101
  const trackStop = computed(() => position(model.value[1]));
101
102
  useRender(() => {
102
103
  const [inputProps, _] = filterInputProps(props);
104
+ const hasPrepend = !!(props.label || slots.label || slots.prepend);
103
105
  return _createVNode(VInput, _mergeProps({
104
106
  "class": ['v-slider', 'v-range-slider', {
105
107
  'v-slider--has-labels': !!slots['tick-label'] || hasLabels.value,
@@ -111,6 +113,14 @@ export const VRangeSlider = defineComponent({
111
113
  }, inputProps, {
112
114
  "focused": isFocused.value
113
115
  }), { ...slots,
116
+ prepend: hasPrepend ? slotProps => {
117
+ var _slots$label, _slots$prepend;
118
+
119
+ return _createVNode(_Fragment, null, [((_slots$label = slots.label) == null ? void 0 : _slots$label.call(slots, slotProps)) ?? props.label ? _createVNode(VLabel, {
120
+ "class": "v-slider__label",
121
+ "text": props.label
122
+ }, null) : undefined, (_slots$prepend = slots.prepend) == null ? void 0 : _slots$prepend.call(slots, slotProps)]);
123
+ } : undefined,
114
124
  default: _ref2 => {
115
125
  var _startThumbRef$value4, _stopThumbRef$value4;
116
126
 
@@ -1 +1 @@
1
- {"version":3,"file":"VRangeSlider.mjs","names":["getOffset","makeSliderProps","useSlider","filterInputProps","makeVInputProps","VInput","VSliderThumb","VSliderTrack","makeFocusProps","useFocus","useProxiedModel","computed","ref","defineComponent","useRender","VRangeSlider","name","props","strict","Boolean","modelValue","type","Array","default","emits","value","setup","slots","startThumbRef","stopThumbRef","inputRef","getActiveThumb","e","startOffset","$el","direction","stopOffset","a","Math","abs","b","activeThumbRef","hasLabels","max","min","mousePressed","onSliderMousedown","onSliderTouchstart","position","roundValue","trackContainerRef","handleSliderMouseUp","newValue","model","handleMouseMove","start","stop","focus","undefined","arr","length","map","isFocused","blur","trackStart","trackStop","inputProps","_","disabled","id","readonly","v","relatedTarget"],"sources":["../../../src/components/VRangeSlider/VRangeSlider.tsx"],"sourcesContent":["// Styles\nimport '../VSlider/VSlider.sass'\n\n// Components\nimport { getOffset, makeSliderProps, useSlider } from '@/components/VSlider/slider'\nimport { filterInputProps, makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VSliderThumb } from '../VSlider/VSliderThumb'\nimport { VSliderTrack } from '../VSlider/VSliderTrack'\n\n// Composables\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { defineComponent, useRender } from '@/util'\n\n// Types\nimport type { PropType, WritableComputedRef } from 'vue'\n\nexport const VRangeSlider = defineComponent({\n name: 'VRangeSlider',\n\n props: {\n ...makeFocusProps(),\n ...makeVInputProps(),\n ...makeSliderProps(),\n\n strict: Boolean,\n modelValue: {\n type: Array as PropType<number[]>,\n default: () => ([0, 0]),\n },\n },\n\n emits: {\n 'update:focused': (value: boolean) => true,\n 'update:modelValue': (value: [number, number]) => true,\n },\n\n setup (props, { slots }) {\n const startThumbRef = ref<VSliderThumb>()\n const stopThumbRef = ref<VSliderThumb>()\n const inputRef = ref<VInput>()\n\n function getActiveThumb (e: MouseEvent | TouchEvent) {\n if (!startThumbRef.value || !stopThumbRef.value) return\n\n const startOffset = getOffset(e, startThumbRef.value.$el, props.direction)\n const stopOffset = getOffset(e, stopThumbRef.value.$el, props.direction)\n\n const a = Math.abs(startOffset)\n const b = Math.abs(stopOffset)\n\n return (a < b || (a === b && startOffset < 0)) ? startThumbRef.value.$el : stopThumbRef.value.$el\n }\n\n const {\n activeThumbRef,\n hasLabels,\n max,\n min,\n mousePressed,\n onSliderMousedown,\n onSliderTouchstart,\n position,\n roundValue,\n trackContainerRef,\n } = useSlider({\n /* eslint-disable @typescript-eslint/no-use-before-define */\n props,\n handleSliderMouseUp: newValue => {\n model.value = activeThumbRef.value === startThumbRef.value?.$el ? [newValue, model.value[1]] : [model.value[0], newValue]\n },\n handleMouseMove: newValue => {\n const [start, stop] = model.value\n\n if (!props.strict && start === stop && start !== min.value) {\n activeThumbRef.value = newValue > start ? stopThumbRef.value?.$el : startThumbRef.value?.$el\n activeThumbRef.value?.focus()\n }\n\n if (activeThumbRef.value === startThumbRef.value?.$el) {\n model.value = [Math.min(newValue, stop), stop]\n } else {\n model.value = [start, Math.max(start, newValue)]\n }\n },\n getActiveThumb,\n /* eslint-enable @typescript-eslint/no-use-before-define */\n })\n\n const model = useProxiedModel(\n props,\n 'modelValue',\n undefined,\n arr => {\n if (!arr || !arr.length) return [0, 0]\n\n return arr.map(value => roundValue(value))\n },\n ) as WritableComputedRef<[number, number]>\n\n const { isFocused, focus, blur } = useFocus(props)\n const trackStart = computed(() => position(model.value[0]))\n const trackStop = computed(() => position(model.value[1]))\n\n useRender(() => {\n const [inputProps, _] = filterInputProps(props)\n\n return (\n <VInput\n class={[\n 'v-slider',\n 'v-range-slider',\n {\n 'v-slider--has-labels': !!slots['tick-label'] || hasLabels.value,\n 'v-slider--focused': isFocused.value,\n 'v-slider--pressed': mousePressed.value,\n 'v-slider--disabled': props.disabled,\n },\n ]}\n ref={ inputRef }\n { ...inputProps }\n focused={ isFocused.value }\n >\n {{\n ...slots,\n default: ({ id }) => (\n <div\n class=\"v-slider__container\"\n onMousedown={ onSliderMousedown }\n onTouchstartPassive={ onSliderTouchstart }\n >\n <input\n id={ `${id.value}_start` }\n name={ props.name || id.value }\n disabled={ props.disabled }\n readonly={ props.readonly }\n tabindex=\"-1\"\n value={ model.value[0] }\n />\n\n <input\n id={ `${id.value}_stop` }\n name={ props.name || id.value }\n disabled={ props.disabled }\n readonly={ props.readonly }\n tabindex=\"-1\"\n value={ model.value[1] }\n />\n\n <VSliderTrack\n ref={ trackContainerRef }\n start={ trackStart.value }\n stop={ trackStop.value }\n >\n {{ 'tick-label': slots['tick-label'] }}\n </VSliderTrack>\n\n <VSliderThumb\n ref={ startThumbRef }\n focused={ isFocused && activeThumbRef.value === startThumbRef.value?.$el }\n modelValue={ model.value[0] }\n onUpdate:modelValue={ v => (model.value = [v, model.value[1]]) }\n onFocus={ (e: FocusEvent) => {\n focus()\n activeThumbRef.value = startThumbRef.value?.$el\n\n // Make sure second thumb is focused if\n // the thumbs are on top of each other\n // and they are both at minimum value\n // but only if focused from outside.\n if (\n model.value[0] === model.value[1] &&\n model.value[1] === min.value &&\n e.relatedTarget !== stopThumbRef.value?.$el\n ) {\n startThumbRef.value?.$el.blur()\n stopThumbRef.value?.$el.focus()\n }\n } }\n onBlur={ () => {\n blur()\n activeThumbRef.value = undefined\n } }\n min={ min.value }\n max={ model.value[1] }\n position={ trackStart.value }\n >\n {{ 'thumb-label': slots['thumb-label'] }}\n </VSliderThumb>\n\n <VSliderThumb\n ref={ stopThumbRef }\n focused={ isFocused && activeThumbRef.value === stopThumbRef.value?.$el }\n modelValue={ model.value[1] }\n onUpdate:modelValue={ v => (model.value = [model.value[0], v]) }\n onFocus={ (e: FocusEvent) => {\n focus()\n activeThumbRef.value = stopThumbRef.value?.$el\n\n // Make sure first thumb is focused if\n // the thumbs are on top of each other\n // and they are both at maximum value\n // but only if focused from outside.\n if (\n model.value[0] === model.value[1] &&\n model.value[0] === max.value &&\n e.relatedTarget !== startThumbRef.value?.$el\n ) {\n stopThumbRef.value?.$el.blur()\n startThumbRef.value?.$el.focus()\n }\n } }\n onBlur={ () => {\n blur()\n activeThumbRef.value = undefined\n } }\n min={ model.value[0] }\n max={ max.value }\n position={ trackStop.value }\n >\n {{ 'thumb-label': slots['thumb-label'] }}\n </VSliderThumb>\n </div>\n ),\n }}\n </VInput>\n )\n })\n\n return {}\n },\n})\n\nexport type VRangeSlider = InstanceType<typeof VRangeSlider>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VRangeSlider.mjs","names":["filterInputProps","makeVInputProps","VInput","getOffset","makeSliderProps","useSlider","VLabel","VSliderThumb","VSliderTrack","makeFocusProps","useFocus","useProxiedModel","computed","ref","defineComponent","useRender","VRangeSlider","name","props","strict","Boolean","modelValue","type","Array","default","emits","value","setup","slots","startThumbRef","stopThumbRef","inputRef","getActiveThumb","e","startOffset","$el","direction","stopOffset","a","Math","abs","b","activeThumbRef","hasLabels","max","min","mousePressed","onSliderMousedown","onSliderTouchstart","position","roundValue","trackContainerRef","handleSliderMouseUp","newValue","model","handleMouseMove","start","stop","focus","undefined","arr","length","map","isFocused","blur","trackStart","trackStop","inputProps","_","hasPrepend","label","prepend","disabled","slotProps","id","readonly","v","relatedTarget"],"sources":["../../../src/components/VRangeSlider/VRangeSlider.tsx"],"sourcesContent":["// Styles\nimport '../VSlider/VSlider.sass'\n\n// Components\nimport { filterInputProps, makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { getOffset, makeSliderProps, useSlider } from '@/components/VSlider/slider'\nimport { VLabel } from '@/components/VLabel'\nimport { VSliderThumb } from '@/components/VSlider/VSliderThumb'\nimport { VSliderTrack } from '@/components/VSlider/VSliderTrack'\n\n// Composables\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { defineComponent, useRender } from '@/util'\n\n// Types\nimport type { PropType, WritableComputedRef } from 'vue'\n\nexport const VRangeSlider = defineComponent({\n name: 'VRangeSlider',\n\n props: {\n ...makeFocusProps(),\n ...makeVInputProps(),\n ...makeSliderProps(),\n\n strict: Boolean,\n modelValue: {\n type: Array as PropType<number[]>,\n default: () => ([0, 0]),\n },\n },\n\n emits: {\n 'update:focused': (value: boolean) => true,\n 'update:modelValue': (value: [number, number]) => true,\n },\n\n setup (props, { slots }) {\n const startThumbRef = ref<VSliderThumb>()\n const stopThumbRef = ref<VSliderThumb>()\n const inputRef = ref<VInput>()\n\n function getActiveThumb (e: MouseEvent | TouchEvent) {\n if (!startThumbRef.value || !stopThumbRef.value) return\n\n const startOffset = getOffset(e, startThumbRef.value.$el, props.direction)\n const stopOffset = getOffset(e, stopThumbRef.value.$el, props.direction)\n\n const a = Math.abs(startOffset)\n const b = Math.abs(stopOffset)\n\n return (a < b || (a === b && startOffset < 0)) ? startThumbRef.value.$el : stopThumbRef.value.$el\n }\n\n const {\n activeThumbRef,\n hasLabels,\n max,\n min,\n mousePressed,\n onSliderMousedown,\n onSliderTouchstart,\n position,\n roundValue,\n trackContainerRef,\n } = useSlider({\n /* eslint-disable @typescript-eslint/no-use-before-define */\n props,\n handleSliderMouseUp: newValue => {\n model.value = activeThumbRef.value === startThumbRef.value?.$el ? [newValue, model.value[1]] : [model.value[0], newValue]\n },\n handleMouseMove: newValue => {\n const [start, stop] = model.value\n\n if (!props.strict && start === stop && start !== min.value) {\n activeThumbRef.value = newValue > start ? stopThumbRef.value?.$el : startThumbRef.value?.$el\n activeThumbRef.value?.focus()\n }\n\n if (activeThumbRef.value === startThumbRef.value?.$el) {\n model.value = [Math.min(newValue, stop), stop]\n } else {\n model.value = [start, Math.max(start, newValue)]\n }\n },\n getActiveThumb,\n /* eslint-enable @typescript-eslint/no-use-before-define */\n })\n\n const model = useProxiedModel(\n props,\n 'modelValue',\n undefined,\n arr => {\n if (!arr || !arr.length) return [0, 0]\n\n return arr.map(value => roundValue(value))\n },\n ) as WritableComputedRef<[number, number]> & { readonly externalValue: number[] }\n\n const { isFocused, focus, blur } = useFocus(props)\n const trackStart = computed(() => position(model.value[0]))\n const trackStop = computed(() => position(model.value[1]))\n\n useRender(() => {\n const [inputProps, _] = filterInputProps(props)\n const hasPrepend = !!(props.label || slots.label || slots.prepend)\n\n return (\n <VInput\n class={[\n 'v-slider',\n 'v-range-slider',\n {\n 'v-slider--has-labels': !!slots['tick-label'] || hasLabels.value,\n 'v-slider--focused': isFocused.value,\n 'v-slider--pressed': mousePressed.value,\n 'v-slider--disabled': props.disabled,\n },\n ]}\n ref={ inputRef }\n { ...inputProps }\n focused={ isFocused.value }\n >\n {{\n ...slots,\n prepend: hasPrepend ? slotProps => (\n <>\n { slots.label?.(slotProps) ?? props.label\n ? (\n <VLabel\n class=\"v-slider__label\"\n text={ props.label }\n />\n ) : undefined\n }\n\n { slots.prepend?.(slotProps) }\n </>\n ) : undefined,\n default: ({ id }) => (\n <div\n class=\"v-slider__container\"\n onMousedown={ onSliderMousedown }\n onTouchstartPassive={ onSliderTouchstart }\n >\n <input\n id={ `${id.value}_start` }\n name={ props.name || id.value }\n disabled={ props.disabled }\n readonly={ props.readonly }\n tabindex=\"-1\"\n value={ model.value[0] }\n />\n\n <input\n id={ `${id.value}_stop` }\n name={ props.name || id.value }\n disabled={ props.disabled }\n readonly={ props.readonly }\n tabindex=\"-1\"\n value={ model.value[1] }\n />\n\n <VSliderTrack\n ref={ trackContainerRef }\n start={ trackStart.value }\n stop={ trackStop.value }\n >\n {{ 'tick-label': slots['tick-label'] }}\n </VSliderTrack>\n\n <VSliderThumb\n ref={ startThumbRef }\n focused={ isFocused && activeThumbRef.value === startThumbRef.value?.$el }\n modelValue={ model.value[0] }\n onUpdate:modelValue={ v => (model.value = [v, model.value[1]]) }\n onFocus={ (e: FocusEvent) => {\n focus()\n activeThumbRef.value = startThumbRef.value?.$el\n\n // Make sure second thumb is focused if\n // the thumbs are on top of each other\n // and they are both at minimum value\n // but only if focused from outside.\n if (\n model.value[0] === model.value[1] &&\n model.value[1] === min.value &&\n e.relatedTarget !== stopThumbRef.value?.$el\n ) {\n startThumbRef.value?.$el.blur()\n stopThumbRef.value?.$el.focus()\n }\n } }\n onBlur={ () => {\n blur()\n activeThumbRef.value = undefined\n } }\n min={ min.value }\n max={ model.value[1] }\n position={ trackStart.value }\n >\n {{ 'thumb-label': slots['thumb-label'] }}\n </VSliderThumb>\n\n <VSliderThumb\n ref={ stopThumbRef }\n focused={ isFocused && activeThumbRef.value === stopThumbRef.value?.$el }\n modelValue={ model.value[1] }\n onUpdate:modelValue={ v => (model.value = [model.value[0], v]) }\n onFocus={ (e: FocusEvent) => {\n focus()\n activeThumbRef.value = stopThumbRef.value?.$el\n\n // Make sure first thumb is focused if\n // the thumbs are on top of each other\n // and they are both at maximum value\n // but only if focused from outside.\n if (\n model.value[0] === model.value[1] &&\n model.value[0] === max.value &&\n e.relatedTarget !== startThumbRef.value?.$el\n ) {\n stopThumbRef.value?.$el.blur()\n startThumbRef.value?.$el.focus()\n }\n } }\n onBlur={ () => {\n blur()\n activeThumbRef.value = undefined\n } }\n min={ model.value[0] }\n max={ max.value }\n position={ trackStop.value }\n >\n {{ 'thumb-label': slots['thumb-label'] }}\n </VSliderThumb>\n </div>\n ),\n }}\n </VInput>\n )\n })\n\n return {}\n },\n})\n\nexport type VRangeSlider = InstanceType<typeof VRangeSlider>\n"],"mappings":";AAAA;AACA,gC,CAEA;;SACSA,gB,EAAkBC,e,EAAiBC,M;SACnCC,S,EAAWC,e,EAAiBC,S;SAC5BC,M;SACAC,Y;SACAC,Y,uCAET;;SACSC,c,EAAgBC,Q;SAChBC,e,8CAET;;AACA,SAASC,QAAT,EAAmBC,GAAnB,QAA8B,KAA9B;SACSC,e,EAAiBC,S,gCAE1B;;AAGA,OAAO,MAAMC,YAAY,GAAGF,eAAe,CAAC;EAC1CG,IAAI,EAAE,cADoC;EAG1CC,KAAK,EAAE,EACL,GAAGT,cAAc,EADZ;IAEL,GAAGR,eAAe,EAFb;IAGL,GAAGG,eAAe,EAHb;IAKLe,MAAM,EAAEC,OALH;IAMLC,UAAU,EAAE;MACVC,IAAI,EAAEC,KADI;MAEVC,OAAO,EAAE,MAAO,CAAC,CAAD,EAAI,CAAJ;IAFN;EANP,CAHmC;EAe1CC,KAAK,EAAE;IACL,kBAAmBC,KAAD,IAAoB,IADjC;IAEL,qBAAsBA,KAAD,IAA6B;EAF7C,CAfmC;;EAoB1CC,KAAK,CAAET,KAAF,QAAoB;IAAA,IAAX;MAAEU;IAAF,CAAW;IACvB,MAAMC,aAAa,GAAGhB,GAAG,EAAzB;IACA,MAAMiB,YAAY,GAAGjB,GAAG,EAAxB;IACA,MAAMkB,QAAQ,GAAGlB,GAAG,EAApB;;IAEA,SAASmB,cAAT,CAAyBC,CAAzB,EAAqD;MACnD,IAAI,CAACJ,aAAa,CAACH,KAAf,IAAwB,CAACI,YAAY,CAACJ,KAA1C,EAAiD;MAEjD,MAAMQ,WAAW,GAAG/B,SAAS,CAAC8B,CAAD,EAAIJ,aAAa,CAACH,KAAd,CAAoBS,GAAxB,EAA6BjB,KAAK,CAACkB,SAAnC,CAA7B;MACA,MAAMC,UAAU,GAAGlC,SAAS,CAAC8B,CAAD,EAAIH,YAAY,CAACJ,KAAb,CAAmBS,GAAvB,EAA4BjB,KAAK,CAACkB,SAAlC,CAA5B;MAEA,MAAME,CAAC,GAAGC,IAAI,CAACC,GAAL,CAASN,WAAT,CAAV;MACA,MAAMO,CAAC,GAAGF,IAAI,CAACC,GAAL,CAASH,UAAT,CAAV;MAEA,OAAQC,CAAC,GAAGG,CAAJ,IAAUH,CAAC,KAAKG,CAAN,IAAWP,WAAW,GAAG,CAApC,GAA0CL,aAAa,CAACH,KAAd,CAAoBS,GAA9D,GAAoEL,YAAY,CAACJ,KAAb,CAAmBS,GAA9F;IACD;;IAED,MAAM;MACJO,cADI;MAEJC,SAFI;MAGJC,GAHI;MAIJC,GAJI;MAKJC,YALI;MAMJC,iBANI;MAOJC,kBAPI;MAQJC,QARI;MASJC,UATI;MAUJC;IAVI,IAWF9C,SAAS,CAAC;MACZ;MACAa,KAFY;MAGZkC,mBAAmB,EAAEC,QAAQ,IAAI;QAAA;;QAC/BC,KAAK,CAAC5B,KAAN,GAAcgB,cAAc,CAAChB,KAAf,8BAAyBG,aAAa,CAACH,KAAvC,qBAAyB,qBAAqBS,GAA9C,IAAoD,CAACkB,QAAD,EAAWC,KAAK,CAAC5B,KAAN,CAAY,CAAZ,CAAX,CAApD,GAAiF,CAAC4B,KAAK,CAAC5B,KAAN,CAAY,CAAZ,CAAD,EAAiB2B,QAAjB,CAA/F;MACD,CALW;MAMZE,eAAe,EAAEF,QAAQ,IAAI;QAAA;;QAC3B,MAAM,CAACG,KAAD,EAAQC,IAAR,IAAgBH,KAAK,CAAC5B,KAA5B;;QAEA,IAAI,CAACR,KAAK,CAACC,MAAP,IAAiBqC,KAAK,KAAKC,IAA3B,IAAmCD,KAAK,KAAKX,GAAG,CAACnB,KAArD,EAA4D;UAAA;;UAC1DgB,cAAc,CAAChB,KAAf,GAAuB2B,QAAQ,GAAGG,KAAX,0BAAmB1B,YAAY,CAACJ,KAAhC,qBAAmB,oBAAoBS,GAAvC,4BAA6CN,aAAa,CAACH,KAA3D,qBAA6C,sBAAqBS,GAAzF;UACA,yBAAAO,cAAc,CAAChB,KAAf,2CAAsBgC,KAAtB;QACD;;QAED,IAAIhB,cAAc,CAAChB,KAAf,+BAAyBG,aAAa,CAACH,KAAvC,qBAAyB,sBAAqBS,GAA9C,CAAJ,EAAuD;UACrDmB,KAAK,CAAC5B,KAAN,GAAc,CAACa,IAAI,CAACM,GAAL,CAASQ,QAAT,EAAmBI,IAAnB,CAAD,EAA2BA,IAA3B,CAAd;QACD,CAFD,MAEO;UACLH,KAAK,CAAC5B,KAAN,GAAc,CAAC8B,KAAD,EAAQjB,IAAI,CAACK,GAAL,CAASY,KAAT,EAAgBH,QAAhB,CAAR,CAAd;QACD;MACF,CAnBW;MAoBZrB;MACA;;IArBY,CAAD,CAXb;IAmCA,MAAMsB,KAAK,GAAG3C,eAAe,CAC3BO,KAD2B,EAE3B,YAF2B,EAG3ByC,SAH2B,EAI3BC,GAAG,IAAI;MACL,IAAI,CAACA,GAAD,IAAQ,CAACA,GAAG,CAACC,MAAjB,EAAyB,OAAO,CAAC,CAAD,EAAI,CAAJ,CAAP;MAEzB,OAAOD,GAAG,CAACE,GAAJ,CAAQpC,KAAK,IAAIwB,UAAU,CAACxB,KAAD,CAA3B,CAAP;IACD,CAR0B,CAA7B;IAWA,MAAM;MAAEqC,SAAF;MAAaL,KAAb;MAAoBM;IAApB,IAA6BtD,QAAQ,CAACQ,KAAD,CAA3C;IACA,MAAM+C,UAAU,GAAGrD,QAAQ,CAAC,MAAMqC,QAAQ,CAACK,KAAK,CAAC5B,KAAN,CAAY,CAAZ,CAAD,CAAf,CAA3B;IACA,MAAMwC,SAAS,GAAGtD,QAAQ,CAAC,MAAMqC,QAAQ,CAACK,KAAK,CAAC5B,KAAN,CAAY,CAAZ,CAAD,CAAf,CAA1B;IAEAX,SAAS,CAAC,MAAM;MACd,MAAM,CAACoD,UAAD,EAAaC,CAAb,IAAkBpE,gBAAgB,CAACkB,KAAD,CAAxC;MACA,MAAMmD,UAAU,GAAG,CAAC,EAAEnD,KAAK,CAACoD,KAAN,IAAe1C,KAAK,CAAC0C,KAArB,IAA8B1C,KAAK,CAAC2C,OAAtC,CAApB;MAEA;QAAA,SAEW,CACL,UADK,EAEL,gBAFK,EAGL;UACE,wBAAwB,CAAC,CAAC3C,KAAK,CAAC,YAAD,CAAP,IAAyBe,SAAS,CAACjB,KAD7D;UAEE,qBAAqBqC,SAAS,CAACrC,KAFjC;UAGE,qBAAqBoB,YAAY,CAACpB,KAHpC;UAIE,sBAAsBR,KAAK,CAACsD;QAJ9B,CAHK,CAFX;QAAA,OAYUzC;MAZV,GAaSoC,UAbT;QAAA,WAccJ,SAAS,CAACrC;MAdxB,MAiBM,GAAGE,KAjBT;QAkBM2C,OAAO,EAAEF,UAAU,GAAGI,SAAS;UAAA;;UAAA,sCAEzB,iBAAA7C,KAAK,CAAC0C,KAAN,uCAAA1C,KAAK,EAAS6C,SAAT,CAAL,KAA4BvD,KAAK,CAACoD,KAAlC;YAAA,SAGU,iBAHV;YAAA,QAIWpD,KAAK,CAACoD;UAJjB,WAMIX,SARqB,oBAWzB/B,KAAK,CAAC2C,OAXmB,qBAWzB,oBAAA3C,KAAK,EAAW6C,SAAX,CAXoB;QAAA,CAAZ,GAafd,SA/BV;QAgCMnC,OAAO,EAAE;UAAA;;UAAA,IAAC;YAAEkD;UAAF,CAAD;UAAA;YAAA,SAEC,qBAFD;YAAA,eAGS3B,iBAHT;YAAA,uBAIiBC;UAJjB;YAAA,MAOG,GAAE0B,EAAE,CAAChD,KAAM,QAPd;YAAA,QAQIR,KAAK,CAACD,IAAN,IAAcyD,EAAE,CAAChD,KARrB;YAAA,YASQR,KAAK,CAACsD,QATd;YAAA,YAUQtD,KAAK,CAACyD,QAVd;YAAA,YAWM,IAXN;YAAA,SAYKrB,KAAK,CAAC5B,KAAN,CAAY,CAAZ;UAZL;YAAA,MAgBG,GAAEgD,EAAE,CAAChD,KAAM,OAhBd;YAAA,QAiBIR,KAAK,CAACD,IAAN,IAAcyD,EAAE,CAAChD,KAjBrB;YAAA,YAkBQR,KAAK,CAACsD,QAlBd;YAAA,YAmBQtD,KAAK,CAACyD,QAnBd;YAAA,YAoBM,IApBN;YAAA,SAqBKrB,KAAK,CAAC5B,KAAN,CAAY,CAAZ;UArBL;YAAA,OAyBGyB,iBAzBH;YAAA,SA0BKc,UAAU,CAACvC,KA1BhB;YAAA,QA2BIwC,SAAS,CAACxC;UA3Bd;YA6BA,cAAcE,KAAK,CAAC,YAAD;UA7BnB;YAAA,OAiCGC,aAjCH;YAAA,WAkCOkC,SAAS,IAAIrB,cAAc,CAAChB,KAAf,+BAAyBG,aAAa,CAACH,KAAvC,qBAAyB,sBAAqBS,GAA9C,CAlCpB;YAAA,cAmCUmB,KAAK,CAAC5B,KAAN,CAAY,CAAZ,CAnCV;YAAA,uBAoCmBkD,CAAC,IAAKtB,KAAK,CAAC5B,KAAN,GAAc,CAACkD,CAAD,EAAItB,KAAK,CAAC5B,KAAN,CAAY,CAAZ,CAAJ,CApCvC;YAAA,WAqCQO,CAAD,IAAmB;cAAA;;cAC3ByB,KAAK;cACLhB,cAAc,CAAChB,KAAf,4BAAuBG,aAAa,CAACH,KAArC,qBAAuB,sBAAqBS,GAA5C,CAF2B,CAI3B;cACA;cACA;cACA;;cACA,IACEmB,KAAK,CAAC5B,KAAN,CAAY,CAAZ,MAAmB4B,KAAK,CAAC5B,KAAN,CAAY,CAAZ,CAAnB,IACA4B,KAAK,CAAC5B,KAAN,CAAY,CAAZ,MAAmBmB,GAAG,CAACnB,KADvB,IAEAO,CAAC,CAAC4C,aAAF,8BAAoB/C,YAAY,CAACJ,KAAjC,qBAAoB,qBAAoBS,GAAxC,CAHF,EAIE;gBAAA;;gBACA,yBAAAN,aAAa,CAACH,KAAd,2CAAqBS,GAArB,CAAyB6B,IAAzB;gBACA,wBAAAlC,YAAY,CAACJ,KAAb,0CAAoBS,GAApB,CAAwBuB,KAAxB;cACD;YACF,CArDE;YAAA,UAsDM,MAAM;cACbM,IAAI;cACJtB,cAAc,CAAChB,KAAf,GAAuBiC,SAAvB;YACD,CAzDE;YAAA,OA0DGd,GAAG,CAACnB,KA1DP;YAAA,OA2DG4B,KAAK,CAAC5B,KAAN,CAAY,CAAZ,CA3DH;YAAA,YA4DQuC,UAAU,CAACvC;UA5DnB;YA8DA,eAAeE,KAAK,CAAC,aAAD;UA9DpB;YAAA,OAkEGE,YAlEH;YAAA,WAmEOiC,SAAS,IAAIrB,cAAc,CAAChB,KAAf,8BAAyBI,YAAY,CAACJ,KAAtC,qBAAyB,qBAAoBS,GAA7C,CAnEpB;YAAA,cAoEUmB,KAAK,CAAC5B,KAAN,CAAY,CAAZ,CApEV;YAAA,uBAqEmBkD,CAAC,IAAKtB,KAAK,CAAC5B,KAAN,GAAc,CAAC4B,KAAK,CAAC5B,KAAN,CAAY,CAAZ,CAAD,EAAiBkD,CAAjB,CArEvC;YAAA,WAsEQ3C,CAAD,IAAmB;cAAA;;cAC3ByB,KAAK;cACLhB,cAAc,CAAChB,KAAf,2BAAuBI,YAAY,CAACJ,KAApC,qBAAuB,qBAAoBS,GAA3C,CAF2B,CAI3B;cACA;cACA;cACA;;cACA,IACEmB,KAAK,CAAC5B,KAAN,CAAY,CAAZ,MAAmB4B,KAAK,CAAC5B,KAAN,CAAY,CAAZ,CAAnB,IACA4B,KAAK,CAAC5B,KAAN,CAAY,CAAZ,MAAmBkB,GAAG,CAAClB,KADvB,IAEAO,CAAC,CAAC4C,aAAF,+BAAoBhD,aAAa,CAACH,KAAlC,qBAAoB,sBAAqBS,GAAzC,CAHF,EAIE;gBAAA;;gBACA,wBAAAL,YAAY,CAACJ,KAAb,0CAAoBS,GAApB,CAAwB6B,IAAxB;gBACA,yBAAAnC,aAAa,CAACH,KAAd,2CAAqBS,GAArB,CAAyBuB,KAAzB;cACD;YACF,CAtFE;YAAA,UAuFM,MAAM;cACbM,IAAI;cACJtB,cAAc,CAAChB,KAAf,GAAuBiC,SAAvB;YACD,CA1FE;YAAA,OA2FGL,KAAK,CAAC5B,KAAN,CAAY,CAAZ,CA3FH;YAAA,OA4FGkB,GAAG,CAAClB,KA5FP;YAAA,YA6FQwC,SAAS,CAACxC;UA7FlB;YA+FA,eAAeE,KAAK,CAAC,aAAD;UA/FpB;QAAA;MAhCf;IAsID,CA1IQ,CAAT;IA4IA,OAAO,EAAP;EACD;;AApOyC,CAAD,CAApC"}