@cntrl-site/components 0.1.21 → 0.1.23-alpha.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/index.mjs CHANGED
@@ -3,17 +3,17 @@ import { useState, useEffect, useRef, useCallback } from "react";
3
3
  import { Splide, SplideSlide } from "@splidejs/react-splide";
4
4
  import cn from "classnames";
5
5
  import { createPortal } from "react-dom";
6
- const wrapper = "ControlSlider-module__wrapper___sHEkd";
6
+ const wrapper$1 = "ControlSlider-module__wrapper___sHEkd";
7
7
  const hoverArrow = "ControlSlider-module__hoverArrow___A-dOH";
8
8
  const sliderItem = "ControlSlider-module__sliderItem___QQSkR";
9
9
  const sliderImage = "ControlSlider-module__sliderImage___9hRl-";
10
- const arrow$1 = "ControlSlider-module__arrow___05ghY";
10
+ const arrow$2 = "ControlSlider-module__arrow___05ghY";
11
11
  const arrowVertical$1 = "ControlSlider-module__arrowVertical___tBfVN";
12
- const nextArrow$1 = "ControlSlider-module__nextArrow___-30Yc";
13
- const arrowInner$1 = "ControlSlider-module__arrowInner___aEra3";
14
- const arrowIcon$1 = "ControlSlider-module__arrowIcon___S4ztF";
15
- const arrowImg$1 = "ControlSlider-module__arrowImg___2dwJW";
16
- const mirror$1 = "ControlSlider-module__mirror___brd6U";
12
+ const nextArrow$2 = "ControlSlider-module__nextArrow___-30Yc";
13
+ const arrowInner$2 = "ControlSlider-module__arrowInner___aEra3";
14
+ const arrowIcon$2 = "ControlSlider-module__arrowIcon___S4ztF";
15
+ const arrowImg$2 = "ControlSlider-module__arrowImg___2dwJW";
16
+ const mirror$2 = "ControlSlider-module__mirror___brd6U";
17
17
  const pagination = "ControlSlider-module__pagination___bicLF";
18
18
  const paginationInner = "ControlSlider-module__paginationInner___bT-P-";
19
19
  const paginationVertical = "ControlSlider-module__paginationVertical___zYqKw";
@@ -45,19 +45,19 @@ const bottomCenterAlignment = "ControlSlider-module__bottomCenterAlignment___c54
45
45
  const bottomRightAlignment = "ControlSlider-module__bottomRightAlignment___kEwrz";
46
46
  const clickOverlay = "ControlSlider-module__clickOverlay___DZA28";
47
47
  const contain$1 = "ControlSlider-module__contain___pLyq7";
48
- const cover$1 = "ControlSlider-module__cover___KdDat";
48
+ const cover$2 = "ControlSlider-module__cover___KdDat";
49
49
  const styles$3 = {
50
- wrapper,
50
+ wrapper: wrapper$1,
51
51
  hoverArrow,
52
52
  sliderItem,
53
53
  sliderImage,
54
- arrow: arrow$1,
54
+ arrow: arrow$2,
55
55
  arrowVertical: arrowVertical$1,
56
- nextArrow: nextArrow$1,
57
- arrowInner: arrowInner$1,
58
- arrowIcon: arrowIcon$1,
59
- arrowImg: arrowImg$1,
60
- mirror: mirror$1,
56
+ nextArrow: nextArrow$2,
57
+ arrowInner: arrowInner$2,
58
+ arrowIcon: arrowIcon$2,
59
+ arrowImg: arrowImg$2,
60
+ mirror: mirror$2,
61
61
  pagination,
62
62
  paginationInner,
63
63
  paginationVertical,
@@ -89,7 +89,7 @@ const styles$3 = {
89
89
  bottomRightAlignment,
90
90
  clickOverlay,
91
91
  contain: contain$1,
92
- cover: cover$1
92
+ cover: cover$2
93
93
  };
94
94
  const link$1 = "RichTextRenderer-module__link___BWeZ2";
95
95
  const styles$2 = {
@@ -343,7 +343,7 @@ function ControlSlider({ settings, content, styles: sliderStyles, isEditor }) {
343
343
  className: cn(styles$3.arrowImg, styles$3.mirror)
344
344
  }
345
345
  ),
346
- !controls.arrowsImgUrl && /* @__PURE__ */ jsx(ArrowIcon$1, { color: controls.color, className: cn(styles$3.arrowIcon, styles$3.arrowImg, styles$3.mirror) })
346
+ !controls.arrowsImgUrl && /* @__PURE__ */ jsx(ArrowIcon$2, { color: controls.color, className: cn(styles$3.arrowIcon, styles$3.arrowImg, styles$3.mirror) })
347
347
  ]
348
348
  }
349
349
  )
@@ -378,7 +378,7 @@ function ControlSlider({ settings, content, styles: sliderStyles, isEditor }) {
378
378
  className: styles$3.arrowImg
379
379
  }
380
380
  ),
381
- !controls.arrowsImgUrl && /* @__PURE__ */ jsx(ArrowIcon$1, { color: controls.color, className: cn(styles$3.arrowIcon, styles$3.arrowImg) })
381
+ !controls.arrowsImgUrl && /* @__PURE__ */ jsx(ArrowIcon$2, { color: controls.color, className: cn(styles$3.arrowIcon, styles$3.arrowImg) })
382
382
  ]
383
383
  }
384
384
  )
@@ -450,7 +450,7 @@ function ControlSlider({ settings, content, styles: sliderStyles, isEditor }) {
450
450
  }
451
451
  ) });
452
452
  }
453
- function ArrowIcon$1({ color, className }) {
453
+ function ArrowIcon$2({ color, className }) {
454
454
  return /* @__PURE__ */ jsx("svg", { viewBox: "0 0 10 18", className, children: /* @__PURE__ */ jsx("g", { id: "Symbols", stroke: "none", strokeWidth: "1", fillRule: "evenodd", children: /* @__PURE__ */ jsx("path", { d: "M-3.70710678,4.29289322 C-3.34662282,3.93240926 -2.77939176,3.90467972 -2.38710056,4.20970461 L-2.29289322,4.29289322 L5,11.585 L12.2928932,4.29289322 C12.6533772,3.93240926 13.2206082,3.90467972 13.6128994,4.20970461 L13.7071068,4.29289322 C14.0675907,4.65337718 14.0953203,5.22060824 13.7902954,5.61289944 L13.7071068,5.70710678 L5.70710678,13.7071068 C5.34662282,14.0675907 4.77939176,14.0953203 4.38710056,13.7902954 L4.29289322,13.7071068 L-3.70710678,5.70710678 C-4.09763107,5.31658249 -4.09763107,4.68341751 -3.70710678,4.29289322 Z", id: "Shape-Copy", fill: color, transform: "translate(5, 9) rotate(-90) translate(-5, -9)" }) }) });
455
455
  }
456
456
  const ControlSliderComponent = {
@@ -1049,12 +1049,12 @@ const ControlSliderComponent = {
1049
1049
  }
1050
1050
  };
1051
1051
  const imageRevealSlider = "ImageRevealSlider-module__imageRevealSlider___UE5Ob";
1052
- const image = "ImageRevealSlider-module__image___Qjt-e";
1052
+ const image$1 = "ImageRevealSlider-module__image___Qjt-e";
1053
1053
  const link = "ImageRevealSlider-module__link___N-iLG";
1054
1054
  const cursor = "ImageRevealSlider-module__cursor___2U03d";
1055
1055
  const styles = {
1056
1056
  imageRevealSlider,
1057
- image,
1057
+ image: image$1,
1058
1058
  link,
1059
1059
  cursor
1060
1060
  };
@@ -1623,17 +1623,17 @@ const contentStyle = "LightBox-module__contentStyle___Bgnsq";
1623
1623
  const imageStyle = "LightBox-module__imageStyle___tLIlB";
1624
1624
  const imgWrapper = "LightBox-module__imgWrapper___LuFUp";
1625
1625
  const contain = "LightBox-module__contain___8-yaS";
1626
- const cover = "LightBox-module__cover___hNvOG";
1627
- const caption = "LightBox-module__caption___b6L2I";
1626
+ const cover$1 = "LightBox-module__cover___hNvOG";
1627
+ const caption$1 = "LightBox-module__caption___b6L2I";
1628
1628
  const captionTextInner = "LightBox-module__captionTextInner___rCGNH";
1629
1629
  const lightboxSplide = "LightBox-module__lightboxSplide___XFuWC";
1630
- const arrow = "LightBox-module__arrow___iz38X";
1630
+ const arrow$1 = "LightBox-module__arrow___iz38X";
1631
1631
  const arrowVertical = "LightBox-module__arrowVertical___Zfz81";
1632
- const nextArrow = "LightBox-module__nextArrow___zkAQN";
1633
- const arrowInner = "LightBox-module__arrowInner___p48sW";
1634
- const arrowIcon = "LightBox-module__arrowIcon___3VaFf";
1635
- const arrowImg = "LightBox-module__arrowImg___pNV88";
1636
- const mirror = "LightBox-module__mirror___pjeXc";
1632
+ const nextArrow$1 = "LightBox-module__nextArrow___zkAQN";
1633
+ const arrowInner$1 = "LightBox-module__arrowInner___p48sW";
1634
+ const arrowIcon$1 = "LightBox-module__arrowIcon___3VaFf";
1635
+ const arrowImg$1 = "LightBox-module__arrowImg___pNV88";
1636
+ const mirror$1 = "LightBox-module__mirror___pjeXc";
1637
1637
  const thumbsWrapper = "LightBox-module__thumbsWrapper___GB-nU";
1638
1638
  const thumbsContainerVertical = "LightBox-module__thumbsContainerVertical___wttk5";
1639
1639
  const thumbsContainer = "LightBox-module__thumbsContainer___osSma";
@@ -1653,7 +1653,7 @@ const slideOutRight = "LightBox-module__slideOutRight___SK7eC";
1653
1653
  const slideOutTop = "LightBox-module__slideOutTop___Vgg0z";
1654
1654
  const slideOutBottom = "LightBox-module__slideOutBottom___nJ0Ef";
1655
1655
  const scaleSlide = "LightBox-module__scaleSlide___vZriG";
1656
- const classes = {
1656
+ const classes$1 = {
1657
1657
  hidden,
1658
1658
  heroImage,
1659
1659
  background,
@@ -1662,17 +1662,17 @@ const classes = {
1662
1662
  imageStyle,
1663
1663
  imgWrapper,
1664
1664
  contain,
1665
- cover,
1666
- caption,
1665
+ cover: cover$1,
1666
+ caption: caption$1,
1667
1667
  captionTextInner,
1668
1668
  lightboxSplide,
1669
- arrow,
1669
+ arrow: arrow$1,
1670
1670
  arrowVertical,
1671
- nextArrow,
1672
- arrowInner,
1673
- arrowIcon,
1674
- arrowImg,
1675
- mirror,
1671
+ nextArrow: nextArrow$1,
1672
+ arrowInner: arrowInner$1,
1673
+ arrowIcon: arrowIcon$1,
1674
+ arrowImg: arrowImg$1,
1675
+ mirror: mirror$1,
1676
1676
  thumbsWrapper,
1677
1677
  thumbsContainerVertical,
1678
1678
  thumbsContainer,
@@ -1737,10 +1737,10 @@ function getPaddingValues(img2) {
1737
1737
  };
1738
1738
  }
1739
1739
  function getDisplayedImageRect(img2) {
1740
- const container = img2.getBoundingClientRect();
1740
+ const container2 = img2.getBoundingClientRect();
1741
1741
  const padding = getPaddingValues(img2);
1742
- const containerW = Math.max(0, container.width - padding.left - padding.right);
1743
- const containerH = Math.max(0, container.height - padding.top - padding.bottom);
1742
+ const containerW = Math.max(0, container2.width - padding.left - padding.right);
1743
+ const containerH = Math.max(0, container2.height - padding.top - padding.bottom);
1744
1744
  const imgW = img2.naturalWidth;
1745
1745
  const imgH = img2.naturalHeight;
1746
1746
  const containerRatio = containerW / containerH;
@@ -1753,8 +1753,8 @@ function getDisplayedImageRect(img2) {
1753
1753
  renderedH = containerH;
1754
1754
  renderedW = containerH * imgRatio;
1755
1755
  }
1756
- const contentLeft = container.left + padding.left;
1757
- const contentTop = container.top + padding.top;
1756
+ const contentLeft = container2.left + padding.left;
1757
+ const contentTop = container2.top + padding.top;
1758
1758
  const offsetX = (containerW - renderedW) / 2 + contentLeft;
1759
1759
  const offsetY = (containerH - renderedH) / 2 + contentTop;
1760
1760
  return {
@@ -1765,13 +1765,13 @@ function getDisplayedImageRect(img2) {
1765
1765
  };
1766
1766
  }
1767
1767
  function getPaddedContainerBounds(img2) {
1768
- const container = img2.getBoundingClientRect();
1768
+ const container2 = img2.getBoundingClientRect();
1769
1769
  const padding = getPaddingValues(img2);
1770
1770
  return {
1771
- left: container.left + padding.left,
1772
- right: container.right - padding.right,
1773
- top: container.top + padding.top,
1774
- bottom: container.bottom - padding.bottom
1771
+ left: container2.left + padding.left,
1772
+ right: container2.right - padding.right,
1773
+ top: container2.top + padding.top,
1774
+ bottom: container2.bottom - padding.bottom
1775
1775
  };
1776
1776
  }
1777
1777
  function getColorAlpha(color) {
@@ -1795,76 +1795,76 @@ function getColorAlpha(color) {
1795
1795
  }
1796
1796
  function getAnimationClasses(type, direction) {
1797
1797
  const appearClass = (() => {
1798
- if (type === "fade in") return classes.fadeIn;
1798
+ if (type === "fade in") return classes$1.fadeIn;
1799
1799
  if (type === "slide in" || type === "mix") {
1800
1800
  switch (direction) {
1801
1801
  case "left":
1802
- return classes.slideInLeft;
1802
+ return classes$1.slideInLeft;
1803
1803
  case "right":
1804
- return classes.slideInRight;
1804
+ return classes$1.slideInRight;
1805
1805
  case "top":
1806
- return classes.slideInTop;
1806
+ return classes$1.slideInTop;
1807
1807
  case "bottom":
1808
- return classes.slideInBottom;
1808
+ return classes$1.slideInBottom;
1809
1809
  default:
1810
- return classes.slideInRight;
1810
+ return classes$1.slideInRight;
1811
1811
  }
1812
1812
  }
1813
- return classes.fadeIn;
1813
+ return classes$1.fadeIn;
1814
1814
  })();
1815
1815
  const backdropAppearClass = (() => {
1816
- if (type === "fade in" || type === "mix") return classes.fadeIn;
1816
+ if (type === "fade in" || type === "mix") return classes$1.fadeIn;
1817
1817
  if (type === "slide in") {
1818
1818
  switch (direction) {
1819
1819
  case "left":
1820
- return classes.slideInLeft;
1820
+ return classes$1.slideInLeft;
1821
1821
  case "right":
1822
- return classes.slideInRight;
1822
+ return classes$1.slideInRight;
1823
1823
  case "top":
1824
- return classes.slideInTop;
1824
+ return classes$1.slideInTop;
1825
1825
  case "bottom":
1826
- return classes.slideInBottom;
1826
+ return classes$1.slideInBottom;
1827
1827
  default:
1828
- return classes.slideInRight;
1828
+ return classes$1.slideInRight;
1829
1829
  }
1830
1830
  }
1831
- return classes.fadeIn;
1831
+ return classes$1.fadeIn;
1832
1832
  })();
1833
1833
  const backdropDisappearClass = (() => {
1834
- if (type === "fade in" || type === "mix") return classes.fadeOut;
1834
+ if (type === "fade in" || type === "mix") return classes$1.fadeOut;
1835
1835
  if (type === "slide in") {
1836
1836
  switch (direction) {
1837
1837
  case "left":
1838
- return classes.slideOutLeft;
1838
+ return classes$1.slideOutLeft;
1839
1839
  case "right":
1840
- return classes.slideOutRight;
1840
+ return classes$1.slideOutRight;
1841
1841
  case "top":
1842
- return classes.slideOutTop;
1842
+ return classes$1.slideOutTop;
1843
1843
  case "bottom":
1844
- return classes.slideOutBottom;
1844
+ return classes$1.slideOutBottom;
1845
1845
  default:
1846
- return classes.slideOutRight;
1846
+ return classes$1.slideOutRight;
1847
1847
  }
1848
1848
  }
1849
- return classes.fadeOut;
1849
+ return classes$1.fadeOut;
1850
1850
  })();
1851
1851
  const disappearClass = (() => {
1852
- if (type === "fade in") return classes.fadeOut;
1852
+ if (type === "fade in") return classes$1.fadeOut;
1853
1853
  if (type === "slide in" || type === "mix") {
1854
1854
  switch (direction) {
1855
1855
  case "left":
1856
- return classes.slideOutLeft;
1856
+ return classes$1.slideOutLeft;
1857
1857
  case "right":
1858
- return classes.slideOutRight;
1858
+ return classes$1.slideOutRight;
1859
1859
  case "top":
1860
- return classes.slideOutTop;
1860
+ return classes$1.slideOutTop;
1861
1861
  case "bottom":
1862
- return classes.slideOutBottom;
1862
+ return classes$1.slideOutBottom;
1863
1863
  default:
1864
- return classes.slideOutRight;
1864
+ return classes$1.slideOutRight;
1865
1865
  }
1866
1866
  }
1867
- return classes.fadeOut;
1867
+ return classes$1.fadeOut;
1868
1868
  })();
1869
1869
  return { appearClass, backdropAppearClass, backdropDisappearClass, disappearClass };
1870
1870
  }
@@ -1885,7 +1885,7 @@ const LightboxGallery = ({ settings, content, styles: styles2, portalId, activeE
1885
1885
  {
1886
1886
  src: url,
1887
1887
  alt: "Cover",
1888
- className: classes.heroImage,
1888
+ className: classes$1.heroImage,
1889
1889
  onClick: () => setOpen(true)
1890
1890
  }
1891
1891
  ),
@@ -1904,6 +1904,7 @@ const LightboxGallery = ({ settings, content, styles: styles2, portalId, activeE
1904
1904
  ] });
1905
1905
  };
1906
1906
  const Lightbox = ({ isOpen, onClose, content, lightboxStyles, settings, portalId, isEditor, metadata }) => {
1907
+ var _a;
1907
1908
  const [currentIndex, setCurrentIndex] = useState(0);
1908
1909
  const [splideKey, setSplideKey] = useState(0);
1909
1910
  const [isClosing, setIsClosing] = useState(false);
@@ -1924,8 +1925,8 @@ const Lightbox = ({ isOpen, onClose, content, lightboxStyles, settings, portalId
1924
1925
  useEffect(() => {
1925
1926
  const handleLayoutChange = () => {
1926
1927
  setTimeout(() => {
1927
- var _a, _b;
1928
- (_b = (_a = lightboxRef.current) == null ? void 0 : _a.splide) == null ? void 0 : _b.refresh();
1928
+ var _a2, _b;
1929
+ (_b = (_a2 = lightboxRef.current) == null ? void 0 : _a2.splide) == null ? void 0 : _b.refresh();
1929
1930
  }, 16);
1930
1931
  };
1931
1932
  const handleComponentContentChange = () => {
@@ -1962,13 +1963,13 @@ const Lightbox = ({ isOpen, onClose, content, lightboxStyles, settings, portalId
1962
1963
  }
1963
1964
  }, [onClose, area.color, isEditor]);
1964
1965
  const handleTriggerClick = (img2, clientX, clientY) => {
1965
- var _a, _b;
1966
+ var _a2, _b;
1966
1967
  if (!img2) return;
1967
1968
  if (triggers.type === "click" && triggers.switch === "image") {
1968
1969
  if (triggers.repeat === "close" && currentIndex === content.length - 1) {
1969
1970
  handleClose();
1970
1971
  } else {
1971
- (_a = lightboxRef.current) == null ? void 0 : _a.go("+1");
1972
+ (_a2 = lightboxRef.current) == null ? void 0 : _a2.go("+1");
1972
1973
  }
1973
1974
  } else if (triggers.type === "click" && triggers.switch === "50/50") {
1974
1975
  const rect = img2.getBoundingClientRect();
@@ -2023,21 +2024,21 @@ const Lightbox = ({ isOpen, onClose, content, lightboxStyles, settings, portalId
2023
2024
  };
2024
2025
  const handleThumbWrapperClick = (e) => {
2025
2026
  const target = e.target;
2026
- if (target.classList.contains(classes.thumbsWrapper) || target.classList.contains(classes.thumbsContainer)) {
2027
+ if (target.classList.contains(classes$1.thumbsWrapper) || target.classList.contains(classes$1.thumbsContainer)) {
2027
2028
  handleImageWrapperClick(e);
2028
2029
  }
2029
2030
  };
2030
2031
  useEffect(() => {
2031
2032
  if (!isOpen) return;
2032
2033
  const onKeyDown = (event) => {
2033
- var _a, _b;
2034
+ var _a2, _b;
2034
2035
  if (event.key === "Escape") {
2035
2036
  handleClose();
2036
2037
  return;
2037
2038
  }
2038
2039
  if (event.key === "ArrowRight") {
2039
2040
  setCurrentIndex((prev) => (prev + 1) % Math.max(content.length, 1));
2040
- (_a = lightboxRef.current) == null ? void 0 : _a.go("+1");
2041
+ (_a2 = lightboxRef.current) == null ? void 0 : _a2.go("+1");
2041
2042
  return;
2042
2043
  }
2043
2044
  if (event.key === "ArrowLeft") {
@@ -2101,7 +2102,7 @@ const Lightbox = ({ isOpen, onClose, content, lightboxStyles, settings, portalId
2101
2102
  }
2102
2103
  const preventScroll = (e) => {
2103
2104
  const target = e.target;
2104
- if (target && (target.closest(`.${classes.thumbsWrapper}`) || target.closest(`.${classes.thumbsContainer}`))) {
2105
+ if (target && (target.closest(`.${classes$1.thumbsWrapper}`) || target.closest(`.${classes$1.thumbsContainer}`))) {
2105
2106
  return;
2106
2107
  }
2107
2108
  if (slider.type === "slide") {
@@ -2123,7 +2124,7 @@ const Lightbox = ({ isOpen, onClose, content, lightboxStyles, settings, portalId
2123
2124
  useEffect(() => {
2124
2125
  if (!isOpen) return;
2125
2126
  const handleTouchEnd = (e) => {
2126
- var _a, _b;
2127
+ var _a2, _b;
2127
2128
  if (isClosingRef.current) {
2128
2129
  e.stopPropagation();
2129
2130
  return;
@@ -2133,10 +2134,10 @@ const Lightbox = ({ isOpen, onClose, content, lightboxStyles, settings, portalId
2133
2134
  return;
2134
2135
  }
2135
2136
  const target = e.target;
2136
- if (target && (target.closest(`.${classes.thumbsContainer}`) || target.closest(`.${classes.thumbItem}`))) {
2137
+ if (target && (target.closest(`.${classes$1.thumbsContainer}`) || target.closest(`.${classes$1.thumbItem}`))) {
2137
2138
  return;
2138
2139
  }
2139
- if (slider.type === "slide" && triggers.type === "drag" && ((_b = (_a = lightboxRef.current) == null ? void 0 : _a.splide) == null ? void 0 : _b.root)) {
2140
+ if (slider.type === "slide" && triggers.type === "drag" && ((_b = (_a2 = lightboxRef.current) == null ? void 0 : _a2.splide) == null ? void 0 : _b.root)) {
2140
2141
  const splideContainer = lightboxRef.current.splide.root;
2141
2142
  if (target && (splideContainer.contains(target) || splideContainer === target)) {
2142
2143
  return;
@@ -2175,9 +2176,9 @@ const Lightbox = ({ isOpen, onClose, content, lightboxStyles, settings, portalId
2175
2176
  }, [isOpen, handleClose, currentIndex, content]);
2176
2177
  const needsCustomVerticalDrag = (slider.type === "scale" || slider.type === "fade") && slider.direction === "vert" && triggers.type === "drag";
2177
2178
  useEffect(() => {
2178
- var _a, _b;
2179
- if (!isOpen || !needsCustomVerticalDrag || !((_b = (_a = lightboxRef.current) == null ? void 0 : _a.splide) == null ? void 0 : _b.root)) return;
2180
- const container = lightboxRef.current.splide.root;
2179
+ var _a2, _b;
2180
+ if (!isOpen || !needsCustomVerticalDrag || !((_b = (_a2 = lightboxRef.current) == null ? void 0 : _a2.splide) == null ? void 0 : _b.root)) return;
2181
+ const container2 = lightboxRef.current.splide.root;
2181
2182
  const DRAG_THRESHOLD = 30;
2182
2183
  const handleMove = (clientX, clientY) => {
2183
2184
  if (dragStartRef.current) {
@@ -2213,22 +2214,15 @@ const Lightbox = ({ isOpen, onClose, content, lightboxStyles, settings, portalId
2213
2214
  dragStartRef.current = null;
2214
2215
  };
2215
2216
  const handlePointerUp = (e) => {
2216
- if (!dragStartRef.current) {
2217
- document.removeEventListener("pointerup", handlePointerUp);
2218
- document.removeEventListener("pointercancel", handlePointerUp);
2219
- document.removeEventListener("pointermove", handlePointerMove);
2220
- return;
2217
+ if (dragStartRef.current) {
2218
+ handleUp(e.clientX, e.clientY);
2221
2219
  }
2222
- handleUp(e.clientX, e.clientY);
2223
2220
  document.removeEventListener("pointerup", handlePointerUp);
2224
2221
  document.removeEventListener("pointercancel", handlePointerUp);
2225
2222
  document.removeEventListener("pointermove", handlePointerMove);
2226
2223
  };
2227
2224
  const handleTouchEnd = (e) => {
2228
2225
  if (!dragStartRef.current) {
2229
- document.removeEventListener("touchend", handleTouchEnd);
2230
- document.removeEventListener("touchcancel", handleTouchEnd);
2231
- document.removeEventListener("touchmove", handleTouchMove);
2232
2226
  return;
2233
2227
  }
2234
2228
  if (e.changedTouches.length > 0) {
@@ -2255,11 +2249,11 @@ const Lightbox = ({ isOpen, onClose, content, lightboxStyles, settings, portalId
2255
2249
  document.addEventListener("touchcancel", handleTouchEnd);
2256
2250
  }
2257
2251
  };
2258
- container.addEventListener("pointerdown", handlePointerDown);
2259
- container.addEventListener("touchstart", handleTouchStart);
2252
+ container2.addEventListener("pointerdown", handlePointerDown);
2253
+ container2.addEventListener("touchstart", handleTouchStart);
2260
2254
  return () => {
2261
- container.removeEventListener("pointerdown", handlePointerDown);
2262
- container.removeEventListener("touchstart", handleTouchStart);
2255
+ container2.removeEventListener("pointerdown", handlePointerDown);
2256
+ container2.removeEventListener("touchstart", handleTouchStart);
2263
2257
  document.removeEventListener("pointermove", handlePointerMove);
2264
2258
  document.removeEventListener("pointerup", handlePointerUp);
2265
2259
  document.removeEventListener("pointercancel", handlePointerUp);
@@ -2284,7 +2278,7 @@ const Lightbox = ({ isOpen, onClose, content, lightboxStyles, settings, portalId
2284
2278
  "div",
2285
2279
  {
2286
2280
  ref: !isEditor ? animationTargetRef : null,
2287
- className: cn(classes.background, isClosing ? backdropDisappearClass : backdropAppearClass, { [classes.editor]: isEditor }, { [classes.hidden]: !isOpen }),
2281
+ className: cn(classes$1.background, isClosing ? backdropDisappearClass : backdropAppearClass, { [classes$1.editor]: isEditor }, { [classes$1.hidden]: !isOpen }),
2288
2282
  style: {
2289
2283
  ...backdropStyles,
2290
2284
  ...animationFinished && !isEditor && !isClosing ? { position: "absolute" } : {}
@@ -2295,7 +2289,7 @@ const Lightbox = ({ isOpen, onClose, content, lightboxStyles, settings, portalId
2295
2289
  "div",
2296
2290
  {
2297
2291
  ref: isEditor ? animationTargetRef : null,
2298
- className: cn(classes.contentStyle, !isClosing ? appearClass : disappearClass, { [classes.editor]: isEditor }, { [classes.hidden]: !isOpen }),
2292
+ className: cn(classes$1.contentStyle, !isClosing ? appearClass : disappearClass, { [classes$1.editor]: isEditor }, { [classes$1.hidden]: !isOpen }),
2299
2293
  style: {
2300
2294
  animationDuration: `${parseInt(appear.duration)}ms`,
2301
2295
  animationTimingFunction: "ease",
@@ -2307,7 +2301,7 @@ const Lightbox = ({ isOpen, onClose, content, lightboxStyles, settings, portalId
2307
2301
  {
2308
2302
  onMove: (splide) => setCurrentIndex(splide.index),
2309
2303
  ref: lightboxRef,
2310
- className: classes.lightboxSplide,
2304
+ className: classes$1.lightboxSplide,
2311
2305
  options: {
2312
2306
  arrows: false,
2313
2307
  speed: slider.duration ? parseInt(slider.duration) : 500,
@@ -2340,14 +2334,14 @@ const Lightbox = ({ isOpen, onClose, content, lightboxStyles, settings, portalId
2340
2334
  "--position-transform": transform || "none"
2341
2335
  };
2342
2336
  })() : { ...positionStyles, position: "absolute", padding, boxSizing: "border-box" };
2343
- return /* @__PURE__ */ jsx(SplideSlide, { children: /* @__PURE__ */ jsx("div", { className: classes.imgWrapper, onClick: handleImageWrapperClick, children: /* @__PURE__ */ jsx(
2337
+ return /* @__PURE__ */ jsx(SplideSlide, { children: /* @__PURE__ */ jsx("div", { className: classes$1.imgWrapper, onClick: handleImageWrapperClick, children: /* @__PURE__ */ jsx(
2344
2338
  "img",
2345
2339
  {
2346
2340
  ref: index === currentIndex ? imageRef : null,
2347
- className: cn(classes.imageStyle, {
2348
- [classes.contain]: item.image.objectFit === "contain",
2349
- [classes.cover]: item.image.objectFit === "cover",
2350
- [classes.scaleSlide]: slider.type === "scale"
2341
+ className: cn(classes$1.imageStyle, {
2342
+ [classes$1.contain]: item.image.objectFit === "contain",
2343
+ [classes$1.cover]: item.image.objectFit === "cover",
2344
+ [classes$1.scaleSlide]: slider.type === "scale"
2351
2345
  }),
2352
2346
  src: item.image.url,
2353
2347
  alt: item.image.name ?? "",
@@ -2362,16 +2356,16 @@ const Lightbox = ({ isOpen, onClose, content, lightboxStyles, settings, portalId
2362
2356
  /* @__PURE__ */ jsx(
2363
2357
  "div",
2364
2358
  {
2365
- className: cn(classes.arrow, { [classes.arrowVertical]: slider.direction === "vert" }),
2359
+ className: cn(classes$1.arrow, { [classes$1.arrowVertical]: slider.direction === "vert" }),
2366
2360
  style: { color: controls.color, ["--arrow-hover-color"]: controls.hover },
2367
2361
  children: /* @__PURE__ */ jsxs(
2368
2362
  "button",
2369
2363
  {
2370
- className: classes.arrowInner,
2364
+ className: classes$1.arrowInner,
2371
2365
  style: { transform: `translate(${scalingValue(controls.offset.x, isEditor)}, ${scalingValue(controls.offset.y * (slider.direction === "horiz" ? 1 : -1), isEditor)}) scale(${controls.scale}) rotate(${slider.direction === "horiz" ? "0deg" : "90deg"})` },
2372
2366
  onClick: () => {
2373
- var _a;
2374
- return (_a = lightboxRef.current) == null ? void 0 : _a.go("-1");
2367
+ var _a2;
2368
+ return (_a2 = lightboxRef.current) == null ? void 0 : _a2.go("-1");
2375
2369
  },
2376
2370
  "aria-label": "Previous",
2377
2371
  children: [
@@ -2381,10 +2375,10 @@ const Lightbox = ({ isOpen, onClose, content, lightboxStyles, settings, portalId
2381
2375
  url: controls.arrowsImgUrl,
2382
2376
  fill: controls.color,
2383
2377
  hoverFill: controls.hover,
2384
- className: cn(classes.arrowImg, classes.mirror)
2378
+ className: cn(classes$1.arrowImg, classes$1.mirror)
2385
2379
  }
2386
2380
  ),
2387
- !controls.arrowsImgUrl && /* @__PURE__ */ jsx(ArrowIcon, { color: controls.color, className: cn(classes.arrowIcon, classes.arrowImg, classes.mirror) })
2381
+ !controls.arrowsImgUrl && /* @__PURE__ */ jsx(ArrowIcon$1, { color: controls.color, className: cn(classes$1.arrowIcon, classes$1.arrowImg, classes$1.mirror) })
2388
2382
  ]
2389
2383
  }
2390
2384
  )
@@ -2393,16 +2387,16 @@ const Lightbox = ({ isOpen, onClose, content, lightboxStyles, settings, portalId
2393
2387
  /* @__PURE__ */ jsx(
2394
2388
  "div",
2395
2389
  {
2396
- className: cn(classes.arrow, classes.nextArrow, { [classes.arrowVertical]: slider.direction === "vert" }),
2390
+ className: cn(classes$1.arrow, classes$1.nextArrow, { [classes$1.arrowVertical]: slider.direction === "vert" }),
2397
2391
  style: { color: controls.color, ["--arrow-hover-color"]: controls.hover },
2398
2392
  children: /* @__PURE__ */ jsxs(
2399
2393
  "button",
2400
2394
  {
2401
- className: classes.arrowInner,
2395
+ className: classes$1.arrowInner,
2402
2396
  style: { transform: `translate(${scalingValue(controls.offset.x * (slider.direction === "horiz" ? -1 : 1), isEditor)}, ${scalingValue(controls.offset.y, isEditor)}) scale(${controls.scale}) rotate(${slider.direction === "horiz" ? "0deg" : "90deg"})` },
2403
2397
  onClick: () => {
2404
- var _a;
2405
- return (_a = lightboxRef.current) == null ? void 0 : _a.go("+1");
2398
+ var _a2;
2399
+ return (_a2 = lightboxRef.current) == null ? void 0 : _a2.go("+1");
2406
2400
  },
2407
2401
  "aria-label": "Next",
2408
2402
  children: [
@@ -2412,10 +2406,10 @@ const Lightbox = ({ isOpen, onClose, content, lightboxStyles, settings, portalId
2412
2406
  url: controls.arrowsImgUrl,
2413
2407
  fill: controls.color,
2414
2408
  hoverFill: controls.hover,
2415
- className: classes.arrowImg
2409
+ className: classes$1.arrowImg
2416
2410
  }
2417
2411
  ),
2418
- !controls.arrowsImgUrl && /* @__PURE__ */ jsx(ArrowIcon, { color: controls.color, className: cn(classes.arrowIcon, classes.arrowImg) })
2412
+ !controls.arrowsImgUrl && /* @__PURE__ */ jsx(ArrowIcon$1, { color: controls.color, className: cn(classes$1.arrowIcon, classes$1.arrowImg) })
2419
2413
  ]
2420
2414
  }
2421
2415
  )
@@ -2426,14 +2420,14 @@ const Lightbox = ({ isOpen, onClose, content, lightboxStyles, settings, portalId
2426
2420
  const positionStyles = getPositionStyles(area.closeIconAlign, area.closeIconOffset, isEditor);
2427
2421
  const scaleTransform = `scale(${area.closeIconScale})`;
2428
2422
  const combinedTransform = positionStyles.transform ? `${positionStyles.transform} ${scaleTransform}` : scaleTransform;
2429
- return /* @__PURE__ */ jsx("button", { className: classes.closeButton, style: { ...positionStyles, transform: combinedTransform }, onClick: handleClose, "aria-label": "Close lightbox", children: /* @__PURE__ */ jsx(SvgImage, { url: area.closeIconUrl, fill: area.closeIconColor ?? "#000000", hoverFill: area.closeIconHover ?? "#cccccc" }) });
2423
+ return /* @__PURE__ */ jsx("button", { className: classes$1.closeButton, style: { ...positionStyles, transform: combinedTransform }, onClick: handleClose, "aria-label": "Close lightbox", children: /* @__PURE__ */ jsx(SvgImage, { url: area.closeIconUrl, fill: area.closeIconColor ?? "#000000", hoverFill: area.closeIconHover ?? "#cccccc" }) });
2430
2424
  })(),
2431
- imageCaption.isActive && lightboxStyles.imageCaption && (() => {
2425
+ imageCaption && imageCaption.isActive && lightboxStyles.imageCaption && ((_a = content[currentIndex]) == null ? void 0 : _a.imageCaption) && (() => {
2432
2426
  const { widthSettings, fontSettings, letterSpacing, textAlign, wordSpacing, fontSizeLineHeight, textAppearance, color } = lightboxStyles.imageCaption;
2433
2427
  return /* @__PURE__ */ jsx(
2434
2428
  "div",
2435
2429
  {
2436
- className: classes.caption,
2430
+ className: classes$1.caption,
2437
2431
  style: {
2438
2432
  ...getPositionStyles(imageCaption.alignment, imageCaption.offset, isEditor),
2439
2433
  fontFamily: fontSettings.fontFamily,
@@ -2455,7 +2449,7 @@ const Lightbox = ({ isOpen, onClose, content, lightboxStyles, settings, portalId
2455
2449
  "div",
2456
2450
  {
2457
2451
  "data-styles": "caption",
2458
- className: classes.captionTextInner,
2452
+ className: classes$1.captionTextInner,
2459
2453
  style: { ["--link-hover-color"]: imageCaption.hover },
2460
2454
  children: /* @__PURE__ */ jsx(RichTextRenderer, { content: content[currentIndex].imageCaption })
2461
2455
  }
@@ -2482,7 +2476,7 @@ const Lightbox = ({ isOpen, onClose, content, lightboxStyles, settings, portalId
2482
2476
  return /* @__PURE__ */ jsx(
2483
2477
  "div",
2484
2478
  {
2485
- className: classes.thumbsWrapper,
2479
+ className: classes$1.thumbsWrapper,
2486
2480
  onClick: (e) => handleThumbWrapperClick(e),
2487
2481
  style: {
2488
2482
  position: isEditor ? "absolute" : "fixed",
@@ -2501,11 +2495,11 @@ const Lightbox = ({ isOpen, onClose, content, lightboxStyles, settings, portalId
2501
2495
  children: /* @__PURE__ */ jsx(
2502
2496
  "div",
2503
2497
  {
2504
- className: cn(classes.thumbsContainer, {
2505
- [classes.thumbsContainerVertical]: slider.direction === "vert",
2506
- [classes.thumbsAlignStart]: thumbnail.align === "start",
2507
- [classes.thumbsAlignCenter]: thumbnail.align === "center",
2508
- [classes.thumbsAlignEnd]: thumbnail.align === "end"
2498
+ className: cn(classes$1.thumbsContainer, {
2499
+ [classes$1.thumbsContainerVertical]: slider.direction === "vert",
2500
+ [classes$1.thumbsAlignStart]: thumbnail.align === "start",
2501
+ [classes$1.thumbsAlignCenter]: thumbnail.align === "center",
2502
+ [classes$1.thumbsAlignEnd]: thumbnail.align === "end"
2509
2503
  }),
2510
2504
  style: {
2511
2505
  gap: scalingValue(thumbnail.grid.gap, isEditor),
@@ -2545,7 +2539,7 @@ const Lightbox = ({ isOpen, onClose, content, lightboxStyles, settings, portalId
2545
2539
  return /* @__PURE__ */ jsx(
2546
2540
  "button",
2547
2541
  {
2548
- className: classes.thumbItem,
2542
+ className: classes$1.thumbItem,
2549
2543
  style: {
2550
2544
  ...slider.direction === "horiz" && thumbnail.fit !== "fit" ? { height: scalingValue(activeSizeValue, isEditor) } : {},
2551
2545
  ...slider.direction === "vert" && thumbnail.fit !== "fit" ? { width: scalingValue(activeSizeValue, isEditor) } : {},
@@ -2556,15 +2550,15 @@ const Lightbox = ({ isOpen, onClose, content, lightboxStyles, settings, portalId
2556
2550
  ["--thumb-hover"]: thumbnail.activeState.opacity / 100
2557
2551
  },
2558
2552
  onClick: (e) => {
2559
- var _a;
2553
+ var _a2;
2560
2554
  e.stopPropagation();
2561
2555
  setCurrentIndex(index);
2562
- (_a = lightboxRef.current) == null ? void 0 : _a.go(index);
2556
+ (_a2 = lightboxRef.current) == null ? void 0 : _a2.go(index);
2563
2557
  },
2564
2558
  onMouseEnter: () => {
2565
- var _a;
2559
+ var _a2;
2566
2560
  if (thumbnail.triggers === "hov") {
2567
- (_a = lightboxRef.current) == null ? void 0 : _a.go(index);
2561
+ (_a2 = lightboxRef.current) == null ? void 0 : _a2.go(index);
2568
2562
  }
2569
2563
  },
2570
2564
  children: /* @__PURE__ */ jsx(
@@ -2604,7 +2598,7 @@ const Lightbox = ({ isOpen, onClose, content, lightboxStyles, settings, portalId
2604
2598
  document.getElementById(portalId)
2605
2599
  );
2606
2600
  };
2607
- function ArrowIcon({ color, className }) {
2601
+ function ArrowIcon$1({ color, className }) {
2608
2602
  return /* @__PURE__ */ jsx("svg", { viewBox: "0 0 10 18", className, children: /* @__PURE__ */ jsx("g", { id: "Symbols", stroke: "none", strokeWidth: "1", fillRule: "evenodd", children: /* @__PURE__ */ jsx("path", { d: "M-3.70710678,4.29289322 C-3.34662282,3.93240926 -2.77939176,3.90467972 -2.38710056,4.20970461 L-2.29289322,4.29289322 L5,11.585 L12.2928932,4.29289322 C12.6533772,3.93240926 13.2206082,3.90467972 13.6128994,4.20970461 L13.7071068,4.29289322 C14.0675907,4.65337718 14.0953203,5.22060824 13.7902954,5.61289944 L13.7071068,5.70710678 L5.70710678,13.7071068 C5.34662282,14.0675907 4.77939176,14.0953203 4.38710056,13.7902954 L4.29289322,13.7071068 L-3.70710678,5.70710678 C-4.09763107,5.31658249 -4.09763107,4.68341751 -3.70710678,4.29289322 Z", id: "Shape-Copy", fill: color, transform: "translate(5, 9) rotate(-90) translate(-5, -9)" }) }) });
2609
2603
  }
2610
2604
  const LightboxComponent = {
@@ -3665,10 +3659,1352 @@ const LightboxComponent = {
3665
3659
  required: ["settings", "content", "styles"]
3666
3660
  }
3667
3661
  };
3662
+ const container = "Testimonials-module__container___H14Dc";
3663
+ const wrapper = "Testimonials-module__wrapper___eCRwv";
3664
+ const cover = "Testimonials-module__cover___5I7Fh";
3665
+ const caption = "Testimonials-module__caption___-YQRG";
3666
+ const creds = "Testimonials-module__creds___KKvX1";
3667
+ const image = "Testimonials-module__image___nHD1Y";
3668
+ const icon = "Testimonials-module__icon___SstqT";
3669
+ const arrow = "Testimonials-module__arrow___NO6BN";
3670
+ const nextArrow = "Testimonials-module__nextArrow___L3G-W";
3671
+ const arrowInner = "Testimonials-module__arrowInner___GSjnA";
3672
+ const arrowIcon = "Testimonials-module__arrowIcon___fw7vy";
3673
+ const arrowImg = "Testimonials-module__arrowImg___7R9fl";
3674
+ const mirror = "Testimonials-module__mirror___JkFna";
3675
+ const classes = {
3676
+ container,
3677
+ wrapper,
3678
+ cover,
3679
+ caption,
3680
+ creds,
3681
+ image,
3682
+ icon,
3683
+ arrow,
3684
+ nextArrow,
3685
+ arrowInner,
3686
+ arrowIcon,
3687
+ arrowImg,
3688
+ mirror
3689
+ };
3690
+ function getAlignPosition(alignment, offset, isEditor) {
3691
+ const styles2 = {};
3692
+ const [vertical, horizontal] = alignment.split("-");
3693
+ if (vertical === "top") {
3694
+ styles2.top = "0";
3695
+ styles2.bottom = "auto";
3696
+ } else if (vertical === "middle") {
3697
+ styles2.top = "50%";
3698
+ styles2.bottom = "auto";
3699
+ } else if (vertical === "bottom") {
3700
+ styles2.top = "auto";
3701
+ styles2.bottom = "0";
3702
+ }
3703
+ if (horizontal === "left") {
3704
+ styles2.left = "0";
3705
+ styles2.right = "auto";
3706
+ } else if (horizontal === "center") {
3707
+ styles2.left = "50%";
3708
+ styles2.right = "auto";
3709
+ } else if (horizontal === "right") {
3710
+ styles2.left = "auto";
3711
+ styles2.right = "0";
3712
+ }
3713
+ if (vertical === "middle" && horizontal === "center") {
3714
+ styles2.transform = `translate(calc(-50% + ${scalingValue(offset.x, isEditor)}), calc(-50% + ${scalingValue(offset.y, isEditor)}))`;
3715
+ } else if (vertical === "middle") {
3716
+ styles2.transform = `translate(${scalingValue(offset.x, isEditor)}, calc(-50% + ${scalingValue(offset.y, isEditor)}))`;
3717
+ } else if (horizontal === "center") {
3718
+ styles2.transform = `translate(calc(-50% + ${scalingValue(offset.x, isEditor)}), ${scalingValue(offset.y, isEditor)})`;
3719
+ } else {
3720
+ styles2.transform = `translate(${scalingValue(offset.x, isEditor)}, ${scalingValue(offset.y, isEditor)})`;
3721
+ }
3722
+ return styles2;
3723
+ }
3724
+ const parseSpeedToMs = (speed) => {
3725
+ if (!speed) return 0;
3726
+ const match = speed.match(/^(\d+)(ms|s)$/);
3727
+ if (!match) return 0;
3728
+ const value = parseInt(match[1], 10);
3729
+ const unit = match[2];
3730
+ return unit === "s" ? value * 1e3 : value;
3731
+ };
3732
+ const Testimonials = ({ settings, content, styles: styles2, isEditor }) => {
3733
+ const sliderRef = useRef(null);
3734
+ const { general, card, controls } = settings;
3735
+ const { width, height } = card.dimensions;
3736
+ const perMove = settings.general.move === "one" ? 1 : settings.general.inView || 1;
3737
+ const perPage = settings.general.inView || 3;
3738
+ const isAutoplay = settings.general.autoplay === "on";
3739
+ const marqueePerMove = isAutoplay ? 1 : perMove;
3740
+ const speedMs = isAutoplay ? settings.general.speed ? parseSpeedToMs(settings.general.speed) : 0 : 500;
3741
+ const wrapperWidth = !isAutoplay ? scalingValue(width * perPage + settings.card.gap * (perPage - 1) + card.borders.width * 2 * perPage, isEditor ?? false) : void 0;
3742
+ const splideKey = `${general.autoplay}-${general.inView}`;
3743
+ useEffect(() => {
3744
+ var _a;
3745
+ if ((_a = sliderRef.current) == null ? void 0 : _a.splide) {
3746
+ const splide = sliderRef.current.splide;
3747
+ splide.options = {
3748
+ ...splide.options,
3749
+ autoplay: isAutoplay,
3750
+ perPage,
3751
+ perMove: marqueePerMove,
3752
+ interval: isAutoplay ? speedMs || 500 : 0,
3753
+ rewind: !isAutoplay
3754
+ };
3755
+ splide.refresh();
3756
+ }
3757
+ }, [general.autoplay, general.inView, isAutoplay, perPage, marqueePerMove, speedMs]);
3758
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
3759
+ /* @__PURE__ */ jsx("div", { className: classes.container, style: { justifyContent: settings.general.alignment }, children: /* @__PURE__ */ jsx(
3760
+ "div",
3761
+ {
3762
+ className: `${classes.wrapper}`,
3763
+ style: wrapperWidth ? { width: wrapperWidth } : void 0,
3764
+ children: /* @__PURE__ */ jsx(
3765
+ Splide,
3766
+ {
3767
+ ref: sliderRef,
3768
+ options: {
3769
+ type: "loop",
3770
+ fixedWidth: scalingValue(width + card.borders.width * 2, isEditor ?? false),
3771
+ ...settings.general.autoplay === "off" && {
3772
+ perPage,
3773
+ width: wrapperWidth
3774
+ },
3775
+ arrows: false,
3776
+ perMove: isAutoplay ? marqueePerMove : perMove,
3777
+ gap: scalingValue(settings.card.gap, isEditor ?? false),
3778
+ padding: 0,
3779
+ drag: false,
3780
+ autoplay: isAutoplay,
3781
+ speed: speedMs,
3782
+ // Transition duration (default to 500ms if not set)
3783
+ interval: speedMs,
3784
+ // Match speed for continuous marquee flow
3785
+ rewind: !isAutoplay,
3786
+ // Disable rewind for smooth marquee, enable for manual mode
3787
+ easing: "linear",
3788
+ direction: settings.general.direction === "left" ? "ltr" : "rtl",
3789
+ pagination: false,
3790
+ pauseOnHover: settings.general.pause === "hover",
3791
+ pauseOnFocus: settings.general.pause === "click"
3792
+ },
3793
+ children: content.map((item, index) => {
3794
+ var _a, _b, _c, _d, _e;
3795
+ const iconPositionStyles = getAlignPosition(settings.elements.icon.alignment, settings.elements.icon.offset, isEditor);
3796
+ return /* @__PURE__ */ jsx(SplideSlide, { children: /* @__PURE__ */ jsxs(
3797
+ "div",
3798
+ {
3799
+ style: {
3800
+ width: scalingValue(width + card.borders.width * 2, isEditor ?? false),
3801
+ height: scalingValue(height, isEditor ?? false),
3802
+ borderRadius: scalingValue(settings.card.corner, isEditor ?? false),
3803
+ border: `${scalingValue(settings.card.borders.width, isEditor ?? false)} solid ${settings.card.borders.color}`,
3804
+ overflow: "hidden",
3805
+ boxSizing: "border-box"
3806
+ },
3807
+ children: [
3808
+ /* @__PURE__ */ jsx(
3809
+ "img",
3810
+ {
3811
+ className: classes.image,
3812
+ src: (_a = item.image) == null ? void 0 : _a.url,
3813
+ alt: (_b = item.image) == null ? void 0 : _b.name,
3814
+ style: { objectFit: ((_c = item.image) == null ? void 0 : _c.objectFit) || "cover" }
3815
+ }
3816
+ ),
3817
+ /* @__PURE__ */ jsx(
3818
+ "div",
3819
+ {
3820
+ className: classes.cover,
3821
+ style: { background: settings.card.bgColor, borderRadius: `${scalingValue(settings.card.corner, isEditor ?? false)}` }
3822
+ }
3823
+ ),
3824
+ /* @__PURE__ */ jsxs("div", { children: [
3825
+ /* @__PURE__ */ jsx(
3826
+ "img",
3827
+ {
3828
+ src: (_d = item.icon) == null ? void 0 : _d.url,
3829
+ alt: (_e = item.icon) == null ? void 0 : _e.name,
3830
+ className: classes.icon,
3831
+ style: {
3832
+ ...iconPositionStyles,
3833
+ transform: `${iconPositionStyles.transform || ""} scale(${settings.elements.icon.scale / 100})`
3834
+ }
3835
+ }
3836
+ ),
3837
+ /* @__PURE__ */ jsx(
3838
+ "div",
3839
+ {
3840
+ className: classes.caption,
3841
+ style: getAlignPosition(settings.elements.text.alignment, settings.elements.text.offset, isEditor),
3842
+ children: /* @__PURE__ */ jsx(RichTextRenderer, { content: item.imageCaption })
3843
+ }
3844
+ ),
3845
+ /* @__PURE__ */ jsx(
3846
+ "div",
3847
+ {
3848
+ className: classes.creds,
3849
+ style: getAlignPosition(settings.elements.creds.alignment, settings.elements.creds.offset, isEditor),
3850
+ children: /* @__PURE__ */ jsx(RichTextRenderer, { content: item.creds })
3851
+ }
3852
+ )
3853
+ ] })
3854
+ ]
3855
+ }
3856
+ ) }, index);
3857
+ })
3858
+ },
3859
+ splideKey
3860
+ )
3861
+ }
3862
+ ) }),
3863
+ controls.isActive && /* @__PURE__ */ jsxs(Fragment, { children: [
3864
+ /* @__PURE__ */ jsx(
3865
+ "div",
3866
+ {
3867
+ className: classes.arrow,
3868
+ style: { color: controls.color, ["--arrow-hover-color"]: controls.hover },
3869
+ children: /* @__PURE__ */ jsxs(
3870
+ "button",
3871
+ {
3872
+ className: classes.arrowInner,
3873
+ style: { transform: `translate(${scalingValue(controls.offset.x, isEditor ?? false)}, ${scalingValue(controls.offset.y, isEditor ?? false)}) scale(${controls.scale / 100})` },
3874
+ onClick: () => {
3875
+ var _a;
3876
+ return (_a = sliderRef.current) == null ? void 0 : _a.go(isAutoplay ? "-1" : `-${perMove}`);
3877
+ },
3878
+ "aria-label": "Previous",
3879
+ children: [
3880
+ controls.arrowsImgUrl && /* @__PURE__ */ jsx(
3881
+ SvgImage,
3882
+ {
3883
+ url: controls.arrowsImgUrl,
3884
+ fill: controls.color,
3885
+ hoverFill: controls.hover,
3886
+ className: cn(classes.arrowImg, classes.mirror)
3887
+ }
3888
+ ),
3889
+ !controls.arrowsImgUrl && /* @__PURE__ */ jsx(ArrowIcon, { color: controls.color, className: cn(classes.arrowIcon, classes.arrowImg, classes.mirror) })
3890
+ ]
3891
+ }
3892
+ )
3893
+ }
3894
+ ),
3895
+ /* @__PURE__ */ jsx(
3896
+ "div",
3897
+ {
3898
+ className: cn(classes.arrow, classes.nextArrow),
3899
+ style: { color: controls.color, ["--arrow-hover-color"]: controls.hover },
3900
+ children: /* @__PURE__ */ jsxs(
3901
+ "button",
3902
+ {
3903
+ className: classes.arrowInner,
3904
+ style: { transform: `translate(${scalingValue(controls.offset.x * -1, isEditor ?? false)}, ${scalingValue(controls.offset.y, isEditor ?? false)}) scale(${controls.scale / 100})` },
3905
+ onClick: () => {
3906
+ var _a;
3907
+ return (_a = sliderRef.current) == null ? void 0 : _a.go(isAutoplay ? "+1" : `+${perMove}`);
3908
+ },
3909
+ "aria-label": "Next",
3910
+ children: [
3911
+ controls.arrowsImgUrl && /* @__PURE__ */ jsx(
3912
+ SvgImage,
3913
+ {
3914
+ url: controls.arrowsImgUrl,
3915
+ fill: controls.color,
3916
+ hoverFill: controls.hover,
3917
+ className: classes.arrowImg
3918
+ }
3919
+ ),
3920
+ !controls.arrowsImgUrl && /* @__PURE__ */ jsx(ArrowIcon, { color: controls.color, className: cn(classes.arrowIcon, classes.arrowImg) })
3921
+ ]
3922
+ }
3923
+ )
3924
+ }
3925
+ )
3926
+ ] })
3927
+ ] });
3928
+ };
3929
+ function ArrowIcon({ color, className }) {
3930
+ return /* @__PURE__ */ jsx("svg", { viewBox: "0 0 10 18", className, children: /* @__PURE__ */ jsx("g", { id: "Symbols", stroke: "none", strokeWidth: "1", fillRule: "evenodd", children: /* @__PURE__ */ jsx("path", { d: "M-3.70710678,4.29289322 C-3.34662282,3.93240926 -2.77939176,3.90467972 -2.38710056,4.20970461 L-2.29289322,4.29289322 L5,11.585 L12.2928932,4.29289322 C12.6533772,3.93240926 13.2206082,3.90467972 13.6128994,4.20970461 L13.7071068,4.29289322 C14.0675907,4.65337718 14.0953203,5.22060824 13.7902954,5.61289944 L13.7071068,5.70710678 L5.70710678,13.7071068 C5.34662282,14.0675907 4.77939176,14.0953203 4.38710056,13.7902954 L4.29289322,13.7071068 L-3.70710678,5.70710678 C-4.09763107,5.31658249 -4.09763107,4.68341751 -3.70710678,4.29289322 Z", id: "Shape-Copy", fill: color, transform: "translate(5, 9) rotate(-90) translate(-5, -9)" }) }) });
3931
+ }
3932
+ const TestimonialsComponent = {
3933
+ element: Testimonials,
3934
+ id: "testimonials",
3935
+ name: "Testimonials",
3936
+ preview: {
3937
+ type: "video",
3938
+ url: "https://cdn.cntrl.site/component-assets/testimonials.mp4"
3939
+ },
3940
+ defaultSize: {
3941
+ width: 700,
3942
+ height: 400
3943
+ },
3944
+ schema: {
3945
+ type: "object",
3946
+ properties: {
3947
+ settings: {
3948
+ layoutBased: true,
3949
+ type: "object",
3950
+ display: {
3951
+ type: "settings-block"
3952
+ },
3953
+ properties: {
3954
+ general: {
3955
+ icon: "thumbnail",
3956
+ type: "object",
3957
+ properties: {
3958
+ autoplay: {
3959
+ type: "string",
3960
+ title: "Autoplay",
3961
+ display: {
3962
+ type: "ratio-group",
3963
+ direction: "horizontal"
3964
+ },
3965
+ enum: ["on", "off"]
3966
+ },
3967
+ inView: {
3968
+ type: "number",
3969
+ title: "In View",
3970
+ min: 1,
3971
+ display: {
3972
+ type: "numeric-input"
3973
+ }
3974
+ },
3975
+ alignment: {
3976
+ type: "string",
3977
+ title: "Alignment",
3978
+ display: {
3979
+ type: "align-group",
3980
+ direction: "vertical"
3981
+ },
3982
+ enum: ["left", "center", "right"]
3983
+ },
3984
+ move: {
3985
+ type: "string",
3986
+ title: "Move",
3987
+ display: {
3988
+ type: "ratio-group",
3989
+ direction: "horizontal"
3990
+ },
3991
+ enum: ["one", "view"]
3992
+ },
3993
+ speed: {
3994
+ type: ["string", "null"],
3995
+ title: "Speed",
3996
+ display: {
3997
+ type: "step-selector"
3998
+ },
3999
+ enum: ["100ms", "250ms", "500ms", "1000ms", "1500ms", "2000ms"]
4000
+ },
4001
+ direction: {
4002
+ type: "string",
4003
+ display: {
4004
+ type: "ratio-group"
4005
+ },
4006
+ enum: ["left", "right"]
4007
+ },
4008
+ pause: {
4009
+ title: "Pause on",
4010
+ type: "string",
4011
+ display: {
4012
+ type: "ratio-group"
4013
+ },
4014
+ enum: ["hover", "click", "off"]
4015
+ }
4016
+ }
4017
+ },
4018
+ card: {
4019
+ icon: "card",
4020
+ type: "object",
4021
+ properties: {
4022
+ dimensions: {
4023
+ type: "object",
4024
+ title: "Size",
4025
+ display: {
4026
+ type: "group"
4027
+ },
4028
+ properties: {
4029
+ width: {
4030
+ type: "number",
4031
+ label: "W",
4032
+ scalingEnabled: true,
4033
+ display: {
4034
+ type: "numeric-input",
4035
+ visible: true
4036
+ }
4037
+ },
4038
+ height: {
4039
+ type: "number",
4040
+ label: "H",
4041
+ scalingEnabled: true,
4042
+ display: {
4043
+ type: "numeric-input",
4044
+ visible: true
4045
+ }
4046
+ }
4047
+ }
4048
+ },
4049
+ gap: {
4050
+ type: "number",
4051
+ title: "Gap",
4052
+ scalingEnabled: true,
4053
+ min: 0,
4054
+ display: {
4055
+ type: "numeric-input"
4056
+ }
4057
+ },
4058
+ corner: {
4059
+ type: "number",
4060
+ title: "Corners",
4061
+ scalingEnabled: true,
4062
+ min: 0,
4063
+ label: "icon:border-radius",
4064
+ display: {
4065
+ type: "numeric-input"
4066
+ }
4067
+ },
4068
+ borders: {
4069
+ type: "object",
4070
+ title: "Borders",
4071
+ display: {
4072
+ type: "group"
4073
+ },
4074
+ properties: {
4075
+ width: {
4076
+ type: "number",
4077
+ label: "icon:border-width",
4078
+ scalingEnabled: true,
4079
+ min: 0,
4080
+ display: {
4081
+ type: "numeric-input"
4082
+ }
4083
+ },
4084
+ color: {
4085
+ type: "string",
4086
+ display: {
4087
+ type: "settings-color-picker",
4088
+ format: "single"
4089
+ }
4090
+ }
4091
+ }
4092
+ },
4093
+ bgColor: {
4094
+ title: "BG color",
4095
+ type: "string",
4096
+ display: {
4097
+ type: "settings-color-picker",
4098
+ format: "single"
4099
+ }
4100
+ }
4101
+ }
4102
+ },
4103
+ elements: {
4104
+ title: "elements",
4105
+ icon: "star",
4106
+ type: "object",
4107
+ properties: {
4108
+ elements: {
4109
+ type: "string",
4110
+ display: {
4111
+ type: "ratio-group"
4112
+ },
4113
+ enum: ["text", "icon", "caption"]
4114
+ },
4115
+ text: {
4116
+ type: "object",
4117
+ display: {
4118
+ type: "group"
4119
+ },
4120
+ properties: {
4121
+ alignment: {
4122
+ type: "string",
4123
+ display: {
4124
+ type: "align-grid",
4125
+ visible: true
4126
+ },
4127
+ enum: ["top-left", "top-center", "top-right", "middle-left", "middle-center", "middle-right", "bottom-left", "bottom-center", "bottom-right"]
4128
+ },
4129
+ offset: {
4130
+ type: "object",
4131
+ title: "Offset",
4132
+ display: {
4133
+ type: "group",
4134
+ visible: true
4135
+ },
4136
+ properties: {
4137
+ x: {
4138
+ type: "number",
4139
+ label: "X",
4140
+ scalingEnabled: true,
4141
+ display: {
4142
+ type: "numeric-input",
4143
+ visible: true
4144
+ }
4145
+ },
4146
+ y: {
4147
+ type: "number",
4148
+ label: "Y",
4149
+ scalingEnabled: true,
4150
+ display: {
4151
+ type: "numeric-input",
4152
+ visible: true
4153
+ }
4154
+ }
4155
+ }
4156
+ }
4157
+ }
4158
+ },
4159
+ icon: {
4160
+ type: "object",
4161
+ display: {
4162
+ type: "group"
4163
+ },
4164
+ properties: {
4165
+ alignment: {
4166
+ type: "string",
4167
+ display: {
4168
+ type: "align-grid"
4169
+ },
4170
+ enum: ["top-left", "top-center", "top-right", "middle-left", "middle-center", "middle-right", "bottom-left", "bottom-center", "bottom-right"]
4171
+ },
4172
+ offset: {
4173
+ type: "object",
4174
+ title: "Offset",
4175
+ display: {
4176
+ type: "group"
4177
+ },
4178
+ properties: {
4179
+ x: {
4180
+ type: "number",
4181
+ label: "X",
4182
+ scalingEnabled: true,
4183
+ display: {
4184
+ type: "numeric-input",
4185
+ visible: true
4186
+ }
4187
+ },
4188
+ y: {
4189
+ type: "number",
4190
+ label: "Y",
4191
+ scalingEnabled: true,
4192
+ display: {
4193
+ type: "numeric-input",
4194
+ visible: true
4195
+ }
4196
+ }
4197
+ }
4198
+ },
4199
+ scale: {
4200
+ type: "number",
4201
+ title: "scale",
4202
+ min: 50,
4203
+ max: 600,
4204
+ display: {
4205
+ type: "range-control",
4206
+ visible: false
4207
+ }
4208
+ }
4209
+ }
4210
+ },
4211
+ creds: {
4212
+ type: "object",
4213
+ display: {
4214
+ type: "group"
4215
+ },
4216
+ properties: {
4217
+ alignment: {
4218
+ type: "string",
4219
+ display: {
4220
+ type: "align-grid"
4221
+ },
4222
+ enum: ["top-left", "top-center", "top-right", "middle-left", "middle-center", "middle-right", "bottom-left", "bottom-center", "bottom-right"]
4223
+ },
4224
+ offset: {
4225
+ type: "object",
4226
+ title: "Offset",
4227
+ display: {
4228
+ type: "group"
4229
+ },
4230
+ properties: {
4231
+ x: {
4232
+ type: "number",
4233
+ label: "X",
4234
+ scalingEnabled: true,
4235
+ display: {
4236
+ type: "numeric-input",
4237
+ visible: true
4238
+ }
4239
+ },
4240
+ y: {
4241
+ type: "number",
4242
+ label: "Y",
4243
+ scalingEnabled: true,
4244
+ display: {
4245
+ type: "numeric-input",
4246
+ visible: true
4247
+ }
4248
+ }
4249
+ }
4250
+ }
4251
+ }
4252
+ }
4253
+ }
4254
+ },
4255
+ controls: {
4256
+ title: "controls",
4257
+ icon: "controls",
4258
+ tooltip: "Controls",
4259
+ type: "object",
4260
+ properties: {
4261
+ isActive: {
4262
+ type: "boolean",
4263
+ display: {
4264
+ type: "setting-toggle"
4265
+ }
4266
+ },
4267
+ arrowsImgUrl: {
4268
+ type: ["string", "null"],
4269
+ display: {
4270
+ type: "settings-image-input"
4271
+ }
4272
+ },
4273
+ offset: {
4274
+ type: "object",
4275
+ title: "Offset",
4276
+ display: {
4277
+ type: "group"
4278
+ },
4279
+ properties: {
4280
+ x: {
4281
+ type: "number",
4282
+ label: "X",
4283
+ scalingEnabled: true,
4284
+ display: {
4285
+ type: "numeric-input",
4286
+ visible: true
4287
+ }
4288
+ },
4289
+ y: {
4290
+ type: "number",
4291
+ label: "Y",
4292
+ scalingEnabled: true,
4293
+ display: {
4294
+ type: "numeric-input",
4295
+ visible: true
4296
+ }
4297
+ }
4298
+ }
4299
+ },
4300
+ scale: {
4301
+ type: "number",
4302
+ title: "scale",
4303
+ min: 50,
4304
+ max: 600,
4305
+ display: {
4306
+ type: "range-control"
4307
+ }
4308
+ },
4309
+ color: {
4310
+ title: "color",
4311
+ type: "string",
4312
+ display: {
4313
+ type: "settings-color-picker",
4314
+ format: "single"
4315
+ }
4316
+ },
4317
+ hover: {
4318
+ title: "hover",
4319
+ type: "string",
4320
+ display: {
4321
+ type: "settings-color-picker",
4322
+ format: "single"
4323
+ }
4324
+ }
4325
+ }
4326
+ }
4327
+ },
4328
+ default: {
4329
+ general: {
4330
+ autoplay: "off",
4331
+ inView: 3,
4332
+ alignment: "center",
4333
+ move: "one",
4334
+ speed: "3s",
4335
+ direction: "left",
4336
+ pause: "off"
4337
+ },
4338
+ card: {
4339
+ dimensions: {
4340
+ width: 0.15,
4341
+ height: 0.2
4342
+ },
4343
+ gap: 0.02,
4344
+ corner: 5e-3,
4345
+ borders: {
4346
+ width: 1e-3,
4347
+ color: "#000000"
4348
+ },
4349
+ bgColor: "rgba(255, 255, 255, 0.2)"
4350
+ },
4351
+ controls: {
4352
+ isActive: false,
4353
+ arrowsImgUrl: null,
4354
+ offset: {
4355
+ x: 0,
4356
+ y: 0
4357
+ },
4358
+ scale: 100,
4359
+ color: "#000000",
4360
+ hover: "#cccccc"
4361
+ },
4362
+ elements: {
4363
+ elements: "text",
4364
+ text: {
4365
+ alignment: "middle-left",
4366
+ offset: {
4367
+ x: 5e-3,
4368
+ y: 0
4369
+ }
4370
+ },
4371
+ icon: {
4372
+ alignment: "top-left",
4373
+ offset: {
4374
+ x: 0,
4375
+ y: 0
4376
+ },
4377
+ scale: 100
4378
+ },
4379
+ creds: {
4380
+ alignment: "bottom-left",
4381
+ offset: {
4382
+ x: 5e-3,
4383
+ y: -5e-3
4384
+ }
4385
+ }
4386
+ }
4387
+ },
4388
+ displayRules: [
4389
+ {
4390
+ if: {
4391
+ name: "general.autoplay",
4392
+ value: "off"
4393
+ },
4394
+ then: {
4395
+ name: "properties.general.properties.inView.display.visible",
4396
+ value: true
4397
+ }
4398
+ },
4399
+ {
4400
+ if: {
4401
+ name: "general.autoplay",
4402
+ value: "off"
4403
+ },
4404
+ then: {
4405
+ name: "properties.general.properties.alignment.display.visible",
4406
+ value: true
4407
+ }
4408
+ },
4409
+ {
4410
+ if: {
4411
+ name: "general.autoplay",
4412
+ value: "off"
4413
+ },
4414
+ then: {
4415
+ name: "properties.general.properties.move.display.visible",
4416
+ value: true
4417
+ }
4418
+ },
4419
+ {
4420
+ if: {
4421
+ name: "general.autoplay",
4422
+ value: "on"
4423
+ },
4424
+ then: {
4425
+ name: "properties.general.properties.inView.display.visible",
4426
+ value: false
4427
+ }
4428
+ },
4429
+ {
4430
+ if: {
4431
+ name: "general.autoplay",
4432
+ value: "on"
4433
+ },
4434
+ then: {
4435
+ name: "properties.general.properties.alignment.display.visible",
4436
+ value: false
4437
+ }
4438
+ },
4439
+ {
4440
+ if: {
4441
+ name: "general.autoplay",
4442
+ value: "on"
4443
+ },
4444
+ then: {
4445
+ name: "properties.general.properties.move.display.visible",
4446
+ value: false
4447
+ }
4448
+ },
4449
+ {
4450
+ if: {
4451
+ name: "general.autoplay",
4452
+ value: "on"
4453
+ },
4454
+ then: {
4455
+ name: "properties.general.properties.speed.display.visible",
4456
+ value: true
4457
+ }
4458
+ },
4459
+ {
4460
+ if: {
4461
+ name: "general.autoplay",
4462
+ value: "on"
4463
+ },
4464
+ then: {
4465
+ name: "properties.general.properties.direction.display.visible",
4466
+ value: true
4467
+ }
4468
+ },
4469
+ {
4470
+ if: {
4471
+ name: "general.autoplay",
4472
+ value: "on"
4473
+ },
4474
+ then: {
4475
+ name: "properties.general.properties.pause.display.visible",
4476
+ value: true
4477
+ }
4478
+ },
4479
+ {
4480
+ if: {
4481
+ name: "general.autoplay",
4482
+ value: "off"
4483
+ },
4484
+ then: {
4485
+ name: "properties.general.properties.speed.display.visible",
4486
+ value: false
4487
+ }
4488
+ },
4489
+ {
4490
+ if: {
4491
+ name: "general.autoplay",
4492
+ value: "off"
4493
+ },
4494
+ then: {
4495
+ name: "properties.general.properties.direction.display.visible",
4496
+ value: false
4497
+ }
4498
+ },
4499
+ {
4500
+ if: {
4501
+ name: "general.autoplay",
4502
+ value: "off"
4503
+ },
4504
+ then: {
4505
+ name: "properties.general.properties.pause.display.visible",
4506
+ value: false
4507
+ }
4508
+ },
4509
+ {
4510
+ if: {
4511
+ name: "elements.elements",
4512
+ value: "text"
4513
+ },
4514
+ then: {
4515
+ name: "properties.elements.properties.text.properties.alignment.display.visible",
4516
+ value: true
4517
+ }
4518
+ },
4519
+ {
4520
+ if: {
4521
+ name: "elements.elements",
4522
+ value: "text"
4523
+ },
4524
+ then: {
4525
+ name: "properties.elements.properties.text.properties.offset.display.visible",
4526
+ value: true
4527
+ }
4528
+ },
4529
+ {
4530
+ if: {
4531
+ name: "elements.elements",
4532
+ value: "text"
4533
+ },
4534
+ then: {
4535
+ name: "properties.elements.properties.icon.properties.alignment.display.visible",
4536
+ value: false
4537
+ }
4538
+ },
4539
+ {
4540
+ if: {
4541
+ name: "elements.elements",
4542
+ value: "text"
4543
+ },
4544
+ then: {
4545
+ name: "properties.elements.properties.icon.properties.offset.display.visible",
4546
+ value: false
4547
+ }
4548
+ },
4549
+ {
4550
+ if: {
4551
+ name: "elements.elements",
4552
+ value: "text"
4553
+ },
4554
+ then: {
4555
+ name: "properties.elements.properties.creds.properties.alignment.display.visible",
4556
+ value: false
4557
+ }
4558
+ },
4559
+ {
4560
+ if: {
4561
+ name: "elements.elements",
4562
+ value: "text"
4563
+ },
4564
+ then: {
4565
+ name: "properties.elements.properties.creds.properties.offset.display.visible",
4566
+ value: false
4567
+ }
4568
+ },
4569
+ {
4570
+ if: {
4571
+ name: "elements.elements",
4572
+ value: "icon"
4573
+ },
4574
+ then: {
4575
+ name: "properties.elements.properties.icon.properties.alignment.display.visible",
4576
+ value: true
4577
+ }
4578
+ },
4579
+ {
4580
+ if: {
4581
+ name: "elements.elements",
4582
+ value: "icon"
4583
+ },
4584
+ then: {
4585
+ name: "properties.elements.properties.icon.properties.offset.display.visible",
4586
+ value: true
4587
+ }
4588
+ },
4589
+ {
4590
+ if: {
4591
+ name: "elements.elements",
4592
+ value: "icon"
4593
+ },
4594
+ then: {
4595
+ name: "properties.elements.properties.text.properties.alignment.display.visible",
4596
+ value: false
4597
+ }
4598
+ },
4599
+ {
4600
+ if: {
4601
+ name: "elements.elements",
4602
+ value: "icon"
4603
+ },
4604
+ then: {
4605
+ name: "properties.elements.properties.text.properties.offset.display.visible",
4606
+ value: false
4607
+ }
4608
+ },
4609
+ {
4610
+ if: {
4611
+ name: "elements.elements",
4612
+ value: "icon"
4613
+ },
4614
+ then: {
4615
+ name: "properties.elements.properties.creds.properties.alignment.display.visible",
4616
+ value: false
4617
+ }
4618
+ },
4619
+ {
4620
+ if: {
4621
+ name: "elements.elements",
4622
+ value: "icon"
4623
+ },
4624
+ then: {
4625
+ name: "properties.elements.properties.creds.properties.offset.display.visible",
4626
+ value: false
4627
+ }
4628
+ },
4629
+ {
4630
+ if: {
4631
+ name: "elements.elements",
4632
+ value: "caption"
4633
+ },
4634
+ then: {
4635
+ name: "properties.elements.properties.creds.properties.alignment.display.visible",
4636
+ value: true
4637
+ }
4638
+ },
4639
+ {
4640
+ if: {
4641
+ name: "elements.elements",
4642
+ value: "caption"
4643
+ },
4644
+ then: {
4645
+ name: "properties.elements.properties.creds.properties.offset.display.visible",
4646
+ value: true
4647
+ }
4648
+ },
4649
+ {
4650
+ if: {
4651
+ name: "elements.elements",
4652
+ value: "caption"
4653
+ },
4654
+ then: {
4655
+ name: "properties.elements.properties.text.properties.alignment.display.visible",
4656
+ value: false
4657
+ }
4658
+ },
4659
+ {
4660
+ if: {
4661
+ name: "elements.elements",
4662
+ value: "caption"
4663
+ },
4664
+ then: {
4665
+ name: "properties.elements.properties.text.properties.offset.display.visible",
4666
+ value: false
4667
+ }
4668
+ },
4669
+ {
4670
+ if: {
4671
+ name: "elements.elements",
4672
+ value: "caption"
4673
+ },
4674
+ then: {
4675
+ name: "properties.elements.properties.icon.properties.alignment.display.visible",
4676
+ value: false
4677
+ }
4678
+ },
4679
+ {
4680
+ if: {
4681
+ name: "elements.elements",
4682
+ value: "caption"
4683
+ },
4684
+ then: {
4685
+ name: "properties.elements.properties.icon.properties.offset.display.visible",
4686
+ value: false
4687
+ }
4688
+ },
4689
+ {
4690
+ if: {
4691
+ name: "elements.elements",
4692
+ value: "icon"
4693
+ },
4694
+ then: {
4695
+ name: "properties.elements.properties.icon.properties.scale.display.visible",
4696
+ value: true
4697
+ }
4698
+ },
4699
+ {
4700
+ if: {
4701
+ name: "elements.elements",
4702
+ value: "text"
4703
+ },
4704
+ then: {
4705
+ name: "properties.elements.properties.icon.properties.scale.display.visible",
4706
+ value: false
4707
+ }
4708
+ },
4709
+ {
4710
+ if: {
4711
+ name: "elements.elements",
4712
+ value: "caption"
4713
+ },
4714
+ then: {
4715
+ name: "properties.elements.properties.icon.properties.scale.display.visible",
4716
+ value: false
4717
+ }
4718
+ }
4719
+ ]
4720
+ },
4721
+ content: {
4722
+ layoutBased: false,
4723
+ type: "array",
4724
+ settings: {
4725
+ addItemFromFileExplorer: true,
4726
+ defaultWidth: 500
4727
+ },
4728
+ items: {
4729
+ type: "object",
4730
+ properties: {
4731
+ image: {
4732
+ type: "object",
4733
+ label: "Image",
4734
+ display: {
4735
+ minWidth: 58,
4736
+ maxWidth: 108,
4737
+ type: "media-input"
4738
+ },
4739
+ properties: {
4740
+ url: {
4741
+ type: "string"
4742
+ },
4743
+ name: {
4744
+ type: "string"
4745
+ },
4746
+ objectFit: {
4747
+ type: "string",
4748
+ enum: ["cover", "contain"]
4749
+ }
4750
+ },
4751
+ required: ["url", "name"]
4752
+ },
4753
+ icon: {
4754
+ type: "object",
4755
+ label: "Icon",
4756
+ display: {
4757
+ minWidth: 58,
4758
+ maxWidth: 108,
4759
+ type: "media-input"
4760
+ },
4761
+ properties: {
4762
+ url: {
4763
+ type: "string"
4764
+ },
4765
+ name: {
4766
+ type: "string"
4767
+ },
4768
+ objectFit: {
4769
+ type: "string",
4770
+ enum: ["cover", "contain"]
4771
+ }
4772
+ },
4773
+ required: ["url", "name"]
4774
+ },
4775
+ imageCaption: {
4776
+ placeholder: "Add Text...",
4777
+ label: "Text",
4778
+ display: {
4779
+ type: "rich-text",
4780
+ minWidth: 300,
4781
+ maxWidth: 550
4782
+ }
4783
+ },
4784
+ creds: {
4785
+ placeholder: "Add Caption...",
4786
+ label: "Caption",
4787
+ display: {
4788
+ type: "rich-text",
4789
+ minWidth: 300,
4790
+ maxWidth: 550
4791
+ }
4792
+ }
4793
+ },
4794
+ required: ["image"]
4795
+ },
4796
+ default: [
4797
+ {
4798
+ image: {
4799
+ objectFit: "cover",
4800
+ url: "https://cdn.cntrl.site/component-assets/2.jpg",
4801
+ name: "Testimonial-1.png"
4802
+ },
4803
+ icon: {
4804
+ objectFit: "cover",
4805
+ url: "https://cdn.cntrl.site/projects/01GJ2SPNXG3V5P35ZA35YM1JTW/articles-assets/01KFXFA89BHQHVAJNAZCJMWDA1.png",
4806
+ name: ""
4807
+ },
4808
+ imageCaption: [
4809
+ {
4810
+ type: "paragraph",
4811
+ children: [{ text: "Innovative solutions redefine connectivity, enhancing user experience through seamless digital integration and efficiency." }]
4812
+ }
4813
+ ],
4814
+ creds: [
4815
+ {
4816
+ type: "paragraph",
4817
+ children: [{ text: "CEO @ Company" }]
4818
+ }
4819
+ ]
4820
+ },
4821
+ {
4822
+ image: {
4823
+ objectFit: "cover",
4824
+ url: "https://cdn.cntrl.site/component-assets/3.jpg",
4825
+ name: "Testimonial-2.png"
4826
+ },
4827
+ icon: {
4828
+ objectFit: "cover",
4829
+ url: "https://cdn.cntrl.site/projects/01GJ2SPNXG3V5P35ZA35YM1JTW/articles-assets/01KFXFA89BHQHVAJNAZCJMWDA1.png",
4830
+ name: ""
4831
+ },
4832
+ imageCaption: [
4833
+ {
4834
+ type: "paragraph",
4835
+ children: [{ text: "In the realm of digital innovation, transformative algorithms redefine connectivity, propelling unprecedented technological advancements." }]
4836
+ }
4837
+ ],
4838
+ creds: [
4839
+ {
4840
+ type: "paragraph",
4841
+ children: [{ text: "CEO @ Company" }]
4842
+ }
4843
+ ]
4844
+ },
4845
+ {
4846
+ image: {
4847
+ objectFit: "cover",
4848
+ url: "https://cdn.cntrl.site/component-assets/4.jpg",
4849
+ name: "Testimonial-3.png"
4850
+ },
4851
+ icon: {
4852
+ objectFit: "cover",
4853
+ url: "https://cdn.cntrl.site/projects/01GJ2SPNXG3V5P35ZA35YM1JTW/articles-assets/01KFXFA89BHQHVAJNAZCJMWDA1.png",
4854
+ name: ""
4855
+ },
4856
+ imageCaption: [
4857
+ {
4858
+ type: "paragraph",
4859
+ children: [{ text: "Harnessing innovative algorithms, this paradigm shift enhances computational efficiency and optimizes data processing frameworks." }]
4860
+ }
4861
+ ],
4862
+ creds: [
4863
+ {
4864
+ type: "paragraph",
4865
+ children: [{ text: "CEO @ Company" }]
4866
+ }
4867
+ ]
4868
+ }
4869
+ ]
4870
+ },
4871
+ styles: {
4872
+ layoutBased: true,
4873
+ type: "object",
4874
+ properties: {
4875
+ caption: {
4876
+ dataName: "caption",
4877
+ type: "object",
4878
+ properties: {
4879
+ fontSettings: {
4880
+ type: "object",
4881
+ display: {
4882
+ type: "font-settings"
4883
+ },
4884
+ properties: {
4885
+ fontFamily: {
4886
+ type: "string"
4887
+ },
4888
+ fontWeight: {
4889
+ type: "number"
4890
+ },
4891
+ fontStyle: {
4892
+ type: "string"
4893
+ }
4894
+ }
4895
+ },
4896
+ widthSettings: {
4897
+ display: {
4898
+ type: "text-width-control"
4899
+ },
4900
+ type: "object",
4901
+ properties: {
4902
+ width: {
4903
+ type: "number"
4904
+ },
4905
+ sizing: {
4906
+ type: "string",
4907
+ enum: ["auto", "manual"]
4908
+ }
4909
+ }
4910
+ },
4911
+ fontSizeLineHeight: {
4912
+ type: "object",
4913
+ display: {
4914
+ type: "font-size-line-height"
4915
+ },
4916
+ properties: {
4917
+ fontSize: {
4918
+ type: "number"
4919
+ },
4920
+ lineHeight: {
4921
+ type: "number"
4922
+ }
4923
+ }
4924
+ },
4925
+ letterSpacing: {
4926
+ display: {
4927
+ type: "letter-spacing-input"
4928
+ },
4929
+ type: "number"
4930
+ },
4931
+ wordSpacing: {
4932
+ display: {
4933
+ type: "word-spacing-input"
4934
+ },
4935
+ type: "number"
4936
+ },
4937
+ textAlign: {
4938
+ display: {
4939
+ type: "text-align-control"
4940
+ },
4941
+ type: "string",
4942
+ enum: ["left", "center", "right"]
4943
+ },
4944
+ textAppearance: {
4945
+ display: {
4946
+ type: "text-appearance"
4947
+ },
4948
+ properties: {
4949
+ textTransform: {
4950
+ type: "string",
4951
+ enum: ["none", "uppercase", "lowercase"]
4952
+ },
4953
+ textDecoration: {
4954
+ type: "string",
4955
+ enum: ["none", "underline"]
4956
+ },
4957
+ fontVariant: {
4958
+ type: "string",
4959
+ enum: ["normal", "small-caps"]
4960
+ }
4961
+ }
4962
+ },
4963
+ color: {
4964
+ display: {
4965
+ type: "style-panel-color-picker"
4966
+ },
4967
+ type: "string"
4968
+ }
4969
+ }
4970
+ }
4971
+ },
4972
+ default: {
4973
+ caption: {
4974
+ widthSettings: {
4975
+ width: 0.13,
4976
+ sizing: "auto"
4977
+ },
4978
+ fontSettings: {
4979
+ fontFamily: "Arial",
4980
+ fontWeight: 400,
4981
+ fontStyle: "normal"
4982
+ },
4983
+ fontSizeLineHeight: {
4984
+ fontSize: 0.02,
4985
+ lineHeight: 0.02
4986
+ },
4987
+ letterSpacing: 0,
4988
+ wordSpacing: 0,
4989
+ textAlign: "left",
4990
+ textAppearance: {
4991
+ textTransform: "none",
4992
+ textDecoration: "none",
4993
+ fontVariant: "normal"
4994
+ },
4995
+ color: "#000000"
4996
+ }
4997
+ }
4998
+ }
4999
+ },
5000
+ required: ["settings", "content", "styles"]
5001
+ }
5002
+ };
3668
5003
  const components = [
3669
5004
  ControlSliderComponent,
3670
5005
  ControlImageRevealSliderComponent,
3671
- LightboxComponent
5006
+ LightboxComponent,
5007
+ TestimonialsComponent
3672
5008
  ];
3673
5009
  export {
3674
5010
  components