vuetify 3.0.0-beta.9 → 3.0.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 (958) hide show
  1. package/_settings.scss +2 -0
  2. package/_styles.scss +1 -0
  3. package/_tools.scss +1 -0
  4. package/dist/json/attributes.json +3756 -2480
  5. package/dist/json/importMap.json +26 -30
  6. package/dist/json/tags.json +484 -56
  7. package/dist/json/web-types.json +14630 -10836
  8. package/dist/vuetify.css +1348 -2099
  9. package/dist/vuetify.d.ts +20046 -10128
  10. package/dist/vuetify.esm.js +2267 -2923
  11. package/dist/vuetify.esm.js.map +1 -1
  12. package/dist/vuetify.js +2242 -2899
  13. package/dist/vuetify.js.map +1 -1
  14. package/dist/vuetify.min.css +3 -3
  15. package/dist/vuetify.min.js +1226 -1239
  16. package/dist/vuetify.min.js.map +1 -1
  17. package/lib/blueprints/index.d.ts +163 -0
  18. package/lib/blueprints/index.mjs.map +1 -1
  19. package/lib/blueprints/md1.d.ts +159 -0
  20. package/lib/blueprints/md1.mjs +3 -1
  21. package/lib/blueprints/md1.mjs.map +1 -1
  22. package/lib/blueprints/md2.d.ts +159 -0
  23. package/lib/blueprints/md2.mjs +3 -1
  24. package/lib/blueprints/md2.mjs.map +1 -1
  25. package/lib/blueprints/md3.d.ts +159 -0
  26. package/lib/blueprints/md3.mjs +2 -2
  27. package/lib/blueprints/md3.mjs.map +1 -1
  28. package/lib/components/VAlert/VAlert.css +2 -3
  29. package/lib/components/VAlert/VAlert.mjs +10 -23
  30. package/lib/components/VAlert/VAlert.mjs.map +1 -1
  31. package/lib/components/VAlert/VAlertTitle.mjs.map +1 -1
  32. package/lib/components/VAlert/index.d.ts +187 -0
  33. package/lib/components/VAlert/index.mjs.map +1 -1
  34. package/lib/components/VApp/VApp.css +0 -11
  35. package/lib/components/VApp/VApp.mjs +5 -7
  36. package/lib/components/VApp/VApp.mjs.map +1 -1
  37. package/lib/components/VApp/VApp.sass +0 -9
  38. package/lib/components/VApp/index.d.ts +85 -0
  39. package/lib/components/VApp/index.mjs.map +1 -1
  40. package/lib/components/VAppBar/VAppBar.css +4 -1
  41. package/lib/components/VAppBar/VAppBar.mjs +7 -11
  42. package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
  43. package/lib/components/VAppBar/VAppBar.sass +3 -0
  44. package/lib/components/VAppBar/VAppBarNavIcon.mjs +0 -4
  45. package/lib/components/VAppBar/VAppBarNavIcon.mjs.map +1 -1
  46. package/lib/components/VAppBar/VAppBarTitle.mjs +2 -4
  47. package/lib/components/VAppBar/VAppBarTitle.mjs.map +1 -1
  48. package/lib/components/VAppBar/index.d.ts +160 -0
  49. package/lib/components/VAppBar/index.mjs.map +1 -1
  50. package/lib/components/VAutocomplete/VAutocomplete.css +19 -2
  51. package/lib/components/VAutocomplete/VAutocomplete.mjs +50 -47
  52. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  53. package/lib/components/VAutocomplete/VAutocomplete.sass +11 -1
  54. package/lib/components/VAutocomplete/_variables.scss +1 -0
  55. package/lib/components/VAutocomplete/index.d.ts +1520 -0
  56. package/lib/components/VAutocomplete/index.mjs.map +1 -1
  57. package/lib/components/VAvatar/VAvatar.css +45 -2
  58. package/lib/components/VAvatar/VAvatar.mjs +19 -19
  59. package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
  60. package/lib/components/VAvatar/VAvatar.sass +6 -1
  61. package/lib/components/VAvatar/_variables.scss +9 -4
  62. package/lib/components/VAvatar/index.d.ts +82 -0
  63. package/lib/components/VAvatar/index.mjs.map +1 -1
  64. package/lib/components/VBadge/VBadge.mjs +3 -9
  65. package/lib/components/VBadge/VBadge.mjs.map +1 -1
  66. package/lib/components/VBadge/index.d.ts +123 -0
  67. package/lib/components/VBadge/index.mjs.map +1 -1
  68. package/lib/components/VBanner/VBanner.css +1 -1
  69. package/lib/components/VBanner/VBanner.mjs +5 -7
  70. package/lib/components/VBanner/VBanner.mjs.map +1 -1
  71. package/lib/components/VBanner/VBannerActions.mjs +0 -4
  72. package/lib/components/VBanner/VBannerActions.mjs.map +1 -1
  73. package/lib/components/VBanner/VBannerText.mjs.map +1 -1
  74. package/lib/components/VBanner/index.d.ts +126 -0
  75. package/lib/components/VBanner/index.mjs.map +1 -1
  76. package/lib/components/VBottomNavigation/VBottomNavigation.css +1 -1
  77. package/lib/components/VBottomNavigation/VBottomNavigation.mjs +3 -6
  78. package/lib/components/VBottomNavigation/VBottomNavigation.mjs.map +1 -1
  79. package/lib/components/VBottomNavigation/index.d.ts +145 -0
  80. package/lib/components/VBottomNavigation/index.mjs.map +1 -1
  81. package/lib/components/VBottomSheet/VBottomSheet.mjs +5 -5
  82. package/lib/components/VBottomSheet/VBottomSheet.mjs.map +1 -1
  83. package/lib/components/VBottomSheet/index.mjs.map +1 -1
  84. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +8 -12
  85. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
  86. package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.mjs.map +1 -1
  87. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs +4 -9
  88. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs.map +1 -1
  89. package/lib/components/VBreadcrumbs/index.d.ts +311 -0
  90. package/lib/components/VBreadcrumbs/index.mjs.map +1 -1
  91. package/lib/components/VBtn/VBtn.css +14 -10
  92. package/lib/components/VBtn/VBtn.mjs +22 -20
  93. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  94. package/lib/components/VBtn/index.d.ts +212 -0
  95. package/lib/components/VBtn/index.mjs.map +1 -1
  96. package/lib/components/VBtnGroup/VBtnGroup.css +1 -1
  97. package/lib/components/VBtnGroup/VBtnGroup.mjs +2 -4
  98. package/lib/components/VBtnGroup/VBtnGroup.mjs.map +1 -1
  99. package/lib/components/VBtnGroup/index.d.ts +68 -0
  100. package/lib/components/VBtnGroup/index.mjs.map +1 -1
  101. package/lib/components/VBtnToggle/VBtnToggle.mjs +3 -10
  102. package/lib/components/VBtnToggle/VBtnToggle.mjs.map +1 -1
  103. package/lib/components/VBtnToggle/index.d.ts +170 -0
  104. package/lib/components/VBtnToggle/index.mjs.map +1 -1
  105. package/lib/components/VCalendar/VCalendar.mjs +6 -67
  106. package/lib/components/VCalendar/VCalendar.mjs.map +1 -1
  107. package/lib/components/VCalendar/VCalendarCategory.mjs +7 -18
  108. package/lib/components/VCalendar/VCalendarCategory.mjs.map +1 -1
  109. package/lib/components/VCalendar/VCalendarDaily.mjs +3 -34
  110. package/lib/components/VCalendar/VCalendarDaily.mjs.map +1 -1
  111. package/lib/components/VCalendar/VCalendarMonthly.mjs +3 -7
  112. package/lib/components/VCalendar/VCalendarMonthly.mjs.map +1 -1
  113. package/lib/components/VCalendar/VCalendarWeekly.mjs +3 -32
  114. package/lib/components/VCalendar/VCalendarWeekly.mjs.map +1 -1
  115. package/lib/components/VCalendar/index.mjs.map +1 -1
  116. package/lib/components/VCalendar/mixins/calendar-base.mjs +1 -19
  117. package/lib/components/VCalendar/mixins/calendar-base.mjs.map +1 -1
  118. package/lib/components/VCalendar/mixins/calendar-with-events.mjs +16 -84
  119. package/lib/components/VCalendar/mixins/calendar-with-events.mjs.map +1 -1
  120. package/lib/components/VCalendar/mixins/calendar-with-intervals.mjs +0 -30
  121. package/lib/components/VCalendar/mixins/calendar-with-intervals.mjs.map +1 -1
  122. package/lib/components/VCalendar/mixins/mouse.mjs +7 -17
  123. package/lib/components/VCalendar/mixins/mouse.mjs.map +1 -1
  124. package/lib/components/VCalendar/mixins/times.mjs +1 -9
  125. package/lib/components/VCalendar/mixins/times.mjs.map +1 -1
  126. package/lib/components/VCalendar/modes/column.mjs +0 -3
  127. package/lib/components/VCalendar/modes/column.mjs.map +1 -1
  128. package/lib/components/VCalendar/modes/common.mjs +0 -14
  129. package/lib/components/VCalendar/modes/common.mjs.map +1 -1
  130. package/lib/components/VCalendar/modes/index.mjs +0 -1
  131. package/lib/components/VCalendar/modes/index.mjs.map +1 -1
  132. package/lib/components/VCalendar/modes/stack.mjs +3 -45
  133. package/lib/components/VCalendar/modes/stack.mjs.map +1 -1
  134. package/lib/components/VCalendar/util/events.mjs +0 -1
  135. package/lib/components/VCalendar/util/events.mjs.map +1 -1
  136. package/lib/components/VCalendar/util/parser.mjs +3 -4
  137. package/lib/components/VCalendar/util/parser.mjs.map +1 -1
  138. package/lib/components/VCalendar/util/props.mjs +0 -13
  139. package/lib/components/VCalendar/util/props.mjs.map +1 -1
  140. package/lib/components/VCalendar/util/timestamp.mjs +2 -64
  141. package/lib/components/VCalendar/util/timestamp.mjs.map +1 -1
  142. package/lib/components/VCard/VCard.css +13 -9
  143. package/lib/components/VCard/VCard.mjs +6 -11
  144. package/lib/components/VCard/VCard.mjs.map +1 -1
  145. package/lib/components/VCard/VCardActions.mjs +0 -4
  146. package/lib/components/VCard/VCardActions.mjs.map +1 -1
  147. package/lib/components/VCard/VCardItem.mjs +5 -10
  148. package/lib/components/VCard/VCardItem.mjs.map +1 -1
  149. package/lib/components/VCard/VCardSubtitle.mjs.map +1 -1
  150. package/lib/components/VCard/VCardText.mjs.map +1 -1
  151. package/lib/components/VCard/VCardTitle.mjs.map +1 -1
  152. package/lib/components/VCard/index.d.ts +237 -0
  153. package/lib/components/VCard/index.mjs.map +1 -1
  154. package/lib/components/VCarousel/VCarousel.mjs +8 -12
  155. package/lib/components/VCarousel/VCarousel.mjs.map +1 -1
  156. package/lib/components/VCarousel/VCarouselItem.mjs +0 -3
  157. package/lib/components/VCarousel/VCarouselItem.mjs.map +1 -1
  158. package/lib/components/VCarousel/index.d.ts +81 -0
  159. package/lib/components/VCarousel/index.mjs.map +1 -1
  160. package/lib/components/VCheckbox/VCheckbox.mjs +22 -9
  161. package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
  162. package/lib/components/VCheckbox/VCheckboxBtn.mjs +7 -15
  163. package/lib/components/VCheckbox/VCheckboxBtn.mjs.map +1 -1
  164. package/lib/components/VCheckbox/index.d.ts +302 -0
  165. package/lib/components/VCheckbox/index.mjs.map +1 -1
  166. package/lib/components/VChip/VChip.css +27 -3
  167. package/lib/components/VChip/VChip.mjs +5 -13
  168. package/lib/components/VChip/VChip.mjs.map +1 -1
  169. package/lib/components/VChip/VChip.sass +1 -0
  170. package/lib/components/VChip/index.d.ts +197 -0
  171. package/lib/components/VChip/index.mjs.map +1 -1
  172. package/lib/components/VChipGroup/VChipGroup.mjs +5 -6
  173. package/lib/components/VChipGroup/VChipGroup.mjs.map +1 -1
  174. package/lib/components/VChipGroup/index.d.ts +89 -0
  175. package/lib/components/VChipGroup/index.mjs.map +1 -1
  176. package/lib/components/VCode/VCode.css +5 -3
  177. package/lib/components/VCode/VCode.sass +3 -1
  178. package/lib/components/VCode/_variables.scss +5 -3
  179. package/lib/components/VCode/index.d.ts +20 -0
  180. package/lib/components/VCode/index.mjs.map +1 -1
  181. package/lib/components/VColorPicker/VColorPicker.css +3 -3
  182. package/lib/components/VColorPicker/VColorPicker.mjs +54 -61
  183. package/lib/components/VColorPicker/VColorPicker.mjs.map +1 -1
  184. package/lib/components/VColorPicker/VColorPickerCanvas.mjs +10 -25
  185. package/lib/components/VColorPicker/VColorPickerCanvas.mjs.map +1 -1
  186. package/lib/components/VColorPicker/VColorPickerEdit.mjs +6 -10
  187. package/lib/components/VColorPicker/VColorPickerEdit.mjs.map +1 -1
  188. package/lib/components/VColorPicker/VColorPickerPreview.mjs +14 -24
  189. package/lib/components/VColorPicker/VColorPickerPreview.mjs.map +1 -1
  190. package/lib/components/VColorPicker/VColorPickerSwatches.mjs +2 -6
  191. package/lib/components/VColorPicker/VColorPickerSwatches.mjs.map +1 -1
  192. package/lib/components/VColorPicker/index.d.ts +116 -0
  193. package/lib/components/VColorPicker/index.mjs.map +1 -1
  194. package/lib/components/VColorPicker/util/index.mjs +25 -29
  195. package/lib/components/VColorPicker/util/index.mjs.map +1 -1
  196. package/lib/components/VCombobox/VCombobox.css +14 -1
  197. package/lib/components/VCombobox/VCombobox.mjs +56 -62
  198. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  199. package/lib/components/VCombobox/VCombobox.sass +5 -0
  200. package/lib/components/VCombobox/_variables.scss +1 -0
  201. package/lib/components/VCombobox/index.d.ts +1541 -0
  202. package/lib/components/VCombobox/index.mjs.map +1 -1
  203. package/lib/components/VCounter/VCounter.mjs +2 -5
  204. package/lib/components/VCounter/VCounter.mjs.map +1 -1
  205. package/lib/components/VCounter/index.d.ts +224 -0
  206. package/lib/components/VCounter/index.mjs.map +1 -1
  207. package/lib/components/VData/VData.mjs +9 -67
  208. package/lib/components/VData/VData.mjs.map +1 -1
  209. package/lib/components/VData/index.mjs.map +1 -1
  210. package/lib/components/VDataIterator/VDataFooter.mjs +6 -25
  211. package/lib/components/VDataIterator/VDataFooter.mjs.map +1 -1
  212. package/lib/components/VDataIterator/VDataIterator.mjs +12 -51
  213. package/lib/components/VDataIterator/VDataIterator.mjs.map +1 -1
  214. package/lib/components/VDataIterator/index.mjs.map +1 -1
  215. package/lib/components/VDataTable/MobileRow.mjs +3 -8
  216. package/lib/components/VDataTable/MobileRow.mjs.map +1 -1
  217. package/lib/components/VDataTable/Row.mjs +1 -8
  218. package/lib/components/VDataTable/Row.mjs.map +1 -1
  219. package/lib/components/VDataTable/RowGroup.mjs +1 -7
  220. package/lib/components/VDataTable/RowGroup.mjs.map +1 -1
  221. package/lib/components/VDataTable/VDataTable.mjs +53 -105
  222. package/lib/components/VDataTable/VDataTable.mjs.map +1 -1
  223. package/lib/components/VDataTable/VDataTableHeader.mjs +6 -10
  224. package/lib/components/VDataTable/VDataTableHeader.mjs.map +1 -1
  225. package/lib/components/VDataTable/VDataTableHeaderDesktop.mjs +0 -18
  226. package/lib/components/VDataTable/VDataTableHeaderDesktop.mjs.map +1 -1
  227. package/lib/components/VDataTable/VDataTableHeaderMobile.mjs +0 -9
  228. package/lib/components/VDataTable/VDataTableHeaderMobile.mjs.map +1 -1
  229. package/lib/components/VDataTable/VEditDialog.mjs +3 -17
  230. package/lib/components/VDataTable/VEditDialog.mjs.map +1 -1
  231. package/lib/components/VDataTable/VVirtualTable.mjs +3 -28
  232. package/lib/components/VDataTable/VVirtualTable.mjs.map +1 -1
  233. package/lib/components/VDataTable/index.mjs +0 -1
  234. package/lib/components/VDataTable/index.mjs.map +1 -1
  235. package/lib/components/VDataTable/mixins/header.mjs +1 -8
  236. package/lib/components/VDataTable/mixins/header.mjs.map +1 -1
  237. package/lib/components/VDatePicker/VDatePicker.mjs +2 -69
  238. package/lib/components/VDatePicker/VDatePicker.mjs.map +1 -1
  239. package/lib/components/VDatePicker/VDatePickerDateTable.mjs +1 -29
  240. package/lib/components/VDatePicker/VDatePickerDateTable.mjs.map +1 -1
  241. package/lib/components/VDatePicker/VDatePickerHeader.mjs +4 -17
  242. package/lib/components/VDatePicker/VDatePickerHeader.mjs.map +1 -1
  243. package/lib/components/VDatePicker/VDatePickerMonthTable.mjs +1 -12
  244. package/lib/components/VDatePicker/VDatePickerMonthTable.mjs.map +1 -1
  245. package/lib/components/VDatePicker/VDatePickerTitle.mjs +4 -15
  246. package/lib/components/VDatePicker/VDatePickerTitle.mjs.map +1 -1
  247. package/lib/components/VDatePicker/VDatePickerYears.mjs +4 -18
  248. package/lib/components/VDatePicker/VDatePickerYears.mjs.map +1 -1
  249. package/lib/components/VDatePicker/index.mjs.map +1 -1
  250. package/lib/components/VDatePicker/mixins/date-picker-table.mjs +6 -33
  251. package/lib/components/VDatePicker/mixins/date-picker-table.mjs.map +1 -1
  252. package/lib/components/VDatePicker/util/createNativeLocaleFormatter.mjs +0 -5
  253. package/lib/components/VDatePicker/util/createNativeLocaleFormatter.mjs.map +1 -1
  254. package/lib/components/VDatePicker/util/eventHelpers.mjs +2 -3
  255. package/lib/components/VDatePicker/util/eventHelpers.mjs.map +1 -1
  256. package/lib/components/VDatePicker/util/index.mjs +0 -1
  257. package/lib/components/VDatePicker/util/index.mjs.map +1 -1
  258. package/lib/components/VDatePicker/util/isDateAllowed.mjs +1 -1
  259. package/lib/components/VDatePicker/util/isDateAllowed.mjs.map +1 -1
  260. package/lib/components/VDatePicker/util/monthChange.mjs +0 -3
  261. package/lib/components/VDatePicker/util/monthChange.mjs.map +1 -1
  262. package/lib/components/VDatePicker/util/pad.mjs +1 -6
  263. package/lib/components/VDatePicker/util/pad.mjs.map +1 -1
  264. package/lib/components/VDatePicker/util/sanitizeDateString.mjs.map +1 -1
  265. package/lib/components/VDefaultsProvider/VDefaultsProvider.mjs +2 -4
  266. package/lib/components/VDefaultsProvider/VDefaultsProvider.mjs.map +1 -1
  267. package/lib/components/VDefaultsProvider/index.d.ts +27 -0
  268. package/lib/components/VDefaultsProvider/index.mjs.map +1 -1
  269. package/lib/components/VDialog/VDialog.css +4 -1
  270. package/lib/components/VDialog/VDialog.mjs +49 -59
  271. package/lib/components/VDialog/VDialog.mjs.map +1 -1
  272. package/lib/components/VDialog/VDialog.sass +3 -0
  273. package/lib/components/VDialog/index.d.ts +1795 -0
  274. package/lib/components/VDialog/index.mjs.map +1 -1
  275. package/lib/components/VDivider/VDivider.mjs +2 -8
  276. package/lib/components/VDivider/VDivider.mjs.map +1 -1
  277. package/lib/components/VDivider/index.d.ts +23 -0
  278. package/lib/components/VDivider/index.mjs.map +1 -1
  279. package/lib/components/VExpansionPanel/VExpansionPanel.css +9 -4
  280. package/lib/components/VExpansionPanel/VExpansionPanel.mjs +0 -5
  281. package/lib/components/VExpansionPanel/VExpansionPanel.mjs.map +1 -1
  282. package/lib/components/VExpansionPanel/VExpansionPanelText.mjs +2 -6
  283. package/lib/components/VExpansionPanel/VExpansionPanelText.mjs.map +1 -1
  284. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +3 -8
  285. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
  286. package/lib/components/VExpansionPanel/VExpansionPanels.mjs +2 -5
  287. package/lib/components/VExpansionPanel/VExpansionPanels.mjs.map +1 -1
  288. package/lib/components/VExpansionPanel/index.d.ts +206 -0
  289. package/lib/components/VExpansionPanel/index.mjs.map +1 -1
  290. package/lib/components/VField/VField.css +29 -26
  291. package/lib/components/VField/VField.mjs +36 -35
  292. package/lib/components/VField/VField.mjs.map +1 -1
  293. package/lib/components/VField/VField.sass +23 -22
  294. package/lib/components/VField/VFieldLabel.mjs +0 -3
  295. package/lib/components/VField/VFieldLabel.mjs.map +1 -1
  296. package/lib/components/VField/index.d.ts +306 -0
  297. package/lib/components/VField/index.mjs.map +1 -1
  298. package/lib/components/VFileInput/VFileInput.css +16 -0
  299. package/lib/components/VFileInput/VFileInput.mjs +41 -60
  300. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  301. package/lib/components/VFileInput/VFileInput.sass +10 -0
  302. package/lib/components/VFileInput/_variables.scss +2 -0
  303. package/lib/components/VFileInput/index.d.ts +477 -0
  304. package/lib/components/VFileInput/index.mjs.map +1 -1
  305. package/lib/components/VFooter/VFooter.css +8 -1
  306. package/lib/components/VFooter/VFooter.mjs +2 -4
  307. package/lib/components/VFooter/VFooter.mjs.map +1 -1
  308. package/lib/components/VFooter/VFooter.sass +1 -1
  309. package/lib/components/VFooter/_variables.scss +11 -0
  310. package/lib/components/VFooter/index.d.ts +77 -0
  311. package/lib/components/VFooter/index.mjs.map +1 -1
  312. package/lib/components/VForm/VForm.mjs +2 -13
  313. package/lib/components/VForm/VForm.mjs.map +1 -1
  314. package/lib/components/VForm/index.d.ts +81 -0
  315. package/lib/components/VForm/index.mjs.map +1 -1
  316. package/lib/components/VGrid/VCol.mjs +8 -23
  317. package/lib/components/VGrid/VCol.mjs.map +1 -1
  318. package/lib/components/VGrid/VContainer.mjs +2 -4
  319. package/lib/components/VGrid/VContainer.mjs.map +1 -1
  320. package/lib/components/VGrid/VRow.mjs +6 -24
  321. package/lib/components/VGrid/VRow.mjs.map +1 -1
  322. package/lib/components/VGrid/VSpacer.mjs.map +1 -1
  323. package/lib/components/VGrid/index.d.ts +156 -0
  324. package/lib/components/VGrid/index.mjs.map +1 -1
  325. package/lib/components/VHover/VHover.mjs +0 -4
  326. package/lib/components/VHover/VHover.mjs.map +1 -1
  327. package/lib/components/VHover/index.d.ts +31 -0
  328. package/lib/components/VHover/index.mjs.map +1 -1
  329. package/lib/components/VIcon/VIcon.mjs +4 -9
  330. package/lib/components/VIcon/VIcon.mjs.map +1 -1
  331. package/lib/components/VIcon/index.d.ts +125 -0
  332. package/lib/components/VIcon/index.mjs.map +1 -1
  333. package/lib/components/VImg/VImg.mjs +36 -60
  334. package/lib/components/VImg/VImg.mjs.map +1 -1
  335. package/lib/components/VImg/index.d.ts +93 -0
  336. package/lib/components/VImg/index.mjs.map +1 -1
  337. package/lib/components/VInput/InputIcon.mjs +31 -0
  338. package/lib/components/VInput/InputIcon.mjs.map +1 -0
  339. package/lib/components/VInput/VInput.mjs +20 -20
  340. package/lib/components/VInput/VInput.mjs.map +1 -1
  341. package/lib/components/VInput/index.d.ts +320 -0
  342. package/lib/components/VInput/index.mjs.map +1 -1
  343. package/lib/components/VItemGroup/VItem.mjs +0 -5
  344. package/lib/components/VItemGroup/VItem.mjs.map +1 -1
  345. package/lib/components/VItemGroup/VItemGroup.mjs +4 -6
  346. package/lib/components/VItemGroup/VItemGroup.mjs.map +1 -1
  347. package/lib/components/VItemGroup/index.d.ts +204 -0
  348. package/lib/components/VItemGroup/index.mjs.map +1 -1
  349. package/lib/components/VKbd/VKbd.css +3 -3
  350. package/lib/components/VKbd/VKbd.sass +2 -2
  351. package/lib/components/VKbd/index.d.ts +20 -0
  352. package/lib/components/VKbd/index.mjs.map +1 -1
  353. package/lib/components/VLabel/VLabel.css +4 -1
  354. package/lib/components/VLabel/VLabel.mjs +6 -6
  355. package/lib/components/VLabel/VLabel.mjs.map +1 -1
  356. package/lib/components/VLabel/VLabel.sass +3 -1
  357. package/lib/components/VLabel/index.d.ts +16 -0
  358. package/lib/components/VLabel/index.mjs.map +1 -1
  359. package/lib/components/VLayout/VLayout.mjs +2 -5
  360. package/lib/components/VLayout/VLayout.mjs.map +1 -1
  361. package/lib/components/VLayout/VLayoutItem.mjs +2 -6
  362. package/lib/components/VLayout/VLayoutItem.mjs.map +1 -1
  363. package/lib/components/VLayout/index.d.ts +78 -0
  364. package/lib/components/VLayout/index.mjs.map +1 -1
  365. package/lib/components/VLazy/VLazy.mjs +0 -8
  366. package/lib/components/VLazy/VLazy.mjs.map +1 -1
  367. package/lib/components/VLazy/index.d.ts +86 -0
  368. package/lib/components/VLazy/index.mjs.map +1 -1
  369. package/lib/components/VList/VList.css +1 -1
  370. package/lib/components/VList/VList.mjs +73 -24
  371. package/lib/components/VList/VList.mjs.map +1 -1
  372. package/lib/components/VList/VListChildren.mjs +22 -31
  373. package/lib/components/VList/VListChildren.mjs.map +1 -1
  374. package/lib/components/VList/VListGroup.mjs +11 -17
  375. package/lib/components/VList/VListGroup.mjs.map +1 -1
  376. package/lib/components/VList/VListImg.mjs.map +1 -1
  377. package/lib/components/VList/VListItem.css +12 -8
  378. package/lib/components/VList/VListItem.mjs +42 -42
  379. package/lib/components/VList/VListItem.mjs.map +1 -1
  380. package/lib/components/VList/VListItem.sass +2 -2
  381. package/lib/components/VList/VListItemAction.mjs +0 -3
  382. package/lib/components/VList/VListItemAction.mjs.map +1 -1
  383. package/lib/components/VList/VListItemMedia.mjs +0 -3
  384. package/lib/components/VList/VListItemMedia.mjs.map +1 -1
  385. package/lib/components/VList/VListItemSubtitle.mjs.map +1 -1
  386. package/lib/components/VList/VListItemTitle.mjs.map +1 -1
  387. package/lib/components/VList/VListSubheader.mjs +2 -6
  388. package/lib/components/VList/VListSubheader.mjs.map +1 -1
  389. package/lib/components/VList/index.d.ts +1242 -0
  390. package/lib/components/VList/index.mjs.map +1 -1
  391. package/lib/components/VList/list.mjs +5 -2
  392. package/lib/components/VList/list.mjs.map +1 -1
  393. package/lib/components/VLocaleProvider/VLocaleProvider.mjs +4 -9
  394. package/lib/components/VLocaleProvider/VLocaleProvider.mjs.map +1 -1
  395. package/lib/components/VLocaleProvider/index.d.ts +24 -0
  396. package/lib/components/VLocaleProvider/index.mjs.map +1 -1
  397. package/lib/components/VMain/VMain.css +0 -7
  398. package/lib/components/VMain/VMain.mjs +2 -5
  399. package/lib/components/VMain/VMain.mjs.map +1 -1
  400. package/lib/components/VMain/VMain.sass +0 -8
  401. package/lib/components/VMain/index.d.ts +27 -0
  402. package/lib/components/VMain/index.mjs.map +1 -1
  403. package/lib/components/VMenu/VMenu.css +1 -1
  404. package/lib/components/VMenu/VMenu.mjs +45 -43
  405. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  406. package/lib/components/VMenu/index.d.ts +1823 -0
  407. package/lib/components/VMenu/index.mjs.map +1 -1
  408. package/lib/components/VMenu/shared.mjs.map +1 -1
  409. package/lib/components/VMessages/VMessages.mjs +2 -6
  410. package/lib/components/VMessages/VMessages.mjs.map +1 -1
  411. package/lib/components/VMessages/index.d.ts +235 -0
  412. package/lib/components/VMessages/index.mjs.map +1 -1
  413. package/lib/components/VNavigationDrawer/VNavigationDrawer.css +2 -2
  414. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +6 -11
  415. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  416. package/lib/components/VNavigationDrawer/VNavigationDrawer.sass +1 -1
  417. package/lib/components/VNavigationDrawer/_variables.scss +1 -0
  418. package/lib/components/VNavigationDrawer/index.d.ts +148 -0
  419. package/lib/components/VNavigationDrawer/index.mjs.map +1 -1
  420. package/lib/components/VNavigationDrawer/sticky.mjs +1 -7
  421. package/lib/components/VNavigationDrawer/sticky.mjs.map +1 -1
  422. package/lib/components/VNavigationDrawer/touch.mjs +2 -15
  423. package/lib/components/VNavigationDrawer/touch.mjs.map +1 -1
  424. package/lib/components/VNoSsr/VNoSsr.mjs +0 -4
  425. package/lib/components/VNoSsr/VNoSsr.mjs.map +1 -1
  426. package/lib/components/VNoSsr/index.d.ts +8 -0
  427. package/lib/components/VNoSsr/index.mjs.map +1 -1
  428. package/lib/components/VOtpInput/VOtpInput.mjs +7 -58
  429. package/lib/components/VOtpInput/VOtpInput.mjs.map +1 -1
  430. package/lib/components/VOtpInput/index.mjs.map +1 -1
  431. package/lib/components/VOverflowBtn/VOverflowBtn.mjs +7 -19
  432. package/lib/components/VOverflowBtn/VOverflowBtn.mjs.map +1 -1
  433. package/lib/components/VOverflowBtn/index.mjs.map +1 -1
  434. package/lib/components/VOverlay/VOverlay.mjs +47 -53
  435. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  436. package/lib/components/VOverlay/index.d.ts +551 -0
  437. package/lib/components/VOverlay/index.mjs.map +1 -1
  438. package/lib/components/VOverlay/locationStrategies.mjs +34 -58
  439. package/lib/components/VOverlay/locationStrategies.mjs.map +1 -1
  440. package/lib/components/VOverlay/requestNewFrame.mjs +1 -2
  441. package/lib/components/VOverlay/requestNewFrame.mjs.map +1 -1
  442. package/lib/components/VOverlay/scrollStrategies.mjs +10 -29
  443. package/lib/components/VOverlay/scrollStrategies.mjs.map +1 -1
  444. package/lib/components/VOverlay/useActivator.mjs +29 -29
  445. package/lib/components/VOverlay/useActivator.mjs.map +1 -1
  446. package/lib/components/VOverlay/util/point.mjs +3 -4
  447. package/lib/components/VOverlay/util/point.mjs.map +1 -1
  448. package/lib/components/VPagination/VPagination.mjs +20 -30
  449. package/lib/components/VPagination/VPagination.mjs.map +1 -1
  450. package/lib/components/VPagination/index.d.ts +249 -0
  451. package/lib/components/VPagination/index.mjs.map +1 -1
  452. package/lib/components/VParallax/VParallax.mjs +32 -24
  453. package/lib/components/VParallax/VParallax.mjs.map +1 -1
  454. package/lib/components/VParallax/index.d.ts +18 -0
  455. package/lib/components/VParallax/index.mjs.map +1 -1
  456. package/lib/components/VPicker/VPicker.mjs +3 -12
  457. package/lib/components/VPicker/VPicker.mjs.map +1 -1
  458. package/lib/components/VPicker/index.mjs.map +1 -1
  459. package/lib/components/VProgressCircular/VProgressCircular.mjs +2 -5
  460. package/lib/components/VProgressCircular/VProgressCircular.mjs.map +1 -1
  461. package/lib/components/VProgressCircular/index.d.ts +69 -0
  462. package/lib/components/VProgressCircular/index.mjs.map +1 -1
  463. package/lib/components/VProgressLinear/VProgressLinear.mjs +5 -8
  464. package/lib/components/VProgressLinear/VProgressLinear.mjs.map +1 -1
  465. package/lib/components/VProgressLinear/index.d.ts +102 -0
  466. package/lib/components/VProgressLinear/index.mjs.map +1 -1
  467. package/lib/components/VRadio/VRadio.mjs +2 -4
  468. package/lib/components/VRadio/VRadio.mjs.map +1 -1
  469. package/lib/components/VRadio/index.d.ts +105 -0
  470. package/lib/components/VRadio/index.mjs.map +1 -1
  471. package/lib/components/VRadioGroup/VRadioGroup.css +2 -3
  472. package/lib/components/VRadioGroup/VRadioGroup.mjs +17 -21
  473. package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
  474. package/lib/components/VRadioGroup/VRadioGroup.sass +2 -2
  475. package/lib/components/VRadioGroup/_variables.scss +0 -1
  476. package/lib/components/VRadioGroup/index.d.ts +179 -0
  477. package/lib/components/VRadioGroup/index.mjs.map +1 -1
  478. package/lib/components/VRangeSlider/VRangeSlider.mjs +24 -27
  479. package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
  480. package/lib/components/VRangeSlider/index.d.ts +246 -0
  481. package/lib/components/VRangeSlider/index.mjs.map +1 -1
  482. package/lib/components/VRating/VRating.mjs +6 -30
  483. package/lib/components/VRating/VRating.mjs.map +1 -1
  484. package/lib/components/VRating/index.d.ts +348 -0
  485. package/lib/components/VRating/index.mjs.map +1 -1
  486. package/lib/components/VResponsive/VResponsive.mjs +2 -5
  487. package/lib/components/VResponsive/VResponsive.mjs.map +1 -1
  488. package/lib/components/VResponsive/index.d.ts +24 -0
  489. package/lib/components/VResponsive/index.mjs.map +1 -1
  490. package/lib/components/VSelect/VSelect.css +21 -2
  491. package/lib/components/VSelect/VSelect.mjs +53 -38
  492. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  493. package/lib/components/VSelect/VSelect.sass +16 -1
  494. package/lib/components/VSelect/_variables.scss +1 -0
  495. package/lib/components/VSelect/index.d.ts +1484 -0
  496. package/lib/components/VSelect/index.mjs.map +1 -1
  497. package/lib/components/VSelectionControl/VSelectionControl.mjs +17 -62
  498. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  499. package/lib/components/VSelectionControl/index.d.ts +259 -0
  500. package/lib/components/VSelectionControl/index.mjs.map +1 -1
  501. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.css +6 -0
  502. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs +59 -29
  503. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs.map +1 -1
  504. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.sass +6 -0
  505. package/lib/components/VSelectionControlGroup/index.d.ts +96 -0
  506. package/lib/components/VSelectionControlGroup/index.mjs.map +1 -1
  507. package/lib/components/VSheet/VSheet.css +1 -1
  508. package/lib/components/VSheet/VSheet.mjs +2 -4
  509. package/lib/components/VSheet/VSheet.mjs.map +1 -1
  510. package/lib/components/VSheet/index.d.ts +69 -0
  511. package/lib/components/VSheet/index.mjs.map +1 -1
  512. package/lib/components/VSkeletonLoader/VSkeletonLoader.mjs +19 -32
  513. package/lib/components/VSkeletonLoader/VSkeletonLoader.mjs.map +1 -1
  514. package/lib/components/VSkeletonLoader/index.mjs.map +1 -1
  515. package/lib/components/VSlideGroup/VSlideGroup.mjs +56 -78
  516. package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
  517. package/lib/components/VSlideGroup/VSlideGroupItem.mjs +5 -9
  518. package/lib/components/VSlideGroup/VSlideGroupItem.mjs.map +1 -1
  519. package/lib/components/VSlideGroup/helpers.mjs +4 -17
  520. package/lib/components/VSlideGroup/helpers.mjs.map +1 -1
  521. package/lib/components/VSlideGroup/index.d.ts +434 -0
  522. package/lib/components/VSlideGroup/index.mjs.map +1 -1
  523. package/lib/components/VSlider/VSlider.css +7 -2
  524. package/lib/components/VSlider/VSlider.mjs +19 -12
  525. package/lib/components/VSlider/VSlider.mjs.map +1 -1
  526. package/lib/components/VSlider/VSlider.sass +6 -2
  527. package/lib/components/VSlider/VSliderThumb.css +10 -6
  528. package/lib/components/VSlider/VSliderThumb.mjs +7 -18
  529. package/lib/components/VSlider/VSliderThumb.mjs.map +1 -1
  530. package/lib/components/VSlider/VSliderThumb.sass +11 -8
  531. package/lib/components/VSlider/VSliderTrack.css +20 -20
  532. package/lib/components/VSlider/VSliderTrack.mjs +16 -14
  533. package/lib/components/VSlider/VSliderTrack.mjs.map +1 -1
  534. package/lib/components/VSlider/VSliderTrack.sass +14 -14
  535. package/lib/components/VSlider/_variables.scss +2 -2
  536. package/lib/components/VSlider/index.d.ts +243 -0
  537. package/lib/components/VSlider/index.mjs.map +1 -1
  538. package/lib/components/VSlider/slider.mjs +15 -46
  539. package/lib/components/VSlider/slider.mjs.map +1 -1
  540. package/lib/components/VSnackbar/VSnackbar.css +2 -3
  541. package/lib/components/VSnackbar/VSnackbar.mjs +51 -60
  542. package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
  543. package/lib/components/VSnackbar/index.d.ts +1696 -0
  544. package/lib/components/VSnackbar/index.mjs.map +1 -1
  545. package/lib/components/VSparkline/VSparkline.mjs +5 -40
  546. package/lib/components/VSparkline/VSparkline.mjs.map +1 -1
  547. package/lib/components/VSparkline/helpers/core.mjs +1 -1
  548. package/lib/components/VSparkline/helpers/core.mjs.map +1 -1
  549. package/lib/components/VSparkline/helpers/math.mjs +2 -3
  550. package/lib/components/VSparkline/helpers/math.mjs.map +1 -1
  551. package/lib/components/VSparkline/helpers/path.mjs +0 -4
  552. package/lib/components/VSparkline/helpers/path.mjs.map +1 -1
  553. package/lib/components/VSparkline/index.mjs.map +1 -1
  554. package/lib/components/VSpeedDial/VSpeedDial.mjs +3 -12
  555. package/lib/components/VSpeedDial/VSpeedDial.mjs.map +1 -1
  556. package/lib/components/VSpeedDial/index.mjs.map +1 -1
  557. package/lib/components/VStepper/VStepper.mjs +5 -24
  558. package/lib/components/VStepper/VStepper.mjs.map +1 -1
  559. package/lib/components/VStepper/VStepperContent.mjs +4 -25
  560. package/lib/components/VStepper/VStepperContent.mjs.map +1 -1
  561. package/lib/components/VStepper/VStepperStep.mjs +0 -24
  562. package/lib/components/VStepper/VStepperStep.mjs.map +1 -1
  563. package/lib/components/VStepper/index.mjs.map +1 -1
  564. package/lib/components/VSwitch/VSwitch.css +2 -2
  565. package/lib/components/VSwitch/VSwitch.mjs +26 -17
  566. package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
  567. package/lib/components/VSwitch/index.d.ts +186 -0
  568. package/lib/components/VSwitch/index.mjs.map +1 -1
  569. package/lib/components/VSystemBar/VSystemBar.css +1 -1
  570. package/lib/components/VSystemBar/VSystemBar.mjs +3 -9
  571. package/lib/components/VSystemBar/VSystemBar.mjs.map +1 -1
  572. package/lib/components/VSystemBar/index.d.ts +62 -0
  573. package/lib/components/VSystemBar/index.mjs.map +1 -1
  574. package/lib/components/VTable/VTable.css +3 -3
  575. package/lib/components/VTable/VTable.mjs +5 -6
  576. package/lib/components/VTable/VTable.mjs.map +1 -1
  577. package/lib/components/VTable/VTable.sass +9 -3
  578. package/lib/components/VTable/index.d.ts +44 -0
  579. package/lib/components/VTable/index.mjs.map +1 -1
  580. package/lib/components/VTabs/VTab.css +3 -1
  581. package/lib/components/VTabs/VTab.mjs +5 -12
  582. package/lib/components/VTabs/VTab.mjs.map +1 -1
  583. package/lib/components/VTabs/VTab.sass +3 -1
  584. package/lib/components/VTabs/VTabs.css +7 -7
  585. package/lib/components/VTabs/VTabs.mjs +18 -21
  586. package/lib/components/VTabs/VTabs.mjs.map +1 -1
  587. package/lib/components/VTabs/VTabs.sass +5 -5
  588. package/lib/components/VTabs/_variables.scss +1 -1
  589. package/lib/components/VTabs/index.d.ts +186 -0
  590. package/lib/components/VTabs/index.mjs.map +1 -1
  591. package/lib/components/VTabs/shared.mjs.map +1 -1
  592. package/lib/components/VTextField/VTextField.css +2 -3
  593. package/lib/components/VTextField/VTextField.mjs +32 -38
  594. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  595. package/lib/components/VTextField/VTextField.sass +2 -4
  596. package/lib/components/VTextField/index.d.ts +1807 -0
  597. package/lib/components/VTextField/index.mjs.map +1 -1
  598. package/lib/components/VTextarea/VTextarea.css +5 -3
  599. package/lib/components/VTextarea/VTextarea.mjs +26 -33
  600. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  601. package/lib/components/VTextarea/VTextarea.sass +5 -4
  602. package/lib/components/VTextarea/index.d.ts +461 -0
  603. package/lib/components/VTextarea/index.mjs.map +1 -1
  604. package/lib/components/VThemeProvider/VThemeProvider.mjs +2 -5
  605. package/lib/components/VThemeProvider/VThemeProvider.mjs.map +1 -1
  606. package/lib/components/VThemeProvider/index.d.ts +25 -0
  607. package/lib/components/VThemeProvider/index.mjs.map +1 -1
  608. package/lib/components/VTimePicker/SelectingTimes.mjs +0 -3
  609. package/lib/components/VTimePicker/SelectingTimes.mjs.map +1 -1
  610. package/lib/components/VTimePicker/VTimePicker.mjs +3 -53
  611. package/lib/components/VTimePicker/VTimePicker.mjs.map +1 -1
  612. package/lib/components/VTimePicker/VTimePickerClock.mjs +6 -42
  613. package/lib/components/VTimePicker/VTimePickerClock.mjs.map +1 -1
  614. package/lib/components/VTimePicker/VTimePickerTitle.mjs +4 -13
  615. package/lib/components/VTimePicker/VTimePickerTitle.mjs.map +1 -1
  616. package/lib/components/VTimePicker/index.mjs.map +1 -1
  617. package/lib/components/VTimeline/VTimeline.css +77 -41
  618. package/lib/components/VTimeline/VTimeline.mjs +8 -10
  619. package/lib/components/VTimeline/VTimeline.mjs.map +1 -1
  620. package/lib/components/VTimeline/VTimeline.sass +95 -64
  621. package/lib/components/VTimeline/VTimelineDivider.mjs +2 -7
  622. package/lib/components/VTimeline/VTimelineDivider.mjs.map +1 -1
  623. package/lib/components/VTimeline/VTimelineItem.mjs +2 -8
  624. package/lib/components/VTimeline/VTimelineItem.mjs.map +1 -1
  625. package/lib/components/VTimeline/_mixins.sass +10 -0
  626. package/lib/components/VTimeline/_variables.scss +4 -3
  627. package/lib/components/VTimeline/index.d.ts +158 -0
  628. package/lib/components/VTimeline/index.mjs.map +1 -1
  629. package/lib/components/VToolbar/VToolbar.css +3 -4
  630. package/lib/components/VToolbar/VToolbar.mjs +3 -11
  631. package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
  632. package/lib/components/VToolbar/VToolbar.sass +0 -1
  633. package/lib/components/VToolbar/VToolbarItems.mjs +0 -4
  634. package/lib/components/VToolbar/VToolbarItems.mjs.map +1 -1
  635. package/lib/components/VToolbar/VToolbarTitle.mjs +0 -5
  636. package/lib/components/VToolbar/VToolbarTitle.mjs.map +1 -1
  637. package/lib/components/VToolbar/_variables.scss +1 -1
  638. package/lib/components/VToolbar/index.d.ts +377 -0
  639. package/lib/components/VToolbar/index.mjs.map +1 -1
  640. package/lib/components/VTooltip/VTooltip.mjs +46 -57
  641. package/lib/components/VTooltip/VTooltip.mjs.map +1 -1
  642. package/lib/components/VTooltip/index.d.ts +1789 -0
  643. package/lib/components/VTooltip/index.mjs.map +1 -1
  644. package/lib/components/VTreeview/VTreeview.mjs +18 -75
  645. package/lib/components/VTreeview/VTreeview.mjs.map +1 -1
  646. package/lib/components/VTreeview/VTreeviewNode.mjs +2 -32
  647. package/lib/components/VTreeview/VTreeviewNode.mjs.map +1 -1
  648. package/lib/components/VTreeview/index.mjs.map +1 -1
  649. package/lib/components/VTreeview/util/filterTreeItems.mjs +0 -6
  650. package/lib/components/VTreeview/util/filterTreeItems.mjs.map +1 -1
  651. package/lib/components/VValidation/VValidation.mjs +2 -5
  652. package/lib/components/VValidation/VValidation.mjs.map +1 -1
  653. package/lib/components/VValidation/index.d.ts +67 -0
  654. package/lib/components/VValidation/index.mjs.map +1 -1
  655. package/lib/components/VVirtualScroll/VVirtualScroll.mjs +3 -18
  656. package/lib/components/VVirtualScroll/VVirtualScroll.mjs.map +1 -1
  657. package/lib/components/VVirtualScroll/index.mjs.map +1 -1
  658. package/lib/components/VWindow/VWindow.mjs +6 -22
  659. package/lib/components/VWindow/VWindow.mjs.map +1 -1
  660. package/lib/components/VWindow/VWindowItem.mjs +8 -21
  661. package/lib/components/VWindow/VWindowItem.mjs.map +1 -1
  662. package/lib/components/VWindow/index.d.ts +378 -0
  663. package/lib/components/VWindow/index.mjs.map +1 -1
  664. package/lib/components/index.d.ts +18364 -8683
  665. package/lib/components/index.mjs +0 -11
  666. package/lib/components/index.mjs.map +1 -1
  667. package/lib/components/transitions/createTransition.mjs +0 -10
  668. package/lib/components/transitions/createTransition.mjs.map +1 -1
  669. package/lib/components/transitions/dialog-transition.mjs +8 -23
  670. package/lib/components/transitions/dialog-transition.mjs.map +1 -1
  671. package/lib/components/transitions/expand-transition.mjs +2 -11
  672. package/lib/components/transitions/expand-transition.mjs.map +1 -1
  673. package/lib/components/transitions/index.d.ts +470 -0
  674. package/lib/components/transitions/index.mjs +5 -4
  675. package/lib/components/transitions/index.mjs.map +1 -1
  676. package/lib/composables/border.mjs +0 -3
  677. package/lib/composables/border.mjs.map +1 -1
  678. package/lib/composables/color.mjs +0 -4
  679. package/lib/composables/color.mjs.map +1 -1
  680. package/lib/composables/defaults.mjs +1 -6
  681. package/lib/composables/defaults.mjs.map +1 -1
  682. package/lib/composables/delay.mjs +1 -6
  683. package/lib/composables/delay.mjs.map +1 -1
  684. package/lib/composables/density.mjs +4 -1
  685. package/lib/composables/density.mjs.map +1 -1
  686. package/lib/composables/dimensions.mjs +0 -1
  687. package/lib/composables/dimensions.mjs.map +1 -1
  688. package/lib/composables/display.mjs +8 -21
  689. package/lib/composables/display.mjs.map +1 -1
  690. package/lib/composables/elevation.mjs +2 -4
  691. package/lib/composables/elevation.mjs.map +1 -1
  692. package/lib/composables/filter.mjs +11 -20
  693. package/lib/composables/filter.mjs.map +1 -1
  694. package/lib/composables/focus.mjs +0 -5
  695. package/lib/composables/focus.mjs.map +1 -1
  696. package/lib/composables/form.mjs +8 -16
  697. package/lib/composables/form.mjs.map +1 -1
  698. package/lib/composables/forwardRefs.mjs +9 -16
  699. package/lib/composables/forwardRefs.mjs.map +1 -1
  700. package/lib/composables/group.mjs +11 -38
  701. package/lib/composables/group.mjs.map +1 -1
  702. package/lib/composables/hydration.mjs +0 -1
  703. package/lib/composables/hydration.mjs.map +1 -1
  704. package/lib/composables/icons.mjs +5 -18
  705. package/lib/composables/icons.mjs.map +1 -1
  706. package/lib/composables/index.mjs +1 -2
  707. package/lib/composables/index.mjs.map +1 -1
  708. package/lib/composables/intersectionObserver.mjs +0 -3
  709. package/lib/composables/intersectionObserver.mjs.map +1 -1
  710. package/lib/composables/items.mjs +5 -17
  711. package/lib/composables/items.mjs.map +1 -1
  712. package/lib/composables/layout.mjs +31 -37
  713. package/lib/composables/layout.mjs.map +1 -1
  714. package/lib/composables/lazy.mjs +2 -3
  715. package/lib/composables/lazy.mjs.map +1 -1
  716. package/lib/composables/loader.mjs +0 -3
  717. package/lib/composables/loader.mjs.map +1 -1
  718. package/lib/composables/locale.mjs +48 -127
  719. package/lib/composables/locale.mjs.map +1 -1
  720. package/lib/composables/location.mjs +1 -8
  721. package/lib/composables/location.mjs.map +1 -1
  722. package/lib/composables/mutationObserver.mjs +7 -7
  723. package/lib/composables/mutationObserver.mjs.map +1 -1
  724. package/lib/composables/nested/nested.mjs +21 -38
  725. package/lib/composables/nested/nested.mjs.map +1 -1
  726. package/lib/composables/nested/openStrategies.mjs +0 -9
  727. package/lib/composables/nested/openStrategies.mjs.map +1 -1
  728. package/lib/composables/nested/selectStrategies.mjs +6 -21
  729. package/lib/composables/nested/selectStrategies.mjs.map +1 -1
  730. package/lib/composables/position.mjs +1 -4
  731. package/lib/composables/position.mjs.map +1 -1
  732. package/lib/composables/proxiedModel.mjs +28 -16
  733. package/lib/composables/proxiedModel.mjs.map +1 -1
  734. package/lib/composables/refs.mjs +0 -2
  735. package/lib/composables/refs.mjs.map +1 -1
  736. package/lib/composables/resizeObserver.mjs +0 -3
  737. package/lib/composables/resizeObserver.mjs.map +1 -1
  738. package/lib/composables/rounded.mjs +0 -3
  739. package/lib/composables/rounded.mjs.map +1 -1
  740. package/lib/composables/router.mjs +12 -12
  741. package/lib/composables/router.mjs.map +1 -1
  742. package/lib/composables/scopeId.mjs.map +1 -1
  743. package/lib/composables/scroll.mjs +4 -12
  744. package/lib/composables/scroll.mjs.map +1 -1
  745. package/lib/composables/selectLink.mjs +7 -6
  746. package/lib/composables/selectLink.mjs.map +1 -1
  747. package/lib/composables/size.mjs +0 -3
  748. package/lib/composables/size.mjs.map +1 -1
  749. package/lib/composables/ssrBoot.mjs +2 -1
  750. package/lib/composables/ssrBoot.mjs.map +1 -1
  751. package/lib/composables/stack.mjs +0 -6
  752. package/lib/composables/stack.mjs.map +1 -1
  753. package/lib/composables/tag.mjs +0 -1
  754. package/lib/composables/tag.mjs.map +1 -1
  755. package/lib/composables/teleport.mjs +0 -4
  756. package/lib/composables/teleport.mjs.map +1 -1
  757. package/lib/composables/theme.mjs +65 -81
  758. package/lib/composables/theme.mjs.map +1 -1
  759. package/lib/composables/toggleScope.mjs +0 -1
  760. package/lib/composables/toggleScope.mjs.map +1 -1
  761. package/lib/composables/touch.mjs +6 -31
  762. package/lib/composables/touch.mjs.map +1 -1
  763. package/lib/composables/transition.mjs +0 -4
  764. package/lib/composables/transition.mjs.map +1 -1
  765. package/lib/composables/validation.mjs +29 -27
  766. package/lib/composables/validation.mjs.map +1 -1
  767. package/lib/composables/variant.mjs +0 -2
  768. package/lib/composables/variant.mjs.map +1 -1
  769. package/lib/directives/click-outside/index.mjs +10 -22
  770. package/lib/directives/click-outside/index.mjs.map +1 -1
  771. package/lib/directives/color/index.mjs +0 -11
  772. package/lib/directives/color/index.mjs.map +1 -1
  773. package/lib/directives/index.d.ts +104 -13
  774. package/lib/directives/index.mjs +0 -1
  775. package/lib/directives/index.mjs.map +1 -1
  776. package/lib/directives/intersect/index.mjs +3 -10
  777. package/lib/directives/intersect/index.mjs.map +1 -1
  778. package/lib/directives/mutate/index.mjs +5 -11
  779. package/lib/directives/mutate/index.mjs.map +1 -1
  780. package/lib/directives/resize/index.mjs +0 -5
  781. package/lib/directives/resize/index.mjs.map +1 -1
  782. package/lib/directives/ripple/index.mjs +12 -66
  783. package/lib/directives/ripple/index.mjs.map +1 -1
  784. package/lib/directives/scroll/index.mjs +1 -7
  785. package/lib/directives/scroll/index.mjs.map +1 -1
  786. package/lib/directives/touch/index.mjs +3 -18
  787. package/lib/directives/touch/index.mjs.map +1 -1
  788. package/lib/entry-bundler.mjs +2 -1
  789. package/lib/entry-bundler.mjs.map +1 -1
  790. package/lib/framework.mjs +60 -61
  791. package/lib/framework.mjs.map +1 -1
  792. package/lib/iconsets/fa-svg.mjs +0 -1
  793. package/lib/iconsets/fa-svg.mjs.map +1 -1
  794. package/lib/iconsets/fa.mjs +0 -1
  795. package/lib/iconsets/fa.mjs.map +1 -1
  796. package/lib/iconsets/fa4.mjs +4 -3
  797. package/lib/iconsets/fa4.mjs.map +1 -1
  798. package/lib/iconsets/md.mjs +4 -3
  799. package/lib/iconsets/md.mjs.map +1 -1
  800. package/lib/iconsets/mdi-svg.mjs +1 -1
  801. package/lib/iconsets/mdi-svg.mjs.map +1 -1
  802. package/lib/iconsets/mdi.mjs +4 -3
  803. package/lib/iconsets/mdi.mjs.map +1 -1
  804. package/lib/index.d.ts +109 -110
  805. package/lib/locale/adapters/vue-i18n.d.ts +29 -0
  806. package/lib/locale/adapters/vue-i18n.mjs +59 -54
  807. package/lib/locale/adapters/vue-i18n.mjs.map +1 -1
  808. package/lib/locale/adapters/vuetify.d.ts +24 -0
  809. package/lib/locale/adapters/vuetify.mjs +97 -0
  810. package/lib/locale/adapters/vuetify.mjs.map +1 -0
  811. package/lib/locale/af.mjs +5 -0
  812. package/lib/locale/af.mjs.map +1 -1
  813. package/lib/locale/ar.mjs +5 -0
  814. package/lib/locale/ar.mjs.map +1 -1
  815. package/lib/locale/az.mjs +5 -0
  816. package/lib/locale/az.mjs.map +1 -1
  817. package/lib/locale/bg.mjs +5 -0
  818. package/lib/locale/bg.mjs.map +1 -1
  819. package/lib/locale/ca.mjs +5 -0
  820. package/lib/locale/ca.mjs.map +1 -1
  821. package/lib/locale/ckb.mjs +5 -0
  822. package/lib/locale/ckb.mjs.map +1 -1
  823. package/lib/locale/cs.mjs +5 -0
  824. package/lib/locale/cs.mjs.map +1 -1
  825. package/lib/locale/da.mjs +5 -0
  826. package/lib/locale/da.mjs.map +1 -1
  827. package/lib/locale/de.mjs +5 -0
  828. package/lib/locale/de.mjs.map +1 -1
  829. package/lib/locale/el.mjs +5 -0
  830. package/lib/locale/el.mjs.map +1 -1
  831. package/lib/locale/en.mjs +5 -0
  832. package/lib/locale/en.mjs.map +1 -1
  833. package/lib/locale/es.mjs +5 -0
  834. package/lib/locale/es.mjs.map +1 -1
  835. package/lib/locale/et.mjs +5 -0
  836. package/lib/locale/et.mjs.map +1 -1
  837. package/lib/locale/fa.mjs +5 -0
  838. package/lib/locale/fa.mjs.map +1 -1
  839. package/lib/locale/fi.mjs +5 -0
  840. package/lib/locale/fi.mjs.map +1 -1
  841. package/lib/locale/fr.mjs +5 -0
  842. package/lib/locale/fr.mjs.map +1 -1
  843. package/lib/locale/he.mjs +5 -0
  844. package/lib/locale/he.mjs.map +1 -1
  845. package/lib/locale/hr.mjs +5 -0
  846. package/lib/locale/hr.mjs.map +1 -1
  847. package/lib/locale/hu.mjs +5 -0
  848. package/lib/locale/hu.mjs.map +1 -1
  849. package/lib/locale/id.mjs +5 -0
  850. package/lib/locale/id.mjs.map +1 -1
  851. package/lib/locale/index.d.ts +212 -2
  852. package/lib/locale/index.mjs +1 -1
  853. package/lib/locale/index.mjs.map +1 -1
  854. package/lib/locale/it.mjs +5 -0
  855. package/lib/locale/it.mjs.map +1 -1
  856. package/lib/locale/ja.mjs +5 -0
  857. package/lib/locale/ja.mjs.map +1 -1
  858. package/lib/locale/ko.mjs +5 -0
  859. package/lib/locale/ko.mjs.map +1 -1
  860. package/lib/locale/lt.mjs +5 -0
  861. package/lib/locale/lt.mjs.map +1 -1
  862. package/lib/locale/lv.mjs +5 -0
  863. package/lib/locale/lv.mjs.map +1 -1
  864. package/lib/locale/nl.mjs +5 -0
  865. package/lib/locale/nl.mjs.map +1 -1
  866. package/lib/locale/no.mjs +5 -0
  867. package/lib/locale/no.mjs.map +1 -1
  868. package/lib/locale/pl.mjs +9 -4
  869. package/lib/locale/pl.mjs.map +1 -1
  870. package/lib/locale/pt.mjs +5 -0
  871. package/lib/locale/pt.mjs.map +1 -1
  872. package/lib/locale/ro.mjs +5 -0
  873. package/lib/locale/ro.mjs.map +1 -1
  874. package/lib/locale/ru.mjs +5 -0
  875. package/lib/locale/ru.mjs.map +1 -1
  876. package/lib/locale/sk.mjs +5 -0
  877. package/lib/locale/sk.mjs.map +1 -1
  878. package/lib/locale/sl.mjs +5 -0
  879. package/lib/locale/sl.mjs.map +1 -1
  880. package/lib/locale/sr-Cyrl.mjs +5 -0
  881. package/lib/locale/sr-Cyrl.mjs.map +1 -1
  882. package/lib/locale/sr-Latn.mjs +5 -0
  883. package/lib/locale/sr-Latn.mjs.map +1 -1
  884. package/lib/locale/sv.mjs +5 -0
  885. package/lib/locale/sv.mjs.map +1 -1
  886. package/lib/locale/th.mjs +5 -0
  887. package/lib/locale/th.mjs.map +1 -1
  888. package/lib/locale/tr.mjs +5 -0
  889. package/lib/locale/tr.mjs.map +1 -1
  890. package/lib/locale/uk.mjs +5 -0
  891. package/lib/locale/uk.mjs.map +1 -1
  892. package/lib/locale/vi.mjs +5 -0
  893. package/lib/locale/vi.mjs.map +1 -1
  894. package/lib/locale/zh-Hans.mjs +5 -0
  895. package/lib/locale/zh-Hans.mjs.map +1 -1
  896. package/lib/locale/zh-Hant.mjs +5 -0
  897. package/lib/locale/zh-Hant.mjs.map +1 -1
  898. package/lib/services/goto/easing-patterns.mjs +24 -24
  899. package/lib/services/goto/easing-patterns.mjs.map +1 -1
  900. package/lib/services/goto/index.mjs +11 -15
  901. package/lib/services/goto/index.mjs.map +1 -1
  902. package/lib/services/goto/util.mjs +1 -8
  903. package/lib/services/goto/util.mjs.map +1 -1
  904. package/lib/styles/main.css +105 -101
  905. package/lib/styles/settings/_colors.scss +84 -84
  906. package/lib/styles/settings/_elevations.scss +3 -3
  907. package/lib/styles/settings/_utilities.scss +11 -4
  908. package/lib/styles/tools/_states.sass +8 -3
  909. package/lib/styles/tools/_variant.sass +0 -1
  910. package/lib/util/anchor.mjs +0 -3
  911. package/lib/util/anchor.mjs.map +1 -1
  912. package/lib/util/animation.mjs +14 -4
  913. package/lib/util/animation.mjs.map +1 -1
  914. package/lib/util/box.mjs +0 -5
  915. package/lib/util/box.mjs.map +1 -1
  916. package/lib/util/color/APCA.mjs +23 -21
  917. package/lib/util/color/APCA.mjs.map +1 -1
  918. package/lib/util/color/transformCIELAB.mjs +0 -2
  919. package/lib/util/color/transformCIELAB.mjs.map +1 -1
  920. package/lib/util/color/transformSRGB.mjs +14 -12
  921. package/lib/util/color/transformSRGB.mjs.map +1 -1
  922. package/lib/util/colorUtils.mjs +8 -25
  923. package/lib/util/colorUtils.mjs.map +1 -1
  924. package/lib/util/colors.mjs.map +1 -1
  925. package/lib/util/console.mjs +5 -14
  926. package/lib/util/console.mjs.map +1 -1
  927. package/lib/util/createSimpleFunctional.mjs +1 -4
  928. package/lib/util/createSimpleFunctional.mjs.map +1 -1
  929. package/lib/util/dateTimeUtils.mjs +0 -10
  930. package/lib/util/dateTimeUtils.mjs.map +1 -1
  931. package/lib/util/defineComponent.mjs +12 -36
  932. package/lib/util/defineComponent.mjs.map +1 -1
  933. package/lib/util/dom.mjs +4 -4
  934. package/lib/util/dom.mjs.map +1 -1
  935. package/lib/util/easing.mjs +0 -1
  936. package/lib/util/easing.mjs.map +1 -1
  937. package/lib/util/getCurrentInstance.mjs +3 -10
  938. package/lib/util/getCurrentInstance.mjs.map +1 -1
  939. package/lib/util/getScrollParent.mjs +3 -4
  940. package/lib/util/getScrollParent.mjs.map +1 -1
  941. package/lib/util/globals.mjs +1 -1
  942. package/lib/util/globals.mjs.map +1 -1
  943. package/lib/util/helpers.mjs +46 -85
  944. package/lib/util/helpers.mjs.map +1 -1
  945. package/lib/util/injectSelf.mjs +0 -1
  946. package/lib/util/injectSelf.mjs.map +1 -1
  947. package/lib/util/isFixedPosition.mjs +0 -2
  948. package/lib/util/isFixedPosition.mjs.map +1 -1
  949. package/lib/util/propsFactory.mjs +4 -5
  950. package/lib/util/propsFactory.mjs.map +1 -1
  951. package/lib/util/useRender.mjs +0 -1
  952. package/lib/util/useRender.mjs.map +1 -1
  953. package/package.json +17 -19
  954. package/lib/composables/rtl.mjs +0 -44
  955. package/lib/composables/rtl.mjs.map +0 -1
  956. package/lib/locale/adapters/vue-intl.mjs +0 -67
  957. package/lib/locale/adapters/vue-intl.mjs.map +0 -1
  958. package/lib/styles.scss +0 -4
@@ -1 +1 @@
1
- {"version":3,"file":"theme.mjs","names":["computed","inject","provide","reactive","ref","watch","watchEffect","colorToInt","colorToRGB","createRange","darken","getCurrentInstance","getLuma","IN_BROWSER","intToHex","lighten","mergeDeep","propsFactory","APCAcontrast","ThemeSymbol","Symbol","for","makeThemeProps","theme","String","defaultThemeOptions","defaultTheme","variations","colors","themes","light","dark","background","surface","primary","secondary","error","info","success","warning","variables","parseThemeOptions","options","isDisabled","key","Object","entries","createTheme","app","head","_context","provides","usehead","parsedOptions","name","computedThemes","acc","original","value","color","variation","fn","amount","keys","test","onColor","colorVal","blackContrast","Math","abs","whiteContrast","min","current","styles","lines","createCssClass","themeName","genCssVariables","map","startsWith","undefined","rgb","r","g","b","bgLines","fgLines","Set","values","flatMap","push","str","i","join","addHeadObjs","style","children","type","id","cspNonce","nonce","updateDOM","styleEl","document","getElementById","updateStyles","immediate","el","createElement","setAttribute","appendChild","innerHTML","themeClasses","global","provideTheme","props","Error","newTheme","useTheme","selector","content","line","lightOverlay","darkOverlay"],"sources":["../../src/composables/theme.ts"],"sourcesContent":["// Utilities\nimport {\n computed,\n inject,\n provide,\n reactive,\n ref,\n watch,\n watchEffect,\n} from 'vue'\nimport {\n colorToInt,\n colorToRGB,\n createRange,\n darken,\n getCurrentInstance,\n getLuma,\n IN_BROWSER,\n intToHex,\n lighten,\n mergeDeep,\n propsFactory,\n} from '@/util'\nimport { APCAcontrast } from '@/util/color/APCA'\n\n// Types\nimport type { App, DeepReadonly, InjectionKey, Ref } from 'vue'\nimport type { HeadAttrs, HeadClient } from '@vueuse/head'\n\ntype DeepPartial<T> = T extends object ? { [P in keyof T]?: DeepPartial<T[P]> } : T\n\nexport type ThemeOptions = false | {\n cspNonce?: string\n defaultTheme?: string\n variations?: false | VariationsOptions\n themes?: Record<string, ThemeDefinition>\n}\nexport type ThemeDefinition = DeepPartial<InternalThemeDefinition>\n\ninterface InternalThemeOptions {\n cspNonce?: string\n isDisabled: boolean\n defaultTheme: string\n variations: false | VariationsOptions\n themes: Record<string, InternalThemeDefinition>\n}\n\ninterface VariationsOptions {\n colors: string[]\n lighten: number\n darken: number\n}\n\ninterface InternalThemeDefinition {\n dark: boolean\n colors: Colors\n variables: Record<string, string | number>\n}\n\nexport interface Colors extends BaseColors, OnColors {\n [key: string]: string\n}\n\ninterface BaseColors {\n background: string\n surface: string\n primary: string\n secondary: string\n success: string\n warning: string\n error: string\n info: string\n}\n\ninterface OnColors {\n 'on-background': string\n 'on-surface': string\n 'on-primary': string\n 'on-secondary': string\n 'on-success': string\n 'on-warning': string\n 'on-error': string\n 'on-info': string\n}\n\nexport interface ThemeInstance {\n readonly isDisabled: boolean\n readonly themes: Ref<Record<string, InternalThemeDefinition>>\n\n readonly name: Readonly<Ref<string>>\n readonly current: DeepReadonly<Ref<InternalThemeDefinition>>\n readonly computedThemes: DeepReadonly<Ref<Record<string, InternalThemeDefinition>>>\n\n readonly themeClasses: Readonly<Ref<string | undefined>>\n readonly styles: Readonly<Ref<string>>\n\n readonly global: {\n readonly name: Ref<string>\n readonly current: DeepReadonly<Ref<InternalThemeDefinition>>\n }\n}\n\nexport const ThemeSymbol: InjectionKey<ThemeInstance> = Symbol.for('vuetify:theme')\n\nexport const makeThemeProps = propsFactory({\n theme: String,\n}, 'theme')\n\nconst defaultThemeOptions: Exclude<ThemeOptions, false> = {\n defaultTheme: 'light',\n variations: { colors: [], lighten: 0, darken: 0 },\n themes: {\n light: {\n dark: false,\n colors: {\n background: '#FFFFFF',\n surface: '#FFFFFF',\n 'surface-variant': '#424242',\n 'on-surface-variant': '#EEEEEE',\n primary: '#6200EE',\n 'primary-darken-1': '#3700B3',\n secondary: '#03DAC6',\n 'secondary-darken-1': '#018786',\n error: '#B00020',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00',\n },\n variables: {\n 'border-color': '#000000',\n 'border-opacity': 0.12,\n 'high-emphasis-opacity': 0.87,\n 'medium-emphasis-opacity': 0.60,\n 'disabled-opacity': 0.38,\n 'idle-opacity': 0.04,\n 'hover-opacity': 0.04,\n 'focus-opacity': 0.12,\n 'selected-opacity': 0.08,\n 'activated-opacity': 0.12,\n 'pressed-opacity': 0.12,\n 'dragged-opacity': 0.08,\n 'kbd-background-color': '#212529',\n 'kbd-color': '#FFFFFF',\n 'code-background-color': '#C2C2C2',\n },\n },\n dark: {\n dark: true,\n colors: {\n background: '#121212',\n surface: '#212121',\n 'surface-variant': '#BDBDBD',\n 'on-surface-variant': '#424242',\n primary: '#BB86FC',\n 'primary-darken-1': '#3700B3',\n secondary: '#03DAC5',\n 'secondary-darken-1': '#03DAC5',\n error: '#CF6679',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00',\n },\n variables: {\n 'border-color': '#FFFFFF',\n 'border-opacity': 0.12,\n 'high-emphasis-opacity': 0.87,\n 'medium-emphasis-opacity': 0.60,\n 'disabled-opacity': 0.38,\n 'idle-opacity': 0.10,\n 'hover-opacity': 0.04,\n 'focus-opacity': 0.12,\n 'selected-opacity': 0.08,\n 'activated-opacity': 0.12,\n 'pressed-opacity': 0.16,\n 'dragged-opacity': 0.08,\n 'kbd-background-color': '#212529',\n 'kbd-color': '#FFFFFF',\n 'code-background-color': '#B7B7B7',\n },\n },\n },\n}\n\nfunction parseThemeOptions (options: ThemeOptions = defaultThemeOptions): InternalThemeOptions {\n if (!options) return { ...defaultThemeOptions, isDisabled: true } as InternalThemeOptions\n\n const themes: Record<string, InternalThemeDefinition> = {}\n for (const [key, theme] of Object.entries(options.themes ?? {})) {\n const defaultTheme = theme.dark\n ? defaultThemeOptions.themes?.dark\n : defaultThemeOptions.themes?.light\n themes[key] = mergeDeep(defaultTheme, theme) as InternalThemeDefinition\n }\n\n return mergeDeep(\n defaultThemeOptions,\n { ...options, themes },\n ) as InternalThemeOptions\n}\n\n// Composables\nexport function createTheme (app: App, options?: ThemeOptions): ThemeInstance {\n const head = app._context.provides.usehead as HeadClient | undefined\n const parsedOptions = reactive(parseThemeOptions(options))\n const name = ref(parsedOptions.defaultTheme)\n const themes = ref(parsedOptions.themes)\n\n const computedThemes = computed(() => {\n const acc: Record<string, InternalThemeDefinition> = {}\n for (const [name, original] of Object.entries(themes.value)) {\n const theme: InternalThemeDefinition = acc[name] = {\n ...original,\n colors: {\n ...original.colors,\n },\n }\n\n if (parsedOptions.variations) {\n for (const name of parsedOptions.variations.colors) {\n const color = theme.colors[name]\n for (const variation of (['lighten', 'darken'] as const)) {\n const fn = variation === 'lighten' ? lighten : darken\n for (const amount of createRange(parsedOptions.variations[variation], 1)) {\n theme.colors[`${name}-${variation}-${amount}`] = intToHex(fn(colorToInt(color), amount))\n }\n }\n }\n }\n\n for (const color of Object.keys(theme.colors)) {\n if (/^on-[a-z]/.test(color) || theme.colors[`on-${color}`]) continue\n\n const onColor = `on-${color}` as keyof OnColors\n const colorVal = colorToInt(theme.colors[color]!)\n\n const blackContrast = Math.abs(APCAcontrast(0, colorVal))\n const whiteContrast = Math.abs(APCAcontrast(0xffffff, colorVal))\n\n // TODO: warn about poor color selections\n // const contrastAsText = Math.abs(APCAcontrast(colorVal, colorToInt(theme.colors.background)))\n // const minContrast = Math.max(blackContrast, whiteContrast)\n // if (minContrast < 60) {\n // consoleInfo(`${key} theme color ${color} has poor contrast (${minContrast.toFixed()}%)`)\n // } else if (contrastAsText < 60 && !['background', 'surface'].includes(color)) {\n // consoleInfo(`${key} theme color ${color} has poor contrast as text (${contrastAsText.toFixed()}%)`)\n // }\n\n // Prefer white text if both have an acceptable contrast ratio\n theme.colors[onColor] = whiteContrast > Math.min(blackContrast, 50) ? '#fff' : '#000'\n }\n }\n\n return acc\n })\n const current = computed(() => computedThemes.value[name.value])\n\n const styles = computed(() => {\n const lines: string[] = []\n\n if (current.value.dark) {\n createCssClass(lines, ':root', ['color-scheme: dark'])\n }\n\n for (const [themeName, theme] of Object.entries(computedThemes.value)) {\n const { variables, dark } = theme\n\n createCssClass(lines, `.v-theme--${themeName}`, [\n `color-scheme: ${dark ? 'dark' : 'normal'}`,\n ...genCssVariables(theme),\n ...Object.keys(variables).map(key => {\n const value = variables[key]\n const color = typeof value === 'string' && value.startsWith('#') ? colorToRGB(value) : undefined\n const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined\n\n return `--v-${key}: ${rgb ?? value}`\n }),\n ])\n }\n\n const bgLines: string[] = []\n const fgLines: string[] = []\n\n const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)))\n for (const key of colors) {\n if (/^on-[a-z]/.test(key)) {\n createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`])\n } else {\n createCssClass(bgLines, `.bg-${key}`, [\n `--v-theme-overlay-multiplier: var(--v-theme-${key}-overlay-multiplier)`,\n `background: rgb(var(--v-theme-${key})) !important`,\n `color: rgb(var(--v-theme-on-${key})) !important`,\n ])\n createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`])\n createCssClass(fgLines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`])\n }\n }\n\n lines.push(...bgLines, ...fgLines)\n\n return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('')\n })\n\n if (head) {\n head.addHeadObjs(computed(() => {\n const style: HeadAttrs = {\n children: styles.value,\n type: 'text/css',\n id: 'vuetify-theme-stylesheet',\n }\n if (parsedOptions.cspNonce) style.nonce = parsedOptions.cspNonce\n\n return { style: [style] }\n }))\n\n if (IN_BROWSER) {\n watchEffect(() => head.updateDOM())\n }\n } else {\n let styleEl = IN_BROWSER\n ? document.getElementById('vuetify-theme-stylesheet')\n : null\n\n watch(styles, updateStyles, { immediate: true })\n function updateStyles () {\n if (parsedOptions.isDisabled) return\n\n if (typeof document !== 'undefined' && !styleEl) {\n const el = document.createElement('style')\n el.type = 'text/css'\n el.id = 'vuetify-theme-stylesheet'\n if (parsedOptions.cspNonce) el.setAttribute('nonce', parsedOptions.cspNonce)\n\n styleEl = el\n document.head.appendChild(styleEl)\n }\n\n if (styleEl) styleEl.innerHTML = styles.value\n }\n }\n\n const themeClasses = computed(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`)\n\n return {\n isDisabled: parsedOptions.isDisabled,\n name,\n themes,\n current,\n computedThemes,\n themeClasses,\n styles,\n global: {\n name,\n current,\n },\n }\n}\n\nexport function provideTheme (props: { theme?: string }) {\n getCurrentInstance('provideTheme')\n\n const theme = inject(ThemeSymbol, null)\n\n if (!theme) throw new Error('Could not find Vuetify theme injection')\n\n const name = computed<string>(() => {\n return props.theme ?? theme?.name.value\n })\n\n const themeClasses = computed(() => theme.isDisabled ? undefined : `v-theme--${name.value}`)\n\n const newTheme: ThemeInstance = {\n ...theme,\n name,\n themeClasses,\n }\n\n provide(ThemeSymbol, newTheme)\n\n return newTheme\n}\n\nexport function useTheme () {\n getCurrentInstance('useTheme')\n\n const theme = inject(ThemeSymbol, null)\n\n if (!theme) throw new Error('Could not find Vuetify theme injection')\n\n return theme\n}\n\nfunction createCssClass (lines: string[], selector: string, content: string[]) {\n lines.push(\n `${selector} {\\n`,\n ...content.map(line => ` ${line};\\n`),\n '}\\n',\n )\n}\n\nfunction genCssVariables (theme: InternalThemeDefinition) {\n const lightOverlay = theme.dark ? 2 : 1\n const darkOverlay = theme.dark ? 1 : 2\n\n const variables: string[] = []\n for (const [key, value] of Object.entries(theme.colors)) {\n const rgb = colorToRGB(value)\n variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`)\n if (!key.startsWith('on-')) {\n variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`)\n }\n }\n\n return variables\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"theme.mjs","names":["computed","inject","provide","reactive","ref","watch","watchEffect","colorToInt","colorToRGB","createRange","darken","getCurrentInstance","getLuma","IN_BROWSER","intToHex","lighten","mergeDeep","propsFactory","APCAcontrast","ThemeSymbol","Symbol","for","makeThemeProps","theme","String","defaultThemeOptions","defaultTheme","variations","colors","themes","light","dark","background","surface","primary","secondary","error","info","success","warning","variables","parseThemeOptions","options","isDisabled","key","Object","entries","createTheme","parsedOptions","name","computedThemes","acc","original","value","color","variation","fn","amount","keys","test","onColor","colorVal","blackContrast","Math","abs","whiteContrast","min","current","styles","lines","createCssClass","themeName","genCssVariables","map","startsWith","undefined","rgb","r","g","b","bgLines","fgLines","Set","values","flatMap","push","str","i","join","install","app","head","_context","provides","usehead","addHeadObjs","style","children","type","id","cspNonce","nonce","updateDOM","styleEl","document","getElementById","updateStyles","immediate","el","createElement","setAttribute","appendChild","innerHTML","themeClasses","global","provideTheme","props","Error","newTheme","useTheme","selector","content","line","lightOverlay","darkOverlay"],"sources":["../../src/composables/theme.ts"],"sourcesContent":["// Utilities\nimport {\n computed,\n inject,\n provide,\n reactive,\n ref,\n watch,\n watchEffect,\n} from 'vue'\nimport {\n colorToInt,\n colorToRGB,\n createRange,\n darken,\n getCurrentInstance,\n getLuma,\n IN_BROWSER,\n intToHex,\n lighten,\n mergeDeep,\n propsFactory,\n} from '@/util'\nimport { APCAcontrast } from '@/util/color/APCA'\n\n// Types\nimport type { App, DeepReadonly, InjectionKey, Ref } from 'vue'\nimport type { HeadAttrs, HeadClient } from '@vueuse/head'\n\ntype DeepPartial<T> = T extends object ? { [P in keyof T]?: DeepPartial<T[P]> } : T\n\nexport type ThemeOptions = false | {\n cspNonce?: string\n defaultTheme?: string\n variations?: false | VariationsOptions\n themes?: Record<string, ThemeDefinition>\n}\nexport type ThemeDefinition = DeepPartial<InternalThemeDefinition>\n\ninterface InternalThemeOptions {\n cspNonce?: string\n isDisabled: boolean\n defaultTheme: string\n variations: false | VariationsOptions\n themes: Record<string, InternalThemeDefinition>\n}\n\ninterface VariationsOptions {\n colors: string[]\n lighten: number\n darken: number\n}\n\ninterface InternalThemeDefinition {\n dark: boolean\n colors: Colors\n variables: Record<string, string | number>\n}\n\nexport interface Colors extends BaseColors, OnColors {\n [key: string]: string\n}\n\ninterface BaseColors {\n background: string\n surface: string\n primary: string\n secondary: string\n success: string\n warning: string\n error: string\n info: string\n}\n\ninterface OnColors {\n 'on-background': string\n 'on-surface': string\n 'on-primary': string\n 'on-secondary': string\n 'on-success': string\n 'on-warning': string\n 'on-error': string\n 'on-info': string\n}\n\nexport interface ThemeInstance {\n readonly isDisabled: boolean\n readonly themes: Ref<Record<string, InternalThemeDefinition>>\n\n readonly name: Readonly<Ref<string>>\n readonly current: DeepReadonly<Ref<InternalThemeDefinition>>\n readonly computedThemes: DeepReadonly<Ref<Record<string, InternalThemeDefinition>>>\n\n readonly themeClasses: Readonly<Ref<string | undefined>>\n readonly styles: Readonly<Ref<string>>\n\n readonly global: {\n readonly name: Ref<string>\n readonly current: DeepReadonly<Ref<InternalThemeDefinition>>\n }\n}\n\nexport const ThemeSymbol: InjectionKey<ThemeInstance> = Symbol.for('vuetify:theme')\n\nexport const makeThemeProps = propsFactory({\n theme: String,\n}, 'theme')\n\nconst defaultThemeOptions: Exclude<ThemeOptions, false> = {\n defaultTheme: 'light',\n variations: { colors: [], lighten: 0, darken: 0 },\n themes: {\n light: {\n dark: false,\n colors: {\n background: '#FFFFFF',\n surface: '#FFFFFF',\n 'surface-variant': '#424242',\n 'on-surface-variant': '#EEEEEE',\n primary: '#6200EE',\n 'primary-darken-1': '#3700B3',\n secondary: '#03DAC6',\n 'secondary-darken-1': '#018786',\n error: '#B00020',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00',\n },\n variables: {\n 'border-color': '#000000',\n 'border-opacity': 0.12,\n 'high-emphasis-opacity': 0.87,\n 'medium-emphasis-opacity': 0.60,\n 'disabled-opacity': 0.38,\n 'idle-opacity': 0.04,\n 'hover-opacity': 0.04,\n 'focus-opacity': 0.12,\n 'selected-opacity': 0.08,\n 'activated-opacity': 0.12,\n 'pressed-opacity': 0.12,\n 'dragged-opacity': 0.08,\n 'theme-kbd': '#212529',\n 'theme-on-kbd': '#FFFFFF',\n 'theme-code': '#F5F5F5',\n 'theme-on-code': '#000000',\n },\n },\n dark: {\n dark: true,\n colors: {\n background: '#121212',\n surface: '#212121',\n 'surface-variant': '#BDBDBD',\n 'on-surface-variant': '#424242',\n primary: '#BB86FC',\n 'primary-darken-1': '#3700B3',\n secondary: '#03DAC5',\n 'secondary-darken-1': '#03DAC5',\n error: '#CF6679',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00',\n },\n variables: {\n 'border-color': '#FFFFFF',\n 'border-opacity': 0.12,\n 'high-emphasis-opacity': 0.87,\n 'medium-emphasis-opacity': 0.60,\n 'disabled-opacity': 0.38,\n 'idle-opacity': 0.10,\n 'hover-opacity': 0.04,\n 'focus-opacity': 0.12,\n 'selected-opacity': 0.08,\n 'activated-opacity': 0.12,\n 'pressed-opacity': 0.16,\n 'dragged-opacity': 0.08,\n 'theme-kbd': '#212529',\n 'theme-on-kbd': '#FFFFFF',\n 'theme-code': '#343434',\n 'theme-on-code': '#CCCCCC',\n },\n },\n },\n}\n\nfunction parseThemeOptions (options: ThemeOptions = defaultThemeOptions): InternalThemeOptions {\n if (!options) return { ...defaultThemeOptions, isDisabled: true } as InternalThemeOptions\n\n const themes: Record<string, InternalThemeDefinition> = {}\n for (const [key, theme] of Object.entries(options.themes ?? {})) {\n const defaultTheme = theme.dark || key === 'dark'\n ? defaultThemeOptions.themes?.dark\n : defaultThemeOptions.themes?.light\n themes[key] = mergeDeep(defaultTheme, theme) as InternalThemeDefinition\n }\n\n return mergeDeep(\n defaultThemeOptions,\n { ...options, themes },\n ) as InternalThemeOptions\n}\n\n// Composables\nexport function createTheme (options?: ThemeOptions): ThemeInstance & { install: (app: App) => void } {\n const parsedOptions = reactive(parseThemeOptions(options))\n const name = ref(parsedOptions.defaultTheme)\n const themes = ref(parsedOptions.themes)\n\n const computedThemes = computed(() => {\n const acc: Record<string, InternalThemeDefinition> = {}\n for (const [name, original] of Object.entries(themes.value)) {\n const theme: InternalThemeDefinition = acc[name] = {\n ...original,\n colors: {\n ...original.colors,\n },\n }\n\n if (parsedOptions.variations) {\n for (const name of parsedOptions.variations.colors) {\n const color = theme.colors[name]\n\n if (!color) continue\n\n for (const variation of (['lighten', 'darken'] as const)) {\n const fn = variation === 'lighten' ? lighten : darken\n for (const amount of createRange(parsedOptions.variations[variation], 1)) {\n theme.colors[`${name}-${variation}-${amount}`] = intToHex(fn(colorToInt(color), amount))\n }\n }\n }\n }\n\n for (const color of Object.keys(theme.colors)) {\n if (/^on-[a-z]/.test(color) || theme.colors[`on-${color}`]) continue\n\n const onColor = `on-${color}` as keyof OnColors\n const colorVal = colorToInt(theme.colors[color]!)\n\n const blackContrast = Math.abs(APCAcontrast(0, colorVal))\n const whiteContrast = Math.abs(APCAcontrast(0xffffff, colorVal))\n\n // TODO: warn about poor color selections\n // const contrastAsText = Math.abs(APCAcontrast(colorVal, colorToInt(theme.colors.background)))\n // const minContrast = Math.max(blackContrast, whiteContrast)\n // if (minContrast < 60) {\n // consoleInfo(`${key} theme color ${color} has poor contrast (${minContrast.toFixed()}%)`)\n // } else if (contrastAsText < 60 && !['background', 'surface'].includes(color)) {\n // consoleInfo(`${key} theme color ${color} has poor contrast as text (${contrastAsText.toFixed()}%)`)\n // }\n\n // Prefer white text if both have an acceptable contrast ratio\n theme.colors[onColor] = whiteContrast > Math.min(blackContrast, 50) ? '#fff' : '#000'\n }\n }\n\n return acc\n })\n const current = computed(() => computedThemes.value[name.value])\n\n const styles = computed(() => {\n const lines: string[] = []\n\n if (current.value.dark) {\n createCssClass(lines, ':root', ['color-scheme: dark'])\n }\n\n for (const [themeName, theme] of Object.entries(computedThemes.value)) {\n const { variables, dark } = theme\n\n createCssClass(lines, `.v-theme--${themeName}`, [\n `color-scheme: ${dark ? 'dark' : 'normal'}`,\n ...genCssVariables(theme),\n ...Object.keys(variables).map(key => {\n const value = variables[key]\n const color = typeof value === 'string' && value.startsWith('#') ? colorToRGB(value) : undefined\n const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined\n\n return `--v-${key}: ${rgb ?? value}`\n }),\n ])\n }\n\n const bgLines: string[] = []\n const fgLines: string[] = []\n\n const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)))\n for (const key of colors) {\n if (/^on-[a-z]/.test(key)) {\n createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`])\n } else {\n createCssClass(bgLines, `.bg-${key}`, [\n `--v-theme-overlay-multiplier: var(--v-theme-${key}-overlay-multiplier)`,\n `background: rgb(var(--v-theme-${key})) !important`,\n `color: rgb(var(--v-theme-on-${key})) !important`,\n ])\n createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`])\n createCssClass(fgLines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`])\n }\n }\n\n lines.push(...bgLines, ...fgLines)\n\n return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('')\n })\n\n function install (app: App) {\n const head = app._context.provides.usehead as HeadClient | undefined\n if (head) {\n head.addHeadObjs(computed(() => {\n const style: HeadAttrs = {\n children: styles.value,\n type: 'text/css',\n id: 'vuetify-theme-stylesheet',\n }\n if (parsedOptions.cspNonce) style.nonce = parsedOptions.cspNonce\n\n return { style: [style] }\n }))\n\n if (IN_BROWSER) {\n watchEffect(() => head.updateDOM())\n }\n } else {\n let styleEl = IN_BROWSER\n ? document.getElementById('vuetify-theme-stylesheet')\n : null\n\n watch(styles, updateStyles, { immediate: true })\n\n function updateStyles () {\n if (parsedOptions.isDisabled) return\n\n if (typeof document !== 'undefined' && !styleEl) {\n const el = document.createElement('style')\n el.type = 'text/css'\n el.id = 'vuetify-theme-stylesheet'\n if (parsedOptions.cspNonce) el.setAttribute('nonce', parsedOptions.cspNonce)\n\n styleEl = el\n document.head.appendChild(styleEl)\n }\n\n if (styleEl) styleEl.innerHTML = styles.value\n }\n }\n }\n\n const themeClasses = computed(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`)\n\n return {\n install,\n isDisabled: parsedOptions.isDisabled,\n name,\n themes,\n current,\n computedThemes,\n themeClasses,\n styles,\n global: {\n name,\n current,\n },\n }\n}\n\nexport function provideTheme (props: { theme?: string }) {\n getCurrentInstance('provideTheme')\n\n const theme = inject(ThemeSymbol, null)\n\n if (!theme) throw new Error('Could not find Vuetify theme injection')\n\n const name = computed<string>(() => {\n return props.theme ?? theme?.name.value\n })\n\n const themeClasses = computed(() => theme.isDisabled ? undefined : `v-theme--${name.value}`)\n\n const newTheme: ThemeInstance = {\n ...theme,\n name,\n themeClasses,\n }\n\n provide(ThemeSymbol, newTheme)\n\n return newTheme\n}\n\nexport function useTheme () {\n getCurrentInstance('useTheme')\n\n const theme = inject(ThemeSymbol, null)\n\n if (!theme) throw new Error('Could not find Vuetify theme injection')\n\n return theme\n}\n\nfunction createCssClass (lines: string[], selector: string, content: string[]) {\n lines.push(\n `${selector} {\\n`,\n ...content.map(line => ` ${line};\\n`),\n '}\\n',\n )\n}\n\nfunction genCssVariables (theme: InternalThemeDefinition) {\n const lightOverlay = theme.dark ? 2 : 1\n const darkOverlay = theme.dark ? 1 : 2\n\n const variables: string[] = []\n for (const [key, value] of Object.entries(theme.colors)) {\n const rgb = colorToRGB(value)\n variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`)\n if (!key.startsWith('on-')) {\n variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`)\n }\n }\n\n return variables\n}\n"],"mappings":"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"}
@@ -7,7 +7,6 @@ export function useToggleScope(source, cb) {
7
7
  scope.run(cb);
8
8
  } else {
9
9
  var _scope;
10
-
11
10
  (_scope = scope) == null ? void 0 : _scope.stop();
12
11
  scope = undefined;
13
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"toggleScope.mjs","names":["effectScope","watch","useToggleScope","source","cb","scope","active","run","stop","undefined","immediate"],"sources":["../../src/composables/toggleScope.ts"],"sourcesContent":["import { effectScope, watch } from 'vue'\nimport type { EffectScope, WatchSource } from 'vue'\n\nexport function useToggleScope (source: WatchSource<boolean>, cb: () => void) {\n let scope: EffectScope | undefined\n watch(source, active => {\n if (active && !scope) {\n scope = effectScope()\n scope.run(cb)\n } else {\n scope?.stop()\n scope = undefined\n }\n }, { immediate: true })\n}\n"],"mappings":"AAAA,SAASA,WAAT,EAAsBC,KAAtB,QAAmC,KAAnC;AAGA,OAAO,SAASC,cAAT,CAAyBC,MAAzB,EAAuDC,EAAvD,EAAuE;EAC5E,IAAIC,KAAJ;EACAJ,KAAK,CAACE,MAAD,EAASG,MAAM,IAAI;IACtB,IAAIA,MAAM,IAAI,CAACD,KAAf,EAAsB;MACpBA,KAAK,GAAGL,WAAW,EAAnB;MACAK,KAAK,CAACE,GAAN,CAAUH,EAAV;IACD,CAHD,MAGO;MAAA;;MACL,UAAAC,KAAK,SAAL,mBAAOG,IAAP;MACAH,KAAK,GAAGI,SAAR;IACD;EACF,CARI,EAQF;IAAEC,SAAS,EAAE;EAAb,CARE,CAAL;AASD"}
1
+ {"version":3,"file":"toggleScope.mjs","names":["effectScope","watch","useToggleScope","source","cb","scope","active","run","stop","undefined","immediate"],"sources":["../../src/composables/toggleScope.ts"],"sourcesContent":["import { effectScope, watch } from 'vue'\nimport type { EffectScope, WatchSource } from 'vue'\n\nexport function useToggleScope (source: WatchSource<boolean>, cb: () => void) {\n let scope: EffectScope | undefined\n watch(source, active => {\n if (active && !scope) {\n scope = effectScope()\n scope.run(cb)\n } else {\n scope?.stop()\n scope = undefined\n }\n }, { immediate: true })\n}\n"],"mappings":"AAAA,SAASA,WAAW,EAAEC,KAAK,QAAQ,KAAK;AAGxC,OAAO,SAASC,cAAc,CAAEC,MAA4B,EAAEC,EAAc,EAAE;EAC5E,IAAIC,KAA8B;EAClCJ,KAAK,CAACE,MAAM,EAAEG,MAAM,IAAI;IACtB,IAAIA,MAAM,IAAI,CAACD,KAAK,EAAE;MACpBA,KAAK,GAAGL,WAAW,EAAE;MACrBK,KAAK,CAACE,GAAG,CAACH,EAAE,CAAC;IACf,CAAC,MAAM;MAAA;MACL,UAAAC,KAAK,qBAAL,OAAOG,IAAI,EAAE;MACbH,KAAK,GAAGI,SAAS;IACnB;EACF,CAAC,EAAE;IAAEC,SAAS,EAAE;EAAK,CAAC,CAAC;AACzB"}
@@ -1,6 +1,5 @@
1
1
  import { CircularBuffer } from "../util/index.mjs";
2
2
  const HORIZON = 100; // ms
3
-
4
3
  const HISTORY = 20; // number of samples to keep
5
4
 
6
5
  /** @see https://android.googlesource.com/platform/frameworks/native/+/master/libs/input/VelocityTracker.cpp */
@@ -8,86 +7,67 @@ function kineticEnergyToVelocity(work) {
8
7
  const sqrt2 = 1.41421356237;
9
8
  return (work < 0 ? -1.0 : 1.0) * Math.sqrt(Math.abs(work)) * sqrt2;
10
9
  }
10
+
11
11
  /**
12
12
  * Returns pointer velocity in px/s
13
13
  */
14
-
15
-
16
14
  export function calculateImpulseVelocity(samples) {
17
15
  // The input should be in reversed time order (most recent sample at index i=0)
18
16
  if (samples.length < 2) {
19
17
  // if 0 or 1 points, velocity is zero
20
18
  return 0;
21
- } // if (samples[1].t > samples[0].t) {
19
+ }
20
+ // if (samples[1].t > samples[0].t) {
22
21
  // // Algorithm will still work, but not perfectly
23
22
  // consoleWarn('Samples provided to calculateImpulseVelocity in the wrong order')
24
23
  // }
25
-
26
-
27
24
  if (samples.length === 2) {
28
25
  // if 2 points, basic linear calculation
29
26
  if (samples[1].t === samples[0].t) {
30
27
  // consoleWarn(`Events have identical time stamps t=${samples[0].t}, setting velocity = 0`)
31
28
  return 0;
32
29
  }
33
-
34
30
  return (samples[1].d - samples[0].d) / (samples[1].t - samples[0].t);
35
- } // Guaranteed to have at least 3 points here
31
+ }
32
+ // Guaranteed to have at least 3 points here
36
33
  // start with the oldest sample and go forward in time
37
-
38
-
39
34
  let work = 0;
40
-
41
35
  for (let i = samples.length - 1; i > 0; i--) {
42
36
  if (samples[i].t === samples[i - 1].t) {
43
37
  // consoleWarn(`Events have identical time stamps t=${samples[i].t}, skipping sample`)
44
38
  continue;
45
39
  }
46
-
47
40
  const vprev = kineticEnergyToVelocity(work); // v[i-1]
48
-
49
41
  const vcurr = (samples[i].d - samples[i - 1].d) / (samples[i].t - samples[i - 1].t); // v[i]
50
-
51
42
  work += (vcurr - vprev) * Math.abs(vcurr);
52
-
53
43
  if (i === samples.length - 1) {
54
44
  work *= 0.5;
55
45
  }
56
46
  }
57
-
58
47
  return kineticEnergyToVelocity(work) * 1000;
59
48
  }
60
49
  export function useVelocity() {
61
50
  const touches = {};
62
-
63
51
  function addMovement(e) {
64
52
  Array.from(e.changedTouches).forEach(touch => {
65
- var _touches$touch$identi;
66
-
67
- const samples = (_touches$touch$identi = touches[touch.identifier]) != null ? _touches$touch$identi : touches[touch.identifier] = new CircularBuffer(HISTORY);
53
+ const samples = touches[touch.identifier] ?? (touches[touch.identifier] = new CircularBuffer(HISTORY));
68
54
  samples.push([e.timeStamp, touch]);
69
55
  });
70
56
  }
71
-
72
57
  function endTouch(e) {
73
58
  Array.from(e.changedTouches).forEach(touch => {
74
59
  delete touches[touch.identifier];
75
60
  });
76
61
  }
77
-
78
62
  function getVelocity(id) {
79
63
  var _touches$id;
80
-
81
64
  const samples = (_touches$id = touches[id]) == null ? void 0 : _touches$id.values().reverse();
82
-
83
65
  if (!samples) {
84
66
  throw new Error(`No samples for touch id ${id}`);
85
67
  }
86
-
87
68
  const newest = samples[0];
88
69
  const x = [];
89
70
  const y = [];
90
-
91
71
  for (const val of samples) {
92
72
  if (newest[0] - val[0] > HORIZON) break;
93
73
  x.push({
@@ -99,11 +79,9 @@ export function useVelocity() {
99
79
  d: val[1].clientY
100
80
  });
101
81
  }
102
-
103
82
  return {
104
83
  x: calculateImpulseVelocity(x),
105
84
  y: calculateImpulseVelocity(y),
106
-
107
85
  get direction() {
108
86
  const {
109
87
  x,
@@ -112,17 +90,14 @@ export function useVelocity() {
112
90
  const [absX, absY] = [Math.abs(x), Math.abs(y)];
113
91
  return absX > absY && x >= 0 ? 'right' : absX > absY && x <= 0 ? 'left' : absY > absX && y >= 0 ? 'down' : absY > absX && y <= 0 ? 'up' : oops();
114
92
  }
115
-
116
93
  };
117
94
  }
118
-
119
95
  return {
120
96
  addMovement,
121
97
  endTouch,
122
98
  getVelocity
123
99
  };
124
100
  }
125
-
126
101
  function oops() {
127
102
  throw new Error();
128
103
  }
@@ -1 +1 @@
1
- {"version":3,"file":"touch.mjs","names":["CircularBuffer","HORIZON","HISTORY","kineticEnergyToVelocity","work","sqrt2","Math","sqrt","abs","calculateImpulseVelocity","samples","length","t","d","i","vprev","vcurr","useVelocity","touches","addMovement","e","Array","from","changedTouches","forEach","touch","identifier","push","timeStamp","endTouch","getVelocity","id","values","reverse","Error","newest","x","y","val","clientX","clientY","direction","absX","absY","oops"],"sources":["../../src/composables/touch.ts"],"sourcesContent":["import { CircularBuffer } from '@/util'\n\nconst HORIZON = 100 // ms\nconst HISTORY = 20 // number of samples to keep\n\nexport interface Sample {\n t: number\n d: number\n}\n\n/** @see https://android.googlesource.com/platform/frameworks/native/+/master/libs/input/VelocityTracker.cpp */\nfunction kineticEnergyToVelocity (work: number) {\n const sqrt2 = 1.41421356237\n return (work < 0 ? -1.0 : 1.0) * Math.sqrt(Math.abs(work)) * sqrt2\n}\n\n/**\n * Returns pointer velocity in px/s\n */\nexport function calculateImpulseVelocity (samples: Sample[]) {\n // The input should be in reversed time order (most recent sample at index i=0)\n if (samples.length < 2) {\n // if 0 or 1 points, velocity is zero\n return 0\n }\n // if (samples[1].t > samples[0].t) {\n // // Algorithm will still work, but not perfectly\n // consoleWarn('Samples provided to calculateImpulseVelocity in the wrong order')\n // }\n if (samples.length === 2) {\n // if 2 points, basic linear calculation\n if (samples[1].t === samples[0].t) {\n // consoleWarn(`Events have identical time stamps t=${samples[0].t}, setting velocity = 0`)\n return 0\n }\n return (samples[1].d - samples[0].d) / (samples[1].t - samples[0].t)\n }\n // Guaranteed to have at least 3 points here\n // start with the oldest sample and go forward in time\n let work = 0\n for (let i = samples.length - 1; i > 0; i--) {\n if (samples[i].t === samples[i - 1].t) {\n // consoleWarn(`Events have identical time stamps t=${samples[i].t}, skipping sample`)\n continue\n }\n const vprev = kineticEnergyToVelocity(work) // v[i-1]\n const vcurr = (samples[i].d - samples[i - 1].d) / (samples[i].t - samples[i - 1].t) // v[i]\n work += (vcurr - vprev) * Math.abs(vcurr)\n if (i === samples.length - 1) {\n work *= 0.5\n }\n }\n return kineticEnergyToVelocity(work) * 1000\n}\n\nexport function useVelocity () {\n const touches: Record<number, CircularBuffer<[number, Touch]> | undefined> = {}\n\n function addMovement (e: TouchEvent) {\n Array.from(e.changedTouches).forEach(touch => {\n const samples = touches[touch.identifier] ?? (touches[touch.identifier] = new CircularBuffer(HISTORY))\n samples.push([e.timeStamp, touch])\n })\n }\n\n function endTouch (e: TouchEvent) {\n Array.from(e.changedTouches).forEach(touch => {\n delete touches[touch.identifier]\n })\n }\n\n function getVelocity (id: number) {\n const samples = touches[id]?.values().reverse()\n\n if (!samples) {\n throw new Error(`No samples for touch id ${id}`)\n }\n\n const newest = samples[0]\n const x: Sample[] = []\n const y: Sample[] = []\n for (const val of samples) {\n if (newest[0] - val[0] > HORIZON) break\n\n x.push({ t: val[0], d: val[1].clientX })\n y.push({ t: val[0], d: val[1].clientY })\n }\n\n return {\n x: calculateImpulseVelocity(x),\n y: calculateImpulseVelocity(y),\n get direction () {\n const { x, y } = this\n const [absX, absY] = [Math.abs(x), Math.abs(y)]\n\n return absX > absY && x >= 0 ? 'right'\n : absX > absY && x <= 0 ? 'left'\n : absY > absX && y >= 0 ? 'down'\n : absY > absX && y <= 0 ? 'up'\n : oops()\n },\n }\n }\n\n return { addMovement, endTouch, getVelocity }\n}\n\nfunction oops (): never {\n throw new Error()\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"touch.mjs","names":["CircularBuffer","HORIZON","HISTORY","kineticEnergyToVelocity","work","sqrt2","Math","sqrt","abs","calculateImpulseVelocity","samples","length","t","d","i","vprev","vcurr","useVelocity","touches","addMovement","e","Array","from","changedTouches","forEach","touch","identifier","push","timeStamp","endTouch","getVelocity","id","values","reverse","Error","newest","x","y","val","clientX","clientY","direction","absX","absY","oops"],"sources":["../../src/composables/touch.ts"],"sourcesContent":["import { CircularBuffer } from '@/util'\n\nconst HORIZON = 100 // ms\nconst HISTORY = 20 // number of samples to keep\n\nexport interface Sample {\n t: number\n d: number\n}\n\n/** @see https://android.googlesource.com/platform/frameworks/native/+/master/libs/input/VelocityTracker.cpp */\nfunction kineticEnergyToVelocity (work: number) {\n const sqrt2 = 1.41421356237\n return (work < 0 ? -1.0 : 1.0) * Math.sqrt(Math.abs(work)) * sqrt2\n}\n\n/**\n * Returns pointer velocity in px/s\n */\nexport function calculateImpulseVelocity (samples: Sample[]) {\n // The input should be in reversed time order (most recent sample at index i=0)\n if (samples.length < 2) {\n // if 0 or 1 points, velocity is zero\n return 0\n }\n // if (samples[1].t > samples[0].t) {\n // // Algorithm will still work, but not perfectly\n // consoleWarn('Samples provided to calculateImpulseVelocity in the wrong order')\n // }\n if (samples.length === 2) {\n // if 2 points, basic linear calculation\n if (samples[1].t === samples[0].t) {\n // consoleWarn(`Events have identical time stamps t=${samples[0].t}, setting velocity = 0`)\n return 0\n }\n return (samples[1].d - samples[0].d) / (samples[1].t - samples[0].t)\n }\n // Guaranteed to have at least 3 points here\n // start with the oldest sample and go forward in time\n let work = 0\n for (let i = samples.length - 1; i > 0; i--) {\n if (samples[i].t === samples[i - 1].t) {\n // consoleWarn(`Events have identical time stamps t=${samples[i].t}, skipping sample`)\n continue\n }\n const vprev = kineticEnergyToVelocity(work) // v[i-1]\n const vcurr = (samples[i].d - samples[i - 1].d) / (samples[i].t - samples[i - 1].t) // v[i]\n work += (vcurr - vprev) * Math.abs(vcurr)\n if (i === samples.length - 1) {\n work *= 0.5\n }\n }\n return kineticEnergyToVelocity(work) * 1000\n}\n\nexport function useVelocity () {\n const touches: Record<number, CircularBuffer<[number, Touch]> | undefined> = {}\n\n function addMovement (e: TouchEvent) {\n Array.from(e.changedTouches).forEach(touch => {\n const samples = touches[touch.identifier] ?? (touches[touch.identifier] = new CircularBuffer(HISTORY))\n samples.push([e.timeStamp, touch])\n })\n }\n\n function endTouch (e: TouchEvent) {\n Array.from(e.changedTouches).forEach(touch => {\n delete touches[touch.identifier]\n })\n }\n\n function getVelocity (id: number) {\n const samples = touches[id]?.values().reverse()\n\n if (!samples) {\n throw new Error(`No samples for touch id ${id}`)\n }\n\n const newest = samples[0]\n const x: Sample[] = []\n const y: Sample[] = []\n for (const val of samples) {\n if (newest[0] - val[0] > HORIZON) break\n\n x.push({ t: val[0], d: val[1].clientX })\n y.push({ t: val[0], d: val[1].clientY })\n }\n\n return {\n x: calculateImpulseVelocity(x),\n y: calculateImpulseVelocity(y),\n get direction () {\n const { x, y } = this\n const [absX, absY] = [Math.abs(x), Math.abs(y)]\n\n return absX > absY && x >= 0 ? 'right'\n : absX > absY && x <= 0 ? 'left'\n : absY > absX && y >= 0 ? 'down'\n : absY > absX && y <= 0 ? 'up'\n : oops()\n },\n }\n }\n\n return { addMovement, endTouch, getVelocity }\n}\n\nfunction oops (): never {\n throw new Error()\n}\n"],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  // Utilities
2
2
  import { h, mergeProps, Transition } from 'vue';
3
3
  import { propsFactory } from "../util/index.mjs"; // Types
4
-
5
4
  export const makeTransitionProps = propsFactory({
6
5
  transition: {
7
6
  type: [Boolean, String, Object],
@@ -10,8 +9,6 @@ export const makeTransitionProps = propsFactory({
10
9
  }
11
10
  }, 'transition');
12
11
  export const MaybeTransition = (props, _ref) => {
13
- var _slots$default;
14
-
15
12
  let {
16
13
  slots
17
14
  } = _ref;
@@ -19,7 +16,6 @@ export const MaybeTransition = (props, _ref) => {
19
16
  transition,
20
17
  ...rest
21
18
  } = props;
22
- if (!transition || typeof transition === 'boolean') return (_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots);
23
19
  const {
24
20
  component = Transition,
25
21
  ...customProps
@@ -1 +1 @@
1
- {"version":3,"file":"transition.mjs","names":["h","mergeProps","Transition","propsFactory","makeTransitionProps","transition","type","Boolean","String","Object","default","validator","val","MaybeTransition","props","slots","rest","component","customProps","name"],"sources":["../../src/composables/transition.ts"],"sourcesContent":["// Utilities\nimport { h, mergeProps, Transition } from 'vue'\nimport { propsFactory } from '@/util'\n\n// Types\nimport type { Component, FunctionalComponent, PropType, TransitionProps } from 'vue'\n\nexport const makeTransitionProps = propsFactory({\n transition: {\n type: [Boolean, String, Object] as PropType<string | boolean | TransitionProps & { component?: Component }>,\n default: 'fade-transition',\n validator: val => val !== true,\n },\n}, 'transition')\n\ninterface MaybeTransitionProps extends TransitionProps {\n transition?: string | boolean | TransitionProps & { component?: any }\n}\n\nexport const MaybeTransition: FunctionalComponent<MaybeTransitionProps> = (props, { slots }) => {\n const { transition, ...rest } = props\n\n if (!transition || typeof transition === 'boolean') return slots.default?.()\n\n const { component = Transition, ...customProps } = typeof transition === 'object' ? transition : {}\n\n return h(\n component,\n mergeProps(typeof transition === 'string' ? { name: transition } : customProps as any, rest as any),\n slots\n )\n}\n"],"mappings":"AAAA;AACA,SAASA,CAAT,EAAYC,UAAZ,EAAwBC,UAAxB,QAA0C,KAA1C;SACSC,Y,6BAET;;AAGA,OAAO,MAAMC,mBAAmB,GAAGD,YAAY,CAAC;EAC9CE,UAAU,EAAE;IACVC,IAAI,EAAE,CAACC,OAAD,EAAUC,MAAV,EAAkBC,MAAlB,CADI;IAEVC,OAAO,EAAE,iBAFC;IAGVC,SAAS,EAAEC,GAAG,IAAIA,GAAG,KAAK;EAHhB;AADkC,CAAD,EAM5C,YAN4C,CAAxC;AAYP,OAAO,MAAMC,eAA0D,GAAG,CAACC,KAAD,WAAsB;EAAA;;EAAA,IAAd;IAAEC;EAAF,CAAc;EAC9F,MAAM;IAAEV,UAAF;IAAc,GAAGW;EAAjB,IAA0BF,KAAhC;EAEA,IAAI,CAACT,UAAD,IAAe,OAAOA,UAAP,KAAsB,SAAzC,EAAoD,yBAAOU,KAAK,CAACL,OAAb,qBAAO,oBAAAK,KAAK,CAAZ;EAEpD,MAAM;IAAEE,SAAS,GAAGf,UAAd;IAA0B,GAAGgB;EAA7B,IAA6C,OAAOb,UAAP,KAAsB,QAAtB,GAAiCA,UAAjC,GAA8C,EAAjG;EAEA,OAAOL,CAAC,CACNiB,SADM,EAENhB,UAAU,CAAC,OAAOI,UAAP,KAAsB,QAAtB,GAAiC;IAAEc,IAAI,EAAEd;EAAR,CAAjC,GAAwDa,WAAzD,EAA6EF,IAA7E,CAFJ,EAGND,KAHM,CAAR;AAKD,CAZM"}
1
+ {"version":3,"file":"transition.mjs","names":["h","mergeProps","Transition","propsFactory","makeTransitionProps","transition","type","Boolean","String","Object","default","validator","val","MaybeTransition","props","slots","rest","component","customProps","name"],"sources":["../../src/composables/transition.ts"],"sourcesContent":["// Utilities\nimport { h, mergeProps, Transition } from 'vue'\nimport { propsFactory } from '@/util'\n\n// Types\nimport type { Component, FunctionalComponent, PropType, TransitionProps } from 'vue'\n\nexport const makeTransitionProps = propsFactory({\n transition: {\n type: [Boolean, String, Object] as PropType<string | boolean | TransitionProps & { component?: Component }>,\n default: 'fade-transition',\n validator: val => val !== true,\n },\n}, 'transition')\n\ninterface MaybeTransitionProps extends TransitionProps {\n transition?: string | boolean | TransitionProps & { component?: any }\n}\n\nexport const MaybeTransition: FunctionalComponent<MaybeTransitionProps> = (props, { slots }) => {\n const { transition, ...rest } = props\n\n const { component = Transition, ...customProps } = typeof transition === 'object' ? transition : {}\n\n return h(\n component,\n mergeProps(typeof transition === 'string' ? { name: transition } : customProps as any, rest as any),\n slots\n )\n}\n"],"mappings":"AAAA;AACA,SAASA,CAAC,EAAEC,UAAU,EAAEC,UAAU,QAAQ,KAAK;AAAA,SACtCC,YAAY,6BAErB;AAGA,OAAO,MAAMC,mBAAmB,GAAGD,YAAY,CAAC;EAC9CE,UAAU,EAAE;IACVC,IAAI,EAAE,CAACC,OAAO,EAAEC,MAAM,EAAEC,MAAM,CAA6E;IAC3GC,OAAO,EAAE,iBAAiB;IAC1BC,SAAS,EAAEC,GAAG,IAAIA,GAAG,KAAK;EAC5B;AACF,CAAC,EAAE,YAAY,CAAC;AAMhB,OAAO,MAAMC,eAA0D,GAAG,CAACC,KAAK,WAAgB;EAAA,IAAd;IAAEC;EAAM,CAAC;EACzF,MAAM;IAAEV,UAAU;IAAE,GAAGW;EAAK,CAAC,GAAGF,KAAK;EAErC,MAAM;IAAEG,SAAS,GAAGf,UAAU;IAAE,GAAGgB;EAAY,CAAC,GAAG,OAAOb,UAAU,KAAK,QAAQ,GAAGA,UAAU,GAAG,CAAC,CAAC;EAEnG,OAAOL,CAAC,CACNiB,SAAS,EACThB,UAAU,CAAC,OAAOI,UAAU,KAAK,QAAQ,GAAG;IAAEc,IAAI,EAAEd;EAAW,CAAC,GAAGa,WAAkB,EAAEF,IAAI,CAAQ,EACnGD,KAAK,CACN;AACH,CAAC"}
@@ -1,10 +1,10 @@
1
1
  // Composables
2
2
  import { useForm } from "./form.mjs";
3
- import { useProxiedModel } from "./proxiedModel.mjs"; // Utilities
4
-
3
+ import { useProxiedModel } from "./proxiedModel.mjs";
4
+ import { useToggleScope } from "./toggleScope.mjs";
5
+ import { makeFocusProps } from "./focus.mjs"; // Utilities
5
6
  import { computed, onBeforeMount, onBeforeUnmount, onMounted, ref, unref, watch } from 'vue';
6
7
  import { getCurrentInstanceName, getUid, propsFactory, wrapInArray } from "../util/index.mjs"; // Types
7
-
8
8
  export const makeValidationProps = propsFactory({
9
9
  disabled: Boolean,
10
10
  error: Boolean,
@@ -17,23 +17,22 @@ export const makeValidationProps = propsFactory({
17
17
  default: 1
18
18
  },
19
19
  name: String,
20
+ label: String,
20
21
  readonly: Boolean,
21
22
  rules: {
22
23
  type: Array,
23
24
  default: () => []
24
25
  },
25
26
  modelValue: null,
26
- validationValue: null
27
- });
27
+ validateOn: String,
28
+ validationValue: null,
29
+ ...makeFocusProps()
30
+ }, 'validation');
28
31
  export function useValidation(props) {
29
32
  let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();
30
33
  let id = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : getUid();
31
34
  const model = useProxiedModel(props, 'modelValue');
32
- const validationModel = computed(() => {
33
- var _props$validationValu;
34
-
35
- return (_props$validationValu = props.validationValue) != null ? _props$validationValu : model.value;
36
- });
35
+ const validationModel = computed(() => props.validationValue === undefined ? model.value : props.validationValue);
37
36
  const form = useForm();
38
37
  const internalErrorMessages = ref([]);
39
38
  const isPristine = ref(true);
@@ -57,11 +56,7 @@ export function useValidation(props) {
57
56
  [`${name}--readonly`]: isReadonly.value
58
57
  };
59
58
  });
60
- const uid = computed(() => {
61
- var _props$name;
62
-
63
- return (_props$name = props.name) != null ? _props$name : unref(id);
64
- });
59
+ const uid = computed(() => props.name ?? unref(id));
65
60
  onBeforeMount(() => {
66
61
  form == null ? void 0 : form.register({
67
62
  id: uid.value,
@@ -72,54 +67,61 @@ export function useValidation(props) {
72
67
  });
73
68
  onBeforeUnmount(() => {
74
69
  form == null ? void 0 : form.unregister(uid.value);
75
- }); // Set initial valid state, for inputs that might not have rules
70
+ });
71
+ const validateOn = computed(() => props.validateOn || (form == null ? void 0 : form.validateOn.value) || 'input');
76
72
 
73
+ // Set initial valid state, for inputs that might not have rules
77
74
  onMounted(() => form == null ? void 0 : form.update(uid.value, isValid.value, errorMessages.value));
78
- watch(validationModel, () => {
79
- if (validationModel.value != null) validate();
75
+ useToggleScope(() => validateOn.value === 'input', () => {
76
+ watch(validationModel, () => {
77
+ if (validationModel.value != null) {
78
+ validate();
79
+ } else if (props.focused) {
80
+ const unwatch = watch(() => props.focused, val => {
81
+ if (!val) validate();
82
+ unwatch();
83
+ });
84
+ }
85
+ });
86
+ });
87
+ useToggleScope(() => validateOn.value === 'blur', () => {
88
+ watch(() => props.focused, val => {
89
+ if (!val) validate();
90
+ });
80
91
  });
81
92
  watch(isValid, () => {
82
93
  form == null ? void 0 : form.update(uid.value, isValid.value, errorMessages.value);
83
94
  });
84
-
85
95
  function reset() {
86
96
  resetValidation();
87
97
  model.value = null;
88
98
  }
89
-
90
99
  function resetValidation() {
91
100
  isPristine.value = true;
92
101
  internalErrorMessages.value = [];
93
102
  }
94
-
95
103
  async function validate() {
96
104
  const results = [];
97
105
  isValidating.value = true;
98
-
99
106
  for (const rule of props.rules) {
100
107
  if (results.length >= (props.maxErrors || 1)) {
101
108
  break;
102
109
  }
103
-
104
110
  const handler = typeof rule === 'function' ? rule : () => rule;
105
111
  const result = await handler(validationModel.value);
106
112
  if (result === true) continue;
107
-
108
113
  if (typeof result !== 'string') {
109
114
  // eslint-disable-next-line no-console
110
115
  console.warn(`${result} is not a valid value. Rule functions must return boolean true or a string.`);
111
116
  continue;
112
117
  }
113
-
114
118
  results.push(result);
115
119
  }
116
-
117
120
  internalErrorMessages.value = results;
118
121
  isValidating.value = false;
119
122
  isPristine.value = false;
120
123
  return internalErrorMessages.value;
121
124
  }
122
-
123
125
  return {
124
126
  errorMessages,
125
127
  isDirty,
@@ -1 +1 @@
1
- {"version":3,"file":"validation.mjs","names":["useForm","useProxiedModel","computed","onBeforeMount","onBeforeUnmount","onMounted","ref","unref","watch","getCurrentInstanceName","getUid","propsFactory","wrapInArray","makeValidationProps","disabled","Boolean","error","errorMessages","type","Array","String","default","maxErrors","Number","name","readonly","rules","modelValue","validationValue","useValidation","props","id","model","validationModel","value","form","internalErrorMessages","isPristine","isDirty","length","isDisabled","isReadonly","isValid","isValidating","validationClasses","uid","register","validate","reset","resetValidation","unregister","update","results","rule","handler","result","console","warn","push"],"sources":["../../src/composables/validation.ts"],"sourcesContent":["// Composables\nimport { useForm } from '@/composables/form'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, onBeforeMount, onBeforeUnmount, onMounted, ref, unref, watch } from 'vue'\nimport { getCurrentInstanceName, getUid, propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { MaybeRef } from '@/util'\n\nexport type ValidationResult = string | boolean\nexport type ValidationRule =\n | ValidationResult\n | PromiseLike<ValidationResult>\n | ((value: any) => ValidationResult)\n | ((value: any) => PromiseLike<ValidationResult>)\n\nexport interface ValidationProps {\n disabled: boolean\n error: boolean\n errorMessages: string | string[]\n maxErrors: string | number\n name: string | undefined\n readonly: boolean\n rules: ValidationRule[]\n modelValue: any\n 'onUpdate:modelValue': ((val: any) => void) | undefined\n validationValue: any\n}\n\nexport const makeValidationProps = propsFactory({\n disabled: Boolean,\n error: Boolean,\n errorMessages: {\n type: [Array, String] as PropType<string | string[]>,\n default: () => ([]),\n },\n maxErrors: {\n type: [Number, String],\n default: 1,\n },\n name: String,\n readonly: Boolean,\n rules: {\n type: Array as PropType<ValidationRule[]>,\n default: () => ([]),\n },\n modelValue: null,\n validationValue: null,\n})\n\nexport function useValidation (\n props: ValidationProps,\n name = getCurrentInstanceName(),\n id: MaybeRef<string | number> = getUid(),\n) {\n const model = useProxiedModel(props, 'modelValue')\n const validationModel = computed(() => props.validationValue ?? model.value)\n const form = useForm()\n const internalErrorMessages = ref<string[]>([])\n const isPristine = ref(true)\n const isDirty = computed(() => !!(\n wrapInArray(model.value === '' ? null : model.value).length ||\n wrapInArray(validationModel.value === '' ? null : validationModel.value).length\n ))\n const isDisabled = computed(() => !!(props.disabled || form?.isDisabled.value))\n const isReadonly = computed(() => !!(props.readonly || form?.isReadonly.value))\n const errorMessages = computed(() => {\n return props.errorMessages.length\n ? wrapInArray(props.errorMessages)\n : internalErrorMessages.value\n })\n const isValid = computed(() => {\n if (props.error || errorMessages.value.length) return false\n if (!props.rules.length) return true\n\n return isPristine.value ? null : true\n })\n const isValidating = ref(false)\n const validationClasses = computed(() => {\n return {\n [`${name}--error`]: isValid.value === false,\n [`${name}--dirty`]: isDirty.value,\n [`${name}--disabled`]: isDisabled.value,\n [`${name}--readonly`]: isReadonly.value,\n }\n })\n\n const uid = computed(() => props.name ?? unref(id))\n\n onBeforeMount(() => {\n form?.register({\n id: uid.value,\n validate,\n reset,\n resetValidation,\n })\n })\n\n onBeforeUnmount(() => {\n form?.unregister(uid.value)\n })\n\n // Set initial valid state, for inputs that might not have rules\n onMounted(() => form?.update(uid.value, isValid.value, errorMessages.value))\n\n watch(validationModel, () => {\n if (validationModel.value != null) validate()\n })\n\n watch(isValid, () => {\n form?.update(uid.value, isValid.value, errorMessages.value)\n })\n\n function reset () {\n resetValidation()\n model.value = null\n }\n\n function resetValidation () {\n isPristine.value = true\n internalErrorMessages.value = []\n }\n\n async function validate () {\n const results = []\n\n isValidating.value = true\n\n for (const rule of props.rules) {\n if (results.length >= (props.maxErrors || 1)) {\n break\n }\n\n const handler = typeof rule === 'function' ? rule : () => rule\n const result = await handler(validationModel.value)\n\n if (result === true) continue\n\n if (typeof result !== 'string') {\n // eslint-disable-next-line no-console\n console.warn(`${result} is not a valid value. Rule functions must return boolean true or a string.`)\n\n continue\n }\n\n results.push(result)\n }\n\n internalErrorMessages.value = results\n isValidating.value = false\n isPristine.value = false\n\n return internalErrorMessages.value\n }\n\n return {\n errorMessages,\n isDirty,\n isDisabled,\n isReadonly,\n isPristine,\n isValid,\n isValidating,\n reset,\n resetValidation,\n validate,\n validationClasses,\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"validation.mjs","names":["useForm","useProxiedModel","useToggleScope","makeFocusProps","computed","onBeforeMount","onBeforeUnmount","onMounted","ref","unref","watch","getCurrentInstanceName","getUid","propsFactory","wrapInArray","makeValidationProps","disabled","Boolean","error","errorMessages","type","Array","String","default","maxErrors","Number","name","label","readonly","rules","modelValue","validateOn","validationValue","useValidation","props","id","model","validationModel","undefined","value","form","internalErrorMessages","isPristine","isDirty","length","isDisabled","isReadonly","isValid","isValidating","validationClasses","uid","register","validate","reset","resetValidation","unregister","update","focused","unwatch","val","results","rule","handler","result","console","warn","push"],"sources":["../../src/composables/validation.ts"],"sourcesContent":["// Composables\nimport { useForm } from '@/composables/form'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useToggleScope } from '@/composables/toggleScope'\nimport { makeFocusProps } from '@/composables/focus'\n\n// Utilities\nimport { computed, onBeforeMount, onBeforeUnmount, onMounted, ref, unref, watch } from 'vue'\nimport { getCurrentInstanceName, getUid, propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { MaybeRef } from '@/util'\n\nexport type ValidationResult = string | boolean\nexport type ValidationRule =\n | ValidationResult\n | PromiseLike<ValidationResult>\n | ((value: any) => ValidationResult)\n | ((value: any) => PromiseLike<ValidationResult>)\n\nexport interface ValidationProps {\n disabled: boolean\n error: boolean\n errorMessages: string | string[]\n focused: boolean\n maxErrors: string | number\n name: string | undefined\n label: string | undefined\n readonly: boolean\n rules: ValidationRule[]\n modelValue: any\n 'onUpdate:modelValue': ((val: any) => void) | undefined\n validateOn?: 'blur' | 'input' | 'submit'\n validationValue: any\n}\n\nexport const makeValidationProps = propsFactory({\n disabled: Boolean,\n error: Boolean,\n errorMessages: {\n type: [Array, String] as PropType<string | string[]>,\n default: () => ([]),\n },\n maxErrors: {\n type: [Number, String],\n default: 1,\n },\n name: String,\n label: String,\n readonly: Boolean,\n rules: {\n type: Array as PropType<ValidationRule[]>,\n default: () => ([]),\n },\n modelValue: null,\n validateOn: String as PropType<ValidationProps['validateOn']>,\n validationValue: null,\n\n ...makeFocusProps(),\n}, 'validation')\n\nexport function useValidation (\n props: ValidationProps,\n name = getCurrentInstanceName(),\n id: MaybeRef<string | number> = getUid(),\n) {\n const model = useProxiedModel(props, 'modelValue')\n const validationModel = computed(() => props.validationValue === undefined ? model.value : props.validationValue)\n const form = useForm()\n const internalErrorMessages = ref<string[]>([])\n const isPristine = ref(true)\n const isDirty = computed(() => !!(\n wrapInArray(model.value === '' ? null : model.value).length ||\n wrapInArray(validationModel.value === '' ? null : validationModel.value).length\n ))\n const isDisabled = computed(() => !!(props.disabled || form?.isDisabled.value))\n const isReadonly = computed(() => !!(props.readonly || form?.isReadonly.value))\n const errorMessages = computed(() => {\n return props.errorMessages.length\n ? wrapInArray(props.errorMessages)\n : internalErrorMessages.value\n })\n const isValid = computed(() => {\n if (props.error || errorMessages.value.length) return false\n if (!props.rules.length) return true\n\n return isPristine.value ? null : true\n })\n const isValidating = ref(false)\n const validationClasses = computed(() => {\n return {\n [`${name}--error`]: isValid.value === false,\n [`${name}--dirty`]: isDirty.value,\n [`${name}--disabled`]: isDisabled.value,\n [`${name}--readonly`]: isReadonly.value,\n }\n })\n\n const uid = computed(() => props.name ?? unref(id))\n\n onBeforeMount(() => {\n form?.register({\n id: uid.value,\n validate,\n reset,\n resetValidation,\n })\n })\n\n onBeforeUnmount(() => {\n form?.unregister(uid.value)\n })\n\n const validateOn = computed(() => props.validateOn || form?.validateOn.value || 'input')\n\n // Set initial valid state, for inputs that might not have rules\n onMounted(() => form?.update(uid.value, isValid.value, errorMessages.value))\n\n useToggleScope(() => validateOn.value === 'input', () => {\n watch(validationModel, () => {\n if (validationModel.value != null) {\n validate()\n } else if (props.focused) {\n const unwatch = watch(() => props.focused, val => {\n if (!val) validate()\n\n unwatch()\n })\n }\n })\n })\n\n useToggleScope(() => validateOn.value === 'blur', () => {\n watch(() => props.focused, val => {\n if (!val) validate()\n })\n })\n\n watch(isValid, () => {\n form?.update(uid.value, isValid.value, errorMessages.value)\n })\n\n function reset () {\n resetValidation()\n model.value = null\n }\n\n function resetValidation () {\n isPristine.value = true\n internalErrorMessages.value = []\n }\n\n async function validate () {\n const results = []\n\n isValidating.value = true\n\n for (const rule of props.rules) {\n if (results.length >= (props.maxErrors || 1)) {\n break\n }\n\n const handler = typeof rule === 'function' ? rule : () => rule\n const result = await handler(validationModel.value)\n\n if (result === true) continue\n\n if (typeof result !== 'string') {\n // eslint-disable-next-line no-console\n console.warn(`${result} is not a valid value. Rule functions must return boolean true or a string.`)\n\n continue\n }\n\n results.push(result)\n }\n\n internalErrorMessages.value = results\n isValidating.value = false\n isPristine.value = false\n\n return internalErrorMessages.value\n }\n\n return {\n errorMessages,\n isDirty,\n isDisabled,\n isReadonly,\n isPristine,\n isValid,\n isValidating,\n reset,\n resetValidation,\n validate,\n validationClasses,\n }\n}\n"],"mappings":"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"}
@@ -1,10 +1,8 @@
1
1
  import { createVNode as _createVNode, Fragment as _Fragment } from "vue";
2
2
  // Composables
3
3
  import { useColor } from "./color.mjs"; // Utilities
4
-
5
4
  import { computed, unref } from 'vue';
6
5
  import { getCurrentInstanceName, propsFactory } from "../util/index.mjs"; // Types
7
-
8
6
  export const allowedVariants = ['elevated', 'flat', 'tonal', 'outlined', 'text', 'plain'];
9
7
  export function genOverlays(isClickable, name) {
10
8
  return _createVNode(_Fragment, null, [isClickable && _createVNode("span", {
@@ -1 +1 @@
1
- {"version":3,"file":"variant.mjs","names":["useColor","computed","unref","getCurrentInstanceName","propsFactory","allowedVariants","genOverlays","isClickable","name","makeVariantProps","color","String","variant","type","default","validator","v","includes","useVariant","props","variantClasses","colorClasses","colorStyles"],"sources":["../../src/composables/variant.tsx"],"sourcesContent":["// Composables\nimport { useColor } from '@/composables/color'\n\n// Utilities\nimport { computed, unref } from 'vue'\nimport { getCurrentInstanceName, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { MaybeRef } from '@/util'\n\nexport const allowedVariants = [\n 'elevated',\n 'flat',\n 'tonal',\n 'outlined',\n 'text',\n 'plain',\n] as const\n\nexport type Variant = typeof allowedVariants[number]\n\nexport interface VariantProps {\n color?: string\n variant: Variant\n}\n\nexport function genOverlays (isClickable: boolean, name: string) {\n return (\n <>\n { isClickable && <span key=\"overlay\" class={`${name}__overlay`} /> }\n\n <span key=\"underlay\" class={`${name}__underlay`} />\n </>\n )\n}\n\nexport const makeVariantProps = propsFactory({\n color: String,\n variant: {\n type: String as PropType<Variant>,\n default: 'elevated',\n validator: (v: any) => allowedVariants.includes(v),\n },\n}, 'variant')\n\nexport function useVariant (\n props: MaybeRef<VariantProps>,\n name = getCurrentInstanceName(),\n) {\n const variantClasses = computed(() => {\n const { variant } = unref(props)\n return `${name}--variant-${variant}`\n })\n\n const { colorClasses, colorStyles } = useColor(computed(() => {\n const { variant, color } = unref(props)\n return {\n [['elevated', 'flat'].includes(variant) ? 'background' : 'text']: color,\n }\n }))\n\n return { colorClasses, colorStyles, variantClasses }\n}\n"],"mappings":";AAAA;SACSA,Q,uBAET;;AACA,SAASC,QAAT,EAAmBC,KAAnB,QAAgC,KAAhC;SACSC,sB,EAAwBC,Y,6BAEjC;;AAIA,OAAO,MAAMC,eAAe,GAAG,CAC7B,UAD6B,EAE7B,MAF6B,EAG7B,OAH6B,EAI7B,UAJ6B,EAK7B,MAL6B,EAM7B,OAN6B,CAAxB;AAgBP,OAAO,SAASC,WAAT,CAAsBC,WAAtB,EAA4CC,IAA5C,EAA0D;EAC/D,sCAEMD,WAAW;IAAA,OAAc,SAAd;IAAA,SAAgC,GAAEC,IAAK;EAAvC,QAFjB;IAAA,OAIc,UAJd;IAAA,SAIiC,GAAEA,IAAK;EAJxC;AAOD;AAED,OAAO,MAAMC,gBAAgB,GAAGL,YAAY,CAAC;EAC3CM,KAAK,EAAEC,MADoC;EAE3CC,OAAO,EAAE;IACPC,IAAI,EAAEF,MADC;IAEPG,OAAO,EAAE,UAFF;IAGPC,SAAS,EAAGC,CAAD,IAAYX,eAAe,CAACY,QAAhB,CAAyBD,CAAzB;EAHhB;AAFkC,CAAD,EAOzC,SAPyC,CAArC;AASP,OAAO,SAASE,UAAT,CACLC,KADK,EAGL;EAAA,IADAX,IACA,uEADOL,sBAAsB,EAC7B;EACA,MAAMiB,cAAc,GAAGnB,QAAQ,CAAC,MAAM;IACpC,MAAM;MAAEW;IAAF,IAAcV,KAAK,CAACiB,KAAD,CAAzB;IACA,OAAQ,GAAEX,IAAK,aAAYI,OAAQ,EAAnC;EACD,CAH8B,CAA/B;EAKA,MAAM;IAAES,YAAF;IAAgBC;EAAhB,IAAgCtB,QAAQ,CAACC,QAAQ,CAAC,MAAM;IAC5D,MAAM;MAAEW,OAAF;MAAWF;IAAX,IAAqBR,KAAK,CAACiB,KAAD,CAAhC;IACA,OAAO;MACL,CAAC,CAAC,UAAD,EAAa,MAAb,EAAqBF,QAArB,CAA8BL,OAA9B,IAAyC,YAAzC,GAAwD,MAAzD,GAAkEF;IAD7D,CAAP;EAGD,CALsD,CAAT,CAA9C;EAOA,OAAO;IAAEW,YAAF;IAAgBC,WAAhB;IAA6BF;EAA7B,CAAP;AACD"}
1
+ {"version":3,"file":"variant.mjs","names":["useColor","computed","unref","getCurrentInstanceName","propsFactory","allowedVariants","genOverlays","isClickable","name","makeVariantProps","color","String","variant","type","default","validator","v","includes","useVariant","props","variantClasses","colorClasses","colorStyles"],"sources":["../../src/composables/variant.tsx"],"sourcesContent":["// Composables\nimport { useColor } from '@/composables/color'\n\n// Utilities\nimport { computed, unref } from 'vue'\nimport { getCurrentInstanceName, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { MaybeRef } from '@/util'\n\nexport const allowedVariants = [\n 'elevated',\n 'flat',\n 'tonal',\n 'outlined',\n 'text',\n 'plain',\n] as const\n\nexport type Variant = typeof allowedVariants[number]\n\nexport interface VariantProps {\n color?: string\n variant: Variant\n}\n\nexport function genOverlays (isClickable: boolean, name: string) {\n return (\n <>\n { isClickable && <span key=\"overlay\" class={`${name}__overlay`} /> }\n\n <span key=\"underlay\" class={`${name}__underlay`} />\n </>\n )\n}\n\nexport const makeVariantProps = propsFactory({\n color: String,\n variant: {\n type: String as PropType<Variant>,\n default: 'elevated',\n validator: (v: any) => allowedVariants.includes(v),\n },\n}, 'variant')\n\nexport function useVariant (\n props: MaybeRef<VariantProps>,\n name = getCurrentInstanceName(),\n) {\n const variantClasses = computed(() => {\n const { variant } = unref(props)\n return `${name}--variant-${variant}`\n })\n\n const { colorClasses, colorStyles } = useColor(computed(() => {\n const { variant, color } = unref(props)\n return {\n [['elevated', 'flat'].includes(variant) ? 'background' : 'text']: color,\n }\n }))\n\n return { colorClasses, colorStyles, variantClasses }\n}\n"],"mappings":";AAAA;AAAA,SACSA,QAAQ,uBAEjB;AACA,SAASC,QAAQ,EAAEC,KAAK,QAAQ,KAAK;AAAA,SAC5BC,sBAAsB,EAAEC,YAAY,6BAE7C;AAIA,OAAO,MAAMC,eAAe,GAAG,CAC7B,UAAU,EACV,MAAM,EACN,OAAO,EACP,UAAU,EACV,MAAM,EACN,OAAO,CACC;AASV,OAAO,SAASC,WAAW,CAAEC,WAAoB,EAAEC,IAAY,EAAE;EAC/D,sCAEMD,WAAW;IAAA,OAAc,SAAS;IAAA,SAAS,GAAEC,IAAK;EAAU,QAAI;IAAA,OAExD,UAAU;IAAA,SAAS,GAAEA,IAAK;EAAW;AAGrD;AAEA,OAAO,MAAMC,gBAAgB,GAAGL,YAAY,CAAC;EAC3CM,KAAK,EAAEC,MAAM;EACbC,OAAO,EAAE;IACPC,IAAI,EAAEF,MAA2B;IACjCG,OAAO,EAAE,UAAU;IACnBC,SAAS,EAAGC,CAAM,IAAKX,eAAe,CAACY,QAAQ,CAACD,CAAC;EACnD;AACF,CAAC,EAAE,SAAS,CAAC;AAEb,OAAO,SAASE,UAAU,CACxBC,KAA6B,EAE7B;EAAA,IADAX,IAAI,uEAAGL,sBAAsB,EAAE;EAE/B,MAAMiB,cAAc,GAAGnB,QAAQ,CAAC,MAAM;IACpC,MAAM;MAAEW;IAAQ,CAAC,GAAGV,KAAK,CAACiB,KAAK,CAAC;IAChC,OAAQ,GAAEX,IAAK,aAAYI,OAAQ,EAAC;EACtC,CAAC,CAAC;EAEF,MAAM;IAAES,YAAY;IAAEC;EAAY,CAAC,GAAGtB,QAAQ,CAACC,QAAQ,CAAC,MAAM;IAC5D,MAAM;MAAEW,OAAO;MAAEF;IAAM,CAAC,GAAGR,KAAK,CAACiB,KAAK,CAAC;IACvC,OAAO;MACL,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,CAACF,QAAQ,CAACL,OAAO,CAAC,GAAG,YAAY,GAAG,MAAM,GAAGF;IACpE,CAAC;EACH,CAAC,CAAC,CAAC;EAEH,OAAO;IAAEW,YAAY;IAAEC,WAAW;IAAEF;EAAe,CAAC;AACtD"}