@royaloperahouse/chord 1.18.2-b-chord-development → 1.18.2-c-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.
@@ -3709,8 +3709,96 @@ var SvgContainer = /*#__PURE__*/styled__default.div(_templateObject2$f || (_temp
3709
3709
  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
3710
  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
3711
 
3712
+ var getSecondsUntil = function getSecondsUntil(expiryUnixTimestamp) {
3713
+ if (!expiryUnixTimestamp) return 0;
3714
+ var now = Date.now();
3715
+ var expiry = new Date(expiryUnixTimestamp * 1000);
3716
+ var diff = Math.round((expiry.getTime() - now) / 1000);
3717
+ return diff > 0 ? diff : 0;
3718
+ };
3719
+ var formatTime = function formatTime(seconds) {
3720
+ if (seconds > 60) {
3721
+ return Math.ceil(seconds / 60) + " mins";
3722
+ }
3723
+
3724
+ return seconds + " sec" + (seconds === 1 ? '' : 's');
3725
+ };
3726
+ var checkTimeRed = function checkTimeRed(seconds) {
3727
+ if (seconds <= 0) {
3728
+ return false;
3729
+ }
3730
+
3731
+ return seconds / 60 <= 5;
3732
+ };
3733
+
3734
+ var useBasket = function useBasket(expiryUnixTimestamp, numItems) {
3735
+ var _useState = React.useState(),
3736
+ basketText = _useState[0],
3737
+ setBasketText = _useState[1];
3738
+
3739
+ var _useState2 = React.useState(),
3740
+ basketIsActive = _useState2[0],
3741
+ setBasketIsActive = _useState2[1];
3742
+
3743
+ var _useState3 = React.useState(numItems != null ? numItems : 0),
3744
+ basketNumItems = _useState3[0],
3745
+ setBasketNumItems = _useState3[1];
3746
+
3747
+ var _useState4 = React.useState(getSecondsUntil(expiryUnixTimestamp)),
3748
+ seconds = _useState4[0],
3749
+ setSeconds = _useState4[1];
3750
+
3751
+ var _useState5 = React.useState(),
3752
+ timer = _useState5[0],
3753
+ setTimer = _useState5[1];
3754
+
3755
+ React.useEffect(function () {
3756
+ if (!numItems) return;
3757
+ setBasketNumItems(numItems);
3758
+ }, [numItems]);
3759
+ React.useEffect(function () {
3760
+ if (!expiryUnixTimestamp) return;
3761
+ setSeconds(getSecondsUntil(expiryUnixTimestamp));
3762
+ }, [expiryUnixTimestamp]);
3763
+ React.useEffect(function () {
3764
+ if (timer) {
3765
+ clearInterval(timer); // clears the old timer before setting a new one
3766
+ }
3767
+
3768
+ if (!expiryUnixTimestamp || numItems === 0) return function () {
3769
+ return undefined;
3770
+ };
3771
+ var interval = setInterval(function () {
3772
+ setSeconds(getSecondsUntil(expiryUnixTimestamp));
3773
+ }, 1000);
3774
+ setTimer(interval);
3775
+ return function () {
3776
+ return clearInterval(interval);
3777
+ };
3778
+ }, [expiryUnixTimestamp]);
3779
+ React.useEffect(function () {
3780
+ if (!timer) return;
3781
+
3782
+ if (seconds > 0) {
3783
+ setBasketText(formatTime(seconds));
3784
+ setBasketIsActive(checkTimeRed(seconds));
3785
+ } else {
3786
+ clearInterval(timer);
3787
+ setBasketNumItems(0);
3788
+ setBasketText('');
3789
+ setBasketIsActive(false);
3790
+ }
3791
+ }, [seconds, timer]);
3792
+ return {
3793
+ basketText: basketText,
3794
+ basketNumItems: basketNumItems,
3795
+ basketIsActive: basketIsActive
3796
+ };
3797
+ };
3798
+
3712
3799
  var Basket$1 = function Basket(_ref) {
3713
3800
  var text = _ref.text,
3801
+ expiryTime = _ref.expiryTime,
3714
3802
  link = _ref.link,
3715
3803
  _ref$selected = _ref.selected,
3716
3804
  selected = _ref$selected === void 0 ? false : _ref$selected,
@@ -3718,8 +3806,7 @@ var Basket$1 = function Basket(_ref) {
3718
3806
  numItems = _ref$numItems === void 0 ? 0 : _ref$numItems,
3719
3807
  onClick = _ref.onClick,
3720
3808
  _ref$colorPrimary = _ref.colorPrimary,
3721
- colorPrimary = _ref$colorPrimary === void 0 ? 'primary' : _ref$colorPrimary,
3722
- isActive = _ref.isActive;
3809
+ colorPrimary = _ref$colorPrimary === void 0 ? 'primary' : _ref$colorPrimary;
3723
3810
 
3724
3811
  var onClickHandler = function onClickHandler() {
3725
3812
  if (onClick) {
@@ -3727,29 +3814,35 @@ var Basket$1 = function Basket(_ref) {
3727
3814
  }
3728
3815
  };
3729
3816
 
3817
+ var _useBasket = useBasket(expiryTime, numItems),
3818
+ basketText = _useBasket.basketText,
3819
+ basketNumItems = _useBasket.basketNumItems,
3820
+ basketIsActive = _useBasket.basketIsActive;
3821
+
3822
+ var isEmpty = expiryTime ? basketNumItems <= 0 : numItems <= 0;
3823
+
3730
3824
  var onKeyDownHandler = function onKeyDownHandler(e) {
3731
3825
  if (e.key === 'Enter') {
3732
3826
  onClickHandler();
3733
3827
  }
3734
3828
  };
3735
3829
 
3736
- var empty = numItems <= 0;
3737
3830
  return /*#__PURE__*/React__default.createElement(BasketContainer, {
3738
3831
  selected: selected,
3739
3832
  onClick: onClickHandler,
3740
3833
  onKeyDown: onKeyDownHandler,
3741
3834
  colorPrimary: colorPrimary,
3742
- isActive: isActive,
3835
+ isActive: basketIsActive,
3743
3836
  tabIndex: 0
3744
- }, /*#__PURE__*/React__default.createElement(SvgContainer, null, empty ? /*#__PURE__*/React__default.createElement(Icon, {
3837
+ }, /*#__PURE__*/React__default.createElement(SvgContainer, null, isEmpty ? /*#__PURE__*/React__default.createElement(Icon, {
3745
3838
  iconName: "Basket"
3746
3839
  }) : /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Icon, {
3747
3840
  iconName: "BasketFull"
3748
3841
  }), /*#__PURE__*/React__default.createElement(NumContainer, null, /*#__PURE__*/React__default.createElement("span", {
3749
3842
  className: "basket-num"
3750
- }, numItems)))), /*#__PURE__*/React__default.createElement("div", null, !empty ? /*#__PURE__*/React__default.createElement(BasketText, {
3843
+ }, expiryTime ? basketNumItems : numItems)))), /*#__PURE__*/React__default.createElement("div", null, !isEmpty ? /*#__PURE__*/React__default.createElement(BasketText, {
3751
3844
  "data-testid": "baskettext"
3752
- }, text) : ''));
3845
+ }, expiryTime ? basketText : text) : ''));
3753
3846
  };
3754
3847
 
3755
3848
  var _templateObject$v, _templateObject2$g;
@@ -4013,6 +4106,7 @@ var NavTop = function NavTop(_ref) {
4013
4106
  accountOptions = _ref.accountOptions,
4014
4107
  onLink = _ref.onLink,
4015
4108
  basketText = _ref.basketText,
4109
+ basketExpiryUnixTimestamp = _ref.basketExpiryUnixTimestamp,
4016
4110
  basketLink = _ref.basketLink,
4017
4111
  basketNumItems = _ref.basketNumItems,
4018
4112
  basketIsActive = _ref.basketIsActive,
@@ -4028,6 +4122,7 @@ var NavTop = function NavTop(_ref) {
4028
4122
  }), /*#__PURE__*/React__default.createElement(Basket$1, {
4029
4123
  link: basketLink,
4030
4124
  text: basketText,
4125
+ expiryTime: basketExpiryUnixTimestamp,
4031
4126
  numItems: basketNumItems,
4032
4127
  isActive: basketIsActive,
4033
4128
  onClick: onLink,