@webitel/ui-sdk 26.6.8 → 26.6.10

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 (77) hide show
  1. package/dist/{contacts-D5U72a9m.js → contacts-Ce2Xkpk0.js} +2 -2
  2. package/dist/{index-DS0XRFUa.js → index-CInTafcj.js} +59 -59
  3. package/dist/{index-C7YsoP7b.js → index-CMFdV-0C.js} +1 -1
  4. package/dist/{install-CrhatfOO.js → install-DG3Vb8gz.js} +3792 -3761
  5. package/dist/{isObject-R0qmxf8H.js → isObject-Bbh5eNoL.js} +1 -1
  6. package/dist/ui-sdk.css +1 -1
  7. package/dist/ui-sdk.js +3 -3
  8. package/dist/ui-sdk.umd.cjs +300 -275
  9. package/dist/{useVidstackSrc-6MX1IOwT.js → useVidstackSrc-BDr0pjff.js} +1 -1
  10. package/dist/{vidstack-Bq6c3Bam-rXbDiZtI.js → vidstack-Bq6c3Bam-C0UvIUxs.js} +3 -3
  11. package/dist/{vidstack-D2pY00kU-Ct0S_jAc.js → vidstack-D2pY00kU-BIiell5z.js} +3 -3
  12. package/dist/{vidstack-DDXt6fpN-C0zdr20i.js → vidstack-DDXt6fpN-Cq-OVONO.js} +2 -2
  13. package/dist/{vidstack-D_-9AA6_-CX-CMxXR.js → vidstack-D_-9AA6_-BKMs63U_.js} +2 -2
  14. package/dist/{vidstack-DqAw8m9J-Dy8SZiM-.js → vidstack-DqAw8m9J-DB_jJsQi.js} +1 -1
  15. package/dist/{vidstack-audio-BMocFppz.js → vidstack-audio-CU-RScBZ.js} +2 -2
  16. package/dist/{vidstack-dash-C3BuY7GK.js → vidstack-dash-DABZ0hNt.js} +4 -4
  17. package/dist/{vidstack-google-cast-DlhXEz6F.js → vidstack-google-cast-0ugJx219.js} +4 -4
  18. package/dist/{vidstack-hls-COAkdUyc.js → vidstack-hls-DZ_8ee3w.js} +4 -4
  19. package/dist/{vidstack-video-CbSdoKZV.js → vidstack-video-DMVd9jPV.js} +3 -3
  20. package/dist/{vidstack-vimeo-BEPBgLUA.js → vidstack-vimeo-D8V_lECY.js} +4 -4
  21. package/dist/{vidstack-youtube-o8duODhC.js → vidstack-youtube-ytyeMTdk.js} +3 -3
  22. package/dist/{wt-action-bar-DQ6DVWKK.js → wt-action-bar-C-FhMdoS.js} +1 -1
  23. package/dist/{wt-button-select-BMsKPdsY.js → wt-button-select-DM7H9_Qq.js} +1 -1
  24. package/dist/{wt-call-media-action-DtG2yKhK.js → wt-call-media-action-BktveywS.js} +1 -1
  25. package/dist/{wt-chat-emoji-BEPJGh0L.js → wt-chat-emoji-BVVHukIE.js} +52 -52
  26. package/dist/{wt-confirm-dialog-BWUnZUPw.js → wt-confirm-dialog-BKrqKCNl.js} +1 -1
  27. package/dist/{wt-context-menu-CEGRNk8H.js → wt-context-menu-STccjfZa.js} +1 -1
  28. package/dist/{wt-copy-action-Cvq86rpN.js → wt-copy-action-_slFIJr2.js} +1 -1
  29. package/dist/{wt-datepicker-CG6vrWum.js → wt-datepicker-CeUZ68BR.js} +1 -1
  30. package/dist/wt-display-chip-items-4Qq6XAXb.js +47 -0
  31. package/dist/{wt-dual-panel-ClS2sXTO.js → wt-dual-panel-DD25F1h8.js} +1 -1
  32. package/dist/{wt-dummy-TCGzXQUx.js → wt-dummy-jL-TifzB.js} +1 -1
  33. package/dist/{wt-error-page-Bfzt7YQO.js → wt-error-page-BaAY3DEc.js} +1 -1
  34. package/dist/{wt-expansion-card-D3qmt2Lx.js → wt-expansion-card-Bi55mx83.js} +1 -1
  35. package/dist/{wt-expansion-panel-Cn5r8dhf.js → wt-expansion-panel-SvPaiXAp.js} +1 -1
  36. package/dist/{wt-filters-panel-wrapper-CvVU4E7e.js → wt-filters-panel-wrapper-IHgYrIqi.js} +1 -1
  37. package/dist/{wt-galleria-Bg8QSKz4.js → wt-galleria-0Cu5EceM.js} +1 -1
  38. package/dist/{wt-inline-add-panel-C2e4AeS3.js → wt-inline-add-panel-5mHSPwop.js} +1 -1
  39. package/dist/{wt-navigation-menu-D4E9M79t.js → wt-navigation-menu-BYwOi0sw.js} +1 -1
  40. package/dist/{wt-notifications-bar-Del4fQi_.js → wt-notifications-bar-MHodFa-z.js} +2 -2
  41. package/dist/{wt-pagination-nHRSb5U7.js → wt-pagination-C-LZY5Gf.js} +1 -1
  42. package/dist/wt-player-CiUgE7lO.js +282 -0
  43. package/dist/{wt-screen-recordings-action-BT0ZgQLH.js → wt-screen-recordings-action-wa_Q_P9k.js} +1 -1
  44. package/dist/{wt-search-bar-pqA6zOXa.js → wt-search-bar-BYirzbSP.js} +1 -1
  45. package/dist/{wt-selection-popup-Do59gRfY.js → wt-selection-popup-CPSdKkvP.js} +1 -1
  46. package/dist/{wt-send-message-popup-D3AKRqgu.js → wt-send-message-popup-cry3UeLs.js} +3 -3
  47. package/dist/{wt-start-page-D4nLxaXj.js → wt-start-page-CCR2SYuG.js} +4 -4
  48. package/dist/{wt-status-select-CMwkUaIs.js → wt-status-select-Db32cviK.js} +1 -1
  49. package/dist/{wt-stepper-Fphla9uV.js → wt-stepper-7lg1b2tv.js} +1 -1
  50. package/dist/{wt-table-uCSY0BvC.js → wt-table-CJdVo7t9.js} +10 -10
  51. package/dist/{wt-table-actions-B4inajPG.js → wt-table-actions--i971251.js} +1 -1
  52. package/dist/{wt-table-column-select-DHEaw92W.js → wt-table-column-select-C9UkoHgS.js} +2 -2
  53. package/dist/{wt-tabs-DYV1SQZj.js → wt-tabs-BmJsgBhy.js} +1 -1
  54. package/dist/{wt-tags-input-DNpyTlG_.js → wt-tags-input-qCbdSUeX.js} +12 -12
  55. package/dist/{wt-timepicker-D73auwVG.js → wt-timepicker-ZWMcU2fB.js} +1 -1
  56. package/dist/{wt-tree-BPdJBRh5.js → wt-tree-DLBVmW7r.js} +2 -2
  57. package/dist/{wt-tree-table-BeyiGp9p.js → wt-tree-table-DrsM7KGN.js} +26 -26
  58. package/dist/{wt-type-extension-value-input-Bj7JR6iO.js → wt-type-extension-value-input-PBoLIWfP.js} +3 -3
  59. package/dist/{wt-vidstack-player-CYokOVIB.js → wt-vidstack-player-Xs3Xo-J8.js} +10 -10
  60. package/package.json +1 -1
  61. package/src/assets/icons/sprite/index.ts +10 -0
  62. package/src/assets/icons/sprite/playback-0.50.svg +5 -0
  63. package/src/assets/icons/sprite/playback-0.75.svg +6 -0
  64. package/src/assets/icons/sprite/playback-1.00.svg +3 -0
  65. package/src/assets/icons/sprite/playback-1.50.svg +5 -0
  66. package/src/assets/icons/sprite/playback-1.75.svg +6 -0
  67. package/src/components/_shared/settings-panel/components/speed-settings/speed-settings.vue +162 -0
  68. package/src/components/_shared/settings-panel/settings-panel.vue +62 -0
  69. package/src/components/wt-button/wt-button.vue +4 -4
  70. package/src/components/wt-player/src/components/buttons/play-button.vue +1 -1
  71. package/src/components/wt-player/wt-player.vue +24 -4
  72. package/src/modules/CSVExport/CSVExport.js +6 -1
  73. package/types/components/_shared/settings-panel/components/speed-settings/speed-settings.vue.d.ts +12 -0
  74. package/types/components/_shared/settings-panel/settings-panel.vue.d.ts +15 -0
  75. package/types/components/wt-player/wt-player.vue.d.ts +7 -0
  76. package/dist/wt-display-chip-items-CxRvP3Ey.js +0 -47
  77. package/dist/wt-player-DB0Rpbiz.js +0 -132
@@ -1,5 +1,5 @@
1
1
  import { createElementBlock as s, openBlock as a, normalizeClass as o, createElementVNode as r, Fragment as c, renderList as d, renderSlot as u, normalizeProps as f, guardReactiveProps as h, toDisplayString as v, normalizeStyle as m } from "vue";
2
- import { _ as p } from "./install-CrhatfOO.js";
2
+ import { _ as p } from "./install-DG3Vb8gz.js";
3
3
  const _ = {
4
4
  name: "WtTabs",
5
5
  model: {
@@ -1,7 +1,7 @@
1
- import { d as O } from "./index-DS0XRFUa.js";
2
- import { G as h, _ as E, C as S, M as z, H as A, J as B } from "./install-CrhatfOO.js";
3
- import { resolveComponent as n, resolveDirective as R, createElementBlock as I, openBlock as v, normalizeClass as P, createBlock as p, createCommentVNode as c, createVNode as o, mergeProps as g, withCtx as a, renderSlot as b, normalizeProps as f, guardReactiveProps as $, createTextVNode as d, toDisplayString as r, toHandlers as j, createSlots as q, withDirectives as V, createElementVNode as w, vShow as H, withModifiers as N } from "vue";
4
- const D = {
1
+ import { d as O } from "./index-CInTafcj.js";
2
+ import { K as h, _ as E, C as S, M as z, L as A, N as B } from "./install-DG3Vb8gz.js";
3
+ import { resolveComponent as n, resolveDirective as R, createElementBlock as I, openBlock as v, normalizeClass as N, createBlock as p, createCommentVNode as c, createVNode as o, mergeProps as g, withCtx as a, renderSlot as b, normalizeProps as f, guardReactiveProps as $, createTextVNode as d, toDisplayString as r, toHandlers as P, createSlots as j, withDirectives as V, createElementVNode as w, vShow as q, withModifiers as D } from "vue";
4
+ const H = {
5
5
  props: {
6
6
  // validation rules
7
7
  v: {
@@ -41,7 +41,7 @@ const D = {
41
41
  }, x = {
42
42
  name: "WtTagsInput",
43
43
  mixins: [
44
- D,
44
+ H,
45
45
  A,
46
46
  // taggableMixin is used to add custom select values, see [https://my.webitel.com/browse/WTEL-3181
47
47
  B
@@ -142,10 +142,10 @@ const D = {
142
142
  }
143
143
  }
144
144
  }, F = { class: "multiselect__loading-wrapper" };
145
- function G(i, l, e, J, U, u) {
145
+ function K(i, l, e, U, W, u) {
146
146
  const y = n("wt-label"), m = n("wt-icon-btn"), L = n("wt-chip"), M = n("wt-loader"), _ = n("vue-multiselect"), k = n("wt-message"), T = R("observe-visibility");
147
147
  return v(), I("div", {
148
- class: P([{
148
+ class: N([{
149
149
  "wt-tags-input--disabled": i.disabled,
150
150
  "wt-tags-input--invalid": i.invalid,
151
151
  "wt-tags-input--loading": i.isLoading
@@ -177,7 +177,7 @@ function G(i, l, e, J, U, u) {
177
177
  taggable: e.taggable,
178
178
  "track-by": e.trackBy,
179
179
  class: "wt-tags-input__select"
180
- }, j(i.listeners)), q({
180
+ }, P(i.listeners)), j({
181
181
  tag: a(({ option: s, remove: C }) => [
182
182
  o(L, { class: "multiselect__custom-tag" }, {
183
183
  default: a(() => [
@@ -186,7 +186,7 @@ function G(i, l, e, J, U, u) {
186
186
  color: "on-primary",
187
187
  icon: "close--filled",
188
188
  size: "sm",
189
- onClick: (W) => C(s)
189
+ onClick: (G) => C(s)
190
190
  }, null, 8, ["onClick"])
191
191
  ], void 0, !0),
192
192
  _: 2
@@ -203,14 +203,14 @@ function G(i, l, e, J, U, u) {
203
203
  class: "multiselect__select",
204
204
  color: "active",
205
205
  icon: "arrow-down",
206
- onMousedown: N(s, ["prevent", "stop"])
206
+ onMousedown: D(s, ["prevent", "stop"])
207
207
  }, null, 8, ["disabled", "onMousedown"])
208
208
  ]),
209
209
  beforeList: a(() => [
210
210
  V(w("div", F, [
211
211
  o(M, { size: "sm" })
212
212
  ], 512), [
213
- [H, i.isLoading]
213
+ [q, i.isLoading]
214
214
  ])
215
215
  ]),
216
216
  _: 2
@@ -238,7 +238,7 @@ function G(i, l, e, J, U, u) {
238
238
  }, 8, ["color", "variant", "size"])) : c("", !0)
239
239
  ], 2);
240
240
  }
241
- const Y = /* @__PURE__ */ E(x, [["render", G], ["__scopeId", "data-v-ded5a365"]]);
241
+ const Y = /* @__PURE__ */ E(x, [["render", K], ["__scopeId", "data-v-ded5a365"]]);
242
242
  export {
243
243
  Y as default
244
244
  };
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as R, toRefs as O, computed as t, resolveComponent as w, createElementBlock as j, openBlock as d, normalizeClass as A, unref as o, createBlock as r, createCommentVNode as m, createElementVNode as F, mergeProps as G, withCtx as x, renderSlot as J, normalizeProps as K, guardReactiveProps as Q, createTextVNode as y, toDisplayString as B, nextTick as W } from "vue";
2
- import { B as X, z as Y, C as Z, M as ee, _ as le } from "./install-CrhatfOO.js";
2
+ import { B as X, z as Y, C as Z, M as ee, _ as le } from "./install-DG3Vb8gz.js";
3
3
  const ae = { class: "wt-timepicker__wrapper" }, c = 3600, M = 60, te = /* @__PURE__ */ R({
4
4
  __name: "wt-timepicker",
5
5
  props: {
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as z, computed as L, ref as J, onMounted as K, watch as Q, resolveComponent as I, createElementBlock as v, openBlock as i, Fragment as x, createElementVNode as D, withDirectives as X, renderSlot as T, createBlock as w, createCommentVNode as b, renderList as A, normalizeClass as M, toDisplayString as O, createVNode as Y, withCtx as W, createSlots as U, normalizeProps as q, guardReactiveProps as F, vShow as Z, unref as N } from "vue";
2
- import { d as P } from "./index-DS0XRFUa.js";
3
- import { W as _, _ as R } from "./install-CrhatfOO.js";
2
+ import { d as P } from "./index-CInTafcj.js";
3
+ import { W as _, _ as R } from "./install-DG3Vb8gz.js";
4
4
  const ee = { class: "wt-tree-line" }, te = { class: "wt-tree-line__icon-wrapper" }, ae = { class: "wt-tree-line__label typo-body-1" }, le = /* @__PURE__ */ z({
5
5
  __name: "wt-tree-line",
6
6
  props: {
@@ -1,5 +1,5 @@
1
- import { computed as C, unref as B, defineComponent as z, ref as M, onMounted as D, resolveComponent as L, createElementBlock as d, openBlock as l, Fragment as $, createElementVNode as u, createCommentVNode as b, normalizeClass as T, renderList as m, renderSlot as p, createBlock as x, createTextVNode as U, toDisplayString as H, createSlots as W, withCtx as I, toRef as O, normalizeStyle as Q, withModifiers as j, createVNode as q } from "vue";
2
- import { B as G, P as R, Q as J, _ as F, F as X } from "./install-CrhatfOO.js";
1
+ import { computed as C, unref as B, defineComponent as V, ref as D, onMounted as F, resolveComponent as z, createElementBlock as d, openBlock as l, Fragment as $, createElementVNode as u, createCommentVNode as b, normalizeClass as N, renderList as m, renderSlot as p, createBlock as x, createTextVNode as L, toDisplayString as H, createSlots as W, withCtx as T, toRef as J, normalizeStyle as O, withModifiers as j, createVNode as q } from "vue";
2
+ import { B as G, T as R, U as Q, _ as M, J as X } from "./install-DG3Vb8gz.js";
3
3
  const Y = ({ headers: e }) => {
4
4
  const { t: y } = G();
5
5
  return {
@@ -16,7 +16,7 @@ const Y = ({ headers: e }) => {
16
16
  }, _ = {
17
17
  key: 0,
18
18
  class: "wt-tree-table-td__actions typo-body-1"
19
- }, ee = { class: "wt-tree-table-td__content" }, te = /* @__PURE__ */ z({
19
+ }, ee = { class: "wt-tree-table-td__content" }, te = /* @__PURE__ */ V({
20
20
  __name: "wt-tree-table-row",
21
21
  props: {
22
22
  data: {},
@@ -34,7 +34,7 @@ const Y = ({ headers: e }) => {
34
34
  "expanded-collapse"
35
35
  ],
36
36
  setup(e, { emit: y }) {
37
- const a = e, r = y, h = M(!0), N = C(() => a.nestingLevel), A = C(() => a.nestingLevel + 1), P = C(() => a.selectedElements.includes(a.data)), k = () => {
37
+ const a = e, r = y, h = D(!0), I = C(() => a.nestingLevel), A = C(() => a.nestingLevel + 1), P = C(() => a.selectedElements.includes(a.data)), k = () => {
38
38
  h.value = !1, r("expanded-collapse");
39
39
  }, g = (c, i = 0) => {
40
40
  if (c[a.searchedProp] && i) return !0;
@@ -45,13 +45,13 @@ const Y = ({ headers: e }) => {
45
45
  }
46
46
  return !1;
47
47
  };
48
- return D(() => {
48
+ return F(() => {
49
49
  a.searchedProp && g(a.data) && k();
50
50
  }), (c, i) => {
51
- const f = L("wt-tree-table-row", !0);
51
+ const f = z("wt-tree-table-row", !0);
52
52
  return l(), d($, null, [
53
53
  u("tr", {
54
- class: T([[{ "wt-tree-table-row--alternate": e.rowPosition % 2 }], "wt-tree-table-row"])
54
+ class: N([[{ "wt-tree-table-row--alternate": e.rowPosition % 2 }], "wt-tree-table-row"])
55
55
  }, [
56
56
  (l(!0), d($, null, m(e.dataHeaders, (S, E) => (l(), d("td", {
57
57
  key: E,
@@ -59,7 +59,7 @@ const Y = ({ headers: e }) => {
59
59
  }, [
60
60
  u("div", Z, [
61
61
  E ? b("", !0) : (l(), d("div", K, [
62
- (l(!0), d($, null, m(N.value, (t) => (l(), d("div", {
62
+ (l(!0), d($, null, m(I.value, (t) => (l(), d("div", {
63
63
  key: t,
64
64
  class: "wt-tree-table-row__tree-space"
65
65
  }))), 128)),
@@ -71,7 +71,7 @@ const Y = ({ headers: e }) => {
71
71
  select: t
72
72
  }))
73
73
  }, null, 8, ["selected"])) : b("", !0),
74
- e.data[e.childrenProp] ? (l(), x(J, {
74
+ e.data[e.childrenProp] ? (l(), x(Q, {
75
75
  key: 1,
76
76
  icon: h.value ? "tree-expand" : "tree-collapse",
77
77
  onClick: i[1] || (i[1] = (t) => h.value = !h.value)
@@ -81,7 +81,7 @@ const Y = ({ headers: e }) => {
81
81
  index: e.rowPosition,
82
82
  item: e.data
83
83
  }, () => [
84
- U(H(e.data[S.value]), 1)
84
+ L(H(e.data[S.value]), 1)
85
85
  ], !0)
86
86
  ])
87
87
  ]))), 128)),
@@ -110,7 +110,7 @@ const Y = ({ headers: e }) => {
110
110
  select: t.select
111
111
  }))
112
112
  }, W({
113
- actions: I(({ item: t }) => [
113
+ actions: T(({ item: t }) => [
114
114
  p(c.$slots, "actions", {
115
115
  index: e.rowPosition,
116
116
  item: t
@@ -120,7 +120,7 @@ const Y = ({ headers: e }) => {
120
120
  }, [
121
121
  m(e.dataHeaders, (t, o) => ({
122
122
  name: t.value,
123
- fn: I(({ item: n }) => [
123
+ fn: T(({ item: n }) => [
124
124
  p(c.$slots, t.value, {
125
125
  index: e.rowPosition,
126
126
  item: n
@@ -133,10 +133,10 @@ const Y = ({ headers: e }) => {
133
133
  ], 64);
134
134
  };
135
135
  }
136
- }), ae = /* @__PURE__ */ F(te, [["__scopeId", "data-v-8381ad70"]]), le = { class: "wt-tree-table wt-scrollbar" }, se = { class: "wt-tree-table-wrapper" }, re = { class: "wt-tree-table-head" }, oe = { class: "wt-tree-table-tr wt-tree-table-tr-head" }, ne = ["onClick"], de = { class: "wt-tree-table-th__text" }, ce = {
136
+ }), ae = /* @__PURE__ */ M(te, [["__scopeId", "data-v-8381ad70"]]), le = { class: "wt-tree-table wt-scrollbar" }, se = { class: "wt-tree-table-wrapper" }, re = { class: "wt-tree-table-head" }, oe = { class: "wt-tree-table-tr wt-tree-table-tr-head" }, ne = ["onClick"], de = { class: "wt-tree-table-th__text" }, ce = {
137
137
  key: 0,
138
138
  class: "wt-tree-table-th__actions"
139
- }, ie = { class: "wt-tree-table-th__content" }, ue = { class: "wt-tree-table-body" }, he = /* @__PURE__ */ z({
139
+ }, ie = { class: "wt-tree-table-th__content" }, ue = { class: "wt-tree-table-body" }, he = /* @__PURE__ */ V({
140
140
  __name: "wt-tree-table",
141
141
  props: {
142
142
  headers: {},
@@ -153,7 +153,7 @@ const Y = ({ headers: e }) => {
153
153
  "update:selected"
154
154
  ],
155
155
  setup(e, { emit: y }) {
156
- const a = e, r = y, h = (t) => t[a.childrenProp] && Array.isArray(t[a.childrenProp]), N = (t) => {
156
+ const a = e, r = y, h = (t) => t[a.childrenProp] && Array.isArray(t[a.childrenProp]), I = (t) => {
157
157
  const o = [], n = (s) => {
158
158
  if (s._isSelected)
159
159
  return [
@@ -167,8 +167,8 @@ const Y = ({ headers: e }) => {
167
167
  o.push(s), h(s) && s[a.childrenProp].forEach(n);
168
168
  };
169
169
  return t.forEach(n), o;
170
- }, P = C(() => a.selected || N(a.data)), k = C(() => P.value.length === A(a.data).length && A(a.data).length > 0), { tableHeaders: g } = Y({
171
- headers: O(a, "headers")
170
+ }, P = C(() => a.selected || I(a.data)), k = C(() => P.value.length === A(a.data).length && A(a.data).length > 0), { tableHeaders: g } = Y({
171
+ headers: J(a, "headers")
172
172
  }), c = ({ sort: t }) => a.sortable && t !== void 0, i = (t) => {
173
173
  if (!c(t)) return;
174
174
  const o = X(t.sort);
@@ -194,24 +194,24 @@ const Y = ({ headers: e }) => {
194
194
  ) : t._isSelected = !t._isSelected;
195
195
  };
196
196
  return (t, o) => {
197
- const n = L("wt-icon");
197
+ const n = z("wt-icon");
198
198
  return l(), d("div", le, [
199
199
  u("table", se, [
200
200
  u("thead", re, [
201
201
  u("tr", oe, [
202
202
  (l(!0), d($, null, m(B(g), (s, v) => (l(), d("th", {
203
203
  key: String(v) + s?.sort,
204
- class: T([[
204
+ class: N([[
205
205
  {
206
206
  "wt-tree-table-th--sortable": c(s)
207
207
  },
208
208
  `wt-tree-table-th--sort-${s.sort}`
209
209
  ], "wt-tree-table-th typo-body-1"]),
210
- style: Q(s.width ? `min-width:${s.width}` : ""),
210
+ style: O(s.width ? `min-width:${s.width}` : ""),
211
211
  onClick: (w) => i(s)
212
212
  }, [
213
213
  u("div", {
214
- class: T(["wt-tree-table-th__content", { "wt-tree-table-th__content--selectable": v === 0 && e.selectable }])
214
+ class: N(["wt-tree-table-th__content", { "wt-tree-table-th__content--selectable": v === 0 && e.selectable }])
215
215
  }, [
216
216
  v === 0 && e.selectable ? (l(), d("div", {
217
217
  key: 0,
@@ -257,19 +257,19 @@ const Y = ({ headers: e }) => {
257
257
  "searched-prop": e.searchedProp,
258
258
  "onUpdate:selected": o[1] || (o[1] = (w) => E(w.data, w.select))
259
259
  }, W({
260
- actions: I(({ item: w }) => [
260
+ actions: T(({ item: w }) => [
261
261
  p(t.$slots, "actions", { item: w }, void 0, !0)
262
262
  ]),
263
263
  _: 2
264
264
  }, [
265
265
  m(B(g), (w, we) => ({
266
266
  name: w.value,
267
- fn: I(({ item: V }) => [
267
+ fn: T(({ item: U }) => [
268
268
  p(t.$slots, w.value, {
269
269
  index: v,
270
- item: V
270
+ item: U
271
271
  }, () => [
272
- U(H(V[w.value]), 1)
272
+ L(H(U[w.value]), 1)
273
273
  ], !0)
274
274
  ])
275
275
  }))
@@ -279,7 +279,7 @@ const Y = ({ headers: e }) => {
279
279
  ]);
280
280
  };
281
281
  }
282
- }), ve = /* @__PURE__ */ F(he, [["__scopeId", "data-v-721c9bc6"]]);
282
+ }), ve = /* @__PURE__ */ M(he, [["__scopeId", "data-v-721c9bc6"]]);
283
283
  export {
284
284
  ve as default
285
285
  };
@@ -1,9 +1,9 @@
1
1
  import { defineComponent as q, mergeModels as I, useModel as T, computed as r, resolveComponent as h, createBlock as P, renderSlot as m, createCommentVNode as $, unref as l, openBlock as S, mergeProps as s, createVNode as c } from "vue";
2
- import { S as x } from "./contacts-D5U72a9m.js";
3
- import "./index-C7YsoP7b.js";
2
+ import { S as x } from "./contacts-Ce2Xkpk0.js";
3
+ import "./index-CMFdV-0C.js";
4
4
  import "lodash-es";
5
5
  import "@aliasedDeps/api-services/axios";
6
- import { B as N, ah as W, ai as V, aj as E } from "./install-CrhatfOO.js";
6
+ import { B as N, ai as W, aj as V, ak as E } from "./install-DG3Vb8gz.js";
7
7
  const a = {
8
8
  Text: "string",
9
9
  Number: "int32",
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as ut, inject as se, createElementBlock as yt, openBlock as U, normalizeClass as ie, unref as et, createElementVNode as ht, renderSlot as ft, createVNode as W, computed as Hs, onMounted as Ii, onBeforeUnmount as Vi, createBlock as zt, createCommentVNode as Wt, toDisplayString as Di, createSlots as Fs, withCtx as jt, resolveComponent as Ri, useTemplateRef as Oi, ref as gs, provide as Ni, toRefs as Hi } from "vue";
2
- import { a as q, c as bt, i as G, b as Ne, d as S, e as lt, f as He, l as N, s as ae, g as Bs, E as Gs, D as L, h as z, o as P, j as Fi, k as f, m as l, n as M, p as Us, q as Bi, r as pe, t as j, V as st, v as w, C as b, S as vt, w as Ot, x as p, y as dt, z as Y, I as Ks, A as Gi, B as Ui, F as at, G as We, H as Qs, J as ys, K as je, L as zs, M as Ct, N as Ye, O as ge, P as Ki, Q as At, R as Qi, U as zi, W as Wi, X as ji, Y as Yi, Z as Xi, _ as Ji, $ as Zi, a0 as ta, a1 as Ws, a2 as T, a3 as I, a4 as ye, a5 as ea, a6 as Nt, a7 as K, a8 as sa, a9 as ia, aa, ab as na, ac as bs, ad as ra, ae as oa, af as v, ag as y, ah as ha, ai as la, T as da, u as ca } from "./useVidstackSrc-6MX1IOwT.js";
3
- import { T as ua, U as pa, V as ma, X as fa, _ as $t, Q as be, C as Q, Y as ga } from "./install-CrhatfOO.js";
2
+ import { a as q, c as bt, i as G, b as Ne, d as S, e as lt, f as He, l as N, s as ae, g as Bs, E as Gs, D as L, h as z, o as P, j as Fi, k as f, m as l, n as M, p as Us, q as Bi, r as pe, t as j, V as st, v as w, C as b, S as vt, w as Ot, x as p, y as dt, z as Y, I as Ks, A as Gi, B as Ui, F as at, G as We, H as Qs, J as ys, K as je, L as zs, M as Ct, N as Ye, O as ge, P as Ki, Q as At, R as Qi, U as zi, W as Wi, X as ji, Y as Yi, Z as Xi, _ as Ji, $ as Zi, a0 as ta, a1 as Ws, a2 as T, a3 as I, a4 as ye, a5 as ea, a6 as Nt, a7 as K, a8 as sa, a9 as ia, aa, ab as na, ac as bs, ad as ra, ae as oa, af as v, ag as y, ah as ha, ai as la, T as da, u as ca } from "./useVidstackSrc-BDr0pjff.js";
3
+ import { X as ua, Y as pa, Z as ma, $ as fa, _ as $t, U as be, C as Q, a0 as ga } from "./install-DG3Vb8gz.js";
4
4
  import { _ as ya } from "./wt-slider.vue_vue_type_script_setup_true_lang-DlaRDHxo.js";
5
5
  const js = bt();
6
6
  function $() {
@@ -2070,7 +2070,7 @@ class pn {
2070
2070
  return "audio";
2071
2071
  }
2072
2072
  async load(t) {
2073
- return new (await import("./vidstack-audio-BMocFppz.js")).AudioProvider(this.target, t);
2073
+ return new (await import("./vidstack-audio-CU-RScBZ.js")).AudioProvider(this.target, t);
2074
2074
  }
2075
2075
  }
2076
2076
  class ts {
@@ -2083,7 +2083,7 @@ class ts {
2083
2083
  return "video";
2084
2084
  }
2085
2085
  async load(t) {
2086
- return new (await import("./vidstack-video-CbSdoKZV.js")).VideoProvider(this.target, t);
2086
+ return new (await import("./vidstack-video-DMVd9jPV.js")).VideoProvider(this.target, t);
2087
2087
  }
2088
2088
  }
2089
2089
  class es extends ts {
@@ -2093,7 +2093,7 @@ class es extends ts {
2093
2093
  return es.supported && We(t);
2094
2094
  }
2095
2095
  async load(t) {
2096
- return new (await import("./vidstack-hls-COAkdUyc.js")).HLSProvider(this.target, t);
2096
+ return new (await import("./vidstack-hls-DZ_8ee3w.js")).HLSProvider(this.target, t);
2097
2097
  }
2098
2098
  }
2099
2099
  class ss extends ts {
@@ -2103,7 +2103,7 @@ class ss extends ts {
2103
2103
  return ss.supported && je(t);
2104
2104
  }
2105
2105
  async load(t) {
2106
- return new (await import("./vidstack-dash-C3BuY7GK.js")).DASHProvider(this.target, t);
2106
+ return new (await import("./vidstack-dash-DABZ0hNt.js")).DASHProvider(this.target, t);
2107
2107
  }
2108
2108
  }
2109
2109
  class mn {
@@ -2125,7 +2125,7 @@ class mn {
2125
2125
  return "video";
2126
2126
  }
2127
2127
  async load(t) {
2128
- return new (await import("./vidstack-vimeo-BEPBgLUA.js")).VimeoProvider(this.target, t);
2128
+ return new (await import("./vidstack-vimeo-D8V_lECY.js")).VimeoProvider(this.target, t);
2129
2129
  }
2130
2130
  async loadPoster(t, e, s) {
2131
2131
  const { resolveVimeoVideoId: i, getVimeoVideoInfo: n } = await import("./vidstack-krOAtKMi-C50BTxmn.js");
@@ -2157,7 +2157,7 @@ class fn {
2157
2157
  return "video";
2158
2158
  }
2159
2159
  async load(t) {
2160
- return new (await import("./vidstack-youtube-o8duODhC.js")).YouTubeProvider(this.target, t);
2160
+ return new (await import("./vidstack-youtube-ytyeMTdk.js")).YouTubeProvider(this.target, t);
2161
2161
  }
2162
2162
  async loadPoster(t, e, s) {
2163
2163
  const { findYouTubePoster: i, resolveYouTubeVideoId: n } = await import("./vidstack-Dm1xEU9Q-CXHNvShT.js"), r = S(t.src) && n(t.src);
@@ -2625,7 +2625,7 @@ class $n extends Mt {
2625
2625
  throw i.code = "CAST_NOT_AVAILABLE", i;
2626
2626
  }
2627
2627
  if (ne("https://www.gstatic.com"), !this.#v) {
2628
- const i = await import("./vidstack-D2pY00kU-Ct0S_jAc.js").then((n) => n.v);
2628
+ const i = await import("./vidstack-D2pY00kU-BIiell5z.js").then((n) => n.v);
2629
2629
  this.#v = new i.GoogleCastLoader();
2630
2630
  }
2631
2631
  await this.#v.prompt(this.#s), t && this.#e.queue.enqueue("media-google-cast-request", t);
@@ -8022,7 +8022,7 @@ class qr extends v(HTMLElement, li) {
8022
8022
  if (this.#e?.classList.contains("vds-google-cast"))
8023
8023
  return this.#e;
8024
8024
  const t = document.createElement("div");
8025
- return t.classList.add("vds-google-cast"), import("./vidstack-D_-9AA6_-CX-CMxXR.js").then(({ insertContent: e }) => {
8025
+ return t.classList.add("vds-google-cast"), import("./vidstack-D_-9AA6_-BKMs63U_.js").then(({ insertContent: e }) => {
8026
8026
  e(t, this.#t.$state);
8027
8027
  }), t;
8028
8028
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webitel/ui-sdk",
3
- "version": "26.6.8",
3
+ "version": "26.6.10",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "dev": "npm run docs:dev",
@@ -144,6 +144,11 @@ import pause from './pause.svg?raw';
144
144
  import pauseFilled from './pause--filled.svg?raw';
145
145
  import pin from './pin.svg?raw';
146
146
  import play from './play.svg?raw';
147
+ import playback050 from './playback-0.50.svg?raw';
148
+ import playback075 from './playback-0.75.svg?raw';
149
+ import playback100 from './playback-1.00.svg?raw';
150
+ import playback150 from './playback-1.50.svg?raw';
151
+ import playback175 from './playback-1.75.svg?raw';
147
152
  import playerEnterFullscreen from './player-enter-fullscreen.svg?raw';
148
153
  import playerExitFullscreen from './player-exit-fullscreen.svg?raw';
149
154
  import plus from './plus.svg?raw';
@@ -378,6 +383,11 @@ export default objCamelToKebab({
378
383
  pause,
379
384
  'pause--filled': pauseFilled,
380
385
  play,
386
+ 'playback-0.50': playback050,
387
+ 'playback-0.75': playback075,
388
+ 'playback-1.00': playback100,
389
+ 'playback-1.50': playback150,
390
+ 'playback-1.75': playback175,
381
391
  table,
382
392
  treeExpand,
383
393
  prompter,
@@ -0,0 +1,5 @@
1
+ <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
2
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M7.59678 7C8.1907 7 8.72217 7.19433 9.18882 7.58322C9.65506 7.97196 10.0226 8.54093 10.2911 9.29025C10.5668 10.0309 10.7054 10.9344 10.7054 11.999C10.7054 13.0638 10.5668 13.9714 10.2911 14.7214C10.0225 15.462 9.65541 16.0279 9.18882 16.4168C8.72217 16.8057 8.1907 17 7.59678 17C7.01019 16.9999 6.47976 16.8055 6.00622 16.4168C5.53957 16.0279 5.1726 15.4621 4.90393 14.7214C4.63526 13.9714 4.5 13.0638 4.5 11.999C4.50003 10.9344 4.63528 10.0309 4.90393 9.29025C5.1725 8.54091 5.53995 7.97195 6.00622 7.58322C6.47976 7.19448 7.01019 7.00015 7.59678 7ZM7.59678 8.56946C7.26473 8.56963 6.9675 8.69359 6.70607 8.94342C6.4516 9.18417 6.25084 9.56002 6.10239 10.0692C5.96103 10.5691 5.88936 11.2122 5.88933 11.999C5.88933 12.7768 5.96099 13.4216 6.10239 13.9308C6.25074 14.4393 6.45194 14.8183 6.70607 15.0682C6.9675 15.3088 7.26473 15.4304 7.59678 15.4305C7.94323 15.4305 8.24479 15.3089 8.49933 15.0682C8.75349 14.8183 8.95134 14.4393 9.09264 13.9308C9.24112 13.4216 9.31606 12.7768 9.31606 11.999C9.31604 11.2123 9.24106 10.5691 9.09264 10.0692C8.95125 9.55998 8.75382 9.18416 8.49933 8.94342C8.24479 8.69342 7.94323 8.56946 7.59678 8.56946Z"/>
3
+ <path d="M19.0651 8.65278H15.8736L15.7108 10.9023H16.424C17.1593 10.9023 17.7496 11.0326 18.1951 11.2918C18.6474 11.5417 18.9769 11.8924 19.182 12.3459C19.3941 12.7903 19.5001 13.3006 19.5001 13.8746C19.5 14.4394 19.394 14.9584 19.182 15.4305C18.9698 15.9026 18.6437 16.2809 18.2054 16.5679C17.7742 16.8549 17.2261 17 16.5616 17C16.0386 16.9999 15.5261 16.9018 15.0243 16.7074C14.5294 16.5037 14.1119 16.2261 13.7726 15.8742L14.3555 14.4714C14.6242 14.7585 14.9503 14.9911 15.3321 15.167C15.7208 15.3428 16.1239 15.4305 16.5409 15.4305C17.0286 15.4305 17.4104 15.2958 17.6861 15.0275C17.9688 14.7591 18.1106 14.3978 18.1107 13.9444C18.1107 13.6388 18.0504 13.3698 17.9302 13.1383C17.8171 12.9069 17.6117 12.7317 17.3147 12.6113C17.0248 12.491 16.6252 12.4292 16.1162 12.4292H14.3245L14.7062 7.13757H19.0651V8.65278Z"/>
4
+ <path d="M12.3389 14.6516C12.5791 14.6516 12.7847 14.7586 12.9544 14.9713C13.124 15.1749 13.2088 15.4529 13.2089 15.8045C13.2089 16.1378 13.124 16.4155 12.9544 16.6377C12.7847 16.8506 12.5793 16.9574 12.3389 16.9574C12.0988 16.9572 11.8943 16.8504 11.7248 16.6377C11.5552 16.4155 11.4703 16.1378 11.4703 15.8045C11.4704 15.4529 11.5552 15.1749 11.7248 14.9713C11.8943 14.7588 12.0989 14.6518 12.3389 14.6516Z"/>
5
+ </svg>
@@ -0,0 +1,6 @@
1
+ <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
2
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M4.22726 7C4.8459 7 5.39848 7.1942 5.88463 7.58268C6.37095 7.97156 6.75557 8.54169 7.03557 9.29167C7.32286 10.0323 7.46526 10.9354 7.46526 12C7.46525 13.0643 7.32273 13.9716 7.03557 14.7214C6.75557 15.4621 6.37095 16.0268 5.88463 16.4157C5.39834 16.8045 4.84614 17 4.22726 17C3.61573 17 3.06354 16.8045 2.56989 16.4157C2.08359 16.0268 1.70048 15.4621 1.42048 14.7214C1.14057 13.9715 1.00002 13.0645 1 12C1 10.9352 1.14048 10.0324 1.42048 9.29167C1.70048 8.54174 2.08359 7.97154 2.56989 7.58268C3.06341 7.19412 3.61596 7.00003 4.22726 7ZM4.22726 8.56901C3.881 8.56905 3.57142 8.69503 3.29883 8.94499C3.03374 9.18573 2.82431 9.56066 2.66964 10.0697C2.52229 10.5696 2.44866 11.213 2.44866 12C2.44867 12.7777 2.52228 13.4211 2.66964 13.9303C2.82437 14.4395 3.0336 14.8197 3.29883 15.0697C3.57139 15.3103 3.88107 15.431 4.22726 15.431C4.58809 15.431 4.90128 15.3101 5.16643 15.0697C5.4317 14.8197 5.63904 14.4396 5.78641 13.9303C5.94111 13.4212 6.01812 12.7776 6.01814 12C6.01814 11.2132 5.94105 10.5696 5.78641 10.0697C5.63904 9.56043 5.43169 9.18572 5.16643 8.94499C4.90117 8.695 4.58832 8.56901 4.22726 8.56901Z"/>
3
+ <path d="M22.5473 8.65365H19.2218L19.053 10.903H19.7942C20.5604 10.903 21.1762 11.0329 21.6403 11.292C22.1119 11.542 22.4548 11.8946 22.6685 12.3483C22.8895 12.7927 23 13.3027 23 13.8766C22.9999 14.441 22.8894 14.9591 22.6685 15.431C22.4475 15.9032 22.1079 16.2833 21.6511 16.5703C21.2017 16.8572 20.6309 17 19.9385 17C19.3934 17 18.8594 16.903 18.3364 16.7087C17.8206 16.505 17.3856 16.2271 17.0319 15.8753L17.6396 14.4723C17.9195 14.7592 18.2579 14.9914 18.6556 15.1673C19.0608 15.3432 19.4822 15.431 19.917 15.431C20.4248 15.4309 20.8222 15.297 21.1094 15.029C21.4041 14.7605 21.5513 14.3987 21.5513 13.945C21.5513 13.6396 21.4893 13.3707 21.3641 13.1393C21.2462 12.908 21.032 12.7323 20.7227 12.612C20.4206 12.4917 20.0038 12.4313 19.4735 12.4313H17.6059L18.0033 7.13997H22.5473V8.65365Z"/>
4
+ <path d="M9.1702 14.653C9.42024 14.6532 9.63353 14.7596 9.81013 14.972C9.98691 15.1756 10.0755 15.4537 10.0756 15.8053C10.0756 16.1387 9.98697 16.4165 9.81013 16.6387C9.63345 16.8514 9.42041 16.9575 9.1702 16.9577C8.91967 16.9577 8.70558 16.8516 8.52874 16.6387C8.35192 16.4165 8.26325 16.1386 8.26325 15.8053C8.26332 15.4537 8.35196 15.1756 8.52874 14.972C8.70552 14.7593 8.91983 14.653 9.1702 14.653Z"/>
5
+ <path d="M16.6805 8.34766L13.6727 16.8617H12.1366L15.0462 8.66829H12.0046V10.3203H10.6664V7.13997H16.6805V8.34766Z"/>
6
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M13.2075 16.8624H11.7075V8.6528H10V7.13953H13.2075V16.8624Z"/>
3
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M10.9492 14.6543C11.2216 14.6543 11.4542 14.759 11.6465 14.9717C11.8387 15.1752 11.9354 15.4533 11.9355 15.8047C11.9355 16.1379 11.8388 16.4175 11.6465 16.6396C11.4542 16.8523 11.2215 16.957 10.9492 16.957C10.6768 16.957 10.4433 16.8524 10.251 16.6396C10.0587 16.4175 9.96289 16.1379 9.96289 15.8047C9.96305 15.4534 10.0589 15.1752 10.251 14.9717C10.4433 14.7588 10.6768 14.6543 10.9492 14.6543Z"/>
3
+ <path d="M18.5156 8.51367H15.1904L15.0215 10.7627H15.7627C16.5287 10.7627 17.1443 10.8933 17.6084 11.1523C18.0799 11.4023 18.423 11.7545 18.6367 12.208C18.8577 12.6523 18.9687 13.1625 18.9688 13.7363C18.9686 14.3007 18.8576 14.8191 18.6367 15.291C18.4157 15.7632 18.076 16.1436 17.6191 16.4307C17.1699 16.7173 16.5992 16.8603 15.9072 16.8604C15.3621 16.8604 14.8277 16.7627 14.3047 16.5684C13.789 16.3647 13.3537 16.0871 13 15.7354L13.6084 14.332C13.8882 14.6189 14.2264 14.8515 14.624 15.0273C15.0293 15.2032 15.451 15.291 15.8857 15.291C16.3933 15.2908 16.791 15.1567 17.0781 14.8887C17.3726 14.6202 17.5195 14.2582 17.5195 13.8047C17.5194 13.4994 17.4572 13.2303 17.332 12.999C17.2141 12.768 17.0004 12.5919 16.6914 12.4717C16.3893 12.3514 15.9717 12.291 15.4414 12.291H13.5742L13.9717 7H18.5156V8.51367Z"/>
4
+ <path d="M8.34277 16.7188H6.7793V8.5127H5V7H8.34277V16.7188Z"/>
5
+ </svg>
@@ -0,0 +1,6 @@
1
+ <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M7.98145 14.6553C8.25518 14.6554 8.48935 14.7608 8.68262 14.9736C8.87569 15.1771 8.9725 15.4553 8.97266 15.8066C8.97263 16.1399 8.87593 16.4194 8.68262 16.6416C8.48937 16.8543 8.25513 16.9589 7.98145 16.959C7.70756 16.959 7.47265 16.8544 7.2793 16.6416C7.086 16.4194 6.98929 16.1398 6.98926 15.8066C6.98942 15.4554 7.08625 15.1771 7.2793 14.9736C7.47267 14.7607 7.70752 14.6553 7.98145 14.6553Z"/>
3
+ <path d="M5.36035 16.7363H3.78906V8.52832H2V7.01562H5.36035V16.7363Z"/>
4
+ <path d="M21.8809 8.51367H18.5557L18.3867 10.7627H19.1279C19.894 10.7627 20.5095 10.8933 20.9736 11.1523C21.4451 11.4023 21.7883 11.7545 22.002 12.208C22.2229 12.6523 22.3339 13.1625 22.334 13.7363C22.3339 14.3007 22.2228 14.8191 22.002 15.291C21.7809 15.7632 21.4412 16.1436 20.9844 16.4307C20.5351 16.7173 19.9645 16.8603 19.2725 16.8604C18.7274 16.8604 18.1929 16.7627 17.6699 16.5684C17.1542 16.3647 16.7189 16.0871 16.3652 15.7354L16.9736 14.332C17.2535 14.6189 17.5916 14.8515 17.9893 15.0273C18.3945 15.2032 18.8163 15.291 19.251 15.291C19.7585 15.2908 20.1562 15.1567 20.4434 14.8887C20.7378 14.6202 20.8848 14.2582 20.8848 13.8047C20.8847 13.4994 20.8224 13.2303 20.6973 12.999C20.5793 12.768 20.3656 12.5919 20.0566 12.4717C19.7546 12.3514 19.3369 12.291 18.8066 12.291H16.9395L17.3369 7H21.8809V8.51367Z"/>
5
+ <path d="M16.0137 8.20801L13.0059 16.7217H11.4697L14.3799 8.52832H11.3379V10.1807H10V7H16.0137V8.20801Z"/>
6
+ </svg>
@@ -0,0 +1,162 @@
1
+ <template>
2
+ <div class="speed-settings">
3
+ <div class="speed-settings__controls">
4
+ <wt-button
5
+ :size="ComponentSize.SM"
6
+ :disabled="modelValue <= minSpeed"
7
+ class="speed-settings__step-button"
8
+ variant="outlined"
9
+ color="secondary"
10
+ @click="handleDecrease"
11
+ >
12
+ <template #default>
13
+ <wt-icon icon="minus" :size="ComponentSize.SM" />
14
+ </template>
15
+ </wt-button>
16
+
17
+ <span class="speed-settings__label">{{ formattedSpeed }}</span>
18
+
19
+ <wt-button
20
+ :size="ComponentSize.SM"
21
+ :disabled="modelValue >= maxSpeed"
22
+ class="speed-settings__step-button"
23
+ variant="outlined"
24
+ color="secondary"
25
+ @click="handleIncrease"
26
+ >
27
+ <template #default>
28
+ <wt-icon icon="plus" :size="ComponentSize.SM" />
29
+ </template>
30
+ </wt-button>
31
+ </div>
32
+
33
+ <wt-slider
34
+ class="speed-settings__slider"
35
+ :model-value="modelValue"
36
+ :min="minSpeed"
37
+ :max="maxSpeed"
38
+ :step="speedStep"
39
+ @update:model-value="$emit('update:modelValue', $event)"
40
+ />
41
+
42
+ <div class="speed-settings__presets">
43
+ <wt-button
44
+ v-for="speedPreset in speedPresets"
45
+ :key="speedPreset.speed"
46
+ :size="ComponentSize.SM"
47
+ variant="outlined"
48
+ class="speed-settings__preset-button"
49
+ color="secondary"
50
+ @click="$emit('update:modelValue', speedPreset.speed)"
51
+ >
52
+ <template #default>
53
+ <wt-icon :icon="speedPreset.icon" :size="ComponentSize.SM" />
54
+ </template>
55
+ </wt-button>
56
+ </div>
57
+ </div>
58
+ </template>
59
+
60
+ <script setup lang="ts">
61
+ import { computed } from 'vue';
62
+
63
+ import { WtButton, WtIcon, WtSlider } from '../../../../../components';
64
+ import { ComponentSize } from '../../../../../enums';
65
+
66
+ interface Props {
67
+ modelValue?: number;
68
+ }
69
+
70
+ const props = withDefaults(defineProps<Props>(), {
71
+ modelValue: 1,
72
+ });
73
+
74
+ const emit = defineEmits<{
75
+ 'update:modelValue': [
76
+ value: number,
77
+ ];
78
+ }>();
79
+
80
+ const minSpeed = 0.25;
81
+ const maxSpeed = 3;
82
+ const speedStep = 0.25;
83
+ const speedPresets = [
84
+ {
85
+ speed: 0.5,
86
+ icon: 'playback-0.50',
87
+ },
88
+ {
89
+ speed: 0.75,
90
+ icon: 'playback-0.75',
91
+ },
92
+ {
93
+ speed: 1,
94
+ icon: 'playback-1.00',
95
+ },
96
+ {
97
+ speed: 1.5,
98
+ icon: 'playback-1.50',
99
+ },
100
+ {
101
+ speed: 1.75,
102
+ icon: 'playback-1.75',
103
+ },
104
+ ];
105
+
106
+ const formattedSpeed = computed(() => `${props.modelValue.toFixed(2)}x`);
107
+
108
+ function handleDecrease() {
109
+ const decreasedSpeed = parseFloat((props.modelValue - speedStep).toFixed(2));
110
+ const clampedSpeed = Math.max(minSpeed, decreasedSpeed);
111
+ emit('update:modelValue', clampedSpeed);
112
+ }
113
+
114
+ function handleIncrease() {
115
+ const increasedSpeed = parseFloat((props.modelValue + speedStep).toFixed(2));
116
+ const clampedSpeed = Math.min(maxSpeed, increasedSpeed);
117
+ emit('update:modelValue', clampedSpeed);
118
+ }
119
+ </script>
120
+
121
+ <style scoped>
122
+ .speed-settings {
123
+ display: flex;
124
+ flex-direction: column;
125
+ gap: var(--spacing-sm);
126
+ padding: var(--spacing-sm);
127
+ min-width: 192px;
128
+ }
129
+ .speed-settings__step-button {
130
+ min-width: 0;
131
+ padding: var(--spacing-xs);
132
+ }
133
+
134
+ .speed-settings__controls {
135
+ display: flex;
136
+ align-items: center;
137
+ justify-content: space-between;
138
+ gap: var(--spacing-sm);
139
+ }
140
+
141
+ .speed-settings__label {
142
+ font-weight: 600;
143
+ font-size: var(--font-size-lg, 1rem);
144
+ text-align: center;
145
+ flex: 1;
146
+ }
147
+
148
+ .speed-settings__slider {
149
+ width: 100%;
150
+ }
151
+
152
+ .speed-settings__presets {
153
+ display: flex;
154
+ justify-content: space-between;
155
+ gap: var(--spacing-xs);
156
+ }
157
+
158
+ .speed-settings__preset-button {
159
+ min-width: 0;
160
+ padding: var(--spacing-xs);
161
+ }
162
+ </style>