@topvisor/ui 1.5.9 → 1.5.10-colorTableAi.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 (151) hide show
  1. package/.chunks/api-nVBtzTDk.es.amd.js +2 -0
  2. package/.chunks/api-nVBtzTDk.es.amd.js.map +1 -0
  3. package/.chunks/{api-lAoAK33f.es.js → api-nVBtzTDk.es.js} +101 -51
  4. package/.chunks/api-nVBtzTDk.es.js.map +1 -0
  5. package/.chunks/app-2jFVHyen.es.amd.js +2 -0
  6. package/.chunks/app-2jFVHyen.es.amd.js.map +1 -0
  7. package/.chunks/{app-CY6euLQJ.es.js → app-2jFVHyen.es.js} +26 -25
  8. package/.chunks/{app-CY6euLQJ.es.js.map → app-2jFVHyen.es.js.map} +1 -1
  9. package/.chunks/{datepicker-CeUbso62.es.amd.js → datepicker-CpnGeB5y.es.amd.js} +2 -2
  10. package/.chunks/{datepicker-CeUbso62.es.amd.js.map → datepicker-CpnGeB5y.es.amd.js.map} +1 -1
  11. package/.chunks/{datepicker-CeUbso62.es.js → datepicker-CpnGeB5y.es.js} +2 -2
  12. package/.chunks/{datepicker-CeUbso62.es.js.map → datepicker-CpnGeB5y.es.js.map} +1 -1
  13. package/.chunks/{dialog-Cnx_s8X1.es.amd.js → dialog-BKJg54Dh.es.amd.js} +2 -2
  14. package/.chunks/{dialog-Cnx_s8X1.es.amd.js.map → dialog-BKJg54Dh.es.amd.js.map} +1 -1
  15. package/.chunks/{dialog-Cnx_s8X1.es.js → dialog-BKJg54Dh.es.js} +3 -3
  16. package/.chunks/{dialog-Cnx_s8X1.es.js.map → dialog-BKJg54Dh.es.js.map} +1 -1
  17. package/.chunks/{dialog_regionSelectorRegions-BCEJBT1H.es.amd.js → dialog_regionSelectorRegions-Dq81iORJ.es.amd.js} +2 -2
  18. package/.chunks/{dialog_regionSelectorRegions-BCEJBT1H.es.amd.js.map → dialog_regionSelectorRegions-Dq81iORJ.es.amd.js.map} +1 -1
  19. package/.chunks/{dialog_regionSelectorRegions-BCEJBT1H.es.js → dialog_regionSelectorRegions-Dq81iORJ.es.js} +4 -4
  20. package/.chunks/{dialog_regionSelectorRegions-BCEJBT1H.es.js.map → dialog_regionSelectorRegions-Dq81iORJ.es.js.map} +1 -1
  21. package/.chunks/forms-CjJD60m3.es.amd.js +2 -0
  22. package/.chunks/forms-CjJD60m3.es.amd.js.map +1 -0
  23. package/.chunks/{forms-Ch1q0UUt.es.js → forms-CjJD60m3.es.js} +601 -638
  24. package/.chunks/forms-CjJD60m3.es.js.map +1 -0
  25. package/.chunks/formsExt-B9hGGznb.es.amd.js +2 -0
  26. package/.chunks/formsExt-B9hGGznb.es.amd.js.map +1 -0
  27. package/.chunks/{formsExt-DtFeVRvE.es.js → formsExt-B9hGGznb.es.js} +110 -111
  28. package/.chunks/{formsExt-DtFeVRvE.es.js.map → formsExt-B9hGGznb.es.js.map} +1 -1
  29. package/.chunks/lazy-DQU-hLos.es.js.map +1 -1
  30. package/.chunks/mocker-h3ROH-VB.es.js.map +1 -1
  31. package/.chunks/{notice-40E7zRe5.es.amd.js → notice-BSVUBQ4B.es.amd.js} +2 -2
  32. package/.chunks/{notice-40E7zRe5.es.amd.js.map → notice-BSVUBQ4B.es.amd.js.map} +1 -1
  33. package/.chunks/{notice-40E7zRe5.es.js → notice-BSVUBQ4B.es.js} +2 -2
  34. package/.chunks/{notice-40E7zRe5.es.js.map → notice-BSVUBQ4B.es.js.map} +1 -1
  35. package/.chunks/popup-BoCCkzOM.es.amd.js +2 -0
  36. package/.chunks/popup-BoCCkzOM.es.amd.js.map +1 -0
  37. package/.chunks/{popup-l46cef9d.es.js → popup-BoCCkzOM.es.js} +26 -25
  38. package/.chunks/{popup-l46cef9d.es.js.map → popup-BoCCkzOM.es.js.map} +1 -1
  39. package/.chunks/{popup-DA17NrM5.es.amd.js → popup-q1PRZblX.es.amd.js} +2 -2
  40. package/.chunks/{popup-DA17NrM5.es.amd.js.map → popup-q1PRZblX.es.amd.js.map} +1 -1
  41. package/.chunks/{popup-DA17NrM5.es.js → popup-q1PRZblX.es.js} +3 -3
  42. package/.chunks/{popup-DA17NrM5.es.js.map → popup-q1PRZblX.es.js.map} +1 -1
  43. package/.chunks/{utils-C0Y5ido8.es.amd.js → utils-BudW09A0.es.amd.js} +2 -2
  44. package/.chunks/{utils-C0Y5ido8.es.amd.js.map → utils-BudW09A0.es.amd.js.map} +1 -1
  45. package/.chunks/{utils-C0Y5ido8.es.js → utils-BudW09A0.es.js} +4 -4
  46. package/.chunks/{utils-C0Y5ido8.es.js.map → utils-BudW09A0.es.js.map} +1 -1
  47. package/.chunks/utils-Dy_MqCAH.es.amd.js +2 -0
  48. package/.chunks/utils-Dy_MqCAH.es.amd.js.map +1 -0
  49. package/.chunks/{utils-hK-QjvqM.es.js → utils-Dy_MqCAH.es.js} +3 -3
  50. package/.chunks/{utils-hK-QjvqM.es.js.map → utils-Dy_MqCAH.es.js.map} +1 -1
  51. package/.chunks/worker-F-Y1IEi2.es.amd.js +2 -0
  52. package/.chunks/worker-F-Y1IEi2.es.amd.js.map +1 -0
  53. package/.chunks/{worker-D-5BEVm7.es.js → worker-F-Y1IEi2.es.js} +4 -3
  54. package/.chunks/{worker-D-5BEVm7.es.js.map → worker-F-Y1IEi2.es.js.map} +1 -1
  55. package/api/additional.amd.js +1 -1
  56. package/api/additional.amd.js.map +1 -1
  57. package/api/additional.js +1 -1
  58. package/api/index.amd.js +1 -1
  59. package/api/index.amd.js.map +1 -1
  60. package/api/index.js +2 -3
  61. package/assets/themes/dark-th.css +1 -1
  62. package/assets/themes/dark.css +1 -1
  63. package/assets/themes/light.css +1 -1
  64. package/autoload-css-manifest.amd.json +4 -4
  65. package/autoload-css-manifest.json +4 -4
  66. package/charts/charts.amd.js +1 -1
  67. package/charts/charts.amd.js.map +1 -1
  68. package/charts/charts.js +1 -1
  69. package/charts/charts.js.map +1 -1
  70. package/core/app.amd.js +1 -1
  71. package/core/app.amd.js.map +1 -1
  72. package/core/app.js +3 -3
  73. package/dialog/dialog.amd.js +1 -1
  74. package/dialog/dialog.amd.js.map +1 -1
  75. package/dialog/dialog.js +2 -2
  76. package/extra/extra.amd.js +1 -1
  77. package/extra/extra.amd.js.map +1 -1
  78. package/extra/extra.js +2 -0
  79. package/extra/extra.js.map +1 -1
  80. package/forms/forms.amd.js +1 -1
  81. package/forms/forms.amd.js.map +1 -1
  82. package/forms/forms.js +1 -1
  83. package/formsExt/formsExt.amd.js +1 -1
  84. package/formsExt/formsExt.amd.js.map +1 -1
  85. package/formsExt/formsExt.js +1 -1
  86. package/layout/layout.amd.js +1 -1
  87. package/layout/layout.amd.js.map +1 -1
  88. package/layout/layout.js +1 -1
  89. package/package.json +1 -1
  90. package/popup/popup.amd.js +1 -1
  91. package/popup/popup.amd.js.map +1 -1
  92. package/popup/popup.js +1 -1
  93. package/popup/worker.amd.js +1 -1
  94. package/popup/worker.amd.js.map +1 -1
  95. package/popup/worker.js +1 -1
  96. package/project/project.amd.js +1 -1
  97. package/project/project.amd.js.map +1 -1
  98. package/project/project.js +245 -246
  99. package/project/project.js.map +1 -1
  100. package/schedule/schedule.amd.js +1 -1
  101. package/schedule/schedule.amd.js.map +1 -1
  102. package/schedule/schedule.js +2 -2
  103. package/schedule/schedule.js.map +1 -1
  104. package/tabsView/tabsView.amd.js +1 -1
  105. package/tabsView/tabsView.amd.js.map +1 -1
  106. package/tabsView/tabsView.js +2 -2
  107. package/tabsView/tabsView.js.map +1 -1
  108. package/utils/clipboard.amd.js +1 -1
  109. package/utils/clipboard.amd.js.map +1 -1
  110. package/utils/clipboard.js +1 -1
  111. package/utils/date.amd.js +1 -1
  112. package/utils/date.amd.js.map +1 -1
  113. package/utils/date.js +1 -1
  114. package/utils/device.amd.js +1 -1
  115. package/utils/device.amd.js.map +1 -1
  116. package/utils/device.js +1 -1
  117. package/utils/dom.amd.js.map +1 -1
  118. package/utils/dom.js.map +1 -1
  119. package/utils/lodash.amd.js +1 -1
  120. package/utils/lodash.amd.js.map +1 -1
  121. package/utils/lodash.js +1 -1
  122. package/utils/price.amd.js +1 -1
  123. package/utils/price.amd.js.map +1 -1
  124. package/utils/price.js +1 -1
  125. package/utils/scroll.js.map +1 -1
  126. package/utils/string.amd.js +1 -1
  127. package/utils/string.amd.js.map +1 -1
  128. package/utils/string.js +1 -1
  129. package/utils/string.js.map +1 -1
  130. package/utils/system.amd.js.map +1 -1
  131. package/utils/system.js.map +1 -1
  132. package/.chunks/api-lAoAK33f.es.amd.js +0 -2
  133. package/.chunks/api-lAoAK33f.es.amd.js.map +0 -1
  134. package/.chunks/api-lAoAK33f.es.js.map +0 -1
  135. package/.chunks/app-CY6euLQJ.es.amd.js +0 -2
  136. package/.chunks/app-CY6euLQJ.es.amd.js.map +0 -1
  137. package/.chunks/field-DEusYVqS.es.amd.js +0 -2
  138. package/.chunks/field-DEusYVqS.es.amd.js.map +0 -1
  139. package/.chunks/field-DEusYVqS.es.js +0 -16
  140. package/.chunks/field-DEusYVqS.es.js.map +0 -1
  141. package/.chunks/forms-Ch1q0UUt.es.amd.js +0 -2
  142. package/.chunks/forms-Ch1q0UUt.es.amd.js.map +0 -1
  143. package/.chunks/forms-Ch1q0UUt.es.js.map +0 -1
  144. package/.chunks/formsExt-DtFeVRvE.es.amd.js +0 -2
  145. package/.chunks/formsExt-DtFeVRvE.es.amd.js.map +0 -1
  146. package/.chunks/popup-l46cef9d.es.amd.js +0 -2
  147. package/.chunks/popup-l46cef9d.es.amd.js.map +0 -1
  148. package/.chunks/utils-hK-QjvqM.es.amd.js +0 -2
  149. package/.chunks/utils-hK-QjvqM.es.amd.js.map +0 -1
  150. package/.chunks/worker-D-5BEVm7.es.amd.js +0 -2
  151. package/.chunks/worker-D-5BEVm7.es.amd.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":[".chunks/popup-l46cef9d.es.js","../../src/components/component.ts","../../src/components/popup/lib/popup.globalEvents.ts","../../src/components/popup/lib/popup.ts"],"names":["mod","\"default\"","vue","exports","dom_js_1","a","forms_Ch1q0UUt_es_js_1","o","worker_D_5BEVm7_es_js_1","i","s","e","t"],"mappings":"AAAA,IAAI,gBAAmB,MAAQ,KAAK,iBAAoB,SAAU,EAAK,CACnE,OAAQA,GAAOA,EAAI,WAAcA,EAAM,CAAEC,QAAWD,CAAI,CAC5D,EACA,OAAO,CAAC,UAAW,UAAW,0BAA0B,mBAAmB,0BAAyB,EAAG,SAAU,EAAS,EAAS,EAAwB,EAAU,EAAyB,CCExL,aAAA,GAAAE,IAAA,OAAA,IAAAA,EAAA,OAAA,IDAF,OAAO,eAAeC,EAAS,aAAc,CAAE,MAAO,EAAK,CAAC,ECI/D,EAAA,YAAA,IAAA,GDFG,EAAW,gBAAgBC,CAAQ,ECerC,IAAKC,EACJ,MAAM,CAAgB,CAGjB,aAAsB,EAK3B,EAFAC,EAEO,EAAA,CAAA,KAAA,gBAAA,IAAA,EAAA,GAAA,EAAAA,EAAA,EAAA,CAAA,KAAA,YAAA,IAAA,EAAA,GAAA,EAAAA,EAAA,EAAA,CAAA,KAAA,MAAA,IAAA,EAAA,GAAA,EAAAA,EAAA,EAAA,CAAA,KAAA,KAAA,IAAA,EAAA,GAAA,EAAAA,EAAA,EAAA,CAAA,KAAA,UAAA,CAAA,CAAA,GAAA,EAAAA,EAAA,EAAA,CAAA,KAAA,aAAA,CAAA,CAAA,GAAA,EAAAA,EAAA,EAAA,CAAA,KAAA,gBAAA,CAAA,CAAA,CAGH,CAUN,KAAA,EAAA,EAAA,EAAA,CAGO,GAAA,CAAA,EACK,MAAY,EAAA,oBACxB,IAAA,EAAA,EAAA,aAAA,EAAA,CAAA,EAGA,GAAc,EACG,OAAM,EAAA,OAAK,CAAA,EAAA,EAC5B,KAAA,cAAA,EAAA,KAAA,UAAA,MAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,UAAA,CAAA,EAAA,KAAA,IAAA,KAAA,eAAA,KAAA,OAAA,EAAA,GAAA,CAAA,QAAA,IAAA,EAAA,EAAA,KAAA,cAAA,CAAA,EAAA,KAAA,GAAA,EAAA,KAAA,GAAA,UAAA,IAAA,KAAA,SAAA,EAAA,KAAA,QAAA,OAAA,OAAA,KAAA,QAAA,CAAA,EAAA,KAAA,MAAA,CAGA,CACO,OAAA,aAAA,EAAA,EAAA,CACP,OAAAF,EAAA,QAAA,QAAA,EAAA,IAAA,CAAA,CAGA,CACK,cAAiB,EAAA,CAGVA,EAAA,QAAA,QAAA,EAAA,IAAA,KAAA,cAAA,IAAA,CAGX,CAGc,OAAA,CAGT,KAAA,4CAAiB,KAAA,aACvB,CAGA,SAAA,CACMA,EAAW,QAAO,QAAA,KAAA,GAAA,IAAA,KAAA,cAAA,IAAA,EAAA,KAAA,WAAA,QAAA,GAAA,CACxB,EAAA,OAAA,CAGA,CAAA,EAAA,KAAA,WAEC,CACA,EACA,KACO,cAAA,QAAA,GAAA,CACJ,EAAA,GAAiB,oBAEf,EAAA,KAAA,EAAA,SAAwB,EAAI,OAAuB,CACzD,CAAA,EAAA,KAAA,cAAA,CAAA,CAGA,CAMO,qBAAY,EAAA,CACb,KAAA,WAAA,KAAA,CAAA,CACE,CACI,4BAAA,EAAA,EAAA,EAAA,EAAA,CACD,EAAA,iBAAA,EAAA,EAAA,CAAA,EAAA,KAAA,wBAAA,EAAA,EAAA,EAAA,CAAA,CACV,CAEK,wBAA4B,EAAA,EAAA,EAAA,EAAA,CAClC,IAAA,EAAA,CAG+B,GAAA,EACxB,KAAA,EACP,SAAA,EAGc,QAAqC,CAC9C,EAEG,KAAA,cAAA,KAAA,CAAA,CACA,CACH,OAAA,EAAA,CACJ,KAAA,6CAAA,KAAA,aACD,CAED,OAAA,OAAA,EAAA,CAxHQ,GAAA,aAAgB,SDkDR,EAAE,QAAS,GAAM,EAAE,eAAe,YAAY,CAAC,CAAC,MAC/C,CEjDE,IAAA,EAAA,EASE,EAAA,eAAA,YAAA,CAAA,CACV,CAOV,CAOA,GACO,EAAEE,EAAkB,EAAA,CAAAD,EAAA,gBAGD,KAAqB,EAgBzC,IAAAE,EACE,KAAA,CASN,OAAA,MAAA,CACD,KAAA,WAAA,KAAA,SAAA,CAAA,EAAA,SAAA,iBAAA,QAAA,KAAA,eAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,SAAA,iBAAA,QAAA,KAAA,OAAA,EAAA,SAAA,iBAAA,UAAA,KAAA,SAAA,EAGI,CACG,OAAY,eAAA,EAAA,CAEL,GAAS,EAAI,kBAExB,aAAgB,EAAA,OAAA,QAAA,oBAAA,EAAA,CAElB,GAAA,EAAA,OAAA,QAAA,kBAAA,EAAA,CACD,IAAA,EAAA,EAAA,OAAA,QAAA,IAAA,EAAA,EAAA,EAAA,OAAA,QAAA,OAAA,EAXA,GAAA,EAAA,cAAA,6BAAA,CAAA,EAAA,UAAA,OAAA,YAAA,EAAA,GAAA,EAAA,UAAA,IAAA,YAAA,EAAA,EAAA,gBAAA,EAYD,MAOuB,CACd,GAAA,EAAA,OAAkB,QAAA,oBAAc,EAAA,CAGd,IAAA,EAAqB,EAAA,OACjCC,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,EAAA,EAAA,gBAAA,EAEY,MAQZ,CAKA,CAMd,CACD,OAAA,QAAA,EAAA,CAKe,GAAA,EAAU,EAAA,kBAAwB,aACxC,OAEQ,IAAA,EAAO,EAAA,OAAqB,QAAA,6BAAoB,EAGrD,GAAO,EAAA,CAQG,IAAA,EAAA,EAA2B,OAAA,QAAA,oBAAsB,EAE5D,GAAV,CAAA,GAAA,EAAA,QAAA,qBAAA,EACM,OACkB,EAAI,aAAA,MAAA,IAAA,KAAA,EAAA,eAAA,EAAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAE1B,CAEI,CAEA,OAAO,UAAA,EAAA,CACF,GAAA,EAAA,EAAA,kBAA8B,aAKpB,OACd,IAAA,EAAA,EAAiB,OAAA,QAAa,oBAAA,EAC3B,GAAM,IAAAA,EAAA,EAAA,mBAAA,EAAA,MAAA,CAAA,EAAA,SAAA,KAAA,CAAA,EAEZ,OACD,IAAA,EAAA,EAAA,cAAA,sBAAA,EAGI,OAAsB,EAAA,IAAtB,CACwC,IAAA,SAK5CA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,EACD,MAImB,IAAA,QAAA,CACE,GAAa,CAAA,EAAA,CAQX,GAA2BJ,EAAA,QAAA,qBAAkB,EAAA,YAAA,EAC9C,MAItB,IAAA,EAAAA,EAAA,QAAA,qBAAA,EAAA,wDAAA,EACD,GAAA,aAAA,YAAA,CAGK,EAAA,MAAA,EACA,KACA,CACa,IAAA,EAAAA,EAAA,QAAA,yBAAA,EAAA,qCAAA,EAEhB,IAAAA,EAAA,QAAA,yBAAA,EAAA,+BAAA,EAAA,aAAA,aAAA,EAAA,MAAA,EAGa,KACa,CAOd,IAAuBK,EAAAL,EAAY,QAC9C,qBAAA,EAAA,mBAAA,EAGCK,GAAAA,EAAA,aAAe,MAAA,IAAA,EAAA,eAAA,EAAA,SAAA,KAAAA,EAAA,aAAA,MAAA,GAGW,IAAA,EAA2B,EAAA,cAAA,kBAAA,EAG1C,aAAA,aAA8B,EAAA,MAAA,EAMf,KACxB,CAGL,IAAA,UAEyB,IAAA,aAIxB,IAAA,YAGW,IAAA,YAAA,CAEU,GAAA,CAAA,EAmBR,MAKL,GAAU,EAGf,MAAkB,cAId,EAAA,MAAA,YAKR,IAAAL,EAAA,QAAA,qBAAA,EAAA,8FAAA,EACD,EAAA,eAAA,OACD,GAAA,EAAA,OAAA,UAAA,QACD,KAAA,MCrOiG,EAAU,eAAA,EAmEvD,IAAAC,EAAA,EAAA,cAAA,wEAAA,CAAA,EAAA,cAzDpD,GAAA,EAAA,MAAA,cACAA,EAAA,CAuBM,IAAA,EAAAA,EAAA,cAAA,mCAAA,EACC,GAAA,aAAA,YAEI,OACX,EAAA,MAAA,CAIQ,CACJ,IAAA,EAAAD,EAAA,QAAA,wBAAA,EAAA,0DAAA,EAAA,EAAA,EAAA,OACI,GAAA,CAAA,EAEA,OAEA,IAAA,EAAA,GACQ,GAAAC,IAAA,EAAA,EAAA,QAAAA,CAAA,GAAA,EAAA,MAAA,WAAA,EAAA,MAAA,YAAA,IAAA,IAAA,EAAA,MAAA,aAAA,GAAA,GACN,OAAA,EAAA,OAAA,QAAA,OAAA,EAAA,IAAA,GAAAG,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,EACI,GAAA,EAAA,MAAA,cAAA,IAAA,EAEA,OAEb,EAAoB,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,EAAA,iBAAA,yCAAA,CAAA,CAAA,QAAA,GAAA,EAAA,UAAA,OAAA,YAAA,CAAA,EAAA,EAAA,EAAA,CAAA,cAAA,yBAAA,CAAA,EAAA,UAAA,IAAA,YAAA,EAAAA,EAAA,EAAA,eAAA,CAAA,EAEN,KAGf,CAWA,CAEM,CACL,GACA,EAAMF,EAAoC,EAAA,CAAAC,EAAA,WAAA,CAAA,CAAA,EAAAD,EAAA,EAAA,kBAAA,gkPAAA,EAAAA,EAAA,EAAA,kBAAA,63DAAA,GAAA,EAAAA,EAAA,EAAA,kBAAA,glHAAA,IAAA,EAqB1C,IAnBII,EAAK,MAAGH,UAAQF,CAAA,CAoBb,YAAkB,EAAA,EAAA,CACA,MAAA,GAAA,EAAAC,EACI,EAAA,CAE3B,KAAQ,oBAAiB,IAAQ,EAAA,GAAK,EAAAA,EAAA,EAAA,CAAA,KAAA,UAAA,IAAA,EAAA,GAAA,EAAAA,EAAA,EAAA,CAAA,KAAA,eAAA,IAAA,EAAA,GAAA,EAAAA,EAAA,EAAA,CAAA,KAAA,gBAAA,IAAA,EAAA,GAAA,EAAAA,EAAA,EAAA,CAAA,KAAA,gBAAA,IAAA,EAAA,GAAA,EAAAA,EAAA,EAAA,CAAA,KAAA,cAAA,IAAA,EAAA,GAAA,EAAAA,EAAA,EAAA,CAAA,KAAA,gBAAA,IAAA,EAAA,GAAA,EAAAA,EAAA,EAAA,CAAA,KAAA,UAAA,IAAA,EAAA,GAAA,EAAAA,EAAA,EAAA,CAAA,KAAA,gBAAA,CAAA,CAAA,GAAA,EAAAA,EAAA,EAAA,CAAA,KAAA,cAAA,IAAA,EAAA,GAAA,EAAAA,EAAA,EAAA,CAAA,KAAA,IAAA,IAAA,EAAA,GAAA,EAAAA,EAAA,EAAA,CAAA,KAAA,kBAAA,IAAA,EAAA,GAAA,EAAAA,EAAA,EAAA,CAAA,KAAA,QAAA,CAEtB,IAAA,EAEO,KAGjB,CASL,CAAA,GAAA,EAAAA,EAAA,EAAA,CAAA,KAAA,WAAA,CAAA,CAAA,GAAA,EAAAA,EAAA,EAAA,CAAA,KAAA,eAAA,CAAA,CAAA,GAAA,EAAAA,EAAA,EAAA,CAAA,KAAA,OAAA,IAAA,EAAA,GAAA,EAAAA,EAAA,EAAA,CAAA,KAAA,UAAA,CAEH,MAAA,GAIM,EAAA,EAIU,MAAA,CAAQ,EAMjB,MAAA,GAED,MAAO,OAMP,cAAoB,GAC1B,QAAA,CAAA,EAMmC,YAAQ,CAAA,EACtC,YAAA,CAAA,EAGc,mBACgB,IAY5B,aACG,CAAA,CAWR,CAAA,GAAA,EAAAA,EAAA,EAAA,CAAA,KAAA,SAAA,CAAA,CAAA,EAAA,KAAA,KAAAC,EAAA,cAAAI,EAAA,CAAA,CACD,CAGD,MAAA,OAAA,CAIM,GAAA,EAAA,KAAU,cAAS,aAOhB,OACQ,IAAA,EAAU,KAAI,gBAAe,EAIjC,GAAU,KAAI,GAAK,QAAQ,oBAAQ,IAAA,KAAA,YAAAH,EAAA,EAAA,SAAA,KAAA,GAAA,QAAA,oBAAA,CAAA,GAAA,MAAA,KAAA,YAAA,EAAAJ,EAAA,QAAA,IAAA,KAAA,GAAA,UAAA,IAAA,aAAA,KAAA,GAAA,MAAA,SAAA,YAAA,KAAA,GAAA,QAAA,eAAA,SAAA,KAAA,kBAAA,KAAA,GAAA,UAAA,SAAA,YAAA,EAAA,KAAA,GAAA,UAAA,IAAA,YAAA,EAAA,KAAA,cAAA,KAAA,GAAA,UAAA,SAAA,WAAA,EAAA,KAAA,GAAA,UAAA,SAAA,wBAAA,IAAA,KAAA,cAAA,CAAA,GAAA,KAAA,cAAA,CAChD,IAAA,EAAA,KAAA,GAAA,cAAA,OAAA,EAES,GAAQ,CAAA,EAAA,gBACX,EAAA,cAAkB,CAAA,EAAK,EAAA,iBAA6B,OAAA,GAAA,CA8BrC,IAAA,EAAA,EAAA,cAEf,GAAAI,EAAoC,EAAA,SAAA,CAAA,CAAA,EAAoB,UAAU,GAAMA,EAIvE,EAAA,gBAAwB,EAE3B,cACE,KAAQ,EAAA,GAAQA,EACJ,EAAA,mBAAsB,KAAA,EAAU,CAAA,EAAA,MAAA,CAmB7C,CAAA,EAKY,CAEX,GAAQ,EACd,KAAA,KAAA,MAAA,KAAA,QAAA,MAAA,GAAA,KAAA,QAAAJ,EAAA,QAAA,MAAA,MAAA,CAAA,EAAA,KAAA,QAAA,KAAA,OAEiB,GAAA,KAChB,QAAK,OAAQ,MAAA,OAAc,EAYC,KAAK,KAAQ,WAAc,KAAA,QAAA,SAAA,cAAwB,GAAA,KAAA,QAAA,MAAA,UAAA,GAAA,IAAA,OAEvE,CACa,GAAA,KAAA,KAAA,OAAA,KAAA,QAAA,YAEX,KAAiB,oDAO5B,KAAA,QAAAA,EAAA,QAAA,MAAA,MAAA,CAAA,EAAA,KAAA,QAAA,OAAA,EAAA,CAEY,CA2BI,GAAA,CAAK,GAAG,GAAA,OAAQ,CAEd,IAAGO,EAwCtB,GAAA,GAAA,OAAA,EAAA,EAAA,MAAA,QAAA,KAAA,OAAA,OAAA,KAAA,QAAA,KAAA,EAAAJ,EAAA,UAAA,IAAA,KAAA,QAAA,EAAA,CAAA,EAAA,SAAA,IAAA,IAAA,EAAA,SAAA,cAAA,GAAA,KAAA,QAAA,MAAA,yBAAA,GAAA,IAAA,GAAAI,EAAA,CAEM,KAAc,QAAAA,EAAA,KAAA,GAAA,QAAA,eAAA,GAAA,KAAA,mBAAA,KAAA,GAAA,UAAA,OAAA,YAAA,EAAAH,EAAA,EAAA,MAAA,KAAA,OAAA,EAAA,eAAA,KAAA,MAAA,EAAA,KAAA,QAAA,kBAAA,EAGV,MACV,CAKc,CACT,GAAA,KAAA,UAAA,SAAA,cAAA,GAAA,KAAA,QAAA,MAAA,yBAAA,GAAA,IAAA,GAAA,CAAA,KAAA,QAEK,OAyBP,GAAkB,KAAA,QAAA,GAAgB,CAC3B,GAAQD,EAAA,UAAA,IAAkB,KAAA,QAAA,EAAA,GAAAA,EAAA,UAAA,IAAA,KAAA,QAAA,EAAA,IAAA,KAEpC,OAEoBA,EAAA,UAAA,IAAA,KAAA,QAAA,GAAA,IAAA,CAEd,CA0BN,IAAA,KAAA,QAAA,aAAA,KAAA,gBAAA,KAAA,QAAA,QAAA,8BAAA,EAAA,KAAA,kBAAA,KAAA,gBAAAH,EAAA,QAAA,KAAA,KAAA,QAAA,GAAA,EAAA,KAAA,gBAAA,UAAA,IAAA,8BAAA,QAAA,KAAA,KAAA,QAAA,KAAA,QAAA,UAAA,CAAA,CAAA,EAAA,KAAA,OAAA,YAAA,CAAA,KAAA,QAAA,QAAA,WAAA,IAAA,KAAA,QAAA,UAAA,OAAA,QAAA,EAAA,KAAA,QAAA,cAAA,6BAAA,GAAA,KAAA,QAAA,UAAA,IAAA,mBAAA,EAAA,KAAA,QAAAA,EAAA,QAAA,KAAA,KAAA,QAAA,KAAA,GAAA,KAAA,OAAA,SAAA,KAAA,QAAA,cAAA,6BAAA,IAAA,KAAA,QAAA,UAAA,IAAA,mBAAA,EAAA,KAAA,QAAAA,EAAA,QAAA,KAAA,KAAA,QAAA,KAAA,KAAA,KAAA,OAAA,YAAA,CAAA,KAAA,QAAA,QAAA,WAAA,GAAA,KAAA,OAAA,QAAA,KAAA,OAAA,SAAAA,EAAA,QAAA,sBAAA,KAAA,QAAA,kBAAA,CAAA,CAAA,QAAA,GAAA,CAKyC,aAAA,cAAA,EAAA,QAAA,cAAA,QAO9B,CAAA,EAAAA,EAAa,QAAE,sBAAkB,KAKtC,QAAK,oBAIL,CAAA,CAAA,QAAe,GACpB,EAAA,OAAA,CAAA,IAAiBI,EAAwB,EAGrC,oBAAa,IAAA,EAAc,IAAE,KAAA,QAChC,MAAA,EAAA,SAAA,MAAA,EAAA,sBAAA,QAAA,IAAA,KAAA,KAAA,QAAA,mBAAA,EAAA,sBAAA,MAAA,KAAA,mBAAA,aAAA,KAAA,QAAA,MAAA,YAAA,+BAAA,KAAA,QAAA,mBAAA,IAAA,IAAA,KAAA,aAAA,SAAA,cAAA,KAAA,EAAA,KAAA,aAAA,UAAA,IAAA,iBAAA,WAAA,EAAA,KAAA,QAAA,YAIuB,KAAA,aAAA,YAAkC,KAAA,QAAM,UAAA,EAC3C,GAAA,KAAkB,QAAK,OAKtC,KAAA,YAAe,EAAA,KAAA,QAAkB,UACtB,IAAI,mBAAA,EAAyB,KAAE,QAAO,MAAQ,CAQlD,IAAA,EAAQ,KAAA,QAAA,MAAA,MAAuB,GAAK,EAC9C,KAAe,QAAA,UAAA,IAAA,GAAA,CAAA,CAEjB,CACD,KAAA,QAAA,QAAA,KAAA,QAAA,UAAA,IAAA,YAAA,EAAA,KAAA,QAAA,mBAAA,YAAA,yDAAA,GAAA,MAAA,KAAA,QAAA,EAAA,KAAA,cAAA,KAAA,aAAA,cAAA,mBAAA,EAAA,KAAA,cAAA,KAAA,aAAA,cAAA,mBAAA,EAAA,KAAA,YAAA,KAAA,aAAA,cAAA,oBAAA,EAAA,KAAA,cAAA,KAAA,aAAA,cAAA,mBAAA,EAGqC,IAAAH,EAAO,CAAA,CAAA,KAAQ,QAAA,cAAA,wBAA6C,EAChF,GAAK,KAAA,QAAoB,cAAA,CAAAA,EAAA,CAGpB,IAAAO,GAAA,EAAAN,EAAA,EAAA,CAAA,EAKG,CAAA,KAAA,eACtBM,EAAA,OAAe,QAIT,KAAQ,cAAWR,EAKxB,QAAK,MAAQ,IAAA,CAAQ,MAAA,kBAA2B,CAAA,EAAA,KAAQ,aAAY,QAI7D,KAAA,aAAA,EAAA,KAA4B,cAI1B,QAAKA,EAAqB,QAAA,MAAA,IAAA,CAAA,MAAA,UAAA,EAAAQ,EAAA,OAAA,KAAA,CAAA,EAAA,KAAA,cAAA,OAAAR,EAAA,QAAA,MAAA,IAAA,CAAA,MAAA,wBAAA,CAAA,CAAA,EACxC,CAKqCA,EAAA,QAAA,QAAA,KAAA,QAAAG,EAAA,cAAA,IAAA,EAAA,KAAA,QAAA,gBAAA,KAAA,QAAA,SAAA,cAAA,KAAA,QAAA,aAAA,GAAA,KAAA,UAAA,KAAA,GAAA,QAAA,kBAAA,EAAA,KAAA,UAAA,SAAA,KAAA,KAAA,mBAAA,cAAA,KAAA,QAAA,MAAA,MAAA,KAAA,GAAA,YAAA,KAAA,KAAA,QAAA,MAAA,OAAA,KAAA,GAAA,aAAA,KAAA,KAAA,QAAA,MAAA,IAAA,KAAA,GAAA,UAAA,KAAA,KAAA,QAAA,MAAA,MAAA,SAAA,KAAA,GAAA,MAAA,OAAA,GAAA,EAAA,KAAA,KAAA,QAAA,MAAA,OAAA,SAAA,KAAA,GAAA,MAAA,QAAA,GAAA,EAAA,MAAA,KAAA,GAAA,eAAA,aAAA,KAAA,QAAA,KAAA,EAAA,EAAA,KAAA,QAAA,UAAA,OAAA,UAAA,EAAA,KAAA,QAAA,SAAA,KAAA,QAAA,UAAA,IAAA,UAAA,EAM9B,IAAAG,EAAA,CAAA,CAAkB,KAAA,GAAA,QAAa,eAAe,EAKrD,IAAA,CAAA,CAAA,KAAA,GAAA,QAAA,YAAA,EAAA,IAAA,CAAA,CAAA,KAAA,GAAA,QAAA,aAAA,EAAAA,GAAA,KAAA,QAAA,UAAA,IAAA,YAAA,EAAA,eAAA,KAAA,SAAA,UAAA,IAAA,yBAAA,CAAA,EAAA,KAAA,SAAA,CAAA,KAAA,QAAA,QAAA,MAAA,IAAA,KAAA,QAAA,OAAA,KAAA,OAAA,EAAA,KAAA,MAAA,IAAAN,EAAA,QAAA,OAAA,KAAA,EAAA,CAAA,CAAA,IAAA,KAAA,GAAA,UAAAA,EAAA,QAAA,OAAA,KAAA,OAAA,CAAA,CAAA,IAAA,KAAA,MAAA,KAAAA,EAAA,QAAA,OAAA,KAAA,EAAA,CAAA,CAAA,KAAA,KAAA,GAAA,WAAAA,EAAA,QAAA,OAAA,KAAA,OAAA,CAAA,CAAA,KAAA,KAAA,MAAA,KAAA,SAAA,KAAA,GAAA,MAAA,eAAA,CAAA,EAAA,KAAA,MAAA,MAAA,SAAA,KAAA,GAAA,MAAA,gBAAA,CAAA,EAAA,KAAA,mBAAA,cAAA,KAAA,QAAA,MAAA,IAAA,SAAA,KAAA,QAAA,MAAA,KAAA,GAAA,EAAA,KAAA,MAAA,IAAA,KAAA,KAAA,QAAA,MAAA,KAAA,SAAA,KAAA,QAAA,MAAA,MAAA,GAAA,EAAA,KAAA,MAAA,KAAA,OAAA,KAAA,GAAAE,EAAA,EAAA,GAAA,KAAA,EAAA,QAAA,2BAAA,CAAAA,EAAA,EAAA,EAAA,KAAA,OAAA,CAAA,CAAA,EAAA,KAAA,eAAA,EAAA,KAAA,QAAA,aAAA,WAAA,GAAA,EAAA,KAAA,MAAA,EAAAE,EAAA,EAAA,mBAAA,IAAA,EAAA,KAAA,YAAA,CAKA,CAEU,MAAA,aAIgB,CAGfF,EAOR,EAAK,IAAA,KAAA,EAAaA,EACb,EAAA,EAAA,KAAA,EAAa,EAMnB,CACF,OAAA,CAKA,IAAqB,EACpB,KAAA,UAAiB,EAAAF,EAAA,QAAA,qBAAA,KAAA,QAAA,sBAAA,EAAA,IAAAA,EAAA,QAAA,qBAAA,KAAA,QAAA,oCAAA,EAAA,IAAAA,EAAA,QAAA,qBAAA,KAAA,QAAA,+BAAA,EAAA,CAAA,GAAA,CAAA,KAAA,gBAAA,EAAA,KAAA,SAAA,aAAA,aAAA,EAAA,MAAA,CAAA,cAAA,CAAA,CAAA,CAAA,EAAA,eAAA,CACP,aAAqB,aAAa,EAAA,MAAQ,CAAA,cAAmB,CAAA,CAAA,CAAA,CAKjE,EAAA,KAAA,QAAA,kBAAA,EACP,CAKA,aAAyB,CAEf,KAAA,4BAAwB,SAAkB,YAClD,GAAS,KAAK,YAAY,CAAA,CAAA,EAAA,KAGvB,cAAK,KAAA,mBACR,EAAA,KAAK,SAAc,KAAM,eAAmB,KAAC,4BAC1B,KAAA,QAAW,QAAgB,GAAA,KAAO,QAAA,CAAA,CAAA,EAAA,KAAA,QAAA,cAAA,KAAA,4BAAA,KAAA,QAAA,aAAA,GAAA,KAAA,aAAA,CAAA,CAAA,EAAA,KAAA,4BAAA,KAAA,aAAA,aAAA,GAAA,KAAA,aAAA,CAAA,CAAA,IAAA,KAAA,QAAA,cAAA,KAAA,aAAA,KAAA,4BAAA,KAAA,YAAA,YAAA,GAAA,KAAA,YAAA,CAAA,CAAA,CAEvD,CAEA,YAAgB,EAAA,CACT,GAAQ,CAAA,KAEV,SAAK,EAAA,EAAA,kBAA2B,UAAQ,CAAA,KAAQ,eAAiB,KAChE,aAAK,CAAA,EAAA,eACD,KAAU,aAAO,CAAA,CAAA,EAAY,aAAA,YAAA,EAAA,SAAA,GAGrB,OAER,IAAM,EAAAA,EAAQ,QAAA,yBACd,SAAa,KAAA,6BAAc,EAErC,GAAA,GAAA,IAAA,KAAA,SAAA,EAAA,OAAA,QAAA,kBAAA,IAAA,EAAAA,EAAA,QAAA,yBAAA,EAAA,OAAA,QAAA,kBAAA,EAAA,6BAAA,EAAA,GAAA,IAAA,KAAA,SAGe,OACR,GAAK,EAAA,OAAA,QAAmB,uBAAc,KAAA,QAAA,GAAA,GAAA,EAAA,CAE1B,EAAA,eACd,EAEK,MAOF,CACM,IAAQ,EAAA,EAAA,OAAa,QAAA,6CACpB,EAGX,IAAA,KAAA,UAAA,EAAA,MACI,IAAAC,EAAA,CAAA,EACEA,GAAK,KAAG,eAAA,EAAA,eAAsC,EAAA,CAAA,KAAA,QAAA,SAAA,EAAA,MAAA,IAAA,CAAA,KAAA,QAAA,QAAA,YAAA,GAAA,EAAA,OAAA,QAAA,YAAA,KAAAG,EAAA,EAAA,4BAAA,CAAA,GAAAA,EAAA,EAAA,MAAA,KAAA,QAAAH,CAAA,EAE1C,CAGV,QAAA,EAAA,CACI,EAAA,kBAAA,SAAA,EAAA,OAAA,QAAA,OAAA,GAAA,KAAA,mBAAA,CACJ,CAIA,oBAAA,CAEA,KAAK,UAAQG,EAA0B,EAAA,cAAA,CAAA,CAAA,QAAA,GAAA,CACzC,KAAA,SAAA,SAAA,CAAA,GAAA,KAAA,aAAA,UAAA,GAAA,KAAA,aAAA,aAAA,UAAA,GAAAA,EAAA,EAAA,MAAA,CAAA,CAI0B,CAAA,CACtB,CAYC,aAAM,EAAA,CACN,eAAA,CACE,KAAA,cAAA,KAAA,aAAA,QAAA,QAAA,GAAA,CAAA,KAAA,SAAAA,EAAA,EAAA,MAAA,KAAA,OAAA,CACC,EAAA,GAAA,CACR,CAIK,UAAgB,CAChB,KAAA,SAAA,KAAA,QAAA,gBAAA,SAAA,MAAA,SAAA,KAAA,OAAA,KAAA,OAAA,EAAA,KAAA,mBAAA,cAAA,KAAA,QAAA,MAAA,IAAAJ,EAAA,QAAA,OAAA,KAAA,EAAA,CAAA,CAAA,IAAA,KAAA,KAAA,QAAA,MAAA,KAAAA,EAAA,QAAA,OAAA,KAAA,EAAA,CAAA,CAAA,KAAA,KACL,CACA,SAAQ,CACF,MAAA,QAAA,EAAA,KAAA,cAAA,cAAA,KAAA,GAAA,QAAA,eAAA,IAAA,KAAA,mBAAA,KAAA,GAAA,UAAA,OAAA,YAAA,EAIgC,IAAA,EAAO,KAAO,GAAA,aACjD,OAAmC,EAE7B,IACO,EAAC,EAGd,QAAM,oBACQ,EAAA,EAAA,KAAA,GAAA,aAAA,QAAA,CAAA,EAGZ,CAUL,eAAsB,EAAA,CA2CT,GAAiB,EAAA,KAAc,mBAAA,aAE/B,OACH,IAAA,EAAS,GAAK,KAAA,QAEb,EAAA,EAIF,GAAU,KAAA,cAAiB,YAOpC,OAAA,KAAA,QAAA,MAAA,OAAA,KAAA,GAAA,aAAA,KAAA,KAAA,QAAA,UAAA,OAAA,KAAA,KAAA,KAAA,KAAA,IAAA,EAAA,KAAA,QAAA,UAAA,IAAA,IAAA,CAAA,EAAA,KAAA,QAAA,MAAA,CAGkB,IAAA,OAEI,EAAA,KAEjB,GAAA,WAAiB,SACD,KAAA,GAAQ,MAAc,gBAAgC,GAAA,EAAA,GAAA,KAAA,MAAA,KAAA,KAAA,QAAA,MAAA,KAAA,EAAA,KAGpD,MAOvB,IAAA,QAEO,GAAA,EAAA,KAAA,GAAA,wBAAA,aAQ8B,MACjB,EAAK,KAAM,GAAA,WAAgB,SAAG,KAAA,GAAA,MAAA,gBAAA,GAAA,EAAA,KAAA,QAAA,MAAA,MAAA,KAAA,GAAA,aAAA,YAAA,KAAA,GAAA,YAAA,EAAA,KAEnC,MACQ,IAAA,QACA,KAAA,4BAAA,OAAA,aAAA,KAAA,SAAA,CAAA,EAAA,KAAA,SAAA,EAIhB,MAoCT,QAAA,KAAA,QAAA,OAAA,OAAA,KAAA,OAAA,CAEiC,CAC1B,IAAAC,EAAA,KAAA,QAAyB,sBAAiB,EAE1B,KAAA,QAAc,MAAA,YAAgB,qBAAc,KAK3D,QAAO,aAAe,IAAA,EAAA,KAAA,QAAiB,MAAO,YAAe,6BAErCA,EAAA,MAAc,IAAA,EAAA,KAAc,QAAE,MAAO,YAAe,8BAEhFA,EAAA,OAAA,IAAA,EAAA,KAAA,QAAA,MAAA,YAAA,kBAAAA,EAAA,IAAA,IAAA,EAAA,KAAA,QAAA,MAAA,YAAA,mBAAAA,EAAA,KAAA,IAAA,EAAA,KAAA,wBAAA,cAAA,KAAA,aAAA,MAAA,SAAA,QAAA,KAAA,aAAA,MAAA,UAAA,SAIK,IAAA,EAAc,CAGtB,IAAA,CAAA,EACD,MAAA,CAAA,EAEc,OAAA,CAAA,EACJ,KAIT,CAAA,CAeM,EAAA,EAAA,CAIY,IAAA,CAAA,EAsBQ,MAAA,CAAA,EAIjB,OAAsB,CAAA,EAIvB,KAAQ,CAAA,CACjB,EAAA,EAAAA,EAAA,KAAA,OAAA,WAAA,EAAA,EAAAA,EAAA,IAAA,OAAA,YAAA,EAEM,IAAyB,IAAA,EAAA,CAAA,GAAA,IAAA,IAAA,EAAA,CAAA,GACxB,IAAK,EAAA,KAAA,cAA0B,sBAAI,EAAA,EAAA,EAAA,EAAAD,EAAA,QAAA,UAAA,KAAA,QAAA,oBAAA,EAAA,EAAA,KAAA,GAAA,aAAA,EAAA,KAAA,GAAA,YAC1C,IAAA,EAAA,OAAA,WAAA,EAAA,MAAA,EAAA,OAAA,YAAA,EAAA,OAAA,EAAA,IAAA,IAAA,EAAA,IAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,IAAA,EAAA,IAAA,CAAA,IAAA,EAAA,IAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,MAAA,IAAA,EAAA,MAAA,CAAA,IAAA,EAAA,IAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,OAAA,IAAA,EAAA,OAAA,CAAA,IAAA,EAAA,KAAA,IAAA,EAAA,KAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,EAAA,MAAA,IAAA,EAAA,KAAA,CAAA,KAEiB,IAAA,GAAA,EAAA,IAAA,CACX,GAAA,IAAmB,IAAA,CACzB,GAAA,CAAA,EAAA,OAAA,CAAA,EAAA,OAAA,IAAA,GAAA,IAAA,IAAA,CAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAGkB,OAAA,EACR,EAAA,QAAc,IAAA,GAAe,IAAK,IAAQ,IAAI,EAAO,GAAO,EAAA,OAAc,IAAI,GAAK,IAAQ,IAAE,IAAA,EAAA,EACvG,CACD,GAAA,IAAA,IAAA,CAx5BQ,GAAgB,CAAA,EAAA,KAAA,CAKhB,EAAA,SAAA,IAAA,GAAA,IAAA,IAAY,CAAA,EAAI,KAq5BxB,CAAA,EAAa,QAAK,EHhoBM,OAAO,EACX,EAAE,MAAQ,IAAM,GAAK,IAAM,IAAM,IAAM,EAAI,GAAI,EAAE,QAAU,IAAM,EAAI,EACzE,CACA,OAAO,CACX,EAAG,EAAI,CAAC,IAAK,GAAG,GACf,IAAM,GAAK,IAAM,GAAK,IAAM,KAAO,EAAI,CAAC,IAAK,GAAG,GACjD,IAAI,EAAI,GAAK,EACb,EAAE,QAAS,GAAM,CACb,EAAI,EAAE,EAAG,CAAC,CACd,CAAC,EAAG,EAAI,EAAG,EAAE,SAAW,IAAM,GAAK,IAAM,IAAM,GAAK,KAAK,QAAQ,UAAU,IAAI,UAAU,EAAG,EAAE,QAAU,IAAM,GAAK,IAAM,GAAK,IAAM,IAAM,KAAK,QAAQ,UAAU,IAAI,UAAU,EAAG,KAAK,QAAQ,UAAU,OAAO,KAAM,KAAM,KAAM,KAAM,IAAI,EAAG,KAAK,QAAQ,UAAU,IAAI,IAAM,CAAC,EAAG,KAAK,wBAAwB,cAAgB,KAAK,aAAa,MAAM,SAAW,GAAI,KAAK,aAAa,MAAM,UAAY,IAAKI,EAAwB,EAAE,eAAe,KAAK,OAAO,CAC1c,CACA,YAAY,EAAG,CACX,GAAI,EAAE,yBAAyB,aAAe,EAAE,kBAAkB,YAAa,CAC3E,GAAI,EAAE,cAAc,YAAc,EAAE,cAAc,aAAe,EAAE,OAAO,eAAe,aAAe,EAAE,OAAO,eAAe,aAAe,EAAE,OAAO,cAAc,YAAc,EAAE,OAAO,eAAe,YACxM,OACJ,EAAE,cAAc,QAAQ,aAAa,GAAK,EAAE,eAAe,CAC/D,CACJ,CACA,OAAQ,CACJ,KAAK,WAAa,KAAK,SAAW,CAAC,EAAG,KAAK,GAAKF,EAAuB,EAAE,GAAK,KAAK,SAAW,KAAK,EAAE,QAAQ,4BAA6B,CAACA,EAAuB,EAAE,EAAE,KAAK,OAAO,CAAC,CAAC,EAAG,CAACE,EAAwB,EAAE,UAAY,KAAK,QAAQ,EAAG,KAAK,SAAS,UAAU,IAAI,0BAA0B,EAAG,eAAiB,CACpT,GAAI,KAAK,SAAS,EAAG,CAAC,KAAK,QACvB,OACJ,KAAK,QAAQ,aAAe,KAAK,QAAQ,gBAAgB,OAAO,EAAG,KAAK,QAAQ,UAAU,OAAO,0BAA2B,0BAA0B,EAAG,KAAK,QAAQ,UAAU,IAAI,UAAU,EAAG,KAAK,iBAAiB,OAAO,KAAK,OAAO,EAAG,KAAK,QAAQ,cAAc,kCAAkC,CAAC,EAAE,UAAU,OAAO,YAAY,EAAG,KAAK,QAAQ,cAAc,eAAe,CAAC,EAAE,OAAO,EAAG,KAAK,QAAQ,cAAc,QAAQ,CAAC,EAAE,OAAO,EAAG,KAAK,cAAc,YAAY,GAAG,KAAK,aAAa,UAAU,EAAGJ,EAAS,QAAQ,aAAa,KAAK,OAAO,IAAMA,EAAS,QAAQ,aAAa,KAAK,OAAO,EAAG,KAAK,QAAQ,OAAO,EAAG,OAAO,KAAK,SAAU,KAAK,QAAQ,IAAMG,EAAE,UAAU,OAAO,KAAK,QAAQ,EAAE,EACprB,IAAII,EAAIH,EAAwB,EAAE,cAAc,EAAGI,EAAID,EAAE,QAAUA,EAAEA,EAAE,OAAS,GAChFC,EAAIJ,EAAwB,EAAE,SAASI,CAAC,CAAC,CAAC,MAAM,EAAI,SAAS,gBAAgB,UAAU,OAAO,YAAY,CAC9G,EAAG,KAAK,QAAQ,kBAAkB,GACtC,CACA,MAAM,SAAU,CACZ,MAAM,KAAK,gBAAgB,CAAC,EAAE,OAAO,IAAI,CAC7C,CACA,UAAW,CACP,KAAK,gBAAgB,CAAC,EAAE,QAAQ,IAAI,CACxC,CACA,iBAAkB,CACd,GAAI,KAAK,cAAc,aAAe,KAAK,QAAQ,GAC/C,OAAOJ,EAAwB,EAAE,cAAc,IAAI,KAAK,QAAQ,EAAE,CAC1E,CACJ,EACA,EAAQ,YAAcE,GACrB,EAAGJ,EAAuB,EAAC,CAAEI,EAAG,gBAAiB,UAAU,GAAI,EAAGJ,EAAuB,EAAC,CAAEI,EAAG,YAA6B,IAAI,GAAK,EAAGH,EAAE,KAAK,CACpJ,CAAC","sourcesContent":["var __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\ndefine([\"require\", \"exports\", \"./forms-Ch1q0UUt.es.js\", \"../utils/dom.js\", \"./worker-D-5BEVm7.es.js\"], function (require, exports, forms_Ch1q0UUt_es_js_1, dom_js_1, worker_D_5BEVm7_es_js_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.TopLibPopup = void 0;\n dom_js_1 = __importDefault(dom_js_1);\n //#region src/components/component.ts\n var a = class e {\n constructor() {\n (0, forms_Ch1q0UUt_es_js_1.K)(this, \"componentName\", void 0), (0, forms_Ch1q0UUt_es_js_1.K)(this, \"className\", void 0), (0, forms_Ch1q0UUt_es_js_1.K)(this, \"uid\", void 0), (0, forms_Ch1q0UUt_es_js_1.K)(this, \"el\", void 0), (0, forms_Ch1q0UUt_es_js_1.K)(this, \"options\", {}), (0, forms_Ch1q0UUt_es_js_1.K)(this, \"unmountEls\", []), (0, forms_Ch1q0UUt_es_js_1.K)(this, \"unmountEvents\", []);\n }\n init(t, n, r) {\n if (!n)\n throw t + \": el is undefined\";\n let i = e.getComponent(n, t);\n if (i)\n return i.reInit(r), i;\n this.componentName = t, this.className = \"top\" + t[0].toUpperCase() + t.substring(1), this.uid = this.componentName + (Math.random() + \"\").replace(\".\", \"\"), this._setComponent(n), this.el = n, this.el.classList.add(this.className), this.options = Object.assign(this.options, r), this.mount();\n }\n static getComponent(e, t) {\n return dom_js_1.default.storage(e, \"#\" + t);\n }\n _setComponent(e) {\n dom_js_1.default.storage(e, \"#\" + this.componentName, this);\n }\n mount() {\n throw \"Please, add method mount() to component: \" + this.componentName;\n }\n unmount() {\n dom_js_1.default.storage(this.el, \"#\" + this.componentName, null), this.unmountEls.forEach((e) => {\n e.remove();\n }), this.unmountEls = [], this.unmountEvents.forEach((e) => {\n e.el.removeEventListener(e.type, e.listener, e.options);\n }), this.unmountEvents = [];\n }\n registerElForUnmount(e) {\n this.unmountEls.push(e);\n }\n addEventListenerWithUnmount(e, t, n, r) {\n e.addEventListener(t, n, r), this.registerEventForUnmount(e, t, n, r);\n }\n registerEventForUnmount(e, t, n, r) {\n let i = {\n el: e,\n type: t,\n listener: n,\n options: r\n };\n this.unmountEvents.push(i);\n }\n reInit(e) {\n throw \"Please, add method reInit() to component: \" + this.componentName;\n }\n static detach(e) {\n if (e instanceof NodeList)\n e.forEach((e) => e.parentElement?.removeChild(e));\n else {\n let t = e;\n t.parentElement?.removeChild(t);\n }\n }\n };\n (0, forms_Ch1q0UUt_es_js_1.K)(a, \"componentName\", \"Top\");\n //#endregion\n //#region src/components/popup/lib/popup.globalEvents.ts\n var o = class {\n static init() {\n this.isInited || (this.isInited = !0, document.addEventListener(\"click\", this.onclickCapture, { capture: !0 }), document.addEventListener(\"click\", this.onclick), document.addEventListener(\"keydown\", this.onkeydown));\n }\n static onclickCapture(e) {\n if (e.target instanceof HTMLElement && e.target.closest(\".top-popup-wrapper\")) {\n if (e.target.matches(\"[data-top-popup]\")) {\n let t = e.target.closest(\"ul\"), n = e.target.closest(\"a, .a\");\n t && t.querySelector(\"a.top-active, .a.top-active\")?.classList.remove(\"top-active\"), n && n.classList.add(\"top-active\"), e.stopPropagation();\n return;\n }\n if (e.target.matches(\".top-popup-wrapper\")) {\n let t = e.target;\n worker_D_5BEVm7_es_js_1.t.close(t, !0), e.stopPropagation();\n return;\n }\n }\n }\n static onclick(e) {\n if (!(e.target instanceof HTMLElement))\n return;\n let t = e.target.closest(\".closer, a, .a, .top-button\");\n if (t) {\n let n = e.target.closest(\".top-popup-wrapper\");\n if (!n || t.matches(\".top-popup-noCloser\"))\n return;\n t.getAttribute(\"href\") === \".\" && e.preventDefault(), worker_D_5BEVm7_es_js_1.t.close(n, !0);\n }\n }\n static onkeydown(e) {\n if (!(e.target instanceof HTMLElement))\n return;\n let t = e.target.closest(\".top-popup-wrapper\");\n if (t ||= worker_D_5BEVm7_es_js_1.t.getPopupFromOpener(e.target)?.elPopup ?? null, !t)\n return;\n let n = t.querySelector(\"ul.top-popup_content\");\n switch (e.key) {\n case \"Escape\":\n worker_D_5BEVm7_es_js_1.t.close(t, !0);\n break;\n case \"Enter\": {\n if (!n) {\n if (dom_js_1.default.querySelectorVisible(t, \".preloader\"))\n break;\n let e = dom_js_1.default.querySelectorVisible(t, \".top-popup_footer .go, .top-popup_footer [data-action]\");\n if (e instanceof HTMLElement) {\n e.click();\n break;\n }\n let n = dom_js_1.default.querySelectorVisibleLast(t, \".top-popup_footer .top-button:focus\");\n n ||= dom_js_1.default.querySelectorVisibleLast(t, \".top-popup_footer .top-button\"), n instanceof HTMLElement && n.click();\n break;\n }\n let i = dom_js_1.default.querySelectorVisible(t, \"li > a.top-active\");\n i && i.getAttribute(\"href\") && (e.preventDefault(), location.href = i.getAttribute(\"href\"));\n let a = t.querySelector(\"li > .top-active\");\n a instanceof HTMLElement && a.click();\n break;\n }\n case \"ArrowUp\":\n case \"ArrowRight\":\n case \"ArrowDown\":\n case \"ArrowLeft\": {\n if (!n)\n break;\n if (e.key === \"ArrowRight\" || e.key === \"ArrowLeft\") {\n if (dom_js_1.default.querySelectorVisible(t, \"ul.top-popup_content > li:not(.top-popup_liNoSelectable) > .top-active > .top-popup_listMore\"))\n e.preventDefault();\n else if (e.target.tagName === \"INPUT\")\n break;\n }\n else\n e.preventDefault();\n let a = t.querySelector(\"ul.top-popup_content > li:not(.top-popup_liNoSelectable) > .top-active\")?.parentElement;\n if (e.key === \"ArrowRight\" && a) {\n let e = a.querySelector(\".top-active > .top-popup_listMore\");\n if (e instanceof HTMLElement)\n return e.click();\n }\n let o = dom_js_1.default.querySelectorAllVisible(t, \"ul.top-popup_content > li:not(.top-popup_liNoSelectable)\"), s = o.length;\n if (!s)\n return;\n let c = -1;\n if (a && (c = o.indexOf(a)), e.key === \"ArrowUp\" || e.key === \"ArrowLeft\" ? c-- : c++, e.key === \"ArrowLeft\" && c <= -1)\n return e.target.matches(\"input\") ? void 0 : worker_D_5BEVm7_es_js_1.t.close(t, !0);\n if (e.key === \"ArrowRight\" && c === s)\n return;\n c < 0 && (c = s - 1), c > s - 1 && (c = 0), t.querySelectorAll(\"ul.top-popup_content > li > .top-active\").forEach((e) => e.classList.remove(\"top-active\")), o[c].querySelector(\":scope > a, :scope > .a\")?.classList.add(\"top-active\"), worker_D_5BEVm7_es_js_1.t.scrollToActive(t);\n break;\n }\n }\n }\n };\n (0, forms_Ch1q0UUt_es_js_1.K)(o, \"isInited\", !1), forms_Ch1q0UUt_es_js_1.O.insertStyleToPage(\":root{--top-popup-z-index:200000;--top-popup-transition-delay:.1s;--top-popup-offset:var(--top-padding-2);--top-popup-background-color:var(--color-layout-front-1);--top-popup-background-color-hover:var(--color-layout-front-3);--top-popup-background-color-active:var(--color-layout-front-4);--top-popup-border-color:var(--color-line-2-opacity);--top-popup-title-background-color:var(--color-layer-1);--top-popup-content-padding:calc(var(--top-popup-list-padding) + var(--top-popup-listItem-padding));--top-popup-list-padding:var(--top-padding-2);--top-popup-listItem-radius:var(--top-radius-2);--top-popup-listItem-padding:var(--top-padding-2)}.top-popup-front{position:relative}.top-popup-wrapper{--top-popup-height:0px;--top-popup-right-bounding:0px;--top-popup-bottom-bounding:0px;--top-popup-top:0px;--top-popup-right:calc(100vw - var(--top-popup-right-bounding));--top-popup-bottom:calc(var(--100vh) - var(--top-popup-bottom-bounding));--top-popup-left:0px;--top-popup-margin:-10px;text-align:initial;white-space:normal;word-break:normal;z-index:200000;outline:none;position:absolute}.top-popup-wrapper:not(.top-popup-wrapper-shown){overflow:hidden}.top-popupPanel{cursor:default;box-shadow:var(--top-shadow-b);background:var(--top-popup-background-color);border-radius:14px;flex-direction:column;display:flex;position:absolute;overflow:hidden}.top-popup-wrapper>*{opacity:0;transition:opacity var(--top-popup-transition-delay) linear, transform var(--top-popup-transition-delay) linear;pointer-events:auto}.top-popup-wrapper-shown:not(.top-popup-wrapper-closed)>*{opacity:1;transform:translate(0)!important}.top-popup_header,.top-popup_content,.top-popup_footer{font-size:14px}.top-popup_header,.top-popup_footer{justify-content:space-between;align-items:center;display:flex}.top-popup_header{color:var(--color-text-1);border-bottom:1px solid var(--top-popup-border-color);padding:var(--top-padding-3);font-weight:600}.top-popup_header>*{font-weight:400}.top-popup_header>.a{cursor:pointer}.top-popup_header>.a:hover{color:var(--color-text-primary)}.top-popup_headerButton{width:60px}.top-popup_widget{padding:var(--top-padding-2)}.top-popup_content{gap:var(--top-gap-4);-webkit-overflow-scrolling:touch;flex-direction:column;flex-grow:1;margin:0;display:flex;overflow-y:auto}div.top-popup_content{color:var(--color-text-1);padding:var(--top-popup-content-padding)}div.top-popup_content>*{flex-shrink:0}div.top-popup_content>.top-button{margin:0}div.top-popup_content .top-unwrap{--top-unwrap-x:var(--top-popup-content-padding)}ul.top-popup_content{color:var(--color-text-1);padding:var(--top-popup-list-padding);gap:2px}ul.top-popup_content .top-unwrap{--top-unwrap-x:var(--top-popup-list-padding)}.top-popup_listItem{border-radius:var(--top-popup-listItem-radius);padding:var(--top-popup-listItem-padding);line-height:1!important}ul.top-popup_content li{align-items:center;margin:0;list-style:none;display:flex;position:relative}ul.top-popup_content li>*{flex-grow:1}ul.top-popup_content li>a:not(.top-button),ul.top-popup_content li>.a{cursor:pointer;box-sizing:border-box;border-radius:var(--top-popup-listItem-radius);background:var(--top-popup-background-color);padding:var(--top-popup-listItem-padding);flex:100%;align-items:center;font-size:14px;font-style:normal;transition:background-color .1s ease-in-out;display:flex;color:var(--color-text-1)!important;font-weight:400!important;line-height:1!important;text-decoration:none!important}.top-popup-wrapper-no_animate ul.top-popup_content li>a:not(.top-button),.top-popup-wrapper-no_animate ul.top-popup_content li>.a{transition:none}ul.top-popup_content li>a:not(.top-button):hover,ul.top-popup_content li>.a:hover{background:var(--top-popup-background-color-hover)}ul.top-popup_content li>a:not(.top-button).top-active,ul.top-popup_content li>.a.top-active{background:var(--top-popup-background-color-active);--top-icon-color:var(--color-text-primary)!important}.top-popup_liastItem-withActions{width:240px;max-width:100%}.top-popup_listItemActionsLabel{flex-grow:1}.top-popup_listItemActions{flex-grow:0;min-height:20px;margin-left:auto;display:flex}.top-popup_listItemActions [data-top-icon]{--top-icon-size:20px;--top-icon-color:var(--color-text-4)}.top-popup_listItemActions [data-top-icon]:before{line-height:0}.top-popup_listItemActions [data-top-icon]:hover,.top-popup_listItemActions [data-top-icon].top-active{--top-icon-color:var(--color-text-3)}.top-popup_content+.top-popup_content{padding-top:0}.top-popup_listItem-title{background:var(--color-layer-1);color:var(--color-text-1);font-size:12px}.top-popup_listItem-formControls{flex-direction:column;padding-top:0;padding-bottom:0;display:flex}.top-popup_listItem-delimiter{background:var(--top-popup-border-color);border-radius:3px;height:1px;margin:4px;padding:0}.top-popup_listMore{margin:calc(0px - var(--top-popup-listItem-padding)) calc(0px - var(--top-popup-listItem-padding) / 2) calc(0px - var(--top-popup-listItem-padding)) 0}.top-popup_listMore.top-button{margin:0}ul.top-popup_content li>.a.top-popup_listMore{text-align:center;flex-basis:10px}ul.top-popup_content li>.a.top-popup_listMore:before{color:var(--color-text-2)}ul.top-popup_content li>*>.top-popup_listMore{color:var(--color-layer-4);margin-left:auto;font-size:14px}ul.top-popup_content li>*>i.top-popup_listMore:hover,ul.top-popup_content li>*>i.top-popup_listMore.top-active{color:var(--color-text-primary)}ul.top-popup_content li>*>i.top-popup_listMore:before{display:block;transform:rotate(90deg)}ul.top-popup_content li a.close{background:0 0!important}.top-popup_content>[data-top-icon]:before{--top-icon-size:20px}ul.top-popup_content li>[data-top-icon]{--top-icon-color:var(--color-text-2);--top-icon-size:20px;--top-icon-width:20px}ul.top-popup_content li>[data-top-icon]:not(.top-button):before{height:1rem;margin-right:8px;transition:color .1s}ul.top-popup_content li:hover>[data-top-icon]:not(.top-button){--top-icon-color:var(--color-text-2)}.top-popup_listItem>[data-top-icon]{--top-icon-size:14px}.top-popup_footer{padding:var(--top-padding-3);border-top:1px solid var(--top-popup-border-color);gap:var(--top-gap-2);justify-content:flex-end;display:flex}.top-popup_footerSupportLink{margin-right:auto}.top-popup>[data-widget]{padding:0 var(--top-popup-list-padding)}.top-popup>[data-widget]+hr{margin:0 var(--top-popup-list-padding)}.top-popup .placeholder{z-index:1;margin:-1px 0;position:relative;background:#f9f9f9!important;border:1px solid #e0d9d9!important;border-left:none!important;border-right:none!important}.top-popup-wrapper.simple_list>.top-popup{white-space:nowrap;min-width:0}.top-popup_content .top-column{flex-direction:column;gap:4px;display:flex}.top-popup li .check_all,.top-popup li .clear_all{cursor:pointer;color:var(--color-text-primary);padding:8px;display:inline-block}.top-popup li .check_all:hover,.top-popup li .clear_all:hover{text-decoration:underline}.top-popup li .clear_all{display:none}.top-popup_content table{margin:-9px 0}.top-popup_content table td,.top-popup_content table th{padding:9px var(--top-popup-listItem-padding) 9px 0;vertical-align:top}.top-popup_content table th{white-space:nowrap;width:40%;font-weight:600}ul.top-popup_content .a>[type=checkbox],ul.top-popup_content .a>[type=radio]{margin:-8px 0 -8px auto}ul.top-popup_content a>[class*=icon],ul.top-popup_content i.a>[class*=icon]{transition:all .1s}.top-popup .buttons{white-space:nowrap;background:#ecf0f1;border-top:1px solid #bdc3c7;border-radius:0 0 4px 4px;margin:10px -15px -10px;padding:10px 15px}.top-popup_footer [class*=btn]:not(.btn-transparent){min-width:100px;margin-left:10px;padding:5px 14px}.top-popup_footer [class*=btn]:first-child{margin-left:0}.top-popup_footer .btn.full_width{flex-grow:1;margin:0}\"), forms_Ch1q0UUt_es_js_1.O.insertStyleToPage(\":root{--top-popup-list-padding:0px;--top-popup-listItem-radius:0px;--top-popup-listItem-padding:var(--top-padding-4)}.top-popup-wrapper{--top-popup-footer-offset:25px;transition:background .3s;position:fixed;overflow:hidden;width:auto!important;height:auto!important;top:0!important;left:0!important;right:0!important}.top-popup-wrapper-shown:not(.top-popup-wrapper-closed){-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);background:#00000080}.top-popup-wrapper-shown:not(.top-popup-wrapper-closed)>.top-popup{opacity:1!important}.top-popup{max-height:calc(100% - var(--header-height,0px) - var(--toolbar-height,0px) - 12px);border-radius:8px 8px 0 0;flex-direction:column;transition:opacity .3s,transform .3s;display:flex;transform:translateY(80%);width:auto!important;top:auto!important;right:0!important;bottom:var(--toolbar-height,0px)!important;margin:0!important;left:0!important}.top-popup-wrapper.p-from-top{--top-popup-footer-offset:0px;top:var(--header-height,0px)!important}.with_dialog .top-popup-wrapper.p-from-top{top:50px!important}.top-popup-wrapper.p-from-top>.top-popup{border-radius:0 0 8px 8px;max-height:calc(100% - 24px);transform:translateY(calc(-100% - 24px));top:0!important;bottom:auto!important}.top-popup_widget:not(.p-from-top){order:10}ul.top-popup_content{gap:0}ul.top-popup_content li:not(:last-child){border-bottom:1px solid var(--top-popup-border-color)}.top-popup-wrapper.top-style_alt>.top-popup>ul>li{border-bottom:none}.top-popup_footer{flex-direction:column-reverse}.top-popup_footer>.top-button{--top-forms-base-height:var(--top-forms-base-height_l);width:100%}ul.top-popup_content .top-popup_listItem-title{--top-popup-padding-v:12px}ul.top-popup_content .top-popup_listItem-delimiter{background:var(--color-line-1-opacity);height:4px;margin:0}ul.top-popup_content li:first-child>.top-popup_listItem-delimiter{border-top:1px solid var(--top-popup-border-color)}\", \"m\"), forms_Ch1q0UUt_es_js_1.O.insertStyleToPage(\".top-popup-wrapper{pointer-events:none}.top-popup{min-width:250px;max-width:calc(100vw - var(--top-popup-left) - 16px);max-height:calc(var(--top-popup-bottom) + var(--top-popup-height))}.top-popup-wrapper.p0>*{transform:translateY(-8px)}.top-popup-wrapper.p1>*{transform:translateY(8px)}.top-popup-wrapper.p2>*{transform:translate(8px)}.top-popup-wrapper.p3>*{transform:translateY(8px)}.top-popup-wrapper.p4>*{transform:translate(-8px)}.top-popup-wrapper.p0>.top-popup{top:-16px;left:-8px}.top-popup-wrapper.p1>.top-popup{bottom:calc(100% + 8px)}.top-popup-wrapper.p2>.top-popup{left:calc(100% + 8px)}.top-popup-wrapper.p3>.top-popup{top:calc(100% + 8px)}.top-popup-wrapper.p4>.top-popup{right:calc(100% + 8px)}.top-popup-wrapper.p2>.top-popup,.top-popup-wrapper.p4>.top-popup{margin-top:var(--top-popup-margin)}.top-popup-wrapper.p2.invert-y>.top-popup,.top-popup-wrapper.p4.invert-y>.top-popup{margin-bottom:var(--top-popup-margin)}.top-popup-wrapper.p1.with_notch>.top-popup{margin-bottom:5px}.top-popup-wrapper.p2.with_notch>.top-popup{margin-left:5px}.top-popup-wrapper.p3.with_notch>.top-popup{margin-top:5px}.top-popup-wrapper.p4.with_notch>.top-popup{margin-right:5px}.top-popup-wrapper.invert-x>.top-popup{right:0}.top-popup-wrapper.invert-y>.top-popup{bottom:0}.top-popup-wrapper.p1>.top-popup{max-height:calc(var(--top-popup-top) - var(--header-height,0px) - 16px)}.top-popup-wrapper.p3>.top-popup{max-height:calc(var(--top-popup-bottom) - 16px)}.top-popup-wrapper.p2>.top-popup{max-width:calc(var(--top-popup-right) - 16px)}.top-popup-wrapper.p4>.top-popup{max-width:calc(var(--top-popup-left) - 16px)}.top-popup-wrapper.invert-x>.top-popup{max-width:calc(100vw - var(--top-popup-right) - 16px)}.top-popup-wrapper.invert-y>.top-popup{max-height:calc(100vh - var(--top-popup-bottom) - 16px)}.top-popup-wrapper>.notch{border:7.4px solid #0000;display:block;position:absolute}.top-popup-wrapper.p1>.notch{border-bottom:0;border-top:7.4px solid var(--color-layout-front-1);margin:0 0 7.4px -7.4px;bottom:100%;left:50%}.top-popup-wrapper.p2>.notch{border-left:0;border-right:7.4px solid var(--color-layout-front-1);margin:0 0 -7.4px 7.4px;bottom:50%;left:100%}.top-popup-wrapper.p3>.notch{border-top:0;border-bottom:7.4px solid var(--color-layout-front-1);margin:7.4px 0 0 -7.4px;top:100%;left:50%}.top-popup-wrapper.p4>.notch{border-right:0;border-left:7.4px solid var(--color-layout-front-1);margin:0 7.4px -7.4px 0;bottom:50%;right:100%}.top-popup-wrapper.p1>.notch-border{border-top-color:#0000000d;margin-bottom:6px}.top-popup-wrapper.p2>.notch-border{border-right-color:#0000000d;margin-left:6px}.top-popup-wrapper.p3>.notch-border{border-bottom-color:#0000000d;margin-top:6px}.top-popup-wrapper.p4>.notch-border{border-left-color:#0000000d;margin-right:6px}.top-popup-wrapper.p1.with_notch>.top-popup,.top-popup-wrapper.p3.with_notch>.top-popup{margin-left:-16px!important}.top-popup-wrapper.p1.with_notch>.notch,.top-popup-wrapper.p3.with_notch>.notch{margin-left:-8px!important}.top-popup-wrapper.p1.with_notch.invert-x,.top-popup-wrapper.p3.with_notch.invert-x{margin-left:3px!important}.top-popup-wrapper.p1.with_notch.invert-x>.notch,.top-popup-wrapper.p3.with_notch.invert-x>.notch{margin-left:-9px!important}ul.top-popup_content li>*>i.top-popup_listMore{visibility:hidden;transition:none}ul.top-popup_content li:hover>*>i.top-popup_listMore,ul.top-popup_content li>.top-active>i.top-popup_listMore,ul.top-popup_content li>*>i.top-popup_listMore.top-active{visibility:visible}.top-popup_listItemActions{display:none}.top-popup_listItem.top-active>.top-popup_listItemActions,.top-popup_listItem:hover>.top-popup_listItemActions{display:flex}\", \"pc\");\n var s = class o extends a {\n constructor(e, n) {\n super(), (0, forms_Ch1q0UUt_es_js_1.K)(this, \"elActiveByDefault\", void 0), (0, forms_Ch1q0UUt_es_js_1.K)(this, \"elPopup\", void 0), (0, forms_Ch1q0UUt_es_js_1.K)(this, \"elPopupInner\", void 0), (0, forms_Ch1q0UUt_es_js_1.K)(this, \"elPopupHeader\", void 0), (0, forms_Ch1q0UUt_es_js_1.K)(this, \"elPopupWidget\", void 0), (0, forms_Ch1q0UUt_es_js_1.K)(this, \"elPopupBody\", void 0), (0, forms_Ch1q0UUt_es_js_1.K)(this, \"elPopupFooter\", void 0), (0, forms_Ch1q0UUt_es_js_1.K)(this, \"elFront\", void 0), (0, forms_Ch1q0UUt_es_js_1.K)(this, \"openerIsInput\", !1), (0, forms_Ch1q0UUt_es_js_1.K)(this, \"popupParent\", void 0), (0, forms_Ch1q0UUt_es_js_1.K)(this, \"$\", void 0), (0, forms_Ch1q0UUt_es_js_1.K)(this, \"elStartPosition\", void 0), (0, forms_Ch1q0UUt_es_js_1.K)(this, \"shift\", {\n top: 0,\n left: 0\n }), (0, forms_Ch1q0UUt_es_js_1.K)(this, \"isClosed\", !1), (0, forms_Ch1q0UUt_es_js_1.K)(this, \"isFirstClick\", !0), (0, forms_Ch1q0UUt_es_js_1.K)(this, \"type\", void 0), (0, forms_Ch1q0UUt_es_js_1.K)(this, \"options\", {\n popup: \"\",\n p: 0,\n notch: !1,\n class: \"\",\n posBy: \"left\",\n frontSelector: \"\",\n invertX: !1,\n openByHover: !1,\n useOriginal: !1,\n transitionDuration: 100,\n isFullScreen: !1\n }), (0, forms_Ch1q0UUt_es_js_1.K)(this, \"events\", {}), this.init(o.componentName, e, n);\n }\n async mount() {\n if (!(this.el instanceof HTMLElement))\n return;\n let t = this.vueGetComponent();\n if (this.el.closest(\".top-popup-wrapper\") && (this.popupParent = worker_D_5BEVm7_es_js_1.t.getPopup(this.el.closest(\".top-popup-wrapper\"))), await this.mountJQuery(), dom_js_1.default.css(this.el, \"position\") !== \"absolute\" && (this.el.style.position = \"relative\"), this.el.dataset.topPopupOpened = \"opened\", this.elActiveByDefault = this.el.classList.contains(\"top-active\"), this.el.classList.add(\"top-active\"), this.openerIsInput = this.el.classList.contains(\"top-input\"), this.el.classList.contains(\"top-input-project_name\") && (this.openerIsInput = !1), this.openerIsInput) {\n let e = this.el.querySelector(\"input\");\n e && !e.__popupOnBlur && (e.__popupOnBlur = !0, e.addEventListener(\"blur\", (e) => {\n let t = e.relatedTarget;\n t && worker_D_5BEVm7_es_js_1.t.getPopup(t)?.elPopup !== t && worker_D_5BEVm7_es_js_1.t.getClosestPopup(e.relatedTarget, this.el) || worker_D_5BEVm7_es_js_1.t.getPopupFromOpener(this.el)?.close();\n }));\n }\n if (t)\n this.type = \"vue\", this.options.popup = \"\", this.elPopup = dom_js_1.default.genEl(\"div\", {}, this.options.popup);\n else if (this.options.popup?.match(/^[#.]/))\n this.type = \"selector\", this.elPopup = document.querySelector(`${this.options.popup}.template`) || void 0;\n else {\n if (this.type = \"html\", this.options.useOriginal)\n throw \"Option useOriginal not allowed for text templates\";\n this.elPopup = dom_js_1.default.genEl(\"div\", {}, this.options.popup ?? \"\");\n }\n if (!t || t?.opened) {\n let e;\n if (t?.opened ? e = t.popup.elPopup : this.type === \"html\" ? this.options.id && (e = o.popupById.get(this.options.id)?.elPopup || void 0) : e = document.querySelector(`${this.options.popup}.top-popup-wrapper-shown`) || void 0, e) {\n this.elPopup = e, this.el.dataset.topPopupOpened = \"\", this.elActiveByDefault || this.el.classList.remove(\"top-active\"), worker_D_5BEVm7_es_js_1.t.close(this.elPopup), setTimeout(() => this.mount(), this.options.transitionDuration);\n return;\n }\n }\n if (this.elPopup ||= document.querySelector(`${this.options.popup}:not(.top-popup-wrapper)`) || void 0, !this.elPopup)\n return;\n if (this.options.id) {\n if (o.popupById.get(this.options.id) && o.popupById.get(this.options.id) !== this)\n return;\n o.popupById.set(this.options.id, this);\n }\n for (this.options.useOriginal ? (this.elStartPosition = this.elPopup.closest(\".top-popup-el-start-position\"), this.elStartPosition || (this.elStartPosition = dom_js_1.default.wrap(this.elPopup, \"i\"), this.elStartPosition.classList.add(\"top-popup-el-start-position\", \"hidden\"))) : (this.elPopup = this.elPopup.cloneNode(!0), this.type === \"selector\" && !this.elPopup.matches(\".template\") && (this.elPopup.classList.remove(\"hidden\"), this.elPopup.querySelector(\":scope > .top-popup_content\") || this.elPopup.classList.add(\"top-popup_content\"), this.elPopup = dom_js_1.default.wrap(this.elPopup, \"div\")), this.type === \"html\" && (this.elPopup.querySelector(\":scope > .top-popup_content\") || (this.elPopup.classList.add(\"top-popup_content\"), this.elPopup = dom_js_1.default.wrap(this.elPopup, \"div\"))), (this.type === \"selector\" && !this.elPopup.matches(\".template\") || this.type === \"html\" || this.type === \"vue\") && (dom_js_1.default.querySelectorAllArray(this.elPopup, \"[data-top-popup]\").forEach((e) => {\n e instanceof HTMLElement && (e.dataset.topPopupPosBy = \"fixed\");\n }), dom_js_1.default.querySelectorAllArray(this.elPopup, \".top-popup-wrapper\").forEach((e) => e.remove()))), worker_D_5BEVm7_es_js_1.t.decoratorBeforeOpen(this), t && (this.options.class = t.classRef.value, t.transitionDurationRef.value !== void 0 && (this.options.transitionDuration = t.transitionDurationRef.value, this.elPopup instanceof HTMLElement && this.elPopup.style.setProperty(\"--top-popup-transition-delay\", this.options.transitionDuration + \"ms\"))), this.elPopupInner = document.createElement(\"div\"), this.elPopupInner.classList.add(\"top-popupPanel\", \"top-popup\"); this.elPopup.firstChild;)\n this.elPopupInner.appendChild(this.elPopup.firstChild);\n if (this.elPopup.append(this.elPopupInner), this.elPopup.classList.add(\"top-popup-wrapper\"), this.options.class) {\n let e = this.options.class.split(\" \");\n this.elPopup.classList.add(...e);\n }\n this.options.notch && (this.elPopup.classList.add(\"with_notch\"), this.elPopup.insertAdjacentHTML(\"beforeend\", \"<i class=\\\"notch notch-border\\\"></i><i class=\\\"notch\\\"></i>\")), await this.vueOpen(), this.elPopupHeader = this.elPopupInner.querySelector(\".top-popup_header\"), this.elPopupWidget = this.elPopupInner.querySelector(\".top-popup_widget\"), this.elPopupBody = this.elPopupInner.querySelector(\".top-popup_content\"), this.elPopupFooter = this.elPopupInner.querySelector(\".top-popup_footer\");\n let a = !!this.elPopup.querySelector(\"[data-widget=\\\"search\\\"]\");\n if (this.options.isFullScreen && !a) {\n let t = (0, forms_Ch1q0UUt_es_js_1.E)();\n !this.elPopupHeader && t.Common.Close && (this.elPopupHeader = dom_js_1.default.genEl(\"i\", { class: \"top-popup_header\" }), this.elPopupInner.prepend(this.elPopupHeader), this.elPopupHeader.prepend(dom_js_1.default.genEl(\"i\", { class: \"a closer\" }, t.Common.Close)), this.elPopupHeader.append(dom_js_1.default.genEl(\"i\", { class: \"top-popup_headerButton\" })));\n }\n dom_js_1.default.storage(this.elPopup, o.componentName, this), this.options.frontSelector && (this.elFront = document.querySelector(this.options.frontSelector)), this.elFront ||= this.el.closest(\".top-popup-front\"), this.elFront ||= document.body, this.elPopup instanceof HTMLElement && (this.elPopup.style.width = this.el.offsetWidth + \"px\", this.elPopup.style.height = this.el.offsetHeight + \"px\", this.elPopup.style.top = this.el.offsetTop + \"px\", this.elPopup.style.right = parseInt(this.el.style.right || \"0\") + \"px\", this.elPopup.style.bottom = parseInt(this.el.style.bottom || \"0\") + \"px\"), this.el.parentElement?.insertBefore(this.elPopup, this.el), this.elPopup.classList.remove(\"template\"), this.options.invertX && this.elPopup.classList.add(\"invert-x\");\n let s = !!this.el.closest(\".modal-header\");\n s ||= !!this.el.closest(\"#top_panel\"), s ||= !!this.el.closest(\"#secondmenu\"), s && this.elPopup.classList.add(\"p-from-top\"), setTimeout(() => this.elPopup?.classList.add(\"top-popup-wrapper-shown\")), this.elFront && !this.elFront.matches(\"body\") && (this.elFront.append(this.elPopup), this.shift.top = dom_js_1.default.offset(this.el).top - this.el.offsetTop - dom_js_1.default.offset(this.elFront).top, this.shift.left = dom_js_1.default.offset(this.el).left - this.el.offsetLeft - dom_js_1.default.offset(this.elFront).left, this.shift.top -= parseInt(this.el.style[\"margin-top\"] || 0), this.shift.left -= parseInt(this.el.style[\"margin-left\"] || 0), this.elPopup instanceof HTMLElement && (this.elPopup.style.top = parseInt(this.elPopup.style.top || \"0\") + this.shift.top + \"px\", this.elPopup.style.left = parseInt(this.elPopup.style.left || \"0\") + this.shift.left + \"px\")), this.$ && forms_Ch1q0UUt_es_js_1.O.$ && this.$.trigger(\"aftershow.top-menu-popup\", [forms_Ch1q0UUt_es_js_1.O.$(this.elPopup)]), this.recalcPosition(), this.elPopup.setAttribute(\"tabindex\", \"0\"), this.focus(), worker_D_5BEVm7_es_js_1.t.decoratorAfterOpen(this), this.mountEvents();\n }\n async mountJQuery() {\n forms_Ch1q0UUt_es_js_1.O.$ && (this.$ = forms_Ch1q0UUt_es_js_1.O.$(this.el));\n }\n focus() {\n let e;\n this.elPopup && (e = dom_js_1.default.querySelectorVisible(this.elPopup, \".top-popup-autofocus\"), e ||= dom_js_1.default.querySelectorVisible(this.elPopup, \":read-write, select:not(:disabled)\"), e ||= dom_js_1.default.querySelectorVisible(this.elPopup, \".top-popup_footer .top-button\"), !e && !this.openerIsInput && (e = this.elPopup), e instanceof HTMLElement && e.focus({ preventScroll: !0 }), setTimeout(() => {\n e instanceof HTMLElement && e.focus({ preventScroll: !0 });\n }, this.options.transitionDuration));\n }\n mountEvents() {\n this.addEventListenerWithUnmount(document, \"mousedown\", (e) => this.onMousedown(e)), this.openerIsInput ? this.onFocusCloseOthers() : this.elPopup && this.elPopupInner && (this.addEventListenerWithUnmount(this.elPopup, \"focus\", (e) => this.onFocus(e)), this.options.openByHover && (this.addEventListenerWithUnmount(this.elPopup, \"mouseleave\", (e) => this.onMouseleave(e)), this.addEventListenerWithUnmount(this.elPopupInner, \"mouseleave\", (e) => this.onMouseleave(e)))), this.options.isFullScreen && this.elPopupBody && this.addEventListenerWithUnmount(this.elPopupBody, \"touchmove\", (e) => this.onTouchmove(e));\n }\n onMousedown(e) {\n if (!this.elPopup || !(e.target instanceof Element) || !this.isFirstClick || (this.isFirstClick = !1, setTimeout(() => this.isFirstClick = !0), e instanceof MouseEvent && e.button !== 0))\n return;\n let t = dom_js_1.default.querySelectorVisibleLast(document.body, \":scope > .top-popup-wrapper\");\n if (t && t !== this.elPopup || e.target.closest(\".top-popup-front\") && (t = dom_js_1.default.querySelectorVisibleLast(e.target.closest(\".top-popup-front\"), \":scope > .top-popup-wrapper\"), t && t !== this.elPopup))\n return;\n if (e.target.closest(`[data-top-popup-id=\"${this.options.id}\"]`)) {\n e.preventDefault();\n return;\n }\n let n = e.target.closest(\"input, select, textarea, button, [tabindex]\");\n n === this.elPopup && (n = null);\n let a = !n;\n a && this.openerIsInput && e.preventDefault(), !this.elPopup.contains(e.target) && (!this.elPopup.closest(\".ui-dialog\") || e.target.closest(\".ui-dialog\")) && (worker_D_5BEVm7_es_js_1.t.decoratorIsIgnoreOuterClick(e) || worker_D_5BEVm7_es_js_1.t.close(this.elPopup, a));\n }\n onFocus(e) {\n e.target instanceof Element && e.target.matches(\"input\") || this.onFocusCloseOthers();\n }\n onFocusCloseOthers() {\n this.isClosed || worker_D_5BEVm7_es_js_1.t.getAllVisible().forEach((e) => {\n this.elPopup?.contains(e) || this.popupParent?.elPopup !== e && this.popupParent?.popupParent?.elPopup !== e && worker_D_5BEVm7_es_js_1.t.close(e);\n });\n }\n onMouseleave(e) {\n setTimeout(() => {\n this.elPopupInner && this.elPopupInner.matches(\":hover\") || !this.elPopup || worker_D_5BEVm7_es_js_1.t.close(this.elPopup);\n }, 100);\n }\n onResize() {\n this.elPopup && this.elPopup.parentElement !== document.body && document.body.append(this.elPopup), this.elPopup instanceof HTMLElement && (this.elPopup.style.top = dom_js_1.default.offset(this.el).top + \"px\", this.elPopup.style.left = dom_js_1.default.offset(this.el).left + \"px\");\n }\n unmount() {\n super.unmount(), this.el instanceof HTMLElement && (this.el.dataset.topPopupOpened = \"\"), this.elActiveByDefault || this.el.classList.remove(\"top-active\");\n let e = this.el.getAttribute(\"style\");\n e && (e = e.replace(/position:[^;]*;?/g, \"\"), this.el.setAttribute(\"style\", e));\n }\n recalcPosition(e) {\n if (!(this.elPopup instanceof HTMLElement))\n return;\n let t = e ?? this.options.p, n;\n if (this.el instanceof HTMLElement)\n switch (this.elPopup.style.height = this.el.offsetHeight + \"px\", this.elPopup.classList.remove(\"p0\", \"p1\", \"p2\", \"p3\", \"p4\"), this.elPopup.classList.add(\"p\" + t), this.options.posBy) {\n case \"left\":\n n = this.el.offsetLeft + parseInt(this.el.style[\"margin-left\"] || \"0\"), n += this.shift.left, this.elPopup.style.left = n + \"px\";\n break;\n case \"right\":\n if (!(this.el.offsetParent instanceof HTMLElement))\n break;\n n = this.el.offsetLeft + parseInt(this.el.style[\"margin-left\"] || \"0\"), this.elPopup.style.right = this.el.offsetParent.offsetWidth - this.el.offsetWidth - n + \"px\";\n break;\n case \"fixed\":\n this.addEventListenerWithUnmount(window, \"resize\", () => this.onResize()), this.onResize();\n break;\n default: this.options.posBy?.append(this.elPopup);\n }\n let a = this.elPopup.getBoundingClientRect();\n this.elPopup.style.setProperty(\"--top-popup-height\", this.elPopup.offsetHeight + \"px\"), this.elPopup.style.setProperty(\"--top-popup-right-bounding\", a.right + \"px\"), this.elPopup.style.setProperty(\"--top-popup-bottom-bounding\", a.bottom + \"px\"), this.elPopup.style.setProperty(\"--top-popup-top\", a.top + \"px\"), this.elPopup.style.setProperty(\"--top-popup-left\", a.left + \"px\"), this.elPopupInner instanceof HTMLElement && (this.elPopupInner.style.maxWidth = \"unset\", this.elPopupInner.style.maxHeight = \"unset\");\n let o = {\n top: !1,\n right: !1,\n bottom: !1,\n left: !1\n }, s = {\n top: !1,\n right: !1,\n bottom: !1,\n left: !1\n }, c = a.left > window.innerWidth / 2, l = a.top > window.innerHeight / 2;\n t === 4 && (c = !c), t === 1 && (l = !l);\n let u = this.elPopupInner?.getBoundingClientRect(), d, f, p = dom_js_1.default.cssNumber(this.elPopup, \"--top-popup-offset\"), m = this.el.offsetHeight, h = this.el.offsetWidth;\n u && (d = window.innerWidth - u.right, f = window.innerHeight - u.bottom, u.top < p && (o.top = !0, u.top < p * 2 - u.height + m && (s.top = !0)), d < p && (o.right = !0, d < p * 2 - u.width + h && (s.right = !0)), f < p && (o.bottom = !0, f < p * 2 - u.height + m && (s.bottom = !0)), u.left < p && (o.left = !0, u.left < p * 2 - u.width + m && (s.left = !0)));\n let g = (e, t) => {\n if (e === \"x\") {\n if (!o.right && !o.left || (t === 1 || t === 3) && !s.right && !s.left && c)\n return t;\n o.right && (t === 0 || t === 2) && c && (t = 4), o.left && (t === 0 || t === 4) && c && (t = 2);\n }\n if (e === \"y\") {\n if (!o.top && !o.bottom || (t === 2 || t === 4) && !s.top && !s.bottom && l)\n return t;\n o.top && (t === 0 || t === 1) && l && (t = 3), o.bottom && l && (t = 1);\n }\n return t;\n }, _ = [\"x\", \"y\"];\n (t === 0 || t === 1 || t === 3) && (_ = [\"y\", \"x\"]);\n let v = t ?? 0;\n _.forEach((e) => {\n v = g(e, v);\n }), t = v, o.bottom && (t === 2 || t === 4) && l && this.elPopup.classList.add(\"invert-y\"), o.right && (t === 0 || t === 1 || t === 3) && this.elPopup.classList.add(\"invert-x\"), this.elPopup.classList.remove(\"p0\", \"p1\", \"p2\", \"p3\", \"p4\"), this.elPopup.classList.add(\"p\" + t), this.elPopupInner instanceof HTMLElement && (this.elPopupInner.style.maxWidth = \"\", this.elPopupInner.style.maxHeight = \"\"), worker_D_5BEVm7_es_js_1.t.scrollToActive(this.elPopup);\n }\n onTouchmove(e) {\n if (e.currentTarget instanceof HTMLElement && e.target instanceof HTMLElement) {\n if (e.currentTarget.scrollWidth > e.currentTarget.offsetWidth || e.target.parentElement?.scrollWidth && e.target.parentElement?.offsetWidth && e.target.parentElement.scrollWidth > e.target.parentElement?.offsetWidth)\n return;\n e.currentTarget.matches(\".has_scroll\") || e.preventDefault();\n }\n }\n close() {\n this.isClosed || (this.isClosed = !0, this.$ && forms_Ch1q0UUt_es_js_1.O.$ && this.elPopup && this.$.trigger(\"afterclose.top-menu-popup\", [forms_Ch1q0UUt_es_js_1.O.$(this.elPopup)]), !worker_D_5BEVm7_es_js_1.t.noClose && (this.unmount(), this.elPopup?.classList.add(\"top-popup-wrapper-closed\"), setTimeout(() => {\n if (this.vueClose(), !this.elPopup)\n return;\n this.options.useOriginal ? (this.elPopup.removeAttribute(\"style\"), this.elPopup.classList.remove(\"top-popup-wrapper-shown\", \"top-popup-wrapper-closed\"), this.elPopup.classList.add(\"template\"), this.elStartPosition?.append(this.elPopup), this.elPopup.querySelector(\"div.top-popup_content.top-column\")?.classList.remove(\"top-column\"), this.elPopup.querySelector(\".notch-border\")?.remove(), this.elPopup.querySelector(\".notch\")?.remove(), this.elPopupInner?.replaceWith(...this.elPopupInner.childNodes), dom_js_1.default.storageClear(this.elPopup)) : (dom_js_1.default.storageClear(this.elPopup), this.elPopup.remove(), delete this.elPopup), this.options.id && o.popupById.delete(this.options.id);\n let e = worker_D_5BEVm7_es_js_1.t.getAllVisible(), t = e.length && e[e.length - 1];\n t ? worker_D_5BEVm7_es_js_1.t.getPopup(t).focus() : document.documentElement.classList.remove(\"with_popup\");\n }, this.options.transitionDuration)));\n }\n async vueOpen() {\n await this.vueGetComponent()?.onOpen(this);\n }\n vueClose() {\n this.vueGetComponent()?.onClose(this);\n }\n vueGetComponent() {\n if (this.el instanceof HTMLElement && this.options.id)\n return worker_D_5BEVm7_es_js_1.t.vueConnectors.get(this.options.id);\n }\n };\n exports.TopLibPopup = s;\n (0, forms_Ch1q0UUt_es_js_1.K)(s, \"componentName\", \"TopPopup\"), (0, forms_Ch1q0UUt_es_js_1.K)(s, \"popupById\", /* @__PURE__ */ new Map()), o.init();\n});\n//# sourceMappingURL=popup-l46cef9d.es.js.map\n","import DOM from '@/core/utils/dom';\n\n/**\n * Базовый компонент для js компонентов, не имеет отношения к Vue\n */\nclass Component {\n\n\tstatic componentName = 'Top';\n\n\tcomponentName: string | undefined; // имя класса компонента\n\tclassName: string | undefined; // имя css класса компонента\n\tuid: string | undefined; // уникальный id компонента\n\tel: HTMLElement | undefined; // элемент, связанный с компонентом\n\toptions = {}; // параметры компонента\n\n\tunmountEls: HTMLElement[] = [];\n\tunmountEvents: any[] = [];\n\n\t// переопредлять нельзя\n\t// если компонент инициирован, необходимо сразу его вернуть и выполнить reInit() вместо mount()\n\t// используется init вместо constructor, так как super constructor выполняется до Object.defineProperty() параметров класса\n\tinit(componentName: string, el: HTMLElement, options: object): Component | void {\n\t\tif (!el) {\n\t\t\tthrow componentName + ': el is undefined';\n\t\t}\n\n\t\tconst component = Component.getComponent(el, componentName);\n\n\t\tif (component) {\n\t\t\tcomponent.reInit(options);\n\n\t\t\treturn component;\n\t\t}\n\n\t\tthis.componentName = componentName;\n\t\tthis.className = 'top' + componentName[0].toUpperCase() + componentName.substring(1);\n\t\tthis.uid = this.componentName + (Math.random() + '').replace('.', '');\n\n\t\tthis._setComponent(el);\n\t\tthis.el = el;\n\t\tthis.el.classList.add(this.className);\n\t\tthis.options = Object.assign(this.options, options);\n\n\t\tthis.mount();\n\t}\n\n\t// получить инициированный компонент\n\tstatic getComponent(el: HTMLElement, componentName: string): any {\n\t\treturn DOM.storage(el, '#' + componentName);\n\t}\n\n\t// устанвоить компонент\n\t_setComponent(el: HTMLElement) {\n\t\tDOM.storage(el, '#' + this.componentName, this);\n\t}\n\n\t// функция подключения компонента\n\tmount(): void {\n\t\tthrow 'Please, add method mount() to component: ' + this.componentName;\n\t}\n\n\t// функция отключения компонента\n\tunmount(): void {\n\t\tDOM.storage(this.el, '#' + this.componentName, null);\n\n\t\tthis.unmountEls.forEach((el) => {\n\t\t\tel.remove();\n\t\t});\n\n\t\tthis.unmountEls = [];\n\n\t\tthis.unmountEvents.forEach((eventData) => {\n\t\t\teventData.el.removeEventListener(eventData.type, eventData.listener, eventData.options);\n\t\t});\n\n\t\tthis.unmountEvents = [];\n\t}\n\n\t// указание новые элементы, которые должны будут удалиться после unmount\n\tregisterElForUnmount(el: HTMLElement): void {\n\t\tthis.unmountEls.push(el);\n\t}\n\n\t// указание новые события, которые должны будут удалиться после unmount\n\taddEventListenerWithUnmount(\n\t\tel: HTMLElement | Document | Window,\n\t\ttype: keyof GlobalEventHandlersEventMap,\n\t\tlistener: (this: HTMLElement, e: Event) => any,\n\t\toptions?: any,\n\t): void {\n\t\tel.addEventListener(type, listener, options);\n\n\t\tthis.registerEventForUnmount(el, type, listener, options);\n\t}\n\n\t// указание новые события, которые должны будут удалиться после unmount\n\tregisterEventForUnmount(\n\t\tel: HTMLElement | Document | Window,\n\t\ttype: keyof GlobalEventHandlersEventMap,\n\t\tlistener: (this: HTMLElement, e: Event) => any,\n\t\toptions?: any,\n\t): void {\n\t\tconst eventData = {\n\t\t\tel: el,\n\t\t\ttype: type,\n\t\t\tlistener: listener,\n\t\t\toptions: options,\n\t\t};\n\n\t\tthis.unmountEvents.push(eventData);\n\t}\n\n\t// функция перенастройки уже подключенного компонента\n\treInit(_options: object): void {\n\t\tthrow 'Please, add method reInit() to component: ' + this.componentName;\n\t}\n\n\t// удалить элементы из DOM, но не из памяти\n\tstatic detach(nodes: NodeList | HTMLElement): void {\n\t\tif (nodes instanceof NodeList) {\n\t\t\tnodes.forEach((node) => node.parentElement?.removeChild(node));\n\t\t} else {\n\t\t\tconst el = nodes;\n\t\t\tel.parentElement?.removeChild(el);\n\t\t}\n\t}\n\n}\n\nexport default Component;\n","import Worker from '@/components/popup/lib/worker';\nimport DOM from '@/core/utils/dom';\n\n/**\n * Глобальные события, для реализации Popup\n * Автоматически инициируется при первой загрузке, не является выгружаемым модулем\n *\n * Если в меню встречает класс .preloader, то событие нажатия на кнопку через enter будет остановлено\n */\nclass GlobalEvents {\n\n\tprivate static isInited = false;\n\n\t/**\n\t * Добавить глобальные обработчики\n\t *\n\t * Добавляются на страницу один раз и навсегда\n\t */\n\tstatic init(): void {\n\t\tif (this.isInited) return;\n\n\t\tthis.isInited = true;\n\n\t\tdocument.addEventListener('click', this.onclickCapture, { capture: true });\n\t\tdocument.addEventListener('click', this.onclick);\n\t\tdocument.addEventListener('keydown', this.onkeydown);\n\t}\n\n\t/**\n\t * Глобальный обработчик захватов кликов\n\t *\n\t * Обрабатывает захватов клики внутри Popup\n\t */\n\tprivate static onclickCapture(e: Event): void {\n\t\tif (!(e.target instanceof HTMLElement)) return;\n\n\t\t// меню\n\t\tconst elPopup = e.target.closest<HTMLElement>('.top-popup-wrapper');\n\n\t\t// клик вне меню\n\t\tif (!elPopup) {\n\t\t\treturn;\n\t\t}\n\n\t\t// клик по кнопке открытия другого меню\n\t\tif (e.target.matches('[data-top-popup]')) {\n\t\t\t// список меню, в котором был сделан клик\n\t\t\tconst elUl = e.target.closest<HTMLElement>('ul');\n\n\t\t\t// элемент меню, по которому был сделан клик\n\t\t\tconst elItem = e.target.closest<HTMLElement>('a, .a');\n\n\t\t\t// сделать элемент меню, по которому сделан клик активным\n\t\t\tif (elUl) {\n\t\t\t\telUl.querySelector('a.top-active, .a.top-active')?.classList.remove('top-active');\n\t\t\t}\n\n\t\t\tif (elItem) {\n\t\t\t\telItem.classList.add('top-active');\n\t\t\t}\n\n\t\t\te.stopPropagation();\n\n\t\t\treturn;\n\t\t}\n\n\t\t// клик по фону меню\n\t\tif (e.target.matches('.top-popup-wrapper')) {\n\t\t\tconst elPopup = e.target;\n\n\t\t\tWorker.close(elPopup, true);\n\n\t\t\te.stopPropagation();\n\n\t\t\treturn;\n\t\t}\n\t}\n\n\t/**\n\t * Глобальный обработчик кликов\n\t *\n\t * Обрабатывает клики внутри Popup\n\t */\n\tprivate static onclick(e: Event): void {\n\t\tif (!(e.target instanceof HTMLElement)) return;\n\n\t\t// элементы меню, клик по которым должен его закрыть\n\t\tconst elCloser = e.target.closest<HTMLElement>('.closer, a, .a, .top-button');\n\t\tif (elCloser) {\n\t\t\t// меню\n\t\t\tconst elPopup = e.target.closest<HTMLElement>('.top-popup-wrapper');\n\n\t\t\t// клик вне меню\n\t\t\tif (!elPopup) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// элемент имеет модификатор, запрещаюущий закрытие меню по клику на него\n\t\t\tif (elCloser.matches('.top-popup-noCloser')) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// deprecated, ссылки с href=\".\" запрещены, они должны быть заменены на .top-popup_listItem-button\n\t\t\tif (elCloser.getAttribute('href') === '.') {\n\t\t\t\te.preventDefault();\n\t\t\t}\n\n\t\t\t// закрыть меню\n\t\t\tWorker.close(elPopup, true);\n\t\t}\n\t}\n\n\t/**\n\t * Глобальный обработчик нажатия кнопки на клавиатуре\n\t */\n\tprivate static onkeydown(e: KeyboardEvent): void {\n\t\tif (!(e.target instanceof HTMLElement)) return;\n\n\t\tlet elPopup = e.target.closest<HTMLElement>('.top-popup-wrapper');\n\n\t\tif (!elPopup) {\n\t\t\telPopup = Worker.getPopupFromOpener(e.target)?.elPopup ?? null;\n\t\t}\n\n\t\t// нажатие не в меню\n\t\tif (!elPopup) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst elUl = elPopup.querySelector<HTMLElement>('ul.top-popup_content');\n\n\t\tswitch (e.key) {\n\t\t\tcase 'Escape':\n\t\t\t\tWorker.close(elPopup, true);\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Enter': {\n\t\t\t\t// атоматическое нажатие кнопок при нажатии Enter\n\t\t\t\tif (!elUl) {\n\t\t\t\t\tif (DOM.querySelectorVisible(elPopup, '.preloader')) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\t// deprecated, старый код на сайте\n\t\t\t\t\tconst elBtn = DOM.querySelectorVisible(elPopup, '.top-popup_footer .go, .top-popup_footer [data-action]');\n\t\t\t\t\tif (elBtn instanceof HTMLElement) {\n\t\t\t\t\t\telBtn.click();\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Запуск клика последней кнопки, расположенной в footer'е Popup'а, нажатием клавиши Enter\n\t\t\t\t\tlet elFooterLastBtn = DOM.querySelectorVisibleLast(elPopup, '.top-popup_footer .top-button:focus');\n\t\t\t\t\tif (!elFooterLastBtn) elFooterLastBtn = DOM.querySelectorVisibleLast(elPopup, '.top-popup_footer .top-button');\n\t\t\t\t\tif (elFooterLastBtn instanceof HTMLElement) {\n\t\t\t\t\t\telFooterLastBtn.click();\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\t// перейти по ссылке по нажатию на Enter\n\t\t\t\t// данный функуционал игнорирует SPA\n\t\t\t\tconst elLink = DOM.querySelectorVisible(elPopup, 'li > a.top-active');\n\t\t\t\tif (elLink && elLink.getAttribute('href')) {\n\t\t\t\t\t// фокус может находиться на другой ссылке\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\tlocation.href = elLink.getAttribute('href')!;\n\t\t\t\t}\n\n\t\t\t\t// кликнуть по элементу меню по нажатию на Enter\n\t\t\t\tconst elItem = elPopup.querySelector<HTMLElement>('li > .top-active');\n\t\t\t\tif (elItem instanceof HTMLElement) {\n\t\t\t\t\telItem.click();\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// управление стрелками\n\t\t\tcase 'ArrowUp':\n\t\t\tcase 'ArrowRight':\n\t\t\tcase 'ArrowDown':\n\t\t\tcase 'ArrowLeft': {\n\t\t\t\tif (!elUl) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (e.key === 'ArrowRight' || e.key === 'ArrowLeft') {\n\t\t\t\t\tconst elMoreVisible = DOM.querySelectorVisible(\n\t\t\t\t\t\telPopup,\n\t\t\t\t\t\t'ul.top-popup_content > li:not(.top-popup_liNoSelectable) > .top-active > .top-popup_listMore',\n\t\t\t\t\t);\n\n\t\t\t\t\tif (elMoreVisible) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}else if((e.target as HTMLElement).tagName === 'INPUT'){\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\n\t\t\t\tconst elItemActive = elPopup.querySelector<HTMLElement>('ul.top-popup_content > li:not(.top-popup_liNoSelectable) > .top-active')?.parentElement;\n\n\t\t\t\t// есть подменю\n\t\t\t\tif (e.key === 'ArrowRight' && elItemActive) {\n\t\t\t\t\t// const elItemMoreActive = elItemActive.querySelector<HTMLElement>('[data-top-popup].top-active');\n\t\t\t\t\t// if (elItemMoreActive) {\n\t\t\t\t\t// \treturn elItemMoreActive.click();\n\t\t\t\t\t// }\n\n\t\t\t\t\tconst elMore = elItemActive.querySelector<HTMLElement>('.top-active > .top-popup_listMore');\n\t\t\t\t\tif (elMore instanceof HTMLElement) {\n\t\t\t\t\t\treturn elMore.click();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst elsLiVisible = DOM.querySelectorAllVisible(elPopup, 'ul.top-popup_content > li:not(.top-popup_liNoSelectable)');\n\t\t\t\tconst countLi = elsLiVisible.length;\n\n\t\t\t\tif (!countLi) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tlet index = -1;\n\t\t\t\tif (elItemActive) {\n\t\t\t\t\tindex = elsLiVisible.indexOf(elItemActive);\n\t\t\t\t}\n\n\t\t\t\tif (e.key === 'ArrowUp' || e.key === 'ArrowLeft') {\n\t\t\t\t\tindex--;\n\t\t\t\t} else {\n\t\t\t\t\tindex++;\n\t\t\t\t}\n\n\t\t\t\t// это первый элемен, \"Назад\" должен закрывать окно\n\t\t\t\tif (e.key === 'ArrowLeft' && index <= -1) {\n\t\t\t\t\tif (e.target.matches('input')) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Worker.close(elPopup, true);\n\t\t\t\t}\n\n\t\t\t\t// это последний элемен, \"Вперед\" не должен ни чего делать\n\t\t\t\tif (e.key === 'ArrowRight' && index === countLi) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (index < 0) {\n\t\t\t\t\tindex = countLi - 1;\n\t\t\t\t}\n\n\t\t\t\tif (index > countLi - 1) {\n\t\t\t\t\tindex = 0;\n\t\t\t\t}\n\n\t\t\t\telPopup.querySelectorAll('ul.top-popup_content > li > .top-active').forEach(el => el.classList.remove('top-active'));\n\t\t\t\telsLiVisible[index].querySelector(':scope > a, :scope > .a')?.classList.add('top-active');\n\n\t\t\t\tWorker.scrollToActive(elPopup);\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n}\n\nexport default GlobalEvents;\n","import Core from '@/core/core/core';\nimport Component from '@/components/component';\nimport DOM from '@/core/utils/dom';\nimport Worker from '@/components/popup/lib/worker';\nimport GlobalEvents from '@/components/popup/lib/popup.globalEvents';\n\nimport css from '@/components/popup/popup/style/popup.css?inline';\nimport cssM from '@/components/popup/popup/style/popup.m.css?inline';\nimport cssPC from '@/components/popup/popup/style/popup.pc.css?inline';\nimport { useI18n } from '@/core/plugins/i18n';\nimport type { OpenerProps } from '@/components/popup/popup/opener/types';\n\nCore.insertStyleToPage(css);\nCore.insertStyleToPage(cssM, 'm');\nCore.insertStyleToPage(cssPC, 'pc');\n\nexport interface PopupOptions {\n\tpopup?: string,\n\tid?: string,\n\tp?: number,\n\tnotch?: boolean,\n\tclass?: string,\n\tposBy?: 'left' | 'right' | 'fixed' | Element,\n\tfrontSelector?: string,\n\tinvertX?: boolean,\n\topenByHover?: boolean,\n\tuseOriginal?: boolean,\n\ttransitionDuration?: number,\n\tisFullScreen?: boolean,\n}\n\n/**\n * Основной объект js компонента TopPopup\n *\n * Добавляет jQuery события на this.el, если jQuery загружен:\n *\n * - aftershow.top-menu-popup\n * - afterclose.top-menu-popup\n */\nexport class TopLibPopup<T extends Record<string, any> | undefined = Record<string, any>> extends Component {\n\n\tstatic componentName = 'TopPopup';\n\n\t/**\n\t * Словарь всех экземпляров Popup\n\t */\n\tstatic popupById = new Map<string, TopLibPopup<any>>();\n\n\tdeclare el: HTMLElement & { __TopPopupOpenerProps: OpenerProps<T> }; // элемент, вызвавший открытие Popup\n\telActiveByDefault: boolean | undefined; // элемент уже имеет класс top-active перед открытием окна\n\telPopup: HTMLElement | undefined; // Popup .top-popup-wrapper\n\telPopupInner: HTMLElement | undefined; // контентная часть Popup .top-popup\n\telPopupHeader: HTMLElement | undefined | null;\n\telPopupWidget: HTMLElement | undefined | null;\n\telPopupBody: HTMLElement | undefined | null;\n\telPopupFooter: HTMLElement | undefined | null;\n\telFront: HTMLElement | undefined | null;\n\n\t/**\n\t * Для openerIsInput фокусировка срабатывает при входе в поле ввода\n\t *\n\t * Фокусировка на сам Popup не производится\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Roles/combobox_role\n\t */\n\topenerIsInput = false;\n\n\tpopupParent: TopLibPopup | undefined;\n\n\t$: JQuery<HTMLElement> | undefined; // только если есть jQuery\n\n\telStartPosition: HTMLElement | undefined | null; // используется для useOriginal\n\tshift = {\n\t\ttop: 0,\n\t\tleft: 0,\n\t};\n\tisClosed = false; // флаг того, что меню закрыто\n\tisFirstClick = true;\n\ttype: string | undefined; // selector или html\n\n\toptions: PopupOptions = {\n\t\tpopup: '', // selector, text\n\t\tp: 0, // положение меню (0 - над элементом, 1 - сверху, 2 - справа, 3 - снизу, 4 слева)\n\t\tnotch: false, // отображать ли клювик\n\n\t\tclass: '', // класс, добавляемый меню\n\n\t\tposBy: 'left', // способ привязки позиционирования меню (left/right - левый/правый край родителя, fixed - по документу)\n\t\tfrontSelector: '',\n\t\tinvertX: false, // базовая ордината - правая граница элемента, а не левая\n\t\topenByHover: false, // открывать при наведении\n\n\t\tuseOriginal: false, // использовать оригинальный шаблон, без клонирвоания (для сохранения состояния меню)\n\n\t\ttransitionDuration: 100, // значение прописано в css\n\n\t\tisFullScreen: false,\n\t};\n\n\tevents = {};\n\n\t/**\n\t * Создать Popup\n\t * @param el - элемент, открывающий меню\n\t * @param options\n\t */\n\tconstructor(el: HTMLElement, options: PopupOptions) {\n\t\tsuper();\n\n\t\tthis.init(TopLibPopup.componentName, el, options);\n\t}\n\n\tasync mount(): Promise<void> {\n\t\tif (!(this.el instanceof HTMLElement)) return;\n\t\tconst vueConnector = this.vueGetComponent();\n\n\t\tif (this.el.closest('.top-popup-wrapper')) this.popupParent = Worker.getPopup(this.el.closest('.top-popup-wrapper')!);\n\n\t\tawait this.mountJQuery();\n\n\t\tif (DOM.css(this.el, 'position') !== 'absolute') {\n\t\t\tthis.el.style.position = 'relative';\n\t\t}\n\n\t\tthis.el.dataset.topPopupOpened = 'opened';\n\t\tthis.elActiveByDefault = this.el.classList.contains('top-active');\n\t\tthis.el.classList.add('top-active');\n\n\t\tthis.openerIsInput = this.el.classList.contains('top-input');\n\n\t\t// todo: удалить после переписать TopProjectSelector на vue\n\t\tif (this.el.classList.contains('top-input-project_name')) {\n\t\t\tthis.openerIsInput = false;\n\t\t}\n\n\t\tif (this.openerIsInput) {\n\t\t\tconst elInput = this.el.querySelector('input');\n\t\t\tif (elInput && !elInput['__popupOnBlur']) {\n\t\t\t\telInput['__popupOnBlur'] = true;\n\n\t\t\t\telInput.addEventListener('blur', e => {\n\t\t\t\t\t// Не закрывать popup при фокусировке в дочернем popup\n\t\t\t\t\tconst toEl = e.relatedTarget as HTMLElement | null;\n\t\t\t\t\tif (toEl) {\n\t\t\t\t\t\tconst popup = Worker.getPopup(toEl);\n\n\t\t\t\t\t\t// Фокус на корневой `elPopup` обрабатывать не надо, в этом случае popup должен закрываться\n\t\t\t\t\t\tif (popup?.elPopup !== toEl) {\n\t\t\t\t\t\t\t// Фокус произошел в дочернем popup\n\t\t\t\t\t\t\tconst selfPopup = Worker.getClosestPopup(e.relatedTarget as HTMLElement, this.el);\n\t\t\t\t\t\t\tif (selfPopup) return;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// элемент один, экземпляры popup разные\n\t\t\t\t\tWorker.getPopupFromOpener(this.el)?.close();\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (vueConnector) {\n\t\t\t// компонент vue Popup\n\t\t\tthis.type = 'vue';\n\n\t\t\tthis.options.popup = '';\n\t\t\tthis.elPopup = DOM.genEl('div', {}, this.options.popup);\n\t\t} else if (this.options.popup?.match(/^[#.]/)) {\n\t\t\t// selector\n\t\t\tthis.type = 'selector';\n\n\t\t\t// шаблон php\n\t\t\tthis.elPopup = document.querySelector<HTMLElement>(`${this.options.popup}.template`) || undefined;\n\t\t} else {\n\t\t\t// html\n\t\t\tthis.type = 'html';\n\n\t\t\tif (this.options.useOriginal) {\n\t\t\t\tthrow ('Option useOriginal not allowed for text templates');\n\t\t\t}\n\n\t\t\tthis.elPopup = DOM.genEl('div', {}, this.options.popup ?? '');\n\t\t}\n\n\t\t// // возможно, шаблон не найден, так как он используется в уже открытом меню (для php шаблонов)\n\t\t// if (this.options.useOriginal || vueConnector?.opened) {\n\n\t\t// возможно, шаблон не найден, так как используется js версия TopPopup\n\t\tif (!vueConnector || vueConnector?.opened) {\n\t\t\tlet elPopupSame: HTMLElement | undefined;\n\n\t\t\t// закрыть открытое меню\n\t\t\tif (vueConnector?.opened) {\n\t\t\t\telPopupSame = vueConnector.popup.elPopup;\n\t\t\t} else {\n\t\t\t\tif (this.type === 'html') {\n\t\t\t\t\tif (this.options.id) {\n\t\t\t\t\t\telPopupSame = TopLibPopup.popupById.get(this.options.id)?.elPopup || undefined;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\telPopupSame = document.querySelector<HTMLElement>(`${this.options.popup}.top-popup-wrapper-shown`) || undefined;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (elPopupSame) {\n\t\t\t\tthis.elPopup = elPopupSame;\n\t\t\t\tthis.el.dataset.topPopupOpened = '';\n\n\t\t\t\tif (!this.elActiveByDefault) {\n\t\t\t\t\tthis.el.classList.remove('top-active');\n\t\t\t\t}\n\n\t\t\t\tWorker.close(this.elPopup);\n\n\t\t\t\t// повторит попытку открыть меню\n\t\t\t\tsetTimeout(() => this.mount(), this.options.transitionDuration);\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// throw ('Option useOriginal state allowed only elements .template');\n\t\t}\n\n\t\t// возможно, вместо шаблона используется другой элемент\n\t\tif (!this.elPopup) {\n\t\t\tthis.elPopup = document.querySelector<HTMLElement>(`${this.options.popup}:not(.top-popup-wrapper)`) || undefined;\n\t\t}\n\n\t\tif (!this.elPopup) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.options.id) {\n\t\t\tif (TopLibPopup.popupById.get(this.options.id) && TopLibPopup.popupById.get(this.options.id) !== this) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tTopLibPopup.popupById.set(this.options.id, this);\n\t\t}\n\n\t\tif (this.options.useOriginal) {\n\t\t\tthis.elStartPosition = this.elPopup.closest<HTMLElement>('.top-popup-el-start-position');\n\t\t\tif (!this.elStartPosition) {\n\t\t\t\tthis.elStartPosition = DOM.wrap(this.elPopup, 'i');\n\t\t\t\tthis.elStartPosition.classList.add('top-popup-el-start-position', 'hidden');\n\t\t\t}\n\t\t} else {\n\t\t\tthis.elPopup = this.elPopup.cloneNode(true) as HTMLElement;\n\n\t\t\t// вывод в меню копии произвольного элемента\n\t\t\tif (this.type === 'selector' && !this.elPopup.matches('.template')) {\n\t\t\t\tthis.elPopup.classList.remove('hidden');\n\n\t\t\t\tif (!this.elPopup.querySelector(':scope > .top-popup_content')) {\n\t\t\t\t\tthis.elPopup.classList.add('top-popup_content');\n\t\t\t\t}\n\n\t\t\t\tthis.elPopup = DOM.wrap(this.elPopup, 'div');\n\t\t\t}\n\n\t\t\tif (this.type === 'html') {\n\t\t\t\tif (!this.elPopup.querySelector(':scope > .top-popup_content')) {\n\t\t\t\t\tthis.elPopup.classList.add('top-popup_content');\n\n\t\t\t\t\tthis.elPopup = DOM.wrap(this.elPopup, 'div');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// вложенный Popup\n\t\t\tif (this.type === 'selector' && !this.elPopup.matches('.template') || this.type === 'html' || this.type === 'vue') {\n\t\t\t\tDOM.querySelectorAllArray(this.elPopup, '[data-top-popup]').forEach(el => {\n\t\t\t\t\tif (el instanceof HTMLElement) el.dataset.topPopupPosBy = 'fixed';\n\t\t\t\t});\n\t\t\t\tDOM.querySelectorAllArray(this.elPopup, '.top-popup-wrapper').forEach(el => el.remove());\n\t\t\t}\n\t\t}\n\n\t\tWorker.decoratorBeforeOpen(this);\n\n\t\tif (vueConnector) {\n\t\t\tthis.options.class = vueConnector.classRef.value;\n\t\t\tif (vueConnector.transitionDurationRef.value !== undefined) {\n\t\t\t\tthis.options.transitionDuration = vueConnector.transitionDurationRef.value;\n\n\t\t\t\tif (this.elPopup instanceof HTMLElement) {\n\t\t\t\t\tthis.elPopup.style.setProperty(\n\t\t\t\t\t\t'--top-popup-transition-delay',\n\t\t\t\t\t\tthis.options.transitionDuration + 'ms',\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.elPopupInner = document.createElement('div');\n\t\tthis.elPopupInner.classList.add('top-popupPanel', 'top-popup');\n\n\t\twhile (this.elPopup.firstChild) {\n\t\t\tthis.elPopupInner.appendChild(this.elPopup.firstChild);\n\t\t}\n\n\t\tthis.elPopup.append(this.elPopupInner);\n\n\t\tthis.elPopup.classList.add('top-popup-wrapper');\n\n\t\tif (this.options.class) {\n\t\t\tconst classes = this.options.class.split(' ');\n\n\t\t\tthis.elPopup.classList.add(...classes);\n\t\t}\n\n\t\tif (this.options.notch) {\n\t\t\tthis.elPopup.classList.add('with_notch');\n\n\t\t\tthis.elPopup.insertAdjacentHTML('beforeend', '<i class=\"notch notch-border\"></i><i class=\"notch\"></i>');\n\t\t}\n\n\t\tawait this.vueOpen();\n\n\t\tthis.elPopupHeader = this.elPopupInner.querySelector<HTMLElement>('.top-popup_header');\n\t\tthis.elPopupWidget = this.elPopupInner.querySelector<HTMLElement>('.top-popup_widget');\n\t\tthis.elPopupBody = this.elPopupInner.querySelector<HTMLElement>('.top-popup_content');\n\t\tthis.elPopupFooter = this.elPopupInner.querySelector<HTMLElement>('.top-popup_footer');\n\n\t\tconst existsWidgetSearch = !!this.elPopup.querySelector('[data-widget=\"search\"]');\n\n\t\tif (this.options.isFullScreen && !existsWidgetSearch) {\n\t\t\tconst i18n = useI18n();\n\n\t\t\tif (!this.elPopupHeader && i18n.Common.Close) {\n\t\t\t\tthis.elPopupHeader = DOM.genEl('i', { class: 'top-popup_header' });\n\t\t\t\tthis.elPopupInner.prepend(this.elPopupHeader);\n\n\t\t\t\tthis.elPopupHeader.prepend(DOM.genEl('i', { class: 'a closer' }, i18n.Common.Close));\n\t\t\t\tthis.elPopupHeader.append(DOM.genEl('i', { class: 'top-popup_headerButton' }));\n\t\t\t}\n\t\t}\n\n\t\tDOM.storage(this.elPopup, TopLibPopup.componentName, this);\n\n\t\tif (this.options.frontSelector) {\n\t\t\tthis.elFront = document.querySelector<HTMLElement>(this.options.frontSelector);\n\t\t}\n\t\tif (!this.elFront) {\n\t\t\tthis.elFront = this.el.closest<HTMLElement>('.top-popup-front');\n\t\t}\n\t\tif (!this.elFront) {\n\t\t\tthis.elFront = document.body;\n\t\t}\n\n\t\tif (this.elPopup instanceof HTMLElement) {\n\t\t\tthis.elPopup.style.width = this.el.offsetWidth + 'px';\n\t\t\tthis.elPopup.style.height = this.el.offsetHeight + 'px';\n\t\t\tthis.elPopup.style.top = this.el.offsetTop + 'px';\n\t\t\tthis.elPopup.style.right = parseInt(this.el.style.right || '0') + 'px';\n\t\t\tthis.elPopup.style.bottom = parseInt(this.el.style.bottom || '0') + 'px';\n\t\t}\n\n\t\tthis.el.parentElement?.insertBefore(this.elPopup, this.el);\n\t\tthis.elPopup.classList.remove('template');\n\n\t\tif (this.options.invertX) {\n\t\t\tthis.elPopup.classList.add('invert-x');\n\t\t}\n\n\t\tlet fromTop = !!this.el.closest('.modal-header');\n\t\tif (!fromTop) {\n\t\t\tfromTop = !!this.el.closest('#top_panel');\n\t\t}\n\t\tif (!fromTop) {\n\t\t\tfromTop = !!this.el.closest('#secondmenu');\n\t\t}\n\t\tif (fromTop) {\n\t\t\tthis.elPopup.classList.add('p-from-top');\n\t\t}\n\n\t\t// появление с анимацией\n\t\tsetTimeout(() => this.elPopup?.classList.add('top-popup-wrapper-shown'));\n\n\t\tif (this.elFront && !this.elFront.matches('body')) {\n\t\t\tthis.elFront.append(this.elPopup);\n\n\t\t\tthis.shift.top = DOM.offset(this.el).top - this.el.offsetTop - DOM.offset(this.elFront).top;\n\t\t\tthis.shift.left = DOM.offset(this.el).left - this.el.offsetLeft - DOM.offset(this.elFront).left;\n\n\t\t\t// position() не учитывает margin, замечено для flex\n\t\t\tthis.shift.top -= parseInt(this.el.style['margin-top'] || 0);\n\t\t\tthis.shift.left -= parseInt(this.el.style['margin-left'] || 0);\n\n\t\t\tif (this.elPopup instanceof HTMLElement) {\n\t\t\t\tthis.elPopup.style.top = parseInt(this.elPopup.style.top || '0') + this.shift.top + 'px';\n\t\t\t\tthis.elPopup.style.left = parseInt(this.elPopup.style.left || '0') + this.shift.left + 'px';\n\t\t\t}\n\t\t}\n\n\t\tif (this.$ && Core.$) {\n\t\t\tthis.$.trigger('aftershow.top-menu-popup', [Core.$(this.elPopup)]);\n\t\t}\n\n\t\tthis.recalcPosition();\n\n\t\tthis.elPopup.setAttribute('tabindex', '0');\n\t\tthis.focus();\n\n\t\tWorker.decoratorAfterOpen(this);\n\n\t\tthis.mountEvents();\n\t}\n\n\tasync mountJQuery() {\n\t\tif (!Core.$) return;\n\n\t\tthis.$ = Core.$(this.el);\n\t}\n\n\t/**\n\t * Выполнить фокусировку на нужный элемент после открытия окна\n\t */\n\tfocus(): void {\n\t\tlet el: Element | null;\n\n\t\tif (this.elPopup) {\n\t\t\tel = DOM.querySelectorVisible(this.elPopup, '.top-popup-autofocus');\n\n\t\t\t// поле ввода\n\t\t\tif (!el) {\n\t\t\t\tel = DOM.querySelectorVisible(this.elPopup, ':read-write, select:not(:disabled)');\n\t\t\t}\n\n\t\t\t// кнопка\n\t\t\tif (!el) {\n\t\t\t\tel = DOM.querySelectorVisible(this.elPopup, '.top-popup_footer .top-button');\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * @see this.openerIsInput\n\t\t\t */\n\t\t\tif (!el && !this.openerIsInput) {\n\t\t\t\tel = this.elPopup;\n\t\t\t}\n\n\t\t\t// выполнить фокусировку сразу, для применения необходимых стилей\n\t\t\tif (el instanceof HTMLElement) el.focus({ preventScroll: true });\n\n\t\t\t// выполнить фокусировку после завершения анимации открытия popup\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (el instanceof HTMLElement) el.focus({ preventScroll: true });\n\t\t\t}, this.options.transitionDuration);\n\t\t}\n\t}\n\n\tmountEvents(): void {\n\t\t// закрытие при клике вне контекстного меню\n\t\tthis.addEventListenerWithUnmount(document, 'mousedown', (e) => this.onMousedown(e as MouseEvent));\n\n\t\tif (this.openerIsInput) {\n\t\t\t/**\n\t\t\t * Фокусировка к моменту открытия popup уже установлена на поле ввода\n\t\t\t *\n\t\t\t * @see this.openerIsInput\n\t\t\t */\n\t\t\tthis.onFocusCloseOthers();\n\t\t} else {\n\t\t\tif (this.elPopup && this.elPopupInner) {\n\t\t\t\t// закрыть другие меню\n\t\t\t\tthis.addEventListenerWithUnmount(this.elPopup, 'focus', (e) => this.onFocus(e as FocusEvent));\n\n\t\t\t\t// автоматическое закрытие при отведении мыши\n\t\t\t\tif (this.options.openByHover) {\n\t\t\t\t\tthis.addEventListenerWithUnmount(this.elPopup, 'mouseleave', (e) => this.onMouseleave(e as MouseEvent));\n\t\t\t\t\tthis.addEventListenerWithUnmount(this.elPopupInner, 'mouseleave', (e) => this.onMouseleave(e as MouseEvent));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// не скроллить страницу\n\t\tif (this.options.isFullScreen && this.elPopupBody) {\n\t\t\tthis.addEventListenerWithUnmount(this.elPopupBody, 'touchmove', (e) => this.onTouchmove(e as TouchEvent));\n\t\t}\n\t}\n\n\t/**\n\t * Обработка клика вне окна\n\t */\n\tprivate onMousedown(e: MouseEvent): void {\n\t\t// // не оригинальное событие\n\t\t// if (!e || !e.originalEvent || !e.originalEvent.isTrusted) {\n\t\t// \treturn;\n\t\t// }\n\n\t\t// Popup уже закрыт\n\t\tif (!this.elPopup || !(e.target instanceof Element)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// клик на внешнем элементе\n\t\tif (!this.isFirstClick) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.isFirstClick = false;\n\t\tsetTimeout(() => this.isFirstClick = true);\n\n\t\t// клик не основной кнопкой мыши\n\t\tif (e instanceof MouseEvent && e.button !== 0) {\n\t\t\treturn;\n\t\t}\n\n\t\t// открыто другое меню с posBy = fixed, сначала должно быть закрыто оно\n\t\tlet elPopupOpened = DOM.querySelectorVisibleLast(document.body, ':scope > .top-popup-wrapper');\n\t\tif (elPopupOpened && elPopupOpened !== this.elPopup) {\n\t\t\treturn;\n\t\t}\n\n\t\t// открыто другое меню в top-popup-front, сначала должно быть закрыто оно\n\t\tif (e.target.closest('.top-popup-front')) {\n\t\t\telPopupOpened = DOM.querySelectorVisibleLast(e.target.closest('.top-popup-front')!, ':scope > .top-popup-wrapper');\n\n\t\t\tif (elPopupOpened && elPopupOpened !== this.elPopup) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// клик на кнопке открытия этого меню\n\t\tif (e.target.closest(`[data-top-popup-id=\"${this.options.id}\"]`)) {\n\t\t\te.preventDefault();\n\n\t\t\treturn;\n\t\t}\n\n\t\t// элемент формы, к которому идет переход\n\t\tlet toFormEl: HTMLElement | null = e.target.closest('input, select, textarea, button, [tabindex]');\n\t\tif (toFormEl === this.elPopup) toFormEl = null;\n\n\t\t// сохранить фокус после закрытия popup, если это не переход к другому элементу\n\t\tconst restoreFocus = !toFormEl;\n\n\t\t/**\n\t\t * Не сбрасывать уже установленный фокус\n\t\t */\n\t\tif (restoreFocus && this.openerIsInput) {\n\t\t\te.preventDefault();\n\t\t}\n\n\t\t// клик внутри этого меню\n\t\tif (this.elPopup.contains(e.target)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// клик вне родительского диалогового окна\n\t\tif (this.elPopup.closest('.ui-dialog') && !e.target.closest('.ui-dialog')) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (Worker.decoratorIsIgnoreOuterClick(e)) {\n\t\t\treturn;\n\t\t}\n\n\t\tWorker.close(this.elPopup, restoreFocus);\n\t}\n\n\t/**\n\t * Произошла фокусировка на этот popup\n\t */\n\tprivate onFocus(e: FocusEvent): void {\n\t\t// // не оригинальное событие\n\t\t// if (!e || !e.originalEvent || !e.originalEvent.isTrusted) {\n\t\t// \treturn;\n\t\t// }\n\n\t\tif (e.target instanceof Element && e.target.matches('input')) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.onFocusCloseOthers();\n\t}\n\n\t/**\n\t * Закрыть другие Popup при фокусе на элемент формы в текущем\n\t */\n\tprivate onFocusCloseOthers(): void {\n\t\t// это окно уже закрывается\n\t\tif (this.isClosed) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst elsPopups = Worker.getAllVisible();\n\t\telsPopups.forEach(elPopup => {\n\t\t\t// фокус внутри этого окна\n\t\t\tif (this.elPopup?.contains(elPopup)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// это Popup из которого был открыт Popup с фокусом\n\t\t\t// глубина вложенности: до 3 подменю\n\t\t\tif (\n\t\t\t\tthis.popupParent?.elPopup === elPopup ||\n\t\t\t\tthis.popupParent?.popupParent?.elPopup === elPopup\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tWorker.close(elPopup);\n\t\t});\n\t}\n\n\t/**\n\t * Закрыть Popup при отведении мыши\n\t */\n\tprivate onMouseleave(_e: MouseEvent): void {\n\t\tsetTimeout(() => {\n\t\t\tif (this.elPopupInner && this.elPopupInner.matches(':hover') || !this.elPopup) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tWorker.close(this.elPopup);\n\t\t}, 100);\n\t}\n\n\t/**\n\t * Контроль положения Popup при fixed позиционировании\n\t */\n\tprivate onResize(): void {\n\t\t// на android при вызове метода append сбрасывается фокус с input внутри this.elPopup\n\t\tif (this.elPopup && this.elPopup.parentElement !== document.body) {\n\t\t\tdocument.body.append(this.elPopup);\n\t\t}\n\n\t\tif (this.elPopup instanceof HTMLElement) {\n\t\t\tthis.elPopup.style.top = DOM.offset(this.el).top + 'px';\n\t\t\tthis.elPopup.style.left = DOM.offset(this.el).left + 'px';\n\t\t}\n\t}\n\n\tunmount(): void {\n\t\tsuper.unmount();\n\n\t\tif (this.el instanceof HTMLElement) this.el.dataset.topPopupOpened = '';\n\t\tif (!this.elActiveByDefault) {\n\t\t\tthis.el.classList.remove('top-active');\n\t\t}\n\n\t\tlet style = this.el.getAttribute('style');\n\t\tif (style) {\n\t\t\tstyle = style.replace(/position:[^;]*;?/g, '');\n\t\t\tthis.el.setAttribute('style', style);\n\t\t}\n\t}\n\n\t// контроль за положением Popup, чтобы оно не вылезало за пределы документа\n\trecalcPosition(pForce?: typeof this.options.p): void {\n\t\tif (!(this.elPopup instanceof HTMLElement)) return;\n\n\t\tlet p = pForce ?? this.options.p;\n\t\tlet leftPos: number;\n\n\t\tif (this.el instanceof HTMLElement) {\n\t\t\tthis.elPopup.style.height = this.el.offsetHeight + 'px';\n\n\t\t\tthis.elPopup.classList.remove('p0', 'p1', 'p2', 'p3', 'p4');\n\t\t\tthis.elPopup.classList.add('p' + p);\n\n\t\t\tswitch (this.options.posBy) {\n\t\t\t\tcase 'left':\n\t\t\t\t\tleftPos = this.el.offsetLeft + parseInt(this.el.style['margin-left'] || '0');\n\t\t\t\t\tleftPos += this.shift.left;\n\t\t\t\t\tthis.elPopup.style.left = leftPos + 'px';\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'right':\n\t\t\t\t\tif (!(this.el.offsetParent instanceof HTMLElement)) break;\n\n\t\t\t\t\tleftPos = this.el.offsetLeft + parseInt(this.el.style['margin-left'] || '0');\n\t\t\t\t\tthis.elPopup.style.right = this.el.offsetParent.offsetWidth - this.el.offsetWidth - leftPos + 'px';\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'fixed':\n\t\t\t\t\tthis.addEventListenerWithUnmount(window, 'resize', () => this.onResize());\n\n\t\t\t\t\tthis.onResize();\n\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthis.options.posBy?.append(this.elPopup);\n\t\t\t}\n\t\t}\n\n\t\t// контроль за пложением Popup, чтобы оно не вылезало за пределы документа\n\t\tconst boundingClientRect = this.elPopup.getBoundingClientRect();\n\t\tthis.elPopup.style.setProperty('--top-popup-height', this.elPopup.offsetHeight + 'px');\n\t\tthis.elPopup.style.setProperty('--top-popup-right-bounding', boundingClientRect.right + 'px');\n\t\tthis.elPopup.style.setProperty('--top-popup-bottom-bounding', boundingClientRect.bottom + 'px');\n\t\tthis.elPopup.style.setProperty('--top-popup-top', boundingClientRect.top + 'px');\n\t\tthis.elPopup.style.setProperty('--top-popup-left', boundingClientRect.left + 'px');\n\n\t\tif (this.elPopupInner instanceof HTMLElement) {\n\t\t\tthis.elPopupInner.style.maxWidth = 'unset';\n\t\t\tthis.elPopupInner.style.maxHeight = 'unset';\n\t\t}\n\n\t\t// выходит ли popup за экран с конкретного края\n\t\tconst out = {\n\t\t\ttop: false,\n\t\t\tright: false,\n\t\t\tbottom: false,\n\t\t\tleft: false,\n\t\t};\n\n\t\t// выходит ли popup за экран с конкретного края, если применено инвертирование\n\t\tconst outWithInvert = {\n\t\t\ttop: false,\n\t\t\tright: false,\n\t\t\tbottom: false,\n\t\t\tleft: false,\n\t\t};\n\n\t\t// имеет ли смысл прикреплять окно к другой стороне кнопки\n\t\tlet canUseInvertX = boundingClientRect.left > window.innerWidth / 2;\n\t\tlet canUseInvertY = boundingClientRect.top > window.innerHeight / 2;\n\n\t\tif (p === 4) {\n\t\t\tcanUseInvertX = !canUseInvertX;\n\t\t}\n\n\t\tif (p === 1) {\n\t\t\tcanUseInvertY = !canUseInvertY;\n\t\t}\n\n\t\tconst contentBoundingClientRect = this.elPopupInner?.getBoundingClientRect();\n\n\t\tlet contentRight: number;\n\t\tlet contentBottom: number;\n\n\t\tconst margin = DOM.cssNumber(this.elPopup, '--top-popup-offset');\n\t\tconst elHeight = this.el.offsetHeight;\n\t\tconst elWidth = this.el.offsetWidth;\n\n\t\tif (contentBoundingClientRect) {\n\t\t\tcontentRight = window.innerWidth - contentBoundingClientRect.right;\n\t\t\tcontentBottom = window.innerHeight - contentBoundingClientRect.bottom;\n\n\t\t\tif (contentBoundingClientRect.top < margin) {\n\t\t\t\tout.top = true;\n\n\t\t\t\tif (contentBoundingClientRect.top < margin * 2 - contentBoundingClientRect.height + elHeight) {\n\t\t\t\t\toutWithInvert.top = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (contentRight < margin) {\n\t\t\t\tout.right = true;\n\n\t\t\t\tif (contentRight < margin * 2 - contentBoundingClientRect.width + elWidth) {\n\t\t\t\t\toutWithInvert.right = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (contentBottom < margin) {\n\t\t\t\tout.bottom = true;\n\n\t\t\t\tif (contentBottom < margin * 2 - contentBoundingClientRect.height + elHeight) {\n\t\t\t\t\toutWithInvert.bottom = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (contentBoundingClientRect.left < margin) {\n\t\t\t\tout.left = true;\n\n\t\t\t\tif (contentBoundingClientRect.left < margin * 2 - contentBoundingClientRect.width + elHeight) {\n\t\t\t\t\toutWithInvert.left = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Определить новое положение p, если popup не помещается\n\t\t *\n\t\t * Следует выполнять в два этапа:\n\t\t * - по горизонтали\n\t\t * - по вертикали\n\t\t */\n\t\tconst genP = (axis: 'x' | 'y', p: number) => {\n\t\t\t// проверяем горизонталь\n\t\t\tif (axis === 'x') {\n\t\t\t\tif (!out.right && !out.left) return p;\n\n\t\t\t\tif (p === 1 || p === 3) {\n\t\t\t\t\tif (!outWithInvert.right && !outWithInvert.left && canUseInvertX) return p;\n\t\t\t\t}\n\n\t\t\t\tif (out.right && (p === 0 || p === 2) && canUseInvertX) {\n\t\t\t\t\tp = 4;\n\t\t\t\t}\n\n\t\t\t\tif (out.left && (p === 0 || p === 4) && canUseInvertX) {\n\t\t\t\t\tp = 2;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// проверяем вертикаль\n\t\t\tif (axis === 'y') {\n\t\t\t\t// не помещается и можно использовать инвертирование\n\t\t\t\tif (!out.top && !out.bottom) return p;\n\n\t\t\t\tif (p === 2 || p === 4) {\n\t\t\t\t\tif (!outWithInvert.top && !outWithInvert.bottom && canUseInvertY) return p;\n\t\t\t\t}\n\n\t\t\t\tif (out.top && (p === 0 || p === 1) && canUseInvertY) {\n\t\t\t\t\tp = 3;\n\t\t\t\t}\n\n\t\t\t\tif (out.bottom && canUseInvertY) {\n\t\t\t\t\tp = 1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn p;\n\t\t};\n\n\t\t/**\n\t\t * Приоритет определения `p` по осям зависит от начального значения `p`\n\t\t *\n\t\t * Пытаемся сохранить выбранную ось: X или Y\n\t\t */\n\t\tlet axis: Array<'x' | 'y'> = ['x', 'y'];\n\t\tif (p === 0 || p === 1 || p === 3) axis = ['y', 'x'];\n\n\t\tlet newP = p ?? 0;\n\t\taxis.forEach((axisI) => {\n\t\t\tnewP = genP(axisI, newP);\n\t\t});\n\t\tp = newP;\n\n\t\tif (out.bottom && (p === 2 || p === 4) && canUseInvertY) {\n\t\t\t// меню справа может перемещаться вверх, только если есть место слева\n\t\t\tthis.elPopup.classList.add('invert-y');\n\t\t}\n\n\t\tif (out.right && (p === 0 || p === 1 || p === 3)) {\n\t\t\tthis.elPopup.classList.add('invert-x');\n\t\t}\n\n\t\tthis.elPopup.classList.remove('p0', 'p1', 'p2', 'p3', 'p4');\n\t\tthis.elPopup.classList.add('p' + p);\n\n\t\tif (this.elPopupInner instanceof HTMLElement) {\n\t\t\tthis.elPopupInner.style.maxWidth = '';\n\t\t\tthis.elPopupInner.style.maxHeight = '';\n\t\t}\n\n\t\t// if (this.elPopupBody instanceof HTMLElement) {\n\t\t// \t// отобразить popup по вертикали с другой стороны, если с другой стороны больше места\n\t\t// \tconst hasScroll = this.elPopupBody.offsetHeight < this.elPopupBody.scrollHeight;\n\t\t// \tvd(this.elPopupBody.scrollHeight);\n\t\t// \tvd(this.elPopupBody.offsetHeight);\n\t\t// \tif (hasScroll && pForce === undefined) {\n\t\t// \t\tconst contentBoundingClientRect = this.elPopupBody?.getBoundingClientRect();\n\t\t// \t\tif (\n\t\t// \t\t\tp === 1 && contentBoundingClientRect.top * 2 < contentBoundingClientRect.bottom ||\n\t\t// \t\t\tp === 3 && contentBoundingClientRect.bottom * 2 < contentBoundingClientRect.top\n\t\t// \t\t) {\n\t\t// \t\t\tthis.recalcPosition(p === 1 ? 3 : 1);\n\t\t//\n\t\t// \t\t\treturn;\n\t\t// \t\t}\n\t\t// \t}\n\t\t// }\n\n\t\tWorker.scrollToActive(this.elPopup);\n\t};\n\n\tonTouchmove(e: TouchEvent): void {\n\t\tif (e.currentTarget instanceof HTMLElement && e.target instanceof HTMLElement) {\n\t\t\t// разрешить горизональный скролл\n\t\t\tconst hasScrollX = e.currentTarget.scrollWidth > e.currentTarget.offsetWidth;\n\t\t\tif (hasScrollX) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (e.target.parentElement?.scrollWidth && e.target.parentElement?.offsetWidth) {\n\t\t\t\t// разрешить горизональный скролл\n\t\t\t\tconst hasScrollX2 = e.target.parentElement.scrollWidth > e.target.parentElement?.offsetWidth;\n\t\t\t\tif (hasScrollX2) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!e.currentTarget.matches('.has_scroll')) {\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t}\n\t}\n\n\tclose(): void {\n\t\tif (this.isClosed) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.isClosed = true;\n\n\t\tif (this.$ && Core.$ && this.elPopup) {\n\t\t\tthis.$.trigger('afterclose.top-menu-popup', [Core.$(this.elPopup)]);\n\t\t}\n\n\t\tif (Worker.noClose) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.unmount();\n\n\t\tthis.elPopup?.classList.add('top-popup-wrapper-closed');\n\n\t\tsetTimeout(() => {\n\t\t\tthis.vueClose();\n\n\t\t\tif (!this.elPopup) return;\n\n\t\t\tif (this.options.useOriginal) {\n\t\t\t\tthis.elPopup.removeAttribute('style');\n\t\t\t\tthis.elPopup.classList.remove('top-popup-wrapper-shown', 'top-popup-wrapper-closed');\n\t\t\t\tthis.elPopup.classList.add('template');\n\t\t\t\tthis.elStartPosition?.append(this.elPopup);\n\n\t\t\t\tthis.elPopup.querySelector('div.top-popup_content.top-column')?.classList.remove('top-column');\n\t\t\t\tthis.elPopup.querySelector('.notch-border')?.remove();\n\t\t\t\tthis.elPopup.querySelector('.notch')?.remove();\n\n\t\t\t\tthis.elPopupInner?.replaceWith(...this.elPopupInner.childNodes);\n\n\t\t\t\tDOM.storageClear(this.elPopup);\n\t\t\t} else {\n\t\t\t\tDOM.storageClear(this.elPopup);\n\n\t\t\t\tthis.elPopup.remove();\n\t\t\t\tdelete this.elPopup;\n\t\t\t}\n\n\t\t\tif (this.options.id) TopLibPopup.popupById.delete(this.options.id);\n\n\t\t\tconst elsPopups = Worker.getAllVisible();\n\t\t\tconst elPopupLast = elsPopups.length && elsPopups[elsPopups.length - 1];\n\n\t\t\tif (elPopupLast) {\n\t\t\t\tWorker.getPopup(elPopupLast).focus();\n\t\t\t} else {\n\t\t\t\tdocument.documentElement.classList.remove('with_popup');\n\t\t\t}\n\t\t}, this.options.transitionDuration);\n\t}\n\n\tasync vueOpen(): Promise<void> {\n\t\tawait this.vueGetComponent()?.onOpen(this);\n\t}\n\n\tvueClose(): void {\n\t\tthis.vueGetComponent()?.onClose(this);\n\t}\n\n\t// получить vueConnectors компонента Popup\n\tvueGetComponent() {\n\t\tif (this.el instanceof HTMLElement && this.options.id) return Worker.vueConnectors.get(this.options.id);\n\t}\n}\n\nGlobalEvents.init();\n"]}
@@ -1,2 +0,0 @@
1
- var __createBinding=this&&this.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),__importStar=this&&this.__importStar||(function(){var n=function(e){return n=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},n(e)};return function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var a=n(r),o=0;o<a.length;o++)a[o]!=="default"&&__createBinding(i,r,a[o]);return __setModuleDefault(i,r),i}})();define([`require`,`exports`,`./forms-Ch1q0UUt.es.amd`,`../utils/dom.amd`,`../utils/system.amd`,`../utils/route.amd`,`vue`],function(e,t,r,i,a,o,s){"use strict";if(c===void 0)var c=window.Vue;Object.defineProperty(t,"__esModule",{value:!0}),t.t=t.s=t.r=t.o=t.n=t.i=t.a=void 0;var l=[`id`,`data-view-page-active`,`data-modal`,`data-position`],u=(0,s.defineComponent)({__name:`dialog`,props:{id:{},pageActive:{},width:{default:`600px`},height:{default:`auto`},modal:{type:Boolean,default:!0},position:{},historyType:{default:`push`},classes:{}},emits:[`open`,`close`],setup(e){let t=g(e.id);if(!t)throw Error(`TopDialog cannot be used in a template, use useTopDialog() / useAsyncTopDialog()`);return(0,s.provide)(`dialogWorker`,t),(0,s.onMounted)(()=>{let e=(0,s.getCurrentInstance)(),n=e.parent;if(n?.parent?.type.name!==`DialogWrapper`)throw Error(`TopDialog cannot be used in a template, use useTopDialog()`);if(Array.isArray(n.subTree.children)&&n.subTree.children.length!==1)throw Error(`TopDialog can has only one root element`);t.onMounted(n,e)}),(0,s.watch)(t.isOpened,()=>{t.isReady.value=!0},{flush:`post`,once:!0}),(n,r)=>((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{id:(0,s.unref)(t).idAttr,class:(0,s.normalizeClass)([`top-dialog`,e.classes]),style:(0,s.normalizeStyle)({"--top-dialog-width":e.width,"--top-dialog-height":e.height}),tabindex:`-1`,"data-view-page-active":(0,s.unref)(t).pageActive.value,"data-modal":e.modal,"data-position":e.position},[r[0]||=(0,s.createElementVNode)(`div`,{class:`modal-layer modal-layer-header`},null,-1),(0,s.createElementVNode)(`div`,{class:`modal-layer modal-layer-body`,style:(0,s.normalizeStyle)({"min-height":e.height+`px`})},null,4),(0,s.renderSlot)(n.$slots,`default`)],14,l))}}),d,f=class t{static init(e){if(this.inited)return;this.inited=!0,this.state.load=e?.load,this.state.decoratorOnCreate=e?.decoratorOnCreate;let n=e?.autoInitDelay??5e3;window.addEventListener(`hashchange`,e=>{this.opendDialogsFromChangeUrl(e.oldURL,e.newURL)}),this.opendDialogsFromChangeUrl(``,location.href),document.addEventListener(`mousedown`,async e=>{if(!(e.target instanceof HTMLElement))return;let n=e.target.closest(`a[data-to-view]`);if(!n)return;let r=`next`;n.dataset.action===`top-dialog-close`&&(r=`prev`),n.href=t.genViewPageHash(n.dataset.toView,r)}),document.addEventListener(`click`,async e=>{if(!(e.target instanceof HTMLElement))return;let n=e.target.closest(`[data-to-view]`);if(!n)return;if(n instanceof HTMLAnchorElement&&n.href===`.`){e.preventDefault();let t=new MouseEvent(`mousedown`,{bubbles:!0,cancelable:!0,view:window});n.dispatchEvent(t),setTimeout(()=>n.click());return}let r=await this.getDialogsUtils(),a=n.dataset.toView,s=a.split(`-`)[0],c=r.getElDialogById(s),l=`next`;if(c){let e=(0,i.querySelectorAllArray)(c,`.modal-layer`),t=e.reduce((e,t)=>{let n=t.querySelector(`:scope > .active`);return n&&e.push(n),e},[]);if(t.length){let n=a.split(`-`)[1].split(`:`)[0];(e.reduce((e,t)=>{let r=t?.querySelector(`:scope > [data-view-page="${n}"]`);return r&&e.push(r),e},[])[0]?.dataset.order??0)<(t[0]?.dataset.order??0)&&(l=`prev`)}}n.dataset.action===`top-dialog-close`&&(l=`prev`);let u=t.genViewPageHash(a,l);if(n instanceof HTMLAnchorElement){if(!c||!(0,i.isVisible)(c))return;if(location.hash.indexOf(a.replace(`-`,`=`))!==-1){await r.toViewDirty(a);return}}c?.dataset.toViewReplace?(e.preventDefault(),(0,o.historySetState)(!0,u),await r.toViewDirty(a),l==`next`?t.state.viewPageN++:t.state.viewPageN--):n.tagName!==`A`&&(this.compareStates(u,location.hash)?(0,o.historySetState)(!1,u):await r.toViewDirty(a))}),setTimeout(()=>this.getDialogsUtils(),n)}static opendDialogsFromChangeUrl(e,t){let n=e.replace(/.*?#/,`#`),r=t.replace(/.*?#/,`#`);this.compareStates(n,r)&&this.opendDialogsFromUrl()}static async getDialogsUtils(){let{TopDialogUtils:t}=await new Promise((t,n)=>{e([`./utils-C0Y5ido8.es.amd`],t,n)}).then(__importStar);return t}static getDialog(e){return e.closest(`.ui-dialog-content`)}static get$dialog(e){return e.closest(`.ui-dialog-content`)}static getPage(e){return e.closest(`[data-view-page]`)}static get$page(e){return e.closest(`[data-view-page]`)}static get$pairPage(e){let n=t.get$dialog(e),r=t.get$page(e).data(`view-page`);return $(`[data-view-page="`+r+`"]`,n)}static getPairPage(e){let n=t.getDialog(e);if(!n)return;let r=t.getPage(e)?.dataset.viewPage;return(0,i.querySelectorAllArray)(n,`[data-view-page="${r}"]`)}static close(e){let t=$(`#`+e);if(t.dialog(`instance`)){t.dialog(`close`);return}let n=document.getElementById(e);n instanceof HTMLDialogElement&&n.close()}static destroy(e){let t=$(`#`+e);if(t.dialog(`instance`)){t.dialog(`close`),t.dialog(`destroy`);return}let n=document.getElementById(e);n instanceof HTMLDialogElement&&n.close()}static genViewPageHash(e,t=`next`){let n=this.state.viewPageN;t==`prev`?n--:n++;let r=e.split(`-`),i=r.shift(),a=r.join(`-`),s=(0,o.genHash)(`vpn`,n);return s=(0,o.genHash)(`view-`+i,a,s),s}static compareStates(e,t){let n=e.match(/[#&]view-[^&]+/g)||[],r=t.match(/[#&]view-[^&]+/g)||[];return!!(n.length!==r.length||n.filter((e,t)=>e!==(r[t]||``)).length)}};t.s=u,t.o=f,d=f,(0,r.K)(f,`state`,{load:void 0,decoratorOnCreate:void 0,viewPageN:0}),(0,r.K)(f,`inited`,!1),(0,r.K)(f,`opendDialogsFromUrl`,async()=>{let e=Number((0,o.getHash)(`vpn`))||0,t=RegExp(`view-((\\w+)=([\\w-]+)(?::([\\w.:-]+))?)`,`g`).exec(location.hash);if(t){let n=`next`;return e<d.state.viewPageN&&(n=`prev`),(await d.getDialogsUtils()).toViewDirty(t[1],n)}return(0,i.querySelectorAllArray)(document,`.ui-dialog-content[data-view-page-active]`).filter(e=>(0,i.isVisible)(e)).forEach(e=>{let t=e.getAttribute(`id`);if(!t)throw`Диалоговое окно не содержит id`;(0,o.getHash)(`view-`+t)||$(e).dialog(`close`)}),d.state.viewPageN=e,!0});var p=class{constructor(e){(0,r.K)(this,`id`,void 0),(0,r.K)(this,`idAttr`,void 0),(0,r.K)(this,`Component`,void 0),(0,r.K)(this,`isMounted`,(0,s.ref)(!1)),(0,r.K)(this,`isReady`,(0,s.ref)(!1)),(0,r.K)(this,`isOpened`,(0,s.ref)(!1)),(0,r.K)(this,`pageActive`,(0,s.ref)(``)),(0,r.K)(this,`isLoadingPage`,(0,s.ref)(!1)),(0,r.K)(this,`pageActiveNext`,(0,s.ref)(``)),(0,r.K)(this,`props`,void 0),(0,r.K)(this,`emit`,void 0),(0,r.K)(this,`onCloseOnce`,void 0),this.id=e.id,this.idAttr=`dialog_`+e.id,this.Component=(0,s.markRaw)(e)}onMounted(e,t){this.isMounted.value=!0,this.props=e.props,this.emit=t.emit}async open(e=`main`,t,n=[],r,i){t&&await this.setProps(t),r&&(this.onCloseOnce=r),await(await f.getDialogsUtils()).toView(this.idAttr,e,n,i)}async openAsLink(e=`main`,t,n=[],r,i){t&&await this.setProps(t),r&&(this.onCloseOnce=r);let a=this.idAttr+`-`+e,s=f.genViewPageHash(a,i);(0,o.historySetState)(!1,s)}async close(){f.close(this.idAttr)}async destroy(){f.destroy(this.idAttr)}async setProps(e={}){this.isMounted||await(0,a.waitWhile)(()=>!this.props);for(let t in this.props)this.props[t]=e[t]}needShowPage(e){return this.isOpened.value?this.pageActive.value===e||this.pageActiveNext.value===e:!1}},m={class:`top-dialogs`,style:{display:`none`}},h=(0,s.shallowReactive)(new Map),g=e=>(e=e.replace(/^dialog_/,``),h.get(e)),_=e=>{if(!e?.id)throw console.log({TopDialogComponent:e}),Error(`Expected TopDialogComponent`);return h.has(e.id)||h.set(e.id,new p(e)),h.get(e.id)},v=(0,s.defineComponent)({name:`DialogWrapper`,__name:`dialogs`,setup(e){return(0,s.onUnmounted)(()=>{h.forEach(e=>e.destroy()),h.clear()}),(e,t)=>((0,s.openBlock)(),(0,s.createElementBlock)(`div`,m,[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)((0,s.unref)(h),([e,t])=>((0,s.openBlock)(),(0,s.createBlock)((0,s.resolveDynamicComponent)(t.Component),{key:e}))),128))]))}}),y=class{constructor(e){(0,r.K)(this,`resolve`,void 0),(0,r.K)(this,`worker`,(0,s.ref)(null)),this.resolve=e}async get(){if(this.worker.value)return this.worker.value;let e=(await this.resolve()).default;this.worker.value=x(e);let t=this.worker.value;return await(0,a.waitWhile)(()=>!t.isMounted),t}async open(...e){await(await this.get()).open(...e)}async openAsLink(...e){(await this.get()).openAsLink(...e)}async close(...e){(await this.get()).close(...e)}async destroy(...e){(await this.get()).destroy(...e)}async setProps(...e){await(await this.get()).setProps(...e)}},b=()=>{let e=(0,s.getCurrentInstance)();if(e?.type?.id){let t=g(e.type.id);if(t)return t}return(0,s.inject)(`dialogWorker`)},x=e=>_(e);t.a=g,t.i=v,t.r=b,t.n=x,t.t=e=>new y(e)});
2
- //# sourceMappingURL=utils-hK-QjvqM.es.amd.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[".chunks/utils-hK-QjvqM.es.js","../../src/components/dialog/dialog/dialog.vue","../../src/components/dialog/lib/worker.ts","../../src/components/dialog/dialog/composables/dialogHandle.ts","../../src/components/dialog/dialog/dialogs/dialogs.vue","../../src/components/dialog/dialog/composables/asyncDialogHandle.ts","../../src/components/dialog/dialog/composables/utils.ts"],"names":["k2","k","desc","m","o","v","\"default\"","ownKeys","ar","mod","result","i","vue","exports","O","vue_1","F","A","j","e","r","t","a","s","c","l","u","dom_js_1","d","route_js_1","require","resolve_1","reject_1","forms_Ch1q0UUt_es_js_1","M","system_js_1","N","P","I","L","R","B","z"],"mappings":"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","sourcesContent":["var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\ndefine([\"require\", \"exports\", \"./forms-Ch1q0UUt.es.js\", \"../utils/dom.js\", \"../utils/system.js\", \"../utils/route.js\", \"vue\"], function (require, exports, forms_Ch1q0UUt_es_js_1, dom_js_1, system_js_1, route_js_1, vue_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.t = exports.s = exports.r = exports.o = exports.n = exports.i = exports.a = void 0;\n //#region src/components/dialog/dialog/dialog.vue?vue&type=script&setup=true&lang.ts\n var O = [\n \"id\",\n \"data-view-page-active\",\n \"data-modal\",\n \"data-position\"\n ], k = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"dialog\",\n props: {\n id: {},\n pageActive: {},\n width: { default: \"600px\" },\n height: { default: \"auto\" },\n modal: {\n type: Boolean,\n default: !0\n },\n position: {},\n historyType: { default: \"push\" },\n classes: {}\n },\n emits: [\"open\", \"close\"],\n setup(e) {\n let t = F(e.id);\n if (!t)\n throw Error(\"TopDialog cannot be used in a template, use useTopDialog() / useAsyncTopDialog()\");\n return (0, vue_1.provide)(\"dialogWorker\", t), (0, vue_1.onMounted)(() => {\n let e = (0, vue_1.getCurrentInstance)(), n = e.parent;\n if (n?.parent?.type.name !== \"DialogWrapper\")\n throw Error(\"TopDialog cannot be used in a template, use useTopDialog()\");\n if (Array.isArray(n.subTree.children) && n.subTree.children.length !== 1)\n throw Error(\"TopDialog can has only one root element\");\n t.onMounted(n, e);\n }), (0, vue_1.watch)(t.isOpened, () => {\n t.isReady.value = !0;\n }, {\n flush: \"post\",\n once: !0\n }), (n, r) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n id: (0, vue_1.unref)(t).idAttr,\n class: (0, vue_1.normalizeClass)([\"top-dialog\", e.classes]),\n style: (0, vue_1.normalizeStyle)({\n \"--top-dialog-width\": e.width,\n \"--top-dialog-height\": e.height\n }),\n tabindex: \"-1\",\n \"data-view-page-active\": (0, vue_1.unref)(t).pageActive.value,\n \"data-modal\": e.modal,\n \"data-position\": e.position\n }, [\n r[0] ||= (0, vue_1.createElementVNode)(\"div\", { class: \"modal-layer modal-layer-header\" }, null, -1),\n (0, vue_1.createElementVNode)(\"div\", {\n class: \"modal-layer modal-layer-body\",\n style: (0, vue_1.normalizeStyle)({ \"min-height\": e.height + \"px\" })\n }, null, 4),\n (0, vue_1.renderSlot)(n.$slots, \"default\")\n ], 14, O));\n }\n }), A, j = class e {\n static init(r) {\n if (this.inited)\n return;\n this.inited = !0, this.state.load = r?.load, this.state.decoratorOnCreate = r?.decoratorOnCreate;\n let i = r?.autoInitDelay ?? 5e3;\n window.addEventListener(\"hashchange\", (e) => {\n this.opendDialogsFromChangeUrl(e.oldURL, e.newURL);\n }), this.opendDialogsFromChangeUrl(\"\", location.href), document.addEventListener(\"mousedown\", async (t) => {\n if (!(t.target instanceof HTMLElement))\n return;\n let n = t.target.closest(\"a[data-to-view]\");\n if (!n)\n return;\n let r = \"next\";\n n.dataset.action === \"top-dialog-close\" && (r = \"prev\"), n.href = e.genViewPageHash(n.dataset.toView, r);\n }), document.addEventListener(\"click\", async (r) => {\n if (!(r.target instanceof HTMLElement))\n return;\n let i = r.target.closest(\"[data-to-view]\");\n if (!i)\n return;\n if (i instanceof HTMLAnchorElement && i.href === \".\") {\n r.preventDefault();\n let e = new MouseEvent(\"mousedown\", {\n bubbles: !0,\n cancelable: !0,\n view: window\n });\n i.dispatchEvent(e), setTimeout(() => i.click());\n return;\n }\n let a = await this.getDialogsUtils(), s = i.dataset.toView, c = s.split(\"-\")[0], l = a.getElDialogById(c), u = \"next\";\n if (l) {\n let e = (0, dom_js_1.querySelectorAllArray)(l, \".modal-layer\"), t = e.reduce((e, t) => {\n let n = t.querySelector(\":scope > .active\");\n return n && e.push(n), e;\n }, []);\n if (t.length) {\n let n = s.split(\"-\")[1].split(\":\")[0];\n (e.reduce((e, t) => {\n let r = t?.querySelector(`:scope > [data-view-page=\"${n}\"]`);\n return r && e.push(r), e;\n }, [])[0]?.dataset.order ?? 0) < (t[0]?.dataset.order ?? 0) && (u = \"prev\");\n }\n }\n i.dataset.action === \"top-dialog-close\" && (u = \"prev\");\n let d = e.genViewPageHash(s, u);\n if (i instanceof HTMLAnchorElement) {\n if (!l || !(0, dom_js_1.isVisible)(l))\n return;\n if (location.hash.indexOf(s.replace(\"-\", \"=\")) !== -1) {\n await a.toViewDirty(s);\n return;\n }\n }\n l?.dataset.toViewReplace ? (r.preventDefault(), (0, route_js_1.historySetState)(!0, d), await a.toViewDirty(s), u == \"next\" ? e.state.viewPageN++ : e.state.viewPageN--) : i.tagName !== \"A\" && (this.compareStates(d, location.hash) ? (0, route_js_1.historySetState)(!1, d) : await a.toViewDirty(s));\n }), setTimeout(() => this.getDialogsUtils(), i);\n }\n static opendDialogsFromChangeUrl(e, t) {\n let n = e.replace(/.*?#/, \"#\"), r = t.replace(/.*?#/, \"#\");\n this.compareStates(n, r) && this.opendDialogsFromUrl();\n }\n static async getDialogsUtils() {\n let { TopDialogUtils: e } = await new Promise((resolve_1, reject_1) => { require([\"./utils-C0Y5ido8.es.js\"], resolve_1, reject_1); }).then(__importStar);\n return e;\n }\n static getDialog(e) {\n return e.closest(\".ui-dialog-content\");\n }\n static get$dialog(e) {\n return e.closest(\".ui-dialog-content\");\n }\n static getPage(e) {\n return e.closest(\"[data-view-page]\");\n }\n static get$page(e) {\n return e.closest(\"[data-view-page]\");\n }\n static get$pairPage(t) {\n let n = e.get$dialog(t), r = e.get$page(t).data(\"view-page\");\n return $(\"[data-view-page=\\\"\" + r + \"\\\"]\", n);\n }\n static getPairPage(t) {\n let r = e.getDialog(t);\n if (!r)\n return;\n let i = e.getPage(t)?.dataset.viewPage;\n return (0, dom_js_1.querySelectorAllArray)(r, `[data-view-page=\"${i}\"]`);\n }\n static close(e) {\n let t = $(\"#\" + e);\n if (t.dialog(\"instance\")) {\n t.dialog(\"close\");\n return;\n }\n let n = document.getElementById(e);\n n instanceof HTMLDialogElement && n.close();\n }\n static destroy(e) {\n let t = $(\"#\" + e);\n if (t.dialog(\"instance\")) {\n t.dialog(\"close\"), t.dialog(\"destroy\");\n return;\n }\n let n = document.getElementById(e);\n n instanceof HTMLDialogElement && n.close();\n }\n static genViewPageHash(e, t = \"next\") {\n let n = this.state.viewPageN;\n t == \"prev\" ? n-- : n++;\n let r = e.split(\"-\"), a = r.shift(), o = r.join(\"-\"), s = (0, route_js_1.genHash)(\"vpn\", n);\n return s = (0, route_js_1.genHash)(\"view-\" + a, o, s), s;\n }\n static compareStates(e, t) {\n let n = e.match(/[#&]view-[^&]+/g) || [], r = t.match(/[#&]view-[^&]+/g) || [];\n return !!(n.length !== r.length || n.filter((e, t) => e !== (r[t] || \"\")).length);\n }\n };\n exports.s = k;\n exports.o = j;\n A = j, (0, forms_Ch1q0UUt_es_js_1.K)(j, \"state\", {\n load: void 0,\n decoratorOnCreate: void 0,\n viewPageN: 0\n }), (0, forms_Ch1q0UUt_es_js_1.K)(j, \"inited\", !1), (0, forms_Ch1q0UUt_es_js_1.K)(j, \"opendDialogsFromUrl\", async () => {\n let e = Number((0, route_js_1.getHash)(\"vpn\")) || 0, r = ( /* @__PURE__ */RegExp(\"view-((\\\\w+)=([\\\\w-]+)(?::([\\\\w.:-]+))?)\", \"g\")).exec(location.hash);\n if (r) {\n let t = \"next\";\n return e < A.state.viewPageN && (t = \"prev\"), (await A.getDialogsUtils()).toViewDirty(r[1], t);\n }\n return (0, dom_js_1.querySelectorAllArray)(document, \".ui-dialog-content[data-view-page-active]\").filter((e) => (0, dom_js_1.isVisible)(e)).forEach((e) => {\n let t = e.getAttribute(\"id\");\n if (!t)\n throw \"Диалоговое окно не содержит id\";\n (0, route_js_1.getHash)(\"view-\" + t) || $(e).dialog(\"close\");\n }), A.state.viewPageN = e, !0;\n });\n //#endregion\n //#region src/components/dialog/dialog/composables/dialogHandle.ts\n var M = class {\n constructor(t) {\n (0, forms_Ch1q0UUt_es_js_1.K)(this, \"id\", void 0), (0, forms_Ch1q0UUt_es_js_1.K)(this, \"idAttr\", void 0), (0, forms_Ch1q0UUt_es_js_1.K)(this, \"Component\", void 0), (0, forms_Ch1q0UUt_es_js_1.K)(this, \"isMounted\", (0, vue_1.ref)(!1)), (0, forms_Ch1q0UUt_es_js_1.K)(this, \"isReady\", (0, vue_1.ref)(!1)), (0, forms_Ch1q0UUt_es_js_1.K)(this, \"isOpened\", (0, vue_1.ref)(!1)), (0, forms_Ch1q0UUt_es_js_1.K)(this, \"pageActive\", (0, vue_1.ref)(\"\")), (0, forms_Ch1q0UUt_es_js_1.K)(this, \"isLoadingPage\", (0, vue_1.ref)(!1)), (0, forms_Ch1q0UUt_es_js_1.K)(this, \"pageActiveNext\", (0, vue_1.ref)(\"\")), (0, forms_Ch1q0UUt_es_js_1.K)(this, \"props\", void 0), (0, forms_Ch1q0UUt_es_js_1.K)(this, \"emit\", void 0), (0, forms_Ch1q0UUt_es_js_1.K)(this, \"onCloseOnce\", void 0), this.id = t.id, this.idAttr = \"dialog_\" + t.id, this.Component = (0, vue_1.markRaw)(t);\n }\n onMounted(e, t) {\n this.isMounted.value = !0, this.props = e.props, this.emit = t.emit;\n }\n async open(e = \"main\", t, n = [], r, i) {\n t && await this.setProps(t), r && (this.onCloseOnce = r), await (await j.getDialogsUtils()).toView(this.idAttr, e, n, i);\n }\n async openAsLink(e = \"main\", t, n = [], r, i) {\n t && await this.setProps(t), r && (this.onCloseOnce = r);\n let a = this.idAttr + \"-\" + e, s = j.genViewPageHash(a, i);\n (0, route_js_1.historySetState)(!1, s);\n }\n async close() {\n j.close(this.idAttr);\n }\n async destroy() {\n j.destroy(this.idAttr);\n }\n async setProps(e = {}) {\n this.isMounted || await (0, system_js_1.waitWhile)(() => !this.props);\n for (let t in this.props)\n this.props[t] = e[t];\n }\n needShowPage(e) {\n return this.isOpened.value ? this.pageActive.value === e || this.pageActiveNext.value === e : !1;\n }\n }, N = {\n class: \"top-dialogs\",\n style: { display: \"none\" }\n }, P = (0, vue_1.shallowReactive)(/* @__PURE__ */ new Map()), F = (e) => (e = e.replace(/^dialog_/, \"\"), P.get(e)), I = (e) => {\n if (!e?.id)\n throw console.log({ TopDialogComponent: e }), Error(\"Expected TopDialogComponent\");\n return P.has(e.id) || P.set(e.id, new M(e)), P.get(e.id);\n }, L = /* @__PURE__ */ (0, vue_1.defineComponent)({\n name: \"DialogWrapper\",\n __name: \"dialogs\",\n setup(e) {\n return (0, vue_1.onUnmounted)(() => {\n P.forEach((e) => e.destroy()), P.clear();\n }), (e, t) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", N, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)((0, vue_1.unref)(P), ([e, t]) => ((0, vue_1.openBlock)(), (0, vue_1.createBlock)((0, vue_1.resolveDynamicComponent)(t.Component), { key: e }))), 128))]));\n }\n }), R = class {\n constructor(t) {\n (0, forms_Ch1q0UUt_es_js_1.K)(this, \"resolve\", void 0), (0, forms_Ch1q0UUt_es_js_1.K)(this, \"worker\", (0, vue_1.ref)(null)), this.resolve = t;\n }\n async get() {\n if (this.worker.value)\n return this.worker.value;\n let e = (await this.resolve()).default;\n this.worker.value = B(e);\n let t = this.worker.value;\n return await (0, system_js_1.waitWhile)(() => !t.isMounted), t;\n }\n async open(...e) {\n await (await this.get()).open(...e);\n }\n async openAsLink(...e) {\n (await this.get()).openAsLink(...e);\n }\n async close(...e) {\n (await this.get()).close(...e);\n }\n async destroy(...e) {\n (await this.get()).destroy(...e);\n }\n async setProps(...e) {\n await (await this.get()).setProps(...e);\n }\n }, z = () => {\n let e = (0, vue_1.getCurrentInstance)();\n if (e?.type?.id) {\n let t = F(e.type.id);\n if (t)\n return t;\n }\n return (0, vue_1.inject)(\"dialogWorker\");\n }, B = (e) => I(e), V = (e) => new R(e);\n exports.a = F;\n exports.i = L;\n exports.r = z;\n exports.n = B;\n exports.t = V;\n});\n//# sourceMappingURL=utils-hK-QjvqM.es.js.map\n","<script setup lang=\"ts\">\nimport type { ComponentInternalInstance } from 'vue';\nimport { getCurrentInstance, onMounted, provide, watch } from 'vue';\nimport { getDialogWorker } from './dialogs/dialogs.vue';\nimport type { Emits, Props, Slots } from './types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\twidth: '600px',\n\theight: 'auto',\n\tmodal: true,\n\thistoryType: 'push',\n});\n\ndefineEmits<Emits>();\n\ndefineSlots<Slots>();\n\nconst dialog = getDialogWorker(props.id);\nif (!dialog) {\n\tthrow new Error('TopDialog cannot be used in a template, use useTopDialog() / useAsyncTopDialog()');\n}\n\n/**\n * Для useTopDialogSelf()\n */\nprovide('dialogWorker', dialog);\n\n/**\n * Инициализация начального состояния TopDialogHandle\n */\nonMounted(() => {\n\tconst topDialogBaseComponent = getCurrentInstance() as ComponentInternalInstance;\n\tconst topDialogComponent = topDialogBaseComponent.parent;\n\n\tif (topDialogComponent?.parent?.type.name !== 'DialogWrapper') {\n\t\tthrow new Error('TopDialog cannot be used in a template, use useTopDialog()');\n\t}\n\n\tif (Array.isArray(topDialogComponent.subTree.children) && topDialogComponent.subTree.children.length !== 1) {\n\t\tthrow new Error('TopDialog can has only one root element');\n\t}\n\n\tdialog.onMounted(topDialogComponent, topDialogBaseComponent);\n});\n\nwatch(dialog.isOpened, () => {\n\tdialog.isReady.value = true;\n}, {\n\tflush: 'post',\n\tonce: true,\n});\n</script>\n\n<template>\n\t<div\n\t\t:id=\"dialog.idAttr\"\n\t\tclass=\"top-dialog\"\n\t\t:class=\"classes\"\n\t\t:style=\"{\n\t\t\t'--top-dialog-width': width,\n\t\t\t'--top-dialog-height': height,\n\t\t}\"\n\t\ttabindex=\"-1\"\n\t\t:data-view-page-active=\"dialog.pageActive.value\"\n\t\t:data-modal=\"modal\"\n\t\t:data-position=\"position\"\n\t>\n\t\t<div class=\"modal-layer modal-layer-header\"></div>\n\n\t\t<div class=\"modal-layer modal-layer-body\" :style=\"{'min-height': height + 'px'}\"></div>\n\n\t\t<slot name=\"default\"></slot>\n\t</div>\n</template>\n","import { genHash, getHash, historySetState } from '@/core/utils/route';\nimport type { ElTopDialog, ElTopDialogOpener, ElTopDialogPage, MoveDirection, TopDialogOptions } from './types';\nimport { isVisible, querySelectorAllArray } from '@/core/utils/dom';\nimport type { $el } from '@/components/types';\n\nexport abstract class TopDialogWorker {\n\tstatic state = {\n\t\tload: undefined as TopDialogOptions['load'] | undefined,\n\t\tdecoratorOnCreate: undefined as TopDialogOptions['decoratorOnCreate'] | undefined,\n\n\t\t/**\n\t\t * Порядковый номер перехода в диалоговых окнах\n\t\t *\n\t\t * Для расчета анимации Вперед / Назад\n\t\t */\n\t\tviewPageN: 0,\n\t};\n\n\tprivate static inited = false;\n\n\t/**\n\t * Инициировать события слежения за парамтерами url\n\t *\n\t * Если в параметрах есть запрос на открытие диалогового окна, TopDialog будет автоматически подключен на страницу\n\t */\n\tstatic init(options?: TopDialogOptions) {\n\t\tif (this.inited) return;\n\t\tthis.inited = true;\n\n\t\tthis.state.load = options?.load;\n\t\tthis.state.decoratorOnCreate = options?.decoratorOnCreate;\n\n\t\tconst autoInitDelay = options?.autoInitDelay ?? 5000;\n\n\t\twindow.addEventListener('hashchange', (e) => {\n\t\t\tthis.opendDialogsFromChangeUrl(e.oldURL, e.newURL);\n\t\t});\n\n\t\tthis.opendDialogsFromChangeUrl('', location.href);\n\n\t\t/**\n\t\t * Сгенерировать ссылку для перехода к странице диалогового окна\n\t\t */\n\t\tdocument.addEventListener('mousedown', async (e) => {\n\t\t\tif (!(e.target instanceof HTMLElement)) return;\n\n\t\t\tconst elEventTarget = e.target;\n\n\t\t\tconst el = elEventTarget.closest<ElTopDialogOpener<HTMLAnchorElement>>('a[data-to-view]');\n\t\t\tif (!el) return;\n\n\t\t\t// const toView = el.dataset.toView;\n\t\t\t// const viewName = toView.split('-')[0];\n\t\t\t// const $toDialog = $('#' + viewName);\n\t\t\t// const $modalLayers = $('> .modal-layer', $toDialog);\n\t\t\t// const $currentPage = $('> .active', $modalLayers);\n\n\t\t\tlet moveDirection: MoveDirection = 'next';\n\n\t\t\t// /**\n\t\t\t// * Данный алгоритм определения направления работает не корректно, так как для чтения свойства order менят состояние через getDialogsUtils()\n\t\t\t// */\n\t\t\t// if ($currentPage.length) {\n\t\t\t// \tconst pageName = toView.split('-')[1].split(':')[0];\n\t\t\t//\n\t\t\t// \tconst TopDialogUtils = await this.getDialogsUtils();\n\t\t\t//\n\t\t\t// \tawait TopDialogUtils.updatePageVue(viewName, undefined, pageName);\n\t\t\t//\n\t\t\t// \tconst $nextPage = $('> [data-view-page=\"' + pageName + '\"]', $modalLayers);\n\t\t\t// \tif ($nextPage.data('order') < $currentPage.data('order')) moveDirection = 'prev';\n\t\t\t// }\n\n\t\t\tif (el.dataset.action === 'top-dialog-close') moveDirection = 'prev';\n\n\t\t\tel.href = TopDialogWorker.genViewPageHash(el.dataset.toView, moveDirection);\n\t\t});\n\n\t\t/**\n\t\t * Осуществить переход по ссылке с учетом historyType\n\t\t */\n\t\tdocument.addEventListener('click', async (e) => {\n\t\t\tif (!(e.target instanceof HTMLElement)) return;\n\n\t\t\tconst elEventTarget = e.target;\n\n\t\t\tconst el = elEventTarget.closest<ElTopDialogOpener>('[data-to-view]');\n\t\t\tif (!el) return;\n\n\t\t\t// Подождать генерацию ссылки\n\t\t\tif (el instanceof HTMLAnchorElement && el.href === '.') {\n\t\t\t\te.preventDefault();\n\n\t\t\t\tconst mouseEvent = new MouseEvent('mousedown', {\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcancelable: true,\n\t\t\t\t\tview: window,\n\t\t\t\t});\n\n\t\t\t\tel.dispatchEvent(mouseEvent);\n\n\t\t\t\tsetTimeout(() => el.click());\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst TopDialogUtils = await this.getDialogsUtils();\n\n\t\t\tconst toView = el.dataset.toView;\n\t\t\tconst viewName = toView.split('-')[0];\n\n\t\t\tconst elDialog = TopDialogUtils.getElDialogById(viewName);\n\n\t\t\tlet moveDirection: MoveDirection = 'next';\n\n\t\t\tif (elDialog) {\n\t\t\t\tconst elModalLayers = querySelectorAllArray(elDialog, '.modal-layer');\n\t\t\t\tconst elCurrentPages = elModalLayers.reduce<ElTopDialogPage[]>((acc, el) => {\n\t\t\t\t\tconst elCurrentPage = el.querySelector<ElTopDialogPage>(':scope > .active');\n\n\t\t\t\t\tif (elCurrentPage) acc.push(elCurrentPage);\n\n\t\t\t\t\treturn acc;\n\t\t\t\t}, []);\n\n\t\t\t\tif (elCurrentPages.length) {\n\t\t\t\t\tconst pageName = toView.split('-')[1].split(':')[0];\n\t\t\t\t\tconst elNextPages = elModalLayers.reduce<ElTopDialogPage[]>((acc, el) => {\n\t\t\t\t\t\tconst elNextPage = el?.querySelector<ElTopDialogPage>(`:scope > [data-view-page=\"${pageName}\"]`);\n\n\t\t\t\t\t\tif (elNextPage) acc.push(elNextPage);\n\n\t\t\t\t\t\treturn acc;\n\t\t\t\t\t}, []);\n\n\t\t\t\t\tif ((elNextPages[0]?.dataset.order ?? 0) < (elCurrentPages[0]?.dataset.order ?? 0)) moveDirection = 'prev';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (el.dataset.action === 'top-dialog-close') moveDirection = 'prev';\n\n\t\t\tconst hash = TopDialogWorker.genViewPageHash(toView, moveDirection);\n\n\t\t\tif (el instanceof HTMLAnchorElement) {\n\t\t\t\t// диалоговое окно еще не открыто, произвести переход по ссылке\n\t\t\t\tif (!elDialog || !isVisible(elDialog)) return;\n\n\t\t\t\t// в адресе уже указана эта страница, необходимо явно запросить ее открытие\n\t\t\t\tif (location.hash.indexOf(toView.replace('-', '=')) !== -1) {\n\t\t\t\t\tawait TopDialogUtils.toViewDirty(toView);\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst replaceHistory = !!elDialog?.dataset.toViewReplace;\n\n\t\t\tif (replaceHistory) {\n\t\t\t\te.preventDefault();\n\n\t\t\t\thistorySetState(true, hash);\n\n\t\t\t\tawait TopDialogUtils.toViewDirty(toView);\n\n\t\t\t\tif (moveDirection == 'next') {\n\t\t\t\t\tTopDialogWorker.state.viewPageN++;\n\t\t\t\t} else {\n\t\t\t\t\tTopDialogWorker.state.viewPageN--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (el.tagName !== 'A') {\n\t\t\t\t\tif (this.compareStates(hash, location.hash)) {\n\t\t\t\t\t\thistorySetState(false, hash);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tawait TopDialogUtils.toViewDirty(toView);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tsetTimeout(() => this.getDialogsUtils(), autoInitDelay);\n\t}\n\n\tprivate static opendDialogsFromChangeUrl(oldUrl: string, newUrl: string) {\n\t\tconst oldHash = oldUrl.replace(/.*?#/, '#');\n\t\tconst newHash = newUrl.replace(/.*?#/, '#');\n\n\t\tconst dialogsStateChanged = this.compareStates(oldHash, newHash);\n\t\tif (dialogsStateChanged) void this.opendDialogsFromUrl();\n\t}\n\n\tstatic async getDialogsUtils() {\n\t\tconst { TopDialogUtils } = await import('./utils');\n\n\t\treturn TopDialogUtils;\n\t}\n\n\tstatic getDialog(el: HTMLElement) {\n\t\treturn el.closest<ElTopDialog>('.ui-dialog-content');\n\t};\n\n\t/**\n\t * todo: Переписать на сайте на this.getDialog()\n\t *\n\t * @deprecated Для обратной совместимости\n\t */\n\tstatic get$dialog($el: $el) {\n\t\treturn $el.closest('.ui-dialog-content');\n\t};\n\n\tstatic getPage(el: HTMLElement) {\n\t\treturn el.closest<ElTopDialogPage>('[data-view-page]');\n\t};\n\n\t/**\n\t * todo: Переписать на сайте на this.getPage()\n\t *\n\t * @deprecated Для обратной совместимости\n\t */\n\tstatic get$page($el: $el) {\n\t\treturn $el.closest('[data-view-page]');\n\t};\n\n\t/**\n\t * todo: Переписать на сайте на this.getPairPage()\n\t *\n\t * @deprecated Для обратной совместимости\n\t */\n\tstatic get$pairPage($el: $el) {\n\t\tconst $dialog = TopDialogWorker.get$dialog($el);\n\n\t\tconst $page = TopDialogWorker.get$page($el);\n\t\tconst pageName = $page.data('view-page');\n\n\t\treturn $('[data-view-page=\"' + pageName + '\"]', $dialog);\n\t};\n\n\tstatic getPairPage(el: HTMLElement) {\n\t\tconst elDialog = TopDialogWorker.getDialog(el);\n\t\tif (!elDialog) return;\n\n\t\tconst elPage = TopDialogWorker.getPage(el);\n\t\tconst pageName = elPage?.dataset.viewPage;\n\n\t\treturn querySelectorAllArray(elDialog, `[data-view-page=\"${pageName}\"]`);\n\t};\n\n\t/**\n\t * Закрыть диалоговое окно\n\t */\n\tstatic close(dialogId: string) {\n\t\tconst $dialog = $('#' + dialogId);\n\t\tif ($dialog.dialog('instance')) {\n\t\t\t$dialog.dialog('close');\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst elDialog = document.getElementById(dialogId);\n\n\t\tif (!(elDialog instanceof HTMLDialogElement)) return;\n\n\t\telDialog.close();\n\t};\n\n\t/**\n\t * Размонтировать $.dialog\n\t */\n\tstatic destroy(dialogId: string) {\n\t\tconst $dialog = $('#' + dialogId);\n\n\t\tif ($dialog.dialog('instance')) {\n\t\t\t$dialog.dialog('close');\n\t\t\t$dialog.dialog('destroy');\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst elDialog = document.getElementById(dialogId);\n\t\tif (!(elDialog instanceof HTMLDialogElement)) return;\n\n\t\telDialog.close();\n\t};\n\n\t/**\n\t * Сгенерировать ссылку на страницу в диалоговом окне\n\t * @param toView - указатель в формате: dialog_{{ dialogId }}={{ pageName }}:{{ args }}\n\t * @param moveDirection\n\t */\n\tstatic genViewPageHash(toView: string, moveDirection: MoveDirection = 'next') {\n\t\tlet toViewPageN = this.state.viewPageN;\n\t\tif (moveDirection == 'prev') {\n\t\t\ttoViewPageN--;\n\t\t} else {\n\t\t\ttoViewPageN++;\n\t\t}\n\n\t\tconst viewNameAndPageLink = toView.split('-');\n\t\tconst viewName = viewNameAndPageLink.shift();\n\t\tconst pageLink = viewNameAndPageLink.join('-');\n\n\t\tlet hash = genHash('vpn', toViewPageN);\n\t\thash = genHash('view-' + viewName, pageLink, hash);\n\n\t\treturn hash;\n\t};\n\n\t/**\n\t * Сравнить версию открытых диалоговых окон\n\t * @returns вернет true, если состояния открытых окон изменилось\n\t */\n\tstatic compareStates(hash: string, hash2: string) {\n\t\tconst mathes = hash.match(/[#&]view-[^&]+/g) || [];\n\t\tconst mathes2 = hash2.match(/[#&]view-[^&]+/g) || [];\n\n\t\tif (mathes.length !== mathes2.length) return true;\n\n\t\tconst mathesChanged = mathes.filter((math, n) => {\n\t\t\tconst math2 = mathes2[n] || '';\n\n\t\t\treturn math !== math2;\n\t\t});\n\n\t\tif (mathesChanged.length) return true;\n\n\t\treturn false;\n\t};\n\n\tstatic opendDialogsFromUrl = async () => {\n\t\tconst toViewPageN = Number(getHash('vpn')) || 0;\n\n\t\t// Открыть диалоговое окно\n\t\t// const regexp = new RegExp('view-((\\\\w+)=([\\\\w-]+)(?::([\\\\w.:-]+))?)' + '(' + Math.random() + ')?', 'g'); // fix babel minify regexp\n\t\tconst regexp = new RegExp('view-((\\\\w+)=([\\\\w-]+)(?::([\\\\w.:-]+))?)', 'g');\n\t\tconst view = regexp.exec(location.hash);\n\n\t\tif (view) {\n\t\t\tlet moveDirection: MoveDirection = 'next';\n\t\t\tif (toViewPageN < this.state.viewPageN) moveDirection = 'prev';\n\n\t\t\tconst TopDialogUtils = await this.getDialogsUtils();\n\n\t\t\treturn TopDialogUtils.toViewDirty(view[1], moveDirection);\n\t\t}\n\n\t\t// Закрыть ненужные view\n\t\tconst elDialogs = querySelectorAllArray(document, '.ui-dialog-content[data-view-page-active]') as HTMLDialogElement[];\n\t\telDialogs.filter((elDialog) => {\n\t\t\treturn isVisible(elDialog);\n\t\t}).forEach((elDialog) => {\n\t\t\tconst viewName = elDialog.getAttribute('id');\n\t\t\tif (!viewName) throw 'Диалоговое окно не содержит id';\n\t\t\tconst pageName = getHash('view-' + viewName);\n\t\t\tif (!pageName) {\n\t\t\t\tconst $dialog = $(elDialog);\n\n\t\t\t\t$dialog.dialog('close');\n\t\t\t}\n\t\t});\n\n\t\tthis.state.viewPageN = toViewPageN;\n\n\t\treturn true;\n\t};\n}\n","import { type ComponentInstance, type ComponentInternalInstance, markRaw, ref } from 'vue';\nimport { waitWhile } from '@/core/utils/system';\nimport TopDialog from '../dialog.vue';\nimport { TopDialogWorker } from '@/components/dialog/lib/worker';\nimport type { MoveDirection } from '@/components/dialog/lib/types';\nimport type { TopDialogComponent } from './types';\nimport { historySetState } from '@/core/utils/route';\n\n/**\n * Объект для работы с диалоговым окном\n *\n * Каждое окно уникально и может быть открыто одновременно только один раз\n *\n * Можно определить много окон, после чего с ними можно вести работу в любой части приложения\n */\nexport class TopDialogHandle<T extends TopDialogComponent> {\n\n\t/**\n\t * Индентификатор, определяется на уровне компонента TopDialogComponent\n\t *\n\t * Может использоваться в навигации для открытия нужных окон с нужными настройками\n\t */\n\tid: string;\n\n\t/**\n\t * ID, используемый в верстке диалогового окна\n\t */\n\tidAttr: string;\n\n\t/**\n\t * Пользовательский компонент диалогового окна\n\t */\n\tComponent: T;\n\n\t/**\n\t * Компонент инициирован\n\t *\n\t * Устанавливается после первого вызова useTopDialog()\n\t */\n\tisMounted = ref(false);\n\n\t/**\n\t * Компонент готов к использованию\n\t *\n\t * Используется для внутренних преобразований после отрисовки\n\t */\n\tisReady = ref(false);\n\n\t/**\n\t * Диалоговое окно открыто\n\t */\n\tisOpened = ref(false);\n\n\t/**\n\t * Имя активной страницы дилогового окна\n\t */\n\tpageActive = ref('');\n\n\t/**\n\t * Диалоговое окно находится в состоянии загрузки своей страницы\n\t */\n\tisLoadingPage = ref(false);\n\n\t/**\n\t * Следующая активная страница\n\t *\n\t * В один момент времени может потребоваться отобразить две страницы, чтобы воспроизвести анимацию\n\t */\n\tpageActiveNext = ref('');\n\n\t/**\n\t * props компонента, доступны после инициализации\n\t */\n\tprops?: ComponentInstance<T>['$props'];\n\n\t/**\n\t * emit базового компонента `TopDialog`\n\t */\n\temit?: ComponentInstance<typeof TopDialog>['$emit'];\n\n\t/**\n\t * Одноразовое событие на закрытие диалогового окна\n\t *\n\t * Используется для привязки окна к сценариям использования\n\t */\n\tonCloseOnce?: (props: typeof this.props, pageName: string) => void;\n\n\tconstructor(TopDialogComponent: T) {\n\t\tthis.id = TopDialogComponent.id!;\n\t\tthis.idAttr = 'dialog_' + TopDialogComponent.id;\n\t\tthis.Component = markRaw(TopDialogComponent);\n\t}\n\n\t/**\n\t * Событие - компонент инициирован\n\t */\n\tonMounted(topDialogComponent: ComponentInternalInstance, topDialogBaseComponent: ComponentInternalInstance) {\n\t\tthis.isMounted.value = true;\n\t\tthis.props = topDialogComponent.props;\n\t\tthis.emit = topDialogBaseComponent.emit;\n\t}\n\n\t/**\n\t * Открыть диалоговое окно\n\t *\n\t * Учтите, что props в диалоговом окне будут доступны не сразу, а только после инициализации vue компонента\n\t */\n\tasync open(pageName: string = 'main', props?: Record<string, unknown>, args: [] = [], onCloseOnce?: typeof this.onCloseOnce, moveDirection?: MoveDirection) {\n\t\tif (props) await this.setProps(props);\n\t\tif (onCloseOnce) this.onCloseOnce = onCloseOnce;\n\n\t\tconst TopDialogUtils = await TopDialogWorker.getDialogsUtils();\n\n\t\tawait TopDialogUtils.toView(this.idAttr, pageName, args, moveDirection);\n\t};\n\n\t/**\n\t * Открыть диалоговое окно как ссылку, для хеш-навигации\n\t *\n\t * Диалоговые окна загружаются по имени, см. настройку плагина Core topDialogLoader\n\t */\n\tasync openAsLink(\n\t\tpageName: string = 'main',\n\t\tprops?: Record<string, unknown>,\n\t\t_args: string[] = [],\n\t\tonCloseOnce?: typeof this.onCloseOnce,\n\t\tmoveDirection?: MoveDirection,\n\t) {\n\t\tif (props) await this.setProps(props);\n\t\tif (onCloseOnce) this.onCloseOnce = onCloseOnce;\n\n\t\tconst viewName = this.idAttr + '-' + pageName;\n\n\t\tconst hash = TopDialogWorker.genViewPageHash(viewName, moveDirection);\n\t\thistorySetState(false, hash);\n\t};\n\n\t/**\n\t * Закрыть диалоговое окно\n\t *\n\t * Не меняет состояние компонента диалогового окна\n\t */\n\tasync close() {\n\t\tTopDialogWorker.close(this.idAttr);\n\t};\n\n\t/**\n\t * Размонтировать $.dialog\n\t */\n\tasync destroy() {\n\t\tTopDialogWorker.destroy(this.idAttr);\n\t}\n\n\t/**\n\t * Устанвоить props\n\t *\n\t * Полностью сбрасывается состояние props\n\t */\n\tasync setProps(props: ComponentInstance<T>['$props'] = {}) {\n\t\t// ожидание инициализации компонента\n\t\tif (!this.isMounted) {\n\t\t\tawait waitWhile(() => !this.props);\n\t\t}\n\n\t\tfor (const name in this.props) {\n\t\t\tthis.props[name] = props[name];\n\t\t}\n\t}\n\n\t/**\n\t * Проверить, есть ли необходимость отрисовки страницы диалогового окна\n\t */\n\tneedShowPage(pageName: string): boolean {\n\t\tif (!this.isOpened.value) return false;\n\n\t\treturn this.pageActive.value === pageName || this.pageActiveNext.value === pageName;\n\t}\n\n}\n","<script lang=\"ts\">\nimport { shallowReactive } from 'vue';\nimport { TopDialogHandle } from '@/components/dialog/dialog/composables/dialogHandle';\nimport type { TopDialogComponent } from '@/components/dialog/dialog/composables/types';\n\n/**\n * Словарь всех используемых диалоговых окон\n *\n * В других компонентах не использовать\n */\nconst dialogsWorkers = shallowReactive(new Map<string, TopDialogHandle<TopDialogComponent>>());\n\n/**\n * Получить компонент диалогового окна по id\n */\nexport const getDialogWorker = (id: string) => {\n\tid = id.replace(/^dialog_/, '');\n\n\treturn dialogsWorkers.get(id);\n};\n\n/**\n * Добавить компонент диалогового окна для использования\n */\nexport const addDialogWorker = <T extends TopDialogComponent>(TopDialogComponent: T): TopDialogHandle<T> => {\n\tif (!TopDialogComponent?.id) {\n\t\tconsole.log({ TopDialogComponent: TopDialogComponent });\n\n\t\tthrow new Error('Expected TopDialogComponent');\n\t}\n\n\tif (!dialogsWorkers.has(TopDialogComponent.id)) {\n\t\tdialogsWorkers.set(TopDialogComponent.id, new TopDialogHandle(TopDialogComponent));\n\t}\n\n\treturn dialogsWorkers.get(TopDialogComponent.id) as TopDialogHandle<T>;\n};\n</script>\n\n<script setup lang=\"ts\">\nimport { onUnmounted } from 'vue';\n\ndefineOptions({\n\tname: 'DialogWrapper',\n});\n\nonUnmounted(() => {\n\tdialogsWorkers.forEach(dialog => dialog.destroy());\n\tdialogsWorkers.clear();\n});\n</script>\n\n<template>\n\t<div class=\"top-dialogs\" style=\"display: none;\">\n\t\t<component\n\t\t\tv-for=\"[dialogId, dialog] in dialogsWorkers\"\n\t\t\t:is=\"dialog.Component\"\n\t\t\t:key=\"dialogId\"\n\t\t/>\n\t</div>\n</template>\n","import type { Ref } from 'vue';\nimport { ref } from 'vue';\nimport { useTopDialog } from './utils';\nimport { waitWhile } from '@/core/utils/system';\nimport type { AsyncTopDialogComponentLoader, TopDialogComponent } from './types';\nimport { TopDialogHandle } from './dialogHandle';\n\n/**\n * Объект для работы с асинхронным диалоговым окном\n *\n * Является прослойкой для доступа к TopDialogHandle\n */\nexport class AsyncTopDialogHandle<T extends TopDialogComponent> {\n\n\t/**\n\t * Функция, определяющая компонент TopDialogComponent\n\t */\n\treadonly resolve: AsyncTopDialogComponentLoader<T>;\n\n\t/**\n\t * Реактивная Сссылка на объект worker,\n\t *\n\t * Ссылка не будет указывать на объект, если диалоговое окно еще не загружено\n\t */\n\treadonly worker: Ref<TopDialogHandle<T> | null> = ref(null);\n\n\tconstructor(resolve: AsyncTopDialogComponentLoader<T>) {\n\t\tthis.resolve = resolve;\n\t}\n\n\t/**\n\t * Получить доступ к TopDialogHandle\n\t */\n\tasync get() {\n\t\tif (this.worker.value) return this.worker.value;\n\n\t\tconst result = await this.resolve();\n\t\tconst TopDialogComponent = result.default;\n\n\t\tthis.worker.value = useTopDialog(TopDialogComponent);\n\n\t\tconst worker = this.worker.value;\n\n\t\tawait waitWhile(() => !worker.isMounted);\n\n\t\treturn worker;\n\t}\n\n\t/**\n\t * Открыть диалоговое окно\n\t */\n\tasync open(...args: Parameters<TopDialogHandle<T>['open']>) {\n\t\tconst worker = await this.get();\n\n\t\tawait worker.open(...args);\n\t}\n\n\t/**\n\t * Открыть диалоговое окно как ссылку, для хеш-навигации\n\t *\n\t * Только общедоступные диалоговые окна, расположенные в @/dialogs\n\t */\n\tasync openAsLink(...args: Parameters<TopDialogHandle<T>['open']>) {\n\t\tconst worker = await this.get();\n\n\t\tvoid worker.openAsLink(...args);\n\t}\n\n\t/**\n\t * Закрыть диалоговое окно\n\t *\n\t * Не меняет состояние компонента диалогового окна\n\t */\n\tasync close(...args: Parameters<TopDialogHandle<T>['close']>) {\n\t\tconst worker = await this.get();\n\n\t\tworker.close(...args);\n\t}\n\n\t/**\n\t * Размонтировать виджет диалогового окна\n\t */\n\tasync destroy(...args: Parameters<TopDialogHandle<T>['close']>) {\n\t\tconst worker = await this.get();\n\n\t\tworker.destroy(...args);\n\t}\n\n\t/**\n\t * Установить props\n\t *\n\t * Полностью сбрасывается состояние props\n\t */\n\tasync setProps(...args: Parameters<TopDialogHandle<T>['setProps']>) {\n\t\tconst worker = await this.get();\n\n\t\tawait worker.setProps(...args);\n\t}\n}\n","import { getCurrentInstance, inject } from 'vue';\nimport { TopDialogHandle } from './dialogHandle';\nimport { AsyncTopDialogHandle } from './asyncDialogHandle';\nimport type { AsyncTopDialogComponentLoader, TopDialogComponent } from './types';\nimport { addDialogWorker, getDialogWorker } from '../dialogs/dialogs.vue';\n\n/**\n * Получить объект управленя текущим диалоговым окном\n */\nexport const useTopDialogSelf = () => {\n\t// вызов из пользовтаельского компонента диалога\n\tconst topDialogComponent = getCurrentInstance() as any;\n\tif (topDialogComponent?.type?.id) {\n\t\tconst dialogWorker = getDialogWorker(topDialogComponent.type.id);\n\t\tif (dialogWorker) return dialogWorker;\n\t}\n\n\treturn inject('dialogWorker') as TopDialogHandle<TopDialogComponent>;\n};\n\n/**\n * Получить объект управленя диалоговым окном\n *\n * При первом вызове компонент диалогового окна будет внедрен в компонент DialogWrapper\n */\nexport const useTopDialog = <T extends TopDialogComponent>(DialogComponent: T): TopDialogHandle<T> => {\n\treturn addDialogWorker(DialogComponent);\n};\n\n/**\n * Получить объект управленя асинхронным диалоговым окном\n *\n * Компонент диалогового окна будет загружен и инициирован при первом взаимодействии с объектом\n *\n * Использует useTopDialog()\n */\nexport const useAsyncTopDialog = <T extends TopDialogComponent>(resolve: AsyncTopDialogComponentLoader<T>): AsyncTopDialogHandle<T> => {\n\treturn new AsyncTopDialogHandle(resolve);\n};\n"]}
@@ -1,2 +0,0 @@
1
- var __createBinding=this&&this.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),__importStar=this&&this.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var r=e(t),i=0;i<r.length;i++)r[i]!=="default"&&__createBinding(n,t,r[i]);return __setModuleDefault(n,t),n}})(),__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};define([`require`,`exports`,`./forms-Ch1q0UUt.es.amd`,`../utils/dom.amd`],function(require,exports,forms_Ch1q0UUt_es_js_1,dom_js_1){"use strict";if(vue===void 0)var vue=window.Vue;Object.defineProperty(exports,"__esModule",{value:!0}),exports.t=void 0,dom_js_1=__importDefault(dom_js_1);var Worker=class Worker{static getPopup(e){return dom_js_1.default.storage(e,`TopPopup`)}static getParentPopup(e){let t=Worker.getElPopup(e);if(!t)return;let n=Worker.getPopup(t);if(n)return n}static getClosestPopup(e,t){let n=Worker.getParentPopup(e);if(n&&n.el)return n.el===t?n:Worker.getClosestPopup(n.el,t)}static getElPopup(e){return e.closest(`.top-popup-wrapper`)}static getElPopupOpener(e){return e.closest(`[data-top-popup]`)}static getPopupFromOpener(e){let t=Worker.getElPopupOpener(e);return t?dom_js_1.default.storage(t,`#TopPopup`):null}static getAll(){return dom_js_1.default.querySelectorAllArray(document,`.top-popup-wrapper`)}static getAllVisible(){return dom_js_1.default.querySelectorAllVisible(document,`.top-popup-wrapper`)}static async openByOpener(e){if(!(e instanceof HTMLElement))return;let t={};return t.popup=e.dataset.topPopup,t.id=e.dataset.topPopupId,!t.id&&t.popup&&(e.dataset.topPopupId=btoa(String.fromCharCode(...new TextEncoder().encode(t.popup))),t.id=e.dataset.topPopupId),e.dataset.topPopupP&&(t.p=parseInt(e.dataset.topPopupP)),e.dataset.topPopupPos&&(t.p=parseInt(e.dataset.topPopupPos)),e.dataset.topPopupNotch&&(t.notch=e.dataset.topPopupNotch===`true`||e.dataset.topPopupNotch===`1`),e.dataset.topPopupClass&&(t.class=e.dataset.topPopupClass),e.dataset.topPopupPosBy&&(t.posBy=e.dataset.topPopupPosBy),e.dataset.topPopupFront&&(t.frontSelector=e.dataset.topPopupFront),e.dataset.topPopupInvertX&&(t.invertX=e.dataset.topPopupInvertX===`true`||e.dataset.topPopupInvertX===`1`),e.dataset.topPopupOpenByHovertopPopupOpenByHover&&(t.openByHover=e.dataset.topPopupOpenByHover===`true`||e.dataset.topPopupOpenByHover===`1`),e.dataset.topPopupUseOriginal&&(t.useOriginal=e.dataset.topPopupUseOriginal===`true`||e.dataset.topPopupUseOriginal===`1`),await Worker.open(e,t)}static async open(elOpener,options){elOpener instanceof HTMLElement&&(elOpener.dataset.topPopupOpened=`opened`);const{TopLibPopup}=await new Promise((e,t)=>{require([`./popup-l46cef9d.es.amd`],e,t)}).then(__importStar);if(forms_Ch1q0UUt_es_js_1.O.$){const $elOpener=forms_Ch1q0UUt_es_js_1.O.$(elOpener);if($elOpener.data(`aftershow`)){let afterShow=$elOpener.data(`aftershow`);typeof afterShow==`string`&&(afterShow=eval(afterShow.replace(/\W/g,``))),$elOpener.one(`aftershow.top-menu-popup`,afterShow)}if($elOpener.data(`afterclose`)){let afterclose=$elOpener.data(`afterclose`);typeof afterclose==`string`&&(afterclose=eval(afterclose.replace(/\W/g,``))),$elOpener.one(`afterclose.top-menu-popup`,afterclose)}}return options.isFullScreen=forms_Ch1q0UUt_es_js_1.O.state.isMobile,new TopLibPopup(elOpener,options)}static close(e,t=!1){let n=Worker.getPopup(e);if(n){n.close();let e=n.el.contains(document.activeElement);t&&!e&&setTimeout(()=>{let e=Worker.getParentPopup(n.el);if(e?.openerIsInput){e.el.focus();return}n.el.focus()})}}static recalcPosition(e){let t=Worker.getPopup(e);t&&t.elPopupBody instanceof HTMLElement&&t.recalcPosition()}static scrollToActive(e){if(!dom_js_1.default.querySelectorVisible(e,`ul.top-popup_content > li > .top-active`))return;let t=e.querySelector(`ul.top-popup_content`),n=dom_js_1.default.querySelectorAllVisible(e,`ul.top-popup_content > li`);e.classList.add(`top-popup-wrapper-no_animate`),setTimeout(()=>e.classList.remove(`top-popup-wrapper-no_animate`),100);let r=100;for(let e of n){if(e.querySelector(`:scope > .top-active`))break;e instanceof HTMLElement&&(r+=e.offsetHeight)}if(t instanceof HTMLElement){let e=t.offsetHeight;t.scrollTop=r>e?r-e:0}}static decoratorBeforeOpen(e){this.options.decoratorBeforeOpen&&this.options.decoratorBeforeOpen(e)}static decoratorAfterOpen(e){this.options.decoratorAfterOpen&&this.options.decoratorAfterOpen(e)}static decoratorIsIgnoreOuterClick(e){return this.options.decoratorIsIgnoreOuterClick?this.options.decoratorIsIgnoreOuterClick(e):!1}static regVueComponent(e,t){if(Worker.vueConnectors.get(e))throw`Vue component Popup use duplicated id: `+e;Worker.vueConnectors.set(e,t)}static unregVueComponent(e){Worker.vueConnectors.delete(e)}static genElPopupOpener(e,t,...n){let r=dom_js_1.default.genEl(e,{},...n);r.dataset.topPopup=`#`+t.id;for(let e in t){let n=`topPopup`+e.charAt(0).toUpperCase()+e.slice(1);r.dataset[n]=t[e]}return r.__TopPopupOpenerProps=t,r}};exports.t=Worker,(0,forms_Ch1q0UUt_es_js_1.K)(Worker,`noClose`,!1),(0,forms_Ch1q0UUt_es_js_1.K)(Worker,`vueConnectors`,new Map),(0,forms_Ch1q0UUt_es_js_1.K)(Worker,`options`,{})});
2
- //# sourceMappingURL=worker-D-5BEVm7.es.amd.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[".chunks/worker-D-5BEVm7.es.js","../../src/components/popup/lib/worker.ts"],"names":["k2","k","desc","m","o","v","\"default\"","ownKeys","ar","mod","result","resolve_1","reject_1"],"mappings":"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","sourcesContent":["var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\ndefine([\"require\", \"exports\", \"./forms-Ch1q0UUt.es.js\", \"../utils/dom.js\"], function (require, exports, forms_Ch1q0UUt_es_js_1, dom_js_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.t = void 0;\n dom_js_1 = __importDefault(dom_js_1);\n //#region src/components/popup/lib/worker.ts\n var Worker = class Worker {\n static getPopup(e) {\n return dom_js_1.default.storage(e, \"TopPopup\");\n }\n static getParentPopup(e) {\n let t = Worker.getElPopup(e);\n if (!t)\n return;\n let n = Worker.getPopup(t);\n if (n)\n return n;\n }\n static getClosestPopup(e, t) {\n let n = Worker.getParentPopup(e);\n if (n && n.el)\n return n.el === t ? n : Worker.getClosestPopup(n.el, t);\n }\n static getElPopup(e) {\n return e.closest(\".top-popup-wrapper\");\n }\n static getElPopupOpener(e) {\n return e.closest(\"[data-top-popup]\");\n }\n static getPopupFromOpener(e) {\n let t = Worker.getElPopupOpener(e);\n return t ? dom_js_1.default.storage(t, \"#TopPopup\") : null;\n }\n static getAll() {\n return dom_js_1.default.querySelectorAllArray(document, \".top-popup-wrapper\");\n }\n static getAllVisible() {\n return dom_js_1.default.querySelectorAllVisible(document, \".top-popup-wrapper\");\n }\n static async openByOpener(e) {\n if (!(e instanceof HTMLElement))\n return;\n let t = {};\n return t.popup = e.dataset.topPopup, t.id = e.dataset.topPopupId, !t.id && t.popup && (e.dataset.topPopupId = btoa(String.fromCharCode(...new TextEncoder().encode(t.popup))), t.id = e.dataset.topPopupId), e.dataset.topPopupP && (t.p = parseInt(e.dataset.topPopupP)), e.dataset.topPopupPos && (t.p = parseInt(e.dataset.topPopupPos)), e.dataset.topPopupNotch && (t.notch = e.dataset.topPopupNotch === \"true\" || e.dataset.topPopupNotch === \"1\"), e.dataset.topPopupClass && (t.class = e.dataset.topPopupClass), e.dataset.topPopupPosBy && (t.posBy = e.dataset.topPopupPosBy), e.dataset.topPopupFront && (t.frontSelector = e.dataset.topPopupFront), e.dataset.topPopupInvertX && (t.invertX = e.dataset.topPopupInvertX === \"true\" || e.dataset.topPopupInvertX === \"1\"), e.dataset.topPopupOpenByHovertopPopupOpenByHover && (t.openByHover = e.dataset.topPopupOpenByHover === \"true\" || e.dataset.topPopupOpenByHover === \"1\"), e.dataset.topPopupUseOriginal && (t.useOriginal = e.dataset.topPopupUseOriginal === \"true\" || e.dataset.topPopupUseOriginal === \"1\"), await Worker.open(e, t);\n }\n static async open(elOpener, options) {\n elOpener instanceof HTMLElement && (elOpener.dataset.topPopupOpened = \"opened\");\n const { TopLibPopup } = await new Promise((resolve_1, reject_1) => { require([\"./popup-l46cef9d.es.js\"], resolve_1, reject_1); }).then(__importStar);\n if (forms_Ch1q0UUt_es_js_1.O.$) {\n const $elOpener = forms_Ch1q0UUt_es_js_1.O.$(elOpener);\n if ($elOpener.data(\"aftershow\")) {\n let afterShow = $elOpener.data(\"aftershow\");\n typeof afterShow == \"string\" && (afterShow = eval(afterShow.replace(/\\W/g, \"\"))), $elOpener.one(\"aftershow.top-menu-popup\", afterShow);\n }\n if ($elOpener.data(\"afterclose\")) {\n let afterclose = $elOpener.data(\"afterclose\");\n typeof afterclose == \"string\" && (afterclose = eval(afterclose.replace(/\\W/g, \"\"))), $elOpener.one(\"afterclose.top-menu-popup\", afterclose);\n }\n }\n return options.isFullScreen = forms_Ch1q0UUt_es_js_1.O.state.isMobile, new TopLibPopup(elOpener, options);\n }\n static close(e, t = !1) {\n let n = Worker.getPopup(e);\n if (n) {\n n.close();\n let e = n.el.contains(document.activeElement);\n t && !e && setTimeout(() => {\n let e = Worker.getParentPopup(n.el);\n if (e?.openerIsInput) {\n e.el.focus();\n return;\n }\n n.el.focus();\n });\n }\n }\n static recalcPosition(e) {\n let t = Worker.getPopup(e);\n t && t.elPopupBody instanceof HTMLElement && t.recalcPosition();\n }\n static scrollToActive(e) {\n if (!dom_js_1.default.querySelectorVisible(e, \"ul.top-popup_content > li > .top-active\"))\n return;\n let t = e.querySelector(\"ul.top-popup_content\"), n = dom_js_1.default.querySelectorAllVisible(e, \"ul.top-popup_content > li\");\n e.classList.add(\"top-popup-wrapper-no_animate\"), setTimeout(() => e.classList.remove(\"top-popup-wrapper-no_animate\"), 100);\n let r = 100;\n for (let e of n) {\n if (e.querySelector(\":scope > .top-active\"))\n break;\n e instanceof HTMLElement && (r += e.offsetHeight);\n }\n if (t instanceof HTMLElement) {\n let e = t.offsetHeight;\n t.scrollTop = r > e ? r - e : 0;\n }\n }\n static decoratorBeforeOpen(e) {\n this.options.decoratorBeforeOpen && this.options.decoratorBeforeOpen(e);\n }\n static decoratorAfterOpen(e) {\n this.options.decoratorAfterOpen && this.options.decoratorAfterOpen(e);\n }\n static decoratorIsIgnoreOuterClick(e) {\n return this.options.decoratorIsIgnoreOuterClick ? this.options.decoratorIsIgnoreOuterClick(e) : !1;\n }\n static regVueComponent(e, t) {\n if (Worker.vueConnectors.get(e))\n throw \"Vue component Popup use duplicated id: \" + e;\n Worker.vueConnectors.set(e, t);\n }\n static unregVueComponent(e) {\n Worker.vueConnectors.delete(e);\n }\n static genElPopupOpener(e, t, ...n) {\n let r = dom_js_1.default.genEl(e, {}, ...n);\n r.dataset.topPopup = \"#\" + t.id;\n for (let e in t) {\n let n = \"topPopup\" + e.charAt(0).toUpperCase() + e.slice(1);\n r.dataset[n] = t[e];\n }\n return r.__TopPopupOpenerProps = t, r;\n }\n };\n exports.t = Worker;\n (0, forms_Ch1q0UUt_es_js_1.K)(Worker, \"noClose\", !1), (0, forms_Ch1q0UUt_es_js_1.K)(Worker, \"vueConnectors\", /* @__PURE__ */ new Map()), (0, forms_Ch1q0UUt_es_js_1.K)(Worker, \"options\", {});\n});\n//# sourceMappingURL=worker-D-5BEVm7.es.js.map\n","/**\n * PopupWorker управляет работой Popup\n *\n * Должен грузить TopLibPopup только в отложенном режиме\n */\n\nimport Core from '@/core/core/core';\nimport DOM from '@/core/utils/dom';\nimport type { PopupOptions, TopLibPopup } from '@/components/popup/lib/popup';\nimport type { OpenerProps } from '@/components/popup/popup/opener/types';\n\nexport type Options = {\n\t/**\n\t * Глобальное событие, которое будет вызвано перед открытием TopPopup\n\t */\n\tdecoratorBeforeOpen?: (popup: TopLibPopup) => void,\n\n\t/**\n\t * Глобальное событие, которое будет вызвано после открытия TopPopup\n\t */\n\tdecoratorAfterOpen?: (popup: TopLibPopup) => void;\n\n\t/**\n\t * Определитель того, что клик вне Popup нужно игнорировать\n\t * @returns {boolean} - если true, то click не приведет к закрытию Popup\n\t */\n\tdecoratorIsIgnoreOuterClick?: (e: MouseEvent) => boolean\n}\n\nclass Worker {\n\n\t/**\n\t * Глобальное выключение закрытия меню, используется при различных оверлеях\n\t */\n\tstatic noClose = false;\n\n\t/**\n\t * Для взаимодействия с vue\n\t */\n\tstatic vueConnectors = new Map();\n\n\tstatic options: Options = {};\n\n\t/**\n\t * Вернуть объект компонента popup, привязанный к элементу\n\t */\n\tstatic getPopup(elPopup: HTMLElement): TopLibPopup {\n\t\treturn DOM.storage(elPopup, 'TopPopup') as TopLibPopup;\n\t}\n\n\t/**\n\t * Получить родительский popup\n\t */\n\tstatic getParentPopup(el: HTMLElement): TopLibPopup | undefined {\n\t\tconst elPopup = Worker.getElPopup(el);\n\t\tif (!elPopup) return;\n\n\t\tconst parentPopup = Worker.getPopup(elPopup);\n\t\tif (!parentPopup) return;\n\n\t\treturn parentPopup;\n\t}\n\n\t/**\n\t * Найти родительский (или этот) popup, с указанным opener\n\t *\n\t * @param el Любой элемент внутри любого popup\n\t * @param elOpenerClosest Элемент opener для поиска нужного родительского popup\n\t */\n\tstatic getClosestPopup(el: HTMLElement, elOpenerClosest: HTMLElement): TopLibPopup | undefined {\n\t\tconst parentPopup = Worker.getParentPopup(el);\n\t\tif (!parentPopup) return;\n\n\t\tif (!parentPopup.el) return;\n\n\t\tif (parentPopup.el === elOpenerClosest) {\n\t\t\treturn parentPopup;\n\t\t}\n\n\t\treturn Worker.getClosestPopup(parentPopup.el, elOpenerClosest);\n\t}\n\n\tstatic getElPopup(el: HTMLElement): HTMLElement | null {\n\t\treturn el.closest<HTMLElement>('.top-popup-wrapper');\n\t}\n\n\tstatic getElPopupOpener(el: HTMLElement): HTMLElement | null {\n\t\treturn el.closest<HTMLElement>('[data-top-popup]');\n\t}\n\n\tstatic getPopupFromOpener(el: HTMLElement): TopLibPopup | null {\n\t\tconst elOpener = Worker.getElPopupOpener(el);\n\t\tif (!elOpener) return null;\n\n\t\treturn DOM.storage(elOpener, '#TopPopup');\n\t}\n\n\t/**\n\t * Вернуть все элементы с Popup\n\t */\n\tstatic getAll(): HTMLElement[] {\n\t\treturn DOM.querySelectorAllArray(document, '.top-popup-wrapper');\n\t}\n\n\t/**\n\t * Вернуть все элементы с открытыми Popup\n\t */\n\tstatic getAllVisible(): HTMLElement[] {\n\t\treturn DOM.querySelectorAllVisible(document, '.top-popup-wrapper');\n\t}\n\n\t/**\n\t * Открыть Popup от указанного elOpener\n\t * @param {HTMLElement} elOpener - элемент, который должен вызвать открытие Popup\n\t */\n\tstatic async openByOpener(elOpener: HTMLElement): Promise<TopLibPopup | undefined> {\n\t\tif (!(elOpener instanceof HTMLElement)) return;\n\n\t\tconst options: PopupOptions = {};\n\n\t\toptions.popup = elOpener.dataset.topPopup;\n\n\t\toptions.id = elOpener.dataset.topPopupId;\n\n\t\t/**\n\t\t * @deprecated в php шаблонах нет data-top-popup-id\n\t\t */\n\t\tif (!options.id && options.popup) {\n\t\t\telOpener.dataset.topPopupId = btoa(\n\t\t\t\tString.fromCharCode(...new TextEncoder().encode(options.popup))\n\t\t\t);\n\n\t\t\toptions.id = elOpener.dataset.topPopupId;\n\t\t}\n\n\t\t/**\n\t\t * @deprecated topPopupP - добавлено для обратной совместимости\n\t\t */\n\t\tif (elOpener.dataset.topPopupP) {\n\t\t\toptions.p = parseInt(elOpener.dataset.topPopupP);\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupPos) {\n\t\t\toptions.p = parseInt(elOpener.dataset.topPopupPos);\n\t\t}\n\n\t\t/**\n\t\t * @deprecated '1' - добавлено для обратной совместимости\n\t\t */\n\t\tif (elOpener.dataset.topPopupNotch) {\n\t\t\toptions.notch = elOpener.dataset.topPopupNotch === 'true' || elOpener.dataset.topPopupNotch === '1';\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupClass) {\n\t\t\toptions.class = elOpener.dataset.topPopupClass;\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupPosBy) {\n\t\t\toptions.posBy = elOpener.dataset.topPopupPosBy as PopupOptions['posBy'];\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupFront) {\n\t\t\toptions.frontSelector = elOpener.dataset.topPopupFront;\n\t\t}\n\n\t\t/**\n\t\t * @deprecated '1' - добавлено для обратной совместимости\n\t\t */\n\t\tif (elOpener.dataset.topPopupInvertX) {\n\t\t\toptions.invertX = elOpener.dataset.topPopupInvertX === 'true' || elOpener.dataset.topPopupInvertX === '1';\n\t\t}\n\n\t\t/**\n\t\t * @deprecated '1' - добавлено для обратной совместимости\n\t\t */\n\t\tif (elOpener.dataset.topPopupOpenByHovertopPopupOpenByHover) {\n\t\t\toptions.openByHover = elOpener.dataset.topPopupOpenByHover === 'true' || elOpener.dataset.topPopupOpenByHover === '1';\n\t\t}\n\n\t\t/**\n\t\t * @deprecated '1' - добавлено для обратной совместимости\n\t\t */\n\t\tif (elOpener.dataset.topPopupUseOriginal) {\n\t\t\toptions.useOriginal = elOpener.dataset.topPopupUseOriginal === 'true' || elOpener.dataset.topPopupUseOriginal === '1';\n\t\t}\n\n\t\treturn await Worker.open(elOpener, options);\n\t}\n\n\t/**\n\t * Создать и открыть Popup\n\t * @param elOpener - элемент, вызвавший открытие Popup\n\t * @param options - опции Popup\n\t */\n\tprivate static async open(elOpener: HTMLElement, options: PopupOptions): Promise<TopLibPopup> {\n\t\tif (elOpener instanceof HTMLElement) elOpener.dataset.topPopupOpened = 'opened';\n\n\t\tconst { TopLibPopup } = await import('./popup');\n\n\t\tif (Core.$) {\n\t\t\tconst $elOpener = Core.$(elOpener);\n\n\t\t\t// deprecated, используется aftershow.top-menu-popup\n\t\t\tif ($elOpener.data('aftershow')) {\n\t\t\t\tlet afterShow = $elOpener.data('aftershow');\n\t\t\t\tif (typeof (afterShow) == 'string') {\n\t\t\t\t\t// TODO: Удалить с сайта указание кода функции в html\n\t\t\t\t\t// @deprecated\n\t\t\t\t\tafterShow = eval(afterShow.replace(/\\W/g, ''));\n\t\t\t\t}\n\n\t\t\t\t$elOpener.one('aftershow.top-menu-popup', afterShow);\n\t\t\t}\n\n\t\t\t// deprecated, используется afterclose.top-menu-popup\n\t\t\tif ($elOpener.data('afterclose')) {\n\t\t\t\tlet afterclose = $elOpener.data('afterclose');\n\t\t\t\tif (typeof (afterclose) == 'string') {\n\t\t\t\t\t// TODO: Удалить с сайта указание кода функции в html\n\t\t\t\t\t// @deprecated\n\t\t\t\t\tafterclose = eval(afterclose.replace(/\\W/g, ''));\n\t\t\t\t}\n\n\t\t\t\t$elOpener.one('afterclose.top-menu-popup', afterclose);\n\t\t\t}\n\t\t}\n\n\t\toptions.isFullScreen = Core.state.isMobile;\n\n\t\treturn new TopLibPopup(elOpener, options);\n\t}\n\n\tstatic close(elPopup: HTMLElement, restoreFocus = false): void {\n\t\tconst popup = Worker.getPopup(elPopup);\n\n\t\tif (popup) {\n\t\t\tpopup.close();\n\n\t\t\tconst isFocused = popup.el.contains(document.activeElement);\n\n\t\t\tif (restoreFocus && !isFocused) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tconst parentPopup = Worker.getParentPopup(popup.el);\n\t\t\t\t\tif (parentPopup?.openerIsInput) {\n\t\t\t\t\t\tparentPopup.el.focus();\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tpopup.el.focus();\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic recalcPosition(elPopup: HTMLElement): void {\n\t\tconst popup = Worker.getPopup(elPopup);\n\t\tif (popup && popup.elPopupBody instanceof HTMLElement) {\n\t\t\tpopup.recalcPosition();\n\t\t}\n\t}\n\n\t/**\n\t * Скролл к активному элементу списка\n\t */\n\tstatic scrollToActive(elPopup: HTMLElement): void {\n\t\tconst elItemActive = DOM.querySelectorVisible(elPopup, 'ul.top-popup_content > li > .top-active');\n\t\tif (!elItemActive) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst elUl = elPopup.querySelector('ul.top-popup_content');\n\t\tconst elsLi = DOM.querySelectorAllVisible(elPopup, 'ul.top-popup_content > li');\n\n\t\telPopup.classList.add('top-popup-wrapper-no_animate');\n\t\tsetTimeout(() => elPopup.classList.remove('top-popup-wrapper-no_animate'), 100);\n\n\t\tlet top = 100;\n\t\tfor (const elLi of elsLi) {\n\t\t\tif (elLi.querySelector(':scope > .top-active')) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (elLi instanceof HTMLElement) top += elLi.offsetHeight;\n\t\t}\n\n\t\tif (elUl instanceof HTMLElement) {\n\t\t\tconst heightWrapper = elUl.offsetHeight;\n\t\t\tif (top > heightWrapper) {\n\t\t\t\telUl.scrollTop = top - heightWrapper;\n\t\t\t} else {\n\t\t\t\telUl.scrollTop = 0;\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic decoratorBeforeOpen(popup: TopLibPopup<any>): void {\n\t\tif (this.options.decoratorBeforeOpen) {\n\t\t\tthis.options.decoratorBeforeOpen(popup);\n\t\t}\n\t};\n\n\tstatic decoratorAfterOpen(popup: TopLibPopup<any>): void {\n\t\tif (this.options.decoratorAfterOpen) {\n\t\t\tthis.options.decoratorAfterOpen(popup);\n\t\t}\n\t};\n\n\tstatic decoratorIsIgnoreOuterClick(e: MouseEvent): boolean {\n\t\tif (this.options.decoratorIsIgnoreOuterClick) {\n\t\t\treturn this.options.decoratorIsIgnoreOuterClick(e);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Зарегистрировать Vue компонент\n\t *\n\t * Каждый экземляр Popup регистрируется в словаре vueConnectors для последующего доступа из js\n\t */\n\tstatic regVueComponent(id: string, vueConnector: any): void {\n\t\tif (Worker.vueConnectors.get(id)) {\n\t\t\tthrow 'Vue component Popup use duplicated id: ' + id;\n\t\t}\n\n\t\tWorker.vueConnectors.set(id, vueConnector);\n\t}\n\n\t/**\n\t * Снять с регистрации Vue компонент\n\t */\n\tstatic unregVueComponent(id: string): void {\n\t\tWorker.vueConnectors.delete(id);\n\t}\n\n\t/**\n\t * Сгенерировать элемент для открытия popup\n\t */\n\tstatic genElPopupOpener(tagName: string, props: OpenerProps, ...elsChildrens: HTMLElement[] | string[]): HTMLElement {\n\t\tconst el = DOM.genEl(tagName, {}, ...elsChildrens) as TopLibPopup['el'];\n\n\t\tel.dataset.topPopup = '#' + props.id;\n\n\t\t// if (props.pos === undefined) props.pos = '3';\n\t\t// if (props.notch === undefined) props.notch = true;\n\t\t// if (props.posBy === undefined) props.posBy = 'fixed';\n\n\t\tfor (const name in props) {\n\t\t\tconst attrName = 'topPopup' + name.charAt(0).toUpperCase() + name.slice(1);\n\n\t\t\tel.dataset[attrName] = props[name];\n\t\t}\n\n\t\tel.__TopPopupOpenerProps = props;\n\n\t\treturn el;\n\t}\n\n}\n\nexport default Worker;\n"]}