@topvisor/ui 1.0.13-fix-dialog-scroll → 1.0.14

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 (117) hide show
  1. package/.chunks/{datepicker-BLuImSNi.amd.js → datepicker-DW_EVh8-.amd.js} +2 -2
  2. package/.chunks/{datepicker-BLuImSNi.amd.js.map → datepicker-DW_EVh8-.amd.js.map} +1 -1
  3. package/.chunks/{datepicker-B8syh3Uk.es.js → datepicker-Ri3BN3-Y.es.js} +2 -2
  4. package/.chunks/{datepicker-B8syh3Uk.es.js.map → datepicker-Ri3BN3-Y.es.js.map} +1 -1
  5. package/.chunks/{forms-C4-jc5q2.es.js → forms-CHyoeELv.es.js} +21 -21
  6. package/.chunks/{forms-C4-jc5q2.es.js.map → forms-CHyoeELv.es.js.map} +1 -1
  7. package/.chunks/{forms-CiwhEtPE.amd.js → forms-CORLOoYZ.amd.js} +3 -3
  8. package/.chunks/{forms-CiwhEtPE.amd.js.map → forms-CORLOoYZ.amd.js.map} +1 -1
  9. package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-sNbmDi34.amd.js → listItem.vue_vue_type_script_setup_true_lang-BZar2z_p.amd.js} +2 -2
  10. package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-sNbmDi34.amd.js.map → listItem.vue_vue_type_script_setup_true_lang-BZar2z_p.amd.js.map} +1 -1
  11. package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-CtqSJHeU.es.js → listItem.vue_vue_type_script_setup_true_lang-Dvz76-gx.es.js} +2 -2
  12. package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-CtqSJHeU.es.js.map → listItem.vue_vue_type_script_setup_true_lang-Dvz76-gx.es.js.map} +1 -1
  13. package/.chunks/{menu.vue_vue_type_style_index_0_lang-jctlBjKS.amd.js → menu.vue_vue_type_style_index_0_lang-Chd1ygyG.amd.js} +2 -2
  14. package/.chunks/{menu.vue_vue_type_style_index_0_lang-jctlBjKS.amd.js.map → menu.vue_vue_type_style_index_0_lang-Chd1ygyG.amd.js.map} +1 -1
  15. package/.chunks/{menu.vue_vue_type_style_index_0_lang-BCFxRsJ_.es.js → menu.vue_vue_type_style_index_0_lang-Rex3a5_T.es.js} +2 -2
  16. package/.chunks/{menu.vue_vue_type_style_index_0_lang-BCFxRsJ_.es.js.map → menu.vue_vue_type_style_index_0_lang-Rex3a5_T.es.js.map} +1 -1
  17. package/.chunks/notice-Bh-LvHpR.es.js +175 -0
  18. package/.chunks/notice-Bh-LvHpR.es.js.map +1 -0
  19. package/.chunks/notice-BnvlWLlj.amd.js +4 -0
  20. package/.chunks/notice-BnvlWLlj.amd.js.map +1 -0
  21. package/.chunks/{popup-DEG8x2yE.es.js → popup-0nFCdjiM.es.js} +3 -3
  22. package/.chunks/popup-0nFCdjiM.es.js.map +1 -0
  23. package/.chunks/{popup-D6LvyJ7M.amd.js → popup-B285SUGc.amd.js} +2 -2
  24. package/.chunks/popup-B285SUGc.amd.js.map +1 -0
  25. package/.chunks/{utils-BiyYJ_AB.es.js → utils-B3neE-vU.es.js} +52 -44
  26. package/.chunks/utils-B3neE-vU.es.js.map +1 -0
  27. package/.chunks/{utils-B3ycYRqM.amd.js → utils-COOeS9rk.amd.js} +2 -2
  28. package/.chunks/utils-COOeS9rk.amd.js.map +1 -0
  29. package/.chunks/utils-k0wIxxij.amd.js +2 -0
  30. package/.chunks/utils-k0wIxxij.amd.js.map +1 -0
  31. package/.chunks/{utils-DdsRxaK5.es.js → utils-tB3V9IWe.es.js} +59 -54
  32. package/.chunks/utils-tB3V9IWe.es.js.map +1 -0
  33. package/assets/core.css +1 -1
  34. package/assets/layout.css +1 -0
  35. package/charts/charts.amd.js +1 -1
  36. package/charts/charts.amd.js.map +1 -1
  37. package/charts/charts.js +47 -42
  38. package/charts/charts.js.map +1 -1
  39. package/components/charts/miniChart/miniChart.d.ts +5 -0
  40. package/components/core/notice/item/item.vue.d.ts +3 -1
  41. package/components/core/notice/item/types.d.ts +4 -0
  42. package/components/core/notice/utils.d.ts +1 -0
  43. package/components/dialog/dialog/composables/{asyncDialogWorker.d.ts → asyncDialogHandle.d.ts} +1 -1
  44. package/components/dialog/dialog/composables/utils.d.ts +2 -2
  45. package/components/dialog/dialog/dialogs/dialogs.vue.d.ts +1 -1
  46. package/components/dialog/lib/types.d.ts +6 -1
  47. package/components/dialog/lib/worker.d.ts +5 -0
  48. package/components/layout/islandRows/islandRows.vue.d.ts +16 -0
  49. package/components/layout/islandRows/islandRowsRow/islandRowsRow.vue.d.ts +17 -0
  50. package/components/layout/islandRows/islandRowsRow/types.d.ts +2 -0
  51. package/components/layout/islandRows/types.d.ts +10 -0
  52. package/components/layout/layout.d.ts +7 -0
  53. package/components/layout/rows/rows.vue.d.ts +20 -0
  54. package/components/layout/rows/types.d.ts +6 -0
  55. package/components/project/project.d.ts +1 -0
  56. package/core/app.amd.js +1 -1
  57. package/core/app.amd.js.map +1 -1
  58. package/core/app.js +14 -15
  59. package/core/app.js.map +1 -1
  60. package/core/utils/check.d.ts +1 -1
  61. package/dialog/dialog.amd.js +1 -1
  62. package/dialog/dialog.js +2 -2
  63. package/forms/forms.amd.js +1 -1
  64. package/forms/forms.js +1 -1
  65. package/formsExt/formsExt.amd.js +1 -1
  66. package/formsExt/formsExt.js +54 -54
  67. package/icomoon/Topvisor icons.json +1421 -1193
  68. package/icomoon/demo-files/demo.css +0 -3
  69. package/icomoon/demo.html +578 -511
  70. package/icomoon/fonts/Topvisor-2.eot +0 -0
  71. package/icomoon/fonts/Topvisor-2.svg +8 -3
  72. package/icomoon/fonts/Topvisor-2.ttf +0 -0
  73. package/icomoon/fonts/Topvisor-2.woff +0 -0
  74. package/icomoon/selection.json +1 -1
  75. package/icomoon/style.css +259 -243
  76. package/layout/layout.amd.js +2 -0
  77. package/layout/layout.amd.js.map +1 -0
  78. package/layout/layout.d.ts +2 -0
  79. package/layout/layout.js +54 -0
  80. package/layout/layout.js.map +1 -0
  81. package/package.json +1 -1
  82. package/popup/popup.amd.js +1 -1
  83. package/popup/popup.js +2 -2
  84. package/popup/worker.amd.js +1 -1
  85. package/popup/worker.js +2 -2
  86. package/project/project.amd.js +1 -1
  87. package/project/project.amd.js.map +1 -1
  88. package/project/project.js +482 -469
  89. package/project/project.js.map +1 -1
  90. package/tabsView/tabsView.amd.js +1 -1
  91. package/tabsView/tabsView.js +16 -16
  92. package/utils/check.amd.js +1 -1
  93. package/utils/check.amd.js.map +1 -1
  94. package/utils/check.js +12 -12
  95. package/utils/check.js.map +1 -1
  96. package/utils/date.amd.js +1 -1
  97. package/utils/date.js +1 -1
  98. package/utils/device.amd.js +1 -1
  99. package/utils/device.js +1 -1
  100. package/utils/lodash.amd.js +1 -1
  101. package/utils/lodash.js +5 -5
  102. package/utils/price.amd.js +1 -1
  103. package/utils/price.js +1 -1
  104. package/utils/string.amd.js +1 -1
  105. package/utils/string.js +1 -1
  106. package/.chunks/notice-Dgu-SIPq.es.js +0 -172
  107. package/.chunks/notice-Dgu-SIPq.es.js.map +0 -1
  108. package/.chunks/notice-DkCLhqSq.amd.js +0 -4
  109. package/.chunks/notice-DkCLhqSq.amd.js.map +0 -1
  110. package/.chunks/popup-D6LvyJ7M.amd.js.map +0 -1
  111. package/.chunks/popup-DEG8x2yE.es.js.map +0 -1
  112. package/.chunks/utils-B3ycYRqM.amd.js.map +0 -1
  113. package/.chunks/utils-BiyYJ_AB.es.js.map +0 -1
  114. package/.chunks/utils-DdsRxaK5.es.js.map +0 -1
  115. package/.chunks/utils-DpejCylJ.amd.js +0 -2
  116. package/.chunks/utils-DpejCylJ.amd.js.map +0 -1
  117. /package/components/dialog/dialog/composables/{dialogWorker.d.ts → dialogHandle.d.ts} +0 -0
package/charts/charts.js CHANGED
@@ -1,10 +1,10 @@
1
1
  import { Core as P } from "../core/app.js";
2
- import { defineComponent as D, mergeModels as S, useModel as $, computed as p, openBlock as a, createElementBlock as s, normalizeClass as f, createElementVNode as r, toDisplayString as g, Fragment as k, renderList as w, normalizeStyle as L, unref as F, createCommentVNode as H, ref as b, watch as V, onMounted as N, onUnmounted as R, renderSlot as z, createBlock as G, Teleport as O } from "vue";
3
- import { d as X } from "../.chunks/forms-C4-jc5q2.es.js";
2
+ import { defineComponent as T, mergeModels as S, useModel as $, computed as h, openBlock as a, createElementBlock as i, normalizeClass as f, createElementVNode as r, toDisplayString as g, Fragment as k, renderList as w, normalizeStyle as L, unref as F, createCommentVNode as H, ref as b, watch as V, onMounted as N, onUnmounted as R, renderSlot as z, createBlock as G, Teleport as O } from "vue";
3
+ import { d as X } from "../.chunks/forms-CHyoeELv.es.js";
4
4
  import { percentOfNumber as I } from "../utils/number.js";
5
5
  const E = ["../assets/charts.css"].map((v) => import.meta.resolve(v));
6
6
  P.insertCSSLinkToPage(E, !0);
7
- const A = 90, T = 10, U = ["data-top-icon"], W = { class: "top-miniChart_chart" }, Y = ["onMouseenter"], j = { class: "top-miniChart_data" }, q = { class: "top-miniChart_dataValue" }, J = ["innerHTML"], K = /* @__PURE__ */ D({
7
+ const A = 90, D = 10, U = ["data-top-icon"], W = { class: "top-miniChart_chart" }, Y = ["onMouseenter"], j = { class: "top-miniChart_data" }, q = { class: "top-miniChart_dataValue" }, J = ["innerHTML"], K = /* @__PURE__ */ T({
8
8
  __name: "miniChart",
9
9
  props: /* @__PURE__ */ S({
10
10
  title: {},
@@ -14,6 +14,7 @@ const A = 90, T = 10, U = ["data-top-icon"], W = { class: "top-miniChart_chart"
14
14
  values: {},
15
15
  activeDates: {},
16
16
  keysForDyn: {},
17
+ dynamic: {},
17
18
  isInvert: { type: Boolean },
18
19
  numberCols: { default: A },
19
20
  additionalHTML: {},
@@ -29,24 +30,28 @@ const A = 90, T = 10, U = ["data-top-icon"], W = { class: "top-miniChart_chart"
29
30
  const t = v, d = $(v, "modelValue"), u = (e) => {
30
31
  let o = c.value;
31
32
  t.isInvert && (e -= 1, o -= 1);
32
- let l = o > 0 ? Math.round(e / o * (100 - T)) : 0;
33
- return t.isInvert ? 100 - l : l + T;
34
- }, C = (e) => t.activeDates.includes(e), c = p(() => Math.max(...t.values)), m = p(() => t.dates.slice().reverse()), M = p(() => t.dates.length ? t.numberCols - t.dates.length : 0), y = () => {
33
+ let n = o > 0 ? Math.round(e / o * (100 - D)) : 0;
34
+ return t.isInvert ? 100 - n : n + D;
35
+ }, C = (e) => t.activeDates.includes(e), c = h(() => Math.max(...t.values)), m = h(() => t.dates.slice().reverse()), y = h(() => t.dates.length ? t.numberCols - t.dates.length : 0), M = () => {
35
36
  d.value = null;
36
- }, i = (e, o, l) => {
37
+ }, s = (e, o, n) => {
37
38
  e.target instanceof HTMLElement && (d.value = {
38
39
  elCol: e.target,
39
40
  date: X(o),
40
- value: l === null ? "--" : l + (t.valueSuffix ?? "")
41
+ value: n === null ? "--" : n + (t.valueSuffix ?? "")
41
42
  });
42
- }, n = p(() => {
43
- const e = t.values[t.keysForDyn.start], l = t.values[t.keysForDyn.end] - e;
44
- return (l < 0 ? -1 : 1) * I(Math.abs(l));
45
- }), h = p(() => {
43
+ }, l = h(() => {
44
+ let e = t.dynamic;
45
+ if (typeof e > "u") {
46
+ const n = t.values[t.keysForDyn.start];
47
+ e = t.values[t.keysForDyn.end] - n;
48
+ }
49
+ return (e < 0 ? -1 : 1) * I(Math.abs(e));
50
+ }), p = h(() => {
46
51
  let e = "stay";
47
- return t.isInvert ? (n.value > 0 && (e = "down"), n.value < 0 && (e = "up")) : (n.value > 0 && (e = "up"), n.value < 0 && (e = "down")), e;
52
+ return t.isInvert ? (l.value > 0 && (e = "down"), l.value < 0 && (e = "up")) : (l.value > 0 && (e = "up"), l.value < 0 && (e = "down")), e;
48
53
  });
49
- return (e, o) => (a(), s("div", {
54
+ return (e, o) => (a(), i("div", {
50
55
  class: f({
51
56
  "top-miniChart": !0,
52
57
  "top-miniChart_hideChartInMobile": e.hideChartInMobile,
@@ -60,22 +65,22 @@ const A = 90, T = 10, U = ["data-top-icon"], W = { class: "top-miniChart_chart"
60
65
  r("div", W, [
61
66
  r("div", {
62
67
  class: "top-miniChart_chartGrid",
63
- onMouseleave: o[1] || (o[1] = (l) => y())
68
+ onMouseleave: o[1] || (o[1] = (n) => M())
64
69
  }, [
65
- (a(!0), s(k, null, w(m.value, (l, _) => (a(), s("div", {
70
+ (a(!0), i(k, null, w(m.value, (n, _) => (a(), i("div", {
66
71
  class: f({
67
72
  "top-miniChart_chartGridCol": !0,
68
- "top-active": C(l)
73
+ "top-active": C(n)
69
74
  }),
70
- onMouseenter: (B) => i(B, l, e.values[e.values.length - _ - 1])
75
+ onMouseenter: (B) => s(B, n, e.values[e.values.length - _ - 1])
71
76
  }, [
72
77
  r("div", {
73
78
  style: L("height:" + u(e.values[e.values.length - _ - 1]) + "%")
74
79
  }, null, 4)
75
80
  ], 42, Y))), 256)),
76
- (a(!0), s(k, null, w(M.value, () => (a(), s("div", {
81
+ (a(!0), i(k, null, w(y.value, () => (a(), i("div", {
77
82
  class: "top-miniChart_chartGridCol top-miniChart_chartGridCol-none",
78
- onMouseenter: o[0] || (o[0] = (l) => y())
83
+ onMouseenter: o[0] || (o[0] = (n) => M())
79
84
  }, o[2] || (o[2] = [
80
85
  r("div", null, null, -1)
81
86
  ]), 32))), 256))
@@ -85,12 +90,12 @@ const A = 90, T = 10, U = ["data-top-icon"], W = { class: "top-miniChart_chart"
85
90
  r("span", {
86
91
  class: f({
87
92
  "top-miniChart_dataDynamic": !0,
88
- [`top-miniChart_dataDynamic-direction_${h.value}`]: !0
93
+ [`top-miniChart_dataDynamic-direction_${p.value}`]: !0
89
94
  })
90
- }, g(Math.abs(n.value) || ""), 3),
95
+ }, g(Math.abs(l.value) || ""), 3),
91
96
  r("span", q, g(F(I)(e.values[e.values.length - 1]) || 0), 1)
92
97
  ]),
93
- e.additionalHTML ? (a(), s("div", {
98
+ e.additionalHTML ? (a(), i("div", {
94
99
  key: 0,
95
100
  innerHTML: e.additionalHTML
96
101
  }, null, 8, J)) : H("", !0)
@@ -99,7 +104,7 @@ const A = 90, T = 10, U = ["data-top-icon"], W = { class: "top-miniChart_chart"
99
104
  }), Q = {
100
105
  key: 0,
101
106
  class: "top-miniCharts_pages"
102
- }, Z = ["onClick"], x = /* @__PURE__ */ D({
107
+ }, Z = ["onClick"], x = /* @__PURE__ */ T({
103
108
  __name: "miniCharts",
104
109
  props: /* @__PURE__ */ S({
105
110
  modelValue: {},
@@ -113,51 +118,51 @@ const A = 90, T = 10, U = ["data-top-icon"], W = { class: "top-miniChart_chart"
113
118
  setup(v) {
114
119
  const t = v, d = $(v, "modelValue"), u = b(null);
115
120
  let C;
116
- const c = b(1), m = b(1), M = () => {
121
+ const c = b(1), m = b(1), y = () => {
117
122
  c.value = Math.round(u.value.scrollHeight / u.value.clientHeight);
118
123
  };
119
124
  V(c, () => {
120
125
  c.value < m.value && (m.value = 1);
121
126
  }), V(
122
127
  () => t.countCharts,
123
- () => M(),
128
+ () => y(),
124
129
  { flush: "post" }
125
130
  );
126
- const y = p(() => {
131
+ const M = h(() => {
127
132
  if (!d.value) return {};
128
- const i = d.value.elCol.getBoundingClientRect(), n = {
129
- top: i.bottom + window.scrollY + "px"
133
+ const s = d.value.elCol.getBoundingClientRect(), l = {
134
+ top: s.bottom + window.scrollY + "px"
130
135
  };
131
- return document.documentElement.clientWidth / 2 > i.right ? n.left = i.right + window.scrollX + 10 + "px" : (n.left = i.left + window.scrollX - 10 + "px", n.transform = "translate(-100%, 0)"), n;
136
+ return document.documentElement.clientWidth / 2 > s.right ? l.left = s.right + window.scrollX + 10 + "px" : (l.left = s.left + window.scrollX - 10 + "px", l.transform = "translate(-100%, 0)"), l;
132
137
  });
133
138
  return N(() => {
134
- C = new ResizeObserver(() => M()), C.observe(u.value), V(m, () => {
135
- const h = (u.value.children[0].clientHeight + parseInt(window.getComputedStyle(u.value).getPropertyValue("row-gap"))) * (m.value - 1);
136
- u.value.scrollTo({ top: h, behavior: "smooth" });
139
+ C = new ResizeObserver(() => y()), C.observe(u.value), V(m, () => {
140
+ const p = (u.value.children[0].clientHeight + parseInt(window.getComputedStyle(u.value).getPropertyValue("row-gap"))) * (m.value - 1);
141
+ u.value.scrollTo({ top: p, behavior: "smooth" });
137
142
  });
138
143
  }), R(() => {
139
144
  C.disconnect();
140
- }), (i, n) => (a(), s("div", {
145
+ }), (s, l) => (a(), i("div", {
141
146
  class: f(["top-miniCharts", {
142
147
  "top-miniCharts": !0,
143
148
  scrollable: c.value > 1,
144
- "top-miniCharts_hideChartInMobile": i.hideChartInMobile
149
+ "top-miniCharts_hideChartInMobile": s.hideChartInMobile
145
150
  }]),
146
151
  ref_key: "elRef",
147
152
  ref: u
148
153
  }, [
149
- z(i.$slots, "default"),
150
- c.value > 1 ? (a(), s("div", Q, [
151
- (a(!0), s(k, null, w(c.value, (h) => (a(), s("span", {
152
- class: f({ "top-active": h === m.value }),
153
- onClick: (e) => m.value = h
154
+ z(s.$slots, "default"),
155
+ c.value > 1 ? (a(), i("div", Q, [
156
+ (a(!0), i(k, null, w(c.value, (p) => (a(), i("span", {
157
+ class: f({ "top-active": p === m.value }),
158
+ onClick: (e) => m.value = p
154
159
  }, null, 10, Z))), 256))
155
160
  ])) : H("", !0),
156
161
  (a(), G(O, { to: "body" }, [
157
- d.value ? (a(), s("div", {
162
+ d.value ? (a(), i("div", {
158
163
  key: 0,
159
164
  class: "top-miniCharts_tooltip",
160
- style: L(y.value)
165
+ style: L(M.value)
161
166
  }, [
162
167
  r("span", null, g(d.value.date), 1),
163
168
  r("span", null, g(d.value.value), 1)
@@ -1 +1 @@
1
- {"version":3,"file":"charts.js","sources":["../../src/components/charts/miniChart/utils/consts.ts","../../src/components/charts/miniChart/miniChart.vue","../../src/components/charts/miniCharts/miniCharts.vue","../../src/components/charts/charts.ts"],"sourcesContent":["/**\r\n * Кол-во столбцов по умолчанию\r\n */\r\nexport const defaultNumberCols = 90;\r\n\r\n/**\r\n * Минимальная высота колонки (в процентах)\r\n */\r\nexport const minHeight = 10; // %","<script setup lang=\"ts\">\r\nimport type { Props } from './miniChart';\r\nimport { computed } from 'vue';\r\nimport { dateFormat } from '@/core/utils/date';\r\nimport { percentOfNumber } from '@/core/utils/number';\r\nimport { defaultNumberCols, minHeight } from './utils/consts';\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n\tcolor: 'blue',\r\n\tnumberCols: defaultNumberCols,\r\n});\r\nconst model = defineModel<Props['modelValue']>();\r\n\r\n/**\r\n * Расчет высоты колонки (в процентах)\r\n */\r\nconst genColHeight = (value: number): number => {\r\n\tlet maximumValue = maxValue.value;\r\n\r\n\t// для графиков средней и медианной делаем максимум 1\r\n\tif (props.isInvert) {\r\n\t\tvalue -= 1;\r\n\t\tmaximumValue -= 1;\r\n\t}\r\n\r\n\tlet height = maximumValue > 0 ? Math.round((value / maximumValue) * (100 - minHeight)) : 0;\r\n\tif (props.isInvert) return 100 - height;\r\n\r\n\treturn height + minHeight;\r\n};\r\n\r\nconst isActiveDate = (date: string) => props.activeDates.includes(date);\r\n\r\nconst maxValue = computed(() => Math.max(...props.values));\r\n\r\n/**\r\n * Из-за стиля .top-miniChart_chartGrid - direction: rtl\r\n */\r\nconst reversedDates = computed(() => props.dates.slice().reverse());\r\n\r\n/**\r\n * Кол-во пустых колонок\r\n */\r\nconst numOfEmptyCols = computed(() => {\r\n\tif (!props.dates.length) return 0;\r\n\r\n\treturn props.numberCols - props.dates.length;\r\n});\r\n\r\nconst resetModel = () => {\r\n\tmodel.value = null;\r\n};\r\n\r\nconst setModel = (e: Event, date: string, value: number | null) => {\r\n\tif (!(e.target instanceof HTMLElement)) return;\r\n\r\n\tmodel.value = {\r\n\t\telCol: e.target,\r\n\t\tdate: dateFormat(date),\r\n\t\tvalue: value === null ? '--' : value + (props.valueSuffix ?? ''),\r\n\t};\r\n};\r\n\r\n/**\r\n * Возвращает численный показатель динамики графика\r\n */\r\nconst dynamic = computed(() => {\r\n\tconst prevPeriodValue = props.values[props.keysForDyn.start];\r\n\tconst currentValue = props.values[props.keysForDyn.end];\r\n\tconst dynValue = currentValue - prevPeriodValue;\r\n\tconst sign = dynValue < 0 ? -1 : 1;\r\n\r\n\treturn sign * (percentOfNumber(Math.abs(dynValue)) as number);\r\n});\r\n\r\nconst dynamicDirection = computed(() => {\r\n\tlet direction: 'up' | 'stay' | 'down' = 'stay';\r\n\r\n\tif (!props.isInvert) {\r\n\t\tif (dynamic.value > 0) direction = 'up';\r\n\t\tif (dynamic.value < 0) direction = 'down';\r\n\t} else {\r\n\t\tif (dynamic.value > 0) direction = 'down';\r\n\t\tif (dynamic.value < 0) direction = 'up';\r\n\t}\r\n\r\n\treturn direction;\r\n});\r\n\r\n</script>\r\n\r\n<template>\r\n\t<div\r\n\t\t:class=\"{\r\n\t\t\t['top-miniChart']: true,\r\n\t\t\t['top-miniChart_hideChartInMobile']: hideChartInMobile,\r\n\t\t\t[`top-color_${color}`]: true,\r\n\t\t}\"\r\n\t>\r\n\t\t<div\r\n\t\t\tclass=\"top-miniChart_title top-ellipsis\"\r\n\t\t\t:data-top-icon=\"gIcon\"\r\n\t\t>\r\n\t\t\t{{ title }}\r\n\t\t</div>\r\n\r\n\t\t<div class=\"top-miniChart_chart\">\r\n\t\t\t<div\r\n\t\t\t\tclass=\"top-miniChart_chartGrid\"\r\n\t\t\t\t@mouseleave=\"resetModel()\"\r\n\t\t\t>\r\n\t\t\t\t<div\r\n\t\t\t\t\tv-for=\"(date, i) in reversedDates\"\r\n\t\t\t\t\t:class=\"{\r\n\t\t\t\t\t\t['top-miniChart_chartGridCol']: true,\r\n\t\t\t\t\t\t['top-active']: isActiveDate(date)\r\n\t\t\t\t\t}\"\r\n\t\t\t\t\t@mouseenter=\"setModel($event, date, values[values.length - i - 1])\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<div :style=\"'height:' + genColHeight(values[values.length - i - 1]) + '%'\"/>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div\r\n\t\t\t\t\tv-for=\"() in numOfEmptyCols\"\r\n\t\t\t\t\tclass=\"top-miniChart_chartGridCol top-miniChart_chartGridCol-none\"\r\n\t\t\t\t\t@mouseenter=\"resetModel()\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<div></div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\r\n\t\t<div class=\"top-miniChart_data\">\r\n\t\t\t<span :class=\"{\r\n\t\t\t\t['top-miniChart_dataDynamic']: true,\r\n\t\t\t\t[`top-miniChart_dataDynamic-direction_${dynamicDirection}`]: true,\r\n\t\t\t}\">\r\n\t\t\t\t{{ Math.abs(dynamic) || '' }}\r\n\t\t\t</span>\r\n\t\t\t<span class=\"top-miniChart_dataValue\">\r\n\t\t\t\t{{ percentOfNumber(values[values.length - 1]) || 0 }}\r\n\t\t\t</span>\r\n\t\t</div>\r\n\r\n\t\t<div\r\n\t\t\tv-if=\"additionalHTML\"\r\n\t\t\tv-html=\"additionalHTML\"\r\n\t\t/>\r\n\t</div>\r\n\r\n</template>\r\n<style>\r\n@import \"./styles/miniChart.css\";\r\n</style>\r\n","<script setup lang=\"ts\">\r\nimport { ref, computed, watch, onMounted, onUnmounted } from 'vue';\r\nimport type { Style, Props } from './miniCharts';\r\n\r\nconst props = defineProps<Props>();\r\nconst model = defineModel<Props['modelValue']>();\r\n\r\nconst elRef = ref<HTMLElement | null>(null);\r\n\r\nlet pagesResizeObserver: ResizeObserver;\r\n\r\n/**\r\n * Количество страниц\r\n */\r\nconst countPages = ref(1);\r\n\r\n/**\r\n * Активная страница\r\n */\r\nconst activePage = ref(1);\r\n\r\n/**\r\n * Установка количества страниц в блоке\r\n */\r\nconst setCountPages = () => {\r\n\tcountPages.value = Math.round(elRef.value!.scrollHeight / elRef.value!.clientHeight);\r\n};\r\n\r\nwatch(countPages, () => {\r\n\tif (countPages.value < activePage.value) {\r\n\t\tactivePage.value = 1;\r\n\t}\r\n});\r\n\r\nwatch(\r\n\t() => props.countCharts,\r\n\t() => setCountPages(),\r\n\t{ flush: 'post' }\r\n);\r\n\r\n/**\r\n * Расчет положения для подсказки\r\n */\r\nconst tooltipStyle = computed(() => {\r\n\tif (!model.value) return {};\r\n\r\n\tconst box = model.value.elCol.getBoundingClientRect();\r\n\r\n\tconst style: Style = {\r\n\t\ttop: box.bottom + window.scrollY + 'px',\r\n\t};\r\n\r\n\tif (document.documentElement.clientWidth / 2 > box.right) {\r\n\t\tstyle.left = box.right + window.scrollX + 10 + 'px';\r\n\t} else {\r\n\t\tstyle.left = box.left + window.scrollX - 10 + 'px';\r\n\t\tstyle.transform = 'translate(-100%, 0)';\r\n\t}\r\n\r\n\treturn style;\r\n});\r\n\r\nonMounted(() => {\r\n\t/**\r\n\t * Функционал переключения экранов графиков\r\n\t */\r\n\tpagesResizeObserver = new ResizeObserver(() => setCountPages());\r\n\tpagesResizeObserver.observe(elRef.value!);\r\n\r\n\twatch(activePage, () => {\r\n\t\tconst elMiniChart = elRef.value!.children[0];\r\n\t\tconst pageHeight = elMiniChart.clientHeight + parseInt(window.getComputedStyle(elRef.value!).getPropertyValue('row-gap'));\r\n\t\tconst scrollTop = pageHeight * (activePage.value - 1);\r\n\r\n\t\telRef.value!.scrollTo({ top: scrollTop, behavior: 'smooth' });\r\n\t});\r\n});\r\n\r\nonUnmounted(() => {\r\n\tpagesResizeObserver.disconnect();\r\n});\r\n</script>\r\n\r\n<template>\r\n\t<div\r\n\t\tclass=\"top-miniCharts\"\r\n\t\t:class=\"{\r\n\t\t\t['top-miniCharts']: true,\r\n\t\t\t['scrollable']: countPages > 1,\r\n\t\t\t['top-miniCharts_hideChartInMobile']: hideChartInMobile,\r\n\t\t}\"\r\n\t\tref=\"elRef\"\r\n\t>\r\n\r\n\t\t<slot></slot>\r\n\r\n\t\t<div\r\n\t\t\tv-if=\"countPages > 1\"\r\n\t\t\tclass=\"top-miniCharts_pages\"\r\n\t\t>\r\n\t\t\t<span\r\n\t\t\t\tv-for=\"n in countPages\"\r\n\t\t\t\t:class=\"{['top-active']: n === activePage}\"\r\n\t\t\t\t@click=\"activePage = n\"\r\n\t\t\t></span>\r\n\t\t</div>\r\n\r\n\t\t<Teleport to=\"body\">\r\n\t\t\t<div\r\n\t\t\t\tv-if=\"model\"\r\n\t\t\t\tclass=\"top-miniCharts_tooltip\"\r\n\t\t\t\t:style=\"tooltipStyle\"\r\n\t\t\t>\r\n\t\t\t\t<span>{{ model.date }}</span>\r\n\t\t\t\t<span>{{ model.value }}</span>\r\n\t\t\t</div>\r\n\t\t</Teleport>\r\n\t</div>\r\n\r\n</template>\r\n\r\n<style>\r\n@import \"./styles/miniCharts.css\";\r\n</style>\r\n\r\n\r\n\r\n\r\n","import type { ComponentCustomProps } from 'vue';\r\n\r\nimport MiniChart from './miniChart/miniChart.vue';\r\nimport MiniCharts from './miniCharts/miniCharts.vue';\r\n\r\nexport const TopMiniChart = MiniChart as typeof MiniChart & ComponentCustomProps;\r\n\r\nexport const TopMiniCharts = MiniCharts as typeof MiniCharts & ComponentCustomProps;\r\n"],"names":["defaultNumberCols","minHeight","props","__props","model","useModel","genColHeight","value","maximumValue","maxValue","height","isActiveDate","date","computed","reversedDates","numOfEmptyCols","resetModel","setModel","dateFormat","dynamic","prevPeriodValue","dynValue","percentOfNumber","dynamicDirection","direction","elRef","ref","pagesResizeObserver","countPages","activePage","setCountPages","watch","tooltipStyle","box","style","onMounted","scrollTop","onUnmounted","TopMiniChart","_sfc_main$1","TopMiniCharts","_sfc_main"],"mappings":"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"}
1
+ {"version":3,"file":"charts.js","sources":["../../src/components/charts/miniChart/utils/consts.ts","../../src/components/charts/miniChart/miniChart.vue","../../src/components/charts/miniCharts/miniCharts.vue","../../src/components/charts/charts.ts"],"sourcesContent":["/**\r\n * Кол-во столбцов по умолчанию\r\n */\r\nexport const defaultNumberCols = 90;\r\n\r\n/**\r\n * Минимальная высота колонки (в процентах)\r\n */\r\nexport const minHeight = 10; // %","<script setup lang=\"ts\">\r\nimport type { Props } from './miniChart';\r\nimport { computed } from 'vue';\r\nimport { dateFormat } from '@/core/utils/date';\r\nimport { percentOfNumber } from '@/core/utils/number';\r\nimport { defaultNumberCols, minHeight } from './utils/consts';\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n\tcolor: 'blue',\r\n\tnumberCols: defaultNumberCols,\r\n});\r\nconst model = defineModel<Props['modelValue']>();\r\n\r\n/**\r\n * Расчет высоты колонки (в процентах)\r\n */\r\nconst genColHeight = (value: number): number => {\r\n\tlet maximumValue = maxValue.value;\r\n\r\n\t// для графиков средней и медианной делаем максимум 1\r\n\tif (props.isInvert) {\r\n\t\tvalue -= 1;\r\n\t\tmaximumValue -= 1;\r\n\t}\r\n\r\n\tlet height = maximumValue > 0 ? Math.round((value / maximumValue) * (100 - minHeight)) : 0;\r\n\tif (props.isInvert) return 100 - height;\r\n\r\n\treturn height + minHeight;\r\n};\r\n\r\nconst isActiveDate = (date: string) => props.activeDates.includes(date);\r\n\r\nconst maxValue = computed(() => Math.max(...props.values));\r\n\r\n/**\r\n * Из-за стиля .top-miniChart_chartGrid - direction: rtl\r\n */\r\nconst reversedDates = computed(() => props.dates.slice().reverse());\r\n\r\n/**\r\n * Кол-во пустых колонок\r\n */\r\nconst numOfEmptyCols = computed(() => {\r\n\tif (!props.dates.length) return 0;\r\n\r\n\treturn props.numberCols - props.dates.length;\r\n});\r\n\r\nconst resetModel = () => {\r\n\tmodel.value = null;\r\n};\r\n\r\nconst setModel = (e: Event, date: string, value: number | null) => {\r\n\tif (!(e.target instanceof HTMLElement)) return;\r\n\r\n\tmodel.value = {\r\n\t\telCol: e.target,\r\n\t\tdate: dateFormat(date),\r\n\t\tvalue: value === null ? '--' : value + (props.valueSuffix ?? ''),\r\n\t};\r\n};\r\n\r\n/**\r\n * Возвращает численный показатель динамики графика\r\n */\r\nconst localDynamic = computed(() => {\r\n\tlet dynamic = props.dynamic;\r\n\r\n\tif (typeof dynamic === 'undefined') {\r\n\t\tconst prevPeriodValue = props.values[props.keysForDyn.start];\r\n\t\tconst currentValue = props.values[props.keysForDyn.end];\r\n\t\tdynamic = currentValue - prevPeriodValue;\r\n\t}\r\n\r\n\tconst sign = dynamic < 0 ? -1 : 1;\r\n\r\n\treturn sign * (percentOfNumber(Math.abs(dynamic)) as number);\r\n});\r\n\r\nconst dynamicDirection = computed(() => {\r\n\tlet direction: 'up' | 'stay' | 'down' = 'stay';\r\n\r\n\tif (!props.isInvert) {\r\n\t\tif (localDynamic.value > 0) direction = 'up';\r\n\t\tif (localDynamic.value < 0) direction = 'down';\r\n\t} else {\r\n\t\tif (localDynamic.value > 0) direction = 'down';\r\n\t\tif (localDynamic.value < 0) direction = 'up';\r\n\t}\r\n\r\n\treturn direction;\r\n});\r\n\r\n</script>\r\n\r\n<template>\r\n\t<div\r\n\t\t:class=\"{\r\n\t\t\t['top-miniChart']: true,\r\n\t\t\t['top-miniChart_hideChartInMobile']: hideChartInMobile,\r\n\t\t\t[`top-color_${color}`]: true\r\n\t\t}\"\r\n\t>\r\n\t\t<div\r\n\t\t\tclass=\"top-miniChart_title top-ellipsis\"\r\n\t\t\t:data-top-icon=\"gIcon\"\r\n\t\t>\r\n\t\t\t{{ title }}\r\n\t\t</div>\r\n\r\n\t\t<div class=\"top-miniChart_chart\">\r\n\t\t\t<div\r\n\t\t\t\tclass=\"top-miniChart_chartGrid\"\r\n\t\t\t\t@mouseleave=\"resetModel()\"\r\n\t\t\t>\r\n\t\t\t\t<div\r\n\t\t\t\t\tv-for=\"(date, i) in reversedDates\"\r\n\t\t\t\t\t:class=\"{\r\n\t\t\t\t\t\t['top-miniChart_chartGridCol']: true,\r\n\t\t\t\t\t\t['top-active']: isActiveDate(date)\r\n\t\t\t\t\t}\"\r\n\t\t\t\t\t@mouseenter=\"setModel($event, date, values[values.length - i - 1])\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<div :style=\"'height:' + genColHeight(values[values.length - i - 1]) + '%'\"/>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div\r\n\t\t\t\t\tv-for=\"() in numOfEmptyCols\"\r\n\t\t\t\t\tclass=\"top-miniChart_chartGridCol top-miniChart_chartGridCol-none\"\r\n\t\t\t\t\t@mouseenter=\"resetModel()\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<div></div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\r\n\t\t<div class=\"top-miniChart_data\">\r\n\t\t\t<span :class=\"{\r\n\t\t\t\t['top-miniChart_dataDynamic']: true,\r\n\t\t\t\t[`top-miniChart_dataDynamic-direction_${dynamicDirection}`]: true,\r\n\t\t\t}\">\r\n\t\t\t\t{{ Math.abs(localDynamic) || '' }}\r\n\t\t\t</span>\r\n\t\t\t<span class=\"top-miniChart_dataValue\">\r\n\t\t\t\t{{ percentOfNumber(values[values.length - 1]) || 0 }}\r\n\t\t\t</span>\r\n\t\t</div>\r\n\r\n\t\t<div\r\n\t\t\tv-if=\"additionalHTML\"\r\n\t\t\tv-html=\"additionalHTML\"\r\n\t\t/>\r\n\t</div>\r\n\r\n</template>\r\n<style>\r\n@import \"./styles/miniChart.css\";\r\n</style>\r\n","<script setup lang=\"ts\">\r\nimport { ref, computed, watch, onMounted, onUnmounted } from 'vue';\r\nimport type { Style, Props } from './miniCharts';\r\n\r\nconst props = defineProps<Props>();\r\nconst model = defineModel<Props['modelValue']>();\r\n\r\nconst elRef = ref<HTMLElement | null>(null);\r\n\r\nlet pagesResizeObserver: ResizeObserver;\r\n\r\n/**\r\n * Количество страниц\r\n */\r\nconst countPages = ref(1);\r\n\r\n/**\r\n * Активная страница\r\n */\r\nconst activePage = ref(1);\r\n\r\n/**\r\n * Установка количества страниц в блоке\r\n */\r\nconst setCountPages = () => {\r\n\tcountPages.value = Math.round(elRef.value!.scrollHeight / elRef.value!.clientHeight);\r\n};\r\n\r\nwatch(countPages, () => {\r\n\tif (countPages.value < activePage.value) {\r\n\t\tactivePage.value = 1;\r\n\t}\r\n});\r\n\r\nwatch(\r\n\t() => props.countCharts,\r\n\t() => setCountPages(),\r\n\t{ flush: 'post' }\r\n);\r\n\r\n/**\r\n * Расчет положения для подсказки\r\n */\r\nconst tooltipStyle = computed(() => {\r\n\tif (!model.value) return {};\r\n\r\n\tconst box = model.value.elCol.getBoundingClientRect();\r\n\r\n\tconst style: Style = {\r\n\t\ttop: box.bottom + window.scrollY + 'px',\r\n\t};\r\n\r\n\tif (document.documentElement.clientWidth / 2 > box.right) {\r\n\t\tstyle.left = box.right + window.scrollX + 10 + 'px';\r\n\t} else {\r\n\t\tstyle.left = box.left + window.scrollX - 10 + 'px';\r\n\t\tstyle.transform = 'translate(-100%, 0)';\r\n\t}\r\n\r\n\treturn style;\r\n});\r\n\r\nonMounted(() => {\r\n\t/**\r\n\t * Функционал переключения экранов графиков\r\n\t */\r\n\tpagesResizeObserver = new ResizeObserver(() => setCountPages());\r\n\tpagesResizeObserver.observe(elRef.value!);\r\n\r\n\twatch(activePage, () => {\r\n\t\tconst elMiniChart = elRef.value!.children[0];\r\n\t\tconst pageHeight = elMiniChart.clientHeight + parseInt(window.getComputedStyle(elRef.value!).getPropertyValue('row-gap'));\r\n\t\tconst scrollTop = pageHeight * (activePage.value - 1);\r\n\r\n\t\telRef.value!.scrollTo({ top: scrollTop, behavior: 'smooth' });\r\n\t});\r\n});\r\n\r\nonUnmounted(() => {\r\n\tpagesResizeObserver.disconnect();\r\n});\r\n</script>\r\n\r\n<template>\r\n\t<div\r\n\t\tclass=\"top-miniCharts\"\r\n\t\t:class=\"{\r\n\t\t\t['top-miniCharts']: true,\r\n\t\t\t['scrollable']: countPages > 1,\r\n\t\t\t['top-miniCharts_hideChartInMobile']: hideChartInMobile,\r\n\t\t}\"\r\n\t\tref=\"elRef\"\r\n\t>\r\n\r\n\t\t<slot></slot>\r\n\r\n\t\t<div\r\n\t\t\tv-if=\"countPages > 1\"\r\n\t\t\tclass=\"top-miniCharts_pages\"\r\n\t\t>\r\n\t\t\t<span\r\n\t\t\t\tv-for=\"n in countPages\"\r\n\t\t\t\t:class=\"{['top-active']: n === activePage}\"\r\n\t\t\t\t@click=\"activePage = n\"\r\n\t\t\t></span>\r\n\t\t</div>\r\n\r\n\t\t<Teleport to=\"body\">\r\n\t\t\t<div\r\n\t\t\t\tv-if=\"model\"\r\n\t\t\t\tclass=\"top-miniCharts_tooltip\"\r\n\t\t\t\t:style=\"tooltipStyle\"\r\n\t\t\t>\r\n\t\t\t\t<span>{{ model.date }}</span>\r\n\t\t\t\t<span>{{ model.value }}</span>\r\n\t\t\t</div>\r\n\t\t</Teleport>\r\n\t</div>\r\n\r\n</template>\r\n\r\n<style>\r\n@import \"./styles/miniCharts.css\";\r\n</style>\r\n\r\n\r\n\r\n\r\n","import type { ComponentCustomProps } from 'vue';\r\n\r\nimport MiniChart from './miniChart/miniChart.vue';\r\nimport MiniCharts from './miniCharts/miniCharts.vue';\r\n\r\nexport const TopMiniChart = MiniChart as typeof MiniChart & ComponentCustomProps;\r\n\r\nexport const TopMiniCharts = MiniCharts as typeof MiniCharts & ComponentCustomProps;\r\n"],"names":["defaultNumberCols","minHeight","props","__props","model","useModel","genColHeight","value","maximumValue","maxValue","height","isActiveDate","date","computed","reversedDates","numOfEmptyCols","resetModel","setModel","dateFormat","localDynamic","dynamic","prevPeriodValue","percentOfNumber","dynamicDirection","direction","elRef","ref","pagesResizeObserver","countPages","activePage","setCountPages","watch","tooltipStyle","box","style","onMounted","scrollTop","onUnmounted","TopMiniChart","_sfc_main$1","TopMiniCharts","_sfc_main"],"mappings":"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"}
@@ -26,6 +26,7 @@ export interface Props {
26
26
  /**
27
27
  * Индексы для получения значений из props.values.
28
28
  * Полученные значения используются для рассчета динамики изменения.
29
+ * При укзазание props.dynamic не учитывается.
29
30
  *
30
31
  * - start - индекс для получения значения в начале периода
31
32
  * - end - индекс для полученя значения в конце периода
@@ -34,6 +35,10 @@ export interface Props {
34
35
  start: number;
35
36
  end: number;
36
37
  };
38
+ /**
39
+ * Динамика
40
+ */
41
+ dynamic?: number;
37
42
  /**
38
43
  * Необходимо ли инвертировать значения ячеек графика
39
44
  */
@@ -4,5 +4,7 @@ declare const _default: DefineComponent<Props, {}, {}, {}, {}, ComponentOptionsM
4
4
  close: () => any;
5
5
  }, string, PublicProps, Readonly<Props> & Readonly<{
6
6
  onClose?: (() => any) | undefined;
7
- }>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
7
+ }>, {
8
+ selectToClose: boolean;
9
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
8
10
  export default _default;
@@ -42,6 +42,10 @@ export type Props = {
42
42
  * Установить стиль выделения сообщения
43
43
  */
44
44
  hightlight?: boolean;
45
+ /**
46
+ * Закрывать сообщение при клике по его кнопке или ссылке
47
+ */
48
+ selectToClose?: boolean;
45
49
  /**
46
50
  * Установить стиль закрытия сообщения
47
51
  *
@@ -10,6 +10,7 @@ export type Options = {
10
10
  metaText?: ItemProps['metaText'];
11
11
  buttonProps?: ItemProps['buttonProps'];
12
12
  isSafeHTML?: ItemProps['isSafeHTML'];
13
+ selectToClose?: ItemProps['selectToClose'];
13
14
  onClose?: Function;
14
15
  };
15
16
  /**
@@ -1,6 +1,6 @@
1
1
  import { Ref } from 'vue';
2
2
  import { AsyncTopDialogComponentLoader, TopDialogComponent } from './types';
3
- import { TopDialogHandle } from './dialogWorker';
3
+ import { TopDialogHandle } from './dialogHandle';
4
4
  /**
5
5
  * Объект для работы с асинхронным диалоговым окном
6
6
  *
@@ -1,5 +1,5 @@
1
- import { TopDialogHandle } from './dialogWorker';
2
- import { AsyncTopDialogHandle } from './asyncDialogWorker';
1
+ import { TopDialogHandle } from './dialogHandle';
2
+ import { AsyncTopDialogHandle } from './asyncDialogHandle';
3
3
  import { AsyncTopDialogComponentLoader, TopDialogComponent } from './types';
4
4
  /**
5
5
  * Получить объект управленя текущим диалоговым окном
@@ -1,4 +1,4 @@
1
- import { TopDialogHandle } from '../composables/dialogWorker';
1
+ import { TopDialogHandle } from '../composables/dialogHandle';
2
2
  import { TopDialogComponent } from '../composables/types';
3
3
  import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
4
4
  export declare const getDialogWorker: (id: string) => TopDialogHandle<TopDialogComponent> | undefined;
@@ -3,6 +3,10 @@ export type TopDialogOptions = {
3
3
  * Загрузчик для компонентов диалоговых окон по их id
4
4
  */
5
5
  load?: TopDialogLoad;
6
+ /**
7
+ * Глобальный декоратор на событие инициализации диалогового окна
8
+ */
9
+ decoratorOnCreate?: DecoratorOnCreate;
6
10
  /**
7
11
  * Пауза перед загрузкой утилиты диалоговых окон в ms
8
12
  *
@@ -12,5 +16,6 @@ export type TopDialogOptions = {
12
16
  */
13
17
  autoInitDelay?: number;
14
18
  };
15
- export type TopDialogLoad = (dialogId: string, callback?: () => void) => Promise<void>;
19
+ export type TopDialogLoad = (dialogId: string) => Promise<void>;
20
+ export type DecoratorOnCreate = (elDialog: HTMLElement) => Promise<void>;
16
21
  export type MoveDirection = 'next' | 'prev' | 'none';
@@ -3,6 +3,7 @@ import { $el } from '../../types';
3
3
  export declare abstract class TopDialogWorker {
4
4
  static state: {
5
5
  load: TopDialogOptions["load"] | undefined;
6
+ decoratorOnCreate: TopDialogOptions["decoratorOnCreate"] | undefined;
6
7
  /**
7
8
  * Порядковай номер перехода в диалоговых окнах
8
9
  *
@@ -32,6 +33,10 @@ export declare abstract class TopDialogWorker {
32
33
  }>;
33
34
  static get$dialog($el: $el): JQuery<HTMLElement>;
34
35
  static get$page($el: $el): JQuery<HTMLElement>;
36
+ /**
37
+ * Получить элементы страницы в шапке и в контенте
38
+ */
39
+ static get$pairPage($el: $el): JQuery<HTMLElement>;
35
40
  /**
36
41
  * Закрыть диалоговое окно
37
42
  */
@@ -0,0 +1,16 @@
1
+ import { Slots } from './types';
2
+ import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
3
+ declare function __VLS_template(): {
4
+ slots: Readonly<Slots> & Slots;
5
+ refs: {};
6
+ attrs: Partial<{}>;
7
+ };
8
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
9
+ declare const __VLS_component: DefineComponent<{}, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
10
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
11
+ export default _default;
12
+ type __VLS_WithTemplateSlots<T, S> = T & {
13
+ new (): {
14
+ $slots: S;
15
+ };
16
+ };
@@ -0,0 +1,17 @@
1
+ import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
2
+ declare function __VLS_template(): {
3
+ slots: {
4
+ default?(_: {}): any;
5
+ };
6
+ refs: {};
7
+ attrs: Partial<{}>;
8
+ };
9
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
10
+ declare const __VLS_component: DefineComponent<{}, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
11
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
12
+ export default _default;
13
+ type __VLS_WithTemplateSlots<T, S> = T & {
14
+ new (): {
15
+ $slots: S;
16
+ };
17
+ };
@@ -0,0 +1,2 @@
1
+ export interface Props {
2
+ }
@@ -0,0 +1,10 @@
1
+ export interface Slots {
2
+ /**
3
+ * Заголовок
4
+ */
5
+ title(props: {}): any;
6
+ /**
7
+ * Содержимое TopRows
8
+ */
9
+ default(props: {}): any;
10
+ }
@@ -0,0 +1,7 @@
1
+ import { ComponentCustomProps } from 'vue';
2
+ import { default as IslandRows } from './islandRows/islandRows.vue';
3
+ import { default as IslandRowsRow } from './islandRows/islandRowsRow/islandRowsRow.vue';
4
+ import { default as Rows } from './rows/rows.vue';
5
+ export declare const TopIslandRows: typeof IslandRows & ComponentCustomProps;
6
+ export declare const TopIslandRowsRow: typeof IslandRowsRow & ComponentCustomProps;
7
+ export declare const TopRows: typeof Rows & ComponentCustomProps;
@@ -0,0 +1,20 @@
1
+ import { Props } from './types';
2
+ import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
3
+ declare function __VLS_template(): {
4
+ slots: {
5
+ default?(_: {}): any;
6
+ };
7
+ refs: {};
8
+ attrs: Partial<{}>;
9
+ };
10
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
11
+ declare const __VLS_component: DefineComponent<Props, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<Props> & Readonly<{}>, {
12
+ gap: "none" | "xs" | "s" | "m" | "l";
13
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
14
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
15
+ export default _default;
16
+ type __VLS_WithTemplateSlots<T, S> = T & {
17
+ new (): {
18
+ $slots: S;
19
+ };
20
+ };
@@ -0,0 +1,6 @@
1
+ export interface Props {
2
+ /**
3
+ * Настройка отступа между элементами списка
4
+ */
5
+ gap?: 'none' | 'xs' | 's' | 'm' | 'l';
6
+ }
@@ -5,6 +5,7 @@ import { default as TagSelector } from './tagSelector/tagSelector.vue';
5
5
  import { default as TagSelectorPopupOpener } from './tagSelector/popupOpener/popupOpener.vue';
6
6
  import { default as TagSelectorTagIcon } from './tagSelector/tagIcon/tagIcon.vue';
7
7
  export declare const TopSelectorCompetitors: typeof SelectorCompetitors & ComponentCustomProps;
8
+ export { useItemsFromCompetitors } from './selectorCompetitors/composables';
8
9
  export { findRegion, genSearcherByKey } from './selectorRegion/utils/utils';
9
10
  export declare const TopSelectorRegion: typeof SelectorRegion & ComponentCustomProps;
10
11
  export type { Emits as TopTagSelectorEmits, Tag, TagId, TagIdExclude } from './tagSelector/types';
package/core/app.amd.js CHANGED
@@ -1,2 +1,2 @@
1
- define(["require","exports","../.chunks/forms-CiwhEtPE.amd","vue","../popup/worker.amd","../.chunks/utils-DpejCylJ.amd","../utils/clipboard.amd","../utils/string.amd","../utils/route.amd"],function(v,c,a,u,d,h,P,I,E){"use strict";if(typeof u>"u")var u=window.Vue;class y{static isInited=!1;static init(){this.isInited||(this.isInited=!0,document.addEventListener("mouseover",t=>{var e;!(t.target instanceof HTMLElement)||!((e=t.target.dataset)!=null&&e.topPopupOpenByHover)||t.target.click()}),document.addEventListener("scroll",()=>{a.Core.state.isMobile||a.Core.state.isMobileUA||d.TopPopupWorker.getAll().forEach(t=>d.TopPopupWorker.close(t))}),a.Events.addOnReize(t=>{a.Core.state.isMobile&&t.topEvent.widthDiff&&d.TopPopupWorker.getAll().forEach(e=>d.TopPopupWorker.close(e))}),document.addEventListener("click",this.onclick))}static async onclick(t){var o,n,s,r,p;if(!(t.target instanceof HTMLElement))return;let e;switch(!0){case!!((o=t.target.dataset)!=null&&o.topPopup):e=t.target;break;case!!((n=t.target.parentElement)!=null&&n.dataset.topPopup):e=t.target.parentElement;break;case!!((r=(s=t.target.parentElement)==null?void 0:s.parentElement)!=null&&r.dataset.topPopup):e=(p=t.target.parentElement)==null?void 0:p.parentElement;break}e&&(e.dataset.topPopupDisabled||e.dataset.topPopupOpened||(t.preventDefault(),await d.TopPopupWorker.openByOpener(e)))}}let T;const L={mounted:async(i,t)=>{T||(T=(await new Promise((s,r)=>v(["../utils/dom.amd"],s,r))).storage);const e=t.arg,o=t.value;T(i,e,o)}},O={mounted:function(i,t){t.value.disabled||i.focus()}};let g;const C={mounted(i,t,e){const o=t.value||"top-sticky";g=new IntersectionObserver(n=>{let s=n[0].intersectionRatio<1;s&&t.modifiers.bottom&&n[0].intersectionRect.y===0&&(s=!1),i.classList.toggle(o,s)},{threshold:[1]}),g.observe(i)},unmounted(i,t,e){g==null||g.disconnect()}};let k=!1,f;const m=new Map,D=(i,t)=>{const{distance:e,percent:o}=i.directiveSwipUpOptions,n=i.getBoundingClientRect().top,s=t*o/100/e,r=(t-n)/s;r<=e?i.style.transform=`translateY(${e-r}px)`:i.style.transform="translateY(0px)"},N=i=>{let t=window.innerHeight;window.addEventListener("scroll",()=>{m.forEach(e=>D(e,t))},{passive:!0}),f=new IntersectionObserver(e=>{t=window.innerHeight,e.forEach(o=>{const n=o.target;if(o.intersectionRatio<.1?m.delete(n):m.set(n,n),o.intersectionRatio===0){const{distance:s}=n.directiveSwipUpOptions;n.style.transform=`translateY(${s}px)`}})},{threshold:.1})},M={mounted(i,t,e){var o,n;a.Core.state.isMobileUA||(i.directiveSwipUpOptions={distance:((o=t.value)==null?void 0:o.distance)??100,percent:((n=t.value)==null?void 0:n.percent)??30},k||(N(),k=!0),f.observe(i))},unmounted(i,t,e){m.delete(i),f==null||f.unobserve(i)}},b=i=>{var t,e;if(!((e=(t=a.Core.$)==null?void 0:t.ui)!=null&&e.tooltip)){console.info("Для работы v-top-tooltip требуется глобальная загрузка jQuery UI Tooltip");return}return a.Core.$(i)},S=(i,t)=>{var o;const e=i.value??{};return e.content??=(o=t.props)==null?void 0:o.title,e.content=String(e.content).replace(/\r\n|\r|\n/g,"<br>"),e.position??={my:"bottom-18px",at:"top center"},e},H={mounted(i,t,e){var o;(o=b(i))==null||o.tooltip(S(t,e))},updated(i,t,e,o){var r;const n=S(t,e),s=(r=b(i))==null?void 0:r.tooltip("instance");s&&(s.options={...s.options,...n})},unmounted(i,t,e){var o;(o=b(i))==null||o.tooltip("destroy")}},_=u.defineAsyncComponent(()=>new Promise((i,t)=>v(["../.chunks/notice-DkCLhqSq.amd"],i,t)));window.vd=console.log;const A={install:(i,t)=>{i.config.globalProperties.$core=a.Core,i.config.globalProperties.$vd=console.log;for(const e in t)a.Core.state[e]=t[e];t.widthForMobile&&(a.Core.widthForMobile=t.widthForMobile),t.themeName&&(a.Core.themeName=t.themeName),a.Core._setState(),t.topPopupOptions&&(d.TopPopupWorker.options=t.topPopupOptions),y.init(),h.TopDialogWorker.init(t.topDialogOptions),i.directive("top-data",L),i.directive("top-focus",O),i.directive("top-sticky",C),i.directive("top-swim-up",M),i.directive("top-tooltip",H),i.component("TopAvatar",a.TopAvatar),i.component("TopButton",a.TopButton),i.component("TopCheckbox",a.TopCheckbox),i.component("TopControlLabel",a.TopControlLabel),i.component("TopHint",a.TopHint),i.component("TopInput",a.TopInput),i.component("TopInputDate",a.TopInputDate),i.component("TopInputRange",a.TopInputRange),i.component("TopLoadbar",a.TopLoadbar),i.component("TopRadio",a.TopRadio),i.component("TopSelect",a.TopSelect),i.component("TopSwitcher",a.TopSwitcher),i.component("TopTextarea",a.TopTextarea),i.component("TopNotice",_),i.component("TopDialogs",h._sfc_main)}};class U{#e;#t;#o;#n;#p;#i=[];#s=[];#d=[];#a=[];constructor(t){var o;this.#t=t.store,this.#e=this.#t.$id,this.#o=t.options.Page,this.#n=t.options.user,this.#p=t.options.Api,this.#i=t.options.tpaNamesUrlHash||[],this.#s=t.options.tpaNamesStorage||[],this.#d=t.options.tpaNamesStorageLocal||[],this.#a=t.options.tpaNamesGuestLink||[],t.store.genGuestLink=(n,s)=>this.genGuestLink(n,s),(o=this.#n.guest_data)!=null&&o.data||(this.#l(),this.#l(!0),this.#g()),this.#T(),this.#b();const e=a.debounce(()=>{this.#f(),this.#m()});t.store.$subscribe(e)}async genGuestLink(t,e){var r;const o=this.#h();e=Object.assign(e,Object.fromEntries(o));const n=await this.#p.gen(t,"fetchColumn").call({},e);if(n!=null&&n.errors)return;await P.setClipboard(n.result);const s=(r=a.useI18n().Common)==null?void 0:r.Guest_link_copied_to_clipboard;a.Core.notice(s+': <a href="'+n.result+'" target="_blank">'+n.result+"</a>","info")}#h(){const t=new Map;return this.#a.forEach(e=>{const o=I.camelToSnakeCase(e);t.set(o,this.#t[e])}),t}#r(t){if(Object.isFrozen(this))throw"Please, use setOptions only inner commit function";t.forEach((e,o)=>{const n=this.#t[o];if(e!=null&&e!=null&&e.constructor&&e.constructor===n.constructor){if(o.indexOf("date")===0&&!Array.isArray(e)){if(typeof e=="string"&&!/\d\d\d\d-\d\d-\d\d/.test(e))return}this.#t[o]=e}})}#u(t){const e=new Map;return t.forEach((o,n)=>{o!==null&&(o=JSON.stringify(o),e.set(n,o))}),e}#c(t){const e=new Map;return t.forEach((o,n)=>{if(!(o==null||o==="false")){try{if(typeof o=="string"&&!/^\d\d\d\d-\d\d-\d\d$/.test(o)&&(o=JSON.parse(o)),o==null||o==="false")return}catch{}e.set(n,o)}}),e}#g(){let t;try{t=JSON.parse(E.getHash(this.#e))}catch{}if(!t)return;const e=new Map;this.#i.forEach(n=>{const s=t[n];s&&e.set(n,s)});const o=this.#c(e);this.#r(o)}#f(){const t=new Map;this.#i.forEach(n=>{const s=this.#t[n];t.set(n,s)});const e=Object.fromEntries(t),o=JSON.stringify(e);E.setHash(this.#e,o)}#l(t=!1){const e=new Map;let o="state:"+this.#e;t&&(o="state:"+this.#e+":"+location.pathname),this.#s.forEach(s=>{const r=localStorage.getItem(o+":"+s);e.set(s,r)});const n=this.#c(e);this.#r(n)}#m(t=!1){const e=new Map;let o=this.#s,n="state:"+this.#e;t&&(o=this.#d,n="state:"+this.#e+":"+location.pathname),o.forEach(r=>{const p=this.#t[r];e.set(r,p)});const s=this.#u(e);o.forEach(r=>{const p=s.get(r);localStorage.setItem(n+":"+r,p)})}#T(){var s,r,p;const t=(r=(s=this.#n)==null?void 0:s.guest_data)==null?void 0:r.data;if(!t)return;this.#n.id===-1&&(this.#n.positionsReverseDates=t.positionsReverseDates);const e=new Map;this.#a.forEach(l=>{const w=t[l];e.set(l,w)});const o=this.#c(e);this.#r(o);const n=$(".mod_guest_title");if(((p=this.#t.competitorsIds)==null?void 0:p.length)===1&&this.#o.page.data.competitors){let l=this.#o.page.data.competitors.filter(w=>w.id===t.competitorsIds[0]);l.length&&($("a",n).attr("href","http://"+l[0].url),$("a",n).text(l[0].name))}}#b(){this.#t.regionsIndexes&&u.watch(this.#t,t=>{if(!t.length)return;t.forEach((n,s)=>t[s]=n);const e=TplProjectSelectorRegion.genSearchersMap(),o=[];e.forEach(n=>{n.regions.forEach(s=>{s.index!==-1&&o.push(s.index)})}),this.#t.regionsIndexes=t.filter(n=>o.includes(n))},{immediate:!0}),this.#t.competitorsIds&&u.watch(this.#t,t=>{if(!t.length)return;t.forEach((o,n)=>o[n]=o);const e=[this.#o.page.data.project.id];this.#o.page.data.project.competitors.forEach(o=>{o.on>=0&&e.push(o.id)}),this.#t.competitorsIds=t.filter(o=>e.includes(o))})}}const F=i=>{var e,o,n,s;const t=i;!((e=t.options.tpaNamesUrlHash)!=null&&e.length)&&!((o=t.options.tpaNamesStorage)!=null&&o.length)&&!((n=t.options.tpaNamesStorageLocal)!=null&&n.length)&&!((s=t.options.tpaNamesGuestLink)!=null&&s.length)||new U(t)};c.Core=a.Core,c.i18nPlugin=a.i18n,c.useI18n=a.useI18n,c.useI18nLang=a.useI18nLang,c.useI18nSetLang=a.useI18nSetLang,c.TopDialogWorker=h.TopDialogWorker,c.useAsyncTopDialog=h.useAsyncTopDialog,c.useTopDialog=h.useTopDialog,c.corePlugin=A,c.piniaTPAPlugin=F,Object.defineProperty(c,Symbol.toStringTag,{value:"Module"})});
1
+ define(["require","exports","../.chunks/forms-CORLOoYZ.amd","vue","../popup/worker.amd","../.chunks/utils-k0wIxxij.amd","../utils/clipboard.amd","../utils/string.amd","../utils/route.amd"],function(v,c,a,u,d,h,P,I,E){"use strict";if(typeof u>"u")var u=window.Vue;class L{static isInited=!1;static init(){this.isInited||(this.isInited=!0,document.addEventListener("mouseover",t=>{var e;!(t.target instanceof HTMLElement)||!((e=t.target.dataset)!=null&&e.topPopupOpenByHover)||t.target.click()}),document.addEventListener("scroll",()=>{a.Core.state.isMobile||a.Core.state.isMobileUA||d.TopPopupWorker.getAll().forEach(t=>d.TopPopupWorker.close(t))}),a.Events.addOnReize(t=>{a.Core.state.isMobile&&t.topEvent.widthDiff&&d.TopPopupWorker.getAll().forEach(e=>d.TopPopupWorker.close(e))}),document.addEventListener("click",this.onclick))}static async onclick(t){var o,n,s,r,p;if(!(t.target instanceof HTMLElement))return;let e;switch(!0){case!!((o=t.target.dataset)!=null&&o.topPopup):e=t.target;break;case!!((n=t.target.parentElement)!=null&&n.dataset.topPopup):e=t.target.parentElement;break;case!!((r=(s=t.target.parentElement)==null?void 0:s.parentElement)!=null&&r.dataset.topPopup):e=(p=t.target.parentElement)==null?void 0:p.parentElement;break}e&&(e.dataset.topPopupDisabled||e.dataset.topPopupOpened||(t.preventDefault(),await d.TopPopupWorker.openByOpener(e)))}}let T;const y={mounted:async(i,t)=>{T||(T=(await new Promise((s,r)=>v(["../utils/dom.amd"],s,r))).storage);const e=t.arg,o=t.value;T(i,e,o)}},C={mounted:function(i,t){t.value.disabled||i.focus()}};let g;const O={mounted(i,t,e){const o=t.value||"top-sticky";g=new IntersectionObserver(n=>{let s=n[0].intersectionRatio<1;s&&t.modifiers.bottom&&n[0].intersectionRect.y===0&&(s=!1),i.classList.toggle(o,s)},{threshold:[1]}),g.observe(i)},unmounted(i,t,e){g==null||g.disconnect()}};let k=!1,f;const m=new Map,D=(i,t)=>{const{distance:e,percent:o}=i.directiveSwipUpOptions,n=i.getBoundingClientRect().top,s=t*o/100/e,r=(t-n)/s;r<=e?i.style.transform=`translateY(${e-r}px)`:i.style.transform="translateY(0px)"},N=i=>{let t=window.innerHeight;window.addEventListener("scroll",()=>{m.forEach(e=>D(e,t))},{passive:!0}),f=new IntersectionObserver(e=>{t=window.innerHeight,e.forEach(o=>{const n=o.target;if(o.intersectionRatio<.1?m.delete(n):m.set(n,n),o.intersectionRatio===0){const{distance:s}=n.directiveSwipUpOptions;n.style.transform=`translateY(${s}px)`}})},{threshold:.1})},M={mounted(i,t,e){var o,n;a.Core.state.isMobileUA||(i.directiveSwipUpOptions={distance:((o=t.value)==null?void 0:o.distance)??100,percent:((n=t.value)==null?void 0:n.percent)??30},k||(N(),k=!0),f.observe(i))},unmounted(i,t,e){m.delete(i),f==null||f.unobserve(i)}},b=i=>{var t,e;if(!((e=(t=a.Core.$)==null?void 0:t.ui)!=null&&e.tooltip)){console.info("Для работы v-top-tooltip требуется глобальная загрузка jQuery UI Tooltip");return}return a.Core.$(i)},S=(i,t)=>{var o;const e=i.value??{};return e.content??=(o=t.props)==null?void 0:o.title,e.content=String(e.content).replace(/\r\n|\r|\n/g,"<br>"),e.position??={my:"bottom-18px",at:"top center"},e},H={mounted(i,t,e){var o;(o=b(i))==null||o.tooltip(S(t,e))},updated(i,t,e,o){var r;const n=S(t,e),s=(r=b(i))==null?void 0:r.tooltip("instance");s&&(s.options={...s.options,...n})},unmounted(i,t,e){var o;(o=b(i))==null||o.tooltip("destroy")}},_=u.defineAsyncComponent(()=>new Promise((i,t)=>v(["../.chunks/notice-BnvlWLlj.amd"],i,t)));window.vd=console.log;const A={install:(i,t)=>{i.config.globalProperties.$core=a.Core,i.config.globalProperties.$vd=console.log;for(const e in t)a.Core.state[e]=t[e];t.widthForMobile&&(a.Core.widthForMobile=t.widthForMobile),t.themeName&&(a.Core.themeName=t.themeName),a.Core._setState(),t.topPopupOptions&&(d.TopPopupWorker.options=t.topPopupOptions),L.init(),h.TopDialogWorker.init(t.topDialogOptions),i.directive("top-data",y),i.directive("top-focus",C),i.directive("top-sticky",O),i.directive("top-swim-up",M),i.directive("top-tooltip",H),i.component("TopAvatar",a.TopAvatar),i.component("TopButton",a.TopButton),i.component("TopCheckbox",a.TopCheckbox),i.component("TopControlLabel",a.TopControlLabel),i.component("TopHint",a.TopHint),i.component("TopInput",a.TopInput),i.component("TopInputDate",a.TopInputDate),i.component("TopInputRange",a.TopInputRange),i.component("TopLoadbar",a.TopLoadbar),i.component("TopRadio",a.TopRadio),i.component("TopSelect",a.TopSelect),i.component("TopSwitcher",a.TopSwitcher),i.component("TopTextarea",a.TopTextarea),i.component("TopNotice",_),i.component("TopDialogs",h._sfc_main)}};class U{#e;#t;#o;#n;#p;#i=[];#s=[];#d=[];#a=[];constructor(t){var o;this.#t=t.store,this.#e=this.#t.$id,this.#o=t.options.Page,this.#n=t.options.user,this.#p=t.options.Api,this.#i=t.options.tpaNamesUrlHash||[],this.#s=t.options.tpaNamesStorage||[],this.#d=t.options.tpaNamesStorageLocal||[],this.#a=t.options.tpaNamesGuestLink||[],t.store.genGuestLink=(n,s)=>this.genGuestLink(n,s),(o=this.#n.guest_data)!=null&&o.data||(this.#l(),this.#l(!0),this.#g()),this.#T(),this.#b();const e=a.debounce(()=>{this.#f(),this.#m()});t.store.$subscribe(e)}async genGuestLink(t,e){var r;const o=this.#h();e=Object.assign(e,Object.fromEntries(o));const n=await this.#p.gen(t,"fetchColumn").call({},e);if(n!=null&&n.errors)return;await P.setClipboard(n.result);const s=(r=a.useI18n().Common)==null?void 0:r.Guest_link_copied_to_clipboard;a.Core.notice(s+': <a href="'+n.result+'" target="_blank">'+n.result+"</a>","info")}#h(){const t=new Map;return this.#a.forEach(e=>{const o=I.camelToSnakeCase(e);t.set(o,this.#t[e])}),t}#r(t){t.forEach((e,o)=>{const n=this.#t[o];if(e!=null&&n!==void 0&&e!=null&&e.constructor&&e.constructor===n.constructor){if(o.indexOf("date")===0&&!Array.isArray(e)){if(typeof e=="string"&&!/\d\d\d\d-\d\d-\d\d/.test(e))return}this.#t[o]=e}})}#u(t){const e=new Map;return t.forEach((o,n)=>{o!==null&&(o=JSON.stringify(o),e.set(n,o))}),e}#c(t){const e=new Map;return t.forEach((o,n)=>{if(!(o==null||o==="false")){try{if(typeof o=="string"&&!/^\d\d\d\d-\d\d-\d\d$/.test(o)&&(o=JSON.parse(o)),o==null||o==="false")return}catch{}e.set(n,o)}}),e}#g(){let t;try{t=JSON.parse(E.getHash(this.#e))}catch{}if(!t)return;const e=new Map;this.#i.forEach(n=>{const s=t[n];s&&e.set(n,s)});const o=this.#c(e);this.#r(o)}#f(){const t=new Map;this.#i.forEach(n=>{const s=this.#t[n];t.set(n,s)});const e=Object.fromEntries(t),o=JSON.stringify(e);E.setHash(this.#e,o)}#l(t=!1){const e=new Map;let o="state:"+this.#e;t&&(o="state:"+this.#e+":"+location.pathname),this.#s.forEach(s=>{const r=localStorage.getItem(o+":"+s);e.set(s,r)});const n=this.#c(e);this.#r(n)}#m(t=!1){const e=new Map;let o=this.#s,n="state:"+this.#e;t&&(o=this.#d,n="state:"+this.#e+":"+location.pathname),o.forEach(r=>{const p=this.#t[r];e.set(r,p)});const s=this.#u(e);o.forEach(r=>{const p=s.get(r);localStorage.setItem(n+":"+r,p)})}#T(){var s,r,p;const t=(r=(s=this.#n)==null?void 0:s.guest_data)==null?void 0:r.data;if(!t)return;this.#n.id===-1&&(this.#n.positionsReverseDates=t.positionsReverseDates);const e=new Map;this.#a.forEach(l=>{const w=t[l];e.set(l,w)});const o=this.#c(e);this.#r(o);const n=$(".mod_guest_title");if(((p=this.#t.competitorsIds)==null?void 0:p.length)===1&&this.#o.page.data.competitors){let l=this.#o.page.data.competitors.filter(w=>w.id===t.competitorsIds[0]);l.length&&($("a",n).attr("href","http://"+l[0].url),$("a",n).text(l[0].name))}}#b(){this.#t.regionsIndexes&&u.watch(this.#t,t=>{if(!t.length)return;t.forEach((n,s)=>t[s]=n);const e=TplProjectSelectorRegion.genSearchersMap(),o=[];e.forEach(n=>{n.regions.forEach(s=>{s.index!==-1&&o.push(s.index)})}),this.#t.regionsIndexes=t.filter(n=>o.includes(n))},{immediate:!0}),this.#t.competitorsIds&&u.watch(this.#t,t=>{if(!t.length)return;t.forEach((o,n)=>o[n]=o);const e=[this.#o.page.data.project.id];this.#o.page.data.project.competitors.forEach(o=>{o.on>=0&&e.push(o.id)}),this.#t.competitorsIds=t.filter(o=>e.includes(o))})}}const R=i=>{var e,o,n,s;const t=i;!((e=t.options.tpaNamesUrlHash)!=null&&e.length)&&!((o=t.options.tpaNamesStorage)!=null&&o.length)&&!((n=t.options.tpaNamesStorageLocal)!=null&&n.length)&&!((s=t.options.tpaNamesGuestLink)!=null&&s.length)||new U(t)};c.Core=a.Core,c.i18nPlugin=a.i18n,c.useI18n=a.useI18n,c.useI18nLang=a.useI18nLang,c.useI18nSetLang=a.useI18nSetLang,c.TopDialogWorker=h.TopDialogWorker,c.useAsyncTopDialog=h.useAsyncTopDialog,c.useTopDialog=h.useTopDialog,c.corePlugin=A,c.piniaTPAPlugin=R,Object.defineProperty(c,Symbol.toStringTag,{value:"Module"})});
2
2
  //# sourceMappingURL=app.amd.js.map