maz-ui 4.0.0-alpha.4 → 4.0.0-alpha.5

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 (435) hide show
  1. package/dist/assets/{CountrySelector.Cnqbl3xF.css → CountrySelector.BQiHy60b.css} +1 -1
  2. package/dist/assets/{MazAccordion.DaqF3ZAX.css → MazAccordion.BE-38uDK.css} +1 -1
  3. package/dist/assets/{MazAnimatedCounter.DYYlw_wl.css → MazAnimatedCounter.ButbqlDb.css} +1 -1
  4. package/dist/assets/{MazAnimatedText.Dk4QO4xF.css → MazAnimatedText.BM3XYGO2.css} +1 -1
  5. package/dist/assets/{MazAvatar.L1UreldR.css → MazAvatar.udTL0S0c.css} +1 -1
  6. package/dist/assets/{MazBadge.RMWNkgZL.css → MazBadge.Cgfo0F7e.css} +1 -1
  7. package/dist/assets/{MazBottomSheet.Dqr-kpLb.css → MazBottomSheet.FbcAQBpM.css} +1 -1
  8. package/dist/assets/MazBtn.Bz7wwOFh.css +1 -0
  9. package/dist/assets/{MazCard.Cod9pIM4.css → MazCard.BayiNvpH.css} +1 -1
  10. package/dist/assets/{MazCardSpotlight.DuZac0w4.css → MazCardSpotlight.Y7PEY9QV.css} +1 -1
  11. package/dist/assets/{MazCarousel.BQIrqJ8T.css → MazCarousel.CB32PQvq.css} +1 -1
  12. package/dist/assets/{MazCheckbox.BQVJ7EUB.css → MazCheckbox.5EI5lIDK.css} +1 -1
  13. package/dist/assets/{MazChecklist.5ArDAEhG.css → MazChecklist.BGnIiTsI.css} +1 -1
  14. package/dist/assets/{MazCircularProgressBar.DywLXEfR.css → MazCircularProgressBar.0-JvCHgE.css} +1 -1
  15. package/dist/assets/{MazDialog.BLzdH8aa.css → MazDialog.BJMxj6he.css} +1 -1
  16. package/dist/assets/{MazDrawer.Cu4KVc_z.css → MazDrawer.BqaLe_QM.css} +1 -1
  17. package/dist/assets/{MazFullscreenLoader.DTW_WUM6.css → MazFullscreenLoader.Dkg4LB9B.css} +1 -1
  18. package/dist/assets/MazGallery.BoPDBMcv.css +1 -0
  19. package/dist/assets/MazInput.DMFoUNTH.css +1 -0
  20. package/dist/assets/MazInputCode.C0rRpNFq.css +1 -0
  21. package/dist/assets/{MazInputPhoneNumber.DKac4ZYj.css → MazInputPhoneNumber.Ill3zwW5.css} +1 -1
  22. package/dist/assets/{MazInputTags.eygPFBJC.css → MazInputTags.ewDauXwM.css} +1 -1
  23. package/dist/assets/{MazLazyImg.BvztvWbf.css → MazLazyImg.B6kyFMu0.css} +1 -1
  24. package/dist/assets/MazLink.C905PoWd.css +1 -0
  25. package/dist/assets/MazLoadingBar.BVDaL2oq.css +1 -0
  26. package/dist/assets/{MazPagination.DSYY_yu7.css → MazPagination.DxqlYYDI.css} +1 -1
  27. package/dist/assets/MazPicker.oSzqOK82.css +1 -0
  28. package/dist/assets/{MazPickerCalendar.K1FbevcF.css → MazPickerCalendar.9hsvH81G.css} +1 -1
  29. package/dist/assets/MazPickerCalendarMonth.DoG1aIdE.css +1 -0
  30. package/dist/assets/{MazPickerCalendarSwitcher.23EFP_7Y.css → MazPickerCalendarSwitcher.Cwm0pn-f.css} +1 -1
  31. package/dist/assets/{MazPickerHeader.CfwpRnA1.css → MazPickerHeader.BH5Uy1iP.css} +1 -1
  32. package/dist/assets/{MazPickerMonthSwitcher.Cl1WlZpR.css → MazPickerMonthSwitcher.D9wXQnld.css} +1 -1
  33. package/dist/assets/{MazPickerShortcuts.B1ASAi7L.css → MazPickerShortcuts.CLZ4NUtN.css} +1 -1
  34. package/dist/assets/{MazPickerTime.5J3qaKGo.css → MazPickerTime.B-Ym15z4.css} +1 -1
  35. package/dist/assets/{MazPickerYearSwitcher.Bt0efux6.css → MazPickerYearSwitcher.9YqgG2Jv.css} +1 -1
  36. package/dist/assets/{MazPullToRefresh.BdvKaU9N.css → MazPullToRefresh.BSBm9qbV.css} +1 -1
  37. package/dist/assets/{MazRadio.zYTBn9Pj.css → MazRadio.OJL8pfy2.css} +1 -1
  38. package/dist/assets/{MazRadioButtons.CIq38oX6.css → MazRadioButtons.u111N9bH.css} +1 -1
  39. package/dist/assets/MazReadingProgressBar.CT2EjYkv.css +1 -0
  40. package/dist/assets/{MazSelect.CH_76PSg.css → MazSelect.DG-B1UJ6.css} +1 -1
  41. package/dist/assets/{MazSlider.D08gO9DD.css → MazSlider.KrU-f4K4.css} +1 -1
  42. package/dist/assets/MazSpinner.C2jmWJte.css +1 -0
  43. package/dist/assets/{MazStepper.BE3Mm9rm.css → MazStepper.CFdY5O1y.css} +1 -1
  44. package/dist/assets/MazTable.uvNQLDVh.css +1 -0
  45. package/dist/assets/MazTableCell.DCsBuRdY.css +1 -0
  46. package/dist/assets/MazTableRow.B4o1JJ00.css +1 -0
  47. package/dist/assets/MazTableTitle.CA6gYzgP.css +1 -0
  48. package/dist/assets/{MazTabsBar.-q3BbMXe.css → MazTabsBar.Bfij2njx.css} +1 -1
  49. package/dist/assets/{MazTabsContentItem.C0ygFU51.css → MazTabsContentItem.C9kvAsC7.css} +1 -1
  50. package/dist/assets/{MazTextarea.QTMu0OQv.css → MazTextarea.BML1BVBM.css} +1 -1
  51. package/dist/assets/PhoneInput.BBnKae_d.css +1 -0
  52. package/dist/assets/{fullscreen-img.hjNozahA.css → fullscreen-img.Dnt1uj_5.css} +1 -1
  53. package/dist/assets/{toaster.C9zhIkIO.css → toaster.BfTrtY6B.css} +1 -1
  54. package/dist/chunks/{CountrySelector.mFGaqpPf.cjs → CountrySelector.1nlVeBqW.cjs} +2 -2
  55. package/dist/chunks/CountrySelector.1nlVeBqW.cjs.map +1 -0
  56. package/dist/chunks/{CountrySelector.C5XZelLY.mjs → CountrySelector.qQCR0FE6.mjs} +14 -14
  57. package/dist/chunks/CountrySelector.qQCR0FE6.mjs.map +1 -0
  58. package/dist/chunks/MazDialogPromise.vue_vue_type_script_setup_true_lang.CS5GU9Q2.cjs.map +1 -1
  59. package/dist/chunks/MazDialogPromise.vue_vue_type_script_setup_true_lang.bPYjg0yY.mjs.map +1 -1
  60. package/dist/chunks/MazDropdown.vue_vue_type_script_setup_true_lang.B5kO0VJW.mjs.map +1 -1
  61. package/dist/chunks/MazDropdown.vue_vue_type_script_setup_true_lang.DLWmXVjB.cjs.map +1 -1
  62. package/dist/chunks/MazIcon.vue_vue_type_script_setup_true_lang.C5NwBerh.cjs.map +1 -1
  63. package/dist/chunks/MazIcon.vue_vue_type_script_setup_true_lang.CLoEj0Zf.mjs.map +1 -1
  64. package/dist/chunks/{MazInputNumber.vue_vue_type_script_setup_true_lang.DiawfWBC.cjs → MazInputNumber.vue_vue_type_script_setup_true_lang.BM2uHjda.cjs} +2 -2
  65. package/dist/chunks/MazInputNumber.vue_vue_type_script_setup_true_lang.BM2uHjda.cjs.map +1 -0
  66. package/dist/chunks/{MazInputNumber.vue_vue_type_script_setup_true_lang.Bbod2mLd.mjs → MazInputNumber.vue_vue_type_script_setup_true_lang.CsH-SPhu.mjs} +5 -5
  67. package/dist/chunks/MazInputNumber.vue_vue_type_script_setup_true_lang.CsH-SPhu.mjs.map +1 -0
  68. package/dist/chunks/{MazInputPhoneNumber.B173m1hd.mjs → MazInputPhoneNumber.BluSBPXE.mjs} +10 -10
  69. package/dist/chunks/{MazInputPhoneNumber.B173m1hd.mjs.map → MazInputPhoneNumber.BluSBPXE.mjs.map} +1 -1
  70. package/dist/chunks/{MazInputPhoneNumber.EZVh1Yx5.cjs → MazInputPhoneNumber.TorVuc9s.cjs} +2 -2
  71. package/dist/chunks/{MazInputPhoneNumber.EZVh1Yx5.cjs.map → MazInputPhoneNumber.TorVuc9s.cjs.map} +1 -1
  72. package/dist/chunks/{MazInputPrice.vue_vue_type_script_setup_true_lang.C3X2lwRl.mjs → MazInputPrice.vue_vue_type_script_setup_true_lang.C873_Haj.mjs} +5 -5
  73. package/dist/chunks/MazInputPrice.vue_vue_type_script_setup_true_lang.C873_Haj.mjs.map +1 -0
  74. package/dist/chunks/{MazInputPrice.vue_vue_type_script_setup_true_lang.CCatmP_L.cjs → MazInputPrice.vue_vue_type_script_setup_true_lang.Ovh3fdmh.cjs} +2 -2
  75. package/dist/chunks/MazInputPrice.vue_vue_type_script_setup_true_lang.Ovh3fdmh.cjs.map +1 -0
  76. package/dist/chunks/{MazPicker.BZE8cw36.cjs → MazPicker.D2ra6fVy.cjs} +2 -2
  77. package/dist/chunks/MazPicker.D2ra6fVy.cjs.map +1 -0
  78. package/dist/chunks/{MazPicker.DCnOkRvv.mjs → MazPicker.hoqM5DbN.mjs} +20 -20
  79. package/dist/chunks/MazPicker.hoqM5DbN.mjs.map +1 -0
  80. package/dist/chunks/{MazPickerCalendar.NeYLrtl-.mjs → MazPickerCalendar.Ban3DAo1.mjs} +4 -4
  81. package/dist/chunks/MazPickerCalendar.Ban3DAo1.mjs.map +1 -0
  82. package/dist/chunks/{MazPickerCalendar.CVZ8VoYr.cjs → MazPickerCalendar.CEJcAKlj.cjs} +2 -2
  83. package/dist/chunks/MazPickerCalendar.CEJcAKlj.cjs.map +1 -0
  84. package/dist/chunks/{MazPickerCalendarMonth.rnaiDHFM.mjs → MazPickerCalendarMonth.D4Ink4If.mjs} +14 -14
  85. package/dist/chunks/MazPickerCalendarMonth.D4Ink4If.mjs.map +1 -0
  86. package/dist/chunks/{MazPickerCalendarMonth.DpvQC45k.cjs → MazPickerCalendarMonth.DBDcSR1B.cjs} +2 -2
  87. package/dist/chunks/MazPickerCalendarMonth.DBDcSR1B.cjs.map +1 -0
  88. package/dist/chunks/{MazPickerCalendarSwitcher.DC2wff_J.cjs → MazPickerCalendarSwitcher.CyjRYcya.cjs} +2 -2
  89. package/dist/chunks/MazPickerCalendarSwitcher.CyjRYcya.cjs.map +1 -0
  90. package/dist/chunks/{MazPickerCalendarSwitcher.DFGrD6Cr.mjs → MazPickerCalendarSwitcher.DTDyFG7S.mjs} +19 -19
  91. package/dist/chunks/MazPickerCalendarSwitcher.DTDyFG7S.mjs.map +1 -0
  92. package/dist/chunks/{MazPickerHeader.B7YY9SJI.mjs → MazPickerHeader.C1asX8dz.mjs} +8 -8
  93. package/dist/chunks/MazPickerHeader.C1asX8dz.mjs.map +1 -0
  94. package/dist/chunks/{MazPickerHeader.l7NcmiGH.cjs → MazPickerHeader.COT92ysE.cjs} +2 -2
  95. package/dist/chunks/MazPickerHeader.COT92ysE.cjs.map +1 -0
  96. package/dist/chunks/{MazPickerMonthSwitcher.CbplWFfL.cjs → MazPickerMonthSwitcher.Cw82Rq9C.cjs} +2 -2
  97. package/dist/chunks/MazPickerMonthSwitcher.Cw82Rq9C.cjs.map +1 -0
  98. package/dist/chunks/{MazPickerMonthSwitcher.CAPx3PCt.mjs → MazPickerMonthSwitcher.jPGBQm-N.mjs} +9 -9
  99. package/dist/chunks/MazPickerMonthSwitcher.jPGBQm-N.mjs.map +1 -0
  100. package/dist/chunks/{MazPickerShortcuts.Bawm0q33.mjs → MazPickerShortcuts.Dvs1sJMi.mjs} +3 -3
  101. package/dist/chunks/MazPickerShortcuts.Dvs1sJMi.mjs.map +1 -0
  102. package/dist/chunks/{MazPickerShortcuts.LxFs0Y6N.cjs → MazPickerShortcuts.GUfnNHPI.cjs} +2 -2
  103. package/dist/chunks/MazPickerShortcuts.GUfnNHPI.cjs.map +1 -0
  104. package/dist/chunks/{MazPickerTime.C27aFPPw.mjs → MazPickerTime.C1LitEcr.mjs} +5 -5
  105. package/dist/chunks/MazPickerTime.C1LitEcr.mjs.map +1 -0
  106. package/dist/chunks/{MazPickerTime.7cxq-Qac.cjs → MazPickerTime.wlOm39gv.cjs} +2 -2
  107. package/dist/chunks/MazPickerTime.wlOm39gv.cjs.map +1 -0
  108. package/dist/chunks/{MazPickerYearSwitcher.Dku2IMIJ.cjs → MazPickerYearSwitcher.CPREj35R.cjs} +2 -2
  109. package/dist/chunks/MazPickerYearSwitcher.CPREj35R.cjs.map +1 -0
  110. package/dist/chunks/{MazPickerYearSwitcher.DMBOaMYy.mjs → MazPickerYearSwitcher.D_onf-0L.mjs} +17 -17
  111. package/dist/chunks/MazPickerYearSwitcher.D_onf-0L.mjs.map +1 -0
  112. package/dist/chunks/MazSwitch.vue_vue_type_script_setup_true_lang.C74s_H37.cjs.map +1 -1
  113. package/dist/chunks/MazSwitch.vue_vue_type_script_setup_true_lang.jyNV3g3U.mjs.map +1 -1
  114. package/dist/chunks/{MazTable.vue_vue_type_style_index_0_scoped_4101f1d3_lang.Ctmf2NVE.cjs → MazTable.vue_vue_type_style_index_0_scoped_cd8655c9_lang.BnCH1CvT.cjs} +2 -2
  115. package/dist/chunks/MazTable.vue_vue_type_style_index_0_scoped_cd8655c9_lang.BnCH1CvT.cjs.map +1 -0
  116. package/dist/chunks/{MazTable.vue_vue_type_style_index_0_scoped_4101f1d3_lang.Dwkx-V96.mjs → MazTable.vue_vue_type_style_index_0_scoped_cd8655c9_lang.Dj2OkfOV.mjs} +4 -4
  117. package/dist/chunks/MazTable.vue_vue_type_style_index_0_scoped_cd8655c9_lang.Dj2OkfOV.mjs.map +1 -0
  118. package/dist/chunks/MazTabsContent.vue_vue_type_script_setup_true_lang.BGqO0ynq.mjs.map +1 -1
  119. package/dist/chunks/MazTabsContent.vue_vue_type_script_setup_true_lang.DariT_zv.cjs.map +1 -1
  120. package/dist/chunks/{PhoneInput.9GQJbL9x.mjs → PhoneInput.DYm0yzgy.mjs} +11 -11
  121. package/dist/chunks/PhoneInput.DYm0yzgy.mjs.map +1 -0
  122. package/dist/chunks/{PhoneInput.D5DG4S60.cjs → PhoneInput.wXP8tsCy.cjs} +2 -2
  123. package/dist/chunks/PhoneInput.wXP8tsCy.cjs.map +1 -0
  124. package/dist/chunks/{fullscreen-img.directive.CrLLYi0D.mjs → fullscreen-img.directive.CEBhPyiD.mjs} +22 -22
  125. package/dist/chunks/fullscreen-img.directive.CEBhPyiD.mjs.map +1 -0
  126. package/dist/chunks/{fullscreen-img.directive.CeREtf7H.cjs → fullscreen-img.directive.CK-8DToy.cjs} +2 -2
  127. package/dist/chunks/fullscreen-img.directive.CK-8DToy.cjs.map +1 -0
  128. package/dist/chunks/lazy-img.directive.BeENE6S9.cjs.map +1 -1
  129. package/dist/chunks/lazy-img.directive.DqXA0UFo.mjs.map +1 -1
  130. package/dist/chunks/{utils.Bex2hM45.mjs → utils.BxNCknPj.mjs} +11 -11
  131. package/dist/chunks/utils.BxNCknPj.mjs.map +1 -0
  132. package/dist/chunks/{utils.vGzCTXH5.cjs → utils.K864VNFX.cjs} +2 -2
  133. package/dist/chunks/utils.K864VNFX.cjs.map +1 -0
  134. package/dist/components/MazAccordion.cjs +1 -1
  135. package/dist/components/MazAccordion.cjs.map +1 -1
  136. package/dist/components/MazAccordion.mjs +13 -13
  137. package/dist/components/MazAccordion.mjs.map +1 -1
  138. package/dist/components/MazAnimatedCounter.cjs +1 -1
  139. package/dist/components/MazAnimatedCounter.cjs.map +1 -1
  140. package/dist/components/MazAnimatedCounter.mjs +2 -2
  141. package/dist/components/MazAnimatedCounter.mjs.map +1 -1
  142. package/dist/components/MazAnimatedText.cjs +1 -1
  143. package/dist/components/MazAnimatedText.cjs.map +1 -1
  144. package/dist/components/MazAnimatedText.mjs +11 -11
  145. package/dist/components/MazAnimatedText.mjs.map +1 -1
  146. package/dist/components/MazAvatar.cjs +1 -1
  147. package/dist/components/MazAvatar.cjs.map +1 -1
  148. package/dist/components/MazAvatar.mjs +2 -2
  149. package/dist/components/MazAvatar.mjs.map +1 -1
  150. package/dist/components/MazBadge.cjs +1 -1
  151. package/dist/components/MazBadge.mjs +2 -2
  152. package/dist/components/MazBottomSheet.cjs +1 -1
  153. package/dist/components/MazBottomSheet.cjs.map +1 -1
  154. package/dist/components/MazBottomSheet.mjs +10 -10
  155. package/dist/components/MazBottomSheet.mjs.map +1 -1
  156. package/dist/components/MazBtn.cjs +1 -1
  157. package/dist/components/MazBtn.cjs.map +1 -1
  158. package/dist/components/MazBtn.mjs +2 -2
  159. package/dist/components/MazBtn.mjs.map +1 -1
  160. package/dist/components/MazCard.cjs +1 -1
  161. package/dist/components/MazCard.cjs.map +1 -1
  162. package/dist/components/MazCard.mjs +2 -2
  163. package/dist/components/MazCard.mjs.map +1 -1
  164. package/dist/components/MazCardSpotlight.cjs +1 -1
  165. package/dist/components/MazCardSpotlight.cjs.map +1 -1
  166. package/dist/components/MazCardSpotlight.mjs +2 -2
  167. package/dist/components/MazCardSpotlight.mjs.map +1 -1
  168. package/dist/components/MazCarousel.cjs +1 -1
  169. package/dist/components/MazCarousel.cjs.map +1 -1
  170. package/dist/components/MazCarousel.mjs +2 -2
  171. package/dist/components/MazCarousel.mjs.map +1 -1
  172. package/dist/components/MazCheckbox.cjs +1 -1
  173. package/dist/components/MazCheckbox.cjs.map +1 -1
  174. package/dist/components/MazCheckbox.mjs +6 -6
  175. package/dist/components/MazCheckbox.mjs.map +1 -1
  176. package/dist/components/MazChecklist.cjs +1 -1
  177. package/dist/components/MazChecklist.cjs.map +1 -1
  178. package/dist/components/MazChecklist.mjs +3 -3
  179. package/dist/components/MazChecklist.mjs.map +1 -1
  180. package/dist/components/MazCircularProgressBar.cjs +1 -1
  181. package/dist/components/MazCircularProgressBar.cjs.map +1 -1
  182. package/dist/components/MazCircularProgressBar.mjs +2 -2
  183. package/dist/components/MazCircularProgressBar.mjs.map +1 -1
  184. package/dist/components/MazDialog.cjs +1 -1
  185. package/dist/components/MazDialog.cjs.map +1 -1
  186. package/dist/components/MazDialog.mjs +2 -2
  187. package/dist/components/MazDialog.mjs.map +1 -1
  188. package/dist/components/MazDrawer.cjs +1 -1
  189. package/dist/components/MazDrawer.cjs.map +1 -1
  190. package/dist/components/MazDrawer.mjs +8 -8
  191. package/dist/components/MazDrawer.mjs.map +1 -1
  192. package/dist/components/MazDropzone.cjs.map +1 -1
  193. package/dist/components/MazDropzone.mjs.map +1 -1
  194. package/dist/components/MazFullscreenLoader.cjs +1 -1
  195. package/dist/components/MazFullscreenLoader.cjs.map +1 -1
  196. package/dist/components/MazFullscreenLoader.mjs +2 -2
  197. package/dist/components/MazFullscreenLoader.mjs.map +1 -1
  198. package/dist/components/MazGallery.cjs +1 -1
  199. package/dist/components/MazGallery.cjs.map +1 -1
  200. package/dist/components/MazGallery.mjs +3 -3
  201. package/dist/components/MazGallery.mjs.map +1 -1
  202. package/dist/components/MazInput.cjs +1 -1
  203. package/dist/components/MazInput.cjs.map +1 -1
  204. package/dist/components/MazInput.mjs +2 -2
  205. package/dist/components/MazInput.mjs.map +1 -1
  206. package/dist/components/MazInputCode.cjs +1 -1
  207. package/dist/components/MazInputCode.cjs.map +1 -1
  208. package/dist/components/MazInputCode.mjs +5 -5
  209. package/dist/components/MazInputCode.mjs.map +1 -1
  210. package/dist/components/MazInputNumber.cjs +1 -1
  211. package/dist/components/MazInputNumber.mjs +1 -1
  212. package/dist/components/MazInputPhoneNumber.cjs +1 -1
  213. package/dist/components/MazInputPhoneNumber.mjs +1 -1
  214. package/dist/components/MazInputPrice.cjs +1 -1
  215. package/dist/components/MazInputPrice.mjs +1 -1
  216. package/dist/components/MazInputTags.cjs +1 -1
  217. package/dist/components/MazInputTags.cjs.map +1 -1
  218. package/dist/components/MazInputTags.mjs +8 -8
  219. package/dist/components/MazInputTags.mjs.map +1 -1
  220. package/dist/components/MazLazyImg.cjs +1 -1
  221. package/dist/components/MazLazyImg.cjs.map +1 -1
  222. package/dist/components/MazLazyImg.mjs +5 -5
  223. package/dist/components/MazLazyImg.mjs.map +1 -1
  224. package/dist/components/MazLink.cjs +1 -1
  225. package/dist/components/MazLink.cjs.map +1 -1
  226. package/dist/components/MazLink.mjs +2 -2
  227. package/dist/components/MazLink.mjs.map +1 -1
  228. package/dist/components/MazLoadingBar.cjs +1 -1
  229. package/dist/components/MazLoadingBar.cjs.map +1 -1
  230. package/dist/components/MazLoadingBar.mjs +4 -4
  231. package/dist/components/MazLoadingBar.mjs.map +1 -1
  232. package/dist/components/MazPagination.cjs +1 -1
  233. package/dist/components/MazPagination.cjs.map +1 -1
  234. package/dist/components/MazPagination.mjs +2 -2
  235. package/dist/components/MazPagination.mjs.map +1 -1
  236. package/dist/components/MazPicker.cjs +1 -1
  237. package/dist/components/MazPicker.mjs +1 -1
  238. package/dist/components/MazPullToRefresh.cjs +1 -1
  239. package/dist/components/MazPullToRefresh.cjs.map +1 -1
  240. package/dist/components/MazPullToRefresh.mjs +2 -2
  241. package/dist/components/MazPullToRefresh.mjs.map +1 -1
  242. package/dist/components/MazRadio.cjs +1 -1
  243. package/dist/components/MazRadio.cjs.map +1 -1
  244. package/dist/components/MazRadio.mjs +7 -7
  245. package/dist/components/MazRadio.mjs.map +1 -1
  246. package/dist/components/MazRadioButtons.cjs +1 -1
  247. package/dist/components/MazRadioButtons.cjs.map +1 -1
  248. package/dist/components/MazRadioButtons.mjs +2 -2
  249. package/dist/components/MazRadioButtons.mjs.map +1 -1
  250. package/dist/components/MazReadingProgressBar.cjs +1 -1
  251. package/dist/components/MazReadingProgressBar.cjs.map +1 -1
  252. package/dist/components/MazReadingProgressBar.mjs +7 -7
  253. package/dist/components/MazReadingProgressBar.mjs.map +1 -1
  254. package/dist/components/MazSelect.cjs +1 -1
  255. package/dist/components/MazSelect.cjs.map +1 -1
  256. package/dist/components/MazSelect.mjs +7 -7
  257. package/dist/components/MazSelect.mjs.map +1 -1
  258. package/dist/components/MazSlider.cjs +1 -1
  259. package/dist/components/MazSlider.cjs.map +1 -1
  260. package/dist/components/MazSlider.mjs +11 -11
  261. package/dist/components/MazSlider.mjs.map +1 -1
  262. package/dist/components/MazSpinner.cjs +1 -1
  263. package/dist/components/MazSpinner.mjs +2 -2
  264. package/dist/components/MazStepper.cjs +1 -1
  265. package/dist/components/MazStepper.cjs.map +1 -1
  266. package/dist/components/MazStepper.mjs +22 -22
  267. package/dist/components/MazStepper.mjs.map +1 -1
  268. package/dist/components/MazTable.cjs +1 -1
  269. package/dist/components/MazTable.mjs +3 -3
  270. package/dist/components/MazTableCell.cjs +1 -1
  271. package/dist/components/MazTableCell.cjs.map +1 -1
  272. package/dist/components/MazTableCell.mjs +7 -7
  273. package/dist/components/MazTableCell.mjs.map +1 -1
  274. package/dist/components/MazTableRow.cjs +1 -1
  275. package/dist/components/MazTableRow.cjs.map +1 -1
  276. package/dist/components/MazTableRow.mjs +7 -7
  277. package/dist/components/MazTableRow.mjs.map +1 -1
  278. package/dist/components/MazTableTitle.cjs +1 -1
  279. package/dist/components/MazTableTitle.cjs.map +1 -1
  280. package/dist/components/MazTableTitle.mjs +3 -3
  281. package/dist/components/MazTableTitle.mjs.map +1 -1
  282. package/dist/components/MazTabsBar.cjs +1 -1
  283. package/dist/components/MazTabsBar.cjs.map +1 -1
  284. package/dist/components/MazTabsBar.mjs +2 -2
  285. package/dist/components/MazTabsBar.mjs.map +1 -1
  286. package/dist/components/MazTabsContentItem.cjs +1 -1
  287. package/dist/components/MazTabsContentItem.cjs.map +1 -1
  288. package/dist/components/MazTabsContentItem.mjs +2 -2
  289. package/dist/components/MazTabsContentItem.mjs.map +1 -1
  290. package/dist/components/MazTextarea.cjs +1 -1
  291. package/dist/components/MazTextarea.cjs.map +1 -1
  292. package/dist/components/MazTextarea.mjs +6 -6
  293. package/dist/components/MazTextarea.mjs.map +1 -1
  294. package/dist/composables/useAos.cjs.map +1 -1
  295. package/dist/composables/useAos.mjs.map +1 -1
  296. package/dist/composables/useDialog.cjs.map +1 -1
  297. package/dist/composables/useDialog.mjs.map +1 -1
  298. package/dist/composables/useFormField.cjs +1 -1
  299. package/dist/composables/useFormField.cjs.map +1 -1
  300. package/dist/composables/useFormField.mjs +19 -19
  301. package/dist/composables/useFormField.mjs.map +1 -1
  302. package/dist/composables/useFormValidator.cjs +1 -1
  303. package/dist/composables/useFormValidator.cjs.map +1 -1
  304. package/dist/composables/useFormValidator.mjs +11 -11
  305. package/dist/composables/useFormValidator.mjs.map +1 -1
  306. package/dist/composables/useIdleTimeout.cjs.map +1 -1
  307. package/dist/composables/useIdleTimeout.mjs.map +1 -1
  308. package/dist/composables/useStringMatching.cjs +1 -1
  309. package/dist/composables/useStringMatching.cjs.map +1 -1
  310. package/dist/composables/useStringMatching.mjs +1 -1
  311. package/dist/composables/useStringMatching.mjs.map +1 -1
  312. package/dist/composables/useSwipe.cjs +1 -1
  313. package/dist/composables/useSwipe.cjs.map +1 -1
  314. package/dist/composables/useSwipe.mjs +3 -3
  315. package/dist/composables/useSwipe.mjs.map +1 -1
  316. package/dist/composables/useThemeHandler.cjs +1 -1
  317. package/dist/composables/useThemeHandler.cjs.map +1 -1
  318. package/dist/composables/useThemeHandler.mjs +1 -1
  319. package/dist/composables/useThemeHandler.mjs.map +1 -1
  320. package/dist/composables/useToast.cjs.map +1 -1
  321. package/dist/composables/useToast.mjs.map +1 -1
  322. package/dist/composables/useUserVisibilty.cjs.map +1 -1
  323. package/dist/composables/useUserVisibilty.mjs.map +1 -1
  324. package/dist/composables/useWait.cjs.map +1 -1
  325. package/dist/composables/useWait.mjs.map +1 -1
  326. package/dist/composables/useWindowSize.cjs +1 -1
  327. package/dist/composables/useWindowSize.cjs.map +1 -1
  328. package/dist/composables/useWindowSize.mjs +5 -5
  329. package/dist/composables/useWindowSize.mjs.map +1 -1
  330. package/dist/directives/vClickOutside.cjs.map +1 -1
  331. package/dist/directives/vClickOutside.mjs.map +1 -1
  332. package/dist/directives/vClosable.cjs.map +1 -1
  333. package/dist/directives/vClosable.mjs.map +1 -1
  334. package/dist/directives/vFullscreenImg.cjs +1 -1
  335. package/dist/directives/vFullscreenImg.mjs +1 -1
  336. package/dist/directives/vLazyImg.cjs.map +1 -1
  337. package/dist/directives/vLazyImg.mjs.map +1 -1
  338. package/dist/directives/vTooltip.cjs.map +1 -1
  339. package/dist/directives/vTooltip.mjs.map +1 -1
  340. package/dist/filters/pascalCase.cjs.map +1 -1
  341. package/dist/filters/pascalCase.mjs.map +1 -1
  342. package/dist/helpers/countryCodeToUnicodeFlag.cjs.map +1 -1
  343. package/dist/helpers/countryCodeToUnicodeFlag.mjs.map +1 -1
  344. package/dist/index.cjs +1 -1
  345. package/dist/index.mjs +5 -5
  346. package/dist/nuxt/module.d.mts +1 -1
  347. package/dist/nuxt/module.d.ts +1 -1
  348. package/dist/nuxt/module.json +1 -1
  349. package/dist/nuxt/module.mjs +13 -8
  350. package/dist/nuxt/runtime/plugins/dialog.js +2 -2
  351. package/dist/plugins/aos.cjs.map +1 -1
  352. package/dist/plugins/aos.mjs.map +1 -1
  353. package/dist/plugins/dialog.cjs.map +1 -1
  354. package/dist/plugins/dialog.mjs.map +1 -1
  355. package/dist/plugins/toaster.cjs +1 -1
  356. package/dist/plugins/toaster.cjs.map +1 -1
  357. package/dist/plugins/toaster.mjs +2 -2
  358. package/dist/plugins/toaster.mjs.map +1 -1
  359. package/dist/resolvers/UnpluginVueComponentsResolver.cjs.map +1 -1
  360. package/dist/resolvers/UnpluginVueComponentsResolver.mjs.map +1 -1
  361. package/dist/types/components/MazAvatar.vue.d.ts +1 -1
  362. package/dist/types/components/MazCard.vue.d.ts +1 -1
  363. package/dist/types/components/MazDialogPromise/useMazDialogPromise.d.ts +1 -1
  364. package/dist/types/components/MazDropdown.vue.d.ts +1 -1
  365. package/dist/types/components/MazInputPhoneNumber/CountrySelector.vue.d.ts +3 -3
  366. package/dist/types/components/MazInputPhoneNumber/types.d.ts +1 -1
  367. package/dist/types/components/MazInputPhoneNumber.vue.d.ts +1 -1
  368. package/dist/types/components/MazLazyImg.vue.d.ts +1 -1
  369. package/dist/types/components/MazLink.vue.d.ts +1 -1
  370. package/dist/types/components/MazPicker/MazPickerCalendar.vue.d.ts +1 -1
  371. package/dist/types/components/MazPicker/MazPickerCalendarMonth/MazPickerCalendarGrid.vue.d.ts +1 -1
  372. package/dist/types/components/MazPicker/MazPickerCalendarMonth/MazPickerCalendarMonth.vue.d.ts +1 -1
  373. package/dist/types/components/MazPicker/MazPickerContainer.vue.d.ts +1 -1
  374. package/dist/types/components/MazPicker/MazPickerHeader.vue.d.ts +1 -1
  375. package/dist/types/components/MazPicker/MazPickerShortcuts.vue.d.ts +1 -1
  376. package/dist/types/components/MazPicker/MazPickerTime.vue.d.ts +2 -2
  377. package/dist/types/components/MazPicker/utils.d.ts +1 -1
  378. package/dist/types/components/MazSlider.vue.d.ts +1 -1
  379. package/dist/types/components/constantes.d.ts +1 -2
  380. package/dist/types/components/types.d.ts +2 -1
  381. package/dist/types/composables/useFormField.d.ts +2 -2
  382. package/dist/types/composables/useFormValidator/types.d.ts +3 -3
  383. package/dist/types/composables/useFormValidator.d.ts +3 -3
  384. package/dist/types/directives/vClickOutside.d.ts +1 -1
  385. package/dist/types/directives/vClosable.d.ts +1 -1
  386. package/dist/types/directives/vLazyImg.d.ts +2 -1
  387. package/dist/types/directives/vTooltip.d.ts +1 -1
  388. package/package.json +3 -4
  389. package/dist/assets/MazBtn.7QWd6o3M.css +0 -1
  390. package/dist/assets/MazGallery.ChuEM3_y.css +0 -1
  391. package/dist/assets/MazInput.C5uUOQLJ.css +0 -1
  392. package/dist/assets/MazInputCode.C1Mlb3p3.css +0 -1
  393. package/dist/assets/MazLink.DQ7r1i9T.css +0 -1
  394. package/dist/assets/MazLoadingBar.C6sNjytz.css +0 -1
  395. package/dist/assets/MazPicker.fY2qT4ER.css +0 -1
  396. package/dist/assets/MazPickerCalendarMonth.GACBSeof.css +0 -1
  397. package/dist/assets/MazReadingProgressBar.CbqVvC8N.css +0 -1
  398. package/dist/assets/MazSpinner.DTuz1RdS.css +0 -1
  399. package/dist/assets/MazTable.D06R_2nI.css +0 -1
  400. package/dist/assets/MazTableCell.BDmda4j7.css +0 -1
  401. package/dist/assets/MazTableRow.Copw9RJN.css +0 -1
  402. package/dist/assets/MazTableTitle.Cspgmj1g.css +0 -1
  403. package/dist/assets/PhoneInput.utJQQXVJ.css +0 -1
  404. package/dist/chunks/CountrySelector.C5XZelLY.mjs.map +0 -1
  405. package/dist/chunks/CountrySelector.mFGaqpPf.cjs.map +0 -1
  406. package/dist/chunks/MazInputNumber.vue_vue_type_script_setup_true_lang.Bbod2mLd.mjs.map +0 -1
  407. package/dist/chunks/MazInputNumber.vue_vue_type_script_setup_true_lang.DiawfWBC.cjs.map +0 -1
  408. package/dist/chunks/MazInputPrice.vue_vue_type_script_setup_true_lang.C3X2lwRl.mjs.map +0 -1
  409. package/dist/chunks/MazInputPrice.vue_vue_type_script_setup_true_lang.CCatmP_L.cjs.map +0 -1
  410. package/dist/chunks/MazPicker.BZE8cw36.cjs.map +0 -1
  411. package/dist/chunks/MazPicker.DCnOkRvv.mjs.map +0 -1
  412. package/dist/chunks/MazPickerCalendar.CVZ8VoYr.cjs.map +0 -1
  413. package/dist/chunks/MazPickerCalendar.NeYLrtl-.mjs.map +0 -1
  414. package/dist/chunks/MazPickerCalendarMonth.DpvQC45k.cjs.map +0 -1
  415. package/dist/chunks/MazPickerCalendarMonth.rnaiDHFM.mjs.map +0 -1
  416. package/dist/chunks/MazPickerCalendarSwitcher.DC2wff_J.cjs.map +0 -1
  417. package/dist/chunks/MazPickerCalendarSwitcher.DFGrD6Cr.mjs.map +0 -1
  418. package/dist/chunks/MazPickerHeader.B7YY9SJI.mjs.map +0 -1
  419. package/dist/chunks/MazPickerHeader.l7NcmiGH.cjs.map +0 -1
  420. package/dist/chunks/MazPickerMonthSwitcher.CAPx3PCt.mjs.map +0 -1
  421. package/dist/chunks/MazPickerMonthSwitcher.CbplWFfL.cjs.map +0 -1
  422. package/dist/chunks/MazPickerShortcuts.Bawm0q33.mjs.map +0 -1
  423. package/dist/chunks/MazPickerShortcuts.LxFs0Y6N.cjs.map +0 -1
  424. package/dist/chunks/MazPickerTime.7cxq-Qac.cjs.map +0 -1
  425. package/dist/chunks/MazPickerTime.C27aFPPw.mjs.map +0 -1
  426. package/dist/chunks/MazPickerYearSwitcher.DMBOaMYy.mjs.map +0 -1
  427. package/dist/chunks/MazPickerYearSwitcher.Dku2IMIJ.cjs.map +0 -1
  428. package/dist/chunks/MazTable.vue_vue_type_style_index_0_scoped_4101f1d3_lang.Ctmf2NVE.cjs.map +0 -1
  429. package/dist/chunks/MazTable.vue_vue_type_style_index_0_scoped_4101f1d3_lang.Dwkx-V96.mjs.map +0 -1
  430. package/dist/chunks/PhoneInput.9GQJbL9x.mjs.map +0 -1
  431. package/dist/chunks/PhoneInput.D5DG4S60.cjs.map +0 -1
  432. package/dist/chunks/fullscreen-img.directive.CeREtf7H.cjs.map +0 -1
  433. package/dist/chunks/fullscreen-img.directive.CrLLYi0D.mjs.map +0 -1
  434. package/dist/chunks/utils.Bex2hM45.mjs.map +0 -1
  435. package/dist/chunks/utils.vGzCTXH5.cjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"PhoneInput.D5DG4S60.cjs","sources":["../../src/components/MazInputPhoneNumber/PhoneInput.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { MazInputPhoneNumberInjectedData } from '@components/MazInputPhoneNumber.vue'\nimport type { MazInputPhoneNumberTranslations } from '@components/MazInputPhoneNumber/types'\nimport type { CountryCode } from 'libphonenumber-js'\nimport MazInput, { type MazInputProps } from '@components/MazInput.vue'\nimport { useLibphonenumber } from '@components/MazInputPhoneNumber/useLibphonenumber'\nimport { useMazInputPhoneNumber } from '@components/MazInputPhoneNumber/useMazInputPhoneNumber'\nimport { injectStrict } from '@helpers/injectStrict'\nimport { computed, onMounted, ref } from 'vue'\n\ntype PhoneInputProps = Omit<MazInputProps, 'modelValue'> & {\n id: string\n locales: MazInputPhoneNumberTranslations\n noExample: boolean\n hasRadius: boolean\n autoFormat: boolean\n}\n\nconst { placeholder, label, noExample, locales, autoFormat, name, inputmode, autocomplete } = defineProps<PhoneInputProps>()\n\nconst { getPhoneNumberExample, getAsYouTypeFormat, loadExamples } = useLibphonenumber()\nconst { sanitizePhoneNumber } = useMazInputPhoneNumber()\nconst { results, selectedCountry } = injectStrict<MazInputPhoneNumberInjectedData>('data')\n\nconst modelValue = defineModel<string | undefined | null>()\n\nconst asYouTypeFormatted = computed(() => {\n const phoneNumberToFormat = results.value.isValid ? results.value.formatNational : modelValue.value\n return getAsYouTypeFormat(selectedCountry.value, phoneNumberToFormat) || phoneNumberToFormat\n})\n\nconst inputFocused = ref(false)\nconst displayedPhoneNumber = computed({\n get: () => !inputFocused.value && autoFormat ? asYouTypeFormatted.value : modelValue.value,\n set: (value) => {\n modelValue.value = sanitizePhoneNumber(value)\n },\n})\n\nfunction getCountryPhoneNumberExample(selectedCountry?: CountryCode | undefined | null) {\n const example = getPhoneNumberExample(selectedCountry)\n return example ? `${locales.phoneInput.example} ${example}` : undefined\n}\nconst inputLabelOrPlaceholder = computed(() => {\n if (label || placeholder) {\n return label || placeholder\n }\n\n const defaultPlaceholder = locales.phoneInput.placeholder\n\n if (noExample || !inputFocused.value) {\n return defaultPlaceholder\n }\n else {\n const phoneExample = getCountryPhoneNumberExample(selectedCountry.value)\n return results.value?.isValid || !phoneExample ? defaultPlaceholder : phoneExample\n }\n})\n\nconst inputProps = computed(() => {\n return placeholder\n ? { placeholder: inputLabelOrPlaceholder.value }\n : { label: inputLabelOrPlaceholder.value }\n})\n\nonMounted(() => {\n if (!noExample)\n loadExamples()\n})\n</script>\n\n<template>\n <MazInput\n :id\n v-model=\"displayedPhoneNumber\"\n v-bind=\"{ ...$attrs, ...inputProps }\"\n :disabled\n :color\n :error\n :size\n :success\n :name\n :inputmode\n :autocomplete\n class=\"m-phone-input\"\n :class=\"[\n {\n '--border-radius': hasRadius,\n '--error': error || !results.isValid,\n '--focused': inputFocused,\n },\n ]\"\n @focus=\"inputFocused = true\"\n @blur=\"inputFocused = false\"\n />\n</template>\n\n<style lang=\"postcss\" scoped>\n.m-phone-input {\n @apply maz-min-w-52 maz-flex-1;\n\n &.--error,\n &.--focused {\n @apply maz-z-1;\n }\n}\n\n/** RESPONSIVE */\n.m-phone-number-input {\n &.--responsive .m-phone-input {\n @apply -maz-mt-0.5 maz-flex-none mob-m:-maz-ml-0.5 mob-m:maz-mt-0 mob-m:maz-flex-auto;\n\n &.--border-radius {\n &:deep(.m-input-wrapper) {\n @apply maz-rounded-t-none mob-m:maz-rounded-l-none mob-m:maz-rounded-tr;\n }\n }\n }\n\n &.--row .m-phone-input {\n @apply -maz-ml-0.5;\n\n &.--border-radius {\n &:deep(.m-input-wrapper) {\n @apply maz-rounded-l-none;\n }\n }\n }\n\n &.--col .m-phone-input {\n @apply -maz-mt-0.5 maz-ml-0 maz-flex-none;\n\n &.--border-radius {\n &:deep(.m-input-wrapper) {\n @apply maz-rounded-t-none maz-rounded-bl;\n }\n }\n }\n}\n</style>\n"],"names":["getPhoneNumberExample","getAsYouTypeFormat","loadExamples","useLibphonenumber","sanitizePhoneNumber","useMazInputPhoneNumber","results","selectedCountry","injectStrict","modelValue","_useModel","__props","asYouTypeFormatted","computed","phoneNumberToFormat","inputFocused","ref","displayedPhoneNumber","value","getCountryPhoneNumberExample","example","inputLabelOrPlaceholder","defaultPlaceholder","phoneExample","_a","inputProps","onMounted"],"mappings":"qnCAoBA,KAAM,CAAE,sBAAAA,EAAuB,mBAAAC,EAAoB,aAAAC,CAAA,EAAiBC,EAAAA,kBAAkB,EAChF,CAAE,oBAAAC,CAAoB,EAAIC,yBAAuB,EACjD,CAAE,QAAAC,EAAS,gBAAAC,GAAoBC,EAAAA,aAA8C,MAAM,EAEnFC,EAAaC,EAAAA,SAAuCC,EAAA,YAAA,EAEpDC,EAAqBC,EAAAA,SAAS,IAAM,CACxC,MAAMC,EAAsBR,EAAQ,MAAM,QAAUA,EAAQ,MAAM,eAAiBG,EAAW,MAC9F,OAAOR,EAAmBM,EAAgB,MAAOO,CAAmB,GAAKA,CAAA,CAC1E,EAEKC,EAAeC,MAAI,EAAK,EACxBC,EAAuBJ,EAAAA,SAAS,CACpC,IAAK,IAAM,CAACE,EAAa,OAASJ,EAAU,WAAGC,EAAmB,MAAQH,EAAW,MACrF,IAAMS,GAAU,CACHT,EAAA,MAAQL,EAAoBc,CAAK,CAAA,CAC9C,CACD,EAED,SAASC,EAA6BZ,EAAkD,CAChF,MAAAa,EAAUpB,EAAsBO,CAAe,EAC9C,OAAAa,EAAU,GAAGT,EAAO,QAAC,WAAW,OAAO,IAAIS,CAAO,GAAK,MAAA,CAE1D,MAAAC,EAA0BR,EAAAA,SAAS,IAAM,OACzC,GAAAF,EAAA,OAASA,EAAW,YACf,OAAAA,EAAA,OAASA,EAAA,YAGZ,MAAAW,EAAqBX,UAAQ,WAAW,YAE9C,GAAIA,EAAA,WAAa,CAACI,EAAa,MACtB,OAAAO,EAEJ,CACG,MAAAC,EAAeJ,EAA6BZ,EAAgB,KAAK,EACvE,OAAOiB,EAAAlB,EAAQ,QAAR,MAAAkB,EAAe,SAAW,CAACD,EAAeD,EAAqBC,CAAA,CACxE,CACD,EAEKE,EAAaZ,EAAAA,SAAS,IACnBF,EAAA,YACH,CAAE,YAAaU,EAAwB,OACvC,CAAE,MAAOA,EAAwB,KAAM,CAC5C,EAEDK,OAAAA,EAAAA,UAAU,IAAM,CACTf,EAAS,WACCT,EAAA,CAAA,CAChB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"fullscreen-img.directive.CeREtf7H.cjs","sources":["../../src/directives/vFullscreenImg/MazFullscreenImg.vue","../../src/directives/vFullscreenImg/fullscreen-img.handler.ts","../../src/directives/vFullscreenImg/fullscreen-img.directive.ts"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { HTMLAttributes } from 'vue'\nimport MazSpinner from '@components/MazSpinner.vue'\nimport { checkAvailability } from '@helpers/checkAvailability'\n\nimport { computed, defineAsyncComponent, onBeforeUnmount, onMounted, reactive, ref, watch } from 'vue'\n\nconst props = withDefaults(defineProps<MazFullscreenImgProps>(), {\n zoom: true,\n offset: undefined,\n destroy: undefined,\n alt: undefined,\n animation: () => ({\n duration: 300,\n easing: 'ease-in-out',\n }),\n clickedElementBounds: undefined,\n openInstanceClass: 'm-fullscreen-img-instance',\n})\n\nconst emits = defineEmits(['close', 'previous', 'next', 'before-close'])\n\nconst XMark = defineAsyncComponent(() => import('@icons/x-mark.svg'))\nconst ChevronLeft = defineAsyncComponent(() => import('@icons/chevron-left.svg'))\n\nexport interface MazFullscreenImgProps {\n src: string\n clickedElementBounds?: {\n top: number\n left: number\n height: number\n width: number\n }\n offset?: number\n animation?: {\n duration?: number\n easing?: string\n }\n openInstanceClass?: string\n clickedElement: HTMLElement\n destroy?: () => void\n alt?: string | null\n zoom?: boolean\n}\n\nconst imageLoaded = ref(false)\nconst showLoader = ref(false)\nconst loadedOnce = ref(false)\nconst hasMultipleInstances = ref(false)\nconst isZoomed = ref(false)\nconst animationState = reactive({\n running: false,\n ended: false,\n})\n\nconst currentClickedElement = ref(props.clickedElement)\nconst currentClickedElementBounds = computed(() => props.clickedElement.getBoundingClientRect())\nconst isLandscapeImage = ref()\n\nconst currentSrc = ref(props.src)\nconst currentAlt = ref<string | null | undefined>(props.alt)\n\nconst FullscreenImgElement = ref<HTMLDivElement>()\nconst ImgElement = ref<HTMLImageElement>()\nconst hideImage = ref(true)\n\nconst imageZoomClasses = computed<HTMLAttributes['class']>(() => {\n return {\n '--is-zoomed': isZoomed.value,\n '--invisible': hideImage.value,\n '--absolute': !isZoomed.value,\n }\n})\n\nfunction onImageLoaded() {\n if (ImgElement.value) {\n isLandscapeImage.value = ImgElement.value?.naturalWidth > ImgElement.value?.naturalHeight\n }\n\n imageLoaded.value = true\n showLoader.value = false\n loadedOnce.value = true\n}\n\nwatch(\n loadedOnce,\n (value) => {\n if (value) {\n openFullscreen()\n }\n },\n { immediate: true },\n)\n\nfunction close() {\n emits('before-close')\n closeFullscreen()\n}\n\nfunction keydownLister(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n e.preventDefault()\n close()\n }\n\n if (e.key === 'ArrowLeft' || e.key === 'ArrowRight') {\n e.preventDefault()\n nextPreviousImage(e.key === 'ArrowRight' ? 'next' : 'previous')\n }\n}\n\nfunction addClassToDocument() {\n document.documentElement.classList.add('--m-fullscreen-open')\n}\n\nfunction removeClassFromDocument() {\n document.documentElement.classList.remove('--m-fullscreen-open')\n}\n\nfunction getAllInstances(): HTMLElement[] {\n return [...document.querySelectorAll('.m-fullscreen-img-instance')] as HTMLElement[]\n}\n\nfunction getNewInstanceIndex(allInstances: HTMLElement[], newInstanceIndex: number): number {\n if (newInstanceIndex < 0) {\n return allInstances.length - 1\n }\n if (newInstanceIndex >= allInstances.length) {\n return 0\n }\n return newInstanceIndex\n}\n\nfunction useNextInstance(currentInstance: HTMLElement, nextInstance: HTMLElement) {\n currentInstance.classList.remove(props.openInstanceClass)\n nextInstance.classList.add(props.openInstanceClass)\n\n const src: string | null = nextInstance.getAttribute('data-src')\n const alt: string | null = nextInstance.getAttribute('data-alt')\n\n currentAlt.value = alt\n currentSrc.value = src ?? currentSrc.value\n}\n\nfunction nextPreviousImage(which: 'next' | 'previous'): void {\n hideImage.value = true\n\n const currentInstance: HTMLElement | null = document.querySelector(\n `.m-fullscreen-img-instance.${props.openInstanceClass}`,\n )\n\n if (currentInstance) {\n const allInstances = getAllInstances()\n const currentInstanceIndex = allInstances.indexOf(currentInstance)\n const newInstanceIndex\n = which === 'next' ? currentInstanceIndex + 1 : currentInstanceIndex - 1\n\n const nextInstance = allInstances[getNewInstanceIndex(allInstances, newInstanceIndex)]\n currentClickedElement.value = nextInstance\n\n if (nextInstance) {\n useNextInstance(currentInstance, nextInstance)\n }\n\n emits(which)\n\n imageLoaded.value = false\n showLoader.value = true\n\n checkAvailability(() => imageLoaded.value === true, () => {\n hideImage.value = false\n if (isZoomed.value) {\n setZoomStyles()\n }\n else {\n setEndAnimationStyles()\n }\n }, {\n expectedValue: true,\n interval: 100,\n maxAttempts: 50,\n })\n }\n}\n\nfunction setZoomStyles() {\n const imgElement = ImgElement.value\n\n if (!imgElement) {\n console.error('[maz-ui](vFullscreenImg) ImgElement is not defined')\n return\n }\n\n imgElement.style.removeProperty('max-width')\n imgElement.style.removeProperty('max-height')\n imgElement?.style.removeProperty('top')\n imgElement?.style.removeProperty('left')\n\n if (!isLandscapeImage.value) {\n imgElement.style.width = `100vw`\n imgElement.style.removeProperty('height')\n }\n else {\n imgElement.style.height = `100vh`\n imgElement.style.removeProperty('width')\n }\n}\n\nfunction toggleZoom() {\n if (isZoomed.value) {\n isZoomed.value = !isZoomed.value\n setEndAnimationStyles()\n }\n else {\n isZoomed.value = !isZoomed.value\n setZoomStyles()\n }\n}\n\nfunction runAnimation(frames: Keyframe[] | PropertyIndexedKeyframes) {\n animationState.running = true\n hideImage.value = false\n\n const animation = ImgElement.value?.animate(frames, {\n duration: props.animation.duration,\n easing: props.animation.easing,\n })\n\n if (!animation) {\n console.error('[maz-ui](vFullscreenImg) animation is not defined')\n animationState.running = false\n animationState.ended = true\n return\n }\n\n return animation\n}\n\nfunction getPositionsOfClikedElement(offset = props.offset ?? 0) {\n const width = currentClickedElement.value.clientWidth || 1\n const height = currentClickedElement.value.clientHeight || 1\n\n const windowWidth = window.innerWidth\n const windowHeight = window.innerHeight\n\n const scale = Math.min(\n (windowWidth - 2 * offset) / width,\n (windowHeight - 2 * offset) / height,\n )\n\n const centerX = (windowWidth - width * scale) / 2\n const centerY = (windowHeight - height * scale) / 2\n\n return {\n centerX,\n centerY,\n width,\n height,\n scale,\n }\n}\n\nfunction getAnimationFrames({ trigger }: { trigger: 'open' | 'close' }) {\n const { width, height, scale, centerX, centerY } = getPositionsOfClikedElement()\n\n const { top, left, width: clickedElementWidth, height: clickedElementHeight } = currentClickedElementBounds.value\n\n const frames = [\n {\n top: `${top}px`,\n left: `${left}px`,\n width: `${clickedElementWidth}px`,\n height: `${clickedElementHeight}px`,\n opacity: 0,\n },\n {\n top: `${centerY}px`,\n left: `${centerX}px`,\n width: `${width * scale}px`,\n height: `${height * scale}px`,\n opacity: 1,\n },\n ]\n\n return {\n frames: trigger === 'open' ? frames : frames.reverse(),\n }\n}\n\nfunction setEndAnimationStyles() {\n const { height, width, scale } = getPositionsOfClikedElement()\n\n const finalStyles = isLandscapeImage.value\n ? {\n width: `${width * scale}px`,\n maxHeight: `${height * scale}px`,\n }\n : {\n height: `${height * scale}px`,\n maxWidth: `${width * scale}px`,\n }\n\n if (!ImgElement.value) {\n console.error('[maz-ui](vFullscreenImg) ImgElement is not defined')\n return\n }\n\n if (isLandscapeImage.value) {\n ImgElement.value.style.removeProperty('height')\n ImgElement.value.style.removeProperty('maxHeight')\n }\n else {\n ImgElement.value.style.removeProperty('width')\n ImgElement.value.style.removeProperty('maxWidth')\n }\n\n Object.assign(ImgElement.value.style, finalStyles)\n}\n\nfunction openFullscreen() {\n const { frames } = getAnimationFrames({\n trigger: 'open',\n })\n\n const openAnimation = runAnimation(frames)\n\n if (!openAnimation) {\n console.error('[maz-ui](vFullscreenImg) open animation is not defined')\n setEndAnimationStyles()\n return\n }\n\n openAnimation.onfinish = () => {\n setEndAnimationStyles()\n animationState.running = false\n animationState.ended = true\n }\n}\n\nfunction closeFullscreen() {\n const { frames } = getAnimationFrames({\n trigger: 'close',\n })\n\n const closeAnimation = runAnimation(frames)\n\n function onFinish() {\n emits('close')\n FullscreenImgElement.value?.remove()\n props.destroy?.()\n animationState.running = false\n animationState.ended = true\n }\n\n if (!closeAnimation) {\n console.error('[maz-ui](vFullscreenImg) close animation is not defined')\n onFinish()\n return\n }\n\n closeAnimation.onfinish = onFinish\n}\n\nfunction onResizeWindow() {\n if (!isZoomed.value) {\n setEndAnimationStyles()\n }\n}\n\nonMounted(() => {\n showLoader.value = true\n document.addEventListener('keydown', keydownLister)\n window.addEventListener('resize', onResizeWindow)\n addClassToDocument()\n hasMultipleInstances.value = getAllInstances().length > 1\n})\n\nonBeforeUnmount(() => {\n document.removeEventListener('keydown', keydownLister)\n window.removeEventListener('resize', onResizeWindow)\n removeClassFromDocument()\n})\n</script>\n\n<template>\n <div\n ref=\"FullscreenImgElement\"\n role=\"button\"\n class=\"m-fullscreen-img m-reset-css\"\n tabindex=\"0\"\n @click.stop=\"close\"\n @keypress.esc.prevent=\"close\"\n >\n <button\n v-if=\"loadedOnce && hasMultipleInstances\"\n type=\"button\"\n class=\"m-fullscreen-btn --next\"\n @click.stop=\"nextPreviousImage('next')\"\n >\n <ChevronLeft class=\"maz-rotate-180\" />\n </button>\n <button\n v-if=\"loadedOnce && hasMultipleInstances\"\n type=\"button\"\n class=\"m-fullscreen-btn --previous\"\n @click.stop=\"nextPreviousImage('previous')\"\n >\n <ChevronLeft />\n </button>\n\n <button type=\"button\" class=\"m-fullscreen-btn --close\" @click=\"close\">\n <XMark />\n </button>\n\n <div class=\"m-fullscreen-img-scroller\">\n <!-- eslint-disable-next-line vuejs-accessibility/no-static-element-interactions, vuejs-accessibility/click-events-have-key-events -->\n <img\n ref=\"ImgElement\"\n :src=\"currentSrc\"\n :alt=\"currentAlt ?? undefined\"\n tabindex=\"0\"\n :class=\"[imageZoomClasses]\"\n @load=\"onImageLoaded\"\n @click.stop=\"zoom && toggleZoom()\"\n >\n\n <MazSpinner v-show=\"showLoader\" class=\"m-fullscreen-img-loader\" />\n </div>\n </div>\n</template>\n\n<style lang=\"postcss\">\n html.--m-fullscreen-open {\n @apply maz-h-screen maz-overflow-hidden;\n}\n</style>\n\n<style lang=\"postcss\" scoped>\n .m-fullscreen-img {\n @apply maz-fixed maz-inset-0 maz-z-default-backdrop maz-h-screen maz-w-screen maz-items-center maz-bg-overlay maz-outline-none maz-backdrop-blur;\n\n .m-fullscreen-img-scroller {\n @apply maz-flex maz-h-screen maz-w-screen maz-overflow-auto maz-flex-center;\n }\n\n img {\n @apply maz-z-2 maz-outline-none maz-cursor-zoom-in maz-object-center maz-object-contain;\n\n &.--is-zoomed {\n @apply maz-cursor-zoom-out;\n }\n\n &.--invisible {\n @apply maz-invisible;\n }\n\n &.--absolute {\n @apply maz-absolute;\n }\n }\n\n .m-fullscreen-img-loader {\n @apply maz-absolute maz-text-2xl maz-z-15;\n }\n\n .m-fullscreen-btn {\n @apply maz-absolute maz-z-15 maz-flex maz-h-20 maz-w-[7%] maz-min-w-[5em] maz-cursor-pointer maz-p-4 maz-transition-colors maz-duration-200;\n\n svg {\n @apply maz-text-3xl maz-transition-transform maz-duration-300 maz-ease-in-out;\n }\n\n &:hover {\n svg {\n @apply maz-scale-150;\n }\n }\n\n &.--close {\n @apply maz-right-0 maz-top-0 maz-items-start maz-justify-end;\n }\n\n &.--previous {\n @apply maz-left-0 maz-top-1/2 maz-h-screen maz--translate-y-1/2 maz-transform maz-items-center maz-justify-start;\n }\n\n &.--next {\n @apply maz-right-0 maz-top-1/2 maz-h-screen maz--translate-y-1/2 maz-transform maz-items-center maz-justify-end;\n }\n }\n}\n</style>\n","import type { DirectiveBinding } from 'vue'\n\nimport type { MazFullscreenImgProps } from './MazFullscreenImg.vue'\nimport { mount } from '@helpers/mountComponent'\nimport MazFullscreenImg from './MazFullscreenImg.vue'\n\nexport interface vFullscreenImgOptions {\n disabled?: boolean\n scaleOnHover?: boolean\n blurOnHover?: boolean\n zoom?: boolean\n offset?: number\n animation?: {\n duration?: number\n easing?: string\n }\n}\n\ninterface vFullscreenImgBindingOptions extends vFullscreenImgOptions {\n src: string\n alt?: string | null\n}\n\nexport type vFullscreenImgBindingValue = string | vFullscreenImgBindingOptions | undefined\n\nexport type vFullscreenImgBinding = DirectiveBinding<vFullscreenImgBindingValue>\n\nconst STATE_OPEN_CLASS = 'm-fullscreen-is-open'\n\nexport class FullscreenImgHandler {\n private options: vFullscreenImgBindingOptions\n private defaultOptions: vFullscreenImgOptions = {\n scaleOnHover: false,\n blurOnHover: false,\n disabled: false,\n zoom: true,\n offset: 80,\n animation: {\n duration: 300,\n easing: 'ease-in-out',\n },\n }\n\n private mouseEnterListener: () => void\n private mouseLeaveListener: () => void\n private renderPreviewListener: () => void\n\n private buildOptions(\n el: HTMLElement,\n binding: vFullscreenImgBinding,\n ): vFullscreenImgBindingOptions {\n const options\n = typeof binding.value === 'object' ? binding.value : { src: binding.value, alt: undefined }\n\n const src = options?.src ?? this.getImgSrc(el)\n const alt = options?.alt ?? this.getImgAlt(el)\n\n return {\n ...this.defaultOptions,\n ...options,\n src,\n alt,\n }\n }\n\n get allInstances(): HTMLElement[] {\n return [...document.querySelectorAll('.m-fullscreen-img-instance')] as HTMLElement[]\n }\n\n private getImgSrc(el: HTMLElement) {\n const imgSrc = this.options?.src || el.getAttribute('src') || el.getAttribute('data-src')\n\n if (!imgSrc) {\n throw new Error(\n '[maz-ui](fullscreen-img) src of image must be provided by `v-fullscreen=\"\"`, `v-fullscreen=\"{ src: \"\" }\"`, `src=\"\"` or `data-src=\"\"` atributes',\n )\n }\n\n return imgSrc\n }\n\n private getImgAlt(el: HTMLElement) {\n return this.options?.alt || el.getAttribute('alt') || el.getAttribute('data-alt')\n }\n\n public create(el: HTMLElement, binding: vFullscreenImgBinding) {\n this.options = this.buildOptions(el, binding)\n\n if (this.options.disabled)\n return\n\n el.style.cursor = 'move'\n\n if (this.options.scaleOnHover || this.options.blurOnHover) {\n el.style.transition = 'all 200ms ease-in-out'\n }\n\n /**\n * Set class & data attribute to use it with previous & next functions\n */\n el.classList.add('m-fullscreen-img-instance')\n\n el.setAttribute('data-src', this.getImgSrc(el))\n\n const alt = this.getImgAlt(el)\n if (alt) {\n el.setAttribute('data-alt', alt)\n }\n\n this.mouseEnterListener = () => this.mouseEnter(el)\n this.mouseLeaveListener = () => this.mouseLeave(el)\n this.renderPreviewListener = () => this.renderPreview(el)\n\n el.addEventListener('mouseenter', this.mouseEnterListener)\n el.addEventListener('mouseleave', this.mouseLeaveListener)\n el.addEventListener('click', this.renderPreviewListener)\n }\n\n public update(el: HTMLElement, binding: vFullscreenImgBinding): void {\n this.options = this.buildOptions(el, binding)\n }\n\n public remove(el: HTMLElement): void {\n el.removeEventListener('mouseenter', this.mouseEnterListener)\n el.removeEventListener('mouseleave', this.mouseLeaveListener)\n el.removeEventListener('click', this.renderPreviewListener)\n\n el.classList.remove('m-fullscreen-img-instance')\n\n el.style.cursor = ''\n }\n\n private renderPreview(el: HTMLElement) {\n el.classList.add(STATE_OPEN_CLASS)\n\n return mount<typeof MazFullscreenImg, MazFullscreenImgProps>(MazFullscreenImg, {\n props: {\n ...this.options,\n openInstanceClass: STATE_OPEN_CLASS,\n clickedElement: el,\n clickedElementBounds: el.getBoundingClientRect(),\n },\n addDestroyInProps: true,\n })\n }\n\n private mouseLeave(el: HTMLElement): void {\n if (this.options.scaleOnHover)\n el.style.transform = ''\n if (this.options.blurOnHover)\n el.style.filter = ''\n el.style.zIndex = ''\n }\n\n private mouseEnter(el: HTMLElement): void {\n el.style.zIndex = '1'\n if (this.options.scaleOnHover)\n el.style.transform = 'scale(1.04)'\n if (this.options.blurOnHover)\n el.style.filter = 'blur(3px)'\n }\n}\n","import type { ObjectDirective } from 'vue'\nimport { FullscreenImgHandler, type vFullscreenImgBindingValue } from './fullscreen-img.handler'\n\nlet instance: FullscreenImgHandler\n\nconst directive = {\n mounted(el: HTMLElement, binding) {\n instance = new FullscreenImgHandler()\n return instance.create(el, binding)\n },\n updated(el: HTMLElement, binding) {\n return instance.update(el, binding)\n },\n unmounted(el: HTMLElement) {\n return instance.remove(el)\n },\n} satisfies ObjectDirective<HTMLElement, vFullscreenImgBindingValue>\n\nexport { directive as vFullscreenImg }\n"],"names":["props","__props","emits","__emit","XMark","defineAsyncComponent","ChevronLeft","imageLoaded","ref","showLoader","loadedOnce","hasMultipleInstances","isZoomed","animationState","reactive","currentClickedElement","currentClickedElementBounds","computed","isLandscapeImage","currentSrc","currentAlt","FullscreenImgElement","ImgElement","hideImage","imageZoomClasses","onImageLoaded","_a","_b","watch","value","openFullscreen","close","closeFullscreen","keydownLister","e","nextPreviousImage","addClassToDocument","removeClassFromDocument","getAllInstances","getNewInstanceIndex","allInstances","newInstanceIndex","useNextInstance","currentInstance","nextInstance","src","alt","which","currentInstanceIndex","checkAvailability","setZoomStyles","setEndAnimationStyles","imgElement","toggleZoom","runAnimation","frames","animation","getPositionsOfClikedElement","offset","width","height","windowWidth","windowHeight","scale","centerX","centerY","getAnimationFrames","trigger","top","left","clickedElementWidth","clickedElementHeight","finalStyles","openAnimation","closeAnimation","onFinish","onResizeWindow","onMounted","onBeforeUnmount","STATE_OPEN_CLASS","FullscreenImgHandler","__publicField","el","binding","options","imgSrc","mount","MazFullscreenImg","instance","directive"],"mappings":"s3BAOA,MAAMA,EAAQC,EAaRC,EAAQC,EAERC,EAAQC,EAAAA,qBAAqB,IAAM,QAAA,QAAA,EAAA,KAAA,IAAA,QAAO,uBAAmB,CAAA,CAAC,EAC9DC,EAAcD,EAAAA,qBAAqB,IAAM,QAAA,QAAA,EAAA,KAAA,IAAA,QAAO,6BAAyB,CAAA,CAAC,EAsB1EE,EAAcC,MAAI,EAAK,EACvBC,EAAaD,MAAI,EAAK,EACtBE,EAAaF,MAAI,EAAK,EACtBG,EAAuBH,MAAI,EAAK,EAChCI,EAAWJ,MAAI,EAAK,EACpBK,EAAiBC,EAAAA,SAAS,CAC9B,QAAS,GACT,MAAO,EAAA,CACR,EAEKC,EAAwBP,EAAAA,IAAIR,EAAM,cAAc,EAChDgB,EAA8BC,EAAAA,SAAS,IAAMjB,EAAM,eAAe,uBAAuB,EACzFkB,EAAmBV,EAAAA,IAAI,EAEvBW,EAAaX,EAAAA,IAAIR,EAAM,GAAG,EAC1BoB,EAAaZ,EAAAA,IAA+BR,EAAM,GAAG,EAErDqB,EAAuBb,EAAAA,IAAoB,EAC3Cc,EAAad,EAAAA,IAAsB,EACnCe,EAAYf,MAAI,EAAI,EAEpBgB,EAAmBP,EAAAA,SAAkC,KAClD,CACL,cAAeL,EAAS,MACxB,cAAeW,EAAU,MACzB,aAAc,CAACX,EAAS,KAC1B,EACD,EAED,SAASa,GAAgB,SACnBH,EAAW,QACbJ,EAAiB,QAAQQ,EAAAJ,EAAW,QAAX,YAAAI,EAAkB,gBAAeC,EAAAL,EAAW,QAAX,YAAAK,EAAkB,gBAG9EpB,EAAY,MAAQ,GACpBE,EAAW,MAAQ,GACnBC,EAAW,MAAQ,EAAA,CAGrBkB,EAAA,MACElB,EACCmB,GAAU,CACLA,GACaC,EAAA,CAEnB,EACA,CAAE,UAAW,EAAK,CACpB,EAEA,SAASC,GAAQ,CACf7B,EAAM,cAAc,EACJ8B,EAAA,CAAA,CAGlB,SAASC,EAAcC,EAAkB,CACnCA,EAAE,MAAQ,WACZA,EAAE,eAAe,EACXH,EAAA,IAGJG,EAAE,MAAQ,aAAeA,EAAE,MAAQ,gBACrCA,EAAE,eAAe,EACjBC,EAAkBD,EAAE,MAAQ,aAAe,OAAS,UAAU,EAChE,CAGF,SAASE,GAAqB,CACnB,SAAA,gBAAgB,UAAU,IAAI,qBAAqB,CAAA,CAG9D,SAASC,GAA0B,CACxB,SAAA,gBAAgB,UAAU,OAAO,qBAAqB,CAAA,CAGjE,SAASC,GAAiC,CACxC,MAAO,CAAC,GAAG,SAAS,iBAAiB,4BAA4B,CAAC,CAAA,CAG3D,SAAAC,EAAoBC,EAA6BC,EAAkC,CAC1F,OAAIA,EAAmB,EACdD,EAAa,OAAS,EAE3BC,GAAoBD,EAAa,OAC5B,EAEFC,CAAA,CAGA,SAAAC,EAAgBC,EAA8BC,EAA2B,CAChED,EAAA,UAAU,OAAO3C,EAAM,iBAAiB,EAC3C4C,EAAA,UAAU,IAAI5C,EAAM,iBAAiB,EAE5C,MAAA6C,EAAqBD,EAAa,aAAa,UAAU,EACzDE,EAAqBF,EAAa,aAAa,UAAU,EAE/DxB,EAAW,MAAQ0B,EACR3B,EAAA,MAAQ0B,GAAO1B,EAAW,KAAA,CAGvC,SAASgB,EAAkBY,EAAkC,CAC3DxB,EAAU,MAAQ,GAElB,MAAMoB,EAAsC,SAAS,cACnD,8BAA8B3C,EAAM,iBAAiB,EACvD,EAEA,GAAI2C,EAAiB,CACnB,MAAMH,EAAeF,EAAgB,EAC/BU,EAAuBR,EAAa,QAAQG,CAAe,EAC3DF,EACAM,IAAU,OAASC,EAAuB,EAAIA,EAAuB,EAErEJ,EAAeJ,EAAaD,EAAoBC,EAAcC,CAAgB,CAAC,EACrF1B,EAAsB,MAAQ6B,EAE1BA,GACFF,EAAgBC,EAAiBC,CAAY,EAG/C1C,EAAM6C,CAAK,EAEXxC,EAAY,MAAQ,GACpBE,EAAW,MAAQ,GAEnBwC,GAAAA,kBAAkB,IAAM1C,EAAY,QAAU,GAAM,IAAM,CACxDgB,EAAU,MAAQ,GACdX,EAAS,MACGsC,EAAA,EAGQC,EAAA,CACxB,EACC,CACD,cAAe,GACf,SAAU,IACV,YAAa,EAAA,CACd,CAAA,CACH,CAGF,SAASD,GAAgB,CACvB,MAAME,EAAa9B,EAAW,MAE9B,GAAI,CAAC8B,EAAY,CACf,QAAQ,MAAM,oDAAoD,EAClE,MAAA,CAGSA,EAAA,MAAM,eAAe,WAAW,EAChCA,EAAA,MAAM,eAAe,YAAY,EAChCA,GAAA,MAAAA,EAAA,MAAM,eAAe,OACrBA,GAAA,MAAAA,EAAA,MAAM,eAAe,QAE5BlC,EAAiB,OAKpBkC,EAAW,MAAM,OAAS,QACfA,EAAA,MAAM,eAAe,OAAO,IALvCA,EAAW,MAAM,MAAQ,QACdA,EAAA,MAAM,eAAe,QAAQ,EAK1C,CAGF,SAASC,GAAa,CAChBzC,EAAS,OACFA,EAAA,MAAQ,CAACA,EAAS,MACLuC,EAAA,IAGbvC,EAAA,MAAQ,CAACA,EAAS,MACbsC,EAAA,EAChB,CAGF,SAASI,EAAaC,EAA+C,OACnE1C,EAAe,QAAU,GACzBU,EAAU,MAAQ,GAElB,MAAMiC,GAAY9B,EAAAJ,EAAW,QAAX,YAAAI,EAAkB,QAAQ6B,EAAQ,CAClD,SAAUvD,EAAM,UAAU,SAC1B,OAAQA,EAAM,UAAU,MAAA,GAG1B,GAAI,CAACwD,EAAW,CACd,QAAQ,MAAM,mDAAmD,EACjE3C,EAAe,QAAU,GACzBA,EAAe,MAAQ,GACvB,MAAA,CAGK,OAAA2C,CAAA,CAGT,SAASC,EAA4BC,EAAS1D,EAAM,QAAU,EAAG,CACzD,MAAA2D,EAAQ5C,EAAsB,MAAM,aAAe,EACnD6C,EAAS7C,EAAsB,MAAM,cAAgB,EAErD8C,EAAc,OAAO,WACrBC,EAAe,OAAO,YAEtBC,EAAQ,KAAK,KAChBF,EAAc,EAAIH,GAAUC,GAC5BG,EAAe,EAAIJ,GAAUE,CAChC,EAEMI,GAAWH,EAAcF,EAAQI,GAAS,EAC1CE,GAAWH,EAAeF,EAASG,GAAS,EAE3C,MAAA,CACL,QAAAC,EACA,QAAAC,EACA,MAAAN,EACA,OAAAC,EACA,MAAAG,CACF,CAAA,CAGO,SAAAG,EAAmB,CAAE,QAAAC,GAA0C,CACtE,KAAM,CAAE,MAAAR,EAAO,OAAAC,EAAQ,MAAAG,EAAO,QAAAC,EAAS,QAAAC,GAAYR,EAA4B,EAEzE,CAAE,IAAAW,EAAK,KAAAC,EAAM,MAAOC,EAAqB,OAAQC,GAAyBvD,EAA4B,MAEtGuC,EAAS,CACb,CACE,IAAK,GAAGa,CAAG,KACX,KAAM,GAAGC,CAAI,KACb,MAAO,GAAGC,CAAmB,KAC7B,OAAQ,GAAGC,CAAoB,KAC/B,QAAS,CACX,EACA,CACE,IAAK,GAAGN,CAAO,KACf,KAAM,GAAGD,CAAO,KAChB,MAAO,GAAGL,EAAQI,CAAK,KACvB,OAAQ,GAAGH,EAASG,CAAK,KACzB,QAAS,CAAA,CAEb,EAEO,MAAA,CACL,OAAQI,IAAY,OAASZ,EAASA,EAAO,QAAQ,CACvD,CAAA,CAGF,SAASJ,GAAwB,CAC/B,KAAM,CAAE,OAAAS,EAAQ,MAAAD,EAAO,MAAAI,CAAA,EAAUN,EAA4B,EAEvDe,EAActD,EAAiB,MACjC,CACE,MAAO,GAAGyC,EAAQI,CAAK,KACvB,UAAW,GAAGH,EAASG,CAAK,IAAA,EAE9B,CACE,OAAQ,GAAGH,EAASG,CAAK,KACzB,SAAU,GAAGJ,EAAQI,CAAK,IAC5B,EAEA,GAAA,CAACzC,EAAW,MAAO,CACrB,QAAQ,MAAM,oDAAoD,EAClE,MAAA,CAGEJ,EAAiB,OACRI,EAAA,MAAM,MAAM,eAAe,QAAQ,EACnCA,EAAA,MAAM,MAAM,eAAe,WAAW,IAGtCA,EAAA,MAAM,MAAM,eAAe,OAAO,EAClCA,EAAA,MAAM,MAAM,eAAe,UAAU,GAGlD,OAAO,OAAOA,EAAW,MAAM,MAAOkD,CAAW,CAAA,CAGnD,SAAS1C,GAAiB,CAClB,KAAA,CAAE,OAAAyB,CAAO,EAAIW,EAAmB,CACpC,QAAS,MAAA,CACV,EAEKO,EAAgBnB,EAAaC,CAAM,EAEzC,GAAI,CAACkB,EAAe,CAClB,QAAQ,MAAM,wDAAwD,EAChDtB,EAAA,EACtB,MAAA,CAGFsB,EAAc,SAAW,IAAM,CACPtB,EAAA,EACtBtC,EAAe,QAAU,GACzBA,EAAe,MAAQ,EACzB,CAAA,CAGF,SAASmB,GAAkB,CACnB,KAAA,CAAE,OAAAuB,CAAO,EAAIW,EAAmB,CACpC,QAAS,OAAA,CACV,EAEKQ,EAAiBpB,EAAaC,CAAM,EAE1C,SAASoB,GAAW,SAClBzE,EAAM,OAAO,GACbwB,EAAAL,EAAqB,QAArB,MAAAK,EAA4B,UAC5BC,EAAA3B,EAAM,UAAN,MAAA2B,EAAA,KAAA3B,GACAa,EAAe,QAAU,GACzBA,EAAe,MAAQ,EAAA,CAGzB,GAAI,CAAC6D,EAAgB,CACnB,QAAQ,MAAM,yDAAyD,EAC9DC,EAAA,EACT,MAAA,CAGFD,EAAe,SAAWC,CAAA,CAG5B,SAASC,GAAiB,CACnBhE,EAAS,OACUuC,EAAA,CACxB,CAGF0B,OAAAA,EAAAA,UAAU,IAAM,CACdpE,EAAW,MAAQ,GACV,SAAA,iBAAiB,UAAWwB,CAAa,EAC3C,OAAA,iBAAiB,SAAU2C,CAAc,EAC7BxC,EAAA,EACEzB,EAAA,MAAQ2B,EAAgB,EAAE,OAAS,CAAA,CACzD,EAEDwC,EAAAA,gBAAgB,IAAM,CACX,SAAA,oBAAoB,UAAW7C,CAAa,EAC9C,OAAA,oBAAoB,SAAU2C,CAAc,EAC3BvC,EAAA,CAAA,CACzB,kxCClWK0C,EAAmB,uBAElB,MAAMC,EAAqB,CAA3B,cACGC,EAAA,gBACAA,EAAA,sBAAwC,CAC9C,aAAc,GACd,YAAa,GACb,SAAU,GACV,KAAM,GACN,OAAQ,GACR,UAAW,CACT,SAAU,IACV,OAAQ,aAAA,CAEZ,GAEQA,EAAA,2BACAA,EAAA,2BACAA,EAAA,8BAEA,aACNC,EACAC,EAC8B,CAC9B,MAAMC,EACF,OAAOD,EAAQ,OAAU,SAAWA,EAAQ,MAAQ,CAAE,IAAKA,EAAQ,MAAO,IAAK,MAAU,EAEvFtC,GAAMuC,GAAA,YAAAA,EAAS,MAAO,KAAK,UAAUF,CAAE,EACvCpC,GAAMsC,GAAA,YAAAA,EAAS,MAAO,KAAK,UAAUF,CAAE,EAEtC,MAAA,CACL,GAAG,KAAK,eACR,GAAGE,EACH,IAAAvC,EACA,IAAAC,CACF,CAAA,CAGF,IAAI,cAA8B,CAChC,MAAO,CAAC,GAAG,SAAS,iBAAiB,4BAA4B,CAAC,CAAA,CAG5D,UAAUoC,EAAiB,OAC3B,MAAAG,IAAS3D,EAAA,KAAK,UAAL,YAAAA,EAAc,MAAOwD,EAAG,aAAa,KAAK,GAAKA,EAAG,aAAa,UAAU,EAExF,GAAI,CAACG,EACH,MAAM,IAAI,MACR,gJACF,EAGK,OAAAA,CAAA,CAGD,UAAUH,EAAiB,OAC1B,QAAAxD,EAAA,KAAK,UAAL,YAAAA,EAAc,MAAOwD,EAAG,aAAa,KAAK,GAAKA,EAAG,aAAa,UAAU,CAAA,CAG3E,OAAOA,EAAiBC,EAAgC,CAG7D,GAFA,KAAK,QAAU,KAAK,aAAaD,EAAIC,CAAO,EAExC,KAAK,QAAQ,SACf,OAEFD,EAAG,MAAM,OAAS,QAEd,KAAK,QAAQ,cAAgB,KAAK,QAAQ,eAC5CA,EAAG,MAAM,WAAa,yBAMrBA,EAAA,UAAU,IAAI,2BAA2B,EAE5CA,EAAG,aAAa,WAAY,KAAK,UAAUA,CAAE,CAAC,EAExC,MAAApC,EAAM,KAAK,UAAUoC,CAAE,EACzBpC,GACCoC,EAAA,aAAa,WAAYpC,CAAG,EAGjC,KAAK,mBAAqB,IAAM,KAAK,WAAWoC,CAAE,EAClD,KAAK,mBAAqB,IAAM,KAAK,WAAWA,CAAE,EAClD,KAAK,sBAAwB,IAAM,KAAK,cAAcA,CAAE,EAErDA,EAAA,iBAAiB,aAAc,KAAK,kBAAkB,EACtDA,EAAA,iBAAiB,aAAc,KAAK,kBAAkB,EACtDA,EAAA,iBAAiB,QAAS,KAAK,qBAAqB,CAAA,CAGlD,OAAOA,EAAiBC,EAAsC,CACnE,KAAK,QAAU,KAAK,aAAaD,EAAIC,CAAO,CAAA,CAGvC,OAAOD,EAAuB,CAChCA,EAAA,oBAAoB,aAAc,KAAK,kBAAkB,EACzDA,EAAA,oBAAoB,aAAc,KAAK,kBAAkB,EACzDA,EAAA,oBAAoB,QAAS,KAAK,qBAAqB,EAEvDA,EAAA,UAAU,OAAO,2BAA2B,EAE/CA,EAAG,MAAM,OAAS,EAAA,CAGZ,cAAcA,EAAiB,CAClC,OAAAA,EAAA,UAAU,IAAIH,CAAgB,EAE1BO,GAAAA,MAAsDC,GAAkB,CAC7E,MAAO,CACL,GAAG,KAAK,QACR,kBAAmBR,EACnB,eAAgBG,EAChB,qBAAsBA,EAAG,sBAAsB,CACjD,EACA,kBAAmB,EAAA,CACpB,CAAA,CAGK,WAAWA,EAAuB,CACpC,KAAK,QAAQ,eACfA,EAAG,MAAM,UAAY,IACnB,KAAK,QAAQ,cACfA,EAAG,MAAM,OAAS,IACpBA,EAAG,MAAM,OAAS,EAAA,CAGZ,WAAWA,EAAuB,CACxCA,EAAG,MAAM,OAAS,IACd,KAAK,QAAQ,eACfA,EAAG,MAAM,UAAY,eACnB,KAAK,QAAQ,cACfA,EAAG,MAAM,OAAS,YAAA,CAExB,CC9JA,IAAIM,EAEJ,MAAMC,GAAY,CAChB,QAAQP,EAAiBC,EAAS,CAChC,OAAAK,EAAW,IAAIR,GACRQ,EAAS,OAAON,EAAIC,CAAO,CACpC,EACA,QAAQD,EAAiBC,EAAS,CACzB,OAAAK,EAAS,OAAON,EAAIC,CAAO,CACpC,EACA,UAAUD,EAAiB,CAClB,OAAAM,EAAS,OAAON,CAAE,CAAA,CAE7B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"fullscreen-img.directive.CrLLYi0D.mjs","sources":["../../src/directives/vFullscreenImg/MazFullscreenImg.vue","../../src/directives/vFullscreenImg/fullscreen-img.handler.ts","../../src/directives/vFullscreenImg/fullscreen-img.directive.ts"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { HTMLAttributes } from 'vue'\nimport MazSpinner from '@components/MazSpinner.vue'\nimport { checkAvailability } from '@helpers/checkAvailability'\n\nimport { computed, defineAsyncComponent, onBeforeUnmount, onMounted, reactive, ref, watch } from 'vue'\n\nconst props = withDefaults(defineProps<MazFullscreenImgProps>(), {\n zoom: true,\n offset: undefined,\n destroy: undefined,\n alt: undefined,\n animation: () => ({\n duration: 300,\n easing: 'ease-in-out',\n }),\n clickedElementBounds: undefined,\n openInstanceClass: 'm-fullscreen-img-instance',\n})\n\nconst emits = defineEmits(['close', 'previous', 'next', 'before-close'])\n\nconst XMark = defineAsyncComponent(() => import('@icons/x-mark.svg'))\nconst ChevronLeft = defineAsyncComponent(() => import('@icons/chevron-left.svg'))\n\nexport interface MazFullscreenImgProps {\n src: string\n clickedElementBounds?: {\n top: number\n left: number\n height: number\n width: number\n }\n offset?: number\n animation?: {\n duration?: number\n easing?: string\n }\n openInstanceClass?: string\n clickedElement: HTMLElement\n destroy?: () => void\n alt?: string | null\n zoom?: boolean\n}\n\nconst imageLoaded = ref(false)\nconst showLoader = ref(false)\nconst loadedOnce = ref(false)\nconst hasMultipleInstances = ref(false)\nconst isZoomed = ref(false)\nconst animationState = reactive({\n running: false,\n ended: false,\n})\n\nconst currentClickedElement = ref(props.clickedElement)\nconst currentClickedElementBounds = computed(() => props.clickedElement.getBoundingClientRect())\nconst isLandscapeImage = ref()\n\nconst currentSrc = ref(props.src)\nconst currentAlt = ref<string | null | undefined>(props.alt)\n\nconst FullscreenImgElement = ref<HTMLDivElement>()\nconst ImgElement = ref<HTMLImageElement>()\nconst hideImage = ref(true)\n\nconst imageZoomClasses = computed<HTMLAttributes['class']>(() => {\n return {\n '--is-zoomed': isZoomed.value,\n '--invisible': hideImage.value,\n '--absolute': !isZoomed.value,\n }\n})\n\nfunction onImageLoaded() {\n if (ImgElement.value) {\n isLandscapeImage.value = ImgElement.value?.naturalWidth > ImgElement.value?.naturalHeight\n }\n\n imageLoaded.value = true\n showLoader.value = false\n loadedOnce.value = true\n}\n\nwatch(\n loadedOnce,\n (value) => {\n if (value) {\n openFullscreen()\n }\n },\n { immediate: true },\n)\n\nfunction close() {\n emits('before-close')\n closeFullscreen()\n}\n\nfunction keydownLister(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n e.preventDefault()\n close()\n }\n\n if (e.key === 'ArrowLeft' || e.key === 'ArrowRight') {\n e.preventDefault()\n nextPreviousImage(e.key === 'ArrowRight' ? 'next' : 'previous')\n }\n}\n\nfunction addClassToDocument() {\n document.documentElement.classList.add('--m-fullscreen-open')\n}\n\nfunction removeClassFromDocument() {\n document.documentElement.classList.remove('--m-fullscreen-open')\n}\n\nfunction getAllInstances(): HTMLElement[] {\n return [...document.querySelectorAll('.m-fullscreen-img-instance')] as HTMLElement[]\n}\n\nfunction getNewInstanceIndex(allInstances: HTMLElement[], newInstanceIndex: number): number {\n if (newInstanceIndex < 0) {\n return allInstances.length - 1\n }\n if (newInstanceIndex >= allInstances.length) {\n return 0\n }\n return newInstanceIndex\n}\n\nfunction useNextInstance(currentInstance: HTMLElement, nextInstance: HTMLElement) {\n currentInstance.classList.remove(props.openInstanceClass)\n nextInstance.classList.add(props.openInstanceClass)\n\n const src: string | null = nextInstance.getAttribute('data-src')\n const alt: string | null = nextInstance.getAttribute('data-alt')\n\n currentAlt.value = alt\n currentSrc.value = src ?? currentSrc.value\n}\n\nfunction nextPreviousImage(which: 'next' | 'previous'): void {\n hideImage.value = true\n\n const currentInstance: HTMLElement | null = document.querySelector(\n `.m-fullscreen-img-instance.${props.openInstanceClass}`,\n )\n\n if (currentInstance) {\n const allInstances = getAllInstances()\n const currentInstanceIndex = allInstances.indexOf(currentInstance)\n const newInstanceIndex\n = which === 'next' ? currentInstanceIndex + 1 : currentInstanceIndex - 1\n\n const nextInstance = allInstances[getNewInstanceIndex(allInstances, newInstanceIndex)]\n currentClickedElement.value = nextInstance\n\n if (nextInstance) {\n useNextInstance(currentInstance, nextInstance)\n }\n\n emits(which)\n\n imageLoaded.value = false\n showLoader.value = true\n\n checkAvailability(() => imageLoaded.value === true, () => {\n hideImage.value = false\n if (isZoomed.value) {\n setZoomStyles()\n }\n else {\n setEndAnimationStyles()\n }\n }, {\n expectedValue: true,\n interval: 100,\n maxAttempts: 50,\n })\n }\n}\n\nfunction setZoomStyles() {\n const imgElement = ImgElement.value\n\n if (!imgElement) {\n console.error('[maz-ui](vFullscreenImg) ImgElement is not defined')\n return\n }\n\n imgElement.style.removeProperty('max-width')\n imgElement.style.removeProperty('max-height')\n imgElement?.style.removeProperty('top')\n imgElement?.style.removeProperty('left')\n\n if (!isLandscapeImage.value) {\n imgElement.style.width = `100vw`\n imgElement.style.removeProperty('height')\n }\n else {\n imgElement.style.height = `100vh`\n imgElement.style.removeProperty('width')\n }\n}\n\nfunction toggleZoom() {\n if (isZoomed.value) {\n isZoomed.value = !isZoomed.value\n setEndAnimationStyles()\n }\n else {\n isZoomed.value = !isZoomed.value\n setZoomStyles()\n }\n}\n\nfunction runAnimation(frames: Keyframe[] | PropertyIndexedKeyframes) {\n animationState.running = true\n hideImage.value = false\n\n const animation = ImgElement.value?.animate(frames, {\n duration: props.animation.duration,\n easing: props.animation.easing,\n })\n\n if (!animation) {\n console.error('[maz-ui](vFullscreenImg) animation is not defined')\n animationState.running = false\n animationState.ended = true\n return\n }\n\n return animation\n}\n\nfunction getPositionsOfClikedElement(offset = props.offset ?? 0) {\n const width = currentClickedElement.value.clientWidth || 1\n const height = currentClickedElement.value.clientHeight || 1\n\n const windowWidth = window.innerWidth\n const windowHeight = window.innerHeight\n\n const scale = Math.min(\n (windowWidth - 2 * offset) / width,\n (windowHeight - 2 * offset) / height,\n )\n\n const centerX = (windowWidth - width * scale) / 2\n const centerY = (windowHeight - height * scale) / 2\n\n return {\n centerX,\n centerY,\n width,\n height,\n scale,\n }\n}\n\nfunction getAnimationFrames({ trigger }: { trigger: 'open' | 'close' }) {\n const { width, height, scale, centerX, centerY } = getPositionsOfClikedElement()\n\n const { top, left, width: clickedElementWidth, height: clickedElementHeight } = currentClickedElementBounds.value\n\n const frames = [\n {\n top: `${top}px`,\n left: `${left}px`,\n width: `${clickedElementWidth}px`,\n height: `${clickedElementHeight}px`,\n opacity: 0,\n },\n {\n top: `${centerY}px`,\n left: `${centerX}px`,\n width: `${width * scale}px`,\n height: `${height * scale}px`,\n opacity: 1,\n },\n ]\n\n return {\n frames: trigger === 'open' ? frames : frames.reverse(),\n }\n}\n\nfunction setEndAnimationStyles() {\n const { height, width, scale } = getPositionsOfClikedElement()\n\n const finalStyles = isLandscapeImage.value\n ? {\n width: `${width * scale}px`,\n maxHeight: `${height * scale}px`,\n }\n : {\n height: `${height * scale}px`,\n maxWidth: `${width * scale}px`,\n }\n\n if (!ImgElement.value) {\n console.error('[maz-ui](vFullscreenImg) ImgElement is not defined')\n return\n }\n\n if (isLandscapeImage.value) {\n ImgElement.value.style.removeProperty('height')\n ImgElement.value.style.removeProperty('maxHeight')\n }\n else {\n ImgElement.value.style.removeProperty('width')\n ImgElement.value.style.removeProperty('maxWidth')\n }\n\n Object.assign(ImgElement.value.style, finalStyles)\n}\n\nfunction openFullscreen() {\n const { frames } = getAnimationFrames({\n trigger: 'open',\n })\n\n const openAnimation = runAnimation(frames)\n\n if (!openAnimation) {\n console.error('[maz-ui](vFullscreenImg) open animation is not defined')\n setEndAnimationStyles()\n return\n }\n\n openAnimation.onfinish = () => {\n setEndAnimationStyles()\n animationState.running = false\n animationState.ended = true\n }\n}\n\nfunction closeFullscreen() {\n const { frames } = getAnimationFrames({\n trigger: 'close',\n })\n\n const closeAnimation = runAnimation(frames)\n\n function onFinish() {\n emits('close')\n FullscreenImgElement.value?.remove()\n props.destroy?.()\n animationState.running = false\n animationState.ended = true\n }\n\n if (!closeAnimation) {\n console.error('[maz-ui](vFullscreenImg) close animation is not defined')\n onFinish()\n return\n }\n\n closeAnimation.onfinish = onFinish\n}\n\nfunction onResizeWindow() {\n if (!isZoomed.value) {\n setEndAnimationStyles()\n }\n}\n\nonMounted(() => {\n showLoader.value = true\n document.addEventListener('keydown', keydownLister)\n window.addEventListener('resize', onResizeWindow)\n addClassToDocument()\n hasMultipleInstances.value = getAllInstances().length > 1\n})\n\nonBeforeUnmount(() => {\n document.removeEventListener('keydown', keydownLister)\n window.removeEventListener('resize', onResizeWindow)\n removeClassFromDocument()\n})\n</script>\n\n<template>\n <div\n ref=\"FullscreenImgElement\"\n role=\"button\"\n class=\"m-fullscreen-img m-reset-css\"\n tabindex=\"0\"\n @click.stop=\"close\"\n @keypress.esc.prevent=\"close\"\n >\n <button\n v-if=\"loadedOnce && hasMultipleInstances\"\n type=\"button\"\n class=\"m-fullscreen-btn --next\"\n @click.stop=\"nextPreviousImage('next')\"\n >\n <ChevronLeft class=\"maz-rotate-180\" />\n </button>\n <button\n v-if=\"loadedOnce && hasMultipleInstances\"\n type=\"button\"\n class=\"m-fullscreen-btn --previous\"\n @click.stop=\"nextPreviousImage('previous')\"\n >\n <ChevronLeft />\n </button>\n\n <button type=\"button\" class=\"m-fullscreen-btn --close\" @click=\"close\">\n <XMark />\n </button>\n\n <div class=\"m-fullscreen-img-scroller\">\n <!-- eslint-disable-next-line vuejs-accessibility/no-static-element-interactions, vuejs-accessibility/click-events-have-key-events -->\n <img\n ref=\"ImgElement\"\n :src=\"currentSrc\"\n :alt=\"currentAlt ?? undefined\"\n tabindex=\"0\"\n :class=\"[imageZoomClasses]\"\n @load=\"onImageLoaded\"\n @click.stop=\"zoom && toggleZoom()\"\n >\n\n <MazSpinner v-show=\"showLoader\" class=\"m-fullscreen-img-loader\" />\n </div>\n </div>\n</template>\n\n<style lang=\"postcss\">\n html.--m-fullscreen-open {\n @apply maz-h-screen maz-overflow-hidden;\n}\n</style>\n\n<style lang=\"postcss\" scoped>\n .m-fullscreen-img {\n @apply maz-fixed maz-inset-0 maz-z-default-backdrop maz-h-screen maz-w-screen maz-items-center maz-bg-overlay maz-outline-none maz-backdrop-blur;\n\n .m-fullscreen-img-scroller {\n @apply maz-flex maz-h-screen maz-w-screen maz-overflow-auto maz-flex-center;\n }\n\n img {\n @apply maz-z-2 maz-outline-none maz-cursor-zoom-in maz-object-center maz-object-contain;\n\n &.--is-zoomed {\n @apply maz-cursor-zoom-out;\n }\n\n &.--invisible {\n @apply maz-invisible;\n }\n\n &.--absolute {\n @apply maz-absolute;\n }\n }\n\n .m-fullscreen-img-loader {\n @apply maz-absolute maz-text-2xl maz-z-15;\n }\n\n .m-fullscreen-btn {\n @apply maz-absolute maz-z-15 maz-flex maz-h-20 maz-w-[7%] maz-min-w-[5em] maz-cursor-pointer maz-p-4 maz-transition-colors maz-duration-200;\n\n svg {\n @apply maz-text-3xl maz-transition-transform maz-duration-300 maz-ease-in-out;\n }\n\n &:hover {\n svg {\n @apply maz-scale-150;\n }\n }\n\n &.--close {\n @apply maz-right-0 maz-top-0 maz-items-start maz-justify-end;\n }\n\n &.--previous {\n @apply maz-left-0 maz-top-1/2 maz-h-screen maz--translate-y-1/2 maz-transform maz-items-center maz-justify-start;\n }\n\n &.--next {\n @apply maz-right-0 maz-top-1/2 maz-h-screen maz--translate-y-1/2 maz-transform maz-items-center maz-justify-end;\n }\n }\n}\n</style>\n","import type { DirectiveBinding } from 'vue'\n\nimport type { MazFullscreenImgProps } from './MazFullscreenImg.vue'\nimport { mount } from '@helpers/mountComponent'\nimport MazFullscreenImg from './MazFullscreenImg.vue'\n\nexport interface vFullscreenImgOptions {\n disabled?: boolean\n scaleOnHover?: boolean\n blurOnHover?: boolean\n zoom?: boolean\n offset?: number\n animation?: {\n duration?: number\n easing?: string\n }\n}\n\ninterface vFullscreenImgBindingOptions extends vFullscreenImgOptions {\n src: string\n alt?: string | null\n}\n\nexport type vFullscreenImgBindingValue = string | vFullscreenImgBindingOptions | undefined\n\nexport type vFullscreenImgBinding = DirectiveBinding<vFullscreenImgBindingValue>\n\nconst STATE_OPEN_CLASS = 'm-fullscreen-is-open'\n\nexport class FullscreenImgHandler {\n private options: vFullscreenImgBindingOptions\n private defaultOptions: vFullscreenImgOptions = {\n scaleOnHover: false,\n blurOnHover: false,\n disabled: false,\n zoom: true,\n offset: 80,\n animation: {\n duration: 300,\n easing: 'ease-in-out',\n },\n }\n\n private mouseEnterListener: () => void\n private mouseLeaveListener: () => void\n private renderPreviewListener: () => void\n\n private buildOptions(\n el: HTMLElement,\n binding: vFullscreenImgBinding,\n ): vFullscreenImgBindingOptions {\n const options\n = typeof binding.value === 'object' ? binding.value : { src: binding.value, alt: undefined }\n\n const src = options?.src ?? this.getImgSrc(el)\n const alt = options?.alt ?? this.getImgAlt(el)\n\n return {\n ...this.defaultOptions,\n ...options,\n src,\n alt,\n }\n }\n\n get allInstances(): HTMLElement[] {\n return [...document.querySelectorAll('.m-fullscreen-img-instance')] as HTMLElement[]\n }\n\n private getImgSrc(el: HTMLElement) {\n const imgSrc = this.options?.src || el.getAttribute('src') || el.getAttribute('data-src')\n\n if (!imgSrc) {\n throw new Error(\n '[maz-ui](fullscreen-img) src of image must be provided by `v-fullscreen=\"\"`, `v-fullscreen=\"{ src: \"\" }\"`, `src=\"\"` or `data-src=\"\"` atributes',\n )\n }\n\n return imgSrc\n }\n\n private getImgAlt(el: HTMLElement) {\n return this.options?.alt || el.getAttribute('alt') || el.getAttribute('data-alt')\n }\n\n public create(el: HTMLElement, binding: vFullscreenImgBinding) {\n this.options = this.buildOptions(el, binding)\n\n if (this.options.disabled)\n return\n\n el.style.cursor = 'move'\n\n if (this.options.scaleOnHover || this.options.blurOnHover) {\n el.style.transition = 'all 200ms ease-in-out'\n }\n\n /**\n * Set class & data attribute to use it with previous & next functions\n */\n el.classList.add('m-fullscreen-img-instance')\n\n el.setAttribute('data-src', this.getImgSrc(el))\n\n const alt = this.getImgAlt(el)\n if (alt) {\n el.setAttribute('data-alt', alt)\n }\n\n this.mouseEnterListener = () => this.mouseEnter(el)\n this.mouseLeaveListener = () => this.mouseLeave(el)\n this.renderPreviewListener = () => this.renderPreview(el)\n\n el.addEventListener('mouseenter', this.mouseEnterListener)\n el.addEventListener('mouseleave', this.mouseLeaveListener)\n el.addEventListener('click', this.renderPreviewListener)\n }\n\n public update(el: HTMLElement, binding: vFullscreenImgBinding): void {\n this.options = this.buildOptions(el, binding)\n }\n\n public remove(el: HTMLElement): void {\n el.removeEventListener('mouseenter', this.mouseEnterListener)\n el.removeEventListener('mouseleave', this.mouseLeaveListener)\n el.removeEventListener('click', this.renderPreviewListener)\n\n el.classList.remove('m-fullscreen-img-instance')\n\n el.style.cursor = ''\n }\n\n private renderPreview(el: HTMLElement) {\n el.classList.add(STATE_OPEN_CLASS)\n\n return mount<typeof MazFullscreenImg, MazFullscreenImgProps>(MazFullscreenImg, {\n props: {\n ...this.options,\n openInstanceClass: STATE_OPEN_CLASS,\n clickedElement: el,\n clickedElementBounds: el.getBoundingClientRect(),\n },\n addDestroyInProps: true,\n })\n }\n\n private mouseLeave(el: HTMLElement): void {\n if (this.options.scaleOnHover)\n el.style.transform = ''\n if (this.options.blurOnHover)\n el.style.filter = ''\n el.style.zIndex = ''\n }\n\n private mouseEnter(el: HTMLElement): void {\n el.style.zIndex = '1'\n if (this.options.scaleOnHover)\n el.style.transform = 'scale(1.04)'\n if (this.options.blurOnHover)\n el.style.filter = 'blur(3px)'\n }\n}\n","import type { ObjectDirective } from 'vue'\nimport { FullscreenImgHandler, type vFullscreenImgBindingValue } from './fullscreen-img.handler'\n\nlet instance: FullscreenImgHandler\n\nconst directive = {\n mounted(el: HTMLElement, binding) {\n instance = new FullscreenImgHandler()\n return instance.create(el, binding)\n },\n updated(el: HTMLElement, binding) {\n return instance.update(el, binding)\n },\n unmounted(el: HTMLElement) {\n return instance.remove(el)\n },\n} satisfies ObjectDirective<HTMLElement, vFullscreenImgBindingValue>\n\nexport { directive as vFullscreenImg }\n"],"names":["props","__props","emits","__emit","XMark","defineAsyncComponent","ChevronLeft","imageLoaded","ref","showLoader","loadedOnce","hasMultipleInstances","isZoomed","animationState","reactive","currentClickedElement","currentClickedElementBounds","computed","isLandscapeImage","currentSrc","currentAlt","FullscreenImgElement","ImgElement","hideImage","imageZoomClasses","onImageLoaded","_a","_b","watch","value","openFullscreen","close","closeFullscreen","keydownLister","e","nextPreviousImage","addClassToDocument","removeClassFromDocument","getAllInstances","getNewInstanceIndex","allInstances","newInstanceIndex","useNextInstance","currentInstance","nextInstance","src","alt","which","currentInstanceIndex","checkAvailability","setZoomStyles","setEndAnimationStyles","imgElement","toggleZoom","runAnimation","frames","animation","getPositionsOfClikedElement","offset","width","height","windowWidth","windowHeight","scale","centerX","centerY","getAnimationFrames","trigger","top","left","clickedElementWidth","clickedElementHeight","finalStyles","openAnimation","closeAnimation","onFinish","onResizeWindow","onMounted","onBeforeUnmount","STATE_OPEN_CLASS","FullscreenImgHandler","__publicField","el","binding","options","imgSrc","mount","MazFullscreenImg","instance","directive"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.Bex2hM45.mjs","sources":["../../src/composables/useFormValidator/config.ts","../../src/composables/useFormValidator/utils.ts"],"sourcesContent":["import type { StrictOptions } from './types'\n\nexport const CONFIG: {\n mode: StrictOptions['mode']\n scrollToErrorSelector: string\n debounceTime: number\n throttleTime: number\n} = {\n mode: 'lazy',\n scrollToErrorSelector: '.has-field-error',\n debounceTime: 300,\n throttleTime: 1000,\n} as const\n","import type { InjectionKey } from 'vue'\nimport type {\n BaseFormPayload,\n CustomInstance,\n ExtractModelKey,\n FieldsStates,\n FieldState,\n FormContext,\n FormFieldOptions,\n FormSchema,\n StrictOptions,\n ValidationIssues,\n} from './types'\n\nimport { debounceId } from '@helpers/debounceId'\nimport { freezeValue } from '@helpers/freezeValue'\nimport { isEqual } from '@helpers/isEqual'\nimport { throttleId } from '@helpers/throttleId'\nimport { getCurrentInstance, inject, nextTick } from 'vue'\nimport { CONFIG } from './config'\n\nexport function fieldHasValidation<Model extends BaseFormPayload, ModelKey extends ExtractModelKey<FormSchema<Model>>>(field: ModelKey, schema: FormSchema<Model>) {\n return Object.keys(schema).includes(field as string)\n}\n\nexport function scrollToError(selector = CONFIG.scrollToErrorSelector) {\n const element = document.querySelector(selector)\n\n if (element) {\n element.scrollIntoView({ behavior: 'smooth', block: 'center' })\n }\n}\n\nexport function getErrorMessages<\n Model extends BaseFormPayload = BaseFormPayload,\n ModelKey extends ExtractModelKey<FormSchema<Model>> = ExtractModelKey<FormSchema<Model>>,\n>(errors: Record<ModelKey, ValidationIssues>, fieldsStates: FieldsStates<Model>) {\n const errorMessages = {} as Record<ModelKey, string | undefined>\n\n for (const [name, value] of Object.entries(errors)) {\n const issues = value as ValidationIssues\n errorMessages[name as ModelKey] = fieldsStates[name as ModelKey].error && issues[0] ? issues[0].message : undefined\n }\n\n return errorMessages\n}\n\nexport function isEmptyValue(value: unknown) {\n return value === undefined || value === null || value === ''\n}\n\nexport function getValidateFunction<\n Model extends BaseFormPayload,\n ModelKey extends ExtractModelKey<FormSchema<Model>> = ExtractModelKey<FormSchema<Model>>,\n>({\n name,\n hasValidation,\n debouncedFields,\n throttledFields,\n}: {\n name: ModelKey\n hasValidation: boolean\n debouncedFields?: StrictOptions<Model>['debouncedFields']\n throttledFields?: StrictOptions<Model>['throttledFields']\n}) {\n if (!hasValidation) {\n return\n }\n\n const fieldName = String(name)\n\n if (debouncedFields?.[fieldName] && throttledFields?.[fieldName]) {\n throw new Error(`The field \"${fieldName}\" cannot be both debounced and throttled`)\n }\n else if (debouncedFields?.[fieldName]) {\n return debounceId(\n fieldName,\n setFieldValidationState<Model>,\n typeof debouncedFields[fieldName] === 'number' ? debouncedFields[fieldName] : CONFIG.debounceTime,\n )\n }\n else if (throttledFields?.[fieldName]) {\n return throttleId(\n fieldName,\n setFieldValidationState<Model>,\n typeof throttledFields[fieldName] === 'number' ? throttledFields[fieldName] : CONFIG.throttleTime,\n )\n }\n else {\n return setFieldValidationState<Model>\n }\n}\n\nexport function getFieldState<\n Model extends BaseFormPayload = BaseFormPayload,\n ModelKey extends ExtractModelKey<FormSchema<Model>> = ExtractModelKey<FormSchema<Model>>,\n>({\n name,\n schema,\n initialValue,\n fieldState,\n options,\n}: {\n name: ModelKey\n schema?: FormSchema<Model>\n initialValue?: Model[ModelKey]\n fieldState: FieldState<Model>\n options?: Pick<StrictOptions<Model>, 'debouncedFields' | 'throttledFields' | 'mode'>\n}): FieldState<Model> {\n const hasValidation = schema ? fieldHasValidation<Model, ModelKey>(name, schema) : false\n\n const validateFunction = getValidateFunction({\n name,\n hasValidation,\n debouncedFields: options?.debouncedFields,\n throttledFields: options?.throttledFields,\n })\n\n return {\n blurred: false,\n dirty: false,\n errors: [],\n error: false,\n valid: !hasValidation,\n validating: false,\n validated: false,\n initialValue: freezeValue(initialValue),\n validateFunction,\n mode: hasValidation ? options?.mode ?? fieldState?.mode ?? CONFIG.mode : undefined,\n }\n}\n\nexport function getFieldsStates<\n Model extends BaseFormPayload,\n ModelKey extends ExtractModelKey<FormSchema<Model>> = ExtractModelKey<FormSchema<Model>>,\n>({\n schema,\n payload,\n options,\n}: {\n schema: FormSchema<Model>\n payload: Partial<Model>\n options: StrictOptions<Model>\n}): FieldsStates<Model> {\n const fieldsStates = {} as FieldsStates<Model>\n\n for (const fieldName in schema) {\n const name = fieldName as ModelKey\n fieldsStates[name] = getFieldState<Model>({\n name,\n schema,\n options,\n fieldState: fieldsStates[name],\n initialValue: payload?.[name],\n })\n }\n\n return fieldsStates\n}\n\nexport function updateFieldsStates<\n Model extends BaseFormPayload,\n ModelKey extends ExtractModelKey<FormSchema<Model>> = ExtractModelKey<FormSchema<Model>>,\n>({\n fieldsStates,\n payload,\n schema,\n options,\n updateMode = false,\n}: {\n fieldsStates: FieldsStates<Model>\n payload: Model\n schema: FormSchema<Model>\n options: StrictOptions<Model>\n updateMode?: boolean\n}) {\n for (const fieldName in schema) {\n const name = fieldName as ModelKey\n fieldsStates[name] = updateFieldState<Model>({\n name,\n fieldState: fieldsStates[name],\n payload,\n schema,\n options,\n updateMode,\n })\n }\n}\n\nexport function updateFieldState<\n Model extends BaseFormPayload,\n ModelKey extends ExtractModelKey<FormSchema<Model>> = ExtractModelKey<FormSchema<Model>>,\n>({\n name,\n fieldState,\n payload,\n schema,\n options,\n updateMode = true,\n}: {\n name: ModelKey\n fieldState: FieldState<Model>\n payload: Model\n schema: FormSchema<Model>\n options: FormFieldOptions<Model[ModelKey]> & StrictOptions<Model>\n updateMode?: boolean\n}): FieldState<Model> {\n const { initialValue, mode, ...rest } = getFieldState<Model>({\n name,\n schema,\n initialValue: options.defaultValue ?? payload[name],\n fieldState,\n options,\n })\n\n const newMode = updateMode ? mode ?? fieldState.mode ?? CONFIG.mode : fieldState.mode\n\n return {\n ...fieldState,\n initialValue,\n mode: newMode,\n ...(fieldState?.mode && newMode !== fieldState.mode ? rest : {}),\n }\n}\n\nexport function getFieldsErrors<\n Model extends BaseFormPayload,\n ModelKey extends ExtractModelKey<FormSchema<Model>> = ExtractModelKey<FormSchema<Model>>,\n>(fieldsStates: FieldsStates<Model>) {\n const fieldsErrors = {} as Record<ModelKey, ValidationIssues>\n\n for (const [name, { errors }] of Object.entries(fieldsStates)) {\n fieldsErrors[name as ModelKey] = errors\n }\n\n return fieldsErrors\n}\n\nexport function findInteractiveElements(el: HTMLElement) {\n if (el instanceof HTMLInputElement || el instanceof HTMLSelectElement || el instanceof HTMLTextAreaElement) {\n return [el]\n }\n\n return el.querySelectorAll<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>(\n 'input, select, textarea',\n ) as unknown as (HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement)[]\n}\n\nexport function addEventToInteractiveElements({\n interactiveElements,\n onBlur,\n mode,\n}: {\n interactiveElements: HTMLElement[]\n onBlur: () => void\n mode: StrictOptions['mode']\n}) {\n interactiveElements.forEach((element) => {\n if (hasModeIncludes(['eager', 'blur', 'progressive'], mode)) {\n element.addEventListener('blur', onBlur)\n }\n })\n}\n\nexport function removeEventFromInteractiveElements({\n interactiveElements,\n onBlur,\n}: {\n interactiveElements: HTMLElement[]\n onBlur: () => void\n}) {\n interactiveElements.forEach((element) => {\n element.removeEventListener('blur', onBlur)\n })\n}\n\nexport async function getFieldValidationResult<\n Model extends BaseFormPayload,\n ModelKey extends ExtractModelKey<FormSchema<Model>> = ExtractModelKey<FormSchema<Model>>,\n>(name: ModelKey, schema: FormSchema<Model>, value: Model[ModelKey]) {\n const fieldSchema = await getValidationSchema(schema)\n const safeParseAsync = await getValibotValidationMethod('safeParseAsync')\n const result = await safeParseAsync(fieldSchema.entries[name], value ?? '')\n\n return {\n result,\n isValid: result.success,\n }\n}\n\nexport async function setFieldValidationState<\n Model extends BaseFormPayload,\n ModelKey extends ExtractModelKey<FormSchema<Model>> = ExtractModelKey<FormSchema<Model>>,\n>({\n name,\n fieldState,\n schema,\n payload,\n setError = true,\n setErrorIfInvalidAndNotEmpty = false,\n}: {\n name: ModelKey\n fieldState: FieldState<Model>\n schema: FormSchema<Model>\n payload: Model\n setError?: boolean\n setErrorIfInvalidAndNotEmpty?: boolean\n}) {\n await nextTick()\n\n fieldState.validating = true\n\n if (!schema[name]) {\n // Validate if the field is not in the schema\n fieldState.valid = true\n fieldState.validating = false\n fieldState.validated = true\n fieldState.errors = []\n fieldState.error = false\n return\n }\n\n const { result, isValid } = await getFieldValidationResult(name, schema, payload[name])\n\n fieldState.valid = isValid\n\n if (setError || (setErrorIfInvalidAndNotEmpty && !isValid && !isEmptyValue(payload[name]))) {\n fieldState.error = !isValid\n }\n\n fieldState.errors = result.issues ?? []\n\n fieldState.validating = false\n fieldState.validated = true\n}\n\nexport function validateField<\n Model extends BaseFormPayload,\n ModelKey extends ExtractModelKey<FormSchema<Model>> = ExtractModelKey<FormSchema<Model>>,\n>({\n name,\n fieldState,\n payload,\n schema,\n}: {\n name: ModelKey\n fieldState: FieldState<Model>\n payload: Model\n schema: FormSchema<Model>\n}) {\n const validationParams: Parameters<typeof setFieldValidationState<Model>>[number] = {\n name,\n fieldState,\n payload,\n schema,\n setError: fieldState.mode === 'progressive' ? fieldState.valid || fieldState.blurred : true,\n }\n\n return fieldState.validateFunction?.(validationParams)\n}\n\nexport function validateForm<\n Model extends BaseFormPayload,\n ModelKey extends ExtractModelKey<FormSchema<Model>> = ExtractModelKey<FormSchema<Model>>,\n>({\n fieldsStates,\n payload,\n showErrors = true,\n schema,\n}: {\n fieldsStates: FieldsStates<Model>\n showErrors?: boolean\n payload: Model\n schema: FormSchema<Model>\n}) {\n return Promise.all(\n Object.keys(fieldsStates).map(name =>\n setFieldValidationState<Model>({\n name: name as ModelKey,\n setError: showErrors,\n fieldState: fieldsStates[name],\n payload,\n schema,\n setErrorIfInvalidAndNotEmpty: fieldsStates[name].mode === 'lazy',\n }),\n ),\n )\n}\n\nexport function canExecuteValidation<Model extends BaseFormPayload>({\n eventName,\n fieldState,\n isSubmitted,\n}: {\n eventName: 'blur' | 'input'\n fieldState: FieldState<Model>\n isSubmitted: boolean\n}): boolean {\n const { dirty, blurred, mode, valid } = fieldState\n\n const shouldNotValidate\n = (eventName === 'blur' && (hasModeIncludes(['lazy', 'aggressive'], mode) || valid))\n || (eventName === 'input' && mode === 'blur')\n || !mode\n\n if (shouldNotValidate) {\n return false\n }\n\n return (\n isSubmitted\n || (mode === 'eager' && blurred)\n || (mode === 'blur' && blurred)\n || (mode === 'aggressive' && dirty)\n || (mode === 'lazy' && dirty)\n || mode === 'progressive'\n )\n}\n\nexport function handleFieldBlur<\n Model extends BaseFormPayload,\n ModelKey extends ExtractModelKey<FormSchema<Model>> = ExtractModelKey<FormSchema<Model>>,\n>({\n name,\n force = false,\n payload,\n fieldState,\n schema,\n isSubmitted,\n}: {\n name: ModelKey\n payload: Model\n fieldState: FieldState<Model>\n schema: FormSchema<Model>\n isSubmitted: boolean\n force?: boolean\n}) {\n const fieldValue = payload[name]\n\n const isDirty = !isEmptyValue(fieldValue) && !isEqual(fieldValue, fieldState.initialValue)\n\n fieldState.dirty = isDirty\n fieldState.blurred = fieldState.blurred || (fieldState.mode === 'eager' ? isDirty : true)\n\n const shouldValidate = force || canExecuteValidation<Model>({ eventName: 'blur', fieldState, isSubmitted })\n\n if (!shouldValidate) {\n return\n }\n\n return validateField<Model>({\n name,\n fieldState,\n schema,\n payload,\n })\n}\n\nexport function handleFieldInput<\n Model extends BaseFormPayload,\n ModelKey extends ExtractModelKey<FormSchema<Model>> = ExtractModelKey<FormSchema<Model>>,\n>({\n name,\n payload,\n fieldState,\n schema,\n isSubmitted,\n forceValidation = false,\n}: {\n name: ModelKey\n payload: Model\n fieldState: FieldState<Model>\n schema: FormSchema<Model>\n isSubmitted: boolean\n forceValidation?: boolean\n}) {\n const fieldValue = payload[name]\n\n fieldState.validated = false\n\n const isDirty = !isEmptyValue(fieldValue) && !isEqual(fieldValue, fieldState.initialValue)\n\n fieldState.dirty = isDirty\n\n const shouldValidate = forceValidation || canExecuteValidation<Model>({ eventName: 'input', fieldState, isSubmitted })\n\n if (!shouldValidate) {\n return\n }\n\n return validateField<Model>({\n name,\n fieldState,\n schema,\n payload,\n })\n}\n\nexport function getInstance<Model extends BaseFormPayload>(composableName: string) {\n const instance = getCurrentInstance() as CustomInstance<Model>\n if (!instance) {\n throw new Error(`${composableName} must be called within setup()`)\n }\n\n return instance\n}\n\nexport function getContext<Model extends BaseFormPayload>(\n identifier: string | symbol | InjectionKey<FormContext<Model>>,\n composableName: string,\n) {\n const instance = getInstance<Model>(composableName)\n const context = instance.formContexts?.get(identifier) ?? inject<FormContext<Model>>(identifier)\n\n if (!context) {\n throw new Error('useFormField must be used within a form (useFormValidator)')\n }\n\n return context\n}\n\nexport function getValidationEvents<Model extends BaseFormPayload>({\n ref,\n fieldState,\n onBlur,\n}: {\n ref?: string\n fieldState: FieldState<Model>\n onBlur: () => void\n}) {\n if (ref || hasModeIncludes(['aggressive', 'lazy'], fieldState.mode)) {\n return\n }\n\n return {\n onBlur,\n }\n}\n\ntype Valibot = typeof import('valibot')\nconst storeValidbot: Record<keyof Valibot | string, any> = {}\n\nexport async function getValibotValidationMethod<MethodName extends keyof Valibot>(methodName: MethodName): Promise<Valibot[MethodName]> {\n if (storeValidbot[methodName]) {\n return storeValidbot[methodName]\n }\n\n const valibot = await import('valibot')\n\n storeValidbot[methodName] = valibot[methodName]\n\n return valibot[methodName]\n}\n\nexport async function getValidationSchema<Model extends BaseFormPayload>(formSchema: FormSchema<Model>) {\n const objectAsync = await getValibotValidationMethod('objectAsync')\n return objectAsync(formSchema)\n}\n\nexport function hasModeIncludes(modes: StrictOptions['mode'][], value?: StrictOptions['mode']): value is StrictOptions['mode'] {\n if (!value) {\n return false\n }\n\n return modes.includes(value)\n}\n"],"names":["CONFIG","fieldHasValidation","field","schema","scrollToError","selector","element","getErrorMessages","errors","fieldsStates","errorMessages","name","value","issues","isEmptyValue","getValidateFunction","hasValidation","debouncedFields","throttledFields","fieldName","debounceId","setFieldValidationState","throttleId","getFieldState","initialValue","fieldState","options","validateFunction","freezeValue","getFieldsStates","payload","updateFieldsStates","updateMode","updateFieldState","mode","rest","newMode","getFieldsErrors","fieldsErrors","findInteractiveElements","el","addEventToInteractiveElements","interactiveElements","onBlur","hasModeIncludes","removeEventFromInteractiveElements","getFieldValidationResult","fieldSchema","getValidationSchema","result","getValibotValidationMethod","setError","setErrorIfInvalidAndNotEmpty","nextTick","isValid","validateField","validationParams","_a","validateForm","showErrors","canExecuteValidation","eventName","isSubmitted","dirty","blurred","valid","handleFieldBlur","force","fieldValue","isDirty","isEqual","handleFieldInput","forceValidation","getInstance","composableName","instance","getCurrentInstance","getContext","identifier","context","inject","getValidationEvents","ref","storeValidbot","methodName","valibot","formSchema","modes"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.vGzCTXH5.cjs","sources":["../../src/composables/useFormValidator/config.ts","../../src/composables/useFormValidator/utils.ts"],"sourcesContent":["import type { StrictOptions } from './types'\n\nexport const CONFIG: {\n mode: StrictOptions['mode']\n scrollToErrorSelector: string\n debounceTime: number\n throttleTime: number\n} = {\n mode: 'lazy',\n scrollToErrorSelector: '.has-field-error',\n debounceTime: 300,\n throttleTime: 1000,\n} as const\n","import type { InjectionKey } from 'vue'\nimport type {\n BaseFormPayload,\n CustomInstance,\n ExtractModelKey,\n FieldsStates,\n FieldState,\n FormContext,\n FormFieldOptions,\n FormSchema,\n StrictOptions,\n ValidationIssues,\n} from './types'\n\nimport { debounceId } from '@helpers/debounceId'\nimport { freezeValue } from '@helpers/freezeValue'\nimport { isEqual } from '@helpers/isEqual'\nimport { throttleId } from '@helpers/throttleId'\nimport { getCurrentInstance, inject, nextTick } from 'vue'\nimport { CONFIG } from './config'\n\nexport function fieldHasValidation<Model extends BaseFormPayload, ModelKey extends ExtractModelKey<FormSchema<Model>>>(field: ModelKey, schema: FormSchema<Model>) {\n return Object.keys(schema).includes(field as string)\n}\n\nexport function scrollToError(selector = CONFIG.scrollToErrorSelector) {\n const element = document.querySelector(selector)\n\n if (element) {\n element.scrollIntoView({ behavior: 'smooth', block: 'center' })\n }\n}\n\nexport function getErrorMessages<\n Model extends BaseFormPayload = BaseFormPayload,\n ModelKey extends ExtractModelKey<FormSchema<Model>> = ExtractModelKey<FormSchema<Model>>,\n>(errors: Record<ModelKey, ValidationIssues>, fieldsStates: FieldsStates<Model>) {\n const errorMessages = {} as Record<ModelKey, string | undefined>\n\n for (const [name, value] of Object.entries(errors)) {\n const issues = value as ValidationIssues\n errorMessages[name as ModelKey] = fieldsStates[name as ModelKey].error && issues[0] ? issues[0].message : undefined\n }\n\n return errorMessages\n}\n\nexport function isEmptyValue(value: unknown) {\n return value === undefined || value === null || value === ''\n}\n\nexport function getValidateFunction<\n Model extends BaseFormPayload,\n ModelKey extends ExtractModelKey<FormSchema<Model>> = ExtractModelKey<FormSchema<Model>>,\n>({\n name,\n hasValidation,\n debouncedFields,\n throttledFields,\n}: {\n name: ModelKey\n hasValidation: boolean\n debouncedFields?: StrictOptions<Model>['debouncedFields']\n throttledFields?: StrictOptions<Model>['throttledFields']\n}) {\n if (!hasValidation) {\n return\n }\n\n const fieldName = String(name)\n\n if (debouncedFields?.[fieldName] && throttledFields?.[fieldName]) {\n throw new Error(`The field \"${fieldName}\" cannot be both debounced and throttled`)\n }\n else if (debouncedFields?.[fieldName]) {\n return debounceId(\n fieldName,\n setFieldValidationState<Model>,\n typeof debouncedFields[fieldName] === 'number' ? debouncedFields[fieldName] : CONFIG.debounceTime,\n )\n }\n else if (throttledFields?.[fieldName]) {\n return throttleId(\n fieldName,\n setFieldValidationState<Model>,\n typeof throttledFields[fieldName] === 'number' ? throttledFields[fieldName] : CONFIG.throttleTime,\n )\n }\n else {\n return setFieldValidationState<Model>\n }\n}\n\nexport function getFieldState<\n Model extends BaseFormPayload = BaseFormPayload,\n ModelKey extends ExtractModelKey<FormSchema<Model>> = ExtractModelKey<FormSchema<Model>>,\n>({\n name,\n schema,\n initialValue,\n fieldState,\n options,\n}: {\n name: ModelKey\n schema?: FormSchema<Model>\n initialValue?: Model[ModelKey]\n fieldState: FieldState<Model>\n options?: Pick<StrictOptions<Model>, 'debouncedFields' | 'throttledFields' | 'mode'>\n}): FieldState<Model> {\n const hasValidation = schema ? fieldHasValidation<Model, ModelKey>(name, schema) : false\n\n const validateFunction = getValidateFunction({\n name,\n hasValidation,\n debouncedFields: options?.debouncedFields,\n throttledFields: options?.throttledFields,\n })\n\n return {\n blurred: false,\n dirty: false,\n errors: [],\n error: false,\n valid: !hasValidation,\n validating: false,\n validated: false,\n initialValue: freezeValue(initialValue),\n validateFunction,\n mode: hasValidation ? options?.mode ?? fieldState?.mode ?? CONFIG.mode : undefined,\n }\n}\n\nexport function getFieldsStates<\n Model extends BaseFormPayload,\n ModelKey extends ExtractModelKey<FormSchema<Model>> = ExtractModelKey<FormSchema<Model>>,\n>({\n schema,\n payload,\n options,\n}: {\n schema: FormSchema<Model>\n payload: Partial<Model>\n options: StrictOptions<Model>\n}): FieldsStates<Model> {\n const fieldsStates = {} as FieldsStates<Model>\n\n for (const fieldName in schema) {\n const name = fieldName as ModelKey\n fieldsStates[name] = getFieldState<Model>({\n name,\n schema,\n options,\n fieldState: fieldsStates[name],\n initialValue: payload?.[name],\n })\n }\n\n return fieldsStates\n}\n\nexport function updateFieldsStates<\n Model extends BaseFormPayload,\n ModelKey extends ExtractModelKey<FormSchema<Model>> = ExtractModelKey<FormSchema<Model>>,\n>({\n fieldsStates,\n payload,\n schema,\n options,\n updateMode = false,\n}: {\n fieldsStates: FieldsStates<Model>\n payload: Model\n schema: FormSchema<Model>\n options: StrictOptions<Model>\n updateMode?: boolean\n}) {\n for (const fieldName in schema) {\n const name = fieldName as ModelKey\n fieldsStates[name] = updateFieldState<Model>({\n name,\n fieldState: fieldsStates[name],\n payload,\n schema,\n options,\n updateMode,\n })\n }\n}\n\nexport function updateFieldState<\n Model extends BaseFormPayload,\n ModelKey extends ExtractModelKey<FormSchema<Model>> = ExtractModelKey<FormSchema<Model>>,\n>({\n name,\n fieldState,\n payload,\n schema,\n options,\n updateMode = true,\n}: {\n name: ModelKey\n fieldState: FieldState<Model>\n payload: Model\n schema: FormSchema<Model>\n options: FormFieldOptions<Model[ModelKey]> & StrictOptions<Model>\n updateMode?: boolean\n}): FieldState<Model> {\n const { initialValue, mode, ...rest } = getFieldState<Model>({\n name,\n schema,\n initialValue: options.defaultValue ?? payload[name],\n fieldState,\n options,\n })\n\n const newMode = updateMode ? mode ?? fieldState.mode ?? CONFIG.mode : fieldState.mode\n\n return {\n ...fieldState,\n initialValue,\n mode: newMode,\n ...(fieldState?.mode && newMode !== fieldState.mode ? rest : {}),\n }\n}\n\nexport function getFieldsErrors<\n Model extends BaseFormPayload,\n ModelKey extends ExtractModelKey<FormSchema<Model>> = ExtractModelKey<FormSchema<Model>>,\n>(fieldsStates: FieldsStates<Model>) {\n const fieldsErrors = {} as Record<ModelKey, ValidationIssues>\n\n for (const [name, { errors }] of Object.entries(fieldsStates)) {\n fieldsErrors[name as ModelKey] = errors\n }\n\n return fieldsErrors\n}\n\nexport function findInteractiveElements(el: HTMLElement) {\n if (el instanceof HTMLInputElement || el instanceof HTMLSelectElement || el instanceof HTMLTextAreaElement) {\n return [el]\n }\n\n return el.querySelectorAll<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>(\n 'input, select, textarea',\n ) as unknown as (HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement)[]\n}\n\nexport function addEventToInteractiveElements({\n interactiveElements,\n onBlur,\n mode,\n}: {\n interactiveElements: HTMLElement[]\n onBlur: () => void\n mode: StrictOptions['mode']\n}) {\n interactiveElements.forEach((element) => {\n if (hasModeIncludes(['eager', 'blur', 'progressive'], mode)) {\n element.addEventListener('blur', onBlur)\n }\n })\n}\n\nexport function removeEventFromInteractiveElements({\n interactiveElements,\n onBlur,\n}: {\n interactiveElements: HTMLElement[]\n onBlur: () => void\n}) {\n interactiveElements.forEach((element) => {\n element.removeEventListener('blur', onBlur)\n })\n}\n\nexport async function getFieldValidationResult<\n Model extends BaseFormPayload,\n ModelKey extends ExtractModelKey<FormSchema<Model>> = ExtractModelKey<FormSchema<Model>>,\n>(name: ModelKey, schema: FormSchema<Model>, value: Model[ModelKey]) {\n const fieldSchema = await getValidationSchema(schema)\n const safeParseAsync = await getValibotValidationMethod('safeParseAsync')\n const result = await safeParseAsync(fieldSchema.entries[name], value ?? '')\n\n return {\n result,\n isValid: result.success,\n }\n}\n\nexport async function setFieldValidationState<\n Model extends BaseFormPayload,\n ModelKey extends ExtractModelKey<FormSchema<Model>> = ExtractModelKey<FormSchema<Model>>,\n>({\n name,\n fieldState,\n schema,\n payload,\n setError = true,\n setErrorIfInvalidAndNotEmpty = false,\n}: {\n name: ModelKey\n fieldState: FieldState<Model>\n schema: FormSchema<Model>\n payload: Model\n setError?: boolean\n setErrorIfInvalidAndNotEmpty?: boolean\n}) {\n await nextTick()\n\n fieldState.validating = true\n\n if (!schema[name]) {\n // Validate if the field is not in the schema\n fieldState.valid = true\n fieldState.validating = false\n fieldState.validated = true\n fieldState.errors = []\n fieldState.error = false\n return\n }\n\n const { result, isValid } = await getFieldValidationResult(name, schema, payload[name])\n\n fieldState.valid = isValid\n\n if (setError || (setErrorIfInvalidAndNotEmpty && !isValid && !isEmptyValue(payload[name]))) {\n fieldState.error = !isValid\n }\n\n fieldState.errors = result.issues ?? []\n\n fieldState.validating = false\n fieldState.validated = true\n}\n\nexport function validateField<\n Model extends BaseFormPayload,\n ModelKey extends ExtractModelKey<FormSchema<Model>> = ExtractModelKey<FormSchema<Model>>,\n>({\n name,\n fieldState,\n payload,\n schema,\n}: {\n name: ModelKey\n fieldState: FieldState<Model>\n payload: Model\n schema: FormSchema<Model>\n}) {\n const validationParams: Parameters<typeof setFieldValidationState<Model>>[number] = {\n name,\n fieldState,\n payload,\n schema,\n setError: fieldState.mode === 'progressive' ? fieldState.valid || fieldState.blurred : true,\n }\n\n return fieldState.validateFunction?.(validationParams)\n}\n\nexport function validateForm<\n Model extends BaseFormPayload,\n ModelKey extends ExtractModelKey<FormSchema<Model>> = ExtractModelKey<FormSchema<Model>>,\n>({\n fieldsStates,\n payload,\n showErrors = true,\n schema,\n}: {\n fieldsStates: FieldsStates<Model>\n showErrors?: boolean\n payload: Model\n schema: FormSchema<Model>\n}) {\n return Promise.all(\n Object.keys(fieldsStates).map(name =>\n setFieldValidationState<Model>({\n name: name as ModelKey,\n setError: showErrors,\n fieldState: fieldsStates[name],\n payload,\n schema,\n setErrorIfInvalidAndNotEmpty: fieldsStates[name].mode === 'lazy',\n }),\n ),\n )\n}\n\nexport function canExecuteValidation<Model extends BaseFormPayload>({\n eventName,\n fieldState,\n isSubmitted,\n}: {\n eventName: 'blur' | 'input'\n fieldState: FieldState<Model>\n isSubmitted: boolean\n}): boolean {\n const { dirty, blurred, mode, valid } = fieldState\n\n const shouldNotValidate\n = (eventName === 'blur' && (hasModeIncludes(['lazy', 'aggressive'], mode) || valid))\n || (eventName === 'input' && mode === 'blur')\n || !mode\n\n if (shouldNotValidate) {\n return false\n }\n\n return (\n isSubmitted\n || (mode === 'eager' && blurred)\n || (mode === 'blur' && blurred)\n || (mode === 'aggressive' && dirty)\n || (mode === 'lazy' && dirty)\n || mode === 'progressive'\n )\n}\n\nexport function handleFieldBlur<\n Model extends BaseFormPayload,\n ModelKey extends ExtractModelKey<FormSchema<Model>> = ExtractModelKey<FormSchema<Model>>,\n>({\n name,\n force = false,\n payload,\n fieldState,\n schema,\n isSubmitted,\n}: {\n name: ModelKey\n payload: Model\n fieldState: FieldState<Model>\n schema: FormSchema<Model>\n isSubmitted: boolean\n force?: boolean\n}) {\n const fieldValue = payload[name]\n\n const isDirty = !isEmptyValue(fieldValue) && !isEqual(fieldValue, fieldState.initialValue)\n\n fieldState.dirty = isDirty\n fieldState.blurred = fieldState.blurred || (fieldState.mode === 'eager' ? isDirty : true)\n\n const shouldValidate = force || canExecuteValidation<Model>({ eventName: 'blur', fieldState, isSubmitted })\n\n if (!shouldValidate) {\n return\n }\n\n return validateField<Model>({\n name,\n fieldState,\n schema,\n payload,\n })\n}\n\nexport function handleFieldInput<\n Model extends BaseFormPayload,\n ModelKey extends ExtractModelKey<FormSchema<Model>> = ExtractModelKey<FormSchema<Model>>,\n>({\n name,\n payload,\n fieldState,\n schema,\n isSubmitted,\n forceValidation = false,\n}: {\n name: ModelKey\n payload: Model\n fieldState: FieldState<Model>\n schema: FormSchema<Model>\n isSubmitted: boolean\n forceValidation?: boolean\n}) {\n const fieldValue = payload[name]\n\n fieldState.validated = false\n\n const isDirty = !isEmptyValue(fieldValue) && !isEqual(fieldValue, fieldState.initialValue)\n\n fieldState.dirty = isDirty\n\n const shouldValidate = forceValidation || canExecuteValidation<Model>({ eventName: 'input', fieldState, isSubmitted })\n\n if (!shouldValidate) {\n return\n }\n\n return validateField<Model>({\n name,\n fieldState,\n schema,\n payload,\n })\n}\n\nexport function getInstance<Model extends BaseFormPayload>(composableName: string) {\n const instance = getCurrentInstance() as CustomInstance<Model>\n if (!instance) {\n throw new Error(`${composableName} must be called within setup()`)\n }\n\n return instance\n}\n\nexport function getContext<Model extends BaseFormPayload>(\n identifier: string | symbol | InjectionKey<FormContext<Model>>,\n composableName: string,\n) {\n const instance = getInstance<Model>(composableName)\n const context = instance.formContexts?.get(identifier) ?? inject<FormContext<Model>>(identifier)\n\n if (!context) {\n throw new Error('useFormField must be used within a form (useFormValidator)')\n }\n\n return context\n}\n\nexport function getValidationEvents<Model extends BaseFormPayload>({\n ref,\n fieldState,\n onBlur,\n}: {\n ref?: string\n fieldState: FieldState<Model>\n onBlur: () => void\n}) {\n if (ref || hasModeIncludes(['aggressive', 'lazy'], fieldState.mode)) {\n return\n }\n\n return {\n onBlur,\n }\n}\n\ntype Valibot = typeof import('valibot')\nconst storeValidbot: Record<keyof Valibot | string, any> = {}\n\nexport async function getValibotValidationMethod<MethodName extends keyof Valibot>(methodName: MethodName): Promise<Valibot[MethodName]> {\n if (storeValidbot[methodName]) {\n return storeValidbot[methodName]\n }\n\n const valibot = await import('valibot')\n\n storeValidbot[methodName] = valibot[methodName]\n\n return valibot[methodName]\n}\n\nexport async function getValidationSchema<Model extends BaseFormPayload>(formSchema: FormSchema<Model>) {\n const objectAsync = await getValibotValidationMethod('objectAsync')\n return objectAsync(formSchema)\n}\n\nexport function hasModeIncludes(modes: StrictOptions['mode'][], value?: StrictOptions['mode']): value is StrictOptions['mode'] {\n if (!value) {\n return false\n }\n\n return modes.includes(value)\n}\n"],"names":["CONFIG","fieldHasValidation","field","schema","scrollToError","selector","element","getErrorMessages","errors","fieldsStates","errorMessages","name","value","issues","isEmptyValue","getValidateFunction","hasValidation","debouncedFields","throttledFields","fieldName","debounceId","setFieldValidationState","throttleId","getFieldState","initialValue","fieldState","options","validateFunction","freezeValue","getFieldsStates","payload","updateFieldsStates","updateMode","updateFieldState","mode","rest","newMode","getFieldsErrors","fieldsErrors","findInteractiveElements","el","addEventToInteractiveElements","interactiveElements","onBlur","hasModeIncludes","removeEventFromInteractiveElements","getFieldValidationResult","fieldSchema","getValidationSchema","result","getValibotValidationMethod","setError","setErrorIfInvalidAndNotEmpty","nextTick","isValid","validateField","validationParams","_a","validateForm","showErrors","canExecuteValidation","eventName","isSubmitted","dirty","blurred","valid","handleFieldBlur","force","fieldValue","isDirty","isEqual","handleFieldInput","forceValidation","getInstance","composableName","instance","getCurrentInstance","getContext","identifier","context","inject","getValidationEvents","ref","storeValidbot","methodName","valibot","formSchema","modes"],"mappings":"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"}