@topvisor/ui 1.0.42-popupPosition.0 → 1.1.0-addNativeDialog.7

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 (473) hide show
  1. package/.chunks/core-BJlLrRTO.amd.js +2 -0
  2. package/.chunks/{core-D-etXW3Y.amd.js.map → core-BJlLrRTO.amd.js.map} +1 -1
  3. package/.chunks/{core-BGKb9a73.es.js → core-kIIIPZME.es.js} +4 -4
  4. package/.chunks/{core-BGKb9a73.es.js.map → core-kIIIPZME.es.js.map} +1 -1
  5. package/.chunks/datepicker-DsKl-YZR.amd.js +2 -0
  6. package/.chunks/{datepicker-BWaVsTd0.amd.js.map → datepicker-DsKl-YZR.amd.js.map} +1 -1
  7. package/.chunks/{datepicker-DCDYQmsc.es.js → datepicker-U31BrqE_.es.js} +2 -2
  8. package/.chunks/{datepicker-DCDYQmsc.es.js.map → datepicker-U31BrqE_.es.js.map} +1 -1
  9. package/.chunks/{dialog_selectorRegions-BAK6xG6N.es.js → dialog_selectorRegions-CX2F1Li-.es.js} +4 -4
  10. package/.chunks/{dialog_selectorRegions-BAK6xG6N.es.js.map → dialog_selectorRegions-CX2F1Li-.es.js.map} +1 -1
  11. package/.chunks/dialog_selectorRegions-Dq3V35Xa.amd.js +2 -0
  12. package/.chunks/{dialog_selectorRegions-CMI1gx5d.amd.js.map → dialog_selectorRegions-Dq3V35Xa.amd.js.map} +1 -1
  13. package/.chunks/dialogs.vue_vue_type_script_setup_true_lang-Cmh_EuHe.amd.js +2 -0
  14. package/.chunks/dialogs.vue_vue_type_script_setup_true_lang-Cmh_EuHe.amd.js.map +1 -0
  15. package/.chunks/dialogs.vue_vue_type_script_setup_true_lang-itEMqnD4.es.js +614 -0
  16. package/.chunks/dialogs.vue_vue_type_script_setup_true_lang-itEMqnD4.es.js.map +1 -0
  17. package/.chunks/field-Cvv0SRcJ.amd.js +2 -0
  18. package/.chunks/field-Cvv0SRcJ.amd.js.map +1 -0
  19. package/.chunks/field-CyyFzM-Y.es.js +16 -0
  20. package/.chunks/field-CyyFzM-Y.es.js.map +1 -0
  21. package/.chunks/forms-DRhpgERJ.amd.js +3 -0
  22. package/.chunks/forms-DRhpgERJ.amd.js.map +1 -0
  23. package/.chunks/{forms-DOGPN_TR.es.js → forms-t2AEUjqg.es.js} +20 -20
  24. package/.chunks/forms-t2AEUjqg.es.js.map +1 -0
  25. package/.chunks/lazy-CiM2Ny-s.amd.js +2 -0
  26. package/.chunks/lazy-CiM2Ny-s.amd.js.map +1 -0
  27. package/.chunks/lazy-Crun7esL.es.js +39 -0
  28. package/.chunks/lazy-Crun7esL.es.js.map +1 -0
  29. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-B6psuRkm.es.js +184 -0
  30. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-B6psuRkm.es.js.map +1 -0
  31. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-C8PDRggQ.amd.js +2 -0
  32. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-C8PDRggQ.amd.js.map +1 -0
  33. package/.chunks/menu.vue_vue_type_style_index_0_lang-6kqWYFuX.es.js +110 -0
  34. package/.chunks/menu.vue_vue_type_style_index_0_lang-6kqWYFuX.es.js.map +1 -0
  35. package/.chunks/menu.vue_vue_type_style_index_0_lang-DRHk9iBB.amd.js +2 -0
  36. package/.chunks/menu.vue_vue_type_style_index_0_lang-DRHk9iBB.amd.js.map +1 -0
  37. package/.chunks/{notice-DE88Oe-t.es.js → notice-4bdzRXtl.es.js} +2 -2
  38. package/.chunks/{notice-DE88Oe-t.es.js.map → notice-4bdzRXtl.es.js.map} +1 -1
  39. package/.chunks/{notice-C5sXcBql.amd.js → notice-DQ9qFyQ2.amd.js} +3 -3
  40. package/.chunks/{notice-C5sXcBql.amd.js.map → notice-DQ9qFyQ2.amd.js.map} +1 -1
  41. package/.chunks/page.vue_vue_type_script_setup_true_lang-CUYYklcQ.amd.js +2 -0
  42. package/.chunks/page.vue_vue_type_script_setup_true_lang-CUYYklcQ.amd.js.map +1 -0
  43. package/.chunks/page.vue_vue_type_script_setup_true_lang-D3VmFM-x.es.js +151 -0
  44. package/.chunks/page.vue_vue_type_script_setup_true_lang-D3VmFM-x.es.js.map +1 -0
  45. package/.chunks/{popup-BjsK_pMZ.es.js → popup-DuraSW2f.es.js} +84 -77
  46. package/.chunks/popup-DuraSW2f.es.js.map +1 -0
  47. package/.chunks/popup-IcMnYYXr.amd.js +2 -0
  48. package/.chunks/popup-IcMnYYXr.amd.js.map +1 -0
  49. package/.chunks/punycode.es6-CNOnFR2-.amd.js +2 -0
  50. package/.chunks/{punycode.es6-C2yitnNb.amd.js.map → punycode.es6-CNOnFR2-.amd.js.map} +1 -1
  51. package/.chunks/punycode.es6-CgGegfA_.es.js +134 -0
  52. package/.chunks/{punycode.es6-CNI-zL6U.es.js.map → punycode.es6-CgGegfA_.es.js.map} +1 -1
  53. package/.chunks/store-CX_6ZXhO.es.js.map +1 -1
  54. package/.chunks/store-YRW59xEF.amd.js +2 -0
  55. package/.chunks/{store-esTid5oI.amd.js.map → store-YRW59xEF.amd.js.map} +1 -1
  56. package/.chunks/{utils-CRPkMfKD.es.js → utils-BnYtfWTQ.es.js} +2 -2
  57. package/.chunks/{utils-CRPkMfKD.es.js.map → utils-BnYtfWTQ.es.js.map} +1 -1
  58. package/.chunks/utils-IaE6iz_-.amd.js +2 -0
  59. package/.chunks/{utils-BVdq18mg.amd.js.map → utils-IaE6iz_-.amd.js.map} +1 -1
  60. package/api/additional.amd.js +2 -0
  61. package/api/additional.amd.js.map +1 -0
  62. package/api/additional.js +66 -0
  63. package/api/additional.js.map +1 -0
  64. package/api/index.amd.js +2 -0
  65. package/api/index.amd.js.map +1 -0
  66. package/api/index.js +265 -0
  67. package/api/index.js.map +1 -0
  68. package/assets/core.css +1 -1
  69. package/assets/forms.css +1 -1
  70. package/assets/formsExt.css +1 -1
  71. package/assets/project.css +1 -1
  72. package/assets/themes/dark-th.css +1 -1
  73. package/assets/themes/dark.css +1 -1
  74. package/assets/themes/light.css +1 -1
  75. package/charts/charts.amd.js +1 -1
  76. package/charts/charts.amd.js.map +1 -1
  77. package/charts/charts.js +1 -1
  78. package/charts/charts.js.map +1 -1
  79. package/core/app.amd.js +1 -1
  80. package/core/app.amd.js.map +1 -1
  81. package/core/app.js +18 -16
  82. package/core/app.js.map +1 -1
  83. package/dialog/dialog.amd.js +1 -1
  84. package/dialog/dialog.amd.js.map +1 -1
  85. package/dialog/dialog.js +2 -2
  86. package/dialog/dialog.js.map +1 -1
  87. package/extra/extra.amd.js +1 -1
  88. package/extra/extra.amd.js.map +1 -1
  89. package/extra/extra.js.map +1 -1
  90. package/forms/forms.amd.js +1 -1
  91. package/forms/forms.js +1 -1
  92. package/forms/helpers.amd.js +1 -1
  93. package/formsExt/formsExt.amd.js +1 -1
  94. package/formsExt/formsExt.amd.js.map +1 -1
  95. package/formsExt/formsExt.js +409 -320
  96. package/formsExt/formsExt.js.map +1 -1
  97. package/layout/layout.amd.js +1 -1
  98. package/layout/layout.amd.js.map +1 -1
  99. package/layout/layout.js +1 -1
  100. package/layout/layout.js.map +1 -1
  101. package/package.json +7 -2
  102. package/popup/popup.amd.js +1 -1
  103. package/popup/popup.amd.js.map +1 -1
  104. package/popup/popup.js +125 -109
  105. package/popup/popup.js.map +1 -1
  106. package/popup/worker.amd.js +1 -1
  107. package/popup/worker.amd.js.map +1 -1
  108. package/popup/worker.js +30 -21
  109. package/popup/worker.js.map +1 -1
  110. package/project/project.amd.js +1 -1
  111. package/project/project.amd.js.map +1 -1
  112. package/project/project.js +6 -6
  113. package/project/project.js.map +1 -1
  114. package/tabs/tabs.amd.js +1 -1
  115. package/tabs/tabs.amd.js.map +1 -1
  116. package/tabs/tabs.js.map +1 -1
  117. package/tabsView/tabsView.amd.js +1 -1
  118. package/tabsView/tabsView.amd.js.map +1 -1
  119. package/tabsView/tabsView.js +1 -1
  120. package/tabsView/tabsView.js.map +1 -1
  121. package/types/api/additional.d.ts +2 -0
  122. package/types/api/api/additional.d.ts +1 -0
  123. package/types/api/api/client/client.d.ts +55 -0
  124. package/types/api/api/client/request-options.d.ts +1 -0
  125. package/types/api/api/client/request.d.ts +2 -0
  126. package/types/api/api/index.d.ts +12 -0
  127. package/types/api/api/tests/model.d.ts +0 -0
  128. package/types/api/api/tests/test.d.ts +16 -0
  129. package/types/api/api/types/api.d.ts +139 -0
  130. package/types/api/api/types/client/client.d.ts +8 -0
  131. package/types/api/api/types/client/middleware.d.ts +65 -0
  132. package/types/api/api/types/client/options.d.ts +60 -0
  133. package/types/api/api/types/client/request-context.d.ts +35 -0
  134. package/types/api/api/types/client/request-options.d.ts +73 -0
  135. package/types/api/api/types/client/request.d.ts +85 -0
  136. package/types/api/api/types/ext.d.ts +51 -0
  137. package/types/api/api/types/field.d.ts +33 -0
  138. package/types/api/api/types/index.d.ts +12 -0
  139. package/types/api/api/types/schema.d.ts +50 -0
  140. package/types/api/api/types/tv.d.ts +59 -0
  141. package/types/api/api/types/utils.d.ts +51 -0
  142. package/types/api/api/utils/common.d.ts +16 -0
  143. package/types/api/api/utils/field.d.ts +8 -0
  144. package/types/api/api/utils/filters.d.ts +48 -0
  145. package/types/api/api/utils/lazy.d.ts +17 -0
  146. package/types/api/index.d.ts +2 -0
  147. package/{components → types/components}/dialog/dialog/dialog.vue.d.ts +3 -3
  148. package/{components → types/components}/dialog/lib/types.d.ts +2 -2
  149. package/types/components/dialog/lib/utils.d.ts +45 -0
  150. package/{components → types/components}/dialog/lib/worker.d.ts +2 -2
  151. package/{components → types/components}/forms/button/button.vue.d.ts +2 -5
  152. package/{components → types/components}/forms/button/types.d.ts +10 -0
  153. package/{components → types/components}/forms/checkbox/checkbox.vue.d.ts +2 -2
  154. package/types/components/formsExt/policy/policy.vue.d.ts +8 -0
  155. package/types/components/formsExt/policy/types.d.ts +20 -0
  156. package/{components → types/components}/formsExt/selector2/composables/useAPI.d.ts +1 -1
  157. package/{components → types/components}/formsExt/selector2/composables/useMenu.d.ts +3 -1
  158. package/{components → types/components}/formsExt/selector2/selector2.vue.d.ts +11 -3
  159. package/{components → types/components}/formsExt/selector2/types.d.ts +50 -27
  160. package/types/components/popup/alert/alert.vue.d.ts +25 -0
  161. package/types/components/popup/alert/types.d.ts +8 -0
  162. package/types/components/popup/confirm/confirm.vue.d.ts +26 -0
  163. package/{components → types/components}/popup/confirm/types.d.ts +2 -2
  164. package/{components → types/components}/popup/lib/popup.d.ts +6 -2
  165. package/{components → types/components}/popup/lib/worker.d.ts +6 -4
  166. package/types/components/popup/popup/opener.vue.d.ts +17 -0
  167. package/types/components/popup/popup/popup.vue.d.ts +38 -0
  168. package/{components → types/components}/popup/popup/types.d.ts +20 -11
  169. package/types/components/popup/prompt/prompt.vue.d.ts +26 -0
  170. package/{components → types/components}/popup/prompt/types.d.ts +2 -2
  171. package/{components → types/components}/project/selectorRegion/dialog_selectorRegions/dialog_selectorRegions.vue.d.ts +1 -1
  172. package/{components → types/components}/project/selectorRegion/utils/utils.d.ts +1 -1
  173. package/{core → types/core}/utils/string.d.ts +1 -1
  174. package/types/for-delete/dark-positions.d.ts +1 -0
  175. package/types/for-delete/dark-th-positions.d.ts +1 -0
  176. package/types/for-delete/dark-th.d.ts +1 -0
  177. package/types/for-delete/dark.d.ts +1 -0
  178. package/types/for-delete/light-positions.d.ts +1 -0
  179. package/types/for-delete/light.d.ts +1 -0
  180. package/types/forms/helpers.d.ts +1 -0
  181. package/utils/check.amd.js +1 -1
  182. package/utils/check.amd.js.map +1 -1
  183. package/utils/check.js.map +1 -1
  184. package/utils/clipboard.amd.js +2 -2
  185. package/utils/clipboard.amd.js.map +1 -1
  186. package/utils/clipboard.js +1 -1
  187. package/utils/clipboard.js.map +1 -1
  188. package/utils/date.amd.js +1 -1
  189. package/utils/date.js +1 -1
  190. package/utils/device.amd.js +1 -1
  191. package/utils/device.js +1 -1
  192. package/utils/dom.amd.js +1 -1
  193. package/utils/dom.amd.js.map +1 -1
  194. package/utils/dom.js.map +1 -1
  195. package/utils/image.amd.js +2 -2
  196. package/utils/image.amd.js.map +1 -1
  197. package/utils/image.js +1 -1
  198. package/utils/image.js.map +1 -1
  199. package/utils/keyboard.amd.js +1 -1
  200. package/utils/keyboard.amd.js.map +1 -1
  201. package/utils/keyboard.js.map +1 -1
  202. package/utils/lodash.amd.js +1 -1
  203. package/utils/lodash.js +1 -1
  204. package/utils/number.amd.js +1 -1
  205. package/utils/number.amd.js.map +1 -1
  206. package/utils/number.js.map +1 -1
  207. package/utils/price.amd.js +1 -1
  208. package/utils/price.amd.js.map +1 -1
  209. package/utils/price.js +1 -1
  210. package/utils/price.js.map +1 -1
  211. package/utils/route.amd.js +1 -1
  212. package/utils/route.amd.js.map +1 -1
  213. package/utils/route.js.map +1 -1
  214. package/utils/scroll.amd.js +1 -1
  215. package/utils/scroll.amd.js.map +1 -1
  216. package/utils/scroll.js.map +1 -1
  217. package/utils/searchers.amd.js +1 -1
  218. package/utils/searchers.amd.js.map +1 -1
  219. package/utils/searchers.js +3 -3
  220. package/utils/searchers.js.map +1 -1
  221. package/utils/store.amd.js +1 -1
  222. package/utils/string.amd.js +1 -1
  223. package/utils/string.amd.js.map +1 -1
  224. package/utils/string.js +34 -30
  225. package/utils/string.js.map +1 -1
  226. package/utils/system.amd.js +1 -1
  227. package/utils/system.amd.js.map +1 -1
  228. package/utils/system.js.map +1 -1
  229. package/utils/url.amd.js +2 -2
  230. package/utils/url.amd.js.map +1 -1
  231. package/utils/url.js +1 -1
  232. package/utils/url.js.map +1 -1
  233. package/.chunks/core-D-etXW3Y.amd.js +0 -2
  234. package/.chunks/datepicker-BWaVsTd0.amd.js +0 -2
  235. package/.chunks/dialog_selectorRegions-CMI1gx5d.amd.js +0 -2
  236. package/.chunks/dialogs.vue_vue_type_script_setup_true_lang-BSxHPUWf.amd.js +0 -2
  237. package/.chunks/dialogs.vue_vue_type_script_setup_true_lang-BSxHPUWf.amd.js.map +0 -1
  238. package/.chunks/dialogs.vue_vue_type_script_setup_true_lang-CjUHErAY.es.js +0 -322
  239. package/.chunks/dialogs.vue_vue_type_script_setup_true_lang-CjUHErAY.es.js.map +0 -1
  240. package/.chunks/forms-DOGPN_TR.es.js.map +0 -1
  241. package/.chunks/forms-Gb7ujpmz.amd.js +0 -3
  242. package/.chunks/forms-Gb7ujpmz.amd.js.map +0 -1
  243. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-CF_hIWa6.amd.js +0 -2
  244. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-CF_hIWa6.amd.js.map +0 -1
  245. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-CJQj81Yq.es.js +0 -181
  246. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-CJQj81Yq.es.js.map +0 -1
  247. package/.chunks/menu.vue_vue_type_style_index_0_lang-CczcI_-j.amd.js +0 -2
  248. package/.chunks/menu.vue_vue_type_style_index_0_lang-CczcI_-j.amd.js.map +0 -1
  249. package/.chunks/menu.vue_vue_type_style_index_0_lang-Dq5eEX9i.es.js +0 -109
  250. package/.chunks/menu.vue_vue_type_style_index_0_lang-Dq5eEX9i.es.js.map +0 -1
  251. package/.chunks/page.vue_vue_type_script_setup_true_lang-DFvul4oF.es.js +0 -143
  252. package/.chunks/page.vue_vue_type_script_setup_true_lang-DFvul4oF.es.js.map +0 -1
  253. package/.chunks/page.vue_vue_type_script_setup_true_lang-DJSuza2e.amd.js +0 -2
  254. package/.chunks/page.vue_vue_type_script_setup_true_lang-DJSuza2e.amd.js.map +0 -1
  255. package/.chunks/popup-B_8bvIsF.amd.js +0 -2
  256. package/.chunks/popup-B_8bvIsF.amd.js.map +0 -1
  257. package/.chunks/popup-BjsK_pMZ.es.js.map +0 -1
  258. package/.chunks/punycode.es6-C2yitnNb.amd.js +0 -2
  259. package/.chunks/punycode.es6-CNI-zL6U.es.js +0 -134
  260. package/.chunks/store-esTid5oI.amd.js +0 -2
  261. package/.chunks/utils-BVdq18mg.amd.js +0 -2
  262. package/.chunks/utils-CacKxWvO.es.js +0 -303
  263. package/.chunks/utils-CacKxWvO.es.js.map +0 -1
  264. package/.chunks/utils-DiQZv1Ae.amd.js +0 -2
  265. package/.chunks/utils-DiQZv1Ae.amd.js.map +0 -1
  266. package/components/charts/miniChart/stories/dummy.d.ts +0 -13
  267. package/components/charts/miniCharts/stories/dummy.d.ts +0 -6
  268. package/components/dialog/dialog/stories/autoload.d.ts +0 -2
  269. package/components/dialog/lib/utils.d.ts +0 -14
  270. package/components/forms/select/stories/exampleOptions.d.ts +0 -5
  271. package/components/formsExt/checkboxGroup/stories/example.d.ts +0 -15
  272. package/components/formsExt/menu/stories/items.d.ts +0 -3
  273. package/components/formsExt/policy/policy.vue.d.ts +0 -4
  274. package/components/formsExt/policy/types.d.ts +0 -10
  275. package/components/formsExt/radioGroup/stories/example.d.ts +0 -20
  276. package/components/formsExt/selector2/stories/dummyAPIRequest.d.ts +0 -10
  277. package/components/popup/alert/alert.vue.d.ts +0 -31
  278. package/components/popup/alert/types.d.ts +0 -8
  279. package/components/popup/confirm/confirm.vue.d.ts +0 -33
  280. package/components/popup/popup/opener.vue.d.ts +0 -23
  281. package/components/popup/popup/popup.vue.d.ts +0 -40
  282. package/components/popup/prompt/prompt.vue.d.ts +0 -33
  283. package/components/project/selectorCompetitors/stories/items.d.ts +0 -3
  284. package/components/project/selectorRegion/stories/searchers.d.ts +0 -3
  285. package/icomoon/Topvisor icons.json +0 -6635
  286. package/{charts → types/charts}/charts.d.ts +0 -0
  287. package/{components → types/components}/charts/charts.d.ts +0 -0
  288. package/{components → types/components}/charts/miniChart/miniChart.vue.d.ts +0 -0
  289. package/{components → types/components}/charts/miniChart/types.d.ts +0 -0
  290. package/{components → types/components}/charts/miniChart/utils/consts.d.ts +0 -0
  291. package/{components → types/components}/charts/miniCharts/miniCharts.d.ts +0 -0
  292. package/{components → types/components}/charts/miniCharts/miniCharts.vue.d.ts +0 -0
  293. package/{components → types/components}/core/notice/item/item.vue.d.ts +0 -0
  294. package/{components → types/components}/core/notice/item/types.d.ts +0 -0
  295. package/{components → types/components}/core/notice/notice.vue.d.ts +0 -0
  296. package/{components → types/components}/core/notice/types.d.ts +0 -0
  297. package/{components → types/components}/core/notice/utils.d.ts +0 -0
  298. package/{components → types/components}/dialog/dialog/composables/asyncDialogHandle.d.ts +0 -0
  299. package/{components → types/components}/dialog/dialog/composables/dialogHandle.d.ts +0 -0
  300. package/{components → types/components}/dialog/dialog/composables/types.d.ts +0 -0
  301. package/{components → types/components}/dialog/dialog/composables/utils.d.ts +0 -0
  302. package/{components → types/components}/dialog/dialog/dialogs/dialogs.vue.d.ts +0 -0
  303. package/{components → types/components}/dialog/dialog/page/page.vue.d.ts +0 -0
  304. package/{components → types/components}/dialog/dialog/page/types.d.ts +0 -0
  305. package/{components → types/components}/dialog/dialog/pageComponent/pageComponent.vue.d.ts +0 -0
  306. package/{components → types/components}/dialog/dialog/pageComponent/types.d.ts +0 -0
  307. package/{components → types/components}/dialog/dialog/stories/dialog_example/pages/utils.d.ts +0 -0
  308. package/{components → types/components}/dialog/dialog/types.d.ts +0 -0
  309. package/{components → types/components}/dialog/dialog.d.ts +0 -0
  310. package/{components → types/components}/dialog/lib/utils.globalEvents.d.ts +0 -0
  311. package/{components → types/components}/extra/extra.d.ts +0 -0
  312. package/{components → types/components}/extra/rive/rive.vue.d.ts +0 -0
  313. package/{components → types/components}/extra/rive/types.d.ts +0 -0
  314. package/{components → types/components}/forms/avatar/avatar.vue.d.ts +1 -1
  315. /package/{components → types/components}/forms/avatar/types.d.ts +0 -0
  316. /package/{components → types/components}/forms/caption/caption.vue.d.ts +0 -0
  317. /package/{components → types/components}/forms/caption/types.d.ts +0 -0
  318. /package/{components → types/components}/forms/checkbox/types.d.ts +0 -0
  319. /package/{components → types/components}/forms/controlLabel/controlLabel.vue.d.ts +0 -0
  320. /package/{components → types/components}/forms/controlLabel/types.d.ts +0 -0
  321. /package/{components → types/components}/forms/forms.d.ts +0 -0
  322. /package/{components → types/components}/forms/helpers.d.ts +0 -0
  323. /package/{components → types/components}/forms/hint/hint.vue.d.ts +0 -0
  324. /package/{components → types/components}/forms/hint/types.d.ts +0 -0
  325. /package/{components → types/components}/forms/input/input.vue.d.ts +0 -0
  326. /package/{components → types/components}/forms/input/types.d.ts +0 -0
  327. /package/{components → types/components}/forms/inputDate/datepicker.d.ts +0 -0
  328. /package/{components → types/components}/forms/inputDate/inputDate.vue.d.ts +0 -0
  329. /package/{components → types/components}/forms/inputDate/types.d.ts +0 -0
  330. /package/{components → types/components}/forms/inputRange/inputRange.vue.d.ts +0 -0
  331. /package/{components → types/components}/forms/inputRange/types.d.ts +0 -0
  332. /package/{components → types/components}/forms/loadbar/loadbar.vue.d.ts +0 -0
  333. /package/{components → types/components}/forms/preloader/preloader.vue.d.ts +0 -0
  334. /package/{components → types/components}/forms/preloader/types.d.ts +0 -0
  335. /package/{components → types/components}/forms/radio/radio.vue.d.ts +0 -0
  336. /package/{components → types/components}/forms/radio/types.d.ts +0 -0
  337. /package/{components → types/components}/forms/select/select.vue.d.ts +0 -0
  338. /package/{components → types/components}/forms/select/types.d.ts +0 -0
  339. /package/{components → types/components}/forms/switcher/switcher.vue.d.ts +0 -0
  340. /package/{components → types/components}/forms/switcher/types.d.ts +0 -0
  341. /package/{components → types/components}/forms/textarea/textarea.vue.d.ts +0 -0
  342. /package/{components → types/components}/forms/textarea/types.d.ts +0 -0
  343. /package/{components → types/components}/formsExt/checkboxGroup/checkboxGroup.vue.d.ts +0 -0
  344. /package/{components → types/components}/formsExt/checkboxGroup/types.d.ts +0 -0
  345. /package/{components → types/components}/formsExt/editArea/editArea.vue.d.ts +0 -0
  346. /package/{components → types/components}/formsExt/editArea/types.d.ts +0 -0
  347. /package/{components → types/components}/formsExt/editInput/editInput.vue.d.ts +0 -0
  348. /package/{components → types/components}/formsExt/editInput/types.d.ts +0 -0
  349. /package/{components → types/components}/formsExt/formsExt.d.ts +0 -0
  350. /package/{components → types/components}/formsExt/info/info.vue.d.ts +0 -0
  351. /package/{components → types/components}/formsExt/info/types.d.ts +0 -0
  352. /package/{components → types/components}/formsExt/menu/menu.vue.d.ts +0 -0
  353. /package/{components → types/components}/formsExt/menu/types.d.ts +0 -0
  354. /package/{components → types/components}/formsExt/radioGroup/radioGroup.vue.d.ts +0 -0
  355. /package/{components → types/components}/formsExt/radioGroup/types.d.ts +0 -0
  356. /package/{components → types/components}/formsExt/selector2/itemMulti.vue.d.ts +0 -0
  357. /package/{components → types/components}/formsExt/selector2/utils.d.ts +0 -0
  358. /package/{components → types/components}/layout/islandRows/islandRows.vue.d.ts +0 -0
  359. /package/{components → types/components}/layout/islandRows/islandRowsRow/islandRowsRow.vue.d.ts +0 -0
  360. /package/{components → types/components}/layout/islandRows/islandRowsRow/types.d.ts +0 -0
  361. /package/{components → types/components}/layout/islandRows/islandRowsSubTitle/islandRowsSubTitle.vue.d.ts +0 -0
  362. /package/{components → types/components}/layout/islandRows/types.d.ts +0 -0
  363. /package/{components → types/components}/layout/layout.d.ts +0 -0
  364. /package/{components → types/components}/layout/rows/rows.vue.d.ts +0 -0
  365. /package/{components → types/components}/layout/rows/types.d.ts +0 -0
  366. /package/{components → types/components}/popup/lib/popup.globalEvents.d.ts +0 -0
  367. /package/{components → types/components}/popup/lib/worker.globalEvents.d.ts +0 -0
  368. /package/{components → types/components}/popup/popup/listItem.vue.d.ts +0 -0
  369. /package/{components → types/components}/popup/popup/widgetInput.vue.d.ts +0 -0
  370. /package/{components → types/components}/popup/popup.d.ts +0 -0
  371. /package/{components → types/components}/popup/worker.d.ts +0 -0
  372. /package/{components → types/components}/project/project.d.ts +0 -0
  373. /package/{components → types/components}/project/selectorCompetitors/composables.d.ts +0 -0
  374. /package/{components → types/components}/project/selectorCompetitors/selectorCompetitors.vue.d.ts +0 -0
  375. /package/{components → types/components}/project/selectorCompetitors/types.d.ts +0 -0
  376. /package/{components → types/components}/project/selectorRegion/composables/compare.d.ts +0 -0
  377. /package/{components → types/components}/project/selectorRegion/composables/selectRegion.d.ts +0 -0
  378. /package/{components → types/components}/project/selectorRegion/composables/selectSearcher.d.ts +0 -0
  379. /package/{components → types/components}/project/selectorRegion/composables/selectorRegion.d.ts +0 -0
  380. /package/{components → types/components}/project/selectorRegion/dialog_selectorRegions/types.d.ts +0 -0
  381. /package/{components → types/components}/project/selectorRegion/selectorRegion.vue.d.ts +0 -0
  382. /package/{components → types/components}/project/selectorRegion/types.d.ts +0 -0
  383. /package/{components → types/components}/project/selectorRegion/utils/consts.d.ts +0 -0
  384. /package/{components → types/components}/project/tagSelector/popupListItem/tagPopupListItem.vue.d.ts +0 -0
  385. /package/{components → types/components}/project/tagSelector/popupListItem/types.d.ts +0 -0
  386. /package/{components → types/components}/project/tagSelector/popupOpener/popupOpener.vue.d.ts +0 -0
  387. /package/{components → types/components}/project/tagSelector/popupOpener/types.d.ts +0 -0
  388. /package/{components → types/components}/project/tagSelector/tagIcon/tagIcon.vue.d.ts +0 -0
  389. /package/{components → types/components}/project/tagSelector/tagIcon/types.d.ts +0 -0
  390. /package/{components → types/components}/project/tagSelector/tagSelector.vue.d.ts +0 -0
  391. /package/{components → types/components}/project/tagSelector/tagsDefaults.d.ts +0 -0
  392. /package/{components → types/components}/project/tagSelector/types.d.ts +0 -0
  393. /package/{components → types/components}/project/tagSelector/utils/el.d.ts +0 -0
  394. /package/{components → types/components}/project/tagSelector/utils/utils.d.ts +0 -0
  395. /package/{components → types/components}/tabs/tabs/content.vue.d.ts +0 -0
  396. /package/{components → types/components}/tabs/tabs/tab.vue.d.ts +0 -0
  397. /package/{components → types/components}/tabs/tabs/tabs.vue.d.ts +0 -0
  398. /package/{components → types/components}/tabs/tabs/types.d.ts +0 -0
  399. /package/{components → types/components}/tabs/tabs.d.ts +0 -0
  400. /package/{components → types/components}/tabsView/tabsView/menu.vue.d.ts +0 -0
  401. /package/{components → types/components}/tabsView/tabsView/menuDelimeter.vue.d.ts +0 -0
  402. /package/{components → types/components}/tabsView/tabsView/menuItem.vue.d.ts +0 -0
  403. /package/{components → types/components}/tabsView/tabsView/menuTitle.vue.d.ts +0 -0
  404. /package/{components → types/components}/tabsView/tabsView/store.d.ts +0 -0
  405. /package/{components → types/components}/tabsView/tabsView/tabsView.vue.d.ts +0 -0
  406. /package/{components → types/components}/tabsView/tabsView/types.d.ts +0 -0
  407. /package/{components → types/components}/tabsView/tabsView/utils.d.ts +0 -0
  408. /package/{components → types/components}/tabsView/tabsView.d.ts +0 -0
  409. /package/{core → types/core}/app.d.ts +0 -0
  410. /package/{core → types/core}/core/core.d.ts +0 -0
  411. /package/{core → types/core}/core/events/resize.d.ts +0 -0
  412. /package/{core → types/core}/core/events.d.ts +0 -0
  413. /package/{core → types/core}/core/options.d.ts +0 -0
  414. /package/{core → types/core}/core/preloaders.d.ts +0 -0
  415. /package/{core → types/core}/core/state.d.ts +0 -0
  416. /package/{core → types/core}/directives/data.d.ts +0 -0
  417. /package/{core → types/core}/directives/focus.d.ts +0 -0
  418. /package/{core → types/core}/directives/preloader.d.ts +0 -0
  419. /package/{core → types/core}/directives/scrollIntoView.d.ts +0 -0
  420. /package/{core → types/core}/directives/scrollShadow.d.ts +0 -0
  421. /package/{core → types/core}/directives/sticky.d.ts +0 -0
  422. /package/{core → types/core}/directives/swimUp.d.ts +0 -0
  423. /package/{core → types/core}/directives/tooltip.d.ts +0 -0
  424. /package/{core → types/core}/plugins/core.d.ts +0 -0
  425. /package/{core → types/core}/plugins/i18n.d.ts +0 -0
  426. /package/{core → types/core}/plugins/piniaTPA.d.ts +0 -0
  427. /package/{core → types/core}/utils/check.d.ts +0 -0
  428. /package/{core → types/core}/utils/clipboard.d.ts +0 -0
  429. /package/{core → types/core}/utils/date.d.ts +0 -0
  430. /package/{core → types/core}/utils/device.d.ts +0 -0
  431. /package/{core → types/core}/utils/dom.d.ts +0 -0
  432. /package/{core → types/core}/utils/image.d.ts +0 -0
  433. /package/{core → types/core}/utils/keyboard.d.ts +0 -0
  434. /package/{core → types/core}/utils/lodash.d.ts +0 -0
  435. /package/{core → types/core}/utils/number.d.ts +0 -0
  436. /package/{core → types/core}/utils/price.d.ts +0 -0
  437. /package/{core → types/core}/utils/route.d.ts +0 -0
  438. /package/{core → types/core}/utils/scroll.d.ts +0 -0
  439. /package/{core → types/core}/utils/searchers.d.ts +0 -0
  440. /package/{core → types/core}/utils/store/localStorage.d.ts +0 -0
  441. /package/{core → types/core}/utils/store/plugin.d.ts +0 -0
  442. /package/{core → types/core}/utils/store/store.d.ts +0 -0
  443. /package/{core → types/core}/utils/store.d.ts +0 -0
  444. /package/{core → types/core}/utils/system.d.ts +0 -0
  445. /package/{core → types/core}/utils/url.d.ts +0 -0
  446. /package/{dialog → types/dialog}/dialog.d.ts +0 -0
  447. /package/{extra → types/extra}/extra.d.ts +0 -0
  448. /package/{forms/helpers.d.ts → types/for-delete/core.d.ts} +0 -0
  449. /package/{forms → types/forms}/forms.d.ts +0 -0
  450. /package/{formsExt → types/formsExt}/formsExt.d.ts +0 -0
  451. /package/{layout → types/layout}/layout.d.ts +0 -0
  452. /package/{popup → types/popup}/popup.d.ts +0 -0
  453. /package/{popup → types/popup}/worker.d.ts +0 -0
  454. /package/{project → types/project}/project.d.ts +0 -0
  455. /package/{tabs → types/tabs}/tabs.d.ts +0 -0
  456. /package/{tabsView → types/tabsView}/tabsView.d.ts +0 -0
  457. /package/{utils → types/utils}/check.d.ts +0 -0
  458. /package/{utils → types/utils}/clipboard.d.ts +0 -0
  459. /package/{utils → types/utils}/date.d.ts +0 -0
  460. /package/{utils → types/utils}/device.d.ts +0 -0
  461. /package/{utils → types/utils}/dom.d.ts +0 -0
  462. /package/{utils → types/utils}/image.d.ts +0 -0
  463. /package/{utils → types/utils}/keyboard.d.ts +0 -0
  464. /package/{utils → types/utils}/lodash.d.ts +0 -0
  465. /package/{utils → types/utils}/number.d.ts +0 -0
  466. /package/{utils → types/utils}/price.d.ts +0 -0
  467. /package/{utils → types/utils}/route.d.ts +0 -0
  468. /package/{utils → types/utils}/scroll.d.ts +0 -0
  469. /package/{utils → types/utils}/searchers.d.ts +0 -0
  470. /package/{utils → types/utils}/store.d.ts +0 -0
  471. /package/{utils → types/utils}/string.d.ts +0 -0
  472. /package/{utils → types/utils}/system.d.ts +0 -0
  473. /package/{utils → types/utils}/url.d.ts +0 -0
@@ -0,0 +1,2 @@
1
+ define(["require","exports"],(function(y,s){"use strict";if(typeof f>"u")var f=window.Vue;const u=async(r,o,n)=>{const e=document.createElement("form");e.target=n,e.action=r,e.method="post",c(e,"",o),document.body.appendChild(e),e.submit(),e.remove()},c=async(r,o,n)=>{if(typeof n=="object")for(const[e,t]of Object.entries(n)){let i=e;o&&(i=`${o}[${i}]`),t!=null&&(t&&typeof t=="object"&&Object.keys(t).length===0||c(r,i,t))}else{const e=document.createElement("input");e.type="hidden",e.name=o,e.value=String(n??""),r.appendChild(e)}},d=r=>{const o=new URLSearchParams,n=(e,t)=>{if(t!=null){if(Array.isArray(t)){for(const[i,a]of Object.entries(t))n(`${e}[${i}]`,a);return}if(typeof t=="object"){for(const[i,a]of Object.entries(t))n(`${e}[${i}]`,a);return}o.append(e,String(t))}};for(const[e,t]of Object.entries(r))n(e,t);return o.toString()};s.dataToForm=c,s.postInWindow=u,s.querySerializer=d,Object.defineProperty(s,Symbol.toStringTag,{value:"Module"})}));
2
+ //# sourceMappingURL=lazy-CiM2Ny-s.amd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lazy-CiM2Ny-s.amd.js","sources":["../../src/api/api/utils/lazy.ts"],"sourcesContent":["/**\n * Общие утилиты, которые должны грузиться в отложенном режиме\n *\n * Все такие утилиты являются асинхронными\n */\n\n/**\n * Выполнить post запрос в окне браузера\n *\n * @see Api.ClientRequest.callInNewWindow\n * @see Api.ClientRequest.callInSelfWindow\n */\nexport const postInWindow = async (url: string, data: Record<string, any>, target: '_blank' | '_self'): Promise<void> => {\n\tconst form = document.createElement('form');\n\tform.target = target;\n\tform.action = url;\n\tform.method = 'post';\n\n\tdataToForm(form, '', data);\n\n\tdocument.body.appendChild(form);\n\tform.submit();\n\tform.remove();\n};\n\nexport const dataToForm = async (elForm: HTMLFormElement, dataName: string, data: Record<string, any>): Promise<void> => {\n\tif (typeof data === 'object') {\n\t\tfor (const [subDataNameRaw, subData] of Object.entries(data)) {\n\t\t\tlet subDataName = subDataNameRaw;\n\n\t\t\tif (dataName) {\n\t\t\t\tsubDataName = `${dataName}[${subDataName}]`;\n\t\t\t}\n\n\t\t\t// пропустить пустые объекты/массивы\n\t\t\tif (subData === null || subData === undefined) continue;\n\t\t\tif (subData && typeof subData === 'object' && Object.keys(subData).length === 0) continue;\n\n\t\t\tdataToForm(elForm, subDataName, subData);\n\t\t}\n\t} else {\n\t\tconst elInput = document.createElement('input');\n\t\telInput.type = 'hidden';\n\t\telInput.name = dataName;\n\t\telInput.value = String(data ?? '');\n\n\t\telForm.appendChild(elInput);\n\t}\n};\n\n/**\n * Сериализация данных для вставки в виде параметров в url\n */\nexport const querySerializer = (data: Record<string, unknown>): string => {\n\tconst searchParams = new URLSearchParams();\n\n\tconst appendParam = (path: string, currentValue: unknown): void => {\n\t\tif (currentValue == null) return;\n\n\t\tif (Array.isArray(currentValue)) {\n\t\t\tfor (const [key, value] of Object.entries(currentValue)) {\n\t\t\t\tappendParam(`${path}[${key}]`, value);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (typeof currentValue === 'object') {\n\t\t\tfor (const [key, value] of Object.entries(currentValue as Record<string, unknown>)) {\n\t\t\t\tappendParam(`${path}[${key}]`, value);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tsearchParams.append(path, String(currentValue));\n\t};\n\n\tfor (const [key, value] of Object.entries(data)) {\n\t\tappendParam(key, value);\n\t}\n\n\treturn searchParams.toString();\n};\n"],"names":["postInWindow","url","data","target","form","dataToForm","elForm","dataName","subDataNameRaw","subData","subDataName","elInput","querySerializer","searchParams","appendParam","path","currentValue","key","value"],"mappings":"0FAYO,MAAAA,EAAA,MAAAC,EAAAC,EAAAC,IAAA,wCAENC,EAAA,OAAAD,EACAC,EAAA,OAAAH,EACAG,EAAA,OAAA,OAEAC,EAAAD,EAAA,GAAAF,CAAA,EAEA,SAAA,KAAA,YAAAE,CAAA,uBAGD,EAEOC,EAAA,MAAAC,EAAAC,EAAAL,IAAA,CACN,GAAA,OAAAA,GAAA,SACC,SAAA,CAAAM,EAAAC,CAAA,IAAA,OAAA,QAAAP,CAAA,EAAA,uCASCO,GAAA,OAAAA,GAAA,UAAA,OAAA,KAAAA,CAAA,EAAA,SAAA,GAEAJ,EAAAC,EAAAI,EAAAD,CAAA,OACD,yCAGAE,EAAA,KAAA,SACAA,EAAA,KAAAJ,wBAGAD,EAAA,YAAAK,CAAA,EAEF,EAKOC,EAAAV,GAAA,CACN,MAAAW,EAAA,IAAA,gBAEAC,EAAA,CAAAC,EAAAC,IAAA,CACC,GAAAA,GAAA,KAEA,IAAA,MAAA,QAAAA,CAAA,EAAA,CACC,SAAA,CAAAC,EAAAC,CAAA,IAAA,OAAA,QAAAF,CAAA,EACCF,EAAA,GAAAC,CAAA,IAAAE,CAAA,IAAAC,CAAA,SAKF,GAAA,OAAAF,GAAA,SAAA,CACC,SAAA,CAAAC,EAAAC,CAAA,IAAA,OAAA,QAAAF,CAAA,EACCF,EAAA,GAAAC,CAAA,IAAAE,CAAA,IAAAC,CAAA,+BAK4C,EAG/C,SAAA,CAAAD,EAAAC,CAAA,IAAA,OAAA,QAAAhB,CAAA,EACCY,EAAAG,EAAAC,CAAA,EAGD,OAAAL,EAAA,SAAA,CACD"}
@@ -0,0 +1,39 @@
1
+ const a = async (r, o, n) => {
2
+ const e = document.createElement("form");
3
+ e.target = n, e.action = r, e.method = "post", c(e, "", o), document.body.appendChild(e), e.submit(), e.remove();
4
+ }, c = async (r, o, n) => {
5
+ if (typeof n == "object")
6
+ for (const [e, t] of Object.entries(n)) {
7
+ let s = e;
8
+ o && (s = `${o}[${s}]`), t != null && (t && typeof t == "object" && Object.keys(t).length === 0 || c(r, s, t));
9
+ }
10
+ else {
11
+ const e = document.createElement("input");
12
+ e.type = "hidden", e.name = o, e.value = String(n ?? ""), r.appendChild(e);
13
+ }
14
+ }, f = (r) => {
15
+ const o = new URLSearchParams(), n = (e, t) => {
16
+ if (t != null) {
17
+ if (Array.isArray(t)) {
18
+ for (const [s, i] of Object.entries(t))
19
+ n(`${e}[${s}]`, i);
20
+ return;
21
+ }
22
+ if (typeof t == "object") {
23
+ for (const [s, i] of Object.entries(t))
24
+ n(`${e}[${s}]`, i);
25
+ return;
26
+ }
27
+ o.append(e, String(t));
28
+ }
29
+ };
30
+ for (const [e, t] of Object.entries(r))
31
+ n(e, t);
32
+ return o.toString();
33
+ };
34
+ export {
35
+ c as dataToForm,
36
+ a as postInWindow,
37
+ f as querySerializer
38
+ };
39
+ //# sourceMappingURL=lazy-Crun7esL.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lazy-Crun7esL.es.js","sources":["../../src/api/api/utils/lazy.ts"],"sourcesContent":["/**\n * Общие утилиты, которые должны грузиться в отложенном режиме\n *\n * Все такие утилиты являются асинхронными\n */\n\n/**\n * Выполнить post запрос в окне браузера\n *\n * @see Api.ClientRequest.callInNewWindow\n * @see Api.ClientRequest.callInSelfWindow\n */\nexport const postInWindow = async (url: string, data: Record<string, any>, target: '_blank' | '_self'): Promise<void> => {\n\tconst form = document.createElement('form');\n\tform.target = target;\n\tform.action = url;\n\tform.method = 'post';\n\n\tdataToForm(form, '', data);\n\n\tdocument.body.appendChild(form);\n\tform.submit();\n\tform.remove();\n};\n\nexport const dataToForm = async (elForm: HTMLFormElement, dataName: string, data: Record<string, any>): Promise<void> => {\n\tif (typeof data === 'object') {\n\t\tfor (const [subDataNameRaw, subData] of Object.entries(data)) {\n\t\t\tlet subDataName = subDataNameRaw;\n\n\t\t\tif (dataName) {\n\t\t\t\tsubDataName = `${dataName}[${subDataName}]`;\n\t\t\t}\n\n\t\t\t// пропустить пустые объекты/массивы\n\t\t\tif (subData === null || subData === undefined) continue;\n\t\t\tif (subData && typeof subData === 'object' && Object.keys(subData).length === 0) continue;\n\n\t\t\tdataToForm(elForm, subDataName, subData);\n\t\t}\n\t} else {\n\t\tconst elInput = document.createElement('input');\n\t\telInput.type = 'hidden';\n\t\telInput.name = dataName;\n\t\telInput.value = String(data ?? '');\n\n\t\telForm.appendChild(elInput);\n\t}\n};\n\n/**\n * Сериализация данных для вставки в виде параметров в url\n */\nexport const querySerializer = (data: Record<string, unknown>): string => {\n\tconst searchParams = new URLSearchParams();\n\n\tconst appendParam = (path: string, currentValue: unknown): void => {\n\t\tif (currentValue == null) return;\n\n\t\tif (Array.isArray(currentValue)) {\n\t\t\tfor (const [key, value] of Object.entries(currentValue)) {\n\t\t\t\tappendParam(`${path}[${key}]`, value);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (typeof currentValue === 'object') {\n\t\t\tfor (const [key, value] of Object.entries(currentValue as Record<string, unknown>)) {\n\t\t\t\tappendParam(`${path}[${key}]`, value);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tsearchParams.append(path, String(currentValue));\n\t};\n\n\tfor (const [key, value] of Object.entries(data)) {\n\t\tappendParam(key, value);\n\t}\n\n\treturn searchParams.toString();\n};\n"],"names":["postInWindow","url","data","target","form","dataToForm","elForm","dataName","subDataNameRaw","subData","subDataName","elInput","querySerializer","searchParams","appendParam","path","currentValue","key","value"],"mappings":"AAYO,MAAMA,IAAe,OAAOC,GAAaC,GAA2BC,MAA8C;AACxH,QAAMC,IAAO,SAAS,cAAc,MAAM;AAC1C,EAAAA,EAAK,SAASD,GACdC,EAAK,SAASH,GACdG,EAAK,SAAS,QAEdC,EAAWD,GAAM,IAAIF,CAAI,GAEzB,SAAS,KAAK,YAAYE,CAAI,GAC9BA,EAAK,OAAA,GACLA,EAAK,OAAA;AACN,GAEaC,IAAa,OAAOC,GAAyBC,GAAkBL,MAA6C;AACxH,MAAI,OAAOA,KAAS;AACnB,eAAW,CAACM,GAAgBC,CAAO,KAAK,OAAO,QAAQP,CAAI,GAAG;AAC7D,UAAIQ,IAAcF;AAOlB,MALID,MACHG,IAAc,GAAGH,CAAQ,IAAIG,CAAW,MAIrCD,KAAY,SACZA,KAAW,OAAOA,KAAY,YAAY,OAAO,KAAKA,CAAO,EAAE,WAAW,KAE9EJ,EAAWC,GAAQI,GAAaD,CAAO;AAAA,IACxC;AAAA,OACM;AACN,UAAME,IAAU,SAAS,cAAc,OAAO;AAC9C,IAAAA,EAAQ,OAAO,UACfA,EAAQ,OAAOJ,GACfI,EAAQ,QAAQ,OAAOT,KAAQ,EAAE,GAEjCI,EAAO,YAAYK,CAAO;AAAA,EAC3B;AACD,GAKaC,IAAkB,CAACV,MAA0C;AACzE,QAAMW,IAAe,IAAI,gBAAA,GAEnBC,IAAc,CAACC,GAAcC,MAAgC;AAClE,QAAIA,KAAgB,MAEpB;AAAA,UAAI,MAAM,QAAQA,CAAY,GAAG;AAChC,mBAAW,CAACC,GAAKC,CAAK,KAAK,OAAO,QAAQF,CAAY;AACrD,UAAAF,EAAY,GAAGC,CAAI,IAAIE,CAAG,KAAKC,CAAK;AAErC;AAAA,MACD;AAEA,UAAI,OAAOF,KAAiB,UAAU;AACrC,mBAAW,CAACC,GAAKC,CAAK,KAAK,OAAO,QAAQF,CAAuC;AAChF,UAAAF,EAAY,GAAGC,CAAI,IAAIE,CAAG,KAAKC,CAAK;AAErC;AAAA,MACD;AAEA,MAAAL,EAAa,OAAOE,GAAM,OAAOC,CAAY,CAAC;AAAA;AAAA,EAC/C;AAEA,aAAW,CAACC,GAAKC,CAAK,KAAK,OAAO,QAAQhB,CAAI;AAC7C,IAAAY,EAAYG,GAAKC,CAAK;AAGvB,SAAOL,EAAa,SAAA;AACrB;"}
@@ -0,0 +1,184 @@
1
+ import { Core as T } from "../core/app.js";
2
+ import { defineComponent as C, onUpdated as H, createElementBlock as n, openBlock as s, Fragment as b, createElementVNode as M, renderSlot as l, ref as h, toRef as B, watch as N, onUnmounted as w, resolveDirective as R, createBlock as _, createCommentVNode as r, unref as O, withCtx as L, Teleport as E, withDirectives as k, toDisplayString as U, createVNode as A, normalizeClass as W, resolveDynamicComponent as z, mergeProps as F } from "vue";
3
+ import { e as j } from "./forms-t2AEUjqg.es.js";
4
+ import { TopPopupWorker as S } from "../popup/worker.js";
5
+ const D = ["../assets/listItem.css"].map((i) => import.meta.resolve(i));
6
+ T.insertCSSLinkToPage(D, !0);
7
+ const q = /* @__PURE__ */ C({
8
+ __name: "opener",
9
+ props: {
10
+ id: {},
11
+ pos: { default: "3" },
12
+ notch: { type: Boolean, default: !0 },
13
+ openByHover: { type: Boolean },
14
+ posBy: { default: "fixed" },
15
+ data: {}
16
+ },
17
+ setup(i) {
18
+ const o = i, a = o.id || Math.random() + "";
19
+ let p;
20
+ function y(t) {
21
+ setTimeout(() => {
22
+ p = t.nextElementSibling, p && u(p);
23
+ });
24
+ }
25
+ H(() => {
26
+ p && u(p);
27
+ });
28
+ function u(t) {
29
+ t.dataset.topPopup = "#" + a, t.dataset.topPopupId = a, t.dataset.topPopupPos = o.pos, t.dataset.topPopupPosBy = o.posBy, t.dataset.topPopupNotch = o.notch ? "true" : "", t.dataset.topPopupOpenByHover = o.openByHover ? "true" : "", t.__TopPopupOpenerProps = o;
30
+ }
31
+ return (t, f) => (s(), n(b, null, [
32
+ M("template", { ref: y }),
33
+ l(t.$slots, "default")
34
+ ], 64));
35
+ }
36
+ }), G = {
37
+ key: 0,
38
+ class: "top-popup_header"
39
+ }, J = {
40
+ key: 0,
41
+ class: "top-as-a closer"
42
+ }, K = {
43
+ key: 1,
44
+ class: "top-popup_widget"
45
+ }, Q = {
46
+ key: 2,
47
+ class: "top-popup_content"
48
+ }, X = {
49
+ key: 4,
50
+ class: "top-popup_footer"
51
+ }, Y = ["href"], se = /* @__PURE__ */ C({
52
+ __name: "popup",
53
+ props: {
54
+ id: { default: "" },
55
+ class: {},
56
+ transitionDuration: {},
57
+ footerSupportLink: {},
58
+ pos: { default: "3" },
59
+ notch: { type: Boolean, default: !0 },
60
+ openByHover: { type: Boolean },
61
+ posBy: { default: "fixed" },
62
+ data: {}
63
+ },
64
+ emits: ["open", "close", "scrollContentList"],
65
+ setup(i, { expose: o, emit: a }) {
66
+ const p = i, y = a, u = p.id || "top-popup-id-" + Math.random(), t = {
67
+ id: u,
68
+ popup: void 0
69
+ };
70
+ o(t);
71
+ const f = h(null), P = h(null), d = h(), m = {
72
+ onOpen: async (e) => {
73
+ e.elPopup && (f.value = e.elPopup), e.elPopupInner && (e.elPopupInner.innerText = "", P.value = e.elPopupInner), m.opened = !0, m.popup = e, t.popup = e, d.value = e.el.__TopPopupOpenerProps.data, y("open", { elPopup: e.elPopup, elPopupOpener: e.el, data: d.value });
74
+ },
75
+ onClose: (e) => {
76
+ P.value = null, m.opened = !1, m.popup = void 0, d.value = void 0, y("close", { elPopup: e.elPopup, elPopupOpener: e.el, data: e.el.__TopPopupOpenerProps.data });
77
+ },
78
+ classRef: B(p, "class"),
79
+ opened: !1,
80
+ popup: void 0,
81
+ transitionDurationRef: B(p, "transitionDuration")
82
+ };
83
+ return N(() => p.class, (e, c) => {
84
+ if (!f.value) return;
85
+ const v = (e == null ? void 0 : e.split(" ")) ?? [], g = ((c == null ? void 0 : c.split(" ")) ?? []).filter((I) => !v.includes(I));
86
+ f.value.classList.remove(...g), f.value.classList.add(...v);
87
+ }), S.regVueComponent(u, m), w(() => {
88
+ S.unregVueComponent(u);
89
+ }), (e, c) => {
90
+ const v = R("top-scroll-shadow");
91
+ return s(), n(b, null, [
92
+ e.$slots.opener ? (s(), _(q, {
93
+ key: 0,
94
+ id: O(u),
95
+ pos: e.pos,
96
+ posBy: e.posBy,
97
+ notch: e.notch,
98
+ openByHover: e.$core.state.isMobile || e.$core.state.isMobileUA ? !1 : e.openByHover
99
+ }, {
100
+ default: L(() => [
101
+ l(e.$slots, "opener")
102
+ ]),
103
+ _: 3
104
+ }, 8, ["id", "pos", "posBy", "notch", "openByHover"])) : r("", !0),
105
+ P.value ? (s(), _(E, {
106
+ key: 1,
107
+ to: P.value
108
+ }, [
109
+ e.$slots.header || e.$core.state.isMobile ? (s(), n("div", G, [
110
+ e.$core.state.isMobile ? (s(), n("span", J, U(e.$i18n.Common.Close), 1)) : r("", !0),
111
+ l(e.$slots, "header", { data: d.value })
112
+ ])) : r("", !0),
113
+ e.$slots.widget ? (s(), n("div", K, [
114
+ l(e.$slots, "widget")
115
+ ])) : r("", !0),
116
+ e.$slots.content ? k((s(), n("div", Q, [
117
+ l(e.$slots, "content", { data: d.value })
118
+ ])), [
119
+ [v]
120
+ ]) : r("", !0),
121
+ e.$slots.contentList ? k((s(), n("ul", {
122
+ key: 3,
123
+ class: "top-popup_content",
124
+ onScroll: c[0] || (c[0] = ($) => e.$emit("scrollContentList", $))
125
+ }, [
126
+ l(e.$slots, "contentList", { data: d.value })
127
+ ], 32)), [
128
+ [v]
129
+ ]) : r("", !0),
130
+ e.$slots.footer || e.footerSupportLink ? (s(), n("div", X, [
131
+ e.footerSupportLink ? (s(), n("a", {
132
+ key: 0,
133
+ class: "top-popup_footerSupportLink",
134
+ href: e.footerSupportLink,
135
+ target: "_blank"
136
+ }, [
137
+ A(j, { hint: "" })
138
+ ], 8, Y)) : r("", !0),
139
+ l(e.$slots, "footer", { data: d.value })
140
+ ])) : r("", !0)
141
+ ], 8, ["to"])) : r("", !0)
142
+ ], 64);
143
+ };
144
+ }
145
+ }), pe = /* @__PURE__ */ C({
146
+ inheritAttrs: !1,
147
+ __name: "listItem",
148
+ props: {
149
+ type: { default: "button" },
150
+ closeByClick: { type: Boolean, default: !0 }
151
+ },
152
+ setup(i) {
153
+ const o = i;
154
+ return (a, p) => (s(), n("li", {
155
+ class: W({
156
+ "top-popup_liNoSelectable": o.type !== "button"
157
+ })
158
+ }, [
159
+ (s(), _(z(a.$attrs.href ? "a" : "div"), F({
160
+ class: {
161
+ "top-popup_listItem": !0,
162
+ "top-popup_listItem-button": o.type === "button",
163
+ // оформления кнопки
164
+ a: o.type === "button",
165
+ // оформления кнопки, deprecated
166
+ "top-popup_listItem-title": o.type === "title",
167
+ "top-popup_listItem-delimiter": o.type === "delimiter",
168
+ "top-popup-noCloser": !a.closeByClick
169
+ }
170
+ }, a.$attrs), {
171
+ default: L(() => [
172
+ l(a.$slots, "default")
173
+ ]),
174
+ _: 3
175
+ }, 16, ["class"]))
176
+ ], 2));
177
+ }
178
+ });
179
+ export {
180
+ se as _,
181
+ pe as a,
182
+ q as b
183
+ };
184
+ //# sourceMappingURL=listItem.vue_vue_type_script_setup_true_lang-B6psuRkm.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listItem.vue_vue_type_script_setup_true_lang-B6psuRkm.es.js","sources":["../../src/components/popup/popup/opener.vue","../../src/components/popup/popup/popup.vue","../../src/components/popup/popup/listItem.vue"],"sourcesContent":["<script setup lang=\"ts\" generic=\"T extends Record<string, any> | undefined = undefined\">\nimport { onUpdated } from 'vue';\nimport type { OpenerProps } from './types';\n\nconst props = withDefaults(defineProps<OpenerProps<T>>(), {\n\tpos: '3',\n\tnotch: true,\n\tposBy: 'fixed',\n});\n\nconst id = props.id || Math.random() + '';\n\nlet elOpener: Element;\n\n/**\n * Необычная функция для проброски props внутрь элемента слота\n *\n * @param el - вспомогательный элемент для доступа к элементам слота\n */\nfunction render(el: any) {\n\tsetTimeout(() => {\n\t\telOpener = el.nextElementSibling;\n\n\t\tif (elOpener) {\n\t\t\trenderOpener(elOpener);\n\t\t}\n\t});\n}\n\nonUpdated(() => {\n\tif (elOpener) {\n\t\trenderOpener(elOpener);\n\t}\n});\n\nfunction renderOpener(elOpener: any) {\n\t/**\n\t * topPopup - необходимый атрибут для всез Popup\n\t *\n\t * Для Vue вместо него используется атрибут topPopupId\n\t */\n\telOpener.dataset.topPopup = '#' + id;\n\n\telOpener.dataset.topPopupId = id;\n\telOpener.dataset.topPopupPos = props.pos;\n\telOpener.dataset.topPopupPosBy = props.posBy;\n\telOpener.dataset.topPopupNotch = props.notch ? 'true' : '';\n\telOpener.dataset.topPopupOpenByHover = props.openByHover ? 'true' : '';\n\telOpener.__TopPopupOpenerProps = props;\n}\n</script>\n\n<template>\n\t<template :ref=\"render\"></template>\n\n\t<!-- @slot элемент для открытия Popup -->\n\t<slot></slot>\n</template>\n\n<!-- Использует общий deprecated класс .btn -->\n<style>\nh3[data-top-popup],\ndiv[data-top-popup],\ni[data-top-popup]:not(.btn),\nb[data-top-popup]:not(.btn) {\n\tcursor: pointer;\n\tuser-select: none;\n\tfont-style: normal;\n\ttext-decoration: none;\n\tdisplay: inline-flex;\n\talign-items: center;\n}\n\n[data-top-popup][data-top-popup-disabled] {\n\tpointer-events: none;\n\tcursor: auto !important;\n}\n\ni[contenteditable] {\n\tcursor: text !important;\n}\n</style>\n","<script setup lang=\"ts\" generic=\"T extends Record<string, any> | undefined = undefined\">\nimport { onUnmounted, ref, toRef, watch } from 'vue';\nimport TopHint from '@/components/forms/hint/hint.vue';\nimport type { TopLibPopup } from '@/components/popup/lib/popup';\nimport type { Emits, Props } from './types';\nimport Opener from './opener.vue';\nimport Worker from '@/components/popup/lib/worker';\n\nconst props = withDefaults(defineProps<Props<T>>(), {\n\tid: '',\n\tpos: '3',\n\tnotch: true,\n\tposBy: 'fixed',\n});\n\nconst emit = defineEmits<Emits<T>>();\n\nconst id = props.id || 'top-popup-id-' + Math.random() + '';\n\nconst expose = {\n\tid,\n\tpopup: undefined as TopLibPopup<T> | undefined,\n};\n\ndefineExpose(expose);\n\nconst elPopupRef = ref<HTMLElement | null>(null);\nconst elPopupInnerRef = ref<HTMLElement | null>(null);\n\nconst data = ref<T>();\n\n// см. lib/popup\nconst onOpen = async (popup: TopLibPopup<T>) => {\n\tif (popup.elPopup) elPopupRef.value = popup.elPopup;\n\n\tif (popup.elPopupInner) {\n\t\tpopup.elPopupInner.innerText = '';\n\n\t\telPopupInnerRef.value = popup.elPopupInner;\n\t}\n\n\tvueConnector.opened = true;\n\tvueConnector.popup = popup;\n\n\texpose.popup = popup;\n\n\tdata.value = popup.el.__TopPopupOpenerProps.data;\n\n\temit('open', { elPopup: popup.elPopup!, elPopupOpener: popup.el, data: data.value });\n};\n\n// см. lib/popup\nconst onClose = (popup: TopLibPopup<T>) => {\n\telPopupInnerRef.value = null;\n\n\tvueConnector.opened = false;\n\tvueConnector.popup = undefined;\n\n\tdata.value = undefined;\n\n\temit('close', { elPopup: popup.elPopup!, elPopupOpener: popup.el, data: popup.el.__TopPopupOpenerProps.data });\n};\n\nconst vueConnector = {\n\tonOpen,\n\tonClose,\n\tclassRef: toRef(props, 'class'),\n\topened: false,\n\tpopup: undefined as TopLibPopup<T> | undefined,\n\ttransitionDurationRef: toRef(props, 'transitionDuration'),\n};\n\nwatch(() => props.class, (newValue, oldValue) => {\n\tif (!elPopupRef.value) return;\n\n\tconst newClasses = newValue?.split(' ') ?? [];\n\tconst oldClasses = oldValue?.split(' ') ?? [];\n\n\tconst delClasses = oldClasses.filter((oldClass) => !newClasses.includes(oldClass));\n\n\telPopupRef.value.classList.remove(...delClasses);\n\telPopupRef.value.classList.add(...newClasses);\n});\n\nWorker.regVueComponent(id, vueConnector);\n\nonUnmounted(() => {\n\tWorker.unregVueComponent(id);\n});\n</script>\n\n<template>\n\t<Opener\n\t\tv-if=\"$slots.opener\"\n\t\t:id=\"id\"\n\t\t:pos=\"pos\"\n\t\t:posBy=\"posBy\"\n\t\t:notch=\"notch\"\n\t\t:openByHover=\"($core.state.isMobile || $core.state.isMobileUA) ? false : openByHover\"\n\t>\n\t\t<!-- @slot элемент для открытия Popup -->\n\t\t<slot name=\"opener\"></slot>\n\t</Opener>\n\n\t<!-- Это шаблон для компонента Popup, сам Popup генерируется в js и может находиться где угодно -->\n\t<!-- elPopupInnerRef будет установлен только после открытия и будет сброшен сразу после закрытия Popup -->\n\t<teleport\n\t\tv-if=\"elPopupInnerRef\"\n\t\t:to=\"elPopupInnerRef\"\n\t>\n\t\t<div\n\t\t\tv-if=\"$slots.header || $core.state.isMobile\"\n\t\t\tclass=\"top-popup_header\"\n\t\t>\n\t\t\t<span\n\t\t\t\tv-if=\"$core.state.isMobile\"\n\t\t\t\tclass=\"top-as-a closer\"\n\t\t\t>\n\t\t\t\t{{ $i18n.Common.Close }}\n\t\t\t</span>\n\n\t\t\t<!-- @slot Шапка -->\n\t\t\t<slot name=\"header\" :data=\"data\"></slot>\n\t\t</div>\n\n\t\t<div\n\t\t\tv-if=\"$slots.widget\"\n\t\t\tclass=\"top-popup_widget\"\n\t\t>\n\t\t\t<!-- @slot Виджет -->\n\t\t\t<slot name=\"widget\"></slot>\n\t\t</div>\n\n\t\t<div\n\t\t\tv-if=\"$slots.content\"\n\t\t\tclass=\"top-popup_content\"\n\t\t\tv-top-scroll-shadow\n\t\t>\n\t\t\t<!-- @slot Контент в свободной форме -->\n\t\t\t<slot name=\"content\" :data=\"data\"></slot>\n\t\t</div>\n\n\t\t<ul\n\t\t\tv-if=\"$slots.contentList\"\n\t\t\tclass=\"top-popup_content\"\n\t\t\t@scroll=\"$emit('scrollContentList', $event)\"\n\t\t\tv-top-scroll-shadow\n\t\t>\n\t\t\t<!-- @slot Контент в виде списка, для вставки элементов списка используйте компонент popup/listItem -->\n\t\t\t<slot name=\"contentList\" :data=\"data\"></slot>\n\t\t</ul>\n\n\t\t<div\n\t\t\tv-if=\"$slots.footer || footerSupportLink\"\n\t\t\tclass=\"top-popup_footer\"\n\t\t>\n\t\t\t<a\n\t\t\t\tv-if=\"footerSupportLink\"\n\t\t\t\tclass=\"top-popup_footerSupportLink\"\n\t\t\t\t:href=\"footerSupportLink\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t>\n\t\t\t\t<TopHint hint=\"\"/>\n\t\t\t</a>\n\n\t\t\t<!-- @slot Футер -->\n\t\t\t<slot name=\"footer\" :data=\"data\"></slot>\n\t\t</div>\n\t</teleport>\n</template>\n\n<style>\n.top-popup_footerSupportLink {\n\tmargin-right: auto;\n}\n</style>\n","<script setup lang=\"ts\">\nimport type { ListItemProps } from './types';\n\ndefineOptions({\n\tinheritAttrs: false,\n});\n\nconst props = withDefaults(defineProps<ListItemProps>(), {\n\ttype: 'button',\n\tcloseByClick: true,\n});\n</script>\n\n<template>\n\t<li\n\t\t:class=\"{\n\t\t'top-popup_liNoSelectable': props.type !== 'button'\n\t}\"\n\t>\n\t\t<component\n\t\t\t:is=\"$attrs.href ? 'a' : 'div'\"\n\t\t\t:class=\"{\n\t\t\t\t'top-popup_listItem': true,\n\t\t\t\t'top-popup_listItem-button': props.type === 'button', // оформления кнопки\n\t\t\t\t'a': props.type === 'button', // оформления кнопки, deprecated\n\t\t\t\t'top-popup_listItem-title': props.type === 'title',\n\t\t\t\t'top-popup_listItem-delimiter': props.type === 'delimiter',\n\t\t\t\t'top-popup-noCloser': !closeByClick\n\t\t\t}\"\n\t\t\t:=$attrs\n\t\t>\n\t\t\t<slot></slot>\n\t\t</component>\n\t</li>\n</template>\n"],"names":["props","__props","id","elOpener","render","el","renderOpener","onUpdated","elOpener2","renderSlot","_ctx","emit","__emit","expose","__expose","elPopupRef","ref","elPopupInnerRef","data","vueConnector","popup","toRef","watch","newValue","oldValue","newClasses","delClasses","oldClass","Worker","onUnmounted","pos","posBy","notch","openByHover","openBlock","createElementBlock","_hoisted_2","toDisplayString","createCommentVNode","_cache","$event","footerSupportLink","_hoisted_6","normalizeClass","closeByClick","withCtx"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ define(["require","exports","vue","./forms-DRhpgERJ.amd","../popup/worker.amd","../require/css.amd!../assets/listItem.css"],(function(L,B,e,C,k){"use strict";if(typeof e>"u")var e=window.Vue;const v=e.defineComponent({__name:"opener",props:{id:{},pos:{default:"3"},notch:{type:Boolean,default:!0},openByHover:{type:Boolean},posBy:{default:"fixed"},data:{}},setup(i){const t=i,p=t.id||Math.random()+"";let s;function m(n){setTimeout(()=>{s=n.nextElementSibling,s&&l(s)})}e.onUpdated(()=>{s&&l(s)});function l(n){n.dataset.topPopup="#"+p,n.dataset.topPopupId=p,n.dataset.topPopupPos=t.pos,n.dataset.topPopupPosBy=t.posBy,n.dataset.topPopupNotch=t.notch?"true":"",n.dataset.topPopupOpenByHover=t.openByHover?"true":"",n.__TopPopupOpenerProps=t}return(n,c)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("template",{ref:m}),e.renderSlot(n.$slots,"default")],64))}}),h={key:0,class:"top-popup_header"},P={key:0,class:"top-as-a closer"},_={key:1,class:"top-popup_widget"},$={key:2,class:"top-popup_content"},S={key:4,class:"top-popup_footer"},N=["href"],b=e.defineComponent({__name:"popup",props:{id:{default:""},class:{},transitionDuration:{},footerSupportLink:{},pos:{default:"3"},notch:{type:Boolean,default:!0},openByHover:{type:Boolean},posBy:{default:"fixed"},data:{}},emits:["open","close","scrollContentList"],setup(i,{expose:t,emit:p}){const s=i,m=p,l=s.id||"top-popup-id-"+Math.random(),n={id:l,popup:void 0};t(n);const c=e.ref(null),f=e.ref(null),r=e.ref(),u={onOpen:async o=>{o.elPopup&&(c.value=o.elPopup),o.elPopupInner&&(o.elPopupInner.innerText="",f.value=o.elPopupInner),u.opened=!0,u.popup=o,n.popup=o,r.value=o.el.__TopPopupOpenerProps.data,m("open",{elPopup:o.elPopup,elPopupOpener:o.el,data:r.value})},onClose:o=>{f.value=null,u.opened=!1,u.popup=void 0,r.value=void 0,m("close",{elPopup:o.elPopup,elPopupOpener:o.el,data:o.el.__TopPopupOpenerProps.data})},classRef:e.toRef(s,"class"),opened:!1,popup:void 0,transitionDurationRef:e.toRef(s,"transitionDuration")};return e.watch(()=>s.class,(o,a)=>{if(!c.value)return;const d=(o==null?void 0:o.split(" "))??[],g=((a==null?void 0:a.split(" "))??[]).filter(I=>!d.includes(I));c.value.classList.remove(...g),c.value.classList.add(...d)}),k.TopPopupWorker.regVueComponent(l,u),e.onUnmounted(()=>{k.TopPopupWorker.unregVueComponent(l)}),(o,a)=>{const d=e.resolveDirective("top-scroll-shadow");return e.openBlock(),e.createElementBlock(e.Fragment,null,[o.$slots.opener?(e.openBlock(),e.createBlock(v,{key:0,id:e.unref(l),pos:o.pos,posBy:o.posBy,notch:o.notch,openByHover:o.$core.state.isMobile||o.$core.state.isMobileUA?!1:o.openByHover},{default:e.withCtx(()=>[e.renderSlot(o.$slots,"opener")]),_:3},8,["id","pos","posBy","notch","openByHover"])):e.createCommentVNode("",!0),f.value?(e.openBlock(),e.createBlock(e.Teleport,{key:1,to:f.value},[o.$slots.header||o.$core.state.isMobile?(e.openBlock(),e.createElementBlock("div",h,[o.$core.state.isMobile?(e.openBlock(),e.createElementBlock("span",P,e.toDisplayString(o.$i18n.Common.Close),1)):e.createCommentVNode("",!0),e.renderSlot(o.$slots,"header",{data:r.value})])):e.createCommentVNode("",!0),o.$slots.widget?(e.openBlock(),e.createElementBlock("div",_,[e.renderSlot(o.$slots,"widget")])):e.createCommentVNode("",!0),o.$slots.content?e.withDirectives((e.openBlock(),e.createElementBlock("div",$,[e.renderSlot(o.$slots,"content",{data:r.value})])),[[d]]):e.createCommentVNode("",!0),o.$slots.contentList?e.withDirectives((e.openBlock(),e.createElementBlock("ul",{key:3,class:"top-popup_content",onScroll:a[0]||(a[0]=y=>o.$emit("scrollContentList",y))},[e.renderSlot(o.$slots,"contentList",{data:r.value})],32)),[[d]]):e.createCommentVNode("",!0),o.$slots.footer||o.footerSupportLink?(e.openBlock(),e.createElementBlock("div",S,[o.footerSupportLink?(e.openBlock(),e.createElementBlock("a",{key:0,class:"top-popup_footerSupportLink",href:o.footerSupportLink,target:"_blank"},[e.createVNode(C._sfc_main$1,{hint:""})],8,N)):e.createCommentVNode("",!0),e.renderSlot(o.$slots,"footer",{data:r.value})])):e.createCommentVNode("",!0)],8,["to"])):e.createCommentVNode("",!0)],64)}}}),E=e.defineComponent({inheritAttrs:!1,__name:"listItem",props:{type:{default:"button"},closeByClick:{type:Boolean,default:!0}},setup(i){const t=i;return(p,s)=>(e.openBlock(),e.createElementBlock("li",{class:e.normalizeClass({"top-popup_liNoSelectable":t.type!=="button"})},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(p.$attrs.href?"a":"div"),e.mergeProps({class:{"top-popup_listItem":!0,"top-popup_listItem-button":t.type==="button",a:t.type==="button","top-popup_listItem-title":t.type==="title","top-popup_listItem-delimiter":t.type==="delimiter","top-popup-noCloser":!p.closeByClick}},p.$attrs),{default:e.withCtx(()=>[e.renderSlot(p.$slots,"default")]),_:3},16,["class"]))],2))}});B._sfc_main=b,B._sfc_main$1=E,B._sfc_main$2=v}));
2
+ //# sourceMappingURL=listItem.vue_vue_type_script_setup_true_lang-C8PDRggQ.amd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listItem.vue_vue_type_script_setup_true_lang-C8PDRggQ.amd.js","sources":["../../src/components/popup/popup/opener.vue","../../src/components/popup/popup/popup.vue","../../src/components/popup/popup/listItem.vue"],"sourcesContent":["<script setup lang=\"ts\" generic=\"T extends Record<string, any> | undefined = undefined\">\nimport { onUpdated } from 'vue';\nimport type { OpenerProps } from './types';\n\nconst props = withDefaults(defineProps<OpenerProps<T>>(), {\n\tpos: '3',\n\tnotch: true,\n\tposBy: 'fixed',\n});\n\nconst id = props.id || Math.random() + '';\n\nlet elOpener: Element;\n\n/**\n * Необычная функция для проброски props внутрь элемента слота\n *\n * @param el - вспомогательный элемент для доступа к элементам слота\n */\nfunction render(el: any) {\n\tsetTimeout(() => {\n\t\telOpener = el.nextElementSibling;\n\n\t\tif (elOpener) {\n\t\t\trenderOpener(elOpener);\n\t\t}\n\t});\n}\n\nonUpdated(() => {\n\tif (elOpener) {\n\t\trenderOpener(elOpener);\n\t}\n});\n\nfunction renderOpener(elOpener: any) {\n\t/**\n\t * topPopup - необходимый атрибут для всез Popup\n\t *\n\t * Для Vue вместо него используется атрибут topPopupId\n\t */\n\telOpener.dataset.topPopup = '#' + id;\n\n\telOpener.dataset.topPopupId = id;\n\telOpener.dataset.topPopupPos = props.pos;\n\telOpener.dataset.topPopupPosBy = props.posBy;\n\telOpener.dataset.topPopupNotch = props.notch ? 'true' : '';\n\telOpener.dataset.topPopupOpenByHover = props.openByHover ? 'true' : '';\n\telOpener.__TopPopupOpenerProps = props;\n}\n</script>\n\n<template>\n\t<template :ref=\"render\"></template>\n\n\t<!-- @slot элемент для открытия Popup -->\n\t<slot></slot>\n</template>\n\n<!-- Использует общий deprecated класс .btn -->\n<style>\nh3[data-top-popup],\ndiv[data-top-popup],\ni[data-top-popup]:not(.btn),\nb[data-top-popup]:not(.btn) {\n\tcursor: pointer;\n\tuser-select: none;\n\tfont-style: normal;\n\ttext-decoration: none;\n\tdisplay: inline-flex;\n\talign-items: center;\n}\n\n[data-top-popup][data-top-popup-disabled] {\n\tpointer-events: none;\n\tcursor: auto !important;\n}\n\ni[contenteditable] {\n\tcursor: text !important;\n}\n</style>\n","<script setup lang=\"ts\" generic=\"T extends Record<string, any> | undefined = undefined\">\nimport { onUnmounted, ref, toRef, watch } from 'vue';\nimport TopHint from '@/components/forms/hint/hint.vue';\nimport type { TopLibPopup } from '@/components/popup/lib/popup';\nimport type { Emits, Props } from './types';\nimport Opener from './opener.vue';\nimport Worker from '@/components/popup/lib/worker';\n\nconst props = withDefaults(defineProps<Props<T>>(), {\n\tid: '',\n\tpos: '3',\n\tnotch: true,\n\tposBy: 'fixed',\n});\n\nconst emit = defineEmits<Emits<T>>();\n\nconst id = props.id || 'top-popup-id-' + Math.random() + '';\n\nconst expose = {\n\tid,\n\tpopup: undefined as TopLibPopup<T> | undefined,\n};\n\ndefineExpose(expose);\n\nconst elPopupRef = ref<HTMLElement | null>(null);\nconst elPopupInnerRef = ref<HTMLElement | null>(null);\n\nconst data = ref<T>();\n\n// см. lib/popup\nconst onOpen = async (popup: TopLibPopup<T>) => {\n\tif (popup.elPopup) elPopupRef.value = popup.elPopup;\n\n\tif (popup.elPopupInner) {\n\t\tpopup.elPopupInner.innerText = '';\n\n\t\telPopupInnerRef.value = popup.elPopupInner;\n\t}\n\n\tvueConnector.opened = true;\n\tvueConnector.popup = popup;\n\n\texpose.popup = popup;\n\n\tdata.value = popup.el.__TopPopupOpenerProps.data;\n\n\temit('open', { elPopup: popup.elPopup!, elPopupOpener: popup.el, data: data.value });\n};\n\n// см. lib/popup\nconst onClose = (popup: TopLibPopup<T>) => {\n\telPopupInnerRef.value = null;\n\n\tvueConnector.opened = false;\n\tvueConnector.popup = undefined;\n\n\tdata.value = undefined;\n\n\temit('close', { elPopup: popup.elPopup!, elPopupOpener: popup.el, data: popup.el.__TopPopupOpenerProps.data });\n};\n\nconst vueConnector = {\n\tonOpen,\n\tonClose,\n\tclassRef: toRef(props, 'class'),\n\topened: false,\n\tpopup: undefined as TopLibPopup<T> | undefined,\n\ttransitionDurationRef: toRef(props, 'transitionDuration'),\n};\n\nwatch(() => props.class, (newValue, oldValue) => {\n\tif (!elPopupRef.value) return;\n\n\tconst newClasses = newValue?.split(' ') ?? [];\n\tconst oldClasses = oldValue?.split(' ') ?? [];\n\n\tconst delClasses = oldClasses.filter((oldClass) => !newClasses.includes(oldClass));\n\n\telPopupRef.value.classList.remove(...delClasses);\n\telPopupRef.value.classList.add(...newClasses);\n});\n\nWorker.regVueComponent(id, vueConnector);\n\nonUnmounted(() => {\n\tWorker.unregVueComponent(id);\n});\n</script>\n\n<template>\n\t<Opener\n\t\tv-if=\"$slots.opener\"\n\t\t:id=\"id\"\n\t\t:pos=\"pos\"\n\t\t:posBy=\"posBy\"\n\t\t:notch=\"notch\"\n\t\t:openByHover=\"($core.state.isMobile || $core.state.isMobileUA) ? false : openByHover\"\n\t>\n\t\t<!-- @slot элемент для открытия Popup -->\n\t\t<slot name=\"opener\"></slot>\n\t</Opener>\n\n\t<!-- Это шаблон для компонента Popup, сам Popup генерируется в js и может находиться где угодно -->\n\t<!-- elPopupInnerRef будет установлен только после открытия и будет сброшен сразу после закрытия Popup -->\n\t<teleport\n\t\tv-if=\"elPopupInnerRef\"\n\t\t:to=\"elPopupInnerRef\"\n\t>\n\t\t<div\n\t\t\tv-if=\"$slots.header || $core.state.isMobile\"\n\t\t\tclass=\"top-popup_header\"\n\t\t>\n\t\t\t<span\n\t\t\t\tv-if=\"$core.state.isMobile\"\n\t\t\t\tclass=\"top-as-a closer\"\n\t\t\t>\n\t\t\t\t{{ $i18n.Common.Close }}\n\t\t\t</span>\n\n\t\t\t<!-- @slot Шапка -->\n\t\t\t<slot name=\"header\" :data=\"data\"></slot>\n\t\t</div>\n\n\t\t<div\n\t\t\tv-if=\"$slots.widget\"\n\t\t\tclass=\"top-popup_widget\"\n\t\t>\n\t\t\t<!-- @slot Виджет -->\n\t\t\t<slot name=\"widget\"></slot>\n\t\t</div>\n\n\t\t<div\n\t\t\tv-if=\"$slots.content\"\n\t\t\tclass=\"top-popup_content\"\n\t\t\tv-top-scroll-shadow\n\t\t>\n\t\t\t<!-- @slot Контент в свободной форме -->\n\t\t\t<slot name=\"content\" :data=\"data\"></slot>\n\t\t</div>\n\n\t\t<ul\n\t\t\tv-if=\"$slots.contentList\"\n\t\t\tclass=\"top-popup_content\"\n\t\t\t@scroll=\"$emit('scrollContentList', $event)\"\n\t\t\tv-top-scroll-shadow\n\t\t>\n\t\t\t<!-- @slot Контент в виде списка, для вставки элементов списка используйте компонент popup/listItem -->\n\t\t\t<slot name=\"contentList\" :data=\"data\"></slot>\n\t\t</ul>\n\n\t\t<div\n\t\t\tv-if=\"$slots.footer || footerSupportLink\"\n\t\t\tclass=\"top-popup_footer\"\n\t\t>\n\t\t\t<a\n\t\t\t\tv-if=\"footerSupportLink\"\n\t\t\t\tclass=\"top-popup_footerSupportLink\"\n\t\t\t\t:href=\"footerSupportLink\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t>\n\t\t\t\t<TopHint hint=\"\"/>\n\t\t\t</a>\n\n\t\t\t<!-- @slot Футер -->\n\t\t\t<slot name=\"footer\" :data=\"data\"></slot>\n\t\t</div>\n\t</teleport>\n</template>\n\n<style>\n.top-popup_footerSupportLink {\n\tmargin-right: auto;\n}\n</style>\n","<script setup lang=\"ts\">\nimport type { ListItemProps } from './types';\n\ndefineOptions({\n\tinheritAttrs: false,\n});\n\nconst props = withDefaults(defineProps<ListItemProps>(), {\n\ttype: 'button',\n\tcloseByClick: true,\n});\n</script>\n\n<template>\n\t<li\n\t\t:class=\"{\n\t\t'top-popup_liNoSelectable': props.type !== 'button'\n\t}\"\n\t>\n\t\t<component\n\t\t\t:is=\"$attrs.href ? 'a' : 'div'\"\n\t\t\t:class=\"{\n\t\t\t\t'top-popup_listItem': true,\n\t\t\t\t'top-popup_listItem-button': props.type === 'button', // оформления кнопки\n\t\t\t\t'a': props.type === 'button', // оформления кнопки, deprecated\n\t\t\t\t'top-popup_listItem-title': props.type === 'title',\n\t\t\t\t'top-popup_listItem-delimiter': props.type === 'delimiter',\n\t\t\t\t'top-popup-noCloser': !closeByClick\n\t\t\t}\"\n\t\t\t:=$attrs\n\t\t>\n\t\t\t<slot></slot>\n\t\t</component>\n\t</li>\n</template>\n"],"names":["id","props","elOpener","render","el","renderOpener","elOpener2","vue","_ctx","elPopupRef","elPopupInnerRef","data","popup","vueConnector","expose","delClasses","oldClass","newClasses","popup_worker","pos","posBy","openByHover","_hoisted_2","footerSupportLink","closeByClick"],"mappings":"wXAUAA,EAAAC,EAAA,IAAA,KAAA,OAAA,EAAA,GAEA,IAAAC,EAOA,SAAAC,EAAAC,EAAA,iBAEEF,EAAAE,EAAA,0BAIA,CAAA,0BAOD,CAAA,EAGD,SAAAC,EAAAC,EAAA,0BAQCA,EAAA,QAAA,WAAAN,8DAGAM,EAAA,QAAA,cAAAL,EAAA,MAAA,OAAA,GACAK,EAAA,QAAA,oBAAAL,EAAA,YAAA,OAAA,GACAK,EAAA,sBAAAL,6GAKsBM,EAAA,WAAAC,EAAA,OAAA,SAAA,sfCpCvBR,EAAAC,EAAA,IAAA,gBAAA,KAAA,OAAA,KAEe,GAAAD,EACd,MAAA,aAMD,MAAAS,EAAAF,EAAA,IAAA,IAAA,EACAG,EAAAH,EAAA,IAAA,IAAA,EAEAI,EAAAJ,EAAA,IAAA,KAkCqB,OA/BrB,MAAAK,GAAA,gCAGCA,EAAA,eACCA,EAAA,aAAA,UAAA,GAEAF,EAAA,MAAAE,EAAA,cAGDC,EAAA,OAAA,GACAA,EAAA,MAAAD,EAEAE,EAAA,MAAAF,uGAImF,EAgBnF,QAZDA,GAAA,CACCF,EAAA,MAAA,KAEAG,EAAA,OAAA,GACAA,EAAA,MAAA,OAEAF,EAAA,MAAA,6FAE6G,EAK7G,SAAAJ,EAAA,MAAAN,EAAA,OAAA,yBAGO,sBAAAM,EAAA,MAAAN,EAAA,oBAAA,sCAKP,GAAA,CAAAQ,EAAA,MAAA,iDAKAM,sCAAA,OAAAC,GAAA,CAAAC,EAAA,SAAAD,CAAA,CAAA,4DAG4C,CAAA,EAG7CE,EAAA,eAAA,gBAAAlB,EAAAa,CAAA,qBAGCK,EAAA,eAAA,kBAAAlB,CAAA,CAA2B,CAAA,yLAOrB,IAAAQ,EAAA,IACCW,MAAAA,EAAAA,MACEC,MAAAA,EAAAA,mFAEiEC,EAAAA,wBAG9Cd,EAAA,WAAAC,EAAA,OAAA,QAAA,CAAA,CAAA,mJAOtB,EAAA,sFAeCA,EAAA,MAAA,MAAA,UAAAD,EAAA,UAAA,EAAAA,EAAA,mBAAA,OAAAe,EAAAf,EAAA,gBAAAC,EAAA,MAAA,OAAA,KAAA,EAAA,CAAA,GAAAD,EAAA,mBAAA,GAAA,EAAA,gDAD0B,CAAA,GAAAA,EAAA,mBAAA,GAAA,EAAA,+DAS1BA,EAAA,WAAAC,EAAA,OAAA,QAAA,CADsB,CAAA,GAAAD,EAAA,mBAAA,GAAA,EAAA,iFAUtBA,EAAA,WAAAC,EAAA,OAAA,UAAA,CAAA,KAAAG,EAAA,KAAA,CAAA,CAD2B,CAAA,GAAA,0MAMU,EAAA,uRAanC,KAAAH,EAAA,kBACCe,OAAAA,QACA,EAAA,yHAMuB,CAAA,GAAAhB,EAAA,mBAAA,GAAA,EAAA,mRCvJ1B,2BAAAN,EAAA,OAAA,2GAiBM,MAAA,uEAX0E,EAAAA,EAAA,OAAA,SAAuD,2BAAAA,EAAA,OAAA,QAA2F,+BAAAA,EAAA,OAAA,YAA4D,qBAAA,CAAAO,EAAA,YAA6CgB,cAQxU,QAAAjB,EAAA,QAAA,IAAA,CAEKA,EAAA,WAAAC,EAAA,OAAA,SAAA,CAAA,CAAA"}
@@ -0,0 +1,110 @@
1
+ import { Core as E } from "../core/app.js";
2
+ import { defineComponent as w, mergeModels as N, useModel as T, ref as b, onMounted as P, onUpdated as K, createElementBlock as c, openBlock as f, normalizeClass as q, createCommentVNode as D, Fragment as Y, renderList as $, createBlock as x, mergeProps as h, createSlots as g, withCtx as A, createTextVNode as M, toDisplayString as k, createVNode as z } from "vue";
3
+ import { _ as C, b as F, C as O } from "./forms-t2AEUjqg.es.js";
4
+ const W = ["../assets/menu.css"].map((n) => import.meta.resolve(n));
5
+ E.insertCSSLinkToPage(W, !0);
6
+ const U = {
7
+ key: 0,
8
+ class: "top-menu_selectAll"
9
+ }, J = /* @__PURE__ */ w({
10
+ __name: "menu",
11
+ props: /* @__PURE__ */ N({
12
+ modelValue: {},
13
+ items: {},
14
+ isMultiple: { type: Boolean },
15
+ canBeEmptyMultiple: { type: Boolean },
16
+ styling: { default: "default" },
17
+ selectAllItem: {}
18
+ }, {
19
+ modelValue: {
20
+ required: !0
21
+ },
22
+ modelModifiers: {}
23
+ }),
24
+ emits: ["update:modelValue"],
25
+ setup(n) {
26
+ var m, p;
27
+ const r = n, t = T(n, "modelValue"), a = b();
28
+ !r.isMultiple && typeof t.value != "string" && typeof t.value != "number" && console.warn('Type check failed for prop "modelValue". Expected String: ' + typeof t.value), r.isMultiple && !Array.isArray(t.value) && console.warn('Type check failed for prop "modelValue". Expected Array: ' + typeof t.value), r.isMultiple && !r.canBeEmptyMultiple && Array.isArray(t.value) && !t.value.length && r.items[0] && (t.value = [((m = r.items[0]) == null ? void 0 : m.href) ?? ((p = r.items[0]) == null ? void 0 : p.value)]);
29
+ const L = (e) => Array.isArray(t.value) ? t.value.includes(e.value) : e.value === t.value, V = (e, o = !1) => {
30
+ if (Array.isArray(t.value)) {
31
+ let l = t.value.slice();
32
+ if (o) {
33
+ l.length || (l = r.items.map((u) => u.value));
34
+ const s = l.indexOf(e.value);
35
+ s === -1 ? l.push(e.value) : l.splice(s, 1);
36
+ } else
37
+ l.length === 1 && l[0] === e.value ? l = [] : l = [e.value];
38
+ !r.canBeEmptyMultiple && !l.length && (l = [e.value]), t.value = l;
39
+ return;
40
+ }
41
+ t.value = e.value;
42
+ }, _ = (e) => {
43
+ if (a.value.scrollWidth <= a.value.offsetWidth || e.shiftKey || Math.abs(e.deltaY) < 50) return;
44
+ e.preventDefault();
45
+ const o = e.deltaY > 0 ? 30 : -30;
46
+ a.value.scrollLeft = a.value.scrollLeft + o;
47
+ }, v = (e = !0) => {
48
+ var d, y;
49
+ const o = a.value.querySelector(".top-active");
50
+ if (!o) return;
51
+ const l = 24, s = o.offsetLeft - a.value.offsetLeft - l, u = o.offsetLeft - a.value.offsetLeft + o.clientWidth + l, S = a.value.scrollLeft, I = a.value.clientWidth + a.value.scrollLeft;
52
+ let i;
53
+ s < S && (i = s), u > I && (i = u - a.value.clientWidth), i !== void 0 && (F() ? (y = (d = O).$) == null || y.call(d, a.value).animate({ scrollLeft: i }, e ? 200 : 0) : a.value.scrollTo({ left: i, behavior: e ? "smooth" : "auto" }));
54
+ }, B = () => {
55
+ if (Array.isArray(t.value)) {
56
+ if (t.value.length === r.items.length) {
57
+ t.value = [r.items[0].href ?? r.items[0].value];
58
+ return;
59
+ }
60
+ t.value = r.items.map((e) => e.href ?? e.value);
61
+ }
62
+ };
63
+ return P(() => v(!1)), K(() => v(!0)), (e, o) => (f(), c("div", {
64
+ ref_key: "el",
65
+ ref: a,
66
+ class: q({
67
+ "top-menu": !0,
68
+ ["top-style_" + e.styling]: !0
69
+ // ['top-unwrap-x']: styling === 'default',
70
+ }),
71
+ onWheel: _
72
+ }, [
73
+ (f(!0), c(Y, null, $(e.items, (l) => (f(), x(C, h({ ref_for: !0 }, l, {
74
+ class: "top-menu_item",
75
+ color: "theme",
76
+ onClick: (s) => V(l, s.ctrlKey || s.metaKey),
77
+ isActive: L(l)
78
+ }), g({ _: 2 }, [
79
+ l.content ? {
80
+ name: "default",
81
+ fn: A(() => [
82
+ M(k(l.content), 1)
83
+ ]),
84
+ key: "0"
85
+ } : void 0
86
+ ]), 1040, ["onClick", "isActive"]))), 256)),
87
+ Array.isArray(t.value) && e.selectAllItem ? (f(), c("div", U, [
88
+ z(C, h(e.selectAllItem, {
89
+ class: "top-menu_item",
90
+ color: "theme",
91
+ styling: "",
92
+ onClick: o[0] || (o[0] = (l) => B()),
93
+ isActive: t.value.length === e.items.length
94
+ }), g({ _: 2 }, [
95
+ e.selectAllItem.content ? {
96
+ name: "default",
97
+ fn: A(() => [
98
+ M(k(e.selectAllItem.content), 1)
99
+ ]),
100
+ key: "0"
101
+ } : void 0
102
+ ]), 1040, ["isActive"])
103
+ ])) : D("", !0)
104
+ ], 34));
105
+ }
106
+ });
107
+ export {
108
+ J as _
109
+ };
110
+ //# sourceMappingURL=menu.vue_vue_type_style_index_0_lang-6kqWYFuX.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu.vue_vue_type_style_index_0_lang-6kqWYFuX.es.js","sources":["../../src/components/formsExt/menu/menu.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { onMounted, onUpdated, ref } from 'vue';\nimport type { Item, Props } from './types';\nimport Core from '@/core/core/core';\nimport { isSafari } from '@/core/utils/device';\nimport TopButton from '@/components/forms/button/button.vue';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tstyling: 'default',\n});\n\nconst model = defineModel({\n\trequired: true,\n});\n\nconst el = ref();\n\n// валидация типа modelValue без возможности выбора нескольких значений (ожидается строка или число)\nif (!props.isMultiple && typeof (model.value) !== 'string' && typeof (model.value) !== 'number') {\n\tconsole.warn('Type check failed for prop \"modelValue\". Expected String: ' + typeof (model.value));\n}\n\n// валидация типа modelValue с возможностью выбора нескольких значений (ожидается массив)\nif (props.isMultiple && !Array.isArray(model.value)) {\n\tconsole.warn('Type check failed for prop \"modelValue\". Expected Array: ' + typeof (model.value));\n}\n\n/**\n * Для множественного выбора без пустого множества\n *\n * Если ничего не выбрано, присваиваем 1-ое значение\n */\nif (props.isMultiple && !props.canBeEmptyMultiple && Array.isArray(model.value) && !model.value.length && props.items[0]) {\n\tmodel.value = [props.items[0]?.href ?? props.items[0]?.value];\n}\n\nconst itemIsActive = (item: Item) => {\n\tif (!Array.isArray(model.value)) {\n\t\treturn item.value === model.value;\n\t}\n\n\treturn model.value.includes(item.value);\n};\n\n/**\n * Выбрать элемент\n * @param item\n * @param toggle - добавить или исключить элемент, для isMultiple\n */\nconst select = (item: Item, toggle = false) => {\n\tif (Array.isArray(model.value)) {\n\t\tlet modelNew = model.value.slice();\n\n\t\tif (toggle) {\n\t\t\tif (!modelNew.length) modelNew = props.items.map(item => item.value);\n\n\t\t\tconst index = modelNew.indexOf(item.value);\n\t\t\tif (index === -1) {\n\t\t\t\tmodelNew.push(item.value);\n\t\t\t} else {\n\t\t\t\tmodelNew.splice(index, 1);\n\t\t\t}\n\t\t} else {\n\t\t\tif (modelNew.length === 1 && modelNew[0] === item.value) {\n\t\t\t\tmodelNew = [];\n\t\t\t} else {\n\t\t\t\tmodelNew = [item.value];\n\t\t\t}\n\t\t}\n\n\t\tif (!props.canBeEmptyMultiple && !modelNew.length) modelNew = [item.value];\n\n\t\tmodel.value = modelNew;\n\n\t\treturn;\n\t}\n\n\tmodel.value = item.value;\n};\n\n// вертикальный скролл в горизонтальный скролл\nconst onWheel = (event: WheelEvent) => {\n\tif (el.value.scrollWidth <= el.value.offsetWidth) return;\n\tif (event.shiftKey) return;\n\tif (Math.abs(event.deltaY) < 50) return; // устройство с высокой точностью, например тачпад\n\n\tevent.preventDefault();\n\n\tconst delta = event.deltaY > 0 ? 30 : -30;\n\tel.value.scrollLeft = el.value.scrollLeft + delta;\n};\n\n/**\n * Замена стандартному scrollIntoView, который меняет скролл документа\n *\n * Выравнивание по ближнему краю элемента\n *\n * Выравнивается таким образом, чтобы был виден соседний элемент\n */\nconst scrollIntoView = (isSmooth = true) => {\n\tconst elBtn = el.value.querySelector('.top-active');\n\tif (!elBtn) return;\n\n\tconst gap = 24;\n\n\t// левая и правая координаты элемента\n\tconst leftMargin = elBtn.offsetLeft - el.value.offsetLeft - gap;\n\tconst rightMargin = elBtn.offsetLeft - el.value.offsetLeft + elBtn.clientWidth + gap;\n\n\t// левая и правая границы видимой части меню\n\tconst leftMarginParent = el.value.scrollLeft;\n\tconst rightMarginParent = el.value.clientWidth + el.value.scrollLeft;\n\n\tlet scrollLeft: number | undefined = undefined;\n\n\t// левую границу элемента к левой границе меню\n\tif (leftMargin < leftMarginParent) scrollLeft = leftMargin;\n\n\t// правую границу элемента к правой границе меню\n\tif (rightMargin > rightMarginParent) scrollLeft = rightMargin - el.value.clientWidth;\n\n\tif (scrollLeft !== undefined) {\n\t\tif (isSafari()) {\n\t\t\tCore.$?.(el.value).animate({ scrollLeft: scrollLeft }, isSmooth ? 200 : 0);\n\t\t} else {\n\t\t\tel.value.scrollTo({ left: scrollLeft, behavior: isSmooth ? 'smooth' : 'auto' });\n\t\t}\n\t}\n};\n\n/**\n * Выбрать все элементы в меню\n */\nconst selectAll = () => {\n\tif (!Array.isArray(model.value)) return;\n\n\tif (model.value.length === props.items.length) {\n\t\tmodel.value = [props.items[0].href ?? props.items[0].value];\n\t\treturn;\n\t}\n\n\tmodel.value = props.items.map(item => item.href ?? item.value);\n};\n\nonMounted(() => scrollIntoView(false));\nonUpdated(() => scrollIntoView(true));\n\n</script>\n\n<template>\n\t<div\n\t\tref=\"el\"\n\t\t:class=\"{\n\t\t\t'top-menu': true,\n\t\t\t['top-style_' + styling]: true,\n\t\t\t// ['top-unwrap-x']: styling === 'default',\n\t\t}\"\n\t\t@wheel=\"onWheel\"\n\t>\n\t\t<TopButton\n\t\t\tv-for=\"item in items\"\n\t\t\t:=\"item\"\n\t\t\tclass=\"top-menu_item\"\n\t\t\tcolor=\"theme\"\n\t\t\t@click=\"select(item, $event.ctrlKey || $event.metaKey)\"\n\t\t\t:isActive=\"itemIsActive(item)\"\n\t\t>\n\t\t\t<template #default v-if=\"item.content\">\n\t\t\t\t{{ item.content }}\n\t\t\t</template>\n\t\t</TopButton>\n\n\t\t<div\n\t\t\tv-if=\"Array.isArray(model) && selectAllItem\"\n\t\t\tclass=\"top-menu_selectAll\"\n\t\t>\n\t\t\t<TopButton\n\t\t\t\t:=\"selectAllItem\"\n\t\t\t\tclass=\"top-menu_item\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\tstyling=\"\"\n\t\t\t\t@click=\"selectAll()\"\n\t\t\t\t:isActive=\"model.length === items.length\"\n\t\t\t>\n\t\t\t\t<template #default v-if=\"selectAllItem.content\">\n\t\t\t\t\t{{ selectAllItem.content }}\n\t\t\t\t</template>\n\t\t\t</TopButton>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n.top-menu {\n\t--scroll-thumb-color: var(--color-line-1);\n\t--scroll-thumb-color-hover: var(--color-line-2);\n\t--scroll-thumb-color-active: var(--color-line-3);\n\n\tmax-width: 100%;\n\tdisplay: flex;\n\talign-items: flex-start;\n\tgap: var(--top-gap-2);\n\toverflow-x: auto;\n\tscrollbar-width: none; /* firefox */\n\n\t/* предотвратить натинвые события браузера (назад / вперед) */\n\toverscroll-behavior-x: contain;\n}\n\n.top-menu::-webkit-scrollbar { display: none; }\n\n.top-menu .top-menu_item {\n\t--top-button-color: var(--color-text-2);\n\n\toutline-offset: -2px !important;\n\tmin-width: 0;\n\tmax-width: 200px;\n\tmargin: 0;\n\tflex-shrink: 0;\n}\n\n.top-menu .top-menu_item[data-top-icon] {\n\t--top-icon-color: var(--color-text-2);\n}\n\n.top-menu_selectAll {\n\tposition: sticky;\n\tright: 0;\n\tbackground: var(--color-layout-front-1);\n\tborder-left: 1px solid var(--color-line-1);\n\tpadding-left: var(--top-padding-1);\n\tbox-shadow: var(--color-layout-front-1) var(--top-padding-2) 0px;\n}\n\n/* style default */\n.top-menu.top-style_default .top-menu_item {\n\t--top-forms-radius: 0;\n\t--top-forms-border-color: transparent;\n\t--top-forms-border-width: 2px;\n\n\tfilter: none;\n\tbox-shadow: none;\n\tborder: none;\n\tborder-bottom: var(--top-forms-border-width) solid var(--top-forms-border-color);\n\tbackground: none;\n}\n\n.top-style_default > .top-menu_item > [data-top-badge] {\n\tmargin-top: 0;\n}\n\n.top-menu.top-style_default .top-menu_item:hover {\n\t--top-icon-color: var(--color-text-1);\n\t--top-button-color: var(--color-text-1);\n\t--top-forms-border-color: var(--color-line-2);\n}\n\n.top-menu.top-style_default .top-menu_item:active,\n.top-menu.top-style_default .top-menu_item.top-active {\n\t--top-icon-color: var(--color-text-primary);\n\t--top-button-color: var(--color-text-1);\n\t--top-forms-border-color: var(--color-line-primary-1);\n}\n\n.top-menu.top-style_default .top-menu_selectAll {\n\tpadding-left: var(--top-padding-2);\n}\n\n/* style bar */\n.top-menu.top-style_bar {\n\tborder-radius: var(--top-radius-3);\n\tborder: 1px solid var(--color-line-2);\n\tpadding: var(--top-padding-1);\n\tgap: 3px;\n}\n.top-menu.top-style_bar .top-menu_item {\n\t--top-button-background-color-hover: var(--color-layer-1);\n\t--top-button-background-color-active: var(--color-layer-2);\n\t--top-button-background-color-selected: var(--color-layer-primary-1);\n\n\tposition: relative;\n}\n\n.top-menu.top-style_bar .top-menu_item:hover {\n\t--top-icon-color: var(--color-text-1);\n\t--top-button-color: var(--color-text-1);\n}\n\n.top-menu.top-style_bar .top-menu_item.top-active {\n\t--top-icon-color: var(--color-text-primary);\n\t--top-button-color: var(--color-text-primary);\n}\n\n/* разделители кнопок в баре */\n.top-menu.top-style_bar .top-menu_item:not(:first-child):not(.top-active):not(:hover):after {\n\tcontent: \"\";\n\tbackground: var(--color-line-1-opacity);\n\twidth: 1px;\n\theight: 60%;\n\tdisplay: block;\n\tposition: absolute;\n\tleft: -2px;\n}\n.top-menu.top-style_bar .top-menu_item.top-active + .top-menu_item:after,\n.top-menu.top-style_bar .top-menu_item:hover + .top-menu_item:after {\n\tcontent: none !important;\n}\n\n/*\n.top-style_bar > .top-menu_item > [data-top-badge] {\n\tmargin-top: -3px;\n}\n*/\n\n/** TODO: .top-unwrap-x надо вынести глобально в UI или добавить в стили для storybook */\n/*\n.top-menu.top-unwrap-x {\n\tpadding-right: var(--top-unwrap-x);\n\tpadding-left: var(--top-unwrap-x);\n\tmargin-right: calc(0px - var(--top-unwrap-x));\n\tmargin-left: calc(0px - var(--top-unwrap-x));\n}\n*/\n</style>\n"],"names":["props","__props","model","useModel","el","ref","_a","_b","itemIsActive","item","select","toggle","modelNew","item2","index","onWheel","event","delta","scrollIntoView","isSmooth","elBtn","gap","leftMargin","rightMargin","leftMarginParent","rightMarginParent","scrollLeft","isSafari","Core","selectAll","onMounted","onUpdated","normalizeClass","$event","createSlots","withCtx","createTextVNode","toDisplayString","createVNode","_sfc_main$1","mergeProps","_ctx","_cache"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ define(["require","exports","vue","./forms-DRhpgERJ.amd","../require/css.amd!../assets/menu.css"],(function(C,h,e,u){"use strict";if(typeof e>"u")var e=window.Vue;const g={key:0,class:"top-menu_selectAll"},A=e.defineComponent({__name:"menu",props:e.mergeModels({modelValue:{},items:{},isMultiple:{type:Boolean},canBeEmptyMultiple:{type:Boolean},styling:{default:"default"},selectAllItem:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(f){var d,m;const o=f,a=e.useModel(f,"modelValue"),r=e.ref();!o.isMultiple&&typeof a.value!="string"&&typeof a.value!="number"&&console.warn('Type check failed for prop "modelValue". Expected String: '+typeof a.value),o.isMultiple&&!Array.isArray(a.value)&&console.warn('Type check failed for prop "modelValue". Expected Array: '+typeof a.value),o.isMultiple&&!o.canBeEmptyMultiple&&Array.isArray(a.value)&&!a.value.length&&o.items[0]&&(a.value=[((d=o.items[0])==null?void 0:d.href)??((m=o.items[0])==null?void 0:m.value)]);const k=l=>Array.isArray(a.value)?a.value.includes(l.value):l.value===a.value,M=(l,s=!1)=>{if(Array.isArray(a.value)){let t=a.value.slice();if(s){t.length||(t=o.items.map(c=>c.value));const n=t.indexOf(l.value);n===-1?t.push(l.value):t.splice(n,1)}else t.length===1&&t[0]===l.value?t=[]:t=[l.value];!o.canBeEmptyMultiple&&!t.length&&(t=[l.value]),a.value=t;return}a.value=l.value},B=l=>{if(r.value.scrollWidth<=r.value.offsetWidth||l.shiftKey||Math.abs(l.deltaY)<50)return;l.preventDefault();const s=l.deltaY>0?30:-30;r.value.scrollLeft=r.value.scrollLeft+s},v=(l=!0)=>{var p,y;const s=r.value.querySelector(".top-active");if(!s)return;const t=24,n=s.offsetLeft-r.value.offsetLeft-t,c=s.offsetLeft-r.value.offsetLeft+s.clientWidth+t,_=r.value.scrollLeft,L=r.value.clientWidth+r.value.scrollLeft;let i;n<_&&(i=n),c>L&&(i=c-r.value.clientWidth),i!==void 0&&(u.isSafari()?(y=(p=u.Core).$)==null||y.call(p,r.value).animate({scrollLeft:i},l?200:0):r.value.scrollTo({left:i,behavior:l?"smooth":"auto"}))},V=()=>{if(Array.isArray(a.value)){if(a.value.length===o.items.length){a.value=[o.items[0].href??o.items[0].value];return}a.value=o.items.map(l=>l.href??l.value)}};return e.onMounted(()=>v(!1)),e.onUpdated(()=>v(!0)),(l,s)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"el",ref:r,class:e.normalizeClass({"top-menu":!0,["top-style_"+l.styling]:!0}),onWheel:B},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.items,t=>(e.openBlock(),e.createBlock(u._sfc_main,e.mergeProps({ref_for:!0},t,{class:"top-menu_item",color:"theme",onClick:n=>M(t,n.ctrlKey||n.metaKey),isActive:k(t)}),e.createSlots({_:2},[t.content?{name:"default",fn:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.content),1)]),key:"0"}:void 0]),1040,["onClick","isActive"]))),256)),Array.isArray(a.value)&&l.selectAllItem?(e.openBlock(),e.createElementBlock("div",g,[e.createVNode(u._sfc_main,e.mergeProps(l.selectAllItem,{class:"top-menu_item",color:"theme",styling:"",onClick:s[0]||(s[0]=t=>V()),isActive:a.value.length===l.items.length}),e.createSlots({_:2},[l.selectAllItem.content?{name:"default",fn:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(l.selectAllItem.content),1)]),key:"0"}:void 0]),1040,["isActive"])])):e.createCommentVNode("",!0)],34))}});h._sfc_main=A}));
2
+ //# sourceMappingURL=menu.vue_vue_type_style_index_0_lang-DRHk9iBB.amd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu.vue_vue_type_style_index_0_lang-DRHk9iBB.amd.js","sources":["../../src/components/formsExt/menu/menu.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { onMounted, onUpdated, ref } from 'vue';\nimport type { Item, Props } from './types';\nimport Core from '@/core/core/core';\nimport { isSafari } from '@/core/utils/device';\nimport TopButton from '@/components/forms/button/button.vue';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tstyling: 'default',\n});\n\nconst model = defineModel({\n\trequired: true,\n});\n\nconst el = ref();\n\n// валидация типа modelValue без возможности выбора нескольких значений (ожидается строка или число)\nif (!props.isMultiple && typeof (model.value) !== 'string' && typeof (model.value) !== 'number') {\n\tconsole.warn('Type check failed for prop \"modelValue\". Expected String: ' + typeof (model.value));\n}\n\n// валидация типа modelValue с возможностью выбора нескольких значений (ожидается массив)\nif (props.isMultiple && !Array.isArray(model.value)) {\n\tconsole.warn('Type check failed for prop \"modelValue\". Expected Array: ' + typeof (model.value));\n}\n\n/**\n * Для множественного выбора без пустого множества\n *\n * Если ничего не выбрано, присваиваем 1-ое значение\n */\nif (props.isMultiple && !props.canBeEmptyMultiple && Array.isArray(model.value) && !model.value.length && props.items[0]) {\n\tmodel.value = [props.items[0]?.href ?? props.items[0]?.value];\n}\n\nconst itemIsActive = (item: Item) => {\n\tif (!Array.isArray(model.value)) {\n\t\treturn item.value === model.value;\n\t}\n\n\treturn model.value.includes(item.value);\n};\n\n/**\n * Выбрать элемент\n * @param item\n * @param toggle - добавить или исключить элемент, для isMultiple\n */\nconst select = (item: Item, toggle = false) => {\n\tif (Array.isArray(model.value)) {\n\t\tlet modelNew = model.value.slice();\n\n\t\tif (toggle) {\n\t\t\tif (!modelNew.length) modelNew = props.items.map(item => item.value);\n\n\t\t\tconst index = modelNew.indexOf(item.value);\n\t\t\tif (index === -1) {\n\t\t\t\tmodelNew.push(item.value);\n\t\t\t} else {\n\t\t\t\tmodelNew.splice(index, 1);\n\t\t\t}\n\t\t} else {\n\t\t\tif (modelNew.length === 1 && modelNew[0] === item.value) {\n\t\t\t\tmodelNew = [];\n\t\t\t} else {\n\t\t\t\tmodelNew = [item.value];\n\t\t\t}\n\t\t}\n\n\t\tif (!props.canBeEmptyMultiple && !modelNew.length) modelNew = [item.value];\n\n\t\tmodel.value = modelNew;\n\n\t\treturn;\n\t}\n\n\tmodel.value = item.value;\n};\n\n// вертикальный скролл в горизонтальный скролл\nconst onWheel = (event: WheelEvent) => {\n\tif (el.value.scrollWidth <= el.value.offsetWidth) return;\n\tif (event.shiftKey) return;\n\tif (Math.abs(event.deltaY) < 50) return; // устройство с высокой точностью, например тачпад\n\n\tevent.preventDefault();\n\n\tconst delta = event.deltaY > 0 ? 30 : -30;\n\tel.value.scrollLeft = el.value.scrollLeft + delta;\n};\n\n/**\n * Замена стандартному scrollIntoView, который меняет скролл документа\n *\n * Выравнивание по ближнему краю элемента\n *\n * Выравнивается таким образом, чтобы был виден соседний элемент\n */\nconst scrollIntoView = (isSmooth = true) => {\n\tconst elBtn = el.value.querySelector('.top-active');\n\tif (!elBtn) return;\n\n\tconst gap = 24;\n\n\t// левая и правая координаты элемента\n\tconst leftMargin = elBtn.offsetLeft - el.value.offsetLeft - gap;\n\tconst rightMargin = elBtn.offsetLeft - el.value.offsetLeft + elBtn.clientWidth + gap;\n\n\t// левая и правая границы видимой части меню\n\tconst leftMarginParent = el.value.scrollLeft;\n\tconst rightMarginParent = el.value.clientWidth + el.value.scrollLeft;\n\n\tlet scrollLeft: number | undefined = undefined;\n\n\t// левую границу элемента к левой границе меню\n\tif (leftMargin < leftMarginParent) scrollLeft = leftMargin;\n\n\t// правую границу элемента к правой границе меню\n\tif (rightMargin > rightMarginParent) scrollLeft = rightMargin - el.value.clientWidth;\n\n\tif (scrollLeft !== undefined) {\n\t\tif (isSafari()) {\n\t\t\tCore.$?.(el.value).animate({ scrollLeft: scrollLeft }, isSmooth ? 200 : 0);\n\t\t} else {\n\t\t\tel.value.scrollTo({ left: scrollLeft, behavior: isSmooth ? 'smooth' : 'auto' });\n\t\t}\n\t}\n};\n\n/**\n * Выбрать все элементы в меню\n */\nconst selectAll = () => {\n\tif (!Array.isArray(model.value)) return;\n\n\tif (model.value.length === props.items.length) {\n\t\tmodel.value = [props.items[0].href ?? props.items[0].value];\n\t\treturn;\n\t}\n\n\tmodel.value = props.items.map(item => item.href ?? item.value);\n};\n\nonMounted(() => scrollIntoView(false));\nonUpdated(() => scrollIntoView(true));\n\n</script>\n\n<template>\n\t<div\n\t\tref=\"el\"\n\t\t:class=\"{\n\t\t\t'top-menu': true,\n\t\t\t['top-style_' + styling]: true,\n\t\t\t// ['top-unwrap-x']: styling === 'default',\n\t\t}\"\n\t\t@wheel=\"onWheel\"\n\t>\n\t\t<TopButton\n\t\t\tv-for=\"item in items\"\n\t\t\t:=\"item\"\n\t\t\tclass=\"top-menu_item\"\n\t\t\tcolor=\"theme\"\n\t\t\t@click=\"select(item, $event.ctrlKey || $event.metaKey)\"\n\t\t\t:isActive=\"itemIsActive(item)\"\n\t\t>\n\t\t\t<template #default v-if=\"item.content\">\n\t\t\t\t{{ item.content }}\n\t\t\t</template>\n\t\t</TopButton>\n\n\t\t<div\n\t\t\tv-if=\"Array.isArray(model) && selectAllItem\"\n\t\t\tclass=\"top-menu_selectAll\"\n\t\t>\n\t\t\t<TopButton\n\t\t\t\t:=\"selectAllItem\"\n\t\t\t\tclass=\"top-menu_item\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\tstyling=\"\"\n\t\t\t\t@click=\"selectAll()\"\n\t\t\t\t:isActive=\"model.length === items.length\"\n\t\t\t>\n\t\t\t\t<template #default v-if=\"selectAllItem.content\">\n\t\t\t\t\t{{ selectAllItem.content }}\n\t\t\t\t</template>\n\t\t\t</TopButton>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n.top-menu {\n\t--scroll-thumb-color: var(--color-line-1);\n\t--scroll-thumb-color-hover: var(--color-line-2);\n\t--scroll-thumb-color-active: var(--color-line-3);\n\n\tmax-width: 100%;\n\tdisplay: flex;\n\talign-items: flex-start;\n\tgap: var(--top-gap-2);\n\toverflow-x: auto;\n\tscrollbar-width: none; /* firefox */\n\n\t/* предотвратить натинвые события браузера (назад / вперед) */\n\toverscroll-behavior-x: contain;\n}\n\n.top-menu::-webkit-scrollbar { display: none; }\n\n.top-menu .top-menu_item {\n\t--top-button-color: var(--color-text-2);\n\n\toutline-offset: -2px !important;\n\tmin-width: 0;\n\tmax-width: 200px;\n\tmargin: 0;\n\tflex-shrink: 0;\n}\n\n.top-menu .top-menu_item[data-top-icon] {\n\t--top-icon-color: var(--color-text-2);\n}\n\n.top-menu_selectAll {\n\tposition: sticky;\n\tright: 0;\n\tbackground: var(--color-layout-front-1);\n\tborder-left: 1px solid var(--color-line-1);\n\tpadding-left: var(--top-padding-1);\n\tbox-shadow: var(--color-layout-front-1) var(--top-padding-2) 0px;\n}\n\n/* style default */\n.top-menu.top-style_default .top-menu_item {\n\t--top-forms-radius: 0;\n\t--top-forms-border-color: transparent;\n\t--top-forms-border-width: 2px;\n\n\tfilter: none;\n\tbox-shadow: none;\n\tborder: none;\n\tborder-bottom: var(--top-forms-border-width) solid var(--top-forms-border-color);\n\tbackground: none;\n}\n\n.top-style_default > .top-menu_item > [data-top-badge] {\n\tmargin-top: 0;\n}\n\n.top-menu.top-style_default .top-menu_item:hover {\n\t--top-icon-color: var(--color-text-1);\n\t--top-button-color: var(--color-text-1);\n\t--top-forms-border-color: var(--color-line-2);\n}\n\n.top-menu.top-style_default .top-menu_item:active,\n.top-menu.top-style_default .top-menu_item.top-active {\n\t--top-icon-color: var(--color-text-primary);\n\t--top-button-color: var(--color-text-1);\n\t--top-forms-border-color: var(--color-line-primary-1);\n}\n\n.top-menu.top-style_default .top-menu_selectAll {\n\tpadding-left: var(--top-padding-2);\n}\n\n/* style bar */\n.top-menu.top-style_bar {\n\tborder-radius: var(--top-radius-3);\n\tborder: 1px solid var(--color-line-2);\n\tpadding: var(--top-padding-1);\n\tgap: 3px;\n}\n.top-menu.top-style_bar .top-menu_item {\n\t--top-button-background-color-hover: var(--color-layer-1);\n\t--top-button-background-color-active: var(--color-layer-2);\n\t--top-button-background-color-selected: var(--color-layer-primary-1);\n\n\tposition: relative;\n}\n\n.top-menu.top-style_bar .top-menu_item:hover {\n\t--top-icon-color: var(--color-text-1);\n\t--top-button-color: var(--color-text-1);\n}\n\n.top-menu.top-style_bar .top-menu_item.top-active {\n\t--top-icon-color: var(--color-text-primary);\n\t--top-button-color: var(--color-text-primary);\n}\n\n/* разделители кнопок в баре */\n.top-menu.top-style_bar .top-menu_item:not(:first-child):not(.top-active):not(:hover):after {\n\tcontent: \"\";\n\tbackground: var(--color-line-1-opacity);\n\twidth: 1px;\n\theight: 60%;\n\tdisplay: block;\n\tposition: absolute;\n\tleft: -2px;\n}\n.top-menu.top-style_bar .top-menu_item.top-active + .top-menu_item:after,\n.top-menu.top-style_bar .top-menu_item:hover + .top-menu_item:after {\n\tcontent: none !important;\n}\n\n/*\n.top-style_bar > .top-menu_item > [data-top-badge] {\n\tmargin-top: -3px;\n}\n*/\n\n/** TODO: .top-unwrap-x надо вынести глобально в UI или добавить в стили для storybook */\n/*\n.top-menu.top-unwrap-x {\n\tpadding-right: var(--top-unwrap-x);\n\tpadding-left: var(--top-unwrap-x);\n\tmargin-right: calc(0px - var(--top-unwrap-x));\n\tmargin-left: calc(0px - var(--top-unwrap-x));\n}\n*/\n</style>\n"],"names":["el","vue","props","model","itemIsActive","item","index","modelNew","onWheel","event","delta","scrollIntoView","isSmooth","leftMargin","elBtn","gap","rightMargin","leftMarginParent","rightMarginParent","scrollLeft","$event","select","_cache","selectAll"],"mappings":"ygBAeAA,EAAAC,EAAA,IAAA,EAGA,CAAAC,EAAA,YAAA,OAAAC,EAAA,OAAA,UAAA,OAAAA,EAAA,OAAA,oGAKAD,EAAA,YAAA,CAAA,MAAA,QAAAC,EAAA,KAAA,4FASAD,EAAA,YAAA,CAAAA,EAAA,oBAAA,MAAA,QAAAC,EAAA,KAAA,GAAA,CAAAA,EAAA,MAAA,QAAAD,EAAA,MAAA,CAAA,2FAIA,MAAAE,EAAAC,oDAEEA,EAAA,QAAAF,EAAA,2IAmBCG,IAAA,GACCC,EAAA,KAAAF,EAAA,KAAA,EAEAE,EAAA,OAAAD,EAAA,CAAA,CACD,MAEAC,EAAA,SAAA,GAAAA,EAAA,CAAA,IAAAF,EAAA,WAGCE,EAAA,CAAAF,EAAA,KAAA,EAIF,CAAAH,EAAA,oBAAA,CAAAK,EAAA,SAAAA,EAAA,CAAAF,EAAA,KAAA,GAEAF,EAAA,MAAAI,SAKDJ,EAAA,MAAAE,EAAA,KAAmB,EAIpBG,EAAAC,GAAA,IACCT,EAAA,MAAA,aAAAA,EAAA,MAAA,aACAS,EAAA,oFAMAT,EAAA,MAAA,WAAAA,EAAA,MAAA,WAAAU,CAA4C,EAU7CC,EAAA,CAAAC,EAAA,KAAA,8EAOCC,EAAAC,EAAA,WAAAd,EAAA,MAAA,WAAAe,EACAC,EAAAF,EAAA,WAAAd,EAAA,MAAA,WAAAc,EAAA,YAAAC,EAGAE,EAAAjB,EAAA,MAAA,WACAkB,EAAAlB,EAAA,MAAA,YAAAA,EAAA,MAAA,iBAKAa,EAAAI,IAAAE,EAAAN,GAGAG,EAAAE,IAAAC,EAAAH,EAAAhB,EAAA,MAAA,aAEAmB,IAAA,gGAIEnB,EAAA,MAAA,SAAA,CAAA,KAAAmB,EAAA,SAAAP,EAAA,SAAA,MAAA,CAAA,EAEF,mCASA,IAAAT,EAAA,MAAA,SAAAD,EAAA,MAAA,OAAA,4FAK6D,EAG9D,OAAAD,EAAA,UAAA,IAAAU,EAAA,EAAA,CAAA,EACAV,EAAA,UAAA,IAAAU,EAAA,EAAA,CAAA,wIAO2D,CAAA,WAKxD,EAAA,yLAMM,QAAAS,GAAAC,EAAAhB,EAAAe,EAAA,SAAAA,EAAA,OAAA,EAC+C,SAAAhB,EAAAC,CAAA,mDAG1C,GAAAJ,EAAA,QAAA,IAAA,kDACK,CAAA,qPAYP,QAAAqB,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAF,GAAAG,EAAA,2GAIG,GAAAtB,EAAA,QAAA,IAAA,gEACc,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import { Core as w } from "../core/app.js";
2
2
  import { reactive as N, defineComponent as k, ref as T, computed as L, resolveComponent as z, withDirectives as D, createElementBlock as m, openBlock as r, normalizeClass as E, createElementVNode as _, createBlock as C, createCommentVNode as p, mergeProps as j, Teleport as x, Fragment as O, renderList as V, unref as A, normalizeStyle as F } from "vue";
3
- import { C as h } from "./forms-DOGPN_TR.es.js";
3
+ import { C as h } from "./forms-t2AEUjqg.es.js";
4
4
  import { genIntHash as J, nl2br as U } from "../utils/string.js";
5
5
  const I = ["../assets/notice.css"].map((e) => import.meta.resolve(e));
6
6
  w.insertCSSLinkToPage(I, !0);
@@ -172,4 +172,4 @@ export {
172
172
  ne as default,
173
173
  se as show
174
174
  };
175
- //# sourceMappingURL=notice-DE88Oe-t.es.js.map
175
+ //# sourceMappingURL=notice-4bdzRXtl.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"notice-DE88Oe-t.es.js","sources":["../../src/components/core/notice/utils.ts","../../src/components/core/notice/item/item.vue","../../src/components/core/notice/notice.vue"],"sourcesContent":["import { reactive } from 'vue';\nimport type { Props as ItemProps, Props, Style } from '@/components/core/notice/item/types';\nimport Core from '@/core/core/core';\nimport { genIntHash } from '@/core/utils/string';\n\nexport const transitionDuration = 300;\n\nexport type Item = Props & { onClose?: Function };\n\nexport const itemById = reactive(new Map<string, Item>());\n\nconst genItemId = (text: ItemProps['text'], style: ItemProps['style'], options?: Options) => {\n\treturn 'top-notice_' + genIntHash(text + style + JSON.stringify(options));\n};\n\nexport type Options = {\n\ttitle?: ItemProps['title'],\n\tmetaText?: ItemProps['metaText'],\n\tbuttonProps?: ItemProps['buttonProps'],\n\tisSafeHTML?: ItemProps['isSafeHTML'],\n\tselectToClose?: ItemProps['selectToClose'],\n\tonClose?: Function\n}\n\n/**\n * Показать сообщением в стиле push уведомления\n *\n * title будет получен из первой строки text\n *\n * Если в options указан title, он будет взят оттуда\n */\nexport const show = (text: string, style: Style = 'info', options?: Options) => {\n\tlet title = '';\n\n\ttext = String(text);\n\n\tconst id = genItemId(text, style, options);\n\n\tif (options?.title) {\n\t\ttitle = options.title;\n\t} else {\n\t\tconst chunks = text.split('\\n');\n\n\t\tif (chunks.length) {\n\t\t\ttitle = String(chunks.shift());\n\t\t\ttext = chunks.join('\\n');\n\t\t}\n\t}\n\n\tconst itemExists = itemById.get(id);\n\tif (itemExists) {\n\t\thightlight(itemExists);\n\n\t\treturn;\n\t}\n\n\tconst item: Item = {\n\t\tid,\n\t\ttitle,\n\t\ttext,\n\t\tstyle,\n\t\tbuttonProps: options?.buttonProps,\n\t\tmetaText: options?.metaText,\n\t\tisSafeHTML: options?.isSafeHTML,\n\t\tselectToClose: options?.selectToClose,\n\t\tonClose: options?.onClose,\n\t};\n\n\titemById.set(item.id, item);\n\n\tif (itemById.size > 5) {\n\t\tconst [_firstId, firstItem] = [...itemById].at(0) || [];\n\t\tif (firstItem) close(firstItem);\n\t}\n\n\t/**\n\t * Автозакрытие ошибок форм\n\t *\n\t * Добавляет\n\t */\n\tif (Core.state.isMobile) {\n\t\t$('input').one('click', () => close(item));\n\t}\n};\n\nconst hightlight = (item: Item) => {\n\titem.hightlight = true;\n\n\tsetTimeout(() => item.hightlight = false, transitionDuration);\n};\n\nconst close = (item: Item) => {\n\titem.forceClosed = true;\n\n\tsetTimeout(() => {\n\t\titem.onClose?.();\n\n\t\titemById.delete(item.id);\n\t}, transitionDuration);\n};\n\n/**\n * Убрать подозрительный html код\n */\nexport const prepareText = (text: string) => {\n\tconst textNoSafety = 'hacking was detected';\n\n\ttext = text.replace(/<script/g, textNoSafety);\n\ttext = text.replace(/<img/g, textNoSafety);\n\ttext = text.replace(/<iframe/g, textNoSafety);\n\ttext = text.replace(/javascript:/g, textNoSafety);\n\ttext = text.replace(/<[^>]+ (@|on)\\w+=[^>]+>?/g, textNoSafety);\n\n\treturn text;\n};\n","<script setup lang=\"ts\">\nimport { computed, ref, withDefaults } from 'vue';\n\nimport Core from '@/core/core/core';\nimport { nl2br } from '@/core/utils/string';\n\nimport type { Emits, Props } from './types';\nimport { prepareText, transitionDuration } from '@/components/core/notice/utils';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tselectToClose: true,\n});\n\nconst emit = defineEmits<Emits>();\n\n// анимация появления\nconst showed = ref(false);\nsetTimeout(() => showed.value = true, 10);\n\n// анимация закрытия\nconst closed = ref(false);\nconst closedDirection = ref<'top' | 'right' | 'bottom' | 'left'>('right');\n\nconst title = computed(() => {\n\tlet res = props.title.replace(/ {2}/g, '&nbsp;');\n\n\tif (!props.isSafeHTML) res = prepareText(res);\n\n\treturn res;\n});\n\nconst text = computed(() => {\n\tlet res = nl2br(props.text);\n\n\tres = res.replace(/ {2}/g, '&nbsp;');\n\n\tif (!props.isSafeHTML) res = prepareText(res);\n\n\treturn res;\n});\n\nconst close = (direction?: typeof closedDirection.value) => {\n\tclosed.value = true;\n\n\tif (direction) {\n\t\tclosedDirection.value = direction;\n\t}\n\n\tsetTimeout(() => emit('close'), transitionDuration);\n};\n\nconst onClick = (e: MouseEvent) => {\n\tif (!props.selectToClose) return;\n\n\tconst { tagName } = e.target as HTMLElement;\n\n\tif (tagName === 'A') close();\n\tif (tagName === 'BUTTON') close();\n};\n\nconst vSwipe = {\n\tmounted: (el: HTMLElement) => {\n\t\tif (!Core.state.isMobile) return;\n\n\t\tif (!Core.$ || !Core.$.ui['draggable']) return;\n\n\t\tlet direction: typeof closedDirection.value = 'right';\n\n\t\tlet axis = 'x';\n\t\t// if (getOS() === 'iOS') axis = 'y';\n\n\t\tCore.$(el).draggable({\n\t\t\trevert: false,\n\t\t\taxis,\n\t\t\tdrag: (_e, ui) => {\n\t\t\t\tif (axis == 'x') {\n\t\t\t\t\tdirection = ui.position.left > 0 ? 'right' : 'left';\n\t\t\t\t} else {\n\t\t\t\t\tdirection = ui.position.top > 0 ? 'bottom' : 'top';\n\t\t\t\t}\n\t\t\t},\n\t\t\tstop: (_e, _ui) => {\n\t\t\t\tclose(direction);\n\t\t\t},\n\t\t});\n\t},\n};\n\n// const vSwipe = {\n// \tmounted: (el: HTMLElement) => {\n// \t\tconst { distanceX, direction } = usePointerSwipe(el, {\n// \t\t\tdisableTextSelect: true,\n// \t\t\tonSwipe(e: PointerEvent) {\n// \t\t\t\tleft.value = -distanceX.value + 'px';\n// \t\t\t},\n// \t\t\tonSwipeEnd: (_e, direction) => {\n// \t\t\t\tclose(direction);\n// \t\t\t},\n// \t\t});\n// \t},\n// };\n</script>\n\n<template>\n\t<div\n\t\tclass=\"top-notice_item\"\n\t\t:class=\"{\n\t\t\t['top-notice_item-' + style]: true,\n\t\t\t'top-notice_item-hightlight': hightlight,\n\t\t\t'top-notice_item-showed': showed,\n\t\t\t'top-notice_item-closed': closed || forceClosed,\n\t\t\t['top-notice_item-closed_' + closedDirection]: closed,\n\t\t}\"\n\t\t@click=\"onClick\"\n\t\tv-swipe\n\t>\n\t\t<div class=\"top-notice_itemTextWrapper\">\n\t\t\t<div v-if=\"title\" class=\"top-notice_itemTitle\" v-html=\"title\"></div>\n\t\t\t<div v-if=\"text\" class=\"top-notice_itemText\" v-html=\"text\"></div>\n\t\t</div>\n\n\t\t<TopButton\n\t\t\tv-if=\"buttonProps\"\n\t\t\tclass=\"top-notice_itemButton\"\n\t\t\tsize=\"s\"\n\t\t\t:=\"buttonProps\"\n\t\t\t:title=\"buttonProps.title\"\n\t\t\tv-html=\"buttonProps.default\"\n\t\t\t@click=\"close()\"\n\t\t/>\n\n\t\t<div v-if=\"metaText\" class=\"top-notice_itemMetaText\" v-html=\"metaText\"></div>\n\n\t\t<div\n\t\t\tclass=\"top-notice_itemClose\"\n\t\t\tdata-top-icon=\"\"\n\t\t\t:title=\"$i18n.Common.Close\"\n\t\t\t@click=\"() => close()\"\n\t\t></div>\n\t</div>\n</template>\n\n<style>\n@import \"style.css\";\n</style>\n","<!-- performance all in one file component, для Core.notice() -->\n<script lang=\"ts\">\nexport { show } from './utils';\n</script>\n\n<script setup lang=\"ts\">\nimport type { Item } from './utils';\nimport { itemById } from './utils';\n\nimport type { Props } from './types';\nimport TopNoticeItem from './item/item.vue';\n\ndefineProps<Props>();\n\nconst onCloseItem = (item: Item) => {\n\titem.onClose?.();\n\n\titemById.delete(item.id);\n};\n</script>\n\n<template>\n\t<teleport to=\"body\">\n\t\t<div class=\"top-notice\">\n\t\t\t<TopNoticeItem\n\t\t\t\tv-for=\"[_index, item] in itemById\"\n\t\t\t\t:key=\"item.id\"\n\t\t\t\t:id=\"item.id\"\n\t\t\t\t:title=\"item.title\"\n\t\t\t\t:text=\"item.text\"\n\t\t\t\t:style=\"item.style\"\n\t\t\t\t:buttonProps=\"item.buttonProps\"\n\t\t\t\t:metaText=\"item.metaText\"\n\t\t\t\t:isSafeHTML=\"item.isSafeHTML\"\n\t\t\t\t:forceClosed=\"item.forceClosed\"\n\t\t\t\t:hightlight=\"item.hightlight\"\n\t\t\t\t@close=\"onCloseItem(item)\"\n\t\t\t/>\n\t\t</div>\n\t</teleport>\n</template>\n\n<style>\n:root {\n\t--top-notice-top: var(--top-padding-4);\n\t--top-notice-right: var(--top-padding-4);\n}\n\n.top-notice {\n\twidth: 400px;\n\tfont-size: 14px;\n\tposition: fixed; top: var(--top-notice-top); right: var(--top-notice-right);\n\tz-index: 1000010;\n\tdisplay: flex; flex-direction: column-reverse; gap: var(--top-gap-2);\n}\n\n.top-notice ul {\n\tpadding: 0 0 0 var(--top-padding-5);\n}\n\n@media only screen and (max-width: 600px) {\n\t:root {\n\t\t--top-notice-top: var(--top-padding-4);\n\t\t--top-notice-right: var(--top-padding-4);\n\t}\n\n\t.top-notice { width: auto; left: var(--top-notice-right); }\n}\n</style>\n"],"names":["transitionDuration","itemById","reactive","genItemId","text","style","options","genIntHash","show","title","id","chunks","itemExists","hightlight","item","_firstId","firstItem","close","Core","_a","prepareText","textNoSafety","props","__props","emit","__emit","showed","ref","closed","closedDirection","computed","res","nl2br","direction","onClick","e","tagName","vSwipe","el","_e","ui","_ui","onCloseItem"],"mappings":"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"}
1
+ {"version":3,"file":"notice-4bdzRXtl.es.js","sources":["../../src/components/core/notice/utils.ts","../../src/components/core/notice/item/item.vue","../../src/components/core/notice/notice.vue"],"sourcesContent":["import { reactive } from 'vue';\nimport type { Props as ItemProps, Props, Style } from '@/components/core/notice/item/types';\nimport Core from '@/core/core/core';\nimport { genIntHash } from '@/core/utils/string';\n\nexport const transitionDuration = 300;\n\nexport type Item = Props & { onClose?: Function };\n\nexport const itemById = reactive(new Map<string, Item>());\n\nconst genItemId = (text: ItemProps['text'], style: ItemProps['style'], options?: Options) => {\n\treturn 'top-notice_' + genIntHash(text + style + JSON.stringify(options));\n};\n\nexport type Options = {\n\ttitle?: ItemProps['title'],\n\tmetaText?: ItemProps['metaText'],\n\tbuttonProps?: ItemProps['buttonProps'],\n\tisSafeHTML?: ItemProps['isSafeHTML'],\n\tselectToClose?: ItemProps['selectToClose'],\n\tonClose?: Function\n}\n\n/**\n * Показать сообщением в стиле push уведомления\n *\n * title будет получен из первой строки text\n *\n * Если в options указан title, он будет взят оттуда\n */\nexport const show = (text: string, style: Style = 'info', options?: Options) => {\n\tlet title = '';\n\n\ttext = String(text);\n\n\tconst id = genItemId(text, style, options);\n\n\tif (options?.title) {\n\t\ttitle = options.title;\n\t} else {\n\t\tconst chunks = text.split('\\n');\n\n\t\tif (chunks.length) {\n\t\t\ttitle = String(chunks.shift());\n\t\t\ttext = chunks.join('\\n');\n\t\t}\n\t}\n\n\tconst itemExists = itemById.get(id);\n\tif (itemExists) {\n\t\thightlight(itemExists);\n\n\t\treturn;\n\t}\n\n\tconst item: Item = {\n\t\tid,\n\t\ttitle,\n\t\ttext,\n\t\tstyle,\n\t\tbuttonProps: options?.buttonProps,\n\t\tmetaText: options?.metaText,\n\t\tisSafeHTML: options?.isSafeHTML,\n\t\tselectToClose: options?.selectToClose,\n\t\tonClose: options?.onClose,\n\t};\n\n\titemById.set(item.id, item);\n\n\tif (itemById.size > 5) {\n\t\tconst [_firstId, firstItem] = [...itemById].at(0) || [];\n\t\tif (firstItem) close(firstItem);\n\t}\n\n\t/**\n\t * Автозакрытие ошибок форм\n\t *\n\t * Добавляет\n\t */\n\tif (Core.state.isMobile) {\n\t\t$('input').one('click', () => close(item));\n\t}\n};\n\nconst hightlight = (item: Item) => {\n\titem.hightlight = true;\n\n\tsetTimeout(() => item.hightlight = false, transitionDuration);\n};\n\nconst close = (item: Item) => {\n\titem.forceClosed = true;\n\n\tsetTimeout(() => {\n\t\titem.onClose?.();\n\n\t\titemById.delete(item.id);\n\t}, transitionDuration);\n};\n\n/**\n * Убрать подозрительный html код\n */\nexport const prepareText = (text: string) => {\n\tconst textNoSafety = 'hacking was detected';\n\n\ttext = text.replace(/<script/g, textNoSafety);\n\ttext = text.replace(/<img/g, textNoSafety);\n\ttext = text.replace(/<iframe/g, textNoSafety);\n\ttext = text.replace(/javascript:/g, textNoSafety);\n\ttext = text.replace(/<[^>]+ (@|on)\\w+=[^>]+>?/g, textNoSafety);\n\n\treturn text;\n};\n","<script setup lang=\"ts\">\nimport { computed, ref, withDefaults } from 'vue';\n\nimport Core from '@/core/core/core';\nimport { nl2br } from '@/core/utils/string';\n\nimport type { Emits, Props } from './types';\nimport { prepareText, transitionDuration } from '@/components/core/notice/utils';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tselectToClose: true,\n});\n\nconst emit = defineEmits<Emits>();\n\n// анимация появления\nconst showed = ref(false);\nsetTimeout(() => showed.value = true, 10);\n\n// анимация закрытия\nconst closed = ref(false);\nconst closedDirection = ref<'top' | 'right' | 'bottom' | 'left'>('right');\n\nconst title = computed(() => {\n\tlet res = props.title.replace(/ {2}/g, '&nbsp;');\n\n\tif (!props.isSafeHTML) res = prepareText(res);\n\n\treturn res;\n});\n\nconst text = computed(() => {\n\tlet res = nl2br(props.text);\n\n\tres = res.replace(/ {2}/g, '&nbsp;');\n\n\tif (!props.isSafeHTML) res = prepareText(res);\n\n\treturn res;\n});\n\nconst close = (direction?: typeof closedDirection.value) => {\n\tclosed.value = true;\n\n\tif (direction) {\n\t\tclosedDirection.value = direction;\n\t}\n\n\tsetTimeout(() => emit('close'), transitionDuration);\n};\n\nconst onClick = (e: MouseEvent) => {\n\tif (!props.selectToClose) return;\n\n\tconst { tagName } = e.target as HTMLElement;\n\n\tif (tagName === 'A') close();\n\tif (tagName === 'BUTTON') close();\n};\n\nconst vSwipe = {\n\tmounted: (el: HTMLElement) => {\n\t\tif (!Core.state.isMobile) return;\n\n\t\tif (!Core.$ || !Core.$.ui['draggable']) return;\n\n\t\tlet direction: typeof closedDirection.value = 'right';\n\n\t\tlet axis = 'x';\n\t\t// if (getOS() === 'iOS') axis = 'y';\n\n\t\tCore.$(el).draggable({\n\t\t\trevert: false,\n\t\t\taxis,\n\t\t\tdrag: (_e, ui) => {\n\t\t\t\tif (axis == 'x') {\n\t\t\t\t\tdirection = ui.position.left > 0 ? 'right' : 'left';\n\t\t\t\t} else {\n\t\t\t\t\tdirection = ui.position.top > 0 ? 'bottom' : 'top';\n\t\t\t\t}\n\t\t\t},\n\t\t\tstop: (_e, _ui) => {\n\t\t\t\tclose(direction);\n\t\t\t},\n\t\t});\n\t},\n};\n\n// const vSwipe = {\n// \tmounted: (el: HTMLElement) => {\n// \t\tconst { distanceX, direction } = usePointerSwipe(el, {\n// \t\t\tdisableTextSelect: true,\n// \t\t\tonSwipe(e: PointerEvent) {\n// \t\t\t\tleft.value = -distanceX.value + 'px';\n// \t\t\t},\n// \t\t\tonSwipeEnd: (_e, direction) => {\n// \t\t\t\tclose(direction);\n// \t\t\t},\n// \t\t});\n// \t},\n// };\n</script>\n\n<template>\n\t<div\n\t\tclass=\"top-notice_item\"\n\t\t:class=\"{\n\t\t\t['top-notice_item-' + style]: true,\n\t\t\t'top-notice_item-hightlight': hightlight,\n\t\t\t'top-notice_item-showed': showed,\n\t\t\t'top-notice_item-closed': closed || forceClosed,\n\t\t\t['top-notice_item-closed_' + closedDirection]: closed,\n\t\t}\"\n\t\t@click=\"onClick\"\n\t\tv-swipe\n\t>\n\t\t<div class=\"top-notice_itemTextWrapper\">\n\t\t\t<div v-if=\"title\" class=\"top-notice_itemTitle\" v-html=\"title\"></div>\n\t\t\t<div v-if=\"text\" class=\"top-notice_itemText\" v-html=\"text\"></div>\n\t\t</div>\n\n\t\t<TopButton\n\t\t\tv-if=\"buttonProps\"\n\t\t\tclass=\"top-notice_itemButton\"\n\t\t\tsize=\"s\"\n\t\t\t:=\"buttonProps\"\n\t\t\t:title=\"buttonProps.title\"\n\t\t\tv-html=\"buttonProps.default\"\n\t\t\t@click=\"close()\"\n\t\t/>\n\n\t\t<div v-if=\"metaText\" class=\"top-notice_itemMetaText\" v-html=\"metaText\"></div>\n\n\t\t<div\n\t\t\tclass=\"top-notice_itemClose\"\n\t\t\tdata-top-icon=\"\"\n\t\t\t:title=\"$i18n.Common.Close\"\n\t\t\t@click=\"() => close()\"\n\t\t></div>\n\t</div>\n</template>\n\n<style>\n@import \"style.css\";\n</style>\n","<!-- performance all in one file component, для Core.notice() -->\n<script lang=\"ts\">\nexport { show } from './utils';\n</script>\n\n<script setup lang=\"ts\">\nimport type { Item } from './utils';\nimport { itemById } from './utils';\n\nimport type { Props } from './types';\nimport TopNoticeItem from './item/item.vue';\n\ndefineProps<Props>();\n\nconst onCloseItem = (item: Item) => {\n\titem.onClose?.();\n\n\titemById.delete(item.id);\n};\n</script>\n\n<template>\n\t<teleport to=\"body\">\n\t\t<div class=\"top-notice\">\n\t\t\t<TopNoticeItem\n\t\t\t\tv-for=\"[_index, item] in itemById\"\n\t\t\t\t:key=\"item.id\"\n\t\t\t\t:id=\"item.id\"\n\t\t\t\t:title=\"item.title\"\n\t\t\t\t:text=\"item.text\"\n\t\t\t\t:style=\"item.style\"\n\t\t\t\t:buttonProps=\"item.buttonProps\"\n\t\t\t\t:metaText=\"item.metaText\"\n\t\t\t\t:isSafeHTML=\"item.isSafeHTML\"\n\t\t\t\t:forceClosed=\"item.forceClosed\"\n\t\t\t\t:hightlight=\"item.hightlight\"\n\t\t\t\t@close=\"onCloseItem(item)\"\n\t\t\t/>\n\t\t</div>\n\t</teleport>\n</template>\n\n<style>\n:root {\n\t--top-notice-top: var(--top-padding-4);\n\t--top-notice-right: var(--top-padding-4);\n}\n\n.top-notice {\n\twidth: 400px;\n\tfont-size: 14px;\n\tposition: fixed; top: var(--top-notice-top); right: var(--top-notice-right);\n\tz-index: 1000010;\n\tdisplay: flex; flex-direction: column-reverse; gap: var(--top-gap-2);\n}\n\n.top-notice ul {\n\tpadding: 0 0 0 var(--top-padding-5);\n}\n\n@media only screen and (max-width: 600px) {\n\t:root {\n\t\t--top-notice-top: var(--top-padding-4);\n\t\t--top-notice-right: var(--top-padding-4);\n\t}\n\n\t.top-notice { width: auto; left: var(--top-notice-right); }\n}\n</style>\n"],"names":["transitionDuration","itemById","reactive","genItemId","text","style","options","genIntHash","show","title","id","chunks","itemExists","hightlight","item","_firstId","firstItem","close","Core","_a","prepareText","textNoSafety","props","__props","emit","__emit","showed","ref","closed","closedDirection","computed","res","nl2br","direction","onClick","e","tagName","vSwipe","el","_e","ui","_ui","normalizeClass","_ctx","forceClosed","openBlock","createElementBlock","_hoisted_2","createCommentVNode","_hoisted_3","_cache","$event","metaText","_hoisted_5","onCloseItem","createElementVNode","_hoisted_1","Fragment","renderList","unref","_index","normalizeStyle"],"mappings":"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"}