@staging-apiplus/essentials 0.0.2 → 0.0.4

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.
package/dist/slider.js CHANGED
@@ -1,335 +1,334 @@
1
- import { t as e } from "./sync_selected_style_roles-PKX5qPBc.js";
2
- import { n as t, t as n } from "./design_time-hqGakP97.js";
3
- //#region src/slider/runtime/dom.ts
4
- var r = "data-qp-logic-slider", i = "qp-slider-runtime-styles", a = "qp-slider-dot", o = `
5
- [${r}] {
6
- display: block;
7
- position: relative;
8
- overflow: hidden;
9
- }
10
-
11
- [${r}] .qp-slider-wrapper {
12
- display: flex;
13
- flex-direction: row;
14
- flex-wrap: nowrap;
15
- width: 100%;
16
- height: 100%;
17
- will-change: transform;
18
- }
19
-
20
- /* Publish critical CSS hides inactive slides by class with !important. */
21
- [${r}] .qp-slider-slide {
22
- display: flex !important;
23
- align-items: center !important;
24
- justify-content: center !important;
25
- visibility: visible !important;
26
- flex: 0 0 auto;
27
- box-sizing: border-box;
28
- }
29
-
30
- [${r}] .qp-slider-prev,
31
- [${r}] .qp-slider-next {
32
- position: absolute;
33
- top: 50%;
34
- z-index: 10;
35
- cursor: pointer;
36
- pointer-events: auto;
37
- transform: translateY(-50%);
38
- }
39
-
40
- [${r}] .qp-slider-prev {
41
- left: 8px;
42
- }
43
-
44
- [${r}] .qp-slider-next {
45
- right: 8px;
46
- }
47
-
48
- [${r}] .qp-slider-pagination {
49
- position: absolute;
50
- bottom: 12px;
51
- left: 0;
52
- right: 0;
53
- display: flex;
54
- flex-direction: row;
55
- align-items: center;
56
- justify-content: center;
57
- gap: 8px;
58
- z-index: 10;
59
- pointer-events: auto;
60
- }
61
-
62
- [${r}] .${a} {
63
- width: 8px;
64
- height: 8px;
65
- border-radius: 999px;
66
- border: none;
67
- padding: 0;
68
- background: rgba(0, 0, 0, 0.3);
69
- cursor: pointer;
70
- }
71
- `;
72
- function s() {
73
- if (typeof document > "u" || document.getElementById("qp-slider-runtime-styles")) return;
74
- let e = document.createElement("style");
75
- e.id = i, e.textContent = o, document.head.appendChild(e);
76
- }
77
- function c(e, t) {
78
- if (t instanceof HTMLElement) return t;
79
- let n = e.querySelector(".qp-slider-wrapper");
80
- return n instanceof HTMLElement ? n : null;
81
- }
82
- function l(e, t) {
83
- t.classList.contains("qp-slider-wrapper") || t.classList.add("qp-slider-wrapper");
84
- for (let e of g(t)) e.classList.contains("qp-slider-slide") || e.classList.add("qp-slider-slide");
85
- for (let t of [
86
- ".qp-slider-prev",
87
- ".qp-slider-next",
88
- ".qp-slider-pagination"
89
- ]) {
90
- let n = e.querySelector(t);
91
- if (n instanceof HTMLElement) {
92
- let e = t.slice(1);
93
- n.classList.contains(e) || n.classList.add(e);
94
- }
95
- }
96
- }
97
- function u(e) {
98
- for (let t of g(e)) t.style.setProperty("display", "flex", "important"), t.style.setProperty("align-items", "center", "important"), t.style.setProperty("justify-content", "center", "important"), t.style.setProperty("visibility", "visible", "important");
99
- }
100
- var d = [
1
+ import { t as e } from "./sync_selected_style_roles-LmVSgPUR.js";
2
+ import { r as t, t as n } from "./design_time-Dxqanum8.js";
3
+ //#region ../../../packages/qp_sdk/src/manifest/site_manifest.ts
4
+ var r = {
5
+ editor: "editor",
6
+ preview: "preview",
7
+ published: "published"
8
+ }, i = "data-qp-logic-slider", a = [
101
9
  "qp-slider-prev",
102
10
  "qp-slider-next",
103
- "qp-slider-pagination",
104
- a
11
+ "qp-slider-pagination"
105
12
  ];
106
- function f(e) {
107
- return d.some((t) => e.classList.contains(t));
108
- }
109
- function p(e) {
110
- if (f(e)) return !0;
111
- let t = m(e);
112
- return t.length > 0 && t.every(f);
13
+ function o(e) {
14
+ return a.some((t) => e.classList.contains(t));
113
15
  }
114
- function m(e) {
16
+ function s(e) {
115
17
  return Array.from(e.children).filter((e) => e instanceof HTMLElement);
116
18
  }
117
- function h(e, t) {
118
- if (t.length === 0) return e;
119
- let n = t[0]?.parentElement;
120
- return n instanceof HTMLElement && n !== e && t.every((e) => e.parentElement === n) ? n : e;
19
+ function c(e) {
20
+ if (o(e)) return !0;
21
+ let t = s(e);
22
+ return t.length > 0 && t.every(o);
121
23
  }
122
- function g(e) {
123
- let t = m(e).filter((e) => e.classList.contains("qp-slider-slide") && !f(e));
24
+ function l(e, t) {
25
+ if (t instanceof HTMLElement) return t;
26
+ let n = e.querySelector(".qp-slider-wrapper");
27
+ return n instanceof HTMLElement ? n : null;
28
+ }
29
+ function u(e) {
30
+ let t = s(e).filter((e) => e.classList.contains("qp-slider-slide") && !o(e));
124
31
  if (t.length > 0) return t;
125
- let n = m(e).filter((e) => !p(e));
32
+ let n = s(e).filter((e) => !c(e));
126
33
  if (n.length === 1) {
127
- let e = m(n[0]).filter((e) => !f(e));
34
+ let e = s(n[0]).filter((e) => !o(e));
128
35
  if (e.length > 1) return e;
129
36
  }
130
37
  if (n.length > 1) {
131
38
  let e = n.map((e) => ({
132
39
  el: e,
133
- count: m(e).filter((e) => !f(e)).length
40
+ count: s(e).filter((e) => !o(e)).length
134
41
  })).sort((e, t) => t.count - e.count), t = e[0], r = e[1];
135
- if (t && t.count >= 2 && t.count > (r?.count ?? 0)) return m(t.el).filter((e) => !f(e));
42
+ if (t && t.count >= 2 && t.count > (r?.count ?? 0)) return s(t.el).filter((e) => !o(e));
136
43
  }
137
44
  return n;
138
45
  }
139
- function _(e) {
140
- let t = e.getBoundingClientRect(), n = e.clientWidth > 0 ? e.clientWidth : t.width, r = e.clientHeight > 0 ? e.clientHeight : t.height;
141
- if (typeof getComputedStyle == "function") {
142
- let t = getComputedStyle(e), i = (Number.parseFloat(t.paddingLeft) || 0) + (Number.parseFloat(t.paddingRight) || 0), a = (Number.parseFloat(t.paddingTop) || 0) + (Number.parseFloat(t.paddingBottom) || 0);
46
+ var d = {
47
+ Horizontal: "horizontal",
48
+ Vertical: "vertical"
49
+ };
50
+ function f(e) {
51
+ let t = e[0]?.parentElement;
52
+ return t && getComputedStyle(t).flexDirection.startsWith("column") ? d.Vertical : d.Horizontal;
53
+ }
54
+ function p(e, t, n) {
55
+ let r = e[Math.max(0, Math.min(t, e.length - 1))];
56
+ return n === d.Vertical ? r.offsetTop - e[0].offsetTop : r.offsetLeft - e[0].offsetLeft;
57
+ }
58
+ var m = .5, h = /* @__PURE__ */ new WeakSet();
59
+ function g(e) {
60
+ let { slides: t, translates: n, direction: r, transition: i, factor: a } = e;
61
+ t.forEach((e, o) => {
62
+ let c = -(p(t, o, r) + (n[o] ?? 0)) * a;
63
+ for (let t of s(e)) {
64
+ if (a <= 0) {
65
+ h.delete(t) && (t.style.transition = "", t.style.transform = "");
66
+ continue;
67
+ }
68
+ h.add(t), t.style.transition = i, t.style.transform = r === d.Vertical ? `translate3d(0, ${c}px, 0)` : `translate3d(${c}px, 0, 0)`;
69
+ }
70
+ });
71
+ }
72
+ function _(e, t, n, r, i) {
73
+ let a = r > 0 ? `transform ${r}ms ease` : "none", o = n === d.Vertical ? `translate3d(0, ${t}px, 0)` : `translate3d(${t}px, 0, 0)`;
74
+ for (let t of e) t.style.transition = a, t.style.transform = o;
75
+ g({
76
+ slides: e,
77
+ translates: e.map(() => t),
78
+ direction: n,
79
+ transition: a,
80
+ factor: i
81
+ });
82
+ }
83
+ function v(e, t, n, r = d.Horizontal, i = 0) {
84
+ let a = u(e);
85
+ a.length !== 0 && _(a, -p(a, t, r), r, n, i);
86
+ }
87
+ function y(e, t, n, r = d.Horizontal, i = 0) {
88
+ let a = u(e);
89
+ a.length !== 0 && _(a, -p(a, t, r) + n, r, 0, i);
90
+ }
91
+ function b(e, t) {
92
+ return (e % t + t) % t;
93
+ }
94
+ function x(e) {
95
+ let t = e.index - e.activeIndex;
96
+ if (e.index < 0 || e.index >= e.count) return t;
97
+ let n = e.count / 2;
98
+ return t > n ? t - e.count : t < -n ? t + e.count : t;
99
+ }
100
+ function S(e) {
101
+ let { offsets: t, trackLength: n, position: r } = e, i = t.length;
102
+ if (!(n > 0)) {
103
+ let e = t.map(() => 0);
143
104
  return {
144
- width: Math.max(0, n - i),
145
- height: Math.max(0, r - a)
105
+ slots: e,
106
+ translates: e,
107
+ target: 0
146
108
  };
147
109
  }
110
+ let a = t[b(r, i)] + n * Math.floor(r / i), o = t.map((e) => Math.round((a - e) / n));
148
111
  return {
149
- width: n,
150
- height: r
112
+ slots: o,
113
+ target: a,
114
+ translates: o.map((e) => n * e - a)
151
115
  };
152
116
  }
153
- function v(e, t) {
154
- let n = _(e);
155
- if (!t || t === e) return n;
156
- let r = _(t);
157
- return {
158
- width: n.width > 0 ? n.width : r.width,
159
- height: n.height > 0 ? n.height : r.height
160
- };
117
+ function C(e, t, n, r) {
118
+ e.style.transition = r, e.style.transform = n === d.Vertical ? `translate3d(0, ${t}px, 0)` : `translate3d(${t}px, 0, 0)`;
161
119
  }
162
- function y(e, t) {
163
- e.style.padding = "0", e.style.gap = "0", e.style.rowGap = "0", e.style.columnGap = "0", e.style.boxSizing = "border-box";
164
- let { width: n, height: r } = v(e, t);
165
- e.style.display = "block", e.style.position = "relative", e.style.overflow = "hidden", n > 0 && (e.style.width = `${n}px`, e.style.maxWidth = `${n}px`), r > 0 && (e.style.height = `${r}px`);
166
- let i = g(t), a = h(t, i), o = n > 0 ? Math.max(i.length, 1) * n : 0;
167
- a.style.display = "flex", a.style.flexDirection = "row", a.style.flexWrap = "nowrap", a.style.flexShrink = "0", a.style.overflow = "hidden", a.style.padding = "0", a.style.gap = "0", a.style.boxSizing = "border-box", a.style.width = o > 0 ? `${o}px` : "max-content", a.style.maxWidth = "none", a.style.height = r > 0 ? `${r}px` : "100%", a !== t && (t.style.transform = "", t.style.transition = "", t.style.overflow = "hidden", t.style.position = "relative", t.style.padding = "0", t.style.gap = "0", t.style.width = "100%", t.style.maxWidth = "100%", t.style.height = r > 0 ? `${r}px` : "100%");
168
- for (let e of i) e.style.display = "flex", e.style.alignItems = "center", e.style.justifyContent = "center", e.style.flex = "0 0 auto", e.style.flexShrink = "0", e.style.width = `${n}px`, e.style.minWidth = `${n}px`, e.style.maxWidth = `${n}px`, r > 0 && (e.style.height = `${r}px`), e.style.boxSizing = "border-box", e.style.overflow = "hidden";
169
- return n;
120
+ function w(e, t, n, r, i) {
121
+ let a = r > 0 ? `transform ${r}ms ease` : "none";
122
+ e.forEach((e, r) => {
123
+ C(e, t[r] ?? 0, n, a);
124
+ }), g({
125
+ slides: e,
126
+ translates: t,
127
+ direction: n,
128
+ transition: a,
129
+ factor: i
130
+ });
170
131
  }
171
- function b(e, t, n, r) {
172
- let i = g(t);
173
- if (i.length === 0) return;
174
- let a = Math.max(0, Math.min(n, i.length - 1));
175
- u(t);
176
- let o = y(e, t), s = h(t, i), c = a * Math.max(0, o);
177
- s.style.transition = r > 0 ? `transform ${r}ms ease` : "none", s.style.transform = `translate3d(-${c}px, 0, 0)`;
132
+ function T(e, t) {
133
+ let n = t === d.Vertical, r = e.map((n, r) => p(e, r, t)), i = (e) => n ? e.offsetHeight : e.offsetWidth, a = e[0], o = e[e.length - 1], s = e.length > 1 ? r[1] - i(a) - r[0] : 0;
134
+ return {
135
+ offsets: r,
136
+ trackLength: r[r.length - 1] + i(o) + s
137
+ };
178
138
  }
179
- function x(e, t, n) {
180
- e.replaceChildren();
181
- let r = [];
182
- for (let i = 0; i < n; i += 1) {
183
- let n = t.cloneNode(!0);
184
- n.classList.add(a), n.setAttribute("aria-label", `Go to slide ${i + 1}`), n.dataset.slideIndex = String(i), e.appendChild(n), r.push(n);
139
+ function E(e) {
140
+ let t = e.direction ?? d.Horizontal, n = u(e.wrapper);
141
+ if (n.length < 2) return;
142
+ let r = T(n, t), i = S({
143
+ ...r,
144
+ position: e.position
145
+ });
146
+ if (e.speedMs > 0 && e.fromPosition !== void 0 && e.fromPosition !== e.position) {
147
+ let a = S({
148
+ ...r,
149
+ position: e.fromPosition
150
+ }), o = a.target;
151
+ n.forEach((n, s) => {
152
+ i.slots[s] !== a.slots[s] && C(n, r.trackLength * i.slots[s] - o + (e.fromOffsetPx ?? 0), t, "none");
153
+ }), e.wrapper.offsetWidth;
185
154
  }
186
- return r;
155
+ w(n, i.translates, t, e.speedMs, e.parallaxFactor ?? 0);
187
156
  }
188
- function S(e, t) {
189
- let n = Array.from(e.querySelectorAll(`.${a}`)).filter((e) => e instanceof HTMLElement);
190
- if (n.length === t) return n;
191
- e.replaceChildren();
192
- let r = [];
193
- for (let n = 0; n < t; n += 1) {
194
- let t = document.createElement("button");
195
- t.type = "button", t.className = a, t.setAttribute("aria-label", `Go to slide ${n + 1}`), t.dataset.slideIndex = String(n), e.appendChild(t), r.push(t);
196
- }
197
- return r;
157
+ function D(e) {
158
+ let t = e.direction ?? d.Horizontal, n = u(e.wrapper);
159
+ if (n.length < 2) return;
160
+ let { translates: r } = S({
161
+ ...T(n, t),
162
+ position: e.position
163
+ });
164
+ w(n, r.map((t) => t + e.deltaPx), t, 0, e.parallaxFactor ?? 0);
165
+ }
166
+ function O(e) {
167
+ let t = Math.min(40, e.slideSizePx / 3);
168
+ return Math.abs(e.deltaPx) < t ? e.index : e.deltaPx < 0 ? e.index + 1 : e.index - 1;
198
169
  }
199
170
  //#endregion
200
171
  //#region src/slider/runtime/runtime.ts
201
- function C(e) {
202
- return e.scopeRoot instanceof HTMLElement ? e.scopeRoot : null;
203
- }
204
- function w(e, t, n) {
172
+ function k(e, t, n) {
205
173
  if (e instanceof HTMLElement) return e;
206
174
  let r = t.querySelector(n);
207
175
  return r instanceof HTMLElement ? r : null;
208
176
  }
209
- function T(e) {
210
- let t = C(e);
177
+ function A(e) {
178
+ let t = e.scopeRoot instanceof HTMLElement ? e.scopeRoot : null;
211
179
  if (!t) return null;
212
- let n = c(t, e.wiring.wrapper);
180
+ let n = l(t, e.wiring.wrapper);
213
181
  return n ? {
214
182
  slider: t,
215
183
  wrapper: n,
216
- prevButton: w(e.wiring.prevButton, t, ".qp-slider-prev"),
217
- nextButton: w(e.wiring.nextButton, t, ".qp-slider-next"),
218
- pagination: w(e.wiring.pagination, t, ".qp-slider-pagination")
184
+ prevButton: k(e.wiring.prevButton, t, ".qp-slider-prev"),
185
+ nextButton: k(e.wiring.nextButton, t, ".qp-slider-next"),
186
+ pagination: k(e.wiring.pagination, t, ".qp-slider-pagination")
219
187
  } : null;
220
188
  }
221
- function E(e, t) {
222
- let n = Array.from(e.children).filter((e) => e instanceof HTMLElement);
223
- if (n.length > 0 && !n.some((e) => e.classList.contains("qp-slider-dot"))) {
224
- let r = n[0];
225
- return x(e, r, t);
226
- }
227
- return S(e, t);
228
- }
229
- function D(e, t, n, r) {
189
+ function j(e, t, n, r) {
230
190
  let i = t <= 0, a = t >= n - 1;
231
191
  for (let [t, n] of [[e.prevButton, !r && i], [e.nextButton, !r && a]]) t && (n ? t.setAttribute("aria-disabled", "true") : t.removeAttribute("aria-disabled"));
232
192
  }
233
- function O(r, i) {
234
- e({
235
- spec: n,
236
- activeIndex: i,
237
- roleLists: { [t.PaginationDot]: r }
238
- });
239
- }
240
- function k(e, t) {
241
- e && !e.classList.contains(t) && e.classList.add(t);
242
- }
243
- function A(e) {
244
- k(e.prevButton, "qp-slider-prev"), k(e.nextButton, "qp-slider-next"), k(e.pagination, "qp-slider-pagination"), l(e.slider, e.wrapper);
245
- }
246
- function j(e) {
193
+ function M(e) {
247
194
  let t = Number(e.editorState?.[n.activeIndexStateKey] ?? 0);
248
195
  return Number.isFinite(t) ? t : 0;
249
196
  }
250
- function M(e) {
251
- let t = e, n = T(e);
252
- if (!n) return;
253
- s(), A(n), u(n.wrapper);
254
- let i = j(e), a, o = [], c = null, l = (e) => Number(e.props.speed ?? 400), d = (e) => !!e.props.loop, f = (e) => !!e.props.autoplay, p = (e) => Number(e.props.autoplayDelay ?? 3e3), m = () => {
255
- a &&= (clearInterval(a), void 0);
256
- }, h = (e, t, n = !0) => {
257
- let r = T(e);
258
- if (!r) return;
259
- let a = g(r.wrapper);
197
+ function N(a) {
198
+ let o = a;
199
+ if (!A(a)) return;
200
+ let s = M(a), c = s, l, p = null, h = (e) => Number(e.props.speed ?? 400), g = (e, t) => _(e) && t > 1, _ = (e) => e.props.loop !== !1, S = (e) => !!e.props.autoplay, C = (e) => Number(e.props.autoplayDelay ?? 3e3), w = (e) => e.props.parallax ? m : 0, T = () => {
201
+ l &&= (clearInterval(l), void 0);
202
+ }, k = (e) => {
203
+ let t = A(e)?.pagination;
204
+ return t ? Array.from(t.children).filter((e) => e instanceof HTMLElement) : [];
205
+ }, N = () => {
206
+ e({
207
+ spec: n,
208
+ activeIndex: s,
209
+ roleLists: { [t.PaginationDot]: k(o) }
210
+ });
211
+ }, P = (e, t, n = !0, r = 0) => {
212
+ let i = A(e);
213
+ if (!i) return;
214
+ let a = u(i.wrapper);
260
215
  if (a.length === 0) return;
261
- A(r), u(r.wrapper);
262
- let s = d(e), c = t;
263
- if (s) {
264
- let e = a.length;
265
- c = (t % e + e) % e;
266
- } else c = Math.max(0, Math.min(t, a.length - 1));
267
- i = c, b(r.slider, r.wrapper, i, n ? l(e) : 0), O(o, i), D(r, i, a.length, s);
268
- }, _ = (e) => {
269
- m(), f(e) && (a = setInterval(() => {
270
- h(t, i + 1);
271
- }, p(e)));
272
- }, y = (e) => {
273
- let t = T(e);
274
- if (!t?.pagination) {
275
- o = [];
276
- return;
277
- }
278
- let n = g(t.wrapper);
279
- o = E(t.pagination, n.length), O(o, i);
280
- }, x = (e) => {
281
- let n = T(t);
282
- if (!n) return;
283
- let r = e.target;
284
- if (r instanceof Node) {
285
- if (n.prevButton && (n.prevButton === r || n.prevButton.contains(r))) {
286
- e.preventDefault(), h(t, i - 1);
216
+ let o = a.length, l = f(a), d = n ? h(e) : 0, p = w(e);
217
+ if (g(e, o)) {
218
+ let e = c;
219
+ c += x({
220
+ activeIndex: s,
221
+ index: t,
222
+ count: o
223
+ }), s = b(c, o), E({
224
+ wrapper: i.wrapper,
225
+ position: c,
226
+ speedMs: d,
227
+ direction: l,
228
+ fromPosition: n ? e : void 0,
229
+ fromOffsetPx: r,
230
+ parallaxFactor: p
231
+ });
232
+ } else s = Math.max(0, Math.min(t, o - 1)), c = s, v(i.wrapper, s, d, l, p);
233
+ N(), j(i, s, o, _(e));
234
+ }, F = (e) => {
235
+ T(), S(e) && (l = setInterval(() => {
236
+ P(o, s + 1);
237
+ }, C(e)));
238
+ }, I = (e, t) => e !== null && (e === t || e.contains(t)), L = (e) => {
239
+ let t = A(o), n = e.target;
240
+ if (t && n instanceof Node) {
241
+ if (I(t.prevButton, n)) {
242
+ e.preventDefault(), P(o, s - 1);
287
243
  return;
288
244
  }
289
- if (n.nextButton && (n.nextButton === r || n.nextButton.contains(r))) {
290
- e.preventDefault(), h(t, i + 1);
245
+ if (I(t.nextButton, n)) {
246
+ e.preventDefault(), P(o, s + 1);
291
247
  return;
292
248
  }
293
- if (n.pagination) {
294
- for (let [n, i] of o.entries()) if (i === r || i.contains(r)) {
295
- e.preventDefault(), h(t, n);
296
- return;
297
- }
249
+ for (let [t, r] of k(o).entries()) if (I(r, n)) {
250
+ e.preventDefault(), P(o, t);
251
+ return;
298
252
  }
299
253
  }
300
- }, S = new ResizeObserver(() => {
301
- h(t, i, !1);
302
- }), C = (e) => {
303
- let t = T(e);
304
- t && (S.disconnect(), S.observe(t.slider));
305
- }, w = (e) => {
306
- let t = T(e);
307
- t && c !== t.slider && (c?.removeEventListener("click", x), c = t.slider, c.addEventListener("click", x));
308
- }, k = (e) => {
309
- t = e;
310
- let n = T(e);
311
- n && (n.slider.setAttribute(r, ""), A(n), w(e), y(e), h(e, i, !1), _(e), C(e));
312
- }, M = (e, t = 0) => {
313
- let n = T(e);
314
- if (!n) return;
315
- let { width: r } = v(n.slider, n.wrapper);
316
- if (r > 0 || t >= 30) {
317
- h(e, i, !1);
254
+ }, R = (e) => e.mode !== r.editor, z = null, B = !1, V = (e) => {
255
+ let t = A(o), n = e.target;
256
+ R(o) && t && e.button === 0 && n instanceof Node && (I(t.prevButton, n) || I(t.nextButton, n) || I(t.pagination, n) || (z = {
257
+ pointerId: e.pointerId,
258
+ startX: e.clientX,
259
+ startY: e.clientY,
260
+ dragging: !1,
261
+ deltaPx: 0
262
+ }));
263
+ }, H = (e) => {
264
+ if (!z || e.pointerId !== z.pointerId) return;
265
+ let t = A(o);
266
+ if (!t) {
267
+ z = null;
318
268
  return;
319
269
  }
320
- requestAnimationFrame(() => M(e, t + 1));
270
+ let n = f(u(t.wrapper)), r = n === d.Vertical, i = e.clientX - z.startX, a = e.clientY - z.startY, l = r ? a : i, p = r ? i : a;
271
+ if (!z.dragging) {
272
+ if (Math.hypot(i, a) < 6) return;
273
+ if (Math.abs(p) > Math.abs(l)) {
274
+ z = null;
275
+ return;
276
+ }
277
+ z.dragging = !0, t.slider.setPointerCapture(e.pointerId), t.slider.style.userSelect = "none", T();
278
+ }
279
+ z.deltaPx = l;
280
+ let m = w(o);
281
+ g(o, u(t.wrapper).length) ? D({
282
+ wrapper: t.wrapper,
283
+ position: c,
284
+ deltaPx: l,
285
+ direction: n,
286
+ parallaxFactor: m
287
+ }) : y(t.wrapper, s, l, n, m);
288
+ }, U = (e, t) => {
289
+ if (!z || e.pointerId !== z.pointerId) return;
290
+ let n = z;
291
+ if (z = null, !n.dragging) return;
292
+ let r = A(o);
293
+ if (!r) return;
294
+ r.slider.style.userSelect = "", B = !0, setTimeout(() => {
295
+ B = !1;
296
+ }, 0);
297
+ let i = u(r.wrapper), a = i[0], c = f(i) === d.Vertical, l = a ? c ? a.offsetHeight : a.offsetWidth : 0;
298
+ P(o, t ? s : O({
299
+ index: s,
300
+ deltaPx: n.deltaPx,
301
+ slideSizePx: l
302
+ }), !0, n.deltaPx), F(o);
303
+ }, W = (e) => U(e, !1), G = (e) => U(e, !0), K = (e) => {
304
+ B && (B = !1, e.preventDefault(), e.stopPropagation());
305
+ }, q = (e) => {
306
+ z && e.preventDefault();
307
+ }, J = (e) => {
308
+ e.addEventListener("click", K, !0), e.addEventListener("click", L), e.addEventListener("pointerdown", V), e.addEventListener("pointermove", H), e.addEventListener("pointerup", W), e.addEventListener("pointercancel", G), e.addEventListener("dragstart", q);
309
+ }, Y = (e) => {
310
+ e.removeEventListener("click", K, !0), e.removeEventListener("click", L), e.removeEventListener("pointerdown", V), e.removeEventListener("pointermove", H), e.removeEventListener("pointerup", W), e.removeEventListener("pointercancel", G), e.removeEventListener("dragstart", q);
311
+ }, X = new ResizeObserver(() => {
312
+ P(o, s, !1);
313
+ }), Z = (e) => {
314
+ let t = A(e);
315
+ t && (X.disconnect(), X.observe(t.slider), p !== t.slider && (p && Y(p), p = t.slider, J(p)));
316
+ }, Q = (e) => {
317
+ o = e;
318
+ let t = A(e);
319
+ t && (t.slider.setAttribute(i, ""), Z(e), P(e, s, !1), t.slider.style.touchAction = R(e) ? f(u(t.wrapper)) === d.Vertical ? "pan-x" : "pan-y" : "", F(e));
321
320
  };
322
- return w(e), k(e), M(e), {
321
+ return Q(a), {
323
322
  update: (e) => {
324
- k(e);
323
+ Q(e);
325
324
  },
326
325
  destroy: () => {
327
- m(), S.disconnect(), c?.removeEventListener("click", x), c?.removeAttribute(r), c = null;
326
+ T(), X.disconnect(), p && (Y(p), p.style.touchAction = "", p.style.userSelect = "", p.removeAttribute(i)), p = null;
328
327
  }
329
328
  };
330
329
  }
331
- var N = { mount(e) {
332
- return M(e);
330
+ var P = { mount(e) {
331
+ return N(e);
333
332
  } };
334
333
  //#endregion
335
- export { N as default };
334
+ export { P as default };
@@ -11,7 +11,7 @@
11
11
  },
12
12
  "loop": {
13
13
  "type": "boolean",
14
- "default": false,
14
+ "default": true,
15
15
  "x-qp-control": "boolean",
16
16
  "x-qp-label": "Loop slides"
17
17
  },
@@ -27,6 +27,12 @@
27
27
  "minimum": 500,
28
28
  "x-qp-control": "number",
29
29
  "x-qp-label": "Autoplay delay (ms)"
30
+ },
31
+ "parallax": {
32
+ "type": "boolean",
33
+ "default": false,
34
+ "x-qp-control": "boolean",
35
+ "x-qp-label": "Parallax"
30
36
  }
31
37
  }
32
38
  }
@@ -1,4 +1,4 @@
1
- //#region ../../packages/qp_sdk/src/logic/sync_selected_style_roles.ts
1
+ //#region ../../../packages/qp_sdk/src/logic/sync_selected_style_roles.ts
2
2
  function e(e, t) {
3
3
  return t <= 0 ? 0 : Math.max(0, Math.min(e, t - 1));
4
4
  }
@@ -1,5 +1,5 @@
1
1
  {
2
- "quickpage": {
2
+ "app": {
3
3
  "id": "tab",
4
4
  "kind": "logic",
5
5
  "name": "tab"
@@ -1,5 +1,5 @@
1
- import { n as e, t } from "./derive_logic_editor_panel-D_bgZnMq.js";
2
- import { n, t as r } from "./design_time-BeEBEFSF.js";
1
+ import { n as e, t } from "./derive_logic_editor_panel-Bglc03KS.js";
2
+ import { n, t as r } from "./design_time-Beb6A0O9.js";
3
3
  //#region src/tab/editor/editor.ts
4
4
  var i = t(r, {
5
5
  labelRole: n.Tab,
package/dist/tab.js CHANGED
@@ -1,5 +1,5 @@
1
- import { t as e } from "./sync_selected_style_roles-PKX5qPBc.js";
2
- import { n as t, t as n } from "./design_time-BeEBEFSF.js";
1
+ import { t as e } from "./sync_selected_style_roles-LmVSgPUR.js";
2
+ import { n as t, t as n } from "./design_time-Beb6A0O9.js";
3
3
  //#region src/tab/runtime/dom.ts
4
4
  var r = "data-qp-logic-tabs", i = "qp-tabs-runtime-styles", a = `
5
5
  [${r}] {