@deriv-web-design/ui 0.1.17 → 0.1.19
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/components.manifest.json +16 -1
- package/dist/index.d.mts +47 -2
- package/dist/index.d.ts +47 -2
- package/dist/index.js +149 -29
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +179 -63
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -2527,22 +2527,32 @@ var StatsSimple = ({
|
|
|
2527
2527
|
};
|
|
2528
2528
|
|
|
2529
2529
|
// templates/FeatureScroll/FeatureScroll.tsx
|
|
2530
|
-
import { useLayoutEffect, useRef as useRef7, useState as useState10 } from "react";
|
|
2530
|
+
import { useEffect as useEffect7, useLayoutEffect, useRef as useRef7, useState as useState10 } from "react";
|
|
2531
2531
|
|
|
2532
2532
|
// components/DotLottieInView/DotLottieInView.tsx
|
|
2533
|
-
import {
|
|
2534
|
-
|
|
2533
|
+
import {
|
|
2534
|
+
lazy,
|
|
2535
|
+
Suspense,
|
|
2536
|
+
useEffect as useEffect6,
|
|
2537
|
+
useRef as useRef6,
|
|
2538
|
+
useState as useState9
|
|
2539
|
+
} from "react";
|
|
2535
2540
|
import { jsx as jsx27 } from "react/jsx-runtime";
|
|
2541
|
+
var DotLottiePlayer = lazy(
|
|
2542
|
+
() => import("@lottiefiles/dotlottie-react").then((m) => ({ default: m.DotLottieReact }))
|
|
2543
|
+
);
|
|
2536
2544
|
function DotLottieInView({
|
|
2537
2545
|
enabled = true,
|
|
2538
2546
|
rootMargin = "0px",
|
|
2539
2547
|
threshold = 0.2,
|
|
2540
2548
|
className,
|
|
2541
2549
|
style,
|
|
2550
|
+
poster,
|
|
2542
2551
|
...dotProps
|
|
2543
2552
|
}) {
|
|
2544
2553
|
const wrapRef = useRef6(null);
|
|
2545
2554
|
const [inView, setInView] = useState9(false);
|
|
2555
|
+
const [mounted, setMounted] = useState9(false);
|
|
2546
2556
|
const [dotLottie, setDotLottie] = useState9(null);
|
|
2547
2557
|
useEffect6(() => {
|
|
2548
2558
|
const el = wrapRef.current;
|
|
@@ -2556,14 +2566,40 @@ function DotLottieInView({
|
|
|
2556
2566
|
observer.observe(el);
|
|
2557
2567
|
return () => observer.disconnect();
|
|
2558
2568
|
}, [rootMargin, threshold]);
|
|
2569
|
+
useEffect6(() => {
|
|
2570
|
+
if (mounted) return;
|
|
2571
|
+
if (!inView) return;
|
|
2572
|
+
if (typeof window === "undefined") return;
|
|
2573
|
+
let cancelled = false;
|
|
2574
|
+
const commit = () => {
|
|
2575
|
+
if (!cancelled) setMounted(true);
|
|
2576
|
+
};
|
|
2577
|
+
const idleId = typeof window.requestIdleCallback === "function" ? window.requestIdleCallback(commit, { timeout: 400 }) : null;
|
|
2578
|
+
const timerId = idleId === null ? window.setTimeout(commit, 0) : null;
|
|
2579
|
+
return () => {
|
|
2580
|
+
cancelled = true;
|
|
2581
|
+
if (idleId !== null && typeof window.cancelIdleCallback === "function") {
|
|
2582
|
+
window.cancelIdleCallback(idleId);
|
|
2583
|
+
}
|
|
2584
|
+
if (timerId !== null) window.clearTimeout(timerId);
|
|
2585
|
+
};
|
|
2586
|
+
}, [inView, mounted]);
|
|
2559
2587
|
useEffect6(() => {
|
|
2560
2588
|
if (!dotLottie) return;
|
|
2561
2589
|
if (!enabled || !inView) {
|
|
2562
2590
|
dotLottie.stop();
|
|
2563
2591
|
return;
|
|
2564
2592
|
}
|
|
2565
|
-
|
|
2566
|
-
|
|
2593
|
+
const start = () => {
|
|
2594
|
+
dotLottie.stop();
|
|
2595
|
+
dotLottie.play();
|
|
2596
|
+
};
|
|
2597
|
+
if (dotLottie.isLoaded) {
|
|
2598
|
+
start();
|
|
2599
|
+
return;
|
|
2600
|
+
}
|
|
2601
|
+
dotLottie.addEventListener("load", start);
|
|
2602
|
+
return () => dotLottie.removeEventListener("load", start);
|
|
2567
2603
|
}, [dotLottie, enabled, inView]);
|
|
2568
2604
|
return /* @__PURE__ */ jsx27(
|
|
2569
2605
|
"div",
|
|
@@ -2580,15 +2616,15 @@ function DotLottieInView({
|
|
|
2580
2616
|
backgroundColor: "transparent",
|
|
2581
2617
|
...style
|
|
2582
2618
|
},
|
|
2583
|
-
children: /* @__PURE__ */ jsx27(
|
|
2584
|
-
|
|
2619
|
+
children: mounted ? /* @__PURE__ */ jsx27(Suspense, { fallback: poster ?? null, children: /* @__PURE__ */ jsx27(
|
|
2620
|
+
DotLottiePlayer,
|
|
2585
2621
|
{
|
|
2586
2622
|
...dotProps,
|
|
2587
2623
|
loop: false,
|
|
2588
2624
|
autoplay: false,
|
|
2589
2625
|
dotLottieRefCallback: setDotLottie
|
|
2590
2626
|
}
|
|
2591
|
-
)
|
|
2627
|
+
) }) : poster ?? null
|
|
2592
2628
|
}
|
|
2593
2629
|
);
|
|
2594
2630
|
}
|
|
@@ -2660,26 +2696,45 @@ var ChevronRight2 = () => /* @__PURE__ */ jsx28(
|
|
|
2660
2696
|
)
|
|
2661
2697
|
}
|
|
2662
2698
|
);
|
|
2699
|
+
function mediaSrc(item) {
|
|
2700
|
+
return typeof item.mediaUrl === "string" && item.mediaUrl !== "" ? item.mediaUrl : null;
|
|
2701
|
+
}
|
|
2663
2702
|
function resolveMediaType(item) {
|
|
2664
2703
|
if (item.mediaType) return item.mediaType;
|
|
2665
|
-
|
|
2704
|
+
const src = mediaSrc(item);
|
|
2705
|
+
return src?.split("?")[0].endsWith(".lottie") ? "lottie" : "image";
|
|
2666
2706
|
}
|
|
2667
|
-
var MediaRenderer = ({ item, active }) => {
|
|
2707
|
+
var MediaRenderer = ({ item, active, rootMargin, threshold }) => {
|
|
2708
|
+
const src = mediaSrc(item);
|
|
2709
|
+
if (!src) return null;
|
|
2668
2710
|
if (resolveMediaType(item) === "lottie") {
|
|
2669
2711
|
return /* @__PURE__ */ jsx28(
|
|
2670
2712
|
DotLottieInView,
|
|
2671
2713
|
{
|
|
2672
|
-
src
|
|
2673
|
-
enabled: active
|
|
2714
|
+
src,
|
|
2715
|
+
enabled: active,
|
|
2716
|
+
rootMargin,
|
|
2717
|
+
threshold,
|
|
2718
|
+
poster: item.posterUrl ? /* @__PURE__ */ jsx28(
|
|
2719
|
+
"img",
|
|
2720
|
+
{
|
|
2721
|
+
src: item.posterUrl,
|
|
2722
|
+
alt: "",
|
|
2723
|
+
"aria-hidden": "true",
|
|
2724
|
+
loading: "lazy",
|
|
2725
|
+
decoding: "async"
|
|
2726
|
+
}
|
|
2727
|
+
) : void 0
|
|
2674
2728
|
}
|
|
2675
2729
|
);
|
|
2676
2730
|
}
|
|
2677
2731
|
return /* @__PURE__ */ jsx28(
|
|
2678
2732
|
"img",
|
|
2679
2733
|
{
|
|
2680
|
-
src
|
|
2734
|
+
src,
|
|
2681
2735
|
alt: item.title,
|
|
2682
|
-
loading: "lazy"
|
|
2736
|
+
loading: "lazy",
|
|
2737
|
+
decoding: "async"
|
|
2683
2738
|
}
|
|
2684
2739
|
);
|
|
2685
2740
|
};
|
|
@@ -2688,10 +2743,16 @@ var FeatureScroll = ({
|
|
|
2688
2743
|
items,
|
|
2689
2744
|
variant = "media-right",
|
|
2690
2745
|
className,
|
|
2746
|
+
// Destructured, not spread: `...props` lands on the <section>, and an
|
|
2747
|
+
// unknown attribute there is a React DOM warning at best.
|
|
2748
|
+
mediaRootMargin,
|
|
2749
|
+
mediaThreshold,
|
|
2691
2750
|
...props
|
|
2692
2751
|
}) => {
|
|
2693
2752
|
const [activeIndex, setActiveIndex] = useState10(0);
|
|
2753
|
+
const [mobileActiveIndex, setMobileActiveIndex] = useState10(0);
|
|
2694
2754
|
const titleRefs = useRef7([]);
|
|
2755
|
+
const mobileItemRefs = useRef7([]);
|
|
2695
2756
|
const mediaColRef = useRef7(null);
|
|
2696
2757
|
useLayoutEffect(() => {
|
|
2697
2758
|
if (items.length === 0) return;
|
|
@@ -2739,6 +2800,40 @@ var FeatureScroll = ({
|
|
|
2739
2800
|
if (rafId !== 0) window.cancelAnimationFrame(rafId);
|
|
2740
2801
|
};
|
|
2741
2802
|
}, [items.length]);
|
|
2803
|
+
useEffect7(() => {
|
|
2804
|
+
if (items.length === 0) return;
|
|
2805
|
+
if (typeof window === "undefined") return;
|
|
2806
|
+
const ratios = /* @__PURE__ */ new Map();
|
|
2807
|
+
const observer = new IntersectionObserver(
|
|
2808
|
+
(entries) => {
|
|
2809
|
+
if (window.matchMedia("(min-width: 992px)").matches) return;
|
|
2810
|
+
for (const entry of entries) {
|
|
2811
|
+
const idx = Number(entry.target.getAttribute("data-fs-mobile-idx"));
|
|
2812
|
+
if (!Number.isFinite(idx)) continue;
|
|
2813
|
+
ratios.set(idx, entry.isIntersecting ? entry.intersectionRatio : 0);
|
|
2814
|
+
}
|
|
2815
|
+
let best = 0;
|
|
2816
|
+
let bestRatio = -1;
|
|
2817
|
+
for (const [idx, ratio] of ratios) {
|
|
2818
|
+
if (ratio > bestRatio) {
|
|
2819
|
+
bestRatio = ratio;
|
|
2820
|
+
best = idx;
|
|
2821
|
+
}
|
|
2822
|
+
}
|
|
2823
|
+
if (bestRatio <= 0) return;
|
|
2824
|
+
setMobileActiveIndex((prev) => prev === best ? prev : best);
|
|
2825
|
+
},
|
|
2826
|
+
{
|
|
2827
|
+
root: null,
|
|
2828
|
+
rootMargin: "-28% 0px -28% 0px",
|
|
2829
|
+
threshold: [0, 0.15, 0.3, 0.5, 0.75, 1]
|
|
2830
|
+
}
|
|
2831
|
+
);
|
|
2832
|
+
for (const el of mobileItemRefs.current) {
|
|
2833
|
+
if (el) observer.observe(el);
|
|
2834
|
+
}
|
|
2835
|
+
return () => observer.disconnect();
|
|
2836
|
+
}, [items.length]);
|
|
2742
2837
|
const rootClass = [
|
|
2743
2838
|
"fs",
|
|
2744
2839
|
`fs--${variant}`,
|
|
@@ -2766,7 +2861,9 @@ var FeatureScroll = ({
|
|
|
2766
2861
|
MediaRenderer,
|
|
2767
2862
|
{
|
|
2768
2863
|
item,
|
|
2769
|
-
active: i === activeIndex
|
|
2864
|
+
active: i === activeIndex,
|
|
2865
|
+
rootMargin: mediaRootMargin,
|
|
2866
|
+
threshold: mediaThreshold
|
|
2770
2867
|
}
|
|
2771
2868
|
)
|
|
2772
2869
|
},
|
|
@@ -2806,22 +2903,41 @@ var FeatureScroll = ({
|
|
|
2806
2903
|
i
|
|
2807
2904
|
)) })
|
|
2808
2905
|
] }),
|
|
2809
|
-
/* @__PURE__ */ jsx28("div", { className: "fs__mobile-list", children: items.map((item, i) => /* @__PURE__ */ jsxs25(
|
|
2810
|
-
|
|
2811
|
-
|
|
2812
|
-
|
|
2813
|
-
|
|
2814
|
-
|
|
2815
|
-
|
|
2816
|
-
|
|
2817
|
-
|
|
2818
|
-
children:
|
|
2819
|
-
|
|
2820
|
-
|
|
2821
|
-
|
|
2822
|
-
|
|
2823
|
-
|
|
2824
|
-
|
|
2906
|
+
/* @__PURE__ */ jsx28("div", { className: "fs__mobile-list", children: items.map((item, i) => /* @__PURE__ */ jsxs25(
|
|
2907
|
+
"div",
|
|
2908
|
+
{
|
|
2909
|
+
className: "fs__mobile-item",
|
|
2910
|
+
"data-fs-mobile-idx": i,
|
|
2911
|
+
ref: (el) => {
|
|
2912
|
+
mobileItemRefs.current[i] = el;
|
|
2913
|
+
},
|
|
2914
|
+
children: [
|
|
2915
|
+
/* @__PURE__ */ jsx28("h3", { className: "fs__item-title", children: item.title }),
|
|
2916
|
+
/* @__PURE__ */ jsx28("div", { className: "fs__mobile-media", children: /* @__PURE__ */ jsx28(
|
|
2917
|
+
MediaRenderer,
|
|
2918
|
+
{
|
|
2919
|
+
item,
|
|
2920
|
+
active: i === mobileActiveIndex,
|
|
2921
|
+
rootMargin: mediaRootMargin,
|
|
2922
|
+
threshold: mediaThreshold
|
|
2923
|
+
}
|
|
2924
|
+
) }),
|
|
2925
|
+
/* @__PURE__ */ jsx28("p", { className: "fs__item-desc", children: item.description }),
|
|
2926
|
+
/* @__PURE__ */ jsxs25(
|
|
2927
|
+
"a",
|
|
2928
|
+
{
|
|
2929
|
+
href: item.link,
|
|
2930
|
+
className: "fs__item-link",
|
|
2931
|
+
children: [
|
|
2932
|
+
/* @__PURE__ */ jsx28("span", { children: item.linkLabel }),
|
|
2933
|
+
/* @__PURE__ */ jsx28(ChevronRight2, {})
|
|
2934
|
+
]
|
|
2935
|
+
}
|
|
2936
|
+
)
|
|
2937
|
+
]
|
|
2938
|
+
},
|
|
2939
|
+
i
|
|
2940
|
+
)) })
|
|
2825
2941
|
] }) });
|
|
2826
2942
|
};
|
|
2827
2943
|
|
|
@@ -2872,7 +2988,7 @@ var FeatureSplit = ({
|
|
|
2872
2988
|
};
|
|
2873
2989
|
|
|
2874
2990
|
// templates/StickyStackedCards/StickyStackedCards.tsx
|
|
2875
|
-
import { useEffect as
|
|
2991
|
+
import { useEffect as useEffect8, useRef as useRef8 } from "react";
|
|
2876
2992
|
import { jsx as jsx30, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
2877
2993
|
var PLACEHOLDER_IMAGE = "https://cdn.prod.website-files.com/68da5c86c91c54f39c86c28a/69b9309379ac08e59ca8210a_1f3f555da9a5cbb13a6fe1bf0d5fe1b6_placeholder-image.webp";
|
|
2878
2994
|
var STEPS_DATA = [
|
|
@@ -2903,7 +3019,7 @@ var StickyStackedCards = ({
|
|
|
2903
3019
|
...props
|
|
2904
3020
|
}) => {
|
|
2905
3021
|
const cardRefs = useRef8([]);
|
|
2906
|
-
|
|
3022
|
+
useEffect8(() => {
|
|
2907
3023
|
if (typeof window === "undefined") return;
|
|
2908
3024
|
let rafId = 0;
|
|
2909
3025
|
const update = () => {
|
|
@@ -3333,7 +3449,7 @@ var CTABanner = ({
|
|
|
3333
3449
|
};
|
|
3334
3450
|
|
|
3335
3451
|
// components/Navbar/Navbar.tsx
|
|
3336
|
-
import { useRef as useRef10, useState as useState11, useEffect as
|
|
3452
|
+
import { useRef as useRef10, useState as useState11, useEffect as useEffect9, useCallback as useCallback2 } from "react";
|
|
3337
3453
|
import { motion as motion2, AnimatePresence } from "framer-motion";
|
|
3338
3454
|
|
|
3339
3455
|
// assets/icon-globe.svg
|
|
@@ -3583,20 +3699,20 @@ var Navbar = ({
|
|
|
3583
3699
|
const langBtnRef = useRef10(null);
|
|
3584
3700
|
const hasLangDropdown = Boolean(languageItems && languageItems.length > 0);
|
|
3585
3701
|
const resolvedLogo = theme === "light" ? logoSrcDark ?? logoSrc : logoSrc;
|
|
3586
|
-
|
|
3702
|
+
useEffect9(() => {
|
|
3587
3703
|
if (process.env.NODE_ENV !== "production" && !logoSrcDark) {
|
|
3588
3704
|
console.warn(
|
|
3589
3705
|
"[Navbar] `logoSrcDark` was not provided. The condensed pill logo (shown once the page is scrolled) falls back to `logoSrc`, which is typically the light-coloured logo \u2014 it will be invisible against the pill's white/near-white scrolled background. Pass `logoSrcDark` to fix this."
|
|
3590
3706
|
);
|
|
3591
3707
|
}
|
|
3592
3708
|
}, [logoSrcDark]);
|
|
3593
|
-
|
|
3709
|
+
useEffect9(() => {
|
|
3594
3710
|
const onScroll = () => setScrolled(window.scrollY > 0);
|
|
3595
3711
|
onScroll();
|
|
3596
3712
|
window.addEventListener("scroll", onScroll, { passive: true });
|
|
3597
3713
|
return () => window.removeEventListener("scroll", onScroll);
|
|
3598
3714
|
}, []);
|
|
3599
|
-
|
|
3715
|
+
useEffect9(() => {
|
|
3600
3716
|
const onKey = (e) => {
|
|
3601
3717
|
if (e.key === "Escape") {
|
|
3602
3718
|
setOpenDropdown(null);
|
|
@@ -3607,16 +3723,16 @@ var Navbar = ({
|
|
|
3607
3723
|
document.addEventListener("keydown", onKey);
|
|
3608
3724
|
return () => document.removeEventListener("keydown", onKey);
|
|
3609
3725
|
}, []);
|
|
3610
|
-
|
|
3726
|
+
useEffect9(() => {
|
|
3611
3727
|
if (!mobileOpen) setMobileLangOpen(false);
|
|
3612
3728
|
}, [mobileOpen]);
|
|
3613
|
-
|
|
3729
|
+
useEffect9(() => {
|
|
3614
3730
|
document.body.style.overflow = mobileOpen ? "hidden" : "";
|
|
3615
3731
|
return () => {
|
|
3616
3732
|
document.body.style.overflow = "";
|
|
3617
3733
|
};
|
|
3618
3734
|
}, [mobileOpen]);
|
|
3619
|
-
|
|
3735
|
+
useEffect9(() => {
|
|
3620
3736
|
if (!openDropdown) return;
|
|
3621
3737
|
const onPointerDown = (e) => {
|
|
3622
3738
|
if (pillAreaRef.current && !pillAreaRef.current.contains(e.target)) {
|
|
@@ -3935,7 +4051,7 @@ var Navbar = ({
|
|
|
3935
4051
|
};
|
|
3936
4052
|
|
|
3937
4053
|
// templates/DayNightTransition/DayNightTransition.tsx
|
|
3938
|
-
import { useEffect as
|
|
4054
|
+
import { useEffect as useEffect10, useLayoutEffect as useLayoutEffect2, useRef as useRef11, useState as useState12 } from "react";
|
|
3939
4055
|
import {
|
|
3940
4056
|
motion as motion3,
|
|
3941
4057
|
useScroll as useScroll2,
|
|
@@ -4056,7 +4172,7 @@ var DayNightTransition = ({
|
|
|
4056
4172
|
const [nightMarginEnd, setNightMarginEnd] = useState12("0px");
|
|
4057
4173
|
const [ixMedia, setIxMedia] = useState12("desktop");
|
|
4058
4174
|
const webflowV2 = scrollPreset === "webflow-day-night-v2";
|
|
4059
|
-
|
|
4175
|
+
useEffect10(() => {
|
|
4060
4176
|
const mq = window.matchMedia("(max-width: 991px)");
|
|
4061
4177
|
const sync = () => setIxMedia(mq.matches ? "mobile" : "desktop");
|
|
4062
4178
|
sync();
|
|
@@ -4709,7 +4825,7 @@ var DownloadBanner = ({
|
|
|
4709
4825
|
};
|
|
4710
4826
|
|
|
4711
4827
|
// templates/TextScroll/TextScroll.tsx
|
|
4712
|
-
import { useEffect as
|
|
4828
|
+
import { useEffect as useEffect11, useRef as useRef13 } from "react";
|
|
4713
4829
|
import { gsap } from "gsap";
|
|
4714
4830
|
import { ScrollTrigger } from "gsap/ScrollTrigger";
|
|
4715
4831
|
import { jsx as jsx38, jsxs as jsxs34 } from "react/jsx-runtime";
|
|
@@ -4718,7 +4834,7 @@ var TextScroll = ({ text, className }) => {
|
|
|
4718
4834
|
const sectionRef = useRef13(null);
|
|
4719
4835
|
const wordsRef = useRef13([]);
|
|
4720
4836
|
const words = text.split(/\s+/).filter(Boolean);
|
|
4721
|
-
|
|
4837
|
+
useEffect11(() => {
|
|
4722
4838
|
const section = sectionRef.current;
|
|
4723
4839
|
const wordEls = wordsRef.current.filter(Boolean);
|
|
4724
4840
|
if (!section || wordEls.length === 0) return;
|
|
@@ -4777,7 +4893,7 @@ var TextScroll = ({ text, className }) => {
|
|
|
4777
4893
|
};
|
|
4778
4894
|
|
|
4779
4895
|
// templates/StickyMarketCards/StickyMarketCards.tsx
|
|
4780
|
-
import { useEffect as
|
|
4896
|
+
import { useEffect as useEffect12, useRef as useRef14 } from "react";
|
|
4781
4897
|
import { jsx as jsx39, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
4782
4898
|
var PLACEHOLDER_IMAGE3 = "https://cdn.prod.website-files.com/68da5c86c91c54f39c86c28a/69b9309379ac08e59ca8210a_1f3f555da9a5cbb13a6fe1bf0d5fe1b6_placeholder-image.webp";
|
|
4783
4899
|
var StickyMarketCards = ({
|
|
@@ -4789,7 +4905,7 @@ var StickyMarketCards = ({
|
|
|
4789
4905
|
}) => {
|
|
4790
4906
|
const cardRefs = useRef14([]);
|
|
4791
4907
|
const cardInnerRefs = useRef14([]);
|
|
4792
|
-
|
|
4908
|
+
useEffect12(() => {
|
|
4793
4909
|
if (typeof window === "undefined") return;
|
|
4794
4910
|
let rafId = 0;
|
|
4795
4911
|
const update = () => {
|
|
@@ -4830,7 +4946,7 @@ var StickyMarketCards = ({
|
|
|
4830
4946
|
cancelAnimationFrame(rafId);
|
|
4831
4947
|
};
|
|
4832
4948
|
}, [items.length]);
|
|
4833
|
-
|
|
4949
|
+
useEffect12(() => {
|
|
4834
4950
|
if (typeof window === "undefined") return;
|
|
4835
4951
|
const syncHeights = () => {
|
|
4836
4952
|
const inners = cardInnerRefs.current.filter(Boolean);
|
|
@@ -5400,7 +5516,7 @@ var ImageBanner = ({
|
|
|
5400
5516
|
};
|
|
5401
5517
|
|
|
5402
5518
|
// templates/Testimonial/Testimonial.tsx
|
|
5403
|
-
import { useCallback as useCallback3, useEffect as
|
|
5519
|
+
import { useCallback as useCallback3, useEffect as useEffect13, useId as useId2, useRef as useRef15, useState as useState15 } from "react";
|
|
5404
5520
|
|
|
5405
5521
|
// assets/quote-left.webp
|
|
5406
5522
|
var quote_left_default = "data:image/webp;base64,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";
|
|
@@ -5486,7 +5602,7 @@ var TrustpilotTestimonial = ({
|
|
|
5486
5602
|
setCanPrev(next.canPrev);
|
|
5487
5603
|
setCanNext(next.canNext);
|
|
5488
5604
|
}, []);
|
|
5489
|
-
|
|
5605
|
+
useEffect13(() => {
|
|
5490
5606
|
const el = trackRef.current;
|
|
5491
5607
|
if (!el) return;
|
|
5492
5608
|
syncScrollState();
|
|
@@ -5599,7 +5715,7 @@ var DefaultTestimonial = ({
|
|
|
5599
5715
|
pendingIndex.current = next;
|
|
5600
5716
|
setPhase("exiting");
|
|
5601
5717
|
};
|
|
5602
|
-
|
|
5718
|
+
useEffect13(() => {
|
|
5603
5719
|
if (phase === "exiting") {
|
|
5604
5720
|
const t = setTimeout(() => {
|
|
5605
5721
|
setActiveIndex(pendingIndex.current ?? activeIndex);
|
|
@@ -5608,7 +5724,7 @@ var DefaultTestimonial = ({
|
|
|
5608
5724
|
return () => clearTimeout(t);
|
|
5609
5725
|
}
|
|
5610
5726
|
}, [phase, activeIndex]);
|
|
5611
|
-
|
|
5727
|
+
useEffect13(() => {
|
|
5612
5728
|
if (items.length <= 1) return;
|
|
5613
5729
|
autoRef.current = setTimeout(() => {
|
|
5614
5730
|
const next = (activeIndex + 1) % items.length;
|
|
@@ -5983,7 +6099,7 @@ var ArticleSection = ({
|
|
|
5983
6099
|
};
|
|
5984
6100
|
|
|
5985
6101
|
// templates/CoralBanner/CoralBanner.tsx
|
|
5986
|
-
import { useCallback as useCallback4, useEffect as
|
|
6102
|
+
import { useCallback as useCallback4, useEffect as useEffect14, useRef as useRef16, useState as useState16 } from "react";
|
|
5987
6103
|
import { jsx as jsx47, jsxs as jsxs43 } from "react/jsx-runtime";
|
|
5988
6104
|
var DEFAULT_SLIDES = [
|
|
5989
6105
|
{
|
|
@@ -6113,7 +6229,7 @@ var CoralBanner = ({
|
|
|
6113
6229
|
const resetAutoplay = () => {
|
|
6114
6230
|
if (autoplayTimer.current) clearTimeout(autoplayTimer.current);
|
|
6115
6231
|
};
|
|
6116
|
-
|
|
6232
|
+
useEffect14(() => {
|
|
6117
6233
|
if (!isCarousel || !autoplay) return;
|
|
6118
6234
|
autoplayTimer.current = setTimeout(() => {
|
|
6119
6235
|
goTo(activeIndex + 1);
|
|
@@ -6745,7 +6861,7 @@ var HelpCenterPage = ({
|
|
|
6745
6861
|
};
|
|
6746
6862
|
|
|
6747
6863
|
// templates/FeatureBlogPage/FeatureBlogPage.tsx
|
|
6748
|
-
import { useEffect as
|
|
6864
|
+
import { useEffect as useEffect15, useMemo as useMemo6, useState as useState20 } from "react";
|
|
6749
6865
|
|
|
6750
6866
|
// assets/share-link.png
|
|
6751
6867
|
var share_link_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABYklEQVR4AezVgU3DMBAFUMRAzMEQzMEQzMEQzMFE+FX5kuNGF4cgIVWp8us73/n/76vaPj/98+sycE3gmsBDTuCl/bQELayfv5zAW5P6avgYwEzb2n7OGBiJGYjK9xLoYWhJ75ffGCCUm2bF/N7e4HVZxS28Pc7cgvHtiAG3ITiSZd+tIRrizyXRs4TrZdYAgowyxG4IcqyjMXupOS+/w4wBh3txoojsqUVky0D20uPcCnsGCBByCEnEe2JjVtOj3wpiEKcuXmHPwJZ4SBEhloM8kPdnmUxttVYGeoLcfHV4SJiBUbw8WxkI/+ieSGo+CoL29IkPGa8MIIvQuBKz1xvQf0gcQWXArfQgtvZgoK8zAnrUyrFrCmYMIAZnmBEDEWAECAd6p1AZ6MkI+hU0YjEQIMwE9P1qU6gMIAgpITlkT3waewYIEHRDfzIgB7XTmDFwWqQiuAxcE3j8CVTfALUfAAAA//85/ClxAAAABklEQVQDABFpTkF24Li2AAAAAElFTkSuQmCC";
|
|
@@ -6955,7 +7071,7 @@ var FeatureBlogPage = ({
|
|
|
6955
7071
|
[content, headingIds]
|
|
6956
7072
|
);
|
|
6957
7073
|
const [activeId, setActiveId] = useState20(null);
|
|
6958
|
-
|
|
7074
|
+
useEffect15(() => {
|
|
6959
7075
|
if (typeof IntersectionObserver === "undefined" || headings.length === 0) return;
|
|
6960
7076
|
const elements = headings.map((heading) => document.getElementById(heading.id)).filter((el) => el !== null);
|
|
6961
7077
|
if (elements.length === 0) return;
|
|
@@ -7169,7 +7285,7 @@ var ParallaxBanner = ({
|
|
|
7169
7285
|
};
|
|
7170
7286
|
|
|
7171
7287
|
// templates/TradingCalculator/TradingCalculator.tsx
|
|
7172
|
-
import { useCallback as useCallback5, useEffect as
|
|
7288
|
+
import { useCallback as useCallback5, useEffect as useEffect16, useId as useId3, useMemo as useMemo7, useRef as useRef18, useState as useState21 } from "react";
|
|
7173
7289
|
import { Fragment as Fragment10, jsx as jsx56, jsxs as jsxs52 } from "react/jsx-runtime";
|
|
7174
7290
|
var DEFAULT_SYMBOLS_ENDPOINT = "https://deriv-static-pricingfeedv2.firebaseio.com/n8n/row/prod/dynamic_trading_specs.json";
|
|
7175
7291
|
var DEFAULT_EXCHANGE_RATE_WS_URL = "wss://ws.derivws.com/websockets/v3?app_id=1089";
|
|
@@ -7212,7 +7328,7 @@ function useExchangeRates(wsUrl) {
|
|
|
7212
7328
|
/* @__PURE__ */ new Map()
|
|
7213
7329
|
);
|
|
7214
7330
|
const cacheRef = useRef18(/* @__PURE__ */ new Map());
|
|
7215
|
-
|
|
7331
|
+
useEffect16(() => {
|
|
7216
7332
|
const pending = pendingRef.current;
|
|
7217
7333
|
return () => {
|
|
7218
7334
|
socketRef.current?.close();
|
|
@@ -7287,7 +7403,7 @@ function useSymbols(symbolsProp, endpoint) {
|
|
|
7287
7403
|
symbolsProp ? { status: "ready", data: symbolsProp } : { status: "loading" }
|
|
7288
7404
|
);
|
|
7289
7405
|
const [retryToken, setRetryToken] = useState21(0);
|
|
7290
|
-
|
|
7406
|
+
useEffect16(() => {
|
|
7291
7407
|
if (symbolsProp) {
|
|
7292
7408
|
setState({ status: "ready", data: symbolsProp });
|
|
7293
7409
|
return;
|
|
@@ -7348,7 +7464,7 @@ var SymbolCombobox = ({ symbolsState, onRetry, selected, onSelect, error, inputI
|
|
|
7348
7464
|
}, [allSymbols, query]);
|
|
7349
7465
|
const grouped = useMemo7(() => groupByAssetClass(filtered), [filtered]);
|
|
7350
7466
|
const flatOptions = useMemo7(() => grouped.flatMap(([, items]) => items), [grouped]);
|
|
7351
|
-
|
|
7467
|
+
useEffect16(() => {
|
|
7352
7468
|
if (!isOpen) return;
|
|
7353
7469
|
const handlePointerDown = (event) => {
|
|
7354
7470
|
if (wrapperRef.current && !wrapperRef.current.contains(event.target)) {
|
|
@@ -7498,7 +7614,7 @@ var TradingCalculator = ({
|
|
|
7498
7614
|
const [isCalculating, setIsCalculating] = useState21(false);
|
|
7499
7615
|
const [calcError, setCalcError] = useState21(null);
|
|
7500
7616
|
const didPreselect = useRef18(false);
|
|
7501
|
-
|
|
7617
|
+
useEffect16(() => {
|
|
7502
7618
|
if (didPreselect.current || !defaultSymbol || symbolsState.status !== "ready") return;
|
|
7503
7619
|
const match = symbolsState.data.find((item) => item.symbol === defaultSymbol);
|
|
7504
7620
|
if (match) {
|
|
@@ -7702,7 +7818,7 @@ var TradingCalculator = ({
|
|
|
7702
7818
|
};
|
|
7703
7819
|
|
|
7704
7820
|
// templates/TradingCalculatorHowTo/TradingCalculatorHowTo.tsx
|
|
7705
|
-
import { Fragment as Fragment11, useEffect as
|
|
7821
|
+
import { Fragment as Fragment11, useEffect as useEffect17, useLayoutEffect as useLayoutEffect3, useRef as useRef19, useState as useState22 } from "react";
|
|
7706
7822
|
import { Fragment as Fragment12, jsx as jsx57, jsxs as jsxs53 } from "react/jsx-runtime";
|
|
7707
7823
|
var MARGIN_CONTENT = {
|
|
7708
7824
|
title: "How to calculate margin requirements",
|
|
@@ -7853,7 +7969,7 @@ var SWAP_TABS = [
|
|
|
7853
7969
|
{ id: "percentage", label: "Swap calculation (In percentage)" }
|
|
7854
7970
|
];
|
|
7855
7971
|
var swapModeForVariant = (variant) => variant === "swap-percentage" ? "percentage" : "points";
|
|
7856
|
-
var useIsomorphicLayoutEffect = typeof window !== "undefined" ? useLayoutEffect3 :
|
|
7972
|
+
var useIsomorphicLayoutEffect = typeof window !== "undefined" ? useLayoutEffect3 : useEffect17;
|
|
7857
7973
|
var FormulaBlockView = ({ block }) => {
|
|
7858
7974
|
if (block.type === "footnote") {
|
|
7859
7975
|
return /* @__PURE__ */ jsx57("p", { className: "tchow-footnote", children: block.content });
|
|
@@ -7960,7 +8076,7 @@ var TradingCalculatorHowTo = ({
|
|
|
7960
8076
|
}) => {
|
|
7961
8077
|
const isSwap = variant === "swap-points" || variant === "swap-percentage";
|
|
7962
8078
|
const [swapTab, setSwapTab] = useState22(() => swapModeForVariant(variant));
|
|
7963
|
-
|
|
8079
|
+
useEffect17(() => {
|
|
7964
8080
|
setSwapTab(swapModeForVariant(variant));
|
|
7965
8081
|
}, [variant]);
|
|
7966
8082
|
const content = variant === "pip" ? PIP_CONTENT : isSwap ? swapTab === "percentage" ? SWAP_PERCENTAGE_CONTENT : SWAP_POINTS_CONTENT : MARGIN_CONTENT;
|