@topvisor/ui 0.0.37 → 0.0.38

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 (72) hide show
  1. package/.chunks/datepicker-778ddcc5.es.js +275 -0
  2. package/.chunks/datepicker-778ddcc5.es.js.map +1 -0
  3. package/.chunks/datepicker-80599025.amd.js +234 -0
  4. package/.chunks/datepicker-80599025.amd.js.map +1 -0
  5. package/.chunks/forms-58420e52.amd.js +3 -0
  6. package/.chunks/forms-58420e52.amd.js.map +1 -0
  7. package/.chunks/forms-779fee37.es.js +1107 -0
  8. package/.chunks/forms-779fee37.es.js.map +1 -0
  9. package/.chunks/{popup-b9517276.es.js → popup-672d6531.es.js} +420 -385
  10. package/.chunks/popup-672d6531.es.js.map +1 -0
  11. package/.chunks/popup-d53450b6.amd.js +377 -0
  12. package/.chunks/popup-d53450b6.amd.js.map +1 -0
  13. package/README.md +62 -62
  14. package/{core.css → assets/core.css} +1 -1
  15. package/assets/forms.css +1 -0
  16. package/assets/popup.css +1 -0
  17. package/common/common.amd.js +1 -1
  18. package/core/core.amd.js +1 -1
  19. package/core/core.js +1 -1
  20. package/forms/forms.amd.js +1 -1
  21. package/forms/forms.js +12 -11
  22. package/forms/helpers.amd.js +1 -1
  23. package/forms/helpers.amd.js.map +1 -1
  24. package/forms/helpers.js +1 -0
  25. package/forms/helpers.js.map +1 -1
  26. package/formsExt/formsExt.amd.js +1 -2
  27. package/formsExt/formsExt.amd.js.map +1 -1
  28. package/formsExt/formsExt.js +90 -86
  29. package/formsExt/formsExt.js.map +1 -1
  30. package/icomoon/demo-files/demo.css +161 -161
  31. package/icomoon/demo-files/demo.js +30 -30
  32. package/icomoon/demo.html +2945 -2945
  33. package/icomoon/fonts/Topvisor-2.svg +232 -232
  34. package/icomoon/style.css +647 -647
  35. package/package.json +19 -19
  36. package/popup/popup.amd.js +1 -2
  37. package/popup/popup.amd.js.map +1 -1
  38. package/popup/popup.js +74 -68
  39. package/popup/popup.js.map +1 -1
  40. package/popup/worker.amd.js +1 -1
  41. package/popup/worker.amd.js.map +1 -1
  42. package/popup/worker.js +2 -3
  43. package/popup/worker.js.map +1 -1
  44. package/tabs/tabs.amd.js +1 -2
  45. package/tabs/tabs.amd.js.map +1 -1
  46. package/tabs/tabs.js +30 -26
  47. package/tabs/tabs.js.map +1 -1
  48. package/utils/date.amd.js +1 -1
  49. package/utils/date.js +1 -1
  50. package/utils/device.amd.js +1 -1
  51. package/utils/device.js +2 -2
  52. package/utils/dom.amd.js +1 -1
  53. package/utils/dom.amd.js.map +1 -1
  54. package/utils/dom.js +3 -61
  55. package/utils/dom.js.map +1 -1
  56. package/.chunks/datepicker-6d57a408.es.js +0 -275
  57. package/.chunks/datepicker-6d57a408.es.js.map +0 -1
  58. package/.chunks/datepicker-a0840577.amd.js +0 -234
  59. package/.chunks/datepicker-a0840577.amd.js.map +0 -1
  60. package/.chunks/forms-1aa30229.amd.js +0 -3
  61. package/.chunks/forms-1aa30229.amd.js.map +0 -1
  62. package/.chunks/forms-7be951a7.es.js +0 -962
  63. package/.chunks/forms-7be951a7.es.js.map +0 -1
  64. package/.chunks/popup-604c0a49.amd.js +0 -341
  65. package/.chunks/popup-604c0a49.amd.js.map +0 -1
  66. package/.chunks/popup-b9517276.es.js.map +0 -1
  67. package/forms.css +0 -1
  68. package/popup.css +0 -1
  69. /package/{dark.css → assets/dark.css} +0 -0
  70. /package/{formsExt.css → assets/formsExt.css} +0 -0
  71. /package/{light.css → assets/light.css} +0 -0
  72. /package/{tabs.css → assets/tabs.css} +0 -0
@@ -1,9 +1,13 @@
1
- import { defineComponent as B, ref as V, watch as w, toRef as g, computed as k, openBlock as i, createElementBlock as n, normalizeClass as m, toDisplayString as v, createCommentVNode as y, createElementVNode as f, createVNode as h, withKeys as b, withModifiers as A, createBlock as C, withCtx as _, createTextVNode as $, mergeProps as K, renderSlot as E, Fragment as I, renderList as M, withDirectives as H, vModelRadio as z } from "vue";
2
- import { T as N, B as T, _ as G, I as P } from "../.chunks/forms-7be951a7.es.js";
3
- const R = {
1
+ import { defineComponent as G, ref as f, watch as w, toRef as k, computed as C, openBlock as n, createElementBlock as m, normalizeClass as v, toDisplayString as y, createCommentVNode as b, createElementVNode as h, createVNode as A, withKeys as V, withModifiers as _, createBlock as E, withCtx as $, createTextVNode as T, mergeProps as g, renderSlot as I, Fragment as M, renderList as H, withDirectives as z, vModelRadio as N } from "vue";
2
+ import { T as P, B, _ as K, I as R } from "../.chunks/forms-779fee37.es.js";
3
+ import("../core/core.js").then((u) => {
4
+ const p = ["../assets/formsExt.css"].map((t) => import.meta.resolve(t));
5
+ u.default.Page.addCss(p);
6
+ });
7
+ const U = {
4
8
  key: 0,
5
9
  class: "top-editArea_title"
6
- }, U = { class: "top-editArea_footer" }, X = /* @__PURE__ */ B({
10
+ }, X = { class: "top-editArea_footer" }, D = /* @__PURE__ */ G({
7
11
  __name: "editArea",
8
12
  props: {
9
13
  modelValue: {},
@@ -22,33 +26,33 @@ const R = {
22
26
  hint: {}
23
27
  },
24
28
  emits: ["update:modelValue", "cancel"],
25
- setup(p, { emit: u }) {
26
- const r = p, o = V(""), l = V(r.modelValue);
27
- w(g(r, "modelValue"), () => {
28
- l.value = r.modelValue;
29
+ setup(u, { emit: p }) {
30
+ const t = u, r = p, d = f(""), l = f(t.modelValue);
31
+ w(k(t, "modelValue"), () => {
32
+ l.value = t.modelValue;
29
33
  });
30
- const t = k(() => l.value !== r.modelValue), d = (e) => {
31
- u("update:modelValue", e);
34
+ const o = C(() => l.value !== t.modelValue), s = (e) => {
35
+ r("update:modelValue", e);
32
36
  }, a = () => {
33
- u("cancel"), l.value = r.modelValue;
37
+ r("cancel"), l.value = t.modelValue;
34
38
  };
35
- return (e, s) => (i(), n("div", {
36
- class: m({
39
+ return (e, i) => (n(), m("div", {
40
+ class: v({
37
41
  "top-editArea": !0,
38
42
  "top-editArea-attachedToKeyboard": e.attachToKeyboard
39
43
  })
40
44
  }, [
41
- e.title ? (i(), n("div", R, v(e.title), 1)) : y("", !0),
42
- f("div", {
43
- class: m({
45
+ e.title ? (n(), m("div", U, y(e.title), 1)) : b("", !0),
46
+ h("div", {
47
+ class: v({
44
48
  "top-editArea_form": !0,
45
49
  "top-error": e.isError,
46
- "top-focus": o.value == "focus"
50
+ "top-focus": d.value == "focus"
47
51
  })
48
52
  }, [
49
- h(N, {
53
+ A(P, {
50
54
  modelValue: l.value,
51
- "onUpdate:modelValue": s[0] || (s[0] = (c) => l.value = c),
55
+ "onUpdate:modelValue": i[0] || (i[0] = (c) => l.value = c),
52
56
  name: e.name,
53
57
  placeholder: e.placeholder,
54
58
  rows: e.rows,
@@ -59,33 +63,33 @@ const R = {
59
63
  isError: e.isError,
60
64
  hint: e.hint,
61
65
  class: "top-editArea_element",
62
- onFocus: s[1] || (s[1] = (c) => o.value = "focus"),
63
- onBlur: s[2] || (s[2] = (c) => o.value = ""),
66
+ onFocus: i[1] || (i[1] = (c) => d.value = "focus"),
67
+ onBlur: i[2] || (i[2] = (c) => d.value = ""),
64
68
  onKeyup: [
65
- b(a, ["esc"]),
66
- s[3] || (s[3] = b(A((c) => d(l.value), ["ctrl"]), ["enter"]))
69
+ V(a, ["esc"]),
70
+ i[3] || (i[3] = V(_((c) => s(l.value), ["ctrl"]), ["enter"]))
67
71
  ]
68
72
  }, null, 8, ["modelValue", "name", "placeholder", "rows", "minHeight", "expandable", "disabled", "readonly", "isError", "hint", "onKeyup"]),
69
- f("div", U, [
70
- t.value && (!e.attachToKeyboard || e.modelValue) ? (i(), C(T, {
73
+ h("div", X, [
74
+ o.value && (!e.attachToKeyboard || e.modelValue) ? (n(), E(B, {
71
75
  key: 0,
72
76
  class: "top-editArea_button",
73
77
  color: "theme",
74
78
  icon: e.attachToKeyboard ? "" : "",
75
79
  onClick: a
76
80
  }, {
77
- default: _(() => [
78
- $(v(e.attachToKeyboard ? "" : e.cancelText), 1)
81
+ default: $(() => [
82
+ T(y(e.attachToKeyboard ? "" : e.cancelText), 1)
79
83
  ]),
80
84
  _: 1
81
- }, 8, ["icon"])) : y("", !0),
82
- h(T, {
85
+ }, 8, ["icon"])) : b("", !0),
86
+ A(B, {
83
87
  class: "top-editArea_button",
84
88
  icon: e.attachToKeyboard ? "" : "",
85
- onClick: s[4] || (s[4] = (c) => d(l.value))
89
+ onClick: i[4] || (i[4] = (c) => s(l.value))
86
90
  }, {
87
- default: _(() => [
88
- $(v(e.attachToKeyboard ? "" : e.submitText), 1)
91
+ default: $(() => [
92
+ T(y(e.attachToKeyboard ? "" : e.submitText), 1)
89
93
  ]),
90
94
  _: 1
91
95
  }, 8, ["icon"])
@@ -93,7 +97,7 @@ const R = {
93
97
  ], 2)
94
98
  ], 2));
95
99
  }
96
- }), D = {
100
+ }), F = {
97
101
  "top-editArea": "top-editArea",
98
102
  "top-editArea_title": "top-editArea_title",
99
103
  "top-editArea_form": "top-editArea_form",
@@ -102,9 +106,9 @@ const R = {
102
106
  "top-textarea_textarea": "top-textarea_textarea",
103
107
  "top-editArea_footer": "top-editArea_footer",
104
108
  "top-editArea-attachedToKeyboard": "top-editArea-attachedToKeyboard"
105
- }, F = {
106
- $style: D
107
- }, oe = /* @__PURE__ */ G(X, [["__cssModules", F]]), S = { class: "top-editInput" }, L = /* @__PURE__ */ B({
109
+ }, S = {
110
+ $style: F
111
+ }, te = /* @__PURE__ */ K(D, [["__cssModules", S]]), L = { class: "top-editInput" }, j = /* @__PURE__ */ G({
108
112
  __name: "editInput",
109
113
  props: {
110
114
  modelValue: {},
@@ -112,42 +116,42 @@ const R = {
112
116
  button: {}
113
117
  },
114
118
  emits: ["update:modelValue"],
115
- setup(p, { emit: u }) {
116
- const r = p, o = V(r.modelValue);
117
- w(g(r.modelValue), () => {
118
- o.value = r.modelValue;
119
+ setup(u, { emit: p }) {
120
+ const t = u, r = f(t.modelValue);
121
+ w(k(t.modelValue), () => {
122
+ r.value = t.modelValue;
119
123
  });
120
- const l = () => {
121
- u("update:modelValue", o.value);
124
+ const d = p, l = () => {
125
+ d("update:modelValue", r.value);
122
126
  };
123
- return (t, d) => (i(), n("div", S, [
124
- h(P, K(t.input, {
125
- onKeydownCapture: d[0] || (d[0] = b(A((a) => o.value = t.modelValue, ["stop"]), ["esc"])),
126
- onKeydown: b(A(l, ["stop"]), ["enter"]),
127
- modelValue: o.value,
128
- "onUpdate:modelValue": d[1] || (d[1] = (a) => o.value = a)
127
+ return (o, s) => (n(), m("div", L, [
128
+ A(R, g(o.input, {
129
+ onKeydownCapture: s[0] || (s[0] = V(_((a) => r.value = o.modelValue, ["stop"]), ["esc"])),
130
+ onKeydown: V(_(l, ["stop"]), ["enter"]),
131
+ modelValue: r.value,
132
+ "onUpdate:modelValue": s[1] || (s[1] = (a) => r.value = a)
129
133
  }), null, 16, ["onKeydown", "modelValue"]),
130
- o.value !== t.modelValue ? (i(), C(T, K({
134
+ r.value !== o.modelValue ? (n(), E(B, g({
131
135
  key: 0,
132
136
  icon: "",
133
137
  styling: "soft"
134
- }, t.button, { onClick: l }), {
135
- default: _(() => [
136
- E(t.$slots, "default")
138
+ }, o.button, { onClick: l }), {
139
+ default: $(() => [
140
+ I(o.$slots, "default")
137
141
  ]),
138
142
  _: 3
139
- }, 16)) : y("", !0)
143
+ }, 16)) : b("", !0)
140
144
  ]));
141
145
  }
142
- }), j = {
146
+ }), q = {
143
147
  "top-editInput": "top-editInput",
144
148
  "top-input": "top-input"
145
- }, q = {
146
- $style: j
147
- }, te = /* @__PURE__ */ G(L, [["__cssModules", q]]), J = ["data-top-icon", "onClick"], O = {
149
+ }, J = {
150
+ $style: q
151
+ }, ae = /* @__PURE__ */ K(j, [["__cssModules", J]]), O = ["data-top-icon", "onClick"], Q = {
148
152
  key: 0,
149
153
  class: "top-radioGroup_circle"
150
- }, Q = ["value", "disabled"], W = /* @__PURE__ */ B({
154
+ }, W = ["value", "disabled"], Y = /* @__PURE__ */ G({
151
155
  __name: "radioGroup",
152
156
  props: {
153
157
  modelValue: {},
@@ -157,51 +161,51 @@ const R = {
157
161
  isError: { type: Boolean }
158
162
  },
159
163
  emits: ["update:modelValue"],
160
- setup(p, { emit: u }) {
161
- const r = p, o = k({
164
+ setup(u, { emit: p }) {
165
+ const t = u, r = p, d = C({
162
166
  get() {
163
- return r.modelValue;
167
+ return t.modelValue;
164
168
  },
165
- set(t) {
166
- u("update:modelValue", t);
169
+ set(o) {
170
+ r("update:modelValue", o);
167
171
  }
168
172
  }), l = "radioGroup-" + Math.random();
169
- return (t, d) => (i(), n("div", {
170
- class: m({
173
+ return (o, s) => (n(), m("div", {
174
+ class: v({
171
175
  "top-radioGroup": !0,
172
176
  "top-scrollBarXHidding": !0,
173
- ["top-size_" + t.size]: !!t.size,
174
- "top-error": t.isError
177
+ ["top-size_" + o.size]: !!o.size,
178
+ "top-error": o.isError
175
179
  })
176
180
  }, [
177
- (i(!0), n(I, null, M(t.radiosProps, (a) => (i(), n("label", {
178
- class: m({
179
- "top-radioGroup_item-selected": a.value === o.value,
181
+ (n(!0), m(M, null, H(o.radiosProps, (a) => (n(), m("label", {
182
+ class: v({
183
+ "top-radioGroup_item-selected": a.value === d.value,
180
184
  "top-radioGroup_item": !0,
181
185
  "top-forms-focusable": !0,
182
186
  "top-disabled": a.disabled
183
187
  }),
184
188
  "data-top-icon": a.icon,
185
- onClick: (e) => o.value = a.value
189
+ onClick: (e) => d.value = a.value
186
190
  }, [
187
- $(v(a.title) + " ", 1),
188
- t.showIndicator ? (i(), n("span", O)) : y("", !0),
189
- H(f("input", {
190
- "onUpdate:modelValue": d[0] || (d[0] = (e) => o.value = e),
191
+ T(y(a.title) + " ", 1),
192
+ o.showIndicator ? (n(), m("span", Q)) : b("", !0),
193
+ z(h("input", {
194
+ "onUpdate:modelValue": s[0] || (s[0] = (e) => d.value = e),
191
195
  name: l,
192
196
  type: "radio",
193
- class: m({
197
+ class: v({
194
198
  "top-unvisible": !0
195
199
  }),
196
200
  value: a.value,
197
201
  disabled: a.disabled
198
- }, null, 8, Q), [
199
- [z, o.value]
202
+ }, null, 8, W), [
203
+ [N, d.value]
200
204
  ])
201
- ], 10, J))), 256))
205
+ ], 10, O))), 256))
202
206
  ], 2));
203
207
  }
204
- }), Y = {
208
+ }), Z = {
205
209
  "top-scrollBarXHidding": "top-scrollBarXHidding",
206
210
  "top-radioGroup": "top-radioGroup",
207
211
  "top-radioGroup_item": "top-radioGroup_item",
@@ -209,12 +213,12 @@ const R = {
209
213
  "top-radioGroup_circle": "top-radioGroup_circle",
210
214
  "top-disabled": "top-disabled",
211
215
  "top-error": "top-error"
212
- }, Z = {
213
- $style: Y
214
- }, ae = /* @__PURE__ */ G(W, [["__cssModules", Z]]);
216
+ }, x = {
217
+ $style: Z
218
+ }, le = /* @__PURE__ */ K(Y, [["__cssModules", x]]);
215
219
  export {
216
- oe as EditArea,
217
- te as EditInput,
218
- ae as RadioGroup
220
+ te as EditArea,
221
+ ae as EditInput,
222
+ le as RadioGroup
219
223
  };
220
224
  //# sourceMappingURL=formsExt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"formsExt.js","sources":["../../src/components/formsExt/editArea/editArea.vue","../../src/components/formsExt/editInput/editInput.vue","../../src/components/formsExt/radioGroup/radioGroup.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { ref, toRef, watch, computed } from 'vue';\r\nimport Button from '@/components/forms/button/button.vue';\r\nimport type { Props, Emits } from './editArea';\r\nimport Textarea from '@/components/forms/textarea/textarea.vue';\r\n\r\n// TODO: добавить переменную top-forms-fixed-height и использовать ее при добавлении отступов у страницы\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n\tcancelText: 'Отмена',\r\n\tsubmitText: 'Отправить',\r\n\texpandable: true,\r\n});\r\n\r\nconst emit = defineEmits<Emits>();\r\n\r\nconst state = ref('');\r\n\r\n/**\r\n * Локальное значение modelValue, будет проброшено вверх только в случае отправки формы\r\n */\r\nconst localValue = ref(props.modelValue);\r\n\r\nwatch(toRef(props, 'modelValue'), () => {\r\n\tlocalValue.value = props.modelValue;\r\n});\r\n\r\nconst isChanged = computed(() => localValue.value !== props.modelValue);\r\n\r\nconst submit = (value: string) => {\r\n\temit('update:modelValue', value);\r\n};\r\n\r\nconst cancel = () => {\r\n\temit('cancel');\r\n\r\n\t// сброс введенного значения\r\n\tlocalValue.value = props.modelValue;\r\n};\r\n</script>\r\n\r\n<template>\r\n\t<div\r\n\t\t:class=\"{\r\n\t\t\t'top-editArea': true,\r\n\t\t\t'top-editArea-attachedToKeyboard': attachToKeyboard,\r\n\t\t}\"\r\n\t>\r\n\t\t<div\r\n\t\t\tv-if=\"title\"\r\n\t\t\tclass=\"top-editArea_title\"\r\n\t\t>\r\n\t\t\t{{ title }}\r\n\t\t</div>\r\n\r\n\t\t<div\r\n\t\t\t:class=\"{\r\n\t\t\t\t'top-editArea_form': true,\r\n\t\t\t\t'top-error': isError,\r\n\t\t\t\t'top-focus': state == 'focus',\r\n\t\t\t}\"\r\n\t\t>\r\n\t\t\t<Textarea\r\n\t\t\t\tv-model=\"localValue\"\r\n\t\t\t\t:name=\"name\"\r\n\t\t\t\t:placeholder=\"placeholder\"\r\n\t\t\t\t:rows=\"rows\"\r\n\t\t\t\t:minHeight=\"minHeight\"\r\n\t\t\t\t:expandable=\"expandable\"\r\n\t\t\t\t:disabled=\"disabled\"\r\n\t\t\t\t:readonly=\"readonly\"\r\n\t\t\t\t:isError=\"isError\"\r\n\t\t\t\t:hint=\"hint\"\r\n\t\t\t\tclass=\"top-editArea_element\"\r\n\t\t\t\t@focus=\"state = 'focus'\"\r\n\t\t\t\t@blur=\"state = ''\"\r\n\t\t\t\t@keyup.esc=\"cancel\"\r\n\t\t\t\t@keyup.ctrl.enter=\"submit(localValue)\"\r\n\t\t\t/>\r\n\r\n\t\t\t<div class=\"top-editArea_footer\">\r\n\t\t\t\t<Button\r\n\t\t\t\t\tv-if=\"isChanged && (!attachToKeyboard || modelValue)\"\r\n\t\t\t\t\tclass=\"top-editArea_button\"\r\n\t\t\t\t\tcolor=\"theme\"\r\n\t\t\t\t\t:icon=\"attachToKeyboard ? '': ''\"\r\n\t\t\t\t\t@click=\"cancel\"\r\n\t\t\t\t>\r\n\t\t\t\t\t{{ attachToKeyboard ? '' : cancelText }}\r\n\t\t\t\t</Button>\r\n\r\n\t\t\t\t<Button\r\n\t\t\t\t\tclass=\"top-editArea_button\"\r\n\t\t\t\t\t:icon=\"attachToKeyboard ? '': ''\"\r\n\t\t\t\t\t@click=\"submit(localValue)\"\r\n\t\t\t\t>\r\n\t\t\t\t\t{{ attachToKeyboard ? '' : submitText }}\r\n\t\t\t\t</Button>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</template>\r\n\r\n<style module>\r\n.top-editArea {\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n\tgap: 6px;\r\n}\r\n\r\n.top-editArea_title {\r\n\tfont-size: 12px;\r\n}\r\n\r\n.top-editArea_form {\r\n\tbackground: var(--top-forms-background-color);\r\n\toutline-color: var(--color-theme-75);\r\n\toutline-offset: 0;\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n}\r\n\r\n.top-editArea_form:hover {\r\n\tbackground: var(--top-forms-background-color-hover);\r\n}\r\n\r\n/* textarea в EditArea */\r\n.top-textarea {\r\n\twidth: 100%;\r\n}\r\n\r\n.top-editArea_element.top-textarea_textarea {\r\n\tborder: none;\r\n\toutline: none;\r\n\tanimation: none;\r\n}\r\n\r\n/* footer */\r\n.top-editArea_footer {\r\n\tpadding: var(--top-forms-padding);\r\n\tdisplay: flex;\r\n\tjustify-content: flex-end;\r\n\tgap: var(--top-forms-padding);\r\n}\r\n\r\n/* attachedToKeyboard */\r\n.top-editArea-attachedToKeyboard {\r\n\tbackground: var(--top-forms-background-color);\r\n\tmargin-bottom: env(keyboard-inset-height, 0);\r\n\tposition: fixed;\r\n\tbottom: 0;\r\n\tright: 0;\r\n\tleft: 0;\r\n\tz-index: 2;\r\n\tgap: 0;\r\n}\r\n\r\n.top-editArea-attachedToKeyboard .top-editArea_form {\r\n\tborder-radius: 0;\r\n\tborder: none;\r\n\tborder-top: 1px solid var(--top-forms-border-color);\r\n}\r\n\r\n.top-editArea-attachedToKeyboard .top-editArea_title {\r\n\tborder-top: 1px solid var(--color-line-2-opacity);\r\n\tpadding: var(--top-forms-padding);\r\n}\r\n\r\n.top-editArea-attachedToKeyboard .top-editArea_footer > [data-top-icon] {\r\n\tborder-radius: 100%;\r\n}\r\n</style>","<script setup lang=\"ts\">\r\nimport { ref, toRef, watch } from 'vue';\r\nimport type { Props, Emits } from './editInput';\r\nimport Input from '@/components/forms/input/input.vue';\r\nimport Button from '@/components/forms/button/button.vue';\r\n\r\nconst props = defineProps<Props>();\r\n\r\nconst intermediateValue = ref(props.modelValue);\r\n\r\nwatch(toRef(props.modelValue), () => {\r\n\tintermediateValue.value = props.modelValue;\r\n});\r\n\r\nconst emit = defineEmits<Emits>();\r\n\r\nconst submit = () => {\r\n\temit('update:modelValue', intermediateValue.value);\r\n};\r\n</script>\r\n\r\n<template>\r\n\t<div class=\"top-editInput\">\r\n\t\t<Input\r\n\t\t\t:=\"input\"\r\n\t\t\t@keydown.esc.capture.stop=\"intermediateValue = modelValue\"\r\n\t\t\t@keydown.enter.stop=\"submit\"\r\n\t\t\tv-model=\"intermediateValue\"\r\n\t\t/>\r\n\r\n\t\t<Button\r\n\t\t\tv-if=\"intermediateValue !== modelValue\"\r\n\t\t\ticon=\"\"\r\n\t\t\tstyling=\"soft\"\r\n\t\t\t:=\"button\"\r\n\t\t\t@click=\"submit\"\r\n\t\t>\r\n\t\t\t<!-- @slot Слот Button -->\r\n\t\t\t<slot></slot>\r\n\t\t</Button>\r\n\t</div>\r\n</template>\r\n\r\n<style module>\r\n.top-editInput {\r\n\twidth: 220px;\r\n\tflex-grow: 1;\r\n\tdisplay: flex;\r\n\talign-items: flex-end;\r\n\tgap: var(--top-gap-1);\r\n}\r\n\r\n.top-editInput .top-input {\r\n\twidth: unset;\r\n\tflex-grow: 1;\r\n}\r\n</style>","<script setup lang=\"ts\">\r\nimport { computed } from 'vue';\r\nimport type { Props, Emits } from './radioGroup';\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n\tsize: 's',\r\n});\r\n\r\nconst emit = defineEmits<Emits>();\r\n\r\nconst localValue = computed({\r\n\tget() {\r\n\t\treturn props.modelValue;\r\n\t},\r\n\r\n\tset(value) {\r\n\t\temit('update:modelValue', value);\r\n\t},\r\n});\r\n\r\nconst uid = 'radioGroup-' + Math.random();\r\n</script>\r\n\r\n<template>\r\n\t<div\r\n\t\t:class=\"{\r\n\t\t\t['top-radioGroup']: true,\r\n\t\t\t['top-scrollBarXHidding']: true,\r\n\t\t\t['top-size_' + size]: !!size,\r\n\t\t\t['top-error']: isError,\r\n\t\t}\"\r\n\t>\r\n\t\t<label\r\n\t\t\tv-for=\"item of radiosProps\"\r\n\t\t\t:class=\"{\r\n\t\t\t\t['top-radioGroup_item-selected']: item.value === localValue,\r\n\t\t\t\t['top-radioGroup_item']: true,\r\n\t\t\t\t['top-forms-focusable']: true,\r\n\t\t\t\t['top-disabled']: item.disabled,\r\n\t\t\t}\"\r\n\t\t\t:data-top-icon=\"item.icon\"\r\n\t\t\t@click=\"localValue = item.value\"\r\n\t\t>\r\n\t\t\t{{ item.title }}\r\n\r\n\t\t\t<span\r\n\t\t\t\tv-if=\"showIndicator\"\r\n\t\t\t\tclass=\"top-radioGroup_circle\"\r\n\t\t\t></span>\r\n\r\n\t\t\t<!-- Для нативной навигации -->\r\n\t\t\t<input\r\n\t\t\t\tv-model=\"localValue\"\r\n\t\t\t\t:name=\"uid\"\r\n\t\t\t\ttype=\"radio\"\r\n\t\t\t\t:class=\"{\r\n\t\t\t\t\t['top-unvisible']: true,\r\n\t\t\t\t}\"\r\n\t\t\t\t:value=\"item.value\"\r\n\t\t\t\t:disabled=\"item.disabled\"\r\n\t\t\t/>\r\n\t\t</label>\r\n\t</div>\r\n</template>\r\n\r\n<style module>\r\n@import \"./styles/top-scrollBar.css\";\r\n\r\n.top-radioGroup {\r\n\tuser-select: none;\r\n\tbox-sizing: border-box;\r\n\tborder-radius: 8px;\r\n\tbackground-color: var(--color-theme-50);\r\n\theight: var(--top-forms-base-height);\r\n\tpadding: 2px;\r\n\tgap: 2px;\r\n\tdisplay: flex;\r\n\talign-items: flex-start;\r\n}\r\n\r\n.top-radioGroup_item {\r\n\tcursor: pointer;\r\n\tbox-sizing: border-box;\r\n\tborder-radius: 6px;\r\n\theight: calc(var(--top-forms-base-height) - 4px);\r\n\tpadding: 0 16px;\r\n\tfont-weight: 600;\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tjustify-content: center;\r\n\tflex-grow: 1;\r\n\tgap: 4px;\r\n}\r\n\r\n.top-radioGroup_item:hover {\r\n\tbackground-color: var(--color-theme-25);\r\n\tbox-shadow: 0px 4px 32px 0px rgba(4, 9, 84, 0.10), 0px 0px 4px 0px rgba(4, 9, 84, 0.08);\r\n}\r\n\r\n/* selected */\r\n.top-radioGroup_item-selected {\r\n\tpointer-events: none;\r\n\tbackground-color: var(--color-bg-3);\r\n\tbox-shadow: 0px 4px 32px 0px rgba(4, 9, 84, 0.10), 0px 0px 4px 0px rgba(4, 9, 84, 0.08);\r\n}\r\n\r\n/* circle */\r\n.top-radioGroup_circle {\r\n\tcontent: \"\";\r\n\tbox-sizing: border-box;\r\n\tborder: 1px solid var(--color-line-3-opacity);\r\n\tborder-radius: 50%;\r\n\tpadding: 3px;\r\n\tmargin-left: auto;\r\n\twidth: calc(var(--top-forms-option-height) - 3px * 2);\r\n\theight: calc(var(--top-forms-option-height) - 3px * 2);\r\n}\r\n\r\n.top-radioGroup_item:hover .top-radioGroup_circle:before {\r\n\tborder-color: var(--color-primary);\r\n}\r\n\r\n/* circle selected */\r\n.top-radioGroup_item-selected .top-radioGroup_circle {\r\n\tborder-color: var(--color-primary);\r\n\tborder-width: 5px;\r\n}\r\n\r\n.top-radioGroup_item-selected:hover .top-radioGroup_circle {\r\n\tborder-color: var(--color-primary-2);\r\n}\r\n\r\n/* top-disabled */\r\n.top-radioGroup_item.top-disabled {\r\n\t--top-icon-color: var(--color-text-3);\r\n\r\n\tcolor: var(--color-text-3);\r\n}\r\n\r\n.top-radioGroup_item.top-disabled .top-radioGroup_circle {\r\n\tborder-color: var(--color-theme-400);\r\n\tbackground-color: var(--color-theme-50);\r\n}\r\n\r\n/* top-error */\r\n.top-radioGroup.top-error .top-radioGroup_item:not(.top-disabled) .top-radioGroup_circle {\r\n\tborder-color: var(--color-negative);\r\n}\r\n</style>"],"names":["state","ref","localValue","props","watch","toRef","isChanged","computed","submit","value","emit","cancel","intermediateValue","uid"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;iBAgBMA,IAAQC,EAAI,EAAE,GAKdC,IAAaD,EAAIE,EAAM,UAAU;AAEvC,IAAAC,EAAMC,EAAMF,GAAO,YAAY,GAAG,MAAM;AACvC,MAAAD,EAAW,QAAQC,EAAM;AAAA,IAAA,CACzB;AAED,UAAMG,IAAYC,EAAS,MAAML,EAAW,UAAUC,EAAM,UAAU,GAEhEK,IAAS,CAACC,MAAkB;AACjC,MAAAC,EAAK,qBAAqBD,CAAK;AAAA,IAAA,GAG1BE,IAAS,MAAM;AACpB,MAAAD,EAAK,QAAQ,GAGbR,EAAW,QAAQC,EAAM;AAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBC7BpBS,IAAoBX,EAAIE,EAAM,UAAU;AAE9C,IAAAC,EAAMC,EAAMF,EAAM,UAAU,GAAG,MAAM;AACpC,MAAAS,EAAkB,QAAQT,EAAM;AAAA,IAAA,CAChC;AAID,UAAMK,IAAS,MAAM;AACf,MAAAE,EAAA,qBAAqBE,EAAkB,KAAK;AAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBCP5CV,IAAaK,EAAS;AAAA,MAC3B,MAAM;AACL,eAAOJ,EAAM;AAAA,MACd;AAAA,MAEA,IAAIM,GAAO;AACV,QAAAC,EAAK,qBAAqBD,CAAK;AAAA,MAChC;AAAA,IAAA,CACA,GAEKI,IAAM,gBAAgB,KAAK,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"formsExt.js","sources":["../../src/components/formsExt/editArea/editArea.vue","../../src/components/formsExt/editInput/editInput.vue","../../src/components/formsExt/radioGroup/radioGroup.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref, toRef, watch, computed } from 'vue';\nimport Button from '@/components/forms/button/button.vue';\nimport type { Props, Emits } from './editArea';\nimport Textarea from '@/components/forms/textarea/textarea.vue';\n\n// TODO: добавить переменную top-forms-fixed-height и использовать ее при добавлении отступов у страницы\n\nconst props = withDefaults(defineProps<Props>(), {\n\tcancelText: 'Отмена',\n\tsubmitText: 'Отправить',\n\texpandable: true,\n});\n\nconst emit = defineEmits<Emits>();\n\nconst state = ref('');\n\n/**\n * Локальное значение modelValue, будет проброшено вверх только в случае отправки формы\n */\nconst localValue = ref(props.modelValue);\n\nwatch(toRef(props, 'modelValue'), () => {\n\tlocalValue.value = props.modelValue;\n});\n\nconst isChanged = computed(() => localValue.value !== props.modelValue);\n\nconst submit = (value: string) => {\n\temit('update:modelValue', value);\n};\n\nconst cancel = () => {\n\temit('cancel');\n\n\t// сброс введенного значения\n\tlocalValue.value = props.modelValue;\n};\n</script>\n\n<template>\n\t<div\n\t\t:class=\"{\n\t\t\t'top-editArea': true,\n\t\t\t'top-editArea-attachedToKeyboard': attachToKeyboard,\n\t\t}\"\n\t>\n\t\t<div\n\t\t\tv-if=\"title\"\n\t\t\tclass=\"top-editArea_title\"\n\t\t>\n\t\t\t{{ title }}\n\t\t</div>\n\n\t\t<div\n\t\t\t:class=\"{\n\t\t\t\t'top-editArea_form': true,\n\t\t\t\t'top-error': isError,\n\t\t\t\t'top-focus': state == 'focus',\n\t\t\t}\"\n\t\t>\n\t\t\t<Textarea\n\t\t\t\tv-model=\"localValue\"\n\t\t\t\t:name=\"name\"\n\t\t\t\t:placeholder=\"placeholder\"\n\t\t\t\t:rows=\"rows\"\n\t\t\t\t:minHeight=\"minHeight\"\n\t\t\t\t:expandable=\"expandable\"\n\t\t\t\t:disabled=\"disabled\"\n\t\t\t\t:readonly=\"readonly\"\n\t\t\t\t:isError=\"isError\"\n\t\t\t\t:hint=\"hint\"\n\t\t\t\tclass=\"top-editArea_element\"\n\t\t\t\t@focus=\"state = 'focus'\"\n\t\t\t\t@blur=\"state = ''\"\n\t\t\t\t@keyup.esc=\"cancel\"\n\t\t\t\t@keyup.ctrl.enter=\"submit(localValue)\"\n\t\t\t/>\n\n\t\t\t<div class=\"top-editArea_footer\">\n\t\t\t\t<Button\n\t\t\t\t\tv-if=\"isChanged && (!attachToKeyboard || modelValue)\"\n\t\t\t\t\tclass=\"top-editArea_button\"\n\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t:icon=\"attachToKeyboard ? '': ''\"\n\t\t\t\t\t@click=\"cancel\"\n\t\t\t\t>\n\t\t\t\t\t{{ attachToKeyboard ? '' : cancelText }}\n\t\t\t\t</Button>\n\n\t\t\t\t<Button\n\t\t\t\t\tclass=\"top-editArea_button\"\n\t\t\t\t\t:icon=\"attachToKeyboard ? '': ''\"\n\t\t\t\t\t@click=\"submit(localValue)\"\n\t\t\t\t>\n\t\t\t\t\t{{ attachToKeyboard ? '' : submitText }}\n\t\t\t\t</Button>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<style module>\n.top-editArea {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 6px;\n}\n\n.top-editArea_title {\n\tfont-size: 12px;\n}\n\n.top-editArea_form {\n\tbackground: var(--top-forms-background-color);\n\toutline-color: var(--color-theme-75);\n\toutline-offset: 0;\n\tdisplay: flex;\n\tflex-direction: column;\n}\n\n.top-editArea_form:hover {\n\tbackground: var(--top-forms-background-color-hover);\n}\n\n/* textarea в EditArea */\n.top-textarea {\n\twidth: 100%;\n}\n\n.top-editArea_element.top-textarea_textarea {\n\tborder: none;\n\toutline: none;\n\tanimation: none;\n}\n\n/* footer */\n.top-editArea_footer {\n\tpadding: var(--top-forms-padding);\n\tdisplay: flex;\n\tjustify-content: flex-end;\n\tgap: var(--top-forms-padding);\n}\n\n/* attachedToKeyboard */\n.top-editArea-attachedToKeyboard {\n\tbackground: var(--top-forms-background-color);\n\tmargin-bottom: env(keyboard-inset-height, 0);\n\tposition: fixed;\n\tbottom: 0;\n\tright: 0;\n\tleft: 0;\n\tz-index: 2;\n\tgap: 0;\n}\n\n.top-editArea-attachedToKeyboard .top-editArea_form {\n\tborder-radius: 0;\n\tborder: none;\n\tborder-top: 1px solid var(--top-forms-border-color);\n}\n\n.top-editArea-attachedToKeyboard .top-editArea_title {\n\tborder-top: 1px solid var(--color-line-2-opacity);\n\tpadding: var(--top-forms-padding);\n}\n\n.top-editArea-attachedToKeyboard .top-editArea_footer > [data-top-icon] {\n\tborder-radius: 100%;\n}\n</style>","<script setup lang=\"ts\">\nimport { ref, toRef, watch } from 'vue';\nimport type { Props, Emits } from './editInput';\nimport Input from '@/components/forms/input/input.vue';\nimport Button from '@/components/forms/button/button.vue';\n\nconst props = defineProps<Props>();\n\nconst intermediateValue = ref(props.modelValue);\n\nwatch(toRef(props.modelValue), () => {\n\tintermediateValue.value = props.modelValue;\n});\n\nconst emit = defineEmits<Emits>();\n\nconst submit = () => {\n\temit('update:modelValue', intermediateValue.value);\n};\n</script>\n\n<template>\n\t<div class=\"top-editInput\">\n\t\t<Input\n\t\t\t:=\"input\"\n\t\t\t@keydown.esc.capture.stop=\"intermediateValue = modelValue\"\n\t\t\t@keydown.enter.stop=\"submit\"\n\t\t\tv-model=\"intermediateValue\"\n\t\t/>\n\n\t\t<Button\n\t\t\tv-if=\"intermediateValue !== modelValue\"\n\t\t\ticon=\"\"\n\t\t\tstyling=\"soft\"\n\t\t\t:=\"button\"\n\t\t\t@click=\"submit\"\n\t\t>\n\t\t\t<!-- @slot Слот Button -->\n\t\t\t<slot></slot>\n\t\t</Button>\n\t</div>\n</template>\n\n<style module>\n.top-editInput {\n\twidth: 220px;\n\tflex-grow: 1;\n\tdisplay: flex;\n\talign-items: flex-end;\n\tgap: var(--top-gap-1);\n}\n\n.top-editInput .top-input {\n\twidth: unset;\n\tflex-grow: 1;\n}\n</style>","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport type { Props, Emits } from './radioGroup';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tsize: 's',\n});\n\nconst emit = defineEmits<Emits>();\n\nconst localValue = computed({\n\tget() {\n\t\treturn props.modelValue;\n\t},\n\n\tset(value) {\n\t\temit('update:modelValue', value);\n\t},\n});\n\nconst uid = 'radioGroup-' + Math.random();\n</script>\n\n<template>\n\t<div\n\t\t:class=\"{\n\t\t\t['top-radioGroup']: true,\n\t\t\t['top-scrollBarXHidding']: true,\n\t\t\t['top-size_' + size]: !!size,\n\t\t\t['top-error']: isError,\n\t\t}\"\n\t>\n\t\t<label\n\t\t\tv-for=\"item of radiosProps\"\n\t\t\t:class=\"{\n\t\t\t\t['top-radioGroup_item-selected']: item.value === localValue,\n\t\t\t\t['top-radioGroup_item']: true,\n\t\t\t\t['top-forms-focusable']: true,\n\t\t\t\t['top-disabled']: item.disabled,\n\t\t\t}\"\n\t\t\t:data-top-icon=\"item.icon\"\n\t\t\t@click=\"localValue = item.value\"\n\t\t>\n\t\t\t{{ item.title }}\n\n\t\t\t<span\n\t\t\t\tv-if=\"showIndicator\"\n\t\t\t\tclass=\"top-radioGroup_circle\"\n\t\t\t></span>\n\n\t\t\t<!-- Для нативной навигации -->\n\t\t\t<input\n\t\t\t\tv-model=\"localValue\"\n\t\t\t\t:name=\"uid\"\n\t\t\t\ttype=\"radio\"\n\t\t\t\t:class=\"{\n\t\t\t\t\t['top-unvisible']: true,\n\t\t\t\t}\"\n\t\t\t\t:value=\"item.value\"\n\t\t\t\t:disabled=\"item.disabled\"\n\t\t\t/>\n\t\t</label>\n\t</div>\n</template>\n\n<style module>\n@import \"./styles/top-scrollBar.css\";\n\n.top-radioGroup {\n\tuser-select: none;\n\tbox-sizing: border-box;\n\tborder-radius: 8px;\n\tbackground-color: var(--color-theme-50);\n\theight: var(--top-forms-base-height);\n\tpadding: 2px;\n\tgap: 2px;\n\tdisplay: flex;\n\talign-items: flex-start;\n}\n\n.top-radioGroup_item {\n\tcursor: pointer;\n\tbox-sizing: border-box;\n\tborder-radius: 6px;\n\theight: calc(var(--top-forms-base-height) - 4px);\n\tpadding: 0 16px;\n\tfont-weight: 600;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tflex-grow: 1;\n\tgap: 4px;\n}\n\n.top-radioGroup_item:hover {\n\tbackground-color: var(--color-theme-25);\n\tbox-shadow: 0px 4px 32px 0px rgba(4, 9, 84, 0.10), 0px 0px 4px 0px rgba(4, 9, 84, 0.08);\n}\n\n/* selected */\n.top-radioGroup_item-selected {\n\tpointer-events: none;\n\tbackground-color: var(--color-bg-3);\n\tbox-shadow: 0px 4px 32px 0px rgba(4, 9, 84, 0.10), 0px 0px 4px 0px rgba(4, 9, 84, 0.08);\n}\n\n/* circle */\n.top-radioGroup_circle {\n\tcontent: \"\";\n\tbox-sizing: border-box;\n\tborder: 1px solid var(--color-line-3-opacity);\n\tborder-radius: 50%;\n\tpadding: 3px;\n\tmargin-left: auto;\n\twidth: calc(var(--top-forms-option-height) - 3px * 2);\n\theight: calc(var(--top-forms-option-height) - 3px * 2);\n}\n\n.top-radioGroup_item:hover .top-radioGroup_circle:before {\n\tborder-color: var(--color-primary);\n}\n\n/* circle selected */\n.top-radioGroup_item-selected .top-radioGroup_circle {\n\tborder-color: var(--color-primary);\n\tborder-width: 5px;\n}\n\n.top-radioGroup_item-selected:hover .top-radioGroup_circle {\n\tborder-color: var(--color-primary-2);\n}\n\n/* top-disabled */\n.top-radioGroup_item.top-disabled {\n\t--top-icon-color: var(--color-text-3);\n\n\tcolor: var(--color-text-3);\n}\n\n.top-radioGroup_item.top-disabled .top-radioGroup_circle {\n\tborder-color: var(--color-theme-400);\n\tbackground-color: var(--color-theme-50);\n}\n\n/* top-error */\n.top-radioGroup.top-error .top-radioGroup_item:not(.top-disabled) .top-radioGroup_circle {\n\tborder-color: var(--color-negative);\n}\n</style>"],"names":["props","__props","emit","__emit","state","ref","localValue","watch","toRef","isChanged","computed","submit","value","cancel","intermediateValue","uid"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,UAAAA,IAAAC,GAMAC,IAAAC,GAEAC,IAAAC,EAAA,EAAA,GAKAC,IAAAD,EAAAL,EAAA,UAAA;AAEA,IAAAO,EAAAC,EAAAR,GAAA,YAAA,GAAA,MAAA;AACC,MAAAM,EAAA,QAAAN,EAAA;AAAA,IAAyB,CAAA;AAG1B,UAAAS,IAAAC,EAAA,MAAAJ,EAAA,UAAAN,EAAA,UAAA,GAEAW,IAAA,CAAAC,MAAA;AACC,MAAAV,EAAA,qBAAAU,CAAA;AAAA,IAA+B,GAGhCC,IAAA,MAAA;AACC,MAAAX,EAAA,QAAA,GAGAI,EAAA,QAAAN,EAAA;AAAA,IAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/B1B,UAAAA,IAAAC,GAEAa,IAAAT,EAAAL,EAAA,UAAA;AAEA,IAAAO,EAAAC,EAAAR,EAAA,UAAA,GAAA,MAAA;AACC,MAAAc,EAAA,QAAAd,EAAA;AAAA,IAAgC,CAAA;AAGjC,UAAAE,IAAAC,GAEAQ,IAAA,MAAA;AACC,MAAAT,EAAA,qBAAAY,EAAA,KAAA;AAAA,IAAiD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACblD,UAAAd,IAAAC,GAIAC,IAAAC,GAEAG,IAAAI,EAAA;AAAA,MAA4B,MAAA;AAE1B,eAAAV,EAAA;AAAA,MAAa;AAAA,MACd,IAAAY,GAAA;AAGC,QAAAV,EAAA,qBAAAU,CAAA;AAAA,MAA+B;AAAA,IAChC,CAAA,GAGDG,IAAA,gBAAA,KAAA,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}