@feugene/granularity 0.11.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (189) hide show
  1. package/dist/GrTree.css +1 -1
  2. package/dist/chunks/config-1uSYl98Y2.js.map +1 -0
  3. package/dist/chunks/config-BIRO0vDJ.js.map +1 -0
  4. package/dist/chunks/config-BWiPnygb.js +5 -0
  5. package/dist/chunks/config-BWiPnygb.js.map +1 -0
  6. package/dist/chunks/config-BXtAmU3s2.js.map +1 -0
  7. package/dist/chunks/config-CGHLoBlH.js.map +1 -0
  8. package/dist/chunks/config-CrG1XiE72.js.map +1 -0
  9. package/dist/chunks/config-DUcu1D682.js.map +1 -0
  10. package/dist/chunks/config-Dlm49Jp5.js +5 -0
  11. package/dist/chunks/config-Dlm49Jp5.js.map +1 -0
  12. package/dist/chunks/config-DnvPqu4g2.js.map +1 -0
  13. package/dist/chunks/config-DpqOnJiz.js.map +1 -0
  14. package/dist/chunks/config-JpHA4Xx02.js.map +1 -0
  15. package/dist/chunks/config-LGrZIdaZ.js.map +1 -0
  16. package/dist/chunks/config-eXB87DOi2.js +9 -0
  17. package/dist/chunks/config-eXB87DOi2.js.map +1 -0
  18. package/dist/chunks/context-DdNIxa1w.js +9 -0
  19. package/dist/chunks/context-DdNIxa1w.js.map +1 -0
  20. package/dist/chunks/{en-BdtiS2d3.js → en-CfkDa4GX.js} +8 -2
  21. package/dist/chunks/{en-BdtiS2d3.js.map → en-CfkDa4GX.js.map} +1 -1
  22. package/dist/chunks/{es-DBhctWg-.js → es-CgaLnFYx.js} +3 -3
  23. package/dist/chunks/{es-DBhctWg-.js.map → es-CgaLnFYx.js.map} +1 -1
  24. package/dist/chunks/{es-BGRMZbe9.js → es-FkgECuCm.js} +8 -2
  25. package/dist/chunks/{es-BGRMZbe9.js.map → es-FkgECuCm.js.map} +1 -1
  26. package/dist/chunks/grModalEscStack-BXk-9mv7.js +43 -0
  27. package/dist/chunks/grModalEscStack-BXk-9mv7.js.map +1 -0
  28. package/dist/chunks/{ru-BFCnOiML.js → ru-Bl8CxpEa.js} +8 -2
  29. package/dist/chunks/{ru-BFCnOiML.js.map → ru-Bl8CxpEa.js.map} +1 -1
  30. package/dist/chunks/{shared-ChvcQgDl.js → shared-B6Ay2081.js} +17 -11
  31. package/dist/chunks/shared-B6Ay2081.js.map +1 -0
  32. package/dist/chunks/{transition-TLFw4KBn.js → useScrollLock-K7kaP2Ud.js} +52 -1
  33. package/dist/chunks/useScrollLock-K7kaP2Ud.js.map +1 -0
  34. package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-BWYKCsHd.js → GrConfirmDialog-D8CkOtqv.js} +1 -1
  35. package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-BWYKCsHd.js.map → GrConfirmDialog-D8CkOtqv.js.map} +1 -1
  36. package/dist/components/GrConfirmDialog/index.js +2 -2
  37. package/dist/components/GrDataTable/chunks/{GrDataTable-ptbARmJ3.js → GrDataTable-Ds5OeGat.js} +42 -16
  38. package/dist/components/GrDataTable/chunks/GrDataTable-Ds5OeGat.js.map +1 -0
  39. package/dist/components/GrDataTable/index.js +1 -1
  40. package/dist/components/GrDialog/chunks/{GrDialog-5DAS-1Lb.js → GrDialog-Ctucxju9.js} +2 -2
  41. package/dist/components/GrDialog/chunks/{GrDialog-5DAS-1Lb.js.map → GrDialog-Ctucxju9.js.map} +1 -1
  42. package/dist/components/GrDialog/index.js +1 -1
  43. package/dist/components/GrDialogService/chunks/{GrDialogService-DY_fmaMu.js → GrDialogService-CU1Fbonc.js} +2 -2
  44. package/dist/components/GrDialogService/chunks/{GrDialogService-DY_fmaMu.js.map → GrDialogService-CU1Fbonc.js.map} +1 -1
  45. package/dist/components/GrDialogService/index.js +1 -1
  46. package/dist/components/GrDivider/chunks/GrDivider-5bcE-BB4.js +54 -0
  47. package/dist/components/GrDivider/chunks/GrDivider-5bcE-BB4.js.map +1 -0
  48. package/dist/components/GrDivider/index.js +3 -0
  49. package/dist/components/GrDrawer/chunks/{GrDrawer-D1kzsjXN.js → GrDrawer-SLGKCY2A.js} +37 -13
  50. package/dist/components/GrDrawer/chunks/GrDrawer-SLGKCY2A.js.map +1 -0
  51. package/dist/components/GrDrawer/index.js +2 -2
  52. package/dist/components/GrDropdown/chunks/{GrDropdown-BXb5Cxxf.js → GrDropdown-BnDMYP8v.js} +90 -4
  53. package/dist/components/GrDropdown/chunks/GrDropdown-BnDMYP8v.js.map +1 -0
  54. package/dist/components/GrDropdown/index.js +1 -1
  55. package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-DFEJLPcV.js → GrDropdownMenu--g9Vofcq.js} +1 -1
  56. package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-DFEJLPcV.js.map → GrDropdownMenu--g9Vofcq.js.map} +1 -1
  57. package/dist/components/GrDropdownMenu/index.js +1 -1
  58. package/dist/components/GrFormField/chunks/GrFormField-DnfMHx_U.js +73 -0
  59. package/dist/components/GrFormField/chunks/GrFormField-DnfMHx_U.js.map +1 -0
  60. package/dist/components/GrFormField/index.js +3 -2
  61. package/dist/components/GrImageViewer/chunks/{GrImageViewer-OCUIrNh2.js → GrImageViewer-Dla9IBkd.js} +311 -222
  62. package/dist/components/GrImageViewer/chunks/GrImageViewer-Dla9IBkd.js.map +1 -0
  63. package/dist/components/GrImageViewer/index.js +1 -1
  64. package/dist/components/GrInput/chunks/GrInput-B8dd3JaA.js +334 -0
  65. package/dist/components/GrInput/chunks/GrInput-B8dd3JaA.js.map +1 -0
  66. package/dist/components/GrInput/index.js +1 -1
  67. package/dist/components/GrKbd/chunks/GrKbd-BEoYxWhE.js +22 -0
  68. package/dist/components/GrKbd/chunks/GrKbd-BEoYxWhE.js.map +1 -0
  69. package/dist/components/GrKbd/index.js +3 -0
  70. package/dist/components/GrModal/chunks/{GrModal-BkjW9jZS.js → GrModal-C0GZrHN3.js} +3 -56
  71. package/dist/components/GrModal/chunks/GrModal-C0GZrHN3.js.map +1 -0
  72. package/dist/components/GrModal/index.js +1 -1
  73. package/dist/components/GrNumberInput/chunks/{GrNumberInput-CldPIWQx.js → GrNumberInput-DxCEvL7V.js} +93 -11
  74. package/dist/components/GrNumberInput/chunks/GrNumberInput-DxCEvL7V.js.map +1 -0
  75. package/dist/components/GrNumberInput/index.js +1 -1
  76. package/dist/components/GrPagination/chunks/{GrPagination-Bu9wv6it.js → GrPagination-mlyfLjQY.js} +1 -1
  77. package/dist/components/GrPagination/chunks/{GrPagination-Bu9wv6it.js.map → GrPagination-mlyfLjQY.js.map} +1 -1
  78. package/dist/components/GrPagination/index.js +2 -2
  79. package/dist/components/GrProgressBar/index.js +1 -1
  80. package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-TmWXbpEP.js → GrPromptDialog-C-_BMNuY.js} +3 -3
  81. package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-TmWXbpEP.js.map → GrPromptDialog-C-_BMNuY.js.map} +1 -1
  82. package/dist/components/GrPromptDialog/index.js +1 -1
  83. package/dist/components/GrRadio/chunks/{GrRadio-CPTixXaY.js → GrRadio-Dr-pvs_9.js} +1 -1
  84. package/dist/components/GrRadio/chunks/{GrRadio-CPTixXaY.js.map → GrRadio-Dr-pvs_9.js.map} +1 -1
  85. package/dist/components/GrRadio/index.js +2 -2
  86. package/dist/components/GrRadioGroup/chunks/{GrRadioGroup-vKZCbkCp.js → GrRadioGroup-nOdvfV_g.js} +1 -1
  87. package/dist/components/GrRadioGroup/chunks/{GrRadioGroup-vKZCbkCp.js.map → GrRadioGroup-nOdvfV_g.js.map} +1 -1
  88. package/dist/components/GrRadioGroup/index.js +1 -1
  89. package/dist/components/GrSelect/chunks/{GrSelect-RShK21lK.js → GrSelect-BVCmitqa.js} +147 -27
  90. package/dist/components/GrSelect/chunks/GrSelect-BVCmitqa.js.map +1 -0
  91. package/dist/components/GrSelect/index.js +1 -1
  92. package/dist/components/GrSidebar/index.js +1 -1
  93. package/dist/components/GrTabPanels/chunks/GrTabPanels-DbKybwe-.js +68 -0
  94. package/dist/components/GrTabPanels/chunks/GrTabPanels-DbKybwe-.js.map +1 -0
  95. package/dist/components/GrTabPanels/index.js +3 -0
  96. package/dist/components/GrTabs/chunks/{GrTabs-Z-FDJUr_.js → GrTabs-DsLwWoRz.js} +6 -1
  97. package/dist/components/GrTabs/chunks/GrTabs-DsLwWoRz.js.map +1 -0
  98. package/dist/components/GrTabs/index.js +1 -1
  99. package/dist/components/GrTextarea/chunks/{GrTextarea-D56YxhKq.js → GrTextarea-CKukGlNl.js} +15 -5
  100. package/dist/components/GrTextarea/chunks/GrTextarea-CKukGlNl.js.map +1 -0
  101. package/dist/components/GrTextarea/index.js +2 -2
  102. package/dist/components/GrToaster/chunks/{GrToaster-eI8YvnIo.js → GrToaster-L2cu6cSR.js} +1 -1
  103. package/dist/components/GrToaster/chunks/{GrToaster-eI8YvnIo.js.map → GrToaster-L2cu6cSR.js.map} +1 -1
  104. package/dist/components/GrToaster/index.js +2 -2
  105. package/dist/components/GrTree/chunks/{GrTree-D3ODe2dB.js → GrTree-B2_yW6g1.js} +107 -8
  106. package/dist/components/GrTree/chunks/GrTree-B2_yW6g1.js.map +1 -0
  107. package/dist/components/GrTree/index.js +2 -2
  108. package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-B2xBKs5Q.js → GrTreeSelect-0aM62xyu.js} +3 -3
  109. package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-B2xBKs5Q.js.map → GrTreeSelect-0aM62xyu.js.map} +1 -1
  110. package/dist/components/GrTreeSelect/index.js +2 -2
  111. package/dist/granular-provider-node.js +2 -2
  112. package/dist/granular-provider.js +1 -1
  113. package/dist/i18n/all.js +1 -1
  114. package/dist/i18n/index.js +1 -1
  115. package/dist/index.js +40 -33
  116. package/dist/index.js.map +1 -1
  117. package/dist/styles/base.css +30 -8
  118. package/dist/styles/preflight.css +5 -1
  119. package/dist/types/src/components/GrDataTable/GrDataTable.vue.d.ts +28 -4
  120. package/dist/types/src/components/GrDivider/GrDivider.vue.d.ts +58 -0
  121. package/dist/types/src/components/GrDivider/config.d.ts +1 -0
  122. package/dist/types/src/components/GrDivider/index.d.ts +4 -0
  123. package/dist/types/src/components/GrDrawer/GrDrawer.vue.d.ts +4 -4
  124. package/dist/types/src/components/GrDropdown/GrDropdown.vue.d.ts +7 -0
  125. package/dist/types/src/components/GrDropdownMenu/GrDropdownMenu.vue.d.ts +6 -0
  126. package/dist/types/src/components/GrFormField/GrFormField.vue.d.ts +15 -2
  127. package/dist/types/src/components/GrFormField/context.d.ts +20 -0
  128. package/dist/types/src/components/GrFormField/index.d.ts +1 -0
  129. package/dist/types/src/components/GrImageViewer/GrImageViewer.vue.d.ts +4 -0
  130. package/dist/types/src/components/GrImageViewer/composables/useViewerKeyboard.d.ts +20 -0
  131. package/dist/types/src/components/GrImageViewer/composables/useWheelGesture.d.ts +16 -0
  132. package/dist/types/src/components/GrImageViewer/composables/useZoomPan.d.ts +50 -0
  133. package/dist/types/src/components/GrInput/GrInput.vue.d.ts +41 -2
  134. package/dist/types/src/components/GrKbd/GrKbd.vue.d.ts +46 -0
  135. package/dist/types/src/components/GrKbd/config.d.ts +1 -0
  136. package/dist/types/src/components/GrKbd/index.d.ts +4 -0
  137. package/dist/types/src/components/GrNumberInput/GrNumberInput.vue.d.ts +16 -0
  138. package/dist/types/src/components/GrSelect/GrSelect.vue.d.ts +2 -2
  139. package/dist/types/src/components/GrTabPanels/GrTabPanel.vue.d.ts +46 -0
  140. package/dist/types/src/components/GrTabPanels/GrTabPanels.vue.d.ts +51 -0
  141. package/dist/types/src/components/GrTabPanels/config.d.ts +5 -0
  142. package/dist/types/src/components/GrTabPanels/context.d.ts +9 -0
  143. package/dist/types/src/components/GrTabPanels/index.d.ts +6 -0
  144. package/dist/types/src/components/GrTabs/GrTabs.vue.d.ts +6 -0
  145. package/dist/types/src/components/GrTree/grTreeInteractionContext.d.ts +2 -0
  146. package/dist/types/src/composables/internal/useScrollLock.d.ts +24 -0
  147. package/dist/types/src/granular-provider/shared.d.ts +3 -0
  148. package/dist/types/src/i18n/messages/en.d.ts +10 -0
  149. package/dist/types/src/i18n/messages/es.d.ts +10 -0
  150. package/dist/types/src/i18n/messages/ru.d.ts +10 -0
  151. package/dist/types/src/index.d.ts +3 -0
  152. package/dist/web-types.json +275 -26
  153. package/package.json +13 -1
  154. package/dist/chunks/config-1uSYl98Y.js.map +0 -1
  155. package/dist/chunks/config-BIRO0vDJ2.js.map +0 -1
  156. package/dist/chunks/config-BXtAmU3s.js.map +0 -1
  157. package/dist/chunks/config-CGHLoBlH2.js.map +0 -1
  158. package/dist/chunks/config-CrG1XiE7.js.map +0 -1
  159. package/dist/chunks/config-DUcu1D68.js.map +0 -1
  160. package/dist/chunks/config-DnvPqu4g.js.map +0 -1
  161. package/dist/chunks/config-DpqOnJiz2.js.map +0 -1
  162. package/dist/chunks/config-JpHA4Xx0.js.map +0 -1
  163. package/dist/chunks/config-LGrZIdaZ2.js.map +0 -1
  164. package/dist/chunks/shared-ChvcQgDl.js.map +0 -1
  165. package/dist/chunks/transition-TLFw4KBn.js.map +0 -1
  166. package/dist/components/GrDataTable/chunks/GrDataTable-ptbARmJ3.js.map +0 -1
  167. package/dist/components/GrDrawer/chunks/GrDrawer-D1kzsjXN.js.map +0 -1
  168. package/dist/components/GrDropdown/chunks/GrDropdown-BXb5Cxxf.js.map +0 -1
  169. package/dist/components/GrFormField/chunks/GrFormField-BujNQrw8.js +0 -35
  170. package/dist/components/GrFormField/chunks/GrFormField-BujNQrw8.js.map +0 -1
  171. package/dist/components/GrImageViewer/chunks/GrImageViewer-OCUIrNh2.js.map +0 -1
  172. package/dist/components/GrInput/chunks/GrInput-C8pOJgCi.js +0 -188
  173. package/dist/components/GrInput/chunks/GrInput-C8pOJgCi.js.map +0 -1
  174. package/dist/components/GrModal/chunks/GrModal-BkjW9jZS.js.map +0 -1
  175. package/dist/components/GrNumberInput/chunks/GrNumberInput-CldPIWQx.js.map +0 -1
  176. package/dist/components/GrSelect/chunks/GrSelect-RShK21lK.js.map +0 -1
  177. package/dist/components/GrTabs/chunks/GrTabs-Z-FDJUr_.js.map +0 -1
  178. package/dist/components/GrTextarea/chunks/GrTextarea-D56YxhKq.js.map +0 -1
  179. package/dist/components/GrTree/chunks/GrTree-D3ODe2dB.js.map +0 -1
  180. /package/dist/chunks/{config-1uSYl98Y.js → config-1uSYl98Y2.js} +0 -0
  181. /package/dist/chunks/{config-BIRO0vDJ2.js → config-BIRO0vDJ.js} +0 -0
  182. /package/dist/chunks/{config-BXtAmU3s.js → config-BXtAmU3s2.js} +0 -0
  183. /package/dist/chunks/{config-CGHLoBlH2.js → config-CGHLoBlH.js} +0 -0
  184. /package/dist/chunks/{config-CrG1XiE7.js → config-CrG1XiE72.js} +0 -0
  185. /package/dist/chunks/{config-DUcu1D68.js → config-DUcu1D682.js} +0 -0
  186. /package/dist/chunks/{config-DnvPqu4g.js → config-DnvPqu4g2.js} +0 -0
  187. /package/dist/chunks/{config-DpqOnJiz2.js → config-DpqOnJiz.js} +0 -0
  188. /package/dist/chunks/{config-JpHA4Xx0.js → config-JpHA4Xx02.js} +0 -0
  189. /package/dist/chunks/{config-LGrZIdaZ2.js → config-LGrZIdaZ.js} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"transition-TLFw4KBn.js","names":["t","o","n","n","o","i","e","o","u","i","d","n","s","c","i","t","o","c","N","T","F","E","h","w","f","M","y","S","H","t","i","n","u","r","w","i","w","s","p","C","d","E","i","M","N","A","y","w","h","T","O","k","x","u","f","a","p","n","i","s","l","p","t","t","t","d","E","i","d","a","t","c","A","I","E","n","L","x","h","$","z","_","y","v","N","b","P","p","R","j","D","k","G","W","C","g","S","M","q","m","n","o","a","w","u","m","l","m","i","s","c","d","l","p","d","v","u","p","s","a","m","h","N","s","E","T","m","c","d","s","a","u","l","c","p","u","f","R","l","c","R","p","j","x","y","h","v","D","b","C","C","m","p","w","S","s","H","K","d","j","D","B","y","I","O","h","E","G","Te","Y","O","s","q","b","y","o","De","I","E","he","k","Ce","me","h","j","ye","G","z","Pe","se","Se","ge","fe","v","F","J","be","P","C","V","$","pe","Oe","g","p","L","l","f","F","m","z","T","O","de","K","h","u","S","se","k","w","ie","x","$","J","G","C","B","ue","q","fe","ae","oe","ve"],"sources":["../../../../node_modules/@headlessui/vue/dist/utils/micro-task.js","../../../../node_modules/@headlessui/vue/dist/utils/disposables.js","../../../../node_modules/@headlessui/vue/dist/hooks/use-id.js","../../../../node_modules/@headlessui/vue/dist/utils/dom.js","../../../../node_modules/@headlessui/vue/dist/utils/match.js","../../../../node_modules/@headlessui/vue/dist/utils/env.js","../../../../node_modules/@headlessui/vue/dist/utils/owner.js","../../../../node_modules/@headlessui/vue/dist/utils/focus-management.js","../../../../node_modules/@headlessui/vue/dist/utils/platform.js","../../../../node_modules/@headlessui/vue/dist/hooks/use-document-event.js","../../../../node_modules/@headlessui/vue/dist/hooks/use-window-event.js","../../../../node_modules/@headlessui/vue/dist/hooks/use-outside-click.js","../../../../node_modules/@headlessui/vue/dist/utils/render.js","../../../../node_modules/@headlessui/vue/dist/internal/hidden.js","../../../../node_modules/@headlessui/vue/dist/internal/open-closed.js","../../../../node_modules/@headlessui/vue/dist/keyboard.js","../../../../node_modules/@headlessui/vue/dist/utils/document-ready.js","../../../../node_modules/@headlessui/vue/dist/utils/active-element-history.js","../../../../node_modules/@headlessui/vue/dist/hooks/use-event-listener.js","../../../../node_modules/@headlessui/vue/dist/hooks/use-tab-direction.js","../../../../node_modules/@headlessui/vue/dist/components/focus-trap/focus-trap.js","../../../../node_modules/@headlessui/vue/dist/hooks/use-store.js","../../../../node_modules/@headlessui/vue/dist/utils/store.js","../../../../node_modules/@headlessui/vue/dist/hooks/document-overflow/adjust-scrollbar-padding.js","../../../../node_modules/@headlessui/vue/dist/hooks/document-overflow/handle-ios-locking.js","../../../../node_modules/@headlessui/vue/dist/hooks/document-overflow/prevent-scroll.js","../../../../node_modules/@headlessui/vue/dist/hooks/document-overflow/overflow-store.js","../../../../node_modules/@headlessui/vue/dist/hooks/document-overflow/use-document-overflow.js","../../../../node_modules/@headlessui/vue/dist/hooks/use-inert.js","../../../../node_modules/@headlessui/vue/dist/hooks/use-root-containers.js","../../../../node_modules/@headlessui/vue/dist/internal/portal-force-root.js","../../../../node_modules/@headlessui/vue/dist/internal/stack-context.js","../../../../node_modules/@headlessui/vue/dist/components/description/description.js","../../../../node_modules/@headlessui/vue/dist/components/portal/portal.js","../../../../node_modules/@headlessui/vue/dist/components/dialog/dialog.js","../../../../node_modules/@headlessui/vue/dist/utils/once.js","../../../../node_modules/@headlessui/vue/dist/components/transitions/utils/transition.js","../../../../node_modules/@headlessui/vue/dist/components/transitions/transition.js"],"sourcesContent":["function t(e){typeof queueMicrotask==\"function\"?queueMicrotask(e):Promise.resolve().then(e).catch(o=>setTimeout(()=>{throw o}))}export{t as microTask};\n","import{microTask as n}from'./micro-task.js';function o(){let a=[],s={addEventListener(e,t,r,i){return e.addEventListener(t,r,i),s.add(()=>e.removeEventListener(t,r,i))},requestAnimationFrame(...e){let t=requestAnimationFrame(...e);s.add(()=>cancelAnimationFrame(t))},nextFrame(...e){s.requestAnimationFrame(()=>{s.requestAnimationFrame(...e)})},setTimeout(...e){let t=setTimeout(...e);s.add(()=>clearTimeout(t))},microTask(...e){let t={current:!0};return n(()=>{t.current&&e[0]()}),s.add(()=>{t.current=!1})},style(e,t,r){let i=e.style.getPropertyValue(t);return Object.assign(e.style,{[t]:r}),this.add(()=>{Object.assign(e.style,{[t]:i})})},group(e){let t=o();return e(t),this.add(()=>t.dispose())},add(e){return a.push(e),()=>{let t=a.indexOf(e);if(t>=0)for(let r of a.splice(t,1))r()}},dispose(){for(let e of a.splice(0))e()}};return s}export{o as disposables};\n","var r;import*as e from\"vue\";let n=Symbol(\"headlessui.useid\"),o=0;const i=(r=e.useId)!=null?r:function(){return e.inject(n,()=>`${++o}`)()};function s(t){e.provide(n,t)}export{s as provideUseId,i as useId};\n","function o(e){var l;if(e==null||e.value==null)return null;let n=(l=e.value.$el)!=null?l:e.value;return n instanceof Node?n:null}export{o as dom};\n","function u(r,n,...a){if(r in n){let e=n[r];return typeof e==\"function\"?e(...a):e}let t=new Error(`Tried to handle \"${r}\" but there is no handler defined. Only defined handlers are: ${Object.keys(n).map(e=>`\"${e}\"`).join(\", \")}.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,u),t}export{u as match};\n","var i=Object.defineProperty;var d=(t,e,r)=>e in t?i(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var n=(t,e,r)=>(d(t,typeof e!=\"symbol\"?e+\"\":e,r),r);class s{constructor(){n(this,\"current\",this.detect());n(this,\"currentId\",0)}set(e){this.current!==e&&(this.currentId=0,this.current=e)}reset(){this.set(this.detect())}nextId(){return++this.currentId}get isServer(){return this.current===\"server\"}get isClient(){return this.current===\"client\"}detect(){return typeof window==\"undefined\"||typeof document==\"undefined\"?\"server\":\"client\"}}let c=new s;export{c as env};\n","import{dom as o}from'./dom.js';import{env as t}from'./env.js';function i(r){if(t.isServer)return null;if(r instanceof Node)return r.ownerDocument;if(r!=null&&r.hasOwnProperty(\"value\")){let n=o(r);if(n)return n.ownerDocument}return document}export{i as getOwnerDocument};\n","import{nextTick as b}from\"vue\";import{match as M}from'./match.js';import{getOwnerDocument as f}from'./owner.js';let c=[\"[contentEditable=true]\",\"[tabindex]\",\"a[href]\",\"area[href]\",\"button:not([disabled])\",\"iframe\",\"input:not([disabled])\",\"select:not([disabled])\",\"textarea:not([disabled])\"].map(e=>`${e}:not([tabindex='-1'])`).join(\",\");var N=(n=>(n[n.First=1]=\"First\",n[n.Previous=2]=\"Previous\",n[n.Next=4]=\"Next\",n[n.Last=8]=\"Last\",n[n.WrapAround=16]=\"WrapAround\",n[n.NoScroll=32]=\"NoScroll\",n))(N||{}),T=(o=>(o[o.Error=0]=\"Error\",o[o.Overflow=1]=\"Overflow\",o[o.Success=2]=\"Success\",o[o.Underflow=3]=\"Underflow\",o))(T||{}),F=(t=>(t[t.Previous=-1]=\"Previous\",t[t.Next=1]=\"Next\",t))(F||{});function E(e=document.body){return e==null?[]:Array.from(e.querySelectorAll(c)).sort((r,t)=>Math.sign((r.tabIndex||Number.MAX_SAFE_INTEGER)-(t.tabIndex||Number.MAX_SAFE_INTEGER)))}var h=(t=>(t[t.Strict=0]=\"Strict\",t[t.Loose=1]=\"Loose\",t))(h||{});function w(e,r=0){var t;return e===((t=f(e))==null?void 0:t.body)?!1:M(r,{[0](){return e.matches(c)},[1](){let l=e;for(;l!==null;){if(l.matches(c))return!0;l=l.parentElement}return!1}})}function _(e){let r=f(e);b(()=>{r&&!w(r.activeElement,0)&&S(e)})}var y=(t=>(t[t.Keyboard=0]=\"Keyboard\",t[t.Mouse=1]=\"Mouse\",t))(y||{});typeof window!=\"undefined\"&&typeof document!=\"undefined\"&&(document.addEventListener(\"keydown\",e=>{e.metaKey||e.altKey||e.ctrlKey||(document.documentElement.dataset.headlessuiFocusVisible=\"\")},!0),document.addEventListener(\"click\",e=>{e.detail===1?delete document.documentElement.dataset.headlessuiFocusVisible:e.detail===0&&(document.documentElement.dataset.headlessuiFocusVisible=\"\")},!0));function S(e){e==null||e.focus({preventScroll:!0})}let H=[\"textarea\",\"input\"].join(\",\");function I(e){var r,t;return(t=(r=e==null?void 0:e.matches)==null?void 0:r.call(e,H))!=null?t:!1}function O(e,r=t=>t){return e.slice().sort((t,l)=>{let o=r(t),i=r(l);if(o===null||i===null)return 0;let n=o.compareDocumentPosition(i);return n&Node.DOCUMENT_POSITION_FOLLOWING?-1:n&Node.DOCUMENT_POSITION_PRECEDING?1:0})}function v(e,r){return P(E(),r,{relativeTo:e})}function P(e,r,{sorted:t=!0,relativeTo:l=null,skipElements:o=[]}={}){var m;let i=(m=Array.isArray(e)?e.length>0?e[0].ownerDocument:document:e==null?void 0:e.ownerDocument)!=null?m:document,n=Array.isArray(e)?t?O(e):e:E(e);o.length>0&&n.length>1&&(n=n.filter(s=>!o.includes(s))),l=l!=null?l:i.activeElement;let x=(()=>{if(r&5)return 1;if(r&10)return-1;throw new Error(\"Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last\")})(),p=(()=>{if(r&1)return 0;if(r&2)return Math.max(0,n.indexOf(l))-1;if(r&4)return Math.max(0,n.indexOf(l))+1;if(r&8)return n.length-1;throw new Error(\"Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last\")})(),L=r&32?{preventScroll:!0}:{},a=0,d=n.length,u;do{if(a>=d||a+d<=0)return 0;let s=p+a;if(r&16)s=(s+d)%d;else{if(s<0)return 3;if(s>=d)return 1}u=n[s],u==null||u.focus(L),a+=x}while(u!==i.activeElement);return r&6&&I(u)&&u.select(),2}export{N as Focus,T as FocusResult,h as FocusableMode,S as focusElement,v as focusFrom,P as focusIn,E as getFocusableElements,w as isFocusableElement,_ as restoreFocusIfNecessary,O as sortByDomNode};\n","function t(){return/iPhone/gi.test(window.navigator.platform)||/Mac/gi.test(window.navigator.platform)&&window.navigator.maxTouchPoints>0}function i(){return/Android/gi.test(window.navigator.userAgent)}function n(){return t()||i()}export{i as isAndroid,t as isIOS,n as isMobile};\n","import{watchEffect as r}from\"vue\";import{env as m}from'../utils/env.js';function u(e,t,n){m.isServer||r(o=>{document.addEventListener(e,t,n),o(()=>document.removeEventListener(e,t,n))})}export{u as useDocumentEvent};\n","import{watchEffect as i}from\"vue\";import{env as r}from'../utils/env.js';function w(e,n,t){r.isServer||i(o=>{window.addEventListener(e,n,t),o(()=>window.removeEventListener(e,n,t))})}export{w as useWindowEvent};\n","import{computed as s,ref as E}from\"vue\";import{dom as p}from'../utils/dom.js';import{FocusableMode as d,isFocusableElement as C}from'../utils/focus-management.js';import{isMobile as T}from'../utils/platform.js';import{useDocumentEvent as i}from'./use-document-event.js';import{useWindowEvent as M}from'./use-window-event.js';function w(f,m,l=s(()=>!0)){function a(e,r){if(!l.value||e.defaultPrevented)return;let t=r(e);if(t===null||!t.getRootNode().contains(t))return;let c=function o(n){return typeof n==\"function\"?o(n()):Array.isArray(n)||n instanceof Set?n:[n]}(f);for(let o of c){if(o===null)continue;let n=o instanceof HTMLElement?o:p(o);if(n!=null&&n.contains(t)||e.composed&&e.composedPath().includes(n))return}return!C(t,d.Loose)&&t.tabIndex!==-1&&e.preventDefault(),m(e,t)}let u=E(null);i(\"pointerdown\",e=>{var r,t;l.value&&(u.value=((t=(r=e.composedPath)==null?void 0:r.call(e))==null?void 0:t[0])||e.target)},!0),i(\"mousedown\",e=>{var r,t;l.value&&(u.value=((t=(r=e.composedPath)==null?void 0:r.call(e))==null?void 0:t[0])||e.target)},!0),i(\"click\",e=>{T()||u.value&&(a(e,()=>u.value),u.value=null)},!0),i(\"touchend\",e=>a(e,()=>e.target instanceof HTMLElement?e.target:null),!0),M(\"blur\",e=>a(e,()=>window.document.activeElement instanceof HTMLIFrameElement?window.document.activeElement:null),!0)}export{w as useOutsideClick};\n","import{cloneVNode as O,Fragment as x,h as k}from\"vue\";import{match as w}from'./match.js';var N=(o=>(o[o.None=0]=\"None\",o[o.RenderStrategy=1]=\"RenderStrategy\",o[o.Static=2]=\"Static\",o))(N||{}),S=(e=>(e[e.Unmount=0]=\"Unmount\",e[e.Hidden=1]=\"Hidden\",e))(S||{});function A({visible:r=!0,features:t=0,ourProps:e,theirProps:o,...i}){var a;let n=j(o,e),l=Object.assign(i,{props:n});if(r||t&2&&n.static)return y(l);if(t&1){let d=(a=n.unmount)==null||a?0:1;return w(d,{[0](){return null},[1](){return y({...i,props:{...n,hidden:!0,style:{display:\"none\"}}})}})}return y(l)}function y({props:r,attrs:t,slots:e,slot:o,name:i}){var m,h;let{as:n,...l}=T(r,[\"unmount\",\"static\"]),a=(m=e.default)==null?void 0:m.call(e,o),d={};if(o){let u=!1,c=[];for(let[p,f]of Object.entries(o))typeof f==\"boolean\"&&(u=!0),f===!0&&c.push(p);u&&(d[\"data-headlessui-state\"]=c.join(\" \"))}if(n===\"template\"){if(a=b(a!=null?a:[]),Object.keys(l).length>0||Object.keys(t).length>0){let[u,...c]=a!=null?a:[];if(!v(u)||c.length>0)throw new Error(['Passing props on \"template\"!',\"\",`The current component <${i} /> is rendering a \"template\".`,\"However we need to passthrough the following props:\",Object.keys(l).concat(Object.keys(t)).map(s=>s.trim()).filter((s,g,R)=>R.indexOf(s)===g).sort((s,g)=>s.localeCompare(g)).map(s=>` - ${s}`).join(`\n`),\"\",\"You can apply a few solutions:\",['Add an `as=\"...\"` prop, to ensure that we render an actual element instead of a \"template\".',\"Render a single element as the child so that we can forward the props onto that element.\"].map(s=>` - ${s}`).join(`\n`)].join(`\n`));let p=j((h=u.props)!=null?h:{},l,d),f=O(u,p,!0);for(let s in p)s.startsWith(\"on\")&&(f.props||(f.props={}),f.props[s]=p[s]);return f}return Array.isArray(a)&&a.length===1?a[0]:a}return k(n,Object.assign({},l,d),{default:()=>a})}function b(r){return r.flatMap(t=>t.type===x?b(t.children):[t])}function j(...r){var o;if(r.length===0)return{};if(r.length===1)return r[0];let t={},e={};for(let i of r)for(let n in i)n.startsWith(\"on\")&&typeof i[n]==\"function\"?((o=e[n])!=null||(e[n]=[]),e[n].push(i[n])):t[n]=i[n];if(t.disabled||t[\"aria-disabled\"])return Object.assign(t,Object.fromEntries(Object.keys(e).map(i=>[i,void 0])));for(let i in e)Object.assign(t,{[i](n,...l){let a=e[i];for(let d of a){if(n instanceof Event&&n.defaultPrevented)return;d(n,...l)}}});return t}function E(r){let t=Object.assign({},r);for(let e in t)t[e]===void 0&&delete t[e];return t}function T(r,t=[]){let e=Object.assign({},r);for(let o of t)o in e&&delete e[o];return e}function v(r){return r==null?!1:typeof r.type==\"string\"||typeof r.type==\"object\"||typeof r.type==\"function\"}export{N as Features,S as RenderStrategy,E as compact,T as omit,A as render};\n","import{defineComponent as a}from\"vue\";import{render as p}from'../utils/render.js';var u=(e=>(e[e.None=1]=\"None\",e[e.Focusable=2]=\"Focusable\",e[e.Hidden=4]=\"Hidden\",e))(u||{});let f=a({name:\"Hidden\",props:{as:{type:[Object,String],default:\"div\"},features:{type:Number,default:1}},setup(t,{slots:n,attrs:i}){return()=>{var r;let{features:e,...d}=t,o={\"aria-hidden\":(e&2)===2?!0:(r=d[\"aria-hidden\"])!=null?r:void 0,hidden:(e&4)===4?!0:void 0,style:{position:\"fixed\",top:1,left:1,width:1,height:0,padding:0,margin:-1,overflow:\"hidden\",clip:\"rect(0, 0, 0, 0)\",whiteSpace:\"nowrap\",borderWidth:\"0\",...(e&4)===4&&(e&2)!==2&&{display:\"none\"}}};return p({ourProps:o,theirProps:d,slot:{},attrs:i,slots:n,name:\"Hidden\"})}}});export{u as Features,f as Hidden};\n","import{inject as p,provide as r}from\"vue\";let n=Symbol(\"Context\");var i=(e=>(e[e.Open=1]=\"Open\",e[e.Closed=2]=\"Closed\",e[e.Closing=4]=\"Closing\",e[e.Opening=8]=\"Opening\",e))(i||{});function s(){return l()!==null}function l(){return p(n,null)}function t(o){r(n,o)}export{i as State,s as hasOpenClosed,l as useOpenClosed,t as useOpenClosedProvider};\n","var o=(r=>(r.Space=\" \",r.Enter=\"Enter\",r.Escape=\"Escape\",r.Backspace=\"Backspace\",r.Delete=\"Delete\",r.ArrowLeft=\"ArrowLeft\",r.ArrowUp=\"ArrowUp\",r.ArrowRight=\"ArrowRight\",r.ArrowDown=\"ArrowDown\",r.Home=\"Home\",r.End=\"End\",r.PageUp=\"PageUp\",r.PageDown=\"PageDown\",r.Tab=\"Tab\",r))(o||{});export{o as Keys};\n","function t(n){function e(){document.readyState!==\"loading\"&&(n(),document.removeEventListener(\"DOMContentLoaded\",e))}typeof window!=\"undefined\"&&typeof document!=\"undefined\"&&(document.addEventListener(\"DOMContentLoaded\",e),e())}export{t as onDocumentReady};\n","import{onDocumentReady as d}from'./document-ready.js';let t=[];d(()=>{function e(n){n.target instanceof HTMLElement&&n.target!==document.body&&t[0]!==n.target&&(t.unshift(n.target),t=t.filter(r=>r!=null&&r.isConnected),t.splice(10))}window.addEventListener(\"click\",e,{capture:!0}),window.addEventListener(\"mousedown\",e,{capture:!0}),window.addEventListener(\"focus\",e,{capture:!0}),document.body.addEventListener(\"click\",e,{capture:!0}),document.body.addEventListener(\"mousedown\",e,{capture:!0}),document.body.addEventListener(\"focus\",e,{capture:!0})});export{t as history};\n","import{watchEffect as i}from\"vue\";import{env as a}from'../utils/env.js';function E(n,e,o,r){a.isServer||i(t=>{n=n!=null?n:window,n.addEventListener(e,o,r),t(()=>n.removeEventListener(e,o,r))})}export{E as useEventListener};\n","import{ref as a}from\"vue\";import{useWindowEvent as t}from'./use-window-event.js';var d=(r=>(r[r.Forwards=0]=\"Forwards\",r[r.Backwards=1]=\"Backwards\",r))(d||{});function n(){let o=a(0);return t(\"keydown\",e=>{e.key===\"Tab\"&&(o.value=e.shiftKey?1:0)}),o}export{d as Direction,n as useTabDirection};\n","import{computed as L,defineComponent as I,Fragment as j,h as R,onMounted as M,onUnmounted as h,ref as E,watch as g,watchEffect as K}from\"vue\";import{useEventListener as U}from'../../hooks/use-event-listener.js';import{Direction as y,useTabDirection as _}from'../../hooks/use-tab-direction.js';import{Features as k,Hidden as D}from'../../internal/hidden.js';import{history as C}from'../../utils/active-element-history.js';import{dom as c}from'../../utils/dom.js';import{Focus as v,focusElement as p,focusIn as b,FocusResult as q}from'../../utils/focus-management.js';import{match as P}from'../../utils/match.js';import{microTask as S}from'../../utils/micro-task.js';import{getOwnerDocument as x}from'../../utils/owner.js';import{render as G}from'../../utils/render.js';function B(t){if(!t)return new Set;if(typeof t==\"function\")return new Set(t());let n=new Set;for(let r of t.value){let l=c(r);l instanceof HTMLElement&&n.add(l)}return n}var A=(e=>(e[e.None=1]=\"None\",e[e.InitialFocus=2]=\"InitialFocus\",e[e.TabLock=4]=\"TabLock\",e[e.FocusLock=8]=\"FocusLock\",e[e.RestoreFocus=16]=\"RestoreFocus\",e[e.All=30]=\"All\",e))(A||{});let ue=Object.assign(I({name:\"FocusTrap\",props:{as:{type:[Object,String],default:\"div\"},initialFocus:{type:Object,default:null},features:{type:Number,default:30},containers:{type:[Object,Function],default:E(new Set)}},inheritAttrs:!1,setup(t,{attrs:n,slots:r,expose:l}){let o=E(null);l({el:o,$el:o});let i=L(()=>x(o)),e=E(!1);M(()=>e.value=!0),h(()=>e.value=!1),$({ownerDocument:i},L(()=>e.value&&Boolean(t.features&16)));let m=z({ownerDocument:i,container:o,initialFocus:L(()=>t.initialFocus)},L(()=>e.value&&Boolean(t.features&2)));J({ownerDocument:i,container:o,containers:t.containers,previousActiveElement:m},L(()=>e.value&&Boolean(t.features&8)));let f=_();function a(u){let T=c(o);if(!T)return;(w=>w())(()=>{P(f.value,{[y.Forwards]:()=>{b(T,v.First,{skipElements:[u.relatedTarget]})},[y.Backwards]:()=>{b(T,v.Last,{skipElements:[u.relatedTarget]})}})})}let s=E(!1);function F(u){u.key===\"Tab\"&&(s.value=!0,requestAnimationFrame(()=>{s.value=!1}))}function H(u){if(!e.value)return;let T=B(t.containers);c(o)instanceof HTMLElement&&T.add(c(o));let d=u.relatedTarget;d instanceof HTMLElement&&d.dataset.headlessuiFocusGuard!==\"true\"&&(N(T,d)||(s.value?b(c(o),P(f.value,{[y.Forwards]:()=>v.Next,[y.Backwards]:()=>v.Previous})|v.WrapAround,{relativeTo:u.target}):u.target instanceof HTMLElement&&p(u.target)))}return()=>{let u={},T={ref:o,onKeydown:F,onFocusout:H},{features:d,initialFocus:w,containers:Q,...O}=t;return R(j,[Boolean(d&4)&&R(D,{as:\"button\",type:\"button\",\"data-headlessui-focus-guard\":!0,onFocus:a,features:k.Focusable}),G({ourProps:T,theirProps:{...n,...O},slot:u,attrs:n,slots:r,name:\"FocusTrap\"}),Boolean(d&4)&&R(D,{as:\"button\",type:\"button\",\"data-headlessui-focus-guard\":!0,onFocus:a,features:k.Focusable})])}}}),{features:A});function W(t){let n=E(C.slice());return g([t],([r],[l])=>{l===!0&&r===!1?S(()=>{n.value.splice(0)}):l===!1&&r===!0&&(n.value=C.slice())},{flush:\"post\"}),()=>{var r;return(r=n.value.find(l=>l!=null&&l.isConnected))!=null?r:null}}function $({ownerDocument:t},n){let r=W(n);M(()=>{K(()=>{var l,o;n.value||((l=t.value)==null?void 0:l.activeElement)===((o=t.value)==null?void 0:o.body)&&p(r())},{flush:\"post\"})}),h(()=>{n.value&&p(r())})}function z({ownerDocument:t,container:n,initialFocus:r},l){let o=E(null),i=E(!1);return M(()=>i.value=!0),h(()=>i.value=!1),M(()=>{g([n,r,l],(e,m)=>{if(e.every((a,s)=>(m==null?void 0:m[s])===a)||!l.value)return;let f=c(n);f&&S(()=>{var F,H;if(!i.value)return;let a=c(r),s=(F=t.value)==null?void 0:F.activeElement;if(a){if(a===s){o.value=s;return}}else if(f.contains(s)){o.value=s;return}a?p(a):b(f,v.First|v.NoScroll)===q.Error&&console.warn(\"There are no focusable elements inside the <FocusTrap />\"),o.value=(H=t.value)==null?void 0:H.activeElement})},{immediate:!0,flush:\"post\"})}),o}function J({ownerDocument:t,container:n,containers:r,previousActiveElement:l},o){var i;U((i=t.value)==null?void 0:i.defaultView,\"focus\",e=>{if(!o.value)return;let m=B(r);c(n)instanceof HTMLElement&&m.add(c(n));let f=l.value;if(!f)return;let a=e.target;a&&a instanceof HTMLElement?N(m,a)?(l.value=a,p(a)):(e.preventDefault(),e.stopPropagation(),p(f)):p(l.value)},!0)}function N(t,n){for(let r of t)if(r.contains(n))return!0;return!1}export{ue as FocusTrap};\n","import{onUnmounted as o,shallowRef as n}from\"vue\";function m(t){let e=n(t.getSnapshot());return o(t.subscribe(()=>{e.value=t.getSnapshot()})),e}export{m as useStore};\n","function a(o,r){let t=o(),n=new Set;return{getSnapshot(){return t},subscribe(e){return n.add(e),()=>n.delete(e)},dispatch(e,...s){let i=r[e].call(t,...s);i&&(t=i,n.forEach(c=>c()))}}}export{a as createStore};\n","function c(){let o;return{before({doc:e}){var l;let n=e.documentElement;o=((l=e.defaultView)!=null?l:window).innerWidth-n.clientWidth},after({doc:e,d:n}){let t=e.documentElement,l=t.clientWidth-t.offsetWidth,r=o-l;n.style(t,\"paddingRight\",`${r}px`)}}}export{c as adjustScrollbarPadding};\n","import{disposables as m}from'../../utils/disposables.js';import{isIOS as u}from'../../utils/platform.js';function w(){return u()?{before({doc:r,d:n,meta:c}){function a(o){return c.containers.flatMap(l=>l()).some(l=>l.contains(o))}n.microTask(()=>{var s;if(window.getComputedStyle(r.documentElement).scrollBehavior!==\"auto\"){let t=m();t.style(r.documentElement,\"scrollBehavior\",\"auto\"),n.add(()=>n.microTask(()=>t.dispose()))}let o=(s=window.scrollY)!=null?s:window.pageYOffset,l=null;n.addEventListener(r,\"click\",t=>{if(t.target instanceof HTMLElement)try{let e=t.target.closest(\"a\");if(!e)return;let{hash:f}=new URL(e.href),i=r.querySelector(f);i&&!a(i)&&(l=i)}catch{}},!0),n.addEventListener(r,\"touchstart\",t=>{if(t.target instanceof HTMLElement)if(a(t.target)){let e=t.target;for(;e.parentElement&&a(e.parentElement);)e=e.parentElement;n.style(e,\"overscrollBehavior\",\"contain\")}else n.style(t.target,\"touchAction\",\"none\")}),n.addEventListener(r,\"touchmove\",t=>{if(t.target instanceof HTMLElement){if(t.target.tagName===\"INPUT\")return;if(a(t.target)){let e=t.target;for(;e.parentElement&&e.dataset.headlessuiPortal!==\"\"&&!(e.scrollHeight>e.clientHeight||e.scrollWidth>e.clientWidth);)e=e.parentElement;e.dataset.headlessuiPortal===\"\"&&t.preventDefault()}else t.preventDefault()}},{passive:!1}),n.add(()=>{var e;let t=(e=window.scrollY)!=null?e:window.pageYOffset;o!==t&&window.scrollTo(0,o),l&&l.isConnected&&(l.scrollIntoView({block:\"nearest\"}),l=null)})})}}:{}}export{w as handleIOSLocking};\n","function l(){return{before({doc:e,d:o}){o.style(e.documentElement,\"overflow\",\"hidden\")}}}export{l as preventScroll};\n","import{disposables as s}from'../../utils/disposables.js';import{createStore as i}from'../../utils/store.js';import{adjustScrollbarPadding as l}from'./adjust-scrollbar-padding.js';import{handleIOSLocking as d}from'./handle-ios-locking.js';import{preventScroll as p}from'./prevent-scroll.js';function m(e){let n={};for(let t of e)Object.assign(n,t(n));return n}let a=i(()=>new Map,{PUSH(e,n){var o;let t=(o=this.get(e))!=null?o:{doc:e,count:0,d:s(),meta:new Set};return t.count++,t.meta.add(n),this.set(e,t),this},POP(e,n){let t=this.get(e);return t&&(t.count--,t.meta.delete(n)),this},SCROLL_PREVENT({doc:e,d:n,meta:t}){let o={doc:e,d:n,meta:m(t)},c=[d(),l(),p()];c.forEach(({before:r})=>r==null?void 0:r(o)),c.forEach(({after:r})=>r==null?void 0:r(o))},SCROLL_ALLOW({d:e}){e.dispose()},TEARDOWN({doc:e}){this.delete(e)}});a.subscribe(()=>{let e=a.getSnapshot(),n=new Map;for(let[t]of e)n.set(t,t.documentElement.style.overflow);for(let t of e.values()){let o=n.get(t.doc)===\"hidden\",c=t.count!==0;(c&&!o||!c&&o)&&a.dispatch(t.count>0?\"SCROLL_PREVENT\":\"SCROLL_ALLOW\",t),t.count===0&&a.dispatch(\"TEARDOWN\",t)}});export{a as overflows};\n","import{computed as p,watch as s}from\"vue\";import{useStore as v}from'../../hooks/use-store.js';import{overflows as u}from'./overflow-store.js';function d(t,a,n){let i=v(u),l=p(()=>{let e=t.value?i.value.get(t.value):void 0;return e?e.count>0:!1});return s([t,a],([e,m],[r],o)=>{if(!e||!m)return;u.dispatch(\"PUSH\",e,n);let f=!1;o(()=>{f||(u.dispatch(\"POP\",r!=null?r:e,n),f=!0)})},{immediate:!0}),l}export{d as useDocumentOverflowLockedEffect};\n","import{ref as m,watchEffect as s}from\"vue\";import{dom as h}from'../utils/dom.js';let i=new Map,t=new Map;function E(d,f=m(!0)){s(o=>{var a;if(!f.value)return;let e=h(d);if(!e)return;o(function(){var u;if(!e)return;let r=(u=t.get(e))!=null?u:1;if(r===1?t.delete(e):t.set(e,r-1),r!==1)return;let n=i.get(e);n&&(n[\"aria-hidden\"]===null?e.removeAttribute(\"aria-hidden\"):e.setAttribute(\"aria-hidden\",n[\"aria-hidden\"]),e.inert=n.inert,i.delete(e))});let l=(a=t.get(e))!=null?a:0;t.set(e,l+1),l===0&&(i.set(e,{\"aria-hidden\":e.getAttribute(\"aria-hidden\"),inert:e.inert}),e.setAttribute(\"aria-hidden\",\"true\"),e.inert=!0)})}export{E as useInert};\n","import{h as m,ref as s}from\"vue\";import{Features as d,Hidden as c}from'../internal/hidden.js';import{dom as T}from'../utils/dom.js';import{getOwnerDocument as E}from'../utils/owner.js';function N({defaultContainers:o=[],portals:i,mainTreeNodeRef:H}={}){let t=s(null),r=E(t);function u(){var l,f,a;let n=[];for(let e of o)e!==null&&(e instanceof HTMLElement?n.push(e):\"value\"in e&&e.value instanceof HTMLElement&&n.push(e.value));if(i!=null&&i.value)for(let e of i.value)n.push(e);for(let e of(l=r==null?void 0:r.querySelectorAll(\"html > *, body > *\"))!=null?l:[])e!==document.body&&e!==document.head&&e instanceof HTMLElement&&e.id!==\"headlessui-portal-root\"&&(e.contains(T(t))||e.contains((a=(f=T(t))==null?void 0:f.getRootNode())==null?void 0:a.host)||n.some(M=>e.contains(M))||n.push(e));return n}return{resolveContainers:u,contains(n){return u().some(l=>l.contains(n))},mainTreeNodeRef:t,MainTreeNode(){return H!=null?null:m(c,{features:d.Hidden,ref:t})}}}function v(){let o=s(null);return{mainTreeNodeRef:o,MainTreeNode(){return m(c,{features:d.Hidden,ref:o})}}}export{v as useMainTreeNode,N as useRootContainers};\n","import{defineComponent as l,inject as a,provide as c}from\"vue\";import{render as p}from'../utils/render.js';let e=Symbol(\"ForcePortalRootContext\");function s(){return a(e,!1)}let u=l({name:\"ForcePortalRoot\",props:{as:{type:[Object,String],default:\"template\"},force:{type:Boolean,default:!1}},setup(o,{slots:t,attrs:r}){return c(e,o.force),()=>{let{force:f,...n}=o;return p({theirProps:n,ourProps:{},slot:{},slots:t,attrs:r,name:\"ForcePortalRoot\"})}}});export{u as ForcePortalRoot,s as usePortalRoot};\n","import{inject as f,onMounted as m,onUnmounted as l,provide as c,watch as p}from\"vue\";let u=Symbol(\"StackContext\");var s=(e=>(e[e.Add=0]=\"Add\",e[e.Remove=1]=\"Remove\",e))(s||{});function y(){return f(u,()=>{})}function R({type:o,enabled:r,element:e,onUpdate:i}){let a=y();function t(...n){i==null||i(...n),a(...n)}m(()=>{p(r,(n,d)=>{n?t(0,o,e):d===!0&&t(1,o,e)},{immediate:!0,flush:\"sync\"})}),l(()=>{r.value&&t(1,o,e)}),c(u,t)}export{s as StackMessage,y as useStackContext,R as useStackProvider};\n","import{computed as x,defineComponent as y,inject as R,onMounted as v,onUnmounted as D,provide as j,ref as p,unref as C}from\"vue\";import{useId as h}from'../../hooks/use-id.js';import{render as b}from'../../utils/render.js';let u=Symbol(\"DescriptionContext\");function w(){let t=R(u,null);if(t===null)throw new Error(\"Missing parent\");return t}function k({slot:t=p({}),name:o=\"Description\",props:s={}}={}){let e=p([]);function r(n){return e.value.push(n),()=>{let i=e.value.indexOf(n);i!==-1&&e.value.splice(i,1)}}return j(u,{register:r,slot:t,name:o,props:s}),x(()=>e.value.length>0?e.value.join(\" \"):void 0)}let K=y({name:\"Description\",props:{as:{type:[Object,String],default:\"p\"},id:{type:String,default:null}},setup(t,{attrs:o,slots:s}){var n;let e=(n=t.id)!=null?n:`headlessui-description-${h()}`,r=w();return v(()=>D(r.register(e))),()=>{let{name:i=\"Description\",slot:l=p({}),props:d={}}=r,{...c}=t,f={...Object.entries(d).reduce((a,[g,m])=>Object.assign(a,{[g]:C(m)}),{}),id:e};return b({ourProps:f,theirProps:c,slot:l.value,attrs:o,slots:s,name:i})}}});export{K as Description,k as useDescriptions};\n","import{computed as w,defineComponent as m,getCurrentInstance as j,h as I,inject as s,onMounted as R,onUnmounted as y,provide as E,reactive as G,ref as p,Teleport as O,watch as D,watchEffect as K}from\"vue\";import{usePortalRoot as S}from'../../internal/portal-force-root.js';import{dom as B}from'../../utils/dom.js';import{getOwnerDocument as C}from'../../utils/owner.js';import{render as h}from'../../utils/render.js';function x(e){let t=C(e);if(!t){if(e===null)return null;throw new Error(`[Headless UI]: Cannot find ownerDocument for contextElement: ${e}`)}let l=t.getElementById(\"headlessui-portal-root\");if(l)return l;let r=t.createElement(\"div\");return r.setAttribute(\"id\",\"headlessui-portal-root\"),t.body.appendChild(r)}const f=new WeakMap;function U(e){var t;return(t=f.get(e))!=null?t:0}function M(e,t){let l=t(U(e));return l<=0?f.delete(e):f.set(e,l),l}let $=m({name:\"Portal\",props:{as:{type:[Object,String],default:\"div\"}},setup(e,{slots:t,attrs:l}){let r=p(null),i=w(()=>C(r)),o=S(),u=s(H,null),n=p(o===!0||u==null?x(r.value):u.resolveTarget());n.value&&M(n.value,a=>a+1);let c=p(!1);R(()=>{c.value=!0}),K(()=>{o||u!=null&&(n.value=u.resolveTarget())});let v=s(d,null),g=!1,b=j();return D(r,()=>{if(g||!v)return;let a=B(r);a&&(y(v.register(a),b),g=!0)}),y(()=>{var P,T;let a=(P=i.value)==null?void 0:P.getElementById(\"headlessui-portal-root\");!a||n.value!==a||M(n.value,L=>L-1)||n.value.children.length>0||(T=n.value.parentElement)==null||T.removeChild(n.value)}),()=>{if(!c.value||n.value===null)return null;let a={ref:r,\"data-headlessui-portal\":\"\"};return I(O,{to:n.value},h({ourProps:a,theirProps:e,slot:{},attrs:l,slots:t,name:\"Portal\"}))}}}),d=Symbol(\"PortalParentContext\");function q(){let e=s(d,null),t=p([]);function l(o){return t.value.push(o),e&&e.register(o),()=>r(o)}function r(o){let u=t.value.indexOf(o);u!==-1&&t.value.splice(u,1),e&&e.unregister(o)}let i={register:l,unregister:r,portals:t};return[t,m({name:\"PortalWrapper\",setup(o,{slots:u}){return E(d,i),()=>{var n;return(n=u.default)==null?void 0:n.call(u)}}})]}let H=Symbol(\"PortalGroupContext\"),z=m({name:\"PortalGroup\",props:{as:{type:[Object,String],default:\"template\"},target:{type:Object,default:null}},setup(e,{attrs:t,slots:l}){let r=G({resolveTarget(){return e.target}});return E(H,r),()=>{let{target:i,...o}=e;return h({theirProps:o,ourProps:{},slot:{},attrs:t,slots:l,name:\"PortalGroup\"})}}});export{$ as Portal,z as PortalGroup,q as useNestedPortals};\n","import{computed as o,defineComponent as O,h as v,inject as Y,nextTick as se,onMounted as $,onUnmounted as pe,provide as de,ref as y,watchEffect as fe}from\"vue\";import{FocusTrap as P}from'../../components/focus-trap/focus-trap.js';import{useDocumentOverflowLockedEffect as ge}from'../../hooks/document-overflow/use-document-overflow.js';import{useEventListener as ce}from'../../hooks/use-event-listener.js';import{useId as b}from'../../hooks/use-id.js';import{useInert as _}from'../../hooks/use-inert.js';import{useOutsideClick as ve}from'../../hooks/use-outside-click.js';import{useRootContainers as me}from'../../hooks/use-root-containers.js';import{State as I,useOpenClosed as De}from'../../internal/open-closed.js';import{ForcePortalRoot as F}from'../../internal/portal-force-root.js';import{StackMessage as z,useStackProvider as ye}from'../../internal/stack-context.js';import{Keys as Se}from'../../keyboard.js';import{dom as j}from'../../utils/dom.js';import{match as G}from'../../utils/match.js';import{getOwnerDocument as he}from'../../utils/owner.js';import{Features as V,render as C}from'../../utils/render.js';import{Description as Oe,useDescriptions as Pe}from'../description/description.js';import{Portal as J,PortalGroup as be,useNestedPortals as Ce}from'../portal/portal.js';var Te=(l=>(l[l.Open=0]=\"Open\",l[l.Closed=1]=\"Closed\",l))(Te||{});let H=Symbol(\"DialogContext\");function T(t){let i=Y(H,null);if(i===null){let l=new Error(`<${t} /> is missing a parent <Dialog /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(l,T),l}return i}let A=\"DC8F892D-2EBD-447C-A4C8-A03058436FF4\",Ye=O({name:\"Dialog\",inheritAttrs:!1,props:{as:{type:[Object,String],default:\"div\"},static:{type:Boolean,default:!1},unmount:{type:Boolean,default:!0},open:{type:[Boolean,String],default:A},initialFocus:{type:Object,default:null},id:{type:String,default:null},role:{type:String,default:\"dialog\"}},emits:{close:t=>!0},setup(t,{emit:i,attrs:l,slots:p,expose:s}){var q,W;let n=(q=t.id)!=null?q:`headlessui-dialog-${b()}`,u=y(!1);$(()=>{u.value=!0});let r=!1,g=o(()=>t.role===\"dialog\"||t.role===\"alertdialog\"?t.role:(r||(r=!0,console.warn(`Invalid role [${g}] passed to <Dialog />. Only \\`dialog\\` and and \\`alertdialog\\` are supported. Using \\`dialog\\` instead.`)),\"dialog\")),D=y(0),S=De(),R=o(()=>t.open===A&&S!==null?(S.value&I.Open)===I.Open:t.open),m=y(null),E=o(()=>he(m));if(s({el:m,$el:m}),!(t.open!==A||S!==null))throw new Error(\"You forgot to provide an `open` prop to the `Dialog`.\");if(typeof R.value!=\"boolean\")throw new Error(`You provided an \\`open\\` prop to the \\`Dialog\\`, but the value is not a boolean. Received: ${R.value===A?void 0:t.open}`);let c=o(()=>u.value&&R.value?0:1),k=o(()=>c.value===0),w=o(()=>D.value>1),N=Y(H,null)!==null,[Q,X]=Ce(),{resolveContainers:B,mainTreeNodeRef:K,MainTreeNode:Z}=me({portals:Q,defaultContainers:[o(()=>{var e;return(e=h.panelRef.value)!=null?e:m.value})]}),ee=o(()=>w.value?\"parent\":\"leaf\"),U=o(()=>S!==null?(S.value&I.Closing)===I.Closing:!1),te=o(()=>N||U.value?!1:k.value),le=o(()=>{var e,a,d;return(d=Array.from((a=(e=E.value)==null?void 0:e.querySelectorAll(\"body > *\"))!=null?a:[]).find(f=>f.id===\"headlessui-portal-root\"?!1:f.contains(j(K))&&f instanceof HTMLElement))!=null?d:null});_(le,te);let ae=o(()=>w.value?!0:k.value),oe=o(()=>{var e,a,d;return(d=Array.from((a=(e=E.value)==null?void 0:e.querySelectorAll(\"[data-headlessui-portal]\"))!=null?a:[]).find(f=>f.contains(j(K))&&f instanceof HTMLElement))!=null?d:null});_(oe,ae),ye({type:\"Dialog\",enabled:o(()=>c.value===0),element:m,onUpdate:(e,a)=>{if(a===\"Dialog\")return G(e,{[z.Add]:()=>D.value+=1,[z.Remove]:()=>D.value-=1})}});let re=Pe({name:\"DialogDescription\",slot:o(()=>({open:R.value}))}),M=y(null),h={titleId:M,panelRef:y(null),dialogState:c,setTitleId(e){M.value!==e&&(M.value=e)},close(){i(\"close\",!1)}};de(H,h);let ne=o(()=>!(!k.value||w.value));ve(B,(e,a)=>{e.preventDefault(),h.close(),se(()=>a==null?void 0:a.focus())},ne);let ie=o(()=>!(w.value||c.value!==0));ce((W=E.value)==null?void 0:W.defaultView,\"keydown\",e=>{ie.value&&(e.defaultPrevented||e.key===Se.Escape&&(e.preventDefault(),e.stopPropagation(),h.close()))});let ue=o(()=>!(U.value||c.value!==0||N));return ge(E,ue,e=>{var a;return{containers:[...(a=e.containers)!=null?a:[],B]}}),fe(e=>{if(c.value!==0)return;let a=j(m);if(!a)return;let d=new ResizeObserver(f=>{for(let L of f){let x=L.target.getBoundingClientRect();x.x===0&&x.y===0&&x.width===0&&x.height===0&&h.close()}});d.observe(a),e(()=>d.disconnect())}),()=>{let{open:e,initialFocus:a,...d}=t,f={...l,ref:m,id:n,role:g.value,\"aria-modal\":c.value===0?!0:void 0,\"aria-labelledby\":M.value,\"aria-describedby\":re.value},L={open:c.value===0};return v(F,{force:!0},()=>[v(J,()=>v(be,{target:m.value},()=>v(F,{force:!1},()=>v(P,{initialFocus:a,containers:B,features:k.value?G(ee.value,{parent:P.features.RestoreFocus,leaf:P.features.All&~P.features.FocusLock}):P.features.None},()=>v(X,{},()=>C({ourProps:f,theirProps:{...d,...l},slot:L,attrs:l,slots:p,visible:c.value===0,features:V.RenderStrategy|V.Static,name:\"Dialog\"})))))),v(Z)])}}}),_e=O({name:\"DialogOverlay\",props:{as:{type:[Object,String],default:\"div\"},id:{type:String,default:null}},setup(t,{attrs:i,slots:l}){var u;let p=(u=t.id)!=null?u:`headlessui-dialog-overlay-${b()}`,s=T(\"DialogOverlay\");function n(r){r.target===r.currentTarget&&(r.preventDefault(),r.stopPropagation(),s.close())}return()=>{let{...r}=t;return C({ourProps:{id:p,\"aria-hidden\":!0,onClick:n},theirProps:r,slot:{open:s.dialogState.value===0},attrs:i,slots:l,name:\"DialogOverlay\"})}}}),ze=O({name:\"DialogBackdrop\",props:{as:{type:[Object,String],default:\"div\"},id:{type:String,default:null}},inheritAttrs:!1,setup(t,{attrs:i,slots:l,expose:p}){var r;let s=(r=t.id)!=null?r:`headlessui-dialog-backdrop-${b()}`,n=T(\"DialogBackdrop\"),u=y(null);return p({el:u,$el:u}),$(()=>{if(n.panelRef.value===null)throw new Error(\"A <DialogBackdrop /> component is being used, but a <DialogPanel /> component is missing.\")}),()=>{let{...g}=t,D={id:s,ref:u,\"aria-hidden\":!0};return v(F,{force:!0},()=>v(J,()=>C({ourProps:D,theirProps:{...i,...g},slot:{open:n.dialogState.value===0},attrs:i,slots:l,name:\"DialogBackdrop\"})))}}}),Ge=O({name:\"DialogPanel\",props:{as:{type:[Object,String],default:\"div\"},id:{type:String,default:null}},setup(t,{attrs:i,slots:l,expose:p}){var r;let s=(r=t.id)!=null?r:`headlessui-dialog-panel-${b()}`,n=T(\"DialogPanel\");p({el:n.panelRef,$el:n.panelRef});function u(g){g.stopPropagation()}return()=>{let{...g}=t,D={id:s,ref:n.panelRef,onClick:u};return C({ourProps:D,theirProps:g,slot:{open:n.dialogState.value===0},attrs:i,slots:l,name:\"DialogPanel\"})}}}),Ve=O({name:\"DialogTitle\",props:{as:{type:[Object,String],default:\"h2\"},id:{type:String,default:null}},setup(t,{attrs:i,slots:l}){var n;let p=(n=t.id)!=null?n:`headlessui-dialog-title-${b()}`,s=T(\"DialogTitle\");return $(()=>{s.setTitleId(p),pe(()=>s.setTitleId(null))}),()=>{let{...u}=t;return C({ourProps:{id:p},theirProps:u,slot:{open:s.dialogState.value===0},attrs:i,slots:l,name:\"DialogTitle\"})}}}),Je=Oe;export{Ye as Dialog,ze as DialogBackdrop,Je as DialogDescription,_e as DialogOverlay,Ge as DialogPanel,Ve as DialogTitle};\n","function l(r){let e={called:!1};return(...t)=>{if(!e.called)return e.called=!0,r(...t)}}export{l as once};\n","import{disposables as p}from'../../../utils/disposables.js';import{once as f}from'../../../utils/once.js';function m(e,...t){e&&t.length>0&&e.classList.add(...t)}function d(e,...t){e&&t.length>0&&e.classList.remove(...t)}var g=(i=>(i.Finished=\"finished\",i.Cancelled=\"cancelled\",i))(g||{});function F(e,t){let i=p();if(!e)return i.dispose;let{transitionDuration:n,transitionDelay:a}=getComputedStyle(e),[l,s]=[n,a].map(o=>{let[u=0]=o.split(\",\").filter(Boolean).map(r=>r.includes(\"ms\")?parseFloat(r):parseFloat(r)*1e3).sort((r,c)=>c-r);return u});return l!==0?i.setTimeout(()=>t(\"finished\"),l+s):t(\"finished\"),i.add(()=>t(\"cancelled\")),i.dispose}function L(e,t,i,n,a,l){let s=p(),o=l!==void 0?f(l):()=>{};return d(e,...a),m(e,...t,...i),s.nextFrame(()=>{d(e,...i),m(e,...n),s.add(F(e,u=>(d(e,...n,...t),m(e,...a),o(u))))}),s.add(()=>d(e,...t,...i,...n,...a)),s.add(()=>o(\"cancelled\")),s.dispose}export{g as Reason,L as transition};\n","import{computed as w,defineComponent as K,h as k,inject as F,normalizeClass as ae,onMounted as C,onUnmounted as z,provide as B,ref as m,watch as le,watchEffect as x}from\"vue\";import{useId as ie}from'../../hooks/use-id.js';import{hasOpenClosed as se,State as u,useOpenClosed as oe,useOpenClosedProvider as ue}from'../../internal/open-closed.js';import{dom as $}from'../../utils/dom.js';import{env as fe}from'../../utils/env.js';import{match as O}from'../../utils/match.js';import{Features as de,omit as ve,render as q,RenderStrategy as T}from'../../utils/render.js';import{Reason as G,transition as J}from'./utils/transition.js';function g(e=\"\"){return e.split(/\\s+/).filter(t=>t.length>1)}let R=Symbol(\"TransitionContext\");var pe=(a=>(a.Visible=\"visible\",a.Hidden=\"hidden\",a))(pe||{});function me(){return F(R,null)!==null}function Te(){let e=F(R,null);if(e===null)throw new Error(\"A <TransitionChild /> is used but it is missing a parent <TransitionRoot />.\");return e}function ge(){let e=F(N,null);if(e===null)throw new Error(\"A <TransitionChild /> is used but it is missing a parent <TransitionRoot />.\");return e}let N=Symbol(\"NestingContext\");function L(e){return\"children\"in e?L(e.children):e.value.filter(({state:t})=>t===\"visible\").length>0}function Q(e){let t=m([]),a=m(!1);C(()=>a.value=!0),z(()=>a.value=!1);function s(n,r=T.Hidden){let l=t.value.findIndex(({id:f})=>f===n);l!==-1&&(O(r,{[T.Unmount](){t.value.splice(l,1)},[T.Hidden](){t.value[l].state=\"hidden\"}}),!L(t)&&a.value&&(e==null||e()))}function h(n){let r=t.value.find(({id:l})=>l===n);return r?r.state!==\"visible\"&&(r.state=\"visible\"):t.value.push({id:n,state:\"visible\"}),()=>s(n,T.Unmount)}return{children:t,register:h,unregister:s}}let W=de.RenderStrategy,he=K({props:{as:{type:[Object,String],default:\"div\"},show:{type:[Boolean],default:null},unmount:{type:[Boolean],default:!0},appear:{type:[Boolean],default:!1},enter:{type:[String],default:\"\"},enterFrom:{type:[String],default:\"\"},enterTo:{type:[String],default:\"\"},entered:{type:[String],default:\"\"},leave:{type:[String],default:\"\"},leaveFrom:{type:[String],default:\"\"},leaveTo:{type:[String],default:\"\"}},emits:{beforeEnter:()=>!0,afterEnter:()=>!0,beforeLeave:()=>!0,afterLeave:()=>!0},setup(e,{emit:t,attrs:a,slots:s,expose:h}){let n=m(0);function r(){n.value|=u.Opening,t(\"beforeEnter\")}function l(){n.value&=~u.Opening,t(\"afterEnter\")}function f(){n.value|=u.Closing,t(\"beforeLeave\")}function S(){n.value&=~u.Closing,t(\"afterLeave\")}if(!me()&&se())return()=>k(Se,{...e,onBeforeEnter:r,onAfterEnter:l,onBeforeLeave:f,onAfterLeave:S},s);let d=m(null),y=w(()=>e.unmount?T.Unmount:T.Hidden);h({el:d,$el:d});let{show:v,appear:A}=Te(),{register:D,unregister:H}=ge(),i=m(v.value?\"visible\":\"hidden\"),I={value:!0},c=ie(),b={value:!1},P=Q(()=>{!b.value&&i.value!==\"hidden\"&&(i.value=\"hidden\",H(c),S())});C(()=>{let o=D(c);z(o)}),x(()=>{if(y.value===T.Hidden&&c){if(v.value&&i.value!==\"visible\"){i.value=\"visible\";return}O(i.value,{[\"hidden\"]:()=>H(c),[\"visible\"]:()=>D(c)})}});let j=g(e.enter),M=g(e.enterFrom),X=g(e.enterTo),_=g(e.entered),Y=g(e.leave),Z=g(e.leaveFrom),ee=g(e.leaveTo);C(()=>{x(()=>{if(i.value===\"visible\"){let o=$(d);if(o instanceof Comment&&o.data===\"\")throw new Error(\"Did you forget to passthrough the `ref` to the actual DOM node?\")}})});function te(o){let E=I.value&&!A.value,p=$(d);!p||!(p instanceof HTMLElement)||E||(b.value=!0,v.value&&r(),v.value||f(),o(v.value?J(p,j,M,X,_,V=>{b.value=!1,V===G.Finished&&l()}):J(p,Y,Z,ee,_,V=>{b.value=!1,V===G.Finished&&(L(P)||(i.value=\"hidden\",H(c),S()))})))}return C(()=>{le([v],(o,E,p)=>{te(p),I.value=!1},{immediate:!0})}),B(N,P),ue(w(()=>O(i.value,{[\"visible\"]:u.Open,[\"hidden\"]:u.Closed})|n.value)),()=>{let{appear:o,show:E,enter:p,enterFrom:V,enterTo:Ce,entered:ye,leave:be,leaveFrom:Ee,leaveTo:Ve,...U}=e,ne={ref:d},re={...U,...A.value&&v.value&&fe.isServer?{class:ae([a.class,U.class,...j,...M])}:{}};return q({theirProps:re,ourProps:ne,slot:{},slots:s,attrs:a,features:W,visible:i.value===\"visible\",name:\"TransitionChild\"})}}}),ce=he,Se=K({inheritAttrs:!1,props:{as:{type:[Object,String],default:\"div\"},show:{type:[Boolean],default:null},unmount:{type:[Boolean],default:!0},appear:{type:[Boolean],default:!1},enter:{type:[String],default:\"\"},enterFrom:{type:[String],default:\"\"},enterTo:{type:[String],default:\"\"},entered:{type:[String],default:\"\"},leave:{type:[String],default:\"\"},leaveFrom:{type:[String],default:\"\"},leaveTo:{type:[String],default:\"\"}},emits:{beforeEnter:()=>!0,afterEnter:()=>!0,beforeLeave:()=>!0,afterLeave:()=>!0},setup(e,{emit:t,attrs:a,slots:s}){let h=oe(),n=w(()=>e.show===null&&h!==null?(h.value&u.Open)===u.Open:e.show);x(()=>{if(![!0,!1].includes(n.value))throw new Error('A <Transition /> is used but it is missing a `:show=\"true | false\"` prop.')});let r=m(n.value?\"visible\":\"hidden\"),l=Q(()=>{r.value=\"hidden\"}),f=m(!0),S={show:n,appear:w(()=>e.appear||!f.value)};return C(()=>{x(()=>{f.value=!1,n.value?r.value=\"visible\":L(l)||(r.value=\"hidden\")})}),B(N,l),B(R,S),()=>{let d=ve(e,[\"show\",\"appear\",\"unmount\",\"onBeforeEnter\",\"onBeforeLeave\",\"onAfterEnter\",\"onAfterLeave\"]),y={unmount:e.unmount};return q({ourProps:{...y,as:\"template\"},theirProps:{},slot:{},slots:{...s,default:()=>[k(ce,{onBeforeEnter:()=>t(\"beforeEnter\"),onAfterEnter:()=>t(\"afterEnter\"),onBeforeLeave:()=>t(\"beforeLeave\"),onAfterLeave:()=>t(\"afterLeave\"),...a,...y,...d},s.default)]},attrs:{},features:W,visible:r.value===\"visible\",name:\"Transition\"})}}});export{he as TransitionChild,Se as TransitionRoot};\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"GrDataTable-ptbARmJ3.js","names":["$slots"],"sources":["../../../../src/components/GrDataTable/GrDataTable.vue","../../../../src/components/GrDataTable/GrDataTable.vue"],"sourcesContent":["\n<script setup lang=\"ts\" generic=\"TRow extends Record<string, unknown> = Record<string, unknown>\">\nimport { computed, ref } from 'vue'\n\nimport GrTable from '../GrTable/GrTable.vue'\nimport type { GrTableDensity } from '../GrTable'\nimport GrIcon from '../GrIcon/GrIcon.vue'\n\nimport IconArrowUp from '~icons/lucide/arrow-up'\nimport IconArrowDown from '~icons/lucide/arrow-down'\n\nexport type GrDataColumn = {\n key: string\n label: string\n sortable?: boolean\n align?: 'left' | 'center' | 'right'\n}\n\nexport type GrDataTableRowKey<TRow extends Record<string, unknown> = Record<string, unknown>> =\n | string\n | ((row: TRow) => string | number)\n\nexport interface GrDataTableProps<TRow extends Record<string, unknown> = Record<string, unknown>> {\n rows: TRow[]\n columns: GrDataColumn[]\n /** Ключ строки или функция-резолвер. По умолчанию — поле `'id'`. */\n rowKey?: GrDataTableRowKey<TRow>\n /** Ключ колонки для начальной сортировки. */\n initialSortKey?: string\n /** Направление начальной сортировки. */\n initialSortDir?: 'asc' | 'desc'\n // Прокси к GrTable:\n density?: GrTableDensity\n caption?: string\n ariaLabel?: string\n ariaLabelledby?: string\n regionLabel?: string\n}\n\n/**\n * `GrDataTable` — data-таблица поверх `GrTable` с сортировкой по клику\n * на заголовок и scoped-слотами ячеек (`#cell-<key>`), `#caption`, `#foot`, `#empty`.\n *\n * Сортировка: если оба значения в колонке — числа (или парсятся как числа), сравнение\n * идёт численное; иначе — локальное строковое `localeCompare` с `sensitivity: 'base'`.\n */\nconst props = withDefaults(defineProps<GrDataTableProps<TRow>>(), {\n rowKey: 'id' as never,\n initialSortKey: undefined,\n initialSortDir: 'asc',\n density: 'regular',\n caption: undefined,\n ariaLabel: undefined,\n ariaLabelledby: undefined,\n regionLabel: undefined,\n})\n\nconst sortKey = ref<string>(props.initialSortKey ?? '')\nconst sortDir = ref<'asc' | 'desc'>(props.initialSortDir)\n\nconst sortedRows = computed(() => {\n const items = [...props.rows]\n if (!sortKey.value)\n return items\n\n const key = sortKey.value\n const dir = sortDir.value\n\n items.sort((a, b) => {\n const av = (a as Record<string, unknown>)[key]\n const bv = (b as Record<string, unknown>)[key]\n\n const aNum = typeof av === 'number' ? av : Number(av)\n const bNum = typeof bv === 'number' ? bv : Number(bv)\n const bothNumbers = Number.isFinite(aNum) && Number.isFinite(bNum)\n\n const res = bothNumbers\n ? aNum - bNum\n : String(av ?? '').localeCompare(String(bv ?? ''), undefined, { sensitivity: 'base' })\n\n return dir === 'asc' ? res : -res\n })\n\n return items\n})\n\nfunction toggleSort(col: GrDataColumn): void {\n if (!col.sortable)\n return\n\n if (sortKey.value !== col.key) {\n sortKey.value = col.key\n sortDir.value = 'asc'\n return\n }\n\n sortDir.value = sortDir.value === 'asc' ? 'desc' : 'asc'\n}\n\nfunction cellAlign(col: GrDataColumn): string {\n if (col.align === 'right')\n return 'text-right'\n if (col.align === 'center')\n return 'text-center'\n return 'text-left'\n}\n\nfunction rowKeyValue(row: TRow): string | number {\n const rk = props.rowKey\n if (typeof rk === 'function')\n return rk(row)\n const v = (row as Record<string, unknown>)[rk as string]\n if (typeof v === 'string' || typeof v === 'number')\n return v\n return String(v ?? '')\n}\n\nfunction ariaSortFor(col: GrDataColumn): 'ascending' | 'descending' | 'none' | undefined {\n if (!col.sortable)\n return undefined\n if (sortKey.value !== col.key)\n return 'none'\n return sortDir.value === 'asc' ? 'ascending' : 'descending'\n}\n\nfunction sortButtonLabel(col: GrDataColumn): string {\n if (sortKey.value !== col.key)\n return `Sort by ${col.label}`\n return sortDir.value === 'asc'\n ? `Sorted by ${col.label} ascending, activate to sort descending`\n : `Sorted by ${col.label} descending, activate to sort ascending`\n}\n\nconst tableProps = computed(() => ({\n density: props.density,\n caption: props.caption,\n ariaLabel: props.ariaLabel,\n ariaLabelledby: props.ariaLabelledby,\n regionLabel: props.regionLabel,\n}))\n\nconst isEmpty = computed(() => sortedRows.value.length === 0)\n\nfunction cellValue(row: TRow, key: string): unknown {\n return (row as Record<string, unknown>)[key]\n}\n</script>\n\n<template>\n <GrTable v-bind=\"tableProps\" data-gr-datatable>\n <template v-if=\"$slots.caption\" #caption>\n <slot name=\"caption\" />\n </template>\n\n <template #head>\n <tr data-gr-datatable-header>\n <th\n v-for=\"col in columns\"\n :key=\"col.key\"\n class=\"font-700 text-xs px-4 py-3\"\n :class=\"cellAlign(col)\"\n :aria-sort=\"ariaSortFor(col)\"\n scope=\"col\"\n >\n <div class=\"inline-flex items-center gap-2\">\n <button\n v-if=\"col.sortable\"\n type=\"button\"\n class=\"inline-flex items-center gap-2 text-[var(--muted-fg)] hover:text-[var(--fg)] transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] rounded\"\n :aria-label=\"sortButtonLabel(col)\"\n @click=\"toggleSort(col)\"\n >\n <span>{{ col.label }}</span>\n <span class=\"inline-flex\">\n <GrIcon v-if=\"sortKey === col.key && sortDir === 'asc'\" size=\"sm\" aria-hidden=\"true\">\n <IconArrowUp />\n </GrIcon>\n <GrIcon v-else-if=\"sortKey === col.key && sortDir === 'desc'\" size=\"sm\" aria-hidden=\"true\">\n <IconArrowDown />\n </GrIcon>\n </span>\n </button>\n <span v-else class=\"text-[var(--muted-fg)]\">{{ col.label }}</span>\n </div>\n </th>\n </tr>\n </template>\n\n <template v-if=\"isEmpty\">\n <tr data-gr-datatable-empty>\n <td :colspan=\"columns.length\" class=\"px-4 py-6 text-center text-[var(--muted-fg)]\">\n <slot name=\"empty\">\nНет данных\n</slot>\n </td>\n </tr>\n </template>\n <tr\n v-for=\"row in sortedRows\"\n v-else\n :key=\"rowKeyValue(row)\"\n class=\"border-t border-[var(--brd)]\"\n data-gr-datatable-row\n >\n <td\n v-for=\"col in columns\"\n :key=\"col.key\"\n class=\"px-4 py-3\"\n :class=\"cellAlign(col)\"\n >\n <slot :name=\"`cell-${col.key}`\" :row=\"row\">\n <span>{{ cellValue(row, col.key) }}</span>\n </slot>\n </td>\n </tr>\n\n <template v-if=\"$slots.foot\" #foot>\n <slot name=\"foot\" />\n </template>\n </GrTable>\n</template>\n","\n<script setup lang=\"ts\" generic=\"TRow extends Record<string, unknown> = Record<string, unknown>\">\nimport { computed, ref } from 'vue'\n\nimport GrTable from '../GrTable/GrTable.vue'\nimport type { GrTableDensity } from '../GrTable'\nimport GrIcon from '../GrIcon/GrIcon.vue'\n\nimport IconArrowUp from '~icons/lucide/arrow-up'\nimport IconArrowDown from '~icons/lucide/arrow-down'\n\nexport type GrDataColumn = {\n key: string\n label: string\n sortable?: boolean\n align?: 'left' | 'center' | 'right'\n}\n\nexport type GrDataTableRowKey<TRow extends Record<string, unknown> = Record<string, unknown>> =\n | string\n | ((row: TRow) => string | number)\n\nexport interface GrDataTableProps<TRow extends Record<string, unknown> = Record<string, unknown>> {\n rows: TRow[]\n columns: GrDataColumn[]\n /** Ключ строки или функция-резолвер. По умолчанию — поле `'id'`. */\n rowKey?: GrDataTableRowKey<TRow>\n /** Ключ колонки для начальной сортировки. */\n initialSortKey?: string\n /** Направление начальной сортировки. */\n initialSortDir?: 'asc' | 'desc'\n // Прокси к GrTable:\n density?: GrTableDensity\n caption?: string\n ariaLabel?: string\n ariaLabelledby?: string\n regionLabel?: string\n}\n\n/**\n * `GrDataTable` — data-таблица поверх `GrTable` с сортировкой по клику\n * на заголовок и scoped-слотами ячеек (`#cell-<key>`), `#caption`, `#foot`, `#empty`.\n *\n * Сортировка: если оба значения в колонке — числа (или парсятся как числа), сравнение\n * идёт численное; иначе — локальное строковое `localeCompare` с `sensitivity: 'base'`.\n */\nconst props = withDefaults(defineProps<GrDataTableProps<TRow>>(), {\n rowKey: 'id' as never,\n initialSortKey: undefined,\n initialSortDir: 'asc',\n density: 'regular',\n caption: undefined,\n ariaLabel: undefined,\n ariaLabelledby: undefined,\n regionLabel: undefined,\n})\n\nconst sortKey = ref<string>(props.initialSortKey ?? '')\nconst sortDir = ref<'asc' | 'desc'>(props.initialSortDir)\n\nconst sortedRows = computed(() => {\n const items = [...props.rows]\n if (!sortKey.value)\n return items\n\n const key = sortKey.value\n const dir = sortDir.value\n\n items.sort((a, b) => {\n const av = (a as Record<string, unknown>)[key]\n const bv = (b as Record<string, unknown>)[key]\n\n const aNum = typeof av === 'number' ? av : Number(av)\n const bNum = typeof bv === 'number' ? bv : Number(bv)\n const bothNumbers = Number.isFinite(aNum) && Number.isFinite(bNum)\n\n const res = bothNumbers\n ? aNum - bNum\n : String(av ?? '').localeCompare(String(bv ?? ''), undefined, { sensitivity: 'base' })\n\n return dir === 'asc' ? res : -res\n })\n\n return items\n})\n\nfunction toggleSort(col: GrDataColumn): void {\n if (!col.sortable)\n return\n\n if (sortKey.value !== col.key) {\n sortKey.value = col.key\n sortDir.value = 'asc'\n return\n }\n\n sortDir.value = sortDir.value === 'asc' ? 'desc' : 'asc'\n}\n\nfunction cellAlign(col: GrDataColumn): string {\n if (col.align === 'right')\n return 'text-right'\n if (col.align === 'center')\n return 'text-center'\n return 'text-left'\n}\n\nfunction rowKeyValue(row: TRow): string | number {\n const rk = props.rowKey\n if (typeof rk === 'function')\n return rk(row)\n const v = (row as Record<string, unknown>)[rk as string]\n if (typeof v === 'string' || typeof v === 'number')\n return v\n return String(v ?? '')\n}\n\nfunction ariaSortFor(col: GrDataColumn): 'ascending' | 'descending' | 'none' | undefined {\n if (!col.sortable)\n return undefined\n if (sortKey.value !== col.key)\n return 'none'\n return sortDir.value === 'asc' ? 'ascending' : 'descending'\n}\n\nfunction sortButtonLabel(col: GrDataColumn): string {\n if (sortKey.value !== col.key)\n return `Sort by ${col.label}`\n return sortDir.value === 'asc'\n ? `Sorted by ${col.label} ascending, activate to sort descending`\n : `Sorted by ${col.label} descending, activate to sort ascending`\n}\n\nconst tableProps = computed(() => ({\n density: props.density,\n caption: props.caption,\n ariaLabel: props.ariaLabel,\n ariaLabelledby: props.ariaLabelledby,\n regionLabel: props.regionLabel,\n}))\n\nconst isEmpty = computed(() => sortedRows.value.length === 0)\n\nfunction cellValue(row: TRow, key: string): unknown {\n return (row as Record<string, unknown>)[key]\n}\n</script>\n\n<template>\n <GrTable v-bind=\"tableProps\" data-gr-datatable>\n <template v-if=\"$slots.caption\" #caption>\n <slot name=\"caption\" />\n </template>\n\n <template #head>\n <tr data-gr-datatable-header>\n <th\n v-for=\"col in columns\"\n :key=\"col.key\"\n class=\"font-700 text-xs px-4 py-3\"\n :class=\"cellAlign(col)\"\n :aria-sort=\"ariaSortFor(col)\"\n scope=\"col\"\n >\n <div class=\"inline-flex items-center gap-2\">\n <button\n v-if=\"col.sortable\"\n type=\"button\"\n class=\"inline-flex items-center gap-2 text-[var(--muted-fg)] hover:text-[var(--fg)] transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] rounded\"\n :aria-label=\"sortButtonLabel(col)\"\n @click=\"toggleSort(col)\"\n >\n <span>{{ col.label }}</span>\n <span class=\"inline-flex\">\n <GrIcon v-if=\"sortKey === col.key && sortDir === 'asc'\" size=\"sm\" aria-hidden=\"true\">\n <IconArrowUp />\n </GrIcon>\n <GrIcon v-else-if=\"sortKey === col.key && sortDir === 'desc'\" size=\"sm\" aria-hidden=\"true\">\n <IconArrowDown />\n </GrIcon>\n </span>\n </button>\n <span v-else class=\"text-[var(--muted-fg)]\">{{ col.label }}</span>\n </div>\n </th>\n </tr>\n </template>\n\n <template v-if=\"isEmpty\">\n <tr data-gr-datatable-empty>\n <td :colspan=\"columns.length\" class=\"px-4 py-6 text-center text-[var(--muted-fg)]\">\n <slot name=\"empty\">\nНет данных\n</slot>\n </td>\n </tr>\n </template>\n <tr\n v-for=\"row in sortedRows\"\n v-else\n :key=\"rowKeyValue(row)\"\n class=\"border-t border-[var(--brd)]\"\n data-gr-datatable-row\n >\n <td\n v-for=\"col in columns\"\n :key=\"col.key\"\n class=\"px-4 py-3\"\n :class=\"cellAlign(col)\"\n >\n <slot :name=\"`cell-${col.key}`\" :row=\"row\">\n <span>{{ cellValue(row, col.key) }}</span>\n </slot>\n </td>\n </tr>\n\n <template v-if=\"$slots.foot\" #foot>\n <slot name=\"foot\" />\n </template>\n </GrTable>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8CA,MAAM,QAAQ;EAWd,MAAM,UAAU,IAAY,MAAM,kBAAkB,EAAE;EACtD,MAAM,UAAU,IAAoB,MAAM,cAAc;EAExD,MAAM,aAAa,eAAe;GAChC,MAAM,QAAQ,CAAC,GAAG,MAAM,IAAI;GAC5B,IAAI,CAAC,QAAQ,OACX,OAAO;GAET,MAAM,MAAM,QAAQ;GACpB,MAAM,MAAM,QAAQ;GAEpB,MAAM,MAAM,GAAG,MAAM;IACnB,MAAM,KAAM,EAA8B;IAC1C,MAAM,KAAM,EAA8B;IAE1C,MAAM,OAAO,OAAO,OAAO,WAAW,KAAK,OAAO,EAAE;IACpD,MAAM,OAAO,OAAO,OAAO,WAAW,KAAK,OAAO,EAAE;IAGpD,MAAM,MAFc,OAAO,SAAS,IAAI,KAAK,OAAO,SAAS,IAAI,IAG7D,OAAO,OACP,OAAO,MAAM,EAAE,CAAC,CAAC,cAAc,OAAO,MAAM,EAAE,GAAG,KAAA,GAAW,EAAE,aAAa,OAAO,CAAC;IAEvF,OAAO,QAAQ,QAAQ,MAAM,CAAC;GAChC,CAAC;GAED,OAAO;EACT,CAAC;EAED,SAAS,WAAW,KAAyB;GAC3C,IAAI,CAAC,IAAI,UACP;GAEF,IAAI,QAAQ,UAAU,IAAI,KAAK;IAC7B,QAAQ,QAAQ,IAAI;IACpB,QAAQ,QAAQ;IAChB;GACF;GAEA,QAAQ,QAAQ,QAAQ,UAAU,QAAQ,SAAS;EACrD;EAEA,SAAS,UAAU,KAA2B;GAC5C,IAAI,IAAI,UAAU,SAChB,OAAO;GACT,IAAI,IAAI,UAAU,UAChB,OAAO;GACT,OAAO;EACT;EAEA,SAAS,YAAY,KAA4B;GAC/C,MAAM,KAAK,MAAM;GACjB,IAAI,OAAO,OAAO,YAChB,OAAO,GAAG,GAAG;GACf,MAAM,IAAK,IAAgC;GAC3C,IAAI,OAAO,MAAM,YAAY,OAAO,MAAM,UACxC,OAAO;GACT,OAAO,OAAO,KAAK,EAAE;EACvB;EAEA,SAAS,YAAY,KAAoE;GACvF,IAAI,CAAC,IAAI,UACP,OAAO,KAAA;GACT,IAAI,QAAQ,UAAU,IAAI,KACxB,OAAO;GACT,OAAO,QAAQ,UAAU,QAAQ,cAAc;EACjD;EAEA,SAAS,gBAAgB,KAA2B;GAClD,IAAI,QAAQ,UAAU,IAAI,KACxB,OAAO,WAAW,IAAI;GACxB,OAAO,QAAQ,UAAU,QACrB,aAAa,IAAI,MAAM,2CACvB,aAAa,IAAI,MAAM;EAC7B;EAEA,MAAM,aAAa,gBAAgB;GACjC,SAAS,MAAM;GACf,SAAS,MAAM;GACf,WAAW,MAAM;GACjB,gBAAgB,MAAM;GACtB,aAAa,MAAM;EACrB,EAAE;EAEF,MAAM,UAAU,eAAe,WAAW,MAAM,WAAW,CAAC;EAE5D,SAAS,UAAU,KAAW,KAAsB;GAClD,OAAQ,IAAgC;EAC1C;;uBAIE,YAsEU,iBAtEV,WAAiB,WAsEP,OAtEiB,EAAE,qBAAA,GAAiB,CAAA,GAAA,YAAA;IAKjC,MAAI,cA+BR,CA9BL,mBA8BK,MA9BL,YA8BK,EAAA,UAAA,IAAA,GA7BH,mBA4BK,UAAA,MAAA,WA3BW,QAAA,UAAP,QAAG;yBADZ,mBA4BK,MAAA;MA1BF,KAAK,IAAI;MACV,OAAK,eAAA,CAAC,8BACE,UAAU,GAAG,CAAA,CAAA;MACpB,aAAW,YAAY,GAAG;MAC3B,OAAM;SAEN,mBAmBM,OAnBN,YAmBM,CAjBI,IAAI,YAAA,UAAA,GADZ,mBAgBS,UAAA;;MAdP,MAAK;MACL,OAAM;MACL,cAAY,gBAAgB,GAAG;MAC/B,UAAK,WAAE,WAAW,GAAG;SAEtB,mBAA4B,QAAA,MAAA,gBAAnB,IAAI,KAAK,GAAA,CAAA,GAClB,mBAOO,QAPP,YAOO,CANS,QAAA,UAAY,IAAI,OAAO,QAAA,UAAO,SAAA,UAAA,GAA5C,YAES,gBAAA;;MAF+C,MAAK;MAAK,eAAY;;6BAC7D,CAAf,YAAe,MAAA,gBAAA,CAAA,CAAA,CAAA;;WAEE,QAAA,UAAY,IAAI,OAAO,QAAA,UAAO,UAAA,UAAA,GAAjD,YAES,gBAAA;;MAFqD,MAAK;MAAK,eAAY;;6BACjE,CAAjB,YAAiB,MAAA,kBAAA,CAAA,CAAA,CAAA;;4EAIvB,mBAAkE,QAAlE,YAAkE,gBAAnB,IAAI,KAAK,GAAA,CAAA,EAAA,CAAA,CAAA,GAAA,IAAA,UAAA;;4BAMhD,QAAA,SAAA,UAAA,GACd,mBAMK,MANL,YAMK,CALH,mBAIK,MAAA;KAJA,SAAS,QAAA,QAAQ;KAAQ,OAAM;QAClC,WAEH,KAAA,QAAA,SAAA,CAAA,SAAA,CAAA,OAAA,OAAA,OAAA,KAAA,gBAFsB,gBAE7B,EAAA,EAAA,CAAA,CAAA,GAAA,GAAA,UAAA,CAAA,CAAA,MAAA,UAAA,IAAA,GAII,mBAiBK,UAAA,EAAA,KAAA,EAAA,GAAA,WAhBW,WAAA,QAAP,QAAG;yBADZ,mBAiBK,MAAA;MAdF,KAAK,YAAY,GAAG;MACrB,OAAM;MACN,yBAAA;2BAEA,mBASK,UAAA,MAAA,WARW,QAAA,UAAP,QAAG;0BADZ,mBASK,MAAA;OAPF,KAAK,IAAI;OACV,OAAK,eAAA,CAAC,aACE,UAAU,GAAG,CAAA,CAAA;UAErB,WAEO,KAAA,QAAA,QAFc,IAAI,OAAG,EAAU,IAAG,SAElC,CADL,mBAA0C,QAAA,MAAA,gBAAjC,UAAU,KAAK,IAAI,GAAG,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA;;;;OA7DrBA,KAAAA,OAAO,UAAA;UAAU;sBACR,CAAvB,WAAuB,KAAA,QAAA,SAAA,CAAA,CAAA;;eAiETA,KAAAA,OAAO,OAAA;UAAO;sBACR,CAApB,WAAoB,KAAA,QAAA,MAAA,CAAA,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"GrDrawer-D1kzsjXN.js","names":["$slots"],"sources":["../../../../src/components/GrDrawer/GrDrawer.vue","../../../../src/components/GrDrawer/GrDrawer.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, useId } from 'vue'\nimport { Dialog, DialogPanel, DialogTitle, TransitionChild, TransitionRoot } from '@headlessui/vue'\n\nimport GrButton from '../GrButton/GrButton.vue'\nimport GrIcon from '../GrIcon/GrIcon.vue'\nimport { useGranularityTranslations } from '../../internal/granularityI18n'\nimport {\n grDrawerPanelClass,\n grDrawerPanelEnterFrom,\n type GrDrawerSide,\n type GrDrawerSize,\n} from './grDrawerStyles'\n\nimport IconClose from '~icons/lucide/x'\n\nexport interface GrDrawerProps {\n /** Контроль открытия через v-model. */\n modelValue: boolean\n /** Заголовок; если передан — покажется в хедере. Можно переопределить слотом `#title`. */\n title?: string\n /** Закрывать при клике по бэкдропу / через HeadlessUI close. */\n closeOnBackdrop?: boolean\n /** Закрывать по Esc. */\n closeOnEsc?: boolean\n /** Сторона, с которой выезжает панель. */\n side?: GrDrawerSide\n /** Размер панели. */\n size?: GrDrawerSize\n /** i18n-friendly aria-label для кнопки закрытия. */\n closeLabel?: string\n}\n\nconst props = withDefaults(defineProps<GrDrawerProps>(), {\n title: undefined,\n closeOnBackdrop: true,\n closeOnEsc: true,\n side: 'right',\n size: 'md',\n closeLabel: undefined,\n})\n\nconst { t } = useGranularityTranslations()\nconst resolvedTitle = computed(() => props.title ?? t('gr.drawer.title', 'Drawer'))\nconst resolvedCloseLabel = computed(() => props.closeLabel ?? t('gr.common.close', 'Close'))\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n}>()\n\nconst titleId = useId()\n\nconst panelClass = computed(() => {\n return grDrawerPanelClass({ side: props.side, size: props.size })\n})\n\nconst panelEnterFrom = computed(() => grDrawerPanelEnterFrom(props.side))\n\nfunction close(): void {\n emit('update:modelValue', false)\n}\n\nfunction onDialogClose(): void {\n if (!props.closeOnBackdrop) return\n close()\n}\n\nfunction onOverlayClick(): void {\n if (!props.closeOnBackdrop) return\n close()\n}\n\nfunction onKeydown(e: KeyboardEvent): void {\n if (e.key !== 'Escape') return\n if (!props.closeOnEsc) return\n e.stopPropagation()\n e.preventDefault()\n close()\n}\n</script>\n\n<template>\n <teleport to=\"body\">\n <TransitionRoot :show=\"modelValue\" as=\"template\">\n <Dialog\n as=\"div\"\n data-gr-drawer\n class=\"fixed inset-0 z-50\"\n :static=\"true\"\n :aria-labelledby=\"titleId\"\n @close=\"onDialogClose\"\n @keydown=\"onKeydown\"\n >\n <div class=\"fixed inset-0\">\n <TransitionChild\n as=\"template\"\n enter=\"duration-200 ease-out\"\n enter-from=\"opacity-0\"\n enter-to=\"opacity-100\"\n leave=\"duration-150 ease-in\"\n leave-from=\"opacity-100\"\n leave-to=\"opacity-0\"\n >\n <div\n data-gr-drawer-overlay\n class=\"fixed inset-0 bg-black/40\"\n aria-hidden=\"true\"\n @click=\"onOverlayClick\"\n />\n </TransitionChild>\n\n <TransitionChild\n as=\"template\"\n enter=\"duration-200 ease-out\"\n :enter-from=\"panelEnterFrom\"\n enter-to=\"translate-x-0\"\n leave=\"duration-150 ease-in\"\n leave-from=\"translate-x-0\"\n :leave-to=\"panelEnterFrom\"\n >\n <DialogPanel\n data-gr-drawer-panel\n tabindex=\"-1\"\n class=\"fixed inset-y-0 flex flex-col\"\n :class=\"panelClass\"\n >\n <div\n data-gr-drawer-header\n class=\"px-5 py-4 border-b border-[var(--brd)] flex items-center justify-between gap-4\"\n >\n <DialogTitle :id=\"titleId\" as=\"div\" data-gr-drawer-title class=\"text-[14px] font-700 min-w-0 truncate\">\n <slot name=\"title\">\n {{ resolvedTitle }}\n </slot>\n </DialogTitle>\n\n <GrButton\n variant=\"ghost\"\n size=\"sm\"\n square\n :aria-label=\"resolvedCloseLabel\"\n @click=\"close\"\n >\n <GrIcon size=\"sm\" aria-hidden=\"true\">\n <IconClose />\n </GrIcon>\n </GrButton>\n </div>\n\n <div data-gr-drawer-body class=\"flex-1 overflow-y-auto\">\n <div class=\"p-5\">\n <slot />\n </div>\n </div>\n\n <div\n v-if=\"$slots.footer\"\n data-gr-drawer-footer\n class=\"px-5 py-4 border-t border-[var(--brd)]\"\n >\n <slot name=\"footer\" />\n </div>\n </DialogPanel>\n </TransitionChild>\n </div>\n </Dialog>\n </TransitionRoot>\n </teleport>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, useId } from 'vue'\nimport { Dialog, DialogPanel, DialogTitle, TransitionChild, TransitionRoot } from '@headlessui/vue'\n\nimport GrButton from '../GrButton/GrButton.vue'\nimport GrIcon from '../GrIcon/GrIcon.vue'\nimport { useGranularityTranslations } from '../../internal/granularityI18n'\nimport {\n grDrawerPanelClass,\n grDrawerPanelEnterFrom,\n type GrDrawerSide,\n type GrDrawerSize,\n} from './grDrawerStyles'\n\nimport IconClose from '~icons/lucide/x'\n\nexport interface GrDrawerProps {\n /** Контроль открытия через v-model. */\n modelValue: boolean\n /** Заголовок; если передан — покажется в хедере. Можно переопределить слотом `#title`. */\n title?: string\n /** Закрывать при клике по бэкдропу / через HeadlessUI close. */\n closeOnBackdrop?: boolean\n /** Закрывать по Esc. */\n closeOnEsc?: boolean\n /** Сторона, с которой выезжает панель. */\n side?: GrDrawerSide\n /** Размер панели. */\n size?: GrDrawerSize\n /** i18n-friendly aria-label для кнопки закрытия. */\n closeLabel?: string\n}\n\nconst props = withDefaults(defineProps<GrDrawerProps>(), {\n title: undefined,\n closeOnBackdrop: true,\n closeOnEsc: true,\n side: 'right',\n size: 'md',\n closeLabel: undefined,\n})\n\nconst { t } = useGranularityTranslations()\nconst resolvedTitle = computed(() => props.title ?? t('gr.drawer.title', 'Drawer'))\nconst resolvedCloseLabel = computed(() => props.closeLabel ?? t('gr.common.close', 'Close'))\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n}>()\n\nconst titleId = useId()\n\nconst panelClass = computed(() => {\n return grDrawerPanelClass({ side: props.side, size: props.size })\n})\n\nconst panelEnterFrom = computed(() => grDrawerPanelEnterFrom(props.side))\n\nfunction close(): void {\n emit('update:modelValue', false)\n}\n\nfunction onDialogClose(): void {\n if (!props.closeOnBackdrop) return\n close()\n}\n\nfunction onOverlayClick(): void {\n if (!props.closeOnBackdrop) return\n close()\n}\n\nfunction onKeydown(e: KeyboardEvent): void {\n if (e.key !== 'Escape') return\n if (!props.closeOnEsc) return\n e.stopPropagation()\n e.preventDefault()\n close()\n}\n</script>\n\n<template>\n <teleport to=\"body\">\n <TransitionRoot :show=\"modelValue\" as=\"template\">\n <Dialog\n as=\"div\"\n data-gr-drawer\n class=\"fixed inset-0 z-50\"\n :static=\"true\"\n :aria-labelledby=\"titleId\"\n @close=\"onDialogClose\"\n @keydown=\"onKeydown\"\n >\n <div class=\"fixed inset-0\">\n <TransitionChild\n as=\"template\"\n enter=\"duration-200 ease-out\"\n enter-from=\"opacity-0\"\n enter-to=\"opacity-100\"\n leave=\"duration-150 ease-in\"\n leave-from=\"opacity-100\"\n leave-to=\"opacity-0\"\n >\n <div\n data-gr-drawer-overlay\n class=\"fixed inset-0 bg-black/40\"\n aria-hidden=\"true\"\n @click=\"onOverlayClick\"\n />\n </TransitionChild>\n\n <TransitionChild\n as=\"template\"\n enter=\"duration-200 ease-out\"\n :enter-from=\"panelEnterFrom\"\n enter-to=\"translate-x-0\"\n leave=\"duration-150 ease-in\"\n leave-from=\"translate-x-0\"\n :leave-to=\"panelEnterFrom\"\n >\n <DialogPanel\n data-gr-drawer-panel\n tabindex=\"-1\"\n class=\"fixed inset-y-0 flex flex-col\"\n :class=\"panelClass\"\n >\n <div\n data-gr-drawer-header\n class=\"px-5 py-4 border-b border-[var(--brd)] flex items-center justify-between gap-4\"\n >\n <DialogTitle :id=\"titleId\" as=\"div\" data-gr-drawer-title class=\"text-[14px] font-700 min-w-0 truncate\">\n <slot name=\"title\">\n {{ resolvedTitle }}\n </slot>\n </DialogTitle>\n\n <GrButton\n variant=\"ghost\"\n size=\"sm\"\n square\n :aria-label=\"resolvedCloseLabel\"\n @click=\"close\"\n >\n <GrIcon size=\"sm\" aria-hidden=\"true\">\n <IconClose />\n </GrIcon>\n </GrButton>\n </div>\n\n <div data-gr-drawer-body class=\"flex-1 overflow-y-auto\">\n <div class=\"p-5\">\n <slot />\n </div>\n </div>\n\n <div\n v-if=\"$slots.footer\"\n data-gr-drawer-footer\n class=\"px-5 py-4 border-t border-[var(--brd)]\"\n >\n <slot name=\"footer\" />\n </div>\n </DialogPanel>\n </TransitionChild>\n </div>\n </Dialog>\n </TransitionRoot>\n </teleport>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiCA,MAAM,QAAQ;EASd,MAAM,EAAE,MAAM,2BAA2B;EACzC,MAAM,gBAAgB,eAAe,MAAM,SAAS,EAAE,mBAAmB,QAAQ,CAAC;EAClF,MAAM,qBAAqB,eAAe,MAAM,cAAc,EAAE,mBAAmB,OAAO,CAAC;EAE3F,MAAM,OAAO;EAIb,MAAM,UAAU,MAAM;EAEtB,MAAM,aAAa,eAAe;GAChC,OAAO,mBAAmB;IAAE,MAAM,MAAM;IAAM,MAAM,MAAM;GAAK,CAAC;EAClE,CAAC;EAED,MAAM,iBAAiB,eAAe,uBAAuB,MAAM,IAAI,CAAC;EAExE,SAAS,QAAc;GACrB,KAAK,qBAAqB,KAAK;EACjC;EAEA,SAAS,gBAAsB;GAC7B,IAAI,CAAC,MAAM,iBAAiB;GAC5B,MAAM;EACR;EAEA,SAAS,iBAAuB;GAC9B,IAAI,CAAC,MAAM,iBAAiB;GAC5B,MAAM;EACR;EAEA,SAAS,UAAU,GAAwB;GACzC,IAAI,EAAE,QAAQ,UAAU;GACxB,IAAI,CAAC,MAAM,YAAY;GACvB,EAAE,gBAAgB;GAClB,EAAE,eAAe;GACjB,MAAM;EACR;;uBAIE,YAqFW,UAAA,EArFD,IAAG,OAAM,GAAA,CACjB,YAmFiB,MAAA,EAAA,GAAA;IAnFA,MAAM,QAAA;IAAY,IAAG;;2BAkF3B,CAjFT,YAiFS,MAAA,EAAA,GAAA;KAhFP,IAAG;KACH,kBAAA;KACA,OAAM;KACL,QAAQ;KACR,mBAAiB,MAAA,OAAA;KACjB,SAAO;KACE;;4BAyEJ,CAvEN,mBAuEM,OAvEN,YAuEM,CAtEJ,YAekB,MAAA,EAAA,GAAA;MAdhB,IAAG;MACH,OAAM;MACN,cAAW;MACX,YAAS;MACT,OAAM;MACN,cAAW;MACX,YAAS;;6BAOP,CALF,mBAKE,OAAA;OAJA,0BAAA;OACA,OAAM;OACN,eAAY;OACX,SAAO;;;SAIZ,YAoDkB,MAAA,EAAA,GAAA;MAnDhB,IAAG;MACH,OAAM;MACL,cAAY,eAAA;MACb,YAAS;MACT,OAAM;MACN,cAAW;MACV,YAAU,eAAA;;6BA4CG,CA1Cd,YA0Cc,MAAA,EAAA,GAAA;OAzCZ,wBAAA;OACA,UAAS;OACT,OAAK,eAAA,CAAC,iCACE,WAAA,KAAU,CAAA;;8BAuBZ;QArBN,mBAqBM,OArBN,YAqBM,CAjBJ,YAIc,MAAA,EAAA,GAAA;SAJA,IAAI,MAAA,OAAA;SAAS,IAAG;SAAM,wBAAA;SAAqB,OAAM;;gCAGtD,CAFP,WAEO,KAAA,QAAA,SAAA,CAAA,SAAA,CAAA,gBAAA,gBADF,cAAA,KAAa,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA;;uBAIpB,YAUW,kBAAA;SATT,SAAQ;SACR,MAAK;SACL,QAAA;SACC,cAAY,mBAAA;SACZ,SAAO;;gCAIC,CAFT,YAES,gBAAA;UAFD,MAAK;UAAK,eAAY;;iCACf,CAAb,YAAa,MAAA,SAAA,CAAA,CAAA,CAAA;;;;;QAKnB,mBAIM,OAJN,YAIM,CAHJ,mBAEM,OAFN,YAEM,CADJ,WAAQ,KAAA,QAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAKJA,KAAAA,OAAO,UAAA,UAAA,GADf,mBAMM,OANN,YAMM,CADJ,WAAsB,KAAA,QAAA,QAAA,CAAA,CAAA,KAAA,mBAAA,IAAA,IAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"GrDropdown-BXb5Cxxf.js","names":[],"sources":["../../../../src/components/GrDropdown/GrDropdown.vue","../../../../src/components/GrDropdown/GrDropdown.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref, watch } from 'vue'\n\nimport { vClickOutside } from '../../directives'\nimport { useFloating } from '../../composables/internal/useFloating'\nimport { useEscapeToClose } from '../../composables/internal/useEscapeToClose'\nimport {\n grDropdownContentClass,\n grDropdownOriginClass,\n grDropdownWidthClass,\n type GrDropdownAlign,\n type GrDropdownWidth,\n} from './grDropdownStyles'\n\nexport interface GrDropdownProps {\n /** Выравнивание панели относительно триггера. */\n align?: GrDropdownAlign\n /** Ширина панели (tailwind-токены `w-*` или `auto`). */\n width?: GrDropdownWidth\n /** Закрывать панель по клику внутри content. */\n closeOnContentClick?: boolean\n /** Дополнительные классы контейнера content. */\n contentClass?: string\n /** Куда телепортировать панель (`body` по умолчанию). */\n teleportTo?: string | HTMLElement\n}\n\nconst props = withDefaults(defineProps<GrDropdownProps>(), {\n align: 'right',\n width: '48',\n closeOnContentClick: true,\n contentClass: '',\n teleportTo: 'body',\n})\n\nconst open = ref(false)\nconst rootEl = ref<HTMLElement | null>(null)\nconst panelEl = ref<HTMLElement | null>(null)\nconst clickOutsideExclude = [() => panelEl.value]\n\n// `align='right'` — правый край панели совпадает с правым краем триггера (bottom-end);\n// `align='left'` — левые края (bottom-start); `align='center'` — floating-ui сам\n// центрирует панель под триггером при обычном `'bottom'` без суффикса.\nconst placementByAlign: Record<GrDropdownAlign, 'bottom-start' | 'bottom-end' | 'bottom'> = {\n left: 'bottom-start',\n right: 'bottom-end',\n center: 'bottom',\n}\n\nconst { floatingStyle, resolvedPlacement, update: updateFloatingPosition } = useFloating(\n rootEl,\n panelEl,\n open,\n {\n placement: () => placementByAlign[props.align],\n zIndexVar: '--gr-z-dropdown',\n },\n)\n\nfunction toggle(): void {\n open.value = !open.value\n}\n\nfunction close(): void {\n open.value = false\n}\n\nuseEscapeToClose(open, close)\n\nwatch(\n () => props.align,\n () => {\n if (open.value) updateFloatingPosition()\n },\n)\n\nconst widthClass = computed(() => grDropdownWidthClass(props.width))\n\nconst contentClasses = computed(() => grDropdownContentClass(props.contentClass))\n\nconst panelClasses = computed(() => {\n return [widthClass.value, grDropdownOriginClass(resolvedPlacement.value)].filter(Boolean)\n})\n\nfunction onContentClick(): void {\n if (props.closeOnContentClick) {\n close()\n }\n}\n</script>\n\n<template>\n <div data-gr-dropdown>\n <div\n ref=\"rootEl\"\n v-click-outside=\"{ handler: close, enabled: open, exclude: clickOutsideExclude }\"\n data-gr-dropdown-trigger\n class=\"inline-block max-w-full\"\n @click=\"toggle\"\n >\n <slot name=\"trigger\" :open=\"open\" :toggle=\"toggle\" :close=\"close\" />\n </div>\n\n <teleport :to=\"teleportTo\">\n <transition\n enter-active-class=\"transition ease-out duration-150\"\n enter-from-class=\"transform opacity-0 scale-95\"\n enter-to-class=\"transform opacity-100 scale-100\"\n leave-active-class=\"transition ease-in duration-100\"\n leave-from-class=\"transform opacity-100 scale-100\"\n leave-to-class=\"transform opacity-0 scale-95\"\n >\n <div\n v-show=\"open\"\n ref=\"panelEl\"\n data-gr-dropdown-panel\n :class=\"panelClasses\"\n :style=\"floatingStyle\"\n @click=\"onContentClick\"\n >\n <div data-gr-dropdown-content :class=\"contentClasses\">\n <slot name=\"content\" :close=\"close\" />\n </div>\n </div>\n </transition>\n </teleport>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, ref, watch } from 'vue'\n\nimport { vClickOutside } from '../../directives'\nimport { useFloating } from '../../composables/internal/useFloating'\nimport { useEscapeToClose } from '../../composables/internal/useEscapeToClose'\nimport {\n grDropdownContentClass,\n grDropdownOriginClass,\n grDropdownWidthClass,\n type GrDropdownAlign,\n type GrDropdownWidth,\n} from './grDropdownStyles'\n\nexport interface GrDropdownProps {\n /** Выравнивание панели относительно триггера. */\n align?: GrDropdownAlign\n /** Ширина панели (tailwind-токены `w-*` или `auto`). */\n width?: GrDropdownWidth\n /** Закрывать панель по клику внутри content. */\n closeOnContentClick?: boolean\n /** Дополнительные классы контейнера content. */\n contentClass?: string\n /** Куда телепортировать панель (`body` по умолчанию). */\n teleportTo?: string | HTMLElement\n}\n\nconst props = withDefaults(defineProps<GrDropdownProps>(), {\n align: 'right',\n width: '48',\n closeOnContentClick: true,\n contentClass: '',\n teleportTo: 'body',\n})\n\nconst open = ref(false)\nconst rootEl = ref<HTMLElement | null>(null)\nconst panelEl = ref<HTMLElement | null>(null)\nconst clickOutsideExclude = [() => panelEl.value]\n\n// `align='right'` — правый край панели совпадает с правым краем триггера (bottom-end);\n// `align='left'` — левые края (bottom-start); `align='center'` — floating-ui сам\n// центрирует панель под триггером при обычном `'bottom'` без суффикса.\nconst placementByAlign: Record<GrDropdownAlign, 'bottom-start' | 'bottom-end' | 'bottom'> = {\n left: 'bottom-start',\n right: 'bottom-end',\n center: 'bottom',\n}\n\nconst { floatingStyle, resolvedPlacement, update: updateFloatingPosition } = useFloating(\n rootEl,\n panelEl,\n open,\n {\n placement: () => placementByAlign[props.align],\n zIndexVar: '--gr-z-dropdown',\n },\n)\n\nfunction toggle(): void {\n open.value = !open.value\n}\n\nfunction close(): void {\n open.value = false\n}\n\nuseEscapeToClose(open, close)\n\nwatch(\n () => props.align,\n () => {\n if (open.value) updateFloatingPosition()\n },\n)\n\nconst widthClass = computed(() => grDropdownWidthClass(props.width))\n\nconst contentClasses = computed(() => grDropdownContentClass(props.contentClass))\n\nconst panelClasses = computed(() => {\n return [widthClass.value, grDropdownOriginClass(resolvedPlacement.value)].filter(Boolean)\n})\n\nfunction onContentClick(): void {\n if (props.closeOnContentClick) {\n close()\n }\n}\n</script>\n\n<template>\n <div data-gr-dropdown>\n <div\n ref=\"rootEl\"\n v-click-outside=\"{ handler: close, enabled: open, exclude: clickOutsideExclude }\"\n data-gr-dropdown-trigger\n class=\"inline-block max-w-full\"\n @click=\"toggle\"\n >\n <slot name=\"trigger\" :open=\"open\" :toggle=\"toggle\" :close=\"close\" />\n </div>\n\n <teleport :to=\"teleportTo\">\n <transition\n enter-active-class=\"transition ease-out duration-150\"\n enter-from-class=\"transform opacity-0 scale-95\"\n enter-to-class=\"transform opacity-100 scale-100\"\n leave-active-class=\"transition ease-in duration-100\"\n leave-from-class=\"transform opacity-100 scale-100\"\n leave-to-class=\"transform opacity-0 scale-95\"\n >\n <div\n v-show=\"open\"\n ref=\"panelEl\"\n data-gr-dropdown-panel\n :class=\"panelClasses\"\n :style=\"floatingStyle\"\n @click=\"onContentClick\"\n >\n <div data-gr-dropdown-content :class=\"contentClasses\">\n <slot name=\"content\" :close=\"close\" />\n </div>\n </div>\n </transition>\n </teleport>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;EA2BA,MAAM,QAAQ;EAQd,MAAM,OAAO,IAAI,KAAK;EACtB,MAAM,SAAS,IAAwB,IAAI;EAC3C,MAAM,UAAU,IAAwB,IAAI;EAC5C,MAAM,sBAAsB,OAAO,QAAQ,KAAK;EAKhD,MAAM,mBAAsF;GAC1F,MAAM;GACN,OAAO;GACP,QAAQ;EACV;EAEA,MAAM,EAAE,eAAe,mBAAmB,QAAQ,2BAA2B,YAC3E,QACA,SACA,MACA;GACE,iBAAiB,iBAAiB,MAAM;GACxC,WAAW;EACb,CACF;EAEA,SAAS,SAAe;GACtB,KAAK,QAAQ,CAAC,KAAK;EACrB;EAEA,SAAS,QAAc;GACrB,KAAK,QAAQ;EACf;EAEA,iBAAiB,MAAM,KAAK;EAE5B,YACQ,MAAM,aACN;GACJ,IAAI,KAAK,OAAO,uBAAuB;EACzC,CACF;EAEA,MAAM,aAAa,eAAe,qBAAqB,MAAM,KAAK,CAAC;EAEnE,MAAM,iBAAiB,eAAe,uBAAuB,MAAM,YAAY,CAAC;EAEhF,MAAM,eAAe,eAAe;GAClC,OAAO,CAAC,WAAW,OAAO,sBAAsB,kBAAkB,KAAK,CAAC,CAAC,CAAC,OAAO,OAAO;EAC1F,CAAC;EAED,SAAS,iBAAuB;GAC9B,IAAI,MAAM,qBACR,MAAM;EAEV;;uBAIE,mBAkCM,OAlCN,YAkCM,CAAA,gBAAA,UAAA,GAjCJ,mBAQM,OAAA;aAPA;IAAJ,KAAI;IAEJ,4BAAA;IACA,OAAM;IACL,SAAO;OAER,WAAoE,KAAA,QAAA,WAAA;IAA9C,MAAM,KAAA;IAAe;IAAgB;;aAL/B;IAAK,SAAW,KAAA;IAAI,SAAW;GAAmB,CAAA,CAAA,CAAA,IAAA,UAAA,GAQhF,YAsBW,UAAA,EAtBA,IAAI,QAAA,WAAU,GAAA,CACvB,YAoBa,YAAA;IAnBX,sBAAmB;IACnB,oBAAiB;IACjB,kBAAe;IACf,sBAAmB;IACnB,oBAAiB;IACjB,kBAAe;;2BAaT,CAAA,eAXN,mBAWM,OAAA;cATA;KAAJ,KAAI;KACJ,0BAAA;KACC,OAAK,eAAE,aAAA,KAAY;KACnB,OAAK,eAAE,MAAA,aAAA,CAAa;KACpB,SAAO;QAER,mBAEM,OAAA;KAFD,4BAAA;KAA0B,OAAK,eAAE,eAAA,KAAc;QAClD,WAAsC,KAAA,QAAA,WAAA,EAAT,MAAK,CAAA,CAAA,GAAA,CAAA,CAAA,GAAA,CAAA,GAAA,CAAA,CAAA,OAR5B,KAAA,KAAI,CAAA,CAAA,CAAA,CAAA"}
@@ -1,35 +0,0 @@
1
- import { createCommentVNode, createElementBlock, defineComponent, normalizeClass, openBlock, renderSlot, toDisplayString } from "vue";
2
- //#region src/components/GrFormField/GrFormField.vue?vue&type=script&setup=true&lang.ts
3
- var _hoisted_1 = { class: "flex flex-col gap-2" };
4
- var _hoisted_2 = ["for"];
5
- var _hoisted_3 = {
6
- key: 1,
7
- class: "text-sm text-[var(--gr-danger)]"
8
- };
9
- //#endregion
10
- //#region src/components/GrFormField/GrFormField.vue
11
- var GrFormField_default = /* @__PURE__ */ defineComponent({
12
- __name: "GrFormField",
13
- props: {
14
- label: { default: void 0 },
15
- forId: { default: void 0 },
16
- error: { default: void 0 },
17
- labelClass: { default: void 0 }
18
- },
19
- setup(__props) {
20
- const props = __props;
21
- return (_ctx, _cache) => {
22
- return openBlock(), createElementBlock("div", _hoisted_1, [
23
- props.label ? (openBlock(), createElementBlock("label", {
24
- key: 0,
25
- for: props.forId,
26
- class: normalizeClass(["text-sm text-[var(--muted-fg)]", props.labelClass])
27
- }, toDisplayString(props.label), 11, _hoisted_2)) : createCommentVNode("", true),
28
- renderSlot(_ctx.$slots, "default"),
29
- props.error ? (openBlock(), createElementBlock("div", _hoisted_3, toDisplayString(props.error), 1)) : createCommentVNode("", true)
30
- ]);
31
- };
32
- }
33
- });
34
- //#endregion
35
- export { GrFormField_default as t };
@@ -1 +0,0 @@
1
- {"version":3,"file":"GrFormField-BujNQrw8.js","names":[],"sources":["../../../../src/components/GrFormField/GrFormField.vue","../../../../src/components/GrFormField/GrFormField.vue"],"sourcesContent":["<script setup lang=\"ts\">\ntype LabelClass = string | string[] | Record<string, boolean>\n\nconst props = withDefaults(\n defineProps<{\n label?: string\n forId?: string\n error?: string\n labelClass?: LabelClass\n }>(),\n {\n label: undefined,\n forId: undefined,\n error: undefined,\n labelClass: undefined,\n },\n)\n</script>\n\n<template>\n <div class=\"flex flex-col gap-2\">\n <label\n v-if=\"props.label\"\n :for=\"props.forId\"\n class=\"text-sm text-[var(--muted-fg)]\"\n :class=\"props.labelClass\"\n >\n {{ props.label }}\n </label>\n <slot />\n <div v-if=\"props.error\" class=\"text-sm text-[var(--gr-danger)]\">\n {{ props.error }}\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\ntype LabelClass = string | string[] | Record<string, boolean>\n\nconst props = withDefaults(\n defineProps<{\n label?: string\n forId?: string\n error?: string\n labelClass?: LabelClass\n }>(),\n {\n label: undefined,\n forId: undefined,\n error: undefined,\n labelClass: undefined,\n },\n)\n</script>\n\n<template>\n <div class=\"flex flex-col gap-2\">\n <label\n v-if=\"props.label\"\n :for=\"props.forId\"\n class=\"text-sm text-[var(--muted-fg)]\"\n :class=\"props.labelClass\"\n >\n {{ props.label }}\n </label>\n <slot />\n <div v-if=\"props.error\" class=\"text-sm text-[var(--gr-danger)]\">\n {{ props.error }}\n </div>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;EAGA,MAAM,QAAQ;;uBAiBZ,mBAaM,OAbN,YAaM;IAXI,MAAM,SAAA,UAAA,GADd,mBAOQ,SAAA;;KALL,KAAK,MAAM;KACZ,OAAK,eAAA,CAAC,kCACE,MAAM,UAAU,CAAA;uBAErB,MAAM,KAAK,GAAA,IAAA,UAAA,KAAA,mBAAA,IAAA,IAAA;IAEhB,WAAQ,KAAA,QAAA,SAAA;IACG,MAAM,SAAA,UAAA,GAAjB,mBAEM,OAFN,YAEM,gBADD,MAAM,KAAK,GAAA,CAAA,KAAA,mBAAA,IAAA,IAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"GrImageViewer-OCUIrNh2.js","names":["$slots"],"sources":["../../../../src/components/GrImageViewer/GrImageViewer.vue","../../../../src/components/GrImageViewer/GrImageViewer.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, nextTick, onBeforeUnmount, ref, watch } from 'vue'\nimport { Dialog, DialogPanel, TransitionChild, TransitionRoot } from '@headlessui/vue'\n\nimport { useGranularityTranslations } from '../../internal/granularityI18n'\n\n/**\n * Usage:\n *\n * <GrImageViewer\n * v-model=\"open\"\n * :url-list=\"images\"\n * :initial-index=\"0\"\n * show-progress\n * hide-on-click-modal\n * />\n */\nconst props = withDefaults(\n defineProps<{\n modelValue: boolean\n urlList: string[]\n initialIndex?: number\n zoomRate?: number\n minScale?: number\n maxScale?: number\n hideOnClickModal?: boolean\n closeOnPressEscape?: boolean\n showProgress?: boolean\n showZoomValue?: boolean\n /** Включает масштабирование колесом мыши / жестом на трекпаде. По умолчанию включено. */\n wheelZoom?: boolean\n /** Включает перетаскивание (pan) картинки мышью. При наведении курсор «рука». По умолчанию выключено. */\n draggable?: boolean\n zIndex?: number\n /** i18n: aria-label кнопки закрытия. */\n closeLabel?: string\n /** i18n: aria-label кнопки «предыдущее изображение». */\n prevLabel?: string\n /** i18n: aria-label кнопки «следующее изображение». */\n nextLabel?: string\n /** i18n: aria-label кнопки «увеличить». */\n zoomInLabel?: string\n /** i18n: aria-label кнопки «уменьшить». */\n zoomOutLabel?: string\n /** i18n: aria-label кнопки «сбросить масштаб». */\n resetZoomLabel?: string\n /** i18n: aria-label кнопки «повернуть влево». */\n rotateLeftLabel?: string\n /** i18n: aria-label кнопки «повернуть вправо». */\n rotateRightLabel?: string\n /** i18n: текст в пустом состоянии (нет изображений). */\n emptyText?: string\n }>(),\n {\n initialIndex: 0,\n zoomRate: 1.2,\n minScale: 0.5,\n maxScale: 5,\n hideOnClickModal: false,\n closeOnPressEscape: true,\n showProgress: false,\n showZoomValue: true,\n wheelZoom: true,\n draggable: false,\n zIndex: undefined,\n closeLabel: undefined,\n prevLabel: undefined,\n nextLabel: undefined,\n zoomInLabel: undefined,\n zoomOutLabel: undefined,\n resetZoomLabel: undefined,\n rotateLeftLabel: undefined,\n rotateRightLabel: undefined,\n emptyText: undefined,\n },\n)\n\nconst { t } = useGranularityTranslations()\nconst resolvedCloseLabel = computed(() => props.closeLabel ?? t('gr.imageViewer.close', 'Close image viewer'))\nconst resolvedPrevLabel = computed(() => props.prevLabel ?? t('gr.imageViewer.prev', 'Previous image'))\nconst resolvedNextLabel = computed(() => props.nextLabel ?? t('gr.imageViewer.next', 'Next image'))\nconst resolvedZoomInLabel = computed(() => props.zoomInLabel ?? t('gr.imageViewer.zoomIn', 'Zoom in'))\nconst resolvedZoomOutLabel = computed(() => props.zoomOutLabel ?? t('gr.imageViewer.zoomOut', 'Zoom out'))\nconst resolvedResetZoomLabel = computed(() => props.resetZoomLabel ?? t('gr.imageViewer.resetZoom', 'Reset zoom'))\nconst resolvedRotateLeftLabel = computed(() => props.rotateLeftLabel ?? t('gr.imageViewer.rotateLeft', 'Rotate left'))\nconst resolvedRotateRightLabel = computed(() => props.rotateRightLabel ?? t('gr.imageViewer.rotateRight', 'Rotate right'))\nconst resolvedEmptyText = computed(() => props.emptyText ?? t('gr.imageViewer.empty', 'No image'))\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n (e: 'close'): void\n (e: 'switch', newIndex: number): void\n (e: 'rotate', deg: number): void\n}>()\n\ntype GrImageViewerToolbarActions = {\n close: () => void\n prev: () => void\n next: () => void\n zoomIn: () => void\n zoomOut: () => void\n reset: () => void\n rotateLeft: () => void\n rotateRight: () => void\n}\n\ntype GrImageViewerSlotProps = {\n index: number\n displayIndex: number\n total: number\n scale: number\n rotation: number\n /** Натуральный (исходный) размер картинки, px. 0 пока изображение не загружено. */\n naturalWidth: number\n naturalHeight: number\n /** Фактический размер изображения на экране c учётом scale, px (footprint вдоль осей картинки). */\n renderedWidth: number\n renderedHeight: number\n /** Реальный масштаб относительно натурального размера (доля): renderedWidth / naturalWidth. */\n realScale: number\n /** Реальный масштаб в процентах, отформатированный (например `67`). */\n realScalePercent: string\n actions: GrImageViewerToolbarActions\n}\n\nconst DEFAULT_Z_INDEX = 2000\nconst TRAILING_ZERO_DECIMAL_RE = /\\.0$/\n// Чувствительность масштабирования колесом/трекпадом: чем больше — тем резче реакция.\nconst WHEEL_ZOOM_SENSITIVITY = 0.0015\n// Сколько ms простоя после последнего wheel-события считаем «зум завершён»\n// (после этого возвращаем плавный CSS-переход).\nconst WHEEL_IDLE_MS = 120\n\nconst open = computed(() => props.modelValue)\nconst total = computed(() => props.urlList.length)\nconst hasImages = computed(() => total.value > 0)\n\nconst currentIndex = ref(0)\nconst scale = ref(1)\nconst rotation = ref(0)\nconst offsetX = ref(0)\nconst offsetY = ref(0)\n\nconst imageEl = ref<HTMLImageElement | null>(null)\n\n// Флаг активного зума колесом/трекпадом. Пока true — CSS-переход отключён,\n// чтобы непрерывное масштабирование не «наслаивалось» и не дёргалось.\nconst isWheelZooming = ref(false)\n\n// Накопленный deltaY между кадрами и id запланированного rAF.\nlet pendingWheelDelta = 0\nlet wheelFrameId: number | null = null\nlet wheelIdleTimer: ReturnType<typeof setTimeout> | null = null\n\n// Флаг активного перетаскивания (pan) картинки мышью.\nconst isDragging = ref(false)\n\n// Координаты указателя и offset на момент начала перетаскивания.\nlet dragStartX = 0\nlet dragStartY = 0\nlet dragOffsetStartX = 0\nlet dragOffsetStartY = 0\n\n// Натуральный (исходный) размер картинки, читается из `<img>` при загрузке.\nconst naturalWidth = ref(0)\nconst naturalHeight = ref(0)\n\n// Layout-размер вписанного (`object-contain`) изображения без учёта CSS transform/scale.\nconst fittedWidth = ref(0)\nconst fittedHeight = ref(0)\n\nlet resizeObserver: ResizeObserver | null = null\n\nconst currentUrl = computed(() => {\n if (!hasImages.value) {\n return undefined\n }\n\n return props.urlList[currentIndex.value]\n})\n\nconst displayIndex = computed(() => {\n if (!hasImages.value) {\n return 0\n }\n\n return currentIndex.value + 1\n})\n\nconst viewerStyle = computed(() => ({\n zIndex: String(Number.isFinite(props.zIndex) ? props.zIndex : DEFAULT_Z_INDEX),\n}))\n\nconst imageStyle = computed(() => ({\n transform: `translate3d(${offsetX.value}px, ${offsetY.value}px, 0) scale(${scale.value}) rotate(${rotation.value}deg)`,\n}))\n\n// Плавный CSS-переход transform только для дискретных зумов (кнопки/клавиши).\n// При непрерывном зуме колесом и при перетаскивании переход отключаем —\n// иначе картинка «дёргается»/наслаивается и тянется за курсором с задержкой.\nconst imageTransitionClass = computed(() =>\n isWheelZooming.value || isDragging.value ? '' : 'transition-transform duration-150 ease-out',\n)\n\n// Курсор «рука» при наведении (grab) и при зажатии (grabbing), только если включён drag.\nconst imageCursorClass = computed(() => {\n if (!props.draggable) {\n return ''\n }\n\n return isDragging.value ? 'cursor-grabbing' : 'cursor-grab'\n})\n\nfunction formatPercent(value: number): string {\n if (Number.isInteger(value)) {\n return String(value)\n }\n\n return value.toFixed(1).replace(TRAILING_ZERO_DECIMAL_RE, '')\n}\n\nconst zoomValueText = computed(() => formatPercent(scale.value * 100))\n\n// Фактический размер изображения на экране вдоль его осей (footprint), c учётом scale.\nconst renderedWidth = computed(() => Math.round(fittedWidth.value * scale.value))\nconst renderedHeight = computed(() => Math.round(fittedHeight.value * scale.value))\n\n// Реальный масштаб относительно натурального размера (доля). Не зависит от rotation,\n// так как scale равномерный по осям картинки.\nconst realScale = computed(() => {\n if (!naturalWidth.value) {\n return 0\n }\n\n return (fittedWidth.value * scale.value) / naturalWidth.value\n})\n\nconst realScalePercent = computed(() => formatPercent(realScale.value * 100))\n\nconst toolbarSlotProps = computed<GrImageViewerSlotProps>(() => ({\n index: currentIndex.value,\n displayIndex: displayIndex.value,\n total: total.value,\n scale: scale.value,\n rotation: rotation.value,\n naturalWidth: naturalWidth.value,\n naturalHeight: naturalHeight.value,\n renderedWidth: renderedWidth.value,\n renderedHeight: renderedHeight.value,\n realScale: realScale.value,\n realScalePercent: realScalePercent.value,\n actions: toolbarActions,\n}))\n\nfunction normalizeIndex(value: number): number {\n if (!hasImages.value) {\n return 0\n }\n\n const normalized = Number.isFinite(value) ? Math.trunc(value) : 0\n\n return ((normalized % total.value) + total.value) % total.value\n}\n\nfunction resetTransform(): void {\n scale.value = 1\n rotation.value = 0\n offsetX.value = 0\n offsetY.value = 0\n isDragging.value = false\n}\n\nfunction resetImageMetrics(): void {\n naturalWidth.value = 0\n naturalHeight.value = 0\n fittedWidth.value = 0\n fittedHeight.value = 0\n}\n\nfunction measureFitted(): void {\n const el = imageEl.value\n\n if (!el) {\n return\n }\n\n // offsetWidth/Height — layout-размер вписанного изображения, без учёта CSS transform.\n fittedWidth.value = el.offsetWidth\n fittedHeight.value = el.offsetHeight\n}\n\nfunction onImageLoad(event: Event): void {\n const el = event.target as HTMLImageElement\n\n naturalWidth.value = el.naturalWidth\n naturalHeight.value = el.naturalHeight\n measureFitted()\n}\n\nfunction startObservingImage(): void {\n const el = imageEl.value\n\n if (!el || typeof ResizeObserver === 'undefined') {\n return\n }\n\n if (!resizeObserver) {\n resizeObserver = new ResizeObserver(() => measureFitted())\n }\n\n resizeObserver.observe(el)\n\n // Если картинка уже в кэше и `load` не сработал — считаем метрики сразу.\n if (el.complete && el.naturalWidth) {\n naturalWidth.value = el.naturalWidth\n naturalHeight.value = el.naturalHeight\n }\n\n measureFitted()\n}\n\nfunction stopObservingImage(): void {\n resizeObserver?.disconnect()\n}\n\nfunction setIndex(nextIndex: number, options?: { emitSwitch?: boolean }): void {\n const normalizedIndex = normalizeIndex(nextIndex)\n\n if (normalizedIndex === currentIndex.value) {\n return\n }\n\n currentIndex.value = normalizedIndex\n resetTransform()\n resetImageMetrics()\n endWheelZoom()\n\n if (options?.emitSwitch !== false) {\n emit('switch', normalizedIndex)\n }\n}\n\nfunction syncIndexFromInitial(): void {\n if (!hasImages.value) {\n currentIndex.value = 0\n return\n }\n\n currentIndex.value = normalizeIndex(props.initialIndex)\n resetTransform()\n resetImageMetrics()\n endWheelZoom()\n}\n\nfunction preloadAt(index: number): void {\n const url = props.urlList[index]\n\n if (!url) {\n return\n }\n\n const image = new Image()\n image.decoding = 'async'\n image.src = url\n}\n\nfunction closeViewer(): void {\n emit('update:modelValue', false)\n emit('close')\n}\n\nfunction prev(): void {\n setIndex(currentIndex.value - 1)\n}\n\nfunction next(): void {\n setIndex(currentIndex.value + 1)\n}\n\nfunction setScale(value: number): void {\n const clamped = Math.min(props.maxScale, Math.max(props.minScale, value))\n\n scale.value = Number(clamped.toFixed(4))\n}\n\nfunction zoomIn(): void {\n setScale(scale.value * props.zoomRate)\n}\n\nfunction zoomOut(): void {\n setScale(scale.value / props.zoomRate)\n}\n\nfunction cancelWheelFrame(): void {\n if (wheelFrameId !== null) {\n cancelAnimationFrame(wheelFrameId)\n wheelFrameId = null\n }\n}\n\nfunction endWheelZoom(): void {\n if (wheelIdleTimer !== null) {\n clearTimeout(wheelIdleTimer)\n wheelIdleTimer = null\n }\n\n isWheelZooming.value = false\n pendingWheelDelta = 0\n cancelWheelFrame()\n}\n\n// Применяем накопленный за кадр deltaY одним обновлением scale — так рендер\n// происходит не чаще одного раза в кадр (без «дёрганья» от частых обновлений).\nfunction flushWheelZoom(): void {\n wheelFrameId = null\n\n const delta = pendingWheelDelta\n pendingWheelDelta = 0\n\n if (!delta) {\n return\n }\n\n // Экспоненциальный шаг — плавно и одинаково ощущается и для колеса, и для трекпада.\n // delta < 0 (от себя / scroll up) — приближение, delta > 0 — отдаление.\n const factor = Math.exp(-delta * WHEEL_ZOOM_SENSITIVITY)\n\n setScale(scale.value * factor)\n}\n\nfunction onWheel(event: WheelEvent): void {\n if (!props.wheelZoom || !hasImages.value) {\n return\n }\n\n // Не даём странице/оверлею проскроллиться — колесо отдаём под зум.\n event.preventDefault()\n\n // Во время непрерывного зума отключаем CSS-переход: плавность даёт само\n // покадровое обновление, а transition на каждом микрошаге вызывает лаг/наслоение.\n isWheelZooming.value = true\n\n pendingWheelDelta += event.deltaY\n\n if (wheelFrameId === null) {\n wheelFrameId = requestAnimationFrame(flushWheelZoom)\n }\n\n if (wheelIdleTimer !== null) {\n clearTimeout(wheelIdleTimer)\n }\n\n // По завершении жеста возвращаем плавный переход для последующих дискретных зумов.\n wheelIdleTimer = setTimeout(() => {\n wheelIdleTimer = null\n isWheelZooming.value = false\n }, WHEEL_IDLE_MS)\n}\n\nfunction onPointerDown(event: PointerEvent): void {\n // Тянем только основной кнопкой и только если drag включён и есть картинка.\n if (!props.draggable || !hasImages.value || event.button !== 0) {\n return\n }\n\n event.preventDefault()\n\n isDragging.value = true\n dragStartX = event.clientX\n dragStartY = event.clientY\n dragOffsetStartX = offsetX.value\n dragOffsetStartY = offsetY.value\n\n // Захватываем указатель, чтобы движение/отпускание ловились даже за пределами картинки.\n ;(event.currentTarget as Element).setPointerCapture?.(event.pointerId)\n}\n\nfunction onPointerMove(event: PointerEvent): void {\n if (!isDragging.value) {\n return\n }\n\n offsetX.value = dragOffsetStartX + (event.clientX - dragStartX)\n offsetY.value = dragOffsetStartY + (event.clientY - dragStartY)\n}\n\nfunction onPointerUp(event: PointerEvent): void {\n if (!isDragging.value) {\n return\n }\n\n isDragging.value = false\n ;(event.currentTarget as Element).releasePointerCapture?.(event.pointerId)\n}\n\nfunction rotateLeft(): void {\n rotation.value -= 90\n emit('rotate', rotation.value)\n}\n\nfunction rotateRight(): void {\n rotation.value += 90\n emit('rotate', rotation.value)\n}\n\nconst toolbarActions: GrImageViewerToolbarActions = {\n close: closeViewer,\n prev,\n next,\n zoomIn,\n zoomOut,\n reset: resetTransform,\n rotateLeft,\n rotateRight,\n}\n\nfunction onBackdropClick(): void {\n if (!props.hideOnClickModal) {\n return\n }\n\n closeViewer()\n}\n\nfunction onKeydown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'Escape':\n if (!props.closeOnPressEscape) {\n return\n }\n\n event.preventDefault()\n closeViewer()\n return\n\n case 'ArrowLeft':\n event.preventDefault()\n prev()\n return\n\n case 'ArrowRight':\n event.preventDefault()\n next()\n return\n\n case '+':\n case '=':\n case 'Add':\n event.preventDefault()\n zoomIn()\n return\n\n case '-':\n case '_':\n case 'Subtract':\n event.preventDefault()\n zoomOut()\n return\n\n case '0':\n event.preventDefault()\n resetTransform()\n break\n\n default:\n }\n}\n\nwatch(\n () => props.modelValue,\n async (isOpen) => {\n if (!isOpen) {\n stopObservingImage()\n endWheelZoom()\n isDragging.value = false\n return\n }\n\n syncIndexFromInitial()\n await nextTick()\n startObservingImage()\n },\n { immediate: true },\n)\n\nwatch(\n () => props.initialIndex,\n () => {\n if (!props.modelValue) {\n return\n }\n\n syncIndexFromInitial()\n },\n)\n\nwatch(\n () => props.urlList,\n () => {\n if (!props.modelValue) {\n return\n }\n\n syncIndexFromInitial()\n },\n { deep: true },\n)\n\nwatch(\n currentIndex,\n (index) => {\n if (!hasImages.value || total.value < 2) {\n return\n }\n\n preloadAt(normalizeIndex(index - 1))\n preloadAt(normalizeIndex(index + 1))\n },\n { immediate: true },\n)\n\nonBeforeUnmount(() => {\n stopObservingImage()\n endWheelZoom()\n})\n</script>\n\n<template>\n <teleport to=\"body\">\n <TransitionRoot :show=\"open\" as=\"template\">\n <Dialog\n as=\"div\"\n class=\"fixed inset-0\"\n :style=\"viewerStyle\"\n role=\"dialog\"\n aria-modal=\"true\"\n :static=\"true\"\n @keydown=\"onKeydown\"\n >\n <div class=\"fixed inset-0 overflow-hidden\">\n <TransitionChild\n as=\"template\"\n enter=\"duration-150 ease-out\"\n enter-from=\"opacity-0\"\n enter-to=\"opacity-100\"\n leave=\"duration-120 ease-in\"\n leave-from=\"opacity-100\"\n leave-to=\"opacity-0\"\n >\n <div\n data-gr-image-viewer-overlay\n class=\"absolute inset-0 bg-black/60 backdrop-blur-sm\"\n aria-hidden=\"true\"\n @click=\"onBackdropClick\"\n />\n </TransitionChild>\n\n <TransitionChild\n as=\"template\"\n enter=\"duration-180 ease-out\"\n enter-from=\"opacity-0 scale-98\"\n enter-to=\"opacity-100 scale-100\"\n leave=\"duration-130 ease-in\"\n leave-from=\"opacity-100 scale-100\"\n leave-to=\"opacity-0 scale-98\"\n >\n <DialogPanel\n data-gr-image-viewer-panel\n class=\"relative z-10 h-full w-full outline-none\"\n tabindex=\"-1\"\n >\n <div class=\"pointer-events-none absolute inset-x-0 top-0 z-30 px-3 py-3 sm:px-6\">\n <div class=\"pointer-events-auto flex items-center justify-between gap-3\">\n <div class=\"flex items-center gap-2\">\n <div\n v-if=\"showProgress\"\n data-gr-image-viewer-progress\n class=\"rounded-full bg-black/35 px-3 py-1 text-xs font-600 text-white/95 sm:text-sm\"\n >\n {{ displayIndex }} / {{ total }}\n </div>\n\n <div\n v-if=\"showZoomValue\"\n data-gr-image-viewer-zoom-value\n class=\"rounded-full bg-black/35 px-3 py-1 text-xs font-700 text-white/95 sm:text-sm\"\n >\n {{ zoomValueText }}%\n </div>\n </div>\n\n <button\n type=\"button\"\n data-gr-image-viewer-close\n :aria-label=\"resolvedCloseLabel\"\n class=\"h-11 w-11 flex items-center justify-center rounded-full border border-white/20 bg-black/35 text-white transition-colors hover:bg-black/55 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/80\"\n @click=\"closeViewer\"\n >\n <span aria-hidden=\"true\" class=\"text-lg leading-none\">✕</span>\n </button>\n </div>\n </div>\n\n <div\n class=\"relative z-10 h-full w-full flex items-center justify-center px-16 py-16 sm:px-24 sm:py-20\"\n @wheel=\"onWheel\"\n >\n <button\n v-if=\"total > 1\"\n type=\"button\"\n data-gr-image-viewer-prev\n :aria-label=\"resolvedPrevLabel\"\n class=\"absolute left-3 top-1/2 z-20 h-12 w-12 -translate-y-1/2 flex items-center justify-center rounded-full border border-white/20 bg-black/35 text-white transition-colors hover:bg-black/55 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/80 sm:left-6\"\n @click=\"prev\"\n >\n <span aria-hidden=\"true\" class=\"text-xl leading-none\">‹</span>\n </button>\n\n <button\n v-if=\"total > 1\"\n type=\"button\"\n data-gr-image-viewer-next\n :aria-label=\"resolvedNextLabel\"\n class=\"absolute right-3 top-1/2 z-20 h-12 w-12 -translate-y-1/2 flex items-center justify-center rounded-full border border-white/20 bg-black/35 text-white transition-colors hover:bg-black/55 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/80 sm:right-6\"\n @click=\"next\"\n >\n <span aria-hidden=\"true\" class=\"text-xl leading-none\">›</span>\n </button>\n\n <div class=\"h-full w-full flex items-center justify-center\">\n <img\n v-if=\"currentUrl\"\n ref=\"imageEl\"\n data-gr-image-viewer-image\n :src=\"currentUrl\"\n alt=\"\"\n draggable=\"false\"\n class=\"max-h-full max-w-full select-none object-contain will-change-transform\"\n :class=\"[imageTransitionClass, imageCursorClass]\"\n :style=\"imageStyle\"\n @load=\"onImageLoad\"\n @pointerdown=\"onPointerDown\"\n @pointermove=\"onPointerMove\"\n @pointerup=\"onPointerUp\"\n @pointercancel=\"onPointerUp\"\n >\n\n <div\n v-else\n class=\"rounded-[var(--gr-radius-xl)] border border-white/20 bg-black/25 px-4 py-3 text-sm text-white/80\"\n >\n {{ resolvedEmptyText }}\n </div>\n </div>\n </div>\n\n <div class=\"pointer-events-none absolute inset-x-0 bottom-0 z-30 px-3 pb-3 sm:px-6 sm:pb-6\">\n <div class=\"pointer-events-auto mx-auto w-full max-w-max\">\n <slot\n name=\"toolbar\"\n v-bind=\"toolbarSlotProps\"\n >\n <div class=\"rounded-full border border-white/20 bg-black/35 p-1 backdrop-blur-sm flex items-center gap-1\">\n <button\n type=\"button\"\n data-gr-image-viewer-zoom-out\n :aria-label=\"resolvedZoomOutLabel\"\n class=\"h-11 min-w-11 px-2 flex items-center justify-center rounded-full text-sm font-600 text-white transition-colors hover:bg-white/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/80\"\n @click=\"zoomOut\"\n >\n −\n </button>\n\n <button\n type=\"button\"\n data-gr-image-viewer-zoom-reset\n :aria-label=\"resolvedResetZoomLabel\"\n class=\"h-11 min-w-11 px-3 flex items-center justify-center rounded-full text-xs font-700 text-white transition-colors hover:bg-white/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/80\"\n @click=\"resetTransform\"\n >\n 100%\n </button>\n\n <button\n type=\"button\"\n data-gr-image-viewer-zoom-in\n :aria-label=\"resolvedZoomInLabel\"\n class=\"h-11 min-w-11 px-2 flex items-center justify-center rounded-full text-sm font-600 text-white transition-colors hover:bg-white/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/80\"\n @click=\"zoomIn\"\n >\n +\n </button>\n\n <template v-if=\"$slots['toolbar-actions']\">\n <div class=\"mx-1 h-6 w-px bg-white/25\" aria-hidden=\"true\" />\n\n <slot\n name=\"toolbar-actions\"\n v-bind=\"toolbarSlotProps\"\n />\n\n <div class=\"mx-1 h-6 w-px bg-white/25\" aria-hidden=\"true\" />\n </template>\n\n <div v-else class=\"mx-1 h-6 w-px bg-white/25\" aria-hidden=\"true\" />\n\n <button\n type=\"button\"\n data-gr-image-viewer-rotate-left\n :aria-label=\"resolvedRotateLeftLabel\"\n class=\"h-11 min-w-11 px-2 flex items-center justify-center rounded-full text-sm font-600 text-white transition-colors hover:bg-white/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/80\"\n @click=\"rotateLeft\"\n >\n ↺\n </button>\n\n <button\n type=\"button\"\n data-gr-image-viewer-rotate-right\n :aria-label=\"resolvedRotateRightLabel\"\n class=\"h-11 min-w-11 px-2 flex items-center justify-center rounded-full text-sm font-600 text-white transition-colors hover:bg-white/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/80\"\n @click=\"rotateRight\"\n >\n ↻\n </button>\n </div>\n </slot>\n </div>\n </div>\n </DialogPanel>\n </TransitionChild>\n </div>\n </Dialog>\n </TransitionRoot>\n </teleport>\n</template>","<script setup lang=\"ts\">\nimport { computed, nextTick, onBeforeUnmount, ref, watch } from 'vue'\nimport { Dialog, DialogPanel, TransitionChild, TransitionRoot } from '@headlessui/vue'\n\nimport { useGranularityTranslations } from '../../internal/granularityI18n'\n\n/**\n * Usage:\n *\n * <GrImageViewer\n * v-model=\"open\"\n * :url-list=\"images\"\n * :initial-index=\"0\"\n * show-progress\n * hide-on-click-modal\n * />\n */\nconst props = withDefaults(\n defineProps<{\n modelValue: boolean\n urlList: string[]\n initialIndex?: number\n zoomRate?: number\n minScale?: number\n maxScale?: number\n hideOnClickModal?: boolean\n closeOnPressEscape?: boolean\n showProgress?: boolean\n showZoomValue?: boolean\n /** Включает масштабирование колесом мыши / жестом на трекпаде. По умолчанию включено. */\n wheelZoom?: boolean\n /** Включает перетаскивание (pan) картинки мышью. При наведении курсор «рука». По умолчанию выключено. */\n draggable?: boolean\n zIndex?: number\n /** i18n: aria-label кнопки закрытия. */\n closeLabel?: string\n /** i18n: aria-label кнопки «предыдущее изображение». */\n prevLabel?: string\n /** i18n: aria-label кнопки «следующее изображение». */\n nextLabel?: string\n /** i18n: aria-label кнопки «увеличить». */\n zoomInLabel?: string\n /** i18n: aria-label кнопки «уменьшить». */\n zoomOutLabel?: string\n /** i18n: aria-label кнопки «сбросить масштаб». */\n resetZoomLabel?: string\n /** i18n: aria-label кнопки «повернуть влево». */\n rotateLeftLabel?: string\n /** i18n: aria-label кнопки «повернуть вправо». */\n rotateRightLabel?: string\n /** i18n: текст в пустом состоянии (нет изображений). */\n emptyText?: string\n }>(),\n {\n initialIndex: 0,\n zoomRate: 1.2,\n minScale: 0.5,\n maxScale: 5,\n hideOnClickModal: false,\n closeOnPressEscape: true,\n showProgress: false,\n showZoomValue: true,\n wheelZoom: true,\n draggable: false,\n zIndex: undefined,\n closeLabel: undefined,\n prevLabel: undefined,\n nextLabel: undefined,\n zoomInLabel: undefined,\n zoomOutLabel: undefined,\n resetZoomLabel: undefined,\n rotateLeftLabel: undefined,\n rotateRightLabel: undefined,\n emptyText: undefined,\n },\n)\n\nconst { t } = useGranularityTranslations()\nconst resolvedCloseLabel = computed(() => props.closeLabel ?? t('gr.imageViewer.close', 'Close image viewer'))\nconst resolvedPrevLabel = computed(() => props.prevLabel ?? t('gr.imageViewer.prev', 'Previous image'))\nconst resolvedNextLabel = computed(() => props.nextLabel ?? t('gr.imageViewer.next', 'Next image'))\nconst resolvedZoomInLabel = computed(() => props.zoomInLabel ?? t('gr.imageViewer.zoomIn', 'Zoom in'))\nconst resolvedZoomOutLabel = computed(() => props.zoomOutLabel ?? t('gr.imageViewer.zoomOut', 'Zoom out'))\nconst resolvedResetZoomLabel = computed(() => props.resetZoomLabel ?? t('gr.imageViewer.resetZoom', 'Reset zoom'))\nconst resolvedRotateLeftLabel = computed(() => props.rotateLeftLabel ?? t('gr.imageViewer.rotateLeft', 'Rotate left'))\nconst resolvedRotateRightLabel = computed(() => props.rotateRightLabel ?? t('gr.imageViewer.rotateRight', 'Rotate right'))\nconst resolvedEmptyText = computed(() => props.emptyText ?? t('gr.imageViewer.empty', 'No image'))\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n (e: 'close'): void\n (e: 'switch', newIndex: number): void\n (e: 'rotate', deg: number): void\n}>()\n\ntype GrImageViewerToolbarActions = {\n close: () => void\n prev: () => void\n next: () => void\n zoomIn: () => void\n zoomOut: () => void\n reset: () => void\n rotateLeft: () => void\n rotateRight: () => void\n}\n\ntype GrImageViewerSlotProps = {\n index: number\n displayIndex: number\n total: number\n scale: number\n rotation: number\n /** Натуральный (исходный) размер картинки, px. 0 пока изображение не загружено. */\n naturalWidth: number\n naturalHeight: number\n /** Фактический размер изображения на экране c учётом scale, px (footprint вдоль осей картинки). */\n renderedWidth: number\n renderedHeight: number\n /** Реальный масштаб относительно натурального размера (доля): renderedWidth / naturalWidth. */\n realScale: number\n /** Реальный масштаб в процентах, отформатированный (например `67`). */\n realScalePercent: string\n actions: GrImageViewerToolbarActions\n}\n\nconst DEFAULT_Z_INDEX = 2000\nconst TRAILING_ZERO_DECIMAL_RE = /\\.0$/\n// Чувствительность масштабирования колесом/трекпадом: чем больше — тем резче реакция.\nconst WHEEL_ZOOM_SENSITIVITY = 0.0015\n// Сколько ms простоя после последнего wheel-события считаем «зум завершён»\n// (после этого возвращаем плавный CSS-переход).\nconst WHEEL_IDLE_MS = 120\n\nconst open = computed(() => props.modelValue)\nconst total = computed(() => props.urlList.length)\nconst hasImages = computed(() => total.value > 0)\n\nconst currentIndex = ref(0)\nconst scale = ref(1)\nconst rotation = ref(0)\nconst offsetX = ref(0)\nconst offsetY = ref(0)\n\nconst imageEl = ref<HTMLImageElement | null>(null)\n\n// Флаг активного зума колесом/трекпадом. Пока true — CSS-переход отключён,\n// чтобы непрерывное масштабирование не «наслаивалось» и не дёргалось.\nconst isWheelZooming = ref(false)\n\n// Накопленный deltaY между кадрами и id запланированного rAF.\nlet pendingWheelDelta = 0\nlet wheelFrameId: number | null = null\nlet wheelIdleTimer: ReturnType<typeof setTimeout> | null = null\n\n// Флаг активного перетаскивания (pan) картинки мышью.\nconst isDragging = ref(false)\n\n// Координаты указателя и offset на момент начала перетаскивания.\nlet dragStartX = 0\nlet dragStartY = 0\nlet dragOffsetStartX = 0\nlet dragOffsetStartY = 0\n\n// Натуральный (исходный) размер картинки, читается из `<img>` при загрузке.\nconst naturalWidth = ref(0)\nconst naturalHeight = ref(0)\n\n// Layout-размер вписанного (`object-contain`) изображения без учёта CSS transform/scale.\nconst fittedWidth = ref(0)\nconst fittedHeight = ref(0)\n\nlet resizeObserver: ResizeObserver | null = null\n\nconst currentUrl = computed(() => {\n if (!hasImages.value) {\n return undefined\n }\n\n return props.urlList[currentIndex.value]\n})\n\nconst displayIndex = computed(() => {\n if (!hasImages.value) {\n return 0\n }\n\n return currentIndex.value + 1\n})\n\nconst viewerStyle = computed(() => ({\n zIndex: String(Number.isFinite(props.zIndex) ? props.zIndex : DEFAULT_Z_INDEX),\n}))\n\nconst imageStyle = computed(() => ({\n transform: `translate3d(${offsetX.value}px, ${offsetY.value}px, 0) scale(${scale.value}) rotate(${rotation.value}deg)`,\n}))\n\n// Плавный CSS-переход transform только для дискретных зумов (кнопки/клавиши).\n// При непрерывном зуме колесом и при перетаскивании переход отключаем —\n// иначе картинка «дёргается»/наслаивается и тянется за курсором с задержкой.\nconst imageTransitionClass = computed(() =>\n isWheelZooming.value || isDragging.value ? '' : 'transition-transform duration-150 ease-out',\n)\n\n// Курсор «рука» при наведении (grab) и при зажатии (grabbing), только если включён drag.\nconst imageCursorClass = computed(() => {\n if (!props.draggable) {\n return ''\n }\n\n return isDragging.value ? 'cursor-grabbing' : 'cursor-grab'\n})\n\nfunction formatPercent(value: number): string {\n if (Number.isInteger(value)) {\n return String(value)\n }\n\n return value.toFixed(1).replace(TRAILING_ZERO_DECIMAL_RE, '')\n}\n\nconst zoomValueText = computed(() => formatPercent(scale.value * 100))\n\n// Фактический размер изображения на экране вдоль его осей (footprint), c учётом scale.\nconst renderedWidth = computed(() => Math.round(fittedWidth.value * scale.value))\nconst renderedHeight = computed(() => Math.round(fittedHeight.value * scale.value))\n\n// Реальный масштаб относительно натурального размера (доля). Не зависит от rotation,\n// так как scale равномерный по осям картинки.\nconst realScale = computed(() => {\n if (!naturalWidth.value) {\n return 0\n }\n\n return (fittedWidth.value * scale.value) / naturalWidth.value\n})\n\nconst realScalePercent = computed(() => formatPercent(realScale.value * 100))\n\nconst toolbarSlotProps = computed<GrImageViewerSlotProps>(() => ({\n index: currentIndex.value,\n displayIndex: displayIndex.value,\n total: total.value,\n scale: scale.value,\n rotation: rotation.value,\n naturalWidth: naturalWidth.value,\n naturalHeight: naturalHeight.value,\n renderedWidth: renderedWidth.value,\n renderedHeight: renderedHeight.value,\n realScale: realScale.value,\n realScalePercent: realScalePercent.value,\n actions: toolbarActions,\n}))\n\nfunction normalizeIndex(value: number): number {\n if (!hasImages.value) {\n return 0\n }\n\n const normalized = Number.isFinite(value) ? Math.trunc(value) : 0\n\n return ((normalized % total.value) + total.value) % total.value\n}\n\nfunction resetTransform(): void {\n scale.value = 1\n rotation.value = 0\n offsetX.value = 0\n offsetY.value = 0\n isDragging.value = false\n}\n\nfunction resetImageMetrics(): void {\n naturalWidth.value = 0\n naturalHeight.value = 0\n fittedWidth.value = 0\n fittedHeight.value = 0\n}\n\nfunction measureFitted(): void {\n const el = imageEl.value\n\n if (!el) {\n return\n }\n\n // offsetWidth/Height — layout-размер вписанного изображения, без учёта CSS transform.\n fittedWidth.value = el.offsetWidth\n fittedHeight.value = el.offsetHeight\n}\n\nfunction onImageLoad(event: Event): void {\n const el = event.target as HTMLImageElement\n\n naturalWidth.value = el.naturalWidth\n naturalHeight.value = el.naturalHeight\n measureFitted()\n}\n\nfunction startObservingImage(): void {\n const el = imageEl.value\n\n if (!el || typeof ResizeObserver === 'undefined') {\n return\n }\n\n if (!resizeObserver) {\n resizeObserver = new ResizeObserver(() => measureFitted())\n }\n\n resizeObserver.observe(el)\n\n // Если картинка уже в кэше и `load` не сработал — считаем метрики сразу.\n if (el.complete && el.naturalWidth) {\n naturalWidth.value = el.naturalWidth\n naturalHeight.value = el.naturalHeight\n }\n\n measureFitted()\n}\n\nfunction stopObservingImage(): void {\n resizeObserver?.disconnect()\n}\n\nfunction setIndex(nextIndex: number, options?: { emitSwitch?: boolean }): void {\n const normalizedIndex = normalizeIndex(nextIndex)\n\n if (normalizedIndex === currentIndex.value) {\n return\n }\n\n currentIndex.value = normalizedIndex\n resetTransform()\n resetImageMetrics()\n endWheelZoom()\n\n if (options?.emitSwitch !== false) {\n emit('switch', normalizedIndex)\n }\n}\n\nfunction syncIndexFromInitial(): void {\n if (!hasImages.value) {\n currentIndex.value = 0\n return\n }\n\n currentIndex.value = normalizeIndex(props.initialIndex)\n resetTransform()\n resetImageMetrics()\n endWheelZoom()\n}\n\nfunction preloadAt(index: number): void {\n const url = props.urlList[index]\n\n if (!url) {\n return\n }\n\n const image = new Image()\n image.decoding = 'async'\n image.src = url\n}\n\nfunction closeViewer(): void {\n emit('update:modelValue', false)\n emit('close')\n}\n\nfunction prev(): void {\n setIndex(currentIndex.value - 1)\n}\n\nfunction next(): void {\n setIndex(currentIndex.value + 1)\n}\n\nfunction setScale(value: number): void {\n const clamped = Math.min(props.maxScale, Math.max(props.minScale, value))\n\n scale.value = Number(clamped.toFixed(4))\n}\n\nfunction zoomIn(): void {\n setScale(scale.value * props.zoomRate)\n}\n\nfunction zoomOut(): void {\n setScale(scale.value / props.zoomRate)\n}\n\nfunction cancelWheelFrame(): void {\n if (wheelFrameId !== null) {\n cancelAnimationFrame(wheelFrameId)\n wheelFrameId = null\n }\n}\n\nfunction endWheelZoom(): void {\n if (wheelIdleTimer !== null) {\n clearTimeout(wheelIdleTimer)\n wheelIdleTimer = null\n }\n\n isWheelZooming.value = false\n pendingWheelDelta = 0\n cancelWheelFrame()\n}\n\n// Применяем накопленный за кадр deltaY одним обновлением scale — так рендер\n// происходит не чаще одного раза в кадр (без «дёрганья» от частых обновлений).\nfunction flushWheelZoom(): void {\n wheelFrameId = null\n\n const delta = pendingWheelDelta\n pendingWheelDelta = 0\n\n if (!delta) {\n return\n }\n\n // Экспоненциальный шаг — плавно и одинаково ощущается и для колеса, и для трекпада.\n // delta < 0 (от себя / scroll up) — приближение, delta > 0 — отдаление.\n const factor = Math.exp(-delta * WHEEL_ZOOM_SENSITIVITY)\n\n setScale(scale.value * factor)\n}\n\nfunction onWheel(event: WheelEvent): void {\n if (!props.wheelZoom || !hasImages.value) {\n return\n }\n\n // Не даём странице/оверлею проскроллиться — колесо отдаём под зум.\n event.preventDefault()\n\n // Во время непрерывного зума отключаем CSS-переход: плавность даёт само\n // покадровое обновление, а transition на каждом микрошаге вызывает лаг/наслоение.\n isWheelZooming.value = true\n\n pendingWheelDelta += event.deltaY\n\n if (wheelFrameId === null) {\n wheelFrameId = requestAnimationFrame(flushWheelZoom)\n }\n\n if (wheelIdleTimer !== null) {\n clearTimeout(wheelIdleTimer)\n }\n\n // По завершении жеста возвращаем плавный переход для последующих дискретных зумов.\n wheelIdleTimer = setTimeout(() => {\n wheelIdleTimer = null\n isWheelZooming.value = false\n }, WHEEL_IDLE_MS)\n}\n\nfunction onPointerDown(event: PointerEvent): void {\n // Тянем только основной кнопкой и только если drag включён и есть картинка.\n if (!props.draggable || !hasImages.value || event.button !== 0) {\n return\n }\n\n event.preventDefault()\n\n isDragging.value = true\n dragStartX = event.clientX\n dragStartY = event.clientY\n dragOffsetStartX = offsetX.value\n dragOffsetStartY = offsetY.value\n\n // Захватываем указатель, чтобы движение/отпускание ловились даже за пределами картинки.\n ;(event.currentTarget as Element).setPointerCapture?.(event.pointerId)\n}\n\nfunction onPointerMove(event: PointerEvent): void {\n if (!isDragging.value) {\n return\n }\n\n offsetX.value = dragOffsetStartX + (event.clientX - dragStartX)\n offsetY.value = dragOffsetStartY + (event.clientY - dragStartY)\n}\n\nfunction onPointerUp(event: PointerEvent): void {\n if (!isDragging.value) {\n return\n }\n\n isDragging.value = false\n ;(event.currentTarget as Element).releasePointerCapture?.(event.pointerId)\n}\n\nfunction rotateLeft(): void {\n rotation.value -= 90\n emit('rotate', rotation.value)\n}\n\nfunction rotateRight(): void {\n rotation.value += 90\n emit('rotate', rotation.value)\n}\n\nconst toolbarActions: GrImageViewerToolbarActions = {\n close: closeViewer,\n prev,\n next,\n zoomIn,\n zoomOut,\n reset: resetTransform,\n rotateLeft,\n rotateRight,\n}\n\nfunction onBackdropClick(): void {\n if (!props.hideOnClickModal) {\n return\n }\n\n closeViewer()\n}\n\nfunction onKeydown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'Escape':\n if (!props.closeOnPressEscape) {\n return\n }\n\n event.preventDefault()\n closeViewer()\n return\n\n case 'ArrowLeft':\n event.preventDefault()\n prev()\n return\n\n case 'ArrowRight':\n event.preventDefault()\n next()\n return\n\n case '+':\n case '=':\n case 'Add':\n event.preventDefault()\n zoomIn()\n return\n\n case '-':\n case '_':\n case 'Subtract':\n event.preventDefault()\n zoomOut()\n return\n\n case '0':\n event.preventDefault()\n resetTransform()\n break\n\n default:\n }\n}\n\nwatch(\n () => props.modelValue,\n async (isOpen) => {\n if (!isOpen) {\n stopObservingImage()\n endWheelZoom()\n isDragging.value = false\n return\n }\n\n syncIndexFromInitial()\n await nextTick()\n startObservingImage()\n },\n { immediate: true },\n)\n\nwatch(\n () => props.initialIndex,\n () => {\n if (!props.modelValue) {\n return\n }\n\n syncIndexFromInitial()\n },\n)\n\nwatch(\n () => props.urlList,\n () => {\n if (!props.modelValue) {\n return\n }\n\n syncIndexFromInitial()\n },\n { deep: true },\n)\n\nwatch(\n currentIndex,\n (index) => {\n if (!hasImages.value || total.value < 2) {\n return\n }\n\n preloadAt(normalizeIndex(index - 1))\n preloadAt(normalizeIndex(index + 1))\n },\n { immediate: true },\n)\n\nonBeforeUnmount(() => {\n stopObservingImage()\n endWheelZoom()\n})\n</script>\n\n<template>\n <teleport to=\"body\">\n <TransitionRoot :show=\"open\" as=\"template\">\n <Dialog\n as=\"div\"\n class=\"fixed inset-0\"\n :style=\"viewerStyle\"\n role=\"dialog\"\n aria-modal=\"true\"\n :static=\"true\"\n @keydown=\"onKeydown\"\n >\n <div class=\"fixed inset-0 overflow-hidden\">\n <TransitionChild\n as=\"template\"\n enter=\"duration-150 ease-out\"\n enter-from=\"opacity-0\"\n enter-to=\"opacity-100\"\n leave=\"duration-120 ease-in\"\n leave-from=\"opacity-100\"\n leave-to=\"opacity-0\"\n >\n <div\n data-gr-image-viewer-overlay\n class=\"absolute inset-0 bg-black/60 backdrop-blur-sm\"\n aria-hidden=\"true\"\n @click=\"onBackdropClick\"\n />\n </TransitionChild>\n\n <TransitionChild\n as=\"template\"\n enter=\"duration-180 ease-out\"\n enter-from=\"opacity-0 scale-98\"\n enter-to=\"opacity-100 scale-100\"\n leave=\"duration-130 ease-in\"\n leave-from=\"opacity-100 scale-100\"\n leave-to=\"opacity-0 scale-98\"\n >\n <DialogPanel\n data-gr-image-viewer-panel\n class=\"relative z-10 h-full w-full outline-none\"\n tabindex=\"-1\"\n >\n <div class=\"pointer-events-none absolute inset-x-0 top-0 z-30 px-3 py-3 sm:px-6\">\n <div class=\"pointer-events-auto flex items-center justify-between gap-3\">\n <div class=\"flex items-center gap-2\">\n <div\n v-if=\"showProgress\"\n data-gr-image-viewer-progress\n class=\"rounded-full bg-black/35 px-3 py-1 text-xs font-600 text-white/95 sm:text-sm\"\n >\n {{ displayIndex }} / {{ total }}\n </div>\n\n <div\n v-if=\"showZoomValue\"\n data-gr-image-viewer-zoom-value\n class=\"rounded-full bg-black/35 px-3 py-1 text-xs font-700 text-white/95 sm:text-sm\"\n >\n {{ zoomValueText }}%\n </div>\n </div>\n\n <button\n type=\"button\"\n data-gr-image-viewer-close\n :aria-label=\"resolvedCloseLabel\"\n class=\"h-11 w-11 flex items-center justify-center rounded-full border border-white/20 bg-black/35 text-white transition-colors hover:bg-black/55 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/80\"\n @click=\"closeViewer\"\n >\n <span aria-hidden=\"true\" class=\"text-lg leading-none\">✕</span>\n </button>\n </div>\n </div>\n\n <div\n class=\"relative z-10 h-full w-full flex items-center justify-center px-16 py-16 sm:px-24 sm:py-20\"\n @wheel=\"onWheel\"\n >\n <button\n v-if=\"total > 1\"\n type=\"button\"\n data-gr-image-viewer-prev\n :aria-label=\"resolvedPrevLabel\"\n class=\"absolute left-3 top-1/2 z-20 h-12 w-12 -translate-y-1/2 flex items-center justify-center rounded-full border border-white/20 bg-black/35 text-white transition-colors hover:bg-black/55 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/80 sm:left-6\"\n @click=\"prev\"\n >\n <span aria-hidden=\"true\" class=\"text-xl leading-none\">‹</span>\n </button>\n\n <button\n v-if=\"total > 1\"\n type=\"button\"\n data-gr-image-viewer-next\n :aria-label=\"resolvedNextLabel\"\n class=\"absolute right-3 top-1/2 z-20 h-12 w-12 -translate-y-1/2 flex items-center justify-center rounded-full border border-white/20 bg-black/35 text-white transition-colors hover:bg-black/55 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/80 sm:right-6\"\n @click=\"next\"\n >\n <span aria-hidden=\"true\" class=\"text-xl leading-none\">›</span>\n </button>\n\n <div class=\"h-full w-full flex items-center justify-center\">\n <img\n v-if=\"currentUrl\"\n ref=\"imageEl\"\n data-gr-image-viewer-image\n :src=\"currentUrl\"\n alt=\"\"\n draggable=\"false\"\n class=\"max-h-full max-w-full select-none object-contain will-change-transform\"\n :class=\"[imageTransitionClass, imageCursorClass]\"\n :style=\"imageStyle\"\n @load=\"onImageLoad\"\n @pointerdown=\"onPointerDown\"\n @pointermove=\"onPointerMove\"\n @pointerup=\"onPointerUp\"\n @pointercancel=\"onPointerUp\"\n >\n\n <div\n v-else\n class=\"rounded-[var(--gr-radius-xl)] border border-white/20 bg-black/25 px-4 py-3 text-sm text-white/80\"\n >\n {{ resolvedEmptyText }}\n </div>\n </div>\n </div>\n\n <div class=\"pointer-events-none absolute inset-x-0 bottom-0 z-30 px-3 pb-3 sm:px-6 sm:pb-6\">\n <div class=\"pointer-events-auto mx-auto w-full max-w-max\">\n <slot\n name=\"toolbar\"\n v-bind=\"toolbarSlotProps\"\n >\n <div class=\"rounded-full border border-white/20 bg-black/35 p-1 backdrop-blur-sm flex items-center gap-1\">\n <button\n type=\"button\"\n data-gr-image-viewer-zoom-out\n :aria-label=\"resolvedZoomOutLabel\"\n class=\"h-11 min-w-11 px-2 flex items-center justify-center rounded-full text-sm font-600 text-white transition-colors hover:bg-white/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/80\"\n @click=\"zoomOut\"\n >\n −\n </button>\n\n <button\n type=\"button\"\n data-gr-image-viewer-zoom-reset\n :aria-label=\"resolvedResetZoomLabel\"\n class=\"h-11 min-w-11 px-3 flex items-center justify-center rounded-full text-xs font-700 text-white transition-colors hover:bg-white/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/80\"\n @click=\"resetTransform\"\n >\n 100%\n </button>\n\n <button\n type=\"button\"\n data-gr-image-viewer-zoom-in\n :aria-label=\"resolvedZoomInLabel\"\n class=\"h-11 min-w-11 px-2 flex items-center justify-center rounded-full text-sm font-600 text-white transition-colors hover:bg-white/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/80\"\n @click=\"zoomIn\"\n >\n +\n </button>\n\n <template v-if=\"$slots['toolbar-actions']\">\n <div class=\"mx-1 h-6 w-px bg-white/25\" aria-hidden=\"true\" />\n\n <slot\n name=\"toolbar-actions\"\n v-bind=\"toolbarSlotProps\"\n />\n\n <div class=\"mx-1 h-6 w-px bg-white/25\" aria-hidden=\"true\" />\n </template>\n\n <div v-else class=\"mx-1 h-6 w-px bg-white/25\" aria-hidden=\"true\" />\n\n <button\n type=\"button\"\n data-gr-image-viewer-rotate-left\n :aria-label=\"resolvedRotateLeftLabel\"\n class=\"h-11 min-w-11 px-2 flex items-center justify-center rounded-full text-sm font-600 text-white transition-colors hover:bg-white/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/80\"\n @click=\"rotateLeft\"\n >\n ↺\n </button>\n\n <button\n type=\"button\"\n data-gr-image-viewer-rotate-right\n :aria-label=\"resolvedRotateRightLabel\"\n class=\"h-11 min-w-11 px-2 flex items-center justify-center rounded-full text-sm font-600 text-white transition-colors hover:bg-white/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/80\"\n @click=\"rotateRight\"\n >\n ↻\n </button>\n </div>\n </slot>\n </div>\n </div>\n </DialogPanel>\n </TransitionChild>\n </div>\n </Dialog>\n </TransitionRoot>\n </teleport>\n</template>"],"mappings":"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"}