@topvisor/ui 1.5.8-3 → 1.5.8-6

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 (108) hide show
  1. package/.chunks/api-BlIxMRlW.amd.js +2 -0
  2. package/.chunks/api-BlIxMRlW.amd.js.map +1 -0
  3. package/.chunks/{api-Dy2x6A8L.esm.js → api-BlIxMRlW.esm.js} +4 -4
  4. package/.chunks/api-BlIxMRlW.esm.js.map +1 -0
  5. package/.chunks/app-CyODeY0D.amd.js.map +1 -1
  6. package/.chunks/app-CyODeY0D.esm.js.map +1 -1
  7. package/.chunks/dialog-C8fss11q.amd.js.map +1 -1
  8. package/.chunks/dialog-C8fss11q.esm.js.map +1 -1
  9. package/.chunks/forms-LywqKN9I.amd.js.map +1 -1
  10. package/.chunks/forms-LywqKN9I.esm.js.map +1 -1
  11. package/.chunks/{formsExt-C98f2ZvT.amd.js → formsExt-Iw04hpHr.amd.js} +2 -2
  12. package/.chunks/{formsExt-C98f2ZvT.amd.js.map → formsExt-Iw04hpHr.amd.js.map} +1 -1
  13. package/.chunks/{formsExt-C98f2ZvT.esm.js → formsExt-Iw04hpHr.esm.js} +3 -3
  14. package/.chunks/{formsExt-C98f2ZvT.esm.js.map → formsExt-Iw04hpHr.esm.js.map} +1 -1
  15. package/.chunks/notice-Dw5ZUJxW.amd.js.map +1 -1
  16. package/.chunks/notice-Dw5ZUJxW.esm.js.map +1 -1
  17. package/.chunks/popup-ClpsGU2P.amd.js +2 -0
  18. package/.chunks/popup-ClpsGU2P.amd.js.map +1 -0
  19. package/.chunks/{popup-BWD4eASc.esm.js → popup-ClpsGU2P.esm.js} +3 -3
  20. package/.chunks/popup-ClpsGU2P.esm.js.map +1 -0
  21. package/.chunks/store-DjQAOnrn.amd.js.map +1 -1
  22. package/.chunks/store-DjQAOnrn.esm.js.map +1 -1
  23. package/.chunks/utils-CZnFOkS6.amd.js.map +1 -1
  24. package/.chunks/utils-CZnFOkS6.esm.js.map +1 -1
  25. package/.chunks/utils-ZgQqVN0T.amd.js.map +1 -1
  26. package/.chunks/utils-ZgQqVN0T.esm.js.map +1 -1
  27. package/api/index.amd.js +1 -1
  28. package/api/index.amd.js.map +1 -1
  29. package/api/index.js +1 -1
  30. package/assets/core.css +1 -1
  31. package/assets/schedule.css +1 -1
  32. package/autoload-css-manifest.amd.json +2 -2
  33. package/autoload-css-manifest.json +2 -2
  34. package/formsExt/formsExt.amd.js +1 -1
  35. package/formsExt/formsExt.amd.js.map +1 -1
  36. package/formsExt/formsExt.js +1 -1
  37. package/icomoon/demo-files/demo.amd.js +1 -1
  38. package/icomoon/demo-files/demo.amd.js.map +1 -1
  39. package/icomoon/demo-files/demo.js +2 -2
  40. package/icomoon/demo.amd.js +1 -1
  41. package/icomoon/demo.amd.js.map +1 -1
  42. package/icomoon/demo.js +2 -2
  43. package/package.json +1 -1
  44. package/popup/popup.amd.js +1 -1
  45. package/popup/popup.amd.js.map +1 -1
  46. package/popup/popup.js +1 -1
  47. package/project/project.amd.js +1 -1
  48. package/project/project.amd.js.map +1 -1
  49. package/project/project.js +3 -3
  50. package/project/project.js.map +1 -1
  51. package/schedule/schedule.amd.js +1 -1
  52. package/schedule/schedule.amd.js.map +1 -1
  53. package/schedule/schedule.js +89 -81
  54. package/schedule/schedule.js.map +1 -1
  55. package/src/api/api/types/client/client.d.ts +1 -2
  56. package/src/api/api/types/client/request.d.ts +1 -1
  57. package/src/api/api/types/schema.d.ts +1 -1
  58. package/src/api/api/types/utils.d.ts +1 -1
  59. package/src/api/api/utils/common.d.ts +1 -1
  60. package/src/components/core/notice/types.d.ts +3 -1
  61. package/src/components/core/notice/utils.d.ts +2 -2
  62. package/src/components/dialog/dialog/composables/dialogHandle.d.ts +2 -2
  63. package/src/components/dialog/dialog/page/types.d.ts +4 -4
  64. package/src/components/dialog/dialog/types.d.ts +1 -1
  65. package/src/components/dialog/lib/utils.d.ts +1 -1
  66. package/src/components/dialog/lib/worker.d.ts +1 -1
  67. package/src/components/forms/button/types.d.ts +3 -4
  68. package/src/components/forms/caption/types.d.ts +2 -2
  69. package/src/components/forms/input/types.d.ts +2 -2
  70. package/src/components/forms/inputRange/types.d.ts +1 -0
  71. package/src/components/forms/select/types.d.ts +1 -1
  72. package/src/components/formsExt/editArea/types.d.ts +1 -1
  73. package/src/components/formsExt/info/types.d.ts +2 -2
  74. package/src/components/layout/islandRows/islandRowsRow/types.d.ts +1 -0
  75. package/src/components/layout/islandRows/types.d.ts +2 -2
  76. package/src/components/project/groupSelector/groups/utils.d.ts +14 -2
  77. package/src/components/project/projectSelector/utils.d.ts +2 -2
  78. package/src/components/project/regionSelector/utils/utils.d.ts +1 -1
  79. package/src/components/schedule/schedule/compoents/calendar/types.d.ts +8 -0
  80. package/src/components/schedule/schedule/types.d.ts +2 -2
  81. package/src/components/tabsView/tabsView/types.d.ts +1 -2
  82. package/src/components/tabsView/tabsView/utils.d.ts +1 -1
  83. package/src/core/plugins/core.d.ts +1 -1
  84. package/src/core/utils/route.d.ts +1 -1
  85. package/src/core/utils/store/store.d.ts +1 -1
  86. package/src/core/utils/system.d.ts +2 -2
  87. package/tabsView/tabsView.amd.js +1 -1
  88. package/tabsView/tabsView.amd.js.map +1 -1
  89. package/tabsView/tabsView.js +2 -2
  90. package/tabsView/tabsView.js.map +1 -1
  91. package/utils/route.amd.js +1 -1
  92. package/utils/route.amd.js.map +1 -1
  93. package/utils/route.js +2 -2
  94. package/utils/route.js.map +1 -1
  95. package/utils/searchers.amd.js +1 -1
  96. package/utils/searchers.amd.js.map +1 -1
  97. package/utils/searchers.js +0 -1
  98. package/utils/searchers.js.map +1 -1
  99. package/utils/string.amd.js.map +1 -1
  100. package/utils/string.js.map +1 -1
  101. package/utils/system.amd.js.map +1 -1
  102. package/utils/system.js.map +1 -1
  103. package/.chunks/api-Dy2x6A8L.amd.js +0 -2
  104. package/.chunks/api-Dy2x6A8L.amd.js.map +0 -1
  105. package/.chunks/api-Dy2x6A8L.esm.js.map +0 -1
  106. package/.chunks/popup-BWD4eASc.amd.js +0 -2
  107. package/.chunks/popup-BWD4eASc.amd.js.map +0 -1
  108. package/.chunks/popup-BWD4eASc.esm.js.map +0 -1
@@ -9,12 +9,12 @@ import { E as e, O as t, c as n, h as r, n as i, u as a } from "../.chunks/forms
9
9
  import "../.chunks/app-CyODeY0D.esm.js";
10
10
  import { isEmail as o } from "../utils/check.js";
11
11
  import { numberEnding as s } from "../utils/string.js";
12
- import { Fragment as c, computed as l, createBlock as u, createCommentVNode as d, createElementBlock as f, createElementVNode as p, createTextVNode as m, createVNode as h, defineComponent as g, nextTick as _, normalizeClass as v, onBeforeUnmount as y, onMounted as b, openBlock as x, ref as S, renderList as C, renderSlot as w, resolveComponent as T, toDisplayString as E, toRaw as ee, unref as D, vModelCheckbox as O, withCtx as k, withDirectives as te, withKeys as A, withModifiers as j } from "vue";
12
+ import { Fragment as c, computed as l, createBlock as u, createCommentVNode as d, createElementBlock as f, createElementVNode as p, createTextVNode as m, createVNode as h, defineComponent as g, nextTick as _, normalizeClass as v, onBeforeUnmount as y, onMounted as b, openBlock as x, ref as S, renderList as C, renderSlot as w, resolveComponent as T, toDisplayString as E, toRaw as ee, unref as D, vModelCheckbox as O, withCtx as k, withDirectives as te, withKeys as ne, withModifiers as A } from "vue";
13
13
  //#region src/components/schedule/schedule/schedule.vue?vue&type=script&setup=true&lang.ts
14
- var M = { class: "top-schedule_header" }, N = { class: "top-schedule_headerTitle" }, P = {
14
+ var j = { class: "top-schedule_header" }, M = { class: "top-schedule_headerTitle" }, N = {
15
15
  key: 0,
16
16
  class: "top-schedule_body"
17
- }, F = /* @__PURE__ */ g({
17
+ }, P = /* @__PURE__ */ g({
18
18
  name: "TopSchedule",
19
19
  __name: "schedule",
20
20
  props: {
@@ -34,19 +34,19 @@ var M = { class: "top-schedule_header" }, N = { class: "top-schedule_headerTitle
34
34
  return (e, n) => (x(), f("div", { class: v({
35
35
  "top-schedule": !0,
36
36
  [`top-schedule-style_${t.styling}`]: !0
37
- }) }, [p("div", M, [p("div", N, E(D(o)), 1), h(i, {
37
+ }) }, [p("div", j, [p("div", M, E(D(o)), 1), h(i, {
38
38
  class: "top-schedule_headerTriggerType",
39
39
  modelValue: t.triggerType,
40
40
  "onUpdate:modelValue": n[0] ||= (t) => e.$emit("update:triggerType", t),
41
41
  options: t.triggerTypeOptions,
42
42
  size: "s"
43
- }, null, 8, ["modelValue", "options"])]), t.triggerType !== "onDemand" && e.$slots.body ? (x(), f("div", P, [w(e.$slots, "body")])) : d("", !0)], 2));
43
+ }, null, 8, ["modelValue", "options"])]), t.triggerType !== "onDemand" && e.$slots.body ? (x(), f("div", N, [w(e.$slots, "body")])) : d("", !0)], 2));
44
44
  }
45
- }), I = {}, L = { class: "top-schedule_bodyContainer" };
46
- function R(e, t) {
47
- return x(), f("div", L, [w(e.$slots, "default")]);
45
+ }), F = {}, I = { class: "top-schedule_bodyContainer" };
46
+ function L(e, t) {
47
+ return x(), f("div", I, [w(e.$slots, "default")]);
48
48
  }
49
- var z = /*#__PURE__*/ a(I, [["render", R]]), B = (t) => {
49
+ var R = /*#__PURE__*/ a(F, [["render", L]]), z = (t) => {
50
50
  let n = e();
51
51
  switch (t) {
52
52
  case "dayOfMonth": {
@@ -91,46 +91,48 @@ var z = /*#__PURE__*/ a(I, [["render", R]]), B = (t) => {
91
91
  }
92
92
  ];
93
93
  }
94
- }, V = { class: "top-scheduleCalendar" }, H = { class: "top-scheduleCalendar_header" }, U = { class: "top-scheduleCalendar_calendar" }, W = ["value"], G = ["data-top-icon"], ne = /* @__PURE__ */ g({
94
+ }, B = { class: "top-scheduleCalendar" }, V = { class: "top-scheduleCalendar_header" }, H = { class: "top-scheduleCalendar_calendar" }, U = ["value"], W = ["data-top-icon"], G = /* @__PURE__ */ g({
95
95
  __name: "calendar",
96
96
  props: {
97
97
  modelValue: {},
98
- mode: {}
98
+ mode: {},
99
+ timesCount: { default: 1 }
99
100
  },
100
101
  emits: ["update:modelValue"],
101
102
  setup(t, { emit: n }) {
102
103
  let r = e(), i = t, a = n, o = l({
103
104
  get: () => i.modelValue,
104
105
  set: (e) => a("update:modelValue", e)
105
- }), u = l(() => B(i.mode)), g = l(() => {
106
- let e = o.value.length, t = "";
107
- switch (i.mode) {
108
- case "dayOfWeek":
109
- if (e === 7) return r.Common.Every_day;
110
- t = r.Common.a_week;
111
- break;
112
- case "dayOfMonth":
113
- if (e === 28) return r.Common.Every_day;
114
- t = r.Common.a_month;
115
- break;
106
+ }), u = l(() => z(i.mode)), g = {
107
+ dayOfWeek: {
108
+ totalDaysCount: 7,
109
+ period: r.Common.a_week
110
+ },
111
+ dayOfMonth: {
112
+ totalDaysCount: 28,
113
+ period: r.Common.a_month
116
114
  }
117
- return `${e} ${s(e, r.Common.time_a_0, r.Common.time_a_0, r.Common.time_a_2)} ${t}`;
118
- }), _ = l(() => o.value.length > 1), y = () => {
119
- o.value = _.value ? [] : u.value.map((e) => e.value);
115
+ }, _ = l(() => {
116
+ let e = o.value.length, { totalDaysCount: t, period: n } = g[i.mode], a = e === t;
117
+ if (a && i.timesCount === 1) return r.Common.Every_day;
118
+ let c = i.timesCount === 1 ? e : i.timesCount;
119
+ return `${a ? r.Common.Every_day : `${e}`}${i.timesCount > 1 ? ` × ${i.timesCount}` : ""} ${s(c, r.Common.time_a_0, r.Common.time_a_0, r.Common.time_a_2)} ${n}`;
120
+ }), y = l(() => o.value.length > 1), b = () => {
121
+ o.value = y.value ? [] : u.value.map((e) => e.value);
120
122
  };
121
123
  return (e, t) => {
122
124
  let n = T("TopButton");
123
- return x(), f("div", V, [
124
- p("div", H, [w(e.$slots, "header"), h(n, {
125
+ return x(), f("div", B, [
126
+ p("div", V, [w(e.$slots, "header"), h(n, {
125
127
  class: "top-scheduleCalendar_headerButton",
126
- onClick: y,
128
+ onClick: b,
127
129
  color: "theme",
128
130
  tabindex: "0"
129
131
  }, {
130
- default: k(() => [m(E(_.value ? e.$i18n.Common.Clear : e.$i18n.Common.Select_all), 1)]),
132
+ default: k(() => [m(E(y.value ? e.$i18n.Common.Clear : e.$i18n.Common.Select_all), 1)]),
131
133
  _: 1
132
134
  })]),
133
- p("div", U, [(x(!0), f(c, null, C(u.value, (e) => (x(), f("label", {
135
+ p("div", H, [(x(!0), f(c, null, C(u.value, (e) => (x(), f("label", {
134
136
  class: "top-scheduleCalendar_calendarDay",
135
137
  key: e.value
136
138
  }, [te(p("input", {
@@ -139,14 +141,14 @@ var z = /*#__PURE__*/ a(I, [["render", R]]), B = (t) => {
139
141
  value: e.value,
140
142
  "onUpdate:modelValue": t[0] ||= (e) => o.value = e,
141
143
  tabindex: "0"
142
- }, null, 8, W), [[O, o.value]]), p("span", {
144
+ }, null, 8, U), [[O, o.value]]), p("span", {
143
145
  class: "top-scheduleCalendar_calendarDayTitle",
144
146
  "data-top-icon": e.isIcon ? e.title : void 0
145
- }, [e.isIcon ? d("", !0) : (x(), f(c, { key: 0 }, [m(E(e.title), 1)], 64))], 8, G)]))), 128))]),
146
- p("div", { class: v({
147
- "top-scheduleCalendar_selectedCount": !0,
147
+ }, [e.isIcon ? d("", !0) : (x(), f(c, { key: 0 }, [m(E(e.title), 1)], 64))], 8, W)]))), 128))]),
148
+ p("span", { class: v({
149
+ "top-scheduleCalendar_selectionSummary": !0,
148
150
  "top-error": !o.value.length
149
- }) }, E(g.value), 3)
151
+ }) }, E(_.value), 3)
150
152
  ]);
151
153
  };
152
154
  }
@@ -208,7 +210,7 @@ var z = /*#__PURE__*/ a(I, [["render", R]]), B = (t) => {
208
210
  ref: p,
209
211
  modelValue: i.modelValue,
210
212
  "onUpdate:modelValue": t[1] ||= (t) => e.$emit("update:modelValue", t),
211
- onKeydown: t[2] ||= A(j((e) => C(), ["prevent"]), ["enter"]),
213
+ onKeydown: t[2] ||= ne(A((e) => C(), ["prevent"]), ["enter"]),
212
214
  title: e.$i18n.Common.Enter_email,
213
215
  type: "email",
214
216
  size: "l"
@@ -217,18 +219,15 @@ var z = /*#__PURE__*/ a(I, [["render", R]]), B = (t) => {
217
219
  class: "top-scheduleEmailSelector_submit",
218
220
  color: "theme",
219
221
  icon: "",
220
- onClick: t[0] ||= j((e) => C(), ["prevent"])
222
+ onClick: t[0] ||= A((e) => C(), ["prevent"])
221
223
  })]),
222
224
  _: 1
223
225
  }, 8, ["modelValue", "title"])], 512));
224
226
  }
225
227
  }), q = { class: "top-scheduleEmail" }, J = { class: "top-scheduleEmail_title" }, Y = {
226
- key: 0,
227
- class: "top-scheduleEmail_selector"
228
- }, X = {
229
228
  key: 1,
230
229
  class: "top-scheduleEmail_emails"
231
- }, Z = /* @__PURE__ */ g({
230
+ }, X = { class: "top-ellipsis1" }, Z = /* @__PURE__ */ g({
232
231
  __name: "email",
233
232
  props: {
234
233
  emails: { default: () => [] },
@@ -252,7 +251,8 @@ var z = /*#__PURE__*/ a(I, [["render", R]]), B = (t) => {
252
251
  let r = T("TopButton");
253
252
  return x(), f("div", q, [
254
253
  p("div", J, E(t.$i18n.Projects.Reports_send_to_address) + " E-mail: ", 1),
255
- e.maxEmailsCount && e.emails.length === e.maxEmailsCount ? d("", !0) : (x(), f("div", Y, [h(K, {
254
+ e.maxEmailsCount && e.emails.length === e.maxEmailsCount ? d("", !0) : (x(), u(K, {
255
+ key: 0,
256
256
  modelValue: i.value,
257
257
  "onUpdate:modelValue": n[0] ||= (e) => i.value = e,
258
258
  getEmailSuggestions: e.getEmailSuggestions,
@@ -262,11 +262,11 @@ var z = /*#__PURE__*/ a(I, [["render", R]]), B = (t) => {
262
262
  "modelValue",
263
263
  "getEmailSuggestions",
264
264
  "emails"
265
- ])])),
266
- e.emails.length ? (x(), f("div", X, [(x(!0), f(c, null, C(e.emails, (e) => (x(), f("div", {
265
+ ])),
266
+ e.emails.length ? (x(), f("div", Y, [(x(!0), f(c, null, C(e.emails, (e) => (x(), f("div", {
267
267
  class: "top-scheduleEmail_emailsItem",
268
268
  key: e
269
- }, [m(E(e) + " ", 1), h(r, {
269
+ }, [p("span", X, E(e), 1), h(r, {
270
270
  onClick: (n) => t.$emit("remove:email", e),
271
271
  color: "theme",
272
272
  icon: ""
@@ -274,10 +274,10 @@ var z = /*#__PURE__*/ a(I, [["render", R]]), B = (t) => {
274
274
  ]);
275
275
  };
276
276
  }
277
- }), re = { class: "top-scheduleReportSend" }, ie = { class: "top-scheduleReportSend_title" }, ae = { class: "top-scheduleReportSend_channels" }, oe = { class: "top-scheduleReportSend_channelInfo" }, se = ["data-top-icon"], Q = { class: "top-scheduleReportSend_channelInfoLabel" }, ce = {
277
+ }), re = { class: "top-scheduleReportSend" }, ie = { class: "top-scheduleReportSend_title" }, ae = { class: "top-scheduleReportSend_channels" }, oe = ["data-top-icon"], se = { class: "top-scheduleReportSend_channelLabel top-ellipsis1" }, Q = {
278
278
  key: 0,
279
279
  class: "top-scheduleReportSend_channel"
280
- }, le = { class: "top-scheduleReportSend_channelInfo" }, ue = ["data-top-icon"], de = ["href"], fe = /* @__PURE__ */ g({
280
+ }, ce = ["data-top-icon"], le = ["href"], ue = /* @__PURE__ */ g({
281
281
  __name: "reportSend",
282
282
  props: {
283
283
  channels: {},
@@ -294,38 +294,42 @@ var z = /*#__PURE__*/ a(I, [["render", R]]), B = (t) => {
294
294
  return x(), f("div", re, [p("div", ie, E(t.$i18n.Projects.Reports_send), 1), p("div", ae, [(x(!0), f(c, null, C(e.channels, (e) => (x(), f("div", {
295
295
  class: "top-scheduleReportSend_channel",
296
296
  key: `${e.source}-${e.id}`
297
- }, [p("div", oe, [
298
- p("div", {
299
- class: "top-scheduleReportSend_channelInfoIcon",
297
+ }, [
298
+ p("span", {
299
+ class: "top-scheduleReportSend_channelIcon",
300
300
  "data-top-icon": r[e.source]
301
- }, null, 8, se),
302
- p("div", Q, E(e.label), 1),
301
+ }, null, 8, oe),
302
+ p("span", se, E(e.label), 1),
303
303
  e.settingLink ? (x(), u(a, {
304
304
  key: 0,
305
- class: "top-scheduleReportSend_channelInfoSettings",
305
+ class: "top-scheduleReportSend_channelSettings",
306
306
  size: "xs",
307
307
  href: e.settingLink,
308
+ target: "_blank",
308
309
  icon: "",
309
310
  color: "theme",
310
311
  tabindex: "0"
311
- }, null, 8, ["href"])) : d("", !0)
312
- ]), h(o, {
313
- modelValue: e.selected,
314
- "onUpdate:modelValue": (n) => t.$emit("update:channelSelected", {
315
- id: e.id,
316
- source: e.source,
317
- selected: n
318
- })
319
- }, null, 8, ["modelValue", "onUpdate:modelValue"])]))), 128)), (x(!0), f(c, null, C(e.connectors, (e) => (x(), f(c, { key: e.source }, [n(e.source) ? d("", !0) : (x(), f("div", ce, [p("div", le, [p("div", {
320
- class: "top-scheduleReportSend_channelInfoIcon",
312
+ }, null, 8, ["href"])) : d("", !0),
313
+ h(o, {
314
+ class: "top-scheduleReportSend_channelSwitcher",
315
+ modelValue: e.selected,
316
+ "onUpdate:modelValue": (n) => t.$emit("update:channelSelected", {
317
+ id: e.id,
318
+ source: e.source,
319
+ selected: n
320
+ })
321
+ }, null, 8, ["modelValue", "onUpdate:modelValue"])
322
+ ]))), 128)), (x(!0), f(c, null, C(e.connectors, (e) => (x(), f(c, { key: e.source }, [n(e.source) ? d("", !0) : (x(), f("div", Q, [p("span", {
323
+ class: "top-scheduleReportSend_channelIcon",
321
324
  "data-top-icon": r[e.source]
322
- }, null, 8, ue), p("a", {
323
- class: "top-scheduleReportSend_channelInfoLabel top-scheduleReportSend_channelInfoLink",
324
- href: e.connectLink
325
- }, E(e.connectLabel), 9, de)])]))], 64))), 128))])]);
325
+ }, null, 8, ce), p("a", {
326
+ class: "top-scheduleReportSend_channelLabel top-ellipsis1",
327
+ href: e.connectLink,
328
+ target: "_blank"
329
+ }, E(e.connectLabel), 9, le)]))], 64))), 128))])]);
326
330
  };
327
331
  }
328
- }), pe = { class: "top-scheduleTimeSelector" }, $ = /* @__PURE__ */ g({
332
+ }), de = { class: "top-scheduleTimeSelector" }, $ = /* @__PURE__ */ g({
329
333
  __name: "timeSelector",
330
334
  props: {
331
335
  hour: {},
@@ -333,10 +337,10 @@ var z = /*#__PURE__*/ a(I, [["render", R]]), B = (t) => {
333
337
  },
334
338
  emits: ["update:hour", "update:minute"],
335
339
  setup(e) {
336
- let t = Array.from({ length: 24 }, (e, t) => ({
340
+ let t = e, n = Array.from({ length: 24 }, (e, t) => ({
337
341
  value: String(t),
338
342
  title: String(t).padStart(2, "0")
339
- })), n = [
343
+ })), r = [
340
344
  {
341
345
  value: "0",
342
346
  title: "00"
@@ -353,23 +357,27 @@ var z = /*#__PURE__*/ a(I, [["render", R]]), B = (t) => {
353
357
  value: "45",
354
358
  title: "45"
355
359
  }
356
- ];
357
- return (r, i) => {
360
+ ], i = l(() => r.some((e) => e.value === t.minute) ? r : [...r, {
361
+ value: t.minute,
362
+ title: t.minute.padStart(2, "0"),
363
+ disabled: !0
364
+ }]);
365
+ return (t, r) => {
358
366
  let a = T("TopSelect");
359
- return x(), f("div", pe, [h(a, {
367
+ return x(), f("div", de, [h(a, {
360
368
  class: "top-scheduleTimeSelector_hour",
361
369
  modelValue: e.hour,
362
- options: D(t),
363
- "onUpdate:modelValue": i[0] ||= (e) => r.$emit("update:hour", e)
370
+ options: D(n),
371
+ "onUpdate:modelValue": r[0] ||= (e) => t.$emit("update:hour", e)
364
372
  }, null, 8, ["modelValue", "options"]), h(a, {
365
373
  class: "top-scheduleTimeSelector_minute",
366
374
  modelValue: e.minute,
367
- options: n,
368
- "onUpdate:modelValue": i[1] ||= (e) => r.$emit("update:minute", e)
369
- }, null, 8, ["modelValue"])]);
375
+ options: i.value,
376
+ "onUpdate:modelValue": r[1] ||= (e) => t.$emit("update:minute", e)
377
+ }, null, 8, ["modelValue", "options"])]);
370
378
  };
371
379
  }
372
- }), me = { class: "top-scheduleTimeSelectors" }, he = /* @__PURE__ */ g({
380
+ }), fe = { class: "top-scheduleTimeSelectors" }, pe = /* @__PURE__ */ g({
373
381
  __name: "timeSelectors",
374
382
  props: { times: {} },
375
383
  emits: ["update:times"],
@@ -398,7 +406,7 @@ var z = /*#__PURE__*/ a(I, [["render", R]]), B = (t) => {
398
406
  };
399
407
  return (t, n) => {
400
408
  let r = T("TopButton");
401
- return x(), f("div", me, [(x(!0), f(c, null, C(e.times, (n, i) => (x(), f("div", {
409
+ return x(), f("div", fe, [(x(!0), f(c, null, C(e.times, (n, i) => (x(), f("div", {
402
410
  class: "top-scheduleTimeSelectors_item",
403
411
  key: o(n)
404
412
  }, [h($, {
@@ -427,6 +435,6 @@ var z = /*#__PURE__*/ a(I, [["render", R]]), B = (t) => {
427
435
  }
428
436
  });
429
437
  //#endregion
430
- export { F as TopSchedule, ne as TopScheduleCalendar, z as TopScheduleContainer, Z as TopScheduleEmail, K as TopScheduleEmailSelector, fe as TopScheduleReportSend, $ as TopScheduleTimeSelector, he as TopScheduleTimeSelectors };
438
+ export { P as TopSchedule, G as TopScheduleCalendar, R as TopScheduleContainer, Z as TopScheduleEmail, K as TopScheduleEmailSelector, ue as TopScheduleReportSend, $ as TopScheduleTimeSelector, pe as TopScheduleTimeSelectors };
431
439
 
432
440
  //# sourceMappingURL=schedule.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schedule.js","names":["$emit","$slots","$i18n","$emit","$i18n","$i18n","$emit","$i18n","$emit","$emit","$emit"],"sources":["../../src/components/schedule/schedule/schedule.vue","../../src/components/schedule/schedule/schedule.vue","../../src/components/schedule/schedule/compoents/container/container.vue","../../src/components/schedule/schedule/compoents/calendar/utils.ts","../../src/components/schedule/schedule/compoents/calendar/calendar.vue","../../src/components/schedule/schedule/compoents/calendar/calendar.vue","../../src/components/schedule/schedule/compoents/email/selector/selector.vue","../../src/components/schedule/schedule/compoents/email/selector/selector.vue","../../src/components/schedule/schedule/compoents/email/email.vue","../../src/components/schedule/schedule/compoents/email/email.vue","../../src/components/schedule/schedule/compoents/reportSend/reportSend.vue","../../src/components/schedule/schedule/compoents/reportSend/reportSend.vue","../../src/components/schedule/schedule/compoents/timeSelector/timeSelector.vue","../../src/components/schedule/schedule/compoents/timeSelector/timeSelector.vue","../../src/components/schedule/schedule/compoents/timeSelectors/timeSelectors.vue","../../src/components/schedule/schedule/compoents/timeSelectors/timeSelectors.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport TopSelect from '@/components/forms/select/select.vue';\nimport type { Props, Emits, TriggerType } from '@/components/schedule/schedule/types';\nimport { useI18n } from '@/core/plugins/i18n';\n\ndefineOptions({\n\tname: 'TopSchedule',\n});\n\nconst props = withDefaults(defineProps<Props>(), {\n\ttriggerType: 'onDemand',\n});\n\ndefineEmits<Emits>();\n\nconst i18n = useI18n();\nconst labelByStyling = {\n\t'go': i18n.Projects.Checks,\n\t'report': i18n.Projects.Reports,\n\t'neutral': '',\n};\nconst title = props.title ?? labelByStyling[props.styling];\n</script>\n\n<template>\n\t<div\n\t\t:class=\"{\n\t\t\t'top-schedule': true,\n\t\t\t[`top-schedule-style_${styling}`]: true,\n\t\t}\"\n\t>\n\t\t<div class=\"top-schedule_header\">\n\t\t\t<div class=\"top-schedule_headerTitle\">\n\t\t\t\t{{ title }}\n\t\t\t</div>\n\n\t\t\t<TopSelect\n\t\t\t\tclass=\"top-schedule_headerTriggerType\"\n\t\t\t\t:modelValue=\"triggerType\"\n\t\t\t\t@update:modelValue=\"$emit('update:triggerType', $event as TriggerType)\"\n\t\t\t\t:options=\"triggerTypeOptions\"\n\t\t\t\tsize=\"s\"\n\t\t\t/>\n\t\t</div>\n\n\t\t<div\n\t\t\tv-if=\"triggerType !== 'onDemand' && $slots.body\"\n\t\t\tclass=\"top-schedule_body\"\n\t\t>\n\t\t\t<slot name=\"body\"></slot>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport TopSelect from '@/components/forms/select/select.vue';\nimport type { Props, Emits, TriggerType } from '@/components/schedule/schedule/types';\nimport { useI18n } from '@/core/plugins/i18n';\n\ndefineOptions({\n\tname: 'TopSchedule',\n});\n\nconst props = withDefaults(defineProps<Props>(), {\n\ttriggerType: 'onDemand',\n});\n\ndefineEmits<Emits>();\n\nconst i18n = useI18n();\nconst labelByStyling = {\n\t'go': i18n.Projects.Checks,\n\t'report': i18n.Projects.Reports,\n\t'neutral': '',\n};\nconst title = props.title ?? labelByStyling[props.styling];\n</script>\n\n<template>\n\t<div\n\t\t:class=\"{\n\t\t\t'top-schedule': true,\n\t\t\t[`top-schedule-style_${styling}`]: true,\n\t\t}\"\n\t>\n\t\t<div class=\"top-schedule_header\">\n\t\t\t<div class=\"top-schedule_headerTitle\">\n\t\t\t\t{{ title }}\n\t\t\t</div>\n\n\t\t\t<TopSelect\n\t\t\t\tclass=\"top-schedule_headerTriggerType\"\n\t\t\t\t:modelValue=\"triggerType\"\n\t\t\t\t@update:modelValue=\"$emit('update:triggerType', $event as TriggerType)\"\n\t\t\t\t:options=\"triggerTypeOptions\"\n\t\t\t\tsize=\"s\"\n\t\t\t/>\n\t\t</div>\n\n\t\t<div\n\t\t\tv-if=\"triggerType !== 'onDemand' && $slots.body\"\n\t\t\tclass=\"top-schedule_body\"\n\t\t>\n\t\t\t<slot name=\"body\"></slot>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<template>\n\t<div class=\"top-schedule_bodyContainer\">\n\t\t<slot></slot>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","import type { Day, Props } from './types';\nimport { useI18n } from '@/core/app';\n\n/**\n * Количество дней в месяце\n */\nexport const COUNT_DAYS_IN_MONTHS = 27;\n\n/**\n * Количество дней в неделе\n */\nexport const COUNT_DAYS_IN_WEEK = 7;\n\nexport const genDaysByCalendarMode = (mode: Props['mode']): Day[] => {\n\tconst i18n = useI18n();\n\n\tswitch (mode) {\n\t\tcase 'dayOfMonth': {\n\t\t\tconst days: Day[] = Array.from({ length: COUNT_DAYS_IN_MONTHS }, (_, index) => ({\n\t\t\t\tvalue: String(index + 1) as Day['value'],\n\t\t\t\ttitle: String(index + 1),\n\t\t\t}));\n\n\t\t\tdays.push({\n\t\t\t\tvalue: 'LAST_OF_MONTH',\n\t\t\t\ttitle: '',\n\t\t\t\tisIcon: true,\n\t\t\t});\n\n\t\t\treturn days;\n\t\t}\n\n\t\tcase 'dayOfWeek': {\n\t\t\treturn [\n\t\t\t\t{ value: 'MONDAY', title: i18n.Calendar.Dw_1 },\n\t\t\t\t{ value: 'TUESDAY', title: i18n.Calendar.Dw_2 },\n\t\t\t\t{ value: 'WEDNESDAY', title: i18n.Calendar.Dw_3 },\n\t\t\t\t{ value: 'THURSDAY', title: i18n.Calendar.Dw_4 },\n\t\t\t\t{ value: 'FRIDAY', title: i18n.Calendar.Dw_5 },\n\t\t\t\t{ value: 'SATURDAY', title: i18n.Calendar.Dw_6 },\n\t\t\t\t{ value: 'SUNDAY', title: i18n.Calendar.Dw_7 },\n\t\t\t];\n\t\t}\n\t}\n};\n","<script setup lang=\"ts\">\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/calendar/types';\nimport { COUNT_DAYS_IN_MONTHS, COUNT_DAYS_IN_WEEK, genDaysByCalendarMode } from '@/components/schedule/schedule/compoents/calendar/utils';\nimport { numberEnding } from '@/core/utils/string';\nimport { computed } from 'vue';\nimport { useI18n } from '@/core/app';\n\nconst i18n = useI18n();\nconst props = defineProps<Props>();\nconst emit = defineEmits<Emits>();\n\nconst selectedDays = computed<Props['modelValue']>({\n\tget: () => props.modelValue,\n\tset: value => emit('update:modelValue', value),\n});\n\nconst days = computed(() => genDaysByCalendarMode(props.mode));\n\nconst selectedCountLabel = computed(() => {\n\tconst daysCount = selectedDays.value.length;\n\tlet postfix = '';\n\n\tswitch (props.mode) {\n\t\tcase 'dayOfWeek': {\n\t\t\tif (daysCount === COUNT_DAYS_IN_WEEK) return i18n.Common.Every_day;\n\n\t\t\tpostfix = i18n.Common.a_week;\n\n\t\t\tbreak;\n\t\t}\n\t\tcase 'dayOfMonth': {\n\t\t\t// плюс \"последний день месяца\"\n\t\t\tif (daysCount === COUNT_DAYS_IN_MONTHS + 1) return i18n.Common.Every_day;\n\n\t\t\tpostfix = i18n.Common.a_month;\n\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn `${daysCount} ${numberEnding(\n\t\tdaysCount,\n\t\ti18n.Common.time_a_0,\n\t\ti18n.Common.time_a_0,\n\t\ti18n.Common.time_a_2,\n\t)} ${postfix}`;\n});\n\nconst isClearAction = computed(() => selectedDays.value.length > 1);\n\nconst toggleAllDays = () => {\n\tselectedDays.value = isClearAction.value ? [] : days.value.map(day => day.value);\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleCalendar\">\n\t\t<div class=\"top-scheduleCalendar_header\">\n\t\t\t<slot name=\"header\"></slot>\n\n\t\t\t<TopButton\n\t\t\t\tclass=\"top-scheduleCalendar_headerButton\"\n\t\t\t\t@click=\"toggleAllDays\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t>\n\t\t\t\t{{ isClearAction ? $i18n.Common.Clear : $i18n.Common.Select_all}}\n\t\t\t</TopButton>\n\t\t</div>\n\n\t\t<div class=\"top-scheduleCalendar_calendar\">\n\t\t\t<label\n\t\t\t\tclass=\"top-scheduleCalendar_calendarDay\"\n\t\t\t\tv-for=\"day in days\"\n\t\t\t\t:key=\"day.value\"\n\t\t\t>\n\t\t\t\t<input\n\t\t\t\t\tclass=\"top-scheduleCalendar_calendarDayRadio\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t:value=\"day.value\"\n\t\t\t\t\tv-model=\"selectedDays\"\n\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t>\n\n\t\t\t\t<span\n\t\t\t\t\tclass=\"top-scheduleCalendar_calendarDayTitle\"\n\t\t\t\t\t:data-top-icon=\"day.isIcon ? day.title : undefined\"\n\t\t\t\t>\n\t\t\t\t\t<template v-if=\"!day.isIcon\">\n\t\t\t\t\t\t{{ day.title }}\n\t\t\t\t\t</template>\n\t\t\t\t</span>\n\t\t\t</label>\n\t\t</div>\n\n\t\t<div\n\t\t\t:class=\"{\n\t\t\t\t'top-scheduleCalendar_selectedCount': true,\n\t\t\t\t'top-error': !selectedDays.length\n\t\t\t}\"\n\t\t>\n\t\t\t{{ selectedCountLabel }}\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/calendar/types';\nimport { COUNT_DAYS_IN_MONTHS, COUNT_DAYS_IN_WEEK, genDaysByCalendarMode } from '@/components/schedule/schedule/compoents/calendar/utils';\nimport { numberEnding } from '@/core/utils/string';\nimport { computed } from 'vue';\nimport { useI18n } from '@/core/app';\n\nconst i18n = useI18n();\nconst props = defineProps<Props>();\nconst emit = defineEmits<Emits>();\n\nconst selectedDays = computed<Props['modelValue']>({\n\tget: () => props.modelValue,\n\tset: value => emit('update:modelValue', value),\n});\n\nconst days = computed(() => genDaysByCalendarMode(props.mode));\n\nconst selectedCountLabel = computed(() => {\n\tconst daysCount = selectedDays.value.length;\n\tlet postfix = '';\n\n\tswitch (props.mode) {\n\t\tcase 'dayOfWeek': {\n\t\t\tif (daysCount === COUNT_DAYS_IN_WEEK) return i18n.Common.Every_day;\n\n\t\t\tpostfix = i18n.Common.a_week;\n\n\t\t\tbreak;\n\t\t}\n\t\tcase 'dayOfMonth': {\n\t\t\t// плюс \"последний день месяца\"\n\t\t\tif (daysCount === COUNT_DAYS_IN_MONTHS + 1) return i18n.Common.Every_day;\n\n\t\t\tpostfix = i18n.Common.a_month;\n\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn `${daysCount} ${numberEnding(\n\t\tdaysCount,\n\t\ti18n.Common.time_a_0,\n\t\ti18n.Common.time_a_0,\n\t\ti18n.Common.time_a_2,\n\t)} ${postfix}`;\n});\n\nconst isClearAction = computed(() => selectedDays.value.length > 1);\n\nconst toggleAllDays = () => {\n\tselectedDays.value = isClearAction.value ? [] : days.value.map(day => day.value);\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleCalendar\">\n\t\t<div class=\"top-scheduleCalendar_header\">\n\t\t\t<slot name=\"header\"></slot>\n\n\t\t\t<TopButton\n\t\t\t\tclass=\"top-scheduleCalendar_headerButton\"\n\t\t\t\t@click=\"toggleAllDays\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t>\n\t\t\t\t{{ isClearAction ? $i18n.Common.Clear : $i18n.Common.Select_all}}\n\t\t\t</TopButton>\n\t\t</div>\n\n\t\t<div class=\"top-scheduleCalendar_calendar\">\n\t\t\t<label\n\t\t\t\tclass=\"top-scheduleCalendar_calendarDay\"\n\t\t\t\tv-for=\"day in days\"\n\t\t\t\t:key=\"day.value\"\n\t\t\t>\n\t\t\t\t<input\n\t\t\t\t\tclass=\"top-scheduleCalendar_calendarDayRadio\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t:value=\"day.value\"\n\t\t\t\t\tv-model=\"selectedDays\"\n\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t>\n\n\t\t\t\t<span\n\t\t\t\t\tclass=\"top-scheduleCalendar_calendarDayTitle\"\n\t\t\t\t\t:data-top-icon=\"day.isIcon ? day.title : undefined\"\n\t\t\t\t>\n\t\t\t\t\t<template v-if=\"!day.isIcon\">\n\t\t\t\t\t\t{{ day.title }}\n\t\t\t\t\t</template>\n\t\t\t\t</span>\n\t\t\t</label>\n\t\t</div>\n\n\t\t<div\n\t\t\t:class=\"{\n\t\t\t\t'top-scheduleCalendar_selectedCount': true,\n\t\t\t\t'top-error': !selectedDays.length\n\t\t\t}\"\n\t\t>\n\t\t\t{{ selectedCountLabel }}\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { nextTick, onBeforeUnmount, onMounted, ref } from 'vue';\nimport TopInput from '@/components/forms/input/input.vue';\nimport TopButton from '@/components/forms/button/button.vue';\nimport Core from '@/core/core/core';\nimport { isEmail } from '@/core/utils/check';\nimport { useI18n } from '@/core/plugins/i18n';\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/email/selector/types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\temails: () => [],\n\tgetEmailSuggestions: () => [],\n});\n\nconst emit = defineEmits<Emits>();\nconst i18n = useI18n();\nconst $ = Core.$;\n\nconst elRootRef = ref<HTMLElement>();\nconst elInputRef = ref<InstanceType<typeof TopInput>>();\nlet elInput: HTMLInputElement | null = null;\nconst autocompleteCache: Record<string, string[]> = {};\n\nconst filterEmails = (emails: string[]) => emails.filter(email => !props.emails.includes(email));\n\nconst submit = (value: unknown = props.modelValue) => {\n\tconst email = String(value).trim();\n\tif (!email) return;\n\tif (!isEmail(email)) {\n\t\tvoid Core.notice(i18n.Common.Enter_valid_email_notice, 'error');\n\n\t\treturn;\n\t}\n\n\temit('submit', email);\n};\n\nconst initAutocomplete = async () => {\n\tawait nextTick();\n\n\telInput = elInputRef.value?.$el.querySelector('input') ?? null;\n\tif (!elInput) return;\n\n\tif (!$?.ui?.autocomplete) {\n\t\tconsole.info('Для работы autocomplete требуется глобальная загрузка jQuery UI Autocomplete');\n\n\t\treturn;\n\t}\n\n\t$(elInput).autocomplete({\n\t\tappendTo: elRootRef.value,\n\t\tminLength: 0,\n\t\tsource: async (request: { term: string }, response: (items: Array<{ label: string, value: string }>) => void) => {\n\t\t\tconst term = request.term;\n\t\t\tif (!(term in autocompleteCache)) {\n\t\t\t\tautocompleteCache[term] = await props.getEmailSuggestions(term);\n\t\t\t}\n\n\t\t\tresponse(filterEmails(autocompleteCache[term]).map(email => ({\n\t\t\t\tlabel: email,\n\t\t\t\tvalue: email,\n\t\t\t})));\n\t\t},\n\t\tselect: (event: Event, ui: { item?: { value: string } }) => {\n\t\t\tif (!ui.item || !elInput) return;\n\n\t\t\tevent.preventDefault();\n\t\t\tsubmit(ui.item.value);\n\t\t\temit('update:modelValue', '');\n\n\t\t\t$(elInput).trigger('focus');\n\t\t},\n\t});\n\n\t$(elInput).attr('autocomplete', 'disabled');\n\t$(elInput).on('focus.scheduleEmailSelector', () => {\n\t\tif (!elInput) return;\n\n\t\t$(elInput).trigger('input');\n\t});\n};\n\nonMounted(() => {\n\tvoid initAutocomplete();\n});\n\nonBeforeUnmount(() => {\n\tif (!$?.ui?.autocomplete || !elInput) return;\n\n\t$(elInput).off('focus.scheduleEmailSelector');\n\t$(elInput).autocomplete('destroy');\n});\n</script>\n\n<template>\n\t<div\n\t\tclass=\"top-scheduleEmailSelector\"\n\t\tref=\"elRootRef\"\n\t>\n\t\t<TopInput\n\t\t\tref=\"elInputRef\"\n\t\t\t:modelValue\n\t\t\t@update:modelValue=\"$emit('update:modelValue', $event)\"\n\t\t\t@keydown.enter.prevent=\"submit()\"\n\t\t\t:title=\"$i18n.Common.Enter_email\"\n\t\t\ttype=\"email\"\n\t\t\tsize=\"l\"\n\t\t>\n\t\t\t<TopButton\n\t\t\t\tclass=\"top-scheduleEmailSelector_submit\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ticon=\"\"\n\t\t\t\t@click.prevent=\"submit()\"\n\t\t\t/>\n\t\t</TopInput>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { nextTick, onBeforeUnmount, onMounted, ref } from 'vue';\nimport TopInput from '@/components/forms/input/input.vue';\nimport TopButton from '@/components/forms/button/button.vue';\nimport Core from '@/core/core/core';\nimport { isEmail } from '@/core/utils/check';\nimport { useI18n } from '@/core/plugins/i18n';\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/email/selector/types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\temails: () => [],\n\tgetEmailSuggestions: () => [],\n});\n\nconst emit = defineEmits<Emits>();\nconst i18n = useI18n();\nconst $ = Core.$;\n\nconst elRootRef = ref<HTMLElement>();\nconst elInputRef = ref<InstanceType<typeof TopInput>>();\nlet elInput: HTMLInputElement | null = null;\nconst autocompleteCache: Record<string, string[]> = {};\n\nconst filterEmails = (emails: string[]) => emails.filter(email => !props.emails.includes(email));\n\nconst submit = (value: unknown = props.modelValue) => {\n\tconst email = String(value).trim();\n\tif (!email) return;\n\tif (!isEmail(email)) {\n\t\tvoid Core.notice(i18n.Common.Enter_valid_email_notice, 'error');\n\n\t\treturn;\n\t}\n\n\temit('submit', email);\n};\n\nconst initAutocomplete = async () => {\n\tawait nextTick();\n\n\telInput = elInputRef.value?.$el.querySelector('input') ?? null;\n\tif (!elInput) return;\n\n\tif (!$?.ui?.autocomplete) {\n\t\tconsole.info('Для работы autocomplete требуется глобальная загрузка jQuery UI Autocomplete');\n\n\t\treturn;\n\t}\n\n\t$(elInput).autocomplete({\n\t\tappendTo: elRootRef.value,\n\t\tminLength: 0,\n\t\tsource: async (request: { term: string }, response: (items: Array<{ label: string, value: string }>) => void) => {\n\t\t\tconst term = request.term;\n\t\t\tif (!(term in autocompleteCache)) {\n\t\t\t\tautocompleteCache[term] = await props.getEmailSuggestions(term);\n\t\t\t}\n\n\t\t\tresponse(filterEmails(autocompleteCache[term]).map(email => ({\n\t\t\t\tlabel: email,\n\t\t\t\tvalue: email,\n\t\t\t})));\n\t\t},\n\t\tselect: (event: Event, ui: { item?: { value: string } }) => {\n\t\t\tif (!ui.item || !elInput) return;\n\n\t\t\tevent.preventDefault();\n\t\t\tsubmit(ui.item.value);\n\t\t\temit('update:modelValue', '');\n\n\t\t\t$(elInput).trigger('focus');\n\t\t},\n\t});\n\n\t$(elInput).attr('autocomplete', 'disabled');\n\t$(elInput).on('focus.scheduleEmailSelector', () => {\n\t\tif (!elInput) return;\n\n\t\t$(elInput).trigger('input');\n\t});\n};\n\nonMounted(() => {\n\tvoid initAutocomplete();\n});\n\nonBeforeUnmount(() => {\n\tif (!$?.ui?.autocomplete || !elInput) return;\n\n\t$(elInput).off('focus.scheduleEmailSelector');\n\t$(elInput).autocomplete('destroy');\n});\n</script>\n\n<template>\n\t<div\n\t\tclass=\"top-scheduleEmailSelector\"\n\t\tref=\"elRootRef\"\n\t>\n\t\t<TopInput\n\t\t\tref=\"elInputRef\"\n\t\t\t:modelValue\n\t\t\t@update:modelValue=\"$emit('update:modelValue', $event)\"\n\t\t\t@keydown.enter.prevent=\"submit()\"\n\t\t\t:title=\"$i18n.Common.Enter_email\"\n\t\t\ttype=\"email\"\n\t\t\tsize=\"l\"\n\t\t>\n\t\t\t<TopButton\n\t\t\t\tclass=\"top-scheduleEmailSelector_submit\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ticon=\"\"\n\t\t\t\t@click.prevent=\"submit()\"\n\t\t\t/>\n\t\t</TopInput>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/email/types';\nimport ScheduleEmailSelector from '@/components/schedule/schedule/compoents/email/selector/selector.vue';\n\nconst props = withDefaults(defineProps<Props>(), {\n\temails: () => [],\n\tgetEmailSuggestions: () => [],\n\tmaxEmailsCount: -1,\n});\n\nconst emit = defineEmits<Emits>();\n\nconst value = ref('');\n\nconst addEmail = (email: string) => {\n\tconst preparedEmail = email.trim();\n\tif (!preparedEmail || props.emails.includes(preparedEmail)) {\n\t\tvalue.value = '';\n\n\t\treturn;\n\t}\n\n\temit('add:email', preparedEmail);\n\n\tvalue.value = '';\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleEmail\">\n\t\t<div class=\"top-scheduleEmail_title\">\n\t\t\t{{ $i18n.Projects.Reports_send_to_address }} E-mail:\n\t\t</div>\n\n\t\t<div\n\t\t\tv-if=\"!(maxEmailsCount && emails.length === maxEmailsCount)\"\n\t\t\tclass=\"top-scheduleEmail_selector\"\n\t\t>\n\t\t\t<ScheduleEmailSelector\n\t\t\t\tv-model=\"value\"\n\t\t\t\t:getEmailSuggestions=\"getEmailSuggestions\"\n\t\t\t\t:emails=\"emails\"\n\t\t\t\t@submit=\"addEmail\"\n\t\t\t/>\n\t\t</div>\n\n\t\t<div\n\t\t\tv-if=\"emails.length\"\n\t\t\tclass=\"top-scheduleEmail_emails\"\n\t\t>\n\t\t\t<div\n\t\t\t\tclass=\"top-scheduleEmail_emailsItem\"\n\t\t\t\tv-for=\"email in emails\"\n\t\t\t\t:key=\"email\"\n\t\t\t>\n\t\t\t\t{{ email }}\n\n\t\t\t\t<TopButton\n\t\t\t\t\t@click=\"$emit('remove:email', email)\"\n\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\ticon=\"\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/email/types';\nimport ScheduleEmailSelector from '@/components/schedule/schedule/compoents/email/selector/selector.vue';\n\nconst props = withDefaults(defineProps<Props>(), {\n\temails: () => [],\n\tgetEmailSuggestions: () => [],\n\tmaxEmailsCount: -1,\n});\n\nconst emit = defineEmits<Emits>();\n\nconst value = ref('');\n\nconst addEmail = (email: string) => {\n\tconst preparedEmail = email.trim();\n\tif (!preparedEmail || props.emails.includes(preparedEmail)) {\n\t\tvalue.value = '';\n\n\t\treturn;\n\t}\n\n\temit('add:email', preparedEmail);\n\n\tvalue.value = '';\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleEmail\">\n\t\t<div class=\"top-scheduleEmail_title\">\n\t\t\t{{ $i18n.Projects.Reports_send_to_address }} E-mail:\n\t\t</div>\n\n\t\t<div\n\t\t\tv-if=\"!(maxEmailsCount && emails.length === maxEmailsCount)\"\n\t\t\tclass=\"top-scheduleEmail_selector\"\n\t\t>\n\t\t\t<ScheduleEmailSelector\n\t\t\t\tv-model=\"value\"\n\t\t\t\t:getEmailSuggestions=\"getEmailSuggestions\"\n\t\t\t\t:emails=\"emails\"\n\t\t\t\t@submit=\"addEmail\"\n\t\t\t/>\n\t\t</div>\n\n\t\t<div\n\t\t\tv-if=\"emails.length\"\n\t\t\tclass=\"top-scheduleEmail_emails\"\n\t\t>\n\t\t\t<div\n\t\t\t\tclass=\"top-scheduleEmail_emailsItem\"\n\t\t\t\tv-for=\"email in emails\"\n\t\t\t\t:key=\"email\"\n\t\t\t>\n\t\t\t\t{{ email }}\n\n\t\t\t\t<TopButton\n\t\t\t\t\t@click=\"$emit('remove:email', email)\"\n\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\ticon=\"\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport type { Emits, Props, ReportChannelSource } from '@/components/schedule/schedule/compoents/reportSend/types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tconnectors: () => [],\n});\ndefineEmits<Emits>();\n\nconst hasChannel = (source: ReportChannelSource) => props.channels.some(channel => channel.source === source);\n\nconst sourceIconBySource: Record<ReportChannelSource, string> = {\n\tinformer: '',\n\ttelegram: '',\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleReportSend\">\n\t\t<div class=\"top-scheduleReportSend_title\">\n\t\t\t{{ $i18n.Projects.Reports_send }}\n\t\t</div>\n\n\t\t<div class=\"top-scheduleReportSend_channels\">\n\t\t\t<div\n\t\t\t\tclass=\"top-scheduleReportSend_channel\"\n\t\t\t\tv-for=\"channel in channels\"\n\t\t\t\t:key=\"`${channel.source}-${channel.id}`\"\n\t\t\t>\n\t\t\t\t<div class=\"top-scheduleReportSend_channelInfo\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelInfoIcon\"\n\t\t\t\t\t\t:data-top-icon=\"sourceIconBySource[channel.source]\"\n\t\t\t\t\t></div>\n\n\t\t\t\t\t<div class=\"top-scheduleReportSend_channelInfoLabel\">\n\t\t\t\t\t\t{{ channel.label }}\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tv-if=\"channel.settingLink\"\n\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelInfoSettings\"\n\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t:href=\"channel.settingLink\"\n\t\t\t\t\t\ticon=\"\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\t></TopButton>\n\t\t\t\t</div>\n\n\t\t\t\t<TopSwitcher\n\t\t\t\t\t:modelValue=\"channel.selected\"\n\t\t\t\t\t@update:modelValue=\"$emit('update:channelSelected', {\n\t\t\t\t\t\tid: channel.id,\n\t\t\t\t\t\tsource: channel.source,\n\t\t\t\t\t\tselected: $event as boolean,\n\t\t\t\t\t})\"\n\t\t\t\t/>\n\t\t\t</div>\n\n\t\t\t<template\n\t\t\t\tv-for=\"connector in connectors\"\n\t\t\t\t:key=\"connector.source\"\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tv-if=\"!hasChannel(connector.source)\"\n\t\t\t\t\tclass=\"top-scheduleReportSend_channel\"\n\t\t\t\t>\n\t\t\t\t\t<div class=\"top-scheduleReportSend_channelInfo\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelInfoIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"sourceIconBySource[connector.source]\"\n\t\t\t\t\t\t></div>\n\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelInfoLabel top-scheduleReportSend_channelInfoLink\"\n\t\t\t\t\t\t\t:href=\"connector.connectLink\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{{ connector.connectLabel }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport type { Emits, Props, ReportChannelSource } from '@/components/schedule/schedule/compoents/reportSend/types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tconnectors: () => [],\n});\ndefineEmits<Emits>();\n\nconst hasChannel = (source: ReportChannelSource) => props.channels.some(channel => channel.source === source);\n\nconst sourceIconBySource: Record<ReportChannelSource, string> = {\n\tinformer: '',\n\ttelegram: '',\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleReportSend\">\n\t\t<div class=\"top-scheduleReportSend_title\">\n\t\t\t{{ $i18n.Projects.Reports_send }}\n\t\t</div>\n\n\t\t<div class=\"top-scheduleReportSend_channels\">\n\t\t\t<div\n\t\t\t\tclass=\"top-scheduleReportSend_channel\"\n\t\t\t\tv-for=\"channel in channels\"\n\t\t\t\t:key=\"`${channel.source}-${channel.id}`\"\n\t\t\t>\n\t\t\t\t<div class=\"top-scheduleReportSend_channelInfo\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelInfoIcon\"\n\t\t\t\t\t\t:data-top-icon=\"sourceIconBySource[channel.source]\"\n\t\t\t\t\t></div>\n\n\t\t\t\t\t<div class=\"top-scheduleReportSend_channelInfoLabel\">\n\t\t\t\t\t\t{{ channel.label }}\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tv-if=\"channel.settingLink\"\n\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelInfoSettings\"\n\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t:href=\"channel.settingLink\"\n\t\t\t\t\t\ticon=\"\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\t></TopButton>\n\t\t\t\t</div>\n\n\t\t\t\t<TopSwitcher\n\t\t\t\t\t:modelValue=\"channel.selected\"\n\t\t\t\t\t@update:modelValue=\"$emit('update:channelSelected', {\n\t\t\t\t\t\tid: channel.id,\n\t\t\t\t\t\tsource: channel.source,\n\t\t\t\t\t\tselected: $event as boolean,\n\t\t\t\t\t})\"\n\t\t\t\t/>\n\t\t\t</div>\n\n\t\t\t<template\n\t\t\t\tv-for=\"connector in connectors\"\n\t\t\t\t:key=\"connector.source\"\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tv-if=\"!hasChannel(connector.source)\"\n\t\t\t\t\tclass=\"top-scheduleReportSend_channel\"\n\t\t\t\t>\n\t\t\t\t\t<div class=\"top-scheduleReportSend_channelInfo\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelInfoIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"sourceIconBySource[connector.source]\"\n\t\t\t\t\t\t></div>\n\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelInfoLabel top-scheduleReportSend_channelInfoLink\"\n\t\t\t\t\t\t\t:href=\"connector.connectLink\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{{ connector.connectLabel }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport type { Props, Emits, Time } from '@/components/schedule/schedule/compoents/timeSelector/types';\n\ndefineProps<Props>();\ndefineEmits<Emits>();\n\nconst hourOptions = Array.from({ length: 24 }, (_, index) => ({\n\tvalue: String(index),\n\ttitle: String(index).padStart(2, '0'),\n}));\nconst minuteOptions = [\n\t{\n\t\tvalue: '0',\n\t\ttitle: '00',\n\t},\n\t{\n\t\tvalue: '15',\n\t\ttitle: '15',\n\t},\n\t{\n\t\tvalue: '30',\n\t\ttitle: '30',\n\t},\n\t{\n\t\tvalue: '45',\n\t\ttitle: '45',\n\t},\n];\n</script>\n\n<template>\n\t<div class=\"top-scheduleTimeSelector\">\n\t\t<TopSelect\n\t\t\tclass=\"top-scheduleTimeSelector_hour\"\n\t\t\t:modelValue=\"hour\"\n\t\t\t:options=\"hourOptions\"\n\t\t\t@update:modelValue=\"$emit('update:hour', $event as Time['hour'])\"\n\t\t/>\n\n\t\t<TopSelect\n\t\t\tclass=\"top-scheduleTimeSelector_minute\"\n\t\t\t:modelValue=\"minute\"\n\t\t\t:options=\"minuteOptions\"\n\t\t\t@update:modelValue=\"$emit('update:minute', $event as Time['minute'])\"\n\t\t/>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport type { Props, Emits, Time } from '@/components/schedule/schedule/compoents/timeSelector/types';\n\ndefineProps<Props>();\ndefineEmits<Emits>();\n\nconst hourOptions = Array.from({ length: 24 }, (_, index) => ({\n\tvalue: String(index),\n\ttitle: String(index).padStart(2, '0'),\n}));\nconst minuteOptions = [\n\t{\n\t\tvalue: '0',\n\t\ttitle: '00',\n\t},\n\t{\n\t\tvalue: '15',\n\t\ttitle: '15',\n\t},\n\t{\n\t\tvalue: '30',\n\t\ttitle: '30',\n\t},\n\t{\n\t\tvalue: '45',\n\t\ttitle: '45',\n\t},\n];\n</script>\n\n<template>\n\t<div class=\"top-scheduleTimeSelector\">\n\t\t<TopSelect\n\t\t\tclass=\"top-scheduleTimeSelector_hour\"\n\t\t\t:modelValue=\"hour\"\n\t\t\t:options=\"hourOptions\"\n\t\t\t@update:modelValue=\"$emit('update:hour', $event as Time['hour'])\"\n\t\t/>\n\n\t\t<TopSelect\n\t\t\tclass=\"top-scheduleTimeSelector_minute\"\n\t\t\t:modelValue=\"minute\"\n\t\t\t:options=\"minuteOptions\"\n\t\t\t@update:modelValue=\"$emit('update:minute', $event as Time['minute'])\"\n\t\t/>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { toRaw } from 'vue';\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/timeSelectors/types';\nimport type { Time } from '@/components/schedule/schedule/compoents/timeSelector/types';\nimport TimeSelector from '@/components/schedule/schedule/compoents/timeSelector/timeSelector.vue';\n\nconst props = defineProps<Props>();\nconst emit = defineEmits<Emits>();\nconst timeKeys = new WeakMap<Time, number>();\nlet nextTimeKey = 0;\n\nconst getTimeKey = (rawOrProxyTime: Time) => {\n\t// time может быть proxy или обычным объектом\n\tconst time = toRaw(rawOrProxyTime);\n\n\tconst existingKey = timeKeys.get(time);\n\tif (existingKey !== undefined) return existingKey;\n\n\tconst key = nextTimeKey++;\n\ttimeKeys.set(time, key);\n\n\treturn key;\n};\n\nconst updateTime = (index: number, patch: Partial<Props['times'][number]>) => {\n\tconst updatedTimes = props.times.map((time, i) => {\n\t\tif (i !== index) return time;\n\n\t\tconst updatedTime = { ...time, ...patch };\n\t\ttimeKeys.set(updatedTime, getTimeKey(time));\n\n\t\treturn updatedTime;\n\t});\n\n\temit('update:times', updatedTimes);\n};\n\nconst addTime = () => {\n\tconst time: Time = {\n\t\thour: '0',\n\t\tminute: '0',\n\t};\n\n\tconst updatedTimes = [\n\t\ttime,\n\t\t...props.times,\n\t];\n\n\temit('update:times', updatedTimes);\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleTimeSelectors\">\n\t\t<div\n\t\t\tclass=\"top-scheduleTimeSelectors_item\"\n\t\t\tv-for=\"(time, index) in times\"\n\t\t\t:key=\"getTimeKey(time)\"\n\t\t>\n\t\t\t<TimeSelector\n\t\t\t\t:hour=\"time.hour\"\n\t\t\t\t:minute=\"time.minute\"\n\t\t\t\t@update:hour=\"updateTime(index, { hour: $event as Time['hour'] })\"\n\t\t\t\t@update:minute=\"updateTime(index, { minute: $event as Time['minute'] })\"\n\t\t\t/>\n\n\t\t\t<TopButton\n\t\t\t\tv-if=\"index\"\n\t\t\t\t@click=\"$emit('update:times', times.filter((_, i) => i !== index))\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ticon=\"\"\n\t\t\t/>\n\n\t\t\t<TopButton\n\t\t\t\tv-else\n\t\t\t\tclass=\"top-scheduleTimeSelectors_itemAdd\"\n\t\t\t\t@click=\"addTime\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ticon=\"\"\n\t\t\t/>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { toRaw } from 'vue';\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/timeSelectors/types';\nimport type { Time } from '@/components/schedule/schedule/compoents/timeSelector/types';\nimport TimeSelector from '@/components/schedule/schedule/compoents/timeSelector/timeSelector.vue';\n\nconst props = defineProps<Props>();\nconst emit = defineEmits<Emits>();\nconst timeKeys = new WeakMap<Time, number>();\nlet nextTimeKey = 0;\n\nconst getTimeKey = (rawOrProxyTime: Time) => {\n\t// time может быть proxy или обычным объектом\n\tconst time = toRaw(rawOrProxyTime);\n\n\tconst existingKey = timeKeys.get(time);\n\tif (existingKey !== undefined) return existingKey;\n\n\tconst key = nextTimeKey++;\n\ttimeKeys.set(time, key);\n\n\treturn key;\n};\n\nconst updateTime = (index: number, patch: Partial<Props['times'][number]>) => {\n\tconst updatedTimes = props.times.map((time, i) => {\n\t\tif (i !== index) return time;\n\n\t\tconst updatedTime = { ...time, ...patch };\n\t\ttimeKeys.set(updatedTime, getTimeKey(time));\n\n\t\treturn updatedTime;\n\t});\n\n\temit('update:times', updatedTimes);\n};\n\nconst addTime = () => {\n\tconst time: Time = {\n\t\thour: '0',\n\t\tminute: '0',\n\t};\n\n\tconst updatedTimes = [\n\t\ttime,\n\t\t...props.times,\n\t];\n\n\temit('update:times', updatedTimes);\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleTimeSelectors\">\n\t\t<div\n\t\t\tclass=\"top-scheduleTimeSelectors_item\"\n\t\t\tv-for=\"(time, index) in times\"\n\t\t\t:key=\"getTimeKey(time)\"\n\t\t>\n\t\t\t<TimeSelector\n\t\t\t\t:hour=\"time.hour\"\n\t\t\t\t:minute=\"time.minute\"\n\t\t\t\t@update:hour=\"updateTime(index, { hour: $event as Time['hour'] })\"\n\t\t\t\t@update:minute=\"updateTime(index, { minute: $event as Time['minute'] })\"\n\t\t\t/>\n\n\t\t\t<TopButton\n\t\t\t\tv-if=\"index\"\n\t\t\t\t@click=\"$emit('update:times', times.filter((_, i) => i !== index))\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ticon=\"\"\n\t\t\t/>\n\n\t\t\t<TopButton\n\t\t\t\tv-else\n\t\t\t\tclass=\"top-scheduleTimeSelectors_itemAdd\"\n\t\t\t\t@click=\"addTime\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ticon=\"\"\n\t\t\t/>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n"],"mappings":"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"}
1
+ {"version":3,"file":"schedule.js","names":["$emit","$slots","$i18n","$emit","$i18n","$i18n","$emit","$i18n","$emit","$emit","$emit"],"sources":["../../src/components/schedule/schedule/schedule.vue","../../src/components/schedule/schedule/schedule.vue","../../src/components/schedule/schedule/compoents/container/container.vue","../../src/components/schedule/schedule/compoents/calendar/utils.ts","../../src/components/schedule/schedule/compoents/calendar/calendar.vue","../../src/components/schedule/schedule/compoents/calendar/calendar.vue","../../src/components/schedule/schedule/compoents/email/selector/selector.vue","../../src/components/schedule/schedule/compoents/email/selector/selector.vue","../../src/components/schedule/schedule/compoents/email/email.vue","../../src/components/schedule/schedule/compoents/email/email.vue","../../src/components/schedule/schedule/compoents/reportSend/reportSend.vue","../../src/components/schedule/schedule/compoents/reportSend/reportSend.vue","../../src/components/schedule/schedule/compoents/timeSelector/timeSelector.vue","../../src/components/schedule/schedule/compoents/timeSelector/timeSelector.vue","../../src/components/schedule/schedule/compoents/timeSelectors/timeSelectors.vue","../../src/components/schedule/schedule/compoents/timeSelectors/timeSelectors.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport TopSelect from '@/components/forms/select/select.vue';\nimport type { Props, Emits, TriggerType } from '@/components/schedule/schedule/types';\nimport { useI18n } from '@/core/plugins/i18n';\n\ndefineOptions({\n\tname: 'TopSchedule',\n});\n\nconst props = withDefaults(defineProps<Props>(), {\n\ttriggerType: 'onDemand',\n});\n\ndefineEmits<Emits>();\n\nconst i18n = useI18n();\nconst labelByStyling = {\n\t'go': i18n.Projects.Checks,\n\t'report': i18n.Projects.Reports,\n\t'neutral': '',\n};\nconst title = props.title ?? labelByStyling[props.styling];\n</script>\n\n<template>\n\t<div\n\t\t:class=\"{\n\t\t\t'top-schedule': true,\n\t\t\t[`top-schedule-style_${styling}`]: true,\n\t\t}\"\n\t>\n\t\t<div class=\"top-schedule_header\">\n\t\t\t<div class=\"top-schedule_headerTitle\">\n\t\t\t\t{{ title }}\n\t\t\t</div>\n\n\t\t\t<TopSelect\n\t\t\t\tclass=\"top-schedule_headerTriggerType\"\n\t\t\t\t:modelValue=\"triggerType\"\n\t\t\t\t@update:modelValue=\"$emit('update:triggerType', $event as TriggerType)\"\n\t\t\t\t:options=\"triggerTypeOptions\"\n\t\t\t\tsize=\"s\"\n\t\t\t/>\n\t\t</div>\n\n\t\t<div\n\t\t\tv-if=\"triggerType !== 'onDemand' && $slots.body\"\n\t\t\tclass=\"top-schedule_body\"\n\t\t>\n\t\t\t<slot name=\"body\"></slot>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport TopSelect from '@/components/forms/select/select.vue';\nimport type { Props, Emits, TriggerType } from '@/components/schedule/schedule/types';\nimport { useI18n } from '@/core/plugins/i18n';\n\ndefineOptions({\n\tname: 'TopSchedule',\n});\n\nconst props = withDefaults(defineProps<Props>(), {\n\ttriggerType: 'onDemand',\n});\n\ndefineEmits<Emits>();\n\nconst i18n = useI18n();\nconst labelByStyling = {\n\t'go': i18n.Projects.Checks,\n\t'report': i18n.Projects.Reports,\n\t'neutral': '',\n};\nconst title = props.title ?? labelByStyling[props.styling];\n</script>\n\n<template>\n\t<div\n\t\t:class=\"{\n\t\t\t'top-schedule': true,\n\t\t\t[`top-schedule-style_${styling}`]: true,\n\t\t}\"\n\t>\n\t\t<div class=\"top-schedule_header\">\n\t\t\t<div class=\"top-schedule_headerTitle\">\n\t\t\t\t{{ title }}\n\t\t\t</div>\n\n\t\t\t<TopSelect\n\t\t\t\tclass=\"top-schedule_headerTriggerType\"\n\t\t\t\t:modelValue=\"triggerType\"\n\t\t\t\t@update:modelValue=\"$emit('update:triggerType', $event as TriggerType)\"\n\t\t\t\t:options=\"triggerTypeOptions\"\n\t\t\t\tsize=\"s\"\n\t\t\t/>\n\t\t</div>\n\n\t\t<div\n\t\t\tv-if=\"triggerType !== 'onDemand' && $slots.body\"\n\t\t\tclass=\"top-schedule_body\"\n\t\t>\n\t\t\t<slot name=\"body\"></slot>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<template>\n\t<div class=\"top-schedule_bodyContainer\">\n\t\t<slot></slot>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","import type { Day, Props } from './types';\nimport { useI18n } from '@/core/app';\n\n/**\n * Количество дней в месяце\n */\nexport const COUNT_DAYS_IN_MONTHS = 27;\n\n/**\n * Количество дней в неделе\n */\nexport const COUNT_DAYS_IN_WEEK = 7;\n\nexport const genDaysByCalendarMode = (mode: Props['mode']): Day[] => {\n\tconst i18n = useI18n();\n\n\tswitch (mode) {\n\t\tcase 'dayOfMonth': {\n\t\t\tconst days: Day[] = Array.from({ length: COUNT_DAYS_IN_MONTHS }, (_, index) => ({\n\t\t\t\tvalue: String(index + 1) as Day['value'],\n\t\t\t\ttitle: String(index + 1),\n\t\t\t}));\n\n\t\t\tdays.push({\n\t\t\t\tvalue: 'LAST_OF_MONTH',\n\t\t\t\ttitle: '',\n\t\t\t\tisIcon: true,\n\t\t\t});\n\n\t\t\treturn days;\n\t\t}\n\n\t\tcase 'dayOfWeek': {\n\t\t\treturn [\n\t\t\t\t{ value: 'MONDAY', title: i18n.Calendar.Dw_1 },\n\t\t\t\t{ value: 'TUESDAY', title: i18n.Calendar.Dw_2 },\n\t\t\t\t{ value: 'WEDNESDAY', title: i18n.Calendar.Dw_3 },\n\t\t\t\t{ value: 'THURSDAY', title: i18n.Calendar.Dw_4 },\n\t\t\t\t{ value: 'FRIDAY', title: i18n.Calendar.Dw_5 },\n\t\t\t\t{ value: 'SATURDAY', title: i18n.Calendar.Dw_6 },\n\t\t\t\t{ value: 'SUNDAY', title: i18n.Calendar.Dw_7 },\n\t\t\t];\n\t\t}\n\t}\n};\n","<script setup lang=\"ts\">\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/calendar/types';\nimport { COUNT_DAYS_IN_MONTHS, COUNT_DAYS_IN_WEEK, genDaysByCalendarMode } from '@/components/schedule/schedule/compoents/calendar/utils';\nimport { numberEnding } from '@/core/utils/string';\nimport { computed } from 'vue';\nimport { useI18n } from '@/core/app';\n\nconst i18n = useI18n();\nconst props = withDefaults(defineProps<Props>(), {\n\ttimesCount: 1,\n});\nconst emit = defineEmits<Emits>();\n\nconst selectedDays = computed<Props['modelValue']>({\n\tget: () => props.modelValue,\n\tset: value => emit('update:modelValue', value),\n});\n\nconst days = computed(() => genDaysByCalendarMode(props.mode));\n\n/**\n * Параметры отображения выбранных дней для каждого режима календаря\n */\nconst modeConfig = {\n\tdayOfWeek: {\n\t\ttotalDaysCount: COUNT_DAYS_IN_WEEK,\n\t\tperiod: i18n.Common.a_week,\n\t},\n\tdayOfMonth: {\n\t\t// плюс \"последний день месяца\"\n\t\ttotalDaysCount: COUNT_DAYS_IN_MONTHS + 1,\n\t\tperiod: i18n.Common.a_month,\n\t},\n};\n\n/**\n * Текстовая сводка выбранных дней и временных слотов\n */\nconst selectionSummary = computed(() => {\n\t// Количество выбранных пользователем дней\n\tconst daysCount = selectedDays.value.length;\n\t// Общее количество доступных дней и название периода для текущего режима\n\tconst { totalDaysCount, period } = modeConfig[props.mode];\n\t// Выбраны ли все доступные дни\n\tconst isEveryDay = daysCount === totalDaysCount;\n\n\tif (isEveryDay && props.timesCount === 1) return i18n.Common.Every_day;\n\n\t// Число, для которого нужно подобрать склонение слова «раз»\n\tconst count = props.timesCount === 1 ? daysCount : props.timesCount;\n\t// Подпись количества выбранных дней\n\tconst daysLabel = isEveryDay ? i18n.Common.Every_day : `${daysCount}`;\n\t// Множитель времени отображается только при нескольких временных слотах\n\tconst multiplier = props.timesCount > 1 ? ` × ${props.timesCount}` : '';\n\t// Склонённая подпись количества запусков\n\tconst countLabel = numberEnding(\n\t\tcount,\n\t\ti18n.Common.time_a_0,\n\t\ti18n.Common.time_a_0,\n\t\ti18n.Common.time_a_2,\n\t);\n\n\treturn `${daysLabel}${multiplier} ${countLabel} ${period}`;\n});\n\nconst isClearAction = computed(() => selectedDays.value.length > 1);\n\nconst toggleAllDays = () => {\n\tselectedDays.value = isClearAction.value ? [] : days.value.map(day => day.value);\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleCalendar\">\n\t\t<div class=\"top-scheduleCalendar_header\">\n\t\t\t<slot name=\"header\"></slot>\n\n\t\t\t<TopButton\n\t\t\t\tclass=\"top-scheduleCalendar_headerButton\"\n\t\t\t\t@click=\"toggleAllDays\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t>\n\t\t\t\t{{ isClearAction ? $i18n.Common.Clear : $i18n.Common.Select_all}}\n\t\t\t</TopButton>\n\t\t</div>\n\n\t\t<div class=\"top-scheduleCalendar_calendar\">\n\t\t\t<label\n\t\t\t\tclass=\"top-scheduleCalendar_calendarDay\"\n\t\t\t\tv-for=\"day in days\"\n\t\t\t\t:key=\"day.value\"\n\t\t\t>\n\t\t\t\t<input\n\t\t\t\t\tclass=\"top-scheduleCalendar_calendarDayRadio\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t:value=\"day.value\"\n\t\t\t\t\tv-model=\"selectedDays\"\n\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t>\n\n\t\t\t\t<span\n\t\t\t\t\tclass=\"top-scheduleCalendar_calendarDayTitle\"\n\t\t\t\t\t:data-top-icon=\"day.isIcon ? day.title : undefined\"\n\t\t\t\t>\n\t\t\t\t\t<template v-if=\"!day.isIcon\">\n\t\t\t\t\t\t{{ day.title }}\n\t\t\t\t\t</template>\n\t\t\t\t</span>\n\t\t\t</label>\n\t\t</div>\n\n\t\t<span\n\t\t\t:class=\"{\n\t\t\t\t'top-scheduleCalendar_selectionSummary': true,\n\t\t\t\t'top-error': !selectedDays.length\n\t\t\t}\"\n\t\t>\n\t\t\t{{ selectionSummary }}\n\t\t</span>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/calendar/types';\nimport { COUNT_DAYS_IN_MONTHS, COUNT_DAYS_IN_WEEK, genDaysByCalendarMode } from '@/components/schedule/schedule/compoents/calendar/utils';\nimport { numberEnding } from '@/core/utils/string';\nimport { computed } from 'vue';\nimport { useI18n } from '@/core/app';\n\nconst i18n = useI18n();\nconst props = withDefaults(defineProps<Props>(), {\n\ttimesCount: 1,\n});\nconst emit = defineEmits<Emits>();\n\nconst selectedDays = computed<Props['modelValue']>({\n\tget: () => props.modelValue,\n\tset: value => emit('update:modelValue', value),\n});\n\nconst days = computed(() => genDaysByCalendarMode(props.mode));\n\n/**\n * Параметры отображения выбранных дней для каждого режима календаря\n */\nconst modeConfig = {\n\tdayOfWeek: {\n\t\ttotalDaysCount: COUNT_DAYS_IN_WEEK,\n\t\tperiod: i18n.Common.a_week,\n\t},\n\tdayOfMonth: {\n\t\t// плюс \"последний день месяца\"\n\t\ttotalDaysCount: COUNT_DAYS_IN_MONTHS + 1,\n\t\tperiod: i18n.Common.a_month,\n\t},\n};\n\n/**\n * Текстовая сводка выбранных дней и временных слотов\n */\nconst selectionSummary = computed(() => {\n\t// Количество выбранных пользователем дней\n\tconst daysCount = selectedDays.value.length;\n\t// Общее количество доступных дней и название периода для текущего режима\n\tconst { totalDaysCount, period } = modeConfig[props.mode];\n\t// Выбраны ли все доступные дни\n\tconst isEveryDay = daysCount === totalDaysCount;\n\n\tif (isEveryDay && props.timesCount === 1) return i18n.Common.Every_day;\n\n\t// Число, для которого нужно подобрать склонение слова «раз»\n\tconst count = props.timesCount === 1 ? daysCount : props.timesCount;\n\t// Подпись количества выбранных дней\n\tconst daysLabel = isEveryDay ? i18n.Common.Every_day : `${daysCount}`;\n\t// Множитель времени отображается только при нескольких временных слотах\n\tconst multiplier = props.timesCount > 1 ? ` × ${props.timesCount}` : '';\n\t// Склонённая подпись количества запусков\n\tconst countLabel = numberEnding(\n\t\tcount,\n\t\ti18n.Common.time_a_0,\n\t\ti18n.Common.time_a_0,\n\t\ti18n.Common.time_a_2,\n\t);\n\n\treturn `${daysLabel}${multiplier} ${countLabel} ${period}`;\n});\n\nconst isClearAction = computed(() => selectedDays.value.length > 1);\n\nconst toggleAllDays = () => {\n\tselectedDays.value = isClearAction.value ? [] : days.value.map(day => day.value);\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleCalendar\">\n\t\t<div class=\"top-scheduleCalendar_header\">\n\t\t\t<slot name=\"header\"></slot>\n\n\t\t\t<TopButton\n\t\t\t\tclass=\"top-scheduleCalendar_headerButton\"\n\t\t\t\t@click=\"toggleAllDays\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t>\n\t\t\t\t{{ isClearAction ? $i18n.Common.Clear : $i18n.Common.Select_all}}\n\t\t\t</TopButton>\n\t\t</div>\n\n\t\t<div class=\"top-scheduleCalendar_calendar\">\n\t\t\t<label\n\t\t\t\tclass=\"top-scheduleCalendar_calendarDay\"\n\t\t\t\tv-for=\"day in days\"\n\t\t\t\t:key=\"day.value\"\n\t\t\t>\n\t\t\t\t<input\n\t\t\t\t\tclass=\"top-scheduleCalendar_calendarDayRadio\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t:value=\"day.value\"\n\t\t\t\t\tv-model=\"selectedDays\"\n\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t>\n\n\t\t\t\t<span\n\t\t\t\t\tclass=\"top-scheduleCalendar_calendarDayTitle\"\n\t\t\t\t\t:data-top-icon=\"day.isIcon ? day.title : undefined\"\n\t\t\t\t>\n\t\t\t\t\t<template v-if=\"!day.isIcon\">\n\t\t\t\t\t\t{{ day.title }}\n\t\t\t\t\t</template>\n\t\t\t\t</span>\n\t\t\t</label>\n\t\t</div>\n\n\t\t<span\n\t\t\t:class=\"{\n\t\t\t\t'top-scheduleCalendar_selectionSummary': true,\n\t\t\t\t'top-error': !selectedDays.length\n\t\t\t}\"\n\t\t>\n\t\t\t{{ selectionSummary }}\n\t\t</span>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { nextTick, onBeforeUnmount, onMounted, ref } from 'vue';\nimport TopInput from '@/components/forms/input/input.vue';\nimport TopButton from '@/components/forms/button/button.vue';\nimport Core from '@/core/core/core';\nimport { isEmail } from '@/core/utils/check';\nimport { useI18n } from '@/core/plugins/i18n';\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/email/selector/types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\temails: () => [],\n\tgetEmailSuggestions: () => [],\n});\n\nconst emit = defineEmits<Emits>();\nconst i18n = useI18n();\nconst $ = Core.$;\n\nconst elRootRef = ref<HTMLElement>();\nconst elInputRef = ref<InstanceType<typeof TopInput>>();\nlet elInput: HTMLInputElement | null = null;\nconst autocompleteCache: Record<string, string[]> = {};\n\nconst filterEmails = (emails: string[]) => emails.filter(email => !props.emails.includes(email));\n\nconst submit = (value: unknown = props.modelValue) => {\n\tconst email = String(value).trim();\n\tif (!email) return;\n\tif (!isEmail(email)) {\n\t\tvoid Core.notice(i18n.Common.Enter_valid_email_notice, 'error');\n\n\t\treturn;\n\t}\n\n\temit('submit', email);\n};\n\nconst initAutocomplete = async () => {\n\tawait nextTick();\n\n\telInput = elInputRef.value?.$el.querySelector('input') ?? null;\n\tif (!elInput) return;\n\n\tif (!$?.ui?.autocomplete) {\n\t\tconsole.info('Для работы autocomplete требуется глобальная загрузка jQuery UI Autocomplete');\n\n\t\treturn;\n\t}\n\n\t$(elInput).autocomplete({\n\t\tappendTo: elRootRef.value,\n\t\tminLength: 0,\n\t\tsource: async (request: { term: string }, response: (items: Array<{ label: string, value: string }>) => void) => {\n\t\t\tconst term = request.term;\n\t\t\tif (!(term in autocompleteCache)) {\n\t\t\t\tautocompleteCache[term] = await props.getEmailSuggestions(term);\n\t\t\t}\n\n\t\t\tresponse(filterEmails(autocompleteCache[term]).map(email => ({\n\t\t\t\tlabel: email,\n\t\t\t\tvalue: email,\n\t\t\t})));\n\t\t},\n\t\tselect: (event: Event, ui: { item?: { value: string } }) => {\n\t\t\tif (!ui.item || !elInput) return;\n\n\t\t\tevent.preventDefault();\n\t\t\tsubmit(ui.item.value);\n\t\t\temit('update:modelValue', '');\n\n\t\t\t$(elInput).trigger('focus');\n\t\t},\n\t});\n\n\t$(elInput).attr('autocomplete', 'disabled');\n\t$(elInput).on('focus.scheduleEmailSelector', () => {\n\t\tif (!elInput) return;\n\n\t\t$(elInput).trigger('input');\n\t});\n};\n\nonMounted(() => {\n\tvoid initAutocomplete();\n});\n\nonBeforeUnmount(() => {\n\tif (!$?.ui?.autocomplete || !elInput) return;\n\n\t$(elInput).off('focus.scheduleEmailSelector');\n\t$(elInput).autocomplete('destroy');\n});\n</script>\n\n<template>\n\t<div\n\t\tclass=\"top-scheduleEmailSelector\"\n\t\tref=\"elRootRef\"\n\t>\n\t\t<TopInput\n\t\t\tref=\"elInputRef\"\n\t\t\t:modelValue\n\t\t\t@update:modelValue=\"$emit('update:modelValue', $event)\"\n\t\t\t@keydown.enter.prevent=\"submit()\"\n\t\t\t:title=\"$i18n.Common.Enter_email\"\n\t\t\ttype=\"email\"\n\t\t\tsize=\"l\"\n\t\t>\n\t\t\t<TopButton\n\t\t\t\tclass=\"top-scheduleEmailSelector_submit\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ticon=\"\"\n\t\t\t\t@click.prevent=\"submit()\"\n\t\t\t/>\n\t\t</TopInput>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { nextTick, onBeforeUnmount, onMounted, ref } from 'vue';\nimport TopInput from '@/components/forms/input/input.vue';\nimport TopButton from '@/components/forms/button/button.vue';\nimport Core from '@/core/core/core';\nimport { isEmail } from '@/core/utils/check';\nimport { useI18n } from '@/core/plugins/i18n';\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/email/selector/types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\temails: () => [],\n\tgetEmailSuggestions: () => [],\n});\n\nconst emit = defineEmits<Emits>();\nconst i18n = useI18n();\nconst $ = Core.$;\n\nconst elRootRef = ref<HTMLElement>();\nconst elInputRef = ref<InstanceType<typeof TopInput>>();\nlet elInput: HTMLInputElement | null = null;\nconst autocompleteCache: Record<string, string[]> = {};\n\nconst filterEmails = (emails: string[]) => emails.filter(email => !props.emails.includes(email));\n\nconst submit = (value: unknown = props.modelValue) => {\n\tconst email = String(value).trim();\n\tif (!email) return;\n\tif (!isEmail(email)) {\n\t\tvoid Core.notice(i18n.Common.Enter_valid_email_notice, 'error');\n\n\t\treturn;\n\t}\n\n\temit('submit', email);\n};\n\nconst initAutocomplete = async () => {\n\tawait nextTick();\n\n\telInput = elInputRef.value?.$el.querySelector('input') ?? null;\n\tif (!elInput) return;\n\n\tif (!$?.ui?.autocomplete) {\n\t\tconsole.info('Для работы autocomplete требуется глобальная загрузка jQuery UI Autocomplete');\n\n\t\treturn;\n\t}\n\n\t$(elInput).autocomplete({\n\t\tappendTo: elRootRef.value,\n\t\tminLength: 0,\n\t\tsource: async (request: { term: string }, response: (items: Array<{ label: string, value: string }>) => void) => {\n\t\t\tconst term = request.term;\n\t\t\tif (!(term in autocompleteCache)) {\n\t\t\t\tautocompleteCache[term] = await props.getEmailSuggestions(term);\n\t\t\t}\n\n\t\t\tresponse(filterEmails(autocompleteCache[term]).map(email => ({\n\t\t\t\tlabel: email,\n\t\t\t\tvalue: email,\n\t\t\t})));\n\t\t},\n\t\tselect: (event: Event, ui: { item?: { value: string } }) => {\n\t\t\tif (!ui.item || !elInput) return;\n\n\t\t\tevent.preventDefault();\n\t\t\tsubmit(ui.item.value);\n\t\t\temit('update:modelValue', '');\n\n\t\t\t$(elInput).trigger('focus');\n\t\t},\n\t});\n\n\t$(elInput).attr('autocomplete', 'disabled');\n\t$(elInput).on('focus.scheduleEmailSelector', () => {\n\t\tif (!elInput) return;\n\n\t\t$(elInput).trigger('input');\n\t});\n};\n\nonMounted(() => {\n\tvoid initAutocomplete();\n});\n\nonBeforeUnmount(() => {\n\tif (!$?.ui?.autocomplete || !elInput) return;\n\n\t$(elInput).off('focus.scheduleEmailSelector');\n\t$(elInput).autocomplete('destroy');\n});\n</script>\n\n<template>\n\t<div\n\t\tclass=\"top-scheduleEmailSelector\"\n\t\tref=\"elRootRef\"\n\t>\n\t\t<TopInput\n\t\t\tref=\"elInputRef\"\n\t\t\t:modelValue\n\t\t\t@update:modelValue=\"$emit('update:modelValue', $event)\"\n\t\t\t@keydown.enter.prevent=\"submit()\"\n\t\t\t:title=\"$i18n.Common.Enter_email\"\n\t\t\ttype=\"email\"\n\t\t\tsize=\"l\"\n\t\t>\n\t\t\t<TopButton\n\t\t\t\tclass=\"top-scheduleEmailSelector_submit\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ticon=\"\"\n\t\t\t\t@click.prevent=\"submit()\"\n\t\t\t/>\n\t\t</TopInput>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/email/types';\nimport ScheduleEmailSelector from '@/components/schedule/schedule/compoents/email/selector/selector.vue';\n\nconst props = withDefaults(defineProps<Props>(), {\n\temails: () => [],\n\tgetEmailSuggestions: () => [],\n\tmaxEmailsCount: -1,\n});\n\nconst emit = defineEmits<Emits>();\n\nconst value = ref('');\n\nconst addEmail = (email: string) => {\n\tconst preparedEmail = email.trim();\n\tif (!preparedEmail || props.emails.includes(preparedEmail)) {\n\t\tvalue.value = '';\n\n\t\treturn;\n\t}\n\n\temit('add:email', preparedEmail);\n\n\tvalue.value = '';\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleEmail\">\n\t\t<div class=\"top-scheduleEmail_title\">\n\t\t\t{{ $i18n.Projects.Reports_send_to_address }} E-mail:\n\t\t</div>\n\n\t\t<ScheduleEmailSelector\n\t\t\tv-if=\"!(maxEmailsCount && emails.length === maxEmailsCount)\"\n\t\t\tv-model=\"value\"\n\t\t\t:getEmailSuggestions=\"getEmailSuggestions\"\n\t\t\t:emails=\"emails\"\n\t\t\t@submit=\"addEmail\"\n\t\t/>\n\n\t\t<div\n\t\t\tv-if=\"emails.length\"\n\t\t\tclass=\"top-scheduleEmail_emails\"\n\t\t>\n\t\t\t<div\n\t\t\t\tclass=\"top-scheduleEmail_emailsItem\"\n\t\t\t\tv-for=\"email in emails\"\n\t\t\t\t:key=\"email\"\n\t\t\t>\n\t\t\t\t<span class=\"top-ellipsis1\">{{ email }}</span>\n\n\t\t\t\t<TopButton\n\t\t\t\t\t@click=\"$emit('remove:email', email)\"\n\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\ticon=\"\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/email/types';\nimport ScheduleEmailSelector from '@/components/schedule/schedule/compoents/email/selector/selector.vue';\n\nconst props = withDefaults(defineProps<Props>(), {\n\temails: () => [],\n\tgetEmailSuggestions: () => [],\n\tmaxEmailsCount: -1,\n});\n\nconst emit = defineEmits<Emits>();\n\nconst value = ref('');\n\nconst addEmail = (email: string) => {\n\tconst preparedEmail = email.trim();\n\tif (!preparedEmail || props.emails.includes(preparedEmail)) {\n\t\tvalue.value = '';\n\n\t\treturn;\n\t}\n\n\temit('add:email', preparedEmail);\n\n\tvalue.value = '';\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleEmail\">\n\t\t<div class=\"top-scheduleEmail_title\">\n\t\t\t{{ $i18n.Projects.Reports_send_to_address }} E-mail:\n\t\t</div>\n\n\t\t<ScheduleEmailSelector\n\t\t\tv-if=\"!(maxEmailsCount && emails.length === maxEmailsCount)\"\n\t\t\tv-model=\"value\"\n\t\t\t:getEmailSuggestions=\"getEmailSuggestions\"\n\t\t\t:emails=\"emails\"\n\t\t\t@submit=\"addEmail\"\n\t\t/>\n\n\t\t<div\n\t\t\tv-if=\"emails.length\"\n\t\t\tclass=\"top-scheduleEmail_emails\"\n\t\t>\n\t\t\t<div\n\t\t\t\tclass=\"top-scheduleEmail_emailsItem\"\n\t\t\t\tv-for=\"email in emails\"\n\t\t\t\t:key=\"email\"\n\t\t\t>\n\t\t\t\t<span class=\"top-ellipsis1\">{{ email }}</span>\n\n\t\t\t\t<TopButton\n\t\t\t\t\t@click=\"$emit('remove:email', email)\"\n\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\ticon=\"\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport type { Emits, Props, ReportChannelSource } from '@/components/schedule/schedule/compoents/reportSend/types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tconnectors: () => [],\n});\ndefineEmits<Emits>();\n\nconst hasChannel = (source: ReportChannelSource) => props.channels.some(channel => channel.source === source);\n\nconst sourceIconBySource: Record<ReportChannelSource, string> = {\n\tinformer: '',\n\ttelegram: '',\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleReportSend\">\n\t\t<div class=\"top-scheduleReportSend_title\">\n\t\t\t{{ $i18n.Projects.Reports_send }}\n\t\t</div>\n\n\t\t<div class=\"top-scheduleReportSend_channels\">\n\t\t\t<div\n\t\t\t\tclass=\"top-scheduleReportSend_channel\"\n\t\t\t\tv-for=\"channel in channels\"\n\t\t\t\t:key=\"`${channel.source}-${channel.id}`\"\n\t\t\t>\n\t\t\t\t<span\n\t\t\t\t\tclass=\"top-scheduleReportSend_channelIcon\"\n\t\t\t\t\t:data-top-icon=\"sourceIconBySource[channel.source]\"\n\t\t\t\t></span>\n\n\t\t\t\t<span class=\"top-scheduleReportSend_channelLabel top-ellipsis1\">\n\t\t\t\t\t{{ channel.label }}\n\t\t\t\t</span>\n\n\t\t\t\t<TopButton\n\t\t\t\t\tv-if=\"channel.settingLink\"\n\t\t\t\t\tclass=\"top-scheduleReportSend_channelSettings\"\n\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t:href=\"channel.settingLink\"\n\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\ticon=\"\"\n\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t></TopButton>\n\n\t\t\t\t<TopSwitcher\n\t\t\t\t\tclass=\"top-scheduleReportSend_channelSwitcher\"\n\t\t\t\t\t:modelValue=\"channel.selected\"\n\t\t\t\t\t@update:modelValue=\"$emit('update:channelSelected', {\n\t\t\t\t\t\tid: channel.id,\n\t\t\t\t\t\tsource: channel.source,\n\t\t\t\t\t\tselected: $event as boolean,\n\t\t\t\t\t})\"\n\t\t\t\t/>\n\t\t\t</div>\n\n\t\t\t<template\n\t\t\t\tv-for=\"connector in connectors\"\n\t\t\t\t:key=\"connector.source\"\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tv-if=\"!hasChannel(connector.source)\"\n\t\t\t\t\tclass=\"top-scheduleReportSend_channel\"\n\t\t\t\t>\n\t\t\t\t\t<span\n\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelIcon\"\n\t\t\t\t\t\t:data-top-icon=\"sourceIconBySource[connector.source]\"\n\t\t\t\t\t></span>\n\n\t\t\t\t\t<a\n\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelLabel top-ellipsis1\"\n\t\t\t\t\t\t:href=\"connector.connectLink\"\n\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{{ connector.connectLabel }}\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport type { Emits, Props, ReportChannelSource } from '@/components/schedule/schedule/compoents/reportSend/types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tconnectors: () => [],\n});\ndefineEmits<Emits>();\n\nconst hasChannel = (source: ReportChannelSource) => props.channels.some(channel => channel.source === source);\n\nconst sourceIconBySource: Record<ReportChannelSource, string> = {\n\tinformer: '',\n\ttelegram: '',\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleReportSend\">\n\t\t<div class=\"top-scheduleReportSend_title\">\n\t\t\t{{ $i18n.Projects.Reports_send }}\n\t\t</div>\n\n\t\t<div class=\"top-scheduleReportSend_channels\">\n\t\t\t<div\n\t\t\t\tclass=\"top-scheduleReportSend_channel\"\n\t\t\t\tv-for=\"channel in channels\"\n\t\t\t\t:key=\"`${channel.source}-${channel.id}`\"\n\t\t\t>\n\t\t\t\t<span\n\t\t\t\t\tclass=\"top-scheduleReportSend_channelIcon\"\n\t\t\t\t\t:data-top-icon=\"sourceIconBySource[channel.source]\"\n\t\t\t\t></span>\n\n\t\t\t\t<span class=\"top-scheduleReportSend_channelLabel top-ellipsis1\">\n\t\t\t\t\t{{ channel.label }}\n\t\t\t\t</span>\n\n\t\t\t\t<TopButton\n\t\t\t\t\tv-if=\"channel.settingLink\"\n\t\t\t\t\tclass=\"top-scheduleReportSend_channelSettings\"\n\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t:href=\"channel.settingLink\"\n\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\ticon=\"\"\n\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t></TopButton>\n\n\t\t\t\t<TopSwitcher\n\t\t\t\t\tclass=\"top-scheduleReportSend_channelSwitcher\"\n\t\t\t\t\t:modelValue=\"channel.selected\"\n\t\t\t\t\t@update:modelValue=\"$emit('update:channelSelected', {\n\t\t\t\t\t\tid: channel.id,\n\t\t\t\t\t\tsource: channel.source,\n\t\t\t\t\t\tselected: $event as boolean,\n\t\t\t\t\t})\"\n\t\t\t\t/>\n\t\t\t</div>\n\n\t\t\t<template\n\t\t\t\tv-for=\"connector in connectors\"\n\t\t\t\t:key=\"connector.source\"\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tv-if=\"!hasChannel(connector.source)\"\n\t\t\t\t\tclass=\"top-scheduleReportSend_channel\"\n\t\t\t\t>\n\t\t\t\t\t<span\n\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelIcon\"\n\t\t\t\t\t\t:data-top-icon=\"sourceIconBySource[connector.source]\"\n\t\t\t\t\t></span>\n\n\t\t\t\t\t<a\n\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelLabel top-ellipsis1\"\n\t\t\t\t\t\t:href=\"connector.connectLink\"\n\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{{ connector.connectLabel }}\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport type { Props, Emits, Time } from '@/components/schedule/schedule/compoents/timeSelector/types';\n\nconst props = defineProps<Props>();\ndefineEmits<Emits>();\n\n/**\n * Варианты выбора часа\n */\nconst hourOptions = Array.from({ length: 24 }, (_, index) => ({\n\tvalue: String(index),\n\ttitle: String(index).padStart(2, '0'),\n}));\n\n/**\n * Варианты выбора минут по умолчанию\n */\nconst defaultMinuteOptions = [\n\t{\n\t\tvalue: '0',\n\t\ttitle: '00',\n\t},\n\t{\n\t\tvalue: '15',\n\t\ttitle: '15',\n\t},\n\t{\n\t\tvalue: '30',\n\t\ttitle: '30',\n\t},\n\t{\n\t\tvalue: '45',\n\t\ttitle: '45',\n\t},\n];\n\n/**\n * Варианты выбора минут\n *\n * Дополняются выбранным нестандартным значением, чтобы вывести его в интерфейсе\n */\nconst minuteOptions = computed(() => {\n\tif (defaultMinuteOptions.some((option) => option.value === props.minute)) return defaultMinuteOptions;\n\n\treturn [\n\t\t...defaultMinuteOptions, {\n\t\t\tvalue: props.minute,\n\t\t\ttitle: props.minute.padStart(2, '0'),\n\t\t\tdisabled: true,\n\t\t},\n\t];\n});\n</script>\n\n<template>\n\t<div class=\"top-scheduleTimeSelector\">\n\t\t<TopSelect\n\t\t\tclass=\"top-scheduleTimeSelector_hour\"\n\t\t\t:modelValue=\"hour\"\n\t\t\t:options=\"hourOptions\"\n\t\t\t@update:modelValue=\"$emit('update:hour', $event as Time['hour'])\"\n\t\t/>\n\n\t\t<TopSelect\n\t\t\tclass=\"top-scheduleTimeSelector_minute\"\n\t\t\t:modelValue=\"minute\"\n\t\t\t:options=\"minuteOptions\"\n\t\t\t@update:modelValue=\"$emit('update:minute', $event as Time['minute'])\"\n\t\t/>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport type { Props, Emits, Time } from '@/components/schedule/schedule/compoents/timeSelector/types';\n\nconst props = defineProps<Props>();\ndefineEmits<Emits>();\n\n/**\n * Варианты выбора часа\n */\nconst hourOptions = Array.from({ length: 24 }, (_, index) => ({\n\tvalue: String(index),\n\ttitle: String(index).padStart(2, '0'),\n}));\n\n/**\n * Варианты выбора минут по умолчанию\n */\nconst defaultMinuteOptions = [\n\t{\n\t\tvalue: '0',\n\t\ttitle: '00',\n\t},\n\t{\n\t\tvalue: '15',\n\t\ttitle: '15',\n\t},\n\t{\n\t\tvalue: '30',\n\t\ttitle: '30',\n\t},\n\t{\n\t\tvalue: '45',\n\t\ttitle: '45',\n\t},\n];\n\n/**\n * Варианты выбора минут\n *\n * Дополняются выбранным нестандартным значением, чтобы вывести его в интерфейсе\n */\nconst minuteOptions = computed(() => {\n\tif (defaultMinuteOptions.some((option) => option.value === props.minute)) return defaultMinuteOptions;\n\n\treturn [\n\t\t...defaultMinuteOptions, {\n\t\t\tvalue: props.minute,\n\t\t\ttitle: props.minute.padStart(2, '0'),\n\t\t\tdisabled: true,\n\t\t},\n\t];\n});\n</script>\n\n<template>\n\t<div class=\"top-scheduleTimeSelector\">\n\t\t<TopSelect\n\t\t\tclass=\"top-scheduleTimeSelector_hour\"\n\t\t\t:modelValue=\"hour\"\n\t\t\t:options=\"hourOptions\"\n\t\t\t@update:modelValue=\"$emit('update:hour', $event as Time['hour'])\"\n\t\t/>\n\n\t\t<TopSelect\n\t\t\tclass=\"top-scheduleTimeSelector_minute\"\n\t\t\t:modelValue=\"minute\"\n\t\t\t:options=\"minuteOptions\"\n\t\t\t@update:modelValue=\"$emit('update:minute', $event as Time['minute'])\"\n\t\t/>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { toRaw } from 'vue';\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/timeSelectors/types';\nimport type { Time } from '@/components/schedule/schedule/compoents/timeSelector/types';\nimport TimeSelector from '@/components/schedule/schedule/compoents/timeSelector/timeSelector.vue';\n\nconst props = defineProps<Props>();\nconst emit = defineEmits<Emits>();\nconst timeKeys = new WeakMap<Time, number>();\nlet nextTimeKey = 0;\n\nconst getTimeKey = (rawOrProxyTime: Time) => {\n\t// time может быть proxy или обычным объектом\n\tconst time = toRaw(rawOrProxyTime);\n\n\tconst existingKey = timeKeys.get(time);\n\tif (existingKey !== undefined) return existingKey;\n\n\tconst key = nextTimeKey++;\n\ttimeKeys.set(time, key);\n\n\treturn key;\n};\n\nconst updateTime = (index: number, patch: Partial<Props['times'][number]>) => {\n\tconst updatedTimes = props.times.map((time, i) => {\n\t\tif (i !== index) return time;\n\n\t\tconst updatedTime = { ...time, ...patch };\n\t\ttimeKeys.set(updatedTime, getTimeKey(time));\n\n\t\treturn updatedTime;\n\t});\n\n\temit('update:times', updatedTimes);\n};\n\nconst addTime = () => {\n\tconst time: Time = {\n\t\thour: '0',\n\t\tminute: '0',\n\t};\n\n\tconst updatedTimes = [\n\t\ttime,\n\t\t...props.times,\n\t];\n\n\temit('update:times', updatedTimes);\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleTimeSelectors\">\n\t\t<div\n\t\t\tclass=\"top-scheduleTimeSelectors_item\"\n\t\t\tv-for=\"(time, index) in times\"\n\t\t\t:key=\"getTimeKey(time)\"\n\t\t>\n\t\t\t<TimeSelector\n\t\t\t\t:hour=\"time.hour\"\n\t\t\t\t:minute=\"time.minute\"\n\t\t\t\t@update:hour=\"updateTime(index, { hour: $event as Time['hour'] })\"\n\t\t\t\t@update:minute=\"updateTime(index, { minute: $event as Time['minute'] })\"\n\t\t\t/>\n\n\t\t\t<TopButton\n\t\t\t\tv-if=\"index\"\n\t\t\t\t@click=\"$emit('update:times', times.filter((_, i) => i !== index))\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ticon=\"\"\n\t\t\t/>\n\n\t\t\t<TopButton\n\t\t\t\tv-else\n\t\t\t\tclass=\"top-scheduleTimeSelectors_itemAdd\"\n\t\t\t\t@click=\"addTime\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ticon=\"\"\n\t\t\t/>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { toRaw } from 'vue';\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/timeSelectors/types';\nimport type { Time } from '@/components/schedule/schedule/compoents/timeSelector/types';\nimport TimeSelector from '@/components/schedule/schedule/compoents/timeSelector/timeSelector.vue';\n\nconst props = defineProps<Props>();\nconst emit = defineEmits<Emits>();\nconst timeKeys = new WeakMap<Time, number>();\nlet nextTimeKey = 0;\n\nconst getTimeKey = (rawOrProxyTime: Time) => {\n\t// time может быть proxy или обычным объектом\n\tconst time = toRaw(rawOrProxyTime);\n\n\tconst existingKey = timeKeys.get(time);\n\tif (existingKey !== undefined) return existingKey;\n\n\tconst key = nextTimeKey++;\n\ttimeKeys.set(time, key);\n\n\treturn key;\n};\n\nconst updateTime = (index: number, patch: Partial<Props['times'][number]>) => {\n\tconst updatedTimes = props.times.map((time, i) => {\n\t\tif (i !== index) return time;\n\n\t\tconst updatedTime = { ...time, ...patch };\n\t\ttimeKeys.set(updatedTime, getTimeKey(time));\n\n\t\treturn updatedTime;\n\t});\n\n\temit('update:times', updatedTimes);\n};\n\nconst addTime = () => {\n\tconst time: Time = {\n\t\thour: '0',\n\t\tminute: '0',\n\t};\n\n\tconst updatedTimes = [\n\t\ttime,\n\t\t...props.times,\n\t];\n\n\temit('update:times', updatedTimes);\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleTimeSelectors\">\n\t\t<div\n\t\t\tclass=\"top-scheduleTimeSelectors_item\"\n\t\t\tv-for=\"(time, index) in times\"\n\t\t\t:key=\"getTimeKey(time)\"\n\t\t>\n\t\t\t<TimeSelector\n\t\t\t\t:hour=\"time.hour\"\n\t\t\t\t:minute=\"time.minute\"\n\t\t\t\t@update:hour=\"updateTime(index, { hour: $event as Time['hour'] })\"\n\t\t\t\t@update:minute=\"updateTime(index, { minute: $event as Time['minute'] })\"\n\t\t\t/>\n\n\t\t\t<TopButton\n\t\t\t\tv-if=\"index\"\n\t\t\t\t@click=\"$emit('update:times', times.filter((_, i) => i !== index))\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ticon=\"\"\n\t\t\t/>\n\n\t\t\t<TopButton\n\t\t\t\tv-else\n\t\t\t\tclass=\"top-scheduleTimeSelectors_itemAdd\"\n\t\t\t\t@click=\"addTime\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ticon=\"\"\n\t\t\t/>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n"],"mappings":"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"}
@@ -1,8 +1,7 @@
1
1
  import { Client as ClientClass } from '../../client/client';
2
2
  declare global {
3
3
  namespace Api {
4
- interface Client<paths extends Api.PathsAbstract, UseExt extends Api.Ext.UseExt> extends ClientClass<paths, UseExt> {
5
- }
4
+ type Client<paths extends Api.PathsAbstract, UseExt extends Api.Ext.UseExt> = ClientClass<paths, UseExt>;
6
5
  }
7
6
  }
8
7
  export {};
@@ -19,7 +19,7 @@ declare global {
19
19
  */
20
20
  params: Omit<Params, 'fields'> & (Params extends {
21
21
  fields: any;
22
- } ? Readonly<Pick<Params, 'fields'>> : {});
22
+ } ? Readonly<Pick<Params, 'fields'>> : Record<string, never>);
23
23
  /**
24
24
  * Опции запроса
25
25
  */
@@ -34,7 +34,7 @@ declare global {
34
34
  */
35
35
  errors: undefined;
36
36
  response?: globalThis.Response;
37
- } & Omit<Api.Ext.Schemas['ResponseSuccess'], 'result' | 'errors'> & ('get' extends Oper ? Api.Ext.Schemas['Pagination'] : {});
37
+ } & Omit<Api.Ext.Schemas['ResponseSuccess'], 'result' | 'errors'> & ('get' extends Oper ? Api.Ext.Schemas['Pagination'] : Record<string, never>);
38
38
  /**
39
39
  * Результат метода API с ошибкой
40
40
  */
@@ -36,7 +36,7 @@ declare global {
36
36
  [P in K]?: NewType;
37
37
  } : {
38
38
  [P in K]: NewType;
39
- } : {};
39
+ } : Record<string, never>;
40
40
  type PropIfExists<T, K extends PropertyKey> = K extends keyof T ? T[K] : never;
41
41
  /**
42
42
  * Сужение возможных значений массива
@@ -13,4 +13,4 @@ export declare const isPublicAPI: (path: Api.PathAbstract) => boolean;
13
13
  /**
14
14
  * Сгенерировать baseUrl на основе текущего домена
15
15
  */
16
- export declare const getBaseDomainUrl: (useMainDomain?: boolean, input?: string, subdomain?: string) => string;
16
+ export declare const getBaseDomainUrl: (useMainDomain?: boolean, input?: string) => string;