@royaloperahouse/chord 1.21.0-chord-development → 1.21.1-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.
package/CHANGELOG.md CHANGED
@@ -1,8 +1,13 @@
1
+ ## [1.21.1]
2
+ - Compact PageHeading: Refactored to support iOS devices
1
3
 
2
4
  ## [1.21.0]
3
5
  - TextLogo: add new component
4
6
  - Compact PageHeading: swap logo with TextLogo to fix iOS issues
5
7
 
8
+ ## [1.20.2-a]
9
+ - Made select state reset behaviour opt-in
10
+
6
11
  ## [1.20.2]
7
12
  - Card: change cursor to default for cards without buttons
8
13
  - HighlightsCarousel: hide button in case there are no text for them
@@ -12,19 +17,6 @@
12
17
 
13
18
  ## [1.20.0]
14
19
  - Tickbox: Add black-on-white option
15
-
16
- ## [1.19.0-a]
17
- - Tickbox: Add black-on-white option
18
-
19
- ## [1.18.2-n]
20
- - Reset the select component's selected value to the first option if options change
21
-
22
- ## [1.18.2-n]
23
- - Reset the select component's selected value to the first option if options change
24
-
25
- ## [1.18.1]
26
- ## [1.19.0]
27
-
28
20
  ## [1.19.0]
29
21
  - Add timer to navigation basket
30
22
  ## [1.18.3]
@@ -3534,44 +3534,21 @@ var VideoPlayButton = /*#__PURE__*/styled__default.button(_templateObject$r || (
3534
3534
  var VideoControlsWrapper = /*#__PURE__*/styled__default.div(_templateObject2$e || (_templateObject2$e = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n position: absolute;\n left: 50px;\n bottom: 24px;\n display: flex;\n align-items: center;\n @media ", " {\n left: 20px;\n bottom: 12px;\n }\n"])), devices.mobile);
3535
3535
  var VideoVolume = /*#__PURE__*/styled__default.input(_templateObject3$8 || (_templateObject3$8 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n width: 100px;\n margin-left: 24px;\n"])));
3536
3536
  var VideoMute = /*#__PURE__*/styled__default.button(_templateObject4$4 || (_templateObject4$4 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n width: 17px;\n height: 17px;\n background: none;\n border: none;\n padding: 0;\n svg {\n width: 100%;\n height: 100%;\n }\n"])));
3537
- var thumbStyes = /*#__PURE__*/styled.css(_templateObject5$2 || (_templateObject5$2 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n -webkit-appearance: none;\n border: none;\n height: 8px;\n width: 8px;\n border-radius: 50%;\n background: #ffffff;\n border: none;\n transform: translateY(-25%);\n"])));
3537
+ var thumbStyes = /*#__PURE__*/styled.css(_templateObject5$2 || (_templateObject5$2 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n -webkit-appearance: none;\n appearance: none;\n border: none;\n height: 8px;\n width: 8px;\n border-radius: 50%;\n background: #ffffff;\n border: none;\n transform: translateY(-25%);\n"])));
3538
3538
  var trackStyles = /*#__PURE__*/styled.css(_templateObject6$1 || (_templateObject6$1 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n width: 100%;\n cursor: pointer;\n height: 4px;\n cursor: pointer;\n background: rgb(241, 241, 241, 0.5);\n border-radius: 1.3px;\n border: none;\n"])));
3539
- var VolumeControlsWrapper = /*#__PURE__*/styled__default.div(_templateObject7$1 || (_templateObject7$1 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n display: flex;\n margin: 12px 12px;\n padding: 0;\n background-color: rgb(26, 26, 26, 0.6);\n height: 36px;\n width: ", ";\n align-items: center;\n justify-content: center;\n\n /* Range slider overrides */\n input[type='range' i] {\n -webkit-appearance: none;\n width: 42px;\n margin: 0;\n margin-left: 7px;\n background: transparent; /* Otherwise white in Chrome */\n\n ::-webkit-slider-runnable-track {\n ", "\n }\n ::-moz-range-track {\n ", "\n }\n ::-ms-track {\n ", "\n }\n ::-ms-fill-lower {\n ", "\n }\n ::-ms-fill-upper {\n ", "\n }\n\n ::-webkit-slider-thumb {\n ", "\n }\n ::-moz-range-thumb {\n ", "\n }\n ::-ms-thumb {\n ", "\n }\n }\n"])), function (_ref) {
3539
+ var VolumeControlsWrapper = /*#__PURE__*/styled__default.div(_templateObject7$1 || (_templateObject7$1 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n display: flex;\n margin: 12px 12px;\n padding: 0;\n background-color: rgb(26, 26, 26, 0.6);\n height: 36px;\n width: ", ";\n align-items: center;\n justify-content: center;\n\n /* Range slider overrides */\n input[type='range' i] {\n -webkit-appearance: none;\n appearance: none;\n width: 42px;\n margin: 0;\n margin-left: 7px;\n background: transparent; /* Otherwise white in Chrome */\n\n ::-webkit-slider-runnable-track {\n ", "\n }\n ::-moz-range-track {\n ", "\n }\n ::-ms-track {\n ", "\n }\n ::-ms-fill-lower {\n ", "\n }\n ::-ms-fill-upper {\n ", "\n }\n\n ::-webkit-slider-thumb {\n ", "\n }\n ::-moz-range-thumb {\n ", "\n }\n ::-ms-thumb {\n ", "\n }\n }\n"])), function (_ref) {
3540
3540
  var volumeHidden = _ref.volumeHidden;
3541
3541
  return volumeHidden ? '40px' : '100px';
3542
3542
  }, trackStyles, trackStyles, trackStyles, trackStyles, trackStyles, thumbStyes, thumbStyes, thumbStyes);
3543
3543
 
3544
- var isIOS = function isIOS() {
3545
- try {
3546
- console.warn('Do not use this on server side rendering, it may throw an error.');
3547
- if (typeof navigator === 'undefined') return false;
3548
- return ['iPad Simulator', 'iPhone Simulator', 'iPod Simulator', 'iPad', 'iPhone', 'iPod'].includes(navigator.platform) || // iPad on iOS 13 detection
3549
- navigator.userAgent.includes('Mac') && 'ontouchend' in document;
3550
- } catch (e) {
3551
- console.warn('Error checking if device is iOS.');
3552
- return false;
3553
- }
3554
- }; // React hook version of isIOS
3555
-
3556
-
3557
- var useIOS = function useIOS() {
3558
- var _useState = React.useState(false),
3559
- IOS = _useState[0],
3560
- setIOS = _useState[1];
3561
-
3562
- React.useEffect(function () {
3563
- if (typeof navigator === 'undefined') return;
3564
- setIOS(isIOS());
3565
- }, []);
3566
- return IOS;
3567
- };
3568
-
3569
3544
  var VideoControls = function VideoControls(_ref) {
3570
3545
  var videoElementId = _ref.videoElementId,
3571
3546
  _ref$defaultMuted = _ref.defaultMuted,
3572
3547
  defaultMuted = _ref$defaultMuted === void 0 ? true : _ref$defaultMuted,
3573
3548
  _ref$defaultPlaying = _ref.defaultPlaying,
3574
- defaultPlaying = _ref$defaultPlaying === void 0 ? false : _ref$defaultPlaying;
3549
+ defaultPlaying = _ref$defaultPlaying === void 0 ? false : _ref$defaultPlaying,
3550
+ _ref$hideVolume = _ref.hideVolume,
3551
+ hideVolume = _ref$hideVolume === void 0 ? false : _ref$hideVolume;
3575
3552
 
3576
3553
  var _React$useState = React__default.useState(defaultPlaying),
3577
3554
  playing = _React$useState[0],
@@ -3585,8 +3562,6 @@ var VideoControls = function VideoControls(_ref) {
3585
3562
  volume = _React$useState3[0],
3586
3563
  setVolume = _React$useState3[1];
3587
3564
 
3588
- var isIOS = useIOS();
3589
-
3590
3565
  var getVideoElement = function getVideoElement() {
3591
3566
  return document.querySelector("#" + videoElementId);
3592
3567
  };
@@ -3643,7 +3618,7 @@ var VideoControls = function VideoControls(_ref) {
3643
3618
  }, /*#__PURE__*/React__default.createElement(Icon, {
3644
3619
  iconName: !playing ? 'Play' : 'Pause'
3645
3620
  })), /*#__PURE__*/React__default.createElement(VolumeControlsWrapper, {
3646
- volumeHidden: isIOS
3621
+ volumeHidden: hideVolume
3647
3622
  }, /*#__PURE__*/React__default.createElement(VideoMute, {
3648
3623
  id: "mute",
3649
3624
  className: "video-mute-button",
@@ -3654,7 +3629,7 @@ var VideoControls = function VideoControls(_ref) {
3654
3629
  "data-testid": "mute-icon",
3655
3630
  iconName: muted ? 'Muted' : 'Volume',
3656
3631
  color: "white"
3657
- })), !isIOS && /*#__PURE__*/React__default.createElement(VideoVolume, {
3632
+ })), !hideVolume && /*#__PURE__*/React__default.createElement(VideoVolume, {
3658
3633
  id: "vol-control",
3659
3634
  type: "range",
3660
3635
  min: "0",
@@ -6738,11 +6713,20 @@ var PageHeadingStream = function PageHeadingStream(_ref) {
6738
6713
  }), /*#__PURE__*/React__default.createElement(StreamBadge, null))));
6739
6714
  };
6740
6715
 
6716
+ var BrandingStyle;
6717
+
6718
+ (function (BrandingStyle) {
6719
+ BrandingStyle["BlockText"] = "BlockText";
6720
+ BrandingStyle["BodyText"] = "BodyText";
6721
+ BrandingStyle["StreamLogo"] = "StreamLogo";
6722
+ BrandingStyle["CinemaLogo"] = "CinemaLogo";
6723
+ })(BrandingStyle || (BrandingStyle = {}));
6724
+
6741
6725
  var _templateObject$X, _templateObject2$E, _templateObject3$x, _templateObject5$k, _templateObject6$e, _templateObject7$c, _templateObject8$9, _templateObject9$4, _templateObject10$4;
6742
- var BrandingTextBlock = /*#__PURE__*/styled__default.p(_templateObject$X || (_templateObject$X = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-size: var(--font-size-overline-4);\n font-family: var(--font-family-header);\n text-transform: uppercase;\n margin: 0;\n white-space: nowrap;\n @media screen and (max-width: 920px) {\n white-space: normal;\n }\n @media ", " {\n white-space: nowrap;\n }\n"])), devices.mobile);
6726
+ var BrandingTextBlock = /*#__PURE__*/styled__default.div(_templateObject$X || (_templateObject$X = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-size: var(--font-size-overline-4);\n font-family: var(--font-family-header);\n text-transform: uppercase;\n margin: 0;\n white-space: nowrap;\n @media screen and (max-width: 920px) {\n white-space: normal;\n }\n @media ", " {\n white-space: nowrap;\n }\n"])), devices.mobile);
6743
6727
  var BrandingTextBody = /*#__PURE__*/styled__default.p(_templateObject2$E || (_templateObject2$E = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-family: var(--font-family-body);\n font-size: var(--font-size-heading-6);\n line-height: var(--line-height-heading-6);\n"])));
6744
6728
  var ComapctHeaderWrapper = /*#__PURE__*/styled__default.div(_templateObject3$x || (_templateObject3$x = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n position: relative;\n display: block;\n"])));
6745
- var CompactHeaderAssetWrapper = /*#__PURE__*/styled__default.div(_templateObject5$k || (_templateObject5$k = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n height: 37.5vw;\n width: 100%;\n position: relative;\n overflow: hidden;\n background-color: #000;\n img {\n position: relative;\n height: 100%;\n width: 100%;\n object-fit: cover;\n }\n video {\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n object-fit: cover;\n }\n @media ", " {\n height: 85vw;\n }\n"])), devices.mobile);
6729
+ var CompactHeaderAssetWrapper = /*#__PURE__*/styled__default.div(_templateObject5$k || (_templateObject5$k = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n height: 37.5vw;\n width: 100%;\n position: relative;\n overflow: hidden;\n background-color: #000;\n img {\n position: relative;\n height: 100%;\n width: 100%;\n object-fit: cover;\n }\n video {\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n object-fit: contain;\n @media ", " {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n margin: auto;\n height: auto;\n max-height: 100vh;\n width: 100%;\n object-fit: contain;\n }\n }\n @media ", " {\n height: 85vw;\n max-height: 100vh;\n }\n"])), devices.mobile, devices.mobile);
6746
6730
  var CompactHeaderCopyWrapper = /*#__PURE__*/styled__default(Grid)(_templateObject6$e || (_templateObject6$e = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n position: relative;\n height: 160px;\n grid-template-rows: min-content min-content;\n grid-template-rows: min-content min-content;\n grid-template-columns: [logo] 1fr [title] 3fr [cta] 1fr;\n align-content: center;\n gap: 0;\n background-color: ", ";\n color: ", ";\n svg {\n max-width: 155px;\n fill: ", ";\n }\n @media ", " {\n display: flex;\n flex-direction: column;\n height: auto;\n padding: 32px 20px;\n }\n"])), function (_ref) {
6747
6731
  var invert = _ref.invert,
6748
6732
  theme = _ref.theme;
@@ -6781,24 +6765,24 @@ var renderBranding = function renderBranding(brandingStyle, brandingText, invert
6781
6765
  var color = invert ? exports.Colors.Black : exports.Colors.White;
6782
6766
 
6783
6767
  switch (brandingStyle) {
6784
- case 'BlockText':
6768
+ case BrandingStyle.BlockText:
6785
6769
  return /*#__PURE__*/React__default.createElement(BrandingTextBlock, null, truncate(stripAllHtmlTags(brandingText), 25));
6786
6770
 
6787
- case 'BodyText':
6771
+ case BrandingStyle.BodyText:
6788
6772
  return /*#__PURE__*/React__default.createElement(BrandingTextBody, {
6789
6773
  dangerouslySetInnerHTML: {
6790
6774
  __html: truncateHtmlString(brandingText, 65)
6791
6775
  }
6792
6776
  });
6793
6777
 
6794
- case 'StreamLogo':
6778
+ case BrandingStyle.StreamLogo:
6795
6779
  return /*#__PURE__*/React__default.createElement(Logo, {
6796
6780
  color: color,
6797
6781
  fontSize: 12,
6798
6782
  productName: TextLogoProduct.Stream
6799
6783
  });
6800
6784
 
6801
- case 'CinemaLogo':
6785
+ case BrandingStyle.CinemaLogo:
6802
6786
  return /*#__PURE__*/React__default.createElement(Logo, {
6803
6787
  color: color,
6804
6788
  fontSize: 12,
@@ -6806,7 +6790,7 @@ var renderBranding = function renderBranding(brandingStyle, brandingText, invert
6806
6790
  });
6807
6791
 
6808
6792
  default:
6809
- return /*#__PURE__*/React__default.createElement("p", null, "Royal Opera House");
6793
+ return null;
6810
6794
  }
6811
6795
  };
6812
6796
 
@@ -6818,70 +6802,194 @@ var CompactHeaderBranding = function CompactHeaderBranding(_ref) {
6818
6802
  return /*#__PURE__*/React__default.createElement(CompactHeaderLogoWrapper, null, renderBranding(brandingStyle, brandingText, invert));
6819
6803
  };
6820
6804
 
6805
+ var isIOS = function isIOS() {
6806
+ try {
6807
+ console.warn('Do not use this on server side rendering, it may throw an error.');
6808
+ if (typeof navigator === 'undefined') return false;
6809
+ return ['iPad Simulator', 'iPhone Simulator', 'iPod Simulator', 'iPad', 'iPhone', 'iPod'].includes(navigator.platform) || // iPad on iOS 13 detection
6810
+ navigator.userAgent.includes('Mac') && 'ontouchend' in document;
6811
+ } catch (e) {
6812
+ console.warn('Error checking if device is iOS.');
6813
+ return false;
6814
+ }
6815
+ }; // React hook version of isIOS
6816
+
6817
+
6818
+ var useIOS = function useIOS() {
6819
+ var _useState = React.useState(false),
6820
+ IOS = _useState[0],
6821
+ setIOS = _useState[1];
6822
+
6823
+ React.useEffect(function () {
6824
+ if (typeof navigator === 'undefined') return;
6825
+ setIOS(isIOS());
6826
+ }, []);
6827
+ return IOS;
6828
+ }; // Checks device size based on window width
6829
+
6830
+ var isMobile = function isMobile() {
6831
+ try {
6832
+ if (typeof window === undefined) return false;
6833
+ return window.innerWidth < breakpoints.sm;
6834
+ } catch (e) {
6835
+ console.warn('Error checking if device is mobile.');
6836
+ return false;
6837
+ }
6838
+ }; // React hook version of isMobile
6839
+
6840
+ var useMobile = function useMobile() {
6841
+ var _useState2 = React.useState(false),
6842
+ mobile = _useState2[0],
6843
+ setMobile = _useState2[1];
6844
+
6845
+ React.useEffect(function () {
6846
+ if (typeof window === undefined) return;
6847
+ setMobile(isMobile());
6848
+ }, []);
6849
+ return mobile;
6850
+ };
6851
+
6821
6852
  var _excluded$k = ["text"];
6822
6853
 
6823
- var PageHeadingCompact = function PageHeadingCompact(_ref) {
6824
- var title = _ref.title,
6825
- link = _ref.link,
6826
- _ref$sponsor = _ref.sponsor,
6827
- sponsor = _ref$sponsor === void 0 ? true : _ref$sponsor,
6828
- customSponsorImage = _ref.customSponsorImage,
6829
- bgUrlDesktop = _ref.bgUrlDesktop,
6830
- bgUrlDevice = _ref.bgUrlDevice,
6831
- videoUrlDesktop = _ref.videoUrlDesktop,
6832
- _ref$bgImageAltText = _ref.bgImageAltText,
6833
- bgImageAltText = _ref$bgImageAltText === void 0 ? '' : _ref$bgImageAltText,
6834
- _ref$invert = _ref.invert,
6835
- invert = _ref$invert === void 0 ? false : _ref$invert,
6836
- _ref$brandingStyle = _ref.brandingStyle,
6837
- brandingStyle = _ref$brandingStyle === void 0 ? 'BlockText' : _ref$brandingStyle,
6838
- _ref$brandingText = _ref.brandingText,
6839
- brandingText = _ref$brandingText === void 0 ? 'Royal Opera House' : _ref$brandingText;
6854
+ var useResponsiveVideo = function useResponsiveVideo(video, poster) {
6855
+ var mobileVideo = video.mobile || video.desktop;
6856
+ var desktopVideo = video.desktop || video.mobile;
6857
+ var mobilePoster = poster.mobile || poster.desktop;
6858
+ var desktopPoster = poster.desktop || poster.mobile;
6840
6859
 
6841
- var _ref2 = link || {},
6842
- linkText = _ref2.text,
6843
- restLink = _objectWithoutPropertiesLoose(_ref2, _excluded$k);
6860
+ var _useState = React.useState(desktopPoster),
6861
+ posterUrl = _useState[0],
6862
+ setPoster = _useState[1];
6863
+
6864
+ var _useState2 = React.useState(desktopVideo),
6865
+ videoUrl = _useState2[0],
6866
+ setVideoUrl = _useState2[1];
6867
+
6868
+ var isMobile = useMobile();
6869
+ React.useEffect(function () {
6870
+ setPoster(isMobile ? mobilePoster : desktopPoster);
6871
+ setVideoUrl(isMobile ? mobileVideo : desktopVideo);
6872
+ }, [isMobile]);
6873
+ return {
6874
+ posterUrl: posterUrl,
6875
+ videoUrl: videoUrl
6876
+ };
6877
+ };
6878
+
6879
+ var VideoWithControls = function VideoWithControls(_ref) {
6880
+ var video = _ref.video,
6881
+ poster = _ref.poster;
6882
+
6883
+ var _useResponsiveVideo = useResponsiveVideo(video, poster),
6884
+ posterUrl = _useResponsiveVideo.posterUrl,
6885
+ videoUrl = _useResponsiveVideo.videoUrl;
6844
6886
 
6845
- var titleSize = title && title.length > 20 ? 4 : 3;
6846
- var videoElementId = 'compact-header-video';
6847
6887
  var isIOS = useIOS();
6848
- return /*#__PURE__*/React__default.createElement(ComapctHeaderWrapper, null, sponsor ? /*#__PURE__*/React__default.createElement(SponsorWrapper, {
6849
- "data-testid": "compact-sponsor"
6850
- }, customSponsorImage ? /*#__PURE__*/React__default.createElement(Sponsorship, Object.assign({
6851
- "data-testid": "compact-custom-sponsor"
6852
- }, customSponsorImage, {
6853
- isCustomImage: true
6854
- })) : /*#__PURE__*/React__default.createElement(Sponsorship, null)) : null, /*#__PURE__*/React__default.createElement(CompactHeaderAssetWrapper, null, !isIOS && videoUrlDesktop ? /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("video", {
6855
- loop: true,
6888
+ return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("video", {
6889
+ id: video.elementId,
6890
+ width: "100%",
6891
+ height: "100%",
6856
6892
  muted: true,
6857
- playsInline: true,
6893
+ loop: true,
6894
+ poster: posterUrl,
6895
+ src: videoUrl,
6858
6896
  "data-testid": "compact-video",
6859
- id: videoElementId
6897
+ playsInline: true
6860
6898
  }, /*#__PURE__*/React__default.createElement("source", {
6861
- src: videoUrlDesktop
6899
+ src: videoUrl
6862
6900
  }), /*#__PURE__*/React__default.createElement("img", {
6863
- src: bgUrlDesktop,
6864
- alt: bgImageAltText,
6901
+ src: posterUrl,
6902
+ alt: poster.alt,
6865
6903
  "data-testid": "compact-image"
6866
6904
  })), /*#__PURE__*/React__default.createElement(VideoControls, {
6867
- videoElementId: videoElementId,
6905
+ videoElementId: video.elementId,
6868
6906
  defaultMuted: true,
6869
- defaultPlaying: false
6870
- })) : /*#__PURE__*/React__default.createElement("picture", {
6907
+ defaultPlaying: false,
6908
+ hideVolume: isIOS
6909
+ }));
6910
+ };
6911
+
6912
+ var CompactHeaderImage = function CompactHeaderImage(_ref2) {
6913
+ var mobile = _ref2.mobile,
6914
+ desktop = _ref2.desktop,
6915
+ alt = _ref2.alt;
6916
+ return /*#__PURE__*/React__default.createElement("picture", {
6871
6917
  "data-testid": "compact-picture"
6872
- }, bgUrlDevice && /*#__PURE__*/React__default.createElement("source", {
6873
- srcSet: bgUrlDevice,
6918
+ }, mobile && /*#__PURE__*/React__default.createElement("source", {
6919
+ srcSet: mobile,
6874
6920
  media: "" + devices.mobile,
6875
6921
  "data-testid": "compact-mobile-image-source"
6876
6922
  }), /*#__PURE__*/React__default.createElement("source", {
6877
- srcSet: bgUrlDesktop,
6923
+ srcSet: desktop,
6878
6924
  media: "" + devices.desktop,
6879
6925
  "data-testid": "compact-desktop-image-source"
6880
6926
  }), /*#__PURE__*/React__default.createElement("img", {
6881
- src: bgUrlDesktop,
6882
- alt: bgImageAltText,
6927
+ src: desktop,
6928
+ alt: alt,
6883
6929
  "data-testid": "compact-image"
6884
- }))), /*#__PURE__*/React__default.createElement(CompactHeaderCopyWrapper, {
6930
+ }));
6931
+ };
6932
+
6933
+ var CompactHeaderVideo = function CompactHeaderVideo(_ref3) {
6934
+ var video = _ref3.video,
6935
+ poster = _ref3.poster;
6936
+ // Renders fallback image if no video supplied
6937
+ console.warn('video', video);
6938
+
6939
+ if (!video.desktop && !video.mobile) {
6940
+ return /*#__PURE__*/React__default.createElement(CompactHeaderImage, Object.assign({}, poster));
6941
+ }
6942
+
6943
+ return /*#__PURE__*/React__default.createElement(VideoWithControls, {
6944
+ video: video,
6945
+ poster: poster
6946
+ });
6947
+ };
6948
+
6949
+ var PageHeadingCompact = function PageHeadingCompact(_ref4) {
6950
+ var title = _ref4.title,
6951
+ link = _ref4.link,
6952
+ _ref4$sponsor = _ref4.sponsor,
6953
+ sponsor = _ref4$sponsor === void 0 ? true : _ref4$sponsor,
6954
+ customSponsorImage = _ref4.customSponsorImage,
6955
+ bgUrlDesktop = _ref4.bgUrlDesktop,
6956
+ bgUrlDevice = _ref4.bgUrlDevice,
6957
+ videoUrlDesktop = _ref4.videoUrlDesktop,
6958
+ videoUrlMobile = _ref4.videoUrlMobile,
6959
+ _ref4$bgImageAltText = _ref4.bgImageAltText,
6960
+ bgImageAltText = _ref4$bgImageAltText === void 0 ? '' : _ref4$bgImageAltText,
6961
+ _ref4$invert = _ref4.invert,
6962
+ invert = _ref4$invert === void 0 ? false : _ref4$invert,
6963
+ _ref4$brandingStyle = _ref4.brandingStyle,
6964
+ brandingStyle = _ref4$brandingStyle === void 0 ? BrandingStyle.BlockText : _ref4$brandingStyle,
6965
+ _ref4$brandingText = _ref4.brandingText,
6966
+ brandingText = _ref4$brandingText === void 0 ? 'Royal Opera House' : _ref4$brandingText;
6967
+
6968
+ var _ref5 = link || {},
6969
+ linkText = _ref5.text,
6970
+ restLink = _objectWithoutPropertiesLoose(_ref5, _excluded$k);
6971
+
6972
+ var titleSize = title && title.length > 20 ? 4 : 3;
6973
+ var video = {
6974
+ elementId: 'compact-header-video',
6975
+ desktop: videoUrlDesktop,
6976
+ mobile: videoUrlMobile
6977
+ };
6978
+ var poster = {
6979
+ desktop: bgUrlDesktop,
6980
+ mobile: bgUrlDevice,
6981
+ alt: bgImageAltText
6982
+ };
6983
+ return /*#__PURE__*/React__default.createElement(ComapctHeaderWrapper, null, sponsor ? /*#__PURE__*/React__default.createElement(SponsorWrapper, {
6984
+ "data-testid": "compact-sponsor"
6985
+ }, customSponsorImage ? /*#__PURE__*/React__default.createElement(Sponsorship, Object.assign({
6986
+ "data-testid": "compact-custom-sponsor"
6987
+ }, customSponsorImage, {
6988
+ isCustomImage: true
6989
+ })) : /*#__PURE__*/React__default.createElement(Sponsorship, null)) : null, /*#__PURE__*/React__default.createElement(CompactHeaderAssetWrapper, null, /*#__PURE__*/React__default.createElement(CompactHeaderVideo, {
6990
+ video: video,
6991
+ poster: poster
6992
+ })), /*#__PURE__*/React__default.createElement(CompactHeaderCopyWrapper, {
6885
6993
  className: "page-heading-compact__background",
6886
6994
  invert: invert
6887
6995
  }, /*#__PURE__*/React__default.createElement(CompactHeaderBranding, {
@@ -7764,6 +7872,8 @@ function Select(_ref3) {
7764
7872
  onSelect = _ref3.onSelect,
7765
7873
  _ref3$disabled = _ref3.disabled,
7766
7874
  disabled = _ref3$disabled === void 0 ? false : _ref3$disabled,
7875
+ _ref3$resetWhenOption = _ref3.resetWhenOptionsUpdate,
7876
+ resetWhenOptionsUpdate = _ref3$resetWhenOption === void 0 ? false : _ref3$resetWhenOption,
7767
7877
  _ref3$width = _ref3.width,
7768
7878
  width = _ref3$width === void 0 ? 'default' : _ref3$width,
7769
7879
  _ref3$height = _ref3.height,
@@ -7820,13 +7930,15 @@ function Select(_ref3) {
7820
7930
  };
7821
7931
  }, []);
7822
7932
  React.useEffect(function () {
7933
+ if (!resetWhenOptionsUpdate) return;
7934
+
7823
7935
  if (options.length === 0) {
7824
7936
  setSelectedValue(null);
7825
7937
  return;
7826
7938
  }
7827
7939
 
7828
7940
  setSelectedValue(options[0]);
7829
- }, [options]);
7941
+ }, [options, resetWhenOptionsUpdate]);
7830
7942
  return /*#__PURE__*/React__default.createElement(Wrapper$5, null, label !== '' && /*#__PURE__*/React__default.createElement(BodyText, {
7831
7943
  level: 1,
7832
7944
  tag: "p",
@@ -7986,6 +8098,7 @@ var Quote = function Quote(_ref) {
7986
8098
  var UpsellSection = function UpsellSection(_ref) {
7987
8099
  var title = _ref.title,
7988
8100
  richText = _ref.richText,
8101
+ link = _ref.link,
7989
8102
  upsellCards = _ref.upsellCards,
7990
8103
  _ref$theme = _ref.theme,
7991
8104
  theme = _ref$theme === void 0 ? exports.ThemeType.Core : _ref$theme;
@@ -8011,7 +8124,7 @@ var UpsellSection = function UpsellSection(_ref) {
8011
8124
  columnSpanDesktop: 14,
8012
8125
  columnStartDevice: 1,
8013
8126
  columnSpanDevice: 14
8014
- })), /*#__PURE__*/React__default.createElement(UpsellCards, {
8127
+ }), link && /*#__PURE__*/React__default.createElement(TextLink, null, link.text)), /*#__PURE__*/React__default.createElement(UpsellCards, {
8015
8128
  upsellCards: themedUpsellCards
8016
8129
  })))));
8017
8130
  };