@royaloperahouse/chord 1.18.2-b-chord-development → 1.18.2-d-chord-development

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.
@@ -3513,7 +3513,7 @@ var isIOS = function isIOS() {
3513
3513
 
3514
3514
 
3515
3515
  var useIOS = function useIOS() {
3516
- var _useState = React.useState(false),
3516
+ var _useState = React.useState(isIOS()),
3517
3517
  IOS = _useState[0],
3518
3518
  setIOS = _useState[1];
3519
3519
 
@@ -3524,6 +3524,40 @@ var useIOS = function useIOS() {
3524
3524
  return IOS;
3525
3525
  };
3526
3526
 
3527
+ var setScreenWidth = function setScreenWidth(setterFunction) {
3528
+ if (typeof innerWidth !== undefined && innerWidth < breakpoints.sm) {
3529
+ setterFunction(true);
3530
+ return;
3531
+ }
3532
+
3533
+ setterFunction(false);
3534
+ return;
3535
+ };
3536
+
3537
+ var useWidth = function useWidth() {
3538
+ var _useState2 = React.useState(function () {
3539
+ if (typeof innerWidth !== undefined && innerWidth < breakpoints.sm) {
3540
+ return true;
3541
+ }
3542
+
3543
+ return false;
3544
+ }),
3545
+ isPortraitMobile = _useState2[0],
3546
+ setIsPortraitMobile = _useState2[1];
3547
+
3548
+ React.useEffect(function () {
3549
+ var callSetScreenWidth = function callSetScreenWidth() {
3550
+ return setScreenWidth(setIsPortraitMobile);
3551
+ };
3552
+
3553
+ if (typeof window.innerWidth !== undefined) window.addEventListener('resize', callSetScreenWidth);
3554
+ return function () {
3555
+ return window.removeEventListener('resize', callSetScreenWidth);
3556
+ };
3557
+ }, []);
3558
+ return isPortraitMobile;
3559
+ };
3560
+
3527
3561
  var VideoControls = function VideoControls(_ref) {
3528
3562
  var videoElementId = _ref.videoElementId,
3529
3563
  _ref$defaultMuted = _ref.defaultMuted,
@@ -3709,8 +3743,96 @@ var SvgContainer = /*#__PURE__*/styled__default.div(_templateObject2$f || (_temp
3709
3743
  var NumContainer = /*#__PURE__*/styled__default.div(_templateObject3$9 || (_templateObject3$9 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n display: flex;\n justify-content: center;\n width: 12px;\n height: 12px;\n position: absolute;\n top: 8px;\n margin-left: 6px;\n\n & .basket-num {\n color: white;\n font-size: 10px;\n font-family: var(--font-family-navigation);\n }\n"])));
3710
3744
  var BasketText = /*#__PURE__*/styled__default.a(_templateObject4$5 || (_templateObject4$5 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-size: var(--font-size-navigation);\n font-family: var(--font-family-navigation);\n color: var(--base-color-black);\n margin-left: 6px;\n text-decoration: none;\n"])));
3711
3745
 
3746
+ var getSecondsUntil = function getSecondsUntil(expiryUnixTimestamp) {
3747
+ if (!expiryUnixTimestamp) return 0;
3748
+ var now = Date.now();
3749
+ var expiry = new Date(expiryUnixTimestamp * 1000);
3750
+ var diff = Math.round((expiry.getTime() - now) / 1000);
3751
+ return diff > 0 ? diff : 0;
3752
+ };
3753
+ var formatTime = function formatTime(seconds) {
3754
+ if (seconds > 60) {
3755
+ return Math.ceil(seconds / 60) + " mins";
3756
+ }
3757
+
3758
+ return seconds + " sec" + (seconds === 1 ? '' : 's');
3759
+ };
3760
+ var checkTimeRed = function checkTimeRed(seconds) {
3761
+ if (seconds <= 0) {
3762
+ return false;
3763
+ }
3764
+
3765
+ return seconds / 60 <= 5;
3766
+ };
3767
+
3768
+ var useBasket = function useBasket(expiryUnixTimestamp, numItems) {
3769
+ var _useState = React.useState(),
3770
+ basketText = _useState[0],
3771
+ setBasketText = _useState[1];
3772
+
3773
+ var _useState2 = React.useState(),
3774
+ basketIsActive = _useState2[0],
3775
+ setBasketIsActive = _useState2[1];
3776
+
3777
+ var _useState3 = React.useState(numItems != null ? numItems : 0),
3778
+ basketNumItems = _useState3[0],
3779
+ setBasketNumItems = _useState3[1];
3780
+
3781
+ var _useState4 = React.useState(getSecondsUntil(expiryUnixTimestamp)),
3782
+ seconds = _useState4[0],
3783
+ setSeconds = _useState4[1];
3784
+
3785
+ var _useState5 = React.useState(),
3786
+ timer = _useState5[0],
3787
+ setTimer = _useState5[1];
3788
+
3789
+ React.useEffect(function () {
3790
+ if (!numItems) return;
3791
+ setBasketNumItems(numItems);
3792
+ }, [numItems]);
3793
+ React.useEffect(function () {
3794
+ if (!expiryUnixTimestamp) return;
3795
+ setSeconds(getSecondsUntil(expiryUnixTimestamp));
3796
+ }, [expiryUnixTimestamp]);
3797
+ React.useEffect(function () {
3798
+ if (timer) {
3799
+ clearInterval(timer); // clears the old timer before setting a new one
3800
+ }
3801
+
3802
+ if (!expiryUnixTimestamp || numItems === 0) return function () {
3803
+ return undefined;
3804
+ };
3805
+ var interval = setInterval(function () {
3806
+ setSeconds(getSecondsUntil(expiryUnixTimestamp));
3807
+ }, 1000);
3808
+ setTimer(interval);
3809
+ return function () {
3810
+ return clearInterval(interval);
3811
+ };
3812
+ }, [expiryUnixTimestamp]);
3813
+ React.useEffect(function () {
3814
+ if (!timer) return;
3815
+
3816
+ if (seconds > 0) {
3817
+ setBasketText(formatTime(seconds));
3818
+ setBasketIsActive(checkTimeRed(seconds));
3819
+ } else {
3820
+ clearInterval(timer);
3821
+ setBasketNumItems(0);
3822
+ setBasketText('');
3823
+ setBasketIsActive(false);
3824
+ }
3825
+ }, [seconds, timer]);
3826
+ return {
3827
+ basketText: basketText,
3828
+ basketNumItems: basketNumItems,
3829
+ basketIsActive: basketIsActive
3830
+ };
3831
+ };
3832
+
3712
3833
  var Basket$1 = function Basket(_ref) {
3713
3834
  var text = _ref.text,
3835
+ expiryTime = _ref.expiryTime,
3714
3836
  link = _ref.link,
3715
3837
  _ref$selected = _ref.selected,
3716
3838
  selected = _ref$selected === void 0 ? false : _ref$selected,
@@ -3718,8 +3840,7 @@ var Basket$1 = function Basket(_ref) {
3718
3840
  numItems = _ref$numItems === void 0 ? 0 : _ref$numItems,
3719
3841
  onClick = _ref.onClick,
3720
3842
  _ref$colorPrimary = _ref.colorPrimary,
3721
- colorPrimary = _ref$colorPrimary === void 0 ? 'primary' : _ref$colorPrimary,
3722
- isActive = _ref.isActive;
3843
+ colorPrimary = _ref$colorPrimary === void 0 ? 'primary' : _ref$colorPrimary;
3723
3844
 
3724
3845
  var onClickHandler = function onClickHandler() {
3725
3846
  if (onClick) {
@@ -3727,29 +3848,35 @@ var Basket$1 = function Basket(_ref) {
3727
3848
  }
3728
3849
  };
3729
3850
 
3851
+ var _useBasket = useBasket(expiryTime, numItems),
3852
+ basketText = _useBasket.basketText,
3853
+ basketNumItems = _useBasket.basketNumItems,
3854
+ basketIsActive = _useBasket.basketIsActive;
3855
+
3856
+ var isEmpty = expiryTime ? basketNumItems <= 0 : numItems <= 0;
3857
+
3730
3858
  var onKeyDownHandler = function onKeyDownHandler(e) {
3731
3859
  if (e.key === 'Enter') {
3732
3860
  onClickHandler();
3733
3861
  }
3734
3862
  };
3735
3863
 
3736
- var empty = numItems <= 0;
3737
3864
  return /*#__PURE__*/React__default.createElement(BasketContainer, {
3738
3865
  selected: selected,
3739
3866
  onClick: onClickHandler,
3740
3867
  onKeyDown: onKeyDownHandler,
3741
3868
  colorPrimary: colorPrimary,
3742
- isActive: isActive,
3869
+ isActive: basketIsActive,
3743
3870
  tabIndex: 0
3744
- }, /*#__PURE__*/React__default.createElement(SvgContainer, null, empty ? /*#__PURE__*/React__default.createElement(Icon, {
3871
+ }, /*#__PURE__*/React__default.createElement(SvgContainer, null, isEmpty ? /*#__PURE__*/React__default.createElement(Icon, {
3745
3872
  iconName: "Basket"
3746
3873
  }) : /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Icon, {
3747
3874
  iconName: "BasketFull"
3748
3875
  }), /*#__PURE__*/React__default.createElement(NumContainer, null, /*#__PURE__*/React__default.createElement("span", {
3749
3876
  className: "basket-num"
3750
- }, numItems)))), /*#__PURE__*/React__default.createElement("div", null, !empty ? /*#__PURE__*/React__default.createElement(BasketText, {
3877
+ }, expiryTime ? basketNumItems : numItems)))), /*#__PURE__*/React__default.createElement("div", null, !isEmpty ? /*#__PURE__*/React__default.createElement(BasketText, {
3751
3878
  "data-testid": "baskettext"
3752
- }, text) : ''));
3879
+ }, expiryTime ? basketText : text) : ''));
3753
3880
  };
3754
3881
 
3755
3882
  var _templateObject$v, _templateObject2$g;
@@ -4013,6 +4140,7 @@ var NavTop = function NavTop(_ref) {
4013
4140
  accountOptions = _ref.accountOptions,
4014
4141
  onLink = _ref.onLink,
4015
4142
  basketText = _ref.basketText,
4143
+ basketExpiryUnixTimestamp = _ref.basketExpiryUnixTimestamp,
4016
4144
  basketLink = _ref.basketLink,
4017
4145
  basketNumItems = _ref.basketNumItems,
4018
4146
  basketIsActive = _ref.basketIsActive,
@@ -4028,6 +4156,7 @@ var NavTop = function NavTop(_ref) {
4028
4156
  }), /*#__PURE__*/React__default.createElement(Basket$1, {
4029
4157
  link: basketLink,
4030
4158
  text: basketText,
4159
+ expiryTime: basketExpiryUnixTimestamp,
4031
4160
  numItems: basketNumItems,
4032
4161
  isActive: basketIsActive,
4033
4162
  onClick: onLink,
@@ -6626,6 +6755,12 @@ var CompactHeaderBranding = function CompactHeaderBranding(_ref) {
6626
6755
  };
6627
6756
 
6628
6757
  var _excluded$k = ["text"];
6758
+ var getVideoPosterAttr = function getVideoPosterAttr(bgDesktopImg, bgDeviceImg) {
6759
+ var isIOS = useIOS();
6760
+ var isPortraitMobile = useWidth();
6761
+ if (!isIOS) return undefined;
6762
+ return isPortraitMobile ? bgDeviceImg || bgDesktopImg : bgDesktopImg;
6763
+ };
6629
6764
 
6630
6765
  var PageHeadingCompact = function PageHeadingCompact(_ref) {
6631
6766
  var title = _ref.title,
@@ -6636,7 +6771,6 @@ var PageHeadingCompact = function PageHeadingCompact(_ref) {
6636
6771
  bgUrlDesktop = _ref.bgUrlDesktop,
6637
6772
  bgUrlDevice = _ref.bgUrlDevice,
6638
6773
  videoUrlDesktop = _ref.videoUrlDesktop,
6639
- videoUrlMobile = _ref.videoUrlMobile,
6640
6774
  _ref$bgImageAltText = _ref.bgImageAltText,
6641
6775
  bgImageAltText = _ref$bgImageAltText === void 0 ? '' : _ref$bgImageAltText,
6642
6776
  _ref$invert = _ref.invert,
@@ -6652,26 +6786,24 @@ var PageHeadingCompact = function PageHeadingCompact(_ref) {
6652
6786
 
6653
6787
  var titleSize = title && title.length > 20 ? 4 : 3;
6654
6788
  var videoElementId = 'compact-header-video';
6789
+ var videoPosterAttr = getVideoPosterAttr(bgUrlDesktop, bgUrlDevice);
6655
6790
  return /*#__PURE__*/React__default.createElement(ComapctHeaderWrapper, null, sponsor ? /*#__PURE__*/React__default.createElement(SponsorWrapper, {
6656
6791
  "data-testid": "compact-sponsor"
6657
6792
  }, customSponsorImage ? /*#__PURE__*/React__default.createElement(Sponsorship, Object.assign({
6658
6793
  "data-testid": "compact-custom-sponsor"
6659
6794
  }, customSponsorImage, {
6660
6795
  isCustomImage: true
6661
- })) : /*#__PURE__*/React__default.createElement(Sponsorship, null)) : null, /*#__PURE__*/React__default.createElement(CompactHeaderAssetWrapper, null, videoUrlDesktop || videoUrlMobile ? /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("video", {
6796
+ })) : /*#__PURE__*/React__default.createElement(Sponsorship, null)) : null, /*#__PURE__*/React__default.createElement(CompactHeaderAssetWrapper, null, videoUrlDesktop ? /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("video", {
6662
6797
  loop: true,
6663
6798
  muted: true,
6664
6799
  playsInline: true,
6665
6800
  "data-testid": "compact-video",
6666
- id: videoElementId
6801
+ id: videoElementId,
6802
+ poster: videoPosterAttr
6667
6803
  }, videoUrlDesktop && /*#__PURE__*/React__default.createElement("source", {
6668
- src: videoUrlDesktop,
6669
- media: "" + devices.desktop
6670
- }), videoUrlMobile && /*#__PURE__*/React__default.createElement("source", {
6671
- src: videoUrlMobile,
6672
- media: "" + devices.mobile
6804
+ src: videoUrlDesktop
6673
6805
  }), /*#__PURE__*/React__default.createElement("img", {
6674
- src: bgUrlDesktop,
6806
+ src: bgUrlDevice,
6675
6807
  alt: bgImageAltText,
6676
6808
  "data-testid": "compact-image"
6677
6809
  })), /*#__PURE__*/React__default.createElement(VideoControls, {