@loczer/storefront-sdk 0.209.0 → 0.211.0
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/chunks/pkg/booking-engine/dist/node_modules/@date-fns/tz/date/index-DAbcklF5.js +1 -0
- package/dist/chunks/pkg/booking-engine/dist/node_modules/@date-fns/tz/date/mini-CSEBo1ZP.js +60 -0
- package/dist/chunks/pkg/booking-engine/dist/node_modules/@date-fns/tz/index--u3Qf-qy.js +4 -0
- package/dist/chunks/pkg/booking-engine/dist/node_modules/@date-fns/tz/tz/index-CEcibV-H.js +1 -0
- package/dist/chunks/pkg/booking-engine/dist/node_modules/@date-fns/tz/tzOffset/index-COlDDdap.js +22 -0
- package/dist/chunks/pkg/booking-engine/dist/pricing-BJaynUu_.js +3 -0
- package/dist/chunks/pkg/booking-engine/dist/utils/schedule-ssRov9xe.js +39 -0
- package/dist/chunks/pkg/booking-engine/dist/utils/timezone-B6XIbBPz.js +79 -0
- package/dist/components/AdminFloatingButton/AdminFloatingButton.d.ts +7 -0
- package/dist/components/AdminFloatingButton/AdminFloatingButton.d.ts.map +1 -0
- package/dist/components/AdminFloatingButton/AdminFloatingButton.js +36 -0
- package/dist/components/AdminFloatingButton/index.d.ts +3 -0
- package/dist/components/AdminFloatingButton/index.d.ts.map +1 -0
- package/dist/components/AdminFloatingButton/index.js +2 -0
- package/dist/components/BookingPeriodSelector/useBookingPeriodController.d.ts.map +1 -1
- package/dist/components/BookingPeriodSelector/useBookingPeriodController.js +213 -213
- package/dist/components/ContactSection/index.d.ts.map +1 -1
- package/dist/components/ContactSection/index.js +4 -7
- package/dist/components/Header/index.js +1 -0
- package/dist/components/PlaygroundDevFloatingButton/index.d.ts.map +1 -1
- package/dist/components/PlaygroundDevFloatingButton/index.js +121 -100
- package/dist/components/ProductPriceBadge/index.d.ts.map +1 -1
- package/dist/components/ProductPriceBadge/index.js +86 -80
- package/dist/components/StorefrontCartPanel/index.d.ts +4 -4
- package/dist/components/StorefrontCartPanel/index.d.ts.map +1 -1
- package/dist/components/StorefrontCartPanel/index.js +10 -9
- package/dist/components/WhatsAppFloatingButton/useWhatsAppFloatingButton.d.ts +2 -3
- package/dist/components/WhatsAppFloatingButton/useWhatsAppFloatingButton.d.ts.map +1 -1
- package/dist/components/WhatsAppFloatingButton/useWhatsAppFloatingButton.js +7 -81
- package/dist/i18n/en.d.ts +11 -7
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +13 -9
- package/dist/i18n/fr.d.ts +11 -7
- package/dist/i18n/fr.d.ts.map +1 -1
- package/dist/i18n/fr.js +13 -9
- package/dist/index.d.ts +62 -39
- package/dist/index.js +68 -66
- package/dist/lib/booking.d.ts +0 -6
- package/dist/lib/booking.d.ts.map +1 -1
- package/dist/lib/booking.js +51 -65
- package/dist/lib/cartSummary.d.ts +5 -3
- package/dist/lib/cartSummary.d.ts.map +1 -1
- package/dist/lib/cartSummary.js +7 -7
- package/dist/lib/floatingButtonCollision.d.ts +20 -0
- package/dist/lib/floatingButtonCollision.d.ts.map +1 -0
- package/dist/lib/floatingButtonCollision.js +72 -0
- package/dist/lib/pricing.d.ts +18 -6
- package/dist/lib/pricing.d.ts.map +1 -1
- package/dist/lib/pricing.js +45 -29
- package/dist/lib/useDraggableFloatingButton.d.ts +7 -0
- package/dist/lib/useDraggableFloatingButton.d.ts.map +1 -0
- package/dist/lib/useDraggableFloatingButton.js +107 -0
- package/dist/pages/BookingPage.d.ts.map +1 -1
- package/dist/pages/BookingPage.js +205 -201
- package/dist/pages/CheckoutPage.d.ts.map +1 -1
- package/dist/pages/CheckoutPage.js +195 -191
- package/dist/pages/checkout/components/CheckoutSummaryColumn.d.ts +2 -2
- package/dist/pages/checkout/components/CheckoutSummaryColumn.d.ts.map +1 -1
- package/dist/pages/checkout/components/CheckoutSummaryColumn.js +4 -4
- package/dist/storefront.css +1 -1
- package/dist/ui/day-picker.js +1 -1
- package/package.json +1 -1
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { cn as e } from "../../lib/utils.js";
|
|
2
2
|
import { Button as t } from "../../ui/button.js";
|
|
3
3
|
import n from "../../chunks/assets/dev-D2oG3j7S.js";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import p from "
|
|
4
|
+
import { registerFloatingButtonCollisionParticipant as r, resolveFloatingButtonCollisions as i } from "../../lib/floatingButtonCollision.js";
|
|
5
|
+
import { resetPlaygroundDevSettings as a, usePlaygroundDevSettings as o, writePlaygroundDevSettings as s } from "../../lib/playgroundDevSettings.js";
|
|
6
|
+
import { useCallback as c, useEffect as l, useMemo as u, useRef as d, useState as f } from "react";
|
|
7
|
+
import { jsx as p, jsxs as m } from "react/jsx-runtime";
|
|
8
|
+
import h from "interactjs";
|
|
8
9
|
//#region src/components/PlaygroundDevFloatingButton/index.tsx
|
|
9
|
-
var
|
|
10
|
+
var g = [
|
|
10
11
|
{
|
|
11
12
|
value: "current_booking_hero",
|
|
12
13
|
label: "Current booking hero",
|
|
@@ -22,58 +23,58 @@ var m = [
|
|
|
22
23
|
label: "Vertical marquee hero",
|
|
23
24
|
hint: "Keep the overlay booking bar and swap the static image for a vertical animated gallery"
|
|
24
25
|
}
|
|
25
|
-
],
|
|
26
|
-
let
|
|
26
|
+
], _ = () => {
|
|
27
|
+
let _ = o(), [v, y] = f(!1), [b, x] = f({
|
|
27
28
|
horizontal: "left",
|
|
28
29
|
vertical: "above"
|
|
29
|
-
}),
|
|
30
|
+
}), S = d(null), C = d(null), w = d(null), T = d(!1), E = d(!1), D = d({
|
|
30
31
|
x: 0,
|
|
31
32
|
y: 0
|
|
32
|
-
}),
|
|
33
|
-
|
|
34
|
-
...
|
|
33
|
+
}), O = d(null), k = d(null), A = _.heroMode !== null, j = c((e) => {
|
|
34
|
+
s({
|
|
35
|
+
..._,
|
|
35
36
|
heroMode: e
|
|
36
37
|
});
|
|
37
|
-
}, [
|
|
38
|
-
|
|
39
|
-
}, []),
|
|
40
|
-
let e =
|
|
38
|
+
}, [_]), M = c(() => {
|
|
39
|
+
S.current != null && (window.clearTimeout(S.current), S.current = null);
|
|
40
|
+
}, []), N = c(() => {
|
|
41
|
+
let e = C.current, t = w.current;
|
|
41
42
|
if (!e || !t || typeof window > "u") return;
|
|
42
43
|
let n = e.getBoundingClientRect(), r = t.getBoundingClientRect(), i = window.innerWidth, a = n.left + r.width + 16 > i ? "right" : "left", o = n.top - r.height - 16 < 0 ? "below" : "above";
|
|
43
|
-
|
|
44
|
+
x((e) => e.horizontal === a && e.vertical === o ? e : {
|
|
44
45
|
horizontal: a,
|
|
45
46
|
vertical: o
|
|
46
47
|
});
|
|
47
|
-
}, []),
|
|
48
|
-
|
|
49
|
-
|
|
48
|
+
}, []), P = c(() => {
|
|
49
|
+
T.current || E.current || (M(), y(!0), window.requestAnimationFrame(() => {
|
|
50
|
+
N();
|
|
50
51
|
}));
|
|
51
|
-
}, [
|
|
52
|
-
|
|
53
|
-
|
|
52
|
+
}, [M, N]), F = c(() => {
|
|
53
|
+
T.current || E.current || (M(), S.current = window.setTimeout(() => {
|
|
54
|
+
y(!1), S.current = null;
|
|
54
55
|
}, 120));
|
|
55
|
-
}, [
|
|
56
|
-
|
|
57
|
-
}, [
|
|
58
|
-
return
|
|
59
|
-
if (!
|
|
60
|
-
|
|
61
|
-
let e = () =>
|
|
56
|
+
}, [M]), I = c(() => {
|
|
57
|
+
M(), y(!1);
|
|
58
|
+
}, [M]);
|
|
59
|
+
return l(() => {
|
|
60
|
+
if (!v) return;
|
|
61
|
+
N();
|
|
62
|
+
let e = () => N();
|
|
62
63
|
return window.addEventListener("resize", e), () => window.removeEventListener("resize", e);
|
|
63
|
-
}, [
|
|
64
|
-
let e =
|
|
64
|
+
}, [v, N]), l(() => () => M(), [M]), l(() => {
|
|
65
|
+
let e = C.current;
|
|
65
66
|
if (!e || typeof window > "u") return;
|
|
66
67
|
let t = e.getBoundingClientRect();
|
|
67
|
-
|
|
68
|
+
O.current = {
|
|
68
69
|
left: t.left,
|
|
69
70
|
top: t.top,
|
|
70
71
|
width: t.width,
|
|
71
72
|
height: t.height
|
|
72
73
|
};
|
|
73
74
|
let n = () => {
|
|
74
|
-
if (!
|
|
75
|
-
let { left: e, top: t, width: n, height: r } =
|
|
76
|
-
return
|
|
75
|
+
if (!O.current) return D.current;
|
|
76
|
+
let { left: e, top: t, width: n, height: r } = O.current, i = 8 - e, a = 8 - t, o = window.innerWidth - 8 - n - e, s = window.innerHeight - 8 - r - t, c = Math.min(Math.max(D.current.x, i), o), l = Math.min(Math.max(D.current.y, a), s);
|
|
77
|
+
return D.current = {
|
|
77
78
|
x: c,
|
|
78
79
|
y: l
|
|
79
80
|
}, {
|
|
@@ -84,119 +85,139 @@ var m = [
|
|
|
84
85
|
maxX: o,
|
|
85
86
|
maxY: s
|
|
86
87
|
};
|
|
87
|
-
},
|
|
88
|
+
}, a = () => {
|
|
88
89
|
let { x: t, y: r } = n();
|
|
89
90
|
e.style.transform = `translate3d(${t}px, ${r}px, 0)`;
|
|
90
|
-
},
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
91
|
+
}, o = (e, t) => {
|
|
92
|
+
let n = D.current.x, r = D.current.y;
|
|
93
|
+
return D.current.x += e, D.current.y += t, a(), N(), {
|
|
94
|
+
x: D.current.x - n,
|
|
95
|
+
y: D.current.y - r
|
|
96
|
+
};
|
|
97
|
+
}, s = () => {
|
|
98
|
+
k.current != null && (cancelAnimationFrame(k.current), k.current = null), E.current = !1;
|
|
99
|
+
}, c = window.matchMedia && window.matchMedia("(prefers-reduced-motion: reduce)").matches, l = (e = 0, t = 0) => {
|
|
100
|
+
i("dev-floating-button", {
|
|
101
|
+
velocityX: e,
|
|
102
|
+
velocityY: t
|
|
103
|
+
});
|
|
104
|
+
}, u = (t, r) => {
|
|
105
|
+
if (c) {
|
|
106
|
+
a(), l(t, r), E.current = !1;
|
|
95
107
|
return;
|
|
96
108
|
}
|
|
97
|
-
let
|
|
98
|
-
|
|
99
|
-
let
|
|
100
|
-
let
|
|
101
|
-
|
|
102
|
-
let { minX:
|
|
103
|
-
if (
|
|
104
|
-
|
|
109
|
+
let i = performance.now();
|
|
110
|
+
E.current = !0;
|
|
111
|
+
let o = .92, u = .7, d = (a) => {
|
|
112
|
+
let c = (a - i) / 1e3;
|
|
113
|
+
i = a, D.current.x += t * c, D.current.y += r * c;
|
|
114
|
+
let { minX: f, minY: p, maxX: m, maxY: h } = n();
|
|
115
|
+
if (D.current.x <= f + .001 && t < 0 ? (D.current.x = f, t = -t * u) : D.current.x >= m - .001 && t > 0 && (D.current.x = m, t = -t * u), D.current.y <= p + .001 && r < 0 ? (D.current.y = p, r = -r * u) : D.current.y >= h - .001 && r > 0 && (D.current.y = h, r = -r * u), t *= o, r *= o, e.style.transform = `translate3d(${D.current.x}px, ${D.current.y}px, 0)`, l(t, r), Math.hypot(t, r) < 20) {
|
|
116
|
+
s();
|
|
105
117
|
return;
|
|
106
118
|
}
|
|
107
|
-
|
|
119
|
+
k.current = requestAnimationFrame(d);
|
|
108
120
|
};
|
|
109
|
-
|
|
110
|
-
},
|
|
111
|
-
|
|
121
|
+
k.current = requestAnimationFrame(d);
|
|
122
|
+
}, d = r({
|
|
123
|
+
id: "dev-floating-button",
|
|
124
|
+
getRect: () => e.getBoundingClientRect(),
|
|
125
|
+
isDragging: () => T.current,
|
|
126
|
+
moveBy: o,
|
|
127
|
+
cancelMotion: s,
|
|
128
|
+
kick: u
|
|
129
|
+
}), f = h(e).draggable({ inertia: !1 }).styleCursor(!1).on("dragstart", () => {
|
|
130
|
+
s(), T.current = !0, y(!1), M();
|
|
112
131
|
}).on("dragmove", (e) => {
|
|
113
|
-
|
|
132
|
+
D.current.x += e.dx, D.current.y += e.dy, a();
|
|
133
|
+
let t = Number.isFinite(e.velocityX) ? e.velocityX : 0, n = Number.isFinite(e.velocityY) ? e.velocityY : 0;
|
|
134
|
+
l(t, n);
|
|
114
135
|
}).on("dragend", (e) => {
|
|
115
136
|
let t = Number.isFinite(e.velocityX) ? e.velocityX : 0, n = Number.isFinite(e.velocityY) ? e.velocityY : 0;
|
|
116
|
-
|
|
117
|
-
}),
|
|
137
|
+
T.current = !1, Math.hypot(t, n) >= 10 ? u(t, n) : (a(), s(), l(t, n)), N();
|
|
138
|
+
}), p = () => {
|
|
118
139
|
let t = e.getBoundingClientRect();
|
|
119
|
-
|
|
120
|
-
left: t.left -
|
|
121
|
-
top: t.top -
|
|
140
|
+
O.current = {
|
|
141
|
+
left: t.left - D.current.x,
|
|
142
|
+
top: t.top - D.current.y,
|
|
122
143
|
width: t.width,
|
|
123
144
|
height: t.height
|
|
124
|
-
},
|
|
145
|
+
}, a(), l(), N();
|
|
125
146
|
};
|
|
126
|
-
return window.addEventListener("resize",
|
|
127
|
-
|
|
147
|
+
return window.addEventListener("resize", p), a(), l(), N(), () => {
|
|
148
|
+
d(), f.unset(), s(), window.removeEventListener("resize", p);
|
|
128
149
|
};
|
|
129
|
-
}, [
|
|
150
|
+
}, [M, N]), u(() => !1, []) ? /* @__PURE__ */ p("div", {
|
|
130
151
|
className: "fixed bottom-4 left-4 z-50 pointer-events-none select-none",
|
|
131
|
-
children: /* @__PURE__ */
|
|
132
|
-
ref:
|
|
152
|
+
children: /* @__PURE__ */ p("div", {
|
|
153
|
+
ref: C,
|
|
133
154
|
className: "pointer-events-auto",
|
|
134
155
|
style: { touchAction: "none" },
|
|
135
|
-
children: /* @__PURE__ */
|
|
156
|
+
children: /* @__PURE__ */ m("div", {
|
|
136
157
|
className: "relative",
|
|
137
|
-
onMouseEnter:
|
|
138
|
-
onMouseLeave:
|
|
139
|
-
onFocusCapture:
|
|
158
|
+
onMouseEnter: P,
|
|
159
|
+
onMouseLeave: F,
|
|
160
|
+
onFocusCapture: P,
|
|
140
161
|
onBlurCapture: (e) => {
|
|
141
162
|
let t = e.relatedTarget;
|
|
142
|
-
(!t || !e.currentTarget.contains(t)) &&
|
|
163
|
+
(!t || !e.currentTarget.contains(t)) && F();
|
|
143
164
|
},
|
|
144
|
-
children: [/* @__PURE__ */
|
|
165
|
+
children: [/* @__PURE__ */ p("button", {
|
|
145
166
|
type: "button",
|
|
146
167
|
"aria-label": "Playground developer tools",
|
|
147
168
|
className: e("inline-flex h-14 w-14 md:h-12 md:w-12 items-center justify-center rounded-full shadow-lg ring-1 transition-colors p-1 cursor-pointer", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/90 focus-visible:ring-offset-2 focus-visible:ring-offset-pink-600", "bg-pink-600 hover:bg-pink-700 ring-pink-700"),
|
|
148
|
-
onMouseDown:
|
|
149
|
-
onTouchStart:
|
|
150
|
-
onFocus:
|
|
169
|
+
onMouseDown: I,
|
|
170
|
+
onTouchStart: I,
|
|
171
|
+
onFocus: P,
|
|
151
172
|
onKeyDown: (e) => {
|
|
152
|
-
e.key === "Escape" && (
|
|
173
|
+
e.key === "Escape" && (y(!1), M());
|
|
153
174
|
},
|
|
154
|
-
children: /* @__PURE__ */
|
|
175
|
+
children: /* @__PURE__ */ p("img", {
|
|
155
176
|
src: n,
|
|
156
177
|
className: "h-9 w-9 md:h-8 md:w-8",
|
|
157
178
|
alt: "",
|
|
158
179
|
draggable: !1
|
|
159
180
|
})
|
|
160
|
-
}), /* @__PURE__ */
|
|
161
|
-
ref:
|
|
162
|
-
className: e("absolute w-80 rounded-xl border border-pink-500/40 bg-gray-950/95 text-gray-100 shadow-xl backdrop-blur-sm transition-all duration-150",
|
|
163
|
-
onMouseEnter:
|
|
164
|
-
onMouseLeave:
|
|
181
|
+
}), /* @__PURE__ */ m("div", {
|
|
182
|
+
ref: w,
|
|
183
|
+
className: e("absolute w-80 rounded-xl border border-pink-500/40 bg-gray-950/95 text-gray-100 shadow-xl backdrop-blur-sm transition-all duration-150", b.vertical === "above" ? "bottom-full mb-3" : "top-full mt-3", b.horizontal === "left" ? "left-0" : "right-0", v ? "pointer-events-auto opacity-100 translate-y-0" : "pointer-events-none opacity-0 translate-y-2"),
|
|
184
|
+
onMouseEnter: P,
|
|
185
|
+
onMouseLeave: F,
|
|
165
186
|
children: [
|
|
166
|
-
/* @__PURE__ */
|
|
187
|
+
/* @__PURE__ */ p("div", {
|
|
167
188
|
className: "px-4 py-3 border-b border-pink-500/40",
|
|
168
|
-
children: /* @__PURE__ */
|
|
189
|
+
children: /* @__PURE__ */ p("p", {
|
|
169
190
|
className: "text-sm font-semibold text-pink-200",
|
|
170
191
|
children: "Playground overrides"
|
|
171
192
|
})
|
|
172
193
|
}),
|
|
173
|
-
/* @__PURE__ */
|
|
194
|
+
/* @__PURE__ */ m("div", {
|
|
174
195
|
className: "px-4 py-3 space-y-3",
|
|
175
196
|
children: [
|
|
176
|
-
/* @__PURE__ */
|
|
197
|
+
/* @__PURE__ */ p("p", {
|
|
177
198
|
className: "text-xs font-semibold uppercase tracking-wide text-pink-200",
|
|
178
199
|
children: "Hero layout"
|
|
179
200
|
}),
|
|
180
|
-
|
|
201
|
+
A ? null : /* @__PURE__ */ p("p", {
|
|
181
202
|
className: "text-xs text-gray-400",
|
|
182
203
|
children: "Using the saved storefront configuration."
|
|
183
204
|
}),
|
|
184
|
-
|
|
185
|
-
let n =
|
|
186
|
-
return /* @__PURE__ */
|
|
205
|
+
g.map((t) => {
|
|
206
|
+
let n = _.heroMode === t.value;
|
|
207
|
+
return /* @__PURE__ */ m("label", {
|
|
187
208
|
className: "flex cursor-pointer items-start gap-3 rounded-lg border border-pink-500/30 p-2",
|
|
188
|
-
children: [/* @__PURE__ */
|
|
209
|
+
children: [/* @__PURE__ */ p("input", {
|
|
189
210
|
type: "radio",
|
|
190
211
|
name: "playground-hero-mode",
|
|
191
212
|
className: "mt-0.5 h-4 w-4 accent-pink-500",
|
|
192
213
|
checked: n,
|
|
193
|
-
onChange: () =>
|
|
194
|
-
}), /* @__PURE__ */
|
|
214
|
+
onChange: () => j(t.value)
|
|
215
|
+
}), /* @__PURE__ */ m("span", {
|
|
195
216
|
className: "flex flex-col gap-1",
|
|
196
|
-
children: [/* @__PURE__ */
|
|
217
|
+
children: [/* @__PURE__ */ p("span", {
|
|
197
218
|
className: "text-sm font-medium text-gray-100",
|
|
198
219
|
children: t.label
|
|
199
|
-
}), /* @__PURE__ */
|
|
220
|
+
}), /* @__PURE__ */ p("span", {
|
|
200
221
|
className: e("text-xs", n ? "text-pink-300" : "text-gray-400"),
|
|
201
222
|
children: t.hint
|
|
202
223
|
})]
|
|
@@ -205,14 +226,14 @@ var m = [
|
|
|
205
226
|
})
|
|
206
227
|
]
|
|
207
228
|
}),
|
|
208
|
-
/* @__PURE__ */
|
|
229
|
+
/* @__PURE__ */ p("div", {
|
|
209
230
|
className: "px-4 pb-4",
|
|
210
|
-
children: /* @__PURE__ */
|
|
231
|
+
children: /* @__PURE__ */ p(t, {
|
|
211
232
|
type: "button",
|
|
212
233
|
variant: "outline",
|
|
213
|
-
className: e("w-full border border-pink-500/60 bg-pink-500/10 text-pink-100 hover:text-white hover:bg-pink-500/30 cursor-pointer", !
|
|
214
|
-
onClick:
|
|
215
|
-
disabled: !
|
|
234
|
+
className: e("w-full border border-pink-500/60 bg-pink-500/10 text-pink-100 hover:text-white hover:bg-pink-500/30 cursor-pointer", !A && "pointer-events-none opacity-60"),
|
|
235
|
+
onClick: a,
|
|
236
|
+
disabled: !A,
|
|
216
237
|
children: "Reset overrides"
|
|
217
238
|
})
|
|
218
239
|
})
|
|
@@ -223,4 +244,4 @@ var m = [
|
|
|
223
244
|
}) : null;
|
|
224
245
|
};
|
|
225
246
|
//#endregion
|
|
226
|
-
export {
|
|
247
|
+
export { _ as PlaygroundDevFloatingButton };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ProductPriceBadge/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ProductPriceBadge/index.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAA;AAoBhF,KAAK,sBAAsB,GAAG;IAC5B,MAAM,CAAC,EAAE,4BAA4B,EAAE,CAAA;IACvC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAI,oDAK/B,sBAAsB,mDAoXxB,CAAA"}
|