@treely/strapi-slices 7.1.1 → 7.1.2

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/README.md CHANGED
@@ -39,9 +39,12 @@ npm run build
39
39
  npm pack
40
40
  ```
41
41
 
42
- Go to the project which uses the strapi-slices package and install the package there:
42
+ Go to the project which uses the strapi-slices package and remove the `node_modules` and the `.next` folder before installing the package there:
43
43
 
44
44
  ```bash
45
+ rm -r node_modules
46
+ rm -r .next
47
+ npm install
45
48
  cd ../path/to/your/project
46
49
  npm install ../path/to/strapi-slices-package.tgz
47
50
  ```
@@ -3,10 +3,7 @@ import StrapiImage from '../../models/strapi/StrapiImage';
3
3
  export interface CarouselMarqueeBannerProps {
4
4
  slice: {
5
5
  title?: string;
6
- logos: {
7
- id: number;
8
- img: StrapiImage;
9
- }[];
6
+ logos: StrapiImage[];
10
7
  };
11
8
  }
12
9
  export declare const CarouselMarqueeBanner: React.FC<CarouselMarqueeBannerProps>;
@@ -5393,37 +5393,39 @@ var CarouselInnerContainer = /*#__PURE__*/styled__default.default(framerMotion.m
5393
5393
  });
5394
5394
  var LogoGrid = /*#__PURE__*/styled__default.default(framerMotion.motion.div)(_templateObject2 || (_templateObject2 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n gap: var(--boemly-space-6);\n\n @media screen and (max-width: ", ") {\n display: grid;\n grid-template-columns: 1fr 1fr;\n grid-gap: var(--boemly-space-6);\n }\n"])), BREAKPOINT_MD);
5395
5395
 
5396
- var CarouselMarqueeBanner = function CarouselMarqueeBanner(_ref) {
5396
+ // Separate component containing the actual logic
5397
+ var CarouselMarqueeBannerContent = function CarouselMarqueeBannerContent(_ref) {
5397
5398
  var slice = _ref.slice;
5398
5399
  var _useToken = boemly.useToken('colors', ['primary.50']),
5399
5400
  primary50 = _useToken[0];
5400
5401
  var _useWindowSize = reactUse.useWindowSize(),
5401
5402
  windowWidth = _useWindowSize.width;
5402
- var shouldDuplicateLogos = slice.logos.length < 5;
5403
+ var hasEnoughLogosForLoop = slice.logos.length >= 5;
5403
5404
  var LOOP_ARRAY_LENGTH = windowWidth > 2000 ? 5 : 4;
5404
5405
  // Duplicate Logos to create a full loop
5405
- var logosToRender = shouldDuplicateLogos ? slice.logos : Array.from({
5406
+ var logosToRender = hasEnoughLogosForLoop ? Array.from({
5406
5407
  length: LOOP_ARRAY_LENGTH
5407
5408
  }, function () {
5408
5409
  return slice.logos;
5409
- }).flat();
5410
+ }).flat() : slice.logos;
5410
5411
  var _useMediaQuery = boemly.useMediaQuery(BREAKPOINT_MD_QUERY),
5411
5412
  isMobile = _useMediaQuery[0];
5413
+ // Carousel setup
5412
5414
  var _useEmblaCarousel = useEmblaCarousel__default.default({
5413
- loop: shouldDuplicateLogos ? false : true,
5415
+ loop: hasEnoughLogosForLoop,
5414
5416
  align: 'start',
5415
5417
  containScroll: 'trimSnaps',
5416
5418
  dragFree: true
5417
- }, shouldDuplicateLogos ? [] : [AutoScroll__default.default({
5419
+ }, hasEnoughLogosForLoop ? [AutoScroll__default.default({
5418
5420
  playOnInit: true,
5419
5421
  speed: isMobile ? 0.5 : 1,
5420
5422
  stopOnInteraction: false,
5421
5423
  stopOnMouseEnter: false,
5422
5424
  stopOnFocusIn: false
5423
- })]),
5425
+ })] : []),
5424
5426
  emblaRef = _useEmblaCarousel[0];
5425
5427
  var renderLogos = function renderLogos() {
5426
- if (slice.logos.length < 5) {
5428
+ if (!hasEnoughLogosForLoop) {
5427
5429
  return React__default.default.createElement(LogoGrid, null, slice.logos.map(function (logo, index) {
5428
5430
  return React__default.default.createElement(boemly.Box, {
5429
5431
  key: logo.id + "-" + index,
@@ -5438,15 +5440,15 @@ var CarouselMarqueeBanner = function CarouselMarqueeBanner(_ref) {
5438
5440
  }, React__default.default.createElement(boemly.Box, {
5439
5441
  position: "relative",
5440
5442
  maxHeight: "xl",
5441
- height: "calc(" + (isMobile ? 'var(--boemly-sizes-16)' : 'var(--boemly-sizes-36)') + " / " + getClosestRatio(logo.img.img.data.attributes.width, logo.img.img.data.attributes.height) + ")",
5443
+ height: "calc(" + (isMobile ? 'var(--boemly-sizes-16)' : 'var(--boemly-sizes-36)') + " / " + getClosestRatio(logo.img.data.attributes.width, logo.img.data.attributes.height) + ")",
5442
5444
  width: isMobile ? '16' : '36',
5443
5445
  borderRadius: "xl"
5444
5446
  }, React__default.default.createElement(Image__default.default, {
5445
- src: strapiMediaUrl(logo.img.img, 'large'),
5446
- alt: logo.img.alt,
5447
+ src: strapiMediaUrl(logo.img, 'large'),
5448
+ alt: logo.alt,
5447
5449
  fill: true,
5448
5450
  style: {
5449
- objectFit: logo.img.objectFit || 'contain',
5451
+ objectFit: logo.objectFit || 'contain',
5450
5452
  borderRadius: 'var(--boemly-radii-xl)'
5451
5453
  }
5452
5454
  }))));
@@ -5473,15 +5475,15 @@ var CarouselMarqueeBanner = function CarouselMarqueeBanner(_ref) {
5473
5475
  }, React__default.default.createElement(boemly.Box, {
5474
5476
  position: "relative",
5475
5477
  maxHeight: "xl",
5476
- height: "calc(" + (isMobile ? 'var(--boemly-sizes-16)' : 'var(--boemly-sizes-36)') + " / " + getClosestRatio(logo.img.img.data.attributes.width, logo.img.img.data.attributes.height) + ")",
5478
+ height: "calc(" + (isMobile ? 'var(--boemly-sizes-16)' : 'var(--boemly-sizes-36)') + " / " + getClosestRatio(logo.img.data.attributes.width, logo.img.data.attributes.height) + ")",
5477
5479
  width: isMobile ? '16' : '36',
5478
5480
  borderRadius: "xl"
5479
5481
  }, React__default.default.createElement(Image__default.default, {
5480
- src: strapiMediaUrl(logo.img.img, 'large'),
5481
- alt: logo.img.alt,
5482
+ src: strapiMediaUrl(logo.img, 'large'),
5483
+ alt: logo.alt,
5482
5484
  fill: true,
5483
5485
  style: {
5484
- objectFit: logo.img.objectFit || 'contain',
5486
+ objectFit: logo.objectFit || 'contain',
5485
5487
  borderRadius: 'var(--boemly-radii-xl)'
5486
5488
  }
5487
5489
  }))));
@@ -5500,6 +5502,22 @@ var CarouselMarqueeBanner = function CarouselMarqueeBanner(_ref) {
5500
5502
  minHeight: "12"
5501
5503
  })) : null, renderLogos()));
5502
5504
  };
5505
+ // Lazy-rendering the child component after client-side hydration
5506
+ var CarouselMarqueeBanner = function CarouselMarqueeBanner(_ref2) {
5507
+ var slice = _ref2.slice;
5508
+ var _useState = React.useState(false),
5509
+ showChild = _useState[0],
5510
+ setShowChild = _useState[1];
5511
+ React.useEffect(function () {
5512
+ setShowChild(true); // Hydrate the component after the client-side is ready
5513
+ }, []);
5514
+ if (!showChild) {
5515
+ return React__default.default.createElement("div", null);
5516
+ }
5517
+ return React__default.default.createElement(CarouselMarqueeBannerContent, {
5518
+ slice: slice
5519
+ });
5520
+ };
5503
5521
 
5504
5522
  var Timeline = function Timeline(_ref) {
5505
5523
  var slice = _ref.slice;