@vuetify/nightly 3.0.0-beta.0 → 3.0.0-beta.2

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 (277) hide show
  1. package/CHANGELOG.md +53 -2
  2. package/dist/json/attributes.json +343 -195
  3. package/dist/json/importMap.json +20 -0
  4. package/dist/json/tags.json +106 -44
  5. package/dist/json/web-types.json +946 -549
  6. package/dist/vuetify.css +1486 -1085
  7. package/dist/vuetify.d.ts +9036 -8077
  8. package/dist/vuetify.esm.js +1511 -944
  9. package/dist/vuetify.esm.js.map +1 -1
  10. package/dist/vuetify.js +1510 -943
  11. package/dist/vuetify.js.map +1 -1
  12. package/dist/vuetify.min.css +3 -3
  13. package/dist/vuetify.min.js +825 -754
  14. package/dist/vuetify.min.js.map +1 -1
  15. package/lib/components/VAlert/VAlert.css +29 -8
  16. package/lib/components/VAlert/VAlert.mjs +31 -17
  17. package/lib/components/VAlert/VAlert.mjs.map +1 -1
  18. package/lib/components/VAlert/VAlert.sass +27 -7
  19. package/lib/components/VAlert/VAlertTitle.mjs +1 -0
  20. package/lib/components/VAlert/VAlertTitle.mjs.map +1 -1
  21. package/lib/components/VAlert/_variables.scss +14 -7
  22. package/lib/components/VApp/VApp.css +1 -0
  23. package/lib/components/VApp/VApp.sass +1 -0
  24. package/lib/components/VAppBar/VAppBar.mjs +7 -3
  25. package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
  26. package/lib/components/VAppBar/VAppBarTitle.mjs.map +1 -1
  27. package/lib/components/VAutocomplete/VAutocomplete.mjs +82 -69
  28. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  29. package/lib/components/VAvatar/VAvatar.mjs +15 -14
  30. package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
  31. package/lib/components/VBanner/VBanner.css +82 -58
  32. package/lib/components/VBanner/VBanner.mjs +39 -43
  33. package/lib/components/VBanner/VBanner.mjs.map +1 -1
  34. package/lib/components/VBanner/VBanner.sass +61 -54
  35. package/lib/components/VBanner/VBannerActions.mjs +34 -2
  36. package/lib/components/VBanner/VBannerActions.mjs.map +1 -1
  37. package/lib/components/VBanner/VBannerAvatar.mjs +20 -0
  38. package/lib/components/VBanner/VBannerAvatar.mjs.map +1 -0
  39. package/lib/components/VBanner/VBannerIcon.mjs +20 -0
  40. package/lib/components/VBanner/VBannerIcon.mjs.map +1 -0
  41. package/lib/components/VBanner/_variables.scss +10 -14
  42. package/lib/components/VBanner/index.mjs +2 -0
  43. package/lib/components/VBanner/index.mjs.map +1 -1
  44. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +2 -0
  45. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
  46. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs +10 -9
  47. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs.map +1 -1
  48. package/lib/components/VBtn/VBtn.css +20 -1
  49. package/lib/components/VBtn/VBtn.mjs +20 -7
  50. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  51. package/lib/components/VBtn/VBtn.sass +15 -2
  52. package/lib/components/VBtn/_variables.scss +3 -0
  53. package/lib/components/VBtnGroup/VBtnGroup.css +14 -6
  54. package/lib/components/VBtnGroup/VBtnGroup.sass +14 -6
  55. package/lib/components/VCard/VCard.css +13 -11
  56. package/lib/components/VCard/VCard.mjs +5 -2
  57. package/lib/components/VCard/VCard.mjs.map +1 -1
  58. package/lib/components/VCard/VCard.sass +12 -9
  59. package/lib/components/VCard/VCardActions.mjs +1 -2
  60. package/lib/components/VCard/VCardActions.mjs.map +1 -1
  61. package/lib/components/VCard/VCardContent.mjs +3 -0
  62. package/lib/components/VCard/VCardContent.mjs.map +1 -0
  63. package/lib/components/VCard/_variables.scss +11 -5
  64. package/lib/components/VCard/index.mjs +1 -0
  65. package/lib/components/VCard/index.mjs.map +1 -1
  66. package/lib/components/VCarousel/VCarousel.mjs +1 -1
  67. package/lib/components/VCarousel/VCarousel.mjs.map +1 -1
  68. package/lib/components/VCheckbox/VCheckbox.mjs +2 -2
  69. package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
  70. package/lib/components/VChip/VChip.css +3 -0
  71. package/lib/components/VChip/VChip.sass +3 -0
  72. package/lib/components/VChip/_variables.scss +3 -0
  73. package/lib/components/VColorPicker/VColorPickerCanvas.css +1 -1
  74. package/lib/components/VCombobox/VCombobox.mjs +92 -74
  75. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  76. package/lib/components/VDialog/VDialog.css +31 -11
  77. package/lib/components/VDialog/VDialog.mjs +6 -9
  78. package/lib/components/VDialog/VDialog.mjs.map +1 -1
  79. package/lib/components/VDialog/VDialog.sass +27 -10
  80. package/lib/components/VDialog/_variables.scss +3 -6
  81. package/lib/components/VExpansionPanel/VExpansionPanel.css +3 -2
  82. package/lib/components/VExpansionPanel/VExpansionPanel.mjs +6 -2
  83. package/lib/components/VExpansionPanel/VExpansionPanel.mjs.map +1 -1
  84. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +5 -3
  85. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
  86. package/lib/components/VExpansionPanel/VExpansionPanels.mjs +4 -0
  87. package/lib/components/VExpansionPanel/VExpansionPanels.mjs.map +1 -1
  88. package/lib/components/VField/VField.css +1 -1
  89. package/lib/components/VField/VField.mjs +3 -4
  90. package/lib/components/VField/VField.mjs.map +1 -1
  91. package/lib/components/VField/VField.sass +1 -1
  92. package/lib/components/VFileInput/VFileInput.mjs +2 -1
  93. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  94. package/lib/components/VFooter/VFooter.mjs +32 -15
  95. package/lib/components/VFooter/VFooter.mjs.map +1 -1
  96. package/lib/components/VForm/VForm.mjs +25 -11
  97. package/lib/components/VForm/VForm.mjs.map +1 -1
  98. package/lib/components/VIcon/VIcon.css +27 -12
  99. package/lib/components/VIcon/VIcon.mjs +19 -16
  100. package/lib/components/VIcon/VIcon.mjs.map +1 -1
  101. package/lib/components/VIcon/VIcon.sass +27 -16
  102. package/lib/components/VIcon/_variables.scss +1 -0
  103. package/lib/components/VInput/VInput.css +3 -1
  104. package/lib/components/VInput/VInput.mjs +3 -4
  105. package/lib/components/VInput/VInput.mjs.map +1 -1
  106. package/lib/components/VInput/VInput.sass +3 -1
  107. package/lib/components/VInput/_variables.scss +4 -0
  108. package/lib/components/VList/VList.css +7 -6
  109. package/lib/components/VList/VList.mjs +36 -17
  110. package/lib/components/VList/VList.mjs.map +1 -1
  111. package/lib/components/VList/VList.sass +3 -2
  112. package/lib/components/VList/VListChildren.mjs +1 -1
  113. package/lib/components/VList/VListChildren.mjs.map +1 -1
  114. package/lib/components/VList/VListGroup.mjs +28 -10
  115. package/lib/components/VList/VListGroup.mjs.map +1 -1
  116. package/lib/components/VList/VListItem.css +119 -42
  117. package/lib/components/VList/VListItem.mjs +36 -32
  118. package/lib/components/VList/VListItem.mjs.map +1 -1
  119. package/lib/components/VList/VListItem.sass +76 -28
  120. package/lib/components/VList/VListItemAction.mjs +29 -0
  121. package/lib/components/VList/VListItemAction.mjs.map +1 -0
  122. package/lib/components/VList/VListItemAvatar.mjs +10 -16
  123. package/lib/components/VList/VListItemAvatar.mjs.map +1 -1
  124. package/lib/components/VList/VListItemIcon.mjs +23 -0
  125. package/lib/components/VList/VListItemIcon.mjs.map +1 -0
  126. package/lib/components/VList/VListItemMedia.mjs +4 -4
  127. package/lib/components/VList/VListItemMedia.mjs.map +1 -1
  128. package/lib/components/VList/_variables.scss +12 -3
  129. package/lib/components/VList/index.mjs +2 -0
  130. package/lib/components/VList/index.mjs.map +1 -1
  131. package/lib/components/VMenu/VMenu.css +2 -12
  132. package/lib/components/VMenu/VMenu.mjs +61 -31
  133. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  134. package/lib/components/VMenu/VMenu.sass +3 -6
  135. package/lib/components/VMenu/shared.mjs +2 -0
  136. package/lib/components/VMenu/shared.mjs.map +1 -0
  137. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +1 -1
  138. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  139. package/lib/components/VOverlay/VOverlay.css +8 -0
  140. package/lib/components/VOverlay/VOverlay.mjs +16 -15
  141. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  142. package/lib/components/VOverlay/VOverlay.sass +9 -0
  143. package/lib/components/VOverlay/_variables.scss +1 -0
  144. package/lib/components/VOverlay/positionStrategies.mjs +7 -3
  145. package/lib/components/VOverlay/positionStrategies.mjs.map +1 -1
  146. package/lib/components/VOverlay/scrollStrategies.mjs +9 -0
  147. package/lib/components/VOverlay/scrollStrategies.mjs.map +1 -1
  148. package/lib/components/VOverlay/useActivator.mjs +50 -14
  149. package/lib/components/VOverlay/useActivator.mjs.map +1 -1
  150. package/lib/components/VPagination/VPagination.mjs +10 -12
  151. package/lib/components/VPagination/VPagination.mjs.map +1 -1
  152. package/lib/components/VProgressLinear/VProgressLinear.css +1 -1
  153. package/lib/components/VRadio/VRadio.mjs +1 -2
  154. package/lib/components/VRadio/VRadio.mjs.map +1 -1
  155. package/lib/components/VRadioGroup/VRadioGroup.mjs +2 -2
  156. package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
  157. package/lib/components/VRangeSlider/VRangeSlider.mjs +5 -2
  158. package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
  159. package/lib/components/VRating/VRating.css +2 -2
  160. package/lib/components/VRating/VRating.mjs +13 -3
  161. package/lib/components/VRating/VRating.mjs.map +1 -1
  162. package/lib/components/VRating/VRating.sass +2 -2
  163. package/lib/components/VSelect/VSelect.mjs +70 -91
  164. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  165. package/lib/components/VSelectionControl/VSelectionControl.mjs +2 -1
  166. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  167. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs +2 -2
  168. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs.map +1 -1
  169. package/lib/components/VSlideGroup/VSlideGroup.css +0 -5
  170. package/lib/components/VSlideGroup/VSlideGroup.mjs +36 -14
  171. package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
  172. package/lib/components/VSlideGroup/VSlideGroup.sass +0 -4
  173. package/lib/components/VSlideGroup/VSlideGroupItem.mjs +3 -1
  174. package/lib/components/VSlideGroup/VSlideGroupItem.mjs.map +1 -1
  175. package/lib/components/VSlider/VSlider.css +7 -2
  176. package/lib/components/VSlider/VSlider.sass +11 -5
  177. package/lib/components/VSlider/VSliderTrack.css +6 -6
  178. package/lib/components/VSlider/VSliderTrack.mjs +1 -1
  179. package/lib/components/VSlider/VSliderTrack.mjs.map +1 -1
  180. package/lib/components/VSlider/VSliderTrack.sass +7 -7
  181. package/lib/components/VSlider/_variables.scss +5 -2
  182. package/lib/components/VSnackbar/VSnackbar.css +14 -13
  183. package/lib/components/VSnackbar/VSnackbar.mjs +22 -10
  184. package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
  185. package/lib/components/VSnackbar/VSnackbar.sass +15 -16
  186. package/lib/components/VSnackbar/_variables.scss +0 -4
  187. package/lib/components/VSwitch/VSwitch.mjs +8 -5
  188. package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
  189. package/lib/components/VSystemBar/VSystemBar.css +0 -5
  190. package/lib/components/VSystemBar/VSystemBar.mjs +31 -14
  191. package/lib/components/VSystemBar/VSystemBar.mjs.map +1 -1
  192. package/lib/components/VSystemBar/VSystemBar.sass +0 -5
  193. package/lib/components/VSystemBar/_variables.scss +0 -3
  194. package/lib/components/VTabs/VTab.mjs +28 -32
  195. package/lib/components/VTabs/VTab.mjs.map +1 -1
  196. package/lib/components/VTabs/VTabs.css +6 -2
  197. package/lib/components/VTabs/VTabs.mjs +7 -8
  198. package/lib/components/VTabs/VTabs.mjs.map +1 -1
  199. package/lib/components/VTabs/VTabs.sass +6 -1
  200. package/lib/components/VTabs/shared.mjs +2 -0
  201. package/lib/components/VTabs/shared.mjs.map +1 -0
  202. package/lib/components/VTextField/VTextField.css +4 -4
  203. package/lib/components/VTextField/VTextField.mjs +5 -9
  204. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  205. package/lib/components/VTextField/VTextField.sass +5 -5
  206. package/lib/components/VTextarea/VTextarea.css +7 -4
  207. package/lib/components/VTextarea/VTextarea.sass +9 -5
  208. package/lib/components/VTimeline/VTimeline.css +187 -48
  209. package/lib/components/VTimeline/VTimeline.mjs +27 -11
  210. package/lib/components/VTimeline/VTimeline.mjs.map +1 -1
  211. package/lib/components/VTimeline/VTimeline.sass +196 -51
  212. package/lib/components/VTimeline/VTimelineDivider.mjs +2 -1
  213. package/lib/components/VTimeline/VTimelineDivider.mjs.map +1 -1
  214. package/lib/components/VTimeline/_variables.scss +2 -1
  215. package/lib/components/VToolbar/VToolbar.css +8 -1
  216. package/lib/components/VToolbar/VToolbar.mjs +8 -11
  217. package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
  218. package/lib/components/VToolbar/VToolbar.sass +2 -1
  219. package/lib/components/VToolbar/VToolbarItems.mjs +0 -1
  220. package/lib/components/VToolbar/VToolbarItems.mjs.map +1 -1
  221. package/lib/components/VToolbar/_variables.scss +13 -1
  222. package/lib/components/VWindow/VWindow.mjs +0 -8
  223. package/lib/components/VWindow/VWindow.mjs.map +1 -1
  224. package/lib/components/index.d.ts +9025 -8077
  225. package/lib/composables/defaults.mjs +2 -2
  226. package/lib/composables/defaults.mjs.map +1 -1
  227. package/lib/composables/form.mjs +18 -5
  228. package/lib/composables/form.mjs.map +1 -1
  229. package/lib/composables/forwardRef.mjs +10 -6
  230. package/lib/composables/forwardRef.mjs.map +1 -1
  231. package/lib/composables/group.mjs +14 -6
  232. package/lib/composables/group.mjs.map +1 -1
  233. package/lib/composables/index.mjs.map +1 -1
  234. package/lib/composables/items.mjs +56 -0
  235. package/lib/composables/items.mjs.map +1 -0
  236. package/lib/composables/layout.mjs +7 -3
  237. package/lib/composables/layout.mjs.map +1 -1
  238. package/lib/composables/loader.mjs.map +1 -1
  239. package/lib/composables/nested/nested.mjs +27 -14
  240. package/lib/composables/nested/nested.mjs.map +1 -1
  241. package/lib/composables/nested/openStrategies.mjs +63 -36
  242. package/lib/composables/nested/openStrategies.mjs.map +1 -1
  243. package/lib/composables/nested/selectStrategies.mjs +163 -122
  244. package/lib/composables/nested/selectStrategies.mjs.map +1 -1
  245. package/lib/composables/overlay.mjs +5 -1
  246. package/lib/composables/overlay.mjs.map +1 -1
  247. package/lib/composables/proxiedModel.mjs.map +1 -1
  248. package/lib/composables/resizeObserver.mjs +1 -9
  249. package/lib/composables/resizeObserver.mjs.map +1 -1
  250. package/lib/composables/router.mjs +17 -5
  251. package/lib/composables/router.mjs.map +1 -1
  252. package/lib/composables/selectLink.mjs +19 -0
  253. package/lib/composables/selectLink.mjs.map +1 -0
  254. package/lib/composables/stack.mjs +7 -4
  255. package/lib/composables/stack.mjs.map +1 -1
  256. package/lib/composables/validation.mjs +6 -3
  257. package/lib/composables/validation.mjs.map +1 -1
  258. package/lib/composables/variant.mjs +0 -3
  259. package/lib/composables/variant.mjs.map +1 -1
  260. package/lib/directives/ripple/index.mjs +15 -3
  261. package/lib/directives/ripple/index.mjs.map +1 -1
  262. package/lib/entry-bundler.mjs +1 -1
  263. package/lib/framework.mjs +12 -7
  264. package/lib/framework.mjs.map +1 -1
  265. package/lib/index.d.ts +18 -2
  266. package/lib/locale/ca.mjs +9 -9
  267. package/lib/locale/ca.mjs.map +1 -1
  268. package/lib/styles/generic/_colors.scss +0 -1
  269. package/lib/styles/main.css +400 -392
  270. package/lib/styles/settings/_utilities.scss +54 -26
  271. package/lib/styles/tools/_states.sass +2 -1
  272. package/lib/util/defineComponent.mjs +37 -6
  273. package/lib/util/defineComponent.mjs.map +1 -1
  274. package/lib/util/getCurrentInstance.mjs +1 -1
  275. package/lib/util/getCurrentInstance.mjs.map +1 -1
  276. package/lib/util/helpers.mjs.map +1 -1
  277. package/package.json +31 -29
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/composables/nested/selectStrategies.ts"],"names":["independentSelectStrategy","select","id","value","mandatory","selected","set","Array","from","entries","find","key","in","v","children","parents","map","Map","out","arr","push","independentSingleSelectStrategy","rest","length","slice","leafSelectStrategy","single","strategy","has","classicSelectStrategy","items","item","shift","get","parent","childrenIds","everySelected","every","cid","noneSelected"],"mappings":"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","sourcesContent":["export type SelectStrategyFn = (data: {\n id: string\n value: boolean\n selected: Map<string, 'on' | 'off' | 'indeterminate'>\n children: Map<string, string[]>\n parents: Map<string, string>\n event?: Event\n mandatory?: boolean\n}) => Map<string, 'on' | 'off' | 'indeterminate'>\n\nexport type SelectStrategyTransformInFn = (\n v: string[] | undefined,\n children: Map<string, string[]>,\n parents: Map<string, string>\n) => Map<string, 'on' | 'off' | 'indeterminate'>\n\nexport type SelectStrategyTransformOutFn = (\n v: Map<string, 'on' | 'off' | 'indeterminate'>,\n children: Map<string, string[]>,\n parents: Map<string, string>\n) => any[]\n\nexport type SelectStrategy = {\n select: SelectStrategyFn\n in: SelectStrategyTransformInFn\n out: SelectStrategyTransformOutFn\n}\n\nexport const independentSelectStrategy: SelectStrategy = {\n select: ({ id, value, mandatory, selected }) => {\n selected.set(id, value ? 'on' : (\n mandatory &&\n !Array.from(selected.entries()).find(([key, value]) => value === 'on' && key !== id)\n ) ? 'on' : 'off')\n\n return selected\n },\n in: (v, children, parents) => {\n let map = new Map()\n\n for (const id of (v || [])) {\n map = independentSelectStrategy.select({\n id,\n value: true,\n selected: new Map(map),\n children,\n parents,\n })\n }\n\n return map\n },\n out: v => {\n const arr = []\n\n for (const [key, value] of v.entries()) {\n if (value === 'on') arr.push(key)\n }\n\n return arr\n },\n}\n\nexport const independentSingleSelectStrategy: SelectStrategy = {\n select: ({ id, value, ...rest }) => {\n return independentSelectStrategy.select({ ...rest, id, value, selected: new Map() })\n },\n in: (v, children, parents) => {\n let map = new Map()\n\n if (v?.length) {\n map = independentSelectStrategy.in(v.slice(0, 1), children, parents)\n }\n\n return map\n },\n out: (v, children, parents) => {\n return independentSelectStrategy.out(v, children, parents)\n },\n}\n\nexport const leafSelectStrategy = (single = false): SelectStrategy => {\n const strategy: SelectStrategy = {\n select: ({ id, value, selected, children }) => {\n if (children.has(id)) return selected\n\n if (single) return new Map([[id, value ? 'on' : 'off']])\n\n selected.set(id, value ? 'on' : 'off')\n\n return selected\n },\n in: (v, children, parents) => {\n let map = new Map()\n\n for (const id of (v ?? [])) {\n map = strategy.select({\n id,\n value: true,\n selected: new Map(map),\n children,\n parents,\n })\n }\n\n return map\n },\n out: independentSelectStrategy.out,\n }\n\n return strategy\n}\n\nexport const classicSelectStrategy: SelectStrategy = {\n select: ({ id, value, selected, children, parents }) => {\n const items = [id]\n\n while (items.length) {\n const item = items.shift()!\n\n selected.set(item, value ? 'on' : 'off')\n\n if (children.has(item)) {\n items.push(...children.get(item)!)\n }\n }\n\n let parent = parents.get(id)\n\n while (parent) {\n const childrenIds = children.get(parent)!\n const everySelected = childrenIds.every(cid => selected.get(cid) === 'on')\n const noneSelected = childrenIds.every(cid => !selected.has(cid) || selected.get(cid) === 'off')\n\n selected.set(parent, everySelected ? 'on' : noneSelected ? 'off' : 'indeterminate')\n\n parent = parents.get(parent)\n }\n\n return selected\n },\n in: (v, children, parents) => {\n let map = new Map()\n\n for (const id of (v || [])) {\n map = classicSelectStrategy.select({\n id,\n value: true,\n selected: new Map(map),\n children,\n parents,\n })\n }\n\n return map\n },\n out: (v, children) => {\n const arr = []\n\n for (const [key, value] of v.entries()) {\n if (value === 'on' && !children.has(key)) arr.push(key)\n }\n\n return arr\n },\n}\n"],"file":"selectStrategies.mjs"}
1
+ {"version":3,"sources":["../../../src/composables/nested/selectStrategies.ts"],"names":["independentSelectStrategy","mandatory","strategy","select","id","value","selected","on","Array","from","entries","reduce","arr","key","length","set","in","v","children","parents","map","Map","out","push","independentSingleSelectStrategy","parentStrategy","rest","singleSelected","has","get","slice","leafSelectStrategy","leafSingleSelectStrategy","classicSelectStrategy","original","items","item","shift","parent","childrenIds","everySelected","every","cid","noneSelected"],"mappings":"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","sourcesContent":["/* eslint-disable sonarjs/no-identical-functions */\nexport type SelectStrategyFn = (data: {\n id: string\n value: boolean\n selected: Map<string, 'on' | 'off' | 'indeterminate'>\n children: Map<string, string[]>\n parents: Map<string, string>\n event?: Event\n}) => Map<string, 'on' | 'off' | 'indeterminate'>\n\nexport type SelectStrategyTransformInFn = (\n v: string[] | undefined,\n children: Map<string, string[]>,\n parents: Map<string, string>,\n) => Map<string, 'on' | 'off' | 'indeterminate'>\n\nexport type SelectStrategyTransformOutFn = (\n v: Map<string, 'on' | 'off' | 'indeterminate'>,\n children: Map<string, string[]>,\n parents: Map<string, string>,\n) => any[]\n\nexport type SelectStrategy = {\n select: SelectStrategyFn\n in: SelectStrategyTransformInFn\n out: SelectStrategyTransformOutFn\n}\n\nexport const independentSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const strategy: SelectStrategy = {\n select: ({ id, value, selected }) => {\n // When mandatory and we're trying to deselect when id\n // is the only currently selected item then do nothing\n if (mandatory && !value) {\n const on = Array.from(selected.entries()).reduce((arr, [key, value]) => value === 'on' ? [...arr, key] : arr, [] as string[])\n if (on.length === 1 && on[0] === id) return selected\n }\n\n selected.set(id, value ? 'on' : 'off')\n\n return selected\n },\n in: (v, children, parents) => {\n let map = new Map()\n\n for (const id of (v || [])) {\n map = strategy.select({\n id,\n value: true,\n selected: new Map(map),\n children,\n parents,\n })\n }\n\n return map\n },\n out: v => {\n const arr = []\n\n for (const [key, value] of v.entries()) {\n if (value === 'on') arr.push(key)\n }\n\n return arr\n },\n }\n\n return strategy\n}\n\nexport const independentSingleSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const parentStrategy = independentSelectStrategy(mandatory)\n\n const strategy: SelectStrategy = {\n select: ({ selected, id, ...rest }) => {\n const singleSelected = selected.has(id) ? new Map([[id, selected.get(id)!]]) : new Map()\n return parentStrategy.select({ ...rest, id, selected: singleSelected })\n },\n in: (v, children, parents) => {\n let map = new Map()\n\n if (v?.length) {\n map = parentStrategy.in(v.slice(0, 1), children, parents)\n }\n\n return map\n },\n out: (v, children, parents) => {\n return parentStrategy.out(v, children, parents)\n },\n }\n\n return strategy\n}\n\nexport const leafSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const parentStrategy = independentSelectStrategy(mandatory)\n\n const strategy: SelectStrategy = {\n select: ({ id, selected, children, ...rest }) => {\n if (children.has(id)) return selected\n\n return parentStrategy.select({ id, selected, children, ...rest })\n },\n in: parentStrategy.in,\n out: parentStrategy.out,\n }\n\n return strategy\n}\n\nexport const leafSingleSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const parentStrategy = independentSingleSelectStrategy(mandatory)\n\n const strategy: SelectStrategy = {\n select: ({ id, selected, children, ...rest }) => {\n if (children.has(id)) return selected\n\n return parentStrategy.select({ id, selected, children, ...rest })\n },\n in: parentStrategy.in,\n out: parentStrategy.out,\n }\n\n return strategy\n}\n\nexport const classicSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const strategy: SelectStrategy = {\n select: ({ id, value, selected, children, parents }) => {\n const original = new Map(selected)\n\n const items = [id]\n\n while (items.length) {\n const item = items.shift()!\n\n selected.set(item, value ? 'on' : 'off')\n\n if (children.has(item)) {\n items.push(...children.get(item)!)\n }\n }\n\n let parent = parents.get(id)\n\n while (parent) {\n const childrenIds = children.get(parent)!\n const everySelected = childrenIds.every(cid => selected.get(cid) === 'on')\n const noneSelected = childrenIds.every(cid => !selected.has(cid) || selected.get(cid) === 'off')\n\n selected.set(parent, everySelected ? 'on' : noneSelected ? 'off' : 'indeterminate')\n\n parent = parents.get(parent)\n }\n\n // If mandatory and planned deselect results in no selected\n // items then we can't do it, so return original state\n if (mandatory && !value) {\n const on = Array.from(selected.entries()).reduce((arr, [key, value]) => value === 'on' ? [...arr, key] : arr, [] as string[])\n if (on.length === 0) return original\n }\n\n return selected\n },\n in: (v, children, parents) => {\n let map = new Map()\n\n for (const id of (v || [])) {\n map = strategy.select({\n id,\n value: true,\n selected: new Map(map),\n children,\n parents,\n })\n }\n\n return map\n },\n out: (v, children) => {\n const arr = []\n\n for (const [key, value] of v.entries()) {\n if (value === 'on' && !children.has(key)) arr.push(key)\n }\n\n return arr\n },\n }\n\n return strategy\n}\n"],"file":"selectStrategies.mjs"}
@@ -1,5 +1,5 @@
1
1
  // Utilities
2
- import { computed, inject, ref, watch } from 'vue';
2
+ import { computed, inject, provide, ref, watch } from 'vue';
3
3
  import { getUid } from "../util/index.mjs"; // Types
4
4
 
5
5
  export const VuetifyOverlayKey = Symbol.for('vuetify:overlay');
@@ -22,6 +22,10 @@ export function useOverlay(isActive) {
22
22
  }, {
23
23
  immediate: true
24
24
  });
25
+ provide(VuetifyOverlayKey, {
26
+ zIndex,
27
+ overlays
28
+ });
25
29
  const overlayZIndex = computed(() => zIndex.value + overlays.value.indexOf(id) + 1);
26
30
  return {
27
31
  overlayZIndex
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/composables/overlay.ts"],"names":["computed","inject","ref","watch","getUid","VuetifyOverlayKey","Symbol","for","ROOT_ZINDEX","useOverlay","isActive","zIndex","overlays","id","value","push","filter","x","immediate","overlayZIndex","indexOf"],"mappings":"AAAA;AACA,SAASA,QAAT,EAAmBC,MAAnB,EAA2BC,GAA3B,EAAgCC,KAAhC,QAA6C,KAA7C;SACSC,M,6BAET;;AAQA,OAAO,MAAMC,iBAA+C,GAAGC,MAAM,CAACC,GAAP,CAAW,iBAAX,CAAxD;AAEP,MAAMC,WAAW,GAAG,IAApB;AAEA,OAAO,SAASC,UAAT,CAAqBC,QAArB,EAAyD;AAC9D,QAAM;AAAEC,IAAAA,MAAF;AAAUC,IAAAA;AAAV,MAAuBX,MAAM,CAACI,iBAAD,EAAoB;AAAEM,IAAAA,MAAM,EAAET,GAAG,CAACM,WAAD,CAAb;AAA4BI,IAAAA,QAAQ,EAAEV,GAAG,CAAC,EAAD;AAAzC,GAApB,CAAnC;AAEA,QAAMW,EAAE,GAAGT,MAAM,EAAjB;AAEAD,EAAAA,KAAK,CAACO,QAAD,EAAWI,KAAK,IAAI;AACvB,QAAIA,KAAJ,EAAW;AACTF,MAAAA,QAAQ,CAACE,KAAT,CAAeC,IAAf,CAAoBF,EAApB;AACD,KAFD,MAEO;AACLD,MAAAA,QAAQ,CAACE,KAAT,GAAiBF,QAAQ,CAACE,KAAT,CAAeE,MAAf,CAAsBC,CAAC,IAAIA,CAAC,KAAKJ,EAAjC,CAAjB;AACD;AACF,GANI,EAMF;AACDK,IAAAA,SAAS,EAAE;AADV,GANE,CAAL;AAUA,QAAMC,aAAa,GAAGnB,QAAQ,CAAC,MAAMW,MAAM,CAACG,KAAP,GAAeF,QAAQ,CAACE,KAAT,CAAeM,OAAf,CAAuBP,EAAvB,CAAf,GAA4C,CAAnD,CAA9B;AAEA,SAAO;AAAEM,IAAAA;AAAF,GAAP;AACD","sourcesContent":["// Utilities\nimport { computed, inject, ref, watch } from 'vue'\nimport { getUid } from '@/util'\n\n// Types\nimport type { InjectionKey, Ref } from 'vue'\n\ntype OverlayProvide = {\n overlays: Ref<number[]>\n zIndex: Ref<number>\n}\n\nexport const VuetifyOverlayKey: InjectionKey<OverlayProvide> = Symbol.for('vuetify:overlay')\n\nconst ROOT_ZINDEX = 2000\n\nexport function useOverlay (isActive: Ref<boolean | undefined>) {\n const { zIndex, overlays } = inject(VuetifyOverlayKey, { zIndex: ref(ROOT_ZINDEX), overlays: ref([]) })\n\n const id = getUid()\n\n watch(isActive, value => {\n if (value) {\n overlays.value.push(id)\n } else {\n overlays.value = overlays.value.filter(x => x !== id)\n }\n }, {\n immediate: true,\n })\n\n const overlayZIndex = computed(() => zIndex.value + overlays.value.indexOf(id) + 1)\n\n return { overlayZIndex }\n}\n"],"file":"overlay.mjs"}
1
+ {"version":3,"sources":["../../src/composables/overlay.ts"],"names":["computed","inject","provide","ref","watch","getUid","VuetifyOverlayKey","Symbol","for","ROOT_ZINDEX","useOverlay","isActive","zIndex","overlays","id","value","push","filter","x","immediate","overlayZIndex","indexOf"],"mappings":"AAAA;AACA,SAASA,QAAT,EAAmBC,MAAnB,EAA2BC,OAA3B,EAAoCC,GAApC,EAAyCC,KAAzC,QAAsD,KAAtD;SACSC,M,6BAET;;AAQA,OAAO,MAAMC,iBAA+C,GAAGC,MAAM,CAACC,GAAP,CAAW,iBAAX,CAAxD;AAEP,MAAMC,WAAW,GAAG,IAApB;AAEA,OAAO,SAASC,UAAT,CAAqBC,QAArB,EAAyD;AAC9D,QAAM;AAAEC,IAAAA,MAAF;AAAUC,IAAAA;AAAV,MAAuBZ,MAAM,CAACK,iBAAD,EAAoB;AAAEM,IAAAA,MAAM,EAAET,GAAG,CAACM,WAAD,CAAb;AAA4BI,IAAAA,QAAQ,EAAEV,GAAG,CAAC,EAAD;AAAzC,GAApB,CAAnC;AAEA,QAAMW,EAAE,GAAGT,MAAM,EAAjB;AAEAD,EAAAA,KAAK,CAACO,QAAD,EAAWI,KAAK,IAAI;AACvB,QAAIA,KAAJ,EAAW;AACTF,MAAAA,QAAQ,CAACE,KAAT,CAAeC,IAAf,CAAoBF,EAApB;AACD,KAFD,MAEO;AACLD,MAAAA,QAAQ,CAACE,KAAT,GAAiBF,QAAQ,CAACE,KAAT,CAAeE,MAAf,CAAsBC,CAAC,IAAIA,CAAC,KAAKJ,EAAjC,CAAjB;AACD;AACF,GANI,EAMF;AACDK,IAAAA,SAAS,EAAE;AADV,GANE,CAAL;AAUAjB,EAAAA,OAAO,CAACI,iBAAD,EAAoB;AAAEM,IAAAA,MAAF;AAAUC,IAAAA;AAAV,GAApB,CAAP;AAEA,QAAMO,aAAa,GAAGpB,QAAQ,CAAC,MAAMY,MAAM,CAACG,KAAP,GAAeF,QAAQ,CAACE,KAAT,CAAeM,OAAf,CAAuBP,EAAvB,CAAf,GAA4C,CAAnD,CAA9B;AAEA,SAAO;AAAEM,IAAAA;AAAF,GAAP;AACD","sourcesContent":["// Utilities\nimport { computed, inject, provide, ref, watch } from 'vue'\nimport { getUid } from '@/util'\n\n// Types\nimport type { InjectionKey, Ref } from 'vue'\n\ntype OverlayProvide = {\n overlays: Ref<number[]>\n zIndex: Ref<number>\n}\n\nexport const VuetifyOverlayKey: InjectionKey<OverlayProvide> = Symbol.for('vuetify:overlay')\n\nconst ROOT_ZINDEX = 2000\n\nexport function useOverlay (isActive: Ref<boolean | undefined>) {\n const { zIndex, overlays } = inject(VuetifyOverlayKey, { zIndex: ref(ROOT_ZINDEX), overlays: ref([]) })\n\n const id = getUid()\n\n watch(isActive, value => {\n if (value) {\n overlays.value.push(id)\n } else {\n overlays.value = overlays.value.filter(x => x !== id)\n }\n }, {\n immediate: true,\n })\n\n provide(VuetifyOverlayKey, { zIndex, overlays })\n\n const overlayZIndex = computed(() => zIndex.value + overlays.value.indexOf(id) + 1)\n\n return { overlayZIndex }\n}\n"],"file":"overlay.mjs"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/composables/proxiedModel.ts"],"names":["computed","ref","getCurrentInstance","toKebabCase","useProxiedModel","props","prop","defaultValue","transformIn","v","transformOut","vm","propIsDefined","vnode","hasOwnProperty","internal","get","value","set","newValue","emit"],"mappings":"AAAA;AACA,SAASA,QAAT,EAAmBC,GAAnB,QAA8B,KAA9B;SACSC,kB,EAAoBC,W,6BAE7B;;AAGA;AACA,OAAO,SAASC,eAAT,CAKLC,KALK,EAMLC,IANK,EAOLC,YAPK,EAUL;AAAA,MAFAC,WAEA,uEAF+CC,CAAD,IAAYA,CAE1D;AAAA,MADAC,YACA,uEAD+CD,CAAD,IAAYA,CAC1D;AACA,QAAME,EAAE,GAAGT,kBAAkB,CAAC,iBAAD,CAA7B;AAEA,QAAMU,aAAa,GAAGZ,QAAQ,CAAC,MAAM;AAAA;;AACnC,WAAO,CAAC,EACN,OAAOK,KAAK,CAACC,IAAD,CAAZ,KAAuB,WAAvB,KACCK,EAAE,QAAF,uBAAAA,EAAE,CAAEE,KAAJ,CAAUR,KAAV,6BAAiBS,cAAjB,CAAgCR,IAAhC,KAAyCK,EAAzC,gCAAyCA,EAAE,CAAEE,KAAJ,CAAUR,KAAnD,aAAyC,iBAAiBS,cAAjB,CAAgCX,WAAW,CAACG,IAAD,CAA3C,CAD1C,CADM,CAAR;AAID,GAL6B,CAA9B;AAOA,QAAMS,QAAQ,GAAGd,GAAG,CAACO,WAAW,CAACH,KAAK,CAACC,IAAD,CAAN,CAAZ,CAApB;AAEA,SAAON,QAAQ,CAAQ;AACrBgB,IAAAA,GAAG,GAAI;AACL,UAAIJ,aAAa,CAACK,KAAlB,EAAyB,OAAOT,WAAW,CAACH,KAAK,CAACC,IAAD,CAAN,CAAlB,CAAzB,KACK,OAAOS,QAAQ,CAACE,KAAhB;AACN,KAJoB;;AAKrBC,IAAAA,GAAG,CAAEC,QAAF,EAAY;AACb,UAAI,CAACP,aAAa,CAACK,KAAd,GAAsBT,WAAW,CAACH,KAAK,CAACC,IAAD,CAAN,CAAjC,GAAiDS,QAAQ,CAACE,KAA3D,MAAsEE,QAA1E,EAAoF;AAClF;AACD;;AACDJ,MAAAA,QAAQ,CAACE,KAAT,GAAiBE,QAAjB;AACAR,MAAAA,EAAE,QAAF,YAAAA,EAAE,CAAES,IAAJ,CAAU,UAASd,IAAK,EAAxB,EAA2BI,YAAY,CAACS,QAAD,CAAvC;AACD;;AAXoB,GAAR,CAAf;AAaD","sourcesContent":["// Utilities\nimport { computed, ref } from 'vue'\nimport { getCurrentInstance, toKebabCase } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\n\n// Composables\nexport function useProxiedModel<\n Props extends object & { [key in Prop as `onUpdate:${Prop}`]: ((val: any) => void) | undefined },\n Prop extends Extract<keyof Props, string>,\n Inner = Props[Prop],\n> (\n props: Props,\n prop: Prop,\n defaultValue?: Props[Prop],\n transformIn: (value?: Props[Prop]) => Inner = (v: any) => v,\n transformOut: (value: Inner) => Props[Prop] = (v: any) => v,\n) {\n const vm = getCurrentInstance('useProxiedModel')\n\n const propIsDefined = computed(() => {\n return !!(\n typeof props[prop] !== 'undefined' &&\n (vm?.vnode.props?.hasOwnProperty(prop) || vm?.vnode.props?.hasOwnProperty(toKebabCase(prop)))\n )\n })\n\n const internal = ref(transformIn(props[prop])) as Ref<Inner>\n\n return computed<Inner>({\n get () {\n if (propIsDefined.value) return transformIn(props[prop])\n else return internal.value\n },\n set (newValue) {\n if ((propIsDefined.value ? transformIn(props[prop]) : internal.value) === newValue) {\n return\n }\n internal.value = newValue\n vm?.emit(`update:${prop}`, transformOut(newValue))\n },\n })\n}\n"],"file":"proxiedModel.mjs"}
1
+ {"version":3,"sources":["../../src/composables/proxiedModel.ts"],"names":["computed","ref","getCurrentInstance","toKebabCase","useProxiedModel","props","prop","defaultValue","transformIn","v","transformOut","vm","propIsDefined","vnode","hasOwnProperty","internal","get","value","set","newValue","emit"],"mappings":"AAAA;AACA,SAASA,QAAT,EAAmBC,GAAnB,QAA8B,KAA9B;SACSC,kB,EAAoBC,W,6BAE7B;;AAGA;AACA,OAAO,SAASC,eAAT,CAKLC,KALK,EAMLC,IANK,EAOLC,YAPK,EAUL;AAAA,MAFAC,WAEA,uEAF+CC,CAAD,IAAYA,CAE1D;AAAA,MADAC,YACA,uEAD+CD,CAAD,IAAYA,CAC1D;AACA,QAAME,EAAE,GAAGT,kBAAkB,CAAC,iBAAD,CAA7B;AAEA,QAAMU,aAAa,GAAGZ,QAAQ,CAAC,MAAM;AAAA;;AACnC,WAAO,CAAC,EACN,OAAOK,KAAK,CAACC,IAAD,CAAZ,KAAuB,WAAvB,KACCK,EAAE,QAAF,uBAAAA,EAAE,CAAEE,KAAJ,CAAUR,KAAV,6BAAiBS,cAAjB,CAAgCR,IAAhC,KAAyCK,EAAzC,gCAAyCA,EAAE,CAAEE,KAAJ,CAAUR,KAAnD,aAAyC,iBAAiBS,cAAjB,CAAgCX,WAAW,CAACG,IAAD,CAA3C,CAD1C,CADM,CAAR;AAID,GAL6B,CAA9B;AAOA,QAAMS,QAAQ,GAAGd,GAAG,CAACO,WAAW,CAACH,KAAK,CAACC,IAAD,CAAN,CAAZ,CAApB;AAEA,SAAON,QAAQ,CAAgD;AAC7DgB,IAAAA,GAAG,GAAS;AACV,UAAIJ,aAAa,CAACK,KAAlB,EAAyB,OAAOT,WAAW,CAACH,KAAK,CAACC,IAAD,CAAN,CAAlB,CAAzB,KACK,OAAOS,QAAQ,CAACE,KAAhB;AACN,KAJ4D;;AAK7DC,IAAAA,GAAG,CAAEC,QAAF,EAAY;AACb,UAAI,CAACP,aAAa,CAACK,KAAd,GAAsBT,WAAW,CAACH,KAAK,CAACC,IAAD,CAAN,CAAjC,GAAiDS,QAAQ,CAACE,KAA3D,MAAsEE,QAA1E,EAAoF;AAClF;AACD;;AACDJ,MAAAA,QAAQ,CAACE,KAAT,GAAiBE,QAAjB;AACAR,MAAAA,EAAE,QAAF,YAAAA,EAAE,CAAES,IAAJ,CAAU,UAASd,IAAK,EAAxB,EAA2BI,YAAY,CAACS,QAAD,CAAvC;AACD;;AAX4D,GAAhD,CAAf;AAaD","sourcesContent":["// Utilities\nimport { computed, ref } from 'vue'\nimport { getCurrentInstance, toKebabCase } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\n\n// Composables\nexport function useProxiedModel<\n Props extends object & { [key in Prop as `onUpdate:${Prop}`]: ((val: any) => void) | undefined },\n Prop extends Extract<keyof Props, string>,\n Inner = Props[Prop],\n> (\n props: Props,\n prop: Prop,\n defaultValue?: Props[Prop],\n transformIn: (value?: Props[Prop]) => Inner = (v: any) => v,\n transformOut: (value: Inner) => Props[Prop] = (v: any) => v,\n) {\n const vm = getCurrentInstance('useProxiedModel')\n\n const propIsDefined = computed(() => {\n return !!(\n typeof props[prop] !== 'undefined' &&\n (vm?.vnode.props?.hasOwnProperty(prop) || vm?.vnode.props?.hasOwnProperty(toKebabCase(prop)))\n )\n })\n\n const internal = ref(transformIn(props[prop])) as Ref<Inner>\n\n return computed<Inner extends any[] ? Readonly<Inner> : Inner>({\n get (): any {\n if (propIsDefined.value) return transformIn(props[prop])\n else return internal.value\n },\n set (newValue) {\n if ((propIsDefined.value ? transformIn(props[prop]) : internal.value) === newValue) {\n return\n }\n internal.value = newValue\n vm?.emit(`update:${prop}`, transformOut(newValue))\n },\n })\n}\n"],"file":"proxiedModel.mjs"}
@@ -5,16 +5,12 @@ import { IN_BROWSER } from "../util/globals.mjs";
5
5
  export function useResizeObserver(callback) {
6
6
  const resizeRef = ref();
7
7
  const contentRect = ref();
8
- const contentBoxSize = ref();
9
- const borderBoxSize = ref();
10
8
 
11
9
  if (IN_BROWSER) {
12
10
  const observer = new ResizeObserver(entries => {
13
11
  callback == null ? void 0 : callback(entries, observer);
14
12
  if (!entries.length) return;
15
13
  contentRect.value = entries[0].contentRect;
16
- contentBoxSize.value = entries[0].contentBoxSize[0];
17
- borderBoxSize.value = entries[0].borderBoxSize[0];
18
14
  });
19
15
  onBeforeUnmount(() => {
20
16
  observer.disconnect();
@@ -23,8 +19,6 @@ export function useResizeObserver(callback) {
23
19
  if (oldValue) {
24
20
  observer.unobserve(oldValue);
25
21
  contentRect.value = undefined;
26
- contentBoxSize.value = undefined;
27
- borderBoxSize.value = undefined;
28
22
  }
29
23
 
30
24
  if (newValue) observer.observe(newValue);
@@ -35,9 +29,7 @@ export function useResizeObserver(callback) {
35
29
 
36
30
  return {
37
31
  resizeRef,
38
- contentRect: readonly(contentRect),
39
- contentBoxSize: readonly(contentBoxSize),
40
- borderBoxSize: readonly(borderBoxSize)
32
+ contentRect: readonly(contentRect)
41
33
  };
42
34
  }
43
35
  //# sourceMappingURL=resizeObserver.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/composables/resizeObserver.ts"],"names":["onBeforeUnmount","readonly","ref","watch","IN_BROWSER","useResizeObserver","callback","resizeRef","contentRect","contentBoxSize","borderBoxSize","observer","ResizeObserver","entries","length","value","disconnect","newValue","oldValue","unobserve","undefined","observe","flush"],"mappings":"AAAA;AACA,SAASA,eAAT,EAA0BC,QAA1B,EAAoCC,GAApC,EAAyCC,KAAzC,QAAsD,KAAtD;AAGA;SACSC,U;AAST,OAAO,SAASC,iBAAT,CAA4BC,QAA5B,EAA4E;AACjF,QAAMC,SAAS,GAAGL,GAAG,EAArB;AACA,QAAMM,WAAW,GAAGN,GAAG,EAAvB;AACA,QAAMO,cAAc,GAAGP,GAAG,EAA1B;AACA,QAAMQ,aAAa,GAAGR,GAAG,EAAzB;;AAEA,MAAIE,UAAJ,EAAgB;AACd,UAAMO,QAAQ,GAAG,IAAIC,cAAJ,CAAoBC,OAAD,IAAoC;AACtEP,MAAAA,QAAQ,QAAR,YAAAA,QAAQ,CAAGO,OAAH,EAAYF,QAAZ,CAAR;AAEA,UAAI,CAACE,OAAO,CAACC,MAAb,EAAqB;AAErBN,MAAAA,WAAW,CAACO,KAAZ,GAAoBF,OAAO,CAAC,CAAD,CAAP,CAAWL,WAA/B;AACAC,MAAAA,cAAc,CAACM,KAAf,GAAuBF,OAAO,CAAC,CAAD,CAAP,CAAWJ,cAAX,CAA0B,CAA1B,CAAvB;AACAC,MAAAA,aAAa,CAACK,KAAd,GAAsBF,OAAO,CAAC,CAAD,CAAP,CAAWH,aAAX,CAAyB,CAAzB,CAAtB;AACD,KARgB,CAAjB;AAUAV,IAAAA,eAAe,CAAC,MAAM;AACpBW,MAAAA,QAAQ,CAACK,UAAT;AACD,KAFc,CAAf;AAIAb,IAAAA,KAAK,CAACI,SAAD,EAAY,CAACU,QAAD,EAAWC,QAAX,KAAwB;AACvC,UAAIA,QAAJ,EAAc;AACZP,QAAAA,QAAQ,CAACQ,SAAT,CAAmBD,QAAnB;AACAV,QAAAA,WAAW,CAACO,KAAZ,GAAoBK,SAApB;AACAX,QAAAA,cAAc,CAACM,KAAf,GAAuBK,SAAvB;AACAV,QAAAA,aAAa,CAACK,KAAd,GAAsBK,SAAtB;AACD;;AAED,UAAIH,QAAJ,EAAcN,QAAQ,CAACU,OAAT,CAAiBJ,QAAjB;AACf,KATI,EASF;AACDK,MAAAA,KAAK,EAAE;AADN,KATE,CAAL;AAYD;;AAED,SAAO;AACLf,IAAAA,SADK;AAELC,IAAAA,WAAW,EAAEP,QAAQ,CAACO,WAAD,CAFhB;AAGLC,IAAAA,cAAc,EAAER,QAAQ,CAACQ,cAAD,CAHnB;AAILC,IAAAA,aAAa,EAAET,QAAQ,CAACS,aAAD;AAJlB,GAAP;AAMD","sourcesContent":["// Utilities\nimport { onBeforeUnmount, readonly, ref, watch } from 'vue'\nimport type { DeepReadonly, Ref } from 'vue'\n\n// Globals\nimport { IN_BROWSER } from '@/util/globals'\n\ninterface ResizeState {\n resizeRef: Ref<Element | undefined>\n contentRect: DeepReadonly<Ref<DOMRectReadOnly | undefined>>\n borderBoxSize: DeepReadonly<Ref<ResizeObserverSize | undefined>>\n contentBoxSize: DeepReadonly<Ref<ResizeObserverSize | undefined>>\n}\n\nexport function useResizeObserver (callback?: ResizeObserverCallback): ResizeState {\n const resizeRef = ref<Element>()\n const contentRect = ref<DOMRectReadOnly>()\n const contentBoxSize = ref<ResizeObserverSize>()\n const borderBoxSize = ref<ResizeObserverSize>()\n\n if (IN_BROWSER) {\n const observer = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n callback?.(entries, observer)\n\n if (!entries.length) return\n\n contentRect.value = entries[0].contentRect\n contentBoxSize.value = entries[0].contentBoxSize[0]\n borderBoxSize.value = entries[0].borderBoxSize[0]\n })\n\n onBeforeUnmount(() => {\n observer.disconnect()\n })\n\n watch(resizeRef, (newValue, oldValue) => {\n if (oldValue) {\n observer.unobserve(oldValue)\n contentRect.value = undefined\n contentBoxSize.value = undefined\n borderBoxSize.value = undefined\n }\n\n if (newValue) observer.observe(newValue)\n }, {\n flush: 'post',\n })\n }\n\n return {\n resizeRef,\n contentRect: readonly(contentRect),\n contentBoxSize: readonly(contentBoxSize),\n borderBoxSize: readonly(borderBoxSize),\n }\n}\n"],"file":"resizeObserver.mjs"}
1
+ {"version":3,"sources":["../../src/composables/resizeObserver.ts"],"names":["onBeforeUnmount","readonly","ref","watch","IN_BROWSER","useResizeObserver","callback","resizeRef","contentRect","observer","ResizeObserver","entries","length","value","disconnect","newValue","oldValue","unobserve","undefined","observe","flush"],"mappings":"AAAA;AACA,SAASA,eAAT,EAA0BC,QAA1B,EAAoCC,GAApC,EAAyCC,KAAzC,QAAsD,KAAtD;AAGA;SACSC,U;AAOT,OAAO,SAASC,iBAAT,CAA4BC,QAA5B,EAA4E;AACjF,QAAMC,SAAS,GAAGL,GAAG,EAArB;AACA,QAAMM,WAAW,GAAGN,GAAG,EAAvB;;AAEA,MAAIE,UAAJ,EAAgB;AACd,UAAMK,QAAQ,GAAG,IAAIC,cAAJ,CAAoBC,OAAD,IAAoC;AACtEL,MAAAA,QAAQ,QAAR,YAAAA,QAAQ,CAAGK,OAAH,EAAYF,QAAZ,CAAR;AAEA,UAAI,CAACE,OAAO,CAACC,MAAb,EAAqB;AAErBJ,MAAAA,WAAW,CAACK,KAAZ,GAAoBF,OAAO,CAAC,CAAD,CAAP,CAAWH,WAA/B;AACD,KANgB,CAAjB;AAQAR,IAAAA,eAAe,CAAC,MAAM;AACpBS,MAAAA,QAAQ,CAACK,UAAT;AACD,KAFc,CAAf;AAIAX,IAAAA,KAAK,CAACI,SAAD,EAAY,CAACQ,QAAD,EAAWC,QAAX,KAAwB;AACvC,UAAIA,QAAJ,EAAc;AACZP,QAAAA,QAAQ,CAACQ,SAAT,CAAmBD,QAAnB;AACAR,QAAAA,WAAW,CAACK,KAAZ,GAAoBK,SAApB;AACD;;AAED,UAAIH,QAAJ,EAAcN,QAAQ,CAACU,OAAT,CAAiBJ,QAAjB;AACf,KAPI,EAOF;AACDK,MAAAA,KAAK,EAAE;AADN,KAPE,CAAL;AAUD;;AAED,SAAO;AACLb,IAAAA,SADK;AAELC,IAAAA,WAAW,EAAEP,QAAQ,CAACO,WAAD;AAFhB,GAAP;AAID","sourcesContent":["// Utilities\nimport { onBeforeUnmount, readonly, ref, watch } from 'vue'\nimport type { DeepReadonly, Ref } from 'vue'\n\n// Globals\nimport { IN_BROWSER } from '@/util/globals'\n\ninterface ResizeState {\n resizeRef: Ref<Element | undefined>\n contentRect: DeepReadonly<Ref<DOMRectReadOnly | undefined>>\n}\n\nexport function useResizeObserver (callback?: ResizeObserverCallback): ResizeState {\n const resizeRef = ref<Element>()\n const contentRect = ref<DOMRectReadOnly>()\n\n if (IN_BROWSER) {\n const observer = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n callback?.(entries, observer)\n\n if (!entries.length) return\n\n contentRect.value = entries[0].contentRect\n })\n\n onBeforeUnmount(() => {\n observer.disconnect()\n })\n\n watch(resizeRef, (newValue, oldValue) => {\n if (oldValue) {\n observer.unobserve(oldValue)\n contentRect.value = undefined\n }\n\n if (newValue) observer.observe(newValue)\n }, {\n flush: 'post',\n })\n }\n\n return {\n resizeRef,\n contentRect: readonly(contentRect),\n }\n}\n"],"file":"resizeObserver.mjs"}
@@ -42,21 +42,33 @@ export const makeRouterProps = propsFactory({
42
42
  replace: Boolean,
43
43
  to: [String, Object]
44
44
  }, 'router');
45
+ let inTransition = false;
45
46
  export function useBackButton(cb) {
46
47
  const router = useRouter();
47
48
  let popped = false;
48
- let removeGuard;
49
+ let removeBefore;
50
+ let removeAfter;
49
51
  onMounted(() => {
50
52
  window.addEventListener('popstate', onPopstate);
51
- removeGuard = router == null ? void 0 : router.beforeEach((to, from, next) => {
52
- setTimeout(() => popped ? cb(next) : next());
53
+ removeBefore = router == null ? void 0 : router.beforeEach((to, from, next) => {
54
+ if (!inTransition) {
55
+ setTimeout(() => popped ? cb(next) : next());
56
+ } else {
57
+ popped ? cb(next) : next();
58
+ }
59
+
60
+ inTransition = true;
61
+ });
62
+ removeAfter = router == null ? void 0 : router.afterEach(() => {
63
+ inTransition = false;
53
64
  });
54
65
  });
55
66
  onBeforeUnmount(() => {
56
- var _removeGuard;
67
+ var _removeBefore, _removeAfter;
57
68
 
58
69
  window.removeEventListener('popstate', onPopstate);
59
- (_removeGuard = removeGuard) == null ? void 0 : _removeGuard();
70
+ (_removeBefore = removeBefore) == null ? void 0 : _removeBefore();
71
+ (_removeAfter = removeAfter) == null ? void 0 : _removeAfter();
60
72
  });
61
73
 
62
74
  function onPopstate(e) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/composables/router.tsx"],"names":["getCurrentInstance","propsFactory","computed","onBeforeUnmount","onMounted","resolveDynamicComponent","toRef","useRoute","vm","proxy","$route","useRouter","$router","useLink","props","attrs","RouterLink","isLink","href","to","isClickable","value","onClick","onClickOnce","link","undefined","route","makeRouterProps","String","replace","Boolean","Object","useBackButton","cb","router","popped","removeGuard","window","addEventListener","onPopstate","beforeEach","from","next","setTimeout","removeEventListener","e","state","replaced"],"mappings":"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","sourcesContent":["// Utilities\nimport { getCurrentInstance, propsFactory } from '@/util'\nimport {\n computed,\n onBeforeUnmount,\n onMounted,\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} from 'vue-router'\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\n replace?: boolean\n to?: RouteLocationRaw\n}\n\ninterface 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, 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 || !!(attrs.onClick || attrs.onClickOnce)\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 Required<LinkProps>) : undefined\n\n return {\n ...link,\n isLink,\n isClickable,\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}, 'router')\n\nexport function useBackButton (cb: (next: NavigationGuardNext) => void) {\n const router = useRouter()\n let popped = false\n let removeGuard: (() => void) | undefined\n\n onMounted(() => {\n window.addEventListener('popstate', onPopstate)\n removeGuard = router?.beforeEach((to, from, next) => {\n setTimeout(() => popped ? cb(next) : next())\n })\n })\n onBeforeUnmount(() => {\n window.removeEventListener('popstate', onPopstate)\n removeGuard?.()\n })\n\n function onPopstate (e: PopStateEvent) {\n if (e.state?.replaced) return\n\n popped = true\n setTimeout(() => (popped = false))\n }\n}\n"],"file":"router.mjs"}
1
+ {"version":3,"sources":["../../src/composables/router.tsx"],"names":["getCurrentInstance","propsFactory","computed","onBeforeUnmount","onMounted","resolveDynamicComponent","toRef","useRoute","vm","proxy","$route","useRouter","$router","useLink","props","attrs","RouterLink","isLink","href","to","isClickable","value","onClick","onClickOnce","link","undefined","route","makeRouterProps","String","replace","Boolean","Object","inTransition","useBackButton","cb","router","popped","removeBefore","removeAfter","window","addEventListener","onPopstate","beforeEach","from","next","setTimeout","afterEach","removeEventListener","e","state","replaced"],"mappings":"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","sourcesContent":["// Utilities\nimport { getCurrentInstance, propsFactory } from '@/util'\nimport {\n computed,\n onBeforeUnmount,\n onMounted,\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} from 'vue-router'\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\n replace?: boolean\n to?: RouteLocationRaw\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, 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 || !!(attrs.onClick || attrs.onClickOnce)\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 Required<LinkProps>) : undefined\n\n return {\n ...link,\n isLink,\n isClickable,\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}, 'router')\n\nlet inTransition = false\nexport function useBackButton (cb: (next: NavigationGuardNext) => void) {\n const router = useRouter()\n let popped = false\n let removeBefore: (() => void) | undefined\n let removeAfter: (() => void) | undefined\n\n onMounted(() => {\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 onBeforeUnmount(() => {\n window.removeEventListener('popstate', onPopstate)\n removeBefore?.()\n removeAfter?.()\n })\n\n function onPopstate (e: PopStateEvent) {\n if (e.state?.replaced) return\n\n popped = true\n setTimeout(() => (popped = false))\n }\n}\n"],"file":"router.mjs"}
@@ -0,0 +1,19 @@
1
+ // Utilities
2
+ import { nextTick, watch } from 'vue'; // Types
3
+
4
+ export function useSelectLink(link, select) {
5
+ watch(() => {
6
+ var _link$isExactActive;
7
+
8
+ return (_link$isExactActive = link.isExactActive) == null ? void 0 : _link$isExactActive.value;
9
+ }, isExactActive => {
10
+ if (link.isLink.value && isExactActive && select) {
11
+ nextTick(() => {
12
+ select(true);
13
+ });
14
+ }
15
+ }, {
16
+ immediate: true
17
+ });
18
+ }
19
+ //# sourceMappingURL=selectLink.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/composables/selectLink.ts"],"names":["nextTick","watch","useSelectLink","link","select","isExactActive","value","isLink","immediate"],"mappings":"AAAA;AACA,SAASA,QAAT,EAAmBC,KAAnB,QAAgC,KAAhC,C,CAEA;;AAGA,OAAO,SAASC,aAAT,CAAwBC,IAAxB,EAAuCC,MAAvC,EAAqF;AAC1FH,EAAAA,KAAK,CAAC;AAAA;;AAAA,kCAAME,IAAI,CAACE,aAAX,qBAAM,oBAAoBC,KAA1B;AAAA,GAAD,EAAkCD,aAAa,IAAI;AACtD,QAAIF,IAAI,CAACI,MAAL,CAAYD,KAAZ,IAAqBD,aAArB,IAAsCD,MAA1C,EAAkD;AAChDJ,MAAAA,QAAQ,CAAC,MAAM;AACbI,QAAAA,MAAM,CAAC,IAAD,CAAN;AACD,OAFO,CAAR;AAGD;AACF,GANI,EAMF;AACDI,IAAAA,SAAS,EAAE;AADV,GANE,CAAL;AASD","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.isExactActive?.value, isExactActive => {\n if (link.isLink.value && isExactActive && select) {\n nextTick(() => {\n select(true)\n })\n }\n }, {\n immediate: true,\n })\n}\n"],"file":"selectLink.mjs"}
@@ -1,4 +1,4 @@
1
- import { computed, effectScope, onScopeDispose, ref, toRaw, watch } from 'vue';
1
+ import { effectScope, onScopeDispose, readonly, ref, toRaw, watch, watchEffect } from 'vue';
2
2
  import { getCurrentInstance } from "../util/index.mjs"; // Types
3
3
 
4
4
  const stack = ref([]);
@@ -23,11 +23,14 @@ export function useStack(isActive) {
23
23
  }, {
24
24
  immediate: true
25
25
  });
26
- const isTop = computed(() => {
27
- return toRaw(stack.value[stack.value.length - 1]) === vm;
26
+ const isTop = ref(true);
27
+ watchEffect(() => {
28
+ const _isTop = toRaw(stack.value[stack.value.length - 1]) === vm;
29
+
30
+ setTimeout(() => isTop.value = _isTop);
28
31
  });
29
32
  return {
30
- isTop
33
+ isTop: readonly(isTop)
31
34
  };
32
35
  }
33
36
  //# sourceMappingURL=stack.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/composables/stack.ts"],"names":["computed","effectScope","onScopeDispose","ref","toRaw","watch","getCurrentInstance","stack","useStack","isActive","vm","scope","val","run","value","push","idx","indexOf","splice","stop","immediate","isTop","length"],"mappings":"AAAA,SAASA,QAAT,EAAmBC,WAAnB,EAAgCC,cAAhC,EAAgDC,GAAhD,EAAqDC,KAArD,EAA4DC,KAA5D,QAAyE,KAAzE;SACSC,kB,6BAET;;AAGA,MAAMC,KAAK,GAAGJ,GAAG,CAA8B,EAA9B,CAAjB;AAEA,OAAO,SAASK,QAAT,CAAmBC,QAAnB,EAA2C;AAChD,QAAMC,EAAE,GAAGJ,kBAAkB,CAAC,UAAD,CAA7B;AACA,MAAIK,KAAJ;AACAN,EAAAA,KAAK,CAACI,QAAD,EAAWG,GAAG,IAAI;AACrB,QAAIA,GAAJ,EAAS;AACPD,MAAAA,KAAK,GAAGV,WAAW,EAAnB;AACAU,MAAAA,KAAK,CAACE,GAAN,CAAU,MAAM;AACdN,QAAAA,KAAK,CAACO,KAAN,CAAYC,IAAZ,CAAiBL,EAAjB;AAEAR,QAAAA,cAAc,CAAC,MAAM;AACnB,gBAAMc,GAAG,GAAGT,KAAK,CAACO,KAAN,CAAYG,OAAZ,CAAoBP,EAApB,CAAZ;AACAH,UAAAA,KAAK,CAACO,KAAN,CAAYI,MAAZ,CAAmBF,GAAnB,EAAwB,CAAxB;AACD,SAHa,CAAd;AAID,OAPD;AAQD,KAVD,MAUO;AAAA;;AACL,gBAAAL,KAAK,SAAL,mBAAOQ,IAAP;AACD;AACF,GAdI,EAcF;AAAEC,IAAAA,SAAS,EAAE;AAAb,GAdE,CAAL;AAgBA,QAAMC,KAAK,GAAGrB,QAAQ,CAAC,MAAM;AAC3B,WAAOI,KAAK,CAACG,KAAK,CAACO,KAAN,CAAYP,KAAK,CAACO,KAAN,CAAYQ,MAAZ,GAAqB,CAAjC,CAAD,CAAL,KAA+CZ,EAAtD;AACD,GAFqB,CAAtB;AAIA,SAAO;AACLW,IAAAA;AADK,GAAP;AAGD","sourcesContent":["import { computed, effectScope, onScopeDispose, ref, toRaw, watch } from 'vue'\nimport { getCurrentInstance } from '@/util'\n\n// Types\nimport type { ComponentInternalInstance, EffectScope, Ref } from 'vue'\n\nconst stack = ref<ComponentInternalInstance[]>([])\n\nexport function useStack (isActive: Ref<boolean>) {\n const vm = getCurrentInstance('useStack')\n let scope: EffectScope | undefined\n watch(isActive, val => {\n if (val) {\n scope = effectScope()\n scope.run(() => {\n stack.value.push(vm)\n\n onScopeDispose(() => {\n const idx = stack.value.indexOf(vm)\n stack.value.splice(idx, 1)\n })\n })\n } else {\n scope?.stop()\n }\n }, { immediate: true })\n\n const isTop = computed(() => {\n return toRaw(stack.value[stack.value.length - 1]) === vm\n })\n\n return {\n isTop,\n }\n}\n"],"file":"stack.mjs"}
1
+ {"version":3,"sources":["../../src/composables/stack.ts"],"names":["effectScope","onScopeDispose","readonly","ref","toRaw","watch","watchEffect","getCurrentInstance","stack","useStack","isActive","vm","scope","val","run","value","push","idx","indexOf","splice","stop","immediate","isTop","_isTop","length","setTimeout"],"mappings":"AAAA,SAASA,WAAT,EAAsBC,cAAtB,EAAsCC,QAAtC,EAAgDC,GAAhD,EAAqDC,KAArD,EAA4DC,KAA5D,EAAmEC,WAAnE,QAAsF,KAAtF;SACSC,kB,6BAET;;AAGA,MAAMC,KAAK,GAAGL,GAAG,CAA8B,EAA9B,CAAjB;AAEA,OAAO,SAASM,QAAT,CAAmBC,QAAnB,EAA2C;AAChD,QAAMC,EAAE,GAAGJ,kBAAkB,CAAC,UAAD,CAA7B;AACA,MAAIK,KAAJ;AACAP,EAAAA,KAAK,CAACK,QAAD,EAAWG,GAAG,IAAI;AACrB,QAAIA,GAAJ,EAAS;AACPD,MAAAA,KAAK,GAAGZ,WAAW,EAAnB;AACAY,MAAAA,KAAK,CAACE,GAAN,CAAU,MAAM;AACdN,QAAAA,KAAK,CAACO,KAAN,CAAYC,IAAZ,CAAiBL,EAAjB;AAEAV,QAAAA,cAAc,CAAC,MAAM;AACnB,gBAAMgB,GAAG,GAAGT,KAAK,CAACO,KAAN,CAAYG,OAAZ,CAAoBP,EAApB,CAAZ;AACAH,UAAAA,KAAK,CAACO,KAAN,CAAYI,MAAZ,CAAmBF,GAAnB,EAAwB,CAAxB;AACD,SAHa,CAAd;AAID,OAPD;AAQD,KAVD,MAUO;AAAA;;AACL,gBAAAL,KAAK,SAAL,mBAAOQ,IAAP;AACD;AACF,GAdI,EAcF;AAAEC,IAAAA,SAAS,EAAE;AAAb,GAdE,CAAL;AAgBA,QAAMC,KAAK,GAAGnB,GAAG,CAAC,IAAD,CAAjB;AACAG,EAAAA,WAAW,CAAC,MAAM;AAChB,UAAMiB,MAAM,GAAGnB,KAAK,CAACI,KAAK,CAACO,KAAN,CAAYP,KAAK,CAACO,KAAN,CAAYS,MAAZ,GAAqB,CAAjC,CAAD,CAAL,KAA+Cb,EAA9D;;AACAc,IAAAA,UAAU,CAAC,MAAMH,KAAK,CAACP,KAAN,GAAcQ,MAArB,CAAV;AACD,GAHU,CAAX;AAKA,SAAO;AACLD,IAAAA,KAAK,EAAEpB,QAAQ,CAACoB,KAAD;AADV,GAAP;AAGD","sourcesContent":["import { effectScope, onScopeDispose, readonly, ref, toRaw, watch, watchEffect } from 'vue'\nimport { getCurrentInstance } from '@/util'\n\n// Types\nimport type { ComponentInternalInstance, EffectScope, Ref } from 'vue'\n\nconst stack = ref<ComponentInternalInstance[]>([])\n\nexport function useStack (isActive: Ref<boolean>) {\n const vm = getCurrentInstance('useStack')\n let scope: EffectScope | undefined\n watch(isActive, val => {\n if (val) {\n scope = effectScope()\n scope.run(() => {\n stack.value.push(vm)\n\n onScopeDispose(() => {\n const idx = stack.value.indexOf(vm)\n stack.value.splice(idx, 1)\n })\n })\n } else {\n scope?.stop()\n }\n }, { immediate: true })\n\n const isTop = ref(true)\n watchEffect(() => {\n const _isTop = toRaw(stack.value[stack.value.length - 1]) === vm\n setTimeout(() => isTop.value = _isTop)\n })\n\n return {\n isTop: readonly(isTop),\n }\n}\n"],"file":"stack.mjs"}
@@ -2,7 +2,7 @@
2
2
  import { useForm } from "./form.mjs";
3
3
  import { useProxiedModel } from "./proxiedModel.mjs"; // Utilities
4
4
 
5
- import { computed, onBeforeMount, onBeforeUnmount, ref } from 'vue';
5
+ import { computed, onBeforeMount, onBeforeUnmount, ref, watch } from 'vue';
6
6
  import { getCurrentInstanceName, getUid, propsFactory, wrapInArray } from "../util/index.mjs"; // Types
7
7
 
8
8
  export const makeValidationProps = propsFactory({
@@ -30,7 +30,7 @@ export function useValidation(props) {
30
30
  const form = useForm();
31
31
  const internalErrorMessages = ref([]);
32
32
  const isPristine = ref(true);
33
- const isDirty = computed(() => wrapInArray(model.value || []).length > 0);
33
+ const isDirty = computed(() => wrapInArray(model.value === '' ? null : model.value).length > 0);
34
34
  const isDisabled = computed(() => !!(props.disabled || form != null && form.isDisabled.value));
35
35
  const isReadonly = computed(() => !!(props.readonly || form != null && form.isReadonly.value));
36
36
  const errorMessages = computed(() => {
@@ -55,11 +55,14 @@ export function useValidation(props) {
55
55
  return (_props$name = props.name) != null ? _props$name : getUid();
56
56
  });
57
57
  onBeforeMount(() => {
58
- form == null ? void 0 : form.register(uid.value, validate, reset, resetValidation);
58
+ form == null ? void 0 : form.register(uid.value, validate, reset, resetValidation, isValid);
59
59
  });
60
60
  onBeforeUnmount(() => {
61
61
  form == null ? void 0 : form.unregister(uid.value);
62
62
  });
63
+ watch(model, () => {
64
+ if (model.value != null) validate();
65
+ });
63
66
 
64
67
  function reset() {
65
68
  resetValidation();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/composables/validation.ts"],"names":["useForm","useProxiedModel","computed","onBeforeMount","onBeforeUnmount","ref","getCurrentInstanceName","getUid","propsFactory","wrapInArray","makeValidationProps","disabled","Boolean","error","errorMessages","type","Array","String","default","maxErrors","Number","name","readonly","rules","modelValue","useValidation","props","model","form","internalErrorMessages","isPristine","isDirty","value","length","isDisabled","isReadonly","isValid","isValidating","validationClasses","uid","register","validate","reset","resetValidation","unregister","results","rule","handler","result","console","warn","push"],"mappings":"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","sourcesContent":["// Composables\nimport { useForm } from '@/composables/form'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, onBeforeMount, onBeforeUnmount, ref } from 'vue'\nimport { getCurrentInstanceName, getUid, propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport type ValidationResult = string | true\nexport type ValidationRule =\n | ValidationResult\n | PromiseLike<ValidationResult>\n | ((value: any) => ValidationResult)\n | ((value: any) => PromiseLike<ValidationResult>)\n\nexport interface ValidationProps {\n disabled: boolean\n error: boolean\n errorMessages: string | string[]\n maxErrors: string | number\n name: string | undefined\n readonly: boolean\n rules: ValidationRule[]\n modelValue: any\n 'onUpdate:modelValue': ((val: any) => void) | undefined\n}\n\nexport const makeValidationProps = propsFactory({\n disabled: Boolean,\n error: Boolean,\n errorMessages: {\n type: [Array, String] as PropType<string | string[]>,\n default: () => ([]),\n },\n maxErrors: {\n type: [Number, String],\n default: 1,\n },\n name: String,\n readonly: Boolean,\n rules: {\n type: Array as PropType<ValidationRule[]>,\n default: () => ([]),\n },\n modelValue: null,\n})\n\nexport function useValidation (\n props: ValidationProps,\n name = getCurrentInstanceName(),\n) {\n const model = useProxiedModel(props, 'modelValue')\n const form = useForm()\n const internalErrorMessages = ref<string[]>([])\n const isPristine = ref(true)\n const isDirty = computed(() => wrapInArray(model.value || []).length > 0)\n const isDisabled = computed(() => !!(props.disabled || form?.isDisabled.value))\n const isReadonly = computed(() => !!(props.readonly || form?.isReadonly.value))\n const errorMessages = computed(() => {\n return props.errorMessages.length\n ? wrapInArray(props.errorMessages)\n : internalErrorMessages.value\n })\n const isValid = computed(() => {\n if (props.error || errorMessages.value.length) return false\n\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 ?? getUid())\n\n onBeforeMount(() => {\n form?.register(uid.value, validate, reset, resetValidation)\n })\n\n onBeforeUnmount(() => {\n form?.unregister(uid.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(model.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"],"file":"validation.mjs"}
1
+ {"version":3,"sources":["../../src/composables/validation.ts"],"names":["useForm","useProxiedModel","computed","onBeforeMount","onBeforeUnmount","ref","watch","getCurrentInstanceName","getUid","propsFactory","wrapInArray","makeValidationProps","disabled","Boolean","error","errorMessages","type","Array","String","default","maxErrors","Number","name","readonly","rules","modelValue","useValidation","props","model","form","internalErrorMessages","isPristine","isDirty","value","length","isDisabled","isReadonly","isValid","isValidating","validationClasses","uid","register","validate","reset","resetValidation","unregister","results","rule","handler","result","console","warn","push"],"mappings":"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","sourcesContent":["// Composables\nimport { useForm } from '@/composables/form'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, onBeforeMount, onBeforeUnmount, ref, watch } from 'vue'\nimport { getCurrentInstanceName, getUid, propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport type ValidationResult = string | true\nexport type ValidationRule =\n | ValidationResult\n | PromiseLike<ValidationResult>\n | ((value: any) => ValidationResult)\n | ((value: any) => PromiseLike<ValidationResult>)\n\nexport interface ValidationProps {\n disabled: boolean\n error: boolean\n errorMessages: string | string[]\n maxErrors: string | number\n name: string | undefined\n readonly: boolean\n rules: ValidationRule[]\n modelValue: any\n 'onUpdate:modelValue': ((val: any) => void) | undefined\n}\n\nexport const makeValidationProps = propsFactory({\n disabled: Boolean,\n error: Boolean,\n errorMessages: {\n type: [Array, String] as PropType<string | string[]>,\n default: () => ([]),\n },\n maxErrors: {\n type: [Number, String],\n default: 1,\n },\n name: String,\n readonly: Boolean,\n rules: {\n type: Array as PropType<ValidationRule[]>,\n default: () => ([]),\n },\n modelValue: null,\n})\n\nexport function useValidation (\n props: ValidationProps,\n name = getCurrentInstanceName(),\n) {\n const model = useProxiedModel(props, 'modelValue')\n const form = useForm()\n const internalErrorMessages = ref<string[]>([])\n const isPristine = ref(true)\n const isDirty = computed(() => wrapInArray(model.value === '' ? null : model.value).length > 0)\n const isDisabled = computed(() => !!(props.disabled || form?.isDisabled.value))\n const isReadonly = computed(() => !!(props.readonly || form?.isReadonly.value))\n const errorMessages = computed(() => {\n return props.errorMessages.length\n ? wrapInArray(props.errorMessages)\n : internalErrorMessages.value\n })\n const isValid = computed(() => {\n if (props.error || errorMessages.value.length) return false\n\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 ?? getUid())\n\n onBeforeMount(() => {\n form?.register(uid.value, validate, reset, resetValidation, isValid)\n })\n\n onBeforeUnmount(() => {\n form?.unregister(uid.value)\n })\n\n watch(model, () => {\n if (model.value != null) validate()\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(model.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"],"file":"validation.mjs"}
@@ -15,7 +15,6 @@ export function genOverlays(isClickable, name) {
15
15
  }
16
16
  export const makeVariantProps = propsFactory({
17
17
  color: String,
18
- textColor: String,
19
18
  variant: {
20
19
  type: String,
21
20
  default: 'contained',
@@ -35,12 +34,10 @@ export function useVariant(props) {
35
34
  colorStyles
36
35
  } = useColor(computed(() => {
37
36
  const {
38
- textColor,
39
37
  variant,
40
38
  color
41
39
  } = unref(props);
42
40
  return {
43
- text: textColor,
44
41
  [['contained', 'contained-flat'].includes(variant) ? 'background' : 'text']: color
45
42
  };
46
43
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/composables/variant.tsx"],"names":["useColor","computed","unref","getCurrentInstanceName","propsFactory","allowedVariants","genOverlays","isClickable","name","makeVariantProps","color","String","textColor","variant","type","default","validator","v","includes","useVariant","props","variantClasses","colorClasses","colorStyles","text"],"mappings":";AAAA;SACSA,Q,uBAET;;AACA,SAASC,QAAT,EAAmBC,KAAnB,QAAgC,KAAhC;SACSC,sB,EAAwBC,Y,6BAEjC;;AAIA,OAAO,MAAMC,eAAe,GAAG,CAC7B,UAD6B,EAE7B,OAF6B,EAG7B,MAH6B,EAI7B,WAJ6B,EAK7B,gBAL6B,EAM7B,gBAN6B,CAAxB;AAiBP,OAAO,SAASC,WAAT,CAAsBC,WAAtB,EAA4CC,IAA5C,EAA0D;AAC/D,wCAEMD,WAAW;AAAA,aAAiB,GAAEC,IAAK;AAAxB,UAFjB;AAAA,aAIiB,GAAEA,IAAK;AAJxB;AAOD;AAED,OAAO,MAAMC,gBAAgB,GAAGL,YAAY,CAAC;AAC3CM,EAAAA,KAAK,EAAEC,MADoC;AAE3CC,EAAAA,SAAS,EAAED,MAFgC;AAG3CE,EAAAA,OAAO,EAAE;AACPC,IAAAA,IAAI,EAAEH,MADC;AAEPI,IAAAA,OAAO,EAAE,WAFF;AAGPC,IAAAA,SAAS,EAAGC,CAAD,IAAYZ,eAAe,CAACa,QAAhB,CAAyBD,CAAzB;AAHhB;AAHkC,CAAD,EAQzC,SARyC,CAArC;AAUP,OAAO,SAASE,UAAT,CACLC,KADK,EAGL;AAAA,MADAZ,IACA,uEADOL,sBAAsB,EAC7B;AACA,QAAMkB,cAAc,GAAGpB,QAAQ,CAAC,MAAM;AACpC,UAAM;AAAEY,MAAAA;AAAF,QAAcX,KAAK,CAACkB,KAAD,CAAzB;AACA,WAAQ,GAAEZ,IAAK,aAAYK,OAAQ,EAAnC;AACD,GAH8B,CAA/B;AAKA,QAAM;AAAES,IAAAA,YAAF;AAAgBC,IAAAA;AAAhB,MAAgCvB,QAAQ,CAACC,QAAQ,CAAC,MAAM;AAC5D,UAAM;AAAEW,MAAAA,SAAF;AAAaC,MAAAA,OAAb;AAAsBH,MAAAA;AAAtB,QAAgCR,KAAK,CAACkB,KAAD,CAA3C;AACA,WAAO;AACLI,MAAAA,IAAI,EAAEZ,SADD;AAEL,OAAC,CAAC,WAAD,EAAc,gBAAd,EAAgCM,QAAhC,CAAyCL,OAAzC,IAAoD,YAApD,GAAmE,MAApE,GAA6EH;AAFxE,KAAP;AAID,GANsD,CAAT,CAA9C;AAQA,SAAO;AAAEY,IAAAA,YAAF;AAAgBC,IAAAA,WAAhB;AAA6BF,IAAAA;AAA7B,GAAP;AACD","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 'outlined',\n 'plain',\n 'text',\n 'contained',\n 'contained-flat',\n 'contained-text',\n] as const\n\nexport type Variant = typeof allowedVariants[number]\n\nexport interface VariantProps {\n color?: string\n textColor?: string\n variant: Variant\n}\n\nexport function genOverlays (isClickable: boolean, name: string) {\n return (\n <>\n { isClickable && <div class={`${name}__overlay`} /> }\n\n <div class={`${name}__underlay`} />\n </>\n )\n}\n\nexport const makeVariantProps = propsFactory({\n color: String,\n textColor: String,\n variant: {\n type: String as PropType<Variant>,\n default: 'contained',\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 { textColor, variant, color } = unref(props)\n return {\n text: textColor,\n [['contained', 'contained-flat'].includes(variant) ? 'background' : 'text']: color,\n }\n }))\n\n return { colorClasses, colorStyles, variantClasses }\n}\n"],"file":"variant.mjs"}
1
+ {"version":3,"sources":["../../src/composables/variant.tsx"],"names":["useColor","computed","unref","getCurrentInstanceName","propsFactory","allowedVariants","genOverlays","isClickable","name","makeVariantProps","color","String","variant","type","default","validator","v","includes","useVariant","props","variantClasses","colorClasses","colorStyles"],"mappings":";AAAA;SACSA,Q,uBAET;;AACA,SAASC,QAAT,EAAmBC,KAAnB,QAAgC,KAAhC;SACSC,sB,EAAwBC,Y,6BAEjC;;AAIA,OAAO,MAAMC,eAAe,GAAG,CAC7B,UAD6B,EAE7B,OAF6B,EAG7B,MAH6B,EAI7B,WAJ6B,EAK7B,gBAL6B,EAM7B,gBAN6B,CAAxB;AAgBP,OAAO,SAASC,WAAT,CAAsBC,WAAtB,EAA4CC,IAA5C,EAA0D;AAC/D,wCAEMD,WAAW;AAAA,aAAiB,GAAEC,IAAK;AAAxB,UAFjB;AAAA,aAIiB,GAAEA,IAAK;AAJxB;AAOD;AAED,OAAO,MAAMC,gBAAgB,GAAGL,YAAY,CAAC;AAC3CM,EAAAA,KAAK,EAAEC,MADoC;AAE3CC,EAAAA,OAAO,EAAE;AACPC,IAAAA,IAAI,EAAEF,MADC;AAEPG,IAAAA,OAAO,EAAE,WAFF;AAGPC,IAAAA,SAAS,EAAGC,CAAD,IAAYX,eAAe,CAACY,QAAhB,CAAyBD,CAAzB;AAHhB;AAFkC,CAAD,EAOzC,SAPyC,CAArC;AASP,OAAO,SAASE,UAAT,CACLC,KADK,EAGL;AAAA,MADAX,IACA,uEADOL,sBAAsB,EAC7B;AACA,QAAMiB,cAAc,GAAGnB,QAAQ,CAAC,MAAM;AACpC,UAAM;AAAEW,MAAAA;AAAF,QAAcV,KAAK,CAACiB,KAAD,CAAzB;AACA,WAAQ,GAAEX,IAAK,aAAYI,OAAQ,EAAnC;AACD,GAH8B,CAA/B;AAKA,QAAM;AAAES,IAAAA,YAAF;AAAgBC,IAAAA;AAAhB,MAAgCtB,QAAQ,CAACC,QAAQ,CAAC,MAAM;AAC5D,UAAM;AAAEW,MAAAA,OAAF;AAAWF,MAAAA;AAAX,QAAqBR,KAAK,CAACiB,KAAD,CAAhC;AACA,WAAO;AACL,OAAC,CAAC,WAAD,EAAc,gBAAd,EAAgCF,QAAhC,CAAyCL,OAAzC,IAAoD,YAApD,GAAmE,MAApE,GAA6EF;AADxE,KAAP;AAGD,GALsD,CAAT,CAA9C;AAOA,SAAO;AAAEW,IAAAA,YAAF;AAAgBC,IAAAA,WAAhB;AAA6BF,IAAAA;AAA7B,GAAP;AACD","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 'outlined',\n 'plain',\n 'text',\n 'contained',\n 'contained-flat',\n 'contained-text',\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 && <div class={`${name}__overlay`} /> }\n\n <div class={`${name}__underlay`} />\n </>\n )\n}\n\nexport const makeVariantProps = propsFactory({\n color: String,\n variant: {\n type: String as PropType<Variant>,\n default: 'contained',\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 [['contained', 'contained-flat'].includes(variant) ? 'background' : 'text']: color,\n }\n }))\n\n return { colorClasses, colorStyles, variantClasses }\n}\n"],"file":"variant.mjs"}
@@ -3,7 +3,7 @@ import "./VRipple.css"; // Utilities
3
3
 
4
4
  import { isObject, keyCodes } from "../../util/index.mjs"; // Types
5
5
 
6
- const rippleStop = Symbol('rippleStop');
6
+ const stopSymbol = Symbol('rippleStop');
7
7
  const DELAY_RIPPLE = 80;
8
8
 
9
9
  function transform(el, value) {
@@ -151,9 +151,9 @@ function isRippleEnabled(value) {
151
151
  function rippleShow(e) {
152
152
  const value = {};
153
153
  const element = e.currentTarget;
154
- if (!(element != null && element._ripple) || element._ripple.touched || e[rippleStop]) return; // Don't allow the event to trigger ripples on any other elements
154
+ if (!(element != null && element._ripple) || element._ripple.touched || e[stopSymbol]) return; // Don't allow the event to trigger ripples on any other elements
155
155
 
156
- e[rippleStop] = true;
156
+ e[stopSymbol] = true;
157
157
 
158
158
  if (isTouchEvent(e)) {
159
159
  element._ripple.touched = true;
@@ -194,6 +194,10 @@ function rippleShow(e) {
194
194
  }
195
195
  }
196
196
 
197
+ function rippleStop(e) {
198
+ e[stopSymbol] = true;
199
+ }
200
+
197
201
  function rippleHide(e) {
198
202
  const element = e.currentTarget;
199
203
  if (!element || !element._ripple) return;
@@ -274,6 +278,14 @@ function updateRipple(el, binding, wasEnabled) {
274
278
  }
275
279
 
276
280
  if (enabled && !wasEnabled) {
281
+ if (modifiers.stop) {
282
+ el.addEventListener('touchstart', rippleStop, {
283
+ passive: true
284
+ });
285
+ el.addEventListener('mousedown', rippleStop);
286
+ return;
287
+ }
288
+
277
289
  el.addEventListener('touchstart', rippleShow, {
278
290
  passive: true
279
291
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/directives/ripple/index.ts"],"names":["isObject","keyCodes","rippleStop","Symbol","DELAY_RIPPLE","transform","el","value","style","webkitTransform","opacity","isTouchEvent","e","constructor","name","isKeyboardEvent","calculate","localX","localY","offset","getBoundingClientRect","target","touches","length","clientX","left","clientY","top","radius","scale","_ripple","circle","clientWidth","center","Math","sqrt","clientHeight","centerX","centerY","x","y","ripples","show","enabled","container","document","createElement","animation","appendChild","className","class","size","width","height","computed","window","getComputedStyle","position","dataset","previousPosition","classList","add","activated","String","performance","now","setTimeout","remove","hide","getElementsByClassName","isHiding","diff","Number","delay","max","parentNode","removeChild","isRippleEnabled","rippleShow","element","currentTarget","touched","isTouch","centered","showTimerCommit","showTimer","rippleHide","clearTimeout","type","rippleCancelShow","keyboardRipple","keyboardRippleShow","keyCode","enter","space","keyboardRippleHide","focusRippleHide","updateRipple","binding","wasEnabled","modifiers","addEventListener","passive","removeListeners","removeEventListener","mounted","unmounted","updated","oldValue","Ripple"],"mappings":"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","sourcesContent":["// Styles\nimport './VRipple.sass'\n\n// Utilities\nimport { isObject, keyCodes } from '@/util'\n\n// Types\nimport type {\n DirectiveBinding,\n ObjectDirective,\n} from 'vue'\n\nconst rippleStop = Symbol('rippleStop')\n\ntype VuetifyRippleEvent = (MouseEvent | TouchEvent | KeyboardEvent) & { [rippleStop]?: boolean }\n\nconst DELAY_RIPPLE = 80\n\nfunction transform (el: HTMLElement, value: string) {\n el.style.transform = value\n el.style.webkitTransform = value\n}\n\nfunction opacity (el: HTMLElement, value: number) {\n el.style.opacity = `calc(${value} * var(--v-theme-overlay-multiplier))`\n}\n\ninterface RippleOptions {\n class?: string\n center?: boolean\n circle?: boolean\n}\n\nexport interface RippleDirectiveBinding extends Omit<DirectiveBinding, 'modifiers' | 'value'> {\n value?: boolean | { class: string }\n modifiers: {\n center?: boolean\n circle?: boolean\n }\n}\n\nfunction isTouchEvent (e: VuetifyRippleEvent): e is TouchEvent {\n return e.constructor.name === 'TouchEvent'\n}\n\nfunction isKeyboardEvent (e: VuetifyRippleEvent): e is KeyboardEvent {\n return e.constructor.name === 'KeyboardEvent'\n}\n\nconst calculate = (\n e: VuetifyRippleEvent,\n el: HTMLElement,\n value: RippleOptions = {}\n) => {\n let localX = 0\n let localY = 0\n\n if (!isKeyboardEvent(e)) {\n const offset = el.getBoundingClientRect()\n const target = isTouchEvent(e) ? e.touches[e.touches.length - 1] : e\n\n localX = target.clientX - offset.left\n localY = target.clientY - offset.top\n }\n\n let radius = 0\n let scale = 0.3\n if (el._ripple?.circle) {\n scale = 0.15\n radius = el.clientWidth / 2\n radius = value.center ? radius : radius + Math.sqrt((localX - radius) ** 2 + (localY - radius) ** 2) / 4\n } else {\n radius = Math.sqrt(el.clientWidth ** 2 + el.clientHeight ** 2) / 2\n }\n\n const centerX = `${(el.clientWidth - (radius * 2)) / 2}px`\n const centerY = `${(el.clientHeight - (radius * 2)) / 2}px`\n\n const x = value.center ? centerX : `${localX - radius}px`\n const y = value.center ? centerY : `${localY - radius}px`\n\n return { radius, scale, x, y, centerX, centerY }\n}\n\nconst ripples = {\n /* eslint-disable max-statements */\n show (\n e: VuetifyRippleEvent,\n el: HTMLElement,\n value: RippleOptions = {}\n ) {\n if (!el?._ripple?.enabled) {\n return\n }\n\n const container = document.createElement('span')\n const animation = document.createElement('span')\n\n container.appendChild(animation)\n container.className = 'v-ripple__container'\n\n if (value.class) {\n container.className += ` ${value.class}`\n }\n\n const { radius, scale, x, y, centerX, centerY } = calculate(e, el, value)\n\n const size = `${radius * 2}px`\n animation.className = 'v-ripple__animation'\n animation.style.width = size\n animation.style.height = size\n\n el.appendChild(container)\n\n const computed = window.getComputedStyle(el)\n if (computed && computed.position === 'static') {\n el.style.position = 'relative'\n el.dataset.previousPosition = 'static'\n }\n\n animation.classList.add('v-ripple__animation--enter')\n animation.classList.add('v-ripple__animation--visible')\n transform(animation, `translate(${x}, ${y}) scale3d(${scale},${scale},${scale})`)\n opacity(animation, 0)\n animation.dataset.activated = String(performance.now())\n\n setTimeout(() => {\n animation.classList.remove('v-ripple__animation--enter')\n animation.classList.add('v-ripple__animation--in')\n transform(animation, `translate(${centerX}, ${centerY}) scale3d(1,1,1)`)\n opacity(animation, 0.08)\n }, 0)\n },\n\n hide (el: HTMLElement | null) {\n if (!el?._ripple?.enabled) return\n\n const ripples = el.getElementsByClassName('v-ripple__animation')\n\n if (ripples.length === 0) return\n const animation = ripples[ripples.length - 1]\n\n if (animation.dataset.isHiding) return\n else animation.dataset.isHiding = 'true'\n\n const diff = performance.now() - Number(animation.dataset.activated)\n const delay = Math.max(250 - diff, 0)\n\n setTimeout(() => {\n animation.classList.remove('v-ripple__animation--in')\n animation.classList.add('v-ripple__animation--out')\n opacity(animation, 0)\n\n setTimeout(() => {\n const ripples = el.getElementsByClassName('v-ripple__animation')\n if (ripples.length === 1 && el.dataset.previousPosition) {\n el.style.position = el.dataset.previousPosition\n delete el.dataset.previousPosition\n }\n\n animation.parentNode && el.removeChild(animation.parentNode)\n }, 300)\n }, delay)\n },\n}\n\nfunction isRippleEnabled (value: any): value is true {\n return typeof value === 'undefined' || !!value\n}\n\nfunction rippleShow (e: VuetifyRippleEvent) {\n const value: RippleOptions = {}\n const element = e.currentTarget as HTMLElement | undefined\n\n if (!element?._ripple || element._ripple.touched || e[rippleStop]) return\n\n // Don't allow the event to trigger ripples on any other elements\n e[rippleStop] = true\n\n if (isTouchEvent(e)) {\n element._ripple.touched = true\n element._ripple.isTouch = true\n } else {\n // It's possible for touch events to fire\n // as mouse events on Android/iOS, this\n // will skip the event call if it has\n // already been registered as touch\n if (element._ripple.isTouch) return\n }\n\n value.center = element._ripple.centered || isKeyboardEvent(e)\n if (element._ripple.class) {\n value.class = element._ripple.class\n }\n\n if (isTouchEvent(e)) {\n // already queued that shows or hides the ripple\n if (element._ripple.showTimerCommit) return\n\n element._ripple.showTimerCommit = () => {\n ripples.show(e, element, value)\n }\n element._ripple.showTimer = window.setTimeout(() => {\n if (element?._ripple?.showTimerCommit) {\n element._ripple.showTimerCommit()\n element._ripple.showTimerCommit = null\n }\n }, DELAY_RIPPLE)\n } else {\n ripples.show(e, element, value)\n }\n}\n\nfunction rippleHide (e: Event) {\n const element = e.currentTarget as HTMLElement | null\n if (!element || !element._ripple) return\n\n window.clearTimeout(element._ripple.showTimer)\n\n // The touch interaction occurs before the show timer is triggered.\n // We still want to show ripple effect.\n if (e.type === 'touchend' && element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit()\n element._ripple.showTimerCommit = null\n\n // re-queue ripple hiding\n element._ripple.showTimer = window.setTimeout(() => {\n rippleHide(e)\n })\n return\n }\n\n window.setTimeout(() => {\n if (element._ripple) {\n element._ripple.touched = false\n }\n })\n ripples.hide(element)\n}\n\nfunction rippleCancelShow (e: MouseEvent | TouchEvent) {\n const element = e.currentTarget as HTMLElement | undefined\n\n if (!element || !element._ripple) return\n\n if (element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit = null\n }\n\n window.clearTimeout(element._ripple.showTimer)\n}\n\nlet keyboardRipple = false\n\nfunction keyboardRippleShow (e: KeyboardEvent) {\n if (!keyboardRipple && (e.keyCode === keyCodes.enter || e.keyCode === keyCodes.space)) {\n keyboardRipple = true\n rippleShow(e)\n }\n}\n\nfunction keyboardRippleHide (e: KeyboardEvent) {\n keyboardRipple = false\n rippleHide(e)\n}\n\nfunction focusRippleHide (e: FocusEvent) {\n if (keyboardRipple) {\n keyboardRipple = false\n rippleHide(e)\n }\n}\n\nfunction updateRipple (el: HTMLElement, binding: RippleDirectiveBinding, wasEnabled: boolean) {\n const { value, modifiers } = binding\n const enabled = isRippleEnabled(value)\n if (!enabled) {\n ripples.hide(el)\n }\n\n el._ripple = el._ripple ?? {}\n el._ripple.enabled = enabled\n el._ripple.centered = modifiers.center\n el._ripple.circle = modifiers.circle\n if (isObject(value) && value.class) {\n el._ripple.class = value.class\n }\n\n if (enabled && !wasEnabled) {\n el.addEventListener('touchstart', rippleShow, { passive: true })\n el.addEventListener('touchend', rippleHide, { passive: true })\n el.addEventListener('touchmove', rippleCancelShow, { passive: true })\n el.addEventListener('touchcancel', rippleHide)\n\n el.addEventListener('mousedown', rippleShow)\n el.addEventListener('mouseup', rippleHide)\n el.addEventListener('mouseleave', rippleHide)\n\n el.addEventListener('keydown', keyboardRippleShow)\n el.addEventListener('keyup', keyboardRippleHide)\n\n el.addEventListener('blur', focusRippleHide)\n\n // Anchor tags can be dragged, causes other hides to fail - #1537\n el.addEventListener('dragstart', rippleHide, { passive: true })\n } else if (!enabled && wasEnabled) {\n removeListeners(el)\n }\n}\n\nfunction removeListeners (el: HTMLElement) {\n el.removeEventListener('mousedown', rippleShow)\n el.removeEventListener('touchstart', rippleShow)\n el.removeEventListener('touchend', rippleHide)\n el.removeEventListener('touchmove', rippleCancelShow)\n el.removeEventListener('touchcancel', rippleHide)\n el.removeEventListener('mouseup', rippleHide)\n el.removeEventListener('mouseleave', rippleHide)\n el.removeEventListener('keydown', keyboardRippleShow)\n el.removeEventListener('keyup', keyboardRippleHide)\n el.removeEventListener('dragstart', rippleHide)\n el.removeEventListener('blur', focusRippleHide)\n}\n\nfunction mounted (el: HTMLElement, binding: DirectiveBinding) {\n updateRipple(el, binding, false)\n}\n\nfunction unmounted (el: HTMLElement) {\n delete el._ripple\n removeListeners(el)\n}\n\nfunction updated (el: HTMLElement, binding: DirectiveBinding) {\n if (binding.value === binding.oldValue) {\n return\n }\n\n const wasEnabled = isRippleEnabled(binding.oldValue)\n updateRipple(el, binding, wasEnabled)\n}\n\nexport const Ripple: ObjectDirective = {\n mounted,\n unmounted,\n updated,\n}\n\nexport default Ripple\n"],"file":"index.mjs"}
1
+ {"version":3,"sources":["../../../src/directives/ripple/index.ts"],"names":["isObject","keyCodes","stopSymbol","Symbol","DELAY_RIPPLE","transform","el","value","style","webkitTransform","opacity","isTouchEvent","e","constructor","name","isKeyboardEvent","calculate","localX","localY","offset","getBoundingClientRect","target","touches","length","clientX","left","clientY","top","radius","scale","_ripple","circle","clientWidth","center","Math","sqrt","clientHeight","centerX","centerY","x","y","ripples","show","enabled","container","document","createElement","animation","appendChild","className","class","size","width","height","computed","window","getComputedStyle","position","dataset","previousPosition","classList","add","activated","String","performance","now","setTimeout","remove","hide","getElementsByClassName","isHiding","diff","Number","delay","max","parentNode","removeChild","isRippleEnabled","rippleShow","element","currentTarget","touched","isTouch","centered","showTimerCommit","showTimer","rippleStop","rippleHide","clearTimeout","type","rippleCancelShow","keyboardRipple","keyboardRippleShow","keyCode","enter","space","keyboardRippleHide","focusRippleHide","updateRipple","binding","wasEnabled","modifiers","stop","addEventListener","passive","removeListeners","removeEventListener","mounted","unmounted","updated","oldValue","Ripple"],"mappings":"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","sourcesContent":["// Styles\nimport './VRipple.sass'\n\n// Utilities\nimport { isObject, keyCodes } from '@/util'\n\n// Types\nimport type {\n DirectiveBinding,\n ObjectDirective,\n} from 'vue'\n\nconst stopSymbol = Symbol('rippleStop')\n\ntype VuetifyRippleEvent = (MouseEvent | TouchEvent | KeyboardEvent) & { [stopSymbol]?: boolean }\n\nconst DELAY_RIPPLE = 80\n\nfunction transform (el: HTMLElement, value: string) {\n el.style.transform = value\n el.style.webkitTransform = value\n}\n\nfunction opacity (el: HTMLElement, value: number) {\n el.style.opacity = `calc(${value} * var(--v-theme-overlay-multiplier))`\n}\n\ninterface RippleOptions {\n class?: string\n center?: boolean\n circle?: boolean\n}\n\nexport interface RippleDirectiveBinding extends Omit<DirectiveBinding, 'modifiers' | 'value'> {\n value?: boolean | { class: string }\n modifiers: {\n center?: boolean\n circle?: boolean\n stop?: boolean\n }\n}\n\nfunction isTouchEvent (e: VuetifyRippleEvent): e is TouchEvent {\n return e.constructor.name === 'TouchEvent'\n}\n\nfunction isKeyboardEvent (e: VuetifyRippleEvent): e is KeyboardEvent {\n return e.constructor.name === 'KeyboardEvent'\n}\n\nconst calculate = (\n e: VuetifyRippleEvent,\n el: HTMLElement,\n value: RippleOptions = {}\n) => {\n let localX = 0\n let localY = 0\n\n if (!isKeyboardEvent(e)) {\n const offset = el.getBoundingClientRect()\n const target = isTouchEvent(e) ? e.touches[e.touches.length - 1] : e\n\n localX = target.clientX - offset.left\n localY = target.clientY - offset.top\n }\n\n let radius = 0\n let scale = 0.3\n if (el._ripple?.circle) {\n scale = 0.15\n radius = el.clientWidth / 2\n radius = value.center ? radius : radius + Math.sqrt((localX - radius) ** 2 + (localY - radius) ** 2) / 4\n } else {\n radius = Math.sqrt(el.clientWidth ** 2 + el.clientHeight ** 2) / 2\n }\n\n const centerX = `${(el.clientWidth - (radius * 2)) / 2}px`\n const centerY = `${(el.clientHeight - (radius * 2)) / 2}px`\n\n const x = value.center ? centerX : `${localX - radius}px`\n const y = value.center ? centerY : `${localY - radius}px`\n\n return { radius, scale, x, y, centerX, centerY }\n}\n\nconst ripples = {\n /* eslint-disable max-statements */\n show (\n e: VuetifyRippleEvent,\n el: HTMLElement,\n value: RippleOptions = {}\n ) {\n if (!el?._ripple?.enabled) {\n return\n }\n\n const container = document.createElement('span')\n const animation = document.createElement('span')\n\n container.appendChild(animation)\n container.className = 'v-ripple__container'\n\n if (value.class) {\n container.className += ` ${value.class}`\n }\n\n const { radius, scale, x, y, centerX, centerY } = calculate(e, el, value)\n\n const size = `${radius * 2}px`\n animation.className = 'v-ripple__animation'\n animation.style.width = size\n animation.style.height = size\n\n el.appendChild(container)\n\n const computed = window.getComputedStyle(el)\n if (computed && computed.position === 'static') {\n el.style.position = 'relative'\n el.dataset.previousPosition = 'static'\n }\n\n animation.classList.add('v-ripple__animation--enter')\n animation.classList.add('v-ripple__animation--visible')\n transform(animation, `translate(${x}, ${y}) scale3d(${scale},${scale},${scale})`)\n opacity(animation, 0)\n animation.dataset.activated = String(performance.now())\n\n setTimeout(() => {\n animation.classList.remove('v-ripple__animation--enter')\n animation.classList.add('v-ripple__animation--in')\n transform(animation, `translate(${centerX}, ${centerY}) scale3d(1,1,1)`)\n opacity(animation, 0.08)\n }, 0)\n },\n\n hide (el: HTMLElement | null) {\n if (!el?._ripple?.enabled) return\n\n const ripples = el.getElementsByClassName('v-ripple__animation')\n\n if (ripples.length === 0) return\n const animation = ripples[ripples.length - 1]\n\n if (animation.dataset.isHiding) return\n else animation.dataset.isHiding = 'true'\n\n const diff = performance.now() - Number(animation.dataset.activated)\n const delay = Math.max(250 - diff, 0)\n\n setTimeout(() => {\n animation.classList.remove('v-ripple__animation--in')\n animation.classList.add('v-ripple__animation--out')\n opacity(animation, 0)\n\n setTimeout(() => {\n const ripples = el.getElementsByClassName('v-ripple__animation')\n if (ripples.length === 1 && el.dataset.previousPosition) {\n el.style.position = el.dataset.previousPosition\n delete el.dataset.previousPosition\n }\n\n animation.parentNode && el.removeChild(animation.parentNode)\n }, 300)\n }, delay)\n },\n}\n\nfunction isRippleEnabled (value: any): value is true {\n return typeof value === 'undefined' || !!value\n}\n\nfunction rippleShow (e: VuetifyRippleEvent) {\n const value: RippleOptions = {}\n const element = e.currentTarget as HTMLElement | undefined\n\n if (!element?._ripple || element._ripple.touched || e[stopSymbol]) return\n\n // Don't allow the event to trigger ripples on any other elements\n e[stopSymbol] = true\n\n if (isTouchEvent(e)) {\n element._ripple.touched = true\n element._ripple.isTouch = true\n } else {\n // It's possible for touch events to fire\n // as mouse events on Android/iOS, this\n // will skip the event call if it has\n // already been registered as touch\n if (element._ripple.isTouch) return\n }\n\n value.center = element._ripple.centered || isKeyboardEvent(e)\n if (element._ripple.class) {\n value.class = element._ripple.class\n }\n\n if (isTouchEvent(e)) {\n // already queued that shows or hides the ripple\n if (element._ripple.showTimerCommit) return\n\n element._ripple.showTimerCommit = () => {\n ripples.show(e, element, value)\n }\n element._ripple.showTimer = window.setTimeout(() => {\n if (element?._ripple?.showTimerCommit) {\n element._ripple.showTimerCommit()\n element._ripple.showTimerCommit = null\n }\n }, DELAY_RIPPLE)\n } else {\n ripples.show(e, element, value)\n }\n}\n\nfunction rippleStop (e: VuetifyRippleEvent) {\n e[stopSymbol] = true\n}\n\nfunction rippleHide (e: Event) {\n const element = e.currentTarget as HTMLElement | null\n if (!element || !element._ripple) return\n\n window.clearTimeout(element._ripple.showTimer)\n\n // The touch interaction occurs before the show timer is triggered.\n // We still want to show ripple effect.\n if (e.type === 'touchend' && element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit()\n element._ripple.showTimerCommit = null\n\n // re-queue ripple hiding\n element._ripple.showTimer = window.setTimeout(() => {\n rippleHide(e)\n })\n return\n }\n\n window.setTimeout(() => {\n if (element._ripple) {\n element._ripple.touched = false\n }\n })\n ripples.hide(element)\n}\n\nfunction rippleCancelShow (e: MouseEvent | TouchEvent) {\n const element = e.currentTarget as HTMLElement | undefined\n\n if (!element || !element._ripple) return\n\n if (element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit = null\n }\n\n window.clearTimeout(element._ripple.showTimer)\n}\n\nlet keyboardRipple = false\n\nfunction keyboardRippleShow (e: KeyboardEvent) {\n if (!keyboardRipple && (e.keyCode === keyCodes.enter || e.keyCode === keyCodes.space)) {\n keyboardRipple = true\n rippleShow(e)\n }\n}\n\nfunction keyboardRippleHide (e: KeyboardEvent) {\n keyboardRipple = false\n rippleHide(e)\n}\n\nfunction focusRippleHide (e: FocusEvent) {\n if (keyboardRipple) {\n keyboardRipple = false\n rippleHide(e)\n }\n}\n\nfunction updateRipple (el: HTMLElement, binding: RippleDirectiveBinding, wasEnabled: boolean) {\n const { value, modifiers } = binding\n const enabled = isRippleEnabled(value)\n if (!enabled) {\n ripples.hide(el)\n }\n\n el._ripple = el._ripple ?? {}\n el._ripple.enabled = enabled\n el._ripple.centered = modifiers.center\n el._ripple.circle = modifiers.circle\n if (isObject(value) && value.class) {\n el._ripple.class = value.class\n }\n\n if (enabled && !wasEnabled) {\n if (modifiers.stop) {\n el.addEventListener('touchstart', rippleStop, { passive: true })\n el.addEventListener('mousedown', rippleStop)\n return\n }\n\n el.addEventListener('touchstart', rippleShow, { passive: true })\n el.addEventListener('touchend', rippleHide, { passive: true })\n el.addEventListener('touchmove', rippleCancelShow, { passive: true })\n el.addEventListener('touchcancel', rippleHide)\n\n el.addEventListener('mousedown', rippleShow)\n el.addEventListener('mouseup', rippleHide)\n el.addEventListener('mouseleave', rippleHide)\n\n el.addEventListener('keydown', keyboardRippleShow)\n el.addEventListener('keyup', keyboardRippleHide)\n\n el.addEventListener('blur', focusRippleHide)\n\n // Anchor tags can be dragged, causes other hides to fail - #1537\n el.addEventListener('dragstart', rippleHide, { passive: true })\n } else if (!enabled && wasEnabled) {\n removeListeners(el)\n }\n}\n\nfunction removeListeners (el: HTMLElement) {\n el.removeEventListener('mousedown', rippleShow)\n el.removeEventListener('touchstart', rippleShow)\n el.removeEventListener('touchend', rippleHide)\n el.removeEventListener('touchmove', rippleCancelShow)\n el.removeEventListener('touchcancel', rippleHide)\n el.removeEventListener('mouseup', rippleHide)\n el.removeEventListener('mouseleave', rippleHide)\n el.removeEventListener('keydown', keyboardRippleShow)\n el.removeEventListener('keyup', keyboardRippleHide)\n el.removeEventListener('dragstart', rippleHide)\n el.removeEventListener('blur', focusRippleHide)\n}\n\nfunction mounted (el: HTMLElement, binding: DirectiveBinding) {\n updateRipple(el, binding, false)\n}\n\nfunction unmounted (el: HTMLElement) {\n delete el._ripple\n removeListeners(el)\n}\n\nfunction updated (el: HTMLElement, binding: DirectiveBinding) {\n if (binding.value === binding.oldValue) {\n return\n }\n\n const wasEnabled = isRippleEnabled(binding.oldValue)\n updateRipple(el, binding, wasEnabled)\n}\n\nexport const Ripple: ObjectDirective = {\n mounted,\n unmounted,\n updated,\n}\n\nexport default Ripple\n"],"file":"index.mjs"}
@@ -10,7 +10,7 @@ export const createVuetify = function () {
10
10
  ...options
11
11
  });
12
12
  };
13
- export const version = "3.0.0-beta.0";
13
+ export const version = "3.0.0-beta.2";
14
14
  export { components, directives };
15
15
  export * from "./composables/index.mjs";
16
16
  //# sourceMappingURL=entry-bundler.mjs.map