@maestro_io/maestro-web-sdk 5.1.1 → 5.2.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.
Files changed (162) hide show
  1. package/dist/1.maestro-web-sdk.esm.js +1 -1
  2. package/dist/1.maestro-web-sdk.esm.js.map +1 -1
  3. package/dist/10.maestro-web-sdk.esm.js +1 -1
  4. package/dist/10.maestro-web-sdk.esm.js.map +1 -1
  5. package/dist/11.maestro-web-sdk.esm.js +1 -1
  6. package/dist/11.maestro-web-sdk.esm.js.map +1 -1
  7. package/dist/12.maestro-web-sdk.esm.js +1 -1
  8. package/dist/12.maestro-web-sdk.esm.js.map +1 -1
  9. package/dist/13.maestro-web-sdk.esm.js +1 -1
  10. package/dist/13.maestro-web-sdk.esm.js.map +1 -1
  11. package/dist/14.maestro-web-sdk.esm.js +1 -1
  12. package/dist/14.maestro-web-sdk.esm.js.map +1 -1
  13. package/dist/15.maestro-web-sdk.esm.js +1 -1
  14. package/dist/15.maestro-web-sdk.esm.js.map +1 -1
  15. package/dist/16.maestro-web-sdk.esm.js +1 -1
  16. package/dist/16.maestro-web-sdk.esm.js.map +1 -1
  17. package/dist/17.maestro-web-sdk.esm.js +1 -1
  18. package/dist/17.maestro-web-sdk.esm.js.map +1 -1
  19. package/dist/18.maestro-web-sdk.esm.js +1 -1
  20. package/dist/18.maestro-web-sdk.esm.js.map +1 -1
  21. package/dist/19.maestro-web-sdk.esm.js +1 -1
  22. package/dist/19.maestro-web-sdk.esm.js.map +1 -1
  23. package/dist/2.maestro-web-sdk.esm.js +1 -1
  24. package/dist/20.maestro-web-sdk.esm.js +1 -1
  25. package/dist/20.maestro-web-sdk.esm.js.map +1 -1
  26. package/dist/21.maestro-web-sdk.esm.js +1 -1
  27. package/dist/21.maestro-web-sdk.esm.js.map +1 -1
  28. package/dist/22.maestro-web-sdk.esm.js +1 -1
  29. package/dist/22.maestro-web-sdk.esm.js.map +1 -1
  30. package/dist/23.maestro-web-sdk.esm.js +1 -1
  31. package/dist/23.maestro-web-sdk.esm.js.map +1 -1
  32. package/dist/24.maestro-web-sdk.esm.js +1 -1
  33. package/dist/24.maestro-web-sdk.esm.js.map +1 -1
  34. package/dist/25.maestro-web-sdk.esm.js +1 -1
  35. package/dist/25.maestro-web-sdk.esm.js.map +1 -1
  36. package/dist/26.maestro-web-sdk.esm.js +1 -1
  37. package/dist/26.maestro-web-sdk.esm.js.map +1 -1
  38. package/dist/27.maestro-web-sdk.esm.js +1 -1
  39. package/dist/27.maestro-web-sdk.esm.js.map +1 -1
  40. package/dist/28.maestro-web-sdk.esm.js +1 -1
  41. package/dist/28.maestro-web-sdk.esm.js.map +1 -1
  42. package/dist/29.maestro-web-sdk.esm.js +1 -1
  43. package/dist/29.maestro-web-sdk.esm.js.map +1 -1
  44. package/dist/3.maestro-web-sdk.esm.js +1 -1
  45. package/dist/3.maestro-web-sdk.esm.js.map +1 -1
  46. package/dist/30.maestro-web-sdk.esm.js +1 -1
  47. package/dist/30.maestro-web-sdk.esm.js.map +1 -1
  48. package/dist/31.maestro-web-sdk.esm.js +1 -1
  49. package/dist/31.maestro-web-sdk.esm.js.map +1 -1
  50. package/dist/32.maestro-web-sdk.esm.js +1 -1
  51. package/dist/32.maestro-web-sdk.esm.js.map +1 -1
  52. package/dist/33.maestro-web-sdk.esm.js +1 -1
  53. package/dist/33.maestro-web-sdk.esm.js.map +1 -1
  54. package/dist/34.maestro-web-sdk.esm.js +1 -1
  55. package/dist/34.maestro-web-sdk.esm.js.map +1 -1
  56. package/dist/35.maestro-web-sdk.esm.js +1 -1
  57. package/dist/35.maestro-web-sdk.esm.js.map +1 -1
  58. package/dist/36.maestro-web-sdk.esm.js +1 -1
  59. package/dist/36.maestro-web-sdk.esm.js.map +1 -1
  60. package/dist/37.maestro-web-sdk.esm.js +1 -1
  61. package/dist/37.maestro-web-sdk.esm.js.map +1 -1
  62. package/dist/38.maestro-web-sdk.esm.js +1 -1
  63. package/dist/38.maestro-web-sdk.esm.js.map +1 -1
  64. package/dist/39.maestro-web-sdk.esm.js +2 -0
  65. package/dist/39.maestro-web-sdk.esm.js.map +1 -0
  66. package/dist/4.maestro-web-sdk.esm.js +1 -1
  67. package/dist/4.maestro-web-sdk.esm.js.map +1 -1
  68. package/dist/40.maestro-web-sdk.esm.js +2 -0
  69. package/dist/40.maestro-web-sdk.esm.js.map +1 -0
  70. package/dist/5.maestro-web-sdk.esm.js +1 -1
  71. package/dist/5.maestro-web-sdk.esm.js.map +1 -1
  72. package/dist/6.maestro-web-sdk.esm.js +1 -1
  73. package/dist/6.maestro-web-sdk.esm.js.map +1 -1
  74. package/dist/7.maestro-web-sdk.esm.js +1 -1
  75. package/dist/7.maestro-web-sdk.esm.js.map +1 -1
  76. package/dist/8.maestro-web-sdk.esm.js +1 -1
  77. package/dist/8.maestro-web-sdk.esm.js.map +1 -1
  78. package/dist/9.maestro-web-sdk.esm.js +1 -1
  79. package/dist/9.maestro-web-sdk.esm.js.map +1 -1
  80. package/dist/index.d.ts +12 -2
  81. package/dist/maestro-web-sdk.esm.js +3 -3
  82. package/dist/maestro-web-sdk.esm.js.map +1 -1
  83. package/dist/maestro-web-sdk.umd.js +3 -3
  84. package/dist/maestro-web-sdk.umd.js.map +1 -1
  85. package/dist/package.json +1 -1
  86. package/dist/src/components/atoms/SvgIcon/AddIcon.d.ts +3 -0
  87. package/dist/src/components/atoms/SvgIcon/AddIcon.js +6 -0
  88. package/dist/src/components/atoms/SvgIcon/Icon.js +2 -0
  89. package/dist/src/components/core/PanelManager/PanelManager.js +5 -3
  90. package/dist/src/components/molecules/NetworkDialog/NetworkDialog.d.ts +11 -0
  91. package/dist/src/components/molecules/NetworkDialog/NetworkDialog.js +34 -0
  92. package/dist/src/components/molecules/NetworkDialog/index.d.ts +2 -0
  93. package/dist/src/components/molecules/NetworkDialog/index.js +2 -0
  94. package/dist/src/components/molecules/NetworkError/NetworkError.d.ts +104 -0
  95. package/dist/src/components/molecules/NetworkError/NetworkError.js +26 -0
  96. package/dist/src/components/molecules/NetworkError/index.d.ts +2 -0
  97. package/dist/src/components/molecules/NetworkError/index.js +2 -0
  98. package/dist/src/components/molecules/PanelNavButton/PanelNavButton.d.ts +1 -0
  99. package/dist/src/components/molecules/PanelNavButton/PanelNavButton.js +16 -7
  100. package/dist/src/components/organisms/PanelNavigation/PanelNavigation.d.ts +1 -0
  101. package/dist/src/components/organisms/PanelNavigation/PanelNavigation.js +11 -7
  102. package/dist/src/development/MaestroEventDelegate.js +1 -0
  103. package/dist/src/helpers/site.d.ts +1 -0
  104. package/dist/src/helpers/site.js +6 -0
  105. package/dist/src/helpers/siteConfig.d.ts +1 -0
  106. package/dist/src/helpers/siteConfig.js +5 -0
  107. package/dist/src/interfaces/IMaestroEventDelegate.d.ts +8 -1
  108. package/dist/src/models/IPanel.d.ts +1 -1
  109. package/dist/src/models/IPanel.js +1 -1
  110. package/dist/src/modules/espn/bets/view/BetsView.js +1 -1
  111. package/dist/src/modules/espn/components/TabLoadError/TabLoadError.d.ts +96 -0
  112. package/dist/src/modules/espn/components/TabLoadError/TabLoadError.js +14 -0
  113. package/dist/src/modules/espn/components/TabLoadError/index.d.ts +2 -0
  114. package/dist/src/modules/espn/components/TabLoadError/index.js +2 -0
  115. package/dist/src/modules/espn/fantasy/components/TournamentOverflowQR/TournamentOverflowQR.d.ts +5 -5
  116. package/dist/src/modules/espn/fantasy/components/TournamentOverflowQR/TournamentOverflowQR.js +7 -73
  117. package/dist/src/modules/espn/fantasy/services/FantasyService.js +1 -1
  118. package/dist/src/modules/espn/fantasy/view/FantasyItemView.js +1 -1
  119. package/dist/src/modules/espn/fantasy/view/FantasyView.js +1 -1
  120. package/dist/src/modules/espn/fantasy/view-model/FantasyViewModel.js +7 -0
  121. package/dist/src/modules/espn/key-plays/view/KeyPlayErrorStateView.js +1 -1
  122. package/dist/src/modules/espn/shop/view/ShopView.js +1 -1
  123. package/dist/src/modules/espn/stats/view/StatsView.js +1 -1
  124. package/dist/src/modules/fox/components/TabLoadError/TabLoadError.d.ts +96 -0
  125. package/dist/src/modules/fox/components/TabLoadError/TabLoadError.js +19 -0
  126. package/dist/src/modules/fox/components/TabLoadError/index.d.ts +2 -0
  127. package/dist/src/modules/fox/components/TabLoadError/index.js +2 -0
  128. package/dist/src/modules/fox/multi-view/interfaces/IMultiViewViewModel.d.ts +3 -0
  129. package/dist/src/modules/fox/multi-view/interfaces/IMultiViewViewModel.js +1 -0
  130. package/dist/src/modules/fox/multi-view/services/MultiViewService.d.ts +99 -0
  131. package/dist/src/modules/fox/multi-view/services/MultiViewService.js +94 -0
  132. package/dist/src/modules/fox/multi-view/types.d.ts +48 -0
  133. package/dist/src/modules/fox/multi-view/types.js +86 -0
  134. package/dist/src/modules/fox/multi-view/view/CuratedMultiview/CuratedMultiviews.d.ts +8 -0
  135. package/dist/src/modules/fox/multi-view/view/CuratedMultiview/CuratedMultiviews.js +91 -0
  136. package/dist/src/modules/fox/multi-view/view/CuratedMultiview/index.d.ts +2 -0
  137. package/dist/src/modules/fox/multi-view/view/CuratedMultiview/index.js +2 -0
  138. package/dist/src/modules/fox/multi-view/view/FoxMultiView.d.ts +1 -0
  139. package/dist/src/modules/fox/multi-view/view/FoxMultiView.js +62 -2
  140. package/dist/src/modules/fox/multi-view/view/components/CustomMultiviewStreamsCard/CustomMultiviewStreamsCard.d.ts +122 -0
  141. package/dist/src/modules/fox/multi-view/view/components/CustomMultiviewStreamsCard/CustomMultiviewStreamsCard.js +51 -0
  142. package/dist/src/modules/fox/multi-view/view/components/CustomMultiviewStreamsCard/index.d.ts +2 -0
  143. package/dist/src/modules/fox/multi-view/view/components/CustomMultiviewStreamsCard/index.js +2 -0
  144. package/dist/src/modules/fox/multi-view/view/components/LayoutSelector/LayoutSelector.d.ts +13 -0
  145. package/dist/src/modules/fox/multi-view/view/components/LayoutSelector/LayoutSelector.js +40 -0
  146. package/dist/src/modules/fox/multi-view/view/components/LayoutSelector/index.d.ts +2 -0
  147. package/dist/src/modules/fox/multi-view/view/components/LayoutSelector/index.js +2 -0
  148. package/dist/src/modules/fox/multi-view/view/components/curated-multiview-card/CuratedMultiviewCard.d.ts +101 -0
  149. package/dist/src/modules/fox/multi-view/view/components/curated-multiview-card/CuratedMultiviewCard.js +21 -0
  150. package/dist/src/modules/fox/multi-view/view/components/curated-multiview-card/index.d.ts +2 -0
  151. package/dist/src/modules/fox/multi-view/view/components/curated-multiview-card/index.js +2 -0
  152. package/dist/src/modules/fox/multi-view/view-model/MultiViewViewModel.d.ts +63 -0
  153. package/dist/src/modules/fox/multi-view/view-model/MultiViewViewModel.js +328 -0
  154. package/dist/src/modules/fox/multi-view/view-model/index.d.ts +1 -0
  155. package/dist/src/modules/fox/multi-view/view-model/index.js +1 -0
  156. package/dist/src/services/NetworkManager/NetworkManager.js +1 -1
  157. package/dist/src/services/NetworkManager/errors.d.ts +3 -1
  158. package/dist/src/services/NetworkManager/errors.js +15 -1
  159. package/dist/src/services/StaticService/StaticService.js +1 -0
  160. package/dist/src/view-models/MaestroEventViewModel.d.ts +2 -0
  161. package/dist/src/view-models/MaestroEventViewModel.js +17 -1
  162. package/package.json +1 -1
@@ -0,0 +1,2 @@
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[40],{233:function(n,o,e){"use strict";e.r(o);var t=e(0),a=e.n(t);o.default=()=>a.a.createElement("div",{style:{marginTop:"36px"}},"Fox Stats Coming Soon!")}}]);
2
+ //# sourceMappingURL=40.maestro-web-sdk.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack:///./src/modules/fox/stats/view/FoxStatsView.tsx"],"names":["FoxStatsView","React","createElement","style","marginTop"],"mappings":"2FAAA,2BAMeA,UAJMA,IACZC,IAAAC,cAAA,OAAKC,MAAO,CAAEC,UAAW,SAAU","file":"40.maestro-web-sdk.esm.js","sourcesContent":["import React from 'react';\n\nconst FoxStatsView = () => {\n return <div style={{ marginTop: '36px' }}>Fox Stats Coming Soon!</div>;\n};\n\nexport default FoxStatsView;\n"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[5],{100:function(e,n,t){"use strict";var r=t(0),a=t.n(r);function o(){return(o=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)({}).hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e}).apply(null,arguments)}function i(e,n,t){return(n=function(e){var n=function(e,n){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,n||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(e)}(e,"string");return"symbol"==typeof n?n:n+""}(n))in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}class s extends a.a.Component{constructor(e){super(e),i(this,"state",{failed:!1}),i(this,"handleError",()=>{this.setState({failed:!0})})}render(){return this.state.failed?(console.warn("Image failed to load:",this.props.src),null):this.props.src?a.a.createElement("img",o({alt:this.props.alt||"Image"},this.props,{onError:this.handleError})):(console.warn("Image source is empty"),null)}}n.a=s},101:function(e,n,t){"use strict";var r=t(29);n.a=r.b},103:function(e,n,t){"use strict";var r=t(32).a,a=t(5),o=t.n(a),i=t(109),s={insert:"head",singleton:!1},c=(o()(i.a,s),i.a.locals,t(98)),d=t(0),l=t.n(d);function A(){return(A=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)({}).hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e}).apply(null,arguments)}class p extends l.a.Component{render(){const{children:e,focused:n,focusKey:t,parentFocusKey:a,preferredChildFocusKey:o,forgetLastFocusedChild:i,trackChildren:s,autoRestoreFocus:c,blockNavigationOut:d,hasFocusedChild:p,focusable:u,onEnterPress:m,onEnterRelease:h,onBackPress:g,onArrowPress:C,onBecameFocused:E,onBecameBlurred:B,realFocusKey:b,setFocus:v,navigateByDirection:f,stealFocus:w,onUpdateFocus:x,onUpdateHasFocusedChild:y,...k}=this.props;return l.a.createElement(r,A({className:"action-button T05_ALT"},k),e)}}var u=Object(c.a)()(p);n.a=u},106:function(e,n,t){"use strict";t.d(n,"b",(function(){return o})),t.d(n,"a",(function(){return i}));var r=t(0);function a(e){if(!e)return;const n=e.getBoundingClientRect();e.style.maxHeight=window.innerHeight-n.top+"px"}function o(){const e=Object(r.useRef)(null),n=Object(r.useCallback)(()=>{a(e.current)},[]);Object(r.useEffect)(()=>(window.addEventListener("resize",n),()=>{window.removeEventListener("resize",n)}),[n]);return Object(r.useCallback)(n=>{e.current=n,a(n)},[])}function i(e){const n=()=>{a(e())};return n(),window.addEventListener("resize",n),()=>{window.removeEventListener("resize",n)}}},108:function(e,n,t){"use strict";var r=t(6),a=t.n(r),o=t(7),i=t.n(o)()(a.a);i.push([e.i,".tab-load-error {\n display: block;\n padding: 24px;\n background-color: var(--sdk-surface4);\n}\n\n.tab-load-error h3 {\n margin: 0;\n font-family: var(--sdk-font-headline);\n}\n\n.tab-load-error p {\n margin: 16px 0;\n height: 86px;\n}\n","",{version:3,sources:["webpack://./src/components/molecules/TabLoadError/TabLoadError.styles.css"],names:[],mappings:"AAAA;EACE,cAAc;EACd,aAAa;EACb,qCAAqC;AACvC;;AAEA;EACE,SAAS;EACT,qCAAqC;AACvC;;AAEA;EACE,cAAc;EACd,YAAY;AACd",sourcesContent:[".tab-load-error {\n display: block;\n padding: 24px;\n background-color: var(--sdk-surface4);\n}\n\n.tab-load-error h3 {\n margin: 0;\n font-family: var(--sdk-font-headline);\n}\n\n.tab-load-error p {\n margin: 16px 0;\n height: 86px;\n}\n"],sourceRoot:""}]),n.a=i},109:function(e,n,t){"use strict";var r=t(6),a=t.n(r),o=t(7),i=t.n(o)()(a.a);i.push([e.i,".action-button {\n padding: 23px 0;\n background-color: var(--sdk-surface5);\n color: var(--sdk-text100);\n}\n\n.action-button:hover,\n.action-button[data-focused='true'] {\n background-color: var(--sdk-accentPrimary);\n color: var(--sdk-text500);\n}\n","",{version:3,sources:["webpack://./src/components/molecules/ActionButton/ActionButton.styles.css"],names:[],mappings:"AAAA;EACE,eAAe;EACf,qCAAqC;EACrC,yBAAyB;AAC3B;;AAEA;;EAEE,0CAA0C;EAC1C,yBAAyB;AAC3B",sourcesContent:[".action-button {\n padding: 23px 0;\n background-color: var(--sdk-surface5);\n color: var(--sdk-text100);\n}\n\n.action-button:hover,\n.action-button[data-focused='true'] {\n background-color: var(--sdk-accentPrimary);\n color: var(--sdk-text500);\n}\n"],sourceRoot:""}]),n.a=i},110:function(e,n,t){"use strict";var r=t(98),a=t(0),o=t.n(a),i=t(103),s=t(5),c=t.n(s),d=t(108),l={insert:"head",singleton:!1};c()(d.a,l),d.a.locals;class A extends o.a.Component{render(){const{focused:e}=this.props;return o.a.createElement("div",{"data-focused":e,className:"tab-load-error focus-ring"},o.a.createElement("h3",{className:"T70"},"We dropped the ball."),o.a.createElement("p",{className:"T20"},"We're having trouble loading that for you. Please try again."),o.a.createElement(i.a,{"data-focused":e,onEnterPress:this.props.onEnterPress},"Try Again"))}}var p=Object(r.a)()(A);n.a=p},118:function(e,n,t){"use strict";t.d(n,"a",(function(){return r}));const r=(e,n,t)=>{try{const r=new URL(e);return r.searchParams.set("w",n.toString()),r.searchParams.set("h",t.toString()),r.toString()}catch(n){return console.warn("Malformed URL:",e,n),e}}},120:function(e,n,t){"use strict";t.d(n,"a",(function(){return r}));const r=e=>"product"===e.type},202:function(e,n,t){"use strict";var r=t(6),a=t.n(r),o=t(7),i=t.n(o)()(a.a);i.push([e.i,".shop-view {\n display: block;\n overflow-y: auto;\n scrollbar-width: none;\n scroll-behavior: smooth;\n overscroll-behavior: contain;\n margin-top: 60px;\n}\n\n.shop-view::-webkit-scrollbar {\n display: none;\n}\n\n.shop-bottom-padding {\n height: 50vh;\n}\n\n.shop-empty-state {\n display: block;\n text-align: center;\n padding: 60px 20px;\n color: #ffffff;\n font-size: 18px;\n}\n\n.shop-sections {\n display: block;\n}\n\n.scrollable-container[data-has-product-selected='true']::before,\n.scrollable-container[data-has-product-selected='true']::after,\n.scrollable-container[data-has-error='true']::after,\n.scrollable-container[data-has-error='true']::before {\n background: none;\n}\n","",{version:3,sources:["webpack://./src/modules/espn/shop/view/ShopView.styles.css"],names:[],mappings:"AAAA;EACE,cAAc;EACd,gBAAgB;EAChB,qBAAqB;EACrB,uBAAuB;EACvB,4BAA4B;EAC5B,gBAAgB;AAClB;;AAEA;EACE,aAAa;AACf;;AAEA;EACE,YAAY;AACd;;AAEA;EACE,cAAc;EACd,kBAAkB;EAClB,kBAAkB;EAClB,cAAc;EACd,eAAe;AACjB;;AAEA;EACE,cAAc;AAChB;;AAEA;;;;EAIE,gBAAgB;AAClB",sourcesContent:[".shop-view {\n display: block;\n overflow-y: auto;\n scrollbar-width: none;\n scroll-behavior: smooth;\n overscroll-behavior: contain;\n margin-top: 60px;\n}\n\n.shop-view::-webkit-scrollbar {\n display: none;\n}\n\n.shop-bottom-padding {\n height: 50vh;\n}\n\n.shop-empty-state {\n display: block;\n text-align: center;\n padding: 60px 20px;\n color: #ffffff;\n font-size: 18px;\n}\n\n.shop-sections {\n display: block;\n}\n\n.scrollable-container[data-has-product-selected='true']::before,\n.scrollable-container[data-has-product-selected='true']::after,\n.scrollable-container[data-has-error='true']::after,\n.scrollable-container[data-has-error='true']::before {\n background: none;\n}\n"],sourceRoot:""}]),n.a=i},203:function(e,n,t){"use strict";var r=t(6),a=t.n(r),o=t(7),i=t.n(o)()(a.a);i.push([e.i,".product-detail-view-wrapper > *:first-child {\n margin-bottom: 16px;\n}\n\n/* Card */\n.product-detail-card {\n display: inline-block;\n padding: 24px;\n text-align: center;\n box-sizing: border-box;\n box-shadow: 0px 0px 100px 0px var(--sdk-surface1);\n width: 100%;\n}\n\n/* Title */\n.product-detail-title {\n margin-bottom: 32px;\n font-family: var(--sdk-font-headline);\n}\n\n/* Mini Product Card Container */\n.product-detail-product {\n margin-bottom: 32px;\n}\n\n/* Override ProductSummaryCard styles when inside detail view */\n.product-detail-product .product-summary-card,\n.product-detail-product .browse-card {\n text-align: left;\n background-color: #ffffff14;\n background-image: none !important;\n padding: 16px;\n}\n\n.product-detail-product .browse-card {\n direction: rtl;\n}\n\n.product-detail-product .browse-card .browse-card-content {\n direction: ltr;\n}\n\n.product-detail-product .browse-card .browse-card-logo-image {\n margin-left: 0;\n margin-right: 24px;\n width: calc(20% - 24px);\n}\n\n.product-detail-product\n .product-summary-card\n .product-summary-card-image-container {\n width: 20%;\n}\n\n.product-detail-product .product-summary-card .product-summary-card-content {\n width: 80%;\n padding: 6px 0px 6px 24px;\n}\n\n.product-detail-product .product-summary-card-title {\n -webkit-line-clamp: 2;\n max-height: calc(1.3em * 2); /* line-height * 3 lines */\n}\n\n/* QR Code Container */\n.product-detail-qr {\n background-color: var(--sdk-highlightPrimary);\n border-radius: 24px;\n margin: 32px 30% 28px 30%;\n overflow: hidden;\n}\n\n.product-detail-qr-image {\n width: 100%;\n height: 100%;\n object-fit: contain;\n}\n\n/* Instruction Text */\n.product-detail-instruction {\n margin-bottom: 24px;\n font-family: var(--sdk-font-headline);\n}\n\n.product-detail-disclaimer {\n text-align: center;\n}\n","",{version:3,sources:["webpack://./src/modules/espn/shop/view/ProductDetailView/ProductDetailView.styles.css"],names:[],mappings:"AAAA;EACE,mBAAmB;AACrB;;AAEA,SAAS;AACT;EACE,qBAAqB;EACrB,aAAa;EACb,kBAAkB;EAClB,sBAAsB;EACtB,iDAAiD;EACjD,WAAW;AACb;;AAEA,UAAU;AACV;EACE,mBAAmB;EACnB,qCAAqC;AACvC;;AAEA,gCAAgC;AAChC;EACE,mBAAmB;AACrB;;AAEA,+DAA+D;AAC/D;;EAEE,gBAAgB;EAChB,2BAA2B;EAC3B,iCAAiC;EACjC,aAAa;AACf;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;EACd,kBAAkB;EAClB,uBAAuB;AACzB;;AAEA;;;EAGE,UAAU;AACZ;;AAEA;EACE,UAAU;EACV,yBAAyB;AAC3B;;AAEA;EACE,qBAAqB;EACrB,2BAA2B,EAAE,0BAA0B;AACzD;;AAEA,sBAAsB;AACtB;EACE,6CAA6C;EAC7C,mBAAmB;EACnB,yBAAyB;EACzB,gBAAgB;AAClB;;AAEA;EACE,WAAW;EACX,YAAY;EACZ,mBAAmB;AACrB;;AAEA,qBAAqB;AACrB;EACE,mBAAmB;EACnB,qCAAqC;AACvC;;AAEA;EACE,kBAAkB;AACpB",sourcesContent:[".product-detail-view-wrapper > *:first-child {\n margin-bottom: 16px;\n}\n\n/* Card */\n.product-detail-card {\n display: inline-block;\n padding: 24px;\n text-align: center;\n box-sizing: border-box;\n box-shadow: 0px 0px 100px 0px var(--sdk-surface1);\n width: 100%;\n}\n\n/* Title */\n.product-detail-title {\n margin-bottom: 32px;\n font-family: var(--sdk-font-headline);\n}\n\n/* Mini Product Card Container */\n.product-detail-product {\n margin-bottom: 32px;\n}\n\n/* Override ProductSummaryCard styles when inside detail view */\n.product-detail-product .product-summary-card,\n.product-detail-product .browse-card {\n text-align: left;\n background-color: #ffffff14;\n background-image: none !important;\n padding: 16px;\n}\n\n.product-detail-product .browse-card {\n direction: rtl;\n}\n\n.product-detail-product .browse-card .browse-card-content {\n direction: ltr;\n}\n\n.product-detail-product .browse-card .browse-card-logo-image {\n margin-left: 0;\n margin-right: 24px;\n width: calc(20% - 24px);\n}\n\n.product-detail-product\n .product-summary-card\n .product-summary-card-image-container {\n width: 20%;\n}\n\n.product-detail-product .product-summary-card .product-summary-card-content {\n width: 80%;\n padding: 6px 0px 6px 24px;\n}\n\n.product-detail-product .product-summary-card-title {\n -webkit-line-clamp: 2;\n max-height: calc(1.3em * 2); /* line-height * 3 lines */\n}\n\n/* QR Code Container */\n.product-detail-qr {\n background-color: var(--sdk-highlightPrimary);\n border-radius: 24px;\n margin: 32px 30% 28px 30%;\n overflow: hidden;\n}\n\n.product-detail-qr-image {\n width: 100%;\n height: 100%;\n object-fit: contain;\n}\n\n/* Instruction Text */\n.product-detail-instruction {\n margin-bottom: 24px;\n font-family: var(--sdk-font-headline);\n}\n\n.product-detail-disclaimer {\n text-align: center;\n}\n"],sourceRoot:""}]),n.a=i},204:function(e,n,t){"use strict";var r=t(6),a=t.n(r),o=t(7),i=t.n(o)()(a.a);i.push([e.i,"/* Product Summary Card - TV-compatible CSS (no flex/grid) */\n\n.product-summary-card {\n position: relative;\n background-color: var(--sdk-surface4);\n overflow: hidden;\n vertical-align: middle;\n padding: 24px;\n width: 100%;\n height: 192px;\n box-sizing: border-box;\n text-align: left;\n}\n\n/* Helper for vertical centering */\n.product-summary-card::before {\n content: '';\n display: inline-block;\n height: 100%;\n vertical-align: middle;\n}\n\n/* Product Image Container - 144x144 */\n.product-summary-card-image-container {\n display: inline-block;\n vertical-align: middle;\n width: 20%;\n max-height: 144px;\n overflow: hidden;\n line-height: 0;\n}\n\n.product-summary-card-image {\n width: 100%;\n height: 100%;\n object-fit: contain;\n border-radius: 8px;\n}\n\n/* Text Content Container */\n.product-summary-card-content {\n display: inline-block;\n vertical-align: middle;\n padding: 16px 0 16px 24px;\n white-space: normal;\n width: 80%;\n box-sizing: border-box;\n}\n\n.product-summary-card-content[data-has-image='false'] {\n width: 100%;\n}\n\n/* Product Title - max 3 lines with ellipsis */\n.product-summary-card-title {\n padding-bottom: 4px;\n /* Line clamp for 3 lines */\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n text-overflow: ellipsis;\n /* Fallback for non-webkit browsers */\n max-height: calc(1.3em * 3); /* line-height * 3 lines */\n}\n\n/* Price Container */\n.product-summary-card-price-container {\n white-space: nowrap;\n}\n\n/* Original Price (crossed out when on sale) */\n.product-summary-card-price-original {\n text-decoration: line-through;\n opacity: 0.6;\n margin-right: 4px;\n}\n\n/* Sale/Clearance Price */\n.product-summary-card-price-sale {\n margin-right: 8px;\n}\n\n/* Sale/Clearance Badge */\n.product-summary-card-badge {\n display: inline-block;\n background-color: var(--sdk-alertError);\n padding-inline: 4px;\n border-radius: 4px;\n}\n\n.product-summary-card-qr-image {\n object-fit: contain;\n position: absolute;\n bottom: 16px;\n right: 16px;\n width: 6%;\n height: auto;\n}\n","",{version:3,sources:["webpack://./src/modules/espn/shop/view/components/ProductSummaryCard/ProductSummaryCard.styles.css"],names:[],mappings:"AAAA,4DAA4D;;AAE5D;EACE,kBAAkB;EAClB,qCAAqC;EACrC,gBAAgB;EAChB,sBAAsB;EACtB,aAAa;EACb,WAAW;EACX,aAAa;EACb,sBAAsB;EACtB,gBAAgB;AAClB;;AAEA,kCAAkC;AAClC;EACE,WAAW;EACX,qBAAqB;EACrB,YAAY;EACZ,sBAAsB;AACxB;;AAEA,sCAAsC;AACtC;EACE,qBAAqB;EACrB,sBAAsB;EACtB,UAAU;EACV,iBAAiB;EACjB,gBAAgB;EAChB,cAAc;AAChB;;AAEA;EACE,WAAW;EACX,YAAY;EACZ,mBAAmB;EACnB,kBAAkB;AACpB;;AAEA,2BAA2B;AAC3B;EACE,qBAAqB;EACrB,sBAAsB;EACtB,yBAAyB;EACzB,mBAAmB;EACnB,UAAU;EACV,sBAAsB;AACxB;;AAEA;EACE,WAAW;AACb;;AAEA,8CAA8C;AAC9C;EACE,mBAAmB;EACnB,2BAA2B;EAC3B,oBAAoB;EACpB,qBAAqB;EACrB,4BAA4B;EAC5B,gBAAgB;EAChB,uBAAuB;EACvB,qCAAqC;EACrC,2BAA2B,EAAE,0BAA0B;AACzD;;AAEA,oBAAoB;AACpB;EACE,mBAAmB;AACrB;;AAEA,8CAA8C;AAC9C;EACE,6BAA6B;EAC7B,YAAY;EACZ,iBAAiB;AACnB;;AAEA,yBAAyB;AACzB;EACE,iBAAiB;AACnB;;AAEA,yBAAyB;AACzB;EACE,qBAAqB;EACrB,uCAAuC;EACvC,mBAAmB;EACnB,kBAAkB;AACpB;;AAEA;EACE,mBAAmB;EACnB,kBAAkB;EAClB,YAAY;EACZ,WAAW;EACX,SAAS;EACT,YAAY;AACd",sourcesContent:["/* Product Summary Card - TV-compatible CSS (no flex/grid) */\n\n.product-summary-card {\n position: relative;\n background-color: var(--sdk-surface4);\n overflow: hidden;\n vertical-align: middle;\n padding: 24px;\n width: 100%;\n height: 192px;\n box-sizing: border-box;\n text-align: left;\n}\n\n/* Helper for vertical centering */\n.product-summary-card::before {\n content: '';\n display: inline-block;\n height: 100%;\n vertical-align: middle;\n}\n\n/* Product Image Container - 144x144 */\n.product-summary-card-image-container {\n display: inline-block;\n vertical-align: middle;\n width: 20%;\n max-height: 144px;\n overflow: hidden;\n line-height: 0;\n}\n\n.product-summary-card-image {\n width: 100%;\n height: 100%;\n object-fit: contain;\n border-radius: 8px;\n}\n\n/* Text Content Container */\n.product-summary-card-content {\n display: inline-block;\n vertical-align: middle;\n padding: 16px 0 16px 24px;\n white-space: normal;\n width: 80%;\n box-sizing: border-box;\n}\n\n.product-summary-card-content[data-has-image='false'] {\n width: 100%;\n}\n\n/* Product Title - max 3 lines with ellipsis */\n.product-summary-card-title {\n padding-bottom: 4px;\n /* Line clamp for 3 lines */\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n text-overflow: ellipsis;\n /* Fallback for non-webkit browsers */\n max-height: calc(1.3em * 3); /* line-height * 3 lines */\n}\n\n/* Price Container */\n.product-summary-card-price-container {\n white-space: nowrap;\n}\n\n/* Original Price (crossed out when on sale) */\n.product-summary-card-price-original {\n text-decoration: line-through;\n opacity: 0.6;\n margin-right: 4px;\n}\n\n/* Sale/Clearance Price */\n.product-summary-card-price-sale {\n margin-right: 8px;\n}\n\n/* Sale/Clearance Badge */\n.product-summary-card-badge {\n display: inline-block;\n background-color: var(--sdk-alertError);\n padding-inline: 4px;\n border-radius: 4px;\n}\n\n.product-summary-card-qr-image {\n object-fit: contain;\n position: absolute;\n bottom: 16px;\n right: 16px;\n width: 6%;\n height: auto;\n}\n"],sourceRoot:""}]),n.a=i},205:function(e,n,t){"use strict";var r=t(6),a=t.n(r),o=t(7),i=t.n(o)()(a.a);i.push([e.i,"/* Browse Card (Want More) - TV-compatible CSS (no flex/grid) */\n\n.browse-card {\n position: relative;\n display: block;\n background-color: var(--sdk-surface4);\n padding: 24px;\n box-sizing: border-box;\n text-align: left;\n}\n\n.browse-card-content {\n display: inline-block;\n width: 80%;\n vertical-align: middle;\n}\n\n/* Tag Line */\n.browse-card-tagline {\n margin-bottom: 4px;\n width: 85%;\n}\n\n.browse-card-caption {\n width: 85%;\n}\n\n.browse-card-logo-image {\n width: calc(20% - 12px);\n height: 100%;\n vertical-align: middle;\n margin-left: 12px;\n}\n","",{version:3,sources:["webpack://./src/modules/espn/shop/view/components/BrowseCard/BrowseCard.styles.css"],names:[],mappings:"AAAA,+DAA+D;;AAE/D;EACE,kBAAkB;EAClB,cAAc;EACd,qCAAqC;EACrC,aAAa;EACb,sBAAsB;EACtB,gBAAgB;AAClB;;AAEA;EACE,qBAAqB;EACrB,UAAU;EACV,sBAAsB;AACxB;;AAEA,aAAa;AACb;EACE,kBAAkB;EAClB,UAAU;AACZ;;AAEA;EACE,UAAU;AACZ;;AAEA;EACE,uBAAuB;EACvB,YAAY;EACZ,sBAAsB;EACtB,iBAAiB;AACnB",sourcesContent:["/* Browse Card (Want More) - TV-compatible CSS (no flex/grid) */\n\n.browse-card {\n position: relative;\n display: block;\n background-color: var(--sdk-surface4);\n padding: 24px;\n box-sizing: border-box;\n text-align: left;\n}\n\n.browse-card-content {\n display: inline-block;\n width: 80%;\n vertical-align: middle;\n}\n\n/* Tag Line */\n.browse-card-tagline {\n margin-bottom: 4px;\n width: 85%;\n}\n\n.browse-card-caption {\n width: 85%;\n}\n\n.browse-card-logo-image {\n width: calc(20% - 12px);\n height: 100%;\n vertical-align: middle;\n margin-left: 12px;\n}\n"],sourceRoot:""}]),n.a=i},206:function(e,n,t){"use strict";var r=t(6),a=t.n(r),o=t(7),i=t.n(o)()(a.a);i.push([e.i,".shop-promo-view {\n display: block;\n text-align: center;\n padding: 32px;\n background-size: cover;\n background-position: center;\n background-repeat: no-repeat;\n}\n\n.shop-promo-logo {\n padding: 30px 24px;\n}\n\n.shop-promo-qr-code {\n border-radius: 24px;\n margin: 32px 0 48px 0;\n width: 100%;\n max-width: 50%;\n}\n\n.shop-promo-description {\n margin: 0 17px;\n}\n\n.promo-view-disclaimer {\n margin-top: 24px;\n text-align: center;\n}\n","",{version:3,sources:["webpack://./src/modules/espn/shop/view/components/ShopPromoView/ShopPromoView.styles.css"],names:[],mappings:"AAAA;EACE,cAAc;EACd,kBAAkB;EAClB,aAAa;EACb,sBAAsB;EACtB,2BAA2B;EAC3B,4BAA4B;AAC9B;;AAEA;EACE,kBAAkB;AACpB;;AAEA;EACE,mBAAmB;EACnB,qBAAqB;EACrB,WAAW;EACX,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,gBAAgB;EAChB,kBAAkB;AACpB",sourcesContent:[".shop-promo-view {\n display: block;\n text-align: center;\n padding: 32px;\n background-size: cover;\n background-position: center;\n background-repeat: no-repeat;\n}\n\n.shop-promo-logo {\n padding: 30px 24px;\n}\n\n.shop-promo-qr-code {\n border-radius: 24px;\n margin: 32px 0 48px 0;\n width: 100%;\n max-width: 50%;\n}\n\n.shop-promo-description {\n margin: 0 17px;\n}\n\n.promo-view-disclaimer {\n margin-top: 24px;\n text-align: center;\n}\n"],sourceRoot:""}]),n.a=i},207:function(e,n,t){"use strict";var r=t(6),a=t.n(r),o=t(7),i=t.n(o)()(a.a);i.push([e.i,".shop-section-title {\n margin: 0;\n margin-bottom: 0 !important;\n padding-top: 24px;\n padding-bottom: 0;\n margin-bottom: 16px !important;\n text-align: center;\n position: sticky;\n top: 0;\n z-index: 1;\n font-size: 21px;\n}\n\n/* Layout for product cards - TV compatible (no flex/grid) */\n.shop-section-items > * {\n display: inline-block;\n margin-bottom: 16px;\n}\n\n.shop-item-placeholder {\n display: inline-block;\n vertical-align: top;\n width: 200px;\n height: 250px;\n padding: 16px;\n background-color: rgba(255, 255, 255, 0.1);\n border-radius: 8px;\n color: #ffffff;\n}\n","",{version:3,sources:["webpack://./src/modules/espn/shop/view/components/ShopSection/ShopSection.styles.css"],names:[],mappings:"AAAA;EACE,SAAS;EACT,2BAA2B;EAC3B,iBAAiB;EACjB,iBAAiB;EACjB,8BAA8B;EAC9B,kBAAkB;EAClB,gBAAgB;EAChB,MAAM;EACN,UAAU;EACV,eAAe;AACjB;;AAEA,4DAA4D;AAC5D;EACE,qBAAqB;EACrB,mBAAmB;AACrB;;AAEA;EACE,qBAAqB;EACrB,mBAAmB;EACnB,YAAY;EACZ,aAAa;EACb,aAAa;EACb,0CAA0C;EAC1C,kBAAkB;EAClB,cAAc;AAChB",sourcesContent:[".shop-section-title {\n margin: 0;\n margin-bottom: 0 !important;\n padding-top: 24px;\n padding-bottom: 0;\n margin-bottom: 16px !important;\n text-align: center;\n position: sticky;\n top: 0;\n z-index: 1;\n font-size: 21px;\n}\n\n/* Layout for product cards - TV compatible (no flex/grid) */\n.shop-section-items > * {\n display: inline-block;\n margin-bottom: 16px;\n}\n\n.shop-item-placeholder {\n display: inline-block;\n vertical-align: top;\n width: 200px;\n height: 250px;\n padding: 16px;\n background-color: rgba(255, 255, 255, 0.1);\n border-radius: 8px;\n color: #ffffff;\n}\n"],sourceRoot:""}]),n.a=i},233:function(e,n,t){"use strict";t.r(n);var r=t(0),a=t.n(r),o=t(5),i=t.n(o),s=t(202),c={insert:"head",singleton:!1},d=(i()(s.a,c),s.a.locals,t(101)),l=t(8),A=t(110),p=t(120),u=t(207),m={insert:"head",singleton:!1},h=(i()(u.a,m),u.a.locals,t(204)),g={insert:"head",singleton:!1},C=(i()(h.a,g),h.a.locals,t(98)),E=t(100);class B extends a.a.Component{render(){const{product:e,focused:n}=this.props,{image:t,name:r,price:o}=e,i=(null==o?void 0:o.displayClearance)||(null==o?void 0:o.displaySale),s=!!i;return a.a.createElement("div",{className:"product-summary-card focus-ring","data-focused":n},Boolean(null==t?void 0:t.href)&&a.a.createElement("div",{className:"product-summary-card-image-container"},a.a.createElement(E.a,{src:t.href,alt:r||"Product",className:"product-summary-card-image"})),a.a.createElement("div",{className:"product-summary-card-content","data-has-image":!(null==t||!t.href)},a.a.createElement("div",{className:"product-summary-card-title T05_ALT"},r||"Product Name"),a.a.createElement("div",{className:"product-summary-card-price-container"},s?a.a.createElement("div",null,a.a.createElement("span",{className:"product-summary-card-price-original T02 TEXT_200"},(null==o?void 0:o.displayRetail)||"$0.00"),a.a.createElement("span",{className:"product-summary-card-price-sale T02 TEXT_200"},i),a.a.createElement("span",{className:"product-summary-card-badge T02 FONT_BOLD"},"SALE")):a.a.createElement("span",{className:"product-summary-card-price T02 TEXT_200"},(null==o?void 0:o.displayRetail)||"$0.00"))),n&&a.a.createElement(E.a,{src:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAACHElEQVR4Ae2YgXHCMAxFf3oM0A3qbsAGDRuwQWGC0gmgEwATkG7ABqQb0AlwN0gnSKXDpWqwiQU5IHe8O52xY8U/toyVoIwjRcPwPWMGvsOVc/UCE55GUe+RWU+/IkmSAg1DQxtPM7etZCfJAy4Mi25VDHZCF0g8T7NBPHMKgxn5jej3i8LPkl8PWoHYijOI516UBg3RiiXeTS9N9Veg3yvZ2tPOS9lHmA+yiae9SzYN+BRSU4dE5ahn7etH8Tao8dsE/IIO7u9s56NaYrrxlDcPWV/plzq/KZRoY5CXJsXfhojFOL8ulHSU/d/I3iGWIJKcbIhtfKlQCYyMV5+fpSLDEcQKHFP8PHvan2r8OPYWnvboEIkVmOI4DNkAJ9Des5iYQ7db80oZS+Np3FlJQhdcVqKaQd7l7v0lVfhxMjyDFhpoU+qYOL9JqWNzSEerN4lkCX8wp2gw9/MRK3AeyEoy7AvktCwTdb6eirrF/51eNCHwVxBnMbxxcnd87UHtPNtL4TOoCqQ+Q0SijUFOUBc4/mRRo81mPl1pcSa02cyork+5fRk3ool/56Juy8q3nkNZUqzAbiBN973oD8jGop7J10onbiWuW7JHhARWnmYd+MShTtVPQWriGZRPY3Dhw9uFyE7ToSW20FGI0or2b08/Gz1O5Vy8fTzS0rpk4ZFmdS9HDB1rp0Dj8JHpyzdNtWMMKZoXePuIfhZ+AArh47ArZrulAAAAAElFTkSuQmCC",alt:"QR Code",className:"product-summary-card-qr-image"}))}}var b=Object(C.a)()(B),v=t(30),f=t(28),w=t(205),x={insert:"head",singleton:!1};i()(w.a,x),w.a.locals;class y extends a.a.Component{render(){const{browseCard:e,focused:n}=this.props,{name:t,caption:r,image:o,detail:i}=e;return a.a.createElement("div",{className:"browse-card focus-ring","data-focused":n,style:{backgroundImage:null!=i&&i.backgroundImage?`url(${i.backgroundImage})`:"none",backgroundSize:"cover",backgroundPosition:"center",backgroundClip:"padding-box"}},a.a.createElement("div",{className:"browse-card-content"},!!t&&a.a.createElement("div",{className:"browse-card-tagline T20 FONT_BOLD"},t),a.a.createElement("div",{className:"browse-card-caption T05_ALT"},r||"Browse all merch")),(null==o?void 0:o.href)&&a.a.createElement(E.a,{src:o.href,width:72,height:72,alt:t||"Logo",className:"browse-card-logo-image"}))}}var k=Object(C.a)()(y);var S=({section:e,sectionIndex:n,onArrowPress:t,onItemClick:r})=>{var o;const{scrollToFocusedElement:i}=Object(v.a)(),s=e=>{i(e,{offsetTop:40})},c=(e,n,t)=>()=>{r(e,n,t)};return a.a.createElement("div",{className:"shop-section"},a.a.createElement("h2",{className:"shop-section-title TEXT_200"},e.title),a.a.createElement("div",{className:"shop-section-items"},null===(o=e.items)||void 0===o?void 0:o.map((r,o)=>{const i=`shop-section-${n}-item-${o}`;return"product"===r.type?a.a.createElement(f.a,{key:o},a.a.createElement(b,{product:r,onEnterPress:c(r,e,i),onArrowPress:t,onBecameFocused:s,focusKey:i})):"browse"===r.type?a.a.createElement(f.a,{key:o},a.a.createElement(k,{key:o,browseCard:r,onArrowPress:t,onEnterPress:c(r,e,i),onBecameFocused:s,focusKey:i})):null})))},P=t(203),T={insert:"head",singleton:!1},q=(i()(P.a,T),P.a.locals,t(103)),D=t(118);const N=Object(C.a)()(e=>{var n,t;const{product:r,focused:o}=e,i=r.detail,s=(()=>{const e=null==i?void 0:i.backgroundImage;if(!e)return null;try{if(new URL(e).hostname.includes("stitcher")){return Object(D.a)(e,570,670)}}catch{if(e.includes("stitcher")){return Object(D.a)(e,570,670)}}return e})();return a.a.createElement("div",{className:"product-detail-card focus-ring","data-focused":o,style:{...s&&{backgroundImage:`url(${s})`,backgroundSize:"cover",backgroundClip:"padding-box",backgroundPosition:"center"}}},a.a.createElement("div",{className:"product-detail-title T70"},(null==i?void 0:i.title)||"Shop the look"),a.a.createElement("div",{className:"product-detail-product"},Object(p.a)(r)?a.a.createElement(b,{product:r,focusable:!1}):a.a.createElement(k,{browseCard:{...r,name:void 0,caption:null===(n=r.detail)||void 0===n?void 0:n.description},focusable:!1})),(null==i?void 0:i.qrCode)&&a.a.createElement("div",{className:"product-detail-qr"},a.a.createElement(E.a,{src:i.qrCode,alt:"QR Code",className:"product-detail-qr-image"})),a.a.createElement("div",{className:"product-detail-instruction T04"},null==i||null===(t=i.link)||void 0===t?void 0:t.text),a.a.createElement(q.a,{"data-focused":o},"Dismiss"))});var L=e=>{var n;return a.a.createElement("div",{className:"product-detail-view-wrapper"},a.a.createElement(N,e),(null===(n=e.product.detail)||void 0===n?void 0:n.disclaimer)&&a.a.createElement("div",{className:"product-detail-disclaimer T02 TEXT_200 FONT_BOLD"},e.product.detail.disclaimer))},O=t(206),j={insert:"head",singleton:!1};i()(O.a,j),O.a.locals;const F=Object(C.a)()(e=>{var n,t,r,o,i,s;const c=e.promoData;return a.a.createElement("div",{className:"shop-promo-view focus-ring T20","data-focused":e.focused,style:{backgroundImage:`url(${null===(n=c.detail)||void 0===n?void 0:n.backgroundImage})`}},a.a.createElement(E.a,{src:null===(t=c.image)||void 0===t?void 0:t.href,alt:"Promo Logo",className:"shop-promo-logo"}),a.a.createElement("div",{className:"shop-promo-title T30 FONT_BOLD"},null===(r=c.detail)||void 0===r?void 0:r.title),a.a.createElement(E.a,{src:null===(o=c.detail)||void 0===o?void 0:o.qrCode,alt:"QR Code",className:"shop-promo-qr-code"}),a.a.createElement("p",{className:"shop-promo-description T20 FONT_BOLD"},null===(i=c.detail)||void 0===i||null===(s=i.link)||void 0===s?void 0:s.text))});var I=e=>{var n;return a.a.createElement("div",null,a.a.createElement(F,e),a.a.createElement("div",{className:"promo-view-disclaimer T02 TEXT_200 FONT_BOLD"},null===(n=e.promoData.detail)||void 0===n?void 0:n.disclaimer))},M=t(106);function R(e,n,t){return(n=function(e){var n=function(e,n){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,n||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(e)}(e,"string");return"symbol"==typeof n?n:n+""}(n))in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}class U extends r.Component{constructor(e){super(e),R(this,"container",null),R(this,"sectionsListener",null),R(this,"isDataLoadingListener",null),R(this,"errorStateListener",null),R(this,"promoDataListener",null),R(this,"maxHeightCleanup",null),R(this,"vm",void 0),R(this,"clearTabLoadFailure",()=>{this.viewModel.clearTabLoadFailure()}),R(this,"onArrowPress",e=>{"left"===e&&l.default.getMaestroEventViewModel().deliverFocus()}),R(this,"onBecameFocused",()=>{this.container&&(this.container.scrollTop=0)}),R(this,"openItemDetail",(e,n,t)=>{const r=Object(p.a)(e)?"product_summary":"want more";this.viewModel.trackItemClick(r,e,n),this.setState({selectedItem:e,selectedItemFocusKey:t,selectedShopSection:n},()=>{l.default.getMaestroEventViewModel().navigation.setFocus("product-detail-view")})}),R(this,"closeProductDetail",()=>{this.state.selectedItem&&this.state.selectedShopSection&&(this.viewModel.trackItemClick("product_detail",this.state.selectedItem,this.state.selectedShopSection),this.setState({selectedItem:null,selectedShopSection:null},()=>{this.state.selectedItemFocusKey&&setTimeout(()=>{l.default.getMaestroEventViewModel().navigation.setFocus(this.state.selectedItemFocusKey)},100)}))}),R(this,"trackPromoEnterPress",()=>{this.viewModel.trackItemClick("fallback",null,null)}),R(this,"renderContent",()=>{const{sections:e,errorState:n,selectedItem:t,promoData:r}=this.state;return t?a.a.createElement(L,{product:t,onBecameFocused:this.onBecameFocused,onEnterPress:this.closeProductDetail,onArrowPress:this.onArrowPress,focusKey:"product-detail-view"}):"tabLoadFailure"===n?a.a.createElement(A.a,{onEnterPress:this.clearTabLoadFailure,onArrowPress:this.onArrowPress}):"emptyShop"!==n&&0!==e.length||!r?e.map((e,n)=>a.a.createElement(S,{key:n,sectionIndex:n,section:e,onArrowPress:this.onArrowPress,onItemClick:this.openItemDetail})):a.a.createElement(I,{promoData:r,onEnterPress:this.trackPromoEnterPress})}),R(this,"setContainerRef",e=>{e&&!this.state.container&&this.setState({container:e}),this.container!==e&&(this.container=e,this.maxHeightCleanup&&this.maxHeightCleanup(),this.container&&(this.maxHeightCleanup=Object(M.a)(()=>this.container)))}),this.vm=l.default.getMaestroEventViewModel().shopViewModel,this.state={container:null,sections:this.viewModel.sections.value,isDataLoading:this.viewModel.isDataLoading.value,errorState:this.viewModel.errorState.value,selectedItem:null,selectedItemFocusKey:"",promoData:this.viewModel.promoData.value,selectedShopSection:null}}get viewModel(){if(!this.vm)throw new Error("ShopViewModel is not initialized");return this.vm}componentDidMount(){this.setState({container:this.container}),this.maxHeightCleanup=Object(M.a)(()=>this.container),this.sectionsListener=this.viewModel.sections.subscribe(e=>{this.setState({sections:e})}),this.isDataLoadingListener=this.viewModel.isDataLoading.subscribe(e=>{this.setState({isDataLoading:e})}),this.errorStateListener=this.viewModel.errorState.subscribe(e=>{this.setState({errorState:e})}),this.promoDataListener=this.viewModel.promoData.subscribe(e=>{this.setState({promoData:e})}),this.viewModel.init()}componentWillUnmount(){this.sectionsListener&&this.sectionsListener(),this.isDataLoadingListener&&this.isDataLoadingListener(),this.errorStateListener&&this.errorStateListener(),this.promoDataListener&&this.promoDataListener(),this.maxHeightCleanup&&this.maxHeightCleanup(),this.viewModel.cleanup()}render(){return a.a.createElement(d.a,{scrollableContainerRef:this.state.container,containerTopOffset:40,"data-has-product-selected":!!this.state.selectedItem,"data-has-error":"none"!==this.state.errorState,style:{maxHeight:"auto"}},a.a.createElement("div",{className:"shop-view",ref:this.setContainerRef},this.renderContent(),a.a.createElement("div",{className:"shop-bottom-padding"})))}}var z=U;n.default=z}}]);
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[5],{102:function(e,n,t){"use strict";var r=t(0),a=t.n(r);function o(){return(o=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)({}).hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e}).apply(null,arguments)}function i(e,n,t){return(n=function(e){var n=function(e,n){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,n||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(e)}(e,"string");return"symbol"==typeof n?n:n+""}(n))in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}class s extends a.a.Component{constructor(e){super(e),i(this,"state",{failed:!1}),i(this,"handleError",()=>{this.setState({failed:!0})})}render(){return this.state.failed?(console.warn("Image failed to load:",this.props.src),null):this.props.src?a.a.createElement("img",o({alt:this.props.alt||"Image"},this.props,{onError:this.handleError})):(console.warn("Image source is empty"),null)}}n.a=s},103:function(e,n,t){"use strict";var r=t(30);n.a=r.b},106:function(e,n,t){"use strict";var r=t(33).a,a=t(5),o=t.n(a),i=t(108),s={insert:"head",singleton:!1},c=(o()(i.a,s),i.a.locals,t(100)),d=t(0),l=t.n(d);function A(){return(A=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)({}).hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e}).apply(null,arguments)}class p extends l.a.Component{render(){const{children:e,focused:n,focusKey:t,parentFocusKey:a,preferredChildFocusKey:o,forgetLastFocusedChild:i,trackChildren:s,autoRestoreFocus:c,blockNavigationOut:d,hasFocusedChild:p,focusable:u,onEnterPress:m,onEnterRelease:h,onBackPress:g,onArrowPress:C,onBecameFocused:E,onBecameBlurred:B,realFocusKey:b,setFocus:v,navigateByDirection:f,stealFocus:w,onUpdateFocus:x,onUpdateHasFocusedChild:y,...k}=this.props;return l.a.createElement(r,A({className:"action-button T05_ALT"},k),e)}}var u=Object(c.a)()(p);n.a=u},108:function(e,n,t){"use strict";var r=t(6),a=t.n(r),o=t(7),i=t.n(o)()(a.a);i.push([e.i,".action-button {\n padding: 23px 0;\n background-color: var(--sdk-surface5);\n color: var(--sdk-text100);\n}\n\n.action-button:hover,\n.action-button[data-focused='true'] {\n background-color: var(--sdk-accentPrimary);\n color: var(--sdk-text500);\n}\n","",{version:3,sources:["webpack://./src/components/molecules/ActionButton/ActionButton.styles.css"],names:[],mappings:"AAAA;EACE,eAAe;EACf,qCAAqC;EACrC,yBAAyB;AAC3B;;AAEA;;EAEE,0CAA0C;EAC1C,yBAAyB;AAC3B",sourcesContent:[".action-button {\n padding: 23px 0;\n background-color: var(--sdk-surface5);\n color: var(--sdk-text100);\n}\n\n.action-button:hover,\n.action-button[data-focused='true'] {\n background-color: var(--sdk-accentPrimary);\n color: var(--sdk-text500);\n}\n"],sourceRoot:""}]),n.a=i},109:function(e,n,t){"use strict";t.d(n,"b",(function(){return o})),t.d(n,"a",(function(){return i}));var r=t(0);function a(e){if(!e)return;const n=e.getBoundingClientRect();e.style.maxHeight=window.innerHeight-n.top+"px"}function o(){const e=Object(r.useRef)(null),n=Object(r.useCallback)(()=>{a(e.current)},[]);Object(r.useEffect)(()=>(window.addEventListener("resize",n),()=>{window.removeEventListener("resize",n)}),[n]);return Object(r.useCallback)(n=>{e.current=n,a(n)},[])}function i(e){const n=()=>{a(e())};return n(),window.addEventListener("resize",n),()=>{window.removeEventListener("resize",n)}}},111:function(e,n,t){"use strict";var r=t(6),a=t.n(r),o=t(7),i=t.n(o)()(a.a);i.push([e.i,".tab-load-error {\n display: block;\n padding: 24px;\n background-color: var(--sdk-surface4);\n}\n\n.tab-load-error h3 {\n margin: 0;\n font-family: var(--sdk-font-headline);\n}\n\n.tab-load-error p {\n height: 86px;\n}\n","",{version:3,sources:["webpack://./src/modules/espn/components/TabLoadError/TabLoadError.styles.css"],names:[],mappings:"AAAA;EACE,cAAc;EACd,aAAa;EACb,qCAAqC;AACvC;;AAEA;EACE,SAAS;EACT,qCAAqC;AACvC;;AAEA;EACE,YAAY;AACd",sourcesContent:[".tab-load-error {\n display: block;\n padding: 24px;\n background-color: var(--sdk-surface4);\n}\n\n.tab-load-error h3 {\n margin: 0;\n font-family: var(--sdk-font-headline);\n}\n\n.tab-load-error p {\n height: 86px;\n}\n"],sourceRoot:""}]),n.a=i},112:function(e,n,t){"use strict";var r=t(100),a=t(0),o=t.n(a),i=t(5),s=t.n(i),c=t(111),d={insert:"head",singleton:!1},l=(s()(c.a,d),c.a.locals,t(106));class A extends o.a.Component{render(){const{focused:e,onEnterPress:n}=this.props;return o.a.createElement("div",{"data-focused":e,className:"tab-load-error focus-ring"},o.a.createElement("h3",{className:"T70"},"We dropped the ball."),o.a.createElement("p",{className:"T20"},"We're having trouble loading that for you. Please try again."),o.a.createElement(l.a,{"data-focused":e,onEnterPress:n},"Try Again"))}}var p=Object(r.a)()(A);n.a=p},120:function(e,n,t){"use strict";t.d(n,"a",(function(){return r}));const r=(e,n,t)=>{try{const r=new URL(e);return r.searchParams.set("w",n.toString()),r.searchParams.set("h",t.toString()),r.toString()}catch(n){return console.warn("Malformed URL:",e,n),e}}},122:function(e,n,t){"use strict";t.d(n,"a",(function(){return r}));const r=e=>"product"===e.type},204:function(e,n,t){"use strict";var r=t(6),a=t.n(r),o=t(7),i=t.n(o)()(a.a);i.push([e.i,".shop-view {\n display: block;\n overflow-y: auto;\n scrollbar-width: none;\n scroll-behavior: smooth;\n overscroll-behavior: contain;\n margin-top: 60px;\n}\n\n.shop-view::-webkit-scrollbar {\n display: none;\n}\n\n.shop-bottom-padding {\n height: 50vh;\n}\n\n.shop-empty-state {\n display: block;\n text-align: center;\n padding: 60px 20px;\n color: #ffffff;\n font-size: 18px;\n}\n\n.shop-sections {\n display: block;\n}\n\n.scrollable-container[data-has-product-selected='true']::before,\n.scrollable-container[data-has-product-selected='true']::after,\n.scrollable-container[data-has-error='true']::after,\n.scrollable-container[data-has-error='true']::before {\n background: none;\n}\n","",{version:3,sources:["webpack://./src/modules/espn/shop/view/ShopView.styles.css"],names:[],mappings:"AAAA;EACE,cAAc;EACd,gBAAgB;EAChB,qBAAqB;EACrB,uBAAuB;EACvB,4BAA4B;EAC5B,gBAAgB;AAClB;;AAEA;EACE,aAAa;AACf;;AAEA;EACE,YAAY;AACd;;AAEA;EACE,cAAc;EACd,kBAAkB;EAClB,kBAAkB;EAClB,cAAc;EACd,eAAe;AACjB;;AAEA;EACE,cAAc;AAChB;;AAEA;;;;EAIE,gBAAgB;AAClB",sourcesContent:[".shop-view {\n display: block;\n overflow-y: auto;\n scrollbar-width: none;\n scroll-behavior: smooth;\n overscroll-behavior: contain;\n margin-top: 60px;\n}\n\n.shop-view::-webkit-scrollbar {\n display: none;\n}\n\n.shop-bottom-padding {\n height: 50vh;\n}\n\n.shop-empty-state {\n display: block;\n text-align: center;\n padding: 60px 20px;\n color: #ffffff;\n font-size: 18px;\n}\n\n.shop-sections {\n display: block;\n}\n\n.scrollable-container[data-has-product-selected='true']::before,\n.scrollable-container[data-has-product-selected='true']::after,\n.scrollable-container[data-has-error='true']::after,\n.scrollable-container[data-has-error='true']::before {\n background: none;\n}\n"],sourceRoot:""}]),n.a=i},205:function(e,n,t){"use strict";var r=t(6),a=t.n(r),o=t(7),i=t.n(o)()(a.a);i.push([e.i,".product-detail-view-wrapper > *:first-child {\n margin-bottom: 16px;\n}\n\n/* Card */\n.product-detail-card {\n display: inline-block;\n padding: 24px;\n text-align: center;\n box-sizing: border-box;\n box-shadow: 0px 0px 100px 0px var(--sdk-surface1);\n width: 100%;\n}\n\n/* Title */\n.product-detail-title {\n margin-bottom: 32px;\n font-family: var(--sdk-font-headline);\n}\n\n/* Mini Product Card Container */\n.product-detail-product {\n margin-bottom: 32px;\n}\n\n/* Override ProductSummaryCard styles when inside detail view */\n.product-detail-product .product-summary-card,\n.product-detail-product .browse-card {\n text-align: left;\n background-color: #ffffff14;\n background-image: none !important;\n padding: 16px;\n}\n\n.product-detail-product .browse-card {\n direction: rtl;\n}\n\n.product-detail-product .browse-card .browse-card-content {\n direction: ltr;\n}\n\n.product-detail-product .browse-card .browse-card-logo-image {\n margin-left: 0;\n margin-right: 24px;\n width: calc(20% - 24px);\n}\n\n.product-detail-product\n .product-summary-card\n .product-summary-card-image-container {\n width: 20%;\n}\n\n.product-detail-product .product-summary-card .product-summary-card-content {\n width: 80%;\n padding: 6px 0px 6px 24px;\n}\n\n.product-detail-product .product-summary-card-title {\n -webkit-line-clamp: 2;\n max-height: calc(1.3em * 2); /* line-height * 3 lines */\n}\n\n/* QR Code Container */\n.product-detail-qr {\n background-color: var(--sdk-highlightPrimary);\n border-radius: 24px;\n margin: 32px 30% 28px 30%;\n overflow: hidden;\n}\n\n.product-detail-qr-image {\n width: 100%;\n height: 100%;\n object-fit: contain;\n}\n\n/* Instruction Text */\n.product-detail-instruction {\n margin-bottom: 24px;\n font-family: var(--sdk-font-headline);\n}\n\n.product-detail-disclaimer {\n text-align: center;\n}\n","",{version:3,sources:["webpack://./src/modules/espn/shop/view/ProductDetailView/ProductDetailView.styles.css"],names:[],mappings:"AAAA;EACE,mBAAmB;AACrB;;AAEA,SAAS;AACT;EACE,qBAAqB;EACrB,aAAa;EACb,kBAAkB;EAClB,sBAAsB;EACtB,iDAAiD;EACjD,WAAW;AACb;;AAEA,UAAU;AACV;EACE,mBAAmB;EACnB,qCAAqC;AACvC;;AAEA,gCAAgC;AAChC;EACE,mBAAmB;AACrB;;AAEA,+DAA+D;AAC/D;;EAEE,gBAAgB;EAChB,2BAA2B;EAC3B,iCAAiC;EACjC,aAAa;AACf;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;EACd,kBAAkB;EAClB,uBAAuB;AACzB;;AAEA;;;EAGE,UAAU;AACZ;;AAEA;EACE,UAAU;EACV,yBAAyB;AAC3B;;AAEA;EACE,qBAAqB;EACrB,2BAA2B,EAAE,0BAA0B;AACzD;;AAEA,sBAAsB;AACtB;EACE,6CAA6C;EAC7C,mBAAmB;EACnB,yBAAyB;EACzB,gBAAgB;AAClB;;AAEA;EACE,WAAW;EACX,YAAY;EACZ,mBAAmB;AACrB;;AAEA,qBAAqB;AACrB;EACE,mBAAmB;EACnB,qCAAqC;AACvC;;AAEA;EACE,kBAAkB;AACpB",sourcesContent:[".product-detail-view-wrapper > *:first-child {\n margin-bottom: 16px;\n}\n\n/* Card */\n.product-detail-card {\n display: inline-block;\n padding: 24px;\n text-align: center;\n box-sizing: border-box;\n box-shadow: 0px 0px 100px 0px var(--sdk-surface1);\n width: 100%;\n}\n\n/* Title */\n.product-detail-title {\n margin-bottom: 32px;\n font-family: var(--sdk-font-headline);\n}\n\n/* Mini Product Card Container */\n.product-detail-product {\n margin-bottom: 32px;\n}\n\n/* Override ProductSummaryCard styles when inside detail view */\n.product-detail-product .product-summary-card,\n.product-detail-product .browse-card {\n text-align: left;\n background-color: #ffffff14;\n background-image: none !important;\n padding: 16px;\n}\n\n.product-detail-product .browse-card {\n direction: rtl;\n}\n\n.product-detail-product .browse-card .browse-card-content {\n direction: ltr;\n}\n\n.product-detail-product .browse-card .browse-card-logo-image {\n margin-left: 0;\n margin-right: 24px;\n width: calc(20% - 24px);\n}\n\n.product-detail-product\n .product-summary-card\n .product-summary-card-image-container {\n width: 20%;\n}\n\n.product-detail-product .product-summary-card .product-summary-card-content {\n width: 80%;\n padding: 6px 0px 6px 24px;\n}\n\n.product-detail-product .product-summary-card-title {\n -webkit-line-clamp: 2;\n max-height: calc(1.3em * 2); /* line-height * 3 lines */\n}\n\n/* QR Code Container */\n.product-detail-qr {\n background-color: var(--sdk-highlightPrimary);\n border-radius: 24px;\n margin: 32px 30% 28px 30%;\n overflow: hidden;\n}\n\n.product-detail-qr-image {\n width: 100%;\n height: 100%;\n object-fit: contain;\n}\n\n/* Instruction Text */\n.product-detail-instruction {\n margin-bottom: 24px;\n font-family: var(--sdk-font-headline);\n}\n\n.product-detail-disclaimer {\n text-align: center;\n}\n"],sourceRoot:""}]),n.a=i},206:function(e,n,t){"use strict";var r=t(6),a=t.n(r),o=t(7),i=t.n(o)()(a.a);i.push([e.i,"/* Product Summary Card - TV-compatible CSS (no flex/grid) */\n\n.product-summary-card {\n position: relative;\n background-color: var(--sdk-surface4);\n overflow: hidden;\n vertical-align: middle;\n padding: 24px;\n width: 100%;\n height: 192px;\n box-sizing: border-box;\n text-align: left;\n}\n\n/* Helper for vertical centering */\n.product-summary-card::before {\n content: '';\n display: inline-block;\n height: 100%;\n vertical-align: middle;\n}\n\n/* Product Image Container - 144x144 */\n.product-summary-card-image-container {\n display: inline-block;\n vertical-align: middle;\n width: 20%;\n max-height: 144px;\n overflow: hidden;\n line-height: 0;\n}\n\n.product-summary-card-image {\n width: 100%;\n height: 100%;\n object-fit: contain;\n border-radius: 8px;\n}\n\n/* Text Content Container */\n.product-summary-card-content {\n display: inline-block;\n vertical-align: middle;\n padding: 16px 0 16px 24px;\n white-space: normal;\n width: 80%;\n box-sizing: border-box;\n}\n\n.product-summary-card-content[data-has-image='false'] {\n width: 100%;\n}\n\n/* Product Title - max 3 lines with ellipsis */\n.product-summary-card-title {\n padding-bottom: 4px;\n /* Line clamp for 3 lines */\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n text-overflow: ellipsis;\n /* Fallback for non-webkit browsers */\n max-height: calc(1.3em * 3); /* line-height * 3 lines */\n}\n\n/* Price Container */\n.product-summary-card-price-container {\n white-space: nowrap;\n}\n\n/* Original Price (crossed out when on sale) */\n.product-summary-card-price-original {\n text-decoration: line-through;\n opacity: 0.6;\n margin-right: 4px;\n}\n\n/* Sale/Clearance Price */\n.product-summary-card-price-sale {\n margin-right: 8px;\n}\n\n/* Sale/Clearance Badge */\n.product-summary-card-badge {\n display: inline-block;\n background-color: var(--sdk-alertError);\n padding-inline: 4px;\n border-radius: 4px;\n}\n\n.product-summary-card-qr-image {\n object-fit: contain;\n position: absolute;\n bottom: 16px;\n right: 16px;\n width: 6%;\n height: auto;\n}\n","",{version:3,sources:["webpack://./src/modules/espn/shop/view/components/ProductSummaryCard/ProductSummaryCard.styles.css"],names:[],mappings:"AAAA,4DAA4D;;AAE5D;EACE,kBAAkB;EAClB,qCAAqC;EACrC,gBAAgB;EAChB,sBAAsB;EACtB,aAAa;EACb,WAAW;EACX,aAAa;EACb,sBAAsB;EACtB,gBAAgB;AAClB;;AAEA,kCAAkC;AAClC;EACE,WAAW;EACX,qBAAqB;EACrB,YAAY;EACZ,sBAAsB;AACxB;;AAEA,sCAAsC;AACtC;EACE,qBAAqB;EACrB,sBAAsB;EACtB,UAAU;EACV,iBAAiB;EACjB,gBAAgB;EAChB,cAAc;AAChB;;AAEA;EACE,WAAW;EACX,YAAY;EACZ,mBAAmB;EACnB,kBAAkB;AACpB;;AAEA,2BAA2B;AAC3B;EACE,qBAAqB;EACrB,sBAAsB;EACtB,yBAAyB;EACzB,mBAAmB;EACnB,UAAU;EACV,sBAAsB;AACxB;;AAEA;EACE,WAAW;AACb;;AAEA,8CAA8C;AAC9C;EACE,mBAAmB;EACnB,2BAA2B;EAC3B,oBAAoB;EACpB,qBAAqB;EACrB,4BAA4B;EAC5B,gBAAgB;EAChB,uBAAuB;EACvB,qCAAqC;EACrC,2BAA2B,EAAE,0BAA0B;AACzD;;AAEA,oBAAoB;AACpB;EACE,mBAAmB;AACrB;;AAEA,8CAA8C;AAC9C;EACE,6BAA6B;EAC7B,YAAY;EACZ,iBAAiB;AACnB;;AAEA,yBAAyB;AACzB;EACE,iBAAiB;AACnB;;AAEA,yBAAyB;AACzB;EACE,qBAAqB;EACrB,uCAAuC;EACvC,mBAAmB;EACnB,kBAAkB;AACpB;;AAEA;EACE,mBAAmB;EACnB,kBAAkB;EAClB,YAAY;EACZ,WAAW;EACX,SAAS;EACT,YAAY;AACd",sourcesContent:["/* Product Summary Card - TV-compatible CSS (no flex/grid) */\n\n.product-summary-card {\n position: relative;\n background-color: var(--sdk-surface4);\n overflow: hidden;\n vertical-align: middle;\n padding: 24px;\n width: 100%;\n height: 192px;\n box-sizing: border-box;\n text-align: left;\n}\n\n/* Helper for vertical centering */\n.product-summary-card::before {\n content: '';\n display: inline-block;\n height: 100%;\n vertical-align: middle;\n}\n\n/* Product Image Container - 144x144 */\n.product-summary-card-image-container {\n display: inline-block;\n vertical-align: middle;\n width: 20%;\n max-height: 144px;\n overflow: hidden;\n line-height: 0;\n}\n\n.product-summary-card-image {\n width: 100%;\n height: 100%;\n object-fit: contain;\n border-radius: 8px;\n}\n\n/* Text Content Container */\n.product-summary-card-content {\n display: inline-block;\n vertical-align: middle;\n padding: 16px 0 16px 24px;\n white-space: normal;\n width: 80%;\n box-sizing: border-box;\n}\n\n.product-summary-card-content[data-has-image='false'] {\n width: 100%;\n}\n\n/* Product Title - max 3 lines with ellipsis */\n.product-summary-card-title {\n padding-bottom: 4px;\n /* Line clamp for 3 lines */\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n text-overflow: ellipsis;\n /* Fallback for non-webkit browsers */\n max-height: calc(1.3em * 3); /* line-height * 3 lines */\n}\n\n/* Price Container */\n.product-summary-card-price-container {\n white-space: nowrap;\n}\n\n/* Original Price (crossed out when on sale) */\n.product-summary-card-price-original {\n text-decoration: line-through;\n opacity: 0.6;\n margin-right: 4px;\n}\n\n/* Sale/Clearance Price */\n.product-summary-card-price-sale {\n margin-right: 8px;\n}\n\n/* Sale/Clearance Badge */\n.product-summary-card-badge {\n display: inline-block;\n background-color: var(--sdk-alertError);\n padding-inline: 4px;\n border-radius: 4px;\n}\n\n.product-summary-card-qr-image {\n object-fit: contain;\n position: absolute;\n bottom: 16px;\n right: 16px;\n width: 6%;\n height: auto;\n}\n"],sourceRoot:""}]),n.a=i},207:function(e,n,t){"use strict";var r=t(6),a=t.n(r),o=t(7),i=t.n(o)()(a.a);i.push([e.i,"/* Browse Card (Want More) - TV-compatible CSS (no flex/grid) */\n\n.browse-card {\n position: relative;\n display: block;\n background-color: var(--sdk-surface4);\n padding: 24px;\n box-sizing: border-box;\n text-align: left;\n}\n\n.browse-card-content {\n display: inline-block;\n width: 80%;\n vertical-align: middle;\n}\n\n/* Tag Line */\n.browse-card-tagline {\n margin-bottom: 4px;\n width: 85%;\n}\n\n.browse-card-caption {\n width: 85%;\n}\n\n.browse-card-logo-image {\n width: calc(20% - 12px);\n height: 100%;\n vertical-align: middle;\n margin-left: 12px;\n}\n","",{version:3,sources:["webpack://./src/modules/espn/shop/view/components/BrowseCard/BrowseCard.styles.css"],names:[],mappings:"AAAA,+DAA+D;;AAE/D;EACE,kBAAkB;EAClB,cAAc;EACd,qCAAqC;EACrC,aAAa;EACb,sBAAsB;EACtB,gBAAgB;AAClB;;AAEA;EACE,qBAAqB;EACrB,UAAU;EACV,sBAAsB;AACxB;;AAEA,aAAa;AACb;EACE,kBAAkB;EAClB,UAAU;AACZ;;AAEA;EACE,UAAU;AACZ;;AAEA;EACE,uBAAuB;EACvB,YAAY;EACZ,sBAAsB;EACtB,iBAAiB;AACnB",sourcesContent:["/* Browse Card (Want More) - TV-compatible CSS (no flex/grid) */\n\n.browse-card {\n position: relative;\n display: block;\n background-color: var(--sdk-surface4);\n padding: 24px;\n box-sizing: border-box;\n text-align: left;\n}\n\n.browse-card-content {\n display: inline-block;\n width: 80%;\n vertical-align: middle;\n}\n\n/* Tag Line */\n.browse-card-tagline {\n margin-bottom: 4px;\n width: 85%;\n}\n\n.browse-card-caption {\n width: 85%;\n}\n\n.browse-card-logo-image {\n width: calc(20% - 12px);\n height: 100%;\n vertical-align: middle;\n margin-left: 12px;\n}\n"],sourceRoot:""}]),n.a=i},208:function(e,n,t){"use strict";var r=t(6),a=t.n(r),o=t(7),i=t.n(o)()(a.a);i.push([e.i,".shop-promo-view {\n display: block;\n text-align: center;\n padding: 32px;\n background-size: cover;\n background-position: center;\n background-repeat: no-repeat;\n}\n\n.shop-promo-logo {\n padding: 30px 24px;\n}\n\n.shop-promo-qr-code {\n border-radius: 24px;\n margin: 32px 0 48px 0;\n width: 100%;\n max-width: 50%;\n}\n\n.shop-promo-description {\n margin: 0 17px;\n}\n\n.promo-view-disclaimer {\n margin-top: 24px;\n text-align: center;\n}\n","",{version:3,sources:["webpack://./src/modules/espn/shop/view/components/ShopPromoView/ShopPromoView.styles.css"],names:[],mappings:"AAAA;EACE,cAAc;EACd,kBAAkB;EAClB,aAAa;EACb,sBAAsB;EACtB,2BAA2B;EAC3B,4BAA4B;AAC9B;;AAEA;EACE,kBAAkB;AACpB;;AAEA;EACE,mBAAmB;EACnB,qBAAqB;EACrB,WAAW;EACX,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,gBAAgB;EAChB,kBAAkB;AACpB",sourcesContent:[".shop-promo-view {\n display: block;\n text-align: center;\n padding: 32px;\n background-size: cover;\n background-position: center;\n background-repeat: no-repeat;\n}\n\n.shop-promo-logo {\n padding: 30px 24px;\n}\n\n.shop-promo-qr-code {\n border-radius: 24px;\n margin: 32px 0 48px 0;\n width: 100%;\n max-width: 50%;\n}\n\n.shop-promo-description {\n margin: 0 17px;\n}\n\n.promo-view-disclaimer {\n margin-top: 24px;\n text-align: center;\n}\n"],sourceRoot:""}]),n.a=i},209:function(e,n,t){"use strict";var r=t(6),a=t.n(r),o=t(7),i=t.n(o)()(a.a);i.push([e.i,".shop-section-title {\n margin: 0;\n margin-bottom: 0 !important;\n padding-top: 24px;\n padding-bottom: 0;\n margin-bottom: 16px !important;\n text-align: center;\n position: sticky;\n top: 0;\n z-index: 1;\n font-size: 21px;\n}\n\n/* Layout for product cards - TV compatible (no flex/grid) */\n.shop-section-items > * {\n display: inline-block;\n margin-bottom: 16px;\n}\n\n.shop-item-placeholder {\n display: inline-block;\n vertical-align: top;\n width: 200px;\n height: 250px;\n padding: 16px;\n background-color: rgba(255, 255, 255, 0.1);\n border-radius: 8px;\n color: #ffffff;\n}\n","",{version:3,sources:["webpack://./src/modules/espn/shop/view/components/ShopSection/ShopSection.styles.css"],names:[],mappings:"AAAA;EACE,SAAS;EACT,2BAA2B;EAC3B,iBAAiB;EACjB,iBAAiB;EACjB,8BAA8B;EAC9B,kBAAkB;EAClB,gBAAgB;EAChB,MAAM;EACN,UAAU;EACV,eAAe;AACjB;;AAEA,4DAA4D;AAC5D;EACE,qBAAqB;EACrB,mBAAmB;AACrB;;AAEA;EACE,qBAAqB;EACrB,mBAAmB;EACnB,YAAY;EACZ,aAAa;EACb,aAAa;EACb,0CAA0C;EAC1C,kBAAkB;EAClB,cAAc;AAChB",sourcesContent:[".shop-section-title {\n margin: 0;\n margin-bottom: 0 !important;\n padding-top: 24px;\n padding-bottom: 0;\n margin-bottom: 16px !important;\n text-align: center;\n position: sticky;\n top: 0;\n z-index: 1;\n font-size: 21px;\n}\n\n/* Layout for product cards - TV compatible (no flex/grid) */\n.shop-section-items > * {\n display: inline-block;\n margin-bottom: 16px;\n}\n\n.shop-item-placeholder {\n display: inline-block;\n vertical-align: top;\n width: 200px;\n height: 250px;\n padding: 16px;\n background-color: rgba(255, 255, 255, 0.1);\n border-radius: 8px;\n color: #ffffff;\n}\n"],sourceRoot:""}]),n.a=i},238:function(e,n,t){"use strict";t.r(n);var r=t(0),a=t.n(r),o=t(5),i=t.n(o),s=t(204),c={insert:"head",singleton:!1},d=(i()(s.a,c),s.a.locals,t(103)),l=t(8),A=t(112),p=t(122),u=t(209),m={insert:"head",singleton:!1},h=(i()(u.a,m),u.a.locals,t(206)),g={insert:"head",singleton:!1},C=(i()(h.a,g),h.a.locals,t(100)),E=t(102);class B extends a.a.Component{render(){const{product:e,focused:n}=this.props,{image:t,name:r,price:o}=e,i=(null==o?void 0:o.displayClearance)||(null==o?void 0:o.displaySale),s=!!i;return a.a.createElement("div",{className:"product-summary-card focus-ring","data-focused":n},Boolean(null==t?void 0:t.href)&&a.a.createElement("div",{className:"product-summary-card-image-container"},a.a.createElement(E.a,{src:t.href,alt:r||"Product",className:"product-summary-card-image"})),a.a.createElement("div",{className:"product-summary-card-content","data-has-image":!(null==t||!t.href)},a.a.createElement("div",{className:"product-summary-card-title T05_ALT"},r||"Product Name"),a.a.createElement("div",{className:"product-summary-card-price-container"},s?a.a.createElement("div",null,a.a.createElement("span",{className:"product-summary-card-price-original T02 TEXT_200"},(null==o?void 0:o.displayRetail)||"$0.00"),a.a.createElement("span",{className:"product-summary-card-price-sale T02 TEXT_200"},i),a.a.createElement("span",{className:"product-summary-card-badge T02 FONT_BOLD"},"SALE")):a.a.createElement("span",{className:"product-summary-card-price T02 TEXT_200"},(null==o?void 0:o.displayRetail)||"$0.00"))),n&&a.a.createElement(E.a,{src:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAACHElEQVR4Ae2YgXHCMAxFf3oM0A3qbsAGDRuwQWGC0gmgEwATkG7ABqQb0AlwN0gnSKXDpWqwiQU5IHe8O52xY8U/toyVoIwjRcPwPWMGvsOVc/UCE55GUe+RWU+/IkmSAg1DQxtPM7etZCfJAy4Mi25VDHZCF0g8T7NBPHMKgxn5jej3i8LPkl8PWoHYijOI516UBg3RiiXeTS9N9Veg3yvZ2tPOS9lHmA+yiae9SzYN+BRSU4dE5ahn7etH8Tao8dsE/IIO7u9s56NaYrrxlDcPWV/plzq/KZRoY5CXJsXfhojFOL8ulHSU/d/I3iGWIJKcbIhtfKlQCYyMV5+fpSLDEcQKHFP8PHvan2r8OPYWnvboEIkVmOI4DNkAJ9Des5iYQ7db80oZS+Np3FlJQhdcVqKaQd7l7v0lVfhxMjyDFhpoU+qYOL9JqWNzSEerN4lkCX8wp2gw9/MRK3AeyEoy7AvktCwTdb6eirrF/51eNCHwVxBnMbxxcnd87UHtPNtL4TOoCqQ+Q0SijUFOUBc4/mRRo81mPl1pcSa02cyork+5fRk3ool/56Juy8q3nkNZUqzAbiBN973oD8jGop7J10onbiWuW7JHhARWnmYd+MShTtVPQWriGZRPY3Dhw9uFyE7ToSW20FGI0or2b08/Gz1O5Vy8fTzS0rpk4ZFmdS9HDB1rp0Dj8JHpyzdNtWMMKZoXePuIfhZ+AArh47ArZrulAAAAAElFTkSuQmCC",alt:"QR Code",className:"product-summary-card-qr-image"}))}}var b=Object(C.a)()(B),v=t(31),f=t(29),w=t(207),x={insert:"head",singleton:!1};i()(w.a,x),w.a.locals;class y extends a.a.Component{render(){const{browseCard:e,focused:n}=this.props,{name:t,caption:r,image:o,detail:i}=e;return a.a.createElement("div",{className:"browse-card focus-ring","data-focused":n,style:{backgroundImage:null!=i&&i.backgroundImage?`url(${i.backgroundImage})`:"none",backgroundSize:"cover",backgroundPosition:"center",backgroundClip:"padding-box"}},a.a.createElement("div",{className:"browse-card-content"},!!t&&a.a.createElement("div",{className:"browse-card-tagline T20 FONT_BOLD"},t),a.a.createElement("div",{className:"browse-card-caption T05_ALT"},r||"Browse all merch")),(null==o?void 0:o.href)&&a.a.createElement(E.a,{src:o.href,width:72,height:72,alt:t||"Logo",className:"browse-card-logo-image"}))}}var k=Object(C.a)()(y);var S=({section:e,sectionIndex:n,onArrowPress:t,onItemClick:r})=>{var o;const{scrollToFocusedElement:i}=Object(v.a)(),s=e=>{i(e,{offsetTop:40})},c=(e,n,t)=>()=>{r(e,n,t)};return a.a.createElement("div",{className:"shop-section"},a.a.createElement("h2",{className:"shop-section-title TEXT_200"},e.title),a.a.createElement("div",{className:"shop-section-items"},null===(o=e.items)||void 0===o?void 0:o.map((r,o)=>{const i=`shop-section-${n}-item-${o}`;return"product"===r.type?a.a.createElement(f.a,{key:o},a.a.createElement(b,{product:r,onEnterPress:c(r,e,i),onArrowPress:t,onBecameFocused:s,focusKey:i})):"browse"===r.type?a.a.createElement(f.a,{key:o},a.a.createElement(k,{key:o,browseCard:r,onArrowPress:t,onEnterPress:c(r,e,i),onBecameFocused:s,focusKey:i})):null})))},P=t(205),T={insert:"head",singleton:!1},q=(i()(P.a,T),P.a.locals,t(106)),D=t(120);const N=Object(C.a)()(e=>{var n,t;const{product:r,focused:o}=e,i=r.detail,s=(()=>{const e=null==i?void 0:i.backgroundImage;if(!e)return null;try{if(new URL(e).hostname.includes("stitcher")){return Object(D.a)(e,570,670)}}catch{if(e.includes("stitcher")){return Object(D.a)(e,570,670)}}return e})();return a.a.createElement("div",{className:"product-detail-card focus-ring","data-focused":o,style:{...s&&{backgroundImage:`url(${s})`,backgroundSize:"cover",backgroundClip:"padding-box",backgroundPosition:"center"}}},a.a.createElement("div",{className:"product-detail-title T70"},(null==i?void 0:i.title)||"Shop the look"),a.a.createElement("div",{className:"product-detail-product"},Object(p.a)(r)?a.a.createElement(b,{product:r,focusable:!1}):a.a.createElement(k,{browseCard:{...r,name:void 0,caption:null===(n=r.detail)||void 0===n?void 0:n.description},focusable:!1})),(null==i?void 0:i.qrCode)&&a.a.createElement("div",{className:"product-detail-qr"},a.a.createElement(E.a,{src:i.qrCode,alt:"QR Code",className:"product-detail-qr-image"})),a.a.createElement("div",{className:"product-detail-instruction T04"},null==i||null===(t=i.link)||void 0===t?void 0:t.text),a.a.createElement(q.a,{"data-focused":o},"Dismiss"))});var L=e=>{var n;return a.a.createElement("div",{className:"product-detail-view-wrapper"},a.a.createElement(N,e),(null===(n=e.product.detail)||void 0===n?void 0:n.disclaimer)&&a.a.createElement("div",{className:"product-detail-disclaimer T02 TEXT_200 FONT_BOLD"},e.product.detail.disclaimer))},O=t(208),j={insert:"head",singleton:!1};i()(O.a,j),O.a.locals;const F=Object(C.a)()(e=>{var n,t,r,o,i,s;const c=e.promoData;return a.a.createElement("div",{className:"shop-promo-view focus-ring T20","data-focused":e.focused,style:{backgroundImage:`url(${null===(n=c.detail)||void 0===n?void 0:n.backgroundImage})`}},a.a.createElement(E.a,{src:null===(t=c.image)||void 0===t?void 0:t.href,alt:"Promo Logo",className:"shop-promo-logo"}),a.a.createElement("div",{className:"shop-promo-title T30 FONT_BOLD"},null===(r=c.detail)||void 0===r?void 0:r.title),a.a.createElement(E.a,{src:null===(o=c.detail)||void 0===o?void 0:o.qrCode,alt:"QR Code",className:"shop-promo-qr-code"}),a.a.createElement("p",{className:"shop-promo-description T20 FONT_BOLD"},null===(i=c.detail)||void 0===i||null===(s=i.link)||void 0===s?void 0:s.text))});var I=e=>{var n;return a.a.createElement("div",null,a.a.createElement(F,e),a.a.createElement("div",{className:"promo-view-disclaimer T02 TEXT_200 FONT_BOLD"},null===(n=e.promoData.detail)||void 0===n?void 0:n.disclaimer))},M=t(109);function R(e,n,t){return(n=function(e){var n=function(e,n){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,n||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(e)}(e,"string");return"symbol"==typeof n?n:n+""}(n))in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}class U extends r.Component{constructor(e){super(e),R(this,"container",null),R(this,"sectionsListener",null),R(this,"isDataLoadingListener",null),R(this,"errorStateListener",null),R(this,"promoDataListener",null),R(this,"maxHeightCleanup",null),R(this,"vm",void 0),R(this,"clearTabLoadFailure",()=>{this.viewModel.clearTabLoadFailure()}),R(this,"onArrowPress",e=>{"left"===e&&l.default.getMaestroEventViewModel().deliverFocus()}),R(this,"onBecameFocused",()=>{this.container&&(this.container.scrollTop=0)}),R(this,"openItemDetail",(e,n,t)=>{const r=Object(p.a)(e)?"product_summary":"want more";this.viewModel.trackItemClick(r,e,n),this.setState({selectedItem:e,selectedItemFocusKey:t,selectedShopSection:n},()=>{l.default.getMaestroEventViewModel().navigation.setFocus("product-detail-view")})}),R(this,"closeProductDetail",()=>{this.state.selectedItem&&this.state.selectedShopSection&&(this.viewModel.trackItemClick("product_detail",this.state.selectedItem,this.state.selectedShopSection),this.setState({selectedItem:null,selectedShopSection:null},()=>{this.state.selectedItemFocusKey&&setTimeout(()=>{l.default.getMaestroEventViewModel().navigation.setFocus(this.state.selectedItemFocusKey)},100)}))}),R(this,"trackPromoEnterPress",()=>{this.viewModel.trackItemClick("fallback",null,null)}),R(this,"renderContent",()=>{const{sections:e,errorState:n,selectedItem:t,promoData:r}=this.state;return t?a.a.createElement(L,{product:t,onBecameFocused:this.onBecameFocused,onEnterPress:this.closeProductDetail,onArrowPress:this.onArrowPress,focusKey:"product-detail-view"}):"tabLoadFailure"===n?a.a.createElement(A.a,{onEnterPress:this.clearTabLoadFailure,onArrowPress:this.onArrowPress}):"emptyShop"!==n&&0!==e.length||!r?e.map((e,n)=>a.a.createElement(S,{key:n,sectionIndex:n,section:e,onArrowPress:this.onArrowPress,onItemClick:this.openItemDetail})):a.a.createElement(I,{promoData:r,onEnterPress:this.trackPromoEnterPress})}),R(this,"setContainerRef",e=>{e&&!this.state.container&&this.setState({container:e}),this.container!==e&&(this.container=e,this.maxHeightCleanup&&this.maxHeightCleanup(),this.container&&(this.maxHeightCleanup=Object(M.a)(()=>this.container)))}),this.vm=l.default.getMaestroEventViewModel().shopViewModel,this.state={container:null,sections:this.viewModel.sections.value,isDataLoading:this.viewModel.isDataLoading.value,errorState:this.viewModel.errorState.value,selectedItem:null,selectedItemFocusKey:"",promoData:this.viewModel.promoData.value,selectedShopSection:null}}get viewModel(){if(!this.vm)throw new Error("ShopViewModel is not initialized");return this.vm}componentDidMount(){this.setState({container:this.container}),this.maxHeightCleanup=Object(M.a)(()=>this.container),this.sectionsListener=this.viewModel.sections.subscribe(e=>{this.setState({sections:e})}),this.isDataLoadingListener=this.viewModel.isDataLoading.subscribe(e=>{this.setState({isDataLoading:e})}),this.errorStateListener=this.viewModel.errorState.subscribe(e=>{this.setState({errorState:e})}),this.promoDataListener=this.viewModel.promoData.subscribe(e=>{this.setState({promoData:e})}),this.viewModel.init()}componentWillUnmount(){this.sectionsListener&&this.sectionsListener(),this.isDataLoadingListener&&this.isDataLoadingListener(),this.errorStateListener&&this.errorStateListener(),this.promoDataListener&&this.promoDataListener(),this.maxHeightCleanup&&this.maxHeightCleanup(),this.viewModel.cleanup()}render(){return a.a.createElement(d.a,{scrollableContainerRef:this.state.container,containerTopOffset:40,"data-has-product-selected":!!this.state.selectedItem,"data-has-error":"none"!==this.state.errorState,style:{maxHeight:"auto"}},a.a.createElement("div",{className:"shop-view",ref:this.setContainerRef},this.renderContent(),a.a.createElement("div",{className:"shop-bottom-padding"})))}}var z=U;n.default=z}}]);
2
2
  //# sourceMappingURL=5.maestro-web-sdk.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///./src/components/atoms/Image/index.tsx","webpack:///./src/components/core/ScrollableContainer/index.ts","webpack:///./src/components/atoms/BaseButton/index.ts","webpack:///./src/components/molecules/ActionButton/ActionButton.styles.css?ed9b","webpack:///./src/components/molecules/ActionButton/ActionButton.tsx","webpack:///./src/components/molecules/ActionButton/index.ts","webpack:///./src/hooks/useMaxHeightToBottom.ts","webpack:///./src/components/molecules/TabLoadError/TabLoadError.styles.css","webpack:///./src/components/molecules/ActionButton/ActionButton.styles.css","webpack:///./src/components/molecules/TabLoadError/TabLoadError.styles.css?59a9","webpack:///./src/components/molecules/TabLoadError/TabLoadError.tsx","webpack:///./src/components/molecules/TabLoadError/index.ts","webpack:///./src/helpers/url.ts","webpack:///./src/modules/espn/shop/types.ts","webpack:///./src/modules/espn/shop/view/ShopView.styles.css","webpack:///./src/modules/espn/shop/view/ProductDetailView/ProductDetailView.styles.css","webpack:///./src/modules/espn/shop/view/components/ProductSummaryCard/ProductSummaryCard.styles.css","webpack:///./src/modules/espn/shop/view/components/BrowseCard/BrowseCard.styles.css","webpack:///./src/modules/espn/shop/view/components/ShopPromoView/ShopPromoView.styles.css","webpack:///./src/modules/espn/shop/view/components/ShopSection/ShopSection.styles.css","webpack:///./src/modules/espn/shop/view/ShopView.styles.css?d965","webpack:///./src/modules/espn/shop/view/components/ShopSection/ShopSection.styles.css?01f8","webpack:///./src/modules/espn/shop/view/components/ProductSummaryCard/ProductSummaryCard.styles.css?a178","webpack:///./src/modules/espn/shop/view/components/ProductSummaryCard/ProductSummaryCard.tsx","webpack:///./src/modules/espn/shop/view/components/BrowseCard/BrowseCard.styles.css?129c","webpack:///./src/modules/espn/shop/view/components/BrowseCard/BrowseCard.tsx","webpack:///./src/modules/espn/shop/view/components/ShopSection/ShopSection.tsx","webpack:///./src/modules/espn/shop/view/ProductDetailView/ProductDetailView.styles.css?946c","webpack:///./src/modules/espn/shop/view/ProductDetailView/ProductDetailView.tsx","webpack:///./src/modules/espn/shop/view/components/ShopPromoView/ShopPromoView.styles.css?cea1","webpack:///./src/modules/espn/shop/view/components/ShopPromoView/ShopPromoView.tsx","webpack:///./src/modules/espn/shop/view/ShopView.tsx","webpack:///./src/modules/espn/shop/view/index.ts"],"names":["Image","React","Component","constructor","props","super","_defineProperty","failed","this","setState","render","state","console","warn","src","createElement","_extends","alt","onError","handleError","ScrollableContainer","BaseButton","options","locals","ActionButton","children","focused","_focused","focusKey","_focusKey","parentFocusKey","_parentFocusKey","preferredChildFocusKey","_preferredChildFocusKey","forgetLastFocusedChild","_forgetLastFocusedChild","trackChildren","_trackChildren","autoRestoreFocus","_autoRestoreFocus","blockNavigationOut","_blockNavigationOut","hasFocusedChild","_hasFocusedChild","focusable","_focusable","onEnterPress","_onEnterPress","onEnterRelease","_onEnterRelease","onBackPress","_onBackPress","onArrowPress","_onArrowPress","onBecameFocused","_onBecameFocused","onBecameBlurred","_onBecameBlurred","realFocusKey","_realFocusKey","setFocus","_setFocus","navigateByDirection","_navigateByDirection","stealFocus","_stealFocus","onUpdateFocus","_onUpdateFocus","onUpdateHasFocusedChild","_onUpdateHasFocusedChild","buttonProps","className","withFocusable","calculateMaxHeight","element","rect","getBoundingClientRect","style","maxHeight","window","innerHeight","top","useMaxHeightToBottom","elementRef","useRef","handleResize","useCallback","current","useEffect","addEventListener","removeEventListener","setupMaxHeightToBottom","getElement","___CSS_LOADER_EXPORT___","push","module","i","TabLoadErrorView","data-focused","setImageDimensions","url","width","height","urlObj","URL","searchParams","set","toString","err","isShopProduct","item","type","ProductSummaryCard","product","image","name","price","salePrice","displayClearance","displaySale","isOnSale","Boolean","href","data-has-image","displayRetail","BrowseCardView","browseCard","caption","detail","backgroundImage","backgroundSize","backgroundPosition","backgroundClip","ShopSection","section","sectionIndex","onItemClick","_section$items","scrollToFocusedElement","useScrollableContainer","layout","offsetTop","title","items","map","itemIndex","FocusableItem","key","BrowseCard","FocusableProductDetail","_product$detail","_detail$link","bgImage","getBackgroundImage","hostname","includes","undefined","description","qrCode","link","text","ProductDetailView","_props$product$detail","disclaimer","FocusablePromoView","_promo$detail","_promo$image","_promo$detail2","_promo$detail3","_promo$detail4","_promo$detail4$link","promo","promoData","ShopPromoViewWrapper","_props$promoData$deta","ShopView","viewModel","clearTabLoadFailure","d","SDK","getMaestroEventViewModel","deliverFocus","container","scrollTop","selectedItem","selectedShopSection","selectedItemFocusKey","card","trackItemClick","navigation","setTimeout","sections","errorState","closeProductDetail","length","index","openItemDetail","ShopPromoView","trackPromoEnterPress","e","maxHeightCleanup","vm","shopViewModel","value","isDataLoading","Error","componentDidMount","sectionsListener","subscribe","isDataLoadingListener","errorStateListener","promoDataListener","init","componentWillUnmount","cleanup","scrollableContainerRef","containerTopOffset","data-has-product-selected","data-has-error","ref","setContainerRef","renderContent"],"mappings":"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","file":"5.maestro-web-sdk.esm.js","sourcesContent":["import React from 'react';\nimport { ImgHTMLAttributes } from 'react';\n\ninterface ImageProps extends ImgHTMLAttributes<HTMLImageElement> {}\n\nclass Image extends React.Component<ImageProps> {\n state = {\n failed: false,\n };\n\n constructor(props: ImageProps) {\n super(props);\n }\n\n handleError = () => {\n this.setState({ failed: true });\n };\n\n render() {\n if (this.state.failed) {\n console.warn('Image failed to load:', this.props.src);\n return null;\n }\n\n if (!this.props.src) {\n console.warn('Image source is empty');\n return null;\n }\n\n return (\n <img\n alt={this.props.alt || 'Image'}\n {...this.props}\n onError={this.handleError}\n />\n );\n }\n}\n\nexport default Image;\n","import ScrollableContainer from './ScrollableContainer';\n\nexport { ScrollableContainerContext } from './ScrollableContainer';\nexport { useScrollableContainer } from './useScrollableContainer';\nexport { default as FocusableItem } from './FocusableItem';\nexport type { ScrollableContainerContextType } from './ScrollableContainer';\nexport default ScrollableContainer;\n","import BaseButton from './BaseButton';\n\nexport default BaseButton;\n","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--6-1!./ActionButton.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import BaseButton from '@/components/atoms/BaseButton';\nimport './ActionButton.styles.css';\nimport {\n withFocusable,\n WithFocusableProps,\n} from '@/external/spatial-navigation';\nimport React from 'react';\n\ntype SpatialNavigationInjectedProps = {\n realFocusKey?: string;\n setFocus?: (focusKey: string) => void;\n navigateByDirection?: (...args: any[]) => any;\n stealFocus?: () => void;\n onUpdateFocus?: (focused: boolean) => void;\n onUpdateHasFocusedChild?: (hasFocusedChild: boolean) => void;\n};\n\ntype Props = React.PropsWithChildren<\n React.ButtonHTMLAttributes<HTMLButtonElement> &\n WithFocusableProps &\n SpatialNavigationInjectedProps\n>;\n\nclass ActionButton extends React.Component<Props, {}> {\n render() {\n const {\n children,\n // spatial-navigation props (must not hit DOM)\n focused: _focused,\n focusKey: _focusKey,\n parentFocusKey: _parentFocusKey,\n preferredChildFocusKey: _preferredChildFocusKey,\n forgetLastFocusedChild: _forgetLastFocusedChild,\n trackChildren: _trackChildren,\n autoRestoreFocus: _autoRestoreFocus,\n blockNavigationOut: _blockNavigationOut,\n hasFocusedChild: _hasFocusedChild,\n focusable: _focusable,\n onEnterPress: _onEnterPress,\n onEnterRelease: _onEnterRelease,\n onBackPress: _onBackPress,\n onArrowPress: _onArrowPress,\n onBecameFocused: _onBecameFocused,\n onBecameBlurred: _onBecameBlurred,\n // injected/internal props (also must not hit DOM)\n realFocusKey: _realFocusKey,\n setFocus: _setFocus,\n navigateByDirection: _navigateByDirection,\n stealFocus: _stealFocus,\n onUpdateFocus: _onUpdateFocus,\n onUpdateHasFocusedChild: _onUpdateHasFocusedChild,\n ...buttonProps\n } = this.props;\n\n return (\n <BaseButton className=\"action-button T05_ALT\" {...buttonProps}>\n {children}\n </BaseButton>\n );\n }\n}\n\nexport default withFocusable()(ActionButton);\n","import ActionButton from './ActionButton';\n\nexport default ActionButton;\n","import { useCallback, useEffect, useRef } from 'react';\n\n/**\n * Calculates and sets maxHeight on an element to fill remaining viewport height.\n * Updates on window resize.\n */\nfunction calculateMaxHeight(element: HTMLElement | null): void {\n if (!element) return;\n const rect = element.getBoundingClientRect();\n element.style.maxHeight = `${window.innerHeight - rect.top}px`;\n}\n\n/**\n * Hook for functional components.\n * Returns a ref callback that sets up maxHeight calculation with resize listener.\n */\nexport function useMaxHeightToBottom(): (\n element: HTMLDivElement | null\n) => void {\n const elementRef = useRef<HTMLDivElement | null>(null);\n\n const handleResize = useCallback(() => {\n calculateMaxHeight(elementRef.current);\n }, []);\n\n useEffect(() => {\n window.addEventListener('resize', handleResize);\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n }, [handleResize]);\n\n const refCallback = useCallback((element: HTMLDivElement | null) => {\n elementRef.current = element;\n calculateMaxHeight(element);\n }, []);\n\n return refCallback;\n}\n\n/**\n * Utility for class components.\n * Call in componentDidMount, returns cleanup function for componentWillUnmount.\n */\nexport function setupMaxHeightToBottom(\n getElement: () => HTMLElement | null\n): () => void {\n const handleResize = () => {\n calculateMaxHeight(getElement());\n };\n\n // Initial calculation\n handleResize();\n\n window.addEventListener('resize', handleResize);\n\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n}\n\nexport default useMaxHeightToBottom;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".tab-load-error {\\n display: block;\\n padding: 24px;\\n background-color: var(--sdk-surface4);\\n}\\n\\n.tab-load-error h3 {\\n margin: 0;\\n font-family: var(--sdk-font-headline);\\n}\\n\\n.tab-load-error p {\\n margin: 16px 0;\\n height: 86px;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/molecules/TabLoadError/TabLoadError.styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,cAAc;EACd,aAAa;EACb,qCAAqC;AACvC;;AAEA;EACE,SAAS;EACT,qCAAqC;AACvC;;AAEA;EACE,cAAc;EACd,YAAY;AACd\",\"sourcesContent\":[\".tab-load-error {\\n display: block;\\n padding: 24px;\\n background-color: var(--sdk-surface4);\\n}\\n\\n.tab-load-error h3 {\\n margin: 0;\\n font-family: var(--sdk-font-headline);\\n}\\n\\n.tab-load-error p {\\n margin: 16px 0;\\n height: 86px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".action-button {\\n padding: 23px 0;\\n background-color: var(--sdk-surface5);\\n color: var(--sdk-text100);\\n}\\n\\n.action-button:hover,\\n.action-button[data-focused='true'] {\\n background-color: var(--sdk-accentPrimary);\\n color: var(--sdk-text500);\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/molecules/ActionButton/ActionButton.styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,eAAe;EACf,qCAAqC;EACrC,yBAAyB;AAC3B;;AAEA;;EAEE,0CAA0C;EAC1C,yBAAyB;AAC3B\",\"sourcesContent\":[\".action-button {\\n padding: 23px 0;\\n background-color: var(--sdk-surface5);\\n color: var(--sdk-text100);\\n}\\n\\n.action-button:hover,\\n.action-button[data-focused='true'] {\\n background-color: var(--sdk-accentPrimary);\\n color: var(--sdk-text500);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--6-1!./TabLoadError.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import {\n withFocusable,\n WithFocusableProps,\n} from '@/external/spatial-navigation';\nimport React from 'react';\nimport ActionButton from '../ActionButton';\nimport './TabLoadError.styles.css';\n\nclass TabLoadErrorView extends React.Component<WithFocusableProps> {\n render() {\n const { focused } = this.props;\n\n return (\n <div data-focused={focused} className=\"tab-load-error focus-ring\">\n <h3 className=\"T70\">We dropped the ball.</h3>\n <p className=\"T20\">\n {\"We're having trouble loading that for you. Please try again.\"}\n </p>\n <ActionButton\n data-focused={focused}\n onEnterPress={this.props.onEnterPress}\n >\n Try Again\n </ActionButton>\n </div>\n );\n }\n}\n\nexport default withFocusable()(TabLoadErrorView);\n","import TabLoadErrorView from './TabLoadError';\n\nexport default TabLoadErrorView;\n","export const setImageDimensions = (\n url: string,\n width: number,\n height: number\n) => {\n try {\n const urlObj = new URL(url);\n urlObj.searchParams.set('w', width.toString());\n urlObj.searchParams.set('h', height.toString());\n return urlObj.toString();\n } catch (err) {\n console.warn('Malformed URL:', url, err);\n return url; // Return the original URL if it cannot be parsed\n }\n};\n","/**\n * Shop module type definitions\n * Based on ESPN Shop API structure\n */\n\n/**\n * Image reference\n */\nexport interface IShopImage {\n /** Image URL */\n href?: string;\n /** Image width */\n width?: number;\n /** Image height */\n height?: number;\n}\n\n/**\n * Logo reference (same structure as image)\n */\nexport interface IShopLogo {\n /** Logo URL */\n href?: string;\n /** Logo width */\n width?: number;\n /** Logo height */\n height?: number;\n}\n\n/**\n * Link reference\n */\nexport interface IShopLink {\n /** Link URL */\n href?: string;\n /** Link text */\n text?: string;\n /** Link relations (e.g., [\"ictv\", \"fanatics\", \"index\", \"team\"]) */\n rel?: string[];\n}\n\n/**\n * Price information for a product\n */\nexport interface IShopPrice {\n /** Retail price display string (e.g., \"$29.99\") */\n displayRetail?: string;\n /** Sale price display string (e.g., \"$19.99\") - optional */\n displaySale?: string;\n /** Clearance price display string (e.g., \"$14.99\") - optional */\n displayClearance?: string;\n}\n\n/**\n * Product detail information shown in detail view\n */\nexport interface IShopDetail {\n /** Title for the detail view */\n title?: string;\n /** Description (optional, used for browse cards) */\n description?: string;\n /** Link information */\n link?: IShopLink;\n /** Background image URL */\n backgroundImage?: string;\n /** QR code image URL */\n qrCode?: string;\n /** Disclaimer text */\n disclaimer?: string;\n}\n\n/**\n * Product item in a shop section\n */\nexport interface IShopProduct {\n /** Item type discriminator */\n type?: 'product';\n /** Product name */\n name?: string;\n /** Product image */\n image?: IShopImage;\n /** Price information */\n price?: IShopPrice;\n /** Detail view information */\n detail?: IShopDetail;\n}\n\n/**\n * Browse card item (Want More?) in a shop section\n */\nexport interface IShopBrowseCard {\n /** Item type discriminator */\n type?: 'browse';\n /** Browse card name */\n name?: string;\n /** Caption text (e.g., \"Browse all Canadiens merch\") */\n caption?: string;\n /** Team/League/Event logo */\n image?: IShopImage;\n /** Detail view information */\n detail?: IShopDetail;\n}\n\n/**\n * Union type for all shop items\n */\nexport type IShopItem = IShopProduct | IShopBrowseCard;\n\n/**\n * Section product information (team/league info)\n */\nexport interface IShopSectionProduct {\n /** Product/Team ID */\n id?: string;\n /** Short display name (e.g., \"Canadiens\") */\n shortDisplayName?: string;\n /** Logo reference */\n logo?: IShopLogo;\n /** Type (e.g., \"team\") */\n type?: string;\n /** Link information */\n link?: IShopLink;\n /** Background image URL */\n backgroundImage?: string;\n}\n\n/**\n * Shop section containing a title and list of items\n */\nexport interface IShopSection {\n /** Section title (e.g., \"Shop Canadiens Merch\") */\n title?: string;\n /** Section product/team information */\n product?: IShopSectionProduct;\n /** Array of products or browse cards */\n items?: IShopItem[];\n}\n\nexport type IShopDefaultItem = {\n image?: {\n href?: string;\n width?: number;\n height?: number;\n };\n type?: string;\n detail?: {\n title?: string;\n link?: {\n href?: string;\n text?: string;\n };\n backgroundImage?: string;\n qrCode?: string;\n disclaimer?: string;\n };\n};\n\n/**\n * Shop container with sections\n */\nexport interface IShopContainer {\n /** Array of shop sections */\n sections?: IShopSection[];\n defaultItem?: IShopDefaultItem;\n}\n\n/**\n * Main shop API response\n */\nexport interface IShopResponse {\n /** Array of shop containers (typically one) */\n shop?: IShopContainer[];\n}\n\nexport const isShopProduct = (item: IShopItem): item is IShopProduct => {\n return item.type === 'product';\n};\n\nexport interface IShopViewModel {\n cleanup(): void;\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".shop-view {\\n display: block;\\n overflow-y: auto;\\n scrollbar-width: none;\\n scroll-behavior: smooth;\\n overscroll-behavior: contain;\\n margin-top: 60px;\\n}\\n\\n.shop-view::-webkit-scrollbar {\\n display: none;\\n}\\n\\n.shop-bottom-padding {\\n height: 50vh;\\n}\\n\\n.shop-empty-state {\\n display: block;\\n text-align: center;\\n padding: 60px 20px;\\n color: #ffffff;\\n font-size: 18px;\\n}\\n\\n.shop-sections {\\n display: block;\\n}\\n\\n.scrollable-container[data-has-product-selected='true']::before,\\n.scrollable-container[data-has-product-selected='true']::after,\\n.scrollable-container[data-has-error='true']::after,\\n.scrollable-container[data-has-error='true']::before {\\n background: none;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/modules/espn/shop/view/ShopView.styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,cAAc;EACd,gBAAgB;EAChB,qBAAqB;EACrB,uBAAuB;EACvB,4BAA4B;EAC5B,gBAAgB;AAClB;;AAEA;EACE,aAAa;AACf;;AAEA;EACE,YAAY;AACd;;AAEA;EACE,cAAc;EACd,kBAAkB;EAClB,kBAAkB;EAClB,cAAc;EACd,eAAe;AACjB;;AAEA;EACE,cAAc;AAChB;;AAEA;;;;EAIE,gBAAgB;AAClB\",\"sourcesContent\":[\".shop-view {\\n display: block;\\n overflow-y: auto;\\n scrollbar-width: none;\\n scroll-behavior: smooth;\\n overscroll-behavior: contain;\\n margin-top: 60px;\\n}\\n\\n.shop-view::-webkit-scrollbar {\\n display: none;\\n}\\n\\n.shop-bottom-padding {\\n height: 50vh;\\n}\\n\\n.shop-empty-state {\\n display: block;\\n text-align: center;\\n padding: 60px 20px;\\n color: #ffffff;\\n font-size: 18px;\\n}\\n\\n.shop-sections {\\n display: block;\\n}\\n\\n.scrollable-container[data-has-product-selected='true']::before,\\n.scrollable-container[data-has-product-selected='true']::after,\\n.scrollable-container[data-has-error='true']::after,\\n.scrollable-container[data-has-error='true']::before {\\n background: none;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".product-detail-view-wrapper > *:first-child {\\n margin-bottom: 16px;\\n}\\n\\n/* Card */\\n.product-detail-card {\\n display: inline-block;\\n padding: 24px;\\n text-align: center;\\n box-sizing: border-box;\\n box-shadow: 0px 0px 100px 0px var(--sdk-surface1);\\n width: 100%;\\n}\\n\\n/* Title */\\n.product-detail-title {\\n margin-bottom: 32px;\\n font-family: var(--sdk-font-headline);\\n}\\n\\n/* Mini Product Card Container */\\n.product-detail-product {\\n margin-bottom: 32px;\\n}\\n\\n/* Override ProductSummaryCard styles when inside detail view */\\n.product-detail-product .product-summary-card,\\n.product-detail-product .browse-card {\\n text-align: left;\\n background-color: #ffffff14;\\n background-image: none !important;\\n padding: 16px;\\n}\\n\\n.product-detail-product .browse-card {\\n direction: rtl;\\n}\\n\\n.product-detail-product .browse-card .browse-card-content {\\n direction: ltr;\\n}\\n\\n.product-detail-product .browse-card .browse-card-logo-image {\\n margin-left: 0;\\n margin-right: 24px;\\n width: calc(20% - 24px);\\n}\\n\\n.product-detail-product\\n .product-summary-card\\n .product-summary-card-image-container {\\n width: 20%;\\n}\\n\\n.product-detail-product .product-summary-card .product-summary-card-content {\\n width: 80%;\\n padding: 6px 0px 6px 24px;\\n}\\n\\n.product-detail-product .product-summary-card-title {\\n -webkit-line-clamp: 2;\\n max-height: calc(1.3em * 2); /* line-height * 3 lines */\\n}\\n\\n/* QR Code Container */\\n.product-detail-qr {\\n background-color: var(--sdk-highlightPrimary);\\n border-radius: 24px;\\n margin: 32px 30% 28px 30%;\\n overflow: hidden;\\n}\\n\\n.product-detail-qr-image {\\n width: 100%;\\n height: 100%;\\n object-fit: contain;\\n}\\n\\n/* Instruction Text */\\n.product-detail-instruction {\\n margin-bottom: 24px;\\n font-family: var(--sdk-font-headline);\\n}\\n\\n.product-detail-disclaimer {\\n text-align: center;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/modules/espn/shop/view/ProductDetailView/ProductDetailView.styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,mBAAmB;AACrB;;AAEA,SAAS;AACT;EACE,qBAAqB;EACrB,aAAa;EACb,kBAAkB;EAClB,sBAAsB;EACtB,iDAAiD;EACjD,WAAW;AACb;;AAEA,UAAU;AACV;EACE,mBAAmB;EACnB,qCAAqC;AACvC;;AAEA,gCAAgC;AAChC;EACE,mBAAmB;AACrB;;AAEA,+DAA+D;AAC/D;;EAEE,gBAAgB;EAChB,2BAA2B;EAC3B,iCAAiC;EACjC,aAAa;AACf;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;EACd,kBAAkB;EAClB,uBAAuB;AACzB;;AAEA;;;EAGE,UAAU;AACZ;;AAEA;EACE,UAAU;EACV,yBAAyB;AAC3B;;AAEA;EACE,qBAAqB;EACrB,2BAA2B,EAAE,0BAA0B;AACzD;;AAEA,sBAAsB;AACtB;EACE,6CAA6C;EAC7C,mBAAmB;EACnB,yBAAyB;EACzB,gBAAgB;AAClB;;AAEA;EACE,WAAW;EACX,YAAY;EACZ,mBAAmB;AACrB;;AAEA,qBAAqB;AACrB;EACE,mBAAmB;EACnB,qCAAqC;AACvC;;AAEA;EACE,kBAAkB;AACpB\",\"sourcesContent\":[\".product-detail-view-wrapper > *:first-child {\\n margin-bottom: 16px;\\n}\\n\\n/* Card */\\n.product-detail-card {\\n display: inline-block;\\n padding: 24px;\\n text-align: center;\\n box-sizing: border-box;\\n box-shadow: 0px 0px 100px 0px var(--sdk-surface1);\\n width: 100%;\\n}\\n\\n/* Title */\\n.product-detail-title {\\n margin-bottom: 32px;\\n font-family: var(--sdk-font-headline);\\n}\\n\\n/* Mini Product Card Container */\\n.product-detail-product {\\n margin-bottom: 32px;\\n}\\n\\n/* Override ProductSummaryCard styles when inside detail view */\\n.product-detail-product .product-summary-card,\\n.product-detail-product .browse-card {\\n text-align: left;\\n background-color: #ffffff14;\\n background-image: none !important;\\n padding: 16px;\\n}\\n\\n.product-detail-product .browse-card {\\n direction: rtl;\\n}\\n\\n.product-detail-product .browse-card .browse-card-content {\\n direction: ltr;\\n}\\n\\n.product-detail-product .browse-card .browse-card-logo-image {\\n margin-left: 0;\\n margin-right: 24px;\\n width: calc(20% - 24px);\\n}\\n\\n.product-detail-product\\n .product-summary-card\\n .product-summary-card-image-container {\\n width: 20%;\\n}\\n\\n.product-detail-product .product-summary-card .product-summary-card-content {\\n width: 80%;\\n padding: 6px 0px 6px 24px;\\n}\\n\\n.product-detail-product .product-summary-card-title {\\n -webkit-line-clamp: 2;\\n max-height: calc(1.3em * 2); /* line-height * 3 lines */\\n}\\n\\n/* QR Code Container */\\n.product-detail-qr {\\n background-color: var(--sdk-highlightPrimary);\\n border-radius: 24px;\\n margin: 32px 30% 28px 30%;\\n overflow: hidden;\\n}\\n\\n.product-detail-qr-image {\\n width: 100%;\\n height: 100%;\\n object-fit: contain;\\n}\\n\\n/* Instruction Text */\\n.product-detail-instruction {\\n margin-bottom: 24px;\\n font-family: var(--sdk-font-headline);\\n}\\n\\n.product-detail-disclaimer {\\n text-align: center;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/* Product Summary Card - TV-compatible CSS (no flex/grid) */\\n\\n.product-summary-card {\\n position: relative;\\n background-color: var(--sdk-surface4);\\n overflow: hidden;\\n vertical-align: middle;\\n padding: 24px;\\n width: 100%;\\n height: 192px;\\n box-sizing: border-box;\\n text-align: left;\\n}\\n\\n/* Helper for vertical centering */\\n.product-summary-card::before {\\n content: '';\\n display: inline-block;\\n height: 100%;\\n vertical-align: middle;\\n}\\n\\n/* Product Image Container - 144x144 */\\n.product-summary-card-image-container {\\n display: inline-block;\\n vertical-align: middle;\\n width: 20%;\\n max-height: 144px;\\n overflow: hidden;\\n line-height: 0;\\n}\\n\\n.product-summary-card-image {\\n width: 100%;\\n height: 100%;\\n object-fit: contain;\\n border-radius: 8px;\\n}\\n\\n/* Text Content Container */\\n.product-summary-card-content {\\n display: inline-block;\\n vertical-align: middle;\\n padding: 16px 0 16px 24px;\\n white-space: normal;\\n width: 80%;\\n box-sizing: border-box;\\n}\\n\\n.product-summary-card-content[data-has-image='false'] {\\n width: 100%;\\n}\\n\\n/* Product Title - max 3 lines with ellipsis */\\n.product-summary-card-title {\\n padding-bottom: 4px;\\n /* Line clamp for 3 lines */\\n display: -webkit-box;\\n -webkit-line-clamp: 3;\\n -webkit-box-orient: vertical;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n /* Fallback for non-webkit browsers */\\n max-height: calc(1.3em * 3); /* line-height * 3 lines */\\n}\\n\\n/* Price Container */\\n.product-summary-card-price-container {\\n white-space: nowrap;\\n}\\n\\n/* Original Price (crossed out when on sale) */\\n.product-summary-card-price-original {\\n text-decoration: line-through;\\n opacity: 0.6;\\n margin-right: 4px;\\n}\\n\\n/* Sale/Clearance Price */\\n.product-summary-card-price-sale {\\n margin-right: 8px;\\n}\\n\\n/* Sale/Clearance Badge */\\n.product-summary-card-badge {\\n display: inline-block;\\n background-color: var(--sdk-alertError);\\n padding-inline: 4px;\\n border-radius: 4px;\\n}\\n\\n.product-summary-card-qr-image {\\n object-fit: contain;\\n position: absolute;\\n bottom: 16px;\\n right: 16px;\\n width: 6%;\\n height: auto;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/modules/espn/shop/view/components/ProductSummaryCard/ProductSummaryCard.styles.css\"],\"names\":[],\"mappings\":\"AAAA,4DAA4D;;AAE5D;EACE,kBAAkB;EAClB,qCAAqC;EACrC,gBAAgB;EAChB,sBAAsB;EACtB,aAAa;EACb,WAAW;EACX,aAAa;EACb,sBAAsB;EACtB,gBAAgB;AAClB;;AAEA,kCAAkC;AAClC;EACE,WAAW;EACX,qBAAqB;EACrB,YAAY;EACZ,sBAAsB;AACxB;;AAEA,sCAAsC;AACtC;EACE,qBAAqB;EACrB,sBAAsB;EACtB,UAAU;EACV,iBAAiB;EACjB,gBAAgB;EAChB,cAAc;AAChB;;AAEA;EACE,WAAW;EACX,YAAY;EACZ,mBAAmB;EACnB,kBAAkB;AACpB;;AAEA,2BAA2B;AAC3B;EACE,qBAAqB;EACrB,sBAAsB;EACtB,yBAAyB;EACzB,mBAAmB;EACnB,UAAU;EACV,sBAAsB;AACxB;;AAEA;EACE,WAAW;AACb;;AAEA,8CAA8C;AAC9C;EACE,mBAAmB;EACnB,2BAA2B;EAC3B,oBAAoB;EACpB,qBAAqB;EACrB,4BAA4B;EAC5B,gBAAgB;EAChB,uBAAuB;EACvB,qCAAqC;EACrC,2BAA2B,EAAE,0BAA0B;AACzD;;AAEA,oBAAoB;AACpB;EACE,mBAAmB;AACrB;;AAEA,8CAA8C;AAC9C;EACE,6BAA6B;EAC7B,YAAY;EACZ,iBAAiB;AACnB;;AAEA,yBAAyB;AACzB;EACE,iBAAiB;AACnB;;AAEA,yBAAyB;AACzB;EACE,qBAAqB;EACrB,uCAAuC;EACvC,mBAAmB;EACnB,kBAAkB;AACpB;;AAEA;EACE,mBAAmB;EACnB,kBAAkB;EAClB,YAAY;EACZ,WAAW;EACX,SAAS;EACT,YAAY;AACd\",\"sourcesContent\":[\"/* Product Summary Card - TV-compatible CSS (no flex/grid) */\\n\\n.product-summary-card {\\n position: relative;\\n background-color: var(--sdk-surface4);\\n overflow: hidden;\\n vertical-align: middle;\\n padding: 24px;\\n width: 100%;\\n height: 192px;\\n box-sizing: border-box;\\n text-align: left;\\n}\\n\\n/* Helper for vertical centering */\\n.product-summary-card::before {\\n content: '';\\n display: inline-block;\\n height: 100%;\\n vertical-align: middle;\\n}\\n\\n/* Product Image Container - 144x144 */\\n.product-summary-card-image-container {\\n display: inline-block;\\n vertical-align: middle;\\n width: 20%;\\n max-height: 144px;\\n overflow: hidden;\\n line-height: 0;\\n}\\n\\n.product-summary-card-image {\\n width: 100%;\\n height: 100%;\\n object-fit: contain;\\n border-radius: 8px;\\n}\\n\\n/* Text Content Container */\\n.product-summary-card-content {\\n display: inline-block;\\n vertical-align: middle;\\n padding: 16px 0 16px 24px;\\n white-space: normal;\\n width: 80%;\\n box-sizing: border-box;\\n}\\n\\n.product-summary-card-content[data-has-image='false'] {\\n width: 100%;\\n}\\n\\n/* Product Title - max 3 lines with ellipsis */\\n.product-summary-card-title {\\n padding-bottom: 4px;\\n /* Line clamp for 3 lines */\\n display: -webkit-box;\\n -webkit-line-clamp: 3;\\n -webkit-box-orient: vertical;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n /* Fallback for non-webkit browsers */\\n max-height: calc(1.3em * 3); /* line-height * 3 lines */\\n}\\n\\n/* Price Container */\\n.product-summary-card-price-container {\\n white-space: nowrap;\\n}\\n\\n/* Original Price (crossed out when on sale) */\\n.product-summary-card-price-original {\\n text-decoration: line-through;\\n opacity: 0.6;\\n margin-right: 4px;\\n}\\n\\n/* Sale/Clearance Price */\\n.product-summary-card-price-sale {\\n margin-right: 8px;\\n}\\n\\n/* Sale/Clearance Badge */\\n.product-summary-card-badge {\\n display: inline-block;\\n background-color: var(--sdk-alertError);\\n padding-inline: 4px;\\n border-radius: 4px;\\n}\\n\\n.product-summary-card-qr-image {\\n object-fit: contain;\\n position: absolute;\\n bottom: 16px;\\n right: 16px;\\n width: 6%;\\n height: auto;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/* Browse Card (Want More) - TV-compatible CSS (no flex/grid) */\\n\\n.browse-card {\\n position: relative;\\n display: block;\\n background-color: var(--sdk-surface4);\\n padding: 24px;\\n box-sizing: border-box;\\n text-align: left;\\n}\\n\\n.browse-card-content {\\n display: inline-block;\\n width: 80%;\\n vertical-align: middle;\\n}\\n\\n/* Tag Line */\\n.browse-card-tagline {\\n margin-bottom: 4px;\\n width: 85%;\\n}\\n\\n.browse-card-caption {\\n width: 85%;\\n}\\n\\n.browse-card-logo-image {\\n width: calc(20% - 12px);\\n height: 100%;\\n vertical-align: middle;\\n margin-left: 12px;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/modules/espn/shop/view/components/BrowseCard/BrowseCard.styles.css\"],\"names\":[],\"mappings\":\"AAAA,+DAA+D;;AAE/D;EACE,kBAAkB;EAClB,cAAc;EACd,qCAAqC;EACrC,aAAa;EACb,sBAAsB;EACtB,gBAAgB;AAClB;;AAEA;EACE,qBAAqB;EACrB,UAAU;EACV,sBAAsB;AACxB;;AAEA,aAAa;AACb;EACE,kBAAkB;EAClB,UAAU;AACZ;;AAEA;EACE,UAAU;AACZ;;AAEA;EACE,uBAAuB;EACvB,YAAY;EACZ,sBAAsB;EACtB,iBAAiB;AACnB\",\"sourcesContent\":[\"/* Browse Card (Want More) - TV-compatible CSS (no flex/grid) */\\n\\n.browse-card {\\n position: relative;\\n display: block;\\n background-color: var(--sdk-surface4);\\n padding: 24px;\\n box-sizing: border-box;\\n text-align: left;\\n}\\n\\n.browse-card-content {\\n display: inline-block;\\n width: 80%;\\n vertical-align: middle;\\n}\\n\\n/* Tag Line */\\n.browse-card-tagline {\\n margin-bottom: 4px;\\n width: 85%;\\n}\\n\\n.browse-card-caption {\\n width: 85%;\\n}\\n\\n.browse-card-logo-image {\\n width: calc(20% - 12px);\\n height: 100%;\\n vertical-align: middle;\\n margin-left: 12px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".shop-promo-view {\\n display: block;\\n text-align: center;\\n padding: 32px;\\n background-size: cover;\\n background-position: center;\\n background-repeat: no-repeat;\\n}\\n\\n.shop-promo-logo {\\n padding: 30px 24px;\\n}\\n\\n.shop-promo-qr-code {\\n border-radius: 24px;\\n margin: 32px 0 48px 0;\\n width: 100%;\\n max-width: 50%;\\n}\\n\\n.shop-promo-description {\\n margin: 0 17px;\\n}\\n\\n.promo-view-disclaimer {\\n margin-top: 24px;\\n text-align: center;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/modules/espn/shop/view/components/ShopPromoView/ShopPromoView.styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,cAAc;EACd,kBAAkB;EAClB,aAAa;EACb,sBAAsB;EACtB,2BAA2B;EAC3B,4BAA4B;AAC9B;;AAEA;EACE,kBAAkB;AACpB;;AAEA;EACE,mBAAmB;EACnB,qBAAqB;EACrB,WAAW;EACX,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,gBAAgB;EAChB,kBAAkB;AACpB\",\"sourcesContent\":[\".shop-promo-view {\\n display: block;\\n text-align: center;\\n padding: 32px;\\n background-size: cover;\\n background-position: center;\\n background-repeat: no-repeat;\\n}\\n\\n.shop-promo-logo {\\n padding: 30px 24px;\\n}\\n\\n.shop-promo-qr-code {\\n border-radius: 24px;\\n margin: 32px 0 48px 0;\\n width: 100%;\\n max-width: 50%;\\n}\\n\\n.shop-promo-description {\\n margin: 0 17px;\\n}\\n\\n.promo-view-disclaimer {\\n margin-top: 24px;\\n text-align: center;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".shop-section-title {\\n margin: 0;\\n margin-bottom: 0 !important;\\n padding-top: 24px;\\n padding-bottom: 0;\\n margin-bottom: 16px !important;\\n text-align: center;\\n position: sticky;\\n top: 0;\\n z-index: 1;\\n font-size: 21px;\\n}\\n\\n/* Layout for product cards - TV compatible (no flex/grid) */\\n.shop-section-items > * {\\n display: inline-block;\\n margin-bottom: 16px;\\n}\\n\\n.shop-item-placeholder {\\n display: inline-block;\\n vertical-align: top;\\n width: 200px;\\n height: 250px;\\n padding: 16px;\\n background-color: rgba(255, 255, 255, 0.1);\\n border-radius: 8px;\\n color: #ffffff;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/modules/espn/shop/view/components/ShopSection/ShopSection.styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,SAAS;EACT,2BAA2B;EAC3B,iBAAiB;EACjB,iBAAiB;EACjB,8BAA8B;EAC9B,kBAAkB;EAClB,gBAAgB;EAChB,MAAM;EACN,UAAU;EACV,eAAe;AACjB;;AAEA,4DAA4D;AAC5D;EACE,qBAAqB;EACrB,mBAAmB;AACrB;;AAEA;EACE,qBAAqB;EACrB,mBAAmB;EACnB,YAAY;EACZ,aAAa;EACb,aAAa;EACb,0CAA0C;EAC1C,kBAAkB;EAClB,cAAc;AAChB\",\"sourcesContent\":[\".shop-section-title {\\n margin: 0;\\n margin-bottom: 0 !important;\\n padding-top: 24px;\\n padding-bottom: 0;\\n margin-bottom: 16px !important;\\n text-align: center;\\n position: sticky;\\n top: 0;\\n z-index: 1;\\n font-size: 21px;\\n}\\n\\n/* Layout for product cards - TV compatible (no flex/grid) */\\n.shop-section-items > * {\\n display: inline-block;\\n margin-bottom: 16px;\\n}\\n\\n.shop-item-placeholder {\\n display: inline-block;\\n vertical-align: top;\\n width: 200px;\\n height: 250px;\\n padding: 16px;\\n background-color: rgba(255, 255, 255, 0.1);\\n border-radius: 8px;\\n color: #ffffff;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--6-1!./ShopView.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../node_modules/css-loader/dist/cjs.js??ref--6-1!./ShopSection.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../node_modules/css-loader/dist/cjs.js??ref--6-1!./ProductSummaryCard.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from 'react';\nimport './ProductSummaryCard.styles.css';\nimport {\n withFocusable,\n WithFocusableProps,\n} from '@/external/spatial-navigation';\nimport { Direction, Layout } from '@/external/spatial-navigation/utils';\n\nimport { IShopProduct } from '../../../types';\nimport Image from '@/components/atoms/Image';\n\n// QR code image as base64 data URI for SDK bundle\nconst productSummaryQRCode =\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAACHElEQVR4Ae2YgXHCMAxFf3oM0A3qbsAGDRuwQWGC0gmgEwATkG7ABqQb0AlwN0gnSKXDpWqwiQU5IHe8O52xY8U/toyVoIwjRcPwPWMGvsOVc/UCE55GUe+RWU+/IkmSAg1DQxtPM7etZCfJAy4Mi25VDHZCF0g8T7NBPHMKgxn5jej3i8LPkl8PWoHYijOI516UBg3RiiXeTS9N9Veg3yvZ2tPOS9lHmA+yiae9SzYN+BRSU4dE5ahn7etH8Tao8dsE/IIO7u9s56NaYrrxlDcPWV/plzq/KZRoY5CXJsXfhojFOL8ulHSU/d/I3iGWIJKcbIhtfKlQCYyMV5+fpSLDEcQKHFP8PHvan2r8OPYWnvboEIkVmOI4DNkAJ9Des5iYQ7db80oZS+Np3FlJQhdcVqKaQd7l7v0lVfhxMjyDFhpoU+qYOL9JqWNzSEerN4lkCX8wp2gw9/MRK3AeyEoy7AvktCwTdb6eirrF/51eNCHwVxBnMbxxcnd87UHtPNtL4TOoCqQ+Q0SijUFOUBc4/mRRo81mPl1pcSa02cyork+5fRk3ool/56Juy8q3nkNZUqzAbiBN973oD8jGop7J10onbiWuW7JHhARWnmYd+MShTtVPQWriGZRPY3Dhw9uFyE7ToSW20FGI0or2b08/Gz1O5Vy8fTzS0rpk4ZFmdS9HDB1rp0Dj8JHpyzdNtWMMKZoXePuIfhZ+AArh47ArZrulAAAAAElFTkSuQmCC';\n\nexport type ProductSummaryCardProps = {\n product: IShopProduct;\n onEnterPress?: () => void;\n onArrowPress?: (direction: Direction) => void;\n onBecameFocused?: (layout: Layout) => void;\n};\n\nclass ProductSummaryCard extends React.Component<\n ProductSummaryCardProps & WithFocusableProps\n> {\n render() {\n const { product, focused } = this.props;\n const { image, name, price } = product;\n\n // Determine if this is a sale or clearance item\n const salePrice = price?.displayClearance || price?.displaySale;\n const isOnSale = !!salePrice;\n\n return (\n <div className=\"product-summary-card focus-ring\" data-focused={focused}>\n {/* Product Image */}\n {Boolean(image?.href) && (\n <div className=\"product-summary-card-image-container\">\n <Image\n src={image!.href}\n alt={name || 'Product'}\n className=\"product-summary-card-image\"\n />\n </div>\n )}\n\n {/* Text Content Container */}\n <div\n className=\"product-summary-card-content\"\n data-has-image={!!image?.href}\n >\n {/* Product Title - max 3 lines with ellipsis */}\n <div className=\"product-summary-card-title T05_ALT\">\n {name || 'Product Name'}\n </div>\n\n {/* Price */}\n <div className=\"product-summary-card-price-container\">\n {isOnSale ? (\n <div>\n <span className=\"product-summary-card-price-original T02 TEXT_200\">\n {price?.displayRetail || '$0.00'}\n </span>\n <span className=\"product-summary-card-price-sale T02 TEXT_200\">\n {salePrice}\n </span>\n <span className=\"product-summary-card-badge T02 FONT_BOLD\">\n SALE\n </span>\n </div>\n ) : (\n <span className=\"product-summary-card-price T02 TEXT_200\">\n {price?.displayRetail || '$0.00'}\n </span>\n )}\n </div>\n </div>\n\n {/* QR Code Image - shown on focus */}\n {focused && (\n <Image\n src={productSummaryQRCode}\n alt=\"QR Code\"\n className=\"product-summary-card-qr-image\"\n />\n )}\n </div>\n );\n }\n}\n\nexport default withFocusable<ProductSummaryCardProps>()(ProductSummaryCard);\n","import api from \"!../../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../node_modules/css-loader/dist/cjs.js??ref--6-1!./BrowseCard.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from 'react';\nimport './BrowseCard.styles.css';\nimport {\n withFocusable,\n WithFocusableProps,\n} from '@/external/spatial-navigation';\nimport { IShopBrowseCard } from '../../../types';\nimport Image from '@/components/atoms/Image';\n\nexport type BrowseCardProps = {\n browseCard: IShopBrowseCard;\n};\n\nexport class BrowseCardView extends React.Component<\n BrowseCardProps & WithFocusableProps\n> {\n render() {\n const { browseCard, focused } = this.props;\n const { name, caption, image, detail } = browseCard;\n\n return (\n <div\n className=\"browse-card focus-ring\"\n data-focused={focused}\n style={{\n backgroundImage: detail?.backgroundImage\n ? `url(${detail.backgroundImage})`\n : 'none',\n backgroundSize: 'cover',\n backgroundPosition: 'center',\n backgroundClip: 'padding-box',\n }}\n >\n <div className=\"browse-card-content\">\n {/* Tag Line */}\n {!!name && (\n <div className=\"browse-card-tagline T20 FONT_BOLD\">{name}</div>\n )}\n\n {/* Contextual Copy */}\n <div className=\"browse-card-caption T05_ALT\">\n {caption || 'Browse all merch'}\n </div>\n </div>\n\n {/* Team/League/Event Logo */}\n {image?.href && (\n <Image\n src={image.href}\n width={72}\n height={72}\n alt={name || 'Logo'}\n className=\"browse-card-logo-image\"\n />\n )}\n </div>\n );\n }\n}\n\nexport default withFocusable<BrowseCardProps>()(BrowseCardView);\n","import React from 'react';\nimport './ShopSection.styles.css';\nimport { IShopBrowseCard, IShopProduct, IShopSection } from '../../../types';\nimport ProductSummaryCard from '../ProductSummaryCard';\nimport { Direction, Layout } from '@/external/spatial-navigation/utils';\nimport { useScrollableContainer } from '@/components/core/ScrollableContainer';\nimport FocusableItem from '@/components/core/ScrollableContainer/FocusableItem';\nimport BrowseCard from '../BrowseCard';\n\nexport type ShopSectionProps = {\n sectionIndex: number;\n section: IShopSection;\n onArrowPress: (direction: Direction) => void;\n onItemClick: (\n item: IShopProduct | IShopBrowseCard,\n section: IShopSection,\n focusKey: string\n ) => void;\n};\n\nconst ShopSection: React.FC<ShopSectionProps> = ({\n section,\n sectionIndex,\n onArrowPress,\n onItemClick,\n}) => {\n const { scrollToFocusedElement } = useScrollableContainer();\n\n const onBecameFocused = (layout: Layout) => {\n scrollToFocusedElement(layout, {\n offsetTop: 40,\n });\n };\n\n const onEnterPress = (\n item: IShopProduct | IShopBrowseCard,\n section: IShopSection,\n focusKey: string\n ) => () => {\n onItemClick(item, section, focusKey);\n };\n\n return (\n <div className=\"shop-section\">\n <h2 className=\"shop-section-title TEXT_200\">{section.title}</h2>\n <div className=\"shop-section-items\">\n {section.items?.map((item, itemIndex) => {\n const focusKey = `shop-section-${sectionIndex}-item-${itemIndex}`;\n if (item.type === 'product') {\n return (\n <FocusableItem key={itemIndex}>\n <ProductSummaryCard\n product={item}\n onEnterPress={onEnterPress(item, section, focusKey)}\n onArrowPress={onArrowPress}\n onBecameFocused={onBecameFocused}\n focusKey={focusKey}\n />\n </FocusableItem>\n );\n } else if (item.type === 'browse') {\n return (\n <FocusableItem key={itemIndex}>\n <BrowseCard\n key={itemIndex}\n browseCard={item}\n onArrowPress={onArrowPress}\n onEnterPress={onEnterPress(item, section, focusKey)}\n onBecameFocused={onBecameFocused}\n focusKey={focusKey}\n />\n </FocusableItem>\n );\n } else {\n return null;\n }\n })}\n </div>\n </div>\n );\n};\n\nexport default ShopSection;\n","import api from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??ref--6-1!./ProductDetailView.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from 'react';\nimport './ProductDetailView.styles.css';\nimport { IShopBrowseCard, IShopProduct, isShopProduct } from '../../types';\nimport ProductSummaryCard from '../components/ProductSummaryCard';\nimport ActionButton from '@/components/molecules/ActionButton';\nimport Image from '@/components/atoms/Image';\nimport {\n withFocusable,\n WithFocusableProps,\n} from '@/external/spatial-navigation';\nimport BrowseCard from '../components/BrowseCard';\nimport { setImageDimensions } from '@/helpers/url';\n\nexport type ProductDetailViewProps = {\n product: IShopProduct | IShopBrowseCard;\n focusKey: string;\n onBecomeFocused?: () => void;\n};\n\nconst ProductDetail = (props: ProductDetailViewProps & WithFocusableProps) => {\n const { product, focused } = props;\n const detail = product.detail;\n\n const getBackgroundImage = () => {\n const bgImage = detail?.backgroundImage;\n if (!bgImage) {\n return null;\n }\n\n try {\n const url = new URL(bgImage);\n if (url.hostname.includes('stitcher')) {\n const newBgImage = setImageDimensions(bgImage, 570, 670);\n return newBgImage;\n }\n } catch {\n // Fallback to original check if URL parsing fails\n if (bgImage.includes('stitcher')) {\n const newBgImage = setImageDimensions(bgImage, 570, 670);\n return newBgImage;\n }\n }\n\n return bgImage;\n };\n\n const bgImage = getBackgroundImage();\n return (\n <div\n className=\"product-detail-card focus-ring\"\n data-focused={focused}\n style={{\n ...(bgImage && {\n backgroundImage: `url(${bgImage})`,\n backgroundSize: 'cover',\n backgroundClip: 'padding-box',\n backgroundPosition: 'center',\n }),\n }}\n >\n {/* Tag Line Title */}\n <div className=\"product-detail-title T70\">\n {detail?.title || 'Shop the look'}\n </div>\n\n {/* Mini Product Card (non-focusable) */}\n <div className=\"product-detail-product\">\n {isShopProduct(product) ? (\n <ProductSummaryCard product={product} focusable={false} />\n ) : (\n <BrowseCard\n browseCard={{\n ...product,\n name: undefined,\n caption: product.detail?.description,\n }}\n focusable={false}\n />\n )}\n </div>\n\n {/* QR Code */}\n {detail?.qrCode && (\n <div className=\"product-detail-qr\">\n <Image\n src={detail.qrCode}\n alt=\"QR Code\"\n className=\"product-detail-qr-image\"\n />\n </div>\n )}\n\n {/* User Instruction */}\n <div className=\"product-detail-instruction T04\">{detail?.link?.text}</div>\n\n {/* Dismiss Button */}\n <ActionButton data-focused={focused}>Dismiss</ActionButton>\n </div>\n );\n};\n\nconst FocusableProductDetail = withFocusable<ProductDetailViewProps>()(\n ProductDetail\n);\n\nconst ProductDetailView = (\n props: ProductDetailViewProps & WithFocusableProps\n) => {\n return (\n <div className=\"product-detail-view-wrapper\">\n <FocusableProductDetail {...props} />\n {/* Legal Disclaimer */}\n {props.product.detail?.disclaimer && (\n <div className=\"product-detail-disclaimer T02 TEXT_200 FONT_BOLD\">\n {props.product.detail.disclaimer}\n </div>\n )}\n </div>\n );\n};\n\nexport default ProductDetailView;\n","import api from \"!../../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../node_modules/css-loader/dist/cjs.js??ref--6-1!./ShopPromoView.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from 'react';\nimport {\n withFocusable,\n WithFocusableProps,\n} from '@/external/spatial-navigation';\nimport './ShopPromoView.styles.css';\nimport Image from '@/components/atoms/Image';\nimport { IShopDefaultItem } from '../../../types';\n\ntype Props = {\n promoData: IShopDefaultItem;\n};\n\nconst ShopPromoView = (props: Props & WithFocusableProps) => {\n const promo = props.promoData;\n\n return (\n <div\n className=\"shop-promo-view focus-ring T20\"\n data-focused={props.focused}\n style={{ backgroundImage: `url(${promo.detail?.backgroundImage})` }}\n >\n <Image\n src={promo.image?.href}\n alt=\"Promo Logo\"\n className=\"shop-promo-logo\"\n />\n <div className=\"shop-promo-title T30 FONT_BOLD\">\n {promo.detail?.title}\n </div>\n <Image\n src={promo.detail?.qrCode}\n alt=\"QR Code\"\n className=\"shop-promo-qr-code\"\n />\n <p className=\"shop-promo-description T20 FONT_BOLD\">\n {promo.detail?.link?.text}\n </p>\n </div>\n );\n};\n\nconst FocusablePromoView = withFocusable<Props>()(ShopPromoView);\n\nconst ShopPromoViewWrapper = (props: Props & WithFocusableProps) => {\n return (\n <div>\n <FocusablePromoView {...props} />\n <div className=\"promo-view-disclaimer T02 TEXT_200 FONT_BOLD\">\n {props.promoData.detail?.disclaimer}\n </div>\n </div>\n );\n};\n\nexport default ShopPromoViewWrapper;\n","import React, { Component } from 'react';\nimport './ShopView.styles.css';\nimport ScrollableContainer from '@/components/core/ScrollableContainer';\nimport SDK from '@/index';\nimport { Direction } from '@/external/spatial-navigation/utils';\nimport TabLoadErrorView from '@/components/molecules/TabLoadError';\nimport ShopViewModel, { ShopErrorState } from '../view-model/ShopViewModel';\nimport {\n IShopProduct,\n IShopSection,\n IShopBrowseCard,\n isShopProduct,\n IShopDefaultItem,\n} from '../types';\nimport ShopSection from './components/ShopSection';\nimport ProductDetailView from './ProductDetailView';\nimport ShopPromoView from './components/ShopPromoView';\nimport { setupMaxHeightToBottom } from '@/hooks/useMaxHeightToBottom';\n\ntype Unsubscribe = () => void;\n\ninterface State {\n container: HTMLDivElement | null;\n sections: IShopSection[];\n isDataLoading: boolean;\n errorState: ShopErrorState;\n selectedItem: IShopProduct | IShopBrowseCard | null;\n selectedShopSection: IShopSection | null;\n selectedItemFocusKey: string;\n promoData: IShopDefaultItem | null;\n}\n\nclass ShopView extends Component<{}, State> {\n private container: HTMLDivElement | null = null;\n private sectionsListener: Unsubscribe | null = null;\n private isDataLoadingListener: Unsubscribe | null = null;\n private errorStateListener: Unsubscribe | null = null;\n private promoDataListener: Unsubscribe | null = null;\n private maxHeightCleanup: Unsubscribe | null = null;\n private vm: ShopViewModel | null;\n\n constructor(props: {}) {\n super(props);\n this.vm = SDK.getMaestroEventViewModel()\n .shopViewModel as ShopViewModel | null;\n\n this.state = {\n container: null,\n sections: this.viewModel.sections.value,\n isDataLoading: this.viewModel.isDataLoading.value,\n errorState: this.viewModel.errorState.value,\n selectedItem: null,\n selectedItemFocusKey: '',\n promoData: this.viewModel.promoData.value,\n selectedShopSection: null,\n };\n }\n\n get viewModel() {\n if (!this.vm) {\n throw new Error('ShopViewModel is not initialized');\n }\n\n return this.vm;\n }\n\n componentDidMount(): void {\n this.setState({\n container: this.container,\n });\n\n this.maxHeightCleanup = setupMaxHeightToBottom(() => this.container);\n\n this.sectionsListener = this.viewModel.sections.subscribe((sections) => {\n this.setState({ sections });\n });\n\n this.isDataLoadingListener = this.viewModel.isDataLoading.subscribe(\n (isDataLoading) => {\n this.setState({ isDataLoading });\n }\n );\n\n this.errorStateListener = this.viewModel.errorState.subscribe(\n (errorState) => {\n this.setState({ errorState });\n }\n );\n\n this.promoDataListener = this.viewModel.promoData.subscribe((promoData) => {\n this.setState({ promoData });\n });\n\n // Initialize the view model\n this.viewModel.init();\n }\n\n componentWillUnmount() {\n this.sectionsListener && this.sectionsListener();\n this.isDataLoadingListener && this.isDataLoadingListener();\n this.errorStateListener && this.errorStateListener();\n this.promoDataListener && this.promoDataListener();\n this.maxHeightCleanup && this.maxHeightCleanup();\n\n // Clean up the view model\n this.viewModel.cleanup();\n }\n\n clearTabLoadFailure = () => {\n this.viewModel.clearTabLoadFailure();\n };\n\n onArrowPress = (d: Direction) => {\n if (d === 'left') {\n SDK.getMaestroEventViewModel().deliverFocus();\n }\n };\n\n onBecameFocused = () => {\n if (this.container) {\n this.container.scrollTop = 0;\n }\n };\n\n openItemDetail = (\n selectedItem: IShopProduct | IShopBrowseCard,\n selectedShopSection: IShopSection,\n selectedItemFocusKey: string\n ) => {\n const card = isShopProduct(selectedItem)\n ? 'product_summary'\n : ('want more' as const);\n this.viewModel.trackItemClick(card, selectedItem, selectedShopSection);\n\n this.setState(\n { selectedItem, selectedItemFocusKey, selectedShopSection },\n () => {\n SDK.getMaestroEventViewModel().navigation.setFocus(\n 'product-detail-view'\n );\n }\n );\n };\n\n closeProductDetail = () => {\n if (!this.state.selectedItem || !this.state.selectedShopSection) {\n return;\n }\n\n this.viewModel.trackItemClick(\n 'product_detail',\n this.state.selectedItem,\n this.state.selectedShopSection\n );\n\n this.setState({ selectedItem: null, selectedShopSection: null }, () => {\n if (this.state.selectedItemFocusKey) {\n // Added a small delay so all the focusable items are rendered and we have the ref of them\n setTimeout(() => {\n SDK.getMaestroEventViewModel().navigation.setFocus(\n this.state.selectedItemFocusKey\n );\n }, 100);\n }\n });\n };\n\n trackPromoEnterPress = () => {\n this.viewModel.trackItemClick('fallback', null, null);\n };\n\n renderContent = () => {\n const { sections, errorState, selectedItem, promoData } = this.state;\n\n // Show product detail view if a product is selected\n if (selectedItem) {\n return (\n <ProductDetailView\n product={selectedItem}\n onBecameFocused={this.onBecameFocused}\n onEnterPress={this.closeProductDetail}\n onArrowPress={this.onArrowPress}\n focusKey=\"product-detail-view\"\n />\n );\n }\n\n // Show error state if tab load failed\n if (errorState === 'tabLoadFailure') {\n return (\n <TabLoadErrorView\n onEnterPress={this.clearTabLoadFailure}\n onArrowPress={this.onArrowPress}\n />\n );\n }\n\n // Show promo view if shop is empty and promo data is available\n if ((errorState === 'emptyShop' || sections.length === 0) && promoData) {\n return (\n <ShopPromoView\n promoData={promoData}\n onEnterPress={this.trackPromoEnterPress}\n />\n );\n }\n\n // Render sections\n return sections.map((section, index) => (\n <ShopSection\n key={index}\n sectionIndex={index}\n section={section}\n onArrowPress={this.onArrowPress}\n onItemClick={this.openItemDetail}\n />\n ));\n };\n\n setContainerRef = (e: HTMLDivElement | null) => {\n if (e && !this.state.container) {\n this.setState({ container: e });\n }\n\n if (this.container !== e) {\n this.container = e;\n if (this.maxHeightCleanup) {\n this.maxHeightCleanup();\n }\n if (this.container) {\n this.maxHeightCleanup = setupMaxHeightToBottom(() => this.container);\n }\n }\n };\n\n render() {\n return (\n <ScrollableContainer\n scrollableContainerRef={this.state.container}\n containerTopOffset={40}\n data-has-product-selected={!!this.state.selectedItem}\n data-has-error={this.state.errorState !== 'none'}\n style={{\n maxHeight: 'auto',\n }}\n >\n <div className=\"shop-view\" ref={this.setContainerRef}>\n {this.renderContent()}\n <div className=\"shop-bottom-padding\" />\n </div>\n </ScrollableContainer>\n );\n }\n}\n\nexport default ShopView;\n","import ShopView from './ShopView';\n\nexport default ShopView;\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///./src/components/atoms/Image/index.tsx","webpack:///./src/components/core/ScrollableContainer/index.ts","webpack:///./src/components/atoms/BaseButton/index.ts","webpack:///./src/components/molecules/ActionButton/ActionButton.styles.css?ed9b","webpack:///./src/components/molecules/ActionButton/ActionButton.tsx","webpack:///./src/components/molecules/ActionButton/index.ts","webpack:///./src/components/molecules/ActionButton/ActionButton.styles.css","webpack:///./src/hooks/useMaxHeightToBottom.ts","webpack:///./src/modules/espn/components/TabLoadError/TabLoadError.styles.css","webpack:///./src/modules/espn/components/TabLoadError/TabLoadError.styles.css?f939","webpack:///./src/modules/espn/components/TabLoadError/TabLoadError.tsx","webpack:///./src/modules/espn/components/TabLoadError/index.ts","webpack:///./src/helpers/url.ts","webpack:///./src/modules/espn/shop/types.ts","webpack:///./src/modules/espn/shop/view/ShopView.styles.css","webpack:///./src/modules/espn/shop/view/ProductDetailView/ProductDetailView.styles.css","webpack:///./src/modules/espn/shop/view/components/ProductSummaryCard/ProductSummaryCard.styles.css","webpack:///./src/modules/espn/shop/view/components/BrowseCard/BrowseCard.styles.css","webpack:///./src/modules/espn/shop/view/components/ShopPromoView/ShopPromoView.styles.css","webpack:///./src/modules/espn/shop/view/components/ShopSection/ShopSection.styles.css","webpack:///./src/modules/espn/shop/view/ShopView.styles.css?d965","webpack:///./src/modules/espn/shop/view/components/ShopSection/ShopSection.styles.css?01f8","webpack:///./src/modules/espn/shop/view/components/ProductSummaryCard/ProductSummaryCard.styles.css?a178","webpack:///./src/modules/espn/shop/view/components/ProductSummaryCard/ProductSummaryCard.tsx","webpack:///./src/modules/espn/shop/view/components/BrowseCard/BrowseCard.styles.css?129c","webpack:///./src/modules/espn/shop/view/components/BrowseCard/BrowseCard.tsx","webpack:///./src/modules/espn/shop/view/components/ShopSection/ShopSection.tsx","webpack:///./src/modules/espn/shop/view/ProductDetailView/ProductDetailView.styles.css?946c","webpack:///./src/modules/espn/shop/view/ProductDetailView/ProductDetailView.tsx","webpack:///./src/modules/espn/shop/view/components/ShopPromoView/ShopPromoView.styles.css?cea1","webpack:///./src/modules/espn/shop/view/components/ShopPromoView/ShopPromoView.tsx","webpack:///./src/modules/espn/shop/view/ShopView.tsx","webpack:///./src/modules/espn/shop/view/index.ts"],"names":["Image","React","Component","constructor","props","super","_defineProperty","failed","this","setState","render","state","console","warn","src","createElement","_extends","alt","onError","handleError","ScrollableContainer","BaseButton","options","locals","ActionButton","children","focused","_focused","focusKey","_focusKey","parentFocusKey","_parentFocusKey","preferredChildFocusKey","_preferredChildFocusKey","forgetLastFocusedChild","_forgetLastFocusedChild","trackChildren","_trackChildren","autoRestoreFocus","_autoRestoreFocus","blockNavigationOut","_blockNavigationOut","hasFocusedChild","_hasFocusedChild","focusable","_focusable","onEnterPress","_onEnterPress","onEnterRelease","_onEnterRelease","onBackPress","_onBackPress","onArrowPress","_onArrowPress","onBecameFocused","_onBecameFocused","onBecameBlurred","_onBecameBlurred","realFocusKey","_realFocusKey","setFocus","_setFocus","navigateByDirection","_navigateByDirection","stealFocus","_stealFocus","onUpdateFocus","_onUpdateFocus","onUpdateHasFocusedChild","_onUpdateHasFocusedChild","buttonProps","className","withFocusable","___CSS_LOADER_EXPORT___","push","module","i","calculateMaxHeight","element","rect","getBoundingClientRect","style","maxHeight","window","innerHeight","top","useMaxHeightToBottom","elementRef","useRef","handleResize","useCallback","current","useEffect","addEventListener","removeEventListener","setupMaxHeightToBottom","getElement","TabLoadErrorView","data-focused","setImageDimensions","url","width","height","urlObj","URL","searchParams","set","toString","err","isShopProduct","item","type","ProductSummaryCard","product","image","name","price","salePrice","displayClearance","displaySale","isOnSale","Boolean","href","data-has-image","displayRetail","BrowseCardView","browseCard","caption","detail","backgroundImage","backgroundSize","backgroundPosition","backgroundClip","ShopSection","section","sectionIndex","onItemClick","_section$items","scrollToFocusedElement","useScrollableContainer","layout","offsetTop","title","items","map","itemIndex","FocusableItem","key","BrowseCard","FocusableProductDetail","_product$detail","_detail$link","bgImage","getBackgroundImage","hostname","includes","undefined","description","qrCode","link","text","ProductDetailView","_props$product$detail","disclaimer","FocusablePromoView","_promo$detail","_promo$image","_promo$detail2","_promo$detail3","_promo$detail4","_promo$detail4$link","promo","promoData","ShopPromoViewWrapper","_props$promoData$deta","ShopView","viewModel","clearTabLoadFailure","d","SDK","getMaestroEventViewModel","deliverFocus","container","scrollTop","selectedItem","selectedShopSection","selectedItemFocusKey","card","trackItemClick","navigation","setTimeout","sections","errorState","closeProductDetail","length","index","openItemDetail","ShopPromoView","trackPromoEnterPress","e","maxHeightCleanup","vm","shopViewModel","value","isDataLoading","Error","componentDidMount","sectionsListener","subscribe","isDataLoadingListener","errorStateListener","promoDataListener","init","componentWillUnmount","cleanup","scrollableContainerRef","containerTopOffset","data-has-product-selected","data-has-error","ref","setContainerRef","renderContent"],"mappings":"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","file":"5.maestro-web-sdk.esm.js","sourcesContent":["import React from 'react';\nimport { ImgHTMLAttributes } from 'react';\n\ninterface ImageProps extends ImgHTMLAttributes<HTMLImageElement> {}\n\nclass Image extends React.Component<ImageProps> {\n state = {\n failed: false,\n };\n\n constructor(props: ImageProps) {\n super(props);\n }\n\n handleError = () => {\n this.setState({ failed: true });\n };\n\n render() {\n if (this.state.failed) {\n console.warn('Image failed to load:', this.props.src);\n return null;\n }\n\n if (!this.props.src) {\n console.warn('Image source is empty');\n return null;\n }\n\n return (\n <img\n alt={this.props.alt || 'Image'}\n {...this.props}\n onError={this.handleError}\n />\n );\n }\n}\n\nexport default Image;\n","import ScrollableContainer from './ScrollableContainer';\n\nexport { ScrollableContainerContext } from './ScrollableContainer';\nexport { useScrollableContainer } from './useScrollableContainer';\nexport { default as FocusableItem } from './FocusableItem';\nexport type { ScrollableContainerContextType } from './ScrollableContainer';\nexport default ScrollableContainer;\n","import BaseButton from './BaseButton';\n\nexport default BaseButton;\n","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--6-1!./ActionButton.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import BaseButton from '@/components/atoms/BaseButton';\nimport './ActionButton.styles.css';\nimport {\n withFocusable,\n WithFocusableProps,\n} from '@/external/spatial-navigation';\nimport React from 'react';\n\ntype SpatialNavigationInjectedProps = {\n realFocusKey?: string;\n setFocus?: (focusKey: string) => void;\n navigateByDirection?: (...args: any[]) => any;\n stealFocus?: () => void;\n onUpdateFocus?: (focused: boolean) => void;\n onUpdateHasFocusedChild?: (hasFocusedChild: boolean) => void;\n};\n\ntype Props = React.PropsWithChildren<\n React.ButtonHTMLAttributes<HTMLButtonElement> &\n WithFocusableProps &\n SpatialNavigationInjectedProps\n>;\n\nclass ActionButton extends React.Component<Props, {}> {\n render() {\n const {\n children,\n // spatial-navigation props (must not hit DOM)\n focused: _focused,\n focusKey: _focusKey,\n parentFocusKey: _parentFocusKey,\n preferredChildFocusKey: _preferredChildFocusKey,\n forgetLastFocusedChild: _forgetLastFocusedChild,\n trackChildren: _trackChildren,\n autoRestoreFocus: _autoRestoreFocus,\n blockNavigationOut: _blockNavigationOut,\n hasFocusedChild: _hasFocusedChild,\n focusable: _focusable,\n onEnterPress: _onEnterPress,\n onEnterRelease: _onEnterRelease,\n onBackPress: _onBackPress,\n onArrowPress: _onArrowPress,\n onBecameFocused: _onBecameFocused,\n onBecameBlurred: _onBecameBlurred,\n // injected/internal props (also must not hit DOM)\n realFocusKey: _realFocusKey,\n setFocus: _setFocus,\n navigateByDirection: _navigateByDirection,\n stealFocus: _stealFocus,\n onUpdateFocus: _onUpdateFocus,\n onUpdateHasFocusedChild: _onUpdateHasFocusedChild,\n ...buttonProps\n } = this.props;\n\n return (\n <BaseButton className=\"action-button T05_ALT\" {...buttonProps}>\n {children}\n </BaseButton>\n );\n }\n}\n\nexport default withFocusable()(ActionButton);\n","import ActionButton from './ActionButton';\n\nexport default ActionButton;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".action-button {\\n padding: 23px 0;\\n background-color: var(--sdk-surface5);\\n color: var(--sdk-text100);\\n}\\n\\n.action-button:hover,\\n.action-button[data-focused='true'] {\\n background-color: var(--sdk-accentPrimary);\\n color: var(--sdk-text500);\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/molecules/ActionButton/ActionButton.styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,eAAe;EACf,qCAAqC;EACrC,yBAAyB;AAC3B;;AAEA;;EAEE,0CAA0C;EAC1C,yBAAyB;AAC3B\",\"sourcesContent\":[\".action-button {\\n padding: 23px 0;\\n background-color: var(--sdk-surface5);\\n color: var(--sdk-text100);\\n}\\n\\n.action-button:hover,\\n.action-button[data-focused='true'] {\\n background-color: var(--sdk-accentPrimary);\\n color: var(--sdk-text500);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","import { useCallback, useEffect, useRef } from 'react';\n\n/**\n * Calculates and sets maxHeight on an element to fill remaining viewport height.\n * Updates on window resize.\n */\nfunction calculateMaxHeight(element: HTMLElement | null): void {\n if (!element) return;\n const rect = element.getBoundingClientRect();\n element.style.maxHeight = `${window.innerHeight - rect.top}px`;\n}\n\n/**\n * Hook for functional components.\n * Returns a ref callback that sets up maxHeight calculation with resize listener.\n */\nexport function useMaxHeightToBottom(): (\n element: HTMLDivElement | null\n) => void {\n const elementRef = useRef<HTMLDivElement | null>(null);\n\n const handleResize = useCallback(() => {\n calculateMaxHeight(elementRef.current);\n }, []);\n\n useEffect(() => {\n window.addEventListener('resize', handleResize);\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n }, [handleResize]);\n\n const refCallback = useCallback((element: HTMLDivElement | null) => {\n elementRef.current = element;\n calculateMaxHeight(element);\n }, []);\n\n return refCallback;\n}\n\n/**\n * Utility for class components.\n * Call in componentDidMount, returns cleanup function for componentWillUnmount.\n */\nexport function setupMaxHeightToBottom(\n getElement: () => HTMLElement | null\n): () => void {\n const handleResize = () => {\n calculateMaxHeight(getElement());\n };\n\n // Initial calculation\n handleResize();\n\n window.addEventListener('resize', handleResize);\n\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n}\n\nexport default useMaxHeightToBottom;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".tab-load-error {\\n display: block;\\n padding: 24px;\\n background-color: var(--sdk-surface4);\\n}\\n\\n.tab-load-error h3 {\\n margin: 0;\\n font-family: var(--sdk-font-headline);\\n}\\n\\n.tab-load-error p {\\n height: 86px;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/modules/espn/components/TabLoadError/TabLoadError.styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,cAAc;EACd,aAAa;EACb,qCAAqC;AACvC;;AAEA;EACE,SAAS;EACT,qCAAqC;AACvC;;AAEA;EACE,YAAY;AACd\",\"sourcesContent\":[\".tab-load-error {\\n display: block;\\n padding: 24px;\\n background-color: var(--sdk-surface4);\\n}\\n\\n.tab-load-error h3 {\\n margin: 0;\\n font-family: var(--sdk-font-headline);\\n}\\n\\n.tab-load-error p {\\n height: 86px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--6-1!./TabLoadError.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import {\n withFocusable,\n WithFocusableProps,\n} from '@/external/spatial-navigation';\nimport React from 'react';\nimport './TabLoadError.styles.css';\nimport ActionButton from '@/components/molecules/ActionButton';\n\nclass TabLoadErrorView extends React.Component<WithFocusableProps> {\n render() {\n const { focused, onEnterPress } = this.props;\n\n return (\n <div data-focused={focused} className=\"tab-load-error focus-ring\">\n <h3 className=\"T70\">We dropped the ball.</h3>\n <p className=\"T20\">\n {\"We're having trouble loading that for you. Please try again.\"}\n </p>\n <ActionButton data-focused={focused} onEnterPress={onEnterPress}>\n Try Again\n </ActionButton>\n </div>\n );\n }\n}\n\nexport default withFocusable()(TabLoadErrorView);\n","import TabLoadErrorView from './TabLoadError';\n\nexport default TabLoadErrorView;\n","export const setImageDimensions = (\n url: string,\n width: number,\n height: number\n) => {\n try {\n const urlObj = new URL(url);\n urlObj.searchParams.set('w', width.toString());\n urlObj.searchParams.set('h', height.toString());\n return urlObj.toString();\n } catch (err) {\n console.warn('Malformed URL:', url, err);\n return url; // Return the original URL if it cannot be parsed\n }\n};\n","/**\n * Shop module type definitions\n * Based on ESPN Shop API structure\n */\n\n/**\n * Image reference\n */\nexport interface IShopImage {\n /** Image URL */\n href?: string;\n /** Image width */\n width?: number;\n /** Image height */\n height?: number;\n}\n\n/**\n * Logo reference (same structure as image)\n */\nexport interface IShopLogo {\n /** Logo URL */\n href?: string;\n /** Logo width */\n width?: number;\n /** Logo height */\n height?: number;\n}\n\n/**\n * Link reference\n */\nexport interface IShopLink {\n /** Link URL */\n href?: string;\n /** Link text */\n text?: string;\n /** Link relations (e.g., [\"ictv\", \"fanatics\", \"index\", \"team\"]) */\n rel?: string[];\n}\n\n/**\n * Price information for a product\n */\nexport interface IShopPrice {\n /** Retail price display string (e.g., \"$29.99\") */\n displayRetail?: string;\n /** Sale price display string (e.g., \"$19.99\") - optional */\n displaySale?: string;\n /** Clearance price display string (e.g., \"$14.99\") - optional */\n displayClearance?: string;\n}\n\n/**\n * Product detail information shown in detail view\n */\nexport interface IShopDetail {\n /** Title for the detail view */\n title?: string;\n /** Description (optional, used for browse cards) */\n description?: string;\n /** Link information */\n link?: IShopLink;\n /** Background image URL */\n backgroundImage?: string;\n /** QR code image URL */\n qrCode?: string;\n /** Disclaimer text */\n disclaimer?: string;\n}\n\n/**\n * Product item in a shop section\n */\nexport interface IShopProduct {\n /** Item type discriminator */\n type?: 'product';\n /** Product name */\n name?: string;\n /** Product image */\n image?: IShopImage;\n /** Price information */\n price?: IShopPrice;\n /** Detail view information */\n detail?: IShopDetail;\n}\n\n/**\n * Browse card item (Want More?) in a shop section\n */\nexport interface IShopBrowseCard {\n /** Item type discriminator */\n type?: 'browse';\n /** Browse card name */\n name?: string;\n /** Caption text (e.g., \"Browse all Canadiens merch\") */\n caption?: string;\n /** Team/League/Event logo */\n image?: IShopImage;\n /** Detail view information */\n detail?: IShopDetail;\n}\n\n/**\n * Union type for all shop items\n */\nexport type IShopItem = IShopProduct | IShopBrowseCard;\n\n/**\n * Section product information (team/league info)\n */\nexport interface IShopSectionProduct {\n /** Product/Team ID */\n id?: string;\n /** Short display name (e.g., \"Canadiens\") */\n shortDisplayName?: string;\n /** Logo reference */\n logo?: IShopLogo;\n /** Type (e.g., \"team\") */\n type?: string;\n /** Link information */\n link?: IShopLink;\n /** Background image URL */\n backgroundImage?: string;\n}\n\n/**\n * Shop section containing a title and list of items\n */\nexport interface IShopSection {\n /** Section title (e.g., \"Shop Canadiens Merch\") */\n title?: string;\n /** Section product/team information */\n product?: IShopSectionProduct;\n /** Array of products or browse cards */\n items?: IShopItem[];\n}\n\nexport type IShopDefaultItem = {\n image?: {\n href?: string;\n width?: number;\n height?: number;\n };\n type?: string;\n detail?: {\n title?: string;\n link?: {\n href?: string;\n text?: string;\n };\n backgroundImage?: string;\n qrCode?: string;\n disclaimer?: string;\n };\n};\n\n/**\n * Shop container with sections\n */\nexport interface IShopContainer {\n /** Array of shop sections */\n sections?: IShopSection[];\n defaultItem?: IShopDefaultItem;\n}\n\n/**\n * Main shop API response\n */\nexport interface IShopResponse {\n /** Array of shop containers (typically one) */\n shop?: IShopContainer[];\n}\n\nexport const isShopProduct = (item: IShopItem): item is IShopProduct => {\n return item.type === 'product';\n};\n\nexport interface IShopViewModel {\n cleanup(): void;\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".shop-view {\\n display: block;\\n overflow-y: auto;\\n scrollbar-width: none;\\n scroll-behavior: smooth;\\n overscroll-behavior: contain;\\n margin-top: 60px;\\n}\\n\\n.shop-view::-webkit-scrollbar {\\n display: none;\\n}\\n\\n.shop-bottom-padding {\\n height: 50vh;\\n}\\n\\n.shop-empty-state {\\n display: block;\\n text-align: center;\\n padding: 60px 20px;\\n color: #ffffff;\\n font-size: 18px;\\n}\\n\\n.shop-sections {\\n display: block;\\n}\\n\\n.scrollable-container[data-has-product-selected='true']::before,\\n.scrollable-container[data-has-product-selected='true']::after,\\n.scrollable-container[data-has-error='true']::after,\\n.scrollable-container[data-has-error='true']::before {\\n background: none;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/modules/espn/shop/view/ShopView.styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,cAAc;EACd,gBAAgB;EAChB,qBAAqB;EACrB,uBAAuB;EACvB,4BAA4B;EAC5B,gBAAgB;AAClB;;AAEA;EACE,aAAa;AACf;;AAEA;EACE,YAAY;AACd;;AAEA;EACE,cAAc;EACd,kBAAkB;EAClB,kBAAkB;EAClB,cAAc;EACd,eAAe;AACjB;;AAEA;EACE,cAAc;AAChB;;AAEA;;;;EAIE,gBAAgB;AAClB\",\"sourcesContent\":[\".shop-view {\\n display: block;\\n overflow-y: auto;\\n scrollbar-width: none;\\n scroll-behavior: smooth;\\n overscroll-behavior: contain;\\n margin-top: 60px;\\n}\\n\\n.shop-view::-webkit-scrollbar {\\n display: none;\\n}\\n\\n.shop-bottom-padding {\\n height: 50vh;\\n}\\n\\n.shop-empty-state {\\n display: block;\\n text-align: center;\\n padding: 60px 20px;\\n color: #ffffff;\\n font-size: 18px;\\n}\\n\\n.shop-sections {\\n display: block;\\n}\\n\\n.scrollable-container[data-has-product-selected='true']::before,\\n.scrollable-container[data-has-product-selected='true']::after,\\n.scrollable-container[data-has-error='true']::after,\\n.scrollable-container[data-has-error='true']::before {\\n background: none;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".product-detail-view-wrapper > *:first-child {\\n margin-bottom: 16px;\\n}\\n\\n/* Card */\\n.product-detail-card {\\n display: inline-block;\\n padding: 24px;\\n text-align: center;\\n box-sizing: border-box;\\n box-shadow: 0px 0px 100px 0px var(--sdk-surface1);\\n width: 100%;\\n}\\n\\n/* Title */\\n.product-detail-title {\\n margin-bottom: 32px;\\n font-family: var(--sdk-font-headline);\\n}\\n\\n/* Mini Product Card Container */\\n.product-detail-product {\\n margin-bottom: 32px;\\n}\\n\\n/* Override ProductSummaryCard styles when inside detail view */\\n.product-detail-product .product-summary-card,\\n.product-detail-product .browse-card {\\n text-align: left;\\n background-color: #ffffff14;\\n background-image: none !important;\\n padding: 16px;\\n}\\n\\n.product-detail-product .browse-card {\\n direction: rtl;\\n}\\n\\n.product-detail-product .browse-card .browse-card-content {\\n direction: ltr;\\n}\\n\\n.product-detail-product .browse-card .browse-card-logo-image {\\n margin-left: 0;\\n margin-right: 24px;\\n width: calc(20% - 24px);\\n}\\n\\n.product-detail-product\\n .product-summary-card\\n .product-summary-card-image-container {\\n width: 20%;\\n}\\n\\n.product-detail-product .product-summary-card .product-summary-card-content {\\n width: 80%;\\n padding: 6px 0px 6px 24px;\\n}\\n\\n.product-detail-product .product-summary-card-title {\\n -webkit-line-clamp: 2;\\n max-height: calc(1.3em * 2); /* line-height * 3 lines */\\n}\\n\\n/* QR Code Container */\\n.product-detail-qr {\\n background-color: var(--sdk-highlightPrimary);\\n border-radius: 24px;\\n margin: 32px 30% 28px 30%;\\n overflow: hidden;\\n}\\n\\n.product-detail-qr-image {\\n width: 100%;\\n height: 100%;\\n object-fit: contain;\\n}\\n\\n/* Instruction Text */\\n.product-detail-instruction {\\n margin-bottom: 24px;\\n font-family: var(--sdk-font-headline);\\n}\\n\\n.product-detail-disclaimer {\\n text-align: center;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/modules/espn/shop/view/ProductDetailView/ProductDetailView.styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,mBAAmB;AACrB;;AAEA,SAAS;AACT;EACE,qBAAqB;EACrB,aAAa;EACb,kBAAkB;EAClB,sBAAsB;EACtB,iDAAiD;EACjD,WAAW;AACb;;AAEA,UAAU;AACV;EACE,mBAAmB;EACnB,qCAAqC;AACvC;;AAEA,gCAAgC;AAChC;EACE,mBAAmB;AACrB;;AAEA,+DAA+D;AAC/D;;EAEE,gBAAgB;EAChB,2BAA2B;EAC3B,iCAAiC;EACjC,aAAa;AACf;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;EACd,kBAAkB;EAClB,uBAAuB;AACzB;;AAEA;;;EAGE,UAAU;AACZ;;AAEA;EACE,UAAU;EACV,yBAAyB;AAC3B;;AAEA;EACE,qBAAqB;EACrB,2BAA2B,EAAE,0BAA0B;AACzD;;AAEA,sBAAsB;AACtB;EACE,6CAA6C;EAC7C,mBAAmB;EACnB,yBAAyB;EACzB,gBAAgB;AAClB;;AAEA;EACE,WAAW;EACX,YAAY;EACZ,mBAAmB;AACrB;;AAEA,qBAAqB;AACrB;EACE,mBAAmB;EACnB,qCAAqC;AACvC;;AAEA;EACE,kBAAkB;AACpB\",\"sourcesContent\":[\".product-detail-view-wrapper > *:first-child {\\n margin-bottom: 16px;\\n}\\n\\n/* Card */\\n.product-detail-card {\\n display: inline-block;\\n padding: 24px;\\n text-align: center;\\n box-sizing: border-box;\\n box-shadow: 0px 0px 100px 0px var(--sdk-surface1);\\n width: 100%;\\n}\\n\\n/* Title */\\n.product-detail-title {\\n margin-bottom: 32px;\\n font-family: var(--sdk-font-headline);\\n}\\n\\n/* Mini Product Card Container */\\n.product-detail-product {\\n margin-bottom: 32px;\\n}\\n\\n/* Override ProductSummaryCard styles when inside detail view */\\n.product-detail-product .product-summary-card,\\n.product-detail-product .browse-card {\\n text-align: left;\\n background-color: #ffffff14;\\n background-image: none !important;\\n padding: 16px;\\n}\\n\\n.product-detail-product .browse-card {\\n direction: rtl;\\n}\\n\\n.product-detail-product .browse-card .browse-card-content {\\n direction: ltr;\\n}\\n\\n.product-detail-product .browse-card .browse-card-logo-image {\\n margin-left: 0;\\n margin-right: 24px;\\n width: calc(20% - 24px);\\n}\\n\\n.product-detail-product\\n .product-summary-card\\n .product-summary-card-image-container {\\n width: 20%;\\n}\\n\\n.product-detail-product .product-summary-card .product-summary-card-content {\\n width: 80%;\\n padding: 6px 0px 6px 24px;\\n}\\n\\n.product-detail-product .product-summary-card-title {\\n -webkit-line-clamp: 2;\\n max-height: calc(1.3em * 2); /* line-height * 3 lines */\\n}\\n\\n/* QR Code Container */\\n.product-detail-qr {\\n background-color: var(--sdk-highlightPrimary);\\n border-radius: 24px;\\n margin: 32px 30% 28px 30%;\\n overflow: hidden;\\n}\\n\\n.product-detail-qr-image {\\n width: 100%;\\n height: 100%;\\n object-fit: contain;\\n}\\n\\n/* Instruction Text */\\n.product-detail-instruction {\\n margin-bottom: 24px;\\n font-family: var(--sdk-font-headline);\\n}\\n\\n.product-detail-disclaimer {\\n text-align: center;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/* Product Summary Card - TV-compatible CSS (no flex/grid) */\\n\\n.product-summary-card {\\n position: relative;\\n background-color: var(--sdk-surface4);\\n overflow: hidden;\\n vertical-align: middle;\\n padding: 24px;\\n width: 100%;\\n height: 192px;\\n box-sizing: border-box;\\n text-align: left;\\n}\\n\\n/* Helper for vertical centering */\\n.product-summary-card::before {\\n content: '';\\n display: inline-block;\\n height: 100%;\\n vertical-align: middle;\\n}\\n\\n/* Product Image Container - 144x144 */\\n.product-summary-card-image-container {\\n display: inline-block;\\n vertical-align: middle;\\n width: 20%;\\n max-height: 144px;\\n overflow: hidden;\\n line-height: 0;\\n}\\n\\n.product-summary-card-image {\\n width: 100%;\\n height: 100%;\\n object-fit: contain;\\n border-radius: 8px;\\n}\\n\\n/* Text Content Container */\\n.product-summary-card-content {\\n display: inline-block;\\n vertical-align: middle;\\n padding: 16px 0 16px 24px;\\n white-space: normal;\\n width: 80%;\\n box-sizing: border-box;\\n}\\n\\n.product-summary-card-content[data-has-image='false'] {\\n width: 100%;\\n}\\n\\n/* Product Title - max 3 lines with ellipsis */\\n.product-summary-card-title {\\n padding-bottom: 4px;\\n /* Line clamp for 3 lines */\\n display: -webkit-box;\\n -webkit-line-clamp: 3;\\n -webkit-box-orient: vertical;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n /* Fallback for non-webkit browsers */\\n max-height: calc(1.3em * 3); /* line-height * 3 lines */\\n}\\n\\n/* Price Container */\\n.product-summary-card-price-container {\\n white-space: nowrap;\\n}\\n\\n/* Original Price (crossed out when on sale) */\\n.product-summary-card-price-original {\\n text-decoration: line-through;\\n opacity: 0.6;\\n margin-right: 4px;\\n}\\n\\n/* Sale/Clearance Price */\\n.product-summary-card-price-sale {\\n margin-right: 8px;\\n}\\n\\n/* Sale/Clearance Badge */\\n.product-summary-card-badge {\\n display: inline-block;\\n background-color: var(--sdk-alertError);\\n padding-inline: 4px;\\n border-radius: 4px;\\n}\\n\\n.product-summary-card-qr-image {\\n object-fit: contain;\\n position: absolute;\\n bottom: 16px;\\n right: 16px;\\n width: 6%;\\n height: auto;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/modules/espn/shop/view/components/ProductSummaryCard/ProductSummaryCard.styles.css\"],\"names\":[],\"mappings\":\"AAAA,4DAA4D;;AAE5D;EACE,kBAAkB;EAClB,qCAAqC;EACrC,gBAAgB;EAChB,sBAAsB;EACtB,aAAa;EACb,WAAW;EACX,aAAa;EACb,sBAAsB;EACtB,gBAAgB;AAClB;;AAEA,kCAAkC;AAClC;EACE,WAAW;EACX,qBAAqB;EACrB,YAAY;EACZ,sBAAsB;AACxB;;AAEA,sCAAsC;AACtC;EACE,qBAAqB;EACrB,sBAAsB;EACtB,UAAU;EACV,iBAAiB;EACjB,gBAAgB;EAChB,cAAc;AAChB;;AAEA;EACE,WAAW;EACX,YAAY;EACZ,mBAAmB;EACnB,kBAAkB;AACpB;;AAEA,2BAA2B;AAC3B;EACE,qBAAqB;EACrB,sBAAsB;EACtB,yBAAyB;EACzB,mBAAmB;EACnB,UAAU;EACV,sBAAsB;AACxB;;AAEA;EACE,WAAW;AACb;;AAEA,8CAA8C;AAC9C;EACE,mBAAmB;EACnB,2BAA2B;EAC3B,oBAAoB;EACpB,qBAAqB;EACrB,4BAA4B;EAC5B,gBAAgB;EAChB,uBAAuB;EACvB,qCAAqC;EACrC,2BAA2B,EAAE,0BAA0B;AACzD;;AAEA,oBAAoB;AACpB;EACE,mBAAmB;AACrB;;AAEA,8CAA8C;AAC9C;EACE,6BAA6B;EAC7B,YAAY;EACZ,iBAAiB;AACnB;;AAEA,yBAAyB;AACzB;EACE,iBAAiB;AACnB;;AAEA,yBAAyB;AACzB;EACE,qBAAqB;EACrB,uCAAuC;EACvC,mBAAmB;EACnB,kBAAkB;AACpB;;AAEA;EACE,mBAAmB;EACnB,kBAAkB;EAClB,YAAY;EACZ,WAAW;EACX,SAAS;EACT,YAAY;AACd\",\"sourcesContent\":[\"/* Product Summary Card - TV-compatible CSS (no flex/grid) */\\n\\n.product-summary-card {\\n position: relative;\\n background-color: var(--sdk-surface4);\\n overflow: hidden;\\n vertical-align: middle;\\n padding: 24px;\\n width: 100%;\\n height: 192px;\\n box-sizing: border-box;\\n text-align: left;\\n}\\n\\n/* Helper for vertical centering */\\n.product-summary-card::before {\\n content: '';\\n display: inline-block;\\n height: 100%;\\n vertical-align: middle;\\n}\\n\\n/* Product Image Container - 144x144 */\\n.product-summary-card-image-container {\\n display: inline-block;\\n vertical-align: middle;\\n width: 20%;\\n max-height: 144px;\\n overflow: hidden;\\n line-height: 0;\\n}\\n\\n.product-summary-card-image {\\n width: 100%;\\n height: 100%;\\n object-fit: contain;\\n border-radius: 8px;\\n}\\n\\n/* Text Content Container */\\n.product-summary-card-content {\\n display: inline-block;\\n vertical-align: middle;\\n padding: 16px 0 16px 24px;\\n white-space: normal;\\n width: 80%;\\n box-sizing: border-box;\\n}\\n\\n.product-summary-card-content[data-has-image='false'] {\\n width: 100%;\\n}\\n\\n/* Product Title - max 3 lines with ellipsis */\\n.product-summary-card-title {\\n padding-bottom: 4px;\\n /* Line clamp for 3 lines */\\n display: -webkit-box;\\n -webkit-line-clamp: 3;\\n -webkit-box-orient: vertical;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n /* Fallback for non-webkit browsers */\\n max-height: calc(1.3em * 3); /* line-height * 3 lines */\\n}\\n\\n/* Price Container */\\n.product-summary-card-price-container {\\n white-space: nowrap;\\n}\\n\\n/* Original Price (crossed out when on sale) */\\n.product-summary-card-price-original {\\n text-decoration: line-through;\\n opacity: 0.6;\\n margin-right: 4px;\\n}\\n\\n/* Sale/Clearance Price */\\n.product-summary-card-price-sale {\\n margin-right: 8px;\\n}\\n\\n/* Sale/Clearance Badge */\\n.product-summary-card-badge {\\n display: inline-block;\\n background-color: var(--sdk-alertError);\\n padding-inline: 4px;\\n border-radius: 4px;\\n}\\n\\n.product-summary-card-qr-image {\\n object-fit: contain;\\n position: absolute;\\n bottom: 16px;\\n right: 16px;\\n width: 6%;\\n height: auto;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/* Browse Card (Want More) - TV-compatible CSS (no flex/grid) */\\n\\n.browse-card {\\n position: relative;\\n display: block;\\n background-color: var(--sdk-surface4);\\n padding: 24px;\\n box-sizing: border-box;\\n text-align: left;\\n}\\n\\n.browse-card-content {\\n display: inline-block;\\n width: 80%;\\n vertical-align: middle;\\n}\\n\\n/* Tag Line */\\n.browse-card-tagline {\\n margin-bottom: 4px;\\n width: 85%;\\n}\\n\\n.browse-card-caption {\\n width: 85%;\\n}\\n\\n.browse-card-logo-image {\\n width: calc(20% - 12px);\\n height: 100%;\\n vertical-align: middle;\\n margin-left: 12px;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/modules/espn/shop/view/components/BrowseCard/BrowseCard.styles.css\"],\"names\":[],\"mappings\":\"AAAA,+DAA+D;;AAE/D;EACE,kBAAkB;EAClB,cAAc;EACd,qCAAqC;EACrC,aAAa;EACb,sBAAsB;EACtB,gBAAgB;AAClB;;AAEA;EACE,qBAAqB;EACrB,UAAU;EACV,sBAAsB;AACxB;;AAEA,aAAa;AACb;EACE,kBAAkB;EAClB,UAAU;AACZ;;AAEA;EACE,UAAU;AACZ;;AAEA;EACE,uBAAuB;EACvB,YAAY;EACZ,sBAAsB;EACtB,iBAAiB;AACnB\",\"sourcesContent\":[\"/* Browse Card (Want More) - TV-compatible CSS (no flex/grid) */\\n\\n.browse-card {\\n position: relative;\\n display: block;\\n background-color: var(--sdk-surface4);\\n padding: 24px;\\n box-sizing: border-box;\\n text-align: left;\\n}\\n\\n.browse-card-content {\\n display: inline-block;\\n width: 80%;\\n vertical-align: middle;\\n}\\n\\n/* Tag Line */\\n.browse-card-tagline {\\n margin-bottom: 4px;\\n width: 85%;\\n}\\n\\n.browse-card-caption {\\n width: 85%;\\n}\\n\\n.browse-card-logo-image {\\n width: calc(20% - 12px);\\n height: 100%;\\n vertical-align: middle;\\n margin-left: 12px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".shop-promo-view {\\n display: block;\\n text-align: center;\\n padding: 32px;\\n background-size: cover;\\n background-position: center;\\n background-repeat: no-repeat;\\n}\\n\\n.shop-promo-logo {\\n padding: 30px 24px;\\n}\\n\\n.shop-promo-qr-code {\\n border-radius: 24px;\\n margin: 32px 0 48px 0;\\n width: 100%;\\n max-width: 50%;\\n}\\n\\n.shop-promo-description {\\n margin: 0 17px;\\n}\\n\\n.promo-view-disclaimer {\\n margin-top: 24px;\\n text-align: center;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/modules/espn/shop/view/components/ShopPromoView/ShopPromoView.styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,cAAc;EACd,kBAAkB;EAClB,aAAa;EACb,sBAAsB;EACtB,2BAA2B;EAC3B,4BAA4B;AAC9B;;AAEA;EACE,kBAAkB;AACpB;;AAEA;EACE,mBAAmB;EACnB,qBAAqB;EACrB,WAAW;EACX,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,gBAAgB;EAChB,kBAAkB;AACpB\",\"sourcesContent\":[\".shop-promo-view {\\n display: block;\\n text-align: center;\\n padding: 32px;\\n background-size: cover;\\n background-position: center;\\n background-repeat: no-repeat;\\n}\\n\\n.shop-promo-logo {\\n padding: 30px 24px;\\n}\\n\\n.shop-promo-qr-code {\\n border-radius: 24px;\\n margin: 32px 0 48px 0;\\n width: 100%;\\n max-width: 50%;\\n}\\n\\n.shop-promo-description {\\n margin: 0 17px;\\n}\\n\\n.promo-view-disclaimer {\\n margin-top: 24px;\\n text-align: center;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".shop-section-title {\\n margin: 0;\\n margin-bottom: 0 !important;\\n padding-top: 24px;\\n padding-bottom: 0;\\n margin-bottom: 16px !important;\\n text-align: center;\\n position: sticky;\\n top: 0;\\n z-index: 1;\\n font-size: 21px;\\n}\\n\\n/* Layout for product cards - TV compatible (no flex/grid) */\\n.shop-section-items > * {\\n display: inline-block;\\n margin-bottom: 16px;\\n}\\n\\n.shop-item-placeholder {\\n display: inline-block;\\n vertical-align: top;\\n width: 200px;\\n height: 250px;\\n padding: 16px;\\n background-color: rgba(255, 255, 255, 0.1);\\n border-radius: 8px;\\n color: #ffffff;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/modules/espn/shop/view/components/ShopSection/ShopSection.styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,SAAS;EACT,2BAA2B;EAC3B,iBAAiB;EACjB,iBAAiB;EACjB,8BAA8B;EAC9B,kBAAkB;EAClB,gBAAgB;EAChB,MAAM;EACN,UAAU;EACV,eAAe;AACjB;;AAEA,4DAA4D;AAC5D;EACE,qBAAqB;EACrB,mBAAmB;AACrB;;AAEA;EACE,qBAAqB;EACrB,mBAAmB;EACnB,YAAY;EACZ,aAAa;EACb,aAAa;EACb,0CAA0C;EAC1C,kBAAkB;EAClB,cAAc;AAChB\",\"sourcesContent\":[\".shop-section-title {\\n margin: 0;\\n margin-bottom: 0 !important;\\n padding-top: 24px;\\n padding-bottom: 0;\\n margin-bottom: 16px !important;\\n text-align: center;\\n position: sticky;\\n top: 0;\\n z-index: 1;\\n font-size: 21px;\\n}\\n\\n/* Layout for product cards - TV compatible (no flex/grid) */\\n.shop-section-items > * {\\n display: inline-block;\\n margin-bottom: 16px;\\n}\\n\\n.shop-item-placeholder {\\n display: inline-block;\\n vertical-align: top;\\n width: 200px;\\n height: 250px;\\n padding: 16px;\\n background-color: rgba(255, 255, 255, 0.1);\\n border-radius: 8px;\\n color: #ffffff;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--6-1!./ShopView.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../node_modules/css-loader/dist/cjs.js??ref--6-1!./ShopSection.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../node_modules/css-loader/dist/cjs.js??ref--6-1!./ProductSummaryCard.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from 'react';\nimport './ProductSummaryCard.styles.css';\nimport {\n withFocusable,\n WithFocusableProps,\n} from '@/external/spatial-navigation';\nimport { Direction, Layout } from '@/external/spatial-navigation/utils';\n\nimport { IShopProduct } from '../../../types';\nimport Image from '@/components/atoms/Image';\n\n// QR code image as base64 data URI for SDK bundle\nconst productSummaryQRCode =\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAACHElEQVR4Ae2YgXHCMAxFf3oM0A3qbsAGDRuwQWGC0gmgEwATkG7ABqQb0AlwN0gnSKXDpWqwiQU5IHe8O52xY8U/toyVoIwjRcPwPWMGvsOVc/UCE55GUe+RWU+/IkmSAg1DQxtPM7etZCfJAy4Mi25VDHZCF0g8T7NBPHMKgxn5jej3i8LPkl8PWoHYijOI516UBg3RiiXeTS9N9Veg3yvZ2tPOS9lHmA+yiae9SzYN+BRSU4dE5ahn7etH8Tao8dsE/IIO7u9s56NaYrrxlDcPWV/plzq/KZRoY5CXJsXfhojFOL8ulHSU/d/I3iGWIJKcbIhtfKlQCYyMV5+fpSLDEcQKHFP8PHvan2r8OPYWnvboEIkVmOI4DNkAJ9Des5iYQ7db80oZS+Np3FlJQhdcVqKaQd7l7v0lVfhxMjyDFhpoU+qYOL9JqWNzSEerN4lkCX8wp2gw9/MRK3AeyEoy7AvktCwTdb6eirrF/51eNCHwVxBnMbxxcnd87UHtPNtL4TOoCqQ+Q0SijUFOUBc4/mRRo81mPl1pcSa02cyork+5fRk3ool/56Juy8q3nkNZUqzAbiBN973oD8jGop7J10onbiWuW7JHhARWnmYd+MShTtVPQWriGZRPY3Dhw9uFyE7ToSW20FGI0or2b08/Gz1O5Vy8fTzS0rpk4ZFmdS9HDB1rp0Dj8JHpyzdNtWMMKZoXePuIfhZ+AArh47ArZrulAAAAAElFTkSuQmCC';\n\nexport type ProductSummaryCardProps = {\n product: IShopProduct;\n onEnterPress?: () => void;\n onArrowPress?: (direction: Direction) => void;\n onBecameFocused?: (layout: Layout) => void;\n};\n\nclass ProductSummaryCard extends React.Component<\n ProductSummaryCardProps & WithFocusableProps\n> {\n render() {\n const { product, focused } = this.props;\n const { image, name, price } = product;\n\n // Determine if this is a sale or clearance item\n const salePrice = price?.displayClearance || price?.displaySale;\n const isOnSale = !!salePrice;\n\n return (\n <div className=\"product-summary-card focus-ring\" data-focused={focused}>\n {/* Product Image */}\n {Boolean(image?.href) && (\n <div className=\"product-summary-card-image-container\">\n <Image\n src={image!.href}\n alt={name || 'Product'}\n className=\"product-summary-card-image\"\n />\n </div>\n )}\n\n {/* Text Content Container */}\n <div\n className=\"product-summary-card-content\"\n data-has-image={!!image?.href}\n >\n {/* Product Title - max 3 lines with ellipsis */}\n <div className=\"product-summary-card-title T05_ALT\">\n {name || 'Product Name'}\n </div>\n\n {/* Price */}\n <div className=\"product-summary-card-price-container\">\n {isOnSale ? (\n <div>\n <span className=\"product-summary-card-price-original T02 TEXT_200\">\n {price?.displayRetail || '$0.00'}\n </span>\n <span className=\"product-summary-card-price-sale T02 TEXT_200\">\n {salePrice}\n </span>\n <span className=\"product-summary-card-badge T02 FONT_BOLD\">\n SALE\n </span>\n </div>\n ) : (\n <span className=\"product-summary-card-price T02 TEXT_200\">\n {price?.displayRetail || '$0.00'}\n </span>\n )}\n </div>\n </div>\n\n {/* QR Code Image - shown on focus */}\n {focused && (\n <Image\n src={productSummaryQRCode}\n alt=\"QR Code\"\n className=\"product-summary-card-qr-image\"\n />\n )}\n </div>\n );\n }\n}\n\nexport default withFocusable<ProductSummaryCardProps>()(ProductSummaryCard);\n","import api from \"!../../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../node_modules/css-loader/dist/cjs.js??ref--6-1!./BrowseCard.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from 'react';\nimport './BrowseCard.styles.css';\nimport {\n withFocusable,\n WithFocusableProps,\n} from '@/external/spatial-navigation';\nimport { IShopBrowseCard } from '../../../types';\nimport Image from '@/components/atoms/Image';\n\nexport type BrowseCardProps = {\n browseCard: IShopBrowseCard;\n};\n\nexport class BrowseCardView extends React.Component<\n BrowseCardProps & WithFocusableProps\n> {\n render() {\n const { browseCard, focused } = this.props;\n const { name, caption, image, detail } = browseCard;\n\n return (\n <div\n className=\"browse-card focus-ring\"\n data-focused={focused}\n style={{\n backgroundImage: detail?.backgroundImage\n ? `url(${detail.backgroundImage})`\n : 'none',\n backgroundSize: 'cover',\n backgroundPosition: 'center',\n backgroundClip: 'padding-box',\n }}\n >\n <div className=\"browse-card-content\">\n {/* Tag Line */}\n {!!name && (\n <div className=\"browse-card-tagline T20 FONT_BOLD\">{name}</div>\n )}\n\n {/* Contextual Copy */}\n <div className=\"browse-card-caption T05_ALT\">\n {caption || 'Browse all merch'}\n </div>\n </div>\n\n {/* Team/League/Event Logo */}\n {image?.href && (\n <Image\n src={image.href}\n width={72}\n height={72}\n alt={name || 'Logo'}\n className=\"browse-card-logo-image\"\n />\n )}\n </div>\n );\n }\n}\n\nexport default withFocusable<BrowseCardProps>()(BrowseCardView);\n","import React from 'react';\nimport './ShopSection.styles.css';\nimport { IShopBrowseCard, IShopProduct, IShopSection } from '../../../types';\nimport ProductSummaryCard from '../ProductSummaryCard';\nimport { Direction, Layout } from '@/external/spatial-navigation/utils';\nimport { useScrollableContainer } from '@/components/core/ScrollableContainer';\nimport FocusableItem from '@/components/core/ScrollableContainer/FocusableItem';\nimport BrowseCard from '../BrowseCard';\n\nexport type ShopSectionProps = {\n sectionIndex: number;\n section: IShopSection;\n onArrowPress: (direction: Direction) => void;\n onItemClick: (\n item: IShopProduct | IShopBrowseCard,\n section: IShopSection,\n focusKey: string\n ) => void;\n};\n\nconst ShopSection: React.FC<ShopSectionProps> = ({\n section,\n sectionIndex,\n onArrowPress,\n onItemClick,\n}) => {\n const { scrollToFocusedElement } = useScrollableContainer();\n\n const onBecameFocused = (layout: Layout) => {\n scrollToFocusedElement(layout, {\n offsetTop: 40,\n });\n };\n\n const onEnterPress = (\n item: IShopProduct | IShopBrowseCard,\n section: IShopSection,\n focusKey: string\n ) => () => {\n onItemClick(item, section, focusKey);\n };\n\n return (\n <div className=\"shop-section\">\n <h2 className=\"shop-section-title TEXT_200\">{section.title}</h2>\n <div className=\"shop-section-items\">\n {section.items?.map((item, itemIndex) => {\n const focusKey = `shop-section-${sectionIndex}-item-${itemIndex}`;\n if (item.type === 'product') {\n return (\n <FocusableItem key={itemIndex}>\n <ProductSummaryCard\n product={item}\n onEnterPress={onEnterPress(item, section, focusKey)}\n onArrowPress={onArrowPress}\n onBecameFocused={onBecameFocused}\n focusKey={focusKey}\n />\n </FocusableItem>\n );\n } else if (item.type === 'browse') {\n return (\n <FocusableItem key={itemIndex}>\n <BrowseCard\n key={itemIndex}\n browseCard={item}\n onArrowPress={onArrowPress}\n onEnterPress={onEnterPress(item, section, focusKey)}\n onBecameFocused={onBecameFocused}\n focusKey={focusKey}\n />\n </FocusableItem>\n );\n } else {\n return null;\n }\n })}\n </div>\n </div>\n );\n};\n\nexport default ShopSection;\n","import api from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??ref--6-1!./ProductDetailView.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from 'react';\nimport './ProductDetailView.styles.css';\nimport { IShopBrowseCard, IShopProduct, isShopProduct } from '../../types';\nimport ProductSummaryCard from '../components/ProductSummaryCard';\nimport ActionButton from '@/components/molecules/ActionButton';\nimport Image from '@/components/atoms/Image';\nimport {\n withFocusable,\n WithFocusableProps,\n} from '@/external/spatial-navigation';\nimport BrowseCard from '../components/BrowseCard';\nimport { setImageDimensions } from '@/helpers/url';\n\nexport type ProductDetailViewProps = {\n product: IShopProduct | IShopBrowseCard;\n focusKey: string;\n onBecomeFocused?: () => void;\n};\n\nconst ProductDetail = (props: ProductDetailViewProps & WithFocusableProps) => {\n const { product, focused } = props;\n const detail = product.detail;\n\n const getBackgroundImage = () => {\n const bgImage = detail?.backgroundImage;\n if (!bgImage) {\n return null;\n }\n\n try {\n const url = new URL(bgImage);\n if (url.hostname.includes('stitcher')) {\n const newBgImage = setImageDimensions(bgImage, 570, 670);\n return newBgImage;\n }\n } catch {\n // Fallback to original check if URL parsing fails\n if (bgImage.includes('stitcher')) {\n const newBgImage = setImageDimensions(bgImage, 570, 670);\n return newBgImage;\n }\n }\n\n return bgImage;\n };\n\n const bgImage = getBackgroundImage();\n return (\n <div\n className=\"product-detail-card focus-ring\"\n data-focused={focused}\n style={{\n ...(bgImage && {\n backgroundImage: `url(${bgImage})`,\n backgroundSize: 'cover',\n backgroundClip: 'padding-box',\n backgroundPosition: 'center',\n }),\n }}\n >\n {/* Tag Line Title */}\n <div className=\"product-detail-title T70\">\n {detail?.title || 'Shop the look'}\n </div>\n\n {/* Mini Product Card (non-focusable) */}\n <div className=\"product-detail-product\">\n {isShopProduct(product) ? (\n <ProductSummaryCard product={product} focusable={false} />\n ) : (\n <BrowseCard\n browseCard={{\n ...product,\n name: undefined,\n caption: product.detail?.description,\n }}\n focusable={false}\n />\n )}\n </div>\n\n {/* QR Code */}\n {detail?.qrCode && (\n <div className=\"product-detail-qr\">\n <Image\n src={detail.qrCode}\n alt=\"QR Code\"\n className=\"product-detail-qr-image\"\n />\n </div>\n )}\n\n {/* User Instruction */}\n <div className=\"product-detail-instruction T04\">{detail?.link?.text}</div>\n\n {/* Dismiss Button */}\n <ActionButton data-focused={focused}>Dismiss</ActionButton>\n </div>\n );\n};\n\nconst FocusableProductDetail = withFocusable<ProductDetailViewProps>()(\n ProductDetail\n);\n\nconst ProductDetailView = (\n props: ProductDetailViewProps & WithFocusableProps\n) => {\n return (\n <div className=\"product-detail-view-wrapper\">\n <FocusableProductDetail {...props} />\n {/* Legal Disclaimer */}\n {props.product.detail?.disclaimer && (\n <div className=\"product-detail-disclaimer T02 TEXT_200 FONT_BOLD\">\n {props.product.detail.disclaimer}\n </div>\n )}\n </div>\n );\n};\n\nexport default ProductDetailView;\n","import api from \"!../../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../node_modules/css-loader/dist/cjs.js??ref--6-1!./ShopPromoView.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from 'react';\nimport {\n withFocusable,\n WithFocusableProps,\n} from '@/external/spatial-navigation';\nimport './ShopPromoView.styles.css';\nimport Image from '@/components/atoms/Image';\nimport { IShopDefaultItem } from '../../../types';\n\ntype Props = {\n promoData: IShopDefaultItem;\n};\n\nconst ShopPromoView = (props: Props & WithFocusableProps) => {\n const promo = props.promoData;\n\n return (\n <div\n className=\"shop-promo-view focus-ring T20\"\n data-focused={props.focused}\n style={{ backgroundImage: `url(${promo.detail?.backgroundImage})` }}\n >\n <Image\n src={promo.image?.href}\n alt=\"Promo Logo\"\n className=\"shop-promo-logo\"\n />\n <div className=\"shop-promo-title T30 FONT_BOLD\">\n {promo.detail?.title}\n </div>\n <Image\n src={promo.detail?.qrCode}\n alt=\"QR Code\"\n className=\"shop-promo-qr-code\"\n />\n <p className=\"shop-promo-description T20 FONT_BOLD\">\n {promo.detail?.link?.text}\n </p>\n </div>\n );\n};\n\nconst FocusablePromoView = withFocusable<Props>()(ShopPromoView);\n\nconst ShopPromoViewWrapper = (props: Props & WithFocusableProps) => {\n return (\n <div>\n <FocusablePromoView {...props} />\n <div className=\"promo-view-disclaimer T02 TEXT_200 FONT_BOLD\">\n {props.promoData.detail?.disclaimer}\n </div>\n </div>\n );\n};\n\nexport default ShopPromoViewWrapper;\n","import React, { Component } from 'react';\nimport './ShopView.styles.css';\nimport ScrollableContainer from '@/components/core/ScrollableContainer';\nimport SDK from '@/index';\nimport { Direction } from '@/external/spatial-navigation/utils';\nimport TabLoadErrorView from '../../components/TabLoadError';\nimport ShopViewModel, { ShopErrorState } from '../view-model/ShopViewModel';\nimport {\n IShopProduct,\n IShopSection,\n IShopBrowseCard,\n isShopProduct,\n IShopDefaultItem,\n} from '../types';\nimport ShopSection from './components/ShopSection';\nimport ProductDetailView from './ProductDetailView';\nimport ShopPromoView from './components/ShopPromoView';\nimport { setupMaxHeightToBottom } from '@/hooks/useMaxHeightToBottom';\n\ntype Unsubscribe = () => void;\n\ninterface State {\n container: HTMLDivElement | null;\n sections: IShopSection[];\n isDataLoading: boolean;\n errorState: ShopErrorState;\n selectedItem: IShopProduct | IShopBrowseCard | null;\n selectedShopSection: IShopSection | null;\n selectedItemFocusKey: string;\n promoData: IShopDefaultItem | null;\n}\n\nclass ShopView extends Component<{}, State> {\n private container: HTMLDivElement | null = null;\n private sectionsListener: Unsubscribe | null = null;\n private isDataLoadingListener: Unsubscribe | null = null;\n private errorStateListener: Unsubscribe | null = null;\n private promoDataListener: Unsubscribe | null = null;\n private maxHeightCleanup: Unsubscribe | null = null;\n private vm: ShopViewModel | null;\n\n constructor(props: {}) {\n super(props);\n this.vm = SDK.getMaestroEventViewModel()\n .shopViewModel as ShopViewModel | null;\n\n this.state = {\n container: null,\n sections: this.viewModel.sections.value,\n isDataLoading: this.viewModel.isDataLoading.value,\n errorState: this.viewModel.errorState.value,\n selectedItem: null,\n selectedItemFocusKey: '',\n promoData: this.viewModel.promoData.value,\n selectedShopSection: null,\n };\n }\n\n get viewModel() {\n if (!this.vm) {\n throw new Error('ShopViewModel is not initialized');\n }\n\n return this.vm;\n }\n\n componentDidMount(): void {\n this.setState({\n container: this.container,\n });\n\n this.maxHeightCleanup = setupMaxHeightToBottom(() => this.container);\n\n this.sectionsListener = this.viewModel.sections.subscribe((sections) => {\n this.setState({ sections });\n });\n\n this.isDataLoadingListener = this.viewModel.isDataLoading.subscribe(\n (isDataLoading) => {\n this.setState({ isDataLoading });\n }\n );\n\n this.errorStateListener = this.viewModel.errorState.subscribe(\n (errorState) => {\n this.setState({ errorState });\n }\n );\n\n this.promoDataListener = this.viewModel.promoData.subscribe((promoData) => {\n this.setState({ promoData });\n });\n\n // Initialize the view model\n this.viewModel.init();\n }\n\n componentWillUnmount() {\n this.sectionsListener && this.sectionsListener();\n this.isDataLoadingListener && this.isDataLoadingListener();\n this.errorStateListener && this.errorStateListener();\n this.promoDataListener && this.promoDataListener();\n this.maxHeightCleanup && this.maxHeightCleanup();\n\n // Clean up the view model\n this.viewModel.cleanup();\n }\n\n clearTabLoadFailure = () => {\n this.viewModel.clearTabLoadFailure();\n };\n\n onArrowPress = (d: Direction) => {\n if (d === 'left') {\n SDK.getMaestroEventViewModel().deliverFocus();\n }\n };\n\n onBecameFocused = () => {\n if (this.container) {\n this.container.scrollTop = 0;\n }\n };\n\n openItemDetail = (\n selectedItem: IShopProduct | IShopBrowseCard,\n selectedShopSection: IShopSection,\n selectedItemFocusKey: string\n ) => {\n const card = isShopProduct(selectedItem)\n ? 'product_summary'\n : ('want more' as const);\n this.viewModel.trackItemClick(card, selectedItem, selectedShopSection);\n\n this.setState(\n { selectedItem, selectedItemFocusKey, selectedShopSection },\n () => {\n SDK.getMaestroEventViewModel().navigation.setFocus(\n 'product-detail-view'\n );\n }\n );\n };\n\n closeProductDetail = () => {\n if (!this.state.selectedItem || !this.state.selectedShopSection) {\n return;\n }\n\n this.viewModel.trackItemClick(\n 'product_detail',\n this.state.selectedItem,\n this.state.selectedShopSection\n );\n\n this.setState({ selectedItem: null, selectedShopSection: null }, () => {\n if (this.state.selectedItemFocusKey) {\n // Added a small delay so all the focusable items are rendered and we have the ref of them\n setTimeout(() => {\n SDK.getMaestroEventViewModel().navigation.setFocus(\n this.state.selectedItemFocusKey\n );\n }, 100);\n }\n });\n };\n\n trackPromoEnterPress = () => {\n this.viewModel.trackItemClick('fallback', null, null);\n };\n\n renderContent = () => {\n const { sections, errorState, selectedItem, promoData } = this.state;\n\n // Show product detail view if a product is selected\n if (selectedItem) {\n return (\n <ProductDetailView\n product={selectedItem}\n onBecameFocused={this.onBecameFocused}\n onEnterPress={this.closeProductDetail}\n onArrowPress={this.onArrowPress}\n focusKey=\"product-detail-view\"\n />\n );\n }\n\n // Show error state if tab load failed\n if (errorState === 'tabLoadFailure') {\n return (\n <TabLoadErrorView\n onEnterPress={this.clearTabLoadFailure}\n onArrowPress={this.onArrowPress}\n />\n );\n }\n\n // Show promo view if shop is empty and promo data is available\n if ((errorState === 'emptyShop' || sections.length === 0) && promoData) {\n return (\n <ShopPromoView\n promoData={promoData}\n onEnterPress={this.trackPromoEnterPress}\n />\n );\n }\n\n // Render sections\n return sections.map((section, index) => (\n <ShopSection\n key={index}\n sectionIndex={index}\n section={section}\n onArrowPress={this.onArrowPress}\n onItemClick={this.openItemDetail}\n />\n ));\n };\n\n setContainerRef = (e: HTMLDivElement | null) => {\n if (e && !this.state.container) {\n this.setState({ container: e });\n }\n\n if (this.container !== e) {\n this.container = e;\n if (this.maxHeightCleanup) {\n this.maxHeightCleanup();\n }\n if (this.container) {\n this.maxHeightCleanup = setupMaxHeightToBottom(() => this.container);\n }\n }\n };\n\n render() {\n return (\n <ScrollableContainer\n scrollableContainerRef={this.state.container}\n containerTopOffset={40}\n data-has-product-selected={!!this.state.selectedItem}\n data-has-error={this.state.errorState !== 'none'}\n style={{\n maxHeight: 'auto',\n }}\n >\n <div className=\"shop-view\" ref={this.setContainerRef}>\n {this.renderContent()}\n <div className=\"shop-bottom-padding\" />\n </div>\n </ScrollableContainer>\n );\n }\n}\n\nexport default ShopView;\n","import ShopView from './ShopView';\n\nexport default ShopView;\n"],"sourceRoot":""}