kupos-ui-components-lib 9.9.7 → 9.9.8
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/KuposUIComponent.d.ts +3 -0
- package/dist/components/ServiceItem/PeruServiceItemDesktop.d.ts +1 -1
- package/dist/components/ServiceItem/PeruServiceItemDesktop.js +156 -176
- package/dist/components/ServiceItem/ServiceItemDesktop.d.ts +1 -1
- package/dist/components/ServiceItem/ServiceItemDesktop.js +29 -31
- package/dist/components/ServiceItem/ServiceItemMobile.d.ts +1 -1
- package/dist/components/ServiceItem/ServiceItemMobile.js +43 -17
- package/dist/components/ServiceItem/mobileTypes.d.ts +48 -2
- package/dist/components/ServiceItem/types.d.ts +27 -8
- package/dist/styles.css +219 -16
- package/dist/ui/ExpendedDropDown/ExpandedDropdown.d.ts +1 -2
- package/dist/ui/ExpendedDropDown/ExpandedDropdown.js +2 -4
- package/dist/ui/FeaturServiceUiMobile/FeatureServiceUiMobile.js +3 -10
- package/dist/ui/OfferBanner.d.ts +2 -0
- package/dist/ui/OfferBanner.js +22 -15
- package/dist/ui/SeatSection/SeatSection.d.ts +1 -7
- package/dist/ui/SeatSection/SeatSection.js +12 -41
- package/dist/ui/mobileweb/DateTimeSectionMobile.d.ts +1 -2
- package/dist/ui/mobileweb/DateTimeSectionMobile.js +6 -12
- package/dist/ui/mobileweb/SeatSectionMobile.d.ts +1 -2
- package/dist/ui/mobileweb/SeatSectionMobile.js +14 -21
- package/dist/utils/CommonService.d.ts +4 -1
- package/dist/utils/CommonService.js +19 -6
- package/package.json +1 -1
- package/src/KuposUIComponent.tsx +3 -0
- package/src/assets/images/anims/service_list/flame_anim.json +1 -0
- package/src/assets/images/anims/service_list/thunder_icon.json +1 -0
- package/src/assets/images/anims/service_list/users_anim.json +1 -0
- package/src/components/ServiceItem/PeruServiceItemDesktop.tsx +404 -277
- package/src/components/ServiceItem/ServiceItemDesktop.tsx +71 -51
- package/src/components/ServiceItem/ServiceItemMobile.tsx +387 -290
- package/src/components/ServiceItem/mobileTypes.ts +50 -8
- package/src/components/ServiceItem/types.ts +32 -13
- package/src/styles.css +15 -0
- package/src/ui/ExpendedDropDown/ExpandedDropdown.tsx +2 -4
- package/src/ui/FeaturServiceUiMobile/FeatureServiceUiMobile.tsx +575 -0
- package/src/ui/FeatureServiceUI/FeatureServiceUi.tsx +634 -0
- package/src/ui/OfferBanner.tsx +71 -43
- package/src/ui/SeatSection/SeatSection.tsx +21 -86
- package/src/ui/mobileweb/DateTimeSectionMobile.tsx +35 -44
- package/src/ui/mobileweb/SeatSectionMobile.tsx +11 -23
- package/src/utils/CommonService.ts +27 -8
package/dist/ui/OfferBanner.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import LottiePlayer from "../assets/LottiePlayer";
|
|
3
3
|
import CommonService from "../utils/CommonService";
|
|
4
|
-
const OfferBanner = ({ offerGradient, isSoldOut, serviceItem, renderIcon, isLoggedIn, showLoginModal, viewersConfig, getAnimationIcon, showLoginOption, }) => {
|
|
5
|
-
var _a, _b, _c, _d
|
|
6
|
-
return (React.createElement("div", { className: "text-white p-[
|
|
7
|
-
background:
|
|
4
|
+
const OfferBanner = ({ offerGradient, isSoldOut, serviceItem, renderIcon, isLoggedIn, showLoginModal, viewersConfig, getAnimationIcon, showLoginOption, isNewUiEnabled, colors, }) => {
|
|
5
|
+
var _a, _b, _c, _d;
|
|
6
|
+
return (React.createElement("div", { className: "text-white p-[15px_15px] text-left w-full flex items-center absolute -bottom-[44px] pt-[50px] rounded-b-[14px] text-[14px] mt-[10px]", style: {
|
|
7
|
+
background: (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.offer_text) && !isNewUiEnabled
|
|
8
|
+
? colors === null || colors === void 0 ? void 0 : colors.bottomStripColor
|
|
9
|
+
: offerGradient,
|
|
8
10
|
opacity: isSoldOut ? 0.5 : 1,
|
|
9
11
|
// zIndex: 0,
|
|
10
12
|
} },
|
|
@@ -13,7 +15,7 @@ const OfferBanner = ({ offerGradient, isSoldOut, serviceItem, renderIcon, isLogg
|
|
|
13
15
|
Object.keys((_a = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.dp_discount_percents) !== null && _a !== void 0 ? _a : {}).length === 0 &&
|
|
14
16
|
((_b = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.dp_discounted_seats) !== null && _b !== void 0 ? _b : []).length === 0 ? (React.createElement("div", { className: "flex items-center gap-[5px]" },
|
|
15
17
|
React.createElement(LottiePlayer, { animationData: getAnimationIcon("starAnimation"), width: "18px", height: "18px" }),
|
|
16
|
-
React.createElement("span", null, "Servicio popular entre los usuarios"))) : (React.createElement("div", { className: "flex items-center" },
|
|
18
|
+
React.createElement("span", null, "Servicio popular entre los usuarios"))) : isNewUiEnabled && (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.offer_text) ? (React.createElement("div", { className: "flex items-center" },
|
|
17
19
|
React.createElement(LottiePlayer, { animationData: getAnimationIcon("bombAnimation"), width: "18px", height: "18px" }),
|
|
18
20
|
React.createElement("div", { className: "flex items-center mt-[2px]" },
|
|
19
21
|
React.createElement("span", { className: "bold-text", style: {
|
|
@@ -23,19 +25,24 @@ const OfferBanner = ({ offerGradient, isSoldOut, serviceItem, renderIcon, isLogg
|
|
|
23
25
|
? ((serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.offer_text) || "").slice(0, 30) + "..."
|
|
24
26
|
: (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.offer_text) || "",
|
|
25
27
|
" ",
|
|
26
|
-
isLoggedIn && showLoginOption ? null :
|
|
27
|
-
((_d = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.dp_discounted_seats) !== null && _d !== void 0 ? _d : []).length >
|
|
28
|
-
0 ? null : (React.createElement("span", { onClick: showLoginModal, className: "cursor-pointer" }, "- registro")),
|
|
28
|
+
isLoggedIn && showLoginOption ? null : (React.createElement("span", { onClick: showLoginModal, className: "cursor-pointer" }, "- registro")),
|
|
29
29
|
" ",
|
|
30
30
|
"\u00A0"),
|
|
31
31
|
" ",
|
|
32
|
-
(serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.offer_text) ? "|
|
|
32
|
+
(serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.offer_text) ? "|" : "",
|
|
33
33
|
"Termina en\u00A0",
|
|
34
34
|
React.createElement("span", { className: "bold-text text-end", ref: (node) => CommonService.startCountdown(node, 599), style: {
|
|
35
35
|
fontVariantNumeric: "tabular-nums",
|
|
36
36
|
display: "inline-block",
|
|
37
|
-
} })))))
|
|
38
|
-
|
|
37
|
+
} })))) : ((serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.offer_text) &&
|
|
38
|
+
!isNewUiEnabled && (React.createElement("div", { className: "flex items-center" },
|
|
39
|
+
React.createElement(LottiePlayer, { animationData: getAnimationIcon("promoAnim"), width: "18px", height: "18px" }),
|
|
40
|
+
React.createElement("div", { className: "flex items-center mt-[2px]" },
|
|
41
|
+
React.createElement("span", { className: "bold-text", style: {
|
|
42
|
+
marginLeft: (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.offer_text) ? "6px" : "3px",
|
|
43
|
+
} }, (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.offer_text) || ""),
|
|
44
|
+
" "))))),
|
|
45
|
+
(isNewUiEnabled || (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.is_dp_enabled)) && (React.createElement("div", { className: "flex items-center" },
|
|
39
46
|
React.createElement(LottiePlayer, { animationData: getAnimationIcon("dotAnimation"), width: "12px", height: "12px" }),
|
|
40
47
|
React.createElement("span", { className: "ml-[6px]" },
|
|
41
48
|
React.createElement("span", { className: "bold-text", ref: (node) => CommonService.startViewerCount(node, viewersConfig), style: { fontVariantNumeric: "tabular-nums" } }),
|
|
@@ -47,13 +54,13 @@ const OfferBanner = ({ offerGradient, isSoldOut, serviceItem, renderIcon, isLogg
|
|
|
47
54
|
" ",
|
|
48
55
|
React.createElement("span", { className: "" },
|
|
49
56
|
(serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.is_dp_enabled) &&
|
|
50
|
-
Object.keys((
|
|
51
|
-
0 &&
|
|
52
|
-
((
|
|
57
|
+
Object.keys((_c = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.dp_discount_percents) !== null && _c !== void 0 ? _c : {})
|
|
58
|
+
.length === 0 &&
|
|
59
|
+
((_d = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.dp_discounted_seats) !== null && _d !== void 0 ? _d : []).length === 0
|
|
53
60
|
? null
|
|
54
61
|
: "Quedan pocos • ",
|
|
55
62
|
React.createElement("span", { className: "bold-text", ref: (node) => CommonService.startComprandoCount(node, 4, 16), style: { fontVariantNumeric: "tabular-nums" } }),
|
|
56
63
|
" ",
|
|
57
|
-
"comprando")))))));
|
|
64
|
+
"comprando"))))))));
|
|
58
65
|
};
|
|
59
66
|
export default OfferBanner;
|
|
@@ -3,8 +3,6 @@ interface SeatType {
|
|
|
3
3
|
label: string;
|
|
4
4
|
fare: number;
|
|
5
5
|
key: any;
|
|
6
|
-
apiSeatType?: string;
|
|
7
|
-
api_seat_type?: string;
|
|
8
6
|
}
|
|
9
7
|
interface SeatSectionProps {
|
|
10
8
|
seatTypes: SeatType[];
|
|
@@ -18,10 +16,6 @@ interface SeatSectionProps {
|
|
|
18
16
|
serviceItem?: any;
|
|
19
17
|
renderIcon?: (iconKey: string, size?: string) => React.ReactNode;
|
|
20
18
|
discountSeatPriceColor?: string;
|
|
21
|
-
isTrain?: boolean;
|
|
22
|
-
selectedSeatKey?: any;
|
|
23
|
-
onSeatSelect?: (key: any, price: number, seatKey: string, apiSeatType?: string) => void;
|
|
24
|
-
topLabelColor?: string;
|
|
25
19
|
}
|
|
26
|
-
declare function SeatSection({ seatTypes, availableSeats, isSoldOut, priceColor, currencySign, removeDuplicateSeats,
|
|
20
|
+
declare function SeatSection({ seatTypes, availableSeats, isSoldOut, priceColor, currencySign, removeDuplicateSeats, isPeru, serviceItem, renderIcon, dpSeatColor, discountSeatPriceColor, }: SeatSectionProps): React.ReactElement;
|
|
27
21
|
export default SeatSection;
|
|
@@ -8,13 +8,11 @@ function getAllSeatTypes(seatTypes) {
|
|
|
8
8
|
let seatTypesWithPrices = seatTypes.filter(Boolean).map((val) => ({
|
|
9
9
|
label: val === null || val === void 0 ? void 0 : val.label,
|
|
10
10
|
price: val === null || val === void 0 ? void 0 : val.fare,
|
|
11
|
-
key: val === null || val === void 0 ? void 0 : val.key,
|
|
12
|
-
apiSeatType: (val === null || val === void 0 ? void 0 : val.apiSeatType) || (val === null || val === void 0 ? void 0 : val.api_seat_type),
|
|
13
11
|
}));
|
|
14
12
|
seatTypesWithPrices.sort((a, b) => a.price - b.price);
|
|
15
13
|
return seatTypesWithPrices;
|
|
16
14
|
}
|
|
17
|
-
function getSortedSeatTypes(seatTypes
|
|
15
|
+
function getSortedSeatTypes(seatTypes) {
|
|
18
16
|
if (!(seatTypes === null || seatTypes === void 0 ? void 0 : seatTypes.length)) {
|
|
19
17
|
return [{ label: "Salon cama", price: 0 }];
|
|
20
18
|
}
|
|
@@ -23,9 +21,7 @@ function getSortedSeatTypes(seatTypes, isTrain) {
|
|
|
23
21
|
if (premiumIndex >= 3) {
|
|
24
22
|
seatTypesWithPrices[2] = seatTypesWithPrices[premiumIndex];
|
|
25
23
|
}
|
|
26
|
-
|
|
27
|
-
seatTypesWithPrices = seatTypesWithPrices.slice(0, 2);
|
|
28
|
-
}
|
|
24
|
+
seatTypesWithPrices = seatTypesWithPrices.slice(0, 2);
|
|
29
25
|
const seenPrices = new Set();
|
|
30
26
|
seatTypesWithPrices = seatTypesWithPrices.filter((seat) => {
|
|
31
27
|
if (seenPrices.has(seat.price))
|
|
@@ -58,10 +54,10 @@ function getUniqueSeats(seatTypes) {
|
|
|
58
54
|
function getNumberOfSeats(seatTypes) {
|
|
59
55
|
return seatTypes.filter((val) => !SEAT_EXCEPTIONS.includes(val.label)).length;
|
|
60
56
|
}
|
|
61
|
-
function SeatSection({ seatTypes, availableSeats, isSoldOut, priceColor, currencySign, removeDuplicateSeats,
|
|
57
|
+
function SeatSection({ seatTypes, availableSeats, isSoldOut, priceColor, currencySign, removeDuplicateSeats, isPeru, serviceItem, renderIcon, dpSeatColor, discountSeatPriceColor, }) {
|
|
62
58
|
var _a;
|
|
63
59
|
const uniqueSeats = getUniqueSeats(seatTypes);
|
|
64
|
-
const sortedSeatTypes = getSortedSeatTypes(seatTypes
|
|
60
|
+
const sortedSeatTypes = getSortedSeatTypes(seatTypes);
|
|
65
61
|
const numberOfSeats = getNumberOfSeats(seatTypes);
|
|
66
62
|
const isCentered = numberOfSeats < 2 || removeDuplicateSeats;
|
|
67
63
|
const formatPrice = (price) => availableSeats <= 0
|
|
@@ -69,36 +65,11 @@ function SeatSection({ seatTypes, availableSeats, isSoldOut, priceColor, currenc
|
|
|
69
65
|
: CommonService.currency(price, currencySign);
|
|
70
66
|
const renderSeatNames = () => {
|
|
71
67
|
const seats = removeDuplicateSeats ? uniqueSeats : sortedSeatTypes;
|
|
72
|
-
return seats.map((val, key) => {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
: undefined },
|
|
78
|
-
isTrain && (React.createElement("div", { style: {
|
|
79
|
-
border: `1px solid ${val.label === selectedSeatKey ? topLabelColor : "#ccc"}`,
|
|
80
|
-
borderRadius: "50%",
|
|
81
|
-
width: "14px",
|
|
82
|
-
height: "14px",
|
|
83
|
-
minWidth: "14px",
|
|
84
|
-
marginRight: "10px",
|
|
85
|
-
display: "flex",
|
|
86
|
-
alignItems: "center",
|
|
87
|
-
justifyContent: "center",
|
|
88
|
-
} }, val.label === selectedSeatKey && (React.createElement("div", { style: {
|
|
89
|
-
backgroundColor: topLabelColor,
|
|
90
|
-
borderRadius: "50%",
|
|
91
|
-
width: "7px",
|
|
92
|
-
height: "7px",
|
|
93
|
-
} })))),
|
|
94
|
-
React.createElement("span", { key: key, className: `flex items-center justify-between text-[13.33px] ${isSoldOut ? "text-[#c0c0c0]" : ""}` }, typeof val.label === "string" || typeof val.label === "number"
|
|
95
|
-
? removeDuplicateSeats && isPeru
|
|
96
|
-
? CommonService.truncateSeatLabel(val.label)
|
|
97
|
-
: isTrain
|
|
98
|
-
? CommonService.truncateSeatLabel(val.label, 8)
|
|
99
|
-
: val.label
|
|
100
|
-
: null)));
|
|
101
|
-
});
|
|
68
|
+
return seats.map((val, key) => SEAT_EXCEPTIONS.includes(val.label) ? null : (React.createElement("span", { key: key, className: `flex items-center justify-between text-[13.33px] ${isSoldOut ? "text-[#c0c0c0]" : ""}` }, typeof val.label === "string" || typeof val.label === "number"
|
|
69
|
+
? removeDuplicateSeats && isPeru
|
|
70
|
+
? CommonService.truncateSeatLabel(val.label)
|
|
71
|
+
: val.label
|
|
72
|
+
: null)));
|
|
102
73
|
};
|
|
103
74
|
const renderSeatPrices = () => {
|
|
104
75
|
if (isPeru) {
|
|
@@ -176,7 +147,7 @@ function SeatSection({ seatTypes, availableSeats, isSoldOut, priceColor, currenc
|
|
|
176
147
|
React.createElement("div", { className: "col-start-1 row-start-3 flex h-[20px] items-end" },
|
|
177
148
|
React.createElement("span", { className: "text-[13.33px] font-normal leading-[20px] text-[#464647]" }, "Desde")),
|
|
178
149
|
React.createElement("div", { className: "col-start-2 row-start-1 flex items-center justify-center absolute", style: { top: "-22px", left: "50%", transform: "translateX(-50%)" } }, !isNaN(Number(dpDiscountPercent)) &&
|
|
179
|
-
Number(dpDiscountPercent) > 0 && (React.createElement("span", { className:
|
|
150
|
+
Number(dpDiscountPercent) > 0 && (React.createElement("span", { className: `rounded-[100px] ${discountSeatPriceColor} bg-[#ff5964] px-[6px] text-[12px] bold-text leading-[20px] text-white`, style: {
|
|
180
151
|
animation: "pulse-zoom 2s ease-in-out infinite",
|
|
181
152
|
whiteSpace: "nowrap",
|
|
182
153
|
} },
|
|
@@ -197,7 +168,7 @@ function SeatSection({ seatTypes, availableSeats, isSoldOut, priceColor, currenc
|
|
|
197
168
|
} }))),
|
|
198
169
|
React.createElement("div", { className: "col-start-2 row-start-3 flex h-[30px] items-end justify-center relative" },
|
|
199
170
|
React.createElement("span", { className: "flex items-center gap-[6px] text-[22px] bold-text leading-[30px]", style: { color: isSoldOut ? "#c0c0c0" : "#ff5964" } },
|
|
200
|
-
React.createElement("div", { className: "absolute", style: { left: isPeru ? "-
|
|
171
|
+
React.createElement("div", { className: "absolute", style: { left: isPeru ? "-1px" : "-19px", bottom: "1px" } }, renderIcon("fireIcon", "16px")),
|
|
201
172
|
availableSeats <= 0
|
|
202
173
|
? CommonService.currency(0, currencySign)
|
|
203
174
|
: CommonService.discountedCurrency(Number(seatTypeFare), currencySign)))));
|
|
@@ -268,7 +239,7 @@ function SeatSection({ seatTypes, availableSeats, isSoldOut, priceColor, currenc
|
|
|
268
239
|
React.createElement("div", { className: "col-start-2 row-start-3 flex h-[30px] items-end justify-center relative" },
|
|
269
240
|
React.createElement("span", { className: "flex items-center gap-[6px] text-[22px] bold-text leading-[30px]", style: { color: isSoldOut ? "#c0c0c0" : discountSeatPriceColor } },
|
|
270
241
|
React.createElement("div", { className: "absolute", style: {
|
|
271
|
-
left: isPeru ? "-
|
|
242
|
+
left: isPeru ? "-1px" : "-18px",
|
|
272
243
|
bottom: "1px",
|
|
273
244
|
} }, renderIcon("fireIcon", "16px")),
|
|
274
245
|
availableSeats <= 0
|
|
@@ -22,7 +22,6 @@ interface DateTimeSectionMobileProps {
|
|
|
22
22
|
tooltipBgColor?: string;
|
|
23
23
|
showLastSeats?: boolean;
|
|
24
24
|
discountSeatPriceColor?: string;
|
|
25
|
-
isTrain?: boolean;
|
|
26
25
|
}
|
|
27
|
-
declare function DateTimeSectionMobile({ onBookButtonPress, isCiva, isSoldOut, isLinatal, isPeru, orignLabel, destinationLabel, originIcon, destinationIcon, travelDate, arrivalDate, depTime, arrTime, seatTypes, seatPriceColor, currencySign, availableSeats, removeDuplicateSeats, serviceItem, tooltipBgColor, showLastSeats, discountSeatPriceColor,
|
|
26
|
+
declare function DateTimeSectionMobile({ onBookButtonPress, isCiva, isSoldOut, isLinatal, isPeru, orignLabel, destinationLabel, originIcon, destinationIcon, travelDate, arrivalDate, depTime, arrTime, seatTypes, seatPriceColor, currencySign, availableSeats, removeDuplicateSeats, serviceItem, tooltipBgColor, showLastSeats, discountSeatPriceColor, }: DateTimeSectionMobileProps): React.ReactElement;
|
|
28
27
|
export default DateTimeSectionMobile;
|
|
@@ -23,10 +23,8 @@ const getCleanedDepTime = (raw) => {
|
|
|
23
23
|
};
|
|
24
24
|
const TimeRow = ({ label, icon, alt, date, timeContent, isSoldOut, }) => {
|
|
25
25
|
const formattedDate = DateService.getServiceItemDate(date);
|
|
26
|
-
const dotPositionClass = formattedDate.includes("dom")
|
|
27
|
-
|
|
28
|
-
: "";
|
|
29
|
-
return (React.createElement("div", { className: `flex items-center min-[420]:text-[13px] text-[12px] justify-between ${isSoldOut ? "text-[#c0c0c0]" : ""}` },
|
|
26
|
+
const dotPositionClass = formattedDate.includes("dom") ? "max-[399px]:left-[53%]" : "";
|
|
27
|
+
return React.createElement("div", { className: `flex items-center min-[420]:text-[13px] text-[12px] justify-between ${isSoldOut ? "text-[#c0c0c0]" : ""}` },
|
|
30
28
|
React.createElement("div", { className: "flex items-center", style: { flex: 1 } },
|
|
31
29
|
React.createElement("div", null,
|
|
32
30
|
" ",
|
|
@@ -35,9 +33,9 @@ const TimeRow = ({ label, icon, alt, date, timeContent, isSoldOut, }) => {
|
|
|
35
33
|
React.createElement("div", { className: "flex items-center relative capitalize justify-between", style: { flex: 1 } },
|
|
36
34
|
React.createElement("span", { className: "cursor-pointer black-text" }, formattedDate),
|
|
37
35
|
React.createElement("div", { className: `absolute left-[50%] ${dotPositionClass}` }, "\u2022"),
|
|
38
|
-
React.createElement("div", { className: "font-[900] relative black-text" }, timeContent))))
|
|
36
|
+
React.createElement("div", { className: "font-[900] relative black-text" }, timeContent))));
|
|
39
37
|
};
|
|
40
|
-
function DateTimeSectionMobile({ onBookButtonPress, isCiva, isSoldOut, isLinatal, isPeru, orignLabel, destinationLabel, originIcon, destinationIcon, travelDate, arrivalDate, depTime, arrTime, seatTypes, seatPriceColor, currencySign, availableSeats, removeDuplicateSeats, serviceItem, tooltipBgColor, showLastSeats, discountSeatPriceColor,
|
|
38
|
+
function DateTimeSectionMobile({ onBookButtonPress, isCiva, isSoldOut, isLinatal, isPeru, orignLabel, destinationLabel, originIcon, destinationIcon, travelDate, arrivalDate, depTime, arrTime, seatTypes, seatPriceColor, currencySign, availableSeats, removeDuplicateSeats, serviceItem, tooltipBgColor, showLastSeats, discountSeatPriceColor, }) {
|
|
41
39
|
const { cleaned: cleanedDepTime, hasAM, hasPM } = getCleanedDepTime(depTime);
|
|
42
40
|
const depTimeContent = isLinatal ? (React.createElement("div", null,
|
|
43
41
|
React.createElement("span", null,
|
|
@@ -49,11 +47,7 @@ function DateTimeSectionMobile({ onBookButtonPress, isCiva, isSoldOut, isLinatal
|
|
|
49
47
|
? null
|
|
50
48
|
: DateService.ampmOnly(depTime)))) : (DateService.formatTime(depTime));
|
|
51
49
|
return (React.createElement("div", { className: "flex justify-between gap-[5px] w-full", onClick: onBookButtonPress },
|
|
52
|
-
React.createElement("div", { className:
|
|
53
|
-
justifyContent: isCiva && "center",
|
|
54
|
-
minHeight: isTrain ? undefined : "2.5rem",
|
|
55
|
-
alignSelf: isTrain ? "stretch" : undefined,
|
|
56
|
-
} },
|
|
50
|
+
React.createElement("div", { className: "min-h-[2.5rem] flex flex-col justify-between gap-[4px] w-[50%] ", style: { justifyContent: isCiva && "center" } },
|
|
57
51
|
React.createElement(TimeRow, { label: orignLabel, icon: originIcon, alt: "origin", date: travelDate, timeContent: depTimeContent, isSoldOut: isSoldOut }),
|
|
58
52
|
isCiva ? null : (React.createElement(TimeRow, { label: destinationLabel, icon: destinationIcon, alt: "destination", date: arrivalDate, timeContent: DateService.formatTime(arrTime), isSoldOut: isSoldOut }))),
|
|
59
53
|
React.createElement("div", { style: {
|
|
@@ -62,6 +56,6 @@ function DateTimeSectionMobile({ onBookButtonPress, isCiva, isSoldOut, isLinatal
|
|
|
62
56
|
backgroundColor: "#ccc",
|
|
63
57
|
margin: "auto",
|
|
64
58
|
} }),
|
|
65
|
-
React.createElement(SeatSectionMobile, { seatTypes: seatTypes, isSoldOut: isSoldOut, isPeru: isPeru, seatPriceColor: seatPriceColor, currencySign: currencySign, availableSeats: availableSeats, removeDuplicateSeats: removeDuplicateSeats, serviceItem: serviceItem, tooltipBgColor: tooltipBgColor, showLastSeats: showLastSeats, discountSeatPriceColor: discountSeatPriceColor
|
|
59
|
+
React.createElement(SeatSectionMobile, { seatTypes: seatTypes, isSoldOut: isSoldOut, isPeru: isPeru, seatPriceColor: seatPriceColor, currencySign: currencySign, availableSeats: availableSeats, removeDuplicateSeats: removeDuplicateSeats, serviceItem: serviceItem, tooltipBgColor: tooltipBgColor, showLastSeats: showLastSeats, discountSeatPriceColor: discountSeatPriceColor })));
|
|
66
60
|
}
|
|
67
61
|
export default DateTimeSectionMobile;
|
|
@@ -16,7 +16,6 @@ interface SeatSectionMobileProps {
|
|
|
16
16
|
tooltipBgColor?: string;
|
|
17
17
|
showLastSeats?: boolean;
|
|
18
18
|
discountSeatPriceColor?: string;
|
|
19
|
-
isTrain?: boolean;
|
|
20
19
|
}
|
|
21
|
-
declare function SeatSectionMobile({ seatTypes: seatTypesData, isSoldOut, isPeru, seatPriceColor, currencySign, availableSeats, removeDuplicateSeats, serviceItem, tooltipBgColor, showLastSeats, discountSeatPriceColor,
|
|
20
|
+
declare function SeatSectionMobile({ seatTypes: seatTypesData, isSoldOut, isPeru, seatPriceColor, currencySign, availableSeats, removeDuplicateSeats, serviceItem, tooltipBgColor, showLastSeats, discountSeatPriceColor, }: SeatSectionMobileProps): React.ReactElement;
|
|
22
21
|
export default SeatSectionMobile;
|
|
@@ -11,7 +11,7 @@ const EXCEPTIONS = [
|
|
|
11
11
|
"blanco",
|
|
12
12
|
"asiento_mascota",
|
|
13
13
|
];
|
|
14
|
-
const SeatRow = ({ type, index, displayLabel, fare, isSoldOut, seatPriceColor, hasMultipleTypes, textSize,
|
|
14
|
+
const SeatRow = ({ type, index, displayLabel, fare, isSoldOut, seatPriceColor, hasMultipleTypes, textSize, }) => {
|
|
15
15
|
if (EXCEPTIONS.includes(type.label))
|
|
16
16
|
return null;
|
|
17
17
|
const rowClass = hasMultipleTypes
|
|
@@ -20,9 +20,7 @@ const SeatRow = ({ type, index, displayLabel, fare, isSoldOut, seatPriceColor, h
|
|
|
20
20
|
const labelColor = isSoldOut ? "#bbb" : "#464647";
|
|
21
21
|
const priceColor = isSoldOut ? "#bbb" : seatPriceColor;
|
|
22
22
|
return (React.createElement("div", { className: rowClass, key: index },
|
|
23
|
-
React.createElement("span", { className: `min-[420]:text-[13px] ${textSize} `, style: { color: labelColor } },
|
|
24
|
-
? commonService.truncateSeatLabel(displayLabel, 8)
|
|
25
|
-
: displayLabel),
|
|
23
|
+
React.createElement("span", { className: `min-[420]:text-[13px] ${textSize} `, style: { color: labelColor } }, displayLabel),
|
|
26
24
|
React.createElement("span", { className: `min-[420]:text-[13px] ${textSize} bold-text`, style: { color: priceColor } }, fare)));
|
|
27
25
|
};
|
|
28
26
|
const getFilteredSeats = (item) => {
|
|
@@ -44,8 +42,8 @@ const getUniqueSeats = (data, limit) => {
|
|
|
44
42
|
.sort((a, b) => a.fare - b.fare)
|
|
45
43
|
.slice(0, limit);
|
|
46
44
|
};
|
|
47
|
-
function SeatSectionMobile({ seatTypes: seatTypesData, isSoldOut, isPeru, seatPriceColor, currencySign, availableSeats, removeDuplicateSeats, serviceItem, tooltipBgColor, showLastSeats, discountSeatPriceColor,
|
|
48
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
45
|
+
function SeatSectionMobile({ seatTypes: seatTypesData, isSoldOut, isPeru, seatPriceColor, currencySign, availableSeats, removeDuplicateSeats, serviceItem, tooltipBgColor, showLastSeats, discountSeatPriceColor, }) {
|
|
46
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
49
47
|
const hasMultipleTypes = ((_a = seatTypesData === null || seatTypesData === void 0 ? void 0 : seatTypesData.length) !== null && _a !== void 0 ? _a : 0) > 2;
|
|
50
48
|
const getFare = (fare) => {
|
|
51
49
|
if (removeDuplicateSeats && availableSeats <= 0 && !isPeru) {
|
|
@@ -103,24 +101,19 @@ function SeatSectionMobile({ seatTypes: seatTypesData, isSoldOut, isPeru, seatPr
|
|
|
103
101
|
React.createElement("span", { className: "min-[420]:text-[13px] text-[12px] text-[#464647]", style: { opacity: isSoldOut ? 0.5 : 1 } }, "Agotado"))) : null));
|
|
104
102
|
};
|
|
105
103
|
const renderSeats = () => {
|
|
106
|
-
var _a, _b;
|
|
104
|
+
var _a, _b, _c;
|
|
107
105
|
if (isPeru) {
|
|
108
106
|
return renderPeruSeats();
|
|
109
107
|
}
|
|
110
108
|
if (removeDuplicateSeats) {
|
|
111
109
|
const uniqueSeats = getUniqueSeats(seatTypesData, 3);
|
|
112
|
-
return uniqueSeats.map((type, i) => (React.createElement(SeatRow, { key: i, type: type, index: i, displayLabel: commonService.truncateSeatLabel(type.label), fare: getFare(type.fare), isSoldOut: isSoldOut, seatPriceColor: seatPriceColor, hasMultipleTypes: hasMultipleTypes, textSize: "text-[11px]"
|
|
110
|
+
return uniqueSeats.map((type, i) => (React.createElement(SeatRow, { key: i, type: type, index: i, displayLabel: commonService.truncateSeatLabel(type.label), fare: getFare(type.fare), isSoldOut: isSoldOut, seatPriceColor: seatPriceColor, hasMultipleTypes: hasMultipleTypes, textSize: "text-[11px]" })));
|
|
113
111
|
}
|
|
114
|
-
|
|
115
|
-
return (_b = (isTrain ? filteredSeats : filteredSeats === null || filteredSeats === void 0 ? void 0 : filteredSeats.slice(0, 2))) === null || _b === void 0 ? void 0 : _b.map((type, i) => (React.createElement(SeatRow, { key: i, type: type, index: i, displayLabel: type.label, fare: getFare(type.fare), isSoldOut: isSoldOut, seatPriceColor: seatPriceColor, hasMultipleTypes: hasMultipleTypes, textSize: "text-[12px]", isTrain: isTrain })));
|
|
112
|
+
return (_c = (_b = (_a = seatTypesData === null || seatTypesData === void 0 ? void 0 : seatTypesData.filter((item) => getFilteredSeats(item.label))) === null || _a === void 0 ? void 0 : _a.sort((a, b) => a.fare - b.fare)) === null || _b === void 0 ? void 0 : _b.slice(0, 2)) === null || _c === void 0 ? void 0 : _c.map((type, i) => (React.createElement(SeatRow, { key: i, type: type, index: i, displayLabel: type.label, fare: getFare(type.fare), isSoldOut: isSoldOut, seatPriceColor: seatPriceColor, hasMultipleTypes: hasMultipleTypes, textSize: "text-[12px]" })));
|
|
116
113
|
};
|
|
117
114
|
const seats = removeDuplicateSeats
|
|
118
115
|
? getUniqueSeats(seatTypesData, 3)
|
|
119
|
-
: (() =>
|
|
120
|
-
var _a;
|
|
121
|
-
const filtered = (_a = seatTypesData === null || seatTypesData === void 0 ? void 0 : seatTypesData.filter((item) => getFilteredSeats(item.label))) === null || _a === void 0 ? void 0 : _a.sort((a, b) => a.fare - b.fare);
|
|
122
|
-
return isTrain ? filtered : filtered === null || filtered === void 0 ? void 0 : filtered.slice(0, 2);
|
|
123
|
-
})();
|
|
116
|
+
: (_c = (_b = seatTypesData === null || seatTypesData === void 0 ? void 0 : seatTypesData.filter((item) => getFilteredSeats(item.label))) === null || _b === void 0 ? void 0 : _b.sort((a, b) => a.fare - b.fare)) === null || _c === void 0 ? void 0 : _c.slice(0, 2);
|
|
124
117
|
const discountedSeats = seats === null || seats === void 0 ? void 0 : seats.map((seat) => (Object.assign(Object.assign({}, seat), commonService.calculateDiscountedPrice(seat.fare, serviceItem))));
|
|
125
118
|
const peruLowestFare = isPeru ? getLowestFare() : null;
|
|
126
119
|
const peruDiscountCalc = isPeru && peruLowestFare != null
|
|
@@ -131,7 +124,7 @@ function SeatSectionMobile({ seatTypes: seatTypesData, isSoldOut, isPeru, seatPr
|
|
|
131
124
|
peruDiscountCalc.originalPrice !== peruDiscountCalc.discountedPrice
|
|
132
125
|
: discountedSeats === null || discountedSeats === void 0 ? void 0 : discountedSeats.some((s) => s.originalPrice !== s.discountedPrice);
|
|
133
126
|
const discountSeat = isPeru && peruDiscountCalc
|
|
134
|
-
? Object.assign({ label: "", fare: peruLowestFare }, peruDiscountCalc) : (
|
|
127
|
+
? Object.assign({ label: "", fare: peruLowestFare }, peruDiscountCalc) : (_d = discountedSeats === null || discountedSeats === void 0 ? void 0 : discountedSeats.filter((seat) => !EXCEPTIONS.includes(seat.label))) === null || _d === void 0 ? void 0 : _d.sort((a, b) => a.discountedPrice - b.discountedPrice)[0];
|
|
135
128
|
const discountValue = (() => {
|
|
136
129
|
if ((serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.discount_type) === "percentage" &&
|
|
137
130
|
typeof (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.discount_value) === "number") {
|
|
@@ -154,14 +147,14 @@ function SeatSectionMobile({ seatTypes: seatTypesData, isSoldOut, isPeru, seatPr
|
|
|
154
147
|
};
|
|
155
148
|
const originalDpPrice = getMinValue(serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.original_dp_price);
|
|
156
149
|
const dpDiscountPercent = getMinValue(serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.dp_discount_percents);
|
|
157
|
-
const firstSeatFare = (
|
|
150
|
+
const firstSeatFare = (_f = (_e = seatTypesData === null || seatTypesData === void 0 ? void 0 : seatTypesData.filter((item) => getFilteredSeats(item.label) && !EXCEPTIONS.includes(item.label))) === null || _e === void 0 ? void 0 : _e.sort((a, b) => a.fare - b.fare)[0]) === null || _f === void 0 ? void 0 : _f.fare;
|
|
158
151
|
const hasDpDiscount = (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.dp_discounted_seats) &&
|
|
159
152
|
(serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.dp_discount_percents) &&
|
|
160
153
|
originalDpPrice != null &&
|
|
161
154
|
dpDiscountPercent != null &&
|
|
162
155
|
firstSeatFare != null;
|
|
163
156
|
return (React.createElement("div", { className: "content-center relative", style: { width: "40%" } }, (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.is_dp_enabled) &&
|
|
164
|
-
!((
|
|
157
|
+
!((_g = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.dp_discounted_seats) === null || _g === void 0 ? void 0 : _g.length) &&
|
|
165
158
|
!dpDiscountPercent ? (React.createElement("div", { className: "flex flex-col justify-between h-[2.5rem]", style: { gap: isSoldOut ? "0px" : "5px" } }, renderDpSeats())) : hasDpDiscount ? (React.createElement("div", { className: "relative grid grid-cols-[auto_auto] justify-between gap-x-[8px] " },
|
|
166
159
|
!isNaN(Number(dpDiscountPercent)) &&
|
|
167
160
|
Number(dpDiscountPercent) > 0 && (React.createElement("div", { className: "absolute -top-[18px] right-[0px]", style: {
|
|
@@ -193,7 +186,7 @@ function SeatSectionMobile({ seatTypes: seatTypesData, isSoldOut, isPeru, seatPr
|
|
|
193
186
|
React.createElement("span", { className: "flex items-center justify-end gap-[4px] text-[14px] bold-text leading-[24px]", style: {
|
|
194
187
|
color: isSoldOut ? "#bbb" : discountSeatPriceColor || "#ff5964",
|
|
195
188
|
} },
|
|
196
|
-
((
|
|
189
|
+
((_h = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.icons) === null || _h === void 0 ? void 0 : _h.fireIcon) ? (React.createElement("img", { src: serviceItem.icons.fireIcon, alt: "discount", className: "h-[16px] w-[16px] object-contain", style: { filter: isSoldOut ? "grayscale" : "" } })) : null,
|
|
197
190
|
commonService.discountedCurrency(Number(firstSeatFare), currencySign)),
|
|
198
191
|
isSoldOut ? (React.createElement("span", { className: "col-span-2 min-[420]:text-[13px] text-right text-[12px] text-[#ccc]" }, "Agotado")) : null)) : hasDiscount && discountSeat ? (React.createElement("div", null,
|
|
199
192
|
React.createElement("div", { className: "relative grid grid-cols-[auto_auto] justify-between gap-x-[8px] " },
|
|
@@ -227,8 +220,8 @@ function SeatSectionMobile({ seatTypes: seatTypesData, isSoldOut, isPeru, seatPr
|
|
|
227
220
|
React.createElement("span", { className: "flex items-center justify-end gap-[4px] text-[14px] bold-text leading-[24px]", style: {
|
|
228
221
|
color: isSoldOut ? "#bbb" : discountSeatPriceColor || "#ff5964",
|
|
229
222
|
} },
|
|
230
|
-
((
|
|
231
|
-
commonService.discountedCurrency(discountSeat.discountedPrice, currencySign))))) : (React.createElement("div", { className:
|
|
223
|
+
((_j = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.icons) === null || _j === void 0 ? void 0 : _j.fireIcon) ? (React.createElement("img", { src: serviceItem.icons.fireIcon, alt: "discount", className: "h-[16px] w-[16px] object-contain", style: { opacity: isSoldOut ? 0.5 : 1 } })) : null,
|
|
224
|
+
commonService.discountedCurrency(discountSeat.discountedPrice, currencySign))))) : (React.createElement("div", { className: "flex flex-col justify-between h-[2.5rem] ", style: {
|
|
232
225
|
gap: isSoldOut ? "0px" : "5px",
|
|
233
226
|
justifyContent: hasMultipleTypes ? "space-between" : "center",
|
|
234
227
|
} },
|
|
@@ -3,7 +3,7 @@ declare const commonService: {
|
|
|
3
3
|
discountedCurrency(amount: number, currencySign?: string): string;
|
|
4
4
|
copyObject: (ob: any) => any;
|
|
5
5
|
getServiceTypeLabelForFilters: (service_type: any) => "Tipo de servicio" | "Punto de embarque" | "Tipo de asiento" | "SERVICIOS" | "";
|
|
6
|
-
truncateSeatLabel: (label: string | number
|
|
6
|
+
truncateSeatLabel: (label: string | number) => string;
|
|
7
7
|
getAmenitiesImage: (name: string, serviceItem: any) => string;
|
|
8
8
|
getAmenityName: (rawAmenity: string) => string;
|
|
9
9
|
getSeatNameForFilters: (rawSeat: any) => any;
|
|
@@ -14,6 +14,9 @@ declare const commonService: {
|
|
|
14
14
|
discount_type?: string;
|
|
15
15
|
discount_value?: number;
|
|
16
16
|
max_discount?: number;
|
|
17
|
+
discounts?: Array<{
|
|
18
|
+
new_ui_enabled?: boolean;
|
|
19
|
+
}>;
|
|
17
20
|
}) => {
|
|
18
21
|
originalPrice: number;
|
|
19
22
|
discountedPrice: number;
|
|
@@ -34,15 +34,11 @@ const commonService = {
|
|
|
34
34
|
return "";
|
|
35
35
|
}
|
|
36
36
|
},
|
|
37
|
-
truncateSeatLabel: (label
|
|
37
|
+
truncateSeatLabel: (label) => {
|
|
38
38
|
if (typeof label !== "string")
|
|
39
39
|
return String(label);
|
|
40
40
|
if (label.includes("("))
|
|
41
41
|
return label;
|
|
42
|
-
// If maxLength provided, hard-truncate regardless of word count
|
|
43
|
-
if (maxLength != null && label.length > maxLength) {
|
|
44
|
-
return label.slice(0, maxLength) + "...";
|
|
45
|
-
}
|
|
46
42
|
const words = label.trim().split(/\s+/);
|
|
47
43
|
const truncateWord = (word) => word.length > 5 ? word.slice(0, 3) + "..." : word;
|
|
48
44
|
if (words.length === 1)
|
|
@@ -279,6 +275,7 @@ const commonService = {
|
|
|
279
275
|
return label.toLowerCase();
|
|
280
276
|
},
|
|
281
277
|
calculateDiscountedPrice: (originalPrice, serviceItem) => {
|
|
278
|
+
var _a;
|
|
282
279
|
const price = typeof originalPrice === "string"
|
|
283
280
|
? parseFloat(originalPrice)
|
|
284
281
|
: originalPrice;
|
|
@@ -286,6 +283,12 @@ const commonService = {
|
|
|
286
283
|
return { originalPrice: price, discountedPrice: price };
|
|
287
284
|
}
|
|
288
285
|
const { discount_type, discount_value, max_discount } = serviceItem;
|
|
286
|
+
// Check if there's a discount with new_ui_enabled = true
|
|
287
|
+
const newUiEnabled = (_a = serviceItem.discounts) === null || _a === void 0 ? void 0 : _a.some((d) => d.new_ui_enabled === true);
|
|
288
|
+
// Only apply discount if new_ui_enabled is true OR if regular discount exists
|
|
289
|
+
if (!newUiEnabled && (!discount_type || discount_value == null)) {
|
|
290
|
+
return { originalPrice: price, discountedPrice: price };
|
|
291
|
+
}
|
|
289
292
|
const fixedDiscount = discount_type === "fixed" && discount_value != null ? discount_value : 0;
|
|
290
293
|
const percentageDiscount = discount_type === "percentage" && discount_value != null
|
|
291
294
|
? (price * discount_value) / 100
|
|
@@ -300,10 +303,14 @@ const commonService = {
|
|
|
300
303
|
startViewerCount: (node, viewersConfig) => {
|
|
301
304
|
if (!node || !viewersConfig)
|
|
302
305
|
return;
|
|
306
|
+
const { min, max, interval = 5000 } = viewersConfig;
|
|
307
|
+
const configKey = `${min}-${max}-${interval}`;
|
|
308
|
+
if (node.dataset.viewerId && node.dataset.viewerConfig === configKey) {
|
|
309
|
+
return;
|
|
310
|
+
}
|
|
303
311
|
const prevId = node.dataset.viewerId;
|
|
304
312
|
if (prevId)
|
|
305
313
|
clearInterval(Number(prevId));
|
|
306
|
-
const { min, max, interval = 5000 } = viewersConfig;
|
|
307
314
|
const clamp = (v) => Math.min(max, Math.max(min, v));
|
|
308
315
|
const initialValue = Math.floor(Math.random() * (max - min + 1)) + min;
|
|
309
316
|
node.textContent = String(initialValue);
|
|
@@ -314,6 +321,7 @@ const commonService = {
|
|
|
314
321
|
node.textContent = String(clamp(Math.round(next)));
|
|
315
322
|
}, interval);
|
|
316
323
|
node.dataset.viewerId = String(id);
|
|
324
|
+
node.dataset.viewerConfig = configKey;
|
|
317
325
|
},
|
|
318
326
|
startCountdown: (node, countdownSeconds = 599) => {
|
|
319
327
|
if (!node)
|
|
@@ -343,6 +351,10 @@ const commonService = {
|
|
|
343
351
|
startComprandoCount: (node, min = 4, max = 16) => {
|
|
344
352
|
if (!node)
|
|
345
353
|
return;
|
|
354
|
+
const configKey = `${min}-${max}`;
|
|
355
|
+
if (node.dataset.comprandoId && node.dataset.comprandoConfig === configKey) {
|
|
356
|
+
return;
|
|
357
|
+
}
|
|
346
358
|
const prevId = node.dataset.comprandoId;
|
|
347
359
|
if (prevId)
|
|
348
360
|
clearInterval(Number(prevId));
|
|
@@ -359,6 +371,7 @@ const commonService = {
|
|
|
359
371
|
node.textContent = String(next);
|
|
360
372
|
}, 5000); // Update every 5 seconds
|
|
361
373
|
node.dataset.comprandoId = String(id);
|
|
374
|
+
node.dataset.comprandoConfig = configKey;
|
|
362
375
|
},
|
|
363
376
|
};
|
|
364
377
|
export default commonService;
|
package/package.json
CHANGED
package/src/KuposUIComponent.tsx
CHANGED
|
@@ -32,6 +32,9 @@ interface KuposUIComponentProps {
|
|
|
32
32
|
orignLabel?: string;
|
|
33
33
|
destinationLabel?: string;
|
|
34
34
|
t?: (key: string) => string;
|
|
35
|
+
ticketQuantity?: number;
|
|
36
|
+
onIncreaseTicketQuantity?: (serviceItem: any) => void;
|
|
37
|
+
onDecreaseTicketQuantity?: (serviceItem: any) => void;
|
|
35
38
|
|
|
36
39
|
// New ServiceItem props
|
|
37
40
|
id?: string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"v":"5.7.4","ip":0,"op":15,"fr":30,"w":512,"h":512,"nm":"F","assets":[],"layers":[{"ind":1,"nm":"Y","sr":1,"ks":{"o":{"a":0,"k":0},"r":{"a":0,"k":0},"p":{"a":0,"k":[258.695,426.49,0],"l":2},"a":{"a":0,"k":[0,0,0],"l":2},"s":{"a":0,"k":[60,60,100],"l":2}},"ip":0,"op":15,"st":0,"ty":3},{"ind":2,"nm":"F","sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":-3,"s":[-1]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":4,"s":[1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":11,"s":[-1]},{"t":18,"s":[1]}]},"p":{"a":0,"k":[-2.695,0.01,0],"l":2},"a":{"a":0,"k":[0,170,0],"l":2},"s":{"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,2.289]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":-2,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,-1.289]},"t":2,"s":[96,96,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":6,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":10,"s":[96,96,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":14,"s":[100,100,100]},{"t":18,"s":[100,100,100]}],"a":1,"l":2}},"shapes":[{"ty":"gr","nm":"S","bm":0,"it":[{"ty":"sh","nm":"P","ind":0,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":-7,"s":[{"i":[[48.167,40.785],[29.132,-81.28],[-2.304,-44.664],[-7.75,0],[2.164,64.44],[15.957,28.579]],"o":[[-4.128,76.623],[-8.542,32.656],[5.181,96.125],[54.75,0],[-1.749,-51.64],[-6.256,-51.301]],"v":[[-8.389,-153.358],[-62.274,-5.213],[-87.726,79.72],[2.75,170.5],[81.947,77.156],[45.058,-12.26]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[-2.027,82.31],[16.056,-53.018],[-2.304,-44.664],[-7.75,0],[2.164,64.44],[15.957,28.579]],"o":[[-64.412,81.037],[-8.542,32.656],[5.181,96.125],[54.75,0],[-1.749,-51.64],[-12.944,-48.873]],"v":[[-1.914,-166.923],[-62.274,-18.158],[-87.726,79.72],[2.75,170.5],[81.947,77.156],[45.058,-25.205]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":7,"s":[{"i":[[48.167,40.785],[29.132,-81.28],[-2.304,-44.664],[-7.75,0],[2.164,64.44],[15.957,28.579]],"o":[[-4.128,76.623],[-8.542,32.656],[5.181,96.125],[54.75,0],[-1.749,-51.64],[-6.256,-51.301]],"v":[[-8.389,-153.358],[-62.274,-5.213],[-87.726,79.72],[2.75,170.5],[81.947,77.156],[45.058,-12.26]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":14,"s":[{"i":[[-2.027,82.31],[16.056,-53.018],[-2.304,-44.664],[-7.75,0],[2.164,64.44],[15.957,28.579]],"o":[[-64.412,81.037],[-8.542,32.656],[5.181,96.125],[54.75,0],[-1.749,-51.64],[-12.944,-48.873]],"v":[[-1.914,-166.923],[-62.274,-18.158],[-87.726,79.72],[2.75,170.5],[81.947,77.156],[45.058,-25.205]],"c":true}]},{"t":21,"s":[{"i":[[48.167,40.785],[29.132,-81.28],[-2.304,-44.664],[-7.75,0],[2.164,64.44],[15.957,28.579]],"o":[[-4.128,76.623],[-8.542,32.656],[5.181,96.125],[54.75,0],[-1.749,-51.64],[-6.256,-51.301]],"v":[[-8.389,-153.358],[-62.274,-5.213],[-87.726,79.72],[2.75,170.5],[81.947,77.156],[45.058,-12.26]],"c":true}]}],"a":1}},{"ty":"fl","nm":"F","bm":0,"c":{"a":0,"k":[1,0.817,0.184,1]},"o":{"a":0,"k":100},"r":1},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]}],"ip":0,"op":15,"st":0,"parent":1,"ty":4},{"ind":3,"nm":"F","sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":-7,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[2]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":7,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":14,"s":[2]},{"t":21,"s":[0]}]},"p":{"a":0,"k":[-43.551,-9.952,0],"l":2},"a":{"a":0,"k":[-40,160,0],"l":2},"s":{"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[100.281,100.281,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":7,"s":[92,92,100]},{"t":14,"s":[100.281,100.281,100]}],"a":1,"l":2}},"shapes":[{"ty":"gr","nm":"S","bm":0,"it":[{"ty":"sh","nm":"P","ind":0,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":-17,"s":[{"i":[[15.5,11.25],[-3,-62.75],[0,0],[-3.5,36.5],[8.75,12.75],[0.5,7.5]],"o":[[8.75,31.75],[7.25,90],[0,0],[3.5,-36.5],[-8.75,-12.75],[-0.5,-7.5]],"v":[[-94.5,-47],[-111.5,54.75],[-40.5,160.5],[-22.5,117.5],[-63.25,36],[-70.75,-9.5]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":-10,"s":[{"i":[[-9.483,16.373],[-3,-62.75],[0,0],[-3.5,36.5],[8.75,12.75],[-1.558,7.353]],"o":[[-20.408,6.097],[7.25,90],[0,0],[3.5,-36.5],[-8.75,-12.75],[2.03,-9.582]],"v":[[-55.341,-40.547],[-111.5,54.75],[-40.5,160.5],[-22.5,117.5],[-63.25,36],[-68.6,-7.136]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":-3,"s":[{"i":[[15.5,11.25],[-3,-62.75],[0,0],[-3.5,36.5],[8.75,12.75],[0.5,7.5]],"o":[[8.75,31.75],[7.25,90],[0,0],[3.5,-36.5],[-8.75,-12.75],[-0.5,-7.5]],"v":[[-94.5,-47],[-111.5,54.75],[-40.5,160.5],[-22.5,117.5],[-63.25,36],[-70.75,-9.5]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"t":4,"s":[{"i":[[-9.483,16.373],[-3,-62.75],[0,0],[-3.5,36.5],[8.75,12.75],[-1.558,7.353]],"o":[[-20.408,6.097],[7.25,90],[0,0],[3.5,-36.5],[-8.75,-12.75],[2.03,-9.582]],"v":[[-55.341,-40.547],[-111.5,54.75],[-40.5,160.5],[-22.5,117.5],[-63.25,36],[-68.6,-7.136]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":11,"s":[{"i":[[15.5,11.25],[-3,-62.75],[0,0],[-3.5,36.5],[8.75,12.75],[0.5,7.5]],"o":[[8.75,31.75],[7.25,90],[0,0],[3.5,-36.5],[-8.75,-12.75],[-0.5,-7.5]],"v":[[-94.5,-47],[-111.5,54.75],[-40.5,160.5],[-22.5,117.5],[-63.25,36],[-70.75,-9.5]],"c":true}]},{"t":18,"s":[{"i":[[-9.483,16.373],[-3,-62.75],[0,0],[-3.5,36.5],[8.75,12.75],[-1.558,7.353]],"o":[[-20.408,6.097],[7.25,90],[0,0],[3.5,-36.5],[-8.75,-12.75],[2.03,-9.582]],"v":[[-55.341,-40.547],[-111.5,54.75],[-40.5,160.5],[-22.5,117.5],[-63.25,36],[-68.6,-7.136]],"c":true}]}],"a":1}},{"ty":"fl","nm":"F","bm":0,"c":{"a":0,"k":[1,0.817,0.184,1]},"o":{"a":0,"k":100},"r":1},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]}],"ip":0,"op":15,"st":0,"parent":1,"ty":4},{"ind":4,"nm":"F","sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":-1,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":6,"s":[2]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":13,"s":[0]},{"t":20,"s":[2]}]},"p":{"a":0,"k":[1.234,-1.178,0],"l":2},"a":{"a":0,"k":[2.694,170.559,0],"l":2},"s":{"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":-7,"s":[100.281,100.281,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[96,96,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":7,"s":[100.281,100.281,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":14,"s":[96,96,100]},{"t":21,"s":[100.281,100.281,100]}],"a":1,"l":2}},"shapes":[{"ty":"gr","nm":"S","bm":0,"it":[{"ty":"sh","nm":"P","ind":0,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":-3,"s":[{"i":[[-9,89.5],[-25.5,-85.5],[19.35,-34.786],[-14.609,0],[3,97]],"o":[[-12,3.5],[15.268,48.603],[-13.966,25.106],[29.75,0],[-1,-71]],"v":[[60,-104.5],[38,21.5],[-0.35,101.286],[6.75,170.75],[111.5,50.5]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":4,"s":[{"i":[[52.89,38.56],[-16.101,-62.453],[19.35,-34.786],[-14.609,0],[3,97]],"o":[[17.893,71.697],[15.268,48.603],[-13.966,25.106],[29.75,0],[-1,-71]],"v":[[32.582,-97.74],[38,21.5],[-0.35,101.286],[6.75,170.75],[111.5,50.5]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":11,"s":[{"i":[[-9,89.5],[-25.5,-85.5],[19.35,-34.786],[-14.609,0],[3,97]],"o":[[-12,3.5],[15.268,48.603],[-13.966,25.106],[29.75,0],[-1,-71]],"v":[[60,-104.5],[38,21.5],[-0.35,101.286],[6.75,170.75],[111.5,50.5]],"c":true}]},{"t":18,"s":[{"i":[[52.89,38.56],[-16.101,-62.453],[19.35,-34.786],[-14.609,0],[3,97]],"o":[[17.893,71.697],[15.268,48.603],[-13.966,25.106],[29.75,0],[-1,-71]],"v":[[32.582,-97.74],[38,21.5],[-0.35,101.286],[6.75,170.75],[111.5,50.5]],"c":true}]}],"a":1}},{"ty":"fl","nm":"F","bm":0,"c":{"a":0,"k":[1,0.817,0.184,1]},"o":{"a":0,"k":100},"r":1},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]}],"ip":0,"op":15,"st":0,"parent":1,"ty":4},{"ind":5,"nm":"F","sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":-3,"s":[-1]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":4,"s":[1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":11,"s":[-1]},{"t":18,"s":[1]}]},"p":{"a":0,"k":[256,426,0],"l":2},"a":{"a":0,"k":[0,170,0],"l":2},"s":{"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,2.289]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":-2,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,-1.289]},"t":2,"s":[96,96,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":6,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":10,"s":[96,96,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":14,"s":[100,100,100]},{"t":18,"s":[100,100,100]}],"a":1,"l":2}},"shapes":[{"ty":"gr","nm":"S","bm":0,"it":[{"ty":"sh","nm":"P","ind":0,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":-7,"s":[{"i":[[48.167,40.785],[29.132,-81.28],[-2.304,-44.664],[-7.75,0],[2.164,64.44],[15.957,28.579]],"o":[[-4.128,76.623],[-8.542,32.656],[5.181,96.125],[54.75,0],[-1.749,-51.64],[-6.256,-51.301]],"v":[[-8.389,-153.358],[-62.274,-5.213],[-87.726,79.72],[2.75,170.5],[81.947,77.156],[45.058,-12.26]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[-2.027,82.31],[16.056,-53.018],[-2.304,-44.664],[-7.75,0],[2.164,64.44],[15.957,28.579]],"o":[[-64.412,81.037],[-8.542,32.656],[5.181,96.125],[54.75,0],[-1.749,-51.64],[-12.944,-48.873]],"v":[[-1.914,-166.923],[-62.274,-18.158],[-87.726,79.72],[2.75,170.5],[81.947,77.156],[45.058,-25.205]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":7,"s":[{"i":[[48.167,40.785],[29.132,-81.28],[-2.304,-44.664],[-7.75,0],[2.164,64.44],[15.957,28.579]],"o":[[-4.128,76.623],[-8.542,32.656],[5.181,96.125],[54.75,0],[-1.749,-51.64],[-6.256,-51.301]],"v":[[-8.389,-153.358],[-62.274,-5.213],[-87.726,79.72],[2.75,170.5],[81.947,77.156],[45.058,-12.26]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":14,"s":[{"i":[[-2.027,82.31],[16.056,-53.018],[-2.304,-44.664],[-7.75,0],[2.164,64.44],[15.957,28.579]],"o":[[-64.412,81.037],[-8.542,32.656],[5.181,96.125],[54.75,0],[-1.749,-51.64],[-12.944,-48.873]],"v":[[-1.914,-166.923],[-62.274,-18.158],[-87.726,79.72],[2.75,170.5],[81.947,77.156],[45.058,-25.205]],"c":true}]},{"t":21,"s":[{"i":[[48.167,40.785],[29.132,-81.28],[-2.304,-44.664],[-7.75,0],[2.164,64.44],[15.957,28.579]],"o":[[-4.128,76.623],[-8.542,32.656],[5.181,96.125],[54.75,0],[-1.749,-51.64],[-6.256,-51.301]],"v":[[-8.389,-153.358],[-62.274,-5.213],[-87.726,79.72],[2.75,170.5],[81.947,77.156],[45.058,-12.26]],"c":true}]}],"a":1}},{"ty":"fl","nm":"F","bm":0,"c":{"a":0,"k":[1,0.184,0.184,1]},"o":{"a":0,"k":100},"r":1},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]}],"ip":0,"op":15,"st":0,"ty":4},{"ind":6,"nm":"F","sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":-7,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[2]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":7,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":14,"s":[2]},{"t":21,"s":[0]}]},"p":{"a":0,"k":[215.144,416.538,0],"l":2},"a":{"a":0,"k":[-40,160,0],"l":2},"s":{"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[100.281,100.281,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":7,"s":[92,92,100]},{"t":14,"s":[100.281,100.281,100]}],"a":1,"l":2}},"shapes":[{"ty":"gr","nm":"S","bm":0,"it":[{"ty":"sh","nm":"P","ind":0,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":-17,"s":[{"i":[[15.5,11.25],[-3,-62.75],[0,0],[-3.5,36.5],[8.75,12.75],[0.5,7.5]],"o":[[8.75,31.75],[7.25,90],[0,0],[3.5,-36.5],[-8.75,-12.75],[-0.5,-7.5]],"v":[[-94.5,-47],[-111.5,54.75],[-40.5,160.5],[-22.5,117.5],[-63.25,36],[-70.75,-9.5]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":-10,"s":[{"i":[[-9.483,16.373],[-3,-62.75],[0,0],[-3.5,36.5],[8.75,12.75],[-1.558,7.353]],"o":[[-20.408,6.097],[7.25,90],[0,0],[3.5,-36.5],[-8.75,-12.75],[2.03,-9.582]],"v":[[-55.341,-40.547],[-111.5,54.75],[-40.5,160.5],[-22.5,117.5],[-63.25,36],[-68.6,-7.136]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":-3,"s":[{"i":[[15.5,11.25],[-3,-62.75],[0,0],[-3.5,36.5],[8.75,12.75],[0.5,7.5]],"o":[[8.75,31.75],[7.25,90],[0,0],[3.5,-36.5],[-8.75,-12.75],[-0.5,-7.5]],"v":[[-94.5,-47],[-111.5,54.75],[-40.5,160.5],[-22.5,117.5],[-63.25,36],[-70.75,-9.5]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"t":4,"s":[{"i":[[-9.483,16.373],[-3,-62.75],[0,0],[-3.5,36.5],[8.75,12.75],[-1.558,7.353]],"o":[[-20.408,6.097],[7.25,90],[0,0],[3.5,-36.5],[-8.75,-12.75],[2.03,-9.582]],"v":[[-55.341,-40.547],[-111.5,54.75],[-40.5,160.5],[-22.5,117.5],[-63.25,36],[-68.6,-7.136]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":11,"s":[{"i":[[15.5,11.25],[-3,-62.75],[0,0],[-3.5,36.5],[8.75,12.75],[0.5,7.5]],"o":[[8.75,31.75],[7.25,90],[0,0],[3.5,-36.5],[-8.75,-12.75],[-0.5,-7.5]],"v":[[-94.5,-47],[-111.5,54.75],[-40.5,160.5],[-22.5,117.5],[-63.25,36],[-70.75,-9.5]],"c":true}]},{"t":18,"s":[{"i":[[-9.483,16.373],[-3,-62.75],[0,0],[-3.5,36.5],[8.75,12.75],[-1.558,7.353]],"o":[[-20.408,6.097],[7.25,90],[0,0],[3.5,-36.5],[-8.75,-12.75],[2.03,-9.582]],"v":[[-55.341,-40.547],[-111.5,54.75],[-40.5,160.5],[-22.5,117.5],[-63.25,36],[-68.6,-7.136]],"c":true}]}],"a":1}},{"ty":"fl","nm":"F","bm":0,"c":{"a":0,"k":[1,0.184,0.184,1]},"o":{"a":0,"k":100},"r":1},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]}],"ip":0,"op":15,"st":0,"ty":4},{"ind":7,"nm":"F","sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":-1,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":6,"s":[2]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":13,"s":[0]},{"t":20,"s":[2]}]},"p":{"a":0,"k":[259.929,425.312,0],"l":2},"a":{"a":0,"k":[2.694,170.559,0],"l":2},"s":{"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":-7,"s":[100.281,100.281,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[96,96,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":7,"s":[100.281,100.281,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":14,"s":[96,96,100]},{"t":21,"s":[100.281,100.281,100]}],"a":1,"l":2}},"shapes":[{"ty":"gr","nm":"S","bm":0,"it":[{"ty":"sh","nm":"P","ind":0,"ks":{"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":-3,"s":[{"i":[[-9,89.5],[-25.5,-85.5],[19.35,-34.786],[-14.609,0],[3,97]],"o":[[-12,3.5],[15.268,48.603],[-13.966,25.106],[29.75,0],[-1,-71]],"v":[[60,-104.5],[38,21.5],[-0.35,101.286],[6.75,170.75],[111.5,50.5]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":4,"s":[{"i":[[52.89,38.56],[-16.101,-62.453],[19.35,-34.786],[-14.609,0],[3,97]],"o":[[17.893,71.697],[15.268,48.603],[-13.966,25.106],[29.75,0],[-1,-71]],"v":[[32.582,-97.74],[38,21.5],[-0.35,101.286],[6.75,170.75],[111.5,50.5]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":11,"s":[{"i":[[-9,89.5],[-25.5,-85.5],[19.35,-34.786],[-14.609,0],[3,97]],"o":[[-12,3.5],[15.268,48.603],[-13.966,25.106],[29.75,0],[-1,-71]],"v":[[60,-104.5],[38,21.5],[-0.35,101.286],[6.75,170.75],[111.5,50.5]],"c":true}]},{"t":18,"s":[{"i":[[52.89,38.56],[-16.101,-62.453],[19.35,-34.786],[-14.609,0],[3,97]],"o":[[17.893,71.697],[15.268,48.603],[-13.966,25.106],[29.75,0],[-1,-71]],"v":[[32.582,-97.74],[38,21.5],[-0.35,101.286],[6.75,170.75],[111.5,50.5]],"c":true}]}],"a":1}},{"ty":"fl","nm":"F","bm":0,"c":{"a":0,"k":[1,0.184,0.184,1]},"o":{"a":0,"k":100},"r":1},{"ty":"tr","o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"nm":"T","sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}]}],"ip":0,"op":15,"st":0,"ty":4}],"markers":[]}
|