@volverjs/ui-vue 0.0.10-beta.46 → 0.0.10-beta.48

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 (357) hide show
  1. package/README.md +2 -2
  2. package/auto-imports.d.ts +19 -11
  3. package/bin/icons.js +1 -0
  4. package/dist/components/VvAccordion/VvAccordion.es.js +4 -5
  5. package/dist/components/VvAccordion/VvAccordion.umd.js +1 -1
  6. package/dist/components/VvAccordion/VvAccordion.vue.d.ts +8 -11
  7. package/dist/components/VvAccordion/index.d.ts +2 -2
  8. package/dist/components/VvAccordionGroup/VvAccordionGroup.es.js +45 -46
  9. package/dist/components/VvAccordionGroup/VvAccordionGroup.umd.js +1 -1
  10. package/dist/components/VvAccordionGroup/VvAccordionGroup.vue.d.ts +11 -13
  11. package/dist/components/VvAccordionGroup/index.d.ts +2 -2
  12. package/dist/components/VvAction/VvAction.vue.d.ts +8 -10
  13. package/dist/components/VvAction/index.d.ts +1 -1
  14. package/dist/components/VvAlert/VvAlert.es.js +158 -161
  15. package/dist/components/VvAlert/VvAlert.umd.js +1 -1
  16. package/dist/components/VvAlert/VvAlert.vue.d.ts +20 -22
  17. package/dist/components/VvAlert/index.d.ts +1 -1
  18. package/dist/components/VvAlertGroup/VvAlertGroup.es.js +271 -274
  19. package/dist/components/VvAlertGroup/VvAlertGroup.umd.js +1 -1
  20. package/dist/components/VvAlertGroup/VvAlertGroup.vue.d.ts +9 -11
  21. package/dist/components/VvAlertGroup/index.d.ts +2 -2
  22. package/dist/components/VvAvatar/VvAvatar.vue.d.ts +6 -6
  23. package/dist/components/VvAvatar/index.d.ts +1 -1
  24. package/dist/components/VvAvatarGroup/VvAvatarGroup.es.js +21 -22
  25. package/dist/components/VvAvatarGroup/VvAvatarGroup.umd.js +1 -1
  26. package/dist/components/VvAvatarGroup/VvAvatarGroup.vue.d.ts +6 -6
  27. package/dist/components/VvAvatarGroup/index.d.ts +1 -1
  28. package/dist/components/VvBadge/VvBadge.vue.d.ts +6 -6
  29. package/dist/components/VvBadge/index.d.ts +1 -1
  30. package/dist/components/VvBreadcrumb/VvBreadcrumb.es.js +23 -23
  31. package/dist/components/VvBreadcrumb/VvBreadcrumb.umd.js +1 -1
  32. package/dist/components/VvBreadcrumb/VvBreadcrumb.vue.d.ts +19 -19
  33. package/dist/components/VvBreadcrumb/index.d.ts +1 -1
  34. package/dist/components/VvButton/VvButton.es.js +313 -314
  35. package/dist/components/VvButton/VvButton.umd.js +1 -1
  36. package/dist/components/VvButton/VvButton.vue.d.ts +14 -16
  37. package/dist/components/VvButton/index.d.ts +9 -9
  38. package/dist/components/VvButtonGroup/VvButtonGroup.es.js +2 -2
  39. package/dist/components/VvButtonGroup/VvButtonGroup.vue.d.ts +6 -8
  40. package/dist/components/VvButtonGroup/index.d.ts +1 -1
  41. package/dist/components/VvCard/VvCard.vue.d.ts +6 -6
  42. package/dist/components/VvCard/index.d.ts +1 -1
  43. package/dist/components/VvCheckbox/VvCheckbox.es.js +186 -187
  44. package/dist/components/VvCheckbox/VvCheckbox.umd.js +1 -1
  45. package/dist/components/VvCheckbox/VvCheckbox.vue.d.ts +11 -13
  46. package/dist/components/VvCheckbox/index.d.ts +7 -7
  47. package/dist/components/VvCheckboxGroup/VvCheckboxGroup.es.js +190 -191
  48. package/dist/components/VvCheckboxGroup/VvCheckboxGroup.umd.js +1 -1
  49. package/dist/components/VvCheckboxGroup/VvCheckboxGroup.vue.d.ts +11 -13
  50. package/dist/components/VvCheckboxGroup/index.d.ts +2 -2
  51. package/dist/components/VvCombobox/VvCombobox.es.js +1864 -1865
  52. package/dist/components/VvCombobox/VvCombobox.umd.js +1 -1
  53. package/dist/components/VvCombobox/VvCombobox.vue.d.ts +72 -291
  54. package/dist/components/VvCombobox/index.d.ts +1 -1
  55. package/dist/components/VvDialog/VvDialog.vue.d.ts +7 -9
  56. package/dist/components/VvDialog/index.d.ts +1 -1
  57. package/dist/components/VvDropdown/VvDropdown.es.js +9 -10
  58. package/dist/components/VvDropdown/VvDropdown.umd.js +1 -1
  59. package/dist/components/VvDropdown/VvDropdown.vue.d.ts +51 -51
  60. package/dist/components/VvDropdown/VvDropdownAction.vue.d.ts +22 -16
  61. package/dist/components/VvDropdown/VvDropdownItem.vue.d.ts +4 -4
  62. package/dist/components/VvDropdown/VvDropdownOptgroup.vue.d.ts +4 -4
  63. package/dist/components/VvDropdown/VvDropdownOption.vue.d.ts +6 -6
  64. package/dist/components/VvDropdownAction/VvDropdownAction.es.js +2 -2
  65. package/dist/components/VvDropdownItem/VvDropdownItem.es.js +2 -2
  66. package/dist/components/VvDropdownOption/VvDropdownOption.es.js +2 -2
  67. package/dist/components/VvIcon/VvIcon.vue.d.ts +2 -23
  68. package/dist/components/VvInputFile/VvInputFile.es.js +661 -656
  69. package/dist/components/VvInputFile/VvInputFile.umd.js +1 -1
  70. package/dist/components/VvInputFile/VvInputFile.vue.d.ts +19 -19
  71. package/dist/components/VvInputFile/index.d.ts +4 -4
  72. package/dist/components/VvInputText/VvInputClearAction.d.ts +10 -6
  73. package/dist/components/VvInputText/VvInputPasswordAction.d.ts +11 -7
  74. package/dist/components/VvInputText/VvInputStepAction.d.ts +10 -6
  75. package/dist/components/VvInputText/VvInputText.es.js +715 -716
  76. package/dist/components/VvInputText/VvInputText.umd.js +1 -1
  77. package/dist/components/VvInputText/VvInputText.vue.d.ts +30 -32
  78. package/dist/components/VvInputText/index.d.ts +1 -1
  79. package/dist/components/VvNav/VvNav.es.js +5 -5
  80. package/dist/components/VvNav/VvNav.umd.js +1 -1
  81. package/dist/components/VvNav/VvNav.vue.d.ts +8 -10
  82. package/dist/components/VvNav/VvNavItem.vue.d.ts +1 -1
  83. package/dist/components/VvNav/VvNavSeparator.vue.d.ts +1 -1
  84. package/dist/components/VvNav/index.d.ts +2 -2
  85. package/dist/components/VvProgress/VvProgress.vue.d.ts +6 -6
  86. package/dist/components/VvProgress/index.d.ts +1 -1
  87. package/dist/components/VvRadio/VvRadio.es.js +186 -187
  88. package/dist/components/VvRadio/VvRadio.umd.js +1 -1
  89. package/dist/components/VvRadio/VvRadio.vue.d.ts +10 -12
  90. package/dist/components/VvRadio/index.d.ts +5 -5
  91. package/dist/components/VvRadioGroup/VvRadioGroup.es.js +190 -191
  92. package/dist/components/VvRadioGroup/VvRadioGroup.umd.js +1 -1
  93. package/dist/components/VvRadioGroup/VvRadioGroup.vue.d.ts +11 -13
  94. package/dist/components/VvRadioGroup/index.d.ts +2 -2
  95. package/dist/components/VvSelect/VvSelect.es.js +337 -338
  96. package/dist/components/VvSelect/VvSelect.umd.js +1 -1
  97. package/dist/components/VvSelect/VvSelect.vue.d.ts +20 -131
  98. package/dist/components/VvSelect/index.d.ts +7 -7
  99. package/dist/components/VvTab/VvTab.es.js +18 -18
  100. package/dist/components/VvTab/VvTab.umd.js +1 -1
  101. package/dist/components/VvTab/VvTab.vue.d.ts +6 -8
  102. package/dist/components/VvTab/index.d.ts +1 -1
  103. package/dist/components/VvTextarea/VvTextarea.es.js +292 -293
  104. package/dist/components/VvTextarea/VvTextarea.umd.js +1 -1
  105. package/dist/components/VvTextarea/VvTextarea.vue.d.ts +14 -16
  106. package/dist/components/VvTextarea/index.d.ts +3 -3
  107. package/dist/components/VvTooltip/VvTooltip.vue.d.ts +8 -8
  108. package/dist/components/common/HintSlot.d.ts +6 -6
  109. package/dist/components/index.d.ts +1 -1
  110. package/dist/components/index.es.js +2761 -2758
  111. package/dist/components/index.umd.js +1 -1
  112. package/dist/composables/alert/useAlert.d.ts +4 -4
  113. package/dist/composables/alert/{useProvideAlert.d.ts → useAlertProvide.d.ts} +1 -1
  114. package/dist/composables/dropdown/useDropdownContextmenu.d.ts +18 -0
  115. package/dist/composables/dropdown/{useProvideDropdown.d.ts → useDropdownProvide.d.ts} +6 -6
  116. package/dist/composables/dropdown/useDropdownVirtualElement.d.ts +17 -0
  117. package/dist/composables/group/{useInjectedGroupState.d.ts → useGroupStateInject.d.ts} +1 -1
  118. package/dist/composables/group/{useProvideGroupState.d.ts → useGroupStateProvide.d.ts} +2 -2
  119. package/dist/composables/index.d.ts +2 -0
  120. package/dist/composables/index.es.js +87 -3
  121. package/dist/composables/index.umd.js +1 -1
  122. package/dist/composables/useComponentFocus.d.ts +1 -1
  123. package/dist/composables/useOptions.d.ts +1 -1
  124. package/dist/composables/usePersistence.d.ts +1 -1
  125. package/dist/composables/useUniqueId.d.ts +1 -1
  126. package/dist/constants.d.ts +3 -3
  127. package/dist/directives/index.d.ts +2 -2
  128. package/dist/directives/index.es.js +145 -39
  129. package/dist/directives/index.umd.js +1 -1
  130. package/dist/directives/v-contextmenu.es.js +137 -31
  131. package/dist/directives/v-contextmenu.umd.js +1 -1
  132. package/dist/icons.d.ts +17 -17
  133. package/dist/icons.es.js +424 -424
  134. package/dist/icons.umd.js +1 -1
  135. package/dist/index.d.ts +1 -1
  136. package/dist/index.umd.js +1 -1
  137. package/dist/props/index.d.ts +4 -4
  138. package/dist/resolvers/unplugin.umd.js +1 -1
  139. package/dist/stories/AccordionGroup/AccordionGroupSlots.stories.d.ts +178 -474
  140. package/dist/stories/Alert/Alert.settings.d.ts +1 -1
  141. package/dist/stories/Alert/AlertModifiers.stories.d.ts +1 -1
  142. package/dist/stories/Alert/AlertSlots.stories.d.ts +1 -1
  143. package/dist/stories/AlertGroup/AlertGroupPosition.stories.d.ts +1 -1
  144. package/dist/stories/AlertGroup/AlertGroupSlots.stories.d.ts +1 -1
  145. package/dist/stories/AlertGroup/AlertGroupWithComposable.stories.d.ts +1 -1
  146. package/dist/stories/Button/Button.settings.d.ts +1 -1
  147. package/dist/stories/Combobox/Combobox.settings.d.ts +1 -1
  148. package/dist/stories/Nav/Nav.settings.d.ts +1 -1
  149. package/dist/stories/Tab/Tab.settings.d.ts +1 -1
  150. package/dist/types/floating-ui.d.ts +1 -1
  151. package/dist/types/group.d.ts +1 -1
  152. package/dist/types/index.d.ts +2 -2
  153. package/dist/utils/DomUtilities.d.ts +1 -0
  154. package/package.json +41 -41
  155. package/src/Volver.ts +3 -3
  156. package/src/assets/icons/detailed.json +1 -1
  157. package/src/assets/icons/normal.json +1 -1
  158. package/src/assets/icons/simple.json +1 -1
  159. package/src/components/VvAccordion/VvAccordion.vue +5 -5
  160. package/src/components/VvAccordion/index.ts +2 -2
  161. package/src/components/VvAccordionGroup/VvAccordionGroup.vue +5 -5
  162. package/src/components/VvAction/VvAction.vue +1 -1
  163. package/src/components/VvAlert/VvAlert.vue +1 -1
  164. package/src/components/VvAlert/index.ts +1 -1
  165. package/src/components/VvAlertGroup/VvAlertGroup.vue +1 -1
  166. package/src/components/VvAlertGroup/index.ts +3 -3
  167. package/src/components/VvAvatarGroup/VvAvatarGroup.vue +1 -1
  168. package/src/components/VvBreadcrumb/VvBreadcrumb.vue +2 -2
  169. package/src/components/VvBreadcrumb/index.ts +1 -1
  170. package/src/components/VvButton/VvButton.vue +3 -3
  171. package/src/components/VvButton/index.ts +4 -4
  172. package/src/components/VvButtonGroup/VvButtonGroup.vue +3 -3
  173. package/src/components/VvCheckbox/VvCheckbox.vue +2 -2
  174. package/src/components/VvCheckbox/index.ts +2 -2
  175. package/src/components/VvCheckboxGroup/VvCheckboxGroup.vue +2 -2
  176. package/src/components/VvCombobox/VvCombobox.vue +9 -9
  177. package/src/components/VvCombobox/index.ts +15 -15
  178. package/src/components/VvDropdown/VvDropdown.vue +19 -19
  179. package/src/components/VvDropdown/VvDropdownAction.vue +1 -1
  180. package/src/components/VvDropdown/VvDropdownItem.vue +1 -1
  181. package/src/components/VvDropdown/VvDropdownOption.vue +1 -1
  182. package/src/components/VvDropdown/index.ts +2 -2
  183. package/src/components/VvIcon/VvIcon.vue +2 -2
  184. package/src/components/VvInputFile/VvInputFile.vue +17 -11
  185. package/src/components/VvInputFile/index.ts +7 -7
  186. package/src/components/VvInputText/VvInputPasswordAction.ts +1 -1
  187. package/src/components/VvInputText/VvInputText.vue +19 -19
  188. package/src/components/VvInputText/VvInputTextActions.ts +4 -4
  189. package/src/components/VvInputText/index.ts +2 -2
  190. package/src/components/VvNav/VvNav.vue +1 -1
  191. package/src/components/VvRadio/VvRadio.vue +1 -1
  192. package/src/components/VvRadio/index.ts +2 -2
  193. package/src/components/VvRadioGroup/VvRadioGroup.vue +2 -2
  194. package/src/components/VvSelect/VvSelect.vue +6 -6
  195. package/src/components/VvSelect/index.ts +12 -12
  196. package/src/components/VvTab/VvTab.vue +2 -2
  197. package/src/components/VvTab/index.ts +1 -1
  198. package/src/components/VvTextarea/VvTextarea.vue +1 -1
  199. package/src/components/common/HintSlot.ts +14 -14
  200. package/src/components/index.ts +1 -1
  201. package/src/composables/alert/useAlert.ts +2 -2
  202. package/src/composables/alert/{useProvideAlert.ts → useAlertProvide.ts} +2 -2
  203. package/src/composables/dropdown/useDropdownContextmenu.ts +22 -0
  204. package/src/composables/dropdown/{useProvideDropdown.ts → useDropdownProvide.ts} +9 -9
  205. package/src/composables/dropdown/useDropdownVirtualElement.ts +53 -0
  206. package/src/composables/group/{useInjectedGroupState.ts → useGroupStateInject.ts} +2 -2
  207. package/src/composables/group/{useProvideGroupState.ts → useGroupStateProvide.ts} +2 -2
  208. package/src/composables/index.ts +2 -0
  209. package/src/composables/useBlurhash.ts +2 -2
  210. package/src/composables/useOptions.ts +1 -1
  211. package/src/composables/usePersistence.ts +1 -1
  212. package/src/composables/useTextCount.ts +2 -2
  213. package/src/composables/useUniqueId.ts +2 -3
  214. package/src/constants.ts +5 -5
  215. package/src/directives/index.ts +2 -2
  216. package/src/directives/v-contextmenu.ts +21 -29
  217. package/src/directives/v-tooltip.ts +2 -2
  218. package/src/icons.ts +2 -2
  219. package/src/index.ts +1 -1
  220. package/src/props/index.ts +7 -7
  221. package/src/resolvers/unplugin.ts +5 -5
  222. package/src/stories/Accordion/Accordion.stories.ts +2 -2
  223. package/src/stories/Accordion/Accordion.test.ts +1 -1
  224. package/src/stories/Accordion/AccordionSlots.stories.ts +2 -2
  225. package/src/stories/AccordionGroup/AccordionGroup.stories.ts +2 -2
  226. package/src/stories/AccordionGroup/AccordionGroup.test.ts +1 -1
  227. package/src/stories/AccordionGroup/AccordionGroupSlots.stories.ts +3 -3
  228. package/src/stories/Alert/Alert.settings.ts +1 -1
  229. package/src/stories/Alert/Alert.stories.ts +2 -2
  230. package/src/stories/Alert/Alert.test.ts +1 -1
  231. package/src/stories/Alert/AlertModifiers.stories.ts +2 -2
  232. package/src/stories/Alert/AlertSlots.stories.ts +2 -2
  233. package/src/stories/AlertGroup/AlertGroup.stories.ts +2 -2
  234. package/src/stories/AlertGroup/AlertGroup.test.ts +3 -3
  235. package/src/stories/AlertGroup/AlertGroupPosition.stories.ts +2 -2
  236. package/src/stories/AlertGroup/AlertGroupSlots.stories.ts +2 -2
  237. package/src/stories/AlertGroup/AlertGroupWithComposable.stories.ts +2 -2
  238. package/src/stories/Avatar/Avatar.stories.ts +2 -2
  239. package/src/stories/Avatar/Avatar.test.ts +1 -1
  240. package/src/stories/Avatar/AvatarBadge.stories.ts +1 -1
  241. package/src/stories/Avatar/AvatarModifiers.stories.ts +2 -2
  242. package/src/stories/Avatar/AvatarSlots.stories.ts +2 -2
  243. package/src/stories/AvatarGroup/AvatarGroup.stories.ts +2 -2
  244. package/src/stories/AvatarGroup/AvatarGroup.test.ts +1 -1
  245. package/src/stories/AvatarGroup/AvatarGroupModifiers.stories.ts +2 -2
  246. package/src/stories/AvatarGroup/AvatarGroupSlotDefault.stories.ts +3 -3
  247. package/src/stories/Badge/Badge.stories.ts +2 -2
  248. package/src/stories/Badge/Badge.test.ts +1 -1
  249. package/src/stories/Badge/BadgeSlots.stories.ts +2 -2
  250. package/src/stories/Blurhash/BlurhashComposable.stories.ts +37 -117
  251. package/src/stories/Breadcrumb/Breadcrumb.stories.ts +2 -2
  252. package/src/stories/Breadcrumb/BreadcrumbSlots.stories.ts +5 -5
  253. package/src/stories/Button/Button.settings.ts +3 -3
  254. package/src/stories/Button/Button.stories.ts +2 -2
  255. package/src/stories/Button/Button.test.ts +1 -1
  256. package/src/stories/Button/ButtonIcon.stories.ts +2 -2
  257. package/src/stories/Button/ButtonLink.stories.ts +2 -2
  258. package/src/stories/Button/ButtonLoading.stories.ts +2 -2
  259. package/src/stories/Button/ButtonModifiers.stories.ts +2 -2
  260. package/src/stories/Button/ButtonSlots.stories.ts +3 -3
  261. package/src/stories/Button/ButtonState.stories.ts +2 -2
  262. package/src/stories/Button/ButtonToggle.stories.ts +2 -2
  263. package/src/stories/ButtonGroup/ButtonGroup.settings.ts +2 -2
  264. package/src/stories/ButtonGroup/ButtonGroup.stories.ts +2 -2
  265. package/src/stories/ButtonGroup/ButtonGroup.test.ts +1 -1
  266. package/src/stories/ButtonGroup/ButtonGroupModifiers.stories.ts +2 -2
  267. package/src/stories/ButtonGroup/ButtonGroupSlots.stories.ts +2 -2
  268. package/src/stories/ButtonGroup/ButtonGroupToggle.stories.ts +2 -2
  269. package/src/stories/Card/Card.stories.ts +2 -2
  270. package/src/stories/Card/Card.test.ts +1 -1
  271. package/src/stories/Card/CardSlots.stories.ts +2 -2
  272. package/src/stories/Checkbox/Checkbox.stories.ts +2 -2
  273. package/src/stories/Checkbox/Checkbox.test.ts +1 -1
  274. package/src/stories/Checkbox/CheckboxBinary.stories.ts +2 -2
  275. package/src/stories/Checkbox/CheckboxSlots.stories.ts +2 -2
  276. package/src/stories/CheckboxGroup/CheckboxGroup.stories.ts +2 -2
  277. package/src/stories/CheckboxGroup/CheckboxGroup.test.ts +2 -2
  278. package/src/stories/CheckboxGroup/CheckboxGroupOptions.stories.ts +2 -2
  279. package/src/stories/CheckboxGroup/CheckboxGroupSlots.stories.ts +3 -3
  280. package/src/stories/Combobox/Combobox.settings.ts +9 -9
  281. package/src/stories/Combobox/Combobox.stories.ts +2 -2
  282. package/src/stories/Combobox/Combobox.test.ts +2 -2
  283. package/src/stories/Combobox/ComboboxIconPosition.stories.ts +2 -2
  284. package/src/stories/Combobox/ComboboxMultiple.stories.ts +2 -2
  285. package/src/stories/Combobox/ComboboxOptions.stories.ts +2 -2
  286. package/src/stories/Combobox/ComboboxSlots.stories.ts +3 -3
  287. package/src/stories/Dialog/Dialog.stories.ts +2 -2
  288. package/src/stories/Dialog/Dialog.test.ts +1 -1
  289. package/src/stories/Dialog/DialogModifiers.stories.ts +2 -2
  290. package/src/stories/Dialog/DialogSlots.stories.ts +2 -2
  291. package/src/stories/Dropdown/Dropdown.settings.ts +1 -1
  292. package/src/stories/Dropdown/Dropdown.stories.ts +4 -4
  293. package/src/stories/Dropdown/Dropdown.test.ts +1 -1
  294. package/src/stories/Dropdown/DropdownContextmenuDirective.stories.ts +3 -4
  295. package/src/stories/Dropdown/DropdownMultilevel.stories.ts +4 -4
  296. package/src/stories/Dropdown/DropdownSlots.stories.ts +4 -4
  297. package/src/stories/Icon/Icon.settings.ts +1 -1
  298. package/src/stories/Icon/Icon.stories.ts +2 -2
  299. package/src/stories/Icon/IconsCollection.stories.ts +3 -3
  300. package/src/stories/InputFile/InputFile.settings.ts +1 -1
  301. package/src/stories/InputFile/InputFile.stories.ts +1 -1
  302. package/src/stories/InputFile/InputFileDropArea.stories.ts +2 -2
  303. package/src/stories/InputFile/InputFileIconPosition.stories.ts +2 -2
  304. package/src/stories/InputFile/InputFileSlots.stories.ts +2 -2
  305. package/src/stories/InputText/InputText.settings.ts +2 -2
  306. package/src/stories/InputText/InputText.stories.ts +2 -2
  307. package/src/stories/InputText/InputText.test.ts +2 -2
  308. package/src/stories/InputText/InputTextIconPosition.stories.ts +2 -2
  309. package/src/stories/InputText/InputTextLength.stories.ts +2 -2
  310. package/src/stories/InputText/InputTextMask.stories.ts +2 -2
  311. package/src/stories/InputText/InputTextMinMax.stories.ts +2 -2
  312. package/src/stories/InputText/InputTextSlots.stories.ts +2 -2
  313. package/src/stories/InputText/InputTextType.stories.ts +2 -2
  314. package/src/stories/Nav/Nav.settings.ts +1 -1
  315. package/src/stories/Nav/Nav.stories.ts +2 -2
  316. package/src/stories/Nav/Nav.test.ts +1 -1
  317. package/src/stories/Nav/NavModifiers.stories.ts +2 -2
  318. package/src/stories/Progress/Progress.stories.ts +2 -2
  319. package/src/stories/Progress/Progress.test.ts +2 -2
  320. package/src/stories/Radio/Radio.stories.ts +2 -2
  321. package/src/stories/Radio/Radio.test.ts +1 -1
  322. package/src/stories/Radio/RadioSlots.stories.ts +2 -2
  323. package/src/stories/RadioGroup/RadioGroup.stories.ts +2 -2
  324. package/src/stories/RadioGroup/RadioGroup.test.ts +2 -2
  325. package/src/stories/RadioGroup/RadioGroupOptions.stories.ts +2 -2
  326. package/src/stories/RadioGroup/RadioGroupSlots.stories.ts +3 -3
  327. package/src/stories/Select/Select.settings.ts +10 -10
  328. package/src/stories/Select/Select.stories.ts +2 -2
  329. package/src/stories/Select/Select.test.ts +1 -1
  330. package/src/stories/Select/SelectIconPosition.stories.ts +2 -2
  331. package/src/stories/Select/SelectOptions.stories.ts +2 -2
  332. package/src/stories/Select/SelectSlots.stories.ts +2 -2
  333. package/src/stories/Tab/Tab.settings.ts +1 -1
  334. package/src/stories/Tab/Tab.stories.ts +1 -1
  335. package/src/stories/Tab/Tab.test.ts +1 -1
  336. package/src/stories/Textarea/Textarea.settings.ts +1 -1
  337. package/src/stories/Textarea/Textarea.stories.ts +2 -2
  338. package/src/stories/Textarea/Textarea.test.ts +1 -1
  339. package/src/stories/Textarea/TextareaLength.stories.ts +2 -2
  340. package/src/stories/Textarea/TextareaSlots.stories.ts +2 -2
  341. package/src/stories/Textarea/TextareatIconPosition.stories.ts +2 -2
  342. package/src/stories/Tooltip/Tooltip.stories.ts +3 -3
  343. package/src/stories/Tooltip/Tooltip.test.ts +1 -1
  344. package/src/stories/Tooltip/TooltipDirective.stories.ts +3 -3
  345. package/src/test/expect.ts +3 -3
  346. package/src/test/types.d.ts +2 -2
  347. package/src/types/floating-ui.ts +1 -1
  348. package/src/types/group.ts +1 -1
  349. package/src/types/index.ts +2 -2
  350. package/src/utils/DomUtilities.ts +15 -0
  351. package/src/utils/ObjectUtilities.ts +4 -4
  352. package/src/workers/blurhash.ts +1 -1
  353. package/dist/composables/alert/{useInjectAlert.d.ts → useAlerInject.d.ts} +0 -0
  354. package/dist/composables/dropdown/{useInjectDropdown.d.ts → useDropdownInject.d.ts} +0 -0
  355. package/src/assets/icons/normal/{dulicate.svg → duplicate.svg} +0 -0
  356. package/src/composables/alert/{useInjectAlert.ts → useAlerInject.ts} +0 -0
  357. package/src/composables/dropdown/{useInjectDropdown.ts → useDropdownInject.ts} +1 -1
@@ -38,10 +38,10 @@ export declare function useAlert(): {
38
38
  horizontalFlip?: boolean | undefined;
39
39
  verticalFlip?: boolean | undefined;
40
40
  flip?: string | undefined;
41
- mode?: import("@iconify/vue").IconifyRenderMode | undefined;
41
+ mode?: import("@iconify/vue/dist/iconify.js").IconifyRenderMode | undefined;
42
42
  inline?: boolean | undefined;
43
43
  rotate?: (number | string) | undefined;
44
- onLoad?: import("@iconify/vue").IconifyIconOnLoad | undefined;
44
+ onLoad?: import("@iconify/vue/dist/iconify.js").IconifyIconOnLoad | undefined;
45
45
  svg?: string | undefined;
46
46
  modifiers?: (string | string[]) | undefined;
47
47
  } | undefined;
@@ -71,10 +71,10 @@ export declare function useAlert(): {
71
71
  horizontalFlip?: boolean | undefined;
72
72
  verticalFlip?: boolean | undefined;
73
73
  flip?: string | undefined;
74
- mode?: import("@iconify/vue").IconifyRenderMode | undefined;
74
+ mode?: import("@iconify/vue/dist/iconify.js").IconifyRenderMode | undefined;
75
75
  inline?: boolean | undefined;
76
76
  rotate?: (number | string) | undefined;
77
- onLoad?: import("@iconify/vue").IconifyIconOnLoad | undefined;
77
+ onLoad?: import("@iconify/vue/dist/iconify.js").IconifyIconOnLoad | undefined;
78
78
  svg?: string | undefined;
79
79
  modifiers?: (string | string[]) | undefined;
80
80
  } | undefined;
@@ -3,7 +3,7 @@ import type { Ref } from 'vue';
3
3
  * Share the alert group name with all its children.
4
4
  * @param {Ref<string | undefined>} name the alert group name
5
5
  */
6
- export declare function useProvideAlertGroup({ name, }: {
6
+ export declare function useAlertProvideGroup({ name, }: {
7
7
  name: Ref<string | undefined>;
8
8
  }): import("mitt").Emitter<{
9
9
  close: string;
@@ -0,0 +1,18 @@
1
+ import type VvDropdown from '@/components/VvDropdown/VvDropdown.vue';
2
+ import { type Ref } from 'vue';
3
+ export declare function useDropdownContextmenu(dropdownEl: Ref<typeof VvDropdown>, targetEl?: Ref<HTMLElement> | HTMLElement): {
4
+ x: Ref<number, number>;
5
+ y: Ref<number, number>;
6
+ getBoundingClientRect: () => {
7
+ width: number;
8
+ height: number;
9
+ x: number;
10
+ y: number;
11
+ top: number;
12
+ left: number;
13
+ right: number;
14
+ bottom: number;
15
+ };
16
+ onContextmenu: (event: MouseEvent) => void;
17
+ onScroll: (event: HTMLElementEventMap["scroll"]) => void;
18
+ };
@@ -1,11 +1,11 @@
1
1
  import { type Ref } from 'vue';
2
- import { type DropdownItemState, DropdownRole, DropdownItemRole } from '../../constants';
2
+ import { DropdownItemRole, type DropdownItemState, DropdownRole } from '../../constants';
3
3
  /**
4
4
  * Share the dropdown reference and the event bus with all its children.
5
5
  * @param {Ref<HTMLElement | null>} reference the dropdown reference
6
6
  */
7
- export declare function useProvideDropdownTrigger({ reference, id, expanded, aria, }: {
8
- reference: Ref<HTMLElement | null>;
7
+ export declare function useDropdownProvideTrigger({ reference, id, expanded, aria, }: {
8
+ reference: Ref<HTMLElement | null | undefined>;
9
9
  id: Ref<string | number>;
10
10
  expanded: Ref<boolean>;
11
11
  aria: Ref<{
@@ -19,13 +19,13 @@ export declare function useProvideDropdownTrigger({ reference, id, expanded, ari
19
19
  mouseover: Event;
20
20
  mouseleave: Event;
21
21
  }>;
22
- component: import("vue").DefineComponent<{}, void, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<globalThis.ExtractPropTypes<{}>>, {}, {}>;
22
+ component: import("vue").DefineComponent<{}, void, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
23
23
  };
24
24
  /**
25
25
  * Share the dropdown item role with all its children.
26
26
  * @param {Ref<string>} role the dropdown item role
27
27
  */
28
- export declare function useProvideDropdownItem({ role, ...others }: Omit<DropdownItemState, 'role'> & {
28
+ export declare function useDropdownProvideItem({ role, ...others }: Omit<DropdownItemState, 'role'> & {
29
29
  role: Ref<`${DropdownRole}`>;
30
30
  }): {
31
31
  itemRole: globalThis.ComputedRef<DropdownItemRole>;
@@ -34,6 +34,6 @@ export declare function useProvideDropdownItem({ role, ...others }: Omit<Dropdow
34
34
  * Share the dropdown item role with all its children.
35
35
  * @param {Ref<string>} role the dropdown item role
36
36
  */
37
- export declare function useProvideDropdownAction({ expanded, }: {
37
+ export declare function useDropdownProvideAction({ expanded, }: {
38
38
  expanded?: Ref<boolean>;
39
39
  }): void;
@@ -0,0 +1,17 @@
1
+ import type VvDropdown from '@/components/VvDropdown/VvDropdown.vue';
2
+ import { type Ref } from 'vue';
3
+ export declare function useDropdownVirtualElement(dropdownEl: Ref<typeof VvDropdown>): {
4
+ x: Ref<number, number>;
5
+ y: Ref<number, number>;
6
+ getBoundingClientRect: () => {
7
+ width: number;
8
+ height: number;
9
+ x: number;
10
+ y: number;
11
+ top: number;
12
+ left: number;
13
+ right: number;
14
+ bottom: number;
15
+ };
16
+ onScroll: (event: HTMLElementEventMap["scroll"]) => void;
17
+ };
@@ -2,7 +2,7 @@ import type { InjectionKey } from 'vue';
2
2
  /**
3
3
  * Injects a group state
4
4
  */
5
- export declare function useInjectedGroupState<GroupStateType>(groupKey: InjectionKey<GroupStateType>): {
5
+ export declare function useGroupStateInject<GroupStateType>(groupKey: InjectionKey<GroupStateType>): {
6
6
  group: GroupStateType | undefined;
7
7
  isInGroup: globalThis.ComputedRef<boolean>;
8
8
  getGroupOrLocalRef: <TProps extends object, TName extends keyof GroupStateType>(propName: TName, props: TProps, emit?: (event: string, ...args: unknown[]) => void) => GroupStateType[TName];
@@ -1,6 +1,6 @@
1
- import type { Ref, InjectionKey } from 'vue';
2
1
  import type { Emitter } from 'mitt';
2
+ import type { InjectionKey, Ref } from 'vue';
3
3
  /**
4
4
  * Share part of the state of the component with all its children.
5
5
  */
6
- export declare function useProvideGroupState<TGroupState extends Record<string, Ref<unknown> | Emitter<any>>>(key: InjectionKey<TGroupState>, groupState: TGroupState): void;
6
+ export declare function useGroupStateProvide<TGroupState extends Record<string, Ref<unknown> | Emitter<any>>>(key: InjectionKey<TGroupState>, groupState: TGroupState): void;
@@ -1,2 +1,4 @@
1
1
  export { useAlert } from './alert/useAlert';
2
+ export { useDropdownContextmenu } from './dropdown/useDropdownContextmenu';
3
+ export { useDropdownVirtualElement } from './dropdown/useDropdownVirtualElement';
2
4
  export { useBlurhash } from './useBlurhash';
@@ -1,4 +1,4 @@
1
- import { reactive, computed } from "vue";
1
+ import { reactive, computed, ref, getCurrentInstance, onMounted, onUnmounted, unref } from "vue";
2
2
  import { wrap } from "comlink";
3
3
  import Pica from "pica";
4
4
  const DEFAULT_ALERT_AUTO_CLOSE = 1e4;
@@ -79,7 +79,89 @@ function useAlert() {
79
79
  getAlerts
80
80
  };
81
81
  }
82
- const encodedJs = "IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiOwovKioKICAgKiBAbGljZW5zZQogICAqIENvcHlyaWdodCAyMDE5IEdvb2dsZSBMTEMKICAgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMAogICAqL2NvbnN0IHQ9U3ltYm9sKCJDb21saW5rLnByb3h5IiksZT1TeW1ib2woIkNvbWxpbmsuZW5kcG9pbnQiKSxyPVN5bWJvbCgiQ29tbGluay5yZWxlYXNlUHJveHkiKSxuPVN5bWJvbCgiQ29tbGluay5maW5hbGl6ZXIiKSxhPVN5bWJvbCgiQ29tbGluay50aHJvd24iKSxvPXQ9PiJvYmplY3QiPT10eXBlb2YgdCYmbnVsbCE9PXR8fCJmdW5jdGlvbiI9PXR5cGVvZiB0LHM9bmV3IE1hcChbWyJwcm94eSIse2NhbkhhbmRsZTplPT5vKGUpJiZlW3RdLHNlcmlhbGl6ZSh0KXtjb25zdHtwb3J0MTplLHBvcnQyOnJ9PW5ldyBNZXNzYWdlQ2hhbm5lbDtyZXR1cm4gaSh0LGUpLFtyLFtyXV19LGRlc2VyaWFsaXplKHQpe3JldHVybiB0LnN0YXJ0KCksbSh0LFtdLGUpO3ZhciBlfX1dLFsidGhyb3ciLHtjYW5IYW5kbGU6dD0+byh0KSYmYSBpbiB0LHNlcmlhbGl6ZSh7dmFsdWU6dH0pe2xldCBlO3JldHVybiBlPXQgaW5zdGFuY2VvZiBFcnJvcj97aXNFcnJvcjohMCx2YWx1ZTp7bWVzc2FnZTp0Lm1lc3NhZ2UsbmFtZTp0Lm5hbWUsc3RhY2s6dC5zdGFja319Ontpc0Vycm9yOiExLHZhbHVlOnR9LFtlLFtdXX0sZGVzZXJpYWxpemUodCl7aWYodC5pc0Vycm9yKXRocm93IE9iamVjdC5hc3NpZ24obmV3IEVycm9yKHQudmFsdWUubWVzc2FnZSksdC52YWx1ZSk7dGhyb3cgdC52YWx1ZX19XV0pO2Z1bmN0aW9uIGkoZSxyPWdsb2JhbFRoaXMsbz1bIioiXSl7ci5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwoZnVuY3Rpb24gcyhoKXtpZighaHx8IWguZGF0YSlyZXR1cm47aWYoIWZ1bmN0aW9uKHQsZSl7Zm9yKGNvbnN0IHIgb2YgdCl7aWYoZT09PXJ8fCIqIj09PXIpcmV0dXJuITA7aWYociBpbnN0YW5jZW9mIFJlZ0V4cCYmci50ZXN0KGUpKXJldHVybiEwfXJldHVybiExfShvLGgub3JpZ2luKSlyZXR1cm4gdm9pZCBjb25zb2xlLndhcm4oYEludmFsaWQgb3JpZ2luICcke2gub3JpZ2lufScgZm9yIGNvbWxpbmsgcHJveHlgKTtjb25zdHtpZDpjLHR5cGU6dSxwYXRoOmZ9PU9iamVjdC5hc3NpZ24oe3BhdGg6W119LGguZGF0YSksbT0oaC5kYXRhLmFyZ3VtZW50TGlzdHx8W10pLm1hcChkKTtsZXQgcDt0cnl7Y29uc3Qgcj1mLnNsaWNlKDAsLTEpLnJlZHVjZSgoKHQsZSk9PnRbZV0pLGUpLG49Zi5yZWR1Y2UoKCh0LGUpPT50W2VdKSxlKTtzd2l0Y2godSl7Y2FzZSJHRVQiOnA9bjticmVhaztjYXNlIlNFVCI6cltmLnNsaWNlKC0xKVswXV09ZChoLmRhdGEudmFsdWUpLHA9ITA7YnJlYWs7Y2FzZSJBUFBMWSI6cD1uLmFwcGx5KHIsbSk7YnJlYWs7Y2FzZSJDT05TVFJVQ1QiOnA9ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5hc3NpZ24oZSx7W3RdOiEwfSl9KG5ldyBuKC4uLm0pKTticmVhaztjYXNlIkVORFBPSU5UIjp7Y29uc3R7cG9ydDE6dCxwb3J0MjpyfT1uZXcgTWVzc2FnZUNoYW5uZWw7aShlLHIpLHA9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZy5zZXQodCxlKSx0fSh0LFt0XSl9YnJlYWs7Y2FzZSJSRUxFQVNFIjpwPXZvaWQgMDticmVhaztkZWZhdWx0OnJldHVybn19Y2F0Y2goeSl7cD17dmFsdWU6eSxbYV06MH19UHJvbWlzZS5yZXNvbHZlKHApLmNhdGNoKCh0PT4oe3ZhbHVlOnQsW2FdOjB9KSkpLnRoZW4oKHQ9Pntjb25zdFthLG9dPU0odCk7ci5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sYSkse2lkOmN9KSxvKSwiUkVMRUFTRSI9PT11JiYoci5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixzKSxsKHIpLG4gaW4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIGVbbl0mJmVbbl0oKSl9KSkuY2F0Y2goKHQ9Pntjb25zdFtlLG5dPU0oe3ZhbHVlOm5ldyBUeXBlRXJyb3IoIlVuc2VyaWFsaXphYmxlIHJldHVybiB2YWx1ZSIpLFthXTowfSk7ci5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkse2lkOmN9KSxuKX0pKX0pKSxyLnN0YXJ0JiZyLnN0YXJ0KCl9ZnVuY3Rpb24gbCh0KXsoZnVuY3Rpb24odCl7cmV0dXJuIk1lc3NhZ2VQb3J0Ij09PXQuY29uc3RydWN0b3IubmFtZX0pKHQpJiZ0LmNsb3NlKCl9ZnVuY3Rpb24gaCh0KXtpZih0KXRocm93IG5ldyBFcnJvcigiUHJveHkgaGFzIGJlZW4gcmVsZWFzZWQgYW5kIGlzIG5vdCB1c2VhYmxlIil9ZnVuY3Rpb24gYyh0KXtyZXR1cm4geSh0LHt0eXBlOiJSRUxFQVNFIn0pLnRoZW4oKCgpPT57bCh0KX0pKX1jb25zdCB1PW5ldyBXZWFrTWFwLGY9IkZpbmFsaXphdGlvblJlZ2lzdHJ5ImluIGdsb2JhbFRoaXMmJm5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSgodD0+e2NvbnN0IGU9KHUuZ2V0KHQpfHwwKS0xO3Uuc2V0KHQsZSksMD09PWUmJmModCl9KSk7ZnVuY3Rpb24gbSh0LG49W10sYT1mdW5jdGlvbigpe30pe2xldCBvPSExO2NvbnN0IHM9bmV3IFByb3h5KGEse2dldChlLGEpe2lmKGgobyksYT09PXIpcmV0dXJuKCk9PnshZnVuY3Rpb24odCl7ZiYmZi51bnJlZ2lzdGVyKHQpfShzKSxjKHQpLG89ITB9O2lmKCJ0aGVuIj09PWEpe2lmKDA9PT1uLmxlbmd0aClyZXR1cm57dGhlbjooKT0+c307Y29uc3QgZT15KHQse3R5cGU6IkdFVCIscGF0aDpuLm1hcCgodD0+dC50b1N0cmluZygpKSl9KS50aGVuKGQpO3JldHVybiBlLnRoZW4uYmluZChlKX1yZXR1cm4gbSh0LFsuLi5uLGFdKX0sc2V0KGUscixhKXtoKG8pO2NvbnN0W3MsaV09TShhKTtyZXR1cm4geSh0LHt0eXBlOiJTRVQiLHBhdGg6Wy4uLm4scl0ubWFwKCh0PT50LnRvU3RyaW5nKCkpKSx2YWx1ZTpzfSxpKS50aGVuKGQpfSxhcHBseShyLGEscyl7aChvKTtjb25zdCBpPW5bbi5sZW5ndGgtMV07aWYoaT09PWUpcmV0dXJuIHkodCx7dHlwZToiRU5EUE9JTlQifSkudGhlbihkKTtpZigiYmluZCI9PT1pKXJldHVybiBtKHQsbi5zbGljZSgwLC0xKSk7Y29uc3RbbCxjXT1wKHMpO3JldHVybiB5KHQse3R5cGU6IkFQUExZIixwYXRoOm4ubWFwKCh0PT50LnRvU3RyaW5nKCkpKSxhcmd1bWVudExpc3Q6bH0sYykudGhlbihkKX0sY29uc3RydWN0KGUscil7aChvKTtjb25zdFthLHNdPXAocik7cmV0dXJuIHkodCx7dHlwZToiQ09OU1RSVUNUIixwYXRoOm4ubWFwKCh0PT50LnRvU3RyaW5nKCkpKSxhcmd1bWVudExpc3Q6YX0scykudGhlbihkKX19KTtyZXR1cm4gZnVuY3Rpb24odCxlKXtjb25zdCByPSh1LmdldChlKXx8MCkrMTt1LnNldChlLHIpLGYmJmYucmVnaXN0ZXIodCxlLHQpfShzLHQpLHN9ZnVuY3Rpb24gcCh0KXtjb25zdCBlPXQubWFwKE0pO3JldHVybltlLm1hcCgodD0+dFswXSkpLChyPWUubWFwKCh0PT50WzFdKSksQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxyKSldO3ZhciByfWNvbnN0IGc9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gTSh0KXtmb3IoY29uc3RbZSxyXW9mIHMpaWYoci5jYW5IYW5kbGUodCkpe2NvbnN0W24sYV09ci5zZXJpYWxpemUodCk7cmV0dXJuW3t0eXBlOiJIQU5ETEVSIixuYW1lOmUsdmFsdWU6bn0sYV19cmV0dXJuW3t0eXBlOiJSQVciLHZhbHVlOnR9LGcuZ2V0KHQpfHxbXV19ZnVuY3Rpb24gZCh0KXtzd2l0Y2godC50eXBlKXtjYXNlIkhBTkRMRVIiOnJldHVybiBzLmdldCh0Lm5hbWUpLmRlc2VyaWFsaXplKHQudmFsdWUpO2Nhc2UiUkFXIjpyZXR1cm4gdC52YWx1ZX19ZnVuY3Rpb24geSh0LGUscil7cmV0dXJuIG5ldyBQcm9taXNlKChuPT57Y29uc3QgYT1uZXcgQXJyYXkoNCkuZmlsbCgwKS5tYXAoKCgpPT5NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpLnRvU3RyaW5nKDE2KSkpLmpvaW4oIi0iKTt0LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLChmdW5jdGlvbiBlKHIpe3IuZGF0YSYmci5kYXRhLmlkJiZyLmRhdGEuaWQ9PT1hJiYodC5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixlKSxuKHIuZGF0YSkpfSkpLHQuc3RhcnQmJnQuc3RhcnQoKSx0LnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oe2lkOmF9LGUpLHIpfSkpfXZhciBiPVsiMCIsIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCIjIiwiJCIsIiUiLCIqIiwiKyIsIiwiLCItIiwiLiIsIjoiLCI7IiwiPSIsIj8iLCJAIiwiWyIsIl0iLCJeIiwiXyIsInsiLCJ8IiwifSIsIn4iXSx3PXQ9PntsZXQgZT0wO2ZvcihsZXQgcj0wO3I8dC5sZW5ndGg7cisrKXtsZXQgbj10W3JdO2U9ODMqZStiLmluZGV4T2Yobil9cmV0dXJuIGV9LEU9KHQsZSk9Pnt2YXIgcj0iIjtmb3IobGV0IG49MTtuPD1lO24rKyl7bGV0IGE9TWF0aC5mbG9vcih0KS9NYXRoLnBvdyg4MyxlLW4pJTgzO3IrPWJbTWF0aC5mbG9vcihhKV19cmV0dXJuIHJ9LHY9dD0+e2xldCBlPXQvMjU1O3JldHVybiBlPD0uMDQwNDU/ZS8xMi45MjpNYXRoLnBvdygoZSsuMDU1KS8xLjA1NSwyLjQpfSxTPXQ9PntsZXQgZT1NYXRoLm1heCgwLE1hdGgubWluKDEsdCkpO3JldHVybiBlPD0uMDAzMTMwOD9NYXRoLnRydW5jKDEyLjkyKmUqMjU1Ky41KTpNYXRoLnRydW5jKDI1NSooMS4wNTUqTWF0aC5wb3coZSwuNDE2NjY2NjY2NjY2NjY2NyktLjA1NSkrLjUpfSx4PSh0LGUpPT4odD0+dDwwPy0xOjEpKHQpKk1hdGgucG93KE1hdGguYWJzKHQpLGUpLGs9Y2xhc3MgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLm5hbWU9IlZhbGlkYXRpb25FcnJvciIsdGhpcy5tZXNzYWdlPXR9fSxQPXQ9PntpZighdHx8dC5sZW5ndGg8Nil0aHJvdyBuZXcgaygiVGhlIGJsdXJoYXNoIHN0cmluZyBtdXN0IGJlIGF0IGxlYXN0IDYgY2hhcmFjdGVycyIpO2xldCBlPXcodFswXSkscj1NYXRoLmZsb29yKGUvOSkrMSxuPWUlOSsxO2lmKHQubGVuZ3RoIT09NCsyKm4qcil0aHJvdyBuZXcgayhgYmx1cmhhc2ggbGVuZ3RoIG1pc21hdGNoOiBsZW5ndGggaXMgJHt0Lmxlbmd0aH0gYnV0IGl0IHNob3VsZCBiZSAkezQrMipuKnJ9YCl9LEE9dD0+e2xldCBlPXQ+PjgmMjU1LHI9MjU1JnQ7cmV0dXJuW3YodD4+MTYpLHYoZSksdihyKV19LFQ9KHQsZSk9PntsZXQgcj1NYXRoLmZsb29yKHQvMzYxKSxuPU1hdGguZmxvb3IodC8xOSklMTksYT10JTE5O3JldHVyblt4KChyLTkpLzksMikqZSx4KChuLTkpLzksMikqZSx4KChhLTkpLzksMikqZV19LEw9KHQsZSxyLG4pPT57bGV0IGE9MCxvPTAscz0wLGk9NCplO2ZvcihsZXQgaD0wO2g8ZTtoKyspe2xldCBlPTQqaDtmb3IobGV0IGw9MDtsPHI7bCsrKXtsZXQgcj1lK2wqaSxjPW4oaCxsKTthKz1jKnYodFtyXSksbys9Yyp2KHRbcisxXSkscys9Yyp2KHRbcisyXSl9fWxldCBsPTEvKGUqcik7cmV0dXJuW2EqbCxvKmwscypsXX0sUj0odCxlLHIsbixhKT0+e2lmKG48MXx8bj45fHxhPDF8fGE+OSl0aHJvdyBuZXcgaygiQmx1ckhhc2ggbXVzdCBoYXZlIGJldHdlZW4gMSBhbmQgOSBjb21wb25lbnRzIik7aWYoZSpyKjQhPT10Lmxlbmd0aCl0aHJvdyBuZXcgaygiV2lkdGggYW5kIGhlaWdodCBtdXN0IG1hdGNoIHRoZSBwaXhlbHMgYXJyYXkiKTtsZXQgbz1bXTtmb3IobGV0IGM9MDtjPGE7YysrKWZvcihsZXQgYT0wO2E8bjthKyspe2xldCBuPTA9PWEmJjA9PWM/MToyLHM9TCh0LGUsciwoKHQsbyk9Pm4qTWF0aC5jb3MoTWF0aC5QSSphKnQvZSkqTWF0aC5jb3MoTWF0aC5QSSpjKm8vcikpKTtvLnB1c2gocyl9bGV0IHMsaT1vWzBdLGw9by5zbGljZSgxKSxoPSIiO2lmKGgrPUUobi0xKzkqKGEtMSksMSksbC5sZW5ndGg+MCl7bGV0IHQ9TWF0aC5tYXgoLi4ubC5tYXAoKHQ9Pk1hdGgubWF4KC4uLnQpKSkpLGU9TWF0aC5mbG9vcihNYXRoLm1heCgwLE1hdGgubWluKDgyLE1hdGguZmxvb3IoMTY2KnQtLjUpKSkpO3M9KGUrMSkvMTY2LGgrPUUoZSwxKX1lbHNlIHM9MSxoKz1FKDAsMSk7cmV0dXJuIGgrPUUoKHQ9PihTKHRbMF0pPDwxNikrKFModFsxXSk8PDgpK1ModFsyXSkpKGkpLDQpLGwuZm9yRWFjaCgodD0+e2grPUUoKCh0LGUpPT4xOSpNYXRoLmZsb29yKE1hdGgubWF4KDAsTWF0aC5taW4oMTgsTWF0aC5mbG9vcig5KngodFswXS9lLC41KSs5LjUpKSkpKjE5KzE5Kk1hdGguZmxvb3IoTWF0aC5tYXgoMCxNYXRoLm1pbigxOCxNYXRoLmZsb29yKDkqeCh0WzFdL2UsLjUpKzkuNSkpKSkrTWF0aC5mbG9vcihNYXRoLm1heCgwLE1hdGgubWluKDE4LE1hdGguZmxvb3IoOSp4KHRbMl0vZSwuNSkrOS41KSkpKSkodCxzKSwyKX0pKSxofTtpKHtWYWxpZGF0aW9uRXJyb3I6ayxlbmNvZGU6UixkZWNvZGU6KHQsZSxyLG4pPT57UCh0KSxufD0xO2xldCBhPXcodFswXSksbz1NYXRoLmZsb29yKGEvOSkrMSxzPWElOSsxLGk9KHcodFsxXSkrMSkvMTY2LGw9bmV3IEFycmF5KHMqbyk7Zm9yKGxldCB1PTA7dTxsLmxlbmd0aDt1KyspaWYoMD09PXUpe2xldCBlPXcodC5zdWJzdHJpbmcoMiw2KSk7bFt1XT1BKGUpfWVsc2V7bGV0IGU9dyh0LnN1YnN0cmluZyg0KzIqdSw2KzIqdSkpO2xbdV09VChlLGkqbil9bGV0IGg9NCplLGM9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGgqcik7Zm9yKGxldCB1PTA7dTxyO3UrKylmb3IobGV0IHQ9MDt0PGU7dCsrKXtsZXQgbj0wLGE9MCxpPTA7Zm9yKGxldCBoPTA7aDxvO2grKylmb3IobGV0IG89MDtvPHM7bysrKXtsZXQgYz1NYXRoLmNvcyhNYXRoLlBJKnQqby9lKSpNYXRoLmNvcyhNYXRoLlBJKnUqaC9yKSxmPWxbbytoKnNdO24rPWZbMF0qYyxhKz1mWzFdKmMsaSs9ZlsyXSpjfWxldCBmPVMobiksbT1TKGEpLHA9UyhpKTtjWzQqdCswK3UqaF09ZixjWzQqdCsxK3UqaF09bSxjWzQqdCsyK3UqaF09cCxjWzQqdCszK3UqaF09MjU1fXJldHVybiBjfSxpc0JsdXJoYXNoVmFsaWQ6dD0+e3RyeXtQKHQpfWNhdGNoKGUpe3JldHVybntyZXN1bHQ6ITEsZXJyb3JSZWFzb246ZS5tZXNzYWdlfX1yZXR1cm57cmVzdWx0OiEwfX19KX0oKTsK";
82
+ function findScrollContainer(element) {
83
+ if (!element) {
84
+ return void 0;
85
+ }
86
+ let parent = element.parentElement;
87
+ while (parent) {
88
+ const { overflow } = window.getComputedStyle(parent);
89
+ if (overflow.split(" ").every((item) => item === "auto" || item === "scroll")) {
90
+ return parent;
91
+ }
92
+ parent = parent.parentElement;
93
+ }
94
+ return document.documentElement;
95
+ }
96
+ function useDropdownVirtualElement(dropdownEl) {
97
+ const x = ref(0);
98
+ const y = ref(0);
99
+ const scrollContainerEl = ref();
100
+ let scrollXDelta = 0;
101
+ let scrollYDelta = 0;
102
+ let lastScrollTop = 0;
103
+ let lastScrollLeft = 0;
104
+ const onScroll = (event) => {
105
+ const scrollEl = event.target;
106
+ scrollXDelta = scrollEl.scrollLeft - lastScrollLeft;
107
+ scrollYDelta = scrollEl.scrollTop - lastScrollTop;
108
+ y.value = y.value - scrollYDelta;
109
+ x.value = x.value - scrollXDelta;
110
+ lastScrollLeft = scrollEl.scrollLeft;
111
+ lastScrollTop = scrollEl.scrollTop;
112
+ };
113
+ const getBoundingClientRect = () => ({
114
+ width: 0,
115
+ height: 0,
116
+ x: x.value,
117
+ y: y.value,
118
+ top: y.value,
119
+ left: x.value,
120
+ right: x.value,
121
+ bottom: y.value
122
+ });
123
+ if (getCurrentInstance()) {
124
+ onMounted(() => {
125
+ if (dropdownEl.value) {
126
+ dropdownEl.value.init({
127
+ getBoundingClientRect
128
+ });
129
+ scrollContainerEl.value = findScrollContainer(dropdownEl.value.$el);
130
+ if (scrollContainerEl.value) {
131
+ scrollContainerEl.value.addEventListener("scroll", onScroll);
132
+ }
133
+ }
134
+ });
135
+ onUnmounted(() => {
136
+ if (scrollContainerEl.value) {
137
+ scrollContainerEl.value.removeEventListener("scroll", onScroll);
138
+ }
139
+ });
140
+ }
141
+ return { x, y, getBoundingClientRect, onScroll };
142
+ }
143
+ function useDropdownContextmenu(dropdownEl, targetEl) {
144
+ const { x, y, getBoundingClientRect, onScroll } = useDropdownVirtualElement(dropdownEl);
145
+ const onContextmenu = (event) => {
146
+ x.value = event.clientX;
147
+ y.value = event.clientY;
148
+ event.preventDefault();
149
+ dropdownEl.value.show();
150
+ };
151
+ const target = computed(() => unref(targetEl));
152
+ if (target && getCurrentInstance()) {
153
+ onMounted(() => {
154
+ var _a;
155
+ (_a = target.value) == null ? void 0 : _a.addEventListener("contextmenu", onContextmenu, false);
156
+ });
157
+ onUnmounted(() => {
158
+ var _a;
159
+ (_a = target.value) == null ? void 0 : _a.removeEventListener("contextmenu", onContextmenu);
160
+ });
161
+ }
162
+ return { x, y, getBoundingClientRect, onContextmenu, onScroll };
163
+ }
164
+ const encodedJs = "IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciB0PVsiMCIsIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCIjIiwiJCIsIiUiLCIqIiwiKyIsIiwiLCItIiwiLiIsIjoiLCI7IiwiPSIsIj8iLCJAIiwiWyIsIl0iLCJeIiwiXyIsInsiLCJ8IiwifSIsIn4iXSxlPWU9PntsZXQgbj0wO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKXtsZXQgYT1lW3JdO249ODMqbit0LmluZGV4T2YoYSl9cmV0dXJuIG59LG49KGUsbik9Pnt2YXIgcj0iIjtmb3IobGV0IGE9MTthPD1uO2ErKyl7bGV0IG89TWF0aC5mbG9vcihlKS9NYXRoLnBvdyg4MyxuLWEpJTgzO3IrPXRbTWF0aC5mbG9vcihvKV19cmV0dXJuIHJ9LHI9dD0+e2xldCBlPXQvMjU1O3JldHVybiBlPD0uMDQwNDU/ZS8xMi45MjpNYXRoLnBvdygoZSsuMDU1KS8xLjA1NSwyLjQpfSxhPXQ9PntsZXQgZT1NYXRoLm1heCgwLE1hdGgubWluKDEsdCkpO3JldHVybiBlPD0uMDAzMTMwOD9NYXRoLnRydW5jKDEyLjkyKmUqMjU1Ky41KTpNYXRoLnRydW5jKDI1NSooMS4wNTUqTWF0aC5wb3coZSwuNDE2NjY2NjY2NjY2NjY2NyktLjA1NSkrLjUpfSxvPSh0LGUpPT4odD0+dDwwPy0xOjEpKHQpKk1hdGgucG93KE1hdGguYWJzKHQpLGUpLHM9Y2xhc3MgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLm5hbWU9IlZhbGlkYXRpb25FcnJvciIsdGhpcy5tZXNzYWdlPXR9fSxpPXQ9PntpZighdHx8dC5sZW5ndGg8Nil0aHJvdyBuZXcgcygiVGhlIGJsdXJoYXNoIHN0cmluZyBtdXN0IGJlIGF0IGxlYXN0IDYgY2hhcmFjdGVycyIpO2xldCBuPWUodFswXSkscj1NYXRoLmZsb29yKG4vOSkrMSxhPW4lOSsxO2lmKHQubGVuZ3RoIT09NCsyKmEqcil0aHJvdyBuZXcgcyhgYmx1cmhhc2ggbGVuZ3RoIG1pc21hdGNoOiBsZW5ndGggaXMgJHt0Lmxlbmd0aH0gYnV0IGl0IHNob3VsZCBiZSAkezQrMiphKnJ9YCl9LGw9dD0+e2xldCBlPXQ+PjgmMjU1LG49MjU1JnQ7cmV0dXJuW3IodD4+MTYpLHIoZSkscihuKV19LGM9KHQsZSk9PntsZXQgbj1NYXRoLmZsb29yKHQvMzYxKSxyPU1hdGguZmxvb3IodC8xOSklMTksYT10JTE5O3JldHVybltvKChuLTkpLzksMikqZSxvKChyLTkpLzksMikqZSxvKChhLTkpLzksMikqZV19LGg9KHQsbixyLG8pPT57aSh0KSxvfD0xO2xldCBzPWUodFswXSksaD1NYXRoLmZsb29yKHMvOSkrMSx1PXMlOSsxLGY9KGUodFsxXSkrMSkvMTY2LHA9bmV3IEFycmF5KHUqaCk7Zm9yKGxldCBhPTA7YTxwLmxlbmd0aDthKyspaWYoMD09PWEpe2xldCBuPWUodC5zdWJzdHJpbmcoMiw2KSk7cFthXT1sKG4pfWVsc2V7bGV0IG49ZSh0LnN1YnN0cmluZyg0KzIqYSw2KzIqYSkpO3BbYV09YyhuLGYqbyl9bGV0IG09NCpuLGc9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KG0qcik7Zm9yKGxldCBlPTA7ZTxyO2UrKylmb3IobGV0IHQ9MDt0PG47dCsrKXtsZXQgbz0wLHM9MCxpPTA7Zm9yKGxldCBhPTA7YTxoO2ErKylmb3IobGV0IGw9MDtsPHU7bCsrKXtsZXQgYz1NYXRoLmNvcyhNYXRoLlBJKnQqbC9uKSpNYXRoLmNvcyhNYXRoLlBJKmUqYS9yKSxoPXBbbCthKnVdO28rPWhbMF0qYyxzKz1oWzFdKmMsaSs9aFsyXSpjfWxldCBsPWEobyksYz1hKHMpLGY9YShpKTtnWzQqdCswK2UqbV09bCxnWzQqdCsxK2UqbV09YyxnWzQqdCsyK2UqbV09ZixnWzQqdCszK2UqbV09MjU1fXJldHVybiBnfSx1PSh0LGUsbixhKT0+e2xldCBvPTAscz0wLGk9MCxsPTQqZTtmb3IobGV0IGg9MDtoPGU7aCsrKXtsZXQgZT00Kmg7Zm9yKGxldCBjPTA7YzxuO2MrKyl7bGV0IG49ZStjKmwsdT1hKGgsYyk7bys9dSpyKHRbbl0pLHMrPXUqcih0W24rMV0pLGkrPXUqcih0W24rMl0pfX1sZXQgYz0xLyhlKm4pO3JldHVybltvKmMscypjLGkqY119LGY9KHQsZSxyLGksbCk9PntpZihpPDF8fGk+OXx8bDwxfHxsPjkpdGhyb3cgbmV3IHMoIkJsdXJIYXNoIG11c3QgaGF2ZSBiZXR3ZWVuIDEgYW5kIDkgY29tcG9uZW50cyIpO2lmKGUqcio0IT09dC5sZW5ndGgpdGhyb3cgbmV3IHMoIldpZHRoIGFuZCBoZWlnaHQgbXVzdCBtYXRjaCB0aGUgcGl4ZWxzIGFycmF5Iik7bGV0IGM9W107Zm9yKGxldCBuPTA7bjxsO24rKylmb3IobGV0IGE9MDthPGk7YSsrKXtsZXQgbz0wPT1hJiYwPT1uPzE6MixzPXUodCxlLHIsKCh0LHMpPT5vKk1hdGguY29zKE1hdGguUEkqYSp0L2UpKk1hdGguY29zKE1hdGguUEkqbipzL3IpKSk7Yy5wdXNoKHMpfWxldCBoLGY9Y1swXSxwPWMuc2xpY2UoMSksbT0iIjtpZihtKz1uKGktMSs5KihsLTEpLDEpLHAubGVuZ3RoPjApe2xldCB0PU1hdGgubWF4KC4uLnAubWFwKCh0PT5NYXRoLm1heCguLi50KSkpKSxlPU1hdGguZmxvb3IoTWF0aC5tYXgoMCxNYXRoLm1pbig4MixNYXRoLmZsb29yKDE2Nip0LS41KSkpKTtoPShlKzEpLzE2NixtKz1uKGUsMSl9ZWxzZSBoPTEsbSs9bigwLDEpO3JldHVybiBtKz1uKCh0PT4oYSh0WzBdKTw8MTYpKyhhKHRbMV0pPDw4KSthKHRbMl0pKShmKSw0KSxwLmZvckVhY2goKHQ9PnttKz1uKCgodCxlKT0+MTkqTWF0aC5mbG9vcihNYXRoLm1heCgwLE1hdGgubWluKDE4LE1hdGguZmxvb3IoOSpvKHRbMF0vZSwuNSkrOS41KSkpKSoxOSsxOSpNYXRoLmZsb29yKE1hdGgubWF4KDAsTWF0aC5taW4oMTgsTWF0aC5mbG9vcig5Km8odFsxXS9lLC41KSs5LjUpKSkpK01hdGguZmxvb3IoTWF0aC5tYXgoMCxNYXRoLm1pbigxOCxNYXRoLmZsb29yKDkqbyh0WzJdL2UsLjUpKzkuNSkpKSkpKHQsaCksMil9KSksbX07Ci8qKgogICAqIEBsaWNlbnNlCiAgICogQ29weXJpZ2h0IDIwMTkgR29vZ2xlIExMQwogICAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wCiAgICovCmNvbnN0IHA9U3ltYm9sKCJDb21saW5rLnByb3h5IiksbT1TeW1ib2woIkNvbWxpbmsuZW5kcG9pbnQiKSxnPVN5bWJvbCgiQ29tbGluay5yZWxlYXNlUHJveHkiKSxNPVN5bWJvbCgiQ29tbGluay5maW5hbGl6ZXIiKSxkPVN5bWJvbCgiQ29tbGluay50aHJvd24iKSx5PXQ9PiJvYmplY3QiPT10eXBlb2YgdCYmbnVsbCE9PXR8fCJmdW5jdGlvbiI9PXR5cGVvZiB0LHc9bmV3IE1hcChbWyJwcm94eSIse2NhbkhhbmRsZTp0PT55KHQpJiZ0W3BdLHNlcmlhbGl6ZSh0KXtjb25zdHtwb3J0MTplLHBvcnQyOm59PW5ldyBNZXNzYWdlQ2hhbm5lbDtyZXR1cm4gYih0LGUpLFtuLFtuXV19LGRlc2VyaWFsaXplOnQ9Pih0LnN0YXJ0KCksZnVuY3Rpb24odCxlKXtjb25zdCBuPW5ldyBNYXA7cmV0dXJuIHQuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsKGZ1bmN0aW9uKHQpe2NvbnN0e2RhdGE6ZX09dDtpZighZXx8IWUuaWQpcmV0dXJuO2NvbnN0IHI9bi5nZXQoZS5pZCk7aWYocil0cnl7cihlKX1maW5hbGx5e24uZGVsZXRlKGUuaWQpfX0pKSxQKHQsbixbXSxlKX0odCkpfV0sWyJ0aHJvdyIse2NhbkhhbmRsZTp0PT55KHQpJiZkIGluIHQsc2VyaWFsaXplKHt2YWx1ZTp0fSl7bGV0IGU7cmV0dXJuIGU9dCBpbnN0YW5jZW9mIEVycm9yP3tpc0Vycm9yOiEwLHZhbHVlOnttZXNzYWdlOnQubWVzc2FnZSxuYW1lOnQubmFtZSxzdGFjazp0LnN0YWNrfX06e2lzRXJyb3I6ITEsdmFsdWU6dH0sW2UsW11dfSxkZXNlcmlhbGl6ZSh0KXtpZih0LmlzRXJyb3IpdGhyb3cgT2JqZWN0LmFzc2lnbihuZXcgRXJyb3IodC52YWx1ZS5tZXNzYWdlKSx0LnZhbHVlKTt0aHJvdyB0LnZhbHVlfX1dXSk7ZnVuY3Rpb24gYih0LGU9Z2xvYmFsVGhpcyxuPVsiKiJdKXtlLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLChmdW5jdGlvbiByKGEpe2lmKCFhfHwhYS5kYXRhKXJldHVybjtpZighZnVuY3Rpb24odCxlKXtmb3IoY29uc3QgbiBvZiB0KXtpZihlPT09bnx8IioiPT09bilyZXR1cm4hMDtpZihuIGluc3RhbmNlb2YgUmVnRXhwJiZuLnRlc3QoZSkpcmV0dXJuITB9cmV0dXJuITF9KG4sYS5vcmlnaW4pKXJldHVybiB2b2lkIGNvbnNvbGUud2FybihgSW52YWxpZCBvcmlnaW4gJyR7YS5vcmlnaW59JyBmb3IgY29tbGluayBwcm94eWApO2NvbnN0e2lkOm8sdHlwZTpzLHBhdGg6aX09T2JqZWN0LmFzc2lnbih7cGF0aDpbXX0sYS5kYXRhKSxsPShhLmRhdGEuYXJndW1lbnRMaXN0fHxbXSkubWFwKEwpO2xldCBjO3RyeXtjb25zdCBlPWkuc2xpY2UoMCwtMSkucmVkdWNlKCgodCxlKT0+dFtlXSksdCksbj1pLnJlZHVjZSgoKHQsZSk9PnRbZV0pLHQpO3N3aXRjaChzKXtjYXNlIkdFVCI6Yz1uO2JyZWFrO2Nhc2UiU0VUIjplW2kuc2xpY2UoLTEpWzBdXT1MKGEuZGF0YS52YWx1ZSksYz0hMDticmVhaztjYXNlIkFQUExZIjpjPW4uYXBwbHkoZSxsKTticmVhaztjYXNlIkNPTlNUUlVDVCI6Yz1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmFzc2lnbih0LHtbcF06ITB9KX0obmV3IG4oLi4ubCkpO2JyZWFrO2Nhc2UiRU5EUE9JTlQiOntjb25zdHtwb3J0MTplLHBvcnQyOm59PW5ldyBNZXNzYWdlQ2hhbm5lbDtiKHQsbiksYz1mdW5jdGlvbih0LGUpe3JldHVybiBULnNldCh0LGUpLHR9KGUsW2VdKX1icmVhaztjYXNlIlJFTEVBU0UiOmM9dm9pZCAwO2JyZWFrO2RlZmF1bHQ6cmV0dXJufX1jYXRjaChoKXtjPXt2YWx1ZTpoLFtkXTowfX1Qcm9taXNlLnJlc29sdmUoYykuY2F0Y2goKHQ9Pih7dmFsdWU6dCxbZF06MH0pKSkudGhlbigobj0+e2NvbnN0W2EsaV09UihuKTtlLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxhKSx7aWQ6b30pLGkpLCJSRUxFQVNFIj09PXMmJihlLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHIpLEUoZSksTSBpbiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgdFtNXSYmdFtNXSgpKX0pKS5jYXRjaCgodD0+e2NvbnN0W24scl09Uih7dmFsdWU6bmV3IFR5cGVFcnJvcigiVW5zZXJpYWxpemFibGUgcmV0dXJuIHZhbHVlIiksW2RdOjB9KTtlLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7aWQ6b30pLHIpfSkpfSkpLGUuc3RhcnQmJmUuc3RhcnQoKX1mdW5jdGlvbiBFKHQpeyhmdW5jdGlvbih0KXtyZXR1cm4iTWVzc2FnZVBvcnQiPT09dC5jb25zdHJ1Y3Rvci5uYW1lfSkodCkmJnQuY2xvc2UoKX1mdW5jdGlvbiB2KHQpe2lmKHQpdGhyb3cgbmV3IEVycm9yKCJQcm94eSBoYXMgYmVlbiByZWxlYXNlZCBhbmQgaXMgbm90IHVzZWFibGUiKX1mdW5jdGlvbiBTKHQpe3JldHVybiBPKHQsbmV3IE1hcCx7dHlwZToiUkVMRUFTRSJ9KS50aGVuKCgoKT0+e0UodCl9KSl9Y29uc3QgeD1uZXcgV2Vha01hcCxrPSJGaW5hbGl6YXRpb25SZWdpc3RyeSJpbiBnbG9iYWxUaGlzJiZuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoKHQ9Pntjb25zdCBlPSh4LmdldCh0KXx8MCktMTt4LnNldCh0LGUpLDA9PT1lJiZTKHQpfSkpO2Z1bmN0aW9uIFAodCxlLG49W10scj1mdW5jdGlvbigpe30pe2xldCBhPSExO2NvbnN0IG89bmV3IFByb3h5KHIse2dldChyLHMpe2lmKHYoYSkscz09PWcpcmV0dXJuKCk9PnshZnVuY3Rpb24odCl7ayYmay51bnJlZ2lzdGVyKHQpfShvKSxTKHQpLGUuY2xlYXIoKSxhPSEwfTtpZigidGhlbiI9PT1zKXtpZigwPT09bi5sZW5ndGgpcmV0dXJue3RoZW46KCk9Pm99O2NvbnN0IHI9Tyh0LGUse3R5cGU6IkdFVCIscGF0aDpuLm1hcCgodD0+dC50b1N0cmluZygpKSl9KS50aGVuKEwpO3JldHVybiByLnRoZW4uYmluZChyKX1yZXR1cm4gUCh0LGUsWy4uLm4sc10pfSxzZXQocixvLHMpe3YoYSk7Y29uc3RbaSxsXT1SKHMpO3JldHVybiBPKHQsZSx7dHlwZToiU0VUIixwYXRoOlsuLi5uLG9dLm1hcCgodD0+dC50b1N0cmluZygpKSksdmFsdWU6aX0sbCkudGhlbihMKX0sYXBwbHkocixvLHMpe3YoYSk7Y29uc3QgaT1uW24ubGVuZ3RoLTFdO2lmKGk9PT1tKXJldHVybiBPKHQsZSx7dHlwZToiRU5EUE9JTlQifSkudGhlbihMKTtpZigiYmluZCI9PT1pKXJldHVybiBQKHQsZSxuLnNsaWNlKDAsLTEpKTtjb25zdFtsLGNdPUEocyk7cmV0dXJuIE8odCxlLHt0eXBlOiJBUFBMWSIscGF0aDpuLm1hcCgodD0+dC50b1N0cmluZygpKSksYXJndW1lbnRMaXN0Omx9LGMpLnRoZW4oTCl9LGNvbnN0cnVjdChyLG8pe3YoYSk7Y29uc3RbcyxpXT1BKG8pO3JldHVybiBPKHQsZSx7dHlwZToiQ09OU1RSVUNUIixwYXRoOm4ubWFwKCh0PT50LnRvU3RyaW5nKCkpKSxhcmd1bWVudExpc3Q6c30saSkudGhlbihMKX19KTtyZXR1cm4gZnVuY3Rpb24odCxlKXtjb25zdCBuPSh4LmdldChlKXx8MCkrMTt4LnNldChlLG4pLGsmJmsucmVnaXN0ZXIodCxlLHQpfShvLHQpLG99ZnVuY3Rpb24gQSh0KXtjb25zdCBlPXQubWFwKFIpO3JldHVybltlLm1hcCgodD0+dFswXSkpLChuPWUubWFwKCh0PT50WzFdKSksQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxuKSldO3ZhciBufWNvbnN0IFQ9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gUih0KXtmb3IoY29uc3RbZSxuXW9mIHcpaWYobi5jYW5IYW5kbGUodCkpe2NvbnN0W3IsYV09bi5zZXJpYWxpemUodCk7cmV0dXJuW3t0eXBlOiJIQU5ETEVSIixuYW1lOmUsdmFsdWU6cn0sYV19cmV0dXJuW3t0eXBlOiJSQVciLHZhbHVlOnR9LFQuZ2V0KHQpfHxbXV19ZnVuY3Rpb24gTCh0KXtzd2l0Y2godC50eXBlKXtjYXNlIkhBTkRMRVIiOnJldHVybiB3LmdldCh0Lm5hbWUpLmRlc2VyaWFsaXplKHQudmFsdWUpO2Nhc2UiUkFXIjpyZXR1cm4gdC52YWx1ZX19ZnVuY3Rpb24gTyh0LGUsbixyKXtyZXR1cm4gbmV3IFByb21pc2UoKGE9Pntjb25zdCBvPW5ldyBBcnJheSg0KS5maWxsKDApLm1hcCgoKCk9Pk1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikudG9TdHJpbmcoMTYpKSkuam9pbigiLSIpO2Uuc2V0KG8sYSksdC5zdGFydCYmdC5zdGFydCgpLHQucG9zdE1lc3NhZ2UoT2JqZWN0LmFzc2lnbih7aWQ6b30sbikscil9KSl9Yih7VmFsaWRhdGlvbkVycm9yOnMsZW5jb2RlOmYsZGVjb2RlOmgsaXNCbHVyaGFzaFZhbGlkOnQ9Pnt0cnl7aSh0KX1jYXRjaChlKXtyZXR1cm57cmVzdWx0OiExLGVycm9yUmVhc29uOmUubWVzc2FnZX19cmV0dXJue3Jlc3VsdDohMH19fSl9KCk7Cg==";
83
165
  const decodeBase64 = (base64) => Uint8Array.from(atob(base64), (c) => c.charCodeAt(0));
84
166
  const blob = typeof self !== "undefined" && self.Blob && new Blob([decodeBase64(encodedJs)], { type: "text/javascript;charset=utf-8" });
85
167
  function WorkerWrapper(options) {
@@ -165,5 +247,7 @@ function useBlurhash() {
165
247
  }
166
248
  export {
167
249
  useAlert,
168
- useBlurhash
250
+ useBlurhash,
251
+ useDropdownContextmenu,
252
+ useDropdownVirtualElement
169
253
  };
@@ -1 +1 @@
1
- !function(i,d){"object"==typeof exports&&"undefined"!=typeof module?d(exports,require("vue"),require("comlink"),require("pica")):"function"==typeof define&&define.amd?define(["exports","vue","comlink","pica"],d):d((i="undefined"!=typeof globalThis?globalThis:i||self).composables={},i.vue,i.comlink,i.Pica)}(this,(function(i,d,l,b){"use strict";const c="default",s="information",o=new Map([["success","check-circle"],["info",s],["warning","warning"],["danger","error"]]),m=d.reactive(new Map([[c,new Map]]));const K="IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiOwovKioKICAgKiBAbGljZW5zZQogICAqIENvcHlyaWdodCAyMDE5IEdvb2dsZSBMTEMKICAgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMAogICAqL2NvbnN0IHQ9U3ltYm9sKCJDb21saW5rLnByb3h5IiksZT1TeW1ib2woIkNvbWxpbmsuZW5kcG9pbnQiKSxyPVN5bWJvbCgiQ29tbGluay5yZWxlYXNlUHJveHkiKSxuPVN5bWJvbCgiQ29tbGluay5maW5hbGl6ZXIiKSxhPVN5bWJvbCgiQ29tbGluay50aHJvd24iKSxvPXQ9PiJvYmplY3QiPT10eXBlb2YgdCYmbnVsbCE9PXR8fCJmdW5jdGlvbiI9PXR5cGVvZiB0LHM9bmV3IE1hcChbWyJwcm94eSIse2NhbkhhbmRsZTplPT5vKGUpJiZlW3RdLHNlcmlhbGl6ZSh0KXtjb25zdHtwb3J0MTplLHBvcnQyOnJ9PW5ldyBNZXNzYWdlQ2hhbm5lbDtyZXR1cm4gaSh0LGUpLFtyLFtyXV19LGRlc2VyaWFsaXplKHQpe3JldHVybiB0LnN0YXJ0KCksbSh0LFtdLGUpO3ZhciBlfX1dLFsidGhyb3ciLHtjYW5IYW5kbGU6dD0+byh0KSYmYSBpbiB0LHNlcmlhbGl6ZSh7dmFsdWU6dH0pe2xldCBlO3JldHVybiBlPXQgaW5zdGFuY2VvZiBFcnJvcj97aXNFcnJvcjohMCx2YWx1ZTp7bWVzc2FnZTp0Lm1lc3NhZ2UsbmFtZTp0Lm5hbWUsc3RhY2s6dC5zdGFja319Ontpc0Vycm9yOiExLHZhbHVlOnR9LFtlLFtdXX0sZGVzZXJpYWxpemUodCl7aWYodC5pc0Vycm9yKXRocm93IE9iamVjdC5hc3NpZ24obmV3IEVycm9yKHQudmFsdWUubWVzc2FnZSksdC52YWx1ZSk7dGhyb3cgdC52YWx1ZX19XV0pO2Z1bmN0aW9uIGkoZSxyPWdsb2JhbFRoaXMsbz1bIioiXSl7ci5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwoZnVuY3Rpb24gcyhoKXtpZighaHx8IWguZGF0YSlyZXR1cm47aWYoIWZ1bmN0aW9uKHQsZSl7Zm9yKGNvbnN0IHIgb2YgdCl7aWYoZT09PXJ8fCIqIj09PXIpcmV0dXJuITA7aWYociBpbnN0YW5jZW9mIFJlZ0V4cCYmci50ZXN0KGUpKXJldHVybiEwfXJldHVybiExfShvLGgub3JpZ2luKSlyZXR1cm4gdm9pZCBjb25zb2xlLndhcm4oYEludmFsaWQgb3JpZ2luICcke2gub3JpZ2lufScgZm9yIGNvbWxpbmsgcHJveHlgKTtjb25zdHtpZDpjLHR5cGU6dSxwYXRoOmZ9PU9iamVjdC5hc3NpZ24oe3BhdGg6W119LGguZGF0YSksbT0oaC5kYXRhLmFyZ3VtZW50TGlzdHx8W10pLm1hcChkKTtsZXQgcDt0cnl7Y29uc3Qgcj1mLnNsaWNlKDAsLTEpLnJlZHVjZSgoKHQsZSk9PnRbZV0pLGUpLG49Zi5yZWR1Y2UoKCh0LGUpPT50W2VdKSxlKTtzd2l0Y2godSl7Y2FzZSJHRVQiOnA9bjticmVhaztjYXNlIlNFVCI6cltmLnNsaWNlKC0xKVswXV09ZChoLmRhdGEudmFsdWUpLHA9ITA7YnJlYWs7Y2FzZSJBUFBMWSI6cD1uLmFwcGx5KHIsbSk7YnJlYWs7Y2FzZSJDT05TVFJVQ1QiOnA9ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5hc3NpZ24oZSx7W3RdOiEwfSl9KG5ldyBuKC4uLm0pKTticmVhaztjYXNlIkVORFBPSU5UIjp7Y29uc3R7cG9ydDE6dCxwb3J0MjpyfT1uZXcgTWVzc2FnZUNoYW5uZWw7aShlLHIpLHA9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZy5zZXQodCxlKSx0fSh0LFt0XSl9YnJlYWs7Y2FzZSJSRUxFQVNFIjpwPXZvaWQgMDticmVhaztkZWZhdWx0OnJldHVybn19Y2F0Y2goeSl7cD17dmFsdWU6eSxbYV06MH19UHJvbWlzZS5yZXNvbHZlKHApLmNhdGNoKCh0PT4oe3ZhbHVlOnQsW2FdOjB9KSkpLnRoZW4oKHQ9Pntjb25zdFthLG9dPU0odCk7ci5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sYSkse2lkOmN9KSxvKSwiUkVMRUFTRSI9PT11JiYoci5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixzKSxsKHIpLG4gaW4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIGVbbl0mJmVbbl0oKSl9KSkuY2F0Y2goKHQ9Pntjb25zdFtlLG5dPU0oe3ZhbHVlOm5ldyBUeXBlRXJyb3IoIlVuc2VyaWFsaXphYmxlIHJldHVybiB2YWx1ZSIpLFthXTowfSk7ci5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkse2lkOmN9KSxuKX0pKX0pKSxyLnN0YXJ0JiZyLnN0YXJ0KCl9ZnVuY3Rpb24gbCh0KXsoZnVuY3Rpb24odCl7cmV0dXJuIk1lc3NhZ2VQb3J0Ij09PXQuY29uc3RydWN0b3IubmFtZX0pKHQpJiZ0LmNsb3NlKCl9ZnVuY3Rpb24gaCh0KXtpZih0KXRocm93IG5ldyBFcnJvcigiUHJveHkgaGFzIGJlZW4gcmVsZWFzZWQgYW5kIGlzIG5vdCB1c2VhYmxlIil9ZnVuY3Rpb24gYyh0KXtyZXR1cm4geSh0LHt0eXBlOiJSRUxFQVNFIn0pLnRoZW4oKCgpPT57bCh0KX0pKX1jb25zdCB1PW5ldyBXZWFrTWFwLGY9IkZpbmFsaXphdGlvblJlZ2lzdHJ5ImluIGdsb2JhbFRoaXMmJm5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSgodD0+e2NvbnN0IGU9KHUuZ2V0KHQpfHwwKS0xO3Uuc2V0KHQsZSksMD09PWUmJmModCl9KSk7ZnVuY3Rpb24gbSh0LG49W10sYT1mdW5jdGlvbigpe30pe2xldCBvPSExO2NvbnN0IHM9bmV3IFByb3h5KGEse2dldChlLGEpe2lmKGgobyksYT09PXIpcmV0dXJuKCk9PnshZnVuY3Rpb24odCl7ZiYmZi51bnJlZ2lzdGVyKHQpfShzKSxjKHQpLG89ITB9O2lmKCJ0aGVuIj09PWEpe2lmKDA9PT1uLmxlbmd0aClyZXR1cm57dGhlbjooKT0+c307Y29uc3QgZT15KHQse3R5cGU6IkdFVCIscGF0aDpuLm1hcCgodD0+dC50b1N0cmluZygpKSl9KS50aGVuKGQpO3JldHVybiBlLnRoZW4uYmluZChlKX1yZXR1cm4gbSh0LFsuLi5uLGFdKX0sc2V0KGUscixhKXtoKG8pO2NvbnN0W3MsaV09TShhKTtyZXR1cm4geSh0LHt0eXBlOiJTRVQiLHBhdGg6Wy4uLm4scl0ubWFwKCh0PT50LnRvU3RyaW5nKCkpKSx2YWx1ZTpzfSxpKS50aGVuKGQpfSxhcHBseShyLGEscyl7aChvKTtjb25zdCBpPW5bbi5sZW5ndGgtMV07aWYoaT09PWUpcmV0dXJuIHkodCx7dHlwZToiRU5EUE9JTlQifSkudGhlbihkKTtpZigiYmluZCI9PT1pKXJldHVybiBtKHQsbi5zbGljZSgwLC0xKSk7Y29uc3RbbCxjXT1wKHMpO3JldHVybiB5KHQse3R5cGU6IkFQUExZIixwYXRoOm4ubWFwKCh0PT50LnRvU3RyaW5nKCkpKSxhcmd1bWVudExpc3Q6bH0sYykudGhlbihkKX0sY29uc3RydWN0KGUscil7aChvKTtjb25zdFthLHNdPXAocik7cmV0dXJuIHkodCx7dHlwZToiQ09OU1RSVUNUIixwYXRoOm4ubWFwKCh0PT50LnRvU3RyaW5nKCkpKSxhcmd1bWVudExpc3Q6YX0scykudGhlbihkKX19KTtyZXR1cm4gZnVuY3Rpb24odCxlKXtjb25zdCByPSh1LmdldChlKXx8MCkrMTt1LnNldChlLHIpLGYmJmYucmVnaXN0ZXIodCxlLHQpfShzLHQpLHN9ZnVuY3Rpb24gcCh0KXtjb25zdCBlPXQubWFwKE0pO3JldHVybltlLm1hcCgodD0+dFswXSkpLChyPWUubWFwKCh0PT50WzFdKSksQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxyKSldO3ZhciByfWNvbnN0IGc9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gTSh0KXtmb3IoY29uc3RbZSxyXW9mIHMpaWYoci5jYW5IYW5kbGUodCkpe2NvbnN0W24sYV09ci5zZXJpYWxpemUodCk7cmV0dXJuW3t0eXBlOiJIQU5ETEVSIixuYW1lOmUsdmFsdWU6bn0sYV19cmV0dXJuW3t0eXBlOiJSQVciLHZhbHVlOnR9LGcuZ2V0KHQpfHxbXV19ZnVuY3Rpb24gZCh0KXtzd2l0Y2godC50eXBlKXtjYXNlIkhBTkRMRVIiOnJldHVybiBzLmdldCh0Lm5hbWUpLmRlc2VyaWFsaXplKHQudmFsdWUpO2Nhc2UiUkFXIjpyZXR1cm4gdC52YWx1ZX19ZnVuY3Rpb24geSh0LGUscil7cmV0dXJuIG5ldyBQcm9taXNlKChuPT57Y29uc3QgYT1uZXcgQXJyYXkoNCkuZmlsbCgwKS5tYXAoKCgpPT5NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpLnRvU3RyaW5nKDE2KSkpLmpvaW4oIi0iKTt0LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLChmdW5jdGlvbiBlKHIpe3IuZGF0YSYmci5kYXRhLmlkJiZyLmRhdGEuaWQ9PT1hJiYodC5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixlKSxuKHIuZGF0YSkpfSkpLHQuc3RhcnQmJnQuc3RhcnQoKSx0LnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oe2lkOmF9LGUpLHIpfSkpfXZhciBiPVsiMCIsIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCIjIiwiJCIsIiUiLCIqIiwiKyIsIiwiLCItIiwiLiIsIjoiLCI7IiwiPSIsIj8iLCJAIiwiWyIsIl0iLCJeIiwiXyIsInsiLCJ8IiwifSIsIn4iXSx3PXQ9PntsZXQgZT0wO2ZvcihsZXQgcj0wO3I8dC5sZW5ndGg7cisrKXtsZXQgbj10W3JdO2U9ODMqZStiLmluZGV4T2Yobil9cmV0dXJuIGV9LEU9KHQsZSk9Pnt2YXIgcj0iIjtmb3IobGV0IG49MTtuPD1lO24rKyl7bGV0IGE9TWF0aC5mbG9vcih0KS9NYXRoLnBvdyg4MyxlLW4pJTgzO3IrPWJbTWF0aC5mbG9vcihhKV19cmV0dXJuIHJ9LHY9dD0+e2xldCBlPXQvMjU1O3JldHVybiBlPD0uMDQwNDU/ZS8xMi45MjpNYXRoLnBvdygoZSsuMDU1KS8xLjA1NSwyLjQpfSxTPXQ9PntsZXQgZT1NYXRoLm1heCgwLE1hdGgubWluKDEsdCkpO3JldHVybiBlPD0uMDAzMTMwOD9NYXRoLnRydW5jKDEyLjkyKmUqMjU1Ky41KTpNYXRoLnRydW5jKDI1NSooMS4wNTUqTWF0aC5wb3coZSwuNDE2NjY2NjY2NjY2NjY2NyktLjA1NSkrLjUpfSx4PSh0LGUpPT4odD0+dDwwPy0xOjEpKHQpKk1hdGgucG93KE1hdGguYWJzKHQpLGUpLGs9Y2xhc3MgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLm5hbWU9IlZhbGlkYXRpb25FcnJvciIsdGhpcy5tZXNzYWdlPXR9fSxQPXQ9PntpZighdHx8dC5sZW5ndGg8Nil0aHJvdyBuZXcgaygiVGhlIGJsdXJoYXNoIHN0cmluZyBtdXN0IGJlIGF0IGxlYXN0IDYgY2hhcmFjdGVycyIpO2xldCBlPXcodFswXSkscj1NYXRoLmZsb29yKGUvOSkrMSxuPWUlOSsxO2lmKHQubGVuZ3RoIT09NCsyKm4qcil0aHJvdyBuZXcgayhgYmx1cmhhc2ggbGVuZ3RoIG1pc21hdGNoOiBsZW5ndGggaXMgJHt0Lmxlbmd0aH0gYnV0IGl0IHNob3VsZCBiZSAkezQrMipuKnJ9YCl9LEE9dD0+e2xldCBlPXQ+PjgmMjU1LHI9MjU1JnQ7cmV0dXJuW3YodD4+MTYpLHYoZSksdihyKV19LFQ9KHQsZSk9PntsZXQgcj1NYXRoLmZsb29yKHQvMzYxKSxuPU1hdGguZmxvb3IodC8xOSklMTksYT10JTE5O3JldHVyblt4KChyLTkpLzksMikqZSx4KChuLTkpLzksMikqZSx4KChhLTkpLzksMikqZV19LEw9KHQsZSxyLG4pPT57bGV0IGE9MCxvPTAscz0wLGk9NCplO2ZvcihsZXQgaD0wO2g8ZTtoKyspe2xldCBlPTQqaDtmb3IobGV0IGw9MDtsPHI7bCsrKXtsZXQgcj1lK2wqaSxjPW4oaCxsKTthKz1jKnYodFtyXSksbys9Yyp2KHRbcisxXSkscys9Yyp2KHRbcisyXSl9fWxldCBsPTEvKGUqcik7cmV0dXJuW2EqbCxvKmwscypsXX0sUj0odCxlLHIsbixhKT0+e2lmKG48MXx8bj45fHxhPDF8fGE+OSl0aHJvdyBuZXcgaygiQmx1ckhhc2ggbXVzdCBoYXZlIGJldHdlZW4gMSBhbmQgOSBjb21wb25lbnRzIik7aWYoZSpyKjQhPT10Lmxlbmd0aCl0aHJvdyBuZXcgaygiV2lkdGggYW5kIGhlaWdodCBtdXN0IG1hdGNoIHRoZSBwaXhlbHMgYXJyYXkiKTtsZXQgbz1bXTtmb3IobGV0IGM9MDtjPGE7YysrKWZvcihsZXQgYT0wO2E8bjthKyspe2xldCBuPTA9PWEmJjA9PWM/MToyLHM9TCh0LGUsciwoKHQsbyk9Pm4qTWF0aC5jb3MoTWF0aC5QSSphKnQvZSkqTWF0aC5jb3MoTWF0aC5QSSpjKm8vcikpKTtvLnB1c2gocyl9bGV0IHMsaT1vWzBdLGw9by5zbGljZSgxKSxoPSIiO2lmKGgrPUUobi0xKzkqKGEtMSksMSksbC5sZW5ndGg+MCl7bGV0IHQ9TWF0aC5tYXgoLi4ubC5tYXAoKHQ9Pk1hdGgubWF4KC4uLnQpKSkpLGU9TWF0aC5mbG9vcihNYXRoLm1heCgwLE1hdGgubWluKDgyLE1hdGguZmxvb3IoMTY2KnQtLjUpKSkpO3M9KGUrMSkvMTY2LGgrPUUoZSwxKX1lbHNlIHM9MSxoKz1FKDAsMSk7cmV0dXJuIGgrPUUoKHQ9PihTKHRbMF0pPDwxNikrKFModFsxXSk8PDgpK1ModFsyXSkpKGkpLDQpLGwuZm9yRWFjaCgodD0+e2grPUUoKCh0LGUpPT4xOSpNYXRoLmZsb29yKE1hdGgubWF4KDAsTWF0aC5taW4oMTgsTWF0aC5mbG9vcig5KngodFswXS9lLC41KSs5LjUpKSkpKjE5KzE5Kk1hdGguZmxvb3IoTWF0aC5tYXgoMCxNYXRoLm1pbigxOCxNYXRoLmZsb29yKDkqeCh0WzFdL2UsLjUpKzkuNSkpKSkrTWF0aC5mbG9vcihNYXRoLm1heCgwLE1hdGgubWluKDE4LE1hdGguZmxvb3IoOSp4KHRbMl0vZSwuNSkrOS41KSkpKSkodCxzKSwyKX0pKSxofTtpKHtWYWxpZGF0aW9uRXJyb3I6ayxlbmNvZGU6UixkZWNvZGU6KHQsZSxyLG4pPT57UCh0KSxufD0xO2xldCBhPXcodFswXSksbz1NYXRoLmZsb29yKGEvOSkrMSxzPWElOSsxLGk9KHcodFsxXSkrMSkvMTY2LGw9bmV3IEFycmF5KHMqbyk7Zm9yKGxldCB1PTA7dTxsLmxlbmd0aDt1KyspaWYoMD09PXUpe2xldCBlPXcodC5zdWJzdHJpbmcoMiw2KSk7bFt1XT1BKGUpfWVsc2V7bGV0IGU9dyh0LnN1YnN0cmluZyg0KzIqdSw2KzIqdSkpO2xbdV09VChlLGkqbil9bGV0IGg9NCplLGM9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGgqcik7Zm9yKGxldCB1PTA7dTxyO3UrKylmb3IobGV0IHQ9MDt0PGU7dCsrKXtsZXQgbj0wLGE9MCxpPTA7Zm9yKGxldCBoPTA7aDxvO2grKylmb3IobGV0IG89MDtvPHM7bysrKXtsZXQgYz1NYXRoLmNvcyhNYXRoLlBJKnQqby9lKSpNYXRoLmNvcyhNYXRoLlBJKnUqaC9yKSxmPWxbbytoKnNdO24rPWZbMF0qYyxhKz1mWzFdKmMsaSs9ZlsyXSpjfWxldCBmPVMobiksbT1TKGEpLHA9UyhpKTtjWzQqdCswK3UqaF09ZixjWzQqdCsxK3UqaF09bSxjWzQqdCsyK3UqaF09cCxjWzQqdCszK3UqaF09MjU1fXJldHVybiBjfSxpc0JsdXJoYXNoVmFsaWQ6dD0+e3RyeXtQKHQpfWNhdGNoKGUpe3JldHVybntyZXN1bHQ6ITEsZXJyb3JSZWFzb246ZS5tZXNzYWdlfX1yZXR1cm57cmVzdWx0OiEwfX19KX0oKTsK",t="undefined"!=typeof self&&self.Blob&&new Blob([(Z=K,Uint8Array.from(atob(Z),(i=>i.charCodeAt(0))))],{type:"text/javascript;charset=utf-8"});var Z;const I=l.wrap(new function(i){let d;try{if(d=t&&(self.URL||self.webkitURL).createObjectURL(t),!d)throw"";const l=new Worker(d,{name:null==i?void 0:i.name});return l.addEventListener("error",(()=>{(self.URL||self.webkitURL).revokeObjectURL(d)})),l}catch(l){return new Worker("data:text/javascript;base64,"+K,{name:null==i?void 0:i.name})}finally{d&&(self.URL||self.webkitURL).revokeObjectURL(d)}});function e(i){return new Promise(((d,l)=>{const b=new Image;b.onload=()=>d(b),b.onerror=(...i)=>l(i),b.src=i}))}i.useAlert=function(){const i=(i=c)=>d.computed((()=>{const d=m.get(i);return d&&d instanceof Map?Array.from(null==d?void 0:d.values()).sort(((i,d)=>i.timestamp-d.timestamp)):[]}));return{groups:m,alerts:i(),addAlert:({id:i=crypto.randomUUID(),group:d=c,title:l,icon:b=s,content:K,footer:t,modifiers:Z="info",dismissable:I=true,autoClose:e=1e4,timestamp:X=Date.now()}={})=>{m.has(d)||m.set(d,new Map);const p=m.get(d),n="string"==typeof Z?Z.split(" "):Z;if(!b){const i=n.find((i=>o.has(i)));i&&(b=o.get(i))}null==p||p.set(i.toString(),{id:i,group:d,title:l,icon:b,content:K,footer:t,modifiers:Z,dismissable:I,autoClose:e,timestamp:X})},removeAlert:(i,d=c)=>{const l=m.get(d);null==l||l.delete(i.toString())},getAlerts:i}},i.useBlurhash=function(){return{encode:async function(i){const d=URL.createObjectURL(i),l=await e(d);if("width"in l&&"height"in l){const{width:i,height:d}=(c=l.width,s=l.height,o=32,c>s?{width:o,height:Math.round(o*(s/c))}:{width:Math.round(o*(c/s)),height:o}),m=await async function(i,d,l){var c;const s=new b,o=document.createElement("canvas");return o.width=d,o.height=l,null==(c=(await s.resize(i,o)).getContext("2d"))?void 0:c.getImageData(0,0,d,l).data}(l,i,d);if(m)return I.encode(m,i,d,4,4)}var c,s,o},decode:I.decode,loadImage:e}},Object.defineProperty(i,Symbol.toStringTag,{value:"Module"})}));
1
+ !function(i,l){"object"==typeof exports&&"undefined"!=typeof module?l(exports,require("vue"),require("comlink"),require("pica")):"function"==typeof define&&define.amd?define(["exports","vue","comlink","pica"],l):l((i="undefined"!=typeof globalThis?globalThis:i||self).composables={},i.vue,i.comlink,i.Pica)}(this,(function(i,l,d,t){"use strict";const e="default",n="information",b=new Map([["success","check-circle"],["info",n],["warning","warning"],["danger","error"]]),o=l.reactive(new Map([[e,new Map]]));function c(i){const d=l.ref(0),t=l.ref(0),e=l.ref();let n=0,b=0,o=0,c=0;const s=i=>{const l=i.target;n=l.scrollLeft-c,b=l.scrollTop-o,t.value=t.value-b,d.value=d.value-n,c=l.scrollLeft,o=l.scrollTop},u=()=>({width:0,height:0,x:d.value,y:t.value,top:t.value,left:d.value,right:d.value,bottom:t.value});return l.getCurrentInstance()&&(l.onMounted((()=>{i.value&&(i.value.init({getBoundingClientRect:u}),e.value=function(i){if(!i)return;let l=i.parentElement;for(;l;){const{overflow:i}=window.getComputedStyle(l);if(i.split(" ").every((i=>"auto"===i||"scroll"===i)))return l;l=l.parentElement}return document.documentElement}(i.value.$el),e.value&&e.value.addEventListener("scroll",s))})),l.onUnmounted((()=>{e.value&&e.value.removeEventListener("scroll",s)}))),{x:d,y:t,getBoundingClientRect:u,onScroll:s}}const s="IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciB0PVsiMCIsIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCIjIiwiJCIsIiUiLCIqIiwiKyIsIiwiLCItIiwiLiIsIjoiLCI7IiwiPSIsIj8iLCJAIiwiWyIsIl0iLCJeIiwiXyIsInsiLCJ8IiwifSIsIn4iXSxlPWU9PntsZXQgbj0wO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKXtsZXQgYT1lW3JdO249ODMqbit0LmluZGV4T2YoYSl9cmV0dXJuIG59LG49KGUsbik9Pnt2YXIgcj0iIjtmb3IobGV0IGE9MTthPD1uO2ErKyl7bGV0IG89TWF0aC5mbG9vcihlKS9NYXRoLnBvdyg4MyxuLWEpJTgzO3IrPXRbTWF0aC5mbG9vcihvKV19cmV0dXJuIHJ9LHI9dD0+e2xldCBlPXQvMjU1O3JldHVybiBlPD0uMDQwNDU/ZS8xMi45MjpNYXRoLnBvdygoZSsuMDU1KS8xLjA1NSwyLjQpfSxhPXQ9PntsZXQgZT1NYXRoLm1heCgwLE1hdGgubWluKDEsdCkpO3JldHVybiBlPD0uMDAzMTMwOD9NYXRoLnRydW5jKDEyLjkyKmUqMjU1Ky41KTpNYXRoLnRydW5jKDI1NSooMS4wNTUqTWF0aC5wb3coZSwuNDE2NjY2NjY2NjY2NjY2NyktLjA1NSkrLjUpfSxvPSh0LGUpPT4odD0+dDwwPy0xOjEpKHQpKk1hdGgucG93KE1hdGguYWJzKHQpLGUpLHM9Y2xhc3MgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLm5hbWU9IlZhbGlkYXRpb25FcnJvciIsdGhpcy5tZXNzYWdlPXR9fSxpPXQ9PntpZighdHx8dC5sZW5ndGg8Nil0aHJvdyBuZXcgcygiVGhlIGJsdXJoYXNoIHN0cmluZyBtdXN0IGJlIGF0IGxlYXN0IDYgY2hhcmFjdGVycyIpO2xldCBuPWUodFswXSkscj1NYXRoLmZsb29yKG4vOSkrMSxhPW4lOSsxO2lmKHQubGVuZ3RoIT09NCsyKmEqcil0aHJvdyBuZXcgcyhgYmx1cmhhc2ggbGVuZ3RoIG1pc21hdGNoOiBsZW5ndGggaXMgJHt0Lmxlbmd0aH0gYnV0IGl0IHNob3VsZCBiZSAkezQrMiphKnJ9YCl9LGw9dD0+e2xldCBlPXQ+PjgmMjU1LG49MjU1JnQ7cmV0dXJuW3IodD4+MTYpLHIoZSkscihuKV19LGM9KHQsZSk9PntsZXQgbj1NYXRoLmZsb29yKHQvMzYxKSxyPU1hdGguZmxvb3IodC8xOSklMTksYT10JTE5O3JldHVybltvKChuLTkpLzksMikqZSxvKChyLTkpLzksMikqZSxvKChhLTkpLzksMikqZV19LGg9KHQsbixyLG8pPT57aSh0KSxvfD0xO2xldCBzPWUodFswXSksaD1NYXRoLmZsb29yKHMvOSkrMSx1PXMlOSsxLGY9KGUodFsxXSkrMSkvMTY2LHA9bmV3IEFycmF5KHUqaCk7Zm9yKGxldCBhPTA7YTxwLmxlbmd0aDthKyspaWYoMD09PWEpe2xldCBuPWUodC5zdWJzdHJpbmcoMiw2KSk7cFthXT1sKG4pfWVsc2V7bGV0IG49ZSh0LnN1YnN0cmluZyg0KzIqYSw2KzIqYSkpO3BbYV09YyhuLGYqbyl9bGV0IG09NCpuLGc9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KG0qcik7Zm9yKGxldCBlPTA7ZTxyO2UrKylmb3IobGV0IHQ9MDt0PG47dCsrKXtsZXQgbz0wLHM9MCxpPTA7Zm9yKGxldCBhPTA7YTxoO2ErKylmb3IobGV0IGw9MDtsPHU7bCsrKXtsZXQgYz1NYXRoLmNvcyhNYXRoLlBJKnQqbC9uKSpNYXRoLmNvcyhNYXRoLlBJKmUqYS9yKSxoPXBbbCthKnVdO28rPWhbMF0qYyxzKz1oWzFdKmMsaSs9aFsyXSpjfWxldCBsPWEobyksYz1hKHMpLGY9YShpKTtnWzQqdCswK2UqbV09bCxnWzQqdCsxK2UqbV09YyxnWzQqdCsyK2UqbV09ZixnWzQqdCszK2UqbV09MjU1fXJldHVybiBnfSx1PSh0LGUsbixhKT0+e2xldCBvPTAscz0wLGk9MCxsPTQqZTtmb3IobGV0IGg9MDtoPGU7aCsrKXtsZXQgZT00Kmg7Zm9yKGxldCBjPTA7YzxuO2MrKyl7bGV0IG49ZStjKmwsdT1hKGgsYyk7bys9dSpyKHRbbl0pLHMrPXUqcih0W24rMV0pLGkrPXUqcih0W24rMl0pfX1sZXQgYz0xLyhlKm4pO3JldHVybltvKmMscypjLGkqY119LGY9KHQsZSxyLGksbCk9PntpZihpPDF8fGk+OXx8bDwxfHxsPjkpdGhyb3cgbmV3IHMoIkJsdXJIYXNoIG11c3QgaGF2ZSBiZXR3ZWVuIDEgYW5kIDkgY29tcG9uZW50cyIpO2lmKGUqcio0IT09dC5sZW5ndGgpdGhyb3cgbmV3IHMoIldpZHRoIGFuZCBoZWlnaHQgbXVzdCBtYXRjaCB0aGUgcGl4ZWxzIGFycmF5Iik7bGV0IGM9W107Zm9yKGxldCBuPTA7bjxsO24rKylmb3IobGV0IGE9MDthPGk7YSsrKXtsZXQgbz0wPT1hJiYwPT1uPzE6MixzPXUodCxlLHIsKCh0LHMpPT5vKk1hdGguY29zKE1hdGguUEkqYSp0L2UpKk1hdGguY29zKE1hdGguUEkqbipzL3IpKSk7Yy5wdXNoKHMpfWxldCBoLGY9Y1swXSxwPWMuc2xpY2UoMSksbT0iIjtpZihtKz1uKGktMSs5KihsLTEpLDEpLHAubGVuZ3RoPjApe2xldCB0PU1hdGgubWF4KC4uLnAubWFwKCh0PT5NYXRoLm1heCguLi50KSkpKSxlPU1hdGguZmxvb3IoTWF0aC5tYXgoMCxNYXRoLm1pbig4MixNYXRoLmZsb29yKDE2Nip0LS41KSkpKTtoPShlKzEpLzE2NixtKz1uKGUsMSl9ZWxzZSBoPTEsbSs9bigwLDEpO3JldHVybiBtKz1uKCh0PT4oYSh0WzBdKTw8MTYpKyhhKHRbMV0pPDw4KSthKHRbMl0pKShmKSw0KSxwLmZvckVhY2goKHQ9PnttKz1uKCgodCxlKT0+MTkqTWF0aC5mbG9vcihNYXRoLm1heCgwLE1hdGgubWluKDE4LE1hdGguZmxvb3IoOSpvKHRbMF0vZSwuNSkrOS41KSkpKSoxOSsxOSpNYXRoLmZsb29yKE1hdGgubWF4KDAsTWF0aC5taW4oMTgsTWF0aC5mbG9vcig5Km8odFsxXS9lLC41KSs5LjUpKSkpK01hdGguZmxvb3IoTWF0aC5tYXgoMCxNYXRoLm1pbigxOCxNYXRoLmZsb29yKDkqbyh0WzJdL2UsLjUpKzkuNSkpKSkpKHQsaCksMil9KSksbX07Ci8qKgogICAqIEBsaWNlbnNlCiAgICogQ29weXJpZ2h0IDIwMTkgR29vZ2xlIExMQwogICAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wCiAgICovCmNvbnN0IHA9U3ltYm9sKCJDb21saW5rLnByb3h5IiksbT1TeW1ib2woIkNvbWxpbmsuZW5kcG9pbnQiKSxnPVN5bWJvbCgiQ29tbGluay5yZWxlYXNlUHJveHkiKSxNPVN5bWJvbCgiQ29tbGluay5maW5hbGl6ZXIiKSxkPVN5bWJvbCgiQ29tbGluay50aHJvd24iKSx5PXQ9PiJvYmplY3QiPT10eXBlb2YgdCYmbnVsbCE9PXR8fCJmdW5jdGlvbiI9PXR5cGVvZiB0LHc9bmV3IE1hcChbWyJwcm94eSIse2NhbkhhbmRsZTp0PT55KHQpJiZ0W3BdLHNlcmlhbGl6ZSh0KXtjb25zdHtwb3J0MTplLHBvcnQyOm59PW5ldyBNZXNzYWdlQ2hhbm5lbDtyZXR1cm4gYih0LGUpLFtuLFtuXV19LGRlc2VyaWFsaXplOnQ9Pih0LnN0YXJ0KCksZnVuY3Rpb24odCxlKXtjb25zdCBuPW5ldyBNYXA7cmV0dXJuIHQuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsKGZ1bmN0aW9uKHQpe2NvbnN0e2RhdGE6ZX09dDtpZighZXx8IWUuaWQpcmV0dXJuO2NvbnN0IHI9bi5nZXQoZS5pZCk7aWYocil0cnl7cihlKX1maW5hbGx5e24uZGVsZXRlKGUuaWQpfX0pKSxQKHQsbixbXSxlKX0odCkpfV0sWyJ0aHJvdyIse2NhbkhhbmRsZTp0PT55KHQpJiZkIGluIHQsc2VyaWFsaXplKHt2YWx1ZTp0fSl7bGV0IGU7cmV0dXJuIGU9dCBpbnN0YW5jZW9mIEVycm9yP3tpc0Vycm9yOiEwLHZhbHVlOnttZXNzYWdlOnQubWVzc2FnZSxuYW1lOnQubmFtZSxzdGFjazp0LnN0YWNrfX06e2lzRXJyb3I6ITEsdmFsdWU6dH0sW2UsW11dfSxkZXNlcmlhbGl6ZSh0KXtpZih0LmlzRXJyb3IpdGhyb3cgT2JqZWN0LmFzc2lnbihuZXcgRXJyb3IodC52YWx1ZS5tZXNzYWdlKSx0LnZhbHVlKTt0aHJvdyB0LnZhbHVlfX1dXSk7ZnVuY3Rpb24gYih0LGU9Z2xvYmFsVGhpcyxuPVsiKiJdKXtlLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLChmdW5jdGlvbiByKGEpe2lmKCFhfHwhYS5kYXRhKXJldHVybjtpZighZnVuY3Rpb24odCxlKXtmb3IoY29uc3QgbiBvZiB0KXtpZihlPT09bnx8IioiPT09bilyZXR1cm4hMDtpZihuIGluc3RhbmNlb2YgUmVnRXhwJiZuLnRlc3QoZSkpcmV0dXJuITB9cmV0dXJuITF9KG4sYS5vcmlnaW4pKXJldHVybiB2b2lkIGNvbnNvbGUud2FybihgSW52YWxpZCBvcmlnaW4gJyR7YS5vcmlnaW59JyBmb3IgY29tbGluayBwcm94eWApO2NvbnN0e2lkOm8sdHlwZTpzLHBhdGg6aX09T2JqZWN0LmFzc2lnbih7cGF0aDpbXX0sYS5kYXRhKSxsPShhLmRhdGEuYXJndW1lbnRMaXN0fHxbXSkubWFwKEwpO2xldCBjO3RyeXtjb25zdCBlPWkuc2xpY2UoMCwtMSkucmVkdWNlKCgodCxlKT0+dFtlXSksdCksbj1pLnJlZHVjZSgoKHQsZSk9PnRbZV0pLHQpO3N3aXRjaChzKXtjYXNlIkdFVCI6Yz1uO2JyZWFrO2Nhc2UiU0VUIjplW2kuc2xpY2UoLTEpWzBdXT1MKGEuZGF0YS52YWx1ZSksYz0hMDticmVhaztjYXNlIkFQUExZIjpjPW4uYXBwbHkoZSxsKTticmVhaztjYXNlIkNPTlNUUlVDVCI6Yz1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmFzc2lnbih0LHtbcF06ITB9KX0obmV3IG4oLi4ubCkpO2JyZWFrO2Nhc2UiRU5EUE9JTlQiOntjb25zdHtwb3J0MTplLHBvcnQyOm59PW5ldyBNZXNzYWdlQ2hhbm5lbDtiKHQsbiksYz1mdW5jdGlvbih0LGUpe3JldHVybiBULnNldCh0LGUpLHR9KGUsW2VdKX1icmVhaztjYXNlIlJFTEVBU0UiOmM9dm9pZCAwO2JyZWFrO2RlZmF1bHQ6cmV0dXJufX1jYXRjaChoKXtjPXt2YWx1ZTpoLFtkXTowfX1Qcm9taXNlLnJlc29sdmUoYykuY2F0Y2goKHQ9Pih7dmFsdWU6dCxbZF06MH0pKSkudGhlbigobj0+e2NvbnN0W2EsaV09UihuKTtlLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxhKSx7aWQ6b30pLGkpLCJSRUxFQVNFIj09PXMmJihlLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHIpLEUoZSksTSBpbiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgdFtNXSYmdFtNXSgpKX0pKS5jYXRjaCgodD0+e2NvbnN0W24scl09Uih7dmFsdWU6bmV3IFR5cGVFcnJvcigiVW5zZXJpYWxpemFibGUgcmV0dXJuIHZhbHVlIiksW2RdOjB9KTtlLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7aWQ6b30pLHIpfSkpfSkpLGUuc3RhcnQmJmUuc3RhcnQoKX1mdW5jdGlvbiBFKHQpeyhmdW5jdGlvbih0KXtyZXR1cm4iTWVzc2FnZVBvcnQiPT09dC5jb25zdHJ1Y3Rvci5uYW1lfSkodCkmJnQuY2xvc2UoKX1mdW5jdGlvbiB2KHQpe2lmKHQpdGhyb3cgbmV3IEVycm9yKCJQcm94eSBoYXMgYmVlbiByZWxlYXNlZCBhbmQgaXMgbm90IHVzZWFibGUiKX1mdW5jdGlvbiBTKHQpe3JldHVybiBPKHQsbmV3IE1hcCx7dHlwZToiUkVMRUFTRSJ9KS50aGVuKCgoKT0+e0UodCl9KSl9Y29uc3QgeD1uZXcgV2Vha01hcCxrPSJGaW5hbGl6YXRpb25SZWdpc3RyeSJpbiBnbG9iYWxUaGlzJiZuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoKHQ9Pntjb25zdCBlPSh4LmdldCh0KXx8MCktMTt4LnNldCh0LGUpLDA9PT1lJiZTKHQpfSkpO2Z1bmN0aW9uIFAodCxlLG49W10scj1mdW5jdGlvbigpe30pe2xldCBhPSExO2NvbnN0IG89bmV3IFByb3h5KHIse2dldChyLHMpe2lmKHYoYSkscz09PWcpcmV0dXJuKCk9PnshZnVuY3Rpb24odCl7ayYmay51bnJlZ2lzdGVyKHQpfShvKSxTKHQpLGUuY2xlYXIoKSxhPSEwfTtpZigidGhlbiI9PT1zKXtpZigwPT09bi5sZW5ndGgpcmV0dXJue3RoZW46KCk9Pm99O2NvbnN0IHI9Tyh0LGUse3R5cGU6IkdFVCIscGF0aDpuLm1hcCgodD0+dC50b1N0cmluZygpKSl9KS50aGVuKEwpO3JldHVybiByLnRoZW4uYmluZChyKX1yZXR1cm4gUCh0LGUsWy4uLm4sc10pfSxzZXQocixvLHMpe3YoYSk7Y29uc3RbaSxsXT1SKHMpO3JldHVybiBPKHQsZSx7dHlwZToiU0VUIixwYXRoOlsuLi5uLG9dLm1hcCgodD0+dC50b1N0cmluZygpKSksdmFsdWU6aX0sbCkudGhlbihMKX0sYXBwbHkocixvLHMpe3YoYSk7Y29uc3QgaT1uW24ubGVuZ3RoLTFdO2lmKGk9PT1tKXJldHVybiBPKHQsZSx7dHlwZToiRU5EUE9JTlQifSkudGhlbihMKTtpZigiYmluZCI9PT1pKXJldHVybiBQKHQsZSxuLnNsaWNlKDAsLTEpKTtjb25zdFtsLGNdPUEocyk7cmV0dXJuIE8odCxlLHt0eXBlOiJBUFBMWSIscGF0aDpuLm1hcCgodD0+dC50b1N0cmluZygpKSksYXJndW1lbnRMaXN0Omx9LGMpLnRoZW4oTCl9LGNvbnN0cnVjdChyLG8pe3YoYSk7Y29uc3RbcyxpXT1BKG8pO3JldHVybiBPKHQsZSx7dHlwZToiQ09OU1RSVUNUIixwYXRoOm4ubWFwKCh0PT50LnRvU3RyaW5nKCkpKSxhcmd1bWVudExpc3Q6c30saSkudGhlbihMKX19KTtyZXR1cm4gZnVuY3Rpb24odCxlKXtjb25zdCBuPSh4LmdldChlKXx8MCkrMTt4LnNldChlLG4pLGsmJmsucmVnaXN0ZXIodCxlLHQpfShvLHQpLG99ZnVuY3Rpb24gQSh0KXtjb25zdCBlPXQubWFwKFIpO3JldHVybltlLm1hcCgodD0+dFswXSkpLChuPWUubWFwKCh0PT50WzFdKSksQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxuKSldO3ZhciBufWNvbnN0IFQ9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gUih0KXtmb3IoY29uc3RbZSxuXW9mIHcpaWYobi5jYW5IYW5kbGUodCkpe2NvbnN0W3IsYV09bi5zZXJpYWxpemUodCk7cmV0dXJuW3t0eXBlOiJIQU5ETEVSIixuYW1lOmUsdmFsdWU6cn0sYV19cmV0dXJuW3t0eXBlOiJSQVciLHZhbHVlOnR9LFQuZ2V0KHQpfHxbXV19ZnVuY3Rpb24gTCh0KXtzd2l0Y2godC50eXBlKXtjYXNlIkhBTkRMRVIiOnJldHVybiB3LmdldCh0Lm5hbWUpLmRlc2VyaWFsaXplKHQudmFsdWUpO2Nhc2UiUkFXIjpyZXR1cm4gdC52YWx1ZX19ZnVuY3Rpb24gTyh0LGUsbixyKXtyZXR1cm4gbmV3IFByb21pc2UoKGE9Pntjb25zdCBvPW5ldyBBcnJheSg0KS5maWxsKDApLm1hcCgoKCk9Pk1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikudG9TdHJpbmcoMTYpKSkuam9pbigiLSIpO2Uuc2V0KG8sYSksdC5zdGFydCYmdC5zdGFydCgpLHQucG9zdE1lc3NhZ2UoT2JqZWN0LmFzc2lnbih7aWQ6b30sbikscil9KSl9Yih7VmFsaWRhdGlvbkVycm9yOnMsZW5jb2RlOmYsZGVjb2RlOmgsaXNCbHVyaGFzaFZhbGlkOnQ9Pnt0cnl7aSh0KX1jYXRjaChlKXtyZXR1cm57cmVzdWx0OiExLGVycm9yUmVhc29uOmUubWVzc2FnZX19cmV0dXJue3Jlc3VsdDohMH19fSl9KCk7Cg==",u="undefined"!=typeof self&&self.Blob&&new Blob([(m=s,Uint8Array.from(atob(m),(i=>i.charCodeAt(0))))],{type:"text/javascript;charset=utf-8"});var m;const h=d.wrap(new function(i){let l;try{if(l=u&&(self.URL||self.webkitURL).createObjectURL(u),!l)throw"";const d=new Worker(l,{name:null==i?void 0:i.name});return d.addEventListener("error",(()=>{(self.URL||self.webkitURL).revokeObjectURL(l)})),d}catch(d){return new Worker("data:text/javascript;base64,"+s,{name:null==i?void 0:i.name})}finally{l&&(self.URL||self.webkitURL).revokeObjectURL(l)}});function p(i){return new Promise(((l,d)=>{const t=new Image;t.onload=()=>l(t),t.onerror=(...i)=>d(i),t.src=i}))}i.useAlert=function(){const i=(i=e)=>l.computed((()=>{const l=o.get(i);return l&&l instanceof Map?Array.from(null==l?void 0:l.values()).sort(((i,l)=>i.timestamp-l.timestamp)):[]}));return{groups:o,alerts:i(),addAlert:({id:i=crypto.randomUUID(),group:l=e,title:d,icon:t=n,content:c,footer:s,modifiers:u="info",dismissable:m=true,autoClose:h=1e4,timestamp:p=Date.now()}={})=>{o.has(l)||o.set(l,new Map);const I=o.get(l),K="string"==typeof u?u.split(" "):u;if(!t){const i=K.find((i=>b.has(i)));i&&(t=b.get(i))}null==I||I.set(i.toString(),{id:i,group:l,title:d,icon:t,content:c,footer:s,modifiers:u,dismissable:m,autoClose:h,timestamp:p})},removeAlert:(i,l=e)=>{const d=o.get(l);null==d||d.delete(i.toString())},getAlerts:i}},i.useBlurhash=function(){return{encode:async function(i){const l=URL.createObjectURL(i),d=await p(l);if("width"in d&&"height"in d){const{width:i,height:l}=(e=d.width,n=d.height,b=32,e>n?{width:b,height:Math.round(b*(n/e))}:{width:Math.round(b*(e/n)),height:b}),o=await async function(i,l,d){var e;const n=new t,b=document.createElement("canvas");return b.width=l,b.height=d,null==(e=(await n.resize(i,b)).getContext("2d"))?void 0:e.getImageData(0,0,l,d).data}(d,i,l);if(o)return h.encode(o,i,l,4,4)}var e,n,b},decode:h.decode,loadImage:p}},i.useDropdownContextmenu=function(i,d){const{x:t,y:e,getBoundingClientRect:n,onScroll:b}=c(i),o=l=>{t.value=l.clientX,e.value=l.clientY,l.preventDefault(),i.value.show()},s=l.computed((()=>l.unref(d)));return s&&l.getCurrentInstance()&&(l.onMounted((()=>{var i;null==(i=s.value)||i.addEventListener("contextmenu",o,!1)})),l.onUnmounted((()=>{var i;null==(i=s.value)||i.removeEventListener("contextmenu",o)}))),{x:t,y:e,getBoundingClientRect:n,onContextmenu:o,onScroll:b}},i.useDropdownVirtualElement=c,Object.defineProperty(i,Symbol.toStringTag,{value:"Module"})}));
@@ -1,4 +1,4 @@
1
1
  import type { MaybeElement, MaybeElementRef } from '@vueuse/core';
2
2
  export declare function useComponentFocus(inputTemplateRef: MaybeElementRef<MaybeElement>, emit: ((name: 'blur', ...args: any[]) => void) & ((name: 'focus', ...args: any[]) => void) & ((name: any, ...args: any[]) => void)): {
3
- focused: globalThis.Ref<boolean>;
3
+ focused: globalThis.Ref<boolean, boolean>;
4
4
  };
@@ -1,6 +1,6 @@
1
1
  import type { Option } from '../types/generic';
2
2
  export declare function useOptions(props: any): {
3
- options: globalThis.Ref<any>;
3
+ options: globalThis.Ref<any, any>;
4
4
  getOptionLabel: <T extends string | Option>(option: T) => string;
5
5
  getOptionValue: <T extends string | Option>(option: T) => any;
6
6
  isOptionDisabled: <T extends string | Option>(option: T) => boolean;
@@ -1,3 +1,3 @@
1
1
  import type { Ref } from 'vue';
2
2
  import { StorageType } from '@/constants';
3
- export declare function usePersistence<T>(storageKey: Ref<string | undefined> | undefined, storageType?: Ref<`${StorageType}`> | `${StorageType}`, defaultValue?: T): globalThis.WritableComputedRef<T | undefined>;
3
+ export declare function usePersistence<T>(storageKey: Ref<string | undefined> | undefined, storageType?: Ref<`${StorageType}`> | `${StorageType}`, defaultValue?: T): globalThis.WritableComputedRef<T | undefined, T | undefined>;
@@ -1,2 +1,2 @@
1
- import type { Ref } from 'vue';
1
+ import { type Ref } from 'vue';
2
2
  export declare function useUniqueId(id?: Ref<string | number | undefined>): globalThis.ComputedRef<string>;
@@ -1,7 +1,7 @@
1
- import type { InjectionKey, Ref } from 'vue';
2
1
  import type { Emitter } from 'mitt';
2
+ import type { InjectionKey, Ref } from 'vue';
3
+ import type { AccordionGroupState, AlertGroupState, ButtonGroupState, InputGroupState } from './types';
3
4
  import type { Volver } from './Volver';
4
- import type { AccordionGroupState, InputGroupState, ButtonGroupState, AlertGroupState } from './types';
5
5
  export declare const DEFAULT_ICONIFY_PROVIDER = "vv";
6
6
  export declare enum StorageType {
7
7
  local = "local",
@@ -66,7 +66,7 @@ export declare const INJECTION_KEY_CHECK_GROUP: InjectionKey<InputGroupState>;
66
66
  export declare const INJECTION_KEY_ACCORDION_GROUP: InjectionKey<AccordionGroupState>;
67
67
  export type DropdownTriggerState = {
68
68
  id?: Ref<string | number>;
69
- reference?: Ref<HTMLElement | null>;
69
+ reference?: Ref<HTMLElement | null | undefined>;
70
70
  bus?: Emitter<{
71
71
  click: Event;
72
72
  mouseover: Event;
@@ -1,3 +1,3 @@
1
- import vTooltip from '../directives/v-tooltip';
2
1
  import vContextmenu from '../directives/v-contextmenu';
3
- export { vTooltip, vContextmenu };
2
+ import vTooltip from '../directives/v-tooltip';
3
+ export { vContextmenu, vTooltip };
@@ -1,4 +1,6 @@
1
- import { computed, unref, defineComponent, toRefs, openBlock, createElementBlock, normalizeClass, renderSlot, createTextVNode, toDisplayString, h, render, ref } from "vue";
1
+ import { reactive, ref, getCurrentInstance, onMounted, onUnmounted, computed, unref, defineComponent, toRefs, openBlock, createElementBlock, normalizeClass, renderSlot, createTextVNode, toDisplayString, h, render } from "vue";
2
+ import { wrap } from "comlink";
3
+ import "pica";
2
4
  var StorageType = /* @__PURE__ */ ((StorageType2) => {
3
5
  StorageType2["local"] = "local";
4
6
  StorageType2["session"] = "session";
@@ -45,6 +47,148 @@ var ActionTag = /* @__PURE__ */ ((ActionTag2) => {
45
47
  ActionTag2["button"] = "button";
46
48
  return ActionTag2;
47
49
  })(ActionTag || {});
50
+ const DEFAULT_ALERT_GROUP = "default";
51
+ reactive(
52
+ /* @__PURE__ */ new Map([
53
+ [DEFAULT_ALERT_GROUP, /* @__PURE__ */ new Map()]
54
+ ])
55
+ );
56
+ function findScrollContainer(element) {
57
+ if (!element) {
58
+ return void 0;
59
+ }
60
+ let parent = element.parentElement;
61
+ while (parent) {
62
+ const { overflow } = window.getComputedStyle(parent);
63
+ if (overflow.split(" ").every((item) => item === "auto" || item === "scroll")) {
64
+ return parent;
65
+ }
66
+ parent = parent.parentElement;
67
+ }
68
+ return document.documentElement;
69
+ }
70
+ function useDropdownVirtualElement(dropdownEl) {
71
+ const x = ref(0);
72
+ const y = ref(0);
73
+ const scrollContainerEl = ref();
74
+ let scrollXDelta = 0;
75
+ let scrollYDelta = 0;
76
+ let lastScrollTop = 0;
77
+ let lastScrollLeft = 0;
78
+ const onScroll = (event) => {
79
+ const scrollEl = event.target;
80
+ scrollXDelta = scrollEl.scrollLeft - lastScrollLeft;
81
+ scrollYDelta = scrollEl.scrollTop - lastScrollTop;
82
+ y.value = y.value - scrollYDelta;
83
+ x.value = x.value - scrollXDelta;
84
+ lastScrollLeft = scrollEl.scrollLeft;
85
+ lastScrollTop = scrollEl.scrollTop;
86
+ };
87
+ const getBoundingClientRect = () => ({
88
+ width: 0,
89
+ height: 0,
90
+ x: x.value,
91
+ y: y.value,
92
+ top: y.value,
93
+ left: x.value,
94
+ right: x.value,
95
+ bottom: y.value
96
+ });
97
+ if (getCurrentInstance()) {
98
+ onMounted(() => {
99
+ if (dropdownEl.value) {
100
+ dropdownEl.value.init({
101
+ getBoundingClientRect
102
+ });
103
+ scrollContainerEl.value = findScrollContainer(dropdownEl.value.$el);
104
+ if (scrollContainerEl.value) {
105
+ scrollContainerEl.value.addEventListener("scroll", onScroll);
106
+ }
107
+ }
108
+ });
109
+ onUnmounted(() => {
110
+ if (scrollContainerEl.value) {
111
+ scrollContainerEl.value.removeEventListener("scroll", onScroll);
112
+ }
113
+ });
114
+ }
115
+ return { x, y, getBoundingClientRect, onScroll };
116
+ }
117
+ function useDropdownContextmenu(dropdownEl, targetEl) {
118
+ const { x, y, getBoundingClientRect, onScroll } = useDropdownVirtualElement(dropdownEl);
119
+ const onContextmenu = (event) => {
120
+ x.value = event.clientX;
121
+ y.value = event.clientY;
122
+ event.preventDefault();
123
+ dropdownEl.value.show();
124
+ };
125
+ const target = computed(() => unref(targetEl));
126
+ if (target && getCurrentInstance()) {
127
+ onMounted(() => {
128
+ var _a;
129
+ (_a = target.value) == null ? void 0 : _a.addEventListener("contextmenu", onContextmenu, false);
130
+ });
131
+ onUnmounted(() => {
132
+ var _a;
133
+ (_a = target.value) == null ? void 0 : _a.removeEventListener("contextmenu", onContextmenu);
134
+ });
135
+ }
136
+ return { x, y, getBoundingClientRect, onContextmenu, onScroll };
137
+ }
138
+ const encodedJs = "IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciB0PVsiMCIsIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCIjIiwiJCIsIiUiLCIqIiwiKyIsIiwiLCItIiwiLiIsIjoiLCI7IiwiPSIsIj8iLCJAIiwiWyIsIl0iLCJeIiwiXyIsInsiLCJ8IiwifSIsIn4iXSxlPWU9PntsZXQgbj0wO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKXtsZXQgYT1lW3JdO249ODMqbit0LmluZGV4T2YoYSl9cmV0dXJuIG59LG49KGUsbik9Pnt2YXIgcj0iIjtmb3IobGV0IGE9MTthPD1uO2ErKyl7bGV0IG89TWF0aC5mbG9vcihlKS9NYXRoLnBvdyg4MyxuLWEpJTgzO3IrPXRbTWF0aC5mbG9vcihvKV19cmV0dXJuIHJ9LHI9dD0+e2xldCBlPXQvMjU1O3JldHVybiBlPD0uMDQwNDU/ZS8xMi45MjpNYXRoLnBvdygoZSsuMDU1KS8xLjA1NSwyLjQpfSxhPXQ9PntsZXQgZT1NYXRoLm1heCgwLE1hdGgubWluKDEsdCkpO3JldHVybiBlPD0uMDAzMTMwOD9NYXRoLnRydW5jKDEyLjkyKmUqMjU1Ky41KTpNYXRoLnRydW5jKDI1NSooMS4wNTUqTWF0aC5wb3coZSwuNDE2NjY2NjY2NjY2NjY2NyktLjA1NSkrLjUpfSxvPSh0LGUpPT4odD0+dDwwPy0xOjEpKHQpKk1hdGgucG93KE1hdGguYWJzKHQpLGUpLHM9Y2xhc3MgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLm5hbWU9IlZhbGlkYXRpb25FcnJvciIsdGhpcy5tZXNzYWdlPXR9fSxpPXQ9PntpZighdHx8dC5sZW5ndGg8Nil0aHJvdyBuZXcgcygiVGhlIGJsdXJoYXNoIHN0cmluZyBtdXN0IGJlIGF0IGxlYXN0IDYgY2hhcmFjdGVycyIpO2xldCBuPWUodFswXSkscj1NYXRoLmZsb29yKG4vOSkrMSxhPW4lOSsxO2lmKHQubGVuZ3RoIT09NCsyKmEqcil0aHJvdyBuZXcgcyhgYmx1cmhhc2ggbGVuZ3RoIG1pc21hdGNoOiBsZW5ndGggaXMgJHt0Lmxlbmd0aH0gYnV0IGl0IHNob3VsZCBiZSAkezQrMiphKnJ9YCl9LGw9dD0+e2xldCBlPXQ+PjgmMjU1LG49MjU1JnQ7cmV0dXJuW3IodD4+MTYpLHIoZSkscihuKV19LGM9KHQsZSk9PntsZXQgbj1NYXRoLmZsb29yKHQvMzYxKSxyPU1hdGguZmxvb3IodC8xOSklMTksYT10JTE5O3JldHVybltvKChuLTkpLzksMikqZSxvKChyLTkpLzksMikqZSxvKChhLTkpLzksMikqZV19LGg9KHQsbixyLG8pPT57aSh0KSxvfD0xO2xldCBzPWUodFswXSksaD1NYXRoLmZsb29yKHMvOSkrMSx1PXMlOSsxLGY9KGUodFsxXSkrMSkvMTY2LHA9bmV3IEFycmF5KHUqaCk7Zm9yKGxldCBhPTA7YTxwLmxlbmd0aDthKyspaWYoMD09PWEpe2xldCBuPWUodC5zdWJzdHJpbmcoMiw2KSk7cFthXT1sKG4pfWVsc2V7bGV0IG49ZSh0LnN1YnN0cmluZyg0KzIqYSw2KzIqYSkpO3BbYV09YyhuLGYqbyl9bGV0IG09NCpuLGc9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KG0qcik7Zm9yKGxldCBlPTA7ZTxyO2UrKylmb3IobGV0IHQ9MDt0PG47dCsrKXtsZXQgbz0wLHM9MCxpPTA7Zm9yKGxldCBhPTA7YTxoO2ErKylmb3IobGV0IGw9MDtsPHU7bCsrKXtsZXQgYz1NYXRoLmNvcyhNYXRoLlBJKnQqbC9uKSpNYXRoLmNvcyhNYXRoLlBJKmUqYS9yKSxoPXBbbCthKnVdO28rPWhbMF0qYyxzKz1oWzFdKmMsaSs9aFsyXSpjfWxldCBsPWEobyksYz1hKHMpLGY9YShpKTtnWzQqdCswK2UqbV09bCxnWzQqdCsxK2UqbV09YyxnWzQqdCsyK2UqbV09ZixnWzQqdCszK2UqbV09MjU1fXJldHVybiBnfSx1PSh0LGUsbixhKT0+e2xldCBvPTAscz0wLGk9MCxsPTQqZTtmb3IobGV0IGg9MDtoPGU7aCsrKXtsZXQgZT00Kmg7Zm9yKGxldCBjPTA7YzxuO2MrKyl7bGV0IG49ZStjKmwsdT1hKGgsYyk7bys9dSpyKHRbbl0pLHMrPXUqcih0W24rMV0pLGkrPXUqcih0W24rMl0pfX1sZXQgYz0xLyhlKm4pO3JldHVybltvKmMscypjLGkqY119LGY9KHQsZSxyLGksbCk9PntpZihpPDF8fGk+OXx8bDwxfHxsPjkpdGhyb3cgbmV3IHMoIkJsdXJIYXNoIG11c3QgaGF2ZSBiZXR3ZWVuIDEgYW5kIDkgY29tcG9uZW50cyIpO2lmKGUqcio0IT09dC5sZW5ndGgpdGhyb3cgbmV3IHMoIldpZHRoIGFuZCBoZWlnaHQgbXVzdCBtYXRjaCB0aGUgcGl4ZWxzIGFycmF5Iik7bGV0IGM9W107Zm9yKGxldCBuPTA7bjxsO24rKylmb3IobGV0IGE9MDthPGk7YSsrKXtsZXQgbz0wPT1hJiYwPT1uPzE6MixzPXUodCxlLHIsKCh0LHMpPT5vKk1hdGguY29zKE1hdGguUEkqYSp0L2UpKk1hdGguY29zKE1hdGguUEkqbipzL3IpKSk7Yy5wdXNoKHMpfWxldCBoLGY9Y1swXSxwPWMuc2xpY2UoMSksbT0iIjtpZihtKz1uKGktMSs5KihsLTEpLDEpLHAubGVuZ3RoPjApe2xldCB0PU1hdGgubWF4KC4uLnAubWFwKCh0PT5NYXRoLm1heCguLi50KSkpKSxlPU1hdGguZmxvb3IoTWF0aC5tYXgoMCxNYXRoLm1pbig4MixNYXRoLmZsb29yKDE2Nip0LS41KSkpKTtoPShlKzEpLzE2NixtKz1uKGUsMSl9ZWxzZSBoPTEsbSs9bigwLDEpO3JldHVybiBtKz1uKCh0PT4oYSh0WzBdKTw8MTYpKyhhKHRbMV0pPDw4KSthKHRbMl0pKShmKSw0KSxwLmZvckVhY2goKHQ9PnttKz1uKCgodCxlKT0+MTkqTWF0aC5mbG9vcihNYXRoLm1heCgwLE1hdGgubWluKDE4LE1hdGguZmxvb3IoOSpvKHRbMF0vZSwuNSkrOS41KSkpKSoxOSsxOSpNYXRoLmZsb29yKE1hdGgubWF4KDAsTWF0aC5taW4oMTgsTWF0aC5mbG9vcig5Km8odFsxXS9lLC41KSs5LjUpKSkpK01hdGguZmxvb3IoTWF0aC5tYXgoMCxNYXRoLm1pbigxOCxNYXRoLmZsb29yKDkqbyh0WzJdL2UsLjUpKzkuNSkpKSkpKHQsaCksMil9KSksbX07Ci8qKgogICAqIEBsaWNlbnNlCiAgICogQ29weXJpZ2h0IDIwMTkgR29vZ2xlIExMQwogICAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wCiAgICovCmNvbnN0IHA9U3ltYm9sKCJDb21saW5rLnByb3h5IiksbT1TeW1ib2woIkNvbWxpbmsuZW5kcG9pbnQiKSxnPVN5bWJvbCgiQ29tbGluay5yZWxlYXNlUHJveHkiKSxNPVN5bWJvbCgiQ29tbGluay5maW5hbGl6ZXIiKSxkPVN5bWJvbCgiQ29tbGluay50aHJvd24iKSx5PXQ9PiJvYmplY3QiPT10eXBlb2YgdCYmbnVsbCE9PXR8fCJmdW5jdGlvbiI9PXR5cGVvZiB0LHc9bmV3IE1hcChbWyJwcm94eSIse2NhbkhhbmRsZTp0PT55KHQpJiZ0W3BdLHNlcmlhbGl6ZSh0KXtjb25zdHtwb3J0MTplLHBvcnQyOm59PW5ldyBNZXNzYWdlQ2hhbm5lbDtyZXR1cm4gYih0LGUpLFtuLFtuXV19LGRlc2VyaWFsaXplOnQ9Pih0LnN0YXJ0KCksZnVuY3Rpb24odCxlKXtjb25zdCBuPW5ldyBNYXA7cmV0dXJuIHQuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsKGZ1bmN0aW9uKHQpe2NvbnN0e2RhdGE6ZX09dDtpZighZXx8IWUuaWQpcmV0dXJuO2NvbnN0IHI9bi5nZXQoZS5pZCk7aWYocil0cnl7cihlKX1maW5hbGx5e24uZGVsZXRlKGUuaWQpfX0pKSxQKHQsbixbXSxlKX0odCkpfV0sWyJ0aHJvdyIse2NhbkhhbmRsZTp0PT55KHQpJiZkIGluIHQsc2VyaWFsaXplKHt2YWx1ZTp0fSl7bGV0IGU7cmV0dXJuIGU9dCBpbnN0YW5jZW9mIEVycm9yP3tpc0Vycm9yOiEwLHZhbHVlOnttZXNzYWdlOnQubWVzc2FnZSxuYW1lOnQubmFtZSxzdGFjazp0LnN0YWNrfX06e2lzRXJyb3I6ITEsdmFsdWU6dH0sW2UsW11dfSxkZXNlcmlhbGl6ZSh0KXtpZih0LmlzRXJyb3IpdGhyb3cgT2JqZWN0LmFzc2lnbihuZXcgRXJyb3IodC52YWx1ZS5tZXNzYWdlKSx0LnZhbHVlKTt0aHJvdyB0LnZhbHVlfX1dXSk7ZnVuY3Rpb24gYih0LGU9Z2xvYmFsVGhpcyxuPVsiKiJdKXtlLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLChmdW5jdGlvbiByKGEpe2lmKCFhfHwhYS5kYXRhKXJldHVybjtpZighZnVuY3Rpb24odCxlKXtmb3IoY29uc3QgbiBvZiB0KXtpZihlPT09bnx8IioiPT09bilyZXR1cm4hMDtpZihuIGluc3RhbmNlb2YgUmVnRXhwJiZuLnRlc3QoZSkpcmV0dXJuITB9cmV0dXJuITF9KG4sYS5vcmlnaW4pKXJldHVybiB2b2lkIGNvbnNvbGUud2FybihgSW52YWxpZCBvcmlnaW4gJyR7YS5vcmlnaW59JyBmb3IgY29tbGluayBwcm94eWApO2NvbnN0e2lkOm8sdHlwZTpzLHBhdGg6aX09T2JqZWN0LmFzc2lnbih7cGF0aDpbXX0sYS5kYXRhKSxsPShhLmRhdGEuYXJndW1lbnRMaXN0fHxbXSkubWFwKEwpO2xldCBjO3RyeXtjb25zdCBlPWkuc2xpY2UoMCwtMSkucmVkdWNlKCgodCxlKT0+dFtlXSksdCksbj1pLnJlZHVjZSgoKHQsZSk9PnRbZV0pLHQpO3N3aXRjaChzKXtjYXNlIkdFVCI6Yz1uO2JyZWFrO2Nhc2UiU0VUIjplW2kuc2xpY2UoLTEpWzBdXT1MKGEuZGF0YS52YWx1ZSksYz0hMDticmVhaztjYXNlIkFQUExZIjpjPW4uYXBwbHkoZSxsKTticmVhaztjYXNlIkNPTlNUUlVDVCI6Yz1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmFzc2lnbih0LHtbcF06ITB9KX0obmV3IG4oLi4ubCkpO2JyZWFrO2Nhc2UiRU5EUE9JTlQiOntjb25zdHtwb3J0MTplLHBvcnQyOm59PW5ldyBNZXNzYWdlQ2hhbm5lbDtiKHQsbiksYz1mdW5jdGlvbih0LGUpe3JldHVybiBULnNldCh0LGUpLHR9KGUsW2VdKX1icmVhaztjYXNlIlJFTEVBU0UiOmM9dm9pZCAwO2JyZWFrO2RlZmF1bHQ6cmV0dXJufX1jYXRjaChoKXtjPXt2YWx1ZTpoLFtkXTowfX1Qcm9taXNlLnJlc29sdmUoYykuY2F0Y2goKHQ9Pih7dmFsdWU6dCxbZF06MH0pKSkudGhlbigobj0+e2NvbnN0W2EsaV09UihuKTtlLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxhKSx7aWQ6b30pLGkpLCJSRUxFQVNFIj09PXMmJihlLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHIpLEUoZSksTSBpbiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgdFtNXSYmdFtNXSgpKX0pKS5jYXRjaCgodD0+e2NvbnN0W24scl09Uih7dmFsdWU6bmV3IFR5cGVFcnJvcigiVW5zZXJpYWxpemFibGUgcmV0dXJuIHZhbHVlIiksW2RdOjB9KTtlLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7aWQ6b30pLHIpfSkpfSkpLGUuc3RhcnQmJmUuc3RhcnQoKX1mdW5jdGlvbiBFKHQpeyhmdW5jdGlvbih0KXtyZXR1cm4iTWVzc2FnZVBvcnQiPT09dC5jb25zdHJ1Y3Rvci5uYW1lfSkodCkmJnQuY2xvc2UoKX1mdW5jdGlvbiB2KHQpe2lmKHQpdGhyb3cgbmV3IEVycm9yKCJQcm94eSBoYXMgYmVlbiByZWxlYXNlZCBhbmQgaXMgbm90IHVzZWFibGUiKX1mdW5jdGlvbiBTKHQpe3JldHVybiBPKHQsbmV3IE1hcCx7dHlwZToiUkVMRUFTRSJ9KS50aGVuKCgoKT0+e0UodCl9KSl9Y29uc3QgeD1uZXcgV2Vha01hcCxrPSJGaW5hbGl6YXRpb25SZWdpc3RyeSJpbiBnbG9iYWxUaGlzJiZuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoKHQ9Pntjb25zdCBlPSh4LmdldCh0KXx8MCktMTt4LnNldCh0LGUpLDA9PT1lJiZTKHQpfSkpO2Z1bmN0aW9uIFAodCxlLG49W10scj1mdW5jdGlvbigpe30pe2xldCBhPSExO2NvbnN0IG89bmV3IFByb3h5KHIse2dldChyLHMpe2lmKHYoYSkscz09PWcpcmV0dXJuKCk9PnshZnVuY3Rpb24odCl7ayYmay51bnJlZ2lzdGVyKHQpfShvKSxTKHQpLGUuY2xlYXIoKSxhPSEwfTtpZigidGhlbiI9PT1zKXtpZigwPT09bi5sZW5ndGgpcmV0dXJue3RoZW46KCk9Pm99O2NvbnN0IHI9Tyh0LGUse3R5cGU6IkdFVCIscGF0aDpuLm1hcCgodD0+dC50b1N0cmluZygpKSl9KS50aGVuKEwpO3JldHVybiByLnRoZW4uYmluZChyKX1yZXR1cm4gUCh0LGUsWy4uLm4sc10pfSxzZXQocixvLHMpe3YoYSk7Y29uc3RbaSxsXT1SKHMpO3JldHVybiBPKHQsZSx7dHlwZToiU0VUIixwYXRoOlsuLi5uLG9dLm1hcCgodD0+dC50b1N0cmluZygpKSksdmFsdWU6aX0sbCkudGhlbihMKX0sYXBwbHkocixvLHMpe3YoYSk7Y29uc3QgaT1uW24ubGVuZ3RoLTFdO2lmKGk9PT1tKXJldHVybiBPKHQsZSx7dHlwZToiRU5EUE9JTlQifSkudGhlbihMKTtpZigiYmluZCI9PT1pKXJldHVybiBQKHQsZSxuLnNsaWNlKDAsLTEpKTtjb25zdFtsLGNdPUEocyk7cmV0dXJuIE8odCxlLHt0eXBlOiJBUFBMWSIscGF0aDpuLm1hcCgodD0+dC50b1N0cmluZygpKSksYXJndW1lbnRMaXN0Omx9LGMpLnRoZW4oTCl9LGNvbnN0cnVjdChyLG8pe3YoYSk7Y29uc3RbcyxpXT1BKG8pO3JldHVybiBPKHQsZSx7dHlwZToiQ09OU1RSVUNUIixwYXRoOm4ubWFwKCh0PT50LnRvU3RyaW5nKCkpKSxhcmd1bWVudExpc3Q6c30saSkudGhlbihMKX19KTtyZXR1cm4gZnVuY3Rpb24odCxlKXtjb25zdCBuPSh4LmdldChlKXx8MCkrMTt4LnNldChlLG4pLGsmJmsucmVnaXN0ZXIodCxlLHQpfShvLHQpLG99ZnVuY3Rpb24gQSh0KXtjb25zdCBlPXQubWFwKFIpO3JldHVybltlLm1hcCgodD0+dFswXSkpLChuPWUubWFwKCh0PT50WzFdKSksQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxuKSldO3ZhciBufWNvbnN0IFQ9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gUih0KXtmb3IoY29uc3RbZSxuXW9mIHcpaWYobi5jYW5IYW5kbGUodCkpe2NvbnN0W3IsYV09bi5zZXJpYWxpemUodCk7cmV0dXJuW3t0eXBlOiJIQU5ETEVSIixuYW1lOmUsdmFsdWU6cn0sYV19cmV0dXJuW3t0eXBlOiJSQVciLHZhbHVlOnR9LFQuZ2V0KHQpfHxbXV19ZnVuY3Rpb24gTCh0KXtzd2l0Y2godC50eXBlKXtjYXNlIkhBTkRMRVIiOnJldHVybiB3LmdldCh0Lm5hbWUpLmRlc2VyaWFsaXplKHQudmFsdWUpO2Nhc2UiUkFXIjpyZXR1cm4gdC52YWx1ZX19ZnVuY3Rpb24gTyh0LGUsbixyKXtyZXR1cm4gbmV3IFByb21pc2UoKGE9Pntjb25zdCBvPW5ldyBBcnJheSg0KS5maWxsKDApLm1hcCgoKCk9Pk1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikudG9TdHJpbmcoMTYpKSkuam9pbigiLSIpO2Uuc2V0KG8sYSksdC5zdGFydCYmdC5zdGFydCgpLHQucG9zdE1lc3NhZ2UoT2JqZWN0LmFzc2lnbih7aWQ6b30sbikscil9KSl9Yih7VmFsaWRhdGlvbkVycm9yOnMsZW5jb2RlOmYsZGVjb2RlOmgsaXNCbHVyaGFzaFZhbGlkOnQ9Pnt0cnl7aSh0KX1jYXRjaChlKXtyZXR1cm57cmVzdWx0OiExLGVycm9yUmVhc29uOmUubWVzc2FnZX19cmV0dXJue3Jlc3VsdDohMH19fSl9KCk7Cg==";
139
+ const decodeBase64 = (base64) => Uint8Array.from(atob(base64), (c) => c.charCodeAt(0));
140
+ const blob = typeof self !== "undefined" && self.Blob && new Blob([decodeBase64(encodedJs)], { type: "text/javascript;charset=utf-8" });
141
+ function WorkerWrapper(options) {
142
+ let objURL;
143
+ try {
144
+ objURL = blob && (self.URL || self.webkitURL).createObjectURL(blob);
145
+ if (!objURL) throw "";
146
+ const worker = new Worker(objURL, {
147
+ name: options == null ? void 0 : options.name
148
+ });
149
+ worker.addEventListener("error", () => {
150
+ (self.URL || self.webkitURL).revokeObjectURL(objURL);
151
+ });
152
+ return worker;
153
+ } catch (e) {
154
+ return new Worker(
155
+ "data:text/javascript;base64," + encodedJs,
156
+ {
157
+ name: options == null ? void 0 : options.name
158
+ }
159
+ );
160
+ } finally {
161
+ objURL && (self.URL || self.webkitURL).revokeObjectURL(objURL);
162
+ }
163
+ }
164
+ wrap(new WorkerWrapper());
165
+ const contextmenu = {
166
+ beforeUpdate(el, binding) {
167
+ const { onContextmenu, onScroll, getBoundingClientRect } = useDropdownContextmenu(binding);
168
+ binding.value.init({
169
+ getBoundingClientRect
170
+ });
171
+ el.addEventListener(
172
+ "contextmenu",
173
+ onContextmenu,
174
+ false
175
+ );
176
+ const scrollContainerEl = findScrollContainer(binding.value.$el);
177
+ if (scrollContainerEl) {
178
+ scrollContainerEl.addEventListener("scroll", onScroll);
179
+ }
180
+ el.additionalData = { onContextmenu, onScroll, scrollContainerEl };
181
+ },
182
+ beforeUnmount(el) {
183
+ var _a, _b, _c;
184
+ if ((_a = el == null ? void 0 : el.additionalData) == null ? void 0 : _a.onContextmenu) {
185
+ el.removeEventListener("contextmenu", el.additionalData.onContextmenu);
186
+ }
187
+ if (((_b = el == null ? void 0 : el.additionalData) == null ? void 0 : _b.onScroll) && ((_c = el == null ? void 0 : el.additionalData) == null ? void 0 : _c.scrollContainerEl)) {
188
+ el.additionalData.scrollContainerEl.removeEventListener("scroll", el.additionalData.onScroll);
189
+ }
190
+ }
191
+ };
48
192
  const LinkProps = {
49
193
  /**
50
194
  * The router-link/nuxt-link property, if it is defined the button is rendered as a ruouter-link or nuxt-link.
@@ -367,44 +511,6 @@ const tooltip = /* @__PURE__ */ (() => {
367
511
  }
368
512
  };
369
513
  })();
370
- const contextmenu = {
371
- beforeUpdate(el, binding) {
372
- var _a, _b, _c;
373
- const clientX = ref(0);
374
- const clientY = ref(0);
375
- const virtualEl = {
376
- getBoundingClientRect() {
377
- return {
378
- width: 0,
379
- height: 0,
380
- x: clientX.value,
381
- y: clientY.value,
382
- top: clientY.value,
383
- left: clientX.value,
384
- right: clientX.value,
385
- bottom: clientY.value
386
- };
387
- }
388
- };
389
- if ((_a = binding.value) == null ? void 0 : _a.init) {
390
- (_c = (_b = binding.value).init) == null ? void 0 : _c.call(_b, virtualEl);
391
- }
392
- el.addEventListener(
393
- "contextmenu",
394
- (ev) => {
395
- var _a2, _b2, _c2;
396
- if ((_a2 = binding.value) == null ? void 0 : _a2.show) {
397
- ev.preventDefault();
398
- clientX.value = ev.clientX;
399
- clientY.value = ev.clientY;
400
- (_c2 = (_b2 = binding.value).show) == null ? void 0 : _c2.call(_b2);
401
- return false;
402
- }
403
- },
404
- false
405
- );
406
- }
407
- };
408
514
  export {
409
515
  contextmenu as vContextmenu,
410
516
  tooltip as vTooltip