@topvisor/ui 1.2.0 → 1.3.1-dev.2

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 (1019) hide show
  1. package/.chunks/core-DkD6AE7J.amd.js +2 -0
  2. package/.chunks/core-DkD6AE7J.amd.js.map +1 -0
  3. package/.chunks/core-ZuvfeeJ3.es.js +197 -0
  4. package/.chunks/core-ZuvfeeJ3.es.js.map +1 -0
  5. package/.chunks/datepicker-CxWa68gc.es.js +44 -0
  6. package/.chunks/datepicker-CxWa68gc.es.js.map +1 -0
  7. package/.chunks/datepicker-DeYFg9AM.amd.js +2 -0
  8. package/.chunks/datepicker-DeYFg9AM.amd.js.map +1 -0
  9. package/.chunks/dialog_selectorRegions-D1ord0Ik.es.js +188 -0
  10. package/.chunks/dialog_selectorRegions-D1ord0Ik.es.js.map +1 -0
  11. package/.chunks/dialog_selectorRegions-vQD6LBdY.amd.js +2 -0
  12. package/.chunks/dialog_selectorRegions-vQD6LBdY.amd.js.map +1 -0
  13. package/.chunks/dialogs.vue_vue_type_script_setup_true_lang-BMDSZwZJ.es.js +322 -0
  14. package/.chunks/dialogs.vue_vue_type_script_setup_true_lang-BMDSZwZJ.es.js.map +1 -0
  15. package/.chunks/dialogs.vue_vue_type_script_setup_true_lang-DDR6uqak.amd.js +2 -0
  16. package/.chunks/dialogs.vue_vue_type_script_setup_true_lang-DDR6uqak.amd.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-CRHjU2Mj.es.js +2045 -0
  22. package/.chunks/forms-CRHjU2Mj.es.js.map +1 -0
  23. package/.chunks/forms-D4uFd45i.amd.js +3 -0
  24. package/.chunks/forms-D4uFd45i.amd.js.map +1 -0
  25. package/.chunks/index-BEI7XZmU.amd.js +2 -0
  26. package/.chunks/index-BEI7XZmU.amd.js.map +1 -0
  27. package/.chunks/index-igPkes8X.es.js +48 -0
  28. package/.chunks/index-igPkes8X.es.js.map +1 -0
  29. package/.chunks/lazy-40pjr8cZ.es.js +71 -0
  30. package/.chunks/lazy-40pjr8cZ.es.js.map +1 -0
  31. package/.chunks/lazy-DSFLxvj4.amd.js +2 -0
  32. package/.chunks/lazy-DSFLxvj4.amd.js.map +1 -0
  33. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-B2Q4gqK6.amd.js +2 -0
  34. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-B2Q4gqK6.amd.js.map +1 -0
  35. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-DFWY29DS.es.js +184 -0
  36. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-DFWY29DS.es.js.map +1 -0
  37. package/.chunks/menu.vue_vue_type_style_index_0_lang-Bm9sY3Ux.es.js +110 -0
  38. package/.chunks/menu.vue_vue_type_style_index_0_lang-Bm9sY3Ux.es.js.map +1 -0
  39. package/.chunks/menu.vue_vue_type_style_index_0_lang-bMtkdrEt.amd.js +2 -0
  40. package/.chunks/menu.vue_vue_type_style_index_0_lang-bMtkdrEt.amd.js.map +1 -0
  41. package/.chunks/notice-7-xEtFXT.amd.js +4 -0
  42. package/.chunks/notice-7-xEtFXT.amd.js.map +1 -0
  43. package/.chunks/notice-pFWJHCd7.es.js +180 -0
  44. package/.chunks/notice-pFWJHCd7.es.js.map +1 -0
  45. package/.chunks/page.vue_vue_type_script_setup_true_lang-DzuM-_u7.amd.js +2 -0
  46. package/.chunks/page.vue_vue_type_script_setup_true_lang-DzuM-_u7.amd.js.map +1 -0
  47. package/.chunks/page.vue_vue_type_script_setup_true_lang-o3lCjjxW.es.js +143 -0
  48. package/.chunks/page.vue_vue_type_script_setup_true_lang-o3lCjjxW.es.js.map +1 -0
  49. package/.chunks/popup-C05LLKni.amd.js +2 -0
  50. package/.chunks/popup-C05LLKni.amd.js.map +1 -0
  51. package/.chunks/popup-Dr3j_FOV.es.js +459 -0
  52. package/.chunks/popup-Dr3j_FOV.es.js.map +1 -0
  53. package/.chunks/punycode.es6-CNOnFR2-.amd.js +2 -0
  54. package/.chunks/punycode.es6-CNOnFR2-.amd.js.map +1 -0
  55. package/.chunks/punycode.es6-CgGegfA_.es.js +134 -0
  56. package/.chunks/punycode.es6-CgGegfA_.es.js.map +1 -0
  57. package/.chunks/store-CX_6ZXhO.es.js +29 -0
  58. package/.chunks/store-CX_6ZXhO.es.js.map +1 -0
  59. package/.chunks/store-YRW59xEF.amd.js +2 -0
  60. package/.chunks/store-YRW59xEF.amd.js.map +1 -0
  61. package/.chunks/utils-BgEQlXpF.amd.js +2 -0
  62. package/.chunks/utils-BgEQlXpF.amd.js.map +1 -0
  63. package/.chunks/utils-Bsv1-1_h.es.js +79 -0
  64. package/.chunks/utils-Bsv1-1_h.es.js.map +1 -0
  65. package/.chunks/utils-DQvj_C9w.amd.js +2 -0
  66. package/.chunks/utils-DQvj_C9w.amd.js.map +1 -0
  67. package/.chunks/utils-sKjgHYod.es.js +302 -0
  68. package/.chunks/utils-sKjgHYod.es.js.map +1 -0
  69. package/.chunks/widgetInput.vue_vue_type_script_setup_true_lang-5LVABONB.es.js +39 -0
  70. package/.chunks/widgetInput.vue_vue_type_script_setup_true_lang-5LVABONB.es.js.map +1 -0
  71. package/.chunks/widgetInput.vue_vue_type_script_setup_true_lang-B7zzY9Mx.amd.js +2 -0
  72. package/.chunks/widgetInput.vue_vue_type_script_setup_true_lang-B7zzY9Mx.amd.js.map +1 -0
  73. package/.chunks/widgetInput.vue_vue_type_style_index_0_lang-Cce9ZdtW.amd.js +2 -0
  74. package/.chunks/widgetInput.vue_vue_type_style_index_0_lang-Cce9ZdtW.amd.js.map +1 -0
  75. package/README.md +82 -33
  76. package/api/additional.amd.js +2 -0
  77. package/api/additional.amd.js.map +1 -0
  78. package/api/additional.d.ts +2 -0
  79. package/api/additional.js +66 -0
  80. package/api/additional.js.map +1 -0
  81. package/api/index.amd.js +2 -0
  82. package/api/index.amd.js.map +1 -0
  83. package/api/index.d.ts +2 -0
  84. package/api/index.js +280 -0
  85. package/api/index.js.map +1 -0
  86. package/assets/charts.css +1 -0
  87. package/assets/core.css +1 -0
  88. package/assets/dialog_selectorRegions.css +1 -0
  89. package/assets/extra.css +1 -0
  90. package/assets/forms.css +1 -0
  91. package/assets/formsExt.css +1 -0
  92. package/assets/layout.css +1 -0
  93. package/assets/listItem.css +1 -0
  94. package/assets/menu.css +1 -0
  95. package/assets/notice.css +1 -0
  96. package/assets/project.css +1 -0
  97. package/assets/tabs.css +1 -0
  98. package/assets/tabsView.css +1 -0
  99. package/assets/themes/dark-th.css +1 -0
  100. package/assets/themes/dark.css +1 -0
  101. package/assets/themes/light.css +1 -0
  102. package/assets/widgetInput.css +1 -0
  103. package/charts/charts.amd.js +2 -0
  104. package/charts/charts.amd.js.map +1 -0
  105. package/charts/charts.d.ts +2 -0
  106. package/charts/charts.js +178 -0
  107. package/charts/charts.js.map +1 -0
  108. package/core/app.amd.js +2 -0
  109. package/core/app.amd.js.map +1 -0
  110. package/core/app.d.ts +2 -0
  111. package/core/app.js +216 -0
  112. package/core/app.js.map +1 -0
  113. package/dialog/dialog.amd.js +2 -0
  114. package/dialog/dialog.amd.js.map +1 -0
  115. package/dialog/dialog.d.ts +2 -0
  116. package/dialog/dialog.js +60 -0
  117. package/dialog/dialog.js.map +1 -0
  118. package/extra/extra.amd.js +2 -0
  119. package/extra/extra.amd.js.map +1 -0
  120. package/extra/extra.d.ts +2 -0
  121. package/extra/extra.js +72 -0
  122. package/extra/extra.js.map +1 -0
  123. package/forms/forms.amd.js +2 -0
  124. package/forms/forms.amd.js.map +1 -0
  125. package/forms/forms.d.ts +2 -0
  126. package/forms/forms.js +19 -0
  127. package/forms/forms.js.map +1 -0
  128. package/forms/helpers.amd.js +2 -0
  129. package/forms/helpers.amd.js.map +1 -0
  130. package/forms/helpers.d.ts +1 -0
  131. package/forms/helpers.js +2 -0
  132. package/forms/helpers.js.map +1 -0
  133. package/formsExt/formsExt.amd.js +2 -0
  134. package/formsExt/formsExt.amd.js.map +1 -0
  135. package/formsExt/formsExt.d.ts +2 -0
  136. package/formsExt/formsExt.js +697 -0
  137. package/formsExt/formsExt.js.map +1 -0
  138. package/icomoon/Read Me.txt +7 -0
  139. package/icomoon/demo-files/demo.css +158 -0
  140. package/icomoon/demo-files/demo.js +30 -0
  141. package/icomoon/demo.css +158 -0
  142. package/icomoon/demo.html +3782 -0
  143. package/icomoon/demo.js +30 -0
  144. package/icomoon/fonts/Topvisor-2.eot +0 -0
  145. package/icomoon/fonts/Topvisor-2.svg +293 -0
  146. package/icomoon/fonts/Topvisor-2.ttf +0 -0
  147. package/icomoon/fonts/Topvisor-2.woff +0 -0
  148. package/icomoon/selection.json +1 -0
  149. package/icomoon/style.css +828 -0
  150. package/jquery-ui.min.css +6 -0
  151. package/layout/layout.amd.js +2 -0
  152. package/layout/layout.amd.js.map +1 -0
  153. package/layout/layout.d.ts +2 -0
  154. package/layout/layout.js +62 -0
  155. package/layout/layout.js.map +1 -0
  156. package/package.json +36 -88
  157. package/popup/popup.amd.js +2 -0
  158. package/popup/popup.amd.js.map +1 -0
  159. package/popup/popup.d.ts +2 -0
  160. package/popup/popup.js +228 -0
  161. package/popup/popup.js.map +1 -0
  162. package/popup/worker.amd.js +2 -0
  163. package/popup/worker.amd.js.map +1 -0
  164. package/popup/worker.d.ts +2 -0
  165. package/popup/worker.js +138 -0
  166. package/popup/worker.js.map +1 -0
  167. package/project/project.amd.js +2 -0
  168. package/project/project.amd.js.map +1 -0
  169. package/project/project.d.ts +2 -0
  170. package/project/project.js +986 -0
  171. package/project/project.js.map +1 -0
  172. package/require/css.amd.js +12 -0
  173. package/src/api/api/additional.d.ts +1 -0
  174. package/src/api/api/client/client.d.ts +55 -0
  175. package/src/api/api/client/request-options.d.ts +1 -0
  176. package/src/api/api/client/request.d.ts +2 -0
  177. package/src/api/api/index.d.ts +12 -0
  178. package/src/api/api/mocker/index.d.ts +9 -0
  179. package/src/api/api/tests/types.test-d.d.ts +1 -0
  180. package/src/api/api/types/api.d.ts +144 -0
  181. package/src/api/api/types/client/client.d.ts +8 -0
  182. package/src/api/api/types/client/middleware.d.ts +65 -0
  183. package/src/api/api/types/client/options.d.ts +60 -0
  184. package/src/api/api/types/client/request-context.d.ts +35 -0
  185. package/src/api/api/types/client/request-options.d.ts +73 -0
  186. package/src/api/api/types/client/request.d.ts +91 -0
  187. package/src/api/api/types/ext.d.ts +51 -0
  188. package/src/api/api/types/field.d.ts +33 -0
  189. package/src/api/api/types/index.d.ts +13 -0
  190. package/src/api/api/types/mocker.d.ts +106 -0
  191. package/src/api/api/types/schema.d.ts +50 -0
  192. package/src/api/api/types/tv.d.ts +59 -0
  193. package/src/api/api/types/utils.d.ts +51 -0
  194. package/src/api/api/utils/common.d.ts +16 -0
  195. package/src/api/api/utils/field.d.ts +8 -0
  196. package/src/api/api/utils/filters.d.ts +48 -0
  197. package/src/api/api/utils/lazy.d.ts +26 -0
  198. package/src/components/charts/charts.d.ts +2 -0
  199. package/src/components/charts/miniChart/miniChart.vue.d.ts +15 -0
  200. package/src/components/charts/miniChart/types.d.ts +92 -0
  201. package/src/components/charts/miniChart/utils/consts.d.ts +8 -0
  202. package/src/components/charts/miniCharts/miniCharts.d.ts +20 -0
  203. package/src/components/charts/miniCharts/miniCharts.vue.d.ts +32 -0
  204. package/src/components/core/notice/item/item.vue.d.ts +10 -0
  205. package/src/components/core/notice/item/types.d.ts +63 -0
  206. package/src/components/core/notice/notice.vue.d.ts +5 -0
  207. package/src/components/core/notice/types.d.ts +1 -0
  208. package/src/components/core/notice/utils.d.ts +27 -0
  209. package/src/components/dialog/dialog/composables/asyncDialogHandle.d.ts +51 -0
  210. package/src/components/dialog/dialog/composables/dialogHandle.d.ts +108 -0
  211. package/src/components/dialog/dialog/composables/types.d.ts +11 -0
  212. package/src/components/dialog/dialog/composables/utils.d.ts +21 -0
  213. package/src/components/dialog/dialog/dialog.vue.d.ts +28 -0
  214. package/src/components/dialog/dialog/dialogs/dialogs.vue.d.ts +13 -0
  215. package/src/components/dialog/dialog/page/page.vue.d.ts +19 -0
  216. package/src/components/dialog/dialog/page/types.d.ts +72 -0
  217. package/src/components/dialog/dialog/pageComponent/pageComponent.vue.d.ts +6 -0
  218. package/src/components/dialog/dialog/pageComponent/types.d.ts +18 -0
  219. package/src/components/dialog/dialog/stories/dialog_example/pages/utils.d.ts +7 -0
  220. package/src/components/dialog/dialog/types.d.ts +58 -0
  221. package/src/components/dialog/dialog.d.ts +6 -0
  222. package/src/components/dialog/lib/types.d.ts +44 -0
  223. package/src/components/dialog/lib/utils.d.ts +14 -0
  224. package/src/components/dialog/lib/utils.globalEvents.d.ts +8 -0
  225. package/src/components/dialog/lib/worker.d.ts +76 -0
  226. package/src/components/extra/extra.d.ts +1 -0
  227. package/src/components/extra/rive/rive.vue.d.ts +11 -0
  228. package/src/components/extra/rive/types.d.ts +7 -0
  229. package/src/components/forms/avatar/avatar.vue.d.ts +10 -0
  230. package/src/components/forms/avatar/types.d.ts +32 -0
  231. package/src/components/forms/button/button.vue.d.ts +21 -0
  232. package/src/components/forms/button/types.d.ts +49 -0
  233. package/src/components/forms/caption/caption.vue.d.ts +17 -0
  234. package/src/components/forms/caption/types.d.ts +9 -0
  235. package/src/components/forms/checkbox/checkbox.vue.d.ts +27 -0
  236. package/src/components/forms/checkbox/types.d.ts +21 -0
  237. package/src/components/forms/controlLabel/controlLabel.vue.d.ts +19 -0
  238. package/src/components/forms/controlLabel/types.d.ts +4 -0
  239. package/src/components/forms/forms.d.ts +15 -0
  240. package/src/components/forms/helpers.d.ts +1 -0
  241. package/src/components/forms/hint/hint.vue.d.ts +4 -0
  242. package/src/components/forms/hint/types.d.ts +8 -0
  243. package/src/components/forms/input/input.vue.d.ts +27 -0
  244. package/src/components/forms/input/types.d.ts +23 -0
  245. package/src/components/forms/inputDate/datepicker.d.ts +5 -0
  246. package/src/components/forms/inputDate/inputDate.vue.d.ts +12 -0
  247. package/src/components/forms/inputDate/types.d.ts +1 -0
  248. package/src/components/forms/inputRange/inputRange.vue.d.ts +19 -0
  249. package/src/components/forms/inputRange/types.d.ts +2 -0
  250. package/src/components/forms/loadbar/loadbar.vue.d.ts +3 -0
  251. package/src/components/forms/preloader/preloader.vue.d.ts +4 -0
  252. package/src/components/forms/preloader/types.d.ts +3 -0
  253. package/src/components/forms/radio/radio.vue.d.ts +23 -0
  254. package/src/components/forms/radio/types.d.ts +14 -0
  255. package/src/components/forms/select/select.vue.d.ts +17 -0
  256. package/src/components/forms/select/types.d.ts +58 -0
  257. package/src/components/forms/switcher/switcher.vue.d.ts +23 -0
  258. package/src/components/forms/switcher/types.d.ts +21 -0
  259. package/src/components/forms/textarea/textarea.vue.d.ts +12 -0
  260. package/src/components/forms/textarea/types.d.ts +44 -0
  261. package/src/components/formsExt/checkboxGroup/checkboxGroup.vue.d.ts +16 -0
  262. package/src/components/formsExt/checkboxGroup/types.d.ts +19 -0
  263. package/src/components/formsExt/editArea/editArea.vue.d.ts +18 -0
  264. package/src/components/formsExt/editArea/types.d.ts +33 -0
  265. package/src/components/formsExt/editInput/editInput.vue.d.ts +8 -0
  266. package/src/components/formsExt/editInput/types.d.ts +16 -0
  267. package/src/components/formsExt/formsExt.d.ts +8 -0
  268. package/src/components/formsExt/info/info.vue.d.ts +20 -0
  269. package/src/components/formsExt/info/types.d.ts +21 -0
  270. package/src/components/formsExt/menu/menu.vue.d.ts +16 -0
  271. package/src/components/formsExt/menu/types.d.ts +37 -0
  272. package/src/components/formsExt/policy/policy.vue.d.ts +8 -0
  273. package/src/components/formsExt/policy/types.d.ts +20 -0
  274. package/src/components/formsExt/radioGroup/radioGroup.vue.d.ts +16 -0
  275. package/src/components/formsExt/radioGroup/types.d.ts +21 -0
  276. package/src/components/formsExt/selector2/composables/useAPI.d.ts +18 -0
  277. package/src/components/formsExt/selector2/composables/useMenu.d.ts +16 -0
  278. package/src/components/formsExt/selector2/itemMulti.vue.d.ts +8 -0
  279. package/src/components/formsExt/selector2/selector2.vue.d.ts +43 -0
  280. package/src/components/formsExt/selector2/types.d.ts +162 -0
  281. package/src/components/formsExt/selector2/utils.d.ts +6 -0
  282. package/src/components/layout/islandRows/islandRows.vue.d.ts +17 -0
  283. package/src/components/layout/islandRows/islandRowsRow/islandRowsRow.vue.d.ts +18 -0
  284. package/src/components/layout/islandRows/islandRowsRow/types.d.ts +2 -0
  285. package/src/components/layout/islandRows/islandRowsSubTitle/islandRowsSubTitle.vue.d.ts +18 -0
  286. package/src/components/layout/islandRows/types.d.ts +10 -0
  287. package/src/components/layout/layout.d.ts +4 -0
  288. package/src/components/layout/rows/rows.vue.d.ts +21 -0
  289. package/src/components/layout/rows/types.d.ts +6 -0
  290. package/src/components/popup/alert/alert.vue.d.ts +25 -0
  291. package/src/components/popup/alert/types.d.ts +8 -0
  292. package/src/components/popup/confirm/confirm.vue.d.ts +26 -0
  293. package/src/components/popup/confirm/types.d.ts +21 -0
  294. package/src/components/popup/lib/popup.d.ts +87 -0
  295. package/src/components/popup/lib/popup.globalEvents.d.ts +32 -0
  296. package/src/components/popup/lib/worker.d.ts +77 -0
  297. package/src/components/popup/lib/worker.globalEvents.d.ts +19 -0
  298. package/src/components/popup/popup/listItem.vue.d.ts +22 -0
  299. package/src/components/popup/popup/opener.vue.d.ts +17 -0
  300. package/src/components/popup/popup/popup.vue.d.ts +38 -0
  301. package/src/components/popup/popup/types.d.ts +110 -0
  302. package/src/components/popup/popup/widgetInput.vue.d.ts +17 -0
  303. package/src/components/popup/popup.d.ts +7 -0
  304. package/src/components/popup/prompt/prompt.vue.d.ts +26 -0
  305. package/src/components/popup/prompt/types.d.ts +21 -0
  306. package/src/components/popup/worker.d.ts +1 -0
  307. package/src/components/project/project.d.ts +9 -0
  308. package/src/components/project/selectorCompetitors/composables.d.ts +3 -0
  309. package/src/components/project/selectorCompetitors/selectorCompetitors.vue.d.ts +14 -0
  310. package/src/components/project/selectorCompetitors/types.d.ts +30 -0
  311. package/src/components/project/selectorRegion/composables/compare.d.ts +12 -0
  312. package/src/components/project/selectorRegion/composables/selectRegion.d.ts +13 -0
  313. package/src/components/project/selectorRegion/composables/selectSearcher.d.ts +13 -0
  314. package/src/components/project/selectorRegion/composables/selectorRegion.d.ts +25 -0
  315. package/src/components/project/selectorRegion/dialog_selectorRegions/dialog_selectorRegions.vue.d.ts +6 -0
  316. package/src/components/project/selectorRegion/dialog_selectorRegions/types.d.ts +26 -0
  317. package/src/components/project/selectorRegion/selectorRegion.vue.d.ts +23 -0
  318. package/src/components/project/selectorRegion/types.d.ts +172 -0
  319. package/src/components/project/selectorRegion/utils/consts.d.ts +31 -0
  320. package/src/components/project/selectorRegion/utils/utils.d.ts +34 -0
  321. package/src/components/project/tagSelector/popupListItem/tagPopupListItem.vue.d.ts +20 -0
  322. package/src/components/project/tagSelector/popupListItem/types.d.ts +33 -0
  323. package/src/components/project/tagSelector/popupOpener/popupOpener.vue.d.ts +27 -0
  324. package/src/components/project/tagSelector/popupOpener/types.d.ts +64 -0
  325. package/src/components/project/tagSelector/tagIcon/tagIcon.vue.d.ts +4 -0
  326. package/src/components/project/tagSelector/tagIcon/types.d.ts +21 -0
  327. package/src/components/project/tagSelector/tagSelector.vue.d.ts +37 -0
  328. package/src/components/project/tagSelector/tagsDefaults.d.ts +3 -0
  329. package/src/components/project/tagSelector/types.d.ts +140 -0
  330. package/src/components/project/tagSelector/utils/el.d.ts +19 -0
  331. package/src/components/project/tagSelector/utils/utils.d.ts +14 -0
  332. package/src/components/tabs/tabs/content.vue.d.ts +19 -0
  333. package/src/components/tabs/tabs/tab.vue.d.ts +19 -0
  334. package/src/components/tabs/tabs/tabs.vue.d.ts +21 -0
  335. package/src/components/tabs/tabs/types.d.ts +19 -0
  336. package/src/components/tabs/tabs.d.ts +3 -0
  337. package/src/components/tabsView/tabsView/menu.vue.d.ts +32 -0
  338. package/src/components/tabsView/tabsView/menuDelimeter.vue.d.ts +3 -0
  339. package/src/components/tabsView/tabsView/menuItem.vue.d.ts +23 -0
  340. package/src/components/tabsView/tabsView/menuTitle.vue.d.ts +20 -0
  341. package/src/components/tabsView/tabsView/store.d.ts +12 -0
  342. package/src/components/tabsView/tabsView/tabsView.vue.d.ts +34 -0
  343. package/src/components/tabsView/tabsView/types.d.ts +98 -0
  344. package/src/components/tabsView/tabsView/utils.d.ts +11 -0
  345. package/src/components/tabsView/tabsView.d.ts +3 -0
  346. package/src/core/app.d.ts +8 -0
  347. package/src/core/core/core.d.ts +113 -0
  348. package/src/core/core/events/resize.d.ts +16 -0
  349. package/src/core/core/events.d.ts +15 -0
  350. package/src/core/core/options.d.ts +47 -0
  351. package/src/core/core/preloaders.d.ts +19 -0
  352. package/src/core/core/state.d.ts +49 -0
  353. package/src/core/directives/data.d.ts +10 -0
  354. package/src/core/directives/focus.d.ts +10 -0
  355. package/src/core/directives/preloader.d.ts +8 -0
  356. package/src/core/directives/scrollIntoView.d.ts +3 -0
  357. package/src/core/directives/scrollShadow.d.ts +15 -0
  358. package/src/core/directives/sticky.d.ts +10 -0
  359. package/src/core/directives/swimUp.d.ts +15 -0
  360. package/src/core/directives/tooltip.d.ts +10 -0
  361. package/src/core/plugins/core.d.ts +60 -0
  362. package/src/core/plugins/i18n.d.ts +97 -0
  363. package/src/core/plugins/piniaTPA.d.ts +17 -0
  364. package/src/core/utils/check.d.ts +26 -0
  365. package/src/core/utils/clipboard.d.ts +12 -0
  366. package/src/core/utils/date.d.ts +70 -0
  367. package/src/core/utils/device.d.ts +50 -0
  368. package/src/core/utils/dom.d.ts +104 -0
  369. package/src/core/utils/image.d.ts +16 -0
  370. package/src/core/utils/keyboard.d.ts +8 -0
  371. package/src/core/utils/lodash.d.ts +6 -0
  372. package/src/core/utils/number.d.ts +17 -0
  373. package/src/core/utils/price.d.ts +10 -0
  374. package/src/core/utils/route.d.ts +33 -0
  375. package/src/core/utils/scroll.d.ts +32 -0
  376. package/src/core/utils/searchers.d.ts +38 -0
  377. package/src/core/utils/store/localStorage.d.ts +6 -0
  378. package/src/core/utils/store/plugin.d.ts +24 -0
  379. package/src/core/utils/store/store.d.ts +34 -0
  380. package/src/core/utils/store.d.ts +6 -0
  381. package/src/core/utils/string.d.ts +100 -0
  382. package/src/core/utils/system.d.ts +25 -0
  383. package/src/core/utils/url.d.ts +36 -0
  384. package/tabs/tabs.amd.js +2 -0
  385. package/tabs/tabs.amd.js.map +1 -0
  386. package/tabs/tabs.d.ts +2 -0
  387. package/tabs/tabs.js +81 -0
  388. package/tabs/tabs.js.map +1 -0
  389. package/tabsView/tabsView.amd.js +2 -0
  390. package/tabsView/tabsView.amd.js.map +1 -0
  391. package/tabsView/tabsView.d.ts +2 -0
  392. package/tabsView/tabsView.js +307 -0
  393. package/tabsView/tabsView.js.map +1 -0
  394. package/utils/check.amd.js +2 -0
  395. package/utils/check.amd.js.map +1 -0
  396. package/utils/check.d.ts +2 -0
  397. package/utils/check.js +26 -0
  398. package/utils/check.js.map +1 -0
  399. package/utils/clipboard.amd.js +6 -0
  400. package/utils/clipboard.amd.js.map +1 -0
  401. package/utils/clipboard.d.ts +2 -0
  402. package/utils/clipboard.js +35 -0
  403. package/utils/clipboard.js.map +1 -0
  404. package/utils/date.amd.js +2 -0
  405. package/utils/date.amd.js.map +1 -0
  406. package/utils/date.d.ts +2 -0
  407. package/utils/date.js +12 -0
  408. package/utils/date.js.map +1 -0
  409. package/utils/device.amd.js +2 -0
  410. package/utils/device.amd.js.map +1 -0
  411. package/utils/device.d.ts +2 -0
  412. package/utils/device.js +15 -0
  413. package/utils/device.js.map +1 -0
  414. package/utils/dom.amd.js +2 -0
  415. package/utils/dom.amd.js.map +1 -0
  416. package/utils/dom.d.ts +6 -0
  417. package/utils/dom.js +80 -0
  418. package/utils/dom.js.map +1 -0
  419. package/utils/image.amd.js +12 -0
  420. package/utils/image.amd.js.map +1 -0
  421. package/utils/image.d.ts +2 -0
  422. package/utils/image.js +23 -0
  423. package/utils/image.js.map +1 -0
  424. package/utils/keyboard.amd.js +2 -0
  425. package/utils/keyboard.amd.js.map +1 -0
  426. package/utils/keyboard.d.ts +2 -0
  427. package/utils/keyboard.js +12 -0
  428. package/utils/keyboard.js.map +1 -0
  429. package/utils/lodash.amd.js +2 -0
  430. package/utils/lodash.amd.js.map +1 -0
  431. package/utils/lodash.d.ts +2 -0
  432. package/utils/lodash.js +9 -0
  433. package/utils/lodash.js.map +1 -0
  434. package/utils/number.amd.js +2 -0
  435. package/utils/number.amd.js.map +1 -0
  436. package/utils/number.d.ts +2 -0
  437. package/utils/number.js +13 -0
  438. package/utils/number.js.map +1 -0
  439. package/utils/price.amd.js +2 -0
  440. package/utils/price.amd.js.map +1 -0
  441. package/utils/price.d.ts +2 -0
  442. package/utils/price.js +10 -0
  443. package/utils/price.js.map +1 -0
  444. package/utils/route.amd.js +2 -0
  445. package/utils/route.amd.js.map +1 -0
  446. package/utils/route.d.ts +2 -0
  447. package/utils/route.js +38 -0
  448. package/utils/route.js.map +1 -0
  449. package/utils/scroll.amd.js +2 -0
  450. package/utils/scroll.amd.js.map +1 -0
  451. package/utils/scroll.d.ts +2 -0
  452. package/utils/scroll.js +45 -0
  453. package/utils/scroll.js.map +1 -0
  454. package/utils/searchers.amd.js +2 -0
  455. package/utils/searchers.amd.js.map +1 -0
  456. package/utils/searchers.d.ts +2 -0
  457. package/utils/searchers.js +134 -0
  458. package/utils/searchers.js.map +1 -0
  459. package/utils/store.amd.js +2 -0
  460. package/utils/store.amd.js.map +1 -0
  461. package/utils/store.d.ts +2 -0
  462. package/utils/store.js +7 -0
  463. package/utils/store.js.map +1 -0
  464. package/utils/string.amd.js +2 -0
  465. package/utils/string.amd.js.map +1 -0
  466. package/utils/string.d.ts +2 -0
  467. package/utils/string.js +152 -0
  468. package/utils/string.js.map +1 -0
  469. package/utils/system.amd.js +2 -0
  470. package/utils/system.amd.js.map +1 -0
  471. package/utils/system.d.ts +2 -0
  472. package/utils/system.js +29 -0
  473. package/utils/system.js.map +1 -0
  474. package/utils/url.amd.js +3 -0
  475. package/utils/url.amd.js.map +1 -0
  476. package/utils/url.d.ts +2 -0
  477. package/utils/url.js +48 -0
  478. package/utils/url.js.map +1 -0
  479. package/web-types.json +130 -130
  480. package/.gitlab-ci/.gitlab-ci.yml +0 -26
  481. package/.gitlab-ci/common/install.yml +0 -21
  482. package/.gitlab-ci/common/lint.yml +0 -14
  483. package/.gitlab-ci/common/version.yml +0 -23
  484. package/.gitlab-ci/storybook/build.yml +0 -20
  485. package/.gitlab-ci/storybook/deploy.yml +0 -49
  486. package/.gitlab-ci/ui/build.yml +0 -13
  487. package/.gitlab-ci/ui/deploy.yml +0 -23
  488. package/.idea/.gitignore +0 -11
  489. package/.idea/codeStyles/Project.xml +0 -205
  490. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  491. package/.idea/externalDependencies.xml +0 -6
  492. package/.idea/inspectionProfiles/Disabled.xml +0 -824
  493. package/.idea/inspectionProfiles/Project_Default.xml +0 -33
  494. package/.idea/php.xml +0 -19
  495. package/.idea/vcs.xml +0 -6
  496. package/.storybook/TopTheme.ts +0 -115
  497. package/.storybook/TopThemeManager.ts +0 -53
  498. package/.storybook/main.ts +0 -51
  499. package/.storybook/manager.ts +0 -25
  500. package/.storybook/preview-head.html +0 -21
  501. package/.storybook/preview.ts +0 -47
  502. package/.storybook/vue/coreDecorator.ts +0 -77
  503. package/.storybook/vue/vModelDecorator.ts +0 -46
  504. package/.versionrc.json +0 -16
  505. package/.vscode/extensions.json +0 -11
  506. package/.vscode/keybindings.example.json +0 -121
  507. package/.vscode/settings.json +0 -45
  508. package/CHANGELOG.md +0 -223
  509. package/NPM.md +0 -25
  510. package/PUBLISH.md +0 -63
  511. package/STORYBOOK.md +0 -48
  512. package/USE_IN_PROJECT.md +0 -32
  513. package/build/afterBuild.sh +0 -11
  514. package/build/cssModules.ts +0 -39
  515. package/build/genDocs.sh +0 -19
  516. package/build/plugin/amdFix.ts +0 -83
  517. package/build/plugin/autoloadCSS.ts +0 -155
  518. package/build/rollup.config.ts +0 -37
  519. package/public/README.md +0 -82
  520. package/public/icomoon/Read Me.txt +0 -7
  521. package/public/icomoon/Topvisor icons.json +0 -6260
  522. package/public/icomoon/demo-files/demo.css +0 -158
  523. package/public/icomoon/demo-files/demo.js +0 -30
  524. package/public/icomoon/demo.html +0 -3558
  525. package/public/icomoon/fonts/Topvisor-2.eot +0 -0
  526. package/public/icomoon/fonts/Topvisor-2.svg +0 -277
  527. package/public/icomoon/fonts/Topvisor-2.ttf +0 -0
  528. package/public/icomoon/fonts/Topvisor-2.woff +0 -0
  529. package/public/icomoon/selection.json +0 -1
  530. package/public/icomoon/style.css +0 -780
  531. package/public/jquery-ui.min.css +0 -6
  532. package/public/require/css.amd.js +0 -12
  533. package/src/components/charts/charts.ts +0 -8
  534. package/src/components/charts/miniChart/miniChart.stories.ts +0 -67
  535. package/src/components/charts/miniChart/miniChart.ts +0 -110
  536. package/src/components/charts/miniChart/miniChart.vue +0 -158
  537. package/src/components/charts/miniChart/stories/README.md +0 -9
  538. package/src/components/charts/miniChart/stories/dummy.ts +0 -25
  539. package/src/components/charts/miniChart/styles/miniChart.css +0 -87
  540. package/src/components/charts/miniChart/utils/consts.ts +0 -9
  541. package/src/components/charts/miniCharts/miniCharts.stories.ts +0 -76
  542. package/src/components/charts/miniCharts/miniCharts.ts +0 -24
  543. package/src/components/charts/miniCharts/miniCharts.vue +0 -128
  544. package/src/components/charts/miniCharts/stories/README.md +0 -18
  545. package/src/components/charts/miniCharts/stories/dummy.ts +0 -70
  546. package/src/components/charts/miniCharts/stories/overview.vue +0 -139
  547. package/src/components/charts/miniCharts/styles/miniCharts.css +0 -32
  548. package/src/components/component.ts +0 -130
  549. package/src/components/core/core.mdx +0 -7
  550. package/src/components/core/notice/item/item.vue +0 -145
  551. package/src/components/core/notice/item/style.css +0 -70
  552. package/src/components/core/notice/item/types.ts +0 -71
  553. package/src/components/core/notice/notice.stories.ts +0 -105
  554. package/src/components/core/notice/notice.vue +0 -69
  555. package/src/components/core/notice/stories/README.md +0 -34
  556. package/src/components/core/notice/types.ts +0 -1
  557. package/src/components/core/notice/utils.ts +0 -115
  558. package/src/components/dialog/dialog/Dialog (code).mdx +0 -61
  559. package/src/components/dialog/dialog/composables/asyncDialogHandle.ts +0 -99
  560. package/src/components/dialog/dialog/composables/dialogHandle.ts +0 -176
  561. package/src/components/dialog/dialog/composables/types.ts +0 -12
  562. package/src/components/dialog/dialog/composables/utils.ts +0 -39
  563. package/src/components/dialog/dialog/dialog.stories.ts +0 -83
  564. package/src/components/dialog/dialog/dialog.vue +0 -74
  565. package/src/components/dialog/dialog/dialogs/dialogs.vue +0 -58
  566. package/src/components/dialog/dialog/page/page.vue +0 -86
  567. package/src/components/dialog/dialog/page/types.ts +0 -84
  568. package/src/components/dialog/dialog/page.stories.ts +0 -27
  569. package/src/components/dialog/dialog/pageComponent/pageComponent.vue +0 -57
  570. package/src/components/dialog/dialog/pageComponent/types.ts +0 -21
  571. package/src/components/dialog/dialog/pageComponent.stories.ts +0 -27
  572. package/src/components/dialog/dialog/stories/README.md +0 -117
  573. package/src/components/dialog/dialog/stories/autoload.ts +0 -12
  574. package/src/components/dialog/dialog/stories/dialog_example/dialog_example.vue +0 -73
  575. package/src/components/dialog/dialog/stories/dialog_example/pages/async.vue +0 -57
  576. package/src/components/dialog/dialog/stories/dialog_example/pages/default.vue +0 -64
  577. package/src/components/dialog/dialog/stories/dialog_example/pages/headerButtons.vue +0 -56
  578. package/src/components/dialog/dialog/stories/dialog_example/pages/utils.ts +0 -26
  579. package/src/components/dialog/dialog/stories/dialog_example/pages/withoutCache.vue +0 -64
  580. package/src/components/dialog/dialog/stories/page/README.md +0 -24
  581. package/src/components/dialog/dialog/stories/pageComponent/README.md +0 -12
  582. package/src/components/dialog/dialog/style/dialog.css +0 -316
  583. package/src/components/dialog/dialog/style/dialog.m.css +0 -40
  584. package/src/components/dialog/dialog/style/dialog.pc.css +0 -73
  585. package/src/components/dialog/dialog/style/modern/dialog.css +0 -12
  586. package/src/components/dialog/dialog/style/modern/dialog.pc.css +0 -3
  587. package/src/components/dialog/dialog/types.ts +0 -69
  588. package/src/components/dialog/dialog.ts +0 -7
  589. package/src/components/dialog/lib/types.ts +0 -26
  590. package/src/components/dialog/lib/utils.globalEvents.ts +0 -175
  591. package/src/components/dialog/lib/utils.ts +0 -525
  592. package/src/components/dialog/lib/worker.ts +0 -273
  593. package/src/components/forms/README.mdx +0 -10
  594. package/src/components/forms/avatar/avatar.stories.ts +0 -38
  595. package/src/components/forms/avatar/avatar.ts +0 -40
  596. package/src/components/forms/avatar/avatar.vue +0 -77
  597. package/src/components/forms/avatar/stories/overview.vue +0 -28
  598. package/src/components/forms/button/button.stories.ts +0 -118
  599. package/src/components/forms/button/button.vue +0 -111
  600. package/src/components/forms/button/stories/README.md +0 -9
  601. package/src/components/forms/button/stories/overview.vue +0 -33
  602. package/src/components/forms/button/style/button.css +0 -139
  603. package/src/components/forms/button/style/style-outline.css +0 -129
  604. package/src/components/forms/button/style/style-soft.css +0 -89
  605. package/src/components/forms/button/style/style-transparent.css +0 -39
  606. package/src/components/forms/button/types.ts +0 -66
  607. package/src/components/forms/checkbox/checkbox.stories.ts +0 -33
  608. package/src/components/forms/checkbox/checkbox.ts +0 -21
  609. package/src/components/forms/checkbox/checkbox.vue +0 -114
  610. package/src/components/forms/checkbox/stories/overview.vue +0 -171
  611. package/src/components/forms/controlLabel/controlLabel.stories.ts +0 -32
  612. package/src/components/forms/controlLabel/controlLabel.ts +0 -4
  613. package/src/components/forms/controlLabel/controlLabel.vue +0 -54
  614. package/src/components/forms/forms.ts +0 -40
  615. package/src/components/forms/helpers.ts +0 -11
  616. package/src/components/forms/hint/hint.stories.ts +0 -41
  617. package/src/components/forms/hint/hint.ts +0 -8
  618. package/src/components/forms/hint/hint.vue +0 -32
  619. package/src/components/forms/input/input.stories.ts +0 -32
  620. package/src/components/forms/input/input.ts +0 -47
  621. package/src/components/forms/input/input.vue +0 -189
  622. package/src/components/forms/input/stories/overview.vue +0 -61
  623. package/src/components/forms/inputDate/datepicker.css +0 -246
  624. package/src/components/forms/inputDate/datepicker.ts +0 -101
  625. package/src/components/forms/inputDate/inputDate.stories.ts +0 -41
  626. package/src/components/forms/inputDate/inputDate.ts +0 -5
  627. package/src/components/forms/inputDate/inputDate.vue +0 -133
  628. package/src/components/forms/inputDate/stories/overview.vue +0 -35
  629. package/src/components/forms/inputRange/inputRange.stories.ts +0 -53
  630. package/src/components/forms/inputRange/inputRange.ts +0 -3
  631. package/src/components/forms/inputRange/inputRange.vue +0 -39
  632. package/src/components/forms/inputRange/stories/overview.vue +0 -129
  633. package/src/components/forms/loadbar/loadbar.stories.ts +0 -17
  634. package/src/components/forms/loadbar/loadbar.vue +0 -37
  635. package/src/components/forms/radio/radio.stories.ts +0 -34
  636. package/src/components/forms/radio/radio.ts +0 -15
  637. package/src/components/forms/radio/radio.vue +0 -97
  638. package/src/components/forms/radio/stories/overview.vue +0 -79
  639. package/src/components/forms/select/select.stories.ts +0 -69
  640. package/src/components/forms/select/select.ts +0 -69
  641. package/src/components/forms/select/select.vue +0 -300
  642. package/src/components/forms/select/stories/exampleOptions.ts +0 -61
  643. package/src/components/forms/select/stories/overview.vue +0 -72
  644. package/src/components/forms/switcher/stories/overview.vue +0 -139
  645. package/src/components/forms/switcher/switcher.stories.ts +0 -33
  646. package/src/components/forms/switcher/switcher.ts +0 -22
  647. package/src/components/forms/switcher/switcher.vue +0 -118
  648. package/src/components/forms/textarea/stories/overview.vue +0 -62
  649. package/src/components/forms/textarea/textarea.stories.ts +0 -34
  650. package/src/components/forms/textarea/textarea.ts +0 -47
  651. package/src/components/forms/textarea/textarea.vue +0 -123
  652. package/src/components/formsExt/README.mdx +0 -5
  653. package/src/components/formsExt/editArea/editArea.stories.ts +0 -41
  654. package/src/components/formsExt/editArea/editArea.ts +0 -41
  655. package/src/components/formsExt/editArea/editArea.vue +0 -198
  656. package/src/components/formsExt/editArea/stories/README.md +0 -21
  657. package/src/components/formsExt/editArea/stories/overview.vue +0 -67
  658. package/src/components/formsExt/editInput/editInput.stories.ts +0 -36
  659. package/src/components/formsExt/editInput/editInput.ts +0 -20
  660. package/src/components/formsExt/editInput/editInput.vue +0 -54
  661. package/src/components/formsExt/editInput/stories/overview.vue +0 -54
  662. package/src/components/formsExt/formsExt.ts +0 -15
  663. package/src/components/formsExt/info/info.stories.ts +0 -35
  664. package/src/components/formsExt/info/info.vue +0 -84
  665. package/src/components/formsExt/info/stories/overview.vue +0 -29
  666. package/src/components/formsExt/info/types.ts +0 -25
  667. package/src/components/formsExt/menu/menu.stories.ts +0 -59
  668. package/src/components/formsExt/menu/menu.ts +0 -45
  669. package/src/components/formsExt/menu/menu.vue +0 -321
  670. package/src/components/formsExt/menu/stories/items.ts +0 -18
  671. package/src/components/formsExt/menu/stories/overview.vue +0 -52
  672. package/src/components/formsExt/navigationMenu/item.vue +0 -186
  673. package/src/components/formsExt/navigationMenu/navigationMenu.stories.ts +0 -37
  674. package/src/components/formsExt/navigationMenu/navigationMenu.ts +0 -28
  675. package/src/components/formsExt/navigationMenu/navigationMenu.vue +0 -40
  676. package/src/components/formsExt/navigationMenu/stories/items.ts +0 -116
  677. package/src/components/formsExt/radioGroup/radioGroup.stories.ts +0 -51
  678. package/src/components/formsExt/radioGroup/radioGroup.ts +0 -28
  679. package/src/components/formsExt/radioGroup/radioGroup.vue +0 -146
  680. package/src/components/formsExt/radioGroup/stories/overview.vue +0 -78
  681. package/src/components/formsExt/radioGroup/styles/top-scrollBar.css +0 -52
  682. package/src/components/formsExt/selector2/api.ts +0 -148
  683. package/src/components/formsExt/selector2/itemMulti.vue +0 -57
  684. package/src/components/formsExt/selector2/selector2.stories.ts +0 -48
  685. package/src/components/formsExt/selector2/selector2.ts +0 -145
  686. package/src/components/formsExt/selector2/selector2.vue +0 -389
  687. package/src/components/formsExt/selector2/stories/dummyAPIRequest.ts +0 -58
  688. package/src/components/formsExt/selector2/stories/overview.vue +0 -93
  689. package/src/components/helper.js +0 -10
  690. package/src/components/helpersStories.ts +0 -205
  691. package/src/components/layout/islandRows/islandRows.stories.ts +0 -139
  692. package/src/components/layout/islandRows/islandRows.vue +0 -53
  693. package/src/components/layout/islandRows/islandRowsRow/islandRowsRow.vue +0 -36
  694. package/src/components/layout/islandRows/islandRowsRow/types.ts +0 -1
  695. package/src/components/layout/islandRows/islandRowsSubTitle/islandRowsSubTitle.vue +0 -16
  696. package/src/components/layout/islandRows/stories/README.md +0 -8
  697. package/src/components/layout/islandRows/types.ts +0 -11
  698. package/src/components/layout/layout.ts +0 -11
  699. package/src/components/layout/rows/rows.stories.ts +0 -48
  700. package/src/components/layout/rows/rows.vue +0 -46
  701. package/src/components/layout/rows/stories/README.md +0 -10
  702. package/src/components/layout/rows/types.ts +0 -6
  703. package/src/components/popup/alert/alert.stories.ts +0 -71
  704. package/src/components/popup/alert/alert.ts +0 -11
  705. package/src/components/popup/alert/alert.vue +0 -46
  706. package/src/components/popup/alert/stories/overview.vue +0 -40
  707. package/src/components/popup/confirm/confirm.stories.ts +0 -75
  708. package/src/components/popup/confirm/confirm.ts +0 -26
  709. package/src/components/popup/confirm/confirm.vue +0 -75
  710. package/src/components/popup/confirm/stories/overview.vue +0 -62
  711. package/src/components/popup/lib/popup.globalEvents.ts +0 -239
  712. package/src/components/popup/lib/popup.ts +0 -790
  713. package/src/components/popup/lib/worker.globalEvents.ts +0 -97
  714. package/src/components/popup/lib/worker.ts +0 -286
  715. package/src/components/popup/popup/listItem.vue +0 -35
  716. package/src/components/popup/popup/opener.vue +0 -81
  717. package/src/components/popup/popup/popup.stories.ts +0 -74
  718. package/src/components/popup/popup/popup.ts +0 -120
  719. package/src/components/popup/popup/popup.vue +0 -168
  720. package/src/components/popup/popup/stories/README.md +0 -55
  721. package/src/components/popup/popup/stories/listItems.vue +0 -44
  722. package/src/components/popup/popup/stories/listSubItems.vue +0 -47
  723. package/src/components/popup/popup/stories/overview.vue +0 -210
  724. package/src/components/popup/popup/style/popup.css +0 -345
  725. package/src/components/popup/popup/style/popup.m.css +0 -72
  726. package/src/components/popup/popup/style/popup.pc.css +0 -26
  727. package/src/components/popup/popup/widgetInput.vue +0 -43
  728. package/src/components/popup/popup.ts +0 -17
  729. package/src/components/popup/prompt/prompt.stories.ts +0 -78
  730. package/src/components/popup/prompt/prompt.ts +0 -26
  731. package/src/components/popup/prompt/prompt.vue +0 -84
  732. package/src/components/popup/prompt/stories/overview.vue +0 -50
  733. package/src/components/popup/worker.ts +0 -1
  734. package/src/components/project/project.ts +0 -23
  735. package/src/components/project/selectorCompetitors/composables.ts +0 -21
  736. package/src/components/project/selectorCompetitors/selectorCompetitors.stories.ts +0 -33
  737. package/src/components/project/selectorCompetitors/selectorCompetitors.ts +0 -27
  738. package/src/components/project/selectorCompetitors/selectorCompetitors.vue +0 -75
  739. package/src/components/project/selectorCompetitors/stories/README.md +0 -20
  740. package/src/components/project/selectorCompetitors/stories/items.ts +0 -30
  741. package/src/components/project/selectorCompetitors/types/competitor.ts +0 -7
  742. package/src/components/project/selectorRegion/composables/compare.ts +0 -87
  743. package/src/components/project/selectorRegion/composables/selectRegion.ts +0 -147
  744. package/src/components/project/selectorRegion/composables/selectSearcher.ts +0 -64
  745. package/src/components/project/selectorRegion/composables/selectorRegion.ts +0 -167
  746. package/src/components/project/selectorRegion/dialog_selectorRegions/dialog_selectorRegions.vue +0 -190
  747. package/src/components/project/selectorRegion/dialog_selectorRegions/style.css +0 -49
  748. package/src/components/project/selectorRegion/dialog_selectorRegions/types.ts +0 -31
  749. package/src/components/project/selectorRegion/selectorRegion.stories.ts +0 -85
  750. package/src/components/project/selectorRegion/selectorRegion.ts +0 -204
  751. package/src/components/project/selectorRegion/selectorRegion.vue +0 -335
  752. package/src/components/project/selectorRegion/stories/README.md +0 -36
  753. package/src/components/project/selectorRegion/stories/searchers.ts +0 -77
  754. package/src/components/project/selectorRegion/styles/searcherColors.css +0 -41
  755. package/src/components/project/selectorRegion/utils/consts.ts +0 -73
  756. package/src/components/project/selectorRegion/utils/utils.ts +0 -167
  757. package/src/components/project/tagSelector/popupListItem/tagPopupListItem.vue +0 -209
  758. package/src/components/project/tagSelector/popupListItem/types.ts +0 -40
  759. package/src/components/project/tagSelector/popupOpener/popupOpener.vue +0 -145
  760. package/src/components/project/tagSelector/popupOpener/types.ts +0 -71
  761. package/src/components/project/tagSelector/stories/README.md +0 -62
  762. package/src/components/project/tagSelector/stories/overview.vue +0 -152
  763. package/src/components/project/tagSelector/tagIcon/tagIcon.vue +0 -97
  764. package/src/components/project/tagSelector/tagIcon/types.ts +0 -25
  765. package/src/components/project/tagSelector/tagSelector.stories.ts +0 -51
  766. package/src/components/project/tagSelector/tagSelector.vue +0 -359
  767. package/src/components/project/tagSelector/tagsDefaults.ts +0 -54
  768. package/src/components/project/tagSelector/types.ts +0 -159
  769. package/src/components/project/tagSelector/utils/el.ts +0 -151
  770. package/src/components/project/tagSelector/utils/utils.ts +0 -30
  771. package/src/components/tabs/tabs/content.vue +0 -24
  772. package/src/components/tabs/tabs/stories/README.md +0 -12
  773. package/src/components/tabs/tabs/tab.vue +0 -49
  774. package/src/components/tabs/tabs/tabs.stories.ts +0 -171
  775. package/src/components/tabs/tabs/tabs.ts +0 -22
  776. package/src/components/tabs/tabs/tabs.vue +0 -64
  777. package/src/components/tabs/tabs.ts +0 -9
  778. package/src/components/tabsView/tabsView/menu.vue +0 -291
  779. package/src/components/tabsView/tabsView/menuDelimeter.vue +0 -26
  780. package/src/components/tabsView/tabsView/menuItem.vue +0 -125
  781. package/src/components/tabsView/tabsView/menuTitle.vue +0 -46
  782. package/src/components/tabsView/tabsView/store.ts +0 -60
  783. package/src/components/tabsView/tabsView/stories/README.md +0 -22
  784. package/src/components/tabsView/tabsView/tabsView.stories.ts +0 -170
  785. package/src/components/tabsView/tabsView/tabsView.ts +0 -118
  786. package/src/components/tabsView/tabsView/tabsView.vue +0 -120
  787. package/src/components/tabsView/tabsView/utils.ts +0 -27
  788. package/src/components/tabsView/tabsView//320/255/320/273/320/265/320/274/320/265/320/275/321/202/321/213/MenuItem.stories.ts +0 -47
  789. package/src/components/tabsView/tabsView//320/255/320/273/320/265/320/274/320/265/320/275/321/202/321/213/MenuTitle.stories.ts +0 -43
  790. package/src/components/tabsView/tabsView.ts +0 -9
  791. package/src/components/types.ts +0 -3
  792. package/src/core/app.ts +0 -22
  793. package/src/core/core/core.mdx +0 -36
  794. package/src/core/core/core.ts +0 -287
  795. package/src/core/core/events/resize.ts +0 -47
  796. package/src/core/core/events.ts +0 -6
  797. package/src/core/core/jQuery.mdx +0 -41
  798. package/src/core/core/options.ts +0 -51
  799. package/src/core/core/preloaders.ts +0 -31
  800. package/src/core/core/state.ts +0 -61
  801. package/src/core/directives/data.mdx +0 -24
  802. package/src/core/directives/data.ts +0 -25
  803. package/src/core/directives/focus.mdx +0 -28
  804. package/src/core/directives/focus.ts +0 -73
  805. package/src/core/directives/scrollIntoView.mdx +0 -41
  806. package/src/core/directives/scrollIntoView.ts +0 -123
  807. package/src/core/directives/scrollShadow.mdx +0 -23
  808. package/src/core/directives/scrollShadow.ts +0 -27
  809. package/src/core/directives/sticky.mdx +0 -29
  810. package/src/core/directives/sticky.ts +0 -32
  811. package/src/core/directives/swimUp.mdx +0 -27
  812. package/src/core/directives/swimUp.ts +0 -95
  813. package/src/core/directives/tooltip.mdx +0 -13
  814. package/src/core/directives/tooltip.ts +0 -57
  815. package/src/core/icons/gallery.vue +0 -70
  816. package/src/core/icons/icons.mdx +0 -24
  817. package/src/core/icons/icons.stories.ts +0 -14
  818. package/src/core/plugins/core.ts +0 -131
  819. package/src/core/plugins/i18n.ts +0 -184
  820. package/src/core/plugins/piniaTPA.ts +0 -431
  821. package/src/core/plugins/plugins.mdx +0 -82
  822. package/src/core/styles/CSS Variables.stories.ts +0 -17
  823. package/src/core/styles/styles.mdx +0 -26
  824. package/src/core/theme/Variables.stories.ts +0 -16
  825. package/src/core/theme/theme.mdx +0 -117
  826. package/src/core/utils/References/Docs.mdx +0 -23
  827. package/src/core/utils/References/check/Docs.mdx +0 -15
  828. package/src/core/utils/References/check/functions/getDomainRegexp.mdx +0 -15
  829. package/src/core/utils/References/check/functions/isDomain.mdx +0 -21
  830. package/src/core/utils/References/check/functions/isEmail.mdx +0 -22
  831. package/src/core/utils/References/check/functions/isIp.mdx +0 -21
  832. package/src/core/utils/References/check/functions/validUrl.mdx +0 -22
  833. package/src/core/utils/References/clipboard/Docs.mdx +0 -11
  834. package/src/core/utils/References/clipboard/functions/setClipboard.mdx +0 -23
  835. package/src/core/utils/References/date/Docs.mdx +0 -17
  836. package/src/core/utils/References/date/functions/dateFormat.mdx +0 -28
  837. package/src/core/utils/References/date/functions/dateToString.mdx +0 -26
  838. package/src/core/utils/References/date/functions/dateUnformat.mdx +0 -22
  839. package/src/core/utils/References/date/functions/genDate.mdx +0 -26
  840. package/src/core/utils/References/date/functions/genDateMoscow.mdx +0 -22
  841. package/src/core/utils/References/date/functions/getDayOfWeek.mdx +0 -26
  842. package/src/core/utils/References/date/functions/stringToDate.mdx +0 -21
  843. package/src/core/utils/References/device/Docs.mdx +0 -21
  844. package/src/core/utils/References/device/functions/get$scroll.mdx +0 -15
  845. package/src/core/utils/References/device/functions/getCommandKeyLabel.mdx +0 -15
  846. package/src/core/utils/References/device/functions/getElsScroll.mdx +0 -15
  847. package/src/core/utils/References/device/functions/getOS.mdx +0 -17
  848. package/src/core/utils/References/device/functions/getOSAsync.mdx +0 -15
  849. package/src/core/utils/References/device/functions/getScrollTop.mdx +0 -15
  850. package/src/core/utils/References/device/functions/isApp.mdx +0 -15
  851. package/src/core/utils/References/device/functions/isMacOS.mdx +0 -15
  852. package/src/core/utils/References/device/functions/isMobile.mdx +0 -15
  853. package/src/core/utils/References/device/functions/isRetina.mdx +0 -15
  854. package/src/core/utils/References/device/functions/isSafari.mdx +0 -15
  855. package/src/core/utils/References/dom/Docs.mdx +0 -27
  856. package/src/core/utils/References/dom/functions/css.mdx +0 -24
  857. package/src/core/utils/References/dom/functions/genEl.mdx +0 -28
  858. package/src/core/utils/References/dom/functions/isVisible.mdx +0 -23
  859. package/src/core/utils/References/dom/functions/offset.mdx +0 -35
  860. package/src/core/utils/References/dom/functions/querySelectorAllArray.mdx +0 -22
  861. package/src/core/utils/References/dom/functions/querySelectorAllVisible.mdx +0 -22
  862. package/src/core/utils/References/dom/functions/querySelectorVisible.mdx +0 -22
  863. package/src/core/utils/References/dom/functions/querySelectorVisibleLast.mdx +0 -22
  864. package/src/core/utils/References/dom/functions/storage.mdx +0 -28
  865. package/src/core/utils/References/dom/functions/storageClear.mdx +0 -21
  866. package/src/core/utils/References/dom/functions/wrap.mdx +0 -22
  867. package/src/core/utils/References/dom/variables/default.mdx +0 -241
  868. package/src/core/utils/References/image/Docs.mdx +0 -12
  869. package/src/core/utils/References/image/functions/downloadImageFromString.mdx +0 -22
  870. package/src/core/utils/References/image/functions/genFaviconImgHtml.mdx +0 -22
  871. package/src/core/utils/References/keyboard/Docs.mdx +0 -11
  872. package/src/core/utils/References/keyboard/functions/invertKeyboardLayout.mdx +0 -21
  873. package/src/core/utils/References/lodash/Docs.mdx +0 -20
  874. package/src/core/utils/References/lodash/functions/cloneDeep.mdx +0 -29
  875. package/src/core/utils/References/lodash/functions/debounce.mdx +0 -76
  876. package/src/core/utils/References/lodash/functions/memoize.mdx +0 -26
  877. package/src/core/utils/References/lodash/functions/merge.mdx +0 -200
  878. package/src/core/utils/References/lodash/functions/throttle.mdx +0 -73
  879. package/src/core/utils/References/number/Docs.mdx +0 -11
  880. package/src/core/utils/References/number/functions/percentOfNumber.mdx +0 -26
  881. package/src/core/utils/References/price/Docs.mdx +0 -11
  882. package/src/core/utils/References/price/functions/genPrice.mdx +0 -28
  883. package/src/core/utils/References/route/Docs.mdx +0 -16
  884. package/src/core/utils/References/route/functions/delHash.mdx +0 -26
  885. package/src/core/utils/References/route/functions/genHash.mdx +0 -26
  886. package/src/core/utils/References/route/functions/getHash.mdx +0 -22
  887. package/src/core/utils/References/route/functions/historySetState.mdx +0 -31
  888. package/src/core/utils/References/route/functions/setHash.mdx +0 -26
  889. package/src/core/utils/References/route/functions/setHashs.mdx +0 -22
  890. package/src/core/utils/References/scroll/Docs.mdx +0 -14
  891. package/src/core/utils/References/scroll/functions/amountScrolled.mdx +0 -17
  892. package/src/core/utils/References/scroll/functions/connectScrollShadow.mdx +0 -28
  893. package/src/core/utils/References/scroll/functions/genHasScroll.mdx +0 -25
  894. package/src/core/utils/References/scroll/functions/getScrollPercent.mdx +0 -21
  895. package/src/core/utils/References/searchers/Docs.mdx +0 -19
  896. package/src/core/utils/References/searchers/functions/genVolumeLabel.mdx +0 -26
  897. package/src/core/utils/References/searchers/functions/getDeviceGIcon.mdx +0 -21
  898. package/src/core/utils/References/searchers/functions/getLangLabel.mdx +0 -22
  899. package/src/core/utils/References/searchers/functions/getSearcherGIcon.mdx +0 -21
  900. package/src/core/utils/References/searchers/functions/prepareVolumeType.mdx +0 -22
  901. package/src/core/utils/References/searchers/variables/searchersNames.mdx +0 -97
  902. package/src/core/utils/References/store/Docs.mdx +0 -18
  903. package/src/core/utils/References/store/functions/defineStore.mdx +0 -36
  904. package/src/core/utils/References/store/functions/useStore.mdx +0 -29
  905. package/src/core/utils/References/store/variables/plugin.mdx +0 -66
  906. package/src/core/utils/References/string/Docs.mdx +0 -26
  907. package/src/core/utils/References/string/functions/addCommasWhite.mdx +0 -21
  908. package/src/core/utils/References/string/functions/addLinkTags.mdx +0 -23
  909. package/src/core/utils/References/string/functions/camelToSnakeCase.mdx +0 -21
  910. package/src/core/utils/References/string/functions/ellipsis.mdx +0 -26
  911. package/src/core/utils/References/string/functions/genFlagLinkByCountryCode.mdx +0 -21
  912. package/src/core/utils/References/string/functions/genIntHash.mdx +0 -21
  913. package/src/core/utils/References/string/functions/getRandomHash.mdx +0 -21
  914. package/src/core/utils/References/string/functions/highlightHtml.mdx +0 -25
  915. package/src/core/utils/References/string/functions/htmlspecialchars.mdx +0 -21
  916. package/src/core/utils/References/string/functions/isUrl.mdx +0 -21
  917. package/src/core/utils/References/string/functions/nl2br.mdx +0 -21
  918. package/src/core/utils/References/string/functions/numberEnding.mdx +0 -28
  919. package/src/core/utils/References/string/functions/numberWithWord.mdx +0 -28
  920. package/src/core/utils/References/string/functions/rusToLatin.mdx +0 -21
  921. package/src/core/utils/References/string/functions/toCapitalize.mdx +0 -21
  922. package/src/core/utils/References/string/functions/toRoditPadej.mdx +0 -21
  923. package/src/core/utils/References/system/Docs.mdx +0 -13
  924. package/src/core/utils/References/system/functions/sleep.mdx +0 -21
  925. package/src/core/utils/References/system/functions/sleepWhile.mdx +0 -26
  926. package/src/core/utils/References/system/functions/waitWhile.mdx +0 -26
  927. package/src/core/utils/References/url/Docs.mdx +0 -17
  928. package/src/core/utils/References/url/functions/decode.mdx +0 -21
  929. package/src/core/utils/References/url/functions/encode.mdx +0 -21
  930. package/src/core/utils/References/url/functions/fromPuny.mdx +0 -23
  931. package/src/core/utils/References/url/functions/getHost.mdx +0 -21
  932. package/src/core/utils/References/url/functions/hostToLowerCase.mdx +0 -21
  933. package/src/core/utils/References/url/functions/normalize.mdx +0 -21
  934. package/src/core/utils/References/url/functions/toPuny.mdx +0 -23
  935. package/src/core/utils/check.ts +0 -88
  936. package/src/core/utils/clipboard.ts +0 -51
  937. package/src/core/utils/date.ts +0 -291
  938. package/src/core/utils/device.ts +0 -139
  939. package/src/core/utils/dom.ts +0 -182
  940. package/src/core/utils/image.ts +0 -46
  941. package/src/core/utils/keyboard.ts +0 -29
  942. package/src/core/utils/lodash.ts +0 -18
  943. package/src/core/utils/number.ts +0 -37
  944. package/src/core/utils/price.ts +0 -24
  945. package/src/core/utils/route.ts +0 -115
  946. package/src/core/utils/scroll.ts +0 -120
  947. package/src/core/utils/searchers.ts +0 -191
  948. package/src/core/utils/store/localStorage.ts +0 -56
  949. package/src/core/utils/store/plugin.ts +0 -50
  950. package/src/core/utils/store/store.ts +0 -77
  951. package/src/core/utils/store.ts +0 -7
  952. package/src/core/utils/string.ts +0 -317
  953. package/src/core/utils/system.ts +0 -72
  954. package/src/core/utils/url.ts +0 -138
  955. package/src/core/utils/utils.mdx +0 -6
  956. package/src/d.ts +0 -12
  957. package/src/icomoon.d.ts +0 -98
  958. package/src/resources/styles/core/components.css +0 -111
  959. package/src/resources/styles/core/core.ts +0 -11
  960. package/src/resources/styles/core/forms/clear.css +0 -20
  961. package/src/resources/styles/core/forms/controls.css +0 -20
  962. package/src/resources/styles/core/forms/focusable.css +0 -26
  963. package/src/resources/styles/core/forms/forms.css +0 -156
  964. package/src/resources/styles/core/icon.css +0 -58
  965. package/src/resources/styles/core/jquery.css +0 -1
  966. package/src/resources/styles/core/layout.css +0 -59
  967. package/src/resources/styles/core/modifiers/as.css +0 -9
  968. package/src/resources/styles/core/modifiers/ellipsis.css +0 -26
  969. package/src/resources/styles/core/modifiers/modifiers.css +0 -120
  970. package/src/resources/styles/core/modifiers/only.css +0 -19
  971. package/src/resources/styles/core/modifiers/scrollShadow.css +0 -50
  972. package/src/resources/styles/core/select.css +0 -15
  973. package/src/resources/styles/storybook.css +0 -11
  974. package/src/resources/styles/themes/dark/dark-layout.css +0 -47
  975. package/src/resources/styles/themes/dark/dark-positions.css +0 -66
  976. package/src/resources/styles/themes/dark/dark.css +0 -400
  977. package/src/resources/styles/themes/dark-positions.ts +0 -1
  978. package/src/resources/styles/themes/dark-th/dark-th-layout.css +0 -47
  979. package/src/resources/styles/themes/dark-th/dark-th-positions.css +0 -67
  980. package/src/resources/styles/themes/dark-th/dark-th.css +0 -400
  981. package/src/resources/styles/themes/dark-th-positions.ts +0 -1
  982. package/src/resources/styles/themes/dark-th.ts +0 -3
  983. package/src/resources/styles/themes/dark.ts +0 -3
  984. package/src/resources/styles/themes/light/light-layout.css +0 -47
  985. package/src/resources/styles/themes/light/light-positions.css +0 -66
  986. package/src/resources/styles/themes/light/light.css +0 -400
  987. package/src/resources/styles/themes/light-positions.ts +0 -1
  988. package/src/resources/styles/themes/light.ts +0 -3
  989. package/src/storybook/components/color.vue +0 -47
  990. package/src/storybook/components/cssVariables.vue +0 -195
  991. package/src/storybook/components/icomoon.ts +0 -40
  992. package/src/storybook/jquery.ts +0 -4
  993. package/src//320/221/321/213/321/201/321/202/321/200/321/213/320/271 /321/201/321/202/320/260/321/200/321/202.mdx" +0 -181
  994. package/src//320/230/320/275/321/204/320/276/321/200/320/274/320/260/321/206/320/270/321/217 /320/276 /321/201/320/261/320/276/321/200/320/272/320/265.mdx" +0 -12
  995. package/src//320/240/320/260/320/267/321/200/320/260/320/261/320/276/321/202/320/272/320/260 (Contributing)/CHANGELOG.md.mdx" +0 -4
  996. package/src//320/240/320/260/320/267/321/200/320/260/320/261/320/276/321/202/320/272/320/260 (Contributing)/CSS/FAQ.mdx" +0 -43
  997. package/src//320/240/320/260/320/267/321/200/320/260/320/261/320/276/321/202/320/272/320/260 (Contributing)/CSS//320/236/320/261/321/211/320/270/320/265 /320/274/320/276/320/264/320/270/321/204/320/270/320/272/320/260/321/202/320/276/321/200/321/213.mdx" +0 -155
  998. package/src//320/240/320/260/320/267/321/200/320/260/320/261/320/276/321/202/320/272/320/260 (Contributing)/CSS//320/237/320/265/321/200/320/265/320/274/320/265/320/275/320/275/321/213/320/265.mdx" +0 -35
  999. package/src//320/240/320/260/320/267/321/200/320/260/320/261/320/276/321/202/320/272/320/260 (Contributing)/CSS//320/237/321/200/320/265/320/264/320/277/321/200/320/276/321/206/320/265/321/201/321/201/320/276/321/200/321/213.mdx" +0 -15
  1000. package/src//320/240/320/260/320/267/321/200/320/260/320/261/320/276/321/202/320/272/320/260 (Contributing)/CSS//320/240/320/265/320/272/320/276/320/274/320/265/320/275/320/264/320/260/321/206/320/270/320/270 /320/221/320/255/320/234.mdx" +0 -56
  1001. package/src//320/240/320/260/320/267/321/200/320/260/320/261/320/276/321/202/320/272/320/260 (Contributing)/CSS//320/241/321/202/320/270/320/273/320/270.mdx" +0 -53
  1002. package/src//320/240/320/260/320/267/321/200/320/260/320/261/320/276/321/202/320/272/320/260 (Contributing)/CSS//320/247/321/202/320/276 /321/202/320/260/320/272/320/276/320/265 css /320/274/320/276/320/264/321/203/320/273/321/214.mdx" +0 -55
  1003. package/src//320/240/320/260/320/267/321/200/320/260/320/261/320/276/321/202/320/272/320/260 (Contributing)/PUBLISH.md.mdx" +0 -4
  1004. package/src//320/240/320/260/320/267/321/200/320/260/320/261/320/276/321/202/320/272/320/260 (Contributing)/README.md.mdx" +0 -4
  1005. package/src//320/240/320/260/320/267/321/200/320/260/320/261/320/276/321/202/320/272/320/260 (Contributing)/STORYBOOK.md.mdx" +0 -4
  1006. package/src//320/240/320/260/320/267/321/200/320/260/320/261/320/276/321/202/320/272/320/260 (Contributing)/USE_IN_PROJECT.md.mdx" +0 -3
  1007. package/src//320/240/320/260/320/267/321/200/320/260/320/261/320/276/321/202/320/272/320/260 (Contributing)//320/222/320/262/320/265/320/264/320/265/320/275/320/270/320/265 /320/262 NPM.md.mdx" +0 -4
  1008. package/src//320/240/320/260/320/267/321/200/320/260/320/261/320/276/321/202/320/272/320/260 (Contributing)//320/224/320/276/320/277/320/276/320/273/320/275/320/270/321/202/320/265/320/273/321/214/320/275/320/260/321/217 /320/273/320/270/321/202/320/265/321/200/320/260/321/202/321/203/321/200/320/260.mdx" +0 -15
  1009. package/src//320/240/320/260/320/267/321/200/320/260/320/261/320/276/321/202/320/272/320/260 (Contributing)//320/241/321/202/320/260/320/275/320/264/320/260/321/200/321/202/321/213 /320/272/320/276/320/264/320/260//320/235/320/260/321/201/321/202/321/200/320/276/320/271/320/272/320/260 IDE.mdx" +0 -45
  1010. package/src//320/240/320/260/320/267/321/200/320/260/320/261/320/276/321/202/320/272/320/260 (Contributing)//320/241/321/202/320/260/320/275/320/264/320/260/321/200/321/202/321/213 /320/272/320/276/320/264/320/260//320/236/321/204/320/276/321/200/320/274/320/273/320/265/320/275/320/270/320/265 /320/272/320/276/320/264/320/260.mdx" +0 -31
  1011. package/src//320/240/320/260/320/267/321/200/320/260/320/261/320/276/321/202/320/272/320/260 (Contributing)//320/241/321/202/320/260/320/275/320/264/320/260/321/200/321/202/321/213 /320/272/320/276/320/264/320/260//320/241/321/202/320/260/320/275/320/264/320/260/321/200/321/202/321/213 /320/272/320/276/320/264/320/260.mdx" +0 -29
  1012. package/src//320/240/320/260/320/267/321/200/320/260/320/261/320/276/321/202/320/272/320/260 (Contributing)//320/241/321/202/321/200/321/203/320/272/321/202/321/203/321/200/320/260 UI//320/232/320/276/320/274/320/277/320/276/320/275/320/265/320/275/321/202/321/213//320/232/320/276/320/274/320/277/320/276/320/275/320/265/320/275/321/202/321/213.mdx" +0 -41
  1013. package/src//320/240/320/260/320/267/321/200/320/260/320/261/320/276/321/202/320/272/320/260 (Contributing)//320/241/321/202/321/200/321/203/320/272/321/202/321/203/321/200/320/260 UI//320/232/320/276/320/274/320/277/320/276/320/275/320/265/320/275/321/202/321/213//320/241/321/202/320/270/320/273/320/270 /320/272/320/276/320/274/320/277/320/276/320/275/320/265/320/275/321/202/321/213.mdx" +0 -58
  1014. package/src//320/240/320/260/320/267/321/200/320/260/320/261/320/276/321/202/320/272/320/260 (Contributing)//320/241/321/202/321/200/321/203/320/272/321/202/321/203/321/200/320/260 UI//320/241/321/202/321/200/321/203/320/272/321/202/321/203/321/200/320/260 UI.mdx" +0 -11
  1015. package/src//320/240/320/260/320/267/321/200/320/260/320/261/320/276/321/202/320/272/320/260 (Contributing)//320/241/321/202/321/200/321/203/320/272/321/202/321/203/321/200/320/260 UI//320/243/321/202/320/270/320/273/320/270/321/202/321/213.mdx" +0 -5
  1016. package/storybook-dev.sh +0 -14
  1017. package/tsconfig.json +0 -91
  1018. package/typedoc.json +0 -20
  1019. package/vite.config.ts +0 -148
@@ -0,0 +1,138 @@
1
+ import { C as Core } from "../.chunks/forms-CRHjU2Mj.es.js";
2
+ import DOM from "../utils/dom.js";
3
+ class Worker {
4
+ /**
5
+ * Глобальное выключение закрытия меню, используется при различных оверлеях
6
+ */
7
+ static noClose = !1;
8
+ /**
9
+ * Для взаимодействия с vue
10
+ */
11
+ static vueConnectors = /* @__PURE__ */ new Map();
12
+ static options = {};
13
+ /**
14
+ * Вернуть объект компонента popup, привязанный к элементу
15
+ */
16
+ static getPopup(t) {
17
+ return DOM.storage(t, "TopPopup");
18
+ }
19
+ static getElPopupOpener(t) {
20
+ return t.closest("[data-top-popup]");
21
+ }
22
+ static getPopupFromOpener(t) {
23
+ const o = Worker.getElPopupOpener(t);
24
+ return o ? DOM.storage(o, "#TopPopup") : null;
25
+ }
26
+ /**
27
+ * Вернуть все элементы с Popup
28
+ */
29
+ static getAll() {
30
+ return DOM.querySelectorAllArray(document, ".top-popup-wrapper");
31
+ }
32
+ /**
33
+ * Вернуть все элементы с открытыми Popup
34
+ */
35
+ static getAllVisible() {
36
+ return DOM.querySelectorAllVisible(document, ".top-popup-wrapper");
37
+ }
38
+ /**
39
+ * Открыть Popup от указанного elOpener
40
+ * @param {HTMLElement} elOpener - элемент, который должен вызвать открытие Popup
41
+ */
42
+ static async openByOpener(t) {
43
+ if (!(t instanceof HTMLElement)) return;
44
+ const o = {};
45
+ return o.popup = t.dataset.topPopup, o.id = t.dataset.topPopupId, t.dataset.topPopupP && (o.p = parseInt(t.dataset.topPopupP)), t.dataset.topPopupPos && (o.p = parseInt(t.dataset.topPopupPos)), t.dataset.topPopupNotch && (o.notch = t.dataset.topPopupNotch === "true" || t.dataset.topPopupNotch === "1"), t.dataset.topPopupClass && (o.class = t.dataset.topPopupClass), t.dataset.topPopupPosBy && (o.posBy = t.dataset.topPopupPosBy), t.dataset.topPopupFront && (o.frontSelector = t.dataset.topPopupFront), t.dataset.topPopupInvertX && (o.invertX = t.dataset.topPopupInvertX === "true" || t.dataset.topPopupInvertX === "1"), t.dataset.topPopupOpenByHover && (o.openByHover = t.dataset.topPopupOpenByHover === "true" || t.dataset.topPopupOpenByHover === "1"), t.dataset.topPopupUseOriginal && (o.useOriginal = t.dataset.topPopupUseOriginal === "true" || t.dataset.topPopupUseOriginal === "1"), await Worker.open(t, o);
46
+ }
47
+ /**
48
+ * Создать и открыть Popup
49
+ * @param elOpener - элемент, вызвавший открытие Popup
50
+ * @param options - опции Popup
51
+ */
52
+ static async open(elOpener, options) {
53
+ elOpener instanceof HTMLElement && (elOpener.dataset.topPopupOpened = "opened");
54
+ const { TopLibPopup } = await import("../.chunks/popup-Dr3j_FOV.es.js");
55
+ if (Core.$) {
56
+ const $elOpener = Core.$(elOpener);
57
+ if ($elOpener.data("aftershow")) {
58
+ let afterShow = $elOpener.data("aftershow");
59
+ typeof afterShow == "string" && (afterShow = eval(afterShow.replace(/\W/g, ""))), $elOpener.one("aftershow.top-menu-popup", afterShow);
60
+ }
61
+ if ($elOpener.data("afterclose")) {
62
+ let afterclose = $elOpener.data("afterclose");
63
+ typeof afterclose == "string" && (afterclose = eval(afterclose.replace(/\W/g, ""))), $elOpener.one("afterclose.top-menu-popup", afterclose);
64
+ }
65
+ }
66
+ return options.isFullScreen = Core.state.isMobile, new TopLibPopup(elOpener, options);
67
+ }
68
+ static close(t, o = !0) {
69
+ const e = Worker.getPopup(t);
70
+ e && (e.close(), o && setTimeout(() => {
71
+ e.el.focus();
72
+ }));
73
+ }
74
+ static recalcPosition(t) {
75
+ const o = Worker.getPopup(t);
76
+ o && o.elPopupBody instanceof HTMLElement && o.recalcPosition();
77
+ }
78
+ /**
79
+ * Скролл к активному элементу списка
80
+ */
81
+ static scrollToActive(t) {
82
+ if (!DOM.querySelectorVisible(t, "ul.top-popup_content > li > .top-active"))
83
+ return;
84
+ const e = t.querySelector("ul.top-popup_content"), a = DOM.querySelectorAllVisible(t, "ul.top-popup_content > li");
85
+ t.classList.add("top-popup-wrapper-no_animate"), setTimeout(() => t.classList.remove("top-popup-wrapper-no_animate"), 100);
86
+ let r = 100;
87
+ for (const p of a) {
88
+ if (p.querySelector(":scope > .top-active"))
89
+ break;
90
+ p instanceof HTMLElement && (r += p.offsetHeight);
91
+ }
92
+ if (e instanceof HTMLElement) {
93
+ const p = e.offsetHeight;
94
+ r > p ? e.scrollTop = r - p : e.scrollTop = 0;
95
+ }
96
+ }
97
+ static decoratorBeforeOpen(t) {
98
+ this.options.decoratorBeforeOpen && this.options.decoratorBeforeOpen(t);
99
+ }
100
+ static decoratorAfterOpen(t) {
101
+ this.options.decoratorAfterOpen && this.options.decoratorAfterOpen(t);
102
+ }
103
+ static decoratorIsIgnoreOuterClick(t) {
104
+ return this.options.decoratorIsIgnoreOuterClick ? this.options.decoratorIsIgnoreOuterClick(t) : !1;
105
+ }
106
+ /**
107
+ * Зарегистрировать Vue компонент
108
+ *
109
+ * Каждый экземляр Popup регистрируется в словаре vueConnectors для последующего доступа из js
110
+ */
111
+ static regVueComponent(t, o) {
112
+ if (Worker.vueConnectors.get(t))
113
+ throw "Vue component Popup use duplicated id: " + t;
114
+ Worker.vueConnectors.set(t, o);
115
+ }
116
+ /**
117
+ * Снять с регистрации Vue компонент
118
+ */
119
+ static unregVueComponent(t) {
120
+ Worker.vueConnectors.delete(t);
121
+ }
122
+ /**
123
+ * Сгенерировать элемент для открытия popup
124
+ */
125
+ static genElPopupOpener(t, o, ...e) {
126
+ const a = DOM.genEl(t, {}, ...e);
127
+ a.dataset.topPopup = "#" + o.id;
128
+ for (let r in o) {
129
+ const p = "topPopup" + r.charAt(0).toUpperCase() + r.slice(1);
130
+ a.dataset[p] = o[r];
131
+ }
132
+ return a.__TopPopupOpenerProps = o, a;
133
+ }
134
+ }
135
+ export {
136
+ Worker as TopPopupWorker
137
+ };
138
+ //# sourceMappingURL=worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.js","sources":["../../src/components/popup/lib/worker.ts"],"sourcesContent":["/**\n * PopupWorker управляет работой Popup\n *\n * Должен грузить TopLibPopup только в отложенном режиме\n */\n\nimport Core from '@/core/core/core';\nimport DOM from '@/core/utils/dom';\nimport type { PopupOptions, TopLibPopup } from '@/components/popup/lib/popup';\nimport type { OpenerProps } from '@/components/popup/popup/types';\n\nexport type Options = {\n\t/**\n\t * Глобальное событие, которое будет вызвано перед открытием TopPopup\n\t */\n\tdecoratorBeforeOpen?: (popup: TopLibPopup) => void,\n\n\t/**\n\t * Глобальное событие, которое будет вызвано после открытия TopPopup\n\t */\n\tdecoratorAfterOpen?: (popup: TopLibPopup) => void;\n\n\t/**\n\t * Определитель того, что клик вне Popup нужно игнорировать\n\t * @returns {boolean} - если true, то click не приведет к закрытию Popup\n\t */\n\tdecoratorIsIgnoreOuterClick?: (e: MouseEvent) => boolean\n}\n\nclass Worker {\n\n\t/**\n\t * Глобальное выключение закрытия меню, используется при различных оверлеях\n\t */\n\tstatic noClose = false;\n\n\t/**\n\t * Для взаимодействия с vue\n\t */\n\tstatic vueConnectors = new Map();\n\n\tstatic options: Options = {};\n\n\t/**\n\t * Вернуть объект компонента popup, привязанный к элементу\n\t */\n\tstatic getPopup(elPopup: HTMLElement): TopLibPopup {\n\t\treturn DOM.storage(elPopup, 'TopPopup') as TopLibPopup;\n\t}\n\n\tstatic getElPopupOpener(el: Element): HTMLElement | null {\n\t\treturn el.closest<HTMLElement>('[data-top-popup]');\n\t}\n\n\tstatic getPopupFromOpener(el: HTMLElement): TopLibPopup | null {\n\t\tconst elOpener = Worker.getElPopupOpener(el);\n\t\tif (!elOpener) return null;\n\n\t\treturn DOM.storage(elOpener, '#TopPopup');\n\t}\n\n\t/**\n\t * Вернуть все элементы с Popup\n\t */\n\tstatic getAll(): HTMLElement[] {\n\t\treturn DOM.querySelectorAllArray(document, '.top-popup-wrapper');\n\t}\n\n\t/**\n\t * Вернуть все элементы с открытыми Popup\n\t */\n\tstatic getAllVisible(): HTMLElement[] {\n\t\treturn DOM.querySelectorAllVisible(document, '.top-popup-wrapper');\n\t}\n\n\t/**\n\t * Открыть Popup от указанного elOpener\n\t * @param {HTMLElement} elOpener - элемент, который должен вызвать открытие Popup\n\t */\n\tstatic async openByOpener(elOpener: HTMLElement): Promise<TopLibPopup | undefined> {\n\t\tif (!(elOpener instanceof HTMLElement)) return;\n\n\t\tconst options: PopupOptions = {};\n\n\t\toptions.popup = elOpener.dataset.topPopup;\n\n\t\toptions.id = elOpener.dataset.topPopupId;\n\n\t\t/**\n\t\t * @deprecated topPopupP - добавлено для обратной совместимости\n\t\t */\n\t\tif (elOpener.dataset.topPopupP) {\n\t\t\toptions.p = parseInt(elOpener.dataset.topPopupP);\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupPos) {\n\t\t\toptions.p = parseInt(elOpener.dataset.topPopupPos);\n\t\t}\n\n\t\t/**\n\t\t * @deprecated '1' - добавлено для обратной совместимости\n\t\t */\n\t\tif (elOpener.dataset.topPopupNotch) {\n\t\t\toptions.notch = elOpener.dataset.topPopupNotch === 'true' || elOpener.dataset.topPopupNotch === '1';\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupClass) {\n\t\t\toptions.class = elOpener.dataset.topPopupClass;\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupPosBy) {\n\t\t\toptions.posBy = elOpener.dataset.topPopupPosBy as PopupOptions['posBy'];\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupFront) {\n\t\t\toptions.frontSelector = elOpener.dataset.topPopupFront;\n\t\t}\n\n\t\t/**\n\t\t * @deprecated '1' - добавлено для обратной совместимости\n\t\t */\n\t\tif (elOpener.dataset.topPopupInvertX) {\n\t\t\toptions.invertX = elOpener.dataset.topPopupInvertX === 'true' || elOpener.dataset.topPopupInvertX === '1';\n\t\t}\n\n\t\t/**\n\t\t * @deprecated '1' - добавлено для обратной совместимости\n\t\t */\n\t\tif (elOpener.dataset.topPopupOpenByHover) {\n\t\t\toptions.openByHover = elOpener.dataset.topPopupOpenByHover === 'true' || elOpener.dataset.topPopupOpenByHover === '1';\n\t\t}\n\n\t\t/**\n\t\t * @deprecated '1' - добавлено для обратной совместимости\n\t\t */\n\t\tif (elOpener.dataset.topPopupUseOriginal) {\n\t\t\toptions.useOriginal = elOpener.dataset.topPopupUseOriginal === 'true' || elOpener.dataset.topPopupUseOriginal === '1';\n\t\t}\n\n\t\treturn await Worker.open(elOpener, options);\n\t}\n\n\t/**\n\t * Создать и открыть Popup\n\t * @param elOpener - элемент, вызвавший открытие Popup\n\t * @param options - опции Popup\n\t */\n\tprivate static async open(elOpener: HTMLElement, options: PopupOptions): Promise<TopLibPopup> {\n\t\tif (elOpener instanceof HTMLElement) elOpener.dataset.topPopupOpened = 'opened';\n\n\t\tconst { TopLibPopup } = await import('./popup');\n\n\t\tif (Core.$) {\n\t\t\tconst $elOpener = Core.$(elOpener);\n\n\t\t\t// deprecated, используется aftershow.top-menu-popup\n\t\t\tif ($elOpener.data('aftershow')) {\n\t\t\t\tlet afterShow = $elOpener.data('aftershow');\n\t\t\t\tif (typeof (afterShow) == 'string') {\n\t\t\t\t\t// TODO: Удалить с сайта указание кода функции в html\n\t\t\t\t\t// @deprecated\n\t\t\t\t\tafterShow = eval(afterShow.replace(/\\W/g, ''));\n\t\t\t\t}\n\n\t\t\t\t$elOpener.one('aftershow.top-menu-popup', afterShow);\n\t\t\t}\n\n\t\t\t// deprecated, используется afterclose.top-menu-popup\n\t\t\tif ($elOpener.data('afterclose')) {\n\t\t\t\tlet afterclose = $elOpener.data('afterclose');\n\t\t\t\tif (typeof (afterclose) == 'string') {\n\t\t\t\t\t// TODO: Удалить с сайта указание кода функции в html\n\t\t\t\t\t// @deprecated\n\t\t\t\t\tafterclose = eval(afterclose.replace(/\\W/g, ''));\n\t\t\t\t}\n\n\t\t\t\t$elOpener.one('afterclose.top-menu-popup', afterclose);\n\t\t\t}\n\t\t}\n\n\t\toptions.isFullScreen = Core.state.isMobile;\n\n\t\treturn new TopLibPopup(elOpener, options);\n\t}\n\n\tstatic close(elPopup: HTMLElement, restoreFocus = true): void {\n\t\tconst popup = Worker.getPopup(elPopup);\n\t\tif (popup) {\n\t\t\tpopup.close();\n\n\t\t\tif (restoreFocus) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tpopup.el.focus();\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic recalcPosition(elPopup: HTMLElement): void {\n\t\tconst popup = Worker.getPopup(elPopup);\n\t\tif (popup && popup.elPopupBody instanceof HTMLElement) {\n\t\t\tpopup.recalcPosition();\n\t\t}\n\t}\n\n\t/**\n\t * Скролл к активному элементу списка\n\t */\n\tstatic scrollToActive(elPopup: HTMLElement): void {\n\t\tconst elItemActive = DOM.querySelectorVisible(elPopup, 'ul.top-popup_content > li > .top-active');\n\t\tif (!elItemActive) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst elUl = elPopup.querySelector('ul.top-popup_content');\n\t\tconst elsLi = DOM.querySelectorAllVisible(elPopup, 'ul.top-popup_content > li');\n\n\t\telPopup.classList.add('top-popup-wrapper-no_animate');\n\t\tsetTimeout(() => elPopup.classList.remove('top-popup-wrapper-no_animate'), 100);\n\n\t\tlet top = 100;\n\t\tfor (const elLi of elsLi) {\n\t\t\tif (elLi.querySelector(':scope > .top-active')) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (elLi instanceof HTMLElement) top += elLi.offsetHeight;\n\t\t}\n\n\t\tif (elUl instanceof HTMLElement) {\n\t\t\tconst heightWrapper = elUl.offsetHeight;\n\t\t\tif (top > heightWrapper) {\n\t\t\t\telUl.scrollTop = top - heightWrapper;\n\t\t\t} else {\n\t\t\t\telUl.scrollTop = 0;\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic decoratorBeforeOpen(popup: TopLibPopup<any>): void {\n\t\tif (this.options.decoratorBeforeOpen) {\n\t\t\tthis.options.decoratorBeforeOpen(popup);\n\t\t}\n\t};\n\n\tstatic decoratorAfterOpen(popup: TopLibPopup<any>): void {\n\t\tif (this.options.decoratorAfterOpen) {\n\t\t\tthis.options.decoratorAfterOpen(popup);\n\t\t}\n\t};\n\n\tstatic decoratorIsIgnoreOuterClick(e: MouseEvent): boolean {\n\t\tif (this.options.decoratorIsIgnoreOuterClick) {\n\t\t\treturn this.options.decoratorIsIgnoreOuterClick(e);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Зарегистрировать Vue компонент\n\t *\n\t * Каждый экземляр Popup регистрируется в словаре vueConnectors для последующего доступа из js\n\t */\n\tstatic regVueComponent(id: string, vueConnector: any): void {\n\t\tif (Worker.vueConnectors.get(id)) {\n\t\t\tthrow 'Vue component Popup use duplicated id: ' + id;\n\t\t}\n\n\t\tWorker.vueConnectors.set(id, vueConnector);\n\t}\n\n\t/**\n\t * Снять с регистрации Vue компонент\n\t */\n\tstatic unregVueComponent(id: string): void {\n\t\tWorker.vueConnectors.delete(id);\n\t}\n\n\t/**\n\t * Сгенерировать элемент для открытия popup\n\t */\n\tstatic genElPopupOpener(tagName: string, props: OpenerProps, ...elsChildrens: HTMLElement[] | string[]): HTMLElement {\n\t\tconst el = DOM.genEl(tagName, {}, ...elsChildrens) as TopLibPopup['el'];\n\n\t\tel.dataset.topPopup = '#' + props.id;\n\n\t\t// if (props.pos === undefined) props.pos = '3';\n\t\t// if (props.notch === undefined) props.notch = true;\n\t\t// if (props.posBy === undefined) props.posBy = 'fixed';\n\n\t\tfor (let name in props) {\n\t\t\tconst attrName = 'topPopup' + name.charAt(0).toUpperCase() + name.slice(1);\n\n\t\t\tel.dataset[attrName] = props[name];\n\t\t}\n\n\t\tel.__TopPopupOpenerProps = props;\n\n\t\treturn el;\n\t}\n\n}\n\nexport default Worker;\n"],"names":["elPopup","el","elOpener","options","restoreFocus","popup","elUl","elsLi","top","elLi","heightWrapper","e","id","vueConnector","tagName","props","elsChildrens","name","attrName"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ define(["require","exports","vue","../.chunks/forms-D4uFd45i.amd","../.chunks/listItem.vue_vue_type_script_setup_true_lang-B2Q4gqK6.amd","../.chunks/menu.vue_vue_type_style_index_0_lang-bMtkdrEt.amd","../.chunks/utils-BgEQlXpF.amd","../utils/searchers.amd","../utils/dom.amd","../popup/worker.amd","../require/css.amd!../assets/project.css"],(function(ne,V,e,x,E,oe,le,P,_,ae){"use strict";if(typeof e>"u")var e=window.Vue;const re={class:"top-selectorCompetitors"},ie={class:"top-ellipsis1"},de=e.defineComponent({__name:"selectorCompetitors",props:e.mergeModels({modelValue:{},items:{},showSelectAllItem:{type:Boolean,default:!0}},{modelValue:{},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const l=n,r=e.useModel(n,"modelValue"),t=e.computed(()=>{if(l.showSelectAllItem)return{icon:"",title:x.useI18n().Common.Select_all,value:"all",content:""}});return(d,o)=>(e.openBlock(),e.createElementBlock("div",re,[e.unref(x.Core).state.isMobile?(e.openBlock(),e.createBlock(E._sfc_main,{key:0},{opener:e.withCtx(()=>[e.createVNode(x._sfc_main$1,{class:"top-selectorCompetitors_opener",color:"theme",icon:"",icon2:""},{default:e.withCtx(()=>{var a;return[e.createTextVNode(e.toDisplayString((a=d.items.find(s=>{var v;return s.value===((v=r.value)==null?void 0:v[0])}))==null?void 0:a.content),1)]}),_:1})]),contentList:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.items,a=>{var s;return e.openBlock(),e.createBlock(E._sfc_main$2,{class:e.normalizeClass({"top-active":(s=r.value)==null?void 0:s.includes(a.value)}),"data-top-icon":a.icon,title:a.title,onClick:()=>r.value=[a.value]},{default:e.withCtx(()=>[e.createElementVNode("span",ie,e.toDisplayString(a.content),1)]),_:2},1032,["class","data-top-icon","title","onClick"])}),256))]),_:1})):(e.openBlock(),e.createBlock(oe._sfc_main,{key:1,modelValue:r.value,"onUpdate:modelValue":o[0]||(o[0]=a=>r.value=a),items:d.items,isMultiple:!0,styling:"bar",canBeEmptyMultiple:!1,selectAllItem:t.value},null,8,["modelValue","items","selectAllItem"]))]))}}),ue=(n,l)=>e.computed(()=>e.toValue(n).filter(d=>d.on>=0||d.id===l).map(d=>({value:d.id,title:d.url+` [${d.id}]`,icon:d.id===e.toValue(l)?"":"",content:d.name}))),w=-1,p=-2,R=-1,se={0:"Yandex",1:"Google",4:"YouTube",5:"Bing",7:"Seznam",8:"AppStore",9:"GoogleStore",20:"Yandex.com",21:"Yandex.com.tr"},J={key:p,name:"--",index:p},G={key:p,name:"--",regions:[J],regionByIndex:new Map([[p,J]])},A={key:p,name:"Autoselect",index:p},U={key:p,name:"Autoselect",regions:[A],regionByIndex:new Map([[p,A]])},Y={countryCode:"00",depth:1,device:0,key:R,index:R,lang:"ru",name:"Without region"},ce=()=>(A.name=x.useI18n().Common.Autoselect,A),ge=()=>(ce(),U.name=x.useI18n().Common.Autoselect,console.log(U),U),fe=()=>(Y.name=x.useI18n().Keywords.Without_region,Y),z=(n=!1,l=!1,r=[])=>{let t;return n?t=me(r):t=W(r),l&&t.set(p,ge()),t.size||t.set(p,G),t},W=(n,l=!0,r=[],t=!1)=>{const d=new Map;return n.forEach(o=>{if(!o.enabled||t&&typeof o.key=="number"&&o.key>1)return;const a={...o};a.regionByIndex=new Map,o.regions&&o.regions.forEach(s=>{if(l&&!s.enabled)return;const v={...s};a.regionByIndex.set(v.index,v)}),!a.regionByIndex.size&&r.length,(!o.regions||a.regionByIndex.size||r.length)&&typeof a.key=="number"&&d.set(a.key,a)}),r.forEach(o=>{if(d.has(o))return;const a={key:o,name:se[o],regions:[],regionByIndex:new Map};d.set(a.key,a)}),d},me=n=>{const l=W(n,!1,[0,1],!0);if(l.has(2)){const r=l.get(2);r&&(r.regionByIndex=new Map)}return l.forEach(r=>{if(!r.regionByIndex)return;const t={...fe()};r.regionByIndex.set(t.index,t)}),l},H=(n,l,r=[])=>{const t=z(n,!1,r);let d;return t.forEach(o=>{if(!(l.searcher_key!==void 0&&l.searcher_key!=o.key)&&o.regions&&(o.regions.forEach(a=>{if(!d&&!(l.key!==void 0&&l.key!=a.key)&&!(l.index!==void 0&&l.index!=a.index)&&!(!n&&(l.lang!==void 0&&l.lang!=a.lang||l.device!==void 0&&l.device!=a.device)))return a.searcher_key=o.key,d=a,!1}),d))return!1}),d},Q=le.useAsyncTopDialog(()=>new Promise((n,l)=>ne(["../.chunks/dialog_selectorRegions-vQD6LBdY.amd"],n,l))),ve=(n,l)=>{const r=x.useI18n(),t=e.ref(l.value.keys().next().value??p),d=e.computed(()=>{const o=new Map;if(l.value.forEach(a=>{let s={value:a.key,title:a.name};n.addSearcherIcon&&(s.icon=P.getSearcherGIcon(a.key)),o.set(a.key,s)}),n.addCompare&&!o.has(p)){const a={value:"",title:"--------------------",disabled:!0};o.set(a.value,a);const s={value:w,title:r.Common.Compare};o.set(s.value,s)}return o});return{searcherKey:t,optionBySearcherKey:d}},ye=(n,l)=>{var o,a,s;const r=x.useI18n(),t=e.ref(p);n.modelValue.length===1&&(t.value=n.modelValue[0]),t.value===p&&(n.forFrequency?t.value=((a=(o=l.value)==null?void 0:o.regionByIndex.values().next().value)==null?void 0:a.key)??p:t.value=((s=l.value)==null?void 0:s.regionByIndex.keys().next().value)??p);const d=e.computed(()=>{var h;const v=new Map;return(h=l.value.regionByIndex)==null||h.forEach(k=>{let i=k.name;if(n.forFrequency){const I={value:k.key,title:i};v.has(k.key)||v.set(k.key,I);return}k.device&&(i+=" ("+r.Common["Device_"+k.device]+")");const f=P.getLangLabel(l.value.key||0,k.lang??"");f&&(i+=" / "+f);const c={value:k.index,title:i,icon:k.device?P.getDeviceGIcon(k.device):void 0};v.set(k.index,c)}),v});return e.watch(d,(v,h)=>{var c;if(n.onlySearcher||t.value!==void 0&&v.get(t.value))return;let k=v.keys().next().value;if(t.value===p||k===p){t.value=k;return}let i=((c=h==null?void 0:h.get(t.value))==null?void 0:c.title)||"",f=-1;for(const[I,B]of v.entries()){const C=B.title;if(typeof C!="string"||typeof I=="string")break;if(C===i){k=I;break}const T=new RegExp(` \\((${r.Common.Device_1}|${r.Common.Device_2})\\)`);let m=i,u=3;C.indexOf(m)===-1&&(m=i.replace(/^[^a-zа-я]/i,"").replace(T,""),u--),C.indexOf(m)===-1&&(m=i.replace(/ \/.*/,""),u--),C.indexOf(m)===-1&&(m=i.replace(/ \/.*/,""),m=m.replace(/^[^a-zа-я]/i,"").replace(T,""),u--),C.indexOf(m)!==-1&&(u<=f||(f=u,k=I))}t.value=k}),{regionIndex:t,optionByRegionIndex:d}},pe=(n,l,r)=>{const t=e.ref([]),d=()=>{if(n.onlySearcher&&l.value){t.value=Array.from(l.value.keys());return}let a=[];if(n.modelValue.length>1)a=[...n.modelValue];else try{a=JSON.parse(localStorage.getItem("ui:project:regionSelector"+n.projectId+":regionsIndexes"))??[]}catch{}a.length&&(a=a.filter(s=>r.value.has(s))),a.length||(a=Array.from(r.value)),t.value=[...a]},o=()=>{t.value.length?localStorage.setItem("ui:project:regionSelector:"+n.projectId+":regionsIndexes",JSON.stringify(t.value)):localStorage.removeItem("ui:project:regionSelector:"+n.projectId+":regionsIndexes")};return e.watch(t,()=>{o()}),n.addCompare&&d(),{regionsIndexes:t}},he=n=>{const l=e.computed(()=>z(n.forFrequency,n.autoRegion,n.searchers)),r=e.computed(()=>l.value.get(d.searcherKey.value)||G),t=e.computed(()=>{const i=new Set;return l.value.forEach(f=>{f.regionByIndex.forEach(c=>{c.index!==R&&c.index!==p&&i.add(c.index)})}),i}),d=ve(n,l),o=ye(n,r),a=pe(n,l,t);e.watch(l,()=>{var f,c,I,B;if(n.onlySearcher?a.regionsIndexes.value=Array.from(l.value.keys()):a.regionsIndexes.value=a.regionsIndexes.value.filter(C=>t.value.has(C)),d.searcherKey.value===w)return;let i=l.value.keys().next().value;l.value.forEach(C=>{var T,m,u;if(n.onlySearcher&&C.key===d.searcherKey.value){i=d.searcherKey.value;return}if(o.regionIndex.value&&((T=C.regionByIndex)!=null&&T.has(o.regionIndex.value))&&(i=C.key),!n.onlySearcher){let g;i!==void 0&&(g=(m=l.value.get(i))==null?void 0:m.regionByIndex);const y=(u=l.value.get(C.key))==null?void 0:u.regionByIndex;g!=null&&g.has(p)&&!(y!=null&&y.has(p))&&(i=C.key)}}),i!==void 0&&(d.searcherKey.value=i),o.regionIndex.value!==void 0&&!((c=(f=r.value)==null?void 0:f.regionByIndex)!=null&&c.has(o.regionIndex.value))&&(o.regionIndex.value=(B=(I=r.value)==null?void 0:I.regions)==null?void 0:B.keys().next().value)},{immediate:!0});const s=()=>{if(!(d.searcherKey.value===w||d.searcherKey.value===p))return d.searcherKey.value},v=()=>{if(n.onlySearcher||o.regionIndex.value===p)return;let i=o.regionIndex.value;if(n.forFrequency){const f=o.regionIndex.value,c=H(n.forFrequency,{searcher_key:s(),key:f},n.searchers);i=c==null?void 0:c.index}return i},h=()=>{const i=s();if(i!==void 0)return l.value.get(i)};return{selectSearcher:d,selectRegion:o,compare:a,searcherByKey:l,allRegionsIndexes:t,getSearcher:h,getRegion:()=>{var f,c;const i=v();if(i!==void 0)return(c=(f=h())==null?void 0:f.regionByIndex)==null?void 0:c.get(i)}}},ke=e.defineComponent({__name:"selectorRegion",props:e.mergeModels({projectId:{},searchers:{default:()=>[]},modelValue:{},modelValueSingle:{},addCompare:{type:Boolean},forFrequency:{type:Boolean},autoRegion:{type:Boolean},onlySearcher:{type:Boolean},addChanger:{type:Boolean,default:!0},addSearcherIcon:{type:Boolean,default:!0},addRegionIcon:{type:Boolean,default:!0}},{modelValue:{required:!0},modelModifiers:{},modelValueSingle:{},modelValueSingleModifiers:{}}),emits:["update:modelValue","update:modelValueSingle"],setup(n,{expose:l}){const r=n,t=e.useModel(n,"modelValue"),d=e.useModel(n,"modelValueSingle"),{selectSearcher:o,selectRegion:a,compare:s,searcherByKey:v,allRegionsIndexes:h,getSearcher:k,getRegion:i}=he(r),f=()=>{const c=[];v.value.forEach(I=>{I.enabled&&I.regions.forEach(B=>{B.enabled&&c.push(B)})}),Q.open("selectorRegions",{regions:c,regionsIndexes:s.regionsIndexes.value,"@update:regionsIndexes":I=>s.regionsIndexes.value=I})};return e.watch([a.regionIndex,o.searcherKey,s.regionsIndexes],()=>{if(o.searcherKey.value===w&&s.regionsIndexes.value.length){if(JSON.stringify(t.value)===JSON.stringify(s.regionsIndexes.value))return;t.value=[...s.regionsIndexes.value]}else r.onlySearcher?(t.value=[o.searcherKey.value],o.searcherKey.value===p&&!r.autoRegion&&(t.value.length=0)):(t.value=[a.regionIndex.value],a.regionIndex.value===p&&!r.autoRegion&&(t.value.length=0));!r.onlySearcher&&!h.value.size&&(o.searcherKey.value=p)}),d.value&&e.watch(d,()=>{d.value&&(t.value=[d.value])},{immediate:!0}),e.watch(t,()=>{var c,I,B,C,T;if(t.value[0]&&(d.value=t.value[0]),r.onlySearcher){if(!t.value.length||t.value.length===1&&!v.value.has(t.value[0])||t.value.length===1&&t.value[0]===p&&!r.autoRegion){let m=v.value.keys().next().value;m===p&&!r.autoRegion&&(m=void 0,d.value=p),m!==void 0?t.value=[m]:t.value.length=0;return}if(t.value.length>1&&JSON.stringify(t.value)!==JSON.stringify(s.regionsIndexes.value)){t.value=[...s.regionsIndexes.value];return}}else{let m=[...new Set(t.value)],u=(I=(c=v.value.values().next().value)==null?void 0:c.regionByIndex)==null?void 0:I.keys().next().value;if(r.forFrequency&&(u=(T=(C=(B=v.value.values().next().value)==null?void 0:B.regionByIndex)==null?void 0:C.values().next().value)==null?void 0:T.key),u===p&&!r.autoRegion&&(u=void 0,d.value=p),!m.length)u!==void 0&&m.push(u);else if(m.length===1){let g=h.value;r.forFrequency&&(g=new Set,v.value.forEach(y=>{y.regionByIndex.forEach(S=>{S.index!==R&&S.index!==p&&g.add(S.key)})})),g.has(m[0])||(m=[],u!==void 0&&m.push(u))}else m=m.filter(g=>h.value.has(g)),!m.length&&u!==void 0&&m.push(u);if(JSON.stringify(t.value)!==JSON.stringify(m)){t.value=m;return}}if(!(t.value.length===1&&t.value[0]===(r.onlySearcher?o.searcherKey.value:a.regionIndex.value)))if(r.onlySearcher){if(t.value.length===1){o.searcherKey.value=t.value[0];return}o.searcherKey.value=w;return}else{if(!t.value.length)return;if(t.value.length===1&&o.searcherKey.value!==w){a.regionIndex.value=t.value[0];let m;for(const u of v.value.values()){for(const g of u.regionByIndex.values())if((r.forFrequency?g.key:g.index)===a.regionIndex.value){m=u.key;break}if(m!==void 0)break}m!==void 0&&(o.searcherKey.value=m)}else o.searcherKey.value=w,s.regionsIndexes.value=[...t.value]}},{immediate:!0}),l({getSearcher:k,getRegion:i}),(c,I)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"top-selectorRegion":!0,"top-selectorRegion-onlySearcher":c.onlySearcher})},[e.createVNode(x._sfc_main$9,{options:e.unref(o).optionBySearcherKey.value,modelValue:e.unref(o).searcherKey.value,"onUpdate:modelValue":I[0]||(I[0]=B=>e.unref(o).searcherKey.value=B),name:"searcher_key",addChanger:c.addChanger},null,8,["options","modelValue","addChanger"]),!c.onlySearcher&&e.unref(o).searcherKey.value!==e.unref(w)?(e.openBlock(),e.createBlock(x._sfc_main$9,{key:0,class:"top-select-region",options:e.unref(a).optionByRegionIndex.value,modelValue:e.unref(a).regionIndex.value,"onUpdate:modelValue":I[1]||(I[1]=B=>e.unref(a).regionIndex.value=B),name:c.forFrequency?"region_key":"region_index",addChanger:c.addChanger,"data-top-icon":c.addRegionIcon?"":void 0},null,8,["options","modelValue","name","addChanger","data-top-icon"])):e.createCommentVNode("",!0),c.addCompare&&!c.onlySearcher&&e.unref(o).searcherKey.value===e.unref(w)?(e.openBlock(),e.createBlock(x._sfc_main$1,{key:1,name:"compare",onClick:f,"data-count-compare-regions-indexes":e.unref(s).regionsIndexes.value.length},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(c.$i18n.Common.Selected_regions),1)]),_:1},8,["data-count-compare-regions-indexes"])):e.createCommentVNode("",!0)],2))}}),X=n=>"-"+n,K=n=>n[0]==="-"?n.substring(1):n,O=(n,l)=>{n=K(n);const r=l.find(t=>t.id===n);if(r)return r},Se=(n,l,r)=>{l||(l={id:n.id}),l.id=n.id;const t=ae.TopPopupWorker.genElPopupOpener("div",l);return t.classList.add("top-tagSelector"),n.useTopButton&&t.classList.add("top-button","top-color_theme"),n.mode==="filter"&&t.classList.add("top-tagSelector-filter"),n.mode==="setter"&&!n.filters&&t.classList.add("top-tagSelector-setter_single"),n.mode==="setter"&&n.filters&&t.classList.add("top-tagSelector-setter_several"),t.onclick=d=>{d.preventDefault(),d.stopPropagation(),t.onclick=null;const o=e.ref(n.modelValue),a={model:o,mode:n.mode,targetId:n.targetId,filters:n.filters,payload:n.payload};_.storage(t,"topTagSelectorTarget",a),delete t.dataset.topPopupDisabled,e.isRef(n.modelValue)||e.watch(o,()=>{n.modelValue=o.value,D(t,n,r)}),t.click()},e.isRef(n.modelValue)?e.watch(n.modelValue,()=>D(t,n,r)):_.storage(t,"topTagSelectorRender",d=>{n.modelValue=d;const o=_.storage(t,"topTagSelectorTarget");o&&(o.model.value=d),D(t,n,r)}),D(t,n,r),t},Ie=(n,l)=>{var r;(r=_.storage(n,"topTagSelectorRender"))==null||r(l)},D=(n,l,r)=>{var d;const t=e.unref(l.modelValue);if(n.classList.toggle("top-tagSelector-selectedOne",!t.length||t.length===1),n.classList.toggle("top-tagSelector-toTwoLine",t.length>5),l.mode==="setter"&&l.filters){n.innerHTML=`<div>${r}</div>`;return}if(n.innerHTML="",!t.length&&l.mode==="filter"){const o=Z({id:"all",colorId:"",name:((d=x.useI18n().Common)==null?void 0:d.All_tags)??"",state:""});n.append(o)}t.forEach(o=>{var s,v;const a=Z({id:K(o),colorId:((s=O(o,l.tags))==null?void 0:s.color_id)??"",name:((v=O(o,l.tags))==null?void 0:v.name)??"",state:K(o)===o?"selected":"excluded"});n.append(a)})},Z=n=>{const l=document.createElement("div");return l.classList.add("top-tagSelector_tagIcon"),l.classList.toggle("top-tagSelector-active",!!n.state),l.classList.toggle("top-tagSelector-excluded",n.state==="excluded"),l.dataset.tag_id=n.id,l.dataset.tag_color_id=n.colorId,l.title=n.name,l},xe=[{id:"1",name:"Without Tag",color_id:"1"},{id:"2",name:"Red",color_id:"2"},{id:"3",name:"Orange",color_id:"3"},{id:"4",name:"Yellow",color_id:"4"},{id:"5",name:"Blue",color_id:"5"},{id:"6",name:"Purple",color_id:"6"},{id:"7",name:"Green",color_id:"7"},{id:"8",name:"Magenta",color_id:"8"},{id:"9",name:"Dark blue",color_id:"9"},{id:"10",name:"Turquoise",color_id:"10"}],Ce=["data-tag_id","data-tag_color_id","title"],F=e.defineComponent({__name:"tagIcon",props:{id:{},colorId:{},name:{},state:{}},setup(n){return(l,r)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"top-tagSelector_tagIcon":!0,"top-tagSelector-active":!!l.state,"top-tagSelector-excluded":l.state==="excluded"}),"data-tag_id":l.id,"data-tag_color_id":l.colorId,title:l.name},null,10,Ce))}}),Be=["contenteditable","onKeydown"],ee=e.defineComponent({__name:"tagPopupListItem",props:e.mergeModels({editable:{type:Boolean},disabled:{type:Boolean},canExclude:{type:Boolean},id:{},colorId:{},name:{},state:{}},{name:{required:!0},nameModifiers:{}}),emits:e.mergeModels(["update:name","unselect","exclude","select"],["update:name"]),setup(n,{emit:l}){const r=n,t=l,d=e.useModel(n,"name"),o=e.ref(null),a=e.computed(()=>navigator.userAgent.indexOf("Firefox")!=-1?{contenteditable:s.value,onpaste:f=>f.preventDefault()}:{}),s=e.ref(!1),v=async()=>{var f;s.value=!0,await e.nextTick(),(f=o.value)==null||f.focus()},h=()=>{var c;const f=(c=o.value)==null?void 0:c.innerText;if(!f)return k();o.value&&(o.value.innerText=f),s.value=!1,t("update:name",f)},k=async()=>{o.value&&(o.value.innerText=r.name),s.value=!1},i=f=>{if(s.value||r.disabled)return;let c="selected";r.canExclude&&(f.ctrlKey||f.metaKey)&&(c="excluded"),r.state==c&&(c=""),c===""&&t("unselect"),c==="selected"&&t("select"),c==="excluded"&&t("exclude")};return(f,c)=>(e.openBlock(),e.createBlock(E._sfc_main$2,{class:e.normalizeClass({"top-tagSelector_tagListItem":!0,"top-tagSelector_tagListItem-inEdit":s.value,"top-tagSelector_tagListItem-disabled":f.disabled,"top-tagSelector_tagListItem-canExclude":f.canExclude,"top-tagSelector-active":!!f.state,"top-tagSelector-excluded":f.state==="excluded"}),onClick:e.withModifiers(i,["stop"])},{default:e.withCtx(()=>[e.createVNode(F,{id:f.id,name:d.value,colorId:f.colorId,state:f.state},null,8,["id","name","colorId","state"]),e.createElementVNode("span",e.mergeProps({ref_key:"elName",ref:o,class:"top-tagSelector_tagListItemName",contenteditable:s.value?"plaintext-only":!1},a.value,{onKeydown:[e.withKeys(e.withModifiers(h,["stop"]),["enter"]),e.withKeys(e.withModifiers(k,["stop"]),["esc"])]}),e.toDisplayString(d.value),17,Be),f.editable?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[s.value?(e.openBlock(),e.createElementBlock("span",{key:1,"data-top-icon":"",class:"top-tagSelector_edit",onClick:e.withModifiers(h,["stop"])})):(e.openBlock(),e.createElementBlock("span",{key:0,"data-top-icon":"",class:"top-tagSelector_edit",onClick:v}))],64)):e.createCommentVNode("",!0)]),_:1},8,["class"]))}}),Ve={key:1},te=e.defineComponent({inheritAttrs:!1,__name:"popupOpener",props:e.mergeModels({modelValue:{},id:{},tags:{},mode:{},targetId:{},filters:{},useTopButton:{type:Boolean},payload:{},styling:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const l=n,r=e.useModel(n,"modelValue"),t=l.useTopButton?x._sfc_main$1:"div",d=l.useTopButton?"html":"default",o={model:r,mode:l.mode,targetId:l.targetId,filters:l.filters,payload:l.payload};return(a,s)=>{const v=e.resolveDirective("top-data");return e.openBlock(),e.createBlock(E._sfc_main$1,{id:a.id},{default:e.withCtx(()=>[e.withDirectives((e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(t)),e.mergeProps({class:{"top-tagSelector":!0,"top-tagSelector-filter":l.mode==="filter","top-tagSelector-setter_single":l.mode==="setter"&&!a.filters,"top-tagSelector-setter_several":l.mode==="setter"&&a.filters,"top-tagSelector-selectedOne":!r.value.length||r.value.length===1,"top-tagSelector-toTwoLine":r.value.length>5},color:"theme",styling:a.styling},a.$attrs),{[e.unref(d)]:e.withCtx(()=>[!r.value.length&&a.mode==="filter"?(e.openBlock(),e.createBlock(F,{key:0,id:"all",colorId:"",name:a.$i18n.Common.All_tags??"",state:""},null,8,["name"])):e.createCommentVNode("",!0),a.mode==="setter"&&a.filters?(e.openBlock(),e.createElementBlock("div",Ve,[e.renderSlot(a.$slots,"default")])):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:2},e.renderList(r.value,h=>{var k,i;return e.openBlock(),e.createBlock(F,{id:e.unref(K)(h),colorId:((k=e.unref(O)(h,a.tags))==null?void 0:k.color_id)??"",name:((i=e.unref(O)(h,a.tags))==null?void 0:i.name)??"",state:e.unref(K)(h)===h?"selected":"excluded"},null,8,["id","colorId","name","state"])}),256))]),_:2},1040,["class","styling"])),[[v,o,"topTagSelectorTarget"]])]),_:3},8,["id"])}}}),Te=e.defineComponent({__name:"tagSelector",props:e.mergeModels({modelValue:{},tags:{},tagsEditable:{type:Boolean},tagsMax:{default:10},id:{},singleMode:{type:Boolean},requiredForSetter:{type:Boolean,default:!0},maxTagsForSetter:{},emitDelay:{default:500},styling:{}},{modelValue:{required:!0},modelModifiers:{},tags:{default:e.reactive(xe)},tagsModifiers:{}}),emits:e.mergeModels(["selector","setter","tagsChanged"],["update:modelValue","update:tags"]),setup(n,{emit:l}){const r=x.useI18n(),t=n,d=e.useModel(n,"modelValue"),o=e.useModel(n,"tags"),a=l,s=x.debounce((u,g)=>{a(u,g)},t.emitDelay);t.singleMode&&!d.value.length&&(d.value=[o.value[0].id]);const v=t.id??"top-popup-id-"+Math.random(),h=e.ref("add"),k=()=>{var y;const u=" "+((y=r.Common.Tags)==null?void 0:y.toLowerCase()),g=new Map;return g.set("add",{value:"add",title:r.Common.Add+u}),g.set("replace",{value:"replace",title:r.Common.Replace+u}),g.set("delete",{value:"delete",title:r.Common.Delete+u}),g};let i=e.shallowRef({model:d,mode:"filter",targetId:void 0,filters:void 0,payload:void 0});e.watch(d,()=>{s("selector",d.value)});const f=e.computed(()=>{if(i.value.mode==="setter"&&t.maxTagsForSetter&&!i.value.filters)return i.value.model.value.length>=t.maxTagsForSetter}),c=u=>{if(u!=="all"){if(i.value.model.value.includes(u))return"selected";if(i.value.model.value.includes(X(u)))return"excluded"}return u==="all"&&!i.value.model.value.length?"selected":""},I=(u,g)=>{const y=X(u);let S=i.value.model.value.filter(M=>M!==u&&M!==y);g==="select"&&S.push(u),g==="exclude"&&S.push(y),i.value.mode==="setter"&&i.value.targetId!==void 0&&t.requiredForSetter&&(S.length||S.push("1"),S.length===2&&i.value.model.value.length===1&&i.value.model.value[0]==="1"&&(S=S.filter(M=>M!=="1"))),t.singleMode&&!i.value.filters&&(S.length||(S=i.value.model.value),S.length>1&&(S=[S[S.length-1]])),S.sort((M,N)=>{if(!t.tags)return 0;const q=t.tags.findIndex(b=>b.id===M),L=t.tags.findIndex(b=>b.id===N);return q-L}),i.value.model.value=S,i.value.mode==="setter"&&i.value.targetId!==void 0&&s("setter",{tagsIds:S,targetId:i.value.targetId,payload:i.value.payload})},B=e.computed(()=>{let u="top-tagSelector_popup";return i.value.mode==="filter"&&(u+=" top-tagSelector_popup-filter"),i.value.mode==="setter"&&(u+=" top-tagSelector_popup-setter"),u}),C=()=>{const u=prompt("","New tag");if(!u||u==="New tag")return;const g=o.value.length+1;o.value.push({id:String(g),name:u,color_id:String((g-1)%10+1)}),a("tagsChanged",o.value)},T=u=>{var g;if(i.value=_.storage(u.elPopupOpener,"topTagSelectorTarget"),!i.value)throw new Error("Open popup TopTagSelector required v-data:topTagSelectorTarget");if(i.value.filters&&(h.value="add",i.value.model.value=[]),!((g=x.Core.$)!=null&&g.ui.sortable)){console.info("Для работы сортировки требуется глобальная загрузка jQuery UI Sortable");return}!x.Core.state.isMobile&&!x.Core.state.isMobileUA&&o.value&&$(u.elPopup).sortable({items:'li:has([data-tag_id]:not([data-tag_id="all"]))',cancel:'[contenteditable="plaintext-only"], [contenteditable="true"]',distance:10,stop:function(y,S){if(!o.value)return;const M=$(S.item).parent().find("[data-tag_id]"),N=[];M.each((q,L)=>{if(!o.value)return;const b=$(L).attr("data-tag_id");N.push(b)}),o.value.sort((q,L)=>{const b=N.findIndex(j=>j===q.id),we=N.findIndex(j=>j===L.id);return b-we}),s("tagsChanged",o.value)}})},m=u=>{var g;(g=x.Core.$)!=null&&g.ui.sortable&&$(u.elPopup).data("ui-sortable")&&$(u.elPopup).sortable("destroy")};return(u,g)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(te,{class:"top-as-selector",modelValue:d.value,"onUpdate:modelValue":g[0]||(g[0]=y=>d.value=y),id:e.unref(v),tags:o.value,styling:u.styling,mode:"filter",useTopButton:""},null,8,["modelValue","id","tags","styling"]),e.createVNode(E._sfc_main,{id:e.unref(v),class:e.normalizeClass(B.value),onOpen:g[4]||(g[4]=y=>T(y)),onClose:g[5]||(g[5]=y=>m(y)),"transition-duration":50},e.createSlots({contentList:e.withCtx(()=>[e.unref(i).mode==="filter"&&!u.singleMode?(e.openBlock(),e.createBlock(ee,{key:0,id:"all",colorId:"",name:u.$i18n.Common.All_tags??"",state:e.unref(i).model.value.length?"":"selected",onSelect:g[3]||(g[3]=y=>e.unref(i).model.value=[])},null,8,["name","state"])):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,y=>(e.openBlock(),e.createBlock(ee,{key:y.id,id:y.id,colorId:y.color_id,name:y.name,state:c(y.id),canExclude:e.unref(i).mode==="filter"&&!u.singleMode,editable:u.tagsEditable,disabled:f.value&&c(y.id)==="",onUnselect:S=>I(y.id,"unselect"),onSelect:S=>I(y.id,"select"),onExclude:S=>I(y.id,"exclude"),"onUpdate:name":S=>{y.name=S,e.unref(s)("tagsChanged",o.value)}},null,8,["id","colorId","name","state","canExclude","editable","disabled","onUnselect","onSelect","onExclude","onUpdate:name"]))),128)),u.tagsEditable&&o.value.length<u.tagsMax&&o.value.length<20?(e.openBlock(),e.createBlock(E._sfc_main$2,{key:1,"data-top-icon":"",onClick:e.withModifiers(C,["stop"])},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(u.$i18n.Common.Add),1)]),_:1})):e.createCommentVNode("",!0)]),_:2},[e.unref(i).mode==="setter"&&e.unref(i).filters?{name:"header",fn:e.withCtx(()=>[e.createVNode(x._sfc_main$9,{modelValue:h.value,"onUpdate:modelValue":g[1]||(g[1]=y=>h.value=y),options:k()},null,8,["modelValue","options"])]),key:"0"}:void 0,e.unref(i).mode==="setter"&&e.unref(i).filters?{name:"footer",fn:e.withCtx(()=>[e.createVNode(x._sfc_main$1,{color:"theme"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(u.$i18n.Common.Cancel),1)]),_:1}),e.createVNode(x._sfc_main$1,{onClick:g[2]||(g[2]=y=>e.unref(s)("setter",{tagsIds:e.unref(i).model.value,filters:e.unref(i).filters,filtersAction:h.value,payload:e.unref(i).payload}))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(h.value==="add"?u.$i18n.Common.Add:"")+" "+e.toDisplayString(h.value==="replace"?u.$i18n.Common.Replace:"")+" "+e.toDisplayString(h.value==="delete"?u.$i18n.Common.Remove:""),1)]),_:1})]),key:"1"}:void 0]),1032,["id","class"])],64))}});V.TopSelectorCompetitors=de,V.TopSelectorRegion=ke,V.TopTagSelector=Te,V.TopTagSelectorPopupOpener=te,V.TopTagSelectorTagIcon=F,V.dialogSelectorRegions=Q,V.findRegion=H,V.genElTopTagSelectorPopupOpener=Se,V.genSearcherByKey=z,V.renderElTopTagSelectorPopupOpener=Ie,V.useItemsFromCompetitors=ue,Object.defineProperty(V,Symbol.toStringTag,{value:"Module"})}));
2
+ //# sourceMappingURL=project.amd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.amd.js","sources":["../../src/components/project/selectorCompetitors/selectorCompetitors.vue","../../src/components/project/selectorCompetitors/composables.ts","../../src/components/project/selectorRegion/utils/consts.ts","../../src/components/project/selectorRegion/utils/utils.ts","../../src/components/project/selectorRegion/composables/selectSearcher.ts","../../src/components/project/selectorRegion/composables/selectRegion.ts","../../src/components/project/selectorRegion/composables/compare.ts","../../src/components/project/selectorRegion/composables/selectorRegion.ts","../../src/components/project/selectorRegion/selectorRegion.vue","../../src/components/project/tagSelector/utils/utils.ts","../../src/components/project/tagSelector/utils/el.ts","../../src/components/project/tagSelector/tagsDefaults.ts","../../src/components/project/tagSelector/tagIcon/tagIcon.vue","../../src/components/project/tagSelector/popupListItem/tagPopupListItem.vue","../../src/components/project/tagSelector/popupOpener/popupOpener.vue","../../src/components/project/tagSelector/tagSelector.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport type { Props } from './types';\nimport Core from '@/core/core/core';\nimport Button from '@/components/forms/button/button.vue';\nimport Popup from '@/components/popup/popup/popup.vue';\nimport ListItem from '@/components/popup/popup/listItem.vue';\nimport Menu from '@/components/formsExt/menu/menu.vue';\nimport { useI18n } from '@/core/plugins/i18n';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tshowSelectAllItem: true,\n});\nconst model = defineModel<Props['modelValue']>();\n\nconst selectAllItem = computed(() => {\n\tif (props.showSelectAllItem) {\n\t\treturn {\n\t\t\ticon: '',\n\t\t\ttitle: useI18n().Common.Select_all,\n\t\t\tvalue: 'all',\n\t\t\tcontent: '',\n\t\t};\n\t}\n});\n</script>\n\n<template>\n\t<div class=\"top-selectorCompetitors\">\n\t\t<Popup v-if=\"Core.state.isMobile\">\n\t\t\t<template #opener>\n\t\t\t\t<Button\n\t\t\t\t\tclass=\"top-selectorCompetitors_opener\"\n\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\ticon=\"\"\n\t\t\t\t\ticon2=\"\"\n\t\t\t\t>\n\t\t\t\t\t{{ items.find((item) => item.value === model?.[0])?.content }}\n\t\t\t\t</Button>\n\t\t\t</template>\n\n\t\t\t<template #contentList>\n\t\t\t\t<ListItem\n\t\t\t\t\tv-for=\"(item) in items\"\n\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t'top-active': model?.includes(item.value)\n\t\t\t\t\t}\"\n\t\t\t\t\t:data-top-icon=\"item.icon\"\n\t\t\t\t\t:title=\"item.title\"\n\t\t\t\t\t@click=\"() => model = [item.value]\"\n\t\t\t\t>\n\t\t\t\t\t<span class=\"top-ellipsis1\">\n\t\t\t\t\t\t{{ item.content }}\n\t\t\t\t\t</span>\n\t\t\t\t</ListItem>\n\t\t\t</template>\n\t\t</Popup>\n\n\t\t<Menu\n\t\t\tv-else\n\t\t\tv-model=\"model\"\n\t\t\t:items=\"items\"\n\t\t\t:isMultiple=\"true\"\n\t\t\tstyling=\"bar\"\n\t\t\t:canBeEmptyMultiple=\"false\"\n\t\t\t:selectAllItem=\"selectAllItem\"\n\t\t/>\n\t</div>\n</template>\n\n<style>\n.top-selectorCompetitors_opener.top-button {\n\twidth: 100%;\n}\n</style>\n","import type { MaybeRefOrGetter } from 'vue';\nimport { computed, toValue } from 'vue';\nimport type { Competitor, Item } from '@/components/project/selectorCompetitors/types';\n\nexport const useItemsFromCompetitors = (competitors: MaybeRefOrGetter<Competitor[]>, projectId: MaybeRefOrGetter<number>) => {\n\treturn computed(() => {\n\t\tconst activeCompetitors = toValue(competitors).filter(competitor => competitor.on >= 0 || competitor.id === projectId);\n\n\t\tconst items: Item[] = activeCompetitors.map(competitor => {\n\t\t\treturn {\n\t\t\t\tvalue: competitor.id,\n\t\t\t\ttitle: competitor.url + ` [${competitor.id}]`,\n\t\t\t\ticon: competitor.id === toValue(projectId) ? '' : '',\n\t\t\t\tcontent: competitor.name,\n\t\t\t};\n\t\t});\n\n\t\treturn items;\n\t});\n};\n","import type { Region, SearcherIndexed } from '../types';\nimport { useI18n } from '@/core/plugins/i18n';\n\n/**\n * Ключ ПС - для выбора нескольких ПС или регионов\n */\nexport const searhcerCompareKey = -1;\n\n/**\n * Ключ ПС или индекса Региона, используется для ПС или Региона, не настроенных в проекте\n *\n * Также, используется для API с возможностью не указывать регион, см. `props.autoRegion`\n */\nexport const dummyIndex = -2;\n\n/**\n * Регион - без региона\n */\nexport const globalRegionIndex = -1;\n\nexport const searchersNames = {\n\t0: 'Yandex',\n\t1: 'Google',\n\t4: 'YouTube',\n\t5: 'Bing',\n\t7: 'Seznam',\n\t8: 'AppStore',\n\t9: 'GoogleStore',\n\t20: 'Yandex.com',\n\t21: 'Yandex.com.tr',\n};\n\nexport const regionUndefined: Region = {\n\tkey: dummyIndex,\n\tname: '--',\n\tindex: dummyIndex,\n};\n\nexport const searcherUndefined: SearcherIndexed = {\n\tkey: dummyIndex,\n\tname: '--',\n\tregions: [regionUndefined],\n\tregionByIndex: new Map([[dummyIndex, regionUndefined]]),\n};\n\nconst regionAuto: Region = {\n\tkey: dummyIndex,\n\tname: 'Autoselect',\n\tindex: dummyIndex,\n};\n\nconst searcherAuto: SearcherIndexed = {\n\tkey: dummyIndex,\n\tname: 'Autoselect',\n\tregions: [regionAuto],\n\tregionByIndex: new Map([[dummyIndex, regionAuto]]),\n};\n\nconst regionGlobal: Region = {\n\tcountryCode: '00',\n\tdepth: 1,\n\tdevice: 0,\n\tkey: globalRegionIndex,\n\tindex: globalRegionIndex,\n\tlang: 'ru',\n\tname: 'Without region',\n};\n\nexport const getRegionAuto = () => {\n\tregionAuto.name = useI18n().Common.Autoselect!;\n\n\treturn regionAuto;\n};\n\nexport const getSearcherAuto = () => {\n\tgetRegionAuto();\n\n\tsearcherAuto.name = useI18n().Common.Autoselect!;\n\tconsole.log(searcherAuto);\n\n\treturn searcherAuto;\n};\n\nexport const getRegionGlobal = () => {\n\tregionGlobal.name = useI18n().Keywords.Without_region!;\n\n\treturn regionGlobal;\n};\n","import type { Region, Searcher, SearcherByKey, SearcherIndexed } from '../types';\nimport { dummyIndex, getRegionGlobal, getSearcherAuto, searchersNames, searcherUndefined } from './consts';\nimport { useAsyncTopDialog } from '@/components/dialog/dialog/composables/utils';\n\n/**\n * Генерация Map ПС с Map регионов из массива searchers\n * - ключ для ПС - searcherKey\n * - ключ для региона - regionIndex\n *\n * Если поисковиков в списке нет, в список будет добавлен searcherUndefined\n *\n * Если регионов в списке нет, в список будет добавлен regionUndefined\n *\n * @param forFrequency - получить массив для просмотра частоты (или ставок)\n * @param autoRegion - добавить элемент с ключем -2, который в API заменяется на нужный ключ в зависимости от контекста\n * @param searchers - поисковики с регионами проекта, см.: get/projects_2/projects, show_searchers_and_regions = 1\n */\nexport const genSearcherByKey = (\n\tforFrequency: boolean = false,\n\tautoRegion: boolean = false,\n\tsearchers: Searcher[] = [],\n) => {\n\tlet searcherByKey: SearcherByKey;\n\n\tif (forFrequency) {\n\t\tsearcherByKey = genSearchersMapVolume(searchers);\n\t} else {\n\t\tsearcherByKey = genSearchersMapCommon(searchers);\n\t}\n\n\tif (autoRegion) searcherByKey.set(dummyIndex, getSearcherAuto());\n\tif (!searcherByKey.size) searcherByKey.set(dummyIndex, searcherUndefined);\n\n\treturn searcherByKey;\n};\n\n/**\n * Список ПС с регионами\n *\n * @param searchers\n * @param onlyEnabledRegions\n * @param forceSearchersKeys - ключи ПС, которые нееобходимо вывести в любом случае\n * @param forFrequency - для частоты будут выводиться только Яндекс, Google и Mail\n */\nconst genSearchersMapCommon = (\n\tsearchers: Searcher[],\n\tonlyEnabledRegions: boolean = true,\n\tforceSearchersKeys: Searcher['key'][] = [],\n\tforFrequency: boolean = false,\n) => {\n\tconst searcherByKey: Map<Searcher['key'], SearcherIndexed> = new Map();\n\n\t// настроенные ПС\n\tsearchers.forEach((searcher) => {\n\t\tif (!searcher.enabled) return;\n\t\tif (forFrequency && typeof searcher.key === 'number' && searcher.key > 1) return;\n\n\t\tconst searcherI = { ...searcher } as SearcherIndexed;\n\t\tsearcherI.regionByIndex = new Map();\n\n\t\tif (searcher.regions) {\n\t\t\tsearcher.regions.forEach((region: Region) => {\n\t\t\t\tif (onlyEnabledRegions && !region.enabled) return;\n\n\t\t\t\tconst regionI = { ...region };\n\t\t\t\tsearcherI.regionByIndex.set(regionI.index, regionI);\n\t\t\t});\n\t\t}\n\n\t\tif (!searcherI.regionByIndex.size && !forceSearchersKeys.length) {\n\t\t\t// searcherI.regionByIndex.set(regionUndefined.index, regionUndefined);\n\t\t}\n\n\t\tif (\n\t\t\t// режим вывода ПС без регионов\n\t\t\t!searcher.regions ||\n\n\t\t\t// есть включенные регионы\n\t\t\tsearcherI.regionByIndex.size ||\n\n\t\t\t// запрошен вывод конкретных ПС\n\t\t\tforceSearchersKeys.length\n\t\t) {\n\t\t\tif (typeof searcherI.key === 'number') searcherByKey.set(searcherI.key, searcherI);\n\t\t}\n\t});\n\n\t// дополнительные ПС\n\tforceSearchersKeys.forEach((searcherKey) => {\n\t\tif (searcherByKey.has(searcherKey)) return;\n\n\t\tconst searcherI: SearcherIndexed = {\n\t\t\tkey: searcherKey,\n\t\t\tname: searchersNames[searcherKey],\n\t\t\tregions: [],\n\t\t\tregionByIndex: new Map(),\n\t\t};\n\n\t\tsearcherByKey.set(searcherI.key, searcherI);\n\t});\n\n\treturn searcherByKey;\n};\n\n/**\n * Список ПС с регионами для проверки частоты (Яндекс, Google, Mail если добавлен в проект)\n *\n * @param searchers\n */\nconst genSearchersMapVolume = (searchers: Searcher[]) => {\n\tconst serarcherByKey = genSearchersMapCommon(searchers, false, [0, 1], true);\n\n\t// в Mail нет регионов\n\tif (serarcherByKey.has(2)) {\n\t\tconst searcherMail = serarcherByKey.get(2);\n\t\tif (searcherMail) searcherMail.regionByIndex = new Map();\n\t}\n\n\t// добавление глобального региона\n\tserarcherByKey.forEach((searcher) => {\n\t\tif (!searcher.regionByIndex) return;\n\n\t\tconst region = { ...getRegionGlobal() };\n\t\tsearcher.regionByIndex.set(region.index, region);\n\t});\n\n\treturn serarcherByKey;\n};\n\n/**\n * Поиск региона по заданному критерию из списка поисковиков проекта\n *\n * @param forFrequency - поиск региона для просмотра частоты или ставок\n * @param searchRegion - объект с параметрами региона, который следует найти\n * @param searchers\n */\nexport const findRegion = (forFrequency: boolean, searchRegion: Partial<Region>, searchers: Searcher[] = []) => {\n\tconst searcherByKey = genSearcherByKey(forFrequency, false, searchers);\n\n\tlet findedRegion: Region | undefined;\n\n\t// поиск ПС\n\tsearcherByKey.forEach((searcher) => {\n\t\tif (searchRegion.searcher_key !== undefined && searchRegion.searcher_key != searcher.key) return;\n\t\tif (!searcher.regions) return;\n\n\t\t// поиск региона\n\t\tsearcher.regions.forEach((region) => {\n\t\t\tif (findedRegion) return;\n\n\t\t\tif (searchRegion.key !== undefined && searchRegion.key != region.key) return;\n\t\t\tif (searchRegion.index !== undefined && searchRegion.index != region.index) return;\n\n\t\t\tif (!forFrequency) {\n\t\t\t\tif (searchRegion.lang !== undefined && searchRegion.lang != region.lang) return;\n\t\t\t\tif (searchRegion.device !== undefined && searchRegion.device != region.device) return;\n\t\t\t}\n\n\t\t\tregion.searcher_key = searcher.key;\n\t\t\tfindedRegion = region;\n\n\t\t\treturn false;\n\t\t});\n\n\t\tif (findedRegion) return false;\n\t});\n\n\treturn findedRegion;\n};\n\n/**\n * Открыть диалоговое окно с выбором нескольких регионов\n *\n * @see import('../dialog_selectorRegions/types').Props\n */\nexport const dialogSelectorRegions = useAsyncTopDialog(() => {\n\treturn import('@/components/project/selectorRegion/dialog_selectorRegions/dialog_selectorRegions.vue');\n});\n","import { computed, type ComputedRef, ref } from 'vue';\nimport { useI18n } from '@/core/plugins/i18n';\nimport type { Props, SearcherByKey } from '../types';\nimport type { Option, Options } from '@/components/forms/select/types';\nimport { dummyIndex, searhcerCompareKey } from '../utils/consts';\nimport { getSearcherGIcon } from '@/core/utils/searchers';\n\n/**\n * Создание и управление реактивными переменными для выбора ПС\n *\n * @param props - входные props компонента\n * @param mapSearchers - Map ПС (реактивная)\n */\nexport const useSelectSearcher = (\n\tprops: Props,\n\tmapSearchers: ComputedRef<SearcherByKey>,\n) => {\n\tconst i18n = useI18n();\n\n\t/**\n\t * Ключ выбранной поисковой системы\n\t */\n\tconst searcherKey = ref(mapSearchers.value.keys().next().value ?? dummyIndex);\n\n\t/**\n\t * Коллекция опций для выбора ПС\n\t */\n\tconst optionBySearcherKey = computed(() => {\n\t\tconst res: Options = new Map();\n\t\tmapSearchers.value.forEach((searcher) => {\n\t\t\tlet option: Option = {\n\t\t\t\tvalue: searcher.key,\n\t\t\t\ttitle: searcher.name,\n\t\t\t};\n\n\t\t\tif (props.addSearcherIcon) option.icon = getSearcherGIcon(searcher.key);\n\n\t\t\tres.set(searcher.key, option);\n\t\t});\n\n\t\t// добавить режим сравнения, если есть хотя бы одна ПС с одним регионом\n\t\tif (props.addCompare && !res.has(dummyIndex)) {\n\t\t\tconst dummyOption: Option = {\n\t\t\t\tvalue: '',\n\t\t\t\ttitle: '--------------------',\n\t\t\t\tdisabled: true,\n\t\t\t};\n\t\t\tres.set(dummyOption.value, dummyOption);\n\n\t\t\tconst compareOption: Option = {\n\t\t\t\tvalue: searhcerCompareKey,\n\t\t\t\ttitle: i18n.Common.Compare!,\n\t\t\t};\n\t\t\tres.set(compareOption.value, compareOption);\n\t\t}\n\n\t\treturn res;\n\t});\n\n\treturn {\n\t\tsearcherKey,\n\t\toptionBySearcherKey,\n\t};\n};\n","import { computed, type ComputedRef, ref, watch } from 'vue';\nimport { useI18n } from '@/core/plugins/i18n';\nimport { getDeviceGIcon, getLangLabel } from '@/core/utils/searchers';\nimport type { Option } from '@/components/forms/select/types';\nimport { dummyIndex } from '../utils/consts';\nimport type { Props, Region, SearcherIndexed } from '../types';\n\n/**\n * Создание и управление реактивными переменными для выбора региона\n *\n * @param props - входные props компонента\n * @param activeSearcherIndexed - объект активной поисковой системы (реактивная)\n */\nexport const useSelectRegion = (props: Props, activeSearcherIndexed: ComputedRef<SearcherIndexed>) => {\n\tconst i18n = useI18n();\n\n\t/**\n\t * Индекс выбранного региона\n\t */\n\tconst regionIndex = ref(dummyIndex);\n\n\tif (props.modelValue.length === 1) {\n\t\tregionIndex.value = props.modelValue[0];\n\t}\n\n\tif (regionIndex.value === dummyIndex) {\n\t\tif (props.forFrequency) {\n\t\t\t// в качетсве ключа используется region.key, а не region.index\n\t\t\tregionIndex.value = activeSearcherIndexed.value?.regionByIndex.values().next().value?.key ?? dummyIndex;\n\t\t} else {\n\t\t\tregionIndex.value = activeSearcherIndexed.value?.regionByIndex.keys().next().value ?? dummyIndex;\n\t\t}\n\t}\n\n\t/**\n\t * Коллекция опций для выбора региона\n\t */\n\tconst optionByRegionIndex = computed(() => {\n\t\tconst options = new Map<number, Option>();\n\n\t\tactiveSearcherIndexed.value.regionByIndex?.forEach((region) => {\n\t\t\tlet regionLabel = region.name;\n\n\t\t\t// на частоту в текущей версии устройство и язык не влияют\n\t\t\t// обратите внимание, в качетсве ключа используется region.key, а не region.index\n\t\t\tif (props.forFrequency) {\n\t\t\t\tconst option: Option = {\n\t\t\t\t\tvalue: region.key,\n\t\t\t\t\ttitle: regionLabel,\n\t\t\t\t};\n\t\t\t\tif (!options.has(region.key)) options.set(region.key, option);\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (region.device) {\n\t\t\t\tregionLabel += ' (' + i18n.Common['Device_' + region.device] + ')';\n\t\t\t}\n\n\t\t\tconst langLabel = getLangLabel(activeSearcherIndexed.value.key || 0, region.lang ?? '');\n\t\t\tif (langLabel) regionLabel += ' / ' + langLabel;\n\n\t\t\tconst option: Option = {\n\t\t\t\tvalue: region.index,\n\t\t\t\ttitle: regionLabel,\n\t\t\t\ticon: region.device ? getDeviceGIcon(region.device) : undefined,\n\t\t\t};\n\n\t\t\toptions.set(region.index, option);\n\t\t});\n\n\t\treturn options;\n\t});\n\n\t/**\n\t * Выбор максимально похожего региона в новой коллекции регионов\n\t */\n\twatch(optionByRegionIndex, (optionByRegionIndex, oldOptionByRegionIndex) => {\n\t\tif (props.onlySearcher || regionIndex.value !== undefined && optionByRegionIndex.get(regionIndex.value)) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet newRegionIndex = optionByRegionIndex.keys().next().value as Region['index'];\n\t\tif (regionIndex.value === dummyIndex || newRegionIndex === dummyIndex) {\n\t\t\tregionIndex.value = newRegionIndex;\n\n\t\t\treturn;\n\t\t}\n\n\t\tlet regionName = (oldOptionByRegionIndex?.get(regionIndex.value) as Option)?.title || '';\n\t\tlet regionMatchLevel = -1;\n\t\tfor (const [index, option] of optionByRegionIndex.entries()) {\n\t\t\tconst title = (option as Option).title;\n\n\t\t\tif (typeof title !== 'string' || typeof index === 'string') {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// полное совпадение\n\t\t\tif (title === regionName) {\n\t\t\t\tnewRegionIndex = index;\n\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst regexpDevice = new RegExp(` \\\\((${i18n.Common['Device_1']}|${i18n.Common['Device_2']})\\\\)`);\n\t\t\tlet regionNameCompare = regionName;\n\t\t\tlet regionMatchLevelI = 3;\n\n\t\t\t// без устройства\n\t\t\tif (title.indexOf(regionNameCompare) === -1) {\n\t\t\t\tregionNameCompare = regionName.replace(/^[^a-zа-я]/i, '').replace(regexpDevice, '');\n\n\t\t\t\tregionMatchLevelI--;\n\t\t\t}\n\n\t\t\t// без языка\n\t\t\tif (title.indexOf(regionNameCompare) === -1) {\n\t\t\t\tregionNameCompare = regionName.replace(/ \\/.*/, '');\n\n\t\t\t\tregionMatchLevelI--;\n\t\t\t}\n\n\t\t\t// без устройства и без языка\n\t\t\tif (title.indexOf(regionNameCompare) === -1) {\n\t\t\t\tregionNameCompare = regionName.replace(/ \\/.*/, '');\n\t\t\t\tregionNameCompare = regionNameCompare.replace(/^[^a-zа-я]/i, '').replace(regexpDevice, '');\n\n\t\t\t\tregionMatchLevelI--;\n\t\t\t}\n\n\t\t\tif (title.indexOf(regionNameCompare) === -1) continue;\n\t\t\tif (regionMatchLevelI <= regionMatchLevel) continue;\n\n\t\t\tregionMatchLevel = regionMatchLevelI;\n\t\t\tnewRegionIndex = index;\n\t\t}\n\n\t\tregionIndex.value = newRegionIndex;\n\t});\n\n\treturn {\n\t\tregionIndex,\n\t\toptionByRegionIndex,\n\t};\n};\n","import { type ComputedRef, ref, watch } from 'vue';\nimport type { Props, SearcherByKey } from '../types';\n\n/**\n * Создание и управление реактивными переменными для сравнения\n *\n * @param props - входные props компонента\n * @param searcherByKey - Map ПС (реактивная)\n * @param allRegionsIndexes - Все доступные индексы регионов (реактивная)\n */\nexport const useCompare = (props: Props, searcherByKey: ComputedRef<SearcherByKey>, allRegionsIndexes: ComputedRef<Set<number>>) => {\n\t/**\n\t * Индексы регионов/ПС в сравнение\n\t */\n\tconst regionsIndexes = ref<number[]>([]);\n\n\t/**\n\t * Загрузка индексов регионов для сравнения\n\t *\n\t * Если в modelValue передано несколько регионов, они будут установлены как выбранные для сравнения\n\t */\n\tconst compareLoad = () => {\n\t\tif (props.onlySearcher && searcherByKey.value) {\n\t\t\tregionsIndexes.value = Array.from(searcherByKey.value.keys());\n\n\t\t\treturn;\n\t\t}\n\n\t\tlet regionsIndexesSaved: Props['modelValue'] = [];\n\n\t\tif (props.modelValue.length > 1) {\n\t\t\tregionsIndexesSaved = [...props.modelValue];\n\t\t} else {\n\t\t\ttry {\n\t\t\t\t// загрузить индексы регионов, если они были сохранены\n\t\t\t\tregionsIndexesSaved = JSON.parse(\n\t\t\t\t\tlocalStorage.getItem('ui:project:regionSelector' + props.projectId + ':regionsIndexes') as string,\n\t\t\t\t) ?? [];\n\t\t\t} catch (e) {\n\n\t\t\t}\n\t\t}\n\n\t\t// убрать из сравнения регионы, которых нет в props.searchers\n\t\tif (regionsIndexesSaved.length) {\n\t\t\tregionsIndexesSaved = regionsIndexesSaved.filter((regionIndex) => {\n\t\t\t\treturn allRegionsIndexes.value.has(regionIndex);\n\t\t\t});\n\t\t}\n\n\t\t// если не сохранено ни одного региона, выбрать все регионы проекта\n\t\tif (!regionsIndexesSaved.length) {\n\t\t\tregionsIndexesSaved = Array.from(allRegionsIndexes.value);\n\t\t}\n\n\t\tregionsIndexes.value = [...regionsIndexesSaved];\n\t};\n\n\t/**\n\t * Сохранение выбранных регионов\n\t */\n\tconst compareSave = () => {\n\t\tif (regionsIndexes.value.length) {\n\t\t\tlocalStorage.setItem('ui:project:regionSelector:' + props.projectId + ':regionsIndexes', JSON.stringify(regionsIndexes.value));\n\t\t} else {\n\t\t\tlocalStorage.removeItem('ui:project:regionSelector:' + props.projectId + ':regionsIndexes');\n\t\t}\n\t};\n\n\twatch(regionsIndexes, () => {\n\t\tcompareSave();\n\t});\n\n\tif (props.addCompare) {\n\t\t// if (props.compareRegionsIndexes?.length) {\n\t\t// \tcompareRegionsIndexes.value = [...props.compareRegionsIndexes];\n\t\t// } else {\n\t\t// \tcompareLoad();\n\t\t// }\n\n\t\tcompareLoad();\n\t}\n\n\treturn {\n\t\tregionsIndexes,\n\t};\n};\n","import { computed, watch } from 'vue';\nimport { findRegion, genSearcherByKey } from '../utils/utils';\nimport { dummyIndex, globalRegionIndex, searcherUndefined, searhcerCompareKey } from '../utils/consts';\nimport type { Props, Region, SearcherIndexed } from '../types';\nimport { useSelectSearcher } from './selectSearcher';\nimport { useSelectRegion } from './selectRegion';\nimport { useCompare } from './compare';\n\n/**\n * Создание и управления рективными переменными компонента\n *\n * @param props - входные props компонента\n */\nexport const useSelectorRegion = (props: Props) => {\n\tconst searcherByKey = computed(() => {\n\t\treturn genSearcherByKey(props.forFrequency, props.autoRegion, props.searchers);\n\t});\n\n\tconst activeSearcherIndexed = computed(() => {\n\t\treturn searcherByKey.value.get(selectSearcher.searcherKey.value) || searcherUndefined;\n\t});\n\n\t/**\n\t * Все индексы регионов из searcherByKey\n\t *\n\t * Активность регионов определяется в searcherByKey\n\t */\n\tconst allRegionsIndexes = computed(() => {\n\t\tconst regionsIndexes = new Set<number>();\n\n\t\tsearcherByKey.value.forEach((searcher) => {\n\t\t\tsearcher.regionByIndex.forEach((region) => {\n\t\t\t\tif (region.index === globalRegionIndex) return;\n\t\t\t\tif (region.index === dummyIndex) return;\n\n\t\t\t\tregionsIndexes.add(region.index);\n\t\t\t});\n\t\t});\n\n\t\treturn regionsIndexes;\n\t});\n\n\tconst selectSearcher = useSelectSearcher(props, searcherByKey);\n\tconst selectRegion = useSelectRegion(props, activeSearcherIndexed);\n\tconst compare = useCompare(props, searcherByKey, allRegionsIndexes);\n\n\t// контроль за внешним изменением списка ПС\n\twatch(searcherByKey, () => {\n\t\t// возможные значения для сравнения регионов/пс\n\t\tif (props.onlySearcher) {\n\t\t\tcompare.regionsIndexes.value = Array.from(searcherByKey.value.keys());\n\t\t} else {\n\t\t\tcompare.regionsIndexes.value = compare.regionsIndexes.value.filter(regionIndex => {\n\t\t\t\treturn allRegionsIndexes.value.has(regionIndex);\n\t\t\t});\n\t\t}\n\n\t\tif (selectSearcher.searcherKey.value === searhcerCompareKey) return;\n\n\t\tlet newSearcherKey = searcherByKey.value.keys().next().value;\n\n\t\tsearcherByKey.value.forEach((searcher) => {\n\t\t\t// определить выбранную ПС\n\t\t\tif (props.onlySearcher && searcher.key === selectSearcher.searcherKey.value) {\n\t\t\t\tnewSearcherKey = selectSearcher.searcherKey.value;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tselectRegion.regionIndex.value &&\n\t\t\t\tsearcher.regionByIndex?.has(selectRegion.regionIndex.value)\n\t\t\t) {\n\t\t\t\tnewSearcherKey = searcher.key;\n\t\t\t}\n\n\t\t\t// выбрать первую ПС с выбранным регионом\n\t\t\tif (!props.onlySearcher) {\n\t\t\t\tlet regionsNewSearcher: SearcherIndexed['regionByIndex'] | undefined;\n\n\t\t\t\tif (newSearcherKey !== undefined) {\n\t\t\t\t\tregionsNewSearcher = searcherByKey.value.get(newSearcherKey)?.regionByIndex;\n\t\t\t\t}\n\n\t\t\t\tconst regionsCurrentSearcher = searcherByKey.value.get(searcher.key)?.regionByIndex;\n\t\t\t\tif (\n\t\t\t\t\tregionsNewSearcher?.has(dummyIndex) &&\n\t\t\t\t\t!regionsCurrentSearcher?.has(dummyIndex)\n\t\t\t\t) {\n\t\t\t\t\tnewSearcherKey = searcher.key;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// if (props.addCompare && !selectSearcher.optionBySearcherKey.value.has(dummyIndex)) {\n\t\t// \tif (!selectRegion.regionIndex.value && compare.regionsIndexes.value?.length) newSearcherKey = searhcerCompareKey;\n\t\t// }\n\n\t\t// if (props.onlySearcher && selectRegion.regionIndex.value !== dummyIndex) newSearcherKey = selectRegion.regionIndex.value;\n\n\t\tif (newSearcherKey !== undefined) {\n\t\t\tselectSearcher.searcherKey.value = newSearcherKey;\n\t\t}\n\n\t\tif (\n\t\t\tselectRegion.regionIndex.value !== undefined &&\n\t\t\t!(activeSearcherIndexed.value?.regionByIndex)?.has(selectRegion.regionIndex.value)\n\t\t) {\n\t\t\tselectRegion.regionIndex.value = activeSearcherIndexed.value?.regions?.keys().next().value as number;\n\t\t}\n\t}, { immediate: true });\n\n\tconst getSearcherKey = () => {\n\t\tif (selectSearcher.searcherKey.value === searhcerCompareKey || selectSearcher.searcherKey.value === dummyIndex) return;\n\n\t\treturn selectSearcher.searcherKey.value;\n\t};\n\n\tconst getRegionIndex = () => {\n\t\tif (props.onlySearcher) return;\n\n\t\tif (selectRegion.regionIndex.value === dummyIndex) return;\n\n\t\tlet res: Region['index'] | undefined = selectRegion.regionIndex.value;\n\n\t\t// в качестве ключа используется region.key\n\t\tif (props.forFrequency) {\n\t\t\tconst regionKey = selectRegion.regionIndex.value;\n\t\t\tconst region = findRegion(props.forFrequency, { searcher_key: getSearcherKey(), key: regionKey } as Region, props.searchers);\n\n\t\t\tres = region?.index;\n\t\t}\n\n\t\treturn res;\n\t};\n\n\t/**\n\t * Получить выбранную ПС\n\t */\n\tconst getSearcher = () => {\n\t\tconst searcherKey = getSearcherKey();\n\t\tif (searcherKey === undefined) return;\n\n\t\treturn searcherByKey.value.get(searcherKey);\n\t};\n\n\t/**\n\t * Получить выбранный регион\n\t */\n\tconst getRegion = () => {\n\t\tconst regionIndex = getRegionIndex();\n\t\tif (regionIndex === undefined) return;\n\n\t\treturn getSearcher()?.regionByIndex?.get(regionIndex);\n\t};\n\n\treturn {\n\t\tselectSearcher,\n\t\tselectRegion,\n\t\tcompare,\n\n\t\tsearcherByKey,\n\t\tallRegionsIndexes,\n\n\t\tgetSearcher,\n\t\tgetRegion,\n\t};\n};\n","<script setup lang=\"ts\">\nimport { watch } from 'vue';\nimport type { Props, Region } from './types';\nimport Select from '@/components/forms/select/select.vue';\nimport Button from '@/components/forms/button/button.vue';\nimport { useSelectorRegion } from './composables/selectorRegion';\nimport { dummyIndex, globalRegionIndex, searhcerCompareKey } from './utils/consts';\nimport { dialogSelectorRegions } from '@/components/project/selectorRegion/utils/utils';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tsearchers: () => [],\n\t// compareRegionsIndexes: () => [],\n\taddSearcherIcon: true,\n\taddRegionIcon: true,\n\taddChanger: true,\n});\n\nconst model = defineModel<Props['modelValue']>({ required: true });\nconst modelSingle = defineModel<Props['modelValueSingle']>('modelValueSingle');\n\nconst {\n\tselectSearcher,\n\tselectRegion,\n\tcompare,\n\n\tsearcherByKey,\n\tallRegionsIndexes,\n\n\tgetSearcher,\n\tgetRegion,\n} = useSelectorRegion(props);\n\nconst onClickCompare = () => {\n\tconst regions: Region[] = [];\n\n\tsearcherByKey.value.forEach((searcher) => {\n\t\tif (!searcher.enabled) return;\n\n\t\tsearcher.regions.forEach((region) => {\n\t\t\tif (!region.enabled) return;\n\n\t\t\tregions.push(region);\n\t\t});\n\t});\n\n\tdialogSelectorRegions.open('selectorRegions', {\n\t\tregions,\n\t\tregionsIndexes: compare.regionsIndexes.value,\n\t\t'@update:regionsIndexes': (regionsIndexes: number[]) => compare.regionsIndexes.value = regionsIndexes,\n\t});\n};\n\nwatch([selectRegion.regionIndex, selectSearcher.searcherKey, compare.regionsIndexes], () => {\n\tif (selectSearcher.searcherKey.value === searhcerCompareKey && compare.regionsIndexes.value.length) {\n\t\tif (JSON.stringify(model.value) === JSON.stringify(compare.regionsIndexes.value)) {\n\t\t\treturn;\n\t\t}\n\n\t\tmodel.value = [...compare.regionsIndexes.value];\n\t} else {\n\t\tif (props.onlySearcher) {\n\t\t\tmodel.value = [selectSearcher.searcherKey.value];\n\n\t\t\tif (selectSearcher.searcherKey.value === dummyIndex && !props.autoRegion) model.value.length = 0;\n\t\t} else {\n\t\t\tmodel.value = [selectRegion.regionIndex.value];\n\n\t\t\t// не добавлять несуществующий регион в результаты\n\t\t\tif (selectRegion.regionIndex.value === dummyIndex && !props.autoRegion) model.value.length = 0;\n\t\t}\n\t}\n\n\t// регионов нет\n\tif (!props.onlySearcher && !allRegionsIndexes.value.size) {\n\t\tselectSearcher.searcherKey.value = dummyIndex;\n\t}\n});\n\nif (modelSingle.value) {\n\twatch(modelSingle, () => {\n\t\tif (modelSingle.value) {\n\t\t\tmodel.value = [modelSingle.value];\n\t\t}\n\t}, { immediate: true });\n}\n\nwatch(model, () => {\n\tif (model.value[0]) {\n\t\tmodelSingle.value = model.value[0];\n\t}\n\n\t// проверка входных данных v-model на корректность\n\tif (props.onlySearcher) {\n\t\tif (\n\t\t\t!model.value.length ||\n\t\t\tmodel.value.length === 1 && !searcherByKey.value.has(model.value[0]) ||\n\t\t\tmodel.value.length === 1 && model.value[0] === dummyIndex && !props.autoRegion\n\t\t) {\n\t\t\tlet defaultKey: number | undefined = searcherByKey.value.keys().next().value;\n\n\t\t\t// запретить устанавливать несуществующий регион\n\t\t\tif (defaultKey === dummyIndex && !props.autoRegion) {\n\t\t\t\tdefaultKey = undefined;\n\n\t\t\t\tmodelSingle.value = dummyIndex;\n\t\t\t}\n\n\t\t\tif (defaultKey !== undefined) {\n\t\t\t\tmodel.value = [defaultKey];\n\t\t\t}else{\n\t\t\t\tmodel.value.length = 0;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (\n\t\t\tmodel.value.length > 1 &&\n\t\t\tJSON.stringify(model.value) !== JSON.stringify(compare.regionsIndexes.value)\n\t\t) {\n\t\t\tmodel.value = [...compare.regionsIndexes.value];\n\n\t\t\treturn;\n\t\t}\n\t} else {\n\t\tlet newModel = [...new Set(model.value)];\n\n\t\tlet defaultIndex = searcherByKey.value.values().next().value?.regionByIndex?.keys().next().value;\n\t\tif (props.forFrequency) {\n\t\t\tdefaultIndex = searcherByKey.value.values().next().value?.regionByIndex?.values().next().value?.key;\n\t\t}\n\n\t\t// запретить устанавливать несуществующий регион\n\t\tif (defaultIndex === dummyIndex && !props.autoRegion) {\n\t\t\tdefaultIndex = undefined;\n\n\t\t\tmodelSingle.value = dummyIndex;\n\t\t}\n\n\t\tif (!newModel.length) {\n\t\t\tif (defaultIndex !== undefined) {\n\t\t\t\tnewModel.push(defaultIndex);\n\t\t\t}\n\t\t} else if (newModel.length === 1) {\n\t\t\tlet all = allRegionsIndexes.value;\n\n\t\t\tif (props.forFrequency) {\n\t\t\t\tall = new Set();\n\t\t\t\tsearcherByKey.value.forEach((searcher) => {\n\t\t\t\t\tsearcher.regionByIndex.forEach((region) => {\n\t\t\t\t\t\tif (region.index === globalRegionIndex) return;\n\t\t\t\t\t\tif (region.index === dummyIndex) return;\n\n\t\t\t\t\t\tall.add(region.key);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// убрано, так как dummyIndex запрещено выбирать в model\n\t\t\t// if (!all.has(newModel[0]) && newModel[0] !== dummyIndex) {\n\t\t\tif (!all.has(newModel[0])) {\n\t\t\t\tnewModel = [];\n\t\t\t\tif (defaultIndex !== undefined) {\n\t\t\t\t\tnewModel.push(defaultIndex);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tnewModel = newModel.filter(index => allRegionsIndexes.value.has(index));\n\t\t\tif (!newModel.length && defaultIndex !== undefined) {\n\t\t\t\tnewModel.push(defaultIndex);\n\t\t\t}\n\t\t}\n\n\t\tif (JSON.stringify(model.value) !== JSON.stringify(newModel)) {\n\t\t\tmodel.value = newModel;\n\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// входные данные v-model совпадают с внутренними значениями\n\tif (\n\t\tmodel.value.length === 1 &&\n\t\tmodel.value[0] === (props.onlySearcher ? selectSearcher.searcherKey.value : selectRegion.regionIndex.value)\n\t) {\n\t\treturn;\n\t}\n\n\t// if (\n\t// \tmodel.value.length > 1 &&\n\t// \tselectorSearcher.searcherKey.value === searhcerCompareKey &&\n\t// \tJSON.stringify(model.value) === JSON.stringify(selectorCompare.regionsIndexes.value)\n\t// ) {\n\t// \treturn;\n\t// }\n\n\t// обновление regionIndex, searcherKey, selectorCompare.regionsIndexes\n\tif (props.onlySearcher) {\n\t\t// if (!model.value.length) {\n\t\t// \tselectorSearcher.searcherKey.value = dummyIndex;\n\t\t//\n\t\t// \treturn;\n\t\t// }\n\n\t\tif (model.value.length === 1) {\n\t\t\tselectSearcher.searcherKey.value = model.value[0];\n\n\t\t\treturn;\n\t\t}\n\n\t\tselectSearcher.searcherKey.value = searhcerCompareKey;\n\n\t\treturn;\n\t} else {\n\t\tif (!model.value.length) {\n\t\t\t// selectSearcher.searcherKey.value = dummyIndex;\n\t\t\t// selectRegion.regionIndex.value = dummyIndex;\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (model.value.length === 1 && selectSearcher.searcherKey.value !== searhcerCompareKey) {\n\t\t\tselectRegion.regionIndex.value = model.value[0];\n\n\t\t\tlet newSearherKey: number | undefined;\n\t\t\tfor (const searcher of searcherByKey.value.values()) {\n\t\t\t\tfor (const region of searcher.regionByIndex.values()) {\n\t\t\t\t\tconst currentRegionIndex = props.forFrequency ? region.key : region.index;\n\t\t\t\t\tif (currentRegionIndex === selectRegion.regionIndex.value) {\n\t\t\t\t\t\tnewSearherKey = searcher.key;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (newSearherKey !== undefined) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newSearherKey !== undefined) {\n\t\t\t\tselectSearcher.searcherKey.value = newSearherKey;\n\t\t\t}\n\t\t} else {\n\t\t\tselectSearcher.searcherKey.value = searhcerCompareKey;\n\t\t\tcompare.regionsIndexes.value = [...model.value];\n\t\t}\n\t}\n}, { immediate: true });\n\ndefineExpose({\n\tgetSearcher,\n\tgetRegion,\n});\n</script>\n\n<template>\n\t<div\n\t\t:class=\"{\n\t\t\t'top-selectorRegion': true,\n\t\t\t'top-selectorRegion-onlySearcher': onlySearcher,\n\t\t}\"\n\t>\n\t\t<Select\n\t\t\t:options=\"selectSearcher.optionBySearcherKey.value\"\n\t\t\tv-model=\"selectSearcher.searcherKey.value\"\n\t\t\tname=\"searcher_key\"\n\t\t\t:addChanger=\"addChanger\"\n\t\t/>\n\n\t\t<Select\n\t\t\tv-if=\"!onlySearcher && selectSearcher.searcherKey.value !== searhcerCompareKey\"\n\t\t\tclass=\"top-select-region\"\n\t\t\t:options=\"selectRegion.optionByRegionIndex.value\"\n\t\t\tv-model=\"selectRegion.regionIndex.value\"\n\t\t\t:name=\"forFrequency ? 'region_key' : 'region_index'\"\n\t\t\t:addChanger=\"addChanger\"\n\t\t\t:data-top-icon=\"addRegionIcon ? '' : undefined\"\n\t\t/>\n\n\t\t<Button\n\t\t\tv-if=\"addCompare && !onlySearcher && selectSearcher.searcherKey.value === searhcerCompareKey\"\n\t\t\tname=\"compare\"\n\t\t\t@click=\"onClickCompare\"\n\t\t\t:data-count-compare-regions-indexes=\"compare.regionsIndexes.value.length\"\n\t\t>\n\t\t\t{{ $i18n.Common.Selected_regions }}\n\t\t</Button>\n\t</div>\n</template>\n\n<style>\n@import \"./styles/searcherColors.css\";\n\n.top-selectorRegion {\n\twidth: 340px;\n\tdisplay: inline-flex;\n\tvertical-align: middle;\n}\n\n.top-selectorRegion > .top-select {\n\tflex-grow: 1;\n}\n\n.top-selectorRegion > .top-select:focus-within {\n\tz-index: 4;\n}\n\n.top-selectorRegion > .top-select > .top-select_select:hover,\n.top-selectorRegion > .top-select > .top-select_select.top-error {\n\tz-index: 1;\n}\n\n.top-selectorRegion > .top-select-searcher_key {\n\twidth: 140px;\n\tmax-width: 160px;\n\tmargin-right: -1px;\n}\n\n.top-selectorRegion > .top-select-region > select {\n\tborder-top-left-radius: 0;\n\tborder-bottom-left-radius: 0;\n}\n\n.top-selectorRegion > .top-select-region {\n\t--top-icon-size: 20px;\n\t--top-icon-color: var(--color-text-primary);\n\n\t--top-icon2-size: 20px;\n\t--top-icon2-color: var(--color-text-primary);\n}\n\n.top-selectorRegion > .top-select-region[data-top-icon][data-top-icon2] {\n\t--top-icon2-size: 16px;\n}\n\n.top-selectorRegion > .top-select-region[data-top-icon][data-top-icon2]:after {\n\ttext-indent: -4px;\n}\n\n.top-selectorRegion > [name=\"compare\"] {\n\tborder-top-left-radius: 0;\n\tborder-bottom-left-radius: 0;\n\tflex-grow: 1;\n}\n\n.top-selectorRegion > [name=\"compare\"]:after {\n\tcontent: \"(\" attr(data-count-compare-regions-indexes) \")\";\n\tmargin: 0 0 0 6px;\n}\n\n.top-selectorRegion:not(.top-selectorRegion-onlySearcher) > .top-select-searcher_key > select {\n\tborder-top-right-radius: 0;\n\tborder-bottom-right-radius: 0;\n\tmargin-right: 0;\n}\n\n.top-selectorRegion:not(.top-selectorRegion-onlySearcher) > .top-select-searcher_key[data-value=\"-1\"] > select {\n\tborder-right: none;\n}\n\n.top-selectorRegion-onlySearcher {\n\twidth: 140px;\n}\n</style>\n","import type { Props as TagSelectorOpenerProps } from '../popupOpener/types';\nimport type { Tag, TagIdExclude } from '../types';\n\n/**\n * Полуичить значение исключения тега tagId\n */\nexport const genTagIdExcluded = (tagId: Tag['id']): TagIdExclude => {\n\treturn '-' + tagId as TagIdExclude;\n};\n\n/**\n * Вернуть чистый tagId без exclude флага\n */\nexport const genTagIdClear = (tagId: Tag['id'] | TagIdExclude) => {\n\tif (tagId[0] === '-') return tagId.substring(1) as Tag['id'];\n\n\treturn tagId as Tag['id'];\n};\n\n/**\n * Получить инфомрацию о теге по его id\n */\nexport const getTagById = (tagId: Tag['id'] | TagIdExclude, tags: TagSelectorOpenerProps['tags']) => {\n\ttagId = genTagIdClear(tagId);\n\n\tconst tag = tags.find(tag => tag.id === tagId);\n\tif (!tag) return;\n\n\treturn tag;\n};\n","import { isRef, type Ref, ref, unref, watch } from 'vue';\nimport { useI18n } from '@/core/plugins/i18n';\nimport { storage } from '@/core/utils/dom';\nimport TopPopupWorker from '@/components/popup/lib/worker';\nimport type { OpenerProps as PopupOpenerProps } from '@/components/popup/popup/types';\nimport type { Props as TagSelectorOpenerProps, TagSelectorTarget } from '../popupOpener/types';\nimport type { Props as TagIconProps } from '../tagIcon/types';\nimport { genTagIdClear, getTagById } from '../utils/utils';\n\n/**\n * Сгенерировтаь элемент для открытия popup с выбором тегов\n *\n * Альтернатива TopTagSelecorPopupOpener для работы вне vue\n *\n * Требует монтирования компонента TopTagSelecor\n */\nexport const genElPopupOpener = (\n\tprops: TagSelectorOpenerProps & { modelValue: TagSelectorOpenerProps['modelValue'] | Ref<TagSelectorOpenerProps['modelValue']> },\n\tpropsPopup?: Partial<PopupOpenerProps>,\n\thtmlSetterSeveral?: string,\n): HTMLElement => {\n\tif (!propsPopup) propsPopup = { id: props.id };\n\n\tpropsPopup.id = props.id;\n\n\tconst el = TopPopupWorker.genElPopupOpener('div', propsPopup as PopupOpenerProps);\n\n\tel.classList.add('top-tagSelector');\n\tif (props.useTopButton) el.classList.add('top-button', 'top-color_theme');\n\tif (props.mode === 'filter') el.classList.add('top-tagSelector-filter');\n\tif (props.mode === 'setter' && !props.filters) el.classList.add('top-tagSelector-setter_single');\n\tif (props.mode === 'setter' && props.filters) el.classList.add('top-tagSelector-setter_several');\n\n\t// прокcи клик: lazy connect\n\tel.onclick = (e) => {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\n\t\tel.onclick = null;\n\n\t\tconst model = ref(props.modelValue);\n\n\t\tconst target: TagSelectorTarget = {\n\t\t\tmodel,\n\t\t\tmode: props.mode,\n\t\t\ttargetId: props.targetId,\n\t\t\tfilters: props.filters,\n\t\t\tpayload: props.payload,\n\t\t};\n\n\t\tstorage(el, 'topTagSelectorTarget', target);\n\n\t\tdelete el.dataset.topPopupDisabled;\n\n\t\tif (!isRef(props.modelValue)) {\n\t\t\twatch(model, () => {\n\t\t\t\tprops.modelValue = model.value;\n\n\t\t\t\telPopupOpenerRender(el, props, htmlSetterSeveral);\n\t\t\t});\n\t\t}\n\n\t\t// выполнение клика\n\t\tel.click();\n\t};\n\n\tif (isRef(props.modelValue)) {\n\t\twatch(props.modelValue, () => elPopupOpenerRender(el, props, htmlSetterSeveral));\n\t} else {\n\t\tstorage(el, 'topTagSelectorRender', (modelValue: TagSelectorOpenerProps['modelValue']) => {\n\t\t\tprops.modelValue = modelValue;\n\n\t\t\tconst target = storage(el, 'topTagSelectorTarget');\n\t\t\tif (target) target.model.value = modelValue;\n\n\t\t\telPopupOpenerRender(el, props, htmlSetterSeveral);\n\t\t});\n\t}\n\n\telPopupOpenerRender(el, props, htmlSetterSeveral);\n\n\treturn el;\n};\n\n/**\n * Вызвать перерисовку элемента, который был создан через genElPopupOpener()\n *\n * Работет только для элементов не с реактивным modelValue\n */\nexport const renderElPopupOpener = (el: HTMLElement, modelValue: TagSelectorOpenerProps['modelValue']) => {\n\tstorage(el, 'topTagSelectorRender')?.(modelValue);\n};\n\n/**\n * Отрисовать TopTagSelecorPopupOpener\n */\nconst elPopupOpenerRender = (el, props: TagSelectorOpenerProps, htmlSetterSeveral?: string) => {\n\tconst tagsIds = unref(props.modelValue);\n\n\tel.classList.toggle('top-tagSelector-selectedOne', !tagsIds.length || tagsIds.length === 1);\n\tel.classList.toggle('top-tagSelector-toTwoLine', tagsIds.length > 5);\n\n\tif (props.mode === 'setter' && props.filters) {\n\t\tel.innerHTML = `<div>${htmlSetterSeveral}</div>`;\n\n\t\treturn;\n\t}\n\n\tel.innerHTML = '';\n\n\tif (!tagsIds.length && props.mode === 'filter') {\n\t\tconst elTagIcon = genElTagIcon({\n\t\t\tid: 'all',\n\t\t\tcolorId: '',\n\t\t\tname: useI18n().Common?.All_tags ?? '',\n\t\t\tstate: '',\n\t\t});\n\n\t\tel.append(elTagIcon);\n\t}\n\n\ttagsIds.forEach(tagId => {\n\t\tconst elTagIcon = genElTagIcon({\n\t\t\tid: genTagIdClear(tagId),\n\t\t\tcolorId: getTagById(tagId, props.tags)?.color_id ?? '',\n\t\t\tname: getTagById(tagId, props.tags)?.name ?? '',\n\t\t\tstate: genTagIdClear(tagId) === tagId ? 'selected' : 'excluded',\n\t\t});\n\n\t\tel.append(elTagIcon);\n\t});\n};\n\n/**\n * Сгенерировтаь элемент для открытия popup с выбором тегов\n *\n * Альтернатива TopTagSelecorTagIcon для работы вне vue\n */\nconst genElTagIcon = (props: TagIconProps) => {\n\tconst el = document.createElement('div');\n\n\tel.classList.add('top-tagSelector_tagIcon');\n\tel.classList.toggle('top-tagSelector-active', !!props.state);\n\tel.classList.toggle('top-tagSelector-excluded', props.state === 'excluded');\n\n\tel.dataset.tag_id = props.id;\n\tel.dataset.tag_color_id = props.colorId;\n\tel.title = props.name;\n\n\treturn el;\n};\n","import type { Tag } from './types';\n\nexport default [\n\t{\n\t\tid: '1',\n\t\tname: 'Without Tag',\n\t\tcolor_id: '1',\n\t},\n\t{\n\t\tid: '2',\n\t\tname: 'Red',\n\t\tcolor_id: '2',\n\t},\n\t{\n\t\tid: '3',\n\t\tname: 'Orange',\n\t\tcolor_id: '3',\n\t},\n\t{\n\t\tid: '4',\n\t\tname: 'Yellow',\n\t\tcolor_id: '4',\n\t},\n\t{\n\t\tid: '5',\n\t\tname: 'Blue',\n\t\tcolor_id: '5',\n\t},\n\t{\n\t\tid: '6',\n\t\tname: 'Purple',\n\t\tcolor_id: '6',\n\t},\n\t{\n\t\tid: '7',\n\t\tname: 'Green',\n\t\tcolor_id: '7',\n\t},\n\t{\n\t\tid: '8',\n\t\tname: 'Magenta',\n\t\tcolor_id: '8',\n\t},\n\t{\n\t\tid: '9',\n\t\tname: 'Dark blue',\n\t\tcolor_id: '9',\n\t},\n\t{\n\t\tid: '10',\n\t\tname: 'Turquoise',\n\t\tcolor_id: '10',\n\t},\n] as Tag[];\n","<script setup lang=\"ts\">\nimport type { Props } from './types';\n\ndefineProps<Props>();\n</script>\n\n<template>\n\t<div\n\t\t:class=\"{\n\t\t\t'top-tagSelector_tagIcon': true,\n\t\t\t'top-tagSelector-active': !!state,\n\t\t\t'top-tagSelector-excluded': state === 'excluded',\n\t\t}\"\n\t\t:data-tag_id=\"id\"\n\t\t:data-tag_color_id=\"colorId\"\n\t\t:title=\"name\"\n\t></div>\n</template>\n\n<style>\n[data-tag_id] { display: inline-flex; gap: var(--top-gap-2); align-items: center; }\n\n[data-tag_id=\"\"] { border-color: #bdc3c7 !important; color: #55555F !important; }\n[data-tag_color_id=\"1\"] { border-color: var(--color-tag-1) !important; color: #55555F !important; }\n[data-tag_color_id=\"2\"] { border-color: var(--color-tag-2) !important; color: var(--color-tag-2) !important; }\n[data-tag_color_id=\"3\"] { border-color: var(--color-tag-3) !important; color: var(--color-tag-3) !important; }\n[data-tag_color_id=\"4\"] { border-color: var(--color-tag-4) !important; color: var(--color-tag-4) !important; }\n[data-tag_color_id=\"5\"] { border-color: var(--color-tag-5) !important; color: var(--color-tag-5) !important; }\n[data-tag_color_id=\"6\"] { border-color: var(--color-tag-6) !important; color: var(--color-tag-6) !important; }\n[data-tag_color_id=\"7\"] { border-color: var(--color-tag-7) !important; color: var(--color-tag-7) !important; }\n[data-tag_color_id=\"8\"] { border-color: var(--color-tag-8) !important; color: var(--color-tag-8) !important; }\n[data-tag_color_id=\"9\"] { border-color: var(--color-tag-9) !important; color: var(--color-tag-9) !important; }\n[data-tag_color_id=\"10\"] { border-color: var(--color-tag-10) !important; color: var(--color-tag-10) !important; }\n\n[data-tag_id=\"\"].top-tagSelector-active { background: #bdc3c7 !important; }\n[data-tag_color_id=\"1\"].top-tagSelector-active { background: var(--color-tag-1) !important; }\n[data-tag_color_id=\"2\"].top-tagSelector-active { background: var(--color-tag-2) !important; }\n[data-tag_color_id=\"3\"].top-tagSelector-active { background: var(--color-tag-3) !important; }\n[data-tag_color_id=\"4\"].top-tagSelector-active { background: var(--color-tag-4) !important; }\n[data-tag_color_id=\"5\"].top-tagSelector-active { background: var(--color-tag-5) !important; }\n[data-tag_color_id=\"6\"].top-tagSelector-active { background: var(--color-tag-6) !important; }\n[data-tag_color_id=\"7\"].top-tagSelector-active { background: var(--color-tag-7) !important; }\n[data-tag_color_id=\"8\"].top-tagSelector-active { background: var(--color-tag-8) !important; }\n[data-tag_color_id=\"9\"].top-tagSelector-active { background: var(--color-tag-9) !important; }\n[data-tag_color_id=\"10\"].top-tagSelector-active { background: var(--color-tag-10) !important; }\n\n[data-tag_id=\"all\"] {\n\tborder-color: transparent !important; background: none !important;\n}\n\n[data-tag_id=\"all\"]:before {\n\tcontent: \"\";\n\tcolor: var(--color-tag-all) !important;\n\tfont-size: 26px;\n\tmin-width: calc(100% + 4px);\n\theight: calc(100% + 4px);\n\tmargin-top: -18px;\n\tmargin-left: -8px;\n}\n\n/* в кнопке выбора тэгов и в popup */\n.top-tagSelector-filter [data-tag_id],\n.top-tagSelector_popup [data-tag_id] {\n\t--top-tag-selector-size: 10px;\n\n\tbox-sizing: content-box;\n\tborder-radius: 100%; border: 2px solid var(--color-layout-front-1); background: var(--color-layout-front-1);\n\twidth: var(--top-tag-selector-size);\n\theight: var(--top-tag-selector-size);\n\tfont-size: calc(var(--top-tag-selector-size) + 4px);\n\t/*font-family: inherit !important;*/\n}\n\n/* исключение тегов */\n.top-body-press_ctrl .top-tagSelector_tagListItem-canExclude:hover [data-tag_id],\n[data-tag_id].top-tagSelector-excluded { position: relative; }\n\n.top-body-press_ctrl .top-tagSelector_tagListItem-canExclude:hover [data-tag_id]:before,\n[data-tag_id].top-tagSelector-excluded:before {\n\tcontent: \"\";\n\twidth: calc(var(--top-tag-selector-size) * 2); height: 1px; background: inherit;\n\ttransform: rotate(-45deg); filter: brightness(80%);\n\tdisplay: block;\n\tposition: absolute; top: calc(var(--top-tag-selector-size) / 2); left: calc(0px - var(--top-tag-selector-size) / 2);\n}\n.top-body-press_ctrl .top-tagSelector_tagListItem-canExclude:hover [data-tag_id]:not([data-tag_id=\"all\"]):not(.top-tagSelector-active):before { background: #AAA; }\n[data-tag_id].top-tagSelector-excluded:after,\n[data-tag_id].top-tagSelector-excluded ~ .top-tagSelector_tagListItemName { text-decoration: line-through; }\n\n/* popup */\n.top-popup_listItem.top-tagSelector-active { background: var(--top-popup-background-color-active) !important; }\n\n.top-popup_listItem:hover [data-tag_id=\"all\"]:before { border-color: var(--top-popup-background-color-hover); }\n.top-popup_listItem.top-tagSelector-active [data-tag_id=\"all\"]:before,\n.top-popup_listItem.top-active [data-tag_id=\"all\"]:before { border-color: var(--top-popup-background-color-active); }\n</style>\n","<script setup lang=\"ts\">\nimport { computed, nextTick, ref } from 'vue';\nimport type { Emits, Props } from './types';\nimport TopTagIcon from '../tagIcon/tagIcon.vue';\nimport TopPopupListItem from '@/components/popup/popup/listItem.vue';\n\nconst props = defineProps<Props>();\nconst emit = defineEmits<Emits>();\n\nconst name = defineModel<Props['name']>('name', {\n\trequired: true,\n});\n\nconst elName = ref<HTMLElement | null>(null);\n\n/**\n * @todo Удалить через пол года после выхода версии firefox с поддержкой contenteditable plaintext-only, включая бета версии\n */\nconst firefoxProps = computed(() => {\n\tif (navigator.userAgent.indexOf('Firefox') != -1) {\n\n\t\treturn {\n\t\t\tcontenteditable: inEdit.value,\n\t\t\tonpaste: (event: Event) => event.preventDefault(),\n\t\t};\n\t}\n\n\treturn {};\n});\n\n/**\n * Включен режим редактирвоания\n */\nconst inEdit = ref(false);\n\n/**\n * Включить режим редактирование\n */\nconst turnToEdit = async () => {\n\tinEdit.value = true;\n\n\tawait nextTick();\n\n\telName.value?.focus();\n};\n\n/**\n * Применить редактирование\n */\nconst editCommit = () => {\n\tconst name = elName.value?.innerText;\n\tif (!name) return editCancel();\n\n\tif (elName.value) elName.value.innerText = name;\n\n\tinEdit.value = false;\n\n\temit('update:name', name);\n};\n\n/**\n * Отменить редактирование\n */\nconst editCancel = async () => {\n\tif (elName.value) elName.value.innerText = props.name;\n\n\tinEdit.value = false;\n};\n\n/**\n * Применить выбор\n */\nconst changeSelect = (e: MouseEvent) => {\n\t// в режиме редактирования выбор не применяется\n\tif (inEdit.value) return;\n\n\t// тег запрещено выбирать\n\tif (props.disabled) return;\n\n\tlet toState: Props['state'] = 'selected';\n\n\tif (props.canExclude) {\n\t\tif (e.ctrlKey || e.metaKey) {\n\t\t\ttoState = 'excluded';\n\t\t}\n\t}\n\n\tif (props.state == toState) {\n\t\ttoState = '';\n\t}\n\n\tif (toState === '') emit('unselect');\n\tif (toState === 'selected') emit('select');\n\tif (toState === 'excluded') emit('exclude');\n};\n</script>\n\n<template>\n\t<TopPopupListItem\n\t\t:class=\"{\n\t\t\t'top-tagSelector_tagListItem': true,\n\t\t\t'top-tagSelector_tagListItem-inEdit': inEdit,\n\t\t\t'top-tagSelector_tagListItem-disabled': disabled,\n\t\t\t'top-tagSelector_tagListItem-canExclude': canExclude,\n\t\t\t'top-tagSelector-active': !!state,\n\t\t\t'top-tagSelector-excluded': state === 'excluded'\n\t\t}\"\n\t\t@click.stop=\"changeSelect\"\n\t>\n\t\t<TopTagIcon\n\t\t\t:id\n\t\t\t:name\n\t\t\t:colorId\n\t\t\t:state\n\t\t/>\n\n\t\t<span\n\t\t\tref=\"elName\"\n\t\t\tclass=\"top-tagSelector_tagListItemName\"\n\t\t\t:contenteditable=\"inEdit ? 'plaintext-only' : false\"\n\t\t\t:=\"firefoxProps\"\n\t\t\t@keydown.enter.stop=\"editCommit\"\n\t\t\t@keydown.esc.stop=\"editCancel\"\n\t\t>\n\t\t\t{{ name }}\n\t\t</span>\n\n\t\t<template v-if=\"editable\">\n\t\t\t<span\n\t\t\t\tv-if=\"!inEdit\"\n\t\t\t\tdata-top-icon=\"\"\n\t\t\t\tclass=\"top-tagSelector_edit\"\n\t\t\t\t@click=\"turnToEdit\"\n\t\t\t></span>\n\n\t\t\t<span\n\t\t\t\tv-else\n\t\t\t\tdata-top-icon=\"\"\n\t\t\t\tclass=\"top-tagSelector_edit\"\n\t\t\t\t@click.stop=\"editCommit\"\n\t\t\t></span>\n\t\t</template>\n\t</TopPopupListItem>\n</template>\n\n<style>\n.top-tagSelector_tagListItem.top-popup_listItem {\n\tpadding-top: var(--top-padding-2) !important;\n\tpadding-bottom: var(--top-padding-2) !important;\n\tgap: 10px;\n}\n\n.top-tagSelector_tagListItemName {\n\tborder-radius: var(--top-radius-1);\n\twidth: 120px;\n\tpadding: 4px 2px;\n\tmargin: -4px -2px;\n\ttext-overflow: ellipsis;\n\toverflow: hidden;\n\tflex-grow: 1;\n}\n\n/* редактирование */\n.top-tagSelector_edit {\n\t--top-icon-size: 18px;\n\t--top-icon-color: var(--color-text-3);\n\n\twidth: 20px;\n\tflex-grow: 0;\n}\n\n.top-tagSelector_edit:before {\n\tline-height: 0;\n}\n\n.top-tagSelector_edit { opacity: 0; }\n.top-tagSelector_edit:hover {\n\t--top-icon-color: var(--color-text-primary);\n}\n\n.top-tagSelector_tagListItem:hover .top-tagSelector_edit,\n.top-tagSelector_tagListItem-inEdit .top-tagSelector_edit {\n\tcursor: pointer;\n\topacity: 1;\n}\n\n.top-tagSelector_tagListItem-inEdit {\n\tbackground: var(--color-layout-front-3) !important;\n\toutline: 1px dashed var(--color-line-2);\n\toutline-offset: -1px;\n}\n\n.top-tagSelector_tagListItem-inEdit .top-tagSelector_tagListItemName {\n\tcursor: text;\n\tbackground: var(--color-layout-front-1);\n}\n\n/* disabled */\n.top-tagSelector_tagListItem-disabled {\n\tcursor: not-allowed !important;\n\topacity: 0.85;\n}\n.top-tagSelector_tagListItem-disabled:hover {\n\tbackground: inherit;\n}\n.top-tagSelector_tagListItem-disabled [data-tag_id] {\n\topacity: 0.6;\n}\n</style>\n","<script setup lang=\"ts\">\nimport type { Props, TagSelectorTarget } from './types';\nimport TopPopupOpener from '../../../popup/popup/opener.vue';\nimport TopButton from '@/components/forms/button/button.vue';\nimport { genTagIdClear, getTagById } from '../utils/utils';\nimport TopTagIcon from '../tagIcon/tagIcon.vue';\n\ndefineOptions({\n\tinheritAttrs: false,\n});\n\nconst props = defineProps<Props>();\n\nconst model = defineModel<Props['modelValue']>({\n\trequired: true,\n});\n\nconst component = props.useTopButton ? TopButton : 'div';\nconst componentSlotName = props.useTopButton ? 'html' : 'default';\n\nconst topTagSelectorTarget: TagSelectorTarget = {\n\tmodel,\n\tmode: props.mode,\n\ttargetId: props.targetId,\n\tfilters: props.filters,\n\tpayload: props.payload,\n};\n</script>\n\n<template>\n\t<TopPopupOpener :id>\n\t\t<component\n\t\t\t:is=\"component\"\n\t\t\t:class=\"{\n\t\t\t\t'top-tagSelector': true,\n\t\t\t\t'top-tagSelector-filter': props.mode === 'filter',\n\t\t\t\t'top-tagSelector-setter_single': props.mode === 'setter' && !filters,\n\t\t\t\t'top-tagSelector-setter_several': props.mode === 'setter' && filters,\n\t\t\t\t'top-tagSelector-selectedOne': !model.length || model.length === 1,\n\t\t\t\t'top-tagSelector-toTwoLine': model.length > 5,\n\t\t\t}\"\n\t\t\tcolor=\"theme\"\n\t\t\t:styling\n\t\t\tv-top-data:topTagSelectorTarget=\"topTagSelectorTarget\"\n\t\t\t:=$attrs\n\t\t>\n\t\t\t<template #[componentSlotName]>\n\t\t\t\t<TopTagIcon\n\t\t\t\t\tv-if=\"!model.length && mode === 'filter'\"\n\t\t\t\t\tid=\"all\"\n\t\t\t\t\tcolorId=\"\"\n\t\t\t\t\t:name=\"$i18n.Common.All_tags ?? ''\"\n\t\t\t\t\tstate=\"\"\n\t\t\t\t/>\n\n\t\t\t\t<!-- Массовое редактирование -->\n\t\t\t\t<div v-if=\"mode === 'setter' && filters\">\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Список тегов -->\n\t\t\t\t<TopTagIcon\n\t\t\t\t\tv-else\n\t\t\t\t\tv-for=\"tagId in model\"\n\t\t\t\t\t:id=\"genTagIdClear(tagId)\"\n\t\t\t\t\t:colorId=\"getTagById(tagId, tags)?.color_id ?? ''\"\n\t\t\t\t\t:name=\"getTagById(tagId, tags)?.name ?? ''\"\n\t\t\t\t\t:state=\"genTagIdClear(tagId) === tagId ? 'selected' : 'excluded'\"\n\t\t\t\t/>\n\t\t\t</template>\n\t\t</component>\n\t</TopPopupOpener>\n</template>\n\n<style>\n.top-tagSelector {\n\tcursor: pointer;\n\tmin-width: 0;\n\twhite-space: nowrap;\n\tjustify-content: left;\n}\n\n.top-tagSelector.top-button {\n\twidth: 112px;\n\tvertical-align: middle;\n}\n\n.top-tagSelector.top-button.top-as-selector {\n\twidth: calc(112px + 20px);\n}\n\n.top-tagSelector-filter {\n\tgap: var(--top-gap-1);\n}\n\n/* все теги в фильтре */\n.top-tagSelector-filter [data-tag_id=\"all\"]:before {\n\tmargin-right: 6px;\n}\n\n/* фильтр по одному тегу */\n.top-tagSelector-filter.top-tagSelector-selectedOne [data-tag_id]:after {\n\tcontent: attr(title);\n\tmargin-left: 20px;\n\tmin-width: 74px;\n\ttext-align: left;\n\tline-height: 1.2;\n\ttext-overflow: ellipsis;\n\toverflow: hidden;\n}\n\n.top-tagSelector-filter.top-tagSelector-selectedOne [data-tag_id=\"all\"]:after {\n\tmargin-left: 0;\n}\n\n/* фильтр по многим тегам */\n.top-button.top-tagSelector-filter.top-tagSelector-toTwoLine {\n\tflex-wrap: wrap;\n\talign-content: center;\n}\n\n.top-button.top-tagSelector-filter.top-tagSelector-toTwoLine [data-tag_id] {\n\t--top-tag-selector-size: 8px;\n}\n\n.top-button.top-tagSelector-filter.top-tagSelector-toTwoLine [data-tag_id]:nth-child(5) {\n\tmargin-right: 5px;\n}\n\n/* установка тегов */\n.top-tagSelector-setter_single {\n\tposition: relative;\n\tdisplay: flex !important; flex-direction: column; flex-wrap: wrap; align-items: stretch !important;\n}\n\n.top-tagSelector-setter_single [data-tag_id] {\n\twidth: auto; min-height: 20%; min-width: 50%;\n\tflex: 1 1 auto;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed, reactive, ref, shallowRef, watch } from 'vue';\n\nimport Core from '@/core/core/core';\nimport { useI18n } from '@/core/plugins/i18n';\nimport { storage } from '@/core/utils/dom';\nimport { debounce } from '@/core/utils/lodash';\n\nimport type { Option } from '@/components/forms/select/types';\nimport TopSelect from '@/components/forms/select/select.vue';\n\nimport TopButton from '@/components/forms/button/button.vue';\n\nimport type { PopupEvent } from '@/components/popup/popup/types';\nimport TopPopup from '../../popup/popup/popup.vue';\nimport TopPopupListItem from '../../popup/popup/listItem.vue';\n\nimport type { Emits, FiltersAction, Props, Tag } from './types';\nimport tagsDefaults from './tagsDefaults';\nimport { genTagIdExcluded } from './utils/utils';\n\nimport type { Props as TagListItemProps } from './popupListItem/types';\nimport TopTagListItem from './popupListItem/tagPopupListItem.vue';\n\nimport type { TagSelectorTarget } from './popupOpener/types';\nimport TopTagSelectorPopupOpener from './popupOpener/popupOpener.vue';\n\nconst i18n = useI18n();\n\nconst props = withDefaults(defineProps<Props>(), {\n\ttagsMax: 10,\n\trequiredForSetter: true,\n\temitDelay: 500,\n});\n\n/**\n * Выбранные теги кнопки в этом компоненте\n *\n * Редактирвоание ведется только через `editTarget.model`\n */\nconst model = defineModel<Props['modelValue']>({\n\trequired: true,\n});\n\n/**\n * Список тегов\n */\nconst tags = defineModel<Tag[]>('tags', {\n\tdefault: reactive(tagsDefaults),\n});\n\nconst emit = defineEmits<Emits>();\n\nconst emitDebounce: typeof emit = debounce((name, e) => {\n\temit(name, e);\n}, props.emitDelay);\n\n// требуется сразу указать один тег\nif (props.singleMode && !model.value.length) {\n\tmodel.value = [tags.value[0].id];\n}\n\nconst id = props.id ?? 'top-popup-id-' + Math.random() + '';\n\nconst filtersAction = ref<FiltersAction>('add');\n\n/**\n * Сгенерировать опции для выбора дейсвтия массого редактирования\n */\nconst genFiltersActionOptions = () => {\n\tconst tagsText = ' ' + i18n.Common.Tags?.toLowerCase();\n\n\tconst res = new Map<FiltersAction, Option>();\n\tres.set('add', { value: 'add', title: i18n.Common.Add + tagsText });\n\tres.set('replace', { value: 'replace', title: i18n.Common.Replace + tagsText });\n\tres.set('delete', { value: 'delete', title: i18n.Common.Delete + tagsText });\n\n\treturn res;\n};\n\n/**\n * Целевой объект редактирвоания тегов\n *\n * Определяется кнопкой, которая открыла popup выбора тегов\n */\nlet target = shallowRef<TagSelectorTarget>({\n\tmodel,\n\tmode: 'filter',\n\ttargetId: undefined,\n\tfilters: undefined,\n\tpayload: undefined,\n});\n\nwatch(model, () => {\n\temitDebounce('selector', model.value);\n});\n\n/**\n * Можно ли выбрать еще теги\n */\nconst disabled = computed(() => {\n\tif (target.value.mode !== 'setter') return;\n\n\tif (!props.maxTagsForSetter) return;\n\n\t// массовая смена тегов, количество тегов в результате узнать невозможно\n\tif (target.value.filters) return;\n\n\treturn target.value.model.value.length >= props.maxTagsForSetter;\n});\n\nconst genTargetTagState = (tagId: Tag['id'] | 'all'): TagListItemProps['state'] => {\n\tif (tagId !== 'all') {\n\t\tif (target.value.model.value.includes(tagId)) return 'selected';\n\n\t\tif (target.value.model.value.includes(genTagIdExcluded(tagId))) return 'excluded';\n\t}\n\n\t// Все теги, ни один из тегов не выбран\n\tif (tagId === 'all' && !target.value.model.value.length) return 'selected';\n\n\treturn '';\n};\n\nconst updateTargetModel = (tagId: Tag['id'], action: 'unselect' | 'select' | 'exclude') => {\n\tconst tagIdExcluded = genTagIdExcluded(tagId);\n\n\tlet tagsIds = target.value.model.value.filter(modelTagId => modelTagId !== tagId && modelTagId !== tagIdExcluded);\n\n\tif (action === 'select') tagsIds.push(tagId);\n\tif (action === 'exclude') tagsIds.push(tagIdExcluded);\n\n\t// режим редактирвоания тегов одного объекта с требованием указать хотя бы один тег\n\tif (target.value.mode === 'setter' && target.value.targetId !== undefined && props.requiredForSetter) {\n\t\t// нельзя снимать выделение со всех тегов\n\t\tif (!tagsIds.length) {\n\t\t\ttagsIds.push('1');\n\t\t}\n\n\t\t// при первом выборе сразу снять тег \"Без тега\"\n\t\tif (tagsIds.length === 2 && target.value.model.value.length === 1 && target.value.model.value[0] === '1') {\n\t\t\ttagsIds = tagsIds.filter((tagId) => tagId !== '1');\n\t\t}\n\t}\n\n\t// режим выбора одного тега\n\tif (props.singleMode && !target.value.filters) {\n\t\t// нужно указать хотя бы один тег\n\t\tif (!tagsIds.length) {\n\t\t\ttagsIds = target.value.model.value;\n\t\t}\n\n\t\tif (tagsIds.length > 1) {\n\t\t\ttagsIds = [tagsIds[tagsIds.length - 1]];\n\t\t}\n\t}\n\n\t// всегда выводить теги в порядке, указанном в настройках tags\n\ttagsIds.sort((a, b) => {\n\t\tif (!props.tags) return 0;\n\n\t\tconst aIndex = props.tags.findIndex((tag) => tag.id === a);\n\t\tconst bIndex = props.tags.findIndex((tag) => tag.id === b);\n\n\t\treturn aIndex - bIndex;\n\t});\n\n\ttarget.value.model.value = tagsIds;\n\n\tif (target.value.mode === 'setter' && target.value.targetId !== undefined) {\n\t\temitDebounce('setter', {\n\t\t\ttagsIds: tagsIds as Tag['id'][],\n\t\t\ttargetId: target.value.targetId,\n\t\t\tpayload: target.value.payload,\n\t\t});\n\t}\n};\n\nconst classString = computed(() => {\n\tlet res = 'top-tagSelector_popup';\n\n\tif (target.value.mode === 'filter') res += ' top-tagSelector_popup-filter';\n\tif (target.value.mode === 'setter') res += ' top-tagSelector_popup-setter';\n\n\treturn res;\n});\n\n/**\n * Добавить тег\n */\nconst addTag = () => {\n\tconst tagName = prompt('', 'New tag');\n\tif (!tagName || tagName === 'New tag') return;\n\n\tconst tagId = tags.value.length + 1;\n\n\ttags.value.push({\n\t\tid: String(tagId) as Tag['id'],\n\t\tname: tagName,\n\t\tcolor_id: String((tagId - 1) % 10 + 1) as Tag['color_id'],\n\t});\n\n\temit('tagsChanged', tags.value);\n};\n\nconst onOpen = (popupEvent: PopupEvent) => {\n\t// popup открыт другой кнопкой c другим modelValue, для редактирвоания объектов\n\ttarget.value = storage(popupEvent.elPopupOpener, 'topTagSelectorTarget');\n\tif (!target.value) throw new Error('Open popup TopTagSelector required v-data:topTagSelectorTarget');\n\n\t// при начале массовой установки тегов сбросить состояние формы\n\tif (target.value.filters) {\n\t\tfiltersAction.value = 'add';\n\t\ttarget.value.model.value = [];\n\t}\n\n\tif (!Core.$?.ui['sortable']) {\n\t\tconsole.info('Для работы сортировки требуется глобальная загрузка jQuery UI Sortable');\n\n\t\treturn;\n\t}\n\n\tif (!Core.state.isMobile && !Core.state.isMobileUA && tags.value) {\n\t\t$(popupEvent.elPopup).sortable({\n\t\t\titems: 'li:has([data-tag_id]:not([data-tag_id=\"all\"]))',\n\n\t\t\t/**\n\t\t\t * @todo Удалить `[contenteditable=\"true\"]` через пол года после выхода версии firefox с поддержкой contenteditable plaintext-only, включая бета версии\n\t\t\t */\n\t\t\tcancel: '[contenteditable=\"plaintext-only\"], [contenteditable=\"true\"]',\n\n\t\t\tdistance: 10,\n\t\t\tstop: function (_e, ui) {\n\t\t\t\tif (!tags.value) return;\n\n\t\t\t\tconst $tags = $(ui.item).parent().find('[data-tag_id]');\n\n\t\t\t\tconst tagsSorted: Tag['id'][] = [];\n\t\t\t\t$tags.each((_index, elTag) => {\n\t\t\t\t\tif (!tags.value) return;\n\n\t\t\t\t\tconst tagId = $(elTag).attr('data-tag_id') as Tag['id'];\n\t\t\t\t\ttagsSorted.push(tagId);\n\t\t\t\t});\n\n\t\t\t\ttags.value.sort((tagIdA, tagIdB) => {\n\t\t\t\t\tconst a = tagsSorted.findIndex(tagSorted => tagSorted === tagIdA.id);\n\t\t\t\t\tconst b = tagsSorted.findIndex(tagSorted => tagSorted === tagIdB.id);\n\n\t\t\t\t\treturn a - b;\n\t\t\t\t});\n\n\t\t\t\temitDebounce('tagsChanged', tags.value);\n\t\t\t},\n\t\t});\n\t}\n};\n\nconst onClose = (popupEvent: PopupEvent) => {\n\tif (!Core.$?.ui['sortable']) return;\n\n\tif ($(popupEvent.elPopup).data('ui-sortable')) {\n\t\t$(popupEvent.elPopup).sortable('destroy');\n\t}\n};\n</script>\n\n<template>\n\t<TopTagSelectorPopupOpener\n\t\tclass=\"top-as-selector\"\n\t\tv-model=\"model\"\n\t\t:id\n\t\t:tags\n\t\t:styling\n\t\tmode=\"filter\"\n\t\tuseTopButton\n\t/>\n\n\t<TopPopup\n\t\t:id\n\t\t:class=\"classString\"\n\t\t@open=\"onOpen($event)\"\n\t\t@close=\"onClose($event)\"\n\t\t:transition-duration=\"50\"\n\t>\n\t\t<!-- Массовое редактирвоание-->\n\t\t<template #header v-if=\"target.mode === 'setter' && target.filters\">\n\t\t\t<TopSelect\n\t\t\t\tv-model=\"filtersAction\"\n\t\t\t\t:options=\"genFiltersActionOptions()\"\n\t\t\t/>\n\t\t</template>\n\n\t\t<template #footer v-if=\"target.mode === 'setter' && target.filters\">\n\t\t\t<TopButton color=\"theme\">\n\t\t\t\t{{ $i18n.Common.Cancel }}\n\t\t\t</TopButton>\n\n\t\t\t<TopButton\n\t\t\t\t@click=\"emitDebounce('setter', {\n\t\t\t\t\ttagsIds: target.model.value as Tag['id'][],\n\t\t\t\t\tfilters: target.filters,\n\t\t\t\t\tfiltersAction,\n\t\t\t\t\tpayload: target.payload,\n\t\t\t\t})\"\n\t\t\t>\n\t\t\t\t{{ filtersAction === 'add' ? $i18n.Common['Add'] : '' }}\n\t\t\t\t{{ filtersAction === 'replace' ? $i18n.Common['Replace'] : '' }}\n\t\t\t\t{{ filtersAction === 'delete' ? $i18n.Common['Remove'] : '' }}\n\t\t\t</TopButton>\n\t\t</template>\n\n\t\t<template #contentList>\n\t\t\t<TopTagListItem\n\t\t\t\tv-if=\"target.mode === 'filter' && !singleMode\"\n\t\t\t\tid=\"all\"\n\t\t\t\tcolorId=\"\"\n\t\t\t\t:name=\"$i18n.Common.All_tags ?? ''\"\n\t\t\t\t:state=\"target.model.value.length ? '' : 'selected'\"\n\t\t\t\t@select=\"target.model.value = []\"\n\t\t\t/>\n\n\t\t\t<TopTagListItem\n\t\t\t\tv-for=\"tag in tags\"\n\t\t\t\t:key=\"tag.id\"\n\t\t\t\t:id=\"tag.id\"\n\t\t\t\t:colorId=\"tag.color_id\"\n\t\t\t\t:name=\"tag.name\"\n\t\t\t\t:state=\"genTargetTagState(tag.id)\"\n\t\t\t\t:canExclude=\"target.mode === 'filter' && !singleMode\"\n\t\t\t\t:editable=\"tagsEditable\"\n\t\t\t\t:disabled=\"disabled && genTargetTagState(tag.id) === ''\"\n\t\t\t\t@unselect=\"updateTargetModel(tag.id, 'unselect')\"\n\t\t\t\t@select=\"updateTargetModel(tag.id, 'select')\"\n\t\t\t\t@exclude=\"updateTargetModel(tag.id, 'exclude')\"\n\t\t\t\t@update:name=\"tag.name = $event as string, emitDebounce('tagsChanged', tags);\"\n\t\t\t/>\n\n\t\t\t<TopPopupListItem\n\t\t\t\tv-if=\"tagsEditable && tags.length < tagsMax && tags.length < 20\"\n\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t@click.stop=\"addTag\"\n\t\t\t>\n\t\t\t\t{{ $i18n.Common.Add }}\n\t\t\t</TopPopupListItem>\n\t\t</template>\n\t</TopPopup>\n</template>\n\n<style>\n.top-tagSelector_popup .top-popup {\n\tuser-select: none;\n\tmin-width: 220px !important;\n\ttext-align: left;\n}\n\n.top-tagSelector_popup .top-popup_header .top-select{\n\tflex-grow: 1;\n}\n</style>\n"],"names":["selectAllItem","vue","props","forms","_a","_ctx","item","model","_hoisted_2","useItemsFromCompetitors","competitors","projectId","competitor","searchersNames","regionUndefined","dummyIndex","searcherUndefined","regionAuto","searcherAuto","regionGlobal","getRegionAuto","genSearcherByKey","forFrequency","autoRegion","searchers","searcherByKey","genSearchersMapVolume","genSearchersMapCommon","onlyEnabledRegions","forceSearchersKeys","searcher","searcherI","region","regionI","searcherKey","serarcherByKey","getRegionGlobal","findRegion","searchRegion","findedRegion","dialogSelectorRegions","utils","useSelectSearcher","mapSearchers","i18n","optionBySearcherKey","res","option","utils_searchers","useSelectRegion","activeSearcherIndexed","regionIndex","_c","optionByRegionIndex","options","regionLabel","langLabel","optionByRegionIndex2","newRegionIndex","regionName","oldOptionByRegionIndex","index","title","regionNameCompare","regexpDevice","regionMatchLevelI","regionMatchLevel","regionsIndexes","regionsIndexesSaved","compareSave","compareLoad","useSelectorRegion","selectSearcher","allRegionsIndexes","globalRegionIndex","compare","newSearcherKey","selectRegion","regionsNewSearcher","regionsCurrentSearcher","_d","searhcerCompareKey","regionKey","getSearcherKey","getSearcher","getRegionIndex","regions","modelSingle","defaultKey","newModel","defaultIndex","all","newSearherKey","__expose","addChanger","genTagIdExcluded","tagId","genTagIdClear","getTagById","tags","tag","tag2","genElPopupOpener","propsPopup","htmlSetterSeveral","el","e","utils_dom","target","elPopupOpenerRender","modelValue","renderElPopupOpener","tagsIds","elTagIcon","genElTagIcon","_b","tagsDefaults","state","id","name","elName","firefoxProps","inEdit","event","name2","editCancel","emit","changeSelect","toState","disabled","canExclude","editCommit","turnToEdit","component","filters","styling","_sfc_main$3","filtersAction","tagsText","emitDebounce","genTargetTagState","updateTargetModel","action","tagIdExcluded","tagId2","aIndex","a","bIndex","b","classString","tagName","onOpen","popupEvent","_e","ui","$tags","tagsSorted","tagSorted","tagIdA","tagIdB","onClose","_cache","$event","singleMode","tagsEditable"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from '../src/components/project/project'
2
+ export {}