@topvisor/ui 1.5.4 → 1.5.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/.chunks/{api-DQSboD9F.amd.js → api-D5wIZnrK.amd.js} +2 -2
  2. package/.chunks/{api-DQSboD9F.amd.js.map → api-D5wIZnrK.amd.js.map} +1 -1
  3. package/.chunks/{api-DQSboD9F.esm.js → api-D5wIZnrK.esm.js} +2 -2
  4. package/.chunks/api-D5wIZnrK.esm.js.map +1 -0
  5. package/.chunks/{app-DeBknp1Q.amd.js → app-0qVCkgOO.amd.js} +2 -2
  6. package/.chunks/{app-DeBknp1Q.amd.js.map → app-0qVCkgOO.amd.js.map} +1 -1
  7. package/.chunks/{app-DeBknp1Q.esm.js → app-0qVCkgOO.esm.js} +5 -5
  8. package/.chunks/{app-DeBknp1Q.esm.js.map → app-0qVCkgOO.esm.js.map} +1 -1
  9. package/.chunks/{datepicker-B2Km72Vg.amd.js → datepicker-CYAhR3K9.amd.js} +2 -2
  10. package/.chunks/{datepicker-B2Km72Vg.amd.js.map → datepicker-CYAhR3K9.amd.js.map} +1 -1
  11. package/.chunks/{datepicker-B2Km72Vg.esm.js → datepicker-CYAhR3K9.esm.js} +2 -2
  12. package/.chunks/{datepicker-B2Km72Vg.esm.js.map → datepicker-CYAhR3K9.esm.js.map} +1 -1
  13. package/.chunks/{dialog-DPTJ7VN5.amd.js → dialog-CdgC31H2.amd.js} +2 -2
  14. package/.chunks/{dialog-DPTJ7VN5.amd.js.map → dialog-CdgC31H2.amd.js.map} +1 -1
  15. package/.chunks/{dialog-DPTJ7VN5.esm.js → dialog-CdgC31H2.esm.js} +3 -3
  16. package/.chunks/{dialog-DPTJ7VN5.esm.js.map → dialog-CdgC31H2.esm.js.map} +1 -1
  17. package/.chunks/{dialog_regionSelectorRegions-ClRx55RP.amd.js → dialog_regionSelectorRegions-BFpuUEJM.amd.js} +2 -2
  18. package/.chunks/{dialog_regionSelectorRegions-ClRx55RP.amd.js.map → dialog_regionSelectorRegions-BFpuUEJM.amd.js.map} +1 -1
  19. package/.chunks/{dialog_regionSelectorRegions-ClRx55RP.esm.js → dialog_regionSelectorRegions-BFpuUEJM.esm.js} +4 -4
  20. package/.chunks/dialog_regionSelectorRegions-BFpuUEJM.esm.js.map +1 -0
  21. package/.chunks/{forms-DKVIpGnH.amd.js → forms-BiKUURH4.amd.js} +2 -2
  22. package/.chunks/forms-BiKUURH4.amd.js.map +1 -0
  23. package/.chunks/{forms-DKVIpGnH.esm.js → forms-BiKUURH4.esm.js} +82 -86
  24. package/.chunks/forms-BiKUURH4.esm.js.map +1 -0
  25. package/.chunks/{formsExt-B32m6XEQ.amd.js → formsExt-Bk_fn1Pg.amd.js} +2 -2
  26. package/.chunks/{formsExt-B32m6XEQ.amd.js.map → formsExt-Bk_fn1Pg.amd.js.map} +1 -1
  27. package/.chunks/{formsExt-B32m6XEQ.esm.js → formsExt-Bk_fn1Pg.esm.js} +4 -4
  28. package/.chunks/{formsExt-B32m6XEQ.esm.js.map → formsExt-Bk_fn1Pg.esm.js.map} +1 -1
  29. package/.chunks/{notice-C3_mXHCe.amd.js → notice-LFdPfo-5.amd.js} +2 -2
  30. package/.chunks/{notice-C3_mXHCe.amd.js.map → notice-LFdPfo-5.amd.js.map} +1 -1
  31. package/.chunks/{notice-C3_mXHCe.esm.js → notice-LFdPfo-5.esm.js} +2 -2
  32. package/.chunks/notice-LFdPfo-5.esm.js.map +1 -0
  33. package/.chunks/popup-DB5g_8kB.amd.js +2 -0
  34. package/.chunks/popup-DB5g_8kB.amd.js.map +1 -0
  35. package/.chunks/{popup-B8Us9xZO.esm.js → popup-DB5g_8kB.esm.js} +20 -18
  36. package/.chunks/popup-DB5g_8kB.esm.js.map +1 -0
  37. package/.chunks/{popup-CtiL5V44.amd.js → popup-KKfSSrM6.amd.js} +2 -2
  38. package/.chunks/{popup-CtiL5V44.amd.js.map → popup-KKfSSrM6.amd.js.map} +1 -1
  39. package/.chunks/{popup-CtiL5V44.esm.js → popup-KKfSSrM6.esm.js} +3 -3
  40. package/.chunks/{popup-CtiL5V44.esm.js.map → popup-KKfSSrM6.esm.js.map} +1 -1
  41. package/.chunks/{utils-C1xkXfK0.amd.js → utils-3uWRvFcX.amd.js} +2 -2
  42. package/.chunks/utils-3uWRvFcX.amd.js.map +1 -0
  43. package/.chunks/{utils-C1xkXfK0.esm.js → utils-3uWRvFcX.esm.js} +5 -5
  44. package/.chunks/utils-3uWRvFcX.esm.js.map +1 -0
  45. package/.chunks/{utils-Cj8CJ22r.amd.js → utils-BiOp5DHs.amd.js} +2 -2
  46. package/.chunks/{utils-Cj8CJ22r.amd.js.map → utils-BiOp5DHs.amd.js.map} +1 -1
  47. package/.chunks/{utils-Cj8CJ22r.esm.js → utils-BiOp5DHs.esm.js} +4 -4
  48. package/.chunks/{utils-Cj8CJ22r.esm.js.map → utils-BiOp5DHs.esm.js.map} +1 -1
  49. package/.chunks/{worker-DYTgdzGP.amd.js → worker-BufdAd-a.amd.js} +2 -2
  50. package/.chunks/{worker-DYTgdzGP.amd.js.map → worker-BufdAd-a.amd.js.map} +1 -1
  51. package/.chunks/{worker-DYTgdzGP.esm.js → worker-BufdAd-a.esm.js} +3 -3
  52. package/.chunks/{worker-DYTgdzGP.esm.js.map → worker-BufdAd-a.esm.js.map} +1 -1
  53. package/api/additional.amd.js +1 -1
  54. package/api/additional.amd.js.map +1 -1
  55. package/api/additional.js +1 -4
  56. package/api/additional.js.map +1 -1
  57. package/api/index.amd.js +1 -1
  58. package/api/index.amd.js.map +1 -1
  59. package/api/index.js +1 -1
  60. package/assets/forms.css +1 -1
  61. package/assets/schedule.css +1 -0
  62. package/assets/themes/dark-th.css +1 -1
  63. package/assets/themes/dark.css +1 -1
  64. package/assets/themes/light.css +1 -1
  65. package/autoload-css-manifest.amd.json +10 -4
  66. package/autoload-css-manifest.json +10 -4
  67. package/charts/charts.amd.js +1 -1
  68. package/charts/charts.amd.js.map +1 -1
  69. package/charts/charts.js +1 -1
  70. package/charts/charts.js.map +1 -1
  71. package/core/app.amd.js +1 -1
  72. package/core/app.amd.js.map +1 -1
  73. package/core/app.js +3 -3
  74. package/dialog/dialog.amd.js +1 -1
  75. package/dialog/dialog.amd.js.map +1 -1
  76. package/dialog/dialog.js +2 -2
  77. package/forms/forms.amd.js +1 -1
  78. package/forms/forms.amd.js.map +1 -1
  79. package/forms/forms.js +1 -1
  80. package/formsExt/formsExt.amd.js +1 -1
  81. package/formsExt/formsExt.amd.js.map +1 -1
  82. package/formsExt/formsExt.js +1 -1
  83. package/layout/layout.amd.js +1 -1
  84. package/layout/layout.amd.js.map +1 -1
  85. package/layout/layout.js +1 -1
  86. package/package.json +1 -1
  87. package/popup/popup.amd.js +1 -1
  88. package/popup/popup.amd.js.map +1 -1
  89. package/popup/popup.js +1 -1
  90. package/popup/worker.amd.js +1 -1
  91. package/popup/worker.amd.js.map +1 -1
  92. package/popup/worker.js +1 -1
  93. package/project/project.amd.js +1 -1
  94. package/project/project.amd.js.map +1 -1
  95. package/project/project.js +19 -25
  96. package/project/project.js.map +1 -1
  97. package/require/css.amd.js +2 -0
  98. package/schedule/schedule.amd.js +2 -0
  99. package/schedule/schedule.amd.js.map +1 -0
  100. package/schedule/schedule.d.ts +2 -0
  101. package/schedule/schedule.js +430 -0
  102. package/schedule/schedule.js.map +1 -0
  103. package/src/components/project/groupSelector/groups/types.d.ts +1 -1
  104. package/src/components/project/groupSelector/stories/play/apiEditorMulti.d.ts +2 -0
  105. package/src/components/project/groupSelector/types.d.ts +1 -1
  106. package/src/components/project/projectSelector/utils.d.ts +2 -1
  107. package/src/components/schedule/schedule/compoents/calendar/types.d.ts +19 -0
  108. package/src/components/schedule/schedule/compoents/calendar/utils.d.ts +10 -0
  109. package/src/components/schedule/schedule/compoents/email/selector/types.d.ts +13 -0
  110. package/src/components/schedule/schedule/compoents/email/types.d.ts +13 -0
  111. package/src/components/schedule/schedule/compoents/reportSend/types.d.ts +23 -0
  112. package/src/components/schedule/schedule/compoents/timeSelector/types.d.ts +14 -0
  113. package/src/components/schedule/schedule/compoents/timeSelectors/types.d.ts +7 -0
  114. package/src/components/schedule/schedule/types.d.ts +25 -0
  115. package/src/components/schedule/schedule.d.ts +8 -0
  116. package/tabsView/tabsView.amd.js +1 -1
  117. package/tabsView/tabsView.amd.js.map +1 -1
  118. package/tabsView/tabsView.js +3 -3
  119. package/tabsView/tabsView.js.map +1 -1
  120. package/utils/clipboard.amd.js +1 -1
  121. package/utils/clipboard.amd.js.map +1 -1
  122. package/utils/clipboard.js +1 -1
  123. package/utils/date.amd.js +1 -1
  124. package/utils/date.amd.js.map +1 -1
  125. package/utils/date.js +1 -1
  126. package/utils/device.amd.js +1 -1
  127. package/utils/device.amd.js.map +1 -1
  128. package/utils/device.js +1 -1
  129. package/utils/lodash.amd.js +1 -1
  130. package/utils/lodash.amd.js.map +1 -1
  131. package/utils/lodash.js +1 -1
  132. package/utils/number.amd.js.map +1 -1
  133. package/utils/number.js.map +1 -1
  134. package/utils/price.amd.js +1 -1
  135. package/utils/price.amd.js.map +1 -1
  136. package/utils/price.js +1 -1
  137. package/utils/route.amd.js.map +1 -1
  138. package/utils/route.js.map +1 -1
  139. package/utils/searchers.amd.js +1 -1
  140. package/utils/searchers.amd.js.map +1 -1
  141. package/utils/searchers.js +1 -1
  142. package/utils/string.amd.js +1 -1
  143. package/utils/string.amd.js.map +1 -1
  144. package/utils/string.js +3 -3
  145. package/utils/string.js.map +1 -1
  146. package/utils/url.amd.js +1 -1
  147. package/utils/url.amd.js.map +1 -1
  148. package/utils/url.js +11 -7
  149. package/utils/url.js.map +1 -1
  150. package/.chunks/api-DQSboD9F.esm.js.map +0 -1
  151. package/.chunks/dialog_regionSelectorRegions-ClRx55RP.esm.js.map +0 -1
  152. package/.chunks/forms-DKVIpGnH.amd.js.map +0 -1
  153. package/.chunks/forms-DKVIpGnH.esm.js.map +0 -1
  154. package/.chunks/notice-C3_mXHCe.esm.js.map +0 -1
  155. package/.chunks/popup-B8Us9xZO.amd.js +0 -2
  156. package/.chunks/popup-B8Us9xZO.amd.js.map +0 -1
  157. package/.chunks/popup-B8Us9xZO.esm.js.map +0 -1
  158. package/.chunks/utils-C1xkXfK0.amd.js.map +0 -1
  159. package/.chunks/utils-C1xkXfK0.esm.js.map +0 -1
  160. package/src/components/formsExt/selector2/composables/useAPI.d.ts +0 -2138
  161. package/src/components/formsExt/selector2/composables/useMenu.d.ts +0 -2142
@@ -1 +0,0 @@
1
- {"version":3,"file":"dialog_regionSelectorRegions-ClRx55RP.esm.js","names":["$i18n"],"sources":["../../src/components/project/regionSelector/dialog_regionSelectorRegions/dialog_regionSelectorRegions.vue","../../src/components/project/regionSelector/dialog_regionSelectorRegions/dialog_regionSelectorRegions.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, reactive, ref, watch } from 'vue';\nimport { TopDialog, TopDialogPage, useTopDialogSelf } from '@/components/dialog/dialog';\nimport { genFlagLinkByCountryCode } from '@/core/utils/string';\nimport type { Props, RegionRich } from './types';\nimport { getDeviceGIcon, getLangLabel, getSearcherGIcon } from '@/core/utils/searchers';\nimport Core from '@/core/core/core';\n\ndefineOptions({ id: 'regionSelectorRegions' });\n\nconst props = defineProps<Partial<Props>>();\n\nconst dialog = useTopDialogSelf();\n\n/**\n * Список расширенных регионов для использования в компоненте\n */\nconst regionsRich = ref<RegionRich[]>([]);\n\n/**\n * Ссылка на элемент с регионами\n */\nconst elRegions = ref<null | HTMLElement>(null);\n\n/**\n * Направление сортировки по полю\n */\nconst sortedVectorByField = reactive({\n\tsearcher_key: -1,\n\tkey: -1,\n\tname: -1,\n});\n\n/**\n * Выбраны все регионы\n */\nconst isAllSelected = computed({\n\tget() {\n\t\treturn regionsRich.value.every(region => region.selected);\n\t},\n\n\tset(value) {\n\t\tregionsRich.value = regionsRich.value.map(region => ({ ...region, selected: value }));\n\t},\n});\n\n/**\n * Сортировать регионы по выбранному полю\n * @param sortedField - Поле для сортировки\n */\nconst sort = (sortedField: keyof typeof sortedVectorByField) => {\n\tsortedVectorByField[sortedField] = -sortedVectorByField[sortedField];\n\n\tregionsRich.value.sort((regionA, regionB) => {\n\t\tif (!regionA[sortedField] || !regionB[sortedField]) return -1;\n\n\t\treturn regionA[sortedField] >= regionB[sortedField] ? sortedVectorByField[sortedField] : -sortedVectorByField[sortedField];\n\t});\n};\n\n/**\n * Применить изменения\n *\n * Вызывает callback `props['@update:regionsIndexes']`\n */\nconst onSubmit = () => {\n\tif (!regionsRich.value.some(region => region.selected)) return;\n\n\tconst regionsIndexes = regionsRich.value\n\t\t.filter(region => region.selected)\n\t\t.map(region => region.index);\n\n\tprops['@update:regionsIndexes']?.(regionsIndexes);\n\n\tdialog.close();\n};\n\n// генерация регионов\nwatch([\n\t() => props.regions,\n\t() => props.regionsIndexes,\n], () => {\n\tregionsRich.value = [];\n\n\tif (!props.regions) return;\n\tif (!props.regionsIndexes) return;\n\n\tlet regions = [...props.regions];\n\n\t// отсортировать регионы по входным данным\n\tconst orderByRegionIndex = new Map(props.regionsIndexes.map((index, order) => [index, order]));\n\n\tregions.sort((regionA, regionB) => {\n\t\tconst orderA = orderByRegionIndex.get(regionA.index) ?? Number.MAX_VALUE;\n\t\tconst orderB = orderByRegionIndex.get(regionB.index) ?? Number.MAX_VALUE;\n\n\t\treturn orderA - orderB;\n\t});\n\n\tregions.forEach(region => {\n\t\tlet title = region.name;\n\t\tif (region.areaName) title += ` (${region.areaName})`;\n\n\t\tconst selected = props.regionsIndexes?.includes(region.index) ?? false;\n\t\tconst searcherIcon = getSearcherGIcon(region.searcher_key);\n\t\tconst langLabel = region.lang !== undefined ? getLangLabel(region.searcher_key ?? 999, region.lang) : undefined;\n\t\tconst deviceIcon = region.device !== undefined ? getDeviceGIcon(region.device) : undefined;\n\t\tconst flagLink = region.countryCode !== undefined ? genFlagLinkByCountryCode(region.countryCode) : undefined;\n\n\t\tconst regionRich = {\n\t\t\t...region,\n\t\t\tselected,\n\t\t\ttitle,\n\t\t\tsearcherIcon,\n\t\t\tlangLabel,\n\t\t\tdeviceIcon,\n\t\t\tflagLink,\n\t\t};\n\n\t\tregionsRich.value.push(regionRich);\n\t});\n});\n\n/**\n * Проверить на существование sortable\n */\nconst onOpen = () => {\n\tif (!Core.$?.ui['sortable']) {\n\t\tconsole.info('Для работы сортировки требуется глобальная загрузка jQuery UI Sortable');\n\n\t\treturn;\n\t}\n\n\tif (!elRegions.value) return;\n\n\t$(elRegions.value).sortable({\n\t\tdistance: 10,\n\n\t\tstop: () => {\n\t\t\t// Обновляем порядок регионов в массиве regionsRich после сортировки\n\t\t\tconst sortedIndexes = [...elRegions.value!.children].map(el => Number(el.getAttribute('data-region-index')));\n\t\t\tregionsRich.value.sort((a, b) => sortedIndexes.indexOf(a.index) - sortedIndexes.indexOf(b.index));\n\t\t},\n\t});\n};\n\n/**\n * Удаление sortable\n */\nconst onClose = () => {\n\tif (!Core.$?.ui['sortable']) return;\n\tif (!elRegions.value) return;\n\n\t$(elRegions.value).sortable('destroy');\n};\n\n</script>\n\n<template>\n\t<TopDialog\n\t\t:id=\"dialog.id\"\n\t\tpageActive=\"regions\"\n\t\tclass=\"dialog_regionSelectorRegions\"\n\t\theight=\"600px\"\n\t\twidth=\"600px\"\n\t\t@open=\"onOpen\"\n\t\t@close=\"onClose\"\n\t>\n\t\t<TopDialogPage name=\"regions\" :order=\"0\">\n\t\t\t<template #header>\n\t\t\t\t<div class=\"dialog_regionSelectorRegions_header\">\n\t\t\t\t\t<TopCheckbox v-model=\"isAllSelected\"></TopCheckbox>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('searcher_key')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_search_engine\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('key')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_yande_region_code\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('name')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_lphabetically\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<template #body>\n\t\t\t\t<div ref=\"elRegions\">\n\t\t\t\t\t<TopCheckbox\n\t\t\t\t\t\tv-for=\"region of regionsRich\"\n\t\t\t\t\t\t:key=\"region.index\"\n\t\t\t\t\t\tv-model=\"region.selected\"\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_region\"\n\t\t\t\t\t\t:data-region-index=\"region.index\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_regionSearcherIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"region.searcherIcon\"\n\t\t\t\t\t\t></div>\n\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tv-if=\"region.flagLink\"\n\t\t\t\t\t\t\tclass=\"top-flag\"\n\t\t\t\t\t\t\t:src=\"'//topvisor.dev' + region.flagLink\"\n\t\t\t\t\t\t\t:alt=\"region.countryCode\"\n\t\t\t\t\t\t>\n\n\t\t\t\t\t\t<div class=\"top-ellipsis\">\n\t\t\t\t\t\t\t{{ region.name }}\n\n\t\t\t\t\t\t\t<span class=\"dialog_regionSelectorRegions_regionAreaName\">\n\t\t\t\t\t\t\t\t{{ region.areaName }}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div v-if=\"region.langLabel\">\n\t\t\t\t\t\t\t[{{ region.langLabel }}]\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tv-if=\"region.deviceIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"region.deviceIcon\"\n\t\t\t\t\t\t></div>\n\t\t\t\t\t</TopCheckbox>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<template #footer>\n\t\t\t\t<TopButton @click=\"onSubmit\">\n\t\t\t\t\t{{ $i18n.Common?.Apply }}\n\t\t\t\t</TopButton>\n\t\t\t</template>\n\t\t</TopDialogPage>\n\t</TopDialog>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { computed, reactive, ref, watch } from 'vue';\nimport { TopDialog, TopDialogPage, useTopDialogSelf } from '@/components/dialog/dialog';\nimport { genFlagLinkByCountryCode } from '@/core/utils/string';\nimport type { Props, RegionRich } from './types';\nimport { getDeviceGIcon, getLangLabel, getSearcherGIcon } from '@/core/utils/searchers';\nimport Core from '@/core/core/core';\n\ndefineOptions({ id: 'regionSelectorRegions' });\n\nconst props = defineProps<Partial<Props>>();\n\nconst dialog = useTopDialogSelf();\n\n/**\n * Список расширенных регионов для использования в компоненте\n */\nconst regionsRich = ref<RegionRich[]>([]);\n\n/**\n * Ссылка на элемент с регионами\n */\nconst elRegions = ref<null | HTMLElement>(null);\n\n/**\n * Направление сортировки по полю\n */\nconst sortedVectorByField = reactive({\n\tsearcher_key: -1,\n\tkey: -1,\n\tname: -1,\n});\n\n/**\n * Выбраны все регионы\n */\nconst isAllSelected = computed({\n\tget() {\n\t\treturn regionsRich.value.every(region => region.selected);\n\t},\n\n\tset(value) {\n\t\tregionsRich.value = regionsRich.value.map(region => ({ ...region, selected: value }));\n\t},\n});\n\n/**\n * Сортировать регионы по выбранному полю\n * @param sortedField - Поле для сортировки\n */\nconst sort = (sortedField: keyof typeof sortedVectorByField) => {\n\tsortedVectorByField[sortedField] = -sortedVectorByField[sortedField];\n\n\tregionsRich.value.sort((regionA, regionB) => {\n\t\tif (!regionA[sortedField] || !regionB[sortedField]) return -1;\n\n\t\treturn regionA[sortedField] >= regionB[sortedField] ? sortedVectorByField[sortedField] : -sortedVectorByField[sortedField];\n\t});\n};\n\n/**\n * Применить изменения\n *\n * Вызывает callback `props['@update:regionsIndexes']`\n */\nconst onSubmit = () => {\n\tif (!regionsRich.value.some(region => region.selected)) return;\n\n\tconst regionsIndexes = regionsRich.value\n\t\t.filter(region => region.selected)\n\t\t.map(region => region.index);\n\n\tprops['@update:regionsIndexes']?.(regionsIndexes);\n\n\tdialog.close();\n};\n\n// генерация регионов\nwatch([\n\t() => props.regions,\n\t() => props.regionsIndexes,\n], () => {\n\tregionsRich.value = [];\n\n\tif (!props.regions) return;\n\tif (!props.regionsIndexes) return;\n\n\tlet regions = [...props.regions];\n\n\t// отсортировать регионы по входным данным\n\tconst orderByRegionIndex = new Map(props.regionsIndexes.map((index, order) => [index, order]));\n\n\tregions.sort((regionA, regionB) => {\n\t\tconst orderA = orderByRegionIndex.get(regionA.index) ?? Number.MAX_VALUE;\n\t\tconst orderB = orderByRegionIndex.get(regionB.index) ?? Number.MAX_VALUE;\n\n\t\treturn orderA - orderB;\n\t});\n\n\tregions.forEach(region => {\n\t\tlet title = region.name;\n\t\tif (region.areaName) title += ` (${region.areaName})`;\n\n\t\tconst selected = props.regionsIndexes?.includes(region.index) ?? false;\n\t\tconst searcherIcon = getSearcherGIcon(region.searcher_key);\n\t\tconst langLabel = region.lang !== undefined ? getLangLabel(region.searcher_key ?? 999, region.lang) : undefined;\n\t\tconst deviceIcon = region.device !== undefined ? getDeviceGIcon(region.device) : undefined;\n\t\tconst flagLink = region.countryCode !== undefined ? genFlagLinkByCountryCode(region.countryCode) : undefined;\n\n\t\tconst regionRich = {\n\t\t\t...region,\n\t\t\tselected,\n\t\t\ttitle,\n\t\t\tsearcherIcon,\n\t\t\tlangLabel,\n\t\t\tdeviceIcon,\n\t\t\tflagLink,\n\t\t};\n\n\t\tregionsRich.value.push(regionRich);\n\t});\n});\n\n/**\n * Проверить на существование sortable\n */\nconst onOpen = () => {\n\tif (!Core.$?.ui['sortable']) {\n\t\tconsole.info('Для работы сортировки требуется глобальная загрузка jQuery UI Sortable');\n\n\t\treturn;\n\t}\n\n\tif (!elRegions.value) return;\n\n\t$(elRegions.value).sortable({\n\t\tdistance: 10,\n\n\t\tstop: () => {\n\t\t\t// Обновляем порядок регионов в массиве regionsRich после сортировки\n\t\t\tconst sortedIndexes = [...elRegions.value!.children].map(el => Number(el.getAttribute('data-region-index')));\n\t\t\tregionsRich.value.sort((a, b) => sortedIndexes.indexOf(a.index) - sortedIndexes.indexOf(b.index));\n\t\t},\n\t});\n};\n\n/**\n * Удаление sortable\n */\nconst onClose = () => {\n\tif (!Core.$?.ui['sortable']) return;\n\tif (!elRegions.value) return;\n\n\t$(elRegions.value).sortable('destroy');\n};\n\n</script>\n\n<template>\n\t<TopDialog\n\t\t:id=\"dialog.id\"\n\t\tpageActive=\"regions\"\n\t\tclass=\"dialog_regionSelectorRegions\"\n\t\theight=\"600px\"\n\t\twidth=\"600px\"\n\t\t@open=\"onOpen\"\n\t\t@close=\"onClose\"\n\t>\n\t\t<TopDialogPage name=\"regions\" :order=\"0\">\n\t\t\t<template #header>\n\t\t\t\t<div class=\"dialog_regionSelectorRegions_header\">\n\t\t\t\t\t<TopCheckbox v-model=\"isAllSelected\"></TopCheckbox>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('searcher_key')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_search_engine\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('key')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_yande_region_code\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('name')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_lphabetically\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<template #body>\n\t\t\t\t<div ref=\"elRegions\">\n\t\t\t\t\t<TopCheckbox\n\t\t\t\t\t\tv-for=\"region of regionsRich\"\n\t\t\t\t\t\t:key=\"region.index\"\n\t\t\t\t\t\tv-model=\"region.selected\"\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_region\"\n\t\t\t\t\t\t:data-region-index=\"region.index\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_regionSearcherIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"region.searcherIcon\"\n\t\t\t\t\t\t></div>\n\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tv-if=\"region.flagLink\"\n\t\t\t\t\t\t\tclass=\"top-flag\"\n\t\t\t\t\t\t\t:src=\"'//topvisor.dev' + region.flagLink\"\n\t\t\t\t\t\t\t:alt=\"region.countryCode\"\n\t\t\t\t\t\t>\n\n\t\t\t\t\t\t<div class=\"top-ellipsis\">\n\t\t\t\t\t\t\t{{ region.name }}\n\n\t\t\t\t\t\t\t<span class=\"dialog_regionSelectorRegions_regionAreaName\">\n\t\t\t\t\t\t\t\t{{ region.areaName }}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div v-if=\"region.langLabel\">\n\t\t\t\t\t\t\t[{{ region.langLabel }}]\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tv-if=\"region.deviceIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"region.deviceIcon\"\n\t\t\t\t\t\t></div>\n\t\t\t\t\t</TopCheckbox>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<template #footer>\n\t\t\t\t<TopButton @click=\"onSubmit\">\n\t\t\t\t\t{{ $i18n.Common?.Apply }}\n\t\t\t\t</TopButton>\n\t\t\t</template>\n\t\t</TopDialogPage>\n\t</TopDialog>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n"],"mappings":"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"}