vuetify 3.1.11 → 3.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (472) hide show
  1. package/dist/_component-variables-labs.sass +2 -1
  2. package/dist/json/attributes.json +4333 -4117
  3. package/dist/json/importMap-labs.json +8 -4
  4. package/dist/json/importMap.json +178 -178
  5. package/dist/json/tags.json +603 -544
  6. package/dist/json/web-types.json +14849 -14270
  7. package/dist/vuetify-labs.css +389 -171
  8. package/dist/vuetify-labs.d.ts +1881 -993
  9. package/dist/vuetify-labs.esm.js +686 -488
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +685 -489
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.css +138 -140
  14. package/dist/vuetify.d.ts +1394 -765
  15. package/dist/vuetify.esm.js +523 -474
  16. package/dist/vuetify.esm.js.map +1 -1
  17. package/dist/vuetify.js +523 -476
  18. package/dist/vuetify.js.map +1 -1
  19. package/dist/vuetify.min.css +2 -2
  20. package/dist/vuetify.min.js +353 -346
  21. package/dist/vuetify.min.js.map +1 -1
  22. package/lib/components/VAlert/VAlert.mjs.map +1 -1
  23. package/lib/components/VApp/VApp.mjs.map +1 -1
  24. package/lib/components/VApp/index.d.ts +2 -2
  25. package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
  26. package/lib/components/VAppBar/VAppBarNavIcon.mjs.map +1 -1
  27. package/lib/components/VAppBar/VAppBarTitle.mjs.map +1 -1
  28. package/lib/components/VAutocomplete/VAutocomplete.mjs +2 -3
  29. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  30. package/lib/components/VAutocomplete/index.d.ts +39 -39
  31. package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
  32. package/lib/components/VBadge/VBadge.css +1 -0
  33. package/lib/components/VBadge/VBadge.mjs +1 -1
  34. package/lib/components/VBadge/VBadge.mjs.map +1 -1
  35. package/lib/components/VBadge/VBadge.sass +1 -0
  36. package/lib/components/VBadge/index.d.ts +13 -13
  37. package/lib/components/VBanner/VBanner.mjs.map +1 -1
  38. package/lib/components/VBanner/VBannerActions.mjs.map +1 -1
  39. package/lib/components/VBottomNavigation/VBottomNavigation.mjs.map +1 -1
  40. package/lib/components/VBottomSheet/VBottomSheet.mjs.map +1 -1
  41. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
  42. package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.mjs.map +1 -1
  43. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs.map +1 -1
  44. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  45. package/lib/components/VBtn/index.d.ts +4 -4
  46. package/lib/components/VBtnGroup/VBtnGroup.mjs.map +1 -1
  47. package/lib/components/VBtnToggle/VBtnToggle.mjs.map +1 -1
  48. package/lib/components/VCalendar/VCalendar.mjs.map +1 -1
  49. package/lib/components/VCalendar/VCalendarCategory.mjs.map +1 -1
  50. package/lib/components/VCalendar/VCalendarDaily.mjs.map +1 -1
  51. package/lib/components/VCalendar/VCalendarMonthly.mjs.map +1 -1
  52. package/lib/components/VCalendar/VCalendarWeekly.mjs.map +1 -1
  53. package/lib/components/VCalendar/mixins/calendar-base.mjs.map +1 -1
  54. package/lib/components/VCalendar/mixins/calendar-with-events.mjs.map +1 -1
  55. package/lib/components/VCalendar/mixins/calendar-with-intervals.mjs.map +1 -1
  56. package/lib/components/VCalendar/mixins/mouse.mjs.map +1 -1
  57. package/lib/components/VCalendar/mixins/times.mjs.map +1 -1
  58. package/lib/components/VCalendar/modes/column.mjs.map +1 -1
  59. package/lib/components/VCalendar/modes/common.mjs.map +1 -1
  60. package/lib/components/VCalendar/modes/stack.mjs.map +1 -1
  61. package/lib/components/VCalendar/util/events.mjs.map +1 -1
  62. package/lib/components/VCalendar/util/parser.mjs.map +1 -1
  63. package/lib/components/VCalendar/util/props.mjs.map +1 -1
  64. package/lib/components/VCalendar/util/timestamp.mjs.map +1 -1
  65. package/lib/components/VCard/VCard.mjs.map +1 -1
  66. package/lib/components/VCard/VCardActions.mjs.map +1 -1
  67. package/lib/components/VCard/VCardItem.mjs.map +1 -1
  68. package/lib/components/VCard/index.d.ts +1 -13
  69. package/lib/components/VCarousel/VCarousel.mjs +10 -10
  70. package/lib/components/VCarousel/VCarousel.mjs.map +1 -1
  71. package/lib/components/VCarousel/VCarouselItem.mjs.map +1 -1
  72. package/lib/components/VCarousel/index.d.ts +197 -19
  73. package/lib/components/VCheckbox/VCheckbox.mjs +2 -2
  74. package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
  75. package/lib/components/VCheckbox/VCheckboxBtn.mjs.map +1 -1
  76. package/lib/components/VCheckbox/index.d.ts +41 -50
  77. package/lib/components/VChip/VChip.mjs.map +1 -1
  78. package/lib/components/VChipGroup/VChipGroup.mjs.map +1 -1
  79. package/lib/components/VColorPicker/VColorPicker.mjs +58 -61
  80. package/lib/components/VColorPicker/VColorPicker.mjs.map +1 -1
  81. package/lib/components/VColorPicker/VColorPickerCanvas.mjs.map +1 -1
  82. package/lib/components/VColorPicker/VColorPickerEdit.mjs.map +1 -1
  83. package/lib/components/VColorPicker/VColorPickerPreview.mjs.map +1 -1
  84. package/lib/components/VColorPicker/VColorPickerSwatches.mjs.map +1 -1
  85. package/lib/components/VColorPicker/index.d.ts +113 -50
  86. package/lib/components/VColorPicker/util/index.mjs.map +1 -1
  87. package/lib/components/VCombobox/VCombobox.mjs +11 -4
  88. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  89. package/lib/components/VCombobox/index.d.ts +39 -39
  90. package/lib/components/VCounter/VCounter.mjs.map +1 -1
  91. package/lib/components/VCounter/index.d.ts +123 -24
  92. package/lib/components/VData/VData.mjs.map +1 -1
  93. package/lib/components/VDataIterator/VDataFooter.mjs.map +1 -1
  94. package/lib/components/VDataIterator/VDataIterator.mjs.map +1 -1
  95. package/lib/components/VDatePicker/VDatePicker.mjs.map +1 -1
  96. package/lib/components/VDatePicker/VDatePickerDateTable.mjs.map +1 -1
  97. package/lib/components/VDatePicker/VDatePickerHeader.mjs.map +1 -1
  98. package/lib/components/VDatePicker/VDatePickerMonthTable.mjs.map +1 -1
  99. package/lib/components/VDatePicker/VDatePickerTitle.mjs.map +1 -1
  100. package/lib/components/VDatePicker/VDatePickerYears.mjs.map +1 -1
  101. package/lib/components/VDatePicker/mixins/date-picker-table.mjs.map +1 -1
  102. package/lib/components/VDatePicker/util/createNativeLocaleFormatter.mjs.map +1 -1
  103. package/lib/components/VDatePicker/util/eventHelpers.mjs.map +1 -1
  104. package/lib/components/VDatePicker/util/isDateAllowed.mjs.map +1 -1
  105. package/lib/components/VDatePicker/util/pad.mjs.map +1 -1
  106. package/lib/components/VDefaultsProvider/VDefaultsProvider.mjs.map +1 -1
  107. package/lib/components/VDialog/VDialog.css +11 -18
  108. package/lib/components/VDialog/VDialog.mjs +2 -2
  109. package/lib/components/VDialog/VDialog.mjs.map +1 -1
  110. package/lib/components/VDialog/VDialog.sass +8 -15
  111. package/lib/components/VDialog/index.d.ts +43 -43
  112. package/lib/components/VDivider/VDivider.mjs.map +1 -1
  113. package/lib/components/VExpansionPanel/VExpansionPanel.mjs.map +1 -1
  114. package/lib/components/VExpansionPanel/VExpansionPanelText.mjs.map +1 -1
  115. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
  116. package/lib/components/VExpansionPanel/VExpansionPanels.mjs.map +1 -1
  117. package/lib/components/VField/VField.mjs +5 -1
  118. package/lib/components/VField/VField.mjs.map +1 -1
  119. package/lib/components/VField/VFieldLabel.mjs.map +1 -1
  120. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  121. package/lib/components/VFileInput/index.d.ts +9 -9
  122. package/lib/components/VFooter/VFooter.mjs.map +1 -1
  123. package/lib/components/VForm/VForm.mjs.map +1 -1
  124. package/lib/components/VGrid/VCol.mjs +2 -2
  125. package/lib/components/VGrid/VCol.mjs.map +1 -1
  126. package/lib/components/VGrid/VContainer.mjs.map +1 -1
  127. package/lib/components/VGrid/VRow.mjs +2 -2
  128. package/lib/components/VGrid/VRow.mjs.map +1 -1
  129. package/lib/components/VHover/VHover.mjs.map +1 -1
  130. package/lib/components/VIcon/VIcon.mjs.map +1 -1
  131. package/lib/components/VImg/VImg.mjs.map +1 -1
  132. package/lib/components/VImg/index.d.ts +9 -9
  133. package/lib/components/VInput/InputIcon.mjs.map +1 -1
  134. package/lib/components/VInput/VInput.mjs.map +1 -1
  135. package/lib/components/VItemGroup/VItem.mjs.map +1 -1
  136. package/lib/components/VItemGroup/VItemGroup.mjs.map +1 -1
  137. package/lib/components/VLabel/VLabel.mjs.map +1 -1
  138. package/lib/components/VLayout/VLayout.mjs.map +1 -1
  139. package/lib/components/VLayout/VLayoutItem.mjs.map +1 -1
  140. package/lib/components/VLayout/index.d.ts +2 -2
  141. package/lib/components/VLazy/VLazy.mjs.map +1 -1
  142. package/lib/components/VLazy/index.d.ts +13 -13
  143. package/lib/components/VList/VList.mjs.map +1 -1
  144. package/lib/components/VList/VListChildren.mjs.map +1 -1
  145. package/lib/components/VList/VListGroup.mjs +24 -13
  146. package/lib/components/VList/VListGroup.mjs.map +1 -1
  147. package/lib/components/VList/VListItem.mjs.map +1 -1
  148. package/lib/components/VList/VListItemAction.mjs.map +1 -1
  149. package/lib/components/VList/VListItemMedia.mjs.map +1 -1
  150. package/lib/components/VList/VListSubheader.mjs.map +1 -1
  151. package/lib/components/VList/list.mjs.map +1 -1
  152. package/lib/components/VLocaleProvider/VLocaleProvider.mjs.map +1 -1
  153. package/lib/components/VMain/VMain.mjs.map +1 -1
  154. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  155. package/lib/components/VMenu/index.d.ts +43 -43
  156. package/lib/components/VMessages/VMessages.mjs.map +1 -1
  157. package/lib/components/VMessages/index.d.ts +123 -24
  158. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +8 -2
  159. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  160. package/lib/components/VNavigationDrawer/sticky.mjs.map +1 -1
  161. package/lib/components/VNavigationDrawer/touch.mjs.map +1 -1
  162. package/lib/components/VNoSsr/VNoSsr.mjs.map +1 -1
  163. package/lib/components/VNoSsr/index.d.ts +1 -13
  164. package/lib/components/VOtpInput/VOtpInput.mjs.map +1 -1
  165. package/lib/components/VOverflowBtn/VOverflowBtn.mjs.map +1 -1
  166. package/lib/components/VOverlay/VOverlay.css +1 -1
  167. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  168. package/lib/components/VOverlay/VOverlay.sass +1 -1
  169. package/lib/components/VOverlay/index.d.ts +15 -15
  170. package/lib/components/VOverlay/locationStrategies.mjs.map +1 -1
  171. package/lib/components/VOverlay/requestNewFrame.mjs.map +1 -1
  172. package/lib/components/VOverlay/scrollStrategies.mjs.map +1 -1
  173. package/lib/components/VOverlay/useActivator.mjs.map +1 -1
  174. package/lib/components/VOverlay/util/point.mjs.map +1 -1
  175. package/lib/components/VPagination/VPagination.mjs +2 -2
  176. package/lib/components/VPagination/VPagination.mjs.map +1 -1
  177. package/lib/components/VParallax/VParallax.mjs.map +1 -1
  178. package/lib/components/VPicker/VPicker.mjs.map +1 -1
  179. package/lib/components/VProgressCircular/VProgressCircular.mjs.map +1 -1
  180. package/lib/components/VProgressLinear/VProgressLinear.css +1 -1
  181. package/lib/components/VProgressLinear/VProgressLinear.mjs.map +1 -1
  182. package/lib/components/VRadio/VRadio.mjs.map +1 -1
  183. package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
  184. package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
  185. package/lib/components/VRating/VRating.mjs.map +1 -1
  186. package/lib/components/VRating/index.d.ts +2 -2
  187. package/lib/components/VResponsive/VResponsive.mjs.map +1 -1
  188. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  189. package/lib/components/VSelect/index.d.ts +39 -39
  190. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  191. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs.map +1 -1
  192. package/lib/components/VSheet/VSheet.mjs.map +1 -1
  193. package/lib/components/VSlideGroup/VSlideGroup.mjs +29 -28
  194. package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
  195. package/lib/components/VSlideGroup/VSlideGroupItem.mjs.map +1 -1
  196. package/lib/components/VSlideGroup/helpers.mjs.map +1 -1
  197. package/lib/components/VSlideGroup/index.d.ts +17 -17
  198. package/lib/components/VSlider/VSlider.mjs +1 -1
  199. package/lib/components/VSlider/VSlider.mjs.map +1 -1
  200. package/lib/components/VSlider/VSliderThumb.mjs.map +1 -1
  201. package/lib/components/VSlider/VSliderTrack.mjs.map +1 -1
  202. package/lib/components/VSlider/slider.mjs +1 -1
  203. package/lib/components/VSlider/slider.mjs.map +1 -1
  204. package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
  205. package/lib/components/VSnackbar/index.d.ts +43 -43
  206. package/lib/components/VSparkline/VSparkline.mjs.map +1 -1
  207. package/lib/components/VSparkline/helpers/core.mjs.map +1 -1
  208. package/lib/components/VSparkline/helpers/math.mjs.map +1 -1
  209. package/lib/components/VSparkline/helpers/path.mjs.map +1 -1
  210. package/lib/components/VSpeedDial/VSpeedDial.mjs.map +1 -1
  211. package/lib/components/VStepper/VStepper.mjs.map +1 -1
  212. package/lib/components/VStepper/VStepperContent.mjs.map +1 -1
  213. package/lib/components/VStepper/VStepperStep.mjs.map +1 -1
  214. package/lib/components/VSwitch/VSwitch.css +4 -0
  215. package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
  216. package/lib/components/VSwitch/VSwitch.sass +4 -0
  217. package/lib/components/VSystemBar/VSystemBar.mjs.map +1 -1
  218. package/lib/components/VTable/VTable.css +1 -1
  219. package/lib/components/VTable/VTable.mjs.map +1 -1
  220. package/lib/components/VTable/VTable.sass +1 -1
  221. package/lib/components/VTabs/VTab.mjs.map +1 -1
  222. package/lib/components/VTabs/VTabs.mjs +25 -30
  223. package/lib/components/VTabs/VTabs.mjs.map +1 -1
  224. package/lib/components/VTabs/index.d.ts +165 -28
  225. package/lib/components/VTextField/VTextField.mjs +7 -5
  226. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  227. package/lib/components/VTextarea/VTextarea.mjs +1 -1
  228. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  229. package/lib/components/VThemeProvider/VThemeProvider.mjs.map +1 -1
  230. package/lib/components/VTimePicker/SelectingTimes.mjs +3 -3
  231. package/lib/components/VTimePicker/SelectingTimes.mjs.map +1 -1
  232. package/lib/components/VTimePicker/VTimePicker.mjs.map +1 -1
  233. package/lib/components/VTimePicker/VTimePickerClock.mjs.map +1 -1
  234. package/lib/components/VTimePicker/VTimePickerTitle.mjs.map +1 -1
  235. package/lib/components/VTimeline/VTimeline.mjs.map +1 -1
  236. package/lib/components/VTimeline/VTimelineDivider.mjs.map +1 -1
  237. package/lib/components/VTimeline/VTimelineItem.mjs.map +1 -1
  238. package/lib/components/VTimeline/index.d.ts +8 -8
  239. package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
  240. package/lib/components/VToolbar/VToolbarItems.mjs.map +1 -1
  241. package/lib/components/VToolbar/VToolbarTitle.mjs.map +1 -1
  242. package/lib/components/VTooltip/VTooltip.mjs.map +1 -1
  243. package/lib/components/VTooltip/index.d.ts +43 -43
  244. package/lib/components/VTreeview/VTreeview.mjs.map +1 -1
  245. package/lib/components/VTreeview/VTreeviewNode.mjs.map +1 -1
  246. package/lib/components/VTreeview/util/filterTreeItems.mjs.map +1 -1
  247. package/lib/components/VValidation/VValidation.mjs.map +1 -1
  248. package/lib/components/VWindow/VWindow.mjs +38 -37
  249. package/lib/components/VWindow/VWindow.mjs.map +1 -1
  250. package/lib/components/VWindow/VWindowItem.mjs +2 -1
  251. package/lib/components/VWindow/VWindowItem.mjs.map +1 -1
  252. package/lib/components/index.d.ts +1270 -641
  253. package/lib/components/transitions/createTransition.mjs +59 -50
  254. package/lib/components/transitions/createTransition.mjs.map +1 -1
  255. package/lib/components/transitions/dialog-transition.mjs.map +1 -1
  256. package/lib/components/transitions/expand-transition.mjs.map +1 -1
  257. package/lib/components/transitions/index.d.ts +150 -15
  258. package/lib/composables/border.mjs.map +1 -1
  259. package/lib/composables/color.mjs.map +1 -1
  260. package/lib/composables/defaults.mjs +1 -1
  261. package/lib/composables/defaults.mjs.map +1 -1
  262. package/lib/composables/delay.mjs.map +1 -1
  263. package/lib/composables/density.mjs.map +1 -1
  264. package/lib/composables/dimensions.mjs.map +1 -1
  265. package/lib/composables/display.mjs.map +1 -1
  266. package/lib/composables/elevation.mjs.map +1 -1
  267. package/lib/composables/filter.mjs.map +1 -1
  268. package/lib/composables/focus.mjs.map +1 -1
  269. package/lib/composables/form.mjs.map +1 -1
  270. package/lib/composables/forwardRefs.mjs +29 -15
  271. package/lib/composables/forwardRefs.mjs.map +1 -1
  272. package/lib/composables/group.mjs.map +1 -1
  273. package/lib/composables/hydration.mjs.map +1 -1
  274. package/lib/composables/icons.mjs.map +1 -1
  275. package/lib/composables/intersectionObserver.mjs.map +1 -1
  276. package/lib/composables/items.mjs.map +1 -1
  277. package/lib/composables/layout.mjs.map +1 -1
  278. package/lib/composables/lazy.mjs.map +1 -1
  279. package/lib/composables/loader.mjs.map +1 -1
  280. package/lib/composables/locale.mjs.map +1 -1
  281. package/lib/composables/location.mjs.map +1 -1
  282. package/lib/composables/mutationObserver.mjs.map +1 -1
  283. package/lib/composables/nested/nested.mjs.map +1 -1
  284. package/lib/composables/nested/openStrategies.mjs.map +1 -1
  285. package/lib/composables/nested/selectStrategies.mjs.map +1 -1
  286. package/lib/composables/position.mjs.map +1 -1
  287. package/lib/composables/proxiedModel.mjs.map +1 -1
  288. package/lib/composables/refs.mjs.map +1 -1
  289. package/lib/composables/resizeObserver.mjs.map +1 -1
  290. package/lib/composables/rounded.mjs.map +1 -1
  291. package/lib/composables/router.mjs.map +1 -1
  292. package/lib/composables/scopeId.mjs.map +1 -1
  293. package/lib/composables/scroll.mjs.map +1 -1
  294. package/lib/composables/selectLink.mjs.map +1 -1
  295. package/lib/composables/size.mjs.map +1 -1
  296. package/lib/composables/ssrBoot.mjs.map +1 -1
  297. package/lib/composables/stack.mjs.map +1 -1
  298. package/lib/composables/teleport.mjs.map +1 -1
  299. package/lib/composables/theme.mjs.map +1 -1
  300. package/lib/composables/toggleScope.mjs.map +1 -1
  301. package/lib/composables/touch.mjs.map +1 -1
  302. package/lib/composables/transition.mjs.map +1 -1
  303. package/lib/composables/validation.mjs +1 -1
  304. package/lib/composables/validation.mjs.map +1 -1
  305. package/lib/composables/variant.mjs.map +1 -1
  306. package/lib/directives/click-outside/index.mjs.map +1 -1
  307. package/lib/directives/color/index.mjs.map +1 -1
  308. package/lib/directives/intersect/index.mjs.map +1 -1
  309. package/lib/directives/mutate/index.mjs.map +1 -1
  310. package/lib/directives/resize/index.mjs.map +1 -1
  311. package/lib/directives/ripple/index.mjs.map +1 -1
  312. package/lib/directives/scroll/index.mjs.map +1 -1
  313. package/lib/directives/touch/index.mjs.map +1 -1
  314. package/lib/entry-bundler.mjs +1 -1
  315. package/lib/entry-bundler.mjs.map +1 -1
  316. package/lib/framework.mjs +1 -1
  317. package/lib/framework.mjs.map +1 -1
  318. package/lib/index.d.ts +46 -46
  319. package/lib/labs/VDataTable/VDataTable.mjs +3 -1
  320. package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
  321. package/lib/labs/VDataTable/VDataTableColumn.mjs.map +1 -1
  322. package/lib/labs/VDataTable/VDataTableFooter.mjs.map +1 -1
  323. package/lib/labs/VDataTable/VDataTableGroupHeaderRow.mjs.map +1 -1
  324. package/lib/labs/VDataTable/VDataTableHeaders.mjs.map +1 -1
  325. package/lib/labs/VDataTable/VDataTableRow.mjs +5 -4
  326. package/lib/labs/VDataTable/VDataTableRow.mjs.map +1 -1
  327. package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
  328. package/lib/labs/VDataTable/VDataTableServer.mjs +3 -1
  329. package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
  330. package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
  331. package/lib/labs/VDataTable/composables/expand.mjs.map +1 -1
  332. package/lib/labs/VDataTable/composables/group.mjs.map +1 -1
  333. package/lib/labs/VDataTable/composables/headers.mjs.map +1 -1
  334. package/lib/labs/VDataTable/composables/items.mjs +14 -1
  335. package/lib/labs/VDataTable/composables/items.mjs.map +1 -1
  336. package/lib/labs/VDataTable/composables/options.mjs.map +1 -1
  337. package/lib/labs/VDataTable/composables/paginate.mjs.map +1 -1
  338. package/lib/labs/VDataTable/composables/select.mjs.map +1 -1
  339. package/lib/labs/VDataTable/composables/sort.mjs.map +1 -1
  340. package/lib/labs/VDataTable/composables/virtual.mjs.map +1 -1
  341. package/lib/labs/VDataTable/index.d.ts +303 -260
  342. package/lib/labs/VSkeletonLoader/VSkeletonLoader.css +221 -0
  343. package/lib/labs/VSkeletonLoader/VSkeletonLoader.mjs +141 -0
  344. package/lib/labs/VSkeletonLoader/VSkeletonLoader.mjs.map +1 -0
  345. package/lib/labs/VSkeletonLoader/VSkeletonLoader.sass +225 -0
  346. package/lib/labs/VSkeletonLoader/_variables.scss +44 -0
  347. package/lib/labs/VSkeletonLoader/index.d.ts +222 -0
  348. package/lib/labs/VSkeletonLoader/index.mjs +2 -0
  349. package/lib/labs/VSkeletonLoader/index.mjs.map +1 -0
  350. package/lib/labs/VVirtualScroll/VVirtualScroll.mjs.map +1 -1
  351. package/lib/labs/VVirtualScroll/VVirtualScrollItem.mjs.map +1 -1
  352. package/lib/labs/components.d.ts +518 -261
  353. package/lib/labs/components.mjs +1 -0
  354. package/lib/labs/components.mjs.map +1 -1
  355. package/lib/labs/entry-bundler.mjs.map +1 -1
  356. package/lib/locale/adapters/vue-i18n.mjs.map +1 -1
  357. package/lib/locale/adapters/vuetify.mjs.map +1 -1
  358. package/lib/locale/af.mjs +2 -1
  359. package/lib/locale/af.mjs.map +1 -1
  360. package/lib/locale/ar.mjs +2 -1
  361. package/lib/locale/ar.mjs.map +1 -1
  362. package/lib/locale/az.mjs +2 -1
  363. package/lib/locale/az.mjs.map +1 -1
  364. package/lib/locale/bg.mjs +2 -1
  365. package/lib/locale/bg.mjs.map +1 -1
  366. package/lib/locale/ca.mjs +2 -1
  367. package/lib/locale/ca.mjs.map +1 -1
  368. package/lib/locale/ckb.mjs +2 -1
  369. package/lib/locale/ckb.mjs.map +1 -1
  370. package/lib/locale/cs.mjs +2 -1
  371. package/lib/locale/cs.mjs.map +1 -1
  372. package/lib/locale/da.mjs +2 -1
  373. package/lib/locale/da.mjs.map +1 -1
  374. package/lib/locale/de.mjs +2 -1
  375. package/lib/locale/de.mjs.map +1 -1
  376. package/lib/locale/el.mjs +2 -1
  377. package/lib/locale/el.mjs.map +1 -1
  378. package/lib/locale/en.mjs +2 -1
  379. package/lib/locale/en.mjs.map +1 -1
  380. package/lib/locale/es.mjs +2 -1
  381. package/lib/locale/es.mjs.map +1 -1
  382. package/lib/locale/et.mjs +2 -1
  383. package/lib/locale/et.mjs.map +1 -1
  384. package/lib/locale/fa.mjs +2 -1
  385. package/lib/locale/fa.mjs.map +1 -1
  386. package/lib/locale/fi.mjs +2 -1
  387. package/lib/locale/fi.mjs.map +1 -1
  388. package/lib/locale/fr.mjs +2 -1
  389. package/lib/locale/fr.mjs.map +1 -1
  390. package/lib/locale/he.mjs +2 -1
  391. package/lib/locale/he.mjs.map +1 -1
  392. package/lib/locale/hr.mjs +2 -1
  393. package/lib/locale/hr.mjs.map +1 -1
  394. package/lib/locale/hu.mjs +2 -1
  395. package/lib/locale/hu.mjs.map +1 -1
  396. package/lib/locale/id.mjs +2 -1
  397. package/lib/locale/id.mjs.map +1 -1
  398. package/lib/locale/index.d.ts +42 -0
  399. package/lib/locale/it.mjs +2 -1
  400. package/lib/locale/it.mjs.map +1 -1
  401. package/lib/locale/ja.mjs +2 -1
  402. package/lib/locale/ja.mjs.map +1 -1
  403. package/lib/locale/ko.mjs +2 -1
  404. package/lib/locale/ko.mjs.map +1 -1
  405. package/lib/locale/lt.mjs +2 -1
  406. package/lib/locale/lt.mjs.map +1 -1
  407. package/lib/locale/lv.mjs +2 -1
  408. package/lib/locale/lv.mjs.map +1 -1
  409. package/lib/locale/nl.mjs +2 -1
  410. package/lib/locale/nl.mjs.map +1 -1
  411. package/lib/locale/no.mjs +2 -1
  412. package/lib/locale/no.mjs.map +1 -1
  413. package/lib/locale/pl.mjs +2 -1
  414. package/lib/locale/pl.mjs.map +1 -1
  415. package/lib/locale/pt.mjs +2 -1
  416. package/lib/locale/pt.mjs.map +1 -1
  417. package/lib/locale/ro.mjs +2 -1
  418. package/lib/locale/ro.mjs.map +1 -1
  419. package/lib/locale/ru.mjs +2 -1
  420. package/lib/locale/ru.mjs.map +1 -1
  421. package/lib/locale/sk.mjs +2 -1
  422. package/lib/locale/sk.mjs.map +1 -1
  423. package/lib/locale/sl.mjs +2 -1
  424. package/lib/locale/sl.mjs.map +1 -1
  425. package/lib/locale/sr-Cyrl.mjs +2 -1
  426. package/lib/locale/sr-Cyrl.mjs.map +1 -1
  427. package/lib/locale/sr-Latn.mjs +2 -1
  428. package/lib/locale/sr-Latn.mjs.map +1 -1
  429. package/lib/locale/sv.mjs +2 -1
  430. package/lib/locale/sv.mjs.map +1 -1
  431. package/lib/locale/th.mjs +2 -1
  432. package/lib/locale/th.mjs.map +1 -1
  433. package/lib/locale/tr.mjs +2 -1
  434. package/lib/locale/tr.mjs.map +1 -1
  435. package/lib/locale/uk.mjs +2 -1
  436. package/lib/locale/uk.mjs.map +1 -1
  437. package/lib/locale/vi.mjs +2 -1
  438. package/lib/locale/vi.mjs.map +1 -1
  439. package/lib/locale/zh-Hans.mjs +2 -1
  440. package/lib/locale/zh-Hans.mjs.map +1 -1
  441. package/lib/locale/zh-Hant.mjs +2 -1
  442. package/lib/locale/zh-Hant.mjs.map +1 -1
  443. package/lib/services/goto/index.mjs.map +1 -1
  444. package/lib/services/goto/util.mjs.map +1 -1
  445. package/lib/util/anchor.mjs.map +1 -1
  446. package/lib/util/animation.mjs.map +1 -1
  447. package/lib/util/box.mjs.map +1 -1
  448. package/lib/util/color/APCA.mjs.map +1 -1
  449. package/lib/util/color/transformCIELAB.mjs.map +1 -1
  450. package/lib/util/color/transformSRGB.mjs.map +1 -1
  451. package/lib/util/colorUtils.mjs.map +1 -1
  452. package/lib/util/console.mjs.map +1 -1
  453. package/lib/util/createSimpleFunctional.mjs.map +1 -1
  454. package/lib/util/dateTimeUtils.mjs.map +1 -1
  455. package/lib/util/defineComponent.mjs.map +1 -1
  456. package/lib/util/dom.mjs.map +1 -1
  457. package/lib/util/getCurrentInstance.mjs.map +1 -1
  458. package/lib/util/getScrollParent.mjs.map +1 -1
  459. package/lib/util/globals.mjs +1 -1
  460. package/lib/util/globals.mjs.map +1 -1
  461. package/lib/util/helpers.mjs.map +1 -1
  462. package/lib/util/injectSelf.mjs.map +1 -1
  463. package/lib/util/isFixedPosition.mjs.map +1 -1
  464. package/lib/util/propsFactory.mjs.map +1 -1
  465. package/lib/util/useRender.mjs.map +1 -1
  466. package/package.json +25 -25
  467. package/lib/components/VSkeletonLoader/VSkeletonLoader.mjs +0 -179
  468. package/lib/components/VSkeletonLoader/VSkeletonLoader.mjs.map +0 -1
  469. package/lib/components/VSkeletonLoader/VSkeletonLoader.sass +0 -377
  470. package/lib/components/VSkeletonLoader/_variables.scss +0 -54
  471. package/lib/components/VSkeletonLoader/index.mjs +0 -4
  472. package/lib/components/VSkeletonLoader/index.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"rounded.mjs","names":["computed","isRef","getCurrentInstanceName","propsFactory","makeRoundedProps","rounded","type","Boolean","Number","String","default","undefined","useRounded","props","name","roundedClasses","value","classes","push","split"],"sources":["../../src/composables/rounded.ts"],"sourcesContent":["// Utilities\nimport { computed, isRef } from 'vue'\nimport { getCurrentInstanceName, propsFactory } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\n\ntype RoundedValue = boolean | string | number | null | undefined\n\nexport interface RoundedProps {\n rounded?: RoundedValue\n tile?: boolean\n}\n\ntype RoundedData = {\n roundedClasses: Ref<string[]>\n}\n\n// Composables\nexport const makeRoundedProps = propsFactory({\n rounded: {\n type: [Boolean, Number, String],\n default: undefined,\n },\n}, 'rounded')\n\nexport function useRounded (\n props: RoundedProps | Ref<RoundedValue>,\n name = getCurrentInstanceName(),\n): RoundedData {\n const roundedClasses = computed(() => {\n const rounded = isRef(props) ? props.value : props.rounded\n const classes: string[] = []\n\n if (rounded === true || rounded === '') {\n classes.push(`${name}--rounded`)\n } else if (\n typeof rounded === 'string' ||\n rounded === 0\n ) {\n for (const value of String(rounded).split(' ')) {\n classes.push(`rounded-${value}`)\n }\n }\n\n return classes\n })\n\n return { roundedClasses }\n}\n"],"mappings":"AAAA;AACA,SAASA,QAAQ,EAAEC,KAAK,QAAQ,KAAK;AAAA,SAC5BC,sBAAsB,EAAEC,YAAY,6BAE7C;AAcA;AACA,OAAO,MAAMC,gBAAgB,GAAGD,YAAY,CAAC;EAC3CE,OAAO,EAAE;IACPC,IAAI,EAAE,CAACC,OAAO,EAAEC,MAAM,EAAEC,MAAM,CAAC;IAC/BC,OAAO,EAAEC;EACX;AACF,CAAC,EAAE,SAAS,CAAC;AAEb,OAAO,SAASC,UAAU,CACxBC,KAAuC,EAE1B;EAAA,IADbC,IAAI,uEAAGZ,sBAAsB,EAAE;EAE/B,MAAMa,cAAc,GAAGf,QAAQ,CAAC,MAAM;IACpC,MAAMK,OAAO,GAAGJ,KAAK,CAACY,KAAK,CAAC,GAAGA,KAAK,CAACG,KAAK,GAAGH,KAAK,CAACR,OAAO;IAC1D,MAAMY,OAAiB,GAAG,EAAE;IAE5B,IAAIZ,OAAO,KAAK,IAAI,IAAIA,OAAO,KAAK,EAAE,EAAE;MACtCY,OAAO,CAACC,IAAI,CAAE,GAAEJ,IAAK,WAAU,CAAC;IAClC,CAAC,MAAM,IACL,OAAOT,OAAO,KAAK,QAAQ,IAC3BA,OAAO,KAAK,CAAC,EACb;MACA,KAAK,MAAMW,KAAK,IAAIP,MAAM,CAACJ,OAAO,CAAC,CAACc,KAAK,CAAC,GAAG,CAAC,EAAE;QAC9CF,OAAO,CAACC,IAAI,CAAE,WAAUF,KAAM,EAAC,CAAC;MAClC;IACF;IAEA,OAAOC,OAAO;EAChB,CAAC,CAAC;EAEF,OAAO;IAAEF;EAAe,CAAC;AAC3B"}
1
+ {"version":3,"file":"rounded.mjs","names":["computed","isRef","getCurrentInstanceName","propsFactory","makeRoundedProps","rounded","type","Boolean","Number","String","default","undefined","useRounded","props","name","arguments","length","roundedClasses","value","classes","push","split"],"sources":["../../src/composables/rounded.ts"],"sourcesContent":["// Utilities\nimport { computed, isRef } from 'vue'\nimport { getCurrentInstanceName, propsFactory } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\n\ntype RoundedValue = boolean | string | number | null | undefined\n\nexport interface RoundedProps {\n rounded?: RoundedValue\n tile?: boolean\n}\n\ntype RoundedData = {\n roundedClasses: Ref<string[]>\n}\n\n// Composables\nexport const makeRoundedProps = propsFactory({\n rounded: {\n type: [Boolean, Number, String],\n default: undefined,\n },\n}, 'rounded')\n\nexport function useRounded (\n props: RoundedProps | Ref<RoundedValue>,\n name = getCurrentInstanceName(),\n): RoundedData {\n const roundedClasses = computed(() => {\n const rounded = isRef(props) ? props.value : props.rounded\n const classes: string[] = []\n\n if (rounded === true || rounded === '') {\n classes.push(`${name}--rounded`)\n } else if (\n typeof rounded === 'string' ||\n rounded === 0\n ) {\n for (const value of String(rounded).split(' ')) {\n classes.push(`rounded-${value}`)\n }\n }\n\n return classes\n })\n\n return { roundedClasses }\n}\n"],"mappings":"AAAA;AACA,SAASA,QAAQ,EAAEC,KAAK,QAAQ,KAAK;AAAA,SAC5BC,sBAAsB,EAAEC,YAAY,6BAE7C;AAcA;AACA,OAAO,MAAMC,gBAAgB,GAAGD,YAAY,CAAC;EAC3CE,OAAO,EAAE;IACPC,IAAI,EAAE,CAACC,OAAO,EAAEC,MAAM,EAAEC,MAAM,CAAC;IAC/BC,OAAO,EAAEC;EACX;AACF,CAAC,EAAE,SAAS,CAAC;AAEb,OAAO,SAASC,UAAUA,CACxBC,KAAuC,EAE1B;EAAA,IADbC,IAAI,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAJ,SAAA,GAAAI,SAAA,MAAGb,sBAAsB,EAAE;EAE/B,MAAMe,cAAc,GAAGjB,QAAQ,CAAC,MAAM;IACpC,MAAMK,OAAO,GAAGJ,KAAK,CAACY,KAAK,CAAC,GAAGA,KAAK,CAACK,KAAK,GAAGL,KAAK,CAACR,OAAO;IAC1D,MAAMc,OAAiB,GAAG,EAAE;IAE5B,IAAId,OAAO,KAAK,IAAI,IAAIA,OAAO,KAAK,EAAE,EAAE;MACtCc,OAAO,CAACC,IAAI,CAAE,GAAEN,IAAK,WAAU,CAAC;IAClC,CAAC,MAAM,IACL,OAAOT,OAAO,KAAK,QAAQ,IAC3BA,OAAO,KAAK,CAAC,EACb;MACA,KAAK,MAAMa,KAAK,IAAIT,MAAM,CAACJ,OAAO,CAAC,CAACgB,KAAK,CAAC,GAAG,CAAC,EAAE;QAC9CF,OAAO,CAACC,IAAI,CAAE,WAAUF,KAAM,EAAC,CAAC;MAClC;IACF;IAEA,OAAOC,OAAO;EAChB,CAAC,CAAC;EAEF,OAAO;IAAEF;EAAe,CAAC;AAC3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"router.mjs","names":["getCurrentInstance","hasEvent","IN_BROWSER","propsFactory","computed","nextTick","onScopeDispose","resolveDynamicComponent","toRef","useRoute","vm","proxy","$route","useRouter","$router","useLink","props","attrs","RouterLink","isLink","href","to","isClickable","value","link","undefined","route","navigate","isActive","exact","isExactActive","makeRouterProps","String","replace","Boolean","Object","inTransition","useBackButton","router","cb","popped","removeBefore","removeAfter","window","addEventListener","onPopstate","beforeEach","from","next","setTimeout","afterEach","removeEventListener","e","state","replaced"],"sources":["../../src/composables/router.tsx"],"sourcesContent":["// Utilities\nimport { getCurrentInstance, hasEvent, IN_BROWSER, propsFactory } from '@/util'\nimport {\n computed,\n nextTick,\n onScopeDispose,\n resolveDynamicComponent,\n toRef,\n} from 'vue'\n\n// Types\nimport type { ComputedRef, PropType, Ref, SetupContext } from 'vue'\nimport type {\n RouterLink as _RouterLink,\n useLink as _useLink,\n NavigationGuardNext,\n RouteLocationNormalizedLoaded,\n RouteLocationRaw,\n Router,\n UseLinkOptions,\n} from 'vue-router'\nimport type { EventProp } from '@/util'\n\nexport function useRoute (): Ref<RouteLocationNormalizedLoaded | undefined> {\n const vm = getCurrentInstance('useRoute')\n\n return computed(() => vm?.proxy?.$route)\n}\n\nexport function useRouter (): Router | undefined {\n return getCurrentInstance('useRouter')?.proxy?.$router\n}\n\nexport interface LinkProps {\n href: string | undefined\n replace: boolean | undefined\n to: RouteLocationRaw | undefined\n exact: boolean | undefined\n}\n\nexport interface LinkListeners {\n onClick?: EventProp | undefined\n onClickOnce?: EventProp | undefined\n}\n\nexport interface UseLink extends Omit<Partial<ReturnType<typeof _useLink>>, 'href'> {\n isLink: ComputedRef<boolean>\n isClickable: ComputedRef<boolean>\n href: Ref<string | undefined>\n}\n\nexport function useLink (props: LinkProps & LinkListeners, attrs: SetupContext['attrs']): UseLink {\n const RouterLink = resolveDynamicComponent('RouterLink') as typeof _RouterLink | string\n\n const isLink = computed(() => !!(props.href || props.to))\n const isClickable = computed(() => {\n return isLink?.value || hasEvent(attrs, 'click') || hasEvent(props, 'click')\n })\n\n if (typeof RouterLink === 'string') {\n return {\n isLink,\n isClickable,\n href: toRef(props, 'href'),\n }\n }\n\n const link = props.to ? RouterLink.useLink(props as UseLinkOptions) : undefined\n\n return {\n isLink,\n isClickable,\n route: link?.route,\n navigate: link?.navigate,\n isActive: link && computed(() => props.exact ? link.isExactActive?.value : link.isActive?.value),\n href: computed(() => props.to ? link?.route.value.href : props.href),\n }\n}\n\nexport const makeRouterProps = propsFactory({\n href: String,\n replace: Boolean,\n to: [String, Object] as PropType<RouteLocationRaw>,\n exact: Boolean,\n}, 'router')\n\nlet inTransition = false\nexport function useBackButton (router: Router | undefined, cb: (next: NavigationGuardNext) => void) {\n let popped = false\n let removeBefore: (() => void) | undefined\n let removeAfter: (() => void) | undefined\n\n if (IN_BROWSER) {\n nextTick(() => {\n window.addEventListener('popstate', onPopstate)\n removeBefore = router?.beforeEach((to, from, next) => {\n if (!inTransition) {\n setTimeout(() => popped ? cb(next) : next())\n } else {\n popped ? cb(next) : next()\n }\n inTransition = true\n })\n removeAfter = router?.afterEach(() => {\n inTransition = false\n })\n })\n onScopeDispose(() => {\n window.removeEventListener('popstate', onPopstate)\n removeBefore?.()\n removeAfter?.()\n })\n }\n\n function onPopstate (e: PopStateEvent) {\n if (e.state?.replaced) return\n\n popped = true\n setTimeout(() => (popped = false))\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"router.mjs","names":["getCurrentInstance","hasEvent","IN_BROWSER","propsFactory","computed","nextTick","onScopeDispose","resolveDynamicComponent","toRef","useRoute","vm","proxy","$route","useRouter","$router","useLink","props","attrs","RouterLink","isLink","href","to","isClickable","value","link","undefined","route","navigate","isActive","exact","isExactActive","makeRouterProps","String","replace","Boolean","Object","inTransition","useBackButton","router","cb","popped","removeBefore","removeAfter","window","addEventListener","onPopstate","beforeEach","from","next","setTimeout","afterEach","removeEventListener","e","state","replaced"],"sources":["../../src/composables/router.tsx"],"sourcesContent":["// Utilities\nimport { getCurrentInstance, hasEvent, IN_BROWSER, propsFactory } from '@/util'\nimport {\n computed,\n nextTick,\n onScopeDispose,\n resolveDynamicComponent,\n toRef,\n} from 'vue'\n\n// Types\nimport type { ComputedRef, PropType, Ref, SetupContext } from 'vue'\nimport type {\n RouterLink as _RouterLink,\n useLink as _useLink,\n NavigationGuardNext,\n RouteLocationNormalizedLoaded,\n RouteLocationRaw,\n Router,\n UseLinkOptions,\n} from 'vue-router'\nimport type { EventProp } from '@/util'\n\nexport function useRoute (): Ref<RouteLocationNormalizedLoaded | undefined> {\n const vm = getCurrentInstance('useRoute')\n\n return computed(() => vm?.proxy?.$route)\n}\n\nexport function useRouter (): Router | undefined {\n return getCurrentInstance('useRouter')?.proxy?.$router\n}\n\nexport interface LinkProps {\n href: string | undefined\n replace: boolean | undefined\n to: RouteLocationRaw | undefined\n exact: boolean | undefined\n}\n\nexport interface LinkListeners {\n onClick?: EventProp | undefined\n onClickOnce?: EventProp | undefined\n}\n\nexport interface UseLink extends Omit<Partial<ReturnType<typeof _useLink>>, 'href'> {\n isLink: ComputedRef<boolean>\n isClickable: ComputedRef<boolean>\n href: Ref<string | undefined>\n}\n\nexport function useLink (props: LinkProps & LinkListeners, attrs: SetupContext['attrs']): UseLink {\n const RouterLink = resolveDynamicComponent('RouterLink') as typeof _RouterLink | string\n\n const isLink = computed(() => !!(props.href || props.to))\n const isClickable = computed(() => {\n return isLink?.value || hasEvent(attrs, 'click') || hasEvent(props, 'click')\n })\n\n if (typeof RouterLink === 'string') {\n return {\n isLink,\n isClickable,\n href: toRef(props, 'href'),\n }\n }\n\n const link = props.to ? RouterLink.useLink(props as UseLinkOptions) : undefined\n\n return {\n isLink,\n isClickable,\n route: link?.route,\n navigate: link?.navigate,\n isActive: link && computed(() => props.exact ? link.isExactActive?.value : link.isActive?.value),\n href: computed(() => props.to ? link?.route.value.href : props.href),\n }\n}\n\nexport const makeRouterProps = propsFactory({\n href: String,\n replace: Boolean,\n to: [String, Object] as PropType<RouteLocationRaw>,\n exact: Boolean,\n}, 'router')\n\nlet inTransition = false\nexport function useBackButton (router: Router | undefined, cb: (next: NavigationGuardNext) => void) {\n let popped = false\n let removeBefore: (() => void) | undefined\n let removeAfter: (() => void) | undefined\n\n if (IN_BROWSER) {\n nextTick(() => {\n window.addEventListener('popstate', onPopstate)\n removeBefore = router?.beforeEach((to, from, next) => {\n if (!inTransition) {\n setTimeout(() => popped ? cb(next) : next())\n } else {\n popped ? cb(next) : next()\n }\n inTransition = true\n })\n removeAfter = router?.afterEach(() => {\n inTransition = false\n })\n })\n onScopeDispose(() => {\n window.removeEventListener('popstate', onPopstate)\n removeBefore?.()\n removeAfter?.()\n })\n }\n\n function onPopstate (e: PopStateEvent) {\n if (e.state?.replaced) return\n\n popped = true\n setTimeout(() => (popped = false))\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"scopeId.mjs","names":["getCurrentInstance","useScopeId","vm","scopeId","vnode","undefined"],"sources":["../../src/composables/scopeId.ts"],"sourcesContent":["import { getCurrentInstance } from '@/util'\n\nexport function useScopeId () {\n const vm = getCurrentInstance('useScopeId')\n\n const scopeId = vm!.vnode.scopeId\n\n return { scopeId: scopeId ? { [scopeId]: '' } : undefined }\n}\n"],"mappings":"SAASA,kBAAkB;AAE3B,OAAO,SAASC,UAAU,GAAI;EAC5B,MAAMC,EAAE,GAAGF,kBAAkB,CAAC,YAAY,CAAC;EAE3C,MAAMG,OAAO,GAAGD,EAAE,CAAEE,KAAK,CAACD,OAAO;EAEjC,OAAO;IAAEA,OAAO,EAAEA,OAAO,GAAG;MAAE,CAACA,OAAO,GAAG;IAAG,CAAC,GAAGE;EAAU,CAAC;AAC7D"}
1
+ {"version":3,"file":"scopeId.mjs","names":["getCurrentInstance","useScopeId","vm","scopeId","vnode","undefined"],"sources":["../../src/composables/scopeId.ts"],"sourcesContent":["import { getCurrentInstance } from '@/util'\n\nexport function useScopeId () {\n const vm = getCurrentInstance('useScopeId')\n\n const scopeId = vm!.vnode.scopeId\n\n return { scopeId: scopeId ? { [scopeId]: '' } : undefined }\n}\n"],"mappings":"SAASA,kBAAkB;AAE3B,OAAO,SAASC,UAAUA,CAAA,EAAI;EAC5B,MAAMC,EAAE,GAAGF,kBAAkB,CAAC,YAAY,CAAC;EAE3C,MAAMG,OAAO,GAAGD,EAAE,CAAEE,KAAK,CAACD,OAAO;EAEjC,OAAO;IAAEA,OAAO,EAAEA,OAAO,GAAG;MAAE,CAACA,OAAO,GAAG;IAAG,CAAC,GAAGE;EAAU,CAAC;AAC7D"}
@@ -1 +1 @@
1
- {"version":3,"file":"scroll.mjs","names":["computed","getCurrentInstance","onBeforeUnmount","onMounted","ref","watch","consoleWarn","propsFactory","makeScrollProps","scrollTarget","type","String","scrollThreshold","Number","useScroll","props","args","thresholdMetCallback","canScroll","previousScroll","target","currentScroll","savedScroll","currentThreshold","isScrollActive","isScrollingUp","computedScrollThreshold","onScroll","targetEl","value","pageYOffset","scrollTop","Math","abs","newTarget","document","querySelector","window","removeEventListener","addEventListener","passive","immediate","thresholdMet"],"sources":["../../src/composables/scroll.ts"],"sourcesContent":["// Utilities\nimport {\n computed,\n getCurrentInstance,\n onBeforeUnmount,\n onMounted,\n ref,\n watch,\n} from 'vue'\nimport { consoleWarn, propsFactory } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\n\nexport interface ScrollProps {\n scrollTarget?: string\n scrollThreshold?: string | number\n}\n\nexport interface ThresholdMetCallbackData {\n isScrollingUp: boolean\n currentThreshold: number\n savedScroll: Ref<number>\n}\n\n// Composables\nexport const makeScrollProps = propsFactory({\n scrollTarget: {\n type: String,\n },\n scrollThreshold: {\n type: [String, Number],\n },\n}, 'scroll')\n\nexport interface ScrollArguments {\n thresholdMetCallback?: (data: ThresholdMetCallbackData) => void\n scrollThreshold?: Readonly<Ref<number>>\n canScroll?: Readonly<Ref<boolean>>\n}\n\nexport function useScroll (\n props: ScrollProps,\n args: ScrollArguments = {},\n) {\n const { thresholdMetCallback, scrollThreshold, canScroll } = args\n let previousScroll = 0\n const target = ref<Element | Window | null>(null)\n const currentScroll = ref(0)\n const savedScroll = ref(0)\n const currentThreshold = ref(0)\n const isScrollActive = ref(false)\n const isScrollingUp = ref(false)\n\n const computedScrollThreshold = computed(() => {\n return Number(props.scrollThreshold ?? scrollThreshold ?? 300)\n })\n\n const onScroll = () => {\n const targetEl = target.value\n\n if (!targetEl || (canScroll && !canScroll.value)) return\n\n previousScroll = currentScroll.value\n currentScroll.value = ('window' in targetEl) ? targetEl.pageYOffset : targetEl.scrollTop\n\n isScrollingUp.value = currentScroll.value < previousScroll\n currentThreshold.value = Math.abs(currentScroll.value - computedScrollThreshold.value)\n }\n\n watch(isScrollingUp, () => {\n savedScroll.value = savedScroll.value || currentScroll.value\n })\n\n watch(isScrollActive, () => {\n savedScroll.value = 0\n })\n\n onMounted(() => {\n watch(() => props.scrollTarget, scrollTarget => {\n const newTarget = scrollTarget ? document.querySelector(scrollTarget) : window\n\n if (!newTarget) {\n consoleWarn(`Unable to locate element with identifier ${scrollTarget}`, getCurrentInstance())\n return\n }\n\n if (newTarget === target.value) return\n\n target.value?.removeEventListener('scroll', onScroll)\n target.value = newTarget\n target.value.addEventListener('scroll', onScroll, { passive: true })\n }, { immediate: true })\n })\n\n onBeforeUnmount(() => {\n target.value?.removeEventListener('scroll', onScroll)\n })\n\n thresholdMetCallback && watch(() => (\n Math.abs(currentScroll.value - savedScroll.value) > computedScrollThreshold.value\n ), thresholdMet => {\n thresholdMet && thresholdMetCallback({\n currentThreshold: currentThreshold.value,\n isScrollingUp: isScrollingUp.value,\n savedScroll,\n })\n }, { immediate: true })\n\n // Do we need this? If yes - seems that\n // there's no need to expose onScroll\n canScroll && watch(canScroll, onScroll, { immediate: true })\n\n return {\n isScrollActive,\n\n // required only for testing\n // probably can be removed\n // later (2 chars chlng)\n isScrollingUp,\n savedScroll,\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"scroll.mjs","names":["computed","getCurrentInstance","onBeforeUnmount","onMounted","ref","watch","consoleWarn","propsFactory","makeScrollProps","scrollTarget","type","String","scrollThreshold","Number","useScroll","props","args","arguments","length","undefined","thresholdMetCallback","canScroll","previousScroll","target","currentScroll","savedScroll","currentThreshold","isScrollActive","isScrollingUp","computedScrollThreshold","onScroll","targetEl","value","pageYOffset","scrollTop","Math","abs","newTarget","document","querySelector","window","removeEventListener","addEventListener","passive","immediate","thresholdMet"],"sources":["../../src/composables/scroll.ts"],"sourcesContent":["// Utilities\nimport {\n computed,\n getCurrentInstance,\n onBeforeUnmount,\n onMounted,\n ref,\n watch,\n} from 'vue'\nimport { consoleWarn, propsFactory } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\n\nexport interface ScrollProps {\n scrollTarget?: string\n scrollThreshold?: string | number\n}\n\nexport interface ThresholdMetCallbackData {\n isScrollingUp: boolean\n currentThreshold: number\n savedScroll: Ref<number>\n}\n\n// Composables\nexport const makeScrollProps = propsFactory({\n scrollTarget: {\n type: String,\n },\n scrollThreshold: {\n type: [String, Number],\n },\n}, 'scroll')\n\nexport interface ScrollArguments {\n thresholdMetCallback?: (data: ThresholdMetCallbackData) => void\n scrollThreshold?: Readonly<Ref<number>>\n canScroll?: Readonly<Ref<boolean>>\n}\n\nexport function useScroll (\n props: ScrollProps,\n args: ScrollArguments = {},\n) {\n const { thresholdMetCallback, scrollThreshold, canScroll } = args\n let previousScroll = 0\n const target = ref<Element | Window | null>(null)\n const currentScroll = ref(0)\n const savedScroll = ref(0)\n const currentThreshold = ref(0)\n const isScrollActive = ref(false)\n const isScrollingUp = ref(false)\n\n const computedScrollThreshold = computed(() => {\n return Number(props.scrollThreshold ?? scrollThreshold ?? 300)\n })\n\n const onScroll = () => {\n const targetEl = target.value\n\n if (!targetEl || (canScroll && !canScroll.value)) return\n\n previousScroll = currentScroll.value\n currentScroll.value = ('window' in targetEl) ? targetEl.pageYOffset : targetEl.scrollTop\n\n isScrollingUp.value = currentScroll.value < previousScroll\n currentThreshold.value = Math.abs(currentScroll.value - computedScrollThreshold.value)\n }\n\n watch(isScrollingUp, () => {\n savedScroll.value = savedScroll.value || currentScroll.value\n })\n\n watch(isScrollActive, () => {\n savedScroll.value = 0\n })\n\n onMounted(() => {\n watch(() => props.scrollTarget, scrollTarget => {\n const newTarget = scrollTarget ? document.querySelector(scrollTarget) : window\n\n if (!newTarget) {\n consoleWarn(`Unable to locate element with identifier ${scrollTarget}`, getCurrentInstance())\n return\n }\n\n if (newTarget === target.value) return\n\n target.value?.removeEventListener('scroll', onScroll)\n target.value = newTarget\n target.value.addEventListener('scroll', onScroll, { passive: true })\n }, { immediate: true })\n })\n\n onBeforeUnmount(() => {\n target.value?.removeEventListener('scroll', onScroll)\n })\n\n thresholdMetCallback && watch(() => (\n Math.abs(currentScroll.value - savedScroll.value) > computedScrollThreshold.value\n ), thresholdMet => {\n thresholdMet && thresholdMetCallback({\n currentThreshold: currentThreshold.value,\n isScrollingUp: isScrollingUp.value,\n savedScroll,\n })\n }, { immediate: true })\n\n // Do we need this? If yes - seems that\n // there's no need to expose onScroll\n canScroll && watch(canScroll, onScroll, { immediate: true })\n\n return {\n isScrollActive,\n\n // required only for testing\n // probably can be removed\n // later (2 chars chlng)\n isScrollingUp,\n savedScroll,\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"selectLink.mjs","names":["nextTick","watch","useSelectLink","link","select","isActive","value","isLink","immediate"],"sources":["../../src/composables/selectLink.ts"],"sourcesContent":["// Utilities\nimport { nextTick, watch } from 'vue'\n\n// Types\nimport type { UseLink } from './router'\n\nexport function useSelectLink (link: UseLink, select?: (value: boolean, e?: Event) => void) {\n watch(() => link.isActive?.value, isActive => {\n if (link.isLink.value && isActive && select) {\n nextTick(() => {\n select(true)\n })\n }\n }, {\n immediate: true,\n })\n}\n"],"mappings":"AAAA;AACA,SAASA,QAAQ,EAAEC,KAAK,QAAQ,KAAK;;AAErC;;AAGA,OAAO,SAASC,aAAa,CAAEC,IAAa,EAAEC,MAA4C,EAAE;EAC1FH,KAAK,CAAC,MAAME,IAAI,CAACE,QAAQ,EAAEC,KAAK,EAAED,QAAQ,IAAI;IAC5C,IAAIF,IAAI,CAACI,MAAM,CAACD,KAAK,IAAID,QAAQ,IAAID,MAAM,EAAE;MAC3CJ,QAAQ,CAAC,MAAM;QACbI,MAAM,CAAC,IAAI,CAAC;MACd,CAAC,CAAC;IACJ;EACF,CAAC,EAAE;IACDI,SAAS,EAAE;EACb,CAAC,CAAC;AACJ"}
1
+ {"version":3,"file":"selectLink.mjs","names":["nextTick","watch","useSelectLink","link","select","isActive","value","isLink","immediate"],"sources":["../../src/composables/selectLink.ts"],"sourcesContent":["// Utilities\nimport { nextTick, watch } from 'vue'\n\n// Types\nimport type { UseLink } from './router'\n\nexport function useSelectLink (link: UseLink, select?: (value: boolean, e?: Event) => void) {\n watch(() => link.isActive?.value, isActive => {\n if (link.isLink.value && isActive && select) {\n nextTick(() => {\n select(true)\n })\n }\n }, {\n immediate: true,\n })\n}\n"],"mappings":"AAAA;AACA,SAASA,QAAQ,EAAEC,KAAK,QAAQ,KAAK;;AAErC;;AAGA,OAAO,SAASC,aAAaA,CAAEC,IAAa,EAAEC,MAA4C,EAAE;EAC1FH,KAAK,CAAC,MAAME,IAAI,CAACE,QAAQ,EAAEC,KAAK,EAAED,QAAQ,IAAI;IAC5C,IAAIF,IAAI,CAACI,MAAM,CAACD,KAAK,IAAID,QAAQ,IAAID,MAAM,EAAE;MAC3CJ,QAAQ,CAAC,MAAM;QACbI,MAAM,CAAC,IAAI,CAAC;MACd,CAAC,CAAC;IACJ;EACF,CAAC,EAAE;IACDI,SAAS,EAAE;EACb,CAAC,CAAC;AACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"size.mjs","names":["convertToUnit","destructComputed","getCurrentInstanceName","includes","propsFactory","predefinedSizes","makeSizeProps","size","type","String","Number","default","useSize","props","name","sizeClasses","sizeStyles","width","height"],"sources":["../../src/composables/size.ts"],"sourcesContent":["// Utilities\nimport { convertToUnit, destructComputed, getCurrentInstanceName, includes, propsFactory } from '@/util'\n\n// Types\nconst predefinedSizes = ['x-small', 'small', 'default', 'large', 'x-large']\n\nexport interface SizeProps {\n size?: string | number\n}\n\n// Composables\nexport const makeSizeProps = propsFactory({\n size: {\n type: [String, Number],\n default: 'default',\n },\n}, 'size')\n\nexport function useSize (\n props: SizeProps,\n name = getCurrentInstanceName(),\n) {\n return destructComputed(() => {\n let sizeClasses\n let sizeStyles\n if (includes(predefinedSizes, props.size)) {\n sizeClasses = `${name}--size-${props.size}`\n } else if (props.size) {\n sizeStyles = {\n width: convertToUnit(props.size),\n height: convertToUnit(props.size),\n }\n }\n return { sizeClasses, sizeStyles }\n })\n}\n"],"mappings":"AAAA;AAAA,SACSA,aAAa,EAAEC,gBAAgB,EAAEC,sBAAsB,EAAEC,QAAQ,EAAEC,YAAY,6BAExF;AACA,MAAMC,eAAe,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC;AAM3E;AACA,OAAO,MAAMC,aAAa,GAAGF,YAAY,CAAC;EACxCG,IAAI,EAAE;IACJC,IAAI,EAAE,CAACC,MAAM,EAAEC,MAAM,CAAC;IACtBC,OAAO,EAAE;EACX;AACF,CAAC,EAAE,MAAM,CAAC;AAEV,OAAO,SAASC,OAAO,CACrBC,KAAgB,EAEhB;EAAA,IADAC,IAAI,uEAAGZ,sBAAsB,EAAE;EAE/B,OAAOD,gBAAgB,CAAC,MAAM;IAC5B,IAAIc,WAAW;IACf,IAAIC,UAAU;IACd,IAAIb,QAAQ,CAACE,eAAe,EAAEQ,KAAK,CAACN,IAAI,CAAC,EAAE;MACzCQ,WAAW,GAAI,GAAED,IAAK,UAASD,KAAK,CAACN,IAAK,EAAC;IAC7C,CAAC,MAAM,IAAIM,KAAK,CAACN,IAAI,EAAE;MACrBS,UAAU,GAAG;QACXC,KAAK,EAAEjB,aAAa,CAACa,KAAK,CAACN,IAAI,CAAC;QAChCW,MAAM,EAAElB,aAAa,CAACa,KAAK,CAACN,IAAI;MAClC,CAAC;IACH;IACA,OAAO;MAAEQ,WAAW;MAAEC;IAAW,CAAC;EACpC,CAAC,CAAC;AACJ"}
1
+ {"version":3,"file":"size.mjs","names":["convertToUnit","destructComputed","getCurrentInstanceName","includes","propsFactory","predefinedSizes","makeSizeProps","size","type","String","Number","default","useSize","props","name","arguments","length","undefined","sizeClasses","sizeStyles","width","height"],"sources":["../../src/composables/size.ts"],"sourcesContent":["// Utilities\nimport { convertToUnit, destructComputed, getCurrentInstanceName, includes, propsFactory } from '@/util'\n\n// Types\nconst predefinedSizes = ['x-small', 'small', 'default', 'large', 'x-large']\n\nexport interface SizeProps {\n size?: string | number\n}\n\n// Composables\nexport const makeSizeProps = propsFactory({\n size: {\n type: [String, Number],\n default: 'default',\n },\n}, 'size')\n\nexport function useSize (\n props: SizeProps,\n name = getCurrentInstanceName(),\n) {\n return destructComputed(() => {\n let sizeClasses\n let sizeStyles\n if (includes(predefinedSizes, props.size)) {\n sizeClasses = `${name}--size-${props.size}`\n } else if (props.size) {\n sizeStyles = {\n width: convertToUnit(props.size),\n height: convertToUnit(props.size),\n }\n }\n return { sizeClasses, sizeStyles }\n })\n}\n"],"mappings":"AAAA;AAAA,SACSA,aAAa,EAAEC,gBAAgB,EAAEC,sBAAsB,EAAEC,QAAQ,EAAEC,YAAY,6BAExF;AACA,MAAMC,eAAe,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC;AAM3E;AACA,OAAO,MAAMC,aAAa,GAAGF,YAAY,CAAC;EACxCG,IAAI,EAAE;IACJC,IAAI,EAAE,CAACC,MAAM,EAAEC,MAAM,CAAC;IACtBC,OAAO,EAAE;EACX;AACF,CAAC,EAAE,MAAM,CAAC;AAEV,OAAO,SAASC,OAAOA,CACrBC,KAAgB,EAEhB;EAAA,IADAC,IAAI,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAGb,sBAAsB,EAAE;EAE/B,OAAOD,gBAAgB,CAAC,MAAM;IAC5B,IAAIiB,WAAW;IACf,IAAIC,UAAU;IACd,IAAIhB,QAAQ,CAACE,eAAe,EAAEQ,KAAK,CAACN,IAAI,CAAC,EAAE;MACzCW,WAAW,GAAI,GAAEJ,IAAK,UAASD,KAAK,CAACN,IAAK,EAAC;IAC7C,CAAC,MAAM,IAAIM,KAAK,CAACN,IAAI,EAAE;MACrBY,UAAU,GAAG;QACXC,KAAK,EAAEpB,aAAa,CAACa,KAAK,CAACN,IAAI,CAAC;QAChCc,MAAM,EAAErB,aAAa,CAACa,KAAK,CAACN,IAAI;MAClC,CAAC;IACH;IACA,OAAO;MAAEW,WAAW;MAAEC;IAAW,CAAC;EACpC,CAAC,CAAC;AACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"ssrBoot.mjs","names":["computed","onMounted","readonly","ref","useSsrBoot","isBooted","window","requestAnimationFrame","value","ssrBootStyles","transition","undefined"],"sources":["../../src/composables/ssrBoot.ts"],"sourcesContent":["// Utilities\nimport { computed, onMounted, readonly, ref } from 'vue'\n\n// Composables\nexport function useSsrBoot () {\n const isBooted = ref(false)\n\n onMounted(() => {\n window.requestAnimationFrame(() => {\n isBooted.value = true\n })\n })\n\n const ssrBootStyles = computed(() => !isBooted.value ? ({\n transition: 'none !important',\n }) : undefined)\n\n return { ssrBootStyles, isBooted: readonly(isBooted) }\n}\n"],"mappings":"AAAA;AACA,SAASA,QAAQ,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,GAAG,QAAQ,KAAK;;AAExD;AACA,OAAO,SAASC,UAAU,GAAI;EAC5B,MAAMC,QAAQ,GAAGF,GAAG,CAAC,KAAK,CAAC;EAE3BF,SAAS,CAAC,MAAM;IACdK,MAAM,CAACC,qBAAqB,CAAC,MAAM;MACjCF,QAAQ,CAACG,KAAK,GAAG,IAAI;IACvB,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,MAAMC,aAAa,GAAGT,QAAQ,CAAC,MAAM,CAACK,QAAQ,CAACG,KAAK,GAAI;IACtDE,UAAU,EAAE;EACd,CAAC,GAAIC,SAAS,CAAC;EAEf,OAAO;IAAEF,aAAa;IAAEJ,QAAQ,EAAEH,QAAQ,CAACG,QAAQ;EAAE,CAAC;AACxD"}
1
+ {"version":3,"file":"ssrBoot.mjs","names":["computed","onMounted","readonly","ref","useSsrBoot","isBooted","window","requestAnimationFrame","value","ssrBootStyles","transition","undefined"],"sources":["../../src/composables/ssrBoot.ts"],"sourcesContent":["// Utilities\nimport { computed, onMounted, readonly, ref } from 'vue'\n\n// Composables\nexport function useSsrBoot () {\n const isBooted = ref(false)\n\n onMounted(() => {\n window.requestAnimationFrame(() => {\n isBooted.value = true\n })\n })\n\n const ssrBootStyles = computed(() => !isBooted.value ? ({\n transition: 'none !important',\n }) : undefined)\n\n return { ssrBootStyles, isBooted: readonly(isBooted) }\n}\n"],"mappings":"AAAA;AACA,SAASA,QAAQ,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,GAAG,QAAQ,KAAK;;AAExD;AACA,OAAO,SAASC,UAAUA,CAAA,EAAI;EAC5B,MAAMC,QAAQ,GAAGF,GAAG,CAAC,KAAK,CAAC;EAE3BF,SAAS,CAAC,MAAM;IACdK,MAAM,CAACC,qBAAqB,CAAC,MAAM;MACjCF,QAAQ,CAACG,KAAK,GAAG,IAAI;IACvB,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,MAAMC,aAAa,GAAGT,QAAQ,CAAC,MAAM,CAACK,QAAQ,CAACG,KAAK,GAAI;IACtDE,UAAU,EAAE;EACd,CAAC,GAAIC,SAAS,CAAC;EAEf,OAAO;IAAEF,aAAa;IAAEJ,QAAQ,EAAEH,QAAQ,CAACG,QAAQ;EAAE,CAAC;AACxD"}
@@ -1 +1 @@
1
- {"version":3,"file":"stack.mjs","names":["useToggleScope","computed","inject","onScopeDispose","provide","reactive","readonly","ref","toRaw","watchEffect","getCurrentInstance","StackSymbol","Symbol","for","globalStack","useStack","isActive","zIndex","disableGlobalStack","vm","createStackEntry","parent","undefined","stack","activeChildren","Set","_zIndex","value","lastZIndex","at","push","uid","add","idx","findIndex","v","splice","delete","globalTop","_isTop","setTimeout","localTop","size","stackStyles"],"sources":["../../src/composables/stack.ts"],"sourcesContent":["import { useToggleScope } from '@/composables/toggleScope'\n\nimport { computed, inject, onScopeDispose, provide, reactive, readonly, ref, toRaw, watchEffect } from 'vue'\nimport { getCurrentInstance } from '@/util'\n\n// Types\nimport type { InjectionKey, Ref } from 'vue'\n\nconst StackSymbol: InjectionKey<StackProvide> = Symbol.for('vuetify:stack')\n\ninterface StackProvide {\n activeChildren: Set<number>\n}\n\nconst globalStack = reactive<[uid: number, zIndex: number][]>([])\n\nexport function useStack (\n isActive: Readonly<Ref<boolean>>,\n zIndex: Readonly<Ref<string | number>>,\n disableGlobalStack: boolean\n) {\n const vm = getCurrentInstance('useStack')\n const createStackEntry = !disableGlobalStack\n\n const parent = inject(StackSymbol, undefined)\n const stack: StackProvide = reactive({\n activeChildren: new Set<number>(),\n })\n provide(StackSymbol, stack)\n\n const _zIndex = ref(+zIndex.value)\n useToggleScope(isActive, () => {\n const lastZIndex = globalStack.at(-1)?.[1]\n _zIndex.value = lastZIndex ? lastZIndex + 10 : +zIndex.value\n\n if (createStackEntry) {\n globalStack.push([vm.uid, _zIndex.value])\n }\n\n parent?.activeChildren.add(vm.uid)\n\n onScopeDispose(() => {\n if (createStackEntry) {\n const idx = toRaw(globalStack).findIndex(v => v[0] === vm.uid)\n globalStack.splice(idx, 1)\n }\n\n parent?.activeChildren.delete(vm.uid)\n })\n })\n\n const globalTop = ref(true)\n if (createStackEntry) {\n watchEffect(() => {\n const _isTop = globalStack.at(-1)?.[0] === vm.uid\n setTimeout(() => globalTop.value = _isTop)\n })\n }\n\n const localTop = computed(() => !stack.activeChildren.size)\n\n return {\n globalTop: readonly(globalTop),\n localTop,\n stackStyles: computed(() => ({ zIndex: _zIndex.value })),\n }\n}\n"],"mappings":"SAASA,cAAc;AAEvB,SAASC,QAAQ,EAAEC,MAAM,EAAEC,cAAc,EAAEC,OAAO,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,GAAG,EAAEC,KAAK,EAAEC,WAAW,QAAQ,KAAK;AAAA,SACnGC,kBAAkB,6BAE3B;AAGA,MAAMC,WAAuC,GAAGC,MAAM,CAACC,GAAG,CAAC,eAAe,CAAC;AAM3E,MAAMC,WAAW,GAAGT,QAAQ,CAAkC,EAAE,CAAC;AAEjE,OAAO,SAASU,QAAQ,CACtBC,QAAgC,EAChCC,MAAsC,EACtCC,kBAA2B,EAC3B;EACA,MAAMC,EAAE,GAAGT,kBAAkB,CAAC,UAAU,CAAC;EACzC,MAAMU,gBAAgB,GAAG,CAACF,kBAAkB;EAE5C,MAAMG,MAAM,GAAGnB,MAAM,CAACS,WAAW,EAAEW,SAAS,CAAC;EAC7C,MAAMC,KAAmB,GAAGlB,QAAQ,CAAC;IACnCmB,cAAc,EAAE,IAAIC,GAAG;EACzB,CAAC,CAAC;EACFrB,OAAO,CAACO,WAAW,EAAEY,KAAK,CAAC;EAE3B,MAAMG,OAAO,GAAGnB,GAAG,CAAC,CAACU,MAAM,CAACU,KAAK,CAAC;EAClC3B,cAAc,CAACgB,QAAQ,EAAE,MAAM;IAC7B,MAAMY,UAAU,GAAGd,WAAW,CAACe,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC1CH,OAAO,CAACC,KAAK,GAAGC,UAAU,GAAGA,UAAU,GAAG,EAAE,GAAG,CAACX,MAAM,CAACU,KAAK;IAE5D,IAAIP,gBAAgB,EAAE;MACpBN,WAAW,CAACgB,IAAI,CAAC,CAACX,EAAE,CAACY,GAAG,EAAEL,OAAO,CAACC,KAAK,CAAC,CAAC;IAC3C;IAEAN,MAAM,EAAEG,cAAc,CAACQ,GAAG,CAACb,EAAE,CAACY,GAAG,CAAC;IAElC5B,cAAc,CAAC,MAAM;MACnB,IAAIiB,gBAAgB,EAAE;QACpB,MAAMa,GAAG,GAAGzB,KAAK,CAACM,WAAW,CAAC,CAACoB,SAAS,CAACC,CAAC,IAAIA,CAAC,CAAC,CAAC,CAAC,KAAKhB,EAAE,CAACY,GAAG,CAAC;QAC9DjB,WAAW,CAACsB,MAAM,CAACH,GAAG,EAAE,CAAC,CAAC;MAC5B;MAEAZ,MAAM,EAAEG,cAAc,CAACa,MAAM,CAAClB,EAAE,CAACY,GAAG,CAAC;IACvC,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,MAAMO,SAAS,GAAG/B,GAAG,CAAC,IAAI,CAAC;EAC3B,IAAIa,gBAAgB,EAAE;IACpBX,WAAW,CAAC,MAAM;MAChB,MAAM8B,MAAM,GAAGzB,WAAW,CAACe,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAKV,EAAE,CAACY,GAAG;MACjDS,UAAU,CAAC,MAAMF,SAAS,CAACX,KAAK,GAAGY,MAAM,CAAC;IAC5C,CAAC,CAAC;EACJ;EAEA,MAAME,QAAQ,GAAGxC,QAAQ,CAAC,MAAM,CAACsB,KAAK,CAACC,cAAc,CAACkB,IAAI,CAAC;EAE3D,OAAO;IACLJ,SAAS,EAAEhC,QAAQ,CAACgC,SAAS,CAAC;IAC9BG,QAAQ;IACRE,WAAW,EAAE1C,QAAQ,CAAC,OAAO;MAAEgB,MAAM,EAAES,OAAO,CAACC;IAAM,CAAC,CAAC;EACzD,CAAC;AACH"}
1
+ {"version":3,"file":"stack.mjs","names":["useToggleScope","computed","inject","onScopeDispose","provide","reactive","readonly","ref","toRaw","watchEffect","getCurrentInstance","StackSymbol","Symbol","for","globalStack","useStack","isActive","zIndex","disableGlobalStack","vm","createStackEntry","parent","undefined","stack","activeChildren","Set","_zIndex","value","lastZIndex","at","push","uid","add","idx","findIndex","v","splice","delete","globalTop","_isTop","setTimeout","localTop","size","stackStyles"],"sources":["../../src/composables/stack.ts"],"sourcesContent":["import { useToggleScope } from '@/composables/toggleScope'\n\nimport { computed, inject, onScopeDispose, provide, reactive, readonly, ref, toRaw, watchEffect } from 'vue'\nimport { getCurrentInstance } from '@/util'\n\n// Types\nimport type { InjectionKey, Ref } from 'vue'\n\nconst StackSymbol: InjectionKey<StackProvide> = Symbol.for('vuetify:stack')\n\ninterface StackProvide {\n activeChildren: Set<number>\n}\n\nconst globalStack = reactive<[uid: number, zIndex: number][]>([])\n\nexport function useStack (\n isActive: Readonly<Ref<boolean>>,\n zIndex: Readonly<Ref<string | number>>,\n disableGlobalStack: boolean\n) {\n const vm = getCurrentInstance('useStack')\n const createStackEntry = !disableGlobalStack\n\n const parent = inject(StackSymbol, undefined)\n const stack: StackProvide = reactive({\n activeChildren: new Set<number>(),\n })\n provide(StackSymbol, stack)\n\n const _zIndex = ref(+zIndex.value)\n useToggleScope(isActive, () => {\n const lastZIndex = globalStack.at(-1)?.[1]\n _zIndex.value = lastZIndex ? lastZIndex + 10 : +zIndex.value\n\n if (createStackEntry) {\n globalStack.push([vm.uid, _zIndex.value])\n }\n\n parent?.activeChildren.add(vm.uid)\n\n onScopeDispose(() => {\n if (createStackEntry) {\n const idx = toRaw(globalStack).findIndex(v => v[0] === vm.uid)\n globalStack.splice(idx, 1)\n }\n\n parent?.activeChildren.delete(vm.uid)\n })\n })\n\n const globalTop = ref(true)\n if (createStackEntry) {\n watchEffect(() => {\n const _isTop = globalStack.at(-1)?.[0] === vm.uid\n setTimeout(() => globalTop.value = _isTop)\n })\n }\n\n const localTop = computed(() => !stack.activeChildren.size)\n\n return {\n globalTop: readonly(globalTop),\n localTop,\n stackStyles: computed(() => ({ zIndex: _zIndex.value })),\n }\n}\n"],"mappings":"SAASA,cAAc;AAEvB,SAASC,QAAQ,EAAEC,MAAM,EAAEC,cAAc,EAAEC,OAAO,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,GAAG,EAAEC,KAAK,EAAEC,WAAW,QAAQ,KAAK;AAAA,SACnGC,kBAAkB,6BAE3B;AAGA,MAAMC,WAAuC,GAAGC,MAAM,CAACC,GAAG,CAAC,eAAe,CAAC;AAM3E,MAAMC,WAAW,GAAGT,QAAQ,CAAkC,EAAE,CAAC;AAEjE,OAAO,SAASU,QAAQA,CACtBC,QAAgC,EAChCC,MAAsC,EACtCC,kBAA2B,EAC3B;EACA,MAAMC,EAAE,GAAGT,kBAAkB,CAAC,UAAU,CAAC;EACzC,MAAMU,gBAAgB,GAAG,CAACF,kBAAkB;EAE5C,MAAMG,MAAM,GAAGnB,MAAM,CAACS,WAAW,EAAEW,SAAS,CAAC;EAC7C,MAAMC,KAAmB,GAAGlB,QAAQ,CAAC;IACnCmB,cAAc,EAAE,IAAIC,GAAG;EACzB,CAAC,CAAC;EACFrB,OAAO,CAACO,WAAW,EAAEY,KAAK,CAAC;EAE3B,MAAMG,OAAO,GAAGnB,GAAG,CAAC,CAACU,MAAM,CAACU,KAAK,CAAC;EAClC3B,cAAc,CAACgB,QAAQ,EAAE,MAAM;IAC7B,MAAMY,UAAU,GAAGd,WAAW,CAACe,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC1CH,OAAO,CAACC,KAAK,GAAGC,UAAU,GAAGA,UAAU,GAAG,EAAE,GAAG,CAACX,MAAM,CAACU,KAAK;IAE5D,IAAIP,gBAAgB,EAAE;MACpBN,WAAW,CAACgB,IAAI,CAAC,CAACX,EAAE,CAACY,GAAG,EAAEL,OAAO,CAACC,KAAK,CAAC,CAAC;IAC3C;IAEAN,MAAM,EAAEG,cAAc,CAACQ,GAAG,CAACb,EAAE,CAACY,GAAG,CAAC;IAElC5B,cAAc,CAAC,MAAM;MACnB,IAAIiB,gBAAgB,EAAE;QACpB,MAAMa,GAAG,GAAGzB,KAAK,CAACM,WAAW,CAAC,CAACoB,SAAS,CAACC,CAAC,IAAIA,CAAC,CAAC,CAAC,CAAC,KAAKhB,EAAE,CAACY,GAAG,CAAC;QAC9DjB,WAAW,CAACsB,MAAM,CAACH,GAAG,EAAE,CAAC,CAAC;MAC5B;MAEAZ,MAAM,EAAEG,cAAc,CAACa,MAAM,CAAClB,EAAE,CAACY,GAAG,CAAC;IACvC,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,MAAMO,SAAS,GAAG/B,GAAG,CAAC,IAAI,CAAC;EAC3B,IAAIa,gBAAgB,EAAE;IACpBX,WAAW,CAAC,MAAM;MAChB,MAAM8B,MAAM,GAAGzB,WAAW,CAACe,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAKV,EAAE,CAACY,GAAG;MACjDS,UAAU,CAAC,MAAMF,SAAS,CAACX,KAAK,GAAGY,MAAM,CAAC;IAC5C,CAAC,CAAC;EACJ;EAEA,MAAME,QAAQ,GAAGxC,QAAQ,CAAC,MAAM,CAACsB,KAAK,CAACC,cAAc,CAACkB,IAAI,CAAC;EAE3D,OAAO;IACLJ,SAAS,EAAEhC,QAAQ,CAACgC,SAAS,CAAC;IAC9BG,QAAQ;IACRE,WAAW,EAAE1C,QAAQ,CAAC,OAAO;MAAEgB,MAAM,EAAES,OAAO,CAACC;IAAM,CAAC,CAAC;EACzD,CAAC;AACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"teleport.mjs","names":["computed","warn","IN_BROWSER","useTeleport","target","teleportTarget","_target","value","undefined","targetElement","document","body","querySelector","container","createElement","className","appendChild"],"sources":["../../src/composables/teleport.ts"],"sourcesContent":["// Utilities\nimport { computed, warn } from 'vue'\nimport { IN_BROWSER } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\n\nexport function useTeleport (target: Ref<boolean | string | Element>) {\n const teleportTarget = computed(() => {\n const _target = target.value\n\n if (_target === true || !IN_BROWSER) return undefined\n\n const targetElement =\n _target === false ? document.body\n : typeof _target === 'string' ? document.querySelector(_target)\n : _target\n\n if (targetElement == null) {\n warn(`Unable to locate target ${_target}`)\n return undefined\n }\n\n let container = targetElement.querySelector(':scope > .v-overlay-container')\n\n if (!container) {\n container = document.createElement('div')\n container.className = 'v-overlay-container'\n targetElement.appendChild(container)\n }\n\n return container\n })\n\n return { teleportTarget }\n}\n"],"mappings":"AAAA;AACA,SAASA,QAAQ,EAAEC,IAAI,QAAQ,KAAK;AAAA,SAC3BC,UAAU,6BAEnB;AAGA,OAAO,SAASC,WAAW,CAAEC,MAAuC,EAAE;EACpE,MAAMC,cAAc,GAAGL,QAAQ,CAAC,MAAM;IACpC,MAAMM,OAAO,GAAGF,MAAM,CAACG,KAAK;IAE5B,IAAID,OAAO,KAAK,IAAI,IAAI,CAACJ,UAAU,EAAE,OAAOM,SAAS;IAErD,MAAMC,aAAa,GACjBH,OAAO,KAAK,KAAK,GAAGI,QAAQ,CAACC,IAAI,GAC/B,OAAOL,OAAO,KAAK,QAAQ,GAAGI,QAAQ,CAACE,aAAa,CAACN,OAAO,CAAC,GAC7DA,OAAO;IAEX,IAAIG,aAAa,IAAI,IAAI,EAAE;MACzBR,IAAI,CAAE,2BAA0BK,OAAQ,EAAC,CAAC;MAC1C,OAAOE,SAAS;IAClB;IAEA,IAAIK,SAAS,GAAGJ,aAAa,CAACG,aAAa,CAAC,+BAA+B,CAAC;IAE5E,IAAI,CAACC,SAAS,EAAE;MACdA,SAAS,GAAGH,QAAQ,CAACI,aAAa,CAAC,KAAK,CAAC;MACzCD,SAAS,CAACE,SAAS,GAAG,qBAAqB;MAC3CN,aAAa,CAACO,WAAW,CAACH,SAAS,CAAC;IACtC;IAEA,OAAOA,SAAS;EAClB,CAAC,CAAC;EAEF,OAAO;IAAER;EAAe,CAAC;AAC3B"}
1
+ {"version":3,"file":"teleport.mjs","names":["computed","warn","IN_BROWSER","useTeleport","target","teleportTarget","_target","value","undefined","targetElement","document","body","querySelector","container","createElement","className","appendChild"],"sources":["../../src/composables/teleport.ts"],"sourcesContent":["// Utilities\nimport { computed, warn } from 'vue'\nimport { IN_BROWSER } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\n\nexport function useTeleport (target: Ref<boolean | string | Element>) {\n const teleportTarget = computed(() => {\n const _target = target.value\n\n if (_target === true || !IN_BROWSER) return undefined\n\n const targetElement =\n _target === false ? document.body\n : typeof _target === 'string' ? document.querySelector(_target)\n : _target\n\n if (targetElement == null) {\n warn(`Unable to locate target ${_target}`)\n return undefined\n }\n\n let container = targetElement.querySelector(':scope > .v-overlay-container')\n\n if (!container) {\n container = document.createElement('div')\n container.className = 'v-overlay-container'\n targetElement.appendChild(container)\n }\n\n return container\n })\n\n return { teleportTarget }\n}\n"],"mappings":"AAAA;AACA,SAASA,QAAQ,EAAEC,IAAI,QAAQ,KAAK;AAAA,SAC3BC,UAAU,6BAEnB;AAGA,OAAO,SAASC,WAAWA,CAAEC,MAAuC,EAAE;EACpE,MAAMC,cAAc,GAAGL,QAAQ,CAAC,MAAM;IACpC,MAAMM,OAAO,GAAGF,MAAM,CAACG,KAAK;IAE5B,IAAID,OAAO,KAAK,IAAI,IAAI,CAACJ,UAAU,EAAE,OAAOM,SAAS;IAErD,MAAMC,aAAa,GACjBH,OAAO,KAAK,KAAK,GAAGI,QAAQ,CAACC,IAAI,GAC/B,OAAOL,OAAO,KAAK,QAAQ,GAAGI,QAAQ,CAACE,aAAa,CAACN,OAAO,CAAC,GAC7DA,OAAO;IAEX,IAAIG,aAAa,IAAI,IAAI,EAAE;MACzBR,IAAI,CAAE,2BAA0BK,OAAQ,EAAC,CAAC;MAC1C,OAAOE,SAAS;IAClB;IAEA,IAAIK,SAAS,GAAGJ,aAAa,CAACG,aAAa,CAAC,+BAA+B,CAAC;IAE5E,IAAI,CAACC,SAAS,EAAE;MACdA,SAAS,GAAGH,QAAQ,CAACI,aAAa,CAAC,KAAK,CAAC;MACzCD,SAAS,CAACE,SAAS,GAAG,qBAAqB;MAC3CN,aAAa,CAACO,WAAW,CAACH,SAAS,CAAC;IACtC;IAEA,OAAOA,SAAS;EAClB,CAAC,CAAC;EAEF,OAAO;IAAER;EAAe,CAAC;AAC3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"theme.mjs","names":["computed","inject","provide","reactive","ref","watch","watchEffect","createRange","darken","getCurrentInstance","getLuma","IN_BROWSER","lighten","mergeDeep","parseColor","propsFactory","RGBtoHex","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","genCssVariables","themeName","bgLines","fgLines","Set","values","flatMap","push","map","str","i","join","getHead","style","children","id","nonce","cspNonce","install","app","head","_context","provides","usehead","entry","patch","addHeadObjs","updateDOM","styleEl","document","getElementById","updateStyles","immediate","el","createElement","type","setAttribute","appendChild","innerHTML","themeClasses","undefined","global","provideTheme","props","Error","newTheme","useTheme","selector","content","line","lightOverlay","darkOverlay","rgb","r","g","b","startsWith"],"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 createRange,\n darken,\n getCurrentInstance,\n getLuma,\n IN_BROWSER,\n lighten,\n mergeDeep,\n parseColor,\n propsFactory,\n RGBtoHex,\n} from '@/util'\nimport { APCAcontrast } from '@/util/color/APCA'\n\n// Types\nimport type { App, DeepReadonly, InjectionKey, Ref } from 'vue'\nimport type { 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}`] = RGBtoHex(fn(parseColor(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 = parseColor(theme.colors[color]!)\n\n const blackContrast = Math.abs(APCAcontrast(parseColor(0), colorVal))\n const whiteContrast = Math.abs(APCAcontrast(parseColor(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 createCssClass(lines, ':root', genCssVariables(current.value))\n\n for (const [themeName, theme] of Object.entries(computedThemes.value)) {\n createCssClass(lines, `.v-theme--${themeName}`, [\n `color-scheme: ${theme.dark ? 'dark' : 'normal'}`,\n ...genCssVariables(theme),\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 getHead () {\n return {\n style: [{\n children: styles.value,\n id: 'vuetify-theme-stylesheet',\n nonce: parsedOptions.cspNonce || false as never,\n }],\n }\n }\n\n function install (app: App) {\n const head = app._context.provides.usehead as HeadClient | undefined\n if (head) {\n if (head.push) {\n const entry = head.push(getHead)\n watch(styles, () => { entry.patch(getHead) })\n } else {\n if (IN_BROWSER) {\n head.addHeadObjs(computed(getHead))\n watchEffect(() => head.updateDOM())\n } else {\n head.addHeadObjs(getHead())\n }\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 = parseColor(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 for (const [key, value] of Object.entries(theme.variables)) {\n const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined\n const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined\n variables.push(`--v-${key}: ${rgb ?? value}`)\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","createRange","darken","getCurrentInstance","getLuma","IN_BROWSER","lighten","mergeDeep","parseColor","propsFactory","RGBtoHex","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","arguments","length","undefined","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","genCssVariables","themeName","bgLines","fgLines","Set","values","flatMap","push","map","str","i","join","getHead","style","children","id","nonce","cspNonce","install","app","head","_context","provides","usehead","entry","patch","addHeadObjs","updateDOM","styleEl","document","getElementById","updateStyles","immediate","el","createElement","type","setAttribute","appendChild","innerHTML","themeClasses","global","provideTheme","props","Error","newTheme","useTheme","selector","content","line","lightOverlay","darkOverlay","rgb","r","g","b","startsWith"],"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 createRange,\n darken,\n getCurrentInstance,\n getLuma,\n IN_BROWSER,\n lighten,\n mergeDeep,\n parseColor,\n propsFactory,\n RGBtoHex,\n} from '@/util'\nimport { APCAcontrast } from '@/util/color/APCA'\n\n// Types\nimport type { App, DeepReadonly, InjectionKey, Ref } from 'vue'\nimport type { 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}`] = RGBtoHex(fn(parseColor(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 = parseColor(theme.colors[color]!)\n\n const blackContrast = Math.abs(APCAcontrast(parseColor(0), colorVal))\n const whiteContrast = Math.abs(APCAcontrast(parseColor(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 createCssClass(lines, ':root', genCssVariables(current.value))\n\n for (const [themeName, theme] of Object.entries(computedThemes.value)) {\n createCssClass(lines, `.v-theme--${themeName}`, [\n `color-scheme: ${theme.dark ? 'dark' : 'normal'}`,\n ...genCssVariables(theme),\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 getHead () {\n return {\n style: [{\n children: styles.value,\n id: 'vuetify-theme-stylesheet',\n nonce: parsedOptions.cspNonce || false as never,\n }],\n }\n }\n\n function install (app: App) {\n const head = app._context.provides.usehead as HeadClient | undefined\n if (head) {\n if (head.push) {\n const entry = head.push(getHead)\n watch(styles, () => { entry.patch(getHead) })\n } else {\n if (IN_BROWSER) {\n head.addHeadObjs(computed(getHead))\n watchEffect(() => head.updateDOM())\n } else {\n head.addHeadObjs(getHead())\n }\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 = parseColor(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 for (const [key, value] of Object.entries(theme.variables)) {\n const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined\n const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined\n variables.push(`--v-${key}: ${rgb ?? value}`)\n }\n\n return variables\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"toggleScope.mjs","names":["effectScope","onScopeDispose","watch","useToggleScope","source","fn","scope","start","run","length","stop","active","undefined","immediate"],"sources":["../../src/composables/toggleScope.ts"],"sourcesContent":["import { effectScope, onScopeDispose, watch } from 'vue'\nimport type { EffectScope, WatchSource } from 'vue'\n\nexport function useToggleScope (source: WatchSource<boolean>, fn: (reset: () => void) => void) {\n let scope: EffectScope | undefined\n function start () {\n scope = effectScope()\n scope.run(() => fn.length\n ? fn(() => { scope?.stop(); start() })\n : (fn as any)()\n )\n }\n\n watch(source, active => {\n if (active && !scope) {\n start()\n } else if (!active) {\n scope?.stop()\n scope = undefined\n }\n }, { immediate: true })\n\n onScopeDispose(() => {\n scope?.stop()\n })\n}\n"],"mappings":"AAAA,SAASA,WAAW,EAAEC,cAAc,EAAEC,KAAK,QAAQ,KAAK;AAGxD,OAAO,SAASC,cAAc,CAAEC,MAA4B,EAAEC,EAA+B,EAAE;EAC7F,IAAIC,KAA8B;EAClC,SAASC,KAAK,GAAI;IAChBD,KAAK,GAAGN,WAAW,EAAE;IACrBM,KAAK,CAACE,GAAG,CAAC,MAAMH,EAAE,CAACI,MAAM,GACrBJ,EAAE,CAAC,MAAM;MAAEC,KAAK,EAAEI,IAAI,EAAE;MAAEH,KAAK,EAAE;IAAC,CAAC,CAAC,GACnCF,EAAE,EAAU,CAChB;EACH;EAEAH,KAAK,CAACE,MAAM,EAAEO,MAAM,IAAI;IACtB,IAAIA,MAAM,IAAI,CAACL,KAAK,EAAE;MACpBC,KAAK,EAAE;IACT,CAAC,MAAM,IAAI,CAACI,MAAM,EAAE;MAClBL,KAAK,EAAEI,IAAI,EAAE;MACbJ,KAAK,GAAGM,SAAS;IACnB;EACF,CAAC,EAAE;IAAEC,SAAS,EAAE;EAAK,CAAC,CAAC;EAEvBZ,cAAc,CAAC,MAAM;IACnBK,KAAK,EAAEI,IAAI,EAAE;EACf,CAAC,CAAC;AACJ"}
1
+ {"version":3,"file":"toggleScope.mjs","names":["effectScope","onScopeDispose","watch","useToggleScope","source","fn","scope","start","run","length","stop","active","undefined","immediate"],"sources":["../../src/composables/toggleScope.ts"],"sourcesContent":["import { effectScope, onScopeDispose, watch } from 'vue'\nimport type { EffectScope, WatchSource } from 'vue'\n\nexport function useToggleScope (source: WatchSource<boolean>, fn: (reset: () => void) => void) {\n let scope: EffectScope | undefined\n function start () {\n scope = effectScope()\n scope.run(() => fn.length\n ? fn(() => { scope?.stop(); start() })\n : (fn as any)()\n )\n }\n\n watch(source, active => {\n if (active && !scope) {\n start()\n } else if (!active) {\n scope?.stop()\n scope = undefined\n }\n }, { immediate: true })\n\n onScopeDispose(() => {\n scope?.stop()\n })\n}\n"],"mappings":"AAAA,SAASA,WAAW,EAAEC,cAAc,EAAEC,KAAK,QAAQ,KAAK;AAGxD,OAAO,SAASC,cAAcA,CAAEC,MAA4B,EAAEC,EAA+B,EAAE;EAC7F,IAAIC,KAA8B;EAClC,SAASC,KAAKA,CAAA,EAAI;IAChBD,KAAK,GAAGN,WAAW,EAAE;IACrBM,KAAK,CAACE,GAAG,CAAC,MAAMH,EAAE,CAACI,MAAM,GACrBJ,EAAE,CAAC,MAAM;MAAEC,KAAK,EAAEI,IAAI,EAAE;MAAEH,KAAK,EAAE;IAAC,CAAC,CAAC,GACnCF,EAAE,EAAU,CAChB;EACH;EAEAH,KAAK,CAACE,MAAM,EAAEO,MAAM,IAAI;IACtB,IAAIA,MAAM,IAAI,CAACL,KAAK,EAAE;MACpBC,KAAK,EAAE;IACT,CAAC,MAAM,IAAI,CAACI,MAAM,EAAE;MAClBL,KAAK,EAAEI,IAAI,EAAE;MACbJ,KAAK,GAAGM,SAAS;IACnB;EACF,CAAC,EAAE;IAAEC,SAAS,EAAE;EAAK,CAAC,CAAC;EAEvBZ,cAAc,CAAC,MAAM;IACnBK,KAAK,EAAEI,IAAI,EAAE;EACf,CAAC,CAAC;AACJ"}
@@ -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":"SAASA,cAAc;AAEvB,MAAMC,OAAO,GAAG,GAAG,EAAC;AACpB,MAAMC,OAAO,GAAG,EAAE,EAAC;;AAOnB;AACA,SAASC,uBAAuB,CAAEC,IAAY,EAAE;EAC9C,MAAMC,KAAK,GAAG,aAAa;EAC3B,OAAO,CAACD,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAIE,IAAI,CAACC,IAAI,CAACD,IAAI,CAACE,GAAG,CAACJ,IAAI,CAAC,CAAC,GAAGC,KAAK;AACpE;;AAEA;AACA;AACA;AACA,OAAO,SAASI,wBAAwB,CAAEC,OAAiB,EAAE;EAC3D;EACA,IAAIA,OAAO,CAACC,MAAM,GAAG,CAAC,EAAE;IACtB;IACA,OAAO,CAAC;EACV;EACA;EACA;EACA;EACA;EACA,IAAID,OAAO,CAACC,MAAM,KAAK,CAAC,EAAE;IACxB;IACA,IAAID,OAAO,CAAC,CAAC,CAAC,CAACE,CAAC,KAAKF,OAAO,CAAC,CAAC,CAAC,CAACE,CAAC,EAAE;MACjC;MACA,OAAO,CAAC;IACV;IACA,OAAO,CAACF,OAAO,CAAC,CAAC,CAAC,CAACG,CAAC,GAAGH,OAAO,CAAC,CAAC,CAAC,CAACG,CAAC,KAAKH,OAAO,CAAC,CAAC,CAAC,CAACE,CAAC,GAAGF,OAAO,CAAC,CAAC,CAAC,CAACE,CAAC,CAAC;EACtE;EACA;EACA;EACA,IAAIR,IAAI,GAAG,CAAC;EACZ,KAAK,IAAIU,CAAC,GAAGJ,OAAO,CAACC,MAAM,GAAG,CAAC,EAAEG,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAAE;IAC3C,IAAIJ,OAAO,CAACI,CAAC,CAAC,CAACF,CAAC,KAAKF,OAAO,CAACI,CAAC,GAAG,CAAC,CAAC,CAACF,CAAC,EAAE;MACrC;MACA;IACF;IACA,MAAMG,KAAK,GAAGZ,uBAAuB,CAACC,IAAI,CAAC,EAAC;IAC5C,MAAMY,KAAK,GAAG,CAACN,OAAO,CAACI,CAAC,CAAC,CAACD,CAAC,GAAGH,OAAO,CAACI,CAAC,GAAG,CAAC,CAAC,CAACD,CAAC,KAAKH,OAAO,CAACI,CAAC,CAAC,CAACF,CAAC,GAAGF,OAAO,CAACI,CAAC,GAAG,CAAC,CAAC,CAACF,CAAC,CAAC,EAAC;IACpFR,IAAI,IAAI,CAACY,KAAK,GAAGD,KAAK,IAAIT,IAAI,CAACE,GAAG,CAACQ,KAAK,CAAC;IACzC,IAAIF,CAAC,KAAKJ,OAAO,CAACC,MAAM,GAAG,CAAC,EAAE;MAC5BP,IAAI,IAAI,GAAG;IACb;EACF;EACA,OAAOD,uBAAuB,CAACC,IAAI,CAAC,GAAG,IAAI;AAC7C;AAEA,OAAO,SAASa,WAAW,GAAI;EAC7B,MAAMC,OAAoE,GAAG,CAAC,CAAC;EAE/E,SAASC,WAAW,CAAEC,CAAa,EAAE;IACnCC,KAAK,CAACC,IAAI,CAACF,CAAC,CAACG,cAAc,CAAC,CAACC,OAAO,CAACC,KAAK,IAAI;MAC5C,MAAMf,OAAO,GAAGQ,OAAO,CAACO,KAAK,CAACC,UAAU,CAAC,KAAKR,OAAO,CAACO,KAAK,CAACC,UAAU,CAAC,GAAG,IAAI1B,cAAc,CAACE,OAAO,CAAC,CAAC;MACtGQ,OAAO,CAACiB,IAAI,CAAC,CAACP,CAAC,CAACQ,SAAS,EAAEH,KAAK,CAAC,CAAC;IACpC,CAAC,CAAC;EACJ;EAEA,SAASI,QAAQ,CAAET,CAAa,EAAE;IAChCC,KAAK,CAACC,IAAI,CAACF,CAAC,CAACG,cAAc,CAAC,CAACC,OAAO,CAACC,KAAK,IAAI;MAC5C,OAAOP,OAAO,CAACO,KAAK,CAACC,UAAU,CAAC;IAClC,CAAC,CAAC;EACJ;EAEA,SAASI,WAAW,CAAEC,EAAU,EAAE;IAChC,MAAMrB,OAAO,GAAGQ,OAAO,CAACa,EAAE,CAAC,EAAEC,MAAM,EAAE,CAACC,OAAO,EAAE;IAE/C,IAAI,CAACvB,OAAO,EAAE;MACZ,MAAM,IAAIwB,KAAK,CAAE,2BAA0BH,EAAG,EAAC,CAAC;IAClD;IAEA,MAAMI,MAAM,GAAGzB,OAAO,CAAC,CAAC,CAAC;IACzB,MAAM0B,CAAW,GAAG,EAAE;IACtB,MAAMC,CAAW,GAAG,EAAE;IACtB,KAAK,MAAMC,GAAG,IAAI5B,OAAO,EAAE;MACzB,IAAIyB,MAAM,CAAC,CAAC,CAAC,GAAGG,GAAG,CAAC,CAAC,CAAC,GAAGrC,OAAO,EAAE;MAElCmC,CAAC,CAACT,IAAI,CAAC;QAAEf,CAAC,EAAE0B,GAAG,CAAC,CAAC,CAAC;QAAEzB,CAAC,EAAEyB,GAAG,CAAC,CAAC,CAAC,CAACC;MAAQ,CAAC,CAAC;MACxCF,CAAC,CAACV,IAAI,CAAC;QAAEf,CAAC,EAAE0B,GAAG,CAAC,CAAC,CAAC;QAAEzB,CAAC,EAAEyB,GAAG,CAAC,CAAC,CAAC,CAACE;MAAQ,CAAC,CAAC;IAC1C;IAEA,OAAO;MACLJ,CAAC,EAAE3B,wBAAwB,CAAC2B,CAAC,CAAC;MAC9BC,CAAC,EAAE5B,wBAAwB,CAAC4B,CAAC,CAAC;MAC9B,IAAII,SAAS,GAAI;QACf,MAAM;UAAEL,CAAC;UAAEC;QAAE,CAAC,GAAG,IAAI;QACrB,MAAM,CAACK,IAAI,EAAEC,IAAI,CAAC,GAAG,CAACrC,IAAI,CAACE,GAAG,CAAC4B,CAAC,CAAC,EAAE9B,IAAI,CAACE,GAAG,CAAC6B,CAAC,CAAC,CAAC;QAE/C,OAAOK,IAAI,GAAGC,IAAI,IAAIP,CAAC,IAAI,CAAC,GAAG,OAAO,GAClCM,IAAI,GAAGC,IAAI,IAAIP,CAAC,IAAI,CAAC,GAAG,MAAM,GAC9BO,IAAI,GAAGD,IAAI,IAAIL,CAAC,IAAI,CAAC,GAAG,MAAM,GAC9BM,IAAI,GAAGD,IAAI,IAAIL,CAAC,IAAI,CAAC,GAAG,IAAI,GAC5BO,IAAI,EAAE;MACZ;IACF,CAAC;EACH;EAEA,OAAO;IAAEzB,WAAW;IAAEU,QAAQ;IAAEC;EAAY,CAAC;AAC/C;AAEA,SAASc,IAAI,GAAW;EACtB,MAAM,IAAIV,KAAK,EAAE;AACnB"}
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 +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 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
+ {"version":3,"file":"transition.mjs","names":["h","mergeProps","Transition","propsFactory","makeTransitionProps","transition","type","Boolean","String","Object","default","validator","val","MaybeTransition","props","_ref","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,GAAGA,CAACC,KAAK,EAAAC,IAAA,KAAgB;EAAA,IAAd;IAAEC;EAAM,CAAC,GAAAD,IAAA;EACzF,MAAM;IAAEV,UAAU;IAAE,GAAGY;EAAK,CAAC,GAAGH,KAAK;EAErC,MAAM;IAAEI,SAAS,GAAGhB,UAAU;IAAE,GAAGiB;EAAY,CAAC,GAAG,OAAOd,UAAU,KAAK,QAAQ,GAAGA,UAAU,GAAG,CAAC,CAAC;EAEnG,OAAOL,CAAC,CACNkB,SAAS,EACTjB,UAAU,CAAC,OAAOI,UAAU,KAAK,QAAQ,GAAG;IAAEe,IAAI,EAAEf;EAAW,CAAC,GAAGc,WAAkB,EAAEF,IAAI,CAAQ,EACnGD,KAAK,CACN;AACH,CAAC"}
@@ -104,7 +104,7 @@ export function useValidation(props) {
104
104
  const results = [];
105
105
  isValidating.value = true;
106
106
  for (const rule of props.rules) {
107
- if (results.length >= (props.maxErrors ?? 1)) {
107
+ if (results.length >= +(props.maxErrors ?? 1)) {
108
108
  break;
109
109
  }
110
110
  const handler = typeof rule === 'function' ? rule : () => rule;
@@ -1 +1 @@
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","slice","Math","max","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).slice(0, Math.max(0, +props.maxErrors))\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
+ {"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","arguments","length","undefined","id","model","validationModel","value","form","internalErrorMessages","isPristine","isDirty","isDisabled","isReadonly","slice","Math","max","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).slice(0, Math.max(0, +props.maxErrors))\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 +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;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,SAAU,GAAEC,IAAK;EAAU,QAAK;IAAA,OAE1D,UAAU;IAAA,SAAU,GAAEA,IAAK;EAAW;AAGtD;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"}
1
+ {"version":3,"file":"variant.mjs","names":["useColor","computed","unref","getCurrentInstanceName","propsFactory","allowedVariants","genOverlays","isClickable","name","_createVNode","_Fragment","makeVariantProps","color","String","variant","type","default","validator","v","includes","useVariant","props","arguments","length","undefined","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,WAAWA,CAAEC,WAAoB,EAAEC,IAAY,EAAE;EAC/D,OAAAC,YAAA,CAAAC,SAAA,SAEMH,WAAW,IAAAE,YAAA;IAAA,OAAc,SAAS;IAAA,SAAU,GAAED,IAAK;EAAU,QAAK,EAAAC,YAAA;IAAA,OAE1D,UAAU;IAAA,SAAU,GAAED,IAAK;EAAW;AAGtD;AAEA,OAAO,MAAMG,gBAAgB,GAAGP,YAAY,CAAC;EAC3CQ,KAAK,EAAEC,MAAM;EACbC,OAAO,EAAE;IACPC,IAAI,EAAEF,MAA2B;IACjCG,OAAO,EAAE,UAAU;IACnBC,SAAS,EAAGC,CAAM,IAAKb,eAAe,CAACc,QAAQ,CAACD,CAAC;EACnD;AACF,CAAC,EAAE,SAAS,CAAC;AAEb,OAAO,SAASE,UAAUA,CACxBC,KAA6B,EAE7B;EAAA,IADAb,IAAI,GAAAc,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAGnB,sBAAsB,EAAE;EAE/B,MAAMsB,cAAc,GAAGxB,QAAQ,CAAC,MAAM;IACpC,MAAM;MAAEa;IAAQ,CAAC,GAAGZ,KAAK,CAACmB,KAAK,CAAC;IAChC,OAAQ,GAAEb,IAAK,aAAYM,OAAQ,EAAC;EACtC,CAAC,CAAC;EAEF,MAAM;IAAEY,YAAY;IAAEC;EAAY,CAAC,GAAG3B,QAAQ,CAACC,QAAQ,CAAC,MAAM;IAC5D,MAAM;MAAEa,OAAO;MAAEF;IAAM,CAAC,GAAGV,KAAK,CAACmB,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;IAAEc,YAAY;IAAEC,WAAW;IAAEF;EAAe,CAAC;AACtD"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["attachedRoot","defaultConditional","checkEvent","e","el","binding","checkIsActive","root","ShadowRoot","host","target","elements","value","include","push","some","contains","isActive","closeConditional","directive","handler","_clickOutside","lastMousedownWasOutside","setTimeout","handleShadow","callback","document","ClickOutside","mounted","onClick","onMousedown","app","addEventListener","instance","$","uid","unmounted","removeEventListener"],"sources":["../../../src/directives/click-outside/index.ts"],"sourcesContent":["import { attachedRoot } from '@/util'\nimport type { DirectiveBinding } from 'vue'\n\ninterface ClickOutsideBindingArgs {\n handler: (e: MouseEvent) => void\n closeConditional?: (e: Event) => boolean\n include?: () => HTMLElement[]\n}\n\ninterface ClickOutsideDirectiveBinding extends DirectiveBinding {\n value: ((e: MouseEvent) => void) | ClickOutsideBindingArgs\n}\n\nfunction defaultConditional () {\n return true\n}\n\nfunction checkEvent (e: MouseEvent, el: HTMLElement, binding: ClickOutsideDirectiveBinding): boolean {\n // The include element callbacks below can be expensive\n // so we should avoid calling them when we're not active.\n // Explicitly check for false to allow fallback compatibility\n // with non-toggleable components\n if (!e || checkIsActive(e, binding) === false) return false\n\n // If we're clicking inside the shadowroot, then the app root doesn't get the same\n // level of introspection as to _what_ we're clicking. We want to check to see if\n // our target is the shadowroot parent container, and if it is, ignore.\n const root = attachedRoot(el)\n if (\n typeof ShadowRoot !== 'undefined' &&\n root instanceof ShadowRoot &&\n root.host === e.target\n ) return false\n\n // Check if additional elements were passed to be included in check\n // (click must be outside all included elements, if any)\n const elements = ((typeof binding.value === 'object' && binding.value.include) || (() => []))()\n // Add the root element for the component this directive was defined on\n elements.push(el)\n\n // Check if it's a click outside our elements, and then if our callback returns true.\n // Non-toggleable components should take action in their callback and return falsy.\n // Toggleable can return true if it wants to deactivate.\n // Note that, because we're in the capture phase, this callback will occur before\n // the bubbling click event on any outside elements.\n return !elements.some(el => el?.contains(e.target as Node))\n}\n\nfunction checkIsActive (e: MouseEvent, binding: ClickOutsideDirectiveBinding): boolean | void {\n const isActive = (typeof binding.value === 'object' && binding.value.closeConditional) || defaultConditional\n\n return isActive(e)\n}\n\nfunction directive (e: MouseEvent, el: HTMLElement, binding: ClickOutsideDirectiveBinding) {\n const handler = typeof binding.value === 'function' ? binding.value : binding.value.handler\n\n el._clickOutside!.lastMousedownWasOutside && checkEvent(e, el, binding) && setTimeout(() => {\n checkIsActive(e, binding) && handler && handler(e)\n }, 0)\n}\n\nfunction handleShadow (el: HTMLElement, callback: Function): void {\n const root = attachedRoot(el)\n\n callback(document)\n\n if (typeof ShadowRoot !== 'undefined' && root instanceof ShadowRoot) {\n callback(root)\n }\n}\n\nexport const ClickOutside = {\n // [data-app] may not be found\n // if using bind, inserted makes\n // sure that the root element is\n // available, iOS does not support\n // clicks on body\n mounted (el: HTMLElement, binding: ClickOutsideDirectiveBinding) {\n const onClick = (e: Event) => directive(e as MouseEvent, el, binding)\n const onMousedown = (e: Event) => {\n el._clickOutside!.lastMousedownWasOutside = checkEvent(e as MouseEvent, el, binding)\n }\n\n handleShadow(el, (app: HTMLElement) => {\n app.addEventListener('click', onClick, true)\n app.addEventListener('mousedown', onMousedown, true)\n })\n\n if (!el._clickOutside) {\n el._clickOutside = {\n lastMousedownWasOutside: true,\n }\n }\n\n el._clickOutside[binding.instance!.$.uid] = {\n onClick,\n onMousedown,\n }\n },\n\n unmounted (el: HTMLElement, binding: ClickOutsideDirectiveBinding) {\n if (!el._clickOutside) return\n\n handleShadow(el, (app: HTMLElement) => {\n if (!app || !el._clickOutside?.[binding.instance!.$.uid]) return\n\n const { onClick, onMousedown } = el._clickOutside[binding.instance!.$.uid]!\n\n app.removeEventListener('click', onClick, true)\n app.removeEventListener('mousedown', onMousedown, true)\n })\n\n delete el._clickOutside[binding.instance!.$.uid]\n },\n}\n\nexport default ClickOutside\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["attachedRoot","defaultConditional","checkEvent","e","el","binding","checkIsActive","root","ShadowRoot","host","target","elements","value","include","push","some","contains","isActive","closeConditional","directive","handler","_clickOutside","lastMousedownWasOutside","setTimeout","handleShadow","callback","document","ClickOutside","mounted","onClick","onMousedown","app","addEventListener","instance","$","uid","unmounted","removeEventListener"],"sources":["../../../src/directives/click-outside/index.ts"],"sourcesContent":["import { attachedRoot } from '@/util'\nimport type { DirectiveBinding } from 'vue'\n\ninterface ClickOutsideBindingArgs {\n handler: (e: MouseEvent) => void\n closeConditional?: (e: Event) => boolean\n include?: () => HTMLElement[]\n}\n\ninterface ClickOutsideDirectiveBinding extends DirectiveBinding {\n value: ((e: MouseEvent) => void) | ClickOutsideBindingArgs\n}\n\nfunction defaultConditional () {\n return true\n}\n\nfunction checkEvent (e: MouseEvent, el: HTMLElement, binding: ClickOutsideDirectiveBinding): boolean {\n // The include element callbacks below can be expensive\n // so we should avoid calling them when we're not active.\n // Explicitly check for false to allow fallback compatibility\n // with non-toggleable components\n if (!e || checkIsActive(e, binding) === false) return false\n\n // If we're clicking inside the shadowroot, then the app root doesn't get the same\n // level of introspection as to _what_ we're clicking. We want to check to see if\n // our target is the shadowroot parent container, and if it is, ignore.\n const root = attachedRoot(el)\n if (\n typeof ShadowRoot !== 'undefined' &&\n root instanceof ShadowRoot &&\n root.host === e.target\n ) return false\n\n // Check if additional elements were passed to be included in check\n // (click must be outside all included elements, if any)\n const elements = ((typeof binding.value === 'object' && binding.value.include) || (() => []))()\n // Add the root element for the component this directive was defined on\n elements.push(el)\n\n // Check if it's a click outside our elements, and then if our callback returns true.\n // Non-toggleable components should take action in their callback and return falsy.\n // Toggleable can return true if it wants to deactivate.\n // Note that, because we're in the capture phase, this callback will occur before\n // the bubbling click event on any outside elements.\n return !elements.some(el => el?.contains(e.target as Node))\n}\n\nfunction checkIsActive (e: MouseEvent, binding: ClickOutsideDirectiveBinding): boolean | void {\n const isActive = (typeof binding.value === 'object' && binding.value.closeConditional) || defaultConditional\n\n return isActive(e)\n}\n\nfunction directive (e: MouseEvent, el: HTMLElement, binding: ClickOutsideDirectiveBinding) {\n const handler = typeof binding.value === 'function' ? binding.value : binding.value.handler\n\n el._clickOutside!.lastMousedownWasOutside && checkEvent(e, el, binding) && setTimeout(() => {\n checkIsActive(e, binding) && handler && handler(e)\n }, 0)\n}\n\nfunction handleShadow (el: HTMLElement, callback: Function): void {\n const root = attachedRoot(el)\n\n callback(document)\n\n if (typeof ShadowRoot !== 'undefined' && root instanceof ShadowRoot) {\n callback(root)\n }\n}\n\nexport const ClickOutside = {\n // [data-app] may not be found\n // if using bind, inserted makes\n // sure that the root element is\n // available, iOS does not support\n // clicks on body\n mounted (el: HTMLElement, binding: ClickOutsideDirectiveBinding) {\n const onClick = (e: Event) => directive(e as MouseEvent, el, binding)\n const onMousedown = (e: Event) => {\n el._clickOutside!.lastMousedownWasOutside = checkEvent(e as MouseEvent, el, binding)\n }\n\n handleShadow(el, (app: HTMLElement) => {\n app.addEventListener('click', onClick, true)\n app.addEventListener('mousedown', onMousedown, true)\n })\n\n if (!el._clickOutside) {\n el._clickOutside = {\n lastMousedownWasOutside: true,\n }\n }\n\n el._clickOutside[binding.instance!.$.uid] = {\n onClick,\n onMousedown,\n }\n },\n\n unmounted (el: HTMLElement, binding: ClickOutsideDirectiveBinding) {\n if (!el._clickOutside) return\n\n handleShadow(el, (app: HTMLElement) => {\n if (!app || !el._clickOutside?.[binding.instance!.$.uid]) return\n\n const { onClick, onMousedown } = el._clickOutside[binding.instance!.$.uid]!\n\n app.removeEventListener('click', onClick, true)\n app.removeEventListener('mousedown', onMousedown, true)\n })\n\n delete el._clickOutside[binding.instance!.$.uid]\n },\n}\n\nexport default ClickOutside\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["classToHex","isCssColor","parseGradient","colors","setTextColor","el","color","currentTheme","cssColor","style","caretColor","setBackgroundColor","backgroundColor","borderColor","setBorderColor","modifiers","Object","keys","length","top","borderTopColor","right","borderRightColor","bottom","borderBottomColor","left","borderLeftColor","setGradientColor","gradient","backgroundImage","updateColor","binding","node","context","$vuetify","theme","arg","undefined","value","update","oldValue","Color","bind"],"sources":["../../../src/directives/color/index.ts"],"sourcesContent":["// @ts-nocheck\n/* eslint-disable */\n\n// Utilities\nimport {\n classToHex,\n isCssColor,\n parseGradient,\n} from '../../util/colorUtils'\nimport colors from '../../util/colors'\n\n// Types\nimport { VuetifyThemeVariant } from 'types/services/theme'\nimport { VNode, VNodeDirective } from 'vue'\n\ninterface BorderModifiers {\n top?: Boolean\n right?: Boolean\n bottom?: Boolean\n left?: Boolean\n}\n\nfunction setTextColor (\n el: HTMLElement,\n color: string,\n currentTheme: Partial<VuetifyThemeVariant>,\n) {\n const cssColor = !isCssColor(color) ? classToHex(color, colors, currentTheme) : color\n\n el.style.color = cssColor\n el.style.caretColor = cssColor\n}\n\nfunction setBackgroundColor (\n el: HTMLElement,\n color: string,\n currentTheme: Partial<VuetifyThemeVariant>,\n) {\n const cssColor = !isCssColor(color) ? classToHex(color, colors, currentTheme) : color\n\n el.style.backgroundColor = cssColor\n el.style.borderColor = cssColor\n}\n\nfunction setBorderColor (\n el: HTMLElement,\n color: string,\n currentTheme: Partial<VuetifyThemeVariant>,\n modifiers?: BorderModifiers,\n) {\n const cssColor = !isCssColor(color) ? classToHex(color, colors, currentTheme) : color\n\n if (!modifiers || !Object.keys(modifiers).length) {\n el.style.borderColor = cssColor\n return\n }\n\n if (modifiers.top) el.style.borderTopColor = cssColor\n if (modifiers.right) el.style.borderRightColor = cssColor\n if (modifiers.bottom) el.style.borderBottomColor = cssColor\n if (modifiers.left) el.style.borderLeftColor = cssColor\n}\n\nfunction setGradientColor (\n el: HTMLElement,\n gradient: string,\n currentTheme: Partial<VuetifyThemeVariant>,\n) {\n el.style.backgroundImage = `linear-gradient(${\n parseGradient(gradient, colors, currentTheme)\n })`\n}\n\nfunction updateColor (\n el: HTMLElement,\n binding: VNodeDirective,\n node: VNode\n) {\n const currentTheme = node.context!.$vuetify.theme.currentTheme\n\n if (binding.arg === undefined) {\n setBackgroundColor(el, binding.value, currentTheme)\n } else if (binding.arg === 'text') {\n setTextColor(el, binding.value, currentTheme)\n } else if (binding.arg === 'border') {\n setBorderColor(el, binding.value, currentTheme, binding.modifiers)\n } else if (binding.arg === 'gradient') {\n setGradientColor(el, binding.value, currentTheme)\n }\n}\n\nfunction update (\n el: HTMLElement,\n binding: VNodeDirective,\n node: VNode\n) {\n if (binding.value === binding.oldValue) return\n\n updateColor(el, binding, node)\n}\n\nexport const Color = {\n bind: updateColor,\n update,\n}\n\nexport default Color\n"],"mappings":"AAAA;AACA;AAEA;AAAA,SAEEA,UAAU,EACVC,UAAU,EACVC,aAAa;AAAA,OAERC,MAAM,+BAEb;AAWA,SAASC,YAAY,CACnBC,EAAe,EACfC,KAAa,EACbC,YAA0C,EAC1C;EACA,MAAMC,QAAQ,GAAG,CAACP,UAAU,CAACK,KAAK,CAAC,GAAGN,UAAU,CAACM,KAAK,EAAEH,MAAM,EAAEI,YAAY,CAAC,GAAGD,KAAK;EAErFD,EAAE,CAACI,KAAK,CAACH,KAAK,GAAGE,QAAQ;EACzBH,EAAE,CAACI,KAAK,CAACC,UAAU,GAAGF,QAAQ;AAChC;AAEA,SAASG,kBAAkB,CACzBN,EAAe,EACfC,KAAa,EACbC,YAA0C,EAC1C;EACA,MAAMC,QAAQ,GAAG,CAACP,UAAU,CAACK,KAAK,CAAC,GAAGN,UAAU,CAACM,KAAK,EAAEH,MAAM,EAAEI,YAAY,CAAC,GAAGD,KAAK;EAErFD,EAAE,CAACI,KAAK,CAACG,eAAe,GAAGJ,QAAQ;EACnCH,EAAE,CAACI,KAAK,CAACI,WAAW,GAAGL,QAAQ;AACjC;AAEA,SAASM,cAAc,CACrBT,EAAe,EACfC,KAAa,EACbC,YAA0C,EAC1CQ,SAA2B,EAC3B;EACA,MAAMP,QAAQ,GAAG,CAACP,UAAU,CAACK,KAAK,CAAC,GAAGN,UAAU,CAACM,KAAK,EAAEH,MAAM,EAAEI,YAAY,CAAC,GAAGD,KAAK;EAErF,IAAI,CAACS,SAAS,IAAI,CAACC,MAAM,CAACC,IAAI,CAACF,SAAS,CAAC,CAACG,MAAM,EAAE;IAChDb,EAAE,CAACI,KAAK,CAACI,WAAW,GAAGL,QAAQ;IAC/B;EACF;EAEA,IAAIO,SAAS,CAACI,GAAG,EAAEd,EAAE,CAACI,KAAK,CAACW,cAAc,GAAGZ,QAAQ;EACrD,IAAIO,SAAS,CAACM,KAAK,EAAEhB,EAAE,CAACI,KAAK,CAACa,gBAAgB,GAAGd,QAAQ;EACzD,IAAIO,SAAS,CAACQ,MAAM,EAAElB,EAAE,CAACI,KAAK,CAACe,iBAAiB,GAAGhB,QAAQ;EAC3D,IAAIO,SAAS,CAACU,IAAI,EAAEpB,EAAE,CAACI,KAAK,CAACiB,eAAe,GAAGlB,QAAQ;AACzD;AAEA,SAASmB,gBAAgB,CACvBtB,EAAe,EACfuB,QAAgB,EAChBrB,YAA0C,EAC1C;EACAF,EAAE,CAACI,KAAK,CAACoB,eAAe,GAAI,mBAC1B3B,aAAa,CAAC0B,QAAQ,EAAEzB,MAAM,EAAEI,YAAY,CAC7C,GAAE;AACL;AAEA,SAASuB,WAAW,CAClBzB,EAAe,EACf0B,OAAuB,EACvBC,IAAW,EACX;EACA,MAAMzB,YAAY,GAAGyB,IAAI,CAACC,OAAO,CAAEC,QAAQ,CAACC,KAAK,CAAC5B,YAAY;EAE9D,IAAIwB,OAAO,CAACK,GAAG,KAAKC,SAAS,EAAE;IAC7B1B,kBAAkB,CAACN,EAAE,EAAE0B,OAAO,CAACO,KAAK,EAAE/B,YAAY,CAAC;EACrD,CAAC,MAAM,IAAIwB,OAAO,CAACK,GAAG,KAAK,MAAM,EAAE;IACjChC,YAAY,CAACC,EAAE,EAAE0B,OAAO,CAACO,KAAK,EAAE/B,YAAY,CAAC;EAC/C,CAAC,MAAM,IAAIwB,OAAO,CAACK,GAAG,KAAK,QAAQ,EAAE;IACnCtB,cAAc,CAACT,EAAE,EAAE0B,OAAO,CAACO,KAAK,EAAE/B,YAAY,EAAEwB,OAAO,CAAChB,SAAS,CAAC;EACpE,CAAC,MAAM,IAAIgB,OAAO,CAACK,GAAG,KAAK,UAAU,EAAE;IACrCT,gBAAgB,CAACtB,EAAE,EAAE0B,OAAO,CAACO,KAAK,EAAE/B,YAAY,CAAC;EACnD;AACF;AAEA,SAASgC,MAAM,CACblC,EAAe,EACf0B,OAAuB,EACvBC,IAAW,EACX;EACA,IAAID,OAAO,CAACO,KAAK,KAAKP,OAAO,CAACS,QAAQ,EAAE;EAExCV,WAAW,CAACzB,EAAE,EAAE0B,OAAO,EAAEC,IAAI,CAAC;AAChC;AAEA,OAAO,MAAMS,KAAK,GAAG;EACnBC,IAAI,EAAEZ,WAAW;EACjBS;AACF,CAAC;AAED,eAAeE,KAAK"}
1
+ {"version":3,"file":"index.mjs","names":["classToHex","isCssColor","parseGradient","colors","setTextColor","el","color","currentTheme","cssColor","style","caretColor","setBackgroundColor","backgroundColor","borderColor","setBorderColor","modifiers","Object","keys","length","top","borderTopColor","right","borderRightColor","bottom","borderBottomColor","left","borderLeftColor","setGradientColor","gradient","backgroundImage","updateColor","binding","node","context","$vuetify","theme","arg","undefined","value","update","oldValue","Color","bind"],"sources":["../../../src/directives/color/index.ts"],"sourcesContent":["// @ts-nocheck\n/* eslint-disable */\n\n// Utilities\nimport {\n classToHex,\n isCssColor,\n parseGradient,\n} from '../../util/colorUtils'\nimport colors from '../../util/colors'\n\n// Types\nimport { VuetifyThemeVariant } from 'types/services/theme'\nimport { VNode, VNodeDirective } from 'vue'\n\ninterface BorderModifiers {\n top?: Boolean\n right?: Boolean\n bottom?: Boolean\n left?: Boolean\n}\n\nfunction setTextColor (\n el: HTMLElement,\n color: string,\n currentTheme: Partial<VuetifyThemeVariant>,\n) {\n const cssColor = !isCssColor(color) ? classToHex(color, colors, currentTheme) : color\n\n el.style.color = cssColor\n el.style.caretColor = cssColor\n}\n\nfunction setBackgroundColor (\n el: HTMLElement,\n color: string,\n currentTheme: Partial<VuetifyThemeVariant>,\n) {\n const cssColor = !isCssColor(color) ? classToHex(color, colors, currentTheme) : color\n\n el.style.backgroundColor = cssColor\n el.style.borderColor = cssColor\n}\n\nfunction setBorderColor (\n el: HTMLElement,\n color: string,\n currentTheme: Partial<VuetifyThemeVariant>,\n modifiers?: BorderModifiers,\n) {\n const cssColor = !isCssColor(color) ? classToHex(color, colors, currentTheme) : color\n\n if (!modifiers || !Object.keys(modifiers).length) {\n el.style.borderColor = cssColor\n return\n }\n\n if (modifiers.top) el.style.borderTopColor = cssColor\n if (modifiers.right) el.style.borderRightColor = cssColor\n if (modifiers.bottom) el.style.borderBottomColor = cssColor\n if (modifiers.left) el.style.borderLeftColor = cssColor\n}\n\nfunction setGradientColor (\n el: HTMLElement,\n gradient: string,\n currentTheme: Partial<VuetifyThemeVariant>,\n) {\n el.style.backgroundImage = `linear-gradient(${\n parseGradient(gradient, colors, currentTheme)\n })`\n}\n\nfunction updateColor (\n el: HTMLElement,\n binding: VNodeDirective,\n node: VNode\n) {\n const currentTheme = node.context!.$vuetify.theme.currentTheme\n\n if (binding.arg === undefined) {\n setBackgroundColor(el, binding.value, currentTheme)\n } else if (binding.arg === 'text') {\n setTextColor(el, binding.value, currentTheme)\n } else if (binding.arg === 'border') {\n setBorderColor(el, binding.value, currentTheme, binding.modifiers)\n } else if (binding.arg === 'gradient') {\n setGradientColor(el, binding.value, currentTheme)\n }\n}\n\nfunction update (\n el: HTMLElement,\n binding: VNodeDirective,\n node: VNode\n) {\n if (binding.value === binding.oldValue) return\n\n updateColor(el, binding, node)\n}\n\nexport const Color = {\n bind: updateColor,\n update,\n}\n\nexport default Color\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["SUPPORTS_INTERSECTION","mounted","el","binding","modifiers","value","handler","options","observer","IntersectionObserver","entries","_observe","instance","$","uid","isIntersecting","some","entry","quiet","init","once","unmounted","Object","observe","unobserve","Intersect"],"sources":["../../../src/directives/intersect/index.ts"],"sourcesContent":["// Utils\nimport { SUPPORTS_INTERSECTION } from '@/util'\n\n// Types\nimport type {\n DirectiveBinding,\n} from 'vue'\n\ntype ObserveHandler = (\n isIntersecting: boolean,\n entries: IntersectionObserverEntry[],\n observer: IntersectionObserver,\n) => void\n\nexport interface ObserveDirectiveBinding extends Omit<DirectiveBinding, 'modifiers' | 'value'> {\n value?: ObserveHandler | { handler: ObserveHandler, options?: IntersectionObserverInit }\n modifiers: {\n once?: boolean\n quiet?: boolean\n }\n}\n\nfunction mounted (el: HTMLElement, binding: ObserveDirectiveBinding) {\n if (!SUPPORTS_INTERSECTION) return\n\n const modifiers = binding.modifiers || {}\n const value = binding.value\n const { handler, options } = typeof value === 'object'\n ? value\n : { handler: value, options: {} }\n\n const observer = new IntersectionObserver((\n entries: IntersectionObserverEntry[] = [],\n observer: IntersectionObserver\n ) => {\n const _observe = el._observe?.[binding.instance!.$.uid]\n if (!_observe) return // Just in case, should never fire\n\n const isIntersecting = entries.some(entry => entry.isIntersecting)\n\n // If is not quiet or has already been\n // initted, invoke the user callback\n if (\n handler && (\n !modifiers.quiet ||\n _observe.init\n ) && (\n !modifiers.once ||\n isIntersecting ||\n _observe.init\n )\n ) {\n handler(isIntersecting, entries, observer)\n }\n\n if (isIntersecting && modifiers.once) unmounted(el, binding)\n else _observe.init = true\n }, options)\n\n el._observe = Object(el._observe)\n el._observe![binding.instance!.$.uid] = { init: false, observer }\n\n observer.observe(el)\n}\n\nfunction unmounted (el: HTMLElement, binding: ObserveDirectiveBinding) {\n const observe = el._observe?.[binding.instance!.$.uid]\n if (!observe) return\n\n observe.observer.unobserve(el)\n delete el._observe![binding.instance!.$.uid]\n}\n\nexport const Intersect = {\n mounted,\n unmounted,\n}\n\nexport default Intersect\n"],"mappings":"AAAA;AAAA,SACSA,qBAAqB,gCAE9B;AAmBA,SAASC,OAAO,CAAEC,EAAe,EAAEC,OAAgC,EAAE;EACnE,IAAI,CAACH,qBAAqB,EAAE;EAE5B,MAAMI,SAAS,GAAGD,OAAO,CAACC,SAAS,IAAI,CAAC,CAAC;EACzC,MAAMC,KAAK,GAAGF,OAAO,CAACE,KAAK;EAC3B,MAAM;IAAEC,OAAO;IAAEC;EAAQ,CAAC,GAAG,OAAOF,KAAK,KAAK,QAAQ,GAClDA,KAAK,GACL;IAAEC,OAAO,EAAED,KAAK;IAAEE,OAAO,EAAE,CAAC;EAAE,CAAC;EAEnC,MAAMC,QAAQ,GAAG,IAAIC,oBAAoB,CAAC,YAGrC;IAAA,IAFHC,OAAoC,uEAAG,EAAE;IAAA,IACzCF,QAA8B;IAE9B,MAAMG,QAAQ,GAAGT,EAAE,CAACS,QAAQ,GAAGR,OAAO,CAACS,QAAQ,CAAEC,CAAC,CAACC,GAAG,CAAC;IACvD,IAAI,CAACH,QAAQ,EAAE,OAAM,CAAC;;IAEtB,MAAMI,cAAc,GAAGL,OAAO,CAACM,IAAI,CAACC,KAAK,IAAIA,KAAK,CAACF,cAAc,CAAC;;IAElE;IACA;IACA,IACET,OAAO,KACL,CAACF,SAAS,CAACc,KAAK,IAChBP,QAAQ,CAACQ,IAAI,CACd,KACC,CAACf,SAAS,CAACgB,IAAI,IACfL,cAAc,IACdJ,QAAQ,CAACQ,IAAI,CACd,EACD;MACAb,OAAO,CAACS,cAAc,EAAEL,OAAO,EAAEF,QAAQ,CAAC;IAC5C;IAEA,IAAIO,cAAc,IAAIX,SAAS,CAACgB,IAAI,EAAEC,SAAS,CAACnB,EAAE,EAAEC,OAAO,CAAC,MACvDQ,QAAQ,CAACQ,IAAI,GAAG,IAAI;EAC3B,CAAC,EAAEZ,OAAO,CAAC;EAEXL,EAAE,CAACS,QAAQ,GAAGW,MAAM,CAACpB,EAAE,CAACS,QAAQ,CAAC;EACjCT,EAAE,CAACS,QAAQ,CAAER,OAAO,CAACS,QAAQ,CAAEC,CAAC,CAACC,GAAG,CAAC,GAAG;IAAEK,IAAI,EAAE,KAAK;IAAEX;EAAS,CAAC;EAEjEA,QAAQ,CAACe,OAAO,CAACrB,EAAE,CAAC;AACtB;AAEA,SAASmB,SAAS,CAAEnB,EAAe,EAAEC,OAAgC,EAAE;EACrE,MAAMoB,OAAO,GAAGrB,EAAE,CAACS,QAAQ,GAAGR,OAAO,CAACS,QAAQ,CAAEC,CAAC,CAACC,GAAG,CAAC;EACtD,IAAI,CAACS,OAAO,EAAE;EAEdA,OAAO,CAACf,QAAQ,CAACgB,SAAS,CAACtB,EAAE,CAAC;EAC9B,OAAOA,EAAE,CAACS,QAAQ,CAAER,OAAO,CAACS,QAAQ,CAAEC,CAAC,CAACC,GAAG,CAAC;AAC9C;AAEA,OAAO,MAAMW,SAAS,GAAG;EACvBxB,OAAO;EACPoB;AACF,CAAC;AAED,eAAeI,SAAS"}
1
+ {"version":3,"file":"index.mjs","names":["SUPPORTS_INTERSECTION","mounted","el","binding","modifiers","value","handler","options","observer","IntersectionObserver","entries","arguments","length","undefined","_observe","instance","$","uid","isIntersecting","some","entry","quiet","init","once","unmounted","Object","observe","unobserve","Intersect"],"sources":["../../../src/directives/intersect/index.ts"],"sourcesContent":["// Utils\nimport { SUPPORTS_INTERSECTION } from '@/util'\n\n// Types\nimport type {\n DirectiveBinding,\n} from 'vue'\n\ntype ObserveHandler = (\n isIntersecting: boolean,\n entries: IntersectionObserverEntry[],\n observer: IntersectionObserver,\n) => void\n\nexport interface ObserveDirectiveBinding extends Omit<DirectiveBinding, 'modifiers' | 'value'> {\n value?: ObserveHandler | { handler: ObserveHandler, options?: IntersectionObserverInit }\n modifiers: {\n once?: boolean\n quiet?: boolean\n }\n}\n\nfunction mounted (el: HTMLElement, binding: ObserveDirectiveBinding) {\n if (!SUPPORTS_INTERSECTION) return\n\n const modifiers = binding.modifiers || {}\n const value = binding.value\n const { handler, options } = typeof value === 'object'\n ? value\n : { handler: value, options: {} }\n\n const observer = new IntersectionObserver((\n entries: IntersectionObserverEntry[] = [],\n observer: IntersectionObserver\n ) => {\n const _observe = el._observe?.[binding.instance!.$.uid]\n if (!_observe) return // Just in case, should never fire\n\n const isIntersecting = entries.some(entry => entry.isIntersecting)\n\n // If is not quiet or has already been\n // initted, invoke the user callback\n if (\n handler && (\n !modifiers.quiet ||\n _observe.init\n ) && (\n !modifiers.once ||\n isIntersecting ||\n _observe.init\n )\n ) {\n handler(isIntersecting, entries, observer)\n }\n\n if (isIntersecting && modifiers.once) unmounted(el, binding)\n else _observe.init = true\n }, options)\n\n el._observe = Object(el._observe)\n el._observe![binding.instance!.$.uid] = { init: false, observer }\n\n observer.observe(el)\n}\n\nfunction unmounted (el: HTMLElement, binding: ObserveDirectiveBinding) {\n const observe = el._observe?.[binding.instance!.$.uid]\n if (!observe) return\n\n observe.observer.unobserve(el)\n delete el._observe![binding.instance!.$.uid]\n}\n\nexport const Intersect = {\n mounted,\n unmounted,\n}\n\nexport default Intersect\n"],"mappings":"AAAA;AAAA,SACSA,qBAAqB,gCAE9B;AAmBA,SAASC,OAAOA,CAAEC,EAAe,EAAEC,OAAgC,EAAE;EACnE,IAAI,CAACH,qBAAqB,EAAE;EAE5B,MAAMI,SAAS,GAAGD,OAAO,CAACC,SAAS,IAAI,CAAC,CAAC;EACzC,MAAMC,KAAK,GAAGF,OAAO,CAACE,KAAK;EAC3B,MAAM;IAAEC,OAAO;IAAEC;EAAQ,CAAC,GAAG,OAAOF,KAAK,KAAK,QAAQ,GAClDA,KAAK,GACL;IAAEC,OAAO,EAAED,KAAK;IAAEE,OAAO,EAAE,CAAC;EAAE,CAAC;EAEnC,MAAMC,QAAQ,GAAG,IAAIC,oBAAoB,CAAC,YAGrC;IAAA,IAFHC,OAAoC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;IAAA,IACzCH,QAA8B,GAAAG,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAAE,SAAA;IAE9B,MAAMC,QAAQ,GAAGZ,EAAE,CAACY,QAAQ,GAAGX,OAAO,CAACY,QAAQ,CAAEC,CAAC,CAACC,GAAG,CAAC;IACvD,IAAI,CAACH,QAAQ,EAAE,OAAM,CAAC;;IAEtB,MAAMI,cAAc,GAAGR,OAAO,CAACS,IAAI,CAACC,KAAK,IAAIA,KAAK,CAACF,cAAc,CAAC;;IAElE;IACA;IACA,IACEZ,OAAO,KACL,CAACF,SAAS,CAACiB,KAAK,IAChBP,QAAQ,CAACQ,IAAI,CACd,KACC,CAAClB,SAAS,CAACmB,IAAI,IACfL,cAAc,IACdJ,QAAQ,CAACQ,IAAI,CACd,EACD;MACAhB,OAAO,CAACY,cAAc,EAAER,OAAO,EAAEF,QAAQ,CAAC;IAC5C;IAEA,IAAIU,cAAc,IAAId,SAAS,CAACmB,IAAI,EAAEC,SAAS,CAACtB,EAAE,EAAEC,OAAO,CAAC,MACvDW,QAAQ,CAACQ,IAAI,GAAG,IAAI;EAC3B,CAAC,EAAEf,OAAO,CAAC;EAEXL,EAAE,CAACY,QAAQ,GAAGW,MAAM,CAACvB,EAAE,CAACY,QAAQ,CAAC;EACjCZ,EAAE,CAACY,QAAQ,CAAEX,OAAO,CAACY,QAAQ,CAAEC,CAAC,CAACC,GAAG,CAAC,GAAG;IAAEK,IAAI,EAAE,KAAK;IAAEd;EAAS,CAAC;EAEjEA,QAAQ,CAACkB,OAAO,CAACxB,EAAE,CAAC;AACtB;AAEA,SAASsB,SAASA,CAAEtB,EAAe,EAAEC,OAAgC,EAAE;EACrE,MAAMuB,OAAO,GAAGxB,EAAE,CAACY,QAAQ,GAAGX,OAAO,CAACY,QAAQ,CAAEC,CAAC,CAACC,GAAG,CAAC;EACtD,IAAI,CAACS,OAAO,EAAE;EAEdA,OAAO,CAAClB,QAAQ,CAACmB,SAAS,CAACzB,EAAE,CAAC;EAC9B,OAAOA,EAAE,CAACY,QAAQ,CAAEX,OAAO,CAACY,QAAQ,CAAEC,CAAC,CAACC,GAAG,CAAC;AAC9C;AAEA,OAAO,MAAMW,SAAS,GAAG;EACvB3B,OAAO;EACPuB;AACF,CAAC;AAED,eAAeI,SAAS"}