{"version":3,"file":"site.d7cc5e4ad4a0693df9ef.js?ssi=0","mappings":"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","sources":["webpack://@logos/commerceweb-frontend/./Scripts/site/components/menu/chevron-small.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/shared/svgs/alipay_button.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/shared/svgs/alipay_small.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/shared/svgs/applepay_button.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/shared/svgs/applepay_small.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/shared/svgs/checkmark.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/shared/svgs/chevron-small.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/shared/svgs/chevron.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/shared/svgs/close.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/shared/svgs/credit-card.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/shared/svgs/external-link.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/shared/svgs/info-icon.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/shared/svgs/paypal_button.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/shared/svgs/paypal_small.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/shared/svgs/phone.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/shared/svgs/question-icon.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/shared/svgs/wechatpayQR_small.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/shared/svgs/wechatpay_button.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/builder/types.ts","webpack://@logos/commerceweb-frontend/./Scripts/site/builder/hooks.ts","webpack://@logos/commerceweb-frontend/./Scripts/site/cart/utility/eventaggregator.js","webpack://@logos/commerceweb-frontend/./Scripts/site/clients/cart-client.ts","webpack://@logos/commerceweb-frontend/./Scripts/site/clients/survey-client.js","webpack://@logos/commerceweb-frontend/./Scripts/site/clients/wishlist-client.js","webpack://@logos/commerceweb-frontend/./Scripts/site/commerce-contexts/cart.tsx","webpack://@logos/commerceweb-frontend/./Scripts/site/commerce-contexts/product.tsx","webpack://@logos/commerceweb-frontend/./Scripts/site/util/get-sku-id-from-add-to-cart-url.ts","webpack://@logos/commerceweb-frontend/./Scripts/site/commerce-contexts/resources.tsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/builder/hooks/use-on-wishlist-toggle.ts","webpack://@logos/commerceweb-frontend/./Scripts/site/commerce-contexts/wishlist.tsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/add-to-wish-list/events.js","webpack://@logos/commerceweb-frontend/./Scripts/site/components/add-to-wish-list/hooks.tsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/add-to-wish-list/wishlist-context-provider.tsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/builder/dynamic-stylesheets-event.ts","webpack://@logos/commerceweb-frontend/./Scripts/site/components/builder/dynamic-stylesheets.tsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/builder/builder-page.tsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/builder/builder-sdk.ts","webpack://@logos/commerceweb-frontend/./Scripts/site/components/builder/builder-section.tsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/builder/contained-resources-mappers.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/commerce-contexts/author.tsx","webpack://@logos/commerceweb-frontend/./Scripts/site/commerce-contexts/blog.tsx","webpack://@logos/commerceweb-frontend/./Scripts/site/hooks/use-cache.tsx","webpack://@logos/commerceweb-frontend/./Scripts/site/commerce-contexts/contained-resources.tsx","webpack://@logos/commerceweb-frontend/./Scripts/site/commerce-contexts/referral.tsx","webpack://@logos/commerceweb-frontend/./Scripts/site/commerce-contexts/subscription.tsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/builder/provider.tsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/builder/custom-components-lib.ts","webpack://@logos/commerceweb-frontend/./Scripts/site/components/builder/render-builder-content.tsx","webpack://@logos/commerceweb-frontend/./Scripts/site/util/get-group-id-from-location.ts","webpack://@logos/commerceweb-frontend/./Scripts/site/components/builder/use-add-to-cart-request.ts","webpack://@logos/commerceweb-frontend/./Scripts/site/components/cart/notifications/types.ts","webpack://@logos/commerceweb-frontend/./Scripts/site/components/cart/notifications/use-cart-notifications-events.tsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/checkout-shared/useCartEffect.js","webpack://@logos/commerceweb-frontend/./Scripts/site/components/error-boundary/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/events-tracking/events-tracking-context.tsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/notifications/client-notifications.tsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/notifications/Error.component.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/notifications/container-height.ts","webpack://@logos/commerceweb-frontend/./Scripts/site/components/notifications/cookie-notification-context.tsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/notifications/index.tsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/notifications/notification-registry.ts","webpack://@logos/commerceweb-frontend/./Scripts/site/hooks/use-swr.ts","webpack://@logos/commerceweb-frontend/./Scripts/site/components/per-user-data/per-user-data-context.tsx","webpack://@logos/commerceweb-frontend/./Scripts/site/hooks/use-cart-contents.ts","webpack://@logos/commerceweb-frontend/./Scripts/site/components/shared/content-edit-link/svgs/edit_pencil_white.component.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/shared/content-edit-link/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/shared/content-edit-link/index.less?bc13","webpack://@logos/commerceweb-frontend/./Scripts/site/components/shared/drawer/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/shared/ratings/review-data.ts","webpack://@logos/commerceweb-frontend/./Scripts/site/views/shared/survey/components/checkboxorradiogroup.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/shared/survey/survey-content.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/shared/survey/survey-incomplete-footer.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/shared/survey/survey-complete-footer.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/shared/survey/survey-footer.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/shared/survey/survey-prop-type.js","webpack://@logos/commerceweb-frontend/./Scripts/site/components/shared/svgs/close.component.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/shared/tooltip/index.less?1047","webpack://@logos/commerceweb-frontend/./Scripts/site/components/shared/tooltip/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/add-to-wish-list/forms/add-form-modes.js","webpack://@logos/commerceweb-frontend/./Scripts/site/components/add-to-wish-list/forms/add-form-inputs.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/add-to-wish-list/forms/add-form-inputs.less?d51f","webpack://@logos/commerceweb-frontend/./Scripts/site/components/add-to-wish-list/add-drawer.less?a247","webpack://@logos/commerceweb-frontend/./Scripts/site/components/add-to-wish-list/add-drawer.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/add-to-wish-list/hooks/use-wish-list-form-handler.js","webpack://@logos/commerceweb-frontend/./Scripts/site/components/add-to-wish-list/hooks/use-wish-list-form.ts","webpack://@logos/commerceweb-frontend/./Scripts/site/components/add-to-wish-list/add-modal.less?7f1a","webpack://@logos/commerceweb-frontend/./Scripts/site/components/add-to-wish-list/add-modal.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/shared/wish-list/shared-wish-list-form-provider.tsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/static-data/static-data-context.tsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/stripe/stripe.js","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/cta-buttons/link-button.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/cta-buttons/styled.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/cta-buttons/cta-button.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/cta-buttons/cta-menu-button.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/mobile-mega-menu/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/universal-header-child-components.js","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/utils.js","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/universal-header-top-half/styled.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/universal-header-top-half/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/universal-header-lower-half/styled.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/universal-header-lower-half/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/core.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/language-selector/flags/united-states-of-america.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/language-selector/flags/canada.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/language-selector/flags/united-kingdom.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/language-selector/flags/australia.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/language-selector/flags/germany.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/language-selector/flags/south-africa.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/language-selector/flags/south-korea.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/language-selector/flags/china.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/language-selector/flags/france.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/language-selector/flags/brazil.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/language-selector/flags/mexico.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/language-selector/flags/philippines.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/language-selector/flags/singapore.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/language-selector/flags/india.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/language-selector/flags/colombia.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/language-selector/flags/spain.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/language-selector/flags/hong-kong.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/language-selector/flags/taiwan.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/language-selector/flags/worldwide.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/language-selector/culturePreferences.js","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/language-selector/styled.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/language-selector/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/mega-menu/render-mode-context.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/mobile-mega-menu/styled.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/shared/chevron-icon.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/svgs/cart.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/svgs/chevron-down.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/svgs/close.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/svgs/download-chevron.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/svgs/globe.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/svgs/handset.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/svgs/large-magnifying-glass.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/svgs/profile.svg","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/universal-header-context.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/universal-header/user-subscribe-button/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/hooks/use-author.tsx","webpack://@logos/commerceweb-frontend/./Scripts/site/hooks/use-batch.tsx","webpack://@logos/commerceweb-frontend/./Scripts/site/hooks/use-data-loader.ts","webpack://@logos/commerceweb-frontend/./Scripts/site/lazysizes-script-handler.js","webpack://@logos/commerceweb-frontend/./Scripts/site/localization/use-localization.tsx","webpack://@logos/commerceweb-frontend/./Scripts/site/location/location-context.tsx","webpack://@logos/commerceweb-frontend/./Scripts/site/route-context/index.tsx","webpack://@logos/commerceweb-frontend/./Scripts/site/toplevel-components.js","webpack://@logos/commerceweb-frontend/./Scripts/site/toplevel-renderer.js","webpack://@logos/commerceweb-frontend/./Scripts/site/with-providers.js","webpack://@logos/commerceweb-frontend/./Scripts/site/common.js","webpack://@logos/commerceweb-frontend/./Scripts/site/components/ajax-buy-button/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/menu/menu-utilities.js","webpack://@logos/commerceweb-frontend/./Scripts/site/components/menu/menu-item.less?48c3","webpack://@logos/commerceweb-frontend/./Scripts/site/components/menu/menu-item.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/menu/menu-section.less?ac13","webpack://@logos/commerceweb-frontend/./Scripts/site/components/menu/menu-section.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/menu/menu-column.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/menu/menu-column.less?bbda","webpack://@logos/commerceweb-frontend/./Scripts/site/components/menu/top-level-menu-item.less?f3de","webpack://@logos/commerceweb-frontend/./Scripts/site/components/menu/top-level-menu-item.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/menu/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/notifications/global-utility.ts","webpack://@logos/commerceweb-frontend/./Scripts/site/browser-globals.js","webpack://@logos/commerceweb-frontend/./Scripts/site/site.js","webpack://@logos/commerceweb-frontend/./Scripts/site/util/brand-name-context.tsx","webpack://@logos/commerceweb-frontend/./Scripts/site/util/cn.ts","webpack://@logos/commerceweb-frontend/./Scripts/site/util/email.js","webpack://@logos/commerceweb-frontend/./Scripts/site/util/fetch.ts","webpack://@logos/commerceweb-frontend/./Scripts/site/util/hooks/use-screensize.ts","webpack://@logos/commerceweb-frontend/./Scripts/site/util/map-pricing-to-user-product-data.ts","webpack://@logos/commerceweb-frontend/./Scripts/site/util/mobile-utility.js","webpack://@logos/commerceweb-frontend/./Scripts/site/util/test-utility.js","webpack://@logos/commerceweb-frontend/./Scripts/site/util/theme.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/util/url.ts","webpack://@logos/commerceweb-frontend/./Scripts/site/views/shared/survey.js","webpack://@logos/commerceweb-frontend/./Scripts/site/components/shared/survey/survey-header.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/shared/survey/all-survey-content.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/views/shared/survey/survey.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/views/subscription/subscriptionSummary.js","webpack://@logos/commerceweb-frontend/webpack/bootstrap","webpack://@logos/commerceweb-frontend/webpack/runtime/css loading","webpack://@logos/commerceweb-frontend/webpack/runtime/chunk loaded","webpack://@logos/commerceweb-frontend/webpack/runtime/compat get default export","webpack://@logos/commerceweb-frontend/webpack/runtime/create fake namespace object","webpack://@logos/commerceweb-frontend/webpack/runtime/define property getters","webpack://@logos/commerceweb-frontend/webpack/runtime/ensure chunk","webpack://@logos/commerceweb-frontend/webpack/runtime/get javascript chunk filename","webpack://@logos/commerceweb-frontend/webpack/runtime/get mini-css chunk filename","webpack://@logos/commerceweb-frontend/webpack/runtime/hasOwnProperty shorthand","webpack://@logos/commerceweb-frontend/webpack/runtime/load script","webpack://@logos/commerceweb-frontend/webpack/runtime/make namespace object","webpack://@logos/commerceweb-frontend/webpack/runtime/set anonymous default export name","webpack://@logos/commerceweb-frontend/webpack/runtime/publicPath","webpack://@logos/commerceweb-frontend/webpack/runtime/jsonp chunk loading","webpack://@logos/commerceweb-frontend/webpack/runtime/nonce","webpack://@logos/commerceweb-frontend/webpack/startup"],"sourcesContent":["module.exports = \"data:image/svg+xml,%3csvg width='12px' height='12px' viewBox='0 0 12 12' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:sketch='http://www.bohemiancoding.com/sketch/ns'%3e%3c!--Generator: Sketch 3.2.2 (9983) - http://www.bohemiancoding.com/sketch--%3e%3cdesc%3eCreated with Sketch.%3c/desc%3e%3cdefs/%3e%3cg id='Icons_V2' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' sketch:type='MSPage'%3e%3cg id='Chevron_Small' sketch:type='MSArtboardGroup' stroke-width='1.5' stroke='%236C6C6C'%3e%3cpath d='M9,4 L5.50004189,8 L2,4.02208098' sketch:type='MSShapeGroup'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e\"","module.exports = \"data:image/svg+xml,%3csvg xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:cc='http://creativecommons.org/ns%23' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns%23' xmlns:svg='http://www.w3.org/2000/svg' xmlns='http://www.w3.org/2000/svg' id='svg4458' version='1.1' height='26px' viewBox='0 0 149.36909 37.663967'%3e%3cdefs id='defs4452'/%3e%3cmetadata id='metadata4455'%3e%3crdf:RDF%3e%3ccc:Work rdf:about=''%3e%3cdc:format%3eimage/svg+xml%3c/dc:format%3e%3cdc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/%3e%3cdc:title/%3e%3c/cc:Work%3e%3c/rdf:RDF%3e%3c/metadata%3e%3cg transform='translate(13.452402,-84.644208)' id='layer1'%3e%3cg transform='matrix(0.35277777,0,0,-0.35277777,17.912364,84.644208)' id='g3989'%3e%3cpath id='path3991' style='fill:%231677ff;fill-opacity:1;fill-rule:nonzero;stroke:none' d='m 0,0 h -71.95 c -9.37,0 -16.958,-7.655 -16.958,-17.104 v -72.559 c 0,-9.443 7.588,-17.101 16.958,-17.101 H 0 c 9.368,0 16.952,7.658 16.952,17.101 v 72.559 C 16.952,-7.655 9.368,0 0,0'/%3e%3c/g%3e%3cg transform='matrix(0.35277777,0,0,-0.35277777,-3.3614425,113.60801)' id='g3993'%3e%3cpath id='path3995' style='fill:%23ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none' d='m 0,0 c -16.469,0 -21.338,13.083 -13.199,20.241 2.716,2.419 7.679,3.6 10.325,3.865 9.783,0.975 18.839,-2.789 29.526,-8.05 C 19.14,6.173 9.572,0 0,0 m 58.554,15.064 c -4.236,1.431 -9.92,3.619 -16.251,5.929 3.802,6.666 6.839,14.257 8.835,22.507 H 30.271 v 7.58 h 25.562 v 4.231 H 30.271 V 67.947 H 19.839 c -1.83,0 -1.83,-1.822 -1.83,-1.822 V 55.311 H -7.844 V 51.08 H 18.009 V 43.5 H -3.336 V 39.27 H 38.062 C 36.547,34.006 34.513,29.064 32.099,24.574 18.666,29.044 4.332,32.667 -4.673,30.437 -10.432,29.006 -14.141,26.452 -16.32,23.776 -26.321,11.504 -19.148,-7.136 1.973,-7.136 c 12.488,0 24.518,7.022 33.842,18.594 C 49.722,4.716 77.256,-6.86 77.256,-6.86 V 9.638 c 0,0 -3.458,0.278 -18.702,5.426'/%3e%3c/g%3e%3cg transform='matrix(0.35277777,0,0,-0.35277777,67.639214,90.15791)' id='g3997'%3e%3cpath id='path3999' style='fill:%231677ff;fill-opacity:1;fill-rule:nonzero;stroke:none' d='m 0,0 c 0,-5.523 4.036,-9.241 9.666,-9.241 5.63,0 9.666,3.718 9.666,9.241 0,5.417 -4.036,9.242 -9.666,9.242 C 4.036,9.242 0,5.417 0,0'/%3e%3c/g%3e%3cpath id='path4001' style='fill:%23000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775' d='m 58.121127,115.07721 h 5.920669 V 87.722087 h -5.920669 z'/%3e%3cg transform='matrix(0.35277777,0,0,-0.35277777,39.122104,105.59659)' id='g4003'%3e%3cpath id='path4005' style='fill:%23000000;fill-opacity:1;fill-rule:nonzero;stroke:none' d='M 0,0 9.984,34.522 H 10.41 L 19.864,0 Z M 24.432,48.012 H 1.912 l -25.175,-74.887 h 15.509 l 4.249,14.659 h 26.662 l 4.035,-14.659 h 19.865 z'/%3e%3c/g%3e%3cpath id='path4007' style='fill:%23000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775' d='m 68.088862,115.07721 h 5.920669 V 94.991814 h -5.920669 z'/%3e%3cg transform='matrix(0.35277777,0,0,-0.35277777,135.87965,95.029286)' id='g4009'%3e%3cpath id='path4011' style='fill:%23000000;fill-opacity:1;fill-rule:nonzero;stroke:none' d='m 0,0 0.105,0.106 h -15.827 l -9.984,-34.628 h -0.531 L -37.709,0.106 h -18.803 l 22.627,-57.148 -9.454,-17.42 v -0.425 h 14.765 z'/%3e%3c/g%3e%3cg transform='matrix(0.35277777,0,0,-0.35277777,84.990094,111.62983)' id='g4013'%3e%3cpath id='path4015' style='fill:%23000000;fill-opacity:1;fill-rule:nonzero;stroke:none' d='m 0,0 c -1.911,0 -3.718,0.212 -5.735,0.85 v 30.804 c 3.505,2.443 6.373,3.612 9.984,3.612 6.268,0 11.26,-4.993 11.26,-15.615 C 15.509,6.055 8.18,0 0,0 m 10.623,48.331 c -6.161,0 -10.941,-2.337 -16.358,-6.798 v 5.63 H -22.52 V -27.83 h 16.785 v 18.589 c 3.186,-0.85 6.16,-1.275 9.772,-1.275 14.977,0 28.468,11.047 28.468,30.698 0,17.633 -9.774,28.149 -21.882,28.149'/%3e%3c/g%3e%3cg transform='matrix(0.35277777,0,0,-0.35277777,108.8615,110.20581)' id='g4017'%3e%3cpath id='path4019' style='fill:%23000000;fill-opacity:1;fill-rule:nonzero;stroke:none' d='m 0,0 c -4.461,-2.443 -7.012,-3.399 -9.984,-3.399 -4.037,0 -6.586,2.655 -6.586,6.904 0,1.594 0.318,3.187 1.592,4.461 2.019,2.019 5.95,3.506 14.978,5.63 z m 16.783,0.425 v 23.793 c 0,12.96 -7.647,20.076 -21.137,20.076 -8.605,0 -14.553,-1.486 -25.388,-4.779 l 2.973,-13.066 c 9.879,4.462 14.235,6.374 18.803,6.374 5.524,0 7.966,-3.93 7.966,-9.985 v -0.425 c -19.227,-3.612 -25.175,-5.63 -28.893,-9.348 -2.761,-2.762 -3.929,-6.692 -3.929,-11.259 0,-10.941 8.498,-16.784 16.465,-16.784 5.948,0 10.727,2.231 17.208,7.118 l 1.168,-5.949 h 16.783 z'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e\"","module.exports = \"data:image/svg+xml,%3csvg width='288' height='304' viewBox='0 0 76.199998 80.433335' xmlns='http://www.w3.org/2000/svg' xmlns:svg='http://www.w3.org/2000/svg'%3e%3cg id='g315' transform='matrix(0.35277777,0,0,-0.35277777,26.681987,57.685876)'%3e%3cpath d='m 0,0 c 0,-3.999 2.922,-6.69 6.997,-6.69 4.074,0 6.998,2.691 6.998,6.69 0,3.921 -2.924,6.69 -6.998,6.69 C 2.922,6.69 0,3.921 0,0' style='fill:%231677ff;fill-opacity:1;fill-rule:nonzero;stroke:none' id='path317'/%3e%3c/g%3e%3cpath d='m 19.791461,75.725276 h 4.285897 v -19.80283 h -4.285897 z' style='fill:%23000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.352778' id='path319'/%3e%3cg id='g321' transform='matrix(0.35277777,0,0,-0.35277777,6.0382782,68.862296)'%3e%3cpath d='M 0,0 7.228,24.991 H 7.535 L 14.379,0 Z M 17.686,34.757 H 1.384 l -18.225,-54.212 h 11.227 l 3.076,10.612 h 19.301 l 2.922,-10.612 h 14.378 z' style='fill:%23000000;fill-opacity:1;fill-rule:nonzero;stroke:none' id='path323'/%3e%3c/g%3e%3cpath d='m 27.00753,75.725276 h 4.285545 V 61.185186 H 27.00753 Z' style='fill:%23000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.352778' id='path325'/%3e%3cg id='g327' transform='matrix(0.35277777,0,0,-0.35277777,76.082236,61.212456)'%3e%3cpath d='m 0,0 0.076,0.077 h -11.457 l -7.228,-25.068 h -0.385 l -8.304,25.068 h -13.611 l 16.379,-41.37 -6.844,-12.611 v -0.307 h 10.687 z' style='fill:%23000000;fill-opacity:1;fill-rule:nonzero;stroke:none' id='path329'/%3e%3c/g%3e%3cg id='g331' transform='matrix(0.35277777,0,0,-0.35277777,39.242466,73.229796)'%3e%3cpath d='m 0,0 c -1.384,0 -2.69,0.154 -4.152,0.615 v 22.3 c 2.538,1.769 4.614,2.614 7.228,2.614 4.536,0 8.152,-3.613 8.152,-11.303 C 11.228,4.383 5.921,0 0,0 m 7.689,34.988 c -4.46,0 -7.919,-1.692 -11.841,-4.922 v 4.076 h -12.15 v -54.288 h 12.15 V -6.69 c 2.306,-0.615 4.46,-0.922 7.075,-0.922 10.842,0 20.606,7.997 20.606,22.222 0,12.765 -7.073,20.378 -15.84,20.378' style='fill:%23000000;fill-opacity:1;fill-rule:nonzero;stroke:none' id='path333'/%3e%3c/g%3e%3cg id='g335' transform='matrix(0.35277777,0,0,-0.35277777,56.523426,72.198866)'%3e%3cpath d='m 0,0 c -3.229,-1.769 -5.075,-2.461 -7.229,-2.461 -2.921,0 -4.767,1.922 -4.767,4.999 0,1.153 0.23,2.306 1.154,3.229 C -9.381,7.228 -6.536,8.305 0,9.842 Z m 12.148,0.308 v 17.224 c 0,9.382 -5.536,14.533 -15.3,14.533 -6.229,0 -10.536,-1.076 -18.378,-3.46 l 2.152,-9.458 c 7.15,3.229 10.305,4.614 13.61,4.614 C -1.77,23.761 0,20.916 0,16.533 v -0.308 c -13.918,-2.615 -18.226,-4.076 -20.915,-6.767 -2,-1.999 -2.847,-4.844 -2.847,-8.151 0,-7.92 6.153,-12.149 11.92,-12.149 4.307,0 7.767,1.614 12.457,5.152 l 0.846,-4.307 h 12.148 z' style='fill:%23000000;fill-opacity:1;fill-rule:nonzero;stroke:none' id='path337'/%3e%3c/g%3e%3cg id='g339' transform='matrix(0.35277777,0,0,-0.35277777,54.371266,-0.04823421)'%3e%3cpath d='m 0,0 h -93.982 c -12.241,0 -22.151,-10 -22.151,-22.342 v -94.777 c 0,-12.335 9.91,-22.338 22.151,-22.338 H 0 c 12.235,0 22.143,10.003 22.143,22.338 v 94.777 C 22.143,-10 12.235,0 0,0' style='fill:%231677ff;fill-opacity:1;fill-rule:nonzero;stroke:none' id='path341'/%3e%3c/g%3e%3cpath d='m 26.583456,37.784606 c -7.589308,0 -9.832975,-6.02897 -6.082594,-9.32709 1.251302,-1.11443 3.539066,-1.65876 4.757914,-1.78082 4.507794,-0.44944 8.681155,1.28517 13.60593,3.70945 -3.46181,4.55366 -7.87047,7.39846 -12.28125,7.39846 m 26.9808,-6.94161 c -1.95086,-0.65899 -4.57095,-1.66723 -7.48771,-2.73191 1.7526,-3.07164 3.15101,-6.57013 4.0707,-10.37131 h -9.6146 v -3.49286 h 11.77854 v -1.94945 H 40.532646 V 6.4745158 h -4.80766 c -0.84384,0 -0.84384,0.83926 -0.84384,0.83926 V 12.297466 H 22.968542 v 1.94945 h 11.912604 v 3.49286 h -9.835095 v 1.94945 h 19.076105 c -0.69885,2.42534 -1.63548,4.70288 -2.74814,6.77157 -6.18949,-2.05987 -12.794896,-3.72922 -16.943915,-2.70158 -2.653242,0.65935 -4.363156,1.83656 -5.367161,3.06917 -4.608689,5.65503 -1.30422,14.24481 8.429272,14.24481 5.754863,0 11.298414,-3.23638 15.594894,-8.56862 6.4075,3.10692 19.09551,8.44127 19.09551,8.44127 v -7.60236 c 0,0 -1.59315,-0.12806 -8.61836,-2.50049' style='fill:%23ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.352778' id='path345'/%3e%3c/svg%3e\"","module.exports = \"data:image/svg+xml,%3csvg viewBox='5 7 30 13' height='26px' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M10.9197 8.61284C11.2622 8.18445 11.4946 7.60926 11.4333 7.02148C10.9319 7.04641 10.3201 7.35225 9.96589 7.78097C9.64785 8.1481 9.36635 8.74738 9.43974 9.31051C10.0025 9.35933 10.5648 9.0292 10.9197 8.61284Z' fill='black'/%3e%3cpath d='M11.4268 9.4205C10.6095 9.37181 9.91457 9.88437 9.52426 9.88437C9.13373 9.88437 8.53603 9.44503 7.88957 9.45687C7.04816 9.46923 6.26743 9.94497 5.84045 10.7016C4.96223 12.2153 5.60869 14.4606 6.46272 15.6934C6.87745 16.3033 7.37728 16.9748 8.03587 16.9507C8.65813 16.9263 8.90204 16.5478 9.65842 16.5478C10.4143 16.5478 10.634 16.9507 11.2927 16.9385C11.9758 16.9263 12.4028 16.3283 12.8175 15.7178C13.2933 15.0225 13.4881 14.3512 13.5003 14.3144C13.4881 14.3022 12.1831 13.8015 12.171 12.3005C12.1587 11.0436 13.1956 10.4457 13.2444 10.4087C12.6588 9.54268 11.744 9.44503 11.4268 9.4205Z' fill='black'/%3e%3cpath d='M18.5433 7.71948C20.3197 7.71948 21.5567 8.944 21.5567 10.7268C21.5567 12.516 20.2943 13.7469 18.4988 13.7469H16.5319V16.8747H15.1108V7.71948H18.5433V7.71948ZM16.5319 12.554H18.1625C19.3997 12.554 20.1039 11.8879 20.1039 10.7332C20.1039 9.57853 19.3997 8.91867 18.1688 8.91867H16.5319V12.554Z' fill='black'/%3e%3cpath d='M21.928 14.9778C21.928 13.8103 22.8226 13.0934 24.4088 13.0046L26.2359 12.8967V12.3829C26.2359 11.6405 25.7347 11.1964 24.8974 11.1964C24.1041 11.1964 23.6092 11.577 23.4888 12.1735H22.1945C22.2706 10.9679 23.2984 10.0797 24.948 10.0797C26.5659 10.0797 27.6 10.9362 27.6 12.2749V16.8748H26.2866V15.7771H26.255C25.8681 16.5195 25.0241 16.9889 24.1487 16.9889C22.8417 16.9889 21.928 16.1768 21.928 14.9778ZM26.2359 14.3751V13.8485L24.5926 13.9499C23.7742 14.0071 23.3111 14.3687 23.3111 14.9397C23.3111 15.5233 23.7933 15.9041 24.5292 15.9041C25.4872 15.9041 26.2359 15.2442 26.2359 14.3751Z' fill='black'/%3e%3cpath d='M28.8398 19.3302V18.2199C28.9411 18.2452 29.1695 18.2452 29.2838 18.2452C29.9182 18.2452 30.2609 17.9788 30.4701 17.2936C30.4701 17.2809 30.5908 16.8876 30.5908 16.8812L28.1799 10.2003H29.6644L31.3522 15.6313H31.3774L33.0653 10.2003H34.5118L32.0118 17.2237C31.4411 18.8417 30.7812 19.3619 29.3981 19.3619C29.2838 19.3619 28.9411 19.3492 28.8398 19.3302Z' fill='black'/%3e%3c/svg%3e\"","module.exports = \"data:image/svg+xml,%3csvg width='40' height='26' viewBox='0 0 40 26' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M36.4179 0H3.58218C3.44543 0 3.30843 0 3.17192 0.000809701C3.05652 0.00164394 2.9414 0.00294437 2.82627 0.0061341C2.57518 0.0130288 2.32195 0.0280696 2.074 0.0733147C1.82209 0.119345 1.58768 0.194426 1.359 0.312643C1.13418 0.428724 0.928359 0.580555 0.749992 0.761732C0.571547 0.942909 0.422007 1.15154 0.307701 1.38005C0.191245 1.61224 0.117248 1.85031 0.0722267 2.10628C0.0274252 2.35809 0.0125122 2.61516 0.00574573 2.86982C0.00265247 2.98672 0.00132575 3.10361 0.000574187 3.22047C-0.000223295 3.35937 4.25324e-05 3.49818 4.25324e-05 3.63732V22.3629C4.25324e-05 22.5021 -0.000223295 22.6407 0.000574187 22.7798C0.00132575 22.8967 0.00265247 23.0136 0.00574573 23.1305C0.0125122 23.3849 0.0274252 23.642 0.0722267 23.8937C0.117248 24.1498 0.191245 24.3878 0.307701 24.62C0.422007 24.8485 0.571547 25.0574 0.749992 25.2383C0.928359 25.4198 1.13418 25.5716 1.359 25.6874C1.58768 25.8059 1.82209 25.881 2.074 25.927C2.32195 25.972 2.57518 25.9873 2.82627 25.9942C2.9414 25.9968 3.05652 25.9984 3.17192 25.9989C3.30843 26 3.44543 26 3.58218 26H36.4179C36.5544 26 36.6914 26 36.8279 25.9989C36.943 25.9984 37.0581 25.9968 37.1738 25.9942C37.4243 25.9873 37.6775 25.972 37.9261 25.927C38.1776 25.881 38.4121 25.8059 38.6408 25.6874C38.8659 25.5716 39.0711 25.4198 39.2498 25.2383C39.428 25.0574 39.5775 24.8485 39.6921 24.62C39.8088 24.3878 39.8827 24.1498 39.9275 23.8937C39.9724 23.642 39.9869 23.3849 39.9937 23.1305C39.9969 23.0136 39.9984 22.8967 39.9989 22.7798C40 22.6407 40 22.5021 40 22.3629V3.63732C40 3.49818 40 3.35937 39.9989 3.22047C39.9984 3.10361 39.9969 2.98672 39.9937 2.86982C39.9869 2.61516 39.9724 2.35809 39.9275 2.10628C39.8827 1.85031 39.8088 1.61224 39.6921 1.38005C39.5775 1.15154 39.428 0.942909 39.2498 0.761732C39.0711 0.580555 38.8659 0.428724 38.6408 0.312643C38.4121 0.194426 38.1776 0.119345 37.9261 0.0733147C37.6775 0.0280696 37.4243 0.0130288 37.1738 0.0061341C37.0581 0.00294437 36.943 0.00164394 36.8279 0.000809701C36.6914 0 36.5544 0 36.4179 0Z' fill='black'/%3e%3cpath d='M36.4178 0.866577L36.8217 0.867362C36.9312 0.868147 37.0406 0.86935 37.1506 0.872392C37.342 0.877643 37.5659 0.888169 37.7746 0.926151C37.956 0.959325 38.1082 1.00977 38.2542 1.08525C38.3983 1.15962 38.5304 1.25707 38.6457 1.37399C38.7615 1.49169 38.8576 1.626 38.9318 1.77398C39.0057 1.92108 39.0551 2.07482 39.0876 2.26037C39.1249 2.46996 39.1352 2.6979 39.1405 2.89343C39.1434 3.00379 39.1449 3.11416 39.1454 3.22715C39.1464 3.36379 39.1464 3.50036 39.1464 3.63727V22.3629C39.1464 22.4998 39.1464 22.6361 39.1454 22.7757C39.1449 22.886 39.1434 22.9964 39.1404 23.107C39.1352 23.3022 39.1249 23.53 39.0871 23.7421C39.0551 23.9251 39.0058 24.0789 38.9314 24.2267C38.8574 24.3743 38.7615 24.5085 38.6462 24.6254C38.5302 24.7432 38.3986 24.8404 38.2527 24.9154C38.1078 24.9905 37.9559 25.0409 37.7763 25.0738C37.5634 25.1123 37.3301 25.1229 37.1544 25.1277C37.0439 25.1302 36.9339 25.1318 36.8212 25.1323C36.6869 25.1334 36.5521 25.1333 36.4178 25.1333H3.58214C3.58035 25.1333 3.57861 25.1333 3.57679 25.1333C3.44403 25.1333 3.31099 25.1333 3.17581 25.1323C3.06558 25.1318 2.9556 25.1303 2.84927 25.1278C2.66957 25.1229 2.43615 25.1123 2.22497 25.074C2.0438 25.0409 1.89191 24.9905 1.74508 24.9144C1.60059 24.84 1.46905 24.743 1.35303 24.625C1.2379 24.5083 1.14223 24.3745 1.06826 24.2267C0.994211 24.079 0.94467 23.9248 0.912097 23.7396C0.874444 23.528 0.8641 23.301 0.858931 23.1071C0.855981 22.9961 0.854748 22.8851 0.854047 22.7747L0.853516 22.4489L0.85354 22.3629V3.63727L0.853516 3.55125L0.854023 3.22612C0.854748 3.11509 0.855981 3.00409 0.858931 2.89316C0.8641 2.69905 0.874443 2.47204 0.912408 2.25862C0.944694 2.07512 0.994211 1.92088 1.06864 1.77246C1.14203 1.62576 1.23788 1.49184 1.35361 1.37436C1.46888 1.25727 1.60085 1.15993 1.74626 1.08485C1.89152 1.00975 2.0437 0.959325 2.22487 0.926225C2.43362 0.888145 2.65766 0.877643 2.84954 0.872368C2.95892 0.86935 3.06829 0.868147 3.17685 0.867387L3.58214 0.866577H36.4178' fill='white'/%3e%3cpath d='M10.9197 8.61284C11.2622 8.18445 11.4946 7.60926 11.4333 7.02148C10.9319 7.04641 10.3201 7.35225 9.96589 7.78097C9.64785 8.1481 9.36635 8.74738 9.43974 9.31051C10.0025 9.35933 10.5648 9.0292 10.9197 8.61284Z' fill='black'/%3e%3cpath d='M11.4268 9.4205C10.6095 9.37181 9.91457 9.88437 9.52426 9.88437C9.13373 9.88437 8.53603 9.44503 7.88957 9.45687C7.04816 9.46923 6.26743 9.94497 5.84045 10.7016C4.96223 12.2153 5.60869 14.4606 6.46272 15.6934C6.87745 16.3033 7.37728 16.9748 8.03587 16.9507C8.65813 16.9263 8.90204 16.5478 9.65842 16.5478C10.4143 16.5478 10.634 16.9507 11.2927 16.9385C11.9758 16.9263 12.4028 16.3283 12.8175 15.7178C13.2933 15.0225 13.4881 14.3512 13.5003 14.3144C13.4881 14.3022 12.1831 13.8015 12.171 12.3005C12.1587 11.0436 13.1956 10.4457 13.2444 10.4087C12.6588 9.54268 11.744 9.44503 11.4268 9.4205Z' fill='black'/%3e%3cpath d='M18.5433 7.71948C20.3197 7.71948 21.5567 8.944 21.5567 10.7268C21.5567 12.516 20.2943 13.7469 18.4988 13.7469H16.5319V16.8747H15.1108V7.71948H18.5433V7.71948ZM16.5319 12.554H18.1625C19.3997 12.554 20.1039 11.8879 20.1039 10.7332C20.1039 9.57853 19.3997 8.91867 18.1688 8.91867H16.5319V12.554Z' fill='black'/%3e%3cpath d='M21.928 14.9778C21.928 13.8103 22.8226 13.0934 24.4088 13.0046L26.2359 12.8967V12.3829C26.2359 11.6405 25.7347 11.1964 24.8974 11.1964C24.1041 11.1964 23.6092 11.577 23.4888 12.1735H22.1945C22.2706 10.9679 23.2984 10.0797 24.948 10.0797C26.5659 10.0797 27.6 10.9362 27.6 12.2749V16.8748H26.2866V15.7771H26.255C25.8681 16.5195 25.0241 16.9889 24.1487 16.9889C22.8417 16.9889 21.928 16.1768 21.928 14.9778ZM26.2359 14.3751V13.8485L24.5926 13.9499C23.7742 14.0071 23.3111 14.3687 23.3111 14.9397C23.3111 15.5233 23.7933 15.9041 24.5292 15.9041C25.4872 15.9041 26.2359 15.2442 26.2359 14.3751Z' fill='black'/%3e%3cpath d='M28.8398 19.3302V18.2199C28.9411 18.2452 29.1695 18.2452 29.2838 18.2452C29.9182 18.2452 30.2609 17.9788 30.4701 17.2936C30.4701 17.2809 30.5908 16.8876 30.5908 16.8812L28.1799 10.2003H29.6644L31.3522 15.6313H31.3774L33.0653 10.2003H34.5118L32.0118 17.2237C31.4411 18.8417 30.7812 19.3619 29.3981 19.3619C29.2838 19.3619 28.9411 19.3492 28.8398 19.3302Z' fill='black'/%3e%3c/svg%3e\"","module.exports = \"data:image/svg+xml,%3csvg width='15' height='11' viewBox='0 0 15 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M1 4.02703L5.97297 9L13.973 1' stroke='%231E6AFE' stroke-width='2'/%3e%3c/svg%3e\"","module.exports = \"data:image/svg+xml,%3csvg width='12px' height='12px' viewBox='0 0 12 12' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:sketch='http://www.bohemiancoding.com/sketch/ns'%3e%3c!--Generator: Sketch 3.2.2 (9983) - http://www.bohemiancoding.com/sketch--%3e%3cdesc%3eCreated with Sketch.%3c/desc%3e%3cdefs/%3e%3cg id='Icons_V2' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' sketch:type='MSPage'%3e%3cg id='Chevron_Small' sketch:type='MSArtboardGroup' stroke-width='1.5' stroke='%236C6C6C'%3e%3cpath d='M9,4 L5.50004189,8 L2,4.02208098' sketch:type='MSShapeGroup'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e\"","module.exports = \"data:image/svg+xml,%3csvg version='1.1' viewBox='0 0 12 12' xmlns='http://www.w3.org/2000/svg'%3e%3cg fill='none' fillRule='evenodd'%3e%3cg stroke='%233d3d3d' strokeWidth='1.5'%3e%3cpath d='m9 4-3.5 4-3.5-3.9779'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e\"","module.exports = \"data:image/svg+xml,%3csvg width='12px' height='12px' viewBox='0 0 12 12' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:sketch='http://www.bohemiancoding.com/sketch/ns'%3e%3c!--Generator: Sketch 3.4.2 (15857) - http://www.bohemiancoding.com/sketch--%3e%3cdesc%3eCreated with Sketch.%3c/desc%3e%3cdefs/%3e%3cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' sketch:type='MSPage'%3e%3cg id='Line-+-Line-+-Line-2' sketch:type='MSLayerGroup' transform='translate(1.000000, 1.000000)' stroke='currentColor' stroke-width='1.5' stroke-linecap='round'%3e%3cpath d='M10,0 L0,10' id='Line' sketch:type='MSShapeGroup'/%3e%3cpath d='M0,0 L10,10' id='Line-Copy' sketch:type='MSShapeGroup'/%3e%3cpath d='M10,0 L0,10' id='Line' sketch:type='MSShapeGroup'/%3e%3cpath d='M0,0 L10,10' id='Line-Copy' sketch:type='MSShapeGroup'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e\"","module.exports = \"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='27' height='19' viewBox='0 0 27 19' fill='none'%3e%3crect x='0.5' y='0.55835' width='26' height='17' rx='1.5' stroke='%23030B60'/%3e%3cpath d='M1 5.99976H26' stroke='%23030B60' stroke-width='4'/%3e%3c/svg%3e\"","module.exports = \"data:image/svg+xml,%3csvg width='13' height='13' viewBox='0 0 13 13' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill-rule='evenodd' clip-rule='evenodd' d='M5.33333 3H1.00012H0.00012207V4V12V13H1.00012H9.00012H10.0001V12V6.99995H9.00012V12H1.00012V4H5.33333V3Z' fill='%231E6AFE'/%3e%3cpath d='M5.00012 8L12.0001 1' stroke='%231E91D6'/%3e%3cpath d='M7.00012 1H12.0001V6' stroke='%231E91D6'/%3e%3c/svg%3e\"","module.exports = \"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='20px' height='20px' viewBox='0 0 20 20' version='1.1'%3e%3cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3e%3cg id='icon_info_question' transform='translate(1.000000, 1.000000)'%3e%3ccircle id='Oval' stroke='%23757575' stroke-width='2' stroke-linecap='square' cx='9' cy='9' r='9'/%3e%3cline x1='9' y1='8.18181818' x2='9' y2='13.0909091' id='Path' stroke='%23757575' stroke-width='2' stroke-linecap='square'/%3e%3ccircle id='Oval' fill='%23757575' fill-rule='nonzero' cx='9' cy='4.90909091' r='1'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e\"","module.exports = \"data:image/svg+xml,%3c!--Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0)--%3e%3c!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' height='26px' viewBox='0 0 124 33' enable-background='new 0 0 124 33' xml:space='preserve'%3e%3cpath fill='%23253B80' d='M46.211,6.749h-6.839c-0.468,0-0.866,0.34-0.939,0.802l-2.766,17.537c-0.055,0.346,0.213,0.658,0.564,0.658 h3.265c0.468,0,0.866-0.34,0.939-0.803l0.746-4.73c0.072-0.463,0.471-0.803,0.938-0.803h2.165c4.505,0,7.105-2.18,7.784-6.5 c0.306-1.89,0.013-3.375-0.872-4.415C50.224,7.353,48.5,6.749,46.211,6.749z M47,13.154c-0.374,2.454-2.249,2.454-4.062,2.454 h-1.032l0.724-4.583c0.043-0.277,0.283-0.481,0.563-0.481h0.473c1.235,0,2.4,0,3.002,0.704C47.027,11.668,47.137,12.292,47,13.154z'/%3e%3cpath fill='%23253B80' d='M66.654,13.075h-3.275c-0.279,0-0.52,0.204-0.563,0.481l-0.145,0.916l-0.229-0.332 c-0.709-1.029-2.29-1.373-3.868-1.373c-3.619,0-6.71,2.741-7.312,6.586c-0.313,1.918,0.132,3.752,1.22,5.031 c0.998,1.176,2.426,1.666,4.125,1.666c2.916,0,4.533-1.875,4.533-1.875l-0.146,0.91c-0.055,0.348,0.213,0.66,0.562,0.66h2.95 c0.469,0,0.865-0.34,0.939-0.803l1.77-11.209C67.271,13.388,67.004,13.075,66.654,13.075z M62.089,19.449 c-0.316,1.871-1.801,3.127-3.695,3.127c-0.951,0-1.711-0.305-2.199-0.883c-0.484-0.574-0.668-1.391-0.514-2.301 c0.295-1.855,1.805-3.152,3.67-3.152c0.93,0,1.686,0.309,2.184,0.892C62.034,17.721,62.232,18.543,62.089,19.449z'/%3e%3cpath fill='%23253B80' d='M84.096,13.075h-3.291c-0.314,0-0.609,0.156-0.787,0.417l-4.539,6.686l-1.924-6.425 c-0.121-0.402-0.492-0.678-0.912-0.678h-3.234c-0.393,0-0.666,0.384-0.541,0.754l3.625,10.638l-3.408,4.811 c-0.268,0.379,0.002,0.9,0.465,0.9h3.287c0.312,0,0.604-0.152,0.781-0.408L84.564,13.97C84.826,13.592,84.557,13.075,84.096,13.075z '/%3e%3cpath fill='%23179BD7' d='M94.992,6.749h-6.84c-0.467,0-0.865,0.34-0.938,0.802l-2.766,17.537c-0.055,0.346,0.213,0.658,0.562,0.658 h3.51c0.326,0,0.605-0.238,0.656-0.562l0.785-4.971c0.072-0.463,0.471-0.803,0.938-0.803h2.164c4.506,0,7.105-2.18,7.785-6.5 c0.307-1.89,0.012-3.375-0.873-4.415C99.004,7.353,97.281,6.749,94.992,6.749z M95.781,13.154c-0.373,2.454-2.248,2.454-4.062,2.454 h-1.031l0.725-4.583c0.043-0.277,0.281-0.481,0.562-0.481h0.473c1.234,0,2.4,0,3.002,0.704 C95.809,11.668,95.918,12.292,95.781,13.154z'/%3e%3cpath fill='%23179BD7' d='M115.434,13.075h-3.273c-0.281,0-0.52,0.204-0.562,0.481l-0.145,0.916l-0.23-0.332 c-0.709-1.029-2.289-1.373-3.867-1.373c-3.619,0-6.709,2.741-7.311,6.586c-0.312,1.918,0.131,3.752,1.219,5.031 c1,1.176,2.426,1.666,4.125,1.666c2.916,0,4.533-1.875,4.533-1.875l-0.146,0.91c-0.055,0.348,0.213,0.66,0.564,0.66h2.949 c0.467,0,0.865-0.34,0.938-0.803l1.771-11.209C116.053,13.388,115.785,13.075,115.434,13.075z M110.869,19.449 c-0.314,1.871-1.801,3.127-3.695,3.127c-0.949,0-1.711-0.305-2.199-0.883c-0.484-0.574-0.666-1.391-0.514-2.301 c0.297-1.855,1.805-3.152,3.67-3.152c0.93,0,1.686,0.309,2.184,0.892C110.816,17.721,111.014,18.543,110.869,19.449z'/%3e%3cpath fill='%23179BD7' d='M119.295,7.23l-2.807,17.858c-0.055,0.346,0.213,0.658,0.562,0.658h2.822c0.469,0,0.867-0.34,0.939-0.803 l2.768-17.536c0.055-0.346-0.213-0.659-0.562-0.659h-3.16C119.578,6.749,119.338,6.953,119.295,7.23z'/%3e%3cpath fill='%23253B80' d='M7.266,29.154l0.523-3.322l-1.165-0.027H1.061L4.927,1.292C4.939,1.218,4.978,1.149,5.035,1.1 c0.057-0.049,0.13-0.076,0.206-0.076h9.38c3.114,0,5.263,0.648,6.385,1.927c0.526,0.6,0.861,1.227,1.023,1.917 c0.17,0.724,0.173,1.589,0.007,2.644l-0.012,0.077v0.676l0.526,0.298c0.443,0.235,0.795,0.504,1.065,0.812 c0.45,0.513,0.741,1.165,0.864,1.938c0.127,0.795,0.085,1.741-0.123,2.812c-0.24,1.232-0.628,2.305-1.152,3.183 c-0.482,0.809-1.096,1.48-1.825,2c-0.696,0.494-1.523,0.869-2.458,1.109c-0.906,0.236-1.939,0.355-3.072,0.355h-0.73 c-0.522,0-1.029,0.188-1.427,0.525c-0.399,0.344-0.663,0.814-0.744,1.328l-0.055,0.299l-0.924,5.855l-0.042,0.215 c-0.011,0.068-0.03,0.102-0.058,0.125c-0.025,0.021-0.061,0.035-0.096,0.035H7.266z'/%3e%3cpath fill='%23179BD7' d='M23.048,7.667L23.048,7.667L23.048,7.667c-0.028,0.179-0.06,0.362-0.096,0.55 c-1.237,6.351-5.469,8.545-10.874,8.545H9.326c-0.661,0-1.218,0.48-1.321,1.132l0,0l0,0L6.596,26.83l-0.399,2.533 c-0.067,0.428,0.263,0.814,0.695,0.814h4.881c0.578,0,1.069-0.42,1.16-0.99l0.048-0.248l0.919-5.832l0.059-0.32 c0.09-0.572,0.582-0.992,1.16-0.992h0.73c4.729,0,8.431-1.92,9.513-7.476c0.452-2.321,0.218-4.259-0.978-5.622 C24.022,8.286,23.573,7.945,23.048,7.667z'/%3e%3cpath fill='%23222D65' d='M21.754,7.151c-0.189-0.055-0.384-0.105-0.584-0.15c-0.201-0.044-0.407-0.083-0.619-0.117 c-0.742-0.12-1.555-0.177-2.426-0.177h-7.352c-0.181,0-0.353,0.041-0.507,0.115C9.927,6.985,9.675,7.306,9.614,7.699L8.05,17.605 l-0.045,0.289c0.103-0.652,0.66-1.132,1.321-1.132h2.752c5.405,0,9.637-2.195,10.874-8.545c0.037-0.188,0.068-0.371,0.096-0.55 c-0.313-0.166-0.652-0.308-1.017-0.429C21.941,7.208,21.848,7.179,21.754,7.151z'/%3e%3cpath fill='%23253B80' d='M9.614,7.699c0.061-0.393,0.313-0.714,0.652-0.876c0.155-0.074,0.326-0.115,0.507-0.115h7.352 c0.871,0,1.684,0.057,2.426,0.177c0.212,0.034,0.418,0.073,0.619,0.117c0.2,0.045,0.395,0.095,0.584,0.15 c0.094,0.028,0.187,0.057,0.278,0.086c0.365,0.121,0.704,0.264,1.017,0.429c0.368-2.347-0.003-3.945-1.272-5.392 C20.378,0.682,17.853,0,14.622,0h-9.38c-0.66,0-1.223,0.48-1.325,1.133L0.01,25.898c-0.077,0.49,0.301,0.932,0.795,0.932h5.791 l1.454-9.225L9.614,7.699z'/%3e%3c/svg%3e\"","module.exports = \"data:image/svg+xml,%3csvg width='54' height='54' viewBox='0 0 54 54' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M22.1854 32.8474L22.7747 29.1045L21.4621 29.0741H15.1943L19.5501 1.45576C19.5636 1.37238 19.6075 1.29464 19.6718 1.23944C19.736 1.18423 19.8182 1.15381 19.9039 1.15381H30.4721C33.9806 1.15381 36.4019 1.8839 37.666 3.32492C38.2586 4.00093 38.6361 4.70736 38.8186 5.48477C39.0101 6.30049 39.0135 7.27507 38.8265 8.46372L38.813 8.55047V9.31211L39.4056 9.64786C39.9047 9.91263 40.3013 10.2157 40.6055 10.5627C41.1125 11.1407 41.4404 11.8753 41.579 12.7462C41.7221 13.6419 41.6747 14.7078 41.4404 15.9145C41.17 17.3025 40.7328 18.5115 40.1425 19.5007C39.5994 20.4122 38.9076 21.1682 38.0863 21.7541C37.3021 22.3106 36.3703 22.7331 35.3169 23.0035C34.2961 23.2694 33.1322 23.4035 31.8557 23.4035H31.0332C30.4451 23.4035 29.8739 23.6153 29.4255 23.995C28.9759 24.3826 28.6785 24.9121 28.5872 25.4913L28.5252 25.8281L27.4842 32.4249L27.4369 32.6671C27.4245 32.7437 27.4031 32.782 27.3715 32.8079C27.3433 32.8316 27.3028 32.8474 27.2634 32.8474H22.1854Z' fill='%23253B80'/%3e%3cpath d='M39.9681 8.63843C39.9366 8.8401 39.9005 9.04629 39.86 9.2581C38.4663 16.4137 33.6982 18.8856 27.6084 18.8856H24.5078C23.7631 18.8856 23.1355 19.4264 23.0195 20.161L21.432 30.229L20.9824 33.0829C20.9069 33.5651 21.2787 34 21.7655 34H27.2648C27.916 34 28.4692 33.5268 28.5717 32.8846L28.6258 32.6052L29.6613 26.0344L29.7277 25.6739C29.8291 25.0294 30.3835 24.5562 31.0347 24.5562H31.8572C37.1852 24.5562 41.3562 22.393 42.5753 16.1331C43.0845 13.5181 42.8209 11.3346 41.4734 9.79891C41.0655 9.33584 40.5596 8.95165 39.9681 8.63843Z' fill='%23179BD7'/%3e%3cpath d='M38.5093 8.05713C38.2964 7.99516 38.0767 7.93883 37.8513 7.88813C37.6249 7.83856 37.3928 7.79461 37.1539 7.75631C36.3179 7.62111 35.4019 7.55688 34.4206 7.55688H26.1372C25.9333 7.55688 25.7395 7.60308 25.566 7.68645C25.184 7.8701 24.9001 8.23177 24.8314 8.67455L23.0693 19.8355L23.0186 20.1611C23.1346 19.4265 23.7622 18.8857 24.5069 18.8857H27.6075C33.6972 18.8857 38.4654 16.4126 39.8591 9.25817C39.9008 9.04636 39.9357 8.84018 39.9672 8.6385C39.6146 8.45147 39.2326 8.29148 38.8214 8.15515C38.72 8.12135 38.6152 8.08868 38.5093 8.05713Z' fill='%23222D65'/%3e%3cpath d='M24.8319 8.67433C24.9006 8.23154 25.1846 7.86988 25.5665 7.68735C25.7411 7.60398 25.9338 7.55779 26.1377 7.55779H34.4211C35.4025 7.55779 36.3184 7.62201 37.1544 7.75721C37.3933 7.79552 37.6254 7.83946 37.8519 7.88903C38.0772 7.93973 38.2969 7.99606 38.5098 8.05803C38.6158 8.08958 38.7205 8.12225 38.8231 8.15493C39.2343 8.29126 39.6162 8.45237 39.9689 8.63827C40.3835 5.99395 39.9655 4.19351 38.5358 2.5632C36.9595 0.768397 34.1147 0 30.4743 0H19.9061C19.1624 0 18.5281 0.540808 18.4132 1.27653L14.0113 29.1788C13.9245 29.7309 14.3504 30.2289 14.907 30.2289H21.4316L23.0698 19.8352L24.8319 8.67433Z' fill='%23253B80'/%3e%3cpath d='M6.39465 39.0007H2.24981C1.96617 39.0007 1.72496 39.2068 1.68071 39.4868L0.00435129 50.1153C-0.028982 50.325 0.133442 50.5141 0.346169 50.5141H2.32496C2.60859 50.5141 2.84981 50.308 2.89405 50.0274L3.34617 47.1607C3.3898 46.8801 3.63162 46.6741 3.91465 46.6741H5.22677C7.95708 46.6741 9.53283 45.3529 9.94435 42.7347C10.1298 41.5892 9.95223 40.6892 9.41586 40.0589C8.82677 39.3668 7.78192 39.0007 6.39465 39.0007ZM6.87283 42.8826C6.64617 44.3698 5.5098 44.3698 4.41102 44.3698H3.78556L4.22435 41.5922C4.25041 41.4244 4.39587 41.3007 4.56556 41.3007H4.85223C5.60071 41.3007 6.30677 41.3007 6.67162 41.7274C6.8892 41.9819 6.95586 42.3601 6.87283 42.8826Z' fill='%23253B80'/%3e%3cpath d='M18.7843 42.8346H16.7995C16.6304 42.8346 16.4843 42.9583 16.4583 43.1261L16.3704 43.6813L16.2316 43.4801C15.8019 42.8564 14.8437 42.6479 13.8874 42.6479C11.694 42.6479 9.82071 44.3092 9.45586 46.6395C9.26616 47.8019 9.53586 48.9134 10.1953 49.6886C10.8001 50.4013 11.6656 50.6983 12.6953 50.6983C14.4625 50.6983 15.4425 49.5619 15.4425 49.5619L15.354 50.1134C15.3207 50.3243 15.4831 50.5134 15.6946 50.5134H17.4825C17.7668 50.5134 18.0068 50.3073 18.0516 50.0267L19.1243 43.2334C19.1583 43.0243 18.9965 42.8346 18.7843 42.8346ZM16.0177 46.6976C15.8262 47.8316 14.9262 48.5928 13.7783 48.5928C13.2019 48.5928 12.7413 48.4079 12.4456 48.0576C12.1522 47.7098 12.0407 47.2146 12.134 46.6631C12.3128 45.5389 13.228 44.7528 14.3583 44.7528C14.9219 44.7528 15.3801 44.9401 15.6819 45.2934C15.9843 45.6504 16.1043 46.1486 16.0177 46.6976Z' fill='%23253B80'/%3e%3cpath d='M29.3551 42.8347H27.3605C27.1702 42.8347 26.9914 42.9293 26.8836 43.0874L24.1326 47.1396L22.9666 43.2456C22.8933 43.002 22.6684 42.8347 22.4139 42.8347H20.4539C20.2157 42.8347 20.0502 43.0674 20.126 43.2917L22.3229 49.739L20.2575 52.6547C20.0951 52.8844 20.2587 53.2002 20.5393 53.2002H22.5314C22.7205 53.2002 22.8975 53.1081 23.0048 52.9529L29.6387 43.3771C29.7975 43.1481 29.6345 42.8347 29.3551 42.8347Z' fill='%23253B80'/%3e%3cpath d='M35.9581 39.0007H31.8127C31.5297 39.0007 31.2884 39.2068 31.2442 39.4868L29.5678 50.1153C29.5345 50.325 29.6969 50.5141 29.9084 50.5141H32.0357C32.2333 50.5141 32.4024 50.3698 32.4333 50.1735L32.909 47.1607C32.9527 46.8801 33.1945 46.6741 33.4775 46.6741H34.7891C37.52 46.6741 39.0951 45.3529 39.5072 42.7347C39.6933 41.5892 39.5145 40.6892 38.9781 40.0589C38.3897 39.3668 37.3454 39.0007 35.9581 39.0007ZM36.4363 42.8826C36.2103 44.3698 35.0739 44.3698 33.9745 44.3698H33.3497L33.7891 41.5922C33.8151 41.4244 33.9594 41.3007 34.1297 41.3007H34.4163C35.1642 41.3007 35.8709 41.3007 36.2357 41.7274C36.4533 41.9819 36.5194 42.3601 36.4363 42.8826Z' fill='%23179BD7'/%3e%3cpath d='M48.3482 42.8346H46.3645C46.1942 42.8346 46.0494 42.9583 46.0239 43.1261L45.9361 43.6813L45.7967 43.4801C45.367 42.8564 44.4094 42.6479 43.453 42.6479C41.2597 42.6479 39.3869 44.3092 39.0221 46.6395C38.833 47.8019 39.1015 48.9134 39.7609 49.6886C40.367 50.4013 41.2312 50.6983 42.2609 50.6983C44.0282 50.6983 45.0082 49.5619 45.0082 49.5619L44.9197 50.1134C44.8864 50.3243 45.0488 50.5134 45.2615 50.5134H47.0488C47.3318 50.5134 47.573 50.3073 47.6173 50.0267L48.6906 43.2334C48.7233 43.0243 48.5609 42.8346 48.3482 42.8346ZM45.5815 46.6976C45.3912 47.8316 44.49 48.5928 43.3421 48.5928C42.767 48.5928 42.3051 48.4079 42.0094 48.0576C41.716 47.7098 41.6057 47.2146 41.6979 46.6631C41.8779 45.5389 42.7918 44.7528 43.9221 44.7528C44.4857 44.7528 44.9439 44.9401 45.2458 45.2934C45.5494 45.6504 45.6694 46.1486 45.5815 46.6976Z' fill='%23179BD7'/%3e%3cpath d='M50.688 39.2921L48.9868 50.1152C48.9534 50.3248 49.1159 50.5139 49.3274 50.5139H51.0377C51.3219 50.5139 51.5631 50.3079 51.6068 50.0273L53.2844 39.3994C53.3177 39.1897 53.1553 39 52.9438 39H51.0286C50.8595 39.0006 50.714 39.1242 50.688 39.2921Z' fill='%23179BD7'/%3e%3c/svg%3e\"","module.exports = \"data:image/svg+xml,%3csvg width='14px' height='14px' viewBox='0 0 14 14' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3e%3cg transform='translate(-1053.000000, -226.000000)' fill='%237A7A7A'%3e%3cg id='Group' transform='translate(1051.000000, 224.000000)'%3e%3cg id='18px-Phone' transform='translate(2.000000, 2.000000)'%3e%3cpath d='M9.9173705,8.0914555 L7.91295747,10.0958685 L3.90413148,6.08704253 L5.90854447,4.08262954 C6.14654189,3.84463212 6.14654189,3.45933196 5.90854447,3.22194324 L2.86509929,0.17849806 C2.62710188,-0.05949935 2.24180172,-0.05949935 2.004413,0.17849806 L0,2.18291106 C0,8.9192726 5.07951001,14 11.8170889,14 L13.8215019,11.995587 C14.0594994,11.7575896 14.0594994,11.3722894 13.8215019,11.1349007 L10.7780568,8.0914555 C10.540668,7.8540668 10.1547592,7.8540668 9.9173705,8.0914555 Z' id='Path'/%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/svg%3e\"","module.exports = \"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3e%3cpath stroke-width='1' fill='%23575251' d='M5,9 L7,9 L7,11 L5,11 L5,9 Z M7,8 L5,8 L5,5.58154736 L5.68377223,5.37894818 C7.31893947,4.89445418 8,4.28906705 8,3.55555556 C8,2.26869756 7.44771525,1.77777778 6,1.77777778 C4.55228475,1.77777778 4,2.26869756 4,3.55555556 L2,3.55555556 C2,1.286858 3.44771525,0 6,0 C8.55228475,0 10,1.286858 10,3.55555556 C10,5.02721429 8.93385417,6.12342678 7,6.8389377 L7,8 Z'/%3e%3c/svg%3e\"","module.exports = \"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 26'%3e%3cpath fill='%2316aa16' d='M-.9-.6H41V27H-.9z'/%3e%3cpath fill='%23fff' d='M17.3 15.5c-.1 0-.2.1-.3.1-.2 0-.4-.1-.5-.3v-.1l-1.6-3.6v-.1c0-.2.1-.3.3-.3.1 0 .1 0 .2.1l1.9 1.4c.2.2.5.2.8.1l9.1-4.1a9.56 9.56 0 00-7.4-3.2c-5 0-9 3.4-9 7.6a7.2 7.2 0 003.1 5.7c.2.1.3.3.3.5v.2c-.2.6-.4 1.5-.4 1.5v.2c0 .2.1.3.3.3.1 0 .1 0 .2-.1l2-1.1c.1-.1.3-.1.5-.1h.3c1 .3 1.9.4 2.9.4 5 0 9-3.4 9-7.6 0-1.2-.4-2.5-1-3.5l-10.7 6z'/%3e%3c/svg%3e\"","module.exports = \"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' height='26px' viewBox='51 63 178 50'%3e%3cdefs%3e%3cstyle%3e.cls-1%7bfill:%2300c800;%7d%3c/style%3e%3c/defs%3e%3cpath class='cls-1' d='M71.29,94.36a1.7,1.7,0,0,1-.81.2,1.82,1.82,0,0,1-1.59-.93l-.11-.26-5-10.87a1,1,0,0,1-.09-.38.91.91,0,0,1,.91-.91.9.9,0,0,1,.54.18L71,85.55a2.72,2.72,0,0,0,1.49.45,2.64,2.64,0,0,0,.93-.17l27.49-12.24C96,67.79,87.9,64,78.71,64c-15,0-27.21,10.15-27.21,22.68,0,6.83,3.67,13,9.4,17.14a1.82,1.82,0,0,1,.76,1.48,2.19,2.19,0,0,1-.09.57c-.46,1.71-1.19,4.45-1.23,4.58a3,3,0,0,0-.14.66.9.9,0,0,0,.9.91,1.11,1.11,0,0,0,.53-.17l5.95-3.44A2.87,2.87,0,0,1,69,108a2.63,2.63,0,0,1,.8.12,32.18,32.18,0,0,0,8.88,1.25c15,0,27.21-10.16,27.21-22.68a19.6,19.6,0,0,0-3.1-10.51L71.49,94.25Z'/%3e%3cpath d='M123.36,81.83c-.11.68-.39,1.87-.82,3.57l-2.3,8.82H118.4l-4.55-14.84h1.81l2.55,8.71c.41,1.4.75,2.65,1,3.77h0q.22-1,.48-2c.18-.65.33-1.23.46-1.74l2.25-8.73h1.81l2.24,8.73q.82,3.15.93,3.75h.05c.26-1,.6-2.29,1-3.77l2.55-8.71h1.81l-4.55,14.84h-1.83l-2.3-8.82c-.41-1.64-.69-2.83-.82-3.57Z'/%3e%3cpath d='M139.28,93a7.44,7.44,0,0,0,1.55-.14,9.27,9.27,0,0,0,1.41-.39V93.9a5.64,5.64,0,0,1-1.4.44,9.17,9.17,0,0,1-1.79.16,7.65,7.65,0,0,1-2.12-.29,4.42,4.42,0,0,1-1.72-.93,4.46,4.46,0,0,1-1.14-1.68,6.89,6.89,0,0,1-.41-2.5,7.2,7.2,0,0,1,.4-2.5,5.31,5.31,0,0,1,1.06-1.77,4.43,4.43,0,0,1,1.53-1.07,4.85,4.85,0,0,1,1.8-.35,4.75,4.75,0,0,1,1.66.29,3.42,3.42,0,0,1,1.33.93,4.31,4.31,0,0,1,.89,1.63,7.62,7.62,0,0,1,.33,2.39v.23c0,.06,0,.21,0,.43h-7.28a4.18,4.18,0,0,0,.31,1.71,3,3,0,0,0,.83,1.14,3.12,3.12,0,0,0,1.24.64A5.34,5.34,0,0,0,139.28,93Zm-.91-8.12a2.57,2.57,0,0,0-1.11.24,2.67,2.67,0,0,0-.89.63,3.27,3.27,0,0,0-.62.94,3.9,3.9,0,0,0-.29,1.14h5.39a4,4,0,0,0-.16-1.16,2.83,2.83,0,0,0-.48-.93,2.23,2.23,0,0,0-.77-.63A2.44,2.44,0,0,0,138.37,84.88Z'/%3e%3cpath d='M153,80.71a6.59,6.59,0,0,0-2.33.4,5.15,5.15,0,0,0-1.88,1.17,5.62,5.62,0,0,0-1.26,1.94,7.28,7.28,0,0,0-.46,2.7,7.38,7.38,0,0,0,.43,2.66,4.76,4.76,0,0,0,3.1,3,8.28,8.28,0,0,0,2.47.35,7.15,7.15,0,0,0,.78,0,8,8,0,0,0,.84-.11l.82-.16.71-.21V94a7.31,7.31,0,0,1-1.52.39,11.53,11.53,0,0,1-1.77.14,9.55,9.55,0,0,1-3.29-.52,6.37,6.37,0,0,1-2.4-1.48,6.3,6.3,0,0,1-1.47-2.35,10,10,0,0,1,0-6.34,7.12,7.12,0,0,1,1.52-2.5,6.78,6.78,0,0,1,2.41-1.62,8.21,8.21,0,0,1,3.17-.59c.32,0,.62,0,.93,0l.87.11c.27,0,.53.11.77.18a3.6,3.6,0,0,1,.61.21v1.59a13.13,13.13,0,0,0-1.47-.37A8.77,8.77,0,0,0,153,80.71Z'/%3e%3cpath d='M160.79,85.13h0a4.57,4.57,0,0,1,.64-.68,3.61,3.61,0,0,1,.79-.55,4.72,4.72,0,0,1,.93-.36,4.1,4.1,0,0,1,1.08-.13,4.43,4.43,0,0,1,1.19.16,3.09,3.09,0,0,1,1.11.57,2.86,2.86,0,0,1,.83,1.14,4.64,4.64,0,0,1,.33,1.89v7H166V87.45a3.12,3.12,0,0,0-.49-1.92,1.83,1.83,0,0,0-1.58-.65,3.33,3.33,0,0,0-1.73.5,4.69,4.69,0,0,0-1.42,1.36v7.48h-1.72V78.16h1.72Z'/%3e%3cpath d='M177.22,93.06h0a3,3,0,0,1-.54.52,3.6,3.6,0,0,1-.74.47,4.35,4.35,0,0,1-.92.33,4.53,4.53,0,0,1-1.06.12,4.25,4.25,0,0,1-1.41-.23,3.14,3.14,0,0,1-1.1-.66,3.18,3.18,0,0,1-.71-1.07,3.8,3.8,0,0,1-.26-1.43,3.32,3.32,0,0,1,.29-1.41,3,3,0,0,1,.79-1.06,3.46,3.46,0,0,1,1.23-.66,4.9,4.9,0,0,1,1.58-.24,9,9,0,0,1,1.52.15,8.52,8.52,0,0,1,1.24.33h0v-.73a5.86,5.86,0,0,0,0-.77,2,2,0,0,0-.19-.58,2.26,2.26,0,0,0-.92-.89,3.58,3.58,0,0,0-1.71-.34,7.2,7.2,0,0,0-1.5.15,8.33,8.33,0,0,0-1.41.41V84a4.86,4.86,0,0,1,.63-.25,7.63,7.63,0,0,1,.76-.2,7.37,7.37,0,0,1,.84-.13,8.83,8.83,0,0,1,.89,0,5.37,5.37,0,0,1,2.61.56,3.35,3.35,0,0,1,1.46,1.5,3.22,3.22,0,0,1,.24.78,5.53,5.53,0,0,1,.07.94v7h-1.44Zm-.09-3.46c-.31-.09-.69-.18-1.12-.26a9.06,9.06,0,0,0-1.44-.13,2.78,2.78,0,0,0-1.71.46,1.7,1.7,0,0,0-.62,1.44,2,2,0,0,0,.16.85,1.55,1.55,0,0,0,.42.6,1.75,1.75,0,0,0,.64.36,2.56,2.56,0,0,0,.79.12,3.13,3.13,0,0,0,1-.17,3.82,3.82,0,0,0,.84-.38,4.29,4.29,0,0,0,.63-.44,5.16,5.16,0,0,0,.38-.35Z'/%3e%3cpath d='M187.74,94.24a3.48,3.48,0,0,1-.68.17,8,8,0,0,1-1.09.09,4.46,4.46,0,0,1-1.44-.21,2.63,2.63,0,0,1-1-.58,2.43,2.43,0,0,1-.61-.93,3.53,3.53,0,0,1-.2-1.21V85.16h-2V83.69h2V80.8h1.72v2.89h3.15v1.47h-3.15v6.15a2.09,2.09,0,0,0,.11.67,1.36,1.36,0,0,0,.33.54,1.45,1.45,0,0,0,.58.35,2.43,2.43,0,0,0,.86.13,6.23,6.23,0,0,0,.72,0,6.3,6.3,0,0,0,.71-.15Z'/%3e%3cpath d='M196.64,94.22h-1.81V79.38H199a12.78,12.78,0,0,1,1.7.11,7.3,7.3,0,0,1,1.43.35,4.08,4.08,0,0,1,2,1.42,3.86,3.86,0,0,1,.68,2.34,4.38,4.38,0,0,1-.44,2A3.89,3.89,0,0,1,203,87a6,6,0,0,1-2.07.87,11.72,11.72,0,0,1-2.78.3c-.49,0-1,0-1.54-.07Zm0-7.75.77.07.75,0a10.45,10.45,0,0,0,2.18-.2,4.28,4.28,0,0,0,1.46-.58,2.29,2.29,0,0,0,.82-.94,2.89,2.89,0,0,0,.26-1.24,2.28,2.28,0,0,0-.42-1.42,2.63,2.63,0,0,0-1.18-.85,5.41,5.41,0,0,0-1.1-.25c-.41,0-.89-.07-1.44-.07h-2.1Z'/%3e%3cpath d='M213.74,93.06h-.05a3.28,3.28,0,0,1-.53.52,3.9,3.9,0,0,1-.74.47,4.51,4.51,0,0,1-2,.45,4.15,4.15,0,0,1-1.4-.23,3,3,0,0,1-1.82-1.73,3.8,3.8,0,0,1-.25-1.43,3.32,3.32,0,0,1,.28-1.41,3,3,0,0,1,.79-1.06,3.46,3.46,0,0,1,1.23-.66,4.94,4.94,0,0,1,1.58-.24,8.9,8.9,0,0,1,1.52.15,8.19,8.19,0,0,1,1.24.33h.05v-.73a4.46,4.46,0,0,0-.06-.77,2,2,0,0,0-.19-.58,2.26,2.26,0,0,0-.92-.89,3.58,3.58,0,0,0-1.71-.34,7.2,7.2,0,0,0-1.5.15,8,8,0,0,0-1.4.41V84a4.69,4.69,0,0,1,.62-.25c.24-.08.5-.14.76-.2a7.21,7.21,0,0,1,.85-.13,8.64,8.64,0,0,1,.88,0,5.44,5.44,0,0,1,2.62.56,3.45,3.45,0,0,1,1.46,1.5,2.82,2.82,0,0,1,.23.78,5.49,5.49,0,0,1,.08.94v7h-1.45Zm-.09-3.46c-.32-.09-.7-.18-1.13-.26a8.85,8.85,0,0,0-1.44-.13,2.82,2.82,0,0,0-1.71.46,1.7,1.7,0,0,0-.62,1.44,2.22,2.22,0,0,0,.16.85,1.55,1.55,0,0,0,.42.6,1.79,1.79,0,0,0,.65.36,2.45,2.45,0,0,0,.78.12,3.13,3.13,0,0,0,1-.17,3.9,3.9,0,0,0,.85-.38,5.72,5.72,0,0,0,.63-.44,5.16,5.16,0,0,0,.38-.35Z'/%3e%3cpath d='M217.36,83.69h1.72L222.35,92h.07l3.36-8.26h1.72L221,99.38h-1.71L221.52,94Z'/%3e%3c/svg%3e\"","import type { BlogCarouselPost, CatalogProductData } from '@faithlife/commerce-components';\nimport { UserInfo } from '../components/per-user-data/per-user-data-context';\n\nexport type SectionKind =\n\t| 'universalHeader'\n\t| 'universalFooter'\n\t| 'searchResultsAbove'\n\t| 'searchResultsBelow'\n\t| 'subscriptionChurnPrevention'\n\t| 'configurationWizardSubscriptionsBanner'\n\t| 'configurationWizardSubscriptionsContent'\n\t| 'configurationWizardLibrariesBanner'\n\t| 'orderSummary'\n\t| 'orderSummaryFooter'\n\t| 'productPage'\n\t| 'adzone'\n\t| 'notifications';\n\nexport interface StaticData {\n\tstaticProductData: CatalogProductData[];\n\tstaticBlogPosts?: Record<string, BlogCarouselPost[]>;\n\tautoAppliedCouponCode?: string | null;\n\tuserInfo: UserInfo;\n}\n\nexport type ComponentTheme = 'logos' | 'faithlife';\n\nexport const componentThemeClassName: Record<ComponentTheme, string | undefined> = {\n\tlogos: undefined,\n\tfaithlife: 'faithlife-theme',\n};\n\nexport interface BuilderIoContentViewModel {\n\tmodel: string;\n\tcontent?: object;\n\tlocale?: string;\n\tstaticData: StaticData;\n\tcomponentTheme?: ComponentTheme;\n}\n\ninterface SectionContentViewModelBase {\n\tsectionKind: SectionKind;\n\tcontentId?: string;\n\teditUrl?: string;\n}\n\n// this should never exist but is used as a placeholder to, potentially,\n// later introduce content sources other than builder.io\ninterface UnknownSectionViewModel extends SectionContentViewModelBase {\n\tcontentSourceKind: 'unknown';\n}\n\ninterface BuilderIoSectionViewModel extends SectionContentViewModelBase {\n\tcontentSourceKind: 'builderIo';\n\tbuilderIo: BuilderIoContentViewModel;\n}\n\nexport type SectionContentViewModel = BuilderIoSectionViewModel | UnknownSectionViewModel;\n","import { useEffect, useState } from 'react';\nimport { Builder } from '@builder.io/sdk';\n\nexport function useIsPreviewingThisBuilderModel(model: string) {\n\tconst [isPreviewingGivenModel, setIsPreviewingGivenModel] = useState(false);\n\n\tuseEffect(() => {\n\t\tif (Builder.isEditing || Builder.isPreviewing) {\n\t\t\tif (Builder.previewingModel === model) {\n\t\t\t\tsetIsPreviewingGivenModel(true);\n\t\t\t}\n\t\t}\n\t}, [model]);\n\n\treturn isPreviewingGivenModel;\n}\n","'use strict';\n\nconst handlers = {};\n// pending events allow a lot of subscribers to all come online during the same tick\nlet pending = {};\n// the timeout id to clear pending events at the end of a tick after an event has been triggered\nlet clear = undefined;\nconst eventAggregator = {\n\ton: function (events, handler) {\n\t\t// events can be one event (\"cart:updated\") or multiple separated by spaces (\"cart:validated cart:invalidated\")\n\t\t// this preserves the behavior of jQuery.on()\n\t\tfor (const event of events.split(' ')) {\n\t\t\tif (!handlers[event]) {\n\t\t\t\thandlers[event] = [];\n\t\t\t}\n\t\t\t// don't modify the handlers array or it'll cause iterator issues\n\t\t\thandlers[event] = [...handlers[event], handler];\n\t\t\t// pending events were fired on the same tick, but before you registered your handler\n\t\t\tif (!pending[event]) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tfor (const data of pending[event]) {\n\t\t\t\thandler({ type: event }, data);\n\t\t\t}\n\t\t}\n\t},\n\toff: function (events, handler) {\n\t\t// events can be one event (\"cart:updated\") or multiple separated by spaces (\"cart:validated cart:invalidated\")\n\t\t// this preserves the behavior of jQuery.off()\n\t\tfor (const event of events.split(' ')) {\n\t\t\tif (!handlers[event]) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst index = handlers[event].indexOf(handler);\n\t\t\tif (index === -1) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// don't modify the handlers array or it'll cause iterator issues\n\t\t\thandlers[event] = handlers[event].filter((it, ix) => ix !== index);\n\t\t}\n\t},\n\ttrigger: function (event, data) {\n\t\tif (typeof window === 'undefined') {\n\t\t\tthrow new Error('Events cannot be triggered server-side. Wrap them in an event handler or useEffect.');\n\t\t}\n\t\tif (!pending[event]) {\n\t\t\tpending[event] = [];\n\t\t}\n\t\tpending[event].push(data);\n\t\tif (!handlers[event]) {\n\t\t\treturn;\n\t\t}\n\t\tfor (const handler of handlers[event]) {\n\t\t\ttry {\n\t\t\t\thandler({ type: event }, data);\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error(`[eventAggregator] Error in \"${event}\" handler:`, e);\n\t\t\t}\n\t\t}\n\t\tif (!clear) {\n\t\t\tclear = setTimeout(() => {\n\t\t\t\t// on the next tick, clear the pending queue and allow us to restart the pending queue\n\t\t\t\tclear = undefined;\n\t\t\t\tpending = {};\n\t\t\t}, 0);\n\t\t}\n\t},\n};\n\nif (!global.eventAggregator) {\n\tglobal.eventAggregator = eventAggregator;\n}\nmodule.exports = global.eventAggregator;\n","import { fetch, type FetchConfig } from '../util/fetch';\n\nexport const CartErrorCode = {\n\tCannotMixGroupAndNonGroupItems: 'CannotMixGroupAndNonGroupItems',\n} as const;\n\ninterface AddItemsToCartOptions {\n\tskuRequests?: unknown[];\n\tsubscribableProductOptionRequests?: unknown[];\n\tpayInFull?: boolean;\n\tsearchData?: unknown;\n\tcouponCodes?: string[];\n\tgroupId?: string | number;\n\tredirectUrl?: string | null;\n}\n\nexport default class CartClient {\n\tstatic async updateCartAsync(updateCartUrl: string, changeSet: unknown): Promise<any> {\n\t\tconst response = await fetch.postWithBody({\n\t\t\turl: updateCartUrl,\n\t\t\tbody: changeSet,\n\t\t});\n\n\t\treturn await response.json();\n\t}\n\n\tstatic async addSkuToCart(\n\t\taddSkuToCartUrl: string,\n\t\tquantity: number,\n\t\tpayInFull: boolean,\n\t\tsearchData?: unknown,\n\t\tcouponCodes?: string[]\n\t): Promise<any> {\n\t\tconst parsedUrl = new URL(addSkuToCartUrl, window.location.origin);\n\n\t\tif (couponCodes?.length) {\n\t\t\tconst encodedCouponCodes = couponCodes.map(code => encodeURIComponent(code));\n\t\t\tparsedUrl.pathname = `${parsedUrl.pathname.replace(/\\/$/, '')}/${encodedCouponCodes.join(',')}`;\n\t\t}\n\n\t\tconst response = await fetch.postWithBody({\n\t\t\turl: parsedUrl.toString(),\n\t\t\tbody: {\n\t\t\t\tquantity,\n\t\t\t\tpayInFull,\n\t\t\t\tsearchData,\n\t\t\t},\n\t\t});\n\n\t\treturn await response.json();\n\t}\n\n\tstatic async addItemsToCart(\n\t\taddItemsToCartUrl: string,\n\t\t{\n\t\t\tskuRequests,\n\t\t\tsubscribableProductOptionRequests,\n\t\t\tpayInFull,\n\t\t\tsearchData,\n\t\t\tcouponCodes,\n\t\t\tgroupId,\n\t\t\tredirectUrl,\n\t\t}: AddItemsToCartOptions = {},\n\t\tfetchConfig?: FetchConfig\n\t): Promise<any> {\n\t\tconst response = await fetch\n\t\t\t.postWithBody(\n\t\t\t\t{\n\t\t\t\t\turl: addItemsToCartUrl,\n\t\t\t\t\tbody: {\n\t\t\t\t\t\tskuRequests: skuRequests || [],\n\t\t\t\t\t\tsubscribableProductOptionRequests: subscribableProductOptionRequests || [],\n\t\t\t\t\t\tpayInFull: payInFull ?? false,\n\t\t\t\t\t\tsearchData,\n\t\t\t\t\t\tcouponCodes,\n\t\t\t\t\t\tgroupId,\n\t\t\t\t\t\tredirectUrl,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tfetchConfig\n\t\t\t)\n\t\t\t.catch(async (fetchError: unknown) => {\n\t\t\t\tconst error = fetchError as { response?: Response; code?: string };\n\t\t\t\terror.code = await error.response\n\t\t\t\t\t?.json()\n\t\t\t\t\t.then(body => body?.errorCode)\n\t\t\t\t\t.catch(() => undefined);\n\t\t\t\tthrow fetchError;\n\t\t\t});\n\n\t\treturn await response.json();\n\t}\n\n\tstatic async addSkusToCart(\n\t\taddSkusToCartUrl: string,\n\t\tskuRequests: unknown[],\n\t\tpayInFull: boolean,\n\t\tsearchData?: unknown,\n\t\tcouponCodes?: string[]\n\t): Promise<any> {\n\t\tconst response = await fetch.postWithBody({\n\t\t\turl: addSkusToCartUrl,\n\t\t\tbody: {\n\t\t\t\tskuRequests,\n\t\t\t\tpayInFull,\n\t\t\t\tsearchData,\n\t\t\t\tcouponCodes,\n\t\t\t},\n\t\t});\n\n\t\treturn await response.json();\n\t}\n\n\tstatic async addSubscribableProductOptionIdToCart(\n\t\taddSubscribableProductOptionIdToCartUrl: string,\n\t\toptionId?: string | null,\n\t\tquantity?: number,\n\t\tcouponCodes?: string[]\n\t): Promise<any> {\n\t\tconst response = await fetch.postWithBody({\n\t\t\turl: addSubscribableProductOptionIdToCartUrl,\n\t\t\tbody: {\n\t\t\t\toptionId: optionId,\n\t\t\t\tquantity: quantity || 1,\n\t\t\t\tcouponCodes: couponCodes || undefined,\n\t\t\t},\n\t\t});\n\n\t\treturn await response.json();\n\t}\n\n\tstatic async getMostRecentlyAddedItem(getMostRecentlyAddedItemUrl: string): Promise<any> {\n\t\tconst response = await fetch.get({\n\t\t\turl: getMostRecentlyAddedItemUrl,\n\t\t});\n\n\t\treturn await response.json();\n\t}\n\n\tstatic async getMostRecentlyAddedItemAndIncludeCredentials(getMostRecentlyAddedItemUrl: string): Promise<any> {\n\t\tconst response = await fetch.get(\n\t\t\t{\n\t\t\t\turl: getMostRecentlyAddedItemUrl,\n\t\t\t},\n\t\t\t{\n\t\t\t\tcredentials: 'include',\n\t\t\t}\n\t\t);\n\n\t\treturn await response.json();\n\t}\n\n\tstatic async removeWishlistItems(removeItemsUrl: string, selectedItems: (string | number)[]): Promise<void> {\n\t\tawait fetch.postWithBody({\n\t\t\turl: removeItemsUrl,\n\t\t\tbody: { wishlistItemIds: selectedItems.join(',') },\n\t\t});\n\t}\n\n\tstatic async removeCartItems(\n\t\turl: string,\n\t\tantiForgeryToken: string,\n\t\titemIds: string,\n\t\tsaveForLater = false\n\t): Promise<any> {\n\t\tconst formData = new FormData();\n\t\tformData.set('itemIds', itemIds);\n\t\tfor (const [key, value] of Object.entries(JSON.parse(antiForgeryToken))) {\n\t\t\tformData.set(key, value as string);\n\t\t}\n\t\tconst response = await fetch.postWithForm({\n\t\t\turl: url + (saveForLater ? '?saveForLater=True' : ''),\n\t\t\tformData,\n\t\t\theaders: {\n\t\t\t\tAccept: 'application/json',\n\t\t\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t\t},\n\t\t});\n\n\t\treturn response.json();\n\t}\n\n\tstatic async getCart(url: string): Promise<any> {\n\t\tconst cartRequest = await fetch.post({\n\t\t\turl,\n\t\t});\n\t\treturn await cartRequest.json();\n\t}\n\n\tstatic async getCartWithCredentials(url: string, token?: string): Promise<any> {\n\t\tconst tokenContainer = document.getElementById('js-anti-forgery-token-container');\n\t\tconst tokenInput = tokenContainer?.querySelector<HTMLInputElement>('input[name=\"__RequestVerificationToken\"]');\n\t\tconst antiForgeryToken = tokenInput?.value ?? token;\n\n\t\tif (!antiForgeryToken) {\n\t\t\tconsole.error('Anti-forgery token not found');\n\t\t\treturn;\n\t\t}\n\n\t\tconst response = await fetch.post(\n\t\t\t{\n\t\t\t\turl,\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t\t\t\t__RequestVerificationToken: antiForgeryToken,\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tmode: 'cors',\n\t\t\t\tcredentials: 'include',\n\t\t\t}\n\t\t);\n\n\t\treturn await response.json();\n\t}\n\n\tstatic async getWishlist(url: string, itemIds: (string | number)[]): Promise<any> {\n\t\tconst wishListRequest = await fetch.get({\n\t\t\turl: `${url}?excludeSkuIds=${itemIds.join(',')}`,\n\t\t});\n\t\treturn await wishListRequest.json();\n\t}\n\n\tstatic async getRecommendedProducts(\n\t\turl: string,\n\t\tisSubscriptionInCart: boolean,\n\t\tskuIds: (string | number)[],\n\t\tproductIds: (string | number)[]\n\t): Promise<any> {\n\t\tconst recommendedProducts = await fetch.postWithBody({\n\t\t\turl: url,\n\t\t\tbody: {\n\t\t\t\tisSubscriptionInCart: isSubscriptionInCart,\n\t\t\t\tproductIds: productIds.join(','),\n\t\t\t\tskuIds: skuIds.join(','),\n\t\t\t},\n\t\t});\n\t\treturn await recommendedProducts.json();\n\t}\n\n\tstatic async getSubscriptionPromotion(url: string): Promise<any> {\n\t\tconst subscriptionPromotion = await fetch.get({ url });\n\t\treturn await subscriptionPromotion.json();\n\t}\n}\n","import { fetch } from '../util/fetch';\n\nexport async function getSurvey(surveysUrl) {\n\tconst response = await fetch.get({\n\t\turl: surveysUrl,\n\t});\n\n\treturn await response.json();\n}\n\nexport async function getSurveyWithEmailAddress(surveysUrl, emailAddress) {\n\tconst response = await fetch.get({\n\t\turl: surveysUrl,\n\t\tparams: { encodedEmailAddress: encodeURIComponent(emailAddress) },\n\t});\n\n\treturn await response.json();\n}\n\nexport async function submitAnswer(submitUrl, surveyResponse) {\n\tconst response = await fetch.postWithBody({\n\t\turl: submitUrl,\n\t\tbody: { surveyResponse },\n\t});\n\n\treturn await response.json();\n}\n","import { fetch } from '../util/fetch';\n\nexport async function getWishlistsForProducts(wishlistsProductsUrl, wishListProductRequests) {\n\tconst response = await fetch.postWithBody({\n\t\turl: wishlistsProductsUrl,\n\t\tbody: wishListProductRequests,\n\t});\n\treturn await response.json();\n}\n\nexport async function addProductToWishlist(addProductToWishListUrl) {\n\tconst response = await fetch.post({\n\t\turl: addProductToWishListUrl,\n\t});\n\tif (!response.ok) {\n\t\tthrow new Error(`Unexpected response code ${response.status}. addProductToWishListUrl: ${addProductToWishListUrl}`);\n\t}\n}\n\nexport async function createWishList(createNewWishListUrl, listName, productIdToIncludeInWishList) {\n\tconst url = productIdToIncludeInWishList\n\t\t? `${createNewWishListUrl}?productIdToIncludeInWishList=${encodeURIComponent(productIdToIncludeInWishList)}`\n\t\t: createNewWishListUrl;\n\tconst response = await fetch.postWithBody({\n\t\turl,\n\t\tbody: { name: listName },\n\t});\n\tconst data = await response.json();\n\treturn data;\n}\n","import React, { createContext, useCallback, useContext, useMemo, type MutableRefObject } from 'react';\nimport {\n\tCartProvider,\n\tIdentifierTypes,\n\ttype AddToCartButtonRequestOptions,\n\ttype AddToCartRequestArguments,\n\ttype AddToCartRequestHandler,\n\ttype UseStatusResult,\n} from '@faithlife/commerce-components';\nimport CartClient from '../clients/cart-client';\nimport eventAggregator from '../cart/utility/eventaggregator';\nimport { useAddToCartRequest } from '../components/builder/use-add-to-cart-request';\nimport { notify } from '../components/cart/notifications/use-cart-notifications-events';\nimport {\n\tuseOwnershipStatusData,\n\tusePricing,\n\ttype ProductPricingData,\n} from '../components/per-user-data/per-user-data-context';\nimport { useLocalization } from '../localization';\nimport { getSkuIdFromAddToCartUrl } from '../util/get-sku-id-from-add-to-cart-url';\nimport { createAddToCartStatus } from '../util/map-pricing-to-user-product-data';\n\ninterface BuilderCartData {\n\tonAddToCartRequest: AddToCartRequestHandler;\n\tpreorderAddToCartSkuIdsBySkuId: MutableRefObject<Record<string, string>>;\n}\n\nconst BuilderCartDataContext = createContext<BuilderCartData | undefined>(undefined);\nconst c_emptyPreorderAddToCartSkuIdsBySkuId: MutableRefObject<Record<string, string>> = { current: {} };\n\n/** Maps a preorder sku id to the sku id the builder's add-to-cart request must post. */\nexport function usePreorderAddToCartSkuIds() {\n\treturn useContext(BuilderCartDataContext)?.preorderAddToCartSkuIdsBySkuId ?? c_emptyPreorderAddToCartSkuIdsBySkuId;\n}\n\n/** Add-to-cart request data for builder content. */\nexport function BuilderCartDataProvider({\n\tshouldSuppressMinicartDrawer = false,\n\tautoAppliedCouponCode,\n\tchildren,\n}: {\n\tshouldSuppressMinicartDrawer?: boolean;\n\tautoAppliedCouponCode?: string | null;\n\tchildren: React.ReactNode;\n}) {\n\tconst { onAddToCartRequest, preorderAddToCartSkuIdsBySkuId } = useAddToCartRequest(\n\t\tshouldSuppressMinicartDrawer,\n\t\tautoAppliedCouponCode\n\t);\n\n\treturn (\n\t\t<BuilderCartDataContext.Provider value={{ onAddToCartRequest, preorderAddToCartSkuIdsBySkuId }}>\n\t\t\t{children}\n\t\t</BuilderCartDataContext.Provider>\n\t);\n}\n\n/** Add-to-cart state for builder content. */\nexport function BuilderCartProvider({ children }: { children: React.ReactNode }) {\n\tconst cartData = useContext(BuilderCartDataContext);\n\tif (!cartData) {\n\t\tthrow new Error('BuilderCartProvider must be rendered inside BuilderCartDataProvider');\n\t}\n\n\treturn (\n\t\t<CartProvider useStatus={useBuilderStatus} onAddToCartRequest={cartData.onAddToCartRequest}>\n\t\t\t{children}\n\t\t</CartProvider>\n\t);\n}\n\nfunction useBuilderStatus(type?: 'SKU' | 'SPOID', id?: string): UseStatusResult {\n\tconst addToCartButtonResources = useLocalization('CommerceWeb.Resources.Shared.AddToMiniCartButton');\n\tconst subscribeToMiniCartButtonResources = useLocalization('CommerceWeb.Resources.Shared.SubscribeToMiniCartButton', {\n\t\tsuppressMissingError: true,\n\t});\n\tconst normalizedId = String(id ?? '').trim();\n\tconst shouldResolveSku = type === 'SKU' && Boolean(normalizedId);\n\n\tconst ownershipStatusResult = useOwnershipStatusData(type, normalizedId);\n\tconst pricingResult = usePricing(shouldResolveSku ? ownershipStatusResult.data?.productId : undefined);\n\n\t// Returns a SkuStatus/SpoidStatus per the commerce-components spec.\n\t// `buttonText` is intentionally left undefined in the neutral (not owned, not in cart)\n\t// case so the AddToCartButton falls through to `buttonTextOverride || resources.addToCart`.\n\t// SPOID callers (where SpoidStatus.buttonText is required) pass `defaultButtonText`\n\t// to supply the always-shown CTA label (e.g. \"Subscribe\").\n\tif (!type || !normalizedId) {\n\t\treturn { status: null, isLoading: false, isError: false, errorType: null };\n\t}\n\n\tif (shouldResolveSku) {\n\t\tconst isLoading =\n\t\t\townershipStatusResult.isLoading || (Boolean(ownershipStatusResult.data?.productId) && pricingResult.isLoading);\n\t\tconst hasError = Boolean(ownershipStatusResult.error || pricingResult.error);\n\t\tconst errorType = hasError ? ('fetch-error' as const) : null;\n\t\tif (!ownershipStatusResult.data) {\n\t\t\treturn {\n\t\t\t\tstatus: null,\n\t\t\t\tisLoading,\n\t\t\t\tisError: hasError,\n\t\t\t\terrorType,\n\t\t\t};\n\t\t}\n\n\t\tconst status = createAddToCartStatus(\n\t\t\t{\n\t\t\t\tisOwned: ownershipStatusResult.data.isOwned,\n\t\t\t\tisInCart: ownershipStatusResult.data.isInCart,\n\t\t\t\thasBeenPreordered: ownershipStatusResult.data.hasBeenPreordered,\n\t\t\t\tisPrepubProduct: Boolean(pricingResult.data?.isPrepubProduct),\n\t\t\t},\n\t\t\taddToCartButtonResources\n\t\t);\n\n\t\treturn {\n\t\t\tstatus,\n\t\t\tisLoading,\n\t\t\tisError: hasError,\n\t\t\terrorType,\n\t\t};\n\t}\n\n\tconst isLoading = ownershipStatusResult.isLoading;\n\tconst hasError = Boolean(ownershipStatusResult.error);\n\tconst errorType = hasError ? ('fetch-error' as const) : null;\n\tif (!ownershipStatusResult.data) {\n\t\treturn {\n\t\t\tstatus: null,\n\t\t\tisLoading,\n\t\t\tisError: hasError,\n\t\t\terrorType,\n\t\t};\n\t}\n\n\t// SPOID add-to-cart buttons are for subscriptions; default the CTA to \"Subscribe\"\n\t// rather than \"Add to cart\". Per the spec, SpoidStatus.buttonText is required, so\n\t// always supply a meaningful label.\n\tconst status = createAddToCartStatus(\n\t\t{\n\t\t\tisOwned: ownershipStatusResult.data.isOwned,\n\t\t\tisInCart: ownershipStatusResult.data.isInCart,\n\t\t\thasBeenPreordered: false,\n\t\t\tisPrepubProduct: false,\n\t\t\tdefaultButtonText: subscribeToMiniCartButtonResources.Subscribe,\n\t\t},\n\t\taddToCartButtonResources\n\t);\n\treturn {\n\t\tstatus: {\n\t\t\t...status,\n\t\t\tbuttonText: status.buttonText ?? subscribeToMiniCartButtonResources.Subscribe,\n\t\t},\n\t\tisLoading,\n\t\tisError: hasError,\n\t\terrorType,\n\t};\n}\n\n/** Add-to-cart requests for the PDP recommendations, handled by the page's add-to-cart button listener. */\nexport function RecommendationsCartProvider({ children }: { children: React.ReactNode }) {\n\tconst onAddToCartRequest = useCallback((args: AddToCartRequestArguments, options?: AddToCartButtonRequestOptions) => {\n\t\tconst skuItems = args.items.filter(item => item.type === 'SKU');\n\t\tif (skuItems.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst requestId = `${Date.now()}-${Math.random()}`;\n\t\toptions?.onRequestStart?.();\n\n\t\tconst controller = new AbortController();\n\n\t\tconst onCartUpdated = (e: Event) => {\n\t\t\tif ((e as CustomEvent).detail?.requestId === requestId) {\n\t\t\t\tcontroller.abort();\n\t\t\t\toptions?.onRequestFinish?.();\n\t\t\t\toptions?.onSuccess?.();\n\t\t\t}\n\t\t};\n\n\t\tconst onCartError = (e: Event) => {\n\t\t\tif ((e as CustomEvent).detail?.requestId === requestId) {\n\t\t\t\tcontroller.abort();\n\t\t\t\toptions?.onRequestFinish?.();\n\t\t\t\toptions?.onError?.(new Error('Failed to add to cart'));\n\t\t\t}\n\t\t};\n\n\t\tdocument.addEventListener('faithlife.sites.cart.updated', onCartUpdated, { signal: controller.signal });\n\t\tdocument.addEventListener('faithlife.sites.cart.updateError', onCartError, { signal: controller.signal });\n\n\t\tdocument.dispatchEvent(\n\t\t\tnew CustomEvent('faithlife.sites.addToCartButton.click', {\n\t\t\t\tbubbles: true,\n\t\t\t\tdetail: {\n\t\t\t\t\tskuIds: skuItems.map(item => item.identifier),\n\t\t\t\t\tquantity: skuItems[0].quantity,\n\t\t\t\t\tpayInFull: true,\n\t\t\t\t\trequestId,\n\t\t\t\t\tcouponCodes: args.couponCodes,\n\t\t\t\t},\n\t\t\t})\n\t\t);\n\t}, []);\n\n\treturn <CartProvider onAddToCartRequest={onAddToCartRequest}>{children}</CartProvider>;\n}\n\nexport interface CartRecommendationSkuData {\n\tisPrepubSku: boolean;\n}\n\nconst CartRecommendationsSkuDataContext = createContext<Record<string, CartRecommendationSkuData>>({});\n\n/** SKU-specific data for cart recommendations. */\nexport function CartRecommendationsDataProvider({\n\tskuDataBySkuId,\n\tchildren,\n}: {\n\tskuDataBySkuId: Record<string, CartRecommendationSkuData>;\n\tchildren: React.ReactNode;\n}) {\n\treturn (\n\t\t<CartRecommendationsSkuDataContext.Provider value={skuDataBySkuId}>\n\t\t\t{children}\n\t\t</CartRecommendationsSkuDataContext.Provider>\n\t);\n}\n\nfunction useCartRecommendationsStatus(type?: 'SKU' | 'SPOID', id?: string): UseStatusResult {\n\tconst skuDataBySkuId = useContext(CartRecommendationsSkuDataContext);\n\tconst addToCartButtonResources = useLocalization('CommerceWeb.Resources.Shared.AddToMiniCartButton');\n\n\tif (type !== 'SKU' || !id) {\n\t\treturn { status: null, isLoading: false, isError: false, errorType: null };\n\t}\n\treturn {\n\t\tstatus: {\n\t\t\tisOwned: false,\n\t\t\tbuttonText: skuDataBySkuId[id]?.isPrepubSku\n\t\t\t\t? addToCartButtonResources.preorder\n\t\t\t\t: addToCartButtonResources.addToCart,\n\t\t},\n\t\tisLoading: false,\n\t\tisError: false,\n\t\terrorType: null,\n\t};\n}\n\n/** Add-to-cart state and requests for the cart page recommendations, which update the open cart. */\nexport function CartRecommendationsCartProvider({\n\tupdateCartUrl,\n\tchildren,\n}: {\n\tupdateCartUrl: string;\n\tchildren: React.ReactNode;\n}) {\n\tconst onAddToCartRequest = useCallback(\n\t\tasync (args: AddToCartRequestArguments, options?: AddToCartButtonRequestOptions) => {\n\t\t\tconst skuItems = args.items.filter(item => item.type === 'SKU');\n\t\t\tif (skuItems.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst skuIds = skuItems.map(item => item.identifier);\n\t\t\toptions?.onRequestStart?.();\n\n\t\t\teventAggregator.trigger('cart:updating');\n\t\t\ttry {\n\t\t\t\tconst newCart = await CartClient.updateCartAsync(updateCartUrl, { skuIdsToAdd: skuIds });\n\n\t\t\t\tfor (const item of newCart.order?.analyticsTelemetry ?? []) {\n\t\t\t\t\t(window.dataLayer ??= []).push(item);\n\t\t\t\t}\n\n\t\t\t\teventAggregator.trigger('cart:updated', newCart);\n\t\t\t\toptions?.onSuccess?.();\n\t\t\t} catch (e) {\n\t\t\t\teventAggregator.trigger('cart:error');\n\t\t\t\toptions?.onError?.(e instanceof Error ? e : new Error(String(e)));\n\t\t\t} finally {\n\t\t\t\toptions?.onRequestFinish?.();\n\t\t\t}\n\t\t},\n\t\t[updateCartUrl]\n\t);\n\n\treturn (\n\t\t<CartProvider useStatus={useCartRecommendationsStatus} onAddToCartRequest={onAddToCartRequest}>\n\t\t\t{children}\n\t\t</CartProvider>\n\t);\n}\n\ninterface AddItemsToCartResult {\n\tredirectUrl?: string;\n\taddSkuToCartResultStatus?: string;\n\tanalyticsTelemetry?: unknown;\n\tnotifications?: {\n\t\tmessage: string;\n\t\tkind: Parameters<typeof notify>[1];\n\t\tcode: string;\n\t}[];\n\tsuppressMiniCartDrawer?: boolean;\n}\n\n/** Add-to-cart requests for the standalone product grid widget, which posts to the Logos domain cross-origin. */\nexport function ProductGridWidgetCartProvider({\n\tdomain,\n\taddItemsToCartUrl,\n\tpricingData,\n\tchildren,\n}: {\n\tdomain: string;\n\taddItemsToCartUrl: string | undefined;\n\tpricingData: Map<string, ProductPricingData>;\n\tchildren: React.ReactNode;\n}) {\n\tconst preorderAddToCartSkuIdsBySkuId = useMemo(() => {\n\t\tconst skuIdMap = new Map<string, string>();\n\t\tfor (const pricing of pricingData.values()) {\n\t\t\tconst primarySku = pricing.primarySku;\n\t\t\tif (primarySku?.isPreorder && primarySku.skuId) {\n\t\t\t\tconst addToCartSkuId = getSkuIdFromAddToCartUrl(\n\t\t\t\t\tprimarySku.routes?.AddToCartUrl ?? primarySku.routes?.addToCartUrl\n\t\t\t\t);\n\t\t\t\tif (addToCartSkuId) {\n\t\t\t\t\tskuIdMap.set(primarySku.skuId, addToCartSkuId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn skuIdMap;\n\t}, [pricingData]);\n\n\tconst onAddToCartRequest = useCallback<AddToCartRequestHandler>(\n\t\tasync ({ items, couponCodes }, { onRequestStart, onRequestFinish, onSuccess, onError } = {}) => {\n\t\t\tonRequestStart?.();\n\n\t\t\ttry {\n\t\t\t\tif (!addItemsToCartUrl || !items?.length) {\n\t\t\t\t\tthrow new Error('Unable to add products to cart');\n\t\t\t\t}\n\t\t\t\tconst skuItems = items.filter(item => item.type === IdentifierTypes.SKU);\n\t\t\t\tconst spoidItems = items.filter(item => item.type === IdentifierTypes.SPOID);\n\n\t\t\t\tconst result = (await CartClient.addItemsToCart(\n\t\t\t\t\tnew URL(addItemsToCartUrl, domain).href,\n\t\t\t\t\t{\n\t\t\t\t\t\tskuRequests: skuItems.map(item => ({\n\t\t\t\t\t\t\tskuId: preorderAddToCartSkuIdsBySkuId.get(item.identifier) ?? item.identifier,\n\t\t\t\t\t\t\tquantity: item.quantity || 1,\n\t\t\t\t\t\t})),\n\t\t\t\t\t\tsubscribableProductOptionRequests: spoidItems.map(item => ({\n\t\t\t\t\t\t\tsubscribableProductOptionId: item.identifier,\n\t\t\t\t\t\t\tquantity: item.quantity || 1,\n\t\t\t\t\t\t})),\n\t\t\t\t\t\tpayInFull: false,\n\t\t\t\t\t\tcouponCodes,\n\t\t\t\t\t\tsearchData: undefined,\n\t\t\t\t\t\tgroupId: undefined,\n\t\t\t\t\t\tredirectUrl: undefined,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcredentials: 'include',\n\t\t\t\t\t}\n\t\t\t\t)) as AddItemsToCartResult | null;\n\t\t\t\tif (!result) {\n\t\t\t\t\tthrow new Error('Unexpected error adding items to cart: no result returned');\n\t\t\t\t}\n\n\t\t\t\tif (result.redirectUrl) {\n\t\t\t\t\twindow.location.href = new URL(result.redirectUrl, domain).href;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tdocument.dispatchEvent(\n\t\t\t\t\tnew CustomEvent('faithlife.sites.cart.updated', {\n\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\taddedSkuIds: skuItems.map(item => item.identifier),\n\t\t\t\t\t\t\taddedSubscribableProductOptionIds: spoidItems.map(item => item.identifier),\n\t\t\t\t\t\t\tstatus: result.addSkuToCartResultStatus ?? 'success',\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t);\n\n\t\t\t\tif (result.analyticsTelemetry) {\n\t\t\t\t\t(window.dataLayer ??= []).push(result.analyticsTelemetry);\n\t\t\t\t}\n\n\t\t\t\tfor (const notification of result.notifications ?? []) {\n\t\t\t\t\t// Blog embeds already mount the universal header widget, which renders these\n\t\t\t\t\t// notifications inside the mini-cart once it opens.\n\t\t\t\t\tnotify(notification.message, notification.kind, notification.code);\n\t\t\t\t}\n\n\t\t\t\tif (!result.suppressMiniCartDrawer) {\n\t\t\t\t\tconst addedItemCount = [...skuItems, ...spoidItems].reduce((total, item) => total + (item.quantity || 1), 0);\n\t\t\t\t\tdocument.dispatchEvent(new CustomEvent('faithlife.sites.minicart.open', { detail: { addedItemCount } }));\n\t\t\t\t}\n\n\t\t\t\tonSuccess?.();\n\t\t\t} catch (error) {\n\t\t\t\tonError?.(error instanceof Error ? error : new Error(String(error)));\n\t\t\t} finally {\n\t\t\t\tonRequestFinish?.();\n\t\t\t}\n\t\t},\n\t\t[addItemsToCartUrl, domain, preorderAddToCartSkuIdsBySkuId]\n\t);\n\n\treturn <CartProvider onAddToCartRequest={onAddToCartRequest}>{children}</CartProvider>;\n}\n\n/** Add-to-cart requests for the library upsell modal, which sends the shopper straight to checkout. */\nexport function LibraryUpsellCartProvider({\n\tonLibraryAddedToCart,\n\tchildren,\n}: {\n\tonLibraryAddedToCart?: () => void;\n\tchildren: React.ReactNode;\n}) {\n\t// Adding a library here always redirects straight to checkout (see onLibraryAddedToCart),\n\t// so suppress the mini cart drawer to avoid it briefly flashing before the redirect.\n\tconst { onAddToCartRequest: handleAddToCartRequest } = useAddToCartRequest(true);\n\tconst onAddToCartRequest = useCallback<AddToCartRequestHandler>(\n\t\t(args, options) =>\n\t\t\thandleAddToCartRequest(args, {\n\t\t\t\t...options,\n\t\t\t\tonSuccess: () => {\n\t\t\t\t\tonLibraryAddedToCart?.();\n\t\t\t\t\toptions?.onSuccess?.();\n\t\t\t\t},\n\t\t\t}),\n\t\t[handleAddToCartRequest, onLibraryAddedToCart]\n\t);\n\n\treturn <CartProvider onAddToCartRequest={onAddToCartRequest}>{children}</CartProvider>;\n}\n","import React, { createContext, useContext, useMemo } from 'react';\nimport {\n\tProductProvider,\n\ttype CatalogProductData,\n\ttype DataResult,\n\ttype ResolvedProductData,\n\ttype UserProductData,\n} from '@faithlife/commerce-components';\nimport {\n\tuseOwnershipStatusData,\n\tusePricing,\n\ttype ProductPricingData,\n} from '../components/per-user-data/per-user-data-context';\nimport { useStaticDataContext } from '../components/static-data/static-data-context';\nimport { useDataLoader } from '../hooks/use-data-loader';\nimport { useLocalization } from '../localization';\nimport { getSkuIdFromAddToCartUrl } from '../util/get-sku-id-from-add-to-cart-url';\nimport { createAddToCartStatus, mapPricingToUserProductData } from '../util/map-pricing-to-user-product-data';\nimport { usePreorderAddToCartSkuIds } from './cart';\n\nexport function resolveProductData(\n\tcatalogData: CatalogProductData,\n\tuserSkus?: UserProductData['skus']\n): ResolvedProductData {\n\tconst userSkusById = new Map(userSkus?.map(sku => [sku.id, sku]));\n\treturn {\n\t\t...catalogData,\n\t\tskus: (catalogData.skus ?? []).map(sku => ({ ...sku, ...userSkusById.get(sku.id) })),\n\t};\n}\n\nconst StaticProductDataContext = createContext<Record<string, CatalogProductData>>({});\n\nfunction useStaticProductData(productId: string | undefined): DataResult<ResolvedProductData> {\n\tconst productData = useContext(StaticProductDataContext);\n\tconst catalogData = productId ? productData[productId] : undefined;\n\treturn {\n\t\tdata: catalogData ? resolveProductData(catalogData) : null,\n\t\tisLoading: false,\n\t\tisRefetching: false,\n\t\terror: null,\n\t};\n}\n\nexport function StaticProductDataProvider({\n\tstaticProductData,\n\tchildren,\n}: {\n\tstaticProductData: Record<string, CatalogProductData>;\n\tchildren: React.ReactNode;\n}) {\n\treturn <StaticProductDataContext.Provider value={staticProductData}>{children}</StaticProductDataContext.Provider>;\n}\n\nexport function StaticProductProvider({ children }: { children: React.ReactNode }) {\n\treturn <ProductProvider useProductData={useStaticProductData}>{children}</ProductProvider>;\n}\n\nfunction useBuilderUserProductData(pricing: ProductPricingData | undefined): UserProductData | null {\n\tconst addToCartButtonResources = useLocalization('CommerceWeb.Resources.Shared.AddToMiniCartButton');\n\tconst preorderAddToCartSkuIdsBySkuId = usePreorderAddToCartSkuIds();\n\n\t// Phase 2: fetch user-specific pricing and ownership (overlays default pricing).\n\t// Returned shape must match UserProductData in @faithlife/commerce-components, which\n\t// merges user-specific sku data into catalog skus by sku id. Each sku also carries\n\t// add-to-cart status (buttonText/isDisabled/tooltipText) derived from the same\n\t// createAddToCartStatus helper used by the cart's useStatus, so the resolved SkuStatus is\n\t// available without a separate per-sku status fetch.\n\treturn useMemo(() => {\n\t\tconst primarySku = pricing?.primarySku;\n\t\tif (!primarySku?.skuId) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst isPreorder = Boolean(primarySku.isPreorder);\n\n\t\t// Cache the add-to-cart SKU that existing mini-cart buttons would post for preorders.\n\t\t// Builder add-to-cart uses the multi-item AJAX route, so this remap keeps preorder\n\t\t// behavior consistent with search/PDP add-to-cart flows.\n\t\tif (isPreorder) {\n\t\t\tconst addToCartUrl = primarySku.routes?.AddToCartUrl ?? primarySku.routes?.addToCartUrl;\n\t\t\tconst addToCartSkuId = getSkuIdFromAddToCartUrl(addToCartUrl);\n\t\t\tif (addToCartSkuId) {\n\t\t\t\tpreorderAddToCartSkuIdsBySkuId.current[primarySku.skuId] = addToCartSkuId;\n\t\t\t}\n\t\t}\n\n\t\treturn mapPricingToUserProductData(pricing, addToCartButtonResources);\n\t}, [pricing, addToCartButtonResources, preorderAddToCartSkuIdsBySkuId]);\n}\n\nfunction useBuilderProductData(productId: string | undefined): DataResult<ResolvedProductData> {\n\tconst { staticProductData, getProductData } = useStaticDataContext();\n\tconst staticCatalogData = productId ? staticProductData[productId] : undefined;\n\tconst catalogResult = useDataLoader(staticCatalogData ? undefined : getProductData, productId);\n\tconst catalogData = staticCatalogData ?? catalogResult.data;\n\tconst pricingResult = usePricing(catalogData?.id);\n\tconst userProductData = useBuilderUserProductData(pricingResult.data);\n\tconst data = useMemo(\n\t\t() => (catalogData ? resolveProductData(catalogData, userProductData?.skus) : null),\n\t\t[catalogData, userProductData]\n\t);\n\n\tif (!data) {\n\t\treturn { ...catalogResult, data: null };\n\t}\n\n\treturn {\n\t\tdata,\n\t\tisLoading: false,\n\t\tisRefetching: catalogResult.isRefetching || pricingResult.isLoading,\n\t\terror: null,\n\t};\n}\n\n/** Product data for builder content: static catalog data when preloaded, otherwise fetched, with user pricing overlaid. */\nexport function BuilderProductProvider({ children }: { children: React.ReactNode }) {\n\treturn <ProductProvider useProductData={useBuilderProductData}>{children}</ProductProvider>;\n}\n\nexport type InitialSkuOwnership = Record<string, { isOwned: boolean; isInCart: boolean }>;\n\nconst InitialSkuOwnershipContext = createContext<InitialSkuOwnership>({});\n\nexport function InitialSkuOwnershipProvider({\n\tinitialOwnership,\n\tchildren,\n}: {\n\tinitialOwnership: InitialSkuOwnership;\n\tchildren: React.ReactNode;\n}) {\n\treturn <InitialSkuOwnershipContext.Provider value={initialOwnership}>{children}</InitialSkuOwnershipContext.Provider>;\n}\n\nfunction useAddToCartStatusSkus(catalogData: CatalogProductData | undefined) {\n\tconst resources = useLocalization('CommerceWeb.Resources.Shared.AddToMiniCartButton');\n\tconst initialOwnership = useContext(InitialSkuOwnershipContext);\n\tconst skuId = catalogData?.primarySkuId;\n\tconst { data: ownership, isLoading } = useOwnershipStatusData('SKU', skuId, catalogData?.id);\n\tconst initial = skuId ? initialOwnership[skuId] : undefined;\n\tconst hasOwnership = ownership !== undefined;\n\tconst hasStatus = hasOwnership || initial !== undefined;\n\tconst isOwned = hasOwnership ? ownership.isOwned : initial?.isOwned;\n\tconst isInCart = hasOwnership ? ownership.isInCart : initial?.isInCart;\n\tconst hasBeenPreordered = ownership?.hasBeenPreordered;\n\n\tconst userSkus = useMemo(\n\t\t() =>\n\t\t\tskuId && hasStatus\n\t\t\t\t? [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: skuId,\n\t\t\t\t\t\t\t...createAddToCartStatus(\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tisOwned: Boolean(isOwned),\n\t\t\t\t\t\t\t\t\tisInCart: Boolean(isInCart),\n\t\t\t\t\t\t\t\t\thasBeenPreordered: Boolean(hasBeenPreordered),\n\t\t\t\t\t\t\t\t\tisPrepubProduct: false,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tresources\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t]\n\t\t\t\t: undefined,\n\t\t[skuId, hasStatus, isOwned, isInCart, hasBeenPreordered, resources]\n\t);\n\n\treturn { userSkus, isRefetching: Boolean(skuId) && !hasOwnership && Boolean(isLoading) };\n}\n\n/** Static product data for the PDP recommendations, with each sku's add-to-cart status overlaid. */\nexport function RecommendationsProductProvider({ children }: { children: React.ReactNode }) {\n\treturn <ProductProvider useProductData={useRecommendationsProductData}>{children}</ProductProvider>;\n}\n\nfunction useRecommendationsProductData(productId: string | undefined): DataResult<ResolvedProductData> {\n\tconst productData = useContext(StaticProductDataContext);\n\tconst catalogData = productId ? productData[productId] : undefined;\n\tconst { userSkus, isRefetching } = useAddToCartStatusSkus(catalogData);\n\tconst data = useMemo(() => (catalogData ? resolveProductData(catalogData, userSkus) : null), [catalogData, userSkus]);\n\treturn {\n\t\tdata,\n\t\tisLoading: false,\n\t\tisRefetching,\n\t\terror: null,\n\t};\n}\n","export const getSkuIdFromAddToCartUrl = (addToCartUrl: string | undefined | null): string | null => {\n\tconst normalized = String(addToCartUrl ?? '').trim();\n\tif (!normalized) {\n\t\treturn null;\n\t}\n\n\tconst withoutOrigin = normalized.replace(/^https?:\\/\\/[^/]+/i, '');\n\tconst pathname = withoutOrigin.split(/[?#]/)[0];\n\tconst match = pathname.match(/\\/buy\\/([^/]+)/i);\n\treturn match?.[1] ? decodeURIComponent(match[1]) : null;\n};\n","import React, { useMemo } from 'react';\nimport { ResourcesProvider } from '@faithlife/commerce-components';\nimport { buildContainedResourcesLabels } from '../components/builder/contained-resources-mappers';\nimport { useLocalization } from '../localization';\n\n/** Localized resources for builder content. */\nexport function BuilderResourcesProvider({ children }: { children: React.ReactNode }) {\n\tconst addToCartButtonResources = useLocalization('CommerceWeb.Resources.Shared.AddToMiniCartButton');\n\tconst stepperControlResources = useLocalization('CommerceWeb.Resources.Shared.StepperControl', {\n\t\tsuppressMissingError: true,\n\t});\n\tconst containedResourcesStrings = useLocalization('CommerceWeb.Resources.Product.ContainedResources', {\n\t\tsuppressMissingError: true,\n\t});\n\tconst subscriptionPricingCardResources = useLocalization('CommerceWeb.Resources.Builder.SubscriptionPricingCards', {\n\t\tsuppressMissingError: true,\n\t});\n\n\t// `containedResourcesLabels` is the strict ContainedResourcesLabels slice fed to\n\t// the commerce-components context. The additional template/tooltip strings are consumed\n\t// only by the local mapper (see `BuilderContainedResourcesDataProvider`).\n\tconst containedResourcesLabels = useMemo(\n\t\t() => buildContainedResourcesLabels(containedResourcesStrings),\n\t\t[containedResourcesStrings]\n\t);\n\n\tconst resources = useMemo(\n\t\t() => ({\n\t\t\taddToCartButton: addToCartButtonResources,\n\t\t\tcontainedResources: containedResourcesLabels,\n\t\t\tstepperControl: {\n\t\t\t\tdecrementLabel: stepperControlResources.decrementLabel,\n\t\t\t\tincrementLabel: stepperControlResources.incrementLabel,\n\t\t\t\tvalueLabel: stepperControlResources.valueLabel,\n\t\t\t},\n\t\t\tsubscriptionPricingCards: subscriptionPricingCardResources,\n\t\t}),\n\t\t[addToCartButtonResources, stepperControlResources, containedResourcesLabels, subscriptionPricingCardResources]\n\t);\n\n\treturn <ResourcesProvider resources={resources}>{children}</ResourcesProvider>;\n}\n\n/** Add-to-cart button resources for the PDP recommendations. */\nexport function RecommendationsResourcesProvider({ children }: { children: React.ReactNode }) {\n\tconst addToCartButtonResources = useLocalization('CommerceWeb.Resources.Shared.AddToMiniCartButton');\n\n\tconst resources = useMemo(\n\t\t() => ({\n\t\t\taddToCartButton: {\n\t\t\t\taddToCart: addToCartButtonResources.addToCart,\n\t\t\t\taddedToCart: addToCartButtonResources.addedToCart,\n\t\t\t\tyouAlreadyOwnThisProduct: addToCartButtonResources.youAlreadyOwnThisProduct,\n\t\t\t\tfreeTrial: addToCartButtonResources.freeTrial,\n\t\t\t\tsubscribe: addToCartButtonResources.subscribe,\n\t\t\t\tchangePlan: addToCartButtonResources.changePlan,\n\t\t\t\tpreorder: addToCartButtonResources.preorder,\n\t\t\t},\n\t\t}),\n\t\t[addToCartButtonResources]\n\t);\n\n\treturn <ResourcesProvider resources={resources}>{children}</ResourcesProvider>;\n}\n\n/** Add-to-cart button resources for the cart recommendations and the library upsell modal. */\nexport function AddToCartButtonResourcesProvider({ children }: { children: React.ReactNode }) {\n\tconst addToCartButtonResources = useLocalization('CommerceWeb.Resources.Shared.AddToMiniCartButton');\n\tconst resources = useMemo(() => ({ addToCartButton: addToCartButtonResources }), [addToCartButtonResources]);\n\n\treturn <ResourcesProvider resources={resources}>{children}</ResourcesProvider>;\n}\n\n/** Stepper control resources for the standalone product grid widget, which receives them from its data request. */\nexport function ProductGridWidgetResourcesProvider({\n\tstepperControl,\n\tchildren,\n}: {\n\tstepperControl: { decrementLabel: string; incrementLabel: string; valueLabel: string };\n\tchildren: React.ReactNode;\n}) {\n\tconst resources = useMemo(\n\t\t() => ({\n\t\t\tstepperControl: {\n\t\t\t\tdecrementLabel: stepperControl.decrementLabel,\n\t\t\t\tincrementLabel: stepperControl.incrementLabel,\n\t\t\t\tvalueLabel: stepperControl.valueLabel,\n\t\t\t},\n\t\t}),\n\t\t[stepperControl]\n\t);\n\n\treturn <ResourcesProvider resources={resources}>{children}</ResourcesProvider>;\n}\n","import { useCallback, useContext } from 'react';\nimport { RouteContext } from '../../../route-context';\nimport { useLoadWishListProductData } from '../../add-to-wish-list/hooks';\nimport { SharedWishListFormContext } from '../../shared/wish-list/shared-wish-list-form-provider';\n\ninterface UseOnWishlistToggleOptions {\n\tgetPrimarySkuId: (productId: string) => Promise<string | null | undefined> | string | null | undefined;\n\t/** Fallback URL when the route is not configured. Builder omits this to treat a missing route as a hard guard. */\n\twishListsProductsUrlFallback?: string;\n\terrorContext: string;\n}\n\nexport function useOnWishlistToggle({\n\tgetPrimarySkuId,\n\twishListsProductsUrlFallback,\n\terrorContext,\n}: UseOnWishlistToggleOptions): (productId: string) => Promise<void> {\n\tconst { routes } = useContext(RouteContext);\n\tconst { open: openWishListForm } = useContext(SharedWishListFormContext);\n\tconst loadData = useLoadWishListProductData();\n\n\treturn useCallback(\n\t\tasync (productId: string) => {\n\t\t\tconst wishListsProductsUrl = routes.WishListsGetViewModelsForProductRequests ?? wishListsProductsUrlFallback;\n\t\t\tif (!productId || !wishListsProductsUrl || !openWishListForm) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst primarySkuId = await getPrimarySkuId(productId);\n\t\t\t\tif (!primarySkuId) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst productWishLists = await loadData({ productId, skus: [primarySkuId] }, { revalidate: true });\n\t\t\t\tif (!productWishLists) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\topenWishListForm(productId, productWishLists.wishListsProductMembershipRecords ?? []);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(`${errorContext}: failed to load wish list data`, error);\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\troutes.WishListsGetViewModelsForProductRequests,\n\t\t\twishListsProductsUrlFallback,\n\t\t\topenWishListForm,\n\t\t\tgetPrimarySkuId,\n\t\t\tloadData,\n\t\t\terrorContext,\n\t\t]\n\t);\n}\n","import React, { createContext, useCallback, useContext, useMemo, useState } from 'react';\nimport { WishlistProvider, type CatalogProductData, type WishlistContextValue } from '@faithlife/commerce-components';\nimport { useWishListProductData } from '../components/add-to-wish-list/hooks';\nimport { useOnProductAddedToWishList } from '../components/add-to-wish-list/events';\nimport { useOnWishlistToggle } from '../components/builder/hooks/use-on-wishlist-toggle';\nimport { useCurrentUser } from '../components/per-user-data/per-user-data-context';\nimport { useStaticDataContext } from '../components/static-data/static-data-context';\nimport { useDataLoader } from '../hooks/use-data-loader';\n\ntype GetPrimarySkuId = (productId: string) => Promise<string | undefined>;\n\ninterface WishlistMembershipData {\n\tgetPrimarySkuId: GetPrimarySkuId | undefined;\n\tonWishlistToggle: WishlistContextValue['onWishlistToggle'] | undefined;\n}\n\nconst WishlistMembershipDataContext = createContext<WishlistMembershipData>({\n\tgetPrimarySkuId: undefined,\n\tonWishlistToggle: undefined,\n});\n\nconst useWishlistMembershipData: NonNullable<WishlistContextValue['useWishlistData']> = productId => {\n\tconst { getPrimarySkuId } = useContext(WishlistMembershipDataContext);\n\tconst { isSignedIn } = useCurrentUser();\n\tconst skuResult = useDataLoader(isSignedIn ? getPrimarySkuId : undefined, productId);\n\tconst request = useMemo(\n\t\t() => (isSignedIn && productId && skuResult.data ? { productId, skus: [skuResult.data] } : undefined),\n\t\t[isSignedIn, productId, skuResult.data]\n\t);\n\tconst result = useWishListProductData(request);\n\tconst [added, setAdded] = useState<{ request: typeof request; data: typeof result.data }>();\n\tuseOnProductAddedToWishList(\n\t\tuseCallback(\n\t\t\t(addedProductId: string) => {\n\t\t\t\tif (request?.productId === addedProductId) {\n\t\t\t\t\tsetAdded({ request, data: result.data });\n\t\t\t\t}\n\t\t\t},\n\t\t\t[request, result.data]\n\t\t)\n\t);\n\tconst isOptimistic = added !== undefined && added.request === request && added.data === result.data;\n\tconst isOnUserWishlist = isOptimistic || (result.data?.productId === productId && result.data?.isInAnyWishList);\n\tconst isLoading = skuResult.isLoading || result.isLoading;\n\tconst error = skuResult.error ?? result.error ?? null;\n\treturn {\n\t\tdata:\n\t\t\tgetPrimarySkuId && isSignedIn && productId && (isOptimistic || (!isLoading && !error))\n\t\t\t\t? { id: productId, isOnUserWishlist: Boolean(isOnUserWishlist) }\n\t\t\t\t: null,\n\t\tisLoading,\n\t\tisRefetching: false,\n\t\terror,\n\t};\n};\n\ninterface WishlistMembershipDataProviderProps {\n\tgetPrimarySkuId: GetPrimarySkuId;\n\tonWishlistToggle: (productId: string) => void;\n\tchildren: React.ReactNode;\n}\n\nfunction WishlistMembershipDataProvider({\n\tgetPrimarySkuId,\n\tonWishlistToggle,\n\tchildren,\n}: WishlistMembershipDataProviderProps) {\n\tconst { isSignedIn } = useCurrentUser();\n\n\tconst contextValue = useMemo(\n\t\t() => ({\n\t\t\tgetPrimarySkuId,\n\t\t\tonWishlistToggle: isSignedIn ? onWishlistToggle : undefined,\n\t\t}),\n\t\t[getPrimarySkuId, isSignedIn, onWishlistToggle]\n\t);\n\n\treturn (\n\t\t<WishlistMembershipDataContext.Provider value={contextValue}>{children}</WishlistMembershipDataContext.Provider>\n\t);\n}\n\n/** Wishlist state for builder content, backed by preloaded or dynamically loaded catalog data. */\nexport function BuilderWishlistDataProvider({ children }: { children: React.ReactNode }) {\n\tconst { staticProductData, getProductData } = useStaticDataContext();\n\n\t// Spec §10: `onWishlistToggle(productId)` triggers the host's add-to-wishlist flow.\n\t// The wish-list batch endpoint requires a sku id per product; we derive the canonical\n\t// primary sku from static catalog data (falling back to a fetch when not preloaded).\n\tconst getPrimarySkuId = useCallback(\n\t\tasync (productId: string) => {\n\t\t\tconst catalogData = staticProductData[productId] ?? (await getProductData(productId));\n\t\t\treturn catalogData?.primarySkuId;\n\t\t},\n\t\t[staticProductData, getProductData]\n\t);\n\tconst onWishlistToggle = useOnWishlistToggle({\n\t\tgetPrimarySkuId,\n\t\terrorContext: 'BuilderComponentsContextProvider',\n\t});\n\n\treturn (\n\t\t<WishlistMembershipDataProvider getPrimarySkuId={getPrimarySkuId} onWishlistToggle={onWishlistToggle}>\n\t\t\t{children}\n\t\t</WishlistMembershipDataProvider>\n\t);\n}\n\n/** Wishlist state for a fixed set of products (PDP and cart recommendations). */\nexport function StaticWishlistDataProvider({\n\tstaticProductData,\n\terrorContext,\n\tchildren,\n}: {\n\tstaticProductData: Record<string, CatalogProductData>;\n\terrorContext: string;\n\tchildren: React.ReactNode;\n}) {\n\t// The wish-list batch endpoint requires a sku id per product; we derive the canonical\n\t// primary sku from the static catalog data.\n\tconst getPrimarySkuId = useCallback(\n\t\tasync (productId: string) => staticProductData[productId]?.primarySkuId,\n\t\t[staticProductData]\n\t);\n\tconst onWishlistToggle = useOnWishlistToggle({\n\t\tgetPrimarySkuId,\n\t\twishListsProductsUrlFallback: '/wishlists/products',\n\t\terrorContext,\n\t});\n\n\treturn (\n\t\t<WishlistMembershipDataProvider getPrimarySkuId={getPrimarySkuId} onWishlistToggle={onWishlistToggle}>\n\t\t\t{children}\n\t\t</WishlistMembershipDataProvider>\n\t);\n}\n\nexport function BuilderWishlistProvider({ children }: { children: React.ReactNode }) {\n\tconst { onWishlistToggle } = useContext(WishlistMembershipDataContext);\n\n\treturn (\n\t\t<WishlistProvider useWishlistData={useWishlistMembershipData} onWishlistToggle={onWishlistToggle}>\n\t\t\t{children}\n\t\t</WishlistProvider>\n\t);\n}\n\nexport function StaticWishlistProvider({ children }: { children: React.ReactNode }) {\n\tconst { onWishlistToggle } = useContext(WishlistMembershipDataContext);\n\n\treturn (\n\t\t<WishlistProvider useWishlistData={useWishlistMembershipData} onWishlistToggle={onWishlistToggle}>\n\t\t\t{children}\n\t\t</WishlistProvider>\n\t);\n}\n","import { useEffect } from 'react';\n\nexport const NEW_WISHLIST_CREATED = 'NEW_WISHLIST_CREATED';\nexport const PRODUCT_ADDED_TO_WISHLIST = 'PRODUCT_ADDED_TO_WISHLIST';\n\nexport function publishNewWishListCreated(wishList, baseAddToWishListUrl, productId) {\n\tconst customEvent = new CustomEvent(NEW_WISHLIST_CREATED, {\n\t\tdetail: {\n\t\t\twishList,\n\t\t\tbaseAddToWishListUrl,\n\t\t\tproductId,\n\t\t},\n\t});\n\twindow.dispatchEvent(customEvent);\n}\n\nexport function useOnNewWishListCreated(handler) {\n\tuseEffect(() => {\n\t\tfunction handlerHelper(event) {\n\t\t\tconst {\n\t\t\t\tdetail: { wishList, baseAddToWishListUrl, productId },\n\t\t\t} = event;\n\t\t\thandler(wishList, baseAddToWishListUrl, productId);\n\t\t}\n\n\t\twindow.addEventListener(NEW_WISHLIST_CREATED, handlerHelper);\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener(NEW_WISHLIST_CREATED, handlerHelper);\n\t\t};\n\t}, [handler]);\n}\n\nexport function publishProductAddedToWishList(productId, wishListId) {\n\tconst customEvent = new CustomEvent(PRODUCT_ADDED_TO_WISHLIST, {\n\t\tdetail: {\n\t\t\tproductId,\n\t\t\twishListId,\n\t\t},\n\t});\n\twindow.dispatchEvent(customEvent);\n}\n\nexport function useOnProductAddedToWishList(handler) {\n\tuseEffect(() => {\n\t\tfunction handlerHelper(event) {\n\t\t\tconst {\n\t\t\t\tdetail: { productId, wishListId },\n\t\t\t} = event;\n\t\t\thandler(productId, wishListId);\n\t\t}\n\n\t\twindow.addEventListener(PRODUCT_ADDED_TO_WISHLIST, handlerHelper);\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener(PRODUCT_ADDED_TO_WISHLIST, handlerHelper);\n\t\t};\n\t}, [handler]);\n}\n","import React, { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react';\nimport { getWishlistsForProducts } from '../../clients/wishlist-client';\nimport { createBatchContext } from '../../hooks/use-batch';\nimport { useCurrentUser } from '../per-user-data/per-user-data-context';\nimport { useOnProductAddedToWishList } from './events';\n\nexport interface WishListProductMembershipRecord {\n\tid: string;\n\tname: string;\n\tisProductInWishList: boolean;\n\troutes?: { AddProductToWishListUrl: string };\n}\n\nexport interface WishListsForProduct {\n\tproductId: string;\n\tisInAnyWishList: boolean;\n\twishListsProductMembershipRecords: WishListProductMembershipRecord[];\n}\n\nexport interface WishListProductRequest {\n\tproductId: string;\n\tskus: string[];\n}\n\nconst WishListProductsUrlContext = createContext<string | undefined>(undefined);\n\nexport const applyProductAddedToMembershipRecords = (\n\trecords: WishListProductMembershipRecord[],\n\twishListId: string\n): WishListProductMembershipRecord[] =>\n\trecords?.map(wl => (wl.id === wishListId ? { ...wl, isProductInWishList: true } : wl));\n\nexport const WishListProductBatchContext = createBatchContext<WishListProductRequest, WishListsForProduct, string>(\n\tasync (requests: WishListProductRequest[], wishListsProductsUrl: string | undefined) => {\n\t\tconst filteredRequests = requests.filter(r => r.productId && r.skus.length > 0);\n\t\tif (filteredRequests.length === 0 || !wishListsProductsUrl) {\n\t\t\treturn [];\n\t\t}\n\t\tconst response = await getWishlistsForProducts(wishListsProductsUrl, filteredRequests);\n\t\treturn Object.values(response.productWishListsByProductId);\n\t},\n\t(id, data) => data.find(d => JSON.stringify(d.productId) === JSON.stringify(id.productId))\n);\n\nfunction WishListBatchCacheClearer(): null {\n\tconst clearBatchCache = WishListProductBatchContext.useRevalidate();\n\tuseOnProductAddedToWishList(clearBatchCache);\n\treturn null;\n}\n\nexport function WishListProductBatchProvider({\n\tchildren,\n\twishListsProductsUrl,\n}: {\n\tchildren: React.ReactNode;\n\twishListsProductsUrl?: string;\n}): React.ReactElement {\n\tconst { userId } = useCurrentUser();\n\treturn (\n\t\t<WishListProductsUrlContext.Provider value={wishListsProductsUrl}>\n\t\t\t<WishListProductBatchContext.Provider\n\t\t\t\tkey={JSON.stringify([userId, wishListsProductsUrl])}\n\t\t\t\tcontext={wishListsProductsUrl}\n\t\t\t>\n\t\t\t\t<WishListBatchCacheClearer />\n\t\t\t\t{children}\n\t\t\t</WishListProductBatchContext.Provider>\n\t\t</WishListProductsUrlContext.Provider>\n\t);\n}\n\nexport function useLoadWishListProductData() {\n\tconst url = useContext(WishListProductsUrlContext);\n\tconst loadData = WishListProductBatchContext.useLoadData();\n\treturn useCallback(\n\t\t(productRequest: WishListProductRequest, options?: { revalidate?: boolean }) =>\n\t\t\turl ? loadData(productRequest, options) : Promise.resolve(undefined),\n\t\t[loadData, url]\n\t);\n}\n\nexport function useWishListProductData(productRequest: WishListProductRequest | undefined) {\n\tconst { isSignedIn } = useCurrentUser();\n\tconst url = useContext(WishListProductsUrlContext);\n\treturn WishListProductBatchContext.useData(isSignedIn && url ? productRequest : undefined);\n}\n\nexport function useProductInWishList(\n\tproductId?: string,\n\tskuId?: string,\n\tisWishlistEligible?: boolean\n): WishListsForProduct | null {\n\tconst { isSignedIn } = useCurrentUser();\n\tconst url = useContext(WishListProductsUrlContext);\n\tconst request = useMemo<WishListProductRequest | null>(\n\t\t() => (productId && skuId && isWishlistEligible && isSignedIn && url ? { productId, skus: [skuId] } : null),\n\t\t[productId, skuId, isWishlistEligible, isSignedIn, url]\n\t);\n\tconst { data: fetchedData, isLoading } = WishListProductBatchContext.useData(request ?? undefined);\n\tconst [data, setData] = useState<WishListsForProduct | null>(null);\n\n\tuseEffect(() => {\n\t\tsetData(fetchedData ?? null);\n\t}, [fetchedData, request]);\n\n\tuseOnProductAddedToWishList(\n\t\tuseCallback(\n\t\t\t(addedProductId: string, wishListId: string) => {\n\t\t\t\tif (productId !== addedProductId) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tsetData(prev =>\n\t\t\t\t\tprev !== null\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t...prev,\n\t\t\t\t\t\t\t\tisInAnyWishList: true,\n\t\t\t\t\t\t\t\twishListsProductMembershipRecords: applyProductAddedToMembershipRecords(\n\t\t\t\t\t\t\t\t\tprev.wishListsProductMembershipRecords,\n\t\t\t\t\t\t\t\t\twishListId\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: prev\n\t\t\t\t);\n\t\t\t},\n\t\t\t[productId]\n\t\t)\n\t);\n\n\treturn request && !isLoading && data?.productId === productId ? data : null;\n}\n","import React, { useContext } from 'react';\nimport { RouteContext } from '../../route-context';\nimport SharedWishListFormProvider from '../shared/wish-list/shared-wish-list-form-provider';\nimport { WishListProductBatchProvider } from './hooks';\n\ninterface WishlistContextProviderProps {\n\t/** Overrides the `WishListsGetViewModelsForProductRequests` route. */\n\twishListsProductsUrl?: string;\n\t/** Used when no route is configured. Omit to treat a missing route as a hard guard. */\n\twishListsProductsUrlFallback?: string;\n\tchildren: React.ReactNode;\n}\n\n/** The shared wish list form and batched membership lookups used by builder pages, the PDP and search. */\nexport function WishlistContextProvider({\n\twishListsProductsUrl,\n\twishListsProductsUrlFallback = '',\n\tchildren,\n}: WishlistContextProviderProps) {\n\tconst { routes } = useContext(RouteContext);\n\treturn (\n\t\t<SharedWishListFormProvider>\n\t\t\t<WishListProductBatchProvider\n\t\t\t\twishListsProductsUrl={\n\t\t\t\t\twishListsProductsUrl ?? routes.WishListsGetViewModelsForProductRequests ?? wishListsProductsUrlFallback\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</WishListProductBatchProvider>\n\t\t</SharedWishListFormProvider>\n\t);\n}\n","export const builderPageStylesheetsUpdatedEventName = 'builder-page:stylesheets-updated';\n\nexport interface BuilderPageStylesheetsUpdatedEventDetail {\n\tstylesheetIds: string[];\n}\n\nexport type BuilderPageStylesheetsUpdatedEvent = CustomEvent<BuilderPageStylesheetsUpdatedEventDetail>;\n\ninterface BuilderPageContentData {\n\tstylesheets?: {\n\t\tstylesheet?: {\n\t\t\tid?: string;\n\t\t\tmodel?: string;\n\t\t};\n\t}[];\n}\n\nexport function getBuilderPageStylesheets(contentData?: BuilderPageContentData) {\n\tif (!contentData) {\n\t\tthrow 'contentData must be defined';\n\t}\n\n\tconst stylesheetIds: string[] = [];\n\tconst seenIds = new Set<string>();\n\n\tfor (const stylesheet of contentData.stylesheets ?? []) {\n\t\tconst id = stylesheet?.stylesheet?.id;\n\t\tconst model = stylesheet?.stylesheet?.model;\n\n\t\tif (!id || !model || seenIds.has(id)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tseenIds.add(id);\n\t\tstylesheetIds.push(id);\n\t}\n\n\treturn stylesheetIds;\n}\n\nexport function createBuilderPageStylesheetsUpdatedEvent(stylesheetIds: string[]) {\n\treturn new CustomEvent<BuilderPageStylesheetsUpdatedEventDetail>(builderPageStylesheetsUpdatedEventName, {\n\t\tdetail: { stylesheetIds },\n\t});\n}\n","import { useEffect, useRef } from 'react';\n\nimport { BuilderContent } from '@builder.io/sdk';\n\nimport {\n\tbuilderPageStylesheetsUpdatedEventName,\n\tBuilderPageStylesheetsUpdatedEvent,\n} from './dynamic-stylesheets-event';\nimport { initializeBuilderSdk } from './builder-sdk';\n\nconst managedStylesheetSelector = 'link[data-id]';\nconst stylesheetInsertionMarker = '[preview-dynamic-stylesheets-injection]';\nconst builder = initializeBuilderSdk();\n\nfunction getManagedStylesheetLinks() {\n\treturn Array.from(document.head.querySelectorAll<HTMLLinkElement>(managedStylesheetSelector));\n}\n\nfunction getStylesheetInsertionMarker() {\n\tconst commentWalker = document.createTreeWalker(document.head, NodeFilter.SHOW_COMMENT);\n\n\twhile (commentWalker.nextNode()) {\n\t\tif (commentWalker.currentNode.textContent?.trim() === stylesheetInsertionMarker) {\n\t\t\treturn commentWalker.currentNode;\n\t\t}\n\t}\n\n\treturn null;\n}\n\nfunction getManagedStylesheetById() {\n\treturn getManagedStylesheetLinks().reduce((result, link) => {\n\t\tconst stylesheetId = link.dataset.id;\n\n\t\tif (stylesheetId) {\n\t\t\tresult.set(stylesheetId, link);\n\t\t}\n\n\t\treturn result;\n\t}, new Map<string, HTMLLinkElement>());\n}\n\nasync function fetchStylesheetUrl(stylesheetId: string) {\n\ttry {\n\t\tconst content = (await builder\n\t\t\t.get('logos-stylesheets', {\n\t\t\t\tquery: { id: stylesheetId },\n\t\t\t\tlimit: 1,\n\t\t\t\tfields: 'data.url',\n\t\t\t})\n\t\t\t.promise()) as BuilderContent | null;\n\n\t\treturn typeof content?.data?.url === 'string' ? content.data.url : null;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nconst DynamicStylesheets = () => {\n\tconst latestUpdateIdRef = useRef(0);\n\n\tuseEffect(() => {\n\t\tlet isMounted = true;\n\n\t\tasync function handleStylesheetsUpdated(event: Event) {\n\t\t\tconst insertionMarker = getStylesheetInsertionMarker();\n\n\t\t\tif (!insertionMarker) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst nextStylesheetIds = (event as BuilderPageStylesheetsUpdatedEvent).detail?.stylesheetIds ?? [];\n\t\t\tconst currentStylesheetById = getManagedStylesheetById();\n\t\t\tconst currentStylesheetIds = Array.from(currentStylesheetById.keys());\n\n\t\t\tconst stylesheetIdsToAdd = nextStylesheetIds.filter(id => !currentStylesheetIds.includes(id));\n\t\t\tconst stylesheetIdsToRemove = currentStylesheetIds.filter(id => !nextStylesheetIds.includes(id));\n\n\t\t\tif (stylesheetIdsToAdd.length === 0 && stylesheetIdsToRemove.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlatestUpdateIdRef.current += 1;\n\t\t\tconst updateId = latestUpdateIdRef.current;\n\n\t\t\tconst stylesheetUrlsToAdd = [];\n\t\t\tfor (const stylesheetId of stylesheetIdsToAdd) {\n\t\t\t\tconst url = await fetchStylesheetUrl(stylesheetId);\n\t\t\t\tstylesheetUrlsToAdd.push({\n\t\t\t\t\tstylesheetId,\n\t\t\t\t\turl,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (!isMounted || updateId !== latestUpdateIdRef.current) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (const stylesheetIdToRemove of stylesheetIdsToRemove) {\n\t\t\t\tconst link = currentStylesheetById.get(stylesheetIdToRemove);\n\t\t\t\tif (link) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (const { stylesheetId, url } of stylesheetUrlsToAdd) {\n\t\t\t\tif (!url) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst link = document.createElement('link');\n\t\t\t\tlink.rel = 'stylesheet';\n\t\t\t\tlink.href = url;\n\t\t\t\tlink.dataset.id = stylesheetId;\n\n\t\t\t\tif (insertionMarker) {\n\t\t\t\t\tdocument.head.insertBefore(link, insertionMarker);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\twindow.addEventListener(builderPageStylesheetsUpdatedEventName, handleStylesheetsUpdated);\n\n\t\treturn () => {\n\t\t\tisMounted = false;\n\t\t\twindow.removeEventListener(builderPageStylesheetsUpdatedEventName, handleStylesheetsUpdated);\n\t\t};\n\t}, []);\n\n\treturn null;\n};\n\nexport default DynamicStylesheets;\n","import React from 'react';\n\nimport { PerUserDataContextProvider } from '../per-user-data/per-user-data-context';\nimport ContentEditLink from '../shared/content-edit-link';\nimport { useIsPreviewingThisBuilderModel } from '../../builder';\nimport { createBuilderPageStylesheetsUpdatedEvent, getBuilderPageStylesheets } from './dynamic-stylesheets-event';\nimport RenderBuilderContent, { RenderBuilderContentProps } from './render-builder-content';\nimport DynamicStylesheets from './dynamic-stylesheets';\n\ninterface Props {\n\teditUrl?: string;\n\tbuilderIo: RenderBuilderContentProps;\n}\n\nconst BuilderPage = (props: Props) => {\n\tconst isPreviewingThisBuilderModel = useIsPreviewingThisBuilderModel('page');\n\n\tfunction handleContentLoaded(contentData: any) {\n\t\tif (isPreviewingThisBuilderModel && contentData) {\n\t\t\twindow.dispatchEvent(createBuilderPageStylesheetsUpdatedEvent(getBuilderPageStylesheets(contentData)));\n\t\t}\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{props.editUrl && <ContentEditLink url={props.editUrl} title=\"Edit this content\" />}\n\t\t\t<div className=\"tw-preflight\">\n\t\t\t\t<PerUserDataContextProvider>\n\t\t\t\t\t<RenderBuilderContent onContentLoaded={handleContentLoaded} {...props.builderIo} />\n\t\t\t\t</PerUserDataContextProvider>\n\t\t\t</div>\n\t\t\t{isPreviewingThisBuilderModel && <DynamicStylesheets />}\n\t\t</>\n\t);\n};\n\nexport default BuilderPage;\n","import { Builder } from '@builder.io/react';\n\ninterface GlobalThis {\n\tlayoutViewModel?: {\n\t\tbuilderIoPublicApiKey?: string;\n\t};\n}\n\nexport function initializeBuilderSdk() {\n\tconst apiKey = (globalThis as GlobalThis).layoutViewModel?.builderIoPublicApiKey;\n\tconst builder = new Builder(apiKey);\n\n\tif (apiKey && builder.apiKey !== apiKey) {\n\t\tbuilder.init(apiKey);\n\t}\n\n\treturn builder;\n}\n","import React, { useEffect } from 'react';\n\nimport { PerUserDataContextProvider } from '../per-user-data/per-user-data-context';\nimport { BuilderIoContentViewModel, useIsPreviewingThisBuilderModel } from '../../builder';\nimport { notifyWarning } from '../notifications';\nimport RenderBuilderContent, { RenderBuilderContentProps } from './render-builder-content';\n\ninterface Props {\n\tbuilderIo: BuilderIoContentViewModel;\n\trestrictOverflow?: boolean;\n\tdomainUri?: string;\n\tcontext?: object;\n\tonContentLoaded?: RenderBuilderContentProps['onContentLoaded'];\n}\n\nconst BuilderSection = (props: Props) => {\n\tconst isPreviewingThisBuilderModel = useIsPreviewingThisBuilderModel(props.builderIo.model);\n\n\tuseEffect(() => {\n\t\tif (isPreviewingThisBuilderModel) {\n\t\t\tnotifyWarning(`You are previewing the \"${props.builderIo.model}\" Builder.io model.`);\n\t\t}\n\t}, [isPreviewingThisBuilderModel, props.builderIo.model]);\n\n\treturn (\n\t\t<PerUserDataContextProvider>\n\t\t\t<RenderBuilderContent\n\t\t\t\t{...props.builderIo}\n\t\t\t\trestrictOverflow={props.restrictOverflow}\n\t\t\t\tdomainUri={props.domainUri}\n\t\t\t\tcontext={props.context}\n\t\t\t\tonContentLoaded={props.onContentLoaded}\n\t\t\t/>\n\t\t</PerUserDataContextProvider>\n\t);\n};\n\nexport default BuilderSection;\n","import React from 'react';\nimport { SalePriceDisplayPopover } from '@faithlife/commerce-components';\n\nconst c_dynamicPriceUrl = '/dynamic-price';\n\n/**\n * Replaces `{TOKEN}` placeholders in a template string with values from the\n * provided fields map. Values may be strings or React nodes; the result is an\n * array of React children suitable for rendering inside an element.\n */\nexport function formatTemplate(template, fields) {\n\tif (template === null) {\n\t\treturn null;\n\t}\n\tconst parts = String(template).split(/(\\{[A-Z0-9_]+\\})/g);\n\treturn parts\n\t\t.map((part, i) => {\n\t\t\tconst match = /^\\{([A-Z0-9_]+)\\}$/.exec(part);\n\t\t\tif (!match) {\n\t\t\t\treturn part;\n\t\t\t}\n\t\t\tconst value = fields[match[1]];\n\t\t\tif (value === undefined || value === null) {\n\t\t\t\treturn part;\n\t\t\t}\n\t\t\tif (React.isValidElement(value)) {\n\t\t\t\treturn React.cloneElement(value, { key: `tpl-${i}` });\n\t\t\t}\n\t\t\treturn value;\n\t\t})\n\t\t.filter(part => part !== '');\n}\n\nfunction pickPartiallyOwnedTemplate(labels, ownedIncludedCount) {\n\treturn ownedIncludedCount > 0 ? labels.newPartiallyOwnedTooltipFormat : labels.newPartiallyOwnedNoneIncludedTooltip;\n}\n\nfunction dynamicPriceLink(labels) {\n\treturn (\n\t\t<a href={c_dynamicPriceUrl} target=\"_blank\" rel=\"noopener noreferrer\">\n\t\t\t{labels.dynamicPrice}\n\t\t</a>\n\t);\n}\n\nfunction buildPartiallyIncludedTooltipText(labels, includedCount, totalCount, isCollectionFullyOwned) {\n\tconst base = formatTemplate(labels.partiallyIncludedTooltipFormat, {\n\t\tINCLUDED_COUNT: String(includedCount),\n\t\tCOLLECTION_COUNT: String(totalCount),\n\t})\n\t\t.map(p => (typeof p === 'string' ? p : ''))\n\t\t.join('');\n\tif (isCollectionFullyOwned && labels.youAlreadyOwnCollection) {\n\t\treturn `${base} ${labels.youAlreadyOwnCollection}`;\n\t}\n\treturn base;\n}\n\nfunction buildSalePriceDisplay(row, labels, isForeignCurrency) {\n\tconst ownership = row.ownership || {};\n\tconst isOwned = !!row.isOwned || ownership.ownedAvailableResourceCount === ownership.totalAvailableResourceCount;\n\tconst isPartiallyIncluded = !!row.isPartial;\n\tconst isPartiallyOwned = !!ownership.isPartiallyOwned;\n\tconst includedCount = (row.subResources || []).length;\n\tconst ownedIncludedCount = ownership.ownedSubresourceCount || 0;\n\tconst allSubresourcesOwned = includedCount > 0 && ownedIncludedCount === includedCount;\n\n\tif (isOwned) {\n\t\treturn labels.owned;\n\t}\n\n\tif (allSubresourcesOwned && isPartiallyIncluded) {\n\t\tconst template = labels.partiallyIncludedFullyOwnedTooltip;\n\t\tconst content = formatTemplate(template, {\n\t\t\tINCLUDED_COUNT: String(includedCount),\n\t\t\tCOLLECTION_COUNT: String(ownership.totalResourceCount),\n\t\t\tINCLUDED_OWNED_COUNT: String(ownedIncludedCount),\n\t\t});\n\t\treturn (\n\t\t\t<SalePriceDisplayPopover key={template} anchorText={labels.owned}>\n\t\t\t\t{content}\n\t\t\t</SalePriceDisplayPopover>\n\t\t);\n\t}\n\n\tif (isPartiallyOwned && !isPartiallyIncluded) {\n\t\tconst template = labels.fullyIncludedPartlyOwnedTooltip;\n\t\tconst content = formatTemplate(template, {\n\t\t\tOWNED_COUNT: String(ownership.ownedResourceCount),\n\t\t\tCOLLECTION_COUNT: String(ownership.totalResourceCount),\n\t\t\tDYNAMIC_PRICE_URL: dynamicPriceLink(labels),\n\t\t});\n\t\treturn (\n\t\t\t<SalePriceDisplayPopover key={template} anchorText={labels.partiallyOwned}>\n\t\t\t\t{content}\n\t\t\t</SalePriceDisplayPopover>\n\t\t);\n\t}\n\n\tif (isPartiallyOwned && isPartiallyIncluded) {\n\t\tconst template = pickPartiallyOwnedTemplate(labels, ownedIncludedCount);\n\t\tconst content = formatTemplate(template, {\n\t\t\tINCLUDED_COUNT: String(includedCount),\n\t\t\tCOLLECTION_COUNT: String(ownership.totalResourceCount),\n\t\t\tINCLUDED_OWNED_COUNT: String(ownedIncludedCount),\n\t\t\tDYNAMIC_PRICE_URL: dynamicPriceLink(labels),\n\t\t});\n\t\treturn (\n\t\t\t<SalePriceDisplayPopover key={template} anchorText={labels.partiallyOwned}>\n\t\t\t\t{content}\n\t\t\t</SalePriceDisplayPopover>\n\t\t);\n\t}\n\n\tif (isPartiallyIncluded) {\n\t\treturn null;\n\t}\n\n\tif (!row.salePriceDisplay && !row.salePrice) {\n\t\treturn null;\n\t}\n\n\tconst approxPrefix = isForeignCurrency && !row.isFree ? '≈ ' : '';\n\treturn `${approxPrefix}${row.salePriceDisplay}`;\n}\n\nfunction mapSubResource(sub, labels, isForeignCurrency) {\n\tlet salePriceDisplay = null;\n\tif (sub.isOwned) {\n\t\tsalePriceDisplay = labels.owned;\n\t} else if (sub.salePriceDisplay) {\n\t\tconst approxPrefix = isForeignCurrency ? '≈ ' : '';\n\t\tsalePriceDisplay = `${approxPrefix}${sub.salePriceDisplay}`;\n\t}\n\treturn {\n\t\tproductId: sub.productId,\n\t\tname: sub.name,\n\t\tisOwned: !!sub.isOwned,\n\t\tsalePriceDisplay,\n\t};\n}\n\nfunction mapRow(row, labels, isForeignCurrency, defaultExpanded) {\n\tconst ownership = row.ownership || {};\n\tconst isPartiallyIncluded = !!row.isPartial;\n\tconst subResources = row.subResources || [];\n\tconst includedCount = subResources.length;\n\tconst isCollectionFullyOwned =\n\t\townership.ownedResourceCount === ownership.totalResourceCount && ownership.totalResourceCount > 0;\n\tconst partiallyIncludedTooltipText = isPartiallyIncluded\n\t\t? buildPartiallyIncludedTooltipText(labels, includedCount, ownership.totalResourceCount, isCollectionFullyOwned)\n\t\t: undefined;\n\n\treturn {\n\t\tproductId: row.productId,\n\t\tname: row.name,\n\t\tisOwned: !!row.isOwned,\n\t\tsalePriceDisplay: buildSalePriceDisplay(row, labels, isForeignCurrency),\n\t\tpartiallyIncludedTooltipText,\n\t\t// `defaultExpanded` is only meaningful on collection rows (those with subResources).\n\t\t// Per the commerce-components spec, a section containing exactly one collection row\n\t\t// should start expanded to match the Skeletor behavior.\n\t\tdefaultExpanded: subResources.length > 0 ? defaultExpanded : undefined,\n\t\tsubResources: subResources.map(sub => mapSubResource(sub, labels, isForeignCurrency)),\n\t};\n}\n\nfunction mapSection(section, labels, isForeignCurrency) {\n\tlet priceColumnLabel;\n\tif (section.areAllRowsOwned) {\n\t\tpriceColumnLabel = labels.owned;\n\t} else if (section.priceColumnDisplay) {\n\t\tpriceColumnLabel = section.priceColumnDisplay;\n\t}\n\n\tconst rows = section.rows || [];\n\tconst collectionRowCount = rows.reduce((count, row) => count + ((row.subResources || []).length > 0 ? 1 : 0), 0);\n\tconst hasSingleCollection = collectionRowCount === 1;\n\n\treturn {\n\t\tcategoryToken: section.categoryToken,\n\t\tcategoryLabel: section.categoryLabel,\n\t\tsortPriority: section.sortPriority || 0,\n\t\ttotalCount: section.totalCount,\n\t\tunownedCount: section.unownedCount,\n\t\tpriceColumnLabel,\n\t\trows: rows.map(row => mapRow(row, labels, isForeignCurrency, hasSingleCollection)),\n\t};\n}\n\n/**\n * Maps the CommerceWeb `/product/{productId}/containedresources` JSON payload into the\n * `ContainedResourcesData` shape consumed by the @faithlife/commerce-components\n * `<ContainedResources>` component.\n */\nexport function mapContainedResourcesData(viewModel, labels) {\n\tif (!viewModel || !Array.isArray(viewModel.sections)) {\n\t\treturn null;\n\t}\n\n\tconst isForeignCurrency = !!viewModel.isForeignCurrency;\n\n\treturn {\n\t\tsections: viewModel.sections.map(section => mapSection(section, labels, isForeignCurrency)),\n\t\ttotalValueDisplay: viewModel.totalValueDisplay || undefined,\n\t\tisOwnedByUser: !!viewModel.isOwnedByUser,\n\t\tdisplaySalePricedCopy: !!viewModel.displaySalePricedCopy,\n\t\tfootnotes: Array.isArray(viewModel.footnotes) && viewModel.footnotes.length > 0 ? viewModel.footnotes : undefined,\n\t};\n}\n\n/**\n * Maps the `/product/{id}/tooltip` JSON payload (`ProductTooltipViewModel`) into\n * the `ContainedResourceTooltipData` shape.\n *\n * Returns null when no usable data is present — `name` is required by the\n * commerce-components `ContainedResourceTooltipData` contract, and a null\n * return triggers the popover's `previewNotAvailableLabel` fallback.\n */\nexport function mapContainedResourceTooltipData(viewModel) {\n\tif (!viewModel || !viewModel.name) {\n\t\treturn null;\n\t}\n\treturn {\n\t\tname: viewModel.name,\n\t\timageUri: viewModel.imageUri || undefined,\n\t\tauthorText: viewModel.authorText || undefined,\n\t\tpriceDisplay: viewModel.retailPrice || undefined,\n\t\tproductPageUrl: viewModel.detailsUri || undefined,\n\t\townershipText: buildOwnershipText(viewModel.ownedResourceCount, viewModel.totalResourceCount),\n\t};\n}\n\nfunction buildOwnershipText(ownedResourceCount, totalResourceCount) {\n\tif (!ownedResourceCount || ownedResourceCount <= 0) {\n\t\treturn undefined;\n\t}\n\tif (!totalResourceCount || totalResourceCount <= ownedResourceCount) {\n\t\treturn undefined;\n\t}\n\treturn `${ownedResourceCount} / ${totalResourceCount}`;\n}\n\n/**\n * Converts resx-style `%TOKEN%` placeholders to `{TOKEN}` format used by\n * `formatTemplate`.\n */\nfunction convertPlaceholders(str) {\n\tif (!str) {\n\t\treturn str;\n\t}\n\treturn str.replace(/%([A-Z0-9_]+)%/g, '{$1}');\n}\n\n/**\n * Builds the `ContainedResourcesLabels` object passed to the commerce-components\n * context. Falls back to undefined for missing keys so the downstream component\n * skips the corresponding UI element.\n *\n * Note: `comingSoonFootnoteLabel` is intentionally omitted. The CommerceWeb BFF\n * (see Mappers/Product/ContainedResourcesViewModelMapper.cs) emits per-row\n * footnotes via the `footnotes[]` API rather than the legacy\n * `containsDeferredResources` boolean, so the legacy label has no consumer.\n */\nexport function buildContainedResourcesLabels(strings) {\n\tif (!strings) {\n\t\treturn {};\n\t}\n\treturn {\n\t\texpandAllLabel: strings.ExpandAll,\n\t\tcollapseAllLabel: strings.CollapseAll,\n\t\thideOwnedLabel: strings.HideBooksIOwn,\n\t\ttotalValueLabel: strings.TotalValueIfSoldSeparately,\n\t\tpartiallyIncludedLegendLabel: strings.partiallyIncluded,\n\t\tsalePricedFootnoteLabel: strings.IndividualProductsSalePriced,\n\t\tifPurchasedSeparatelyLabel: strings.IfPurchasedSeparately,\n\t\tlearnMoreLabel: strings.LearnMoreButtonText,\n\t\tcloseTooltipLabel: strings.CloseTooltip,\n\t\tpreviewNotAvailableLabel: strings.PreviewNotAvailable,\n\t};\n}\n\n/**\n * Builds the template/tooltip strings used internally by `mapContainedResourcesData`\n * when shaping per-row salePriceDisplay content. These strings are NOT part of the\n * commerce-components `ContainedResourcesLabels` contract and must not be passed\n * through to the context's `resources.containedResources`.\n */\nexport function buildContainedResourcesMapperStrings(strings) {\n\tif (!strings) {\n\t\treturn {};\n\t}\n\treturn {\n\t\towned: strings.owned,\n\t\tpartiallyOwned: strings.partiallyOwned,\n\t\tdynamicPrice: strings.dynamicPrice,\n\t\tpartiallyIncludedTooltipFormat: convertPlaceholders(strings.partiallyIncludedTooltipFormat),\n\t\tpartiallyIncludedFullyOwnedTooltip: convertPlaceholders(strings.partiallyIncludedFullyOwnedTooltip),\n\t\tfullyIncludedPartlyOwnedTooltip: convertPlaceholders(strings.fullyIncludedPartlyOwnedTooltip),\n\t\tnewPartiallyOwnedTooltipFormat: convertPlaceholders(strings.newPartiallyOwnedTooltipFormat),\n\t\tnewPartiallyOwnedNoneIncludedTooltip: convertPlaceholders(strings.newPartiallyOwnedNoneIncludedTooltip),\n\t\tyouAlreadyOwnCollection: strings.youAlreadyOwnCollection,\n\t};\n}\n","import React, { useMemo } from 'react';\nimport { AuthorProvider, type Author, type DataResult } from '@faithlife/commerce-components';\nimport { AuthorBatch } from '../hooks/use-author';\n\nfunction useBuilderAuthor(authorId: string | undefined): DataResult<Author> {\n\tconst { data: author, isLoading, error } = AuthorBatch.useData(authorId);\n\tconst data = useMemo(\n\t\t() =>\n\t\t\tauthor\n\t\t\t\t? {\n\t\t\t\t\t\tdisplayName: author.displayName,\n\t\t\t\t\t\timageUrl: author.imageUrlLarge,\n\t\t\t\t\t\tbio: author.longDescription,\n\t\t\t\t\t}\n\t\t\t\t: null,\n\t\t[author]\n\t);\n\treturn {\n\t\tdata,\n\t\tisLoading,\n\t\tisRefetching: false,\n\t\terror: error ?? null,\n\t};\n}\n\n/** Supplies author data to builder content. */\nexport function BuilderAuthorProvider({ children }: { children: React.ReactNode }) {\n\treturn (\n\t\t<AuthorBatch.Provider>\n\t\t\t<AuthorProvider useAuthor={useBuilderAuthor}>{children}</AuthorProvider>\n\t\t</AuthorBatch.Provider>\n\t);\n}\n","import React, { createContext, useContext } from 'react';\nimport {\n\tBlogProvider,\n\ttype BlogCarouselId,\n\ttype BlogCarouselPost,\n\ttype DataResult,\n} from '@faithlife/commerce-components';\n\nconst BuilderBlogPostsContext = createContext<Record<string, BlogCarouselPost[]> | undefined>(undefined);\n\nfunction useBuilderBlogPosts(carouselId: BlogCarouselId | undefined): DataResult<BlogCarouselPost[]> {\n\tconst staticBlogPosts = useContext(BuilderBlogPostsContext);\n\treturn {\n\t\tdata: carouselId ? (staticBlogPosts?.[carouselId] ?? null) : null,\n\t\tisLoading: false,\n\t\tisRefetching: false,\n\t\terror: null,\n\t};\n}\n\n/** Supplies the server-rendered blog posts to the builder blog hook. */\nexport function BuilderBlogDataProvider({\n\tstaticBlogPosts,\n\tchildren,\n}: {\n\tstaticBlogPosts?: Record<string, BlogCarouselPost[]>;\n\tchildren: React.ReactNode;\n}) {\n\treturn <BuilderBlogPostsContext.Provider value={staticBlogPosts}>{children}</BuilderBlogPostsContext.Provider>;\n}\n\n/** Supplies builder blog data to commerce-components. */\nexport function BuilderBlogProvider({ children }: { children: React.ReactNode }) {\n\treturn <BlogProvider useBlogPosts={useBuilderBlogPosts}>{children}</BlogProvider>;\n}\n","import React, { createContext, useContext, useEffect, useRef, useState, type PropsWithChildren } from 'react';\nimport type { DataResult } from '@faithlife/commerce-components';\n\nconst c_emptyResult: DataResult<never> = Object.freeze({\n\tdata: null,\n\tisLoading: false,\n\tisRefetching: false,\n\terror: null,\n});\n\nconst c_loadingResult: DataResult<never> = Object.freeze({\n\t...c_emptyResult,\n\tisLoading: true,\n});\n\nexport function createCacheContext<T, TContext = undefined>(\n\tloader: (key: string, context: TContext | undefined) => Promise<T | null>\n) {\n\ttype Subscriber = (result: DataResult<T>) => void;\n\n\tinterface CacheEntry {\n\t\tresult: DataResult<T>;\n\t\tsubscribers: Set<Subscriber>;\n\t\tpromise?: Promise<T | null>;\n\t}\n\n\tinterface CacheInstance {\n\t\tcache: Map<string, CacheEntry>;\n\t\tsubscribe: (key: string, subscriber: Subscriber) => () => void;\n\t\tloadData: (key: string) => Promise<T | null>;\n\t\trevalidate: () => void;\n\t}\n\n\tconst Context = createContext<CacheInstance | undefined>(undefined);\n\n\tconst publish = (entry: CacheEntry, result: DataResult<T>) => {\n\t\tentry.result = result;\n\t\tfor (const listener of Array.from(entry.subscribers)) {\n\t\t\tif (entry.subscribers.has(listener)) {\n\t\t\t\tlistener(result);\n\t\t\t}\n\t\t}\n\t};\n\n\tfunction createInstance(\n\t\tcontextRef: React.MutableRefObject<TContext | undefined>,\n\t\tinitialData: readonly { id: string; data: T }[]\n\t): CacheInstance {\n\t\tconst cache = new Map<string, CacheEntry>(\n\t\t\tinitialData.map(({ id, data }) => [\n\t\t\t\tid,\n\t\t\t\t{ result: { ...c_emptyResult, data: data ?? null }, subscribers: new Set<Subscriber>() },\n\t\t\t])\n\t\t);\n\n\t\tconst load = (key: string, entry: CacheEntry): Promise<T | null> => {\n\t\t\tif (entry.promise) {\n\t\t\t\treturn entry.promise;\n\t\t\t}\n\n\t\t\tentry.promise = Promise.resolve()\n\t\t\t\t.then(() => loader(key, contextRef.current))\n\t\t\t\t.then(\n\t\t\t\t\tdata => {\n\t\t\t\t\t\tentry.promise = undefined;\n\t\t\t\t\t\tpublish(entry, { ...c_emptyResult, data: data ?? null });\n\t\t\t\t\t\treturn data ?? null;\n\t\t\t\t\t},\n\t\t\t\t\t(error: unknown) => {\n\t\t\t\t\t\tentry.promise = undefined;\n\t\t\t\t\t\tconst failure = error instanceof Error ? error : new Error(String(error));\n\t\t\t\t\t\tpublish(entry, { ...c_emptyResult, data: entry.result.data, error: failure });\n\t\t\t\t\t\tthrow failure;\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\tpublish(\n\t\t\t\tentry,\n\t\t\t\tentry.result.isLoading ? c_loadingResult : { ...c_emptyResult, data: entry.result.data, isRefetching: true }\n\t\t\t);\n\t\t\treturn entry.promise;\n\t\t};\n\n\t\tconst getEntry = (key: string): CacheEntry => {\n\t\t\tlet entry = cache.get(key);\n\t\t\tif (!entry) {\n\t\t\t\tentry = { result: c_loadingResult, subscribers: new Set<Subscriber>() };\n\t\t\t\tcache.set(key, entry);\n\t\t\t}\n\t\t\treturn entry;\n\t\t};\n\n\t\tconst subscribe = (key: string, subscriber: Subscriber) => {\n\t\t\tconst entry = getEntry(key);\n\t\t\tentry.subscribers.add(subscriber);\n\t\t\tif (!entry.promise && (entry.result.isLoading || entry.result.error !== null)) {\n\t\t\t\tentry.result = c_loadingResult;\n\t\t\t\tvoid load(key, entry).then(\n\t\t\t\t\t() => undefined,\n\t\t\t\t\t() => undefined\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tsubscriber(entry.result);\n\t\t\t}\n\n\t\t\treturn () => {\n\t\t\t\tentry.subscribers.delete(subscriber);\n\t\t\t};\n\t\t};\n\n\t\tconst loadData = (key: string) => {\n\t\t\tconst entry = getEntry(key);\n\t\t\treturn entry.promise || entry.result.isLoading || entry.result.error !== null\n\t\t\t\t? load(key, entry)\n\t\t\t\t: Promise.resolve(entry.result.data ?? null);\n\t\t};\n\n\t\tconst revalidate = () => {\n\t\t\tfor (const [key, entry] of cache) {\n\t\t\t\tif (entry.subscribers.size > 0) {\n\t\t\t\t\tvoid load(key, entry).then(\n\t\t\t\t\t\t() => undefined,\n\t\t\t\t\t\t() => undefined\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\treturn { cache, subscribe, loadData, revalidate };\n\t}\n\n\tfunction Provider({\n\t\tchildren,\n\t\tinitialIds,\n\t\tinitialData,\n\t\tcontext,\n\t}: PropsWithChildren<{\n\t\tinitialIds?: string[];\n\t\tinitialData?: readonly { id: string; data: T }[];\n\t\tcontext?: TContext;\n\t}>) {\n\t\tconst contextRef = useRef(context);\n\t\tcontextRef.current = context;\n\t\tconst [instance] = useState(() => createInstance(contextRef, initialData ?? []));\n\n\t\tuseEffect(() => {\n\t\t\tfor (const id of initialIds ?? []) {\n\t\t\t\tvoid instance.loadData(id).then(\n\t\t\t\t\t() => undefined,\n\t\t\t\t\t() => undefined\n\t\t\t\t);\n\t\t\t}\n\t\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t}, []);\n\n\t\treturn <Context.Provider value={instance}>{children}</Context.Provider>;\n\t}\n\n\tfunction useInstance(): CacheInstance {\n\t\tconst instance = useContext(Context);\n\t\tif (!instance) {\n\t\t\tthrow new Error('Cache hooks must be used within their createCacheContext Provider.');\n\t\t}\n\t\treturn instance;\n\t}\n\n\tfunction useData(key: string | undefined): DataResult<T> {\n\t\tconst { cache, subscribe } = useInstance();\n\t\tconst currentResult = key ? (cache.get(key)?.result ?? c_loadingResult) : c_emptyResult;\n\t\tconst [state, setState] = useState(() => ({ cache, key, result: currentResult }));\n\n\t\tuseEffect(() => {\n\t\t\tif (!key) {\n\t\t\t\tsetState({ cache, key, result: c_emptyResult });\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treturn subscribe(key, result => {\n\t\t\t\tsetState({ cache, key, result });\n\t\t\t});\n\t\t}, [cache, key, subscribe]);\n\n\t\treturn state.cache === cache && state.key === key ? state.result : currentResult;\n\t}\n\n\tconst useLoadData = () => useInstance().loadData;\n\tconst useRevalidate = () => useInstance().revalidate;\n\tconst useSubscribe = () => useInstance().subscribe;\n\n\treturn { Provider, useData, useLoadData, useRevalidate, useSubscribe };\n}\n","import React, { createContext, useContext, useMemo } from 'react';\nimport {\n\tContainedResourcesProvider,\n\ttype ContainedResourceTooltipData,\n\ttype ContainedResourcesData,\n\ttype DataResult,\n} from '@faithlife/commerce-components';\nimport { useLocalization } from '../localization';\nimport {\n\tbuildContainedResourcesMapperStrings,\n\tmapContainedResourceTooltipData,\n\tmapContainedResourcesData,\n} from '../components/builder/contained-resources-mappers';\nimport { createCacheContext } from '../hooks/use-cache';\n\nconst BuilderProductComponentsContext = createContext<\n\tReturnType<typeof buildContainedResourcesMapperStrings> | undefined\n>(undefined);\n\nasync function getContainedResourceData(url: string): Promise<unknown> {\n\tconst response = await fetch(url);\n\tif (response.status === 404) {\n\t\treturn null;\n\t}\n\tif (!response.ok) {\n\t\tthrow new Error(`HTTP error! status: ${response.status}`);\n\t}\n\treturn response.json();\n}\n\nconst ContainedResourceCache = createCacheContext(getContainedResourceData);\n\nfunction useBuilderProductComponents(productId: string | undefined): DataResult<ContainedResourcesData> {\n\tconst mapperStrings = useContext(BuilderProductComponentsContext);\n\tconst result = ContainedResourceCache.useData(\n\t\tproductId && mapperStrings ? `/api/product/${encodeURIComponent(productId)}/containedresources` : undefined\n\t);\n\tconst data = useMemo(\n\t\t() => (mapperStrings ? mapContainedResourcesData(result.data, mapperStrings) : null),\n\t\t[result.data, mapperStrings]\n\t);\n\treturn { ...result, data };\n}\n\nfunction useBuilderContainedResourceTooltipData(\n\tproductId: string | undefined\n): DataResult<ContainedResourceTooltipData> {\n\tconst result = ContainedResourceCache.useData(\n\t\tproductId ? `/api/product/${encodeURIComponent(productId)}/tooltip` : undefined\n\t);\n\tconst data = useMemo(() => mapContainedResourceTooltipData(result.data), [result.data]);\n\treturn { ...result, data };\n}\n\n/** Supplies localized mapper strings to builder contained-resource data hooks. */\nexport function BuilderContainedResourcesDataProvider({ children }: { children: React.ReactNode }) {\n\tconst containedResourcesStrings = useLocalization('CommerceWeb.Resources.Product.ContainedResources', {\n\t\tsuppressMissingError: true,\n\t});\n\tconst containedResourcesMapperStrings = useMemo(\n\t\t() => buildContainedResourcesMapperStrings(containedResourcesStrings),\n\t\t[containedResourcesStrings]\n\t);\n\n\treturn (\n\t\t<BuilderProductComponentsContext.Provider value={containedResourcesMapperStrings}>\n\t\t\t<ContainedResourceCache.Provider>{children}</ContainedResourceCache.Provider>\n\t\t</BuilderProductComponentsContext.Provider>\n\t);\n}\n\n/** Supplies contained resources and tooltip data to commerce components. */\nexport function BuilderContainedResourcesProvider({ children }: { children: React.ReactNode }) {\n\treturn (\n\t\t<ContainedResourcesProvider\n\t\t\tuseProductComponents={useBuilderProductComponents}\n\t\t\tuseContainedResourceTooltipData={useBuilderContainedResourceTooltipData}\n\t\t>\n\t\t\t{children}\n\t\t</ContainedResourcesProvider>\n\t);\n}\n","import React from 'react';\nimport { ReferralProvider } from '@faithlife/commerce-components';\nimport { useCurrentUser } from '../components/per-user-data/per-user-data-context';\n\n/** Supplies the Impact referral token to builder content. */\nexport function BuilderReferralProvider({ children }: { children: React.ReactNode }) {\n\t// Read the Impact referral token on demand so it tracks live auth state; it clears when the\n\t// user signs out (SWR revalidates on focus) rather than persisting from the initial page render.\n\tconst { impactToken } = useCurrentUser();\n\n\treturn <ReferralProvider impactToken={impactToken}>{children}</ReferralProvider>;\n}\n","import React, { useMemo } from 'react';\nimport { SubscriptionProvider, type ResolvedSubscriptionProductData } from '@faithlife/commerce-components';\nimport { useSubscriptionProductData } from '../components/per-user-data/per-user-data-context';\n\nfunction useBuilderSubscriptionProductData(spoid: string | undefined, couponCodes?: string[], isMultiAnnual?: boolean) {\n\tconst {\n\t\tdata: subscriptionProductData,\n\t\tisLoading,\n\t\terror,\n\t} = useSubscriptionProductData(spoid, couponCodes, isMultiAnnual);\n\tconst data = useMemo<ResolvedSubscriptionProductData | null>(() => {\n\t\tif (!subscriptionProductData) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn {\n\t\t\ttitle: subscriptionProductData.title,\n\t\t\tstrikeoutPrice: subscriptionProductData.strikeoutPrice,\n\t\t\tstrikeoutPriceDescription: subscriptionProductData.strikeoutPriceDescription,\n\t\t\tpricePerMonth: subscriptionProductData.pricePerMonth,\n\t\t\tinitialCharge: subscriptionProductData.initialCharge,\n\t\t\tinitialChargeLocalized: subscriptionProductData.initialChargeLocalized,\n\t\t\tfreeTrialDays: subscriptionProductData.freeTrialDays,\n\t\t\thasSubscription: subscriptionProductData.hasSubscription,\n\t\t\tcanSubscribe: subscriptionProductData.canSubscribe,\n\t\t\tlocalizedResources: subscriptionProductData.localizedResources,\n\t\t\tisMultiAnnualSubscription:\n\t\t\t\tsubscriptionProductData.isMultiAnnualSubscription ?? subscriptionProductData.isMultiAnnual,\n\t\t\tannualSavingsPercentage: subscriptionProductData.annualSavingsPercentage,\n\t\t};\n\t}, [subscriptionProductData]);\n\n\treturn { data, isLoading, isRefetching: false, error: error ?? null };\n}\n\n/** Supplies subscription product data to builder content. */\nexport function BuilderSubscriptionProvider({ children }: { children: React.ReactNode }) {\n\treturn (\n\t\t<SubscriptionProvider useSubscriptionProductData={useBuilderSubscriptionProductData}>\n\t\t\t{children}\n\t\t</SubscriptionProvider>\n\t);\n}\n","import React from 'react';\nimport type { BlogCarouselPost, CatalogProductData } from '@faithlife/commerce-components';\nimport { BuilderAuthorProvider } from '../../commerce-contexts/author';\nimport { BuilderBlogDataProvider, BuilderBlogProvider } from '../../commerce-contexts/blog';\nimport { BuilderCartDataProvider, BuilderCartProvider } from '../../commerce-contexts/cart';\nimport {\n\tBuilderContainedResourcesDataProvider,\n\tBuilderContainedResourcesProvider,\n} from '../../commerce-contexts/contained-resources';\nimport { BuilderProductProvider } from '../../commerce-contexts/product';\nimport { BuilderReferralProvider } from '../../commerce-contexts/referral';\nimport { BuilderResourcesProvider } from '../../commerce-contexts/resources';\nimport { BuilderSubscriptionProvider } from '../../commerce-contexts/subscription';\nimport { BuilderWishlistDataProvider, BuilderWishlistProvider } from '../../commerce-contexts/wishlist';\nimport { StaticDataContextProvider } from '../static-data/static-data-context';\nimport { WishlistContextProvider } from '../add-to-wish-list/wishlist-context-provider';\n\nconst BuilderComponentsContextProvider = ({\n\tchildren,\n\tstaticProductData,\n\tstaticBlogPosts,\n\tshouldSuppressMinicartDrawer = false,\n\tautoAppliedCouponCode,\n}: {\n\tchildren: React.ReactNode;\n\tstaticProductData: CatalogProductData[];\n\tstaticBlogPosts?: Record<string, BlogCarouselPost[]>;\n\tshouldSuppressMinicartDrawer?: boolean;\n\tautoAppliedCouponCode?: string | null;\n}) => {\n\treturn (\n\t\t<StaticDataContextProvider initialData={staticProductData}>\n\t\t\t<WishlistContextProvider>\n\t\t\t\t<BuilderResourcesProvider>\n\t\t\t\t\t<BuilderCartDataProvider\n\t\t\t\t\t\tshouldSuppressMinicartDrawer={shouldSuppressMinicartDrawer}\n\t\t\t\t\t\tautoAppliedCouponCode={autoAppliedCouponCode}\n\t\t\t\t\t>\n\t\t\t\t\t\t<BuilderCartProvider>\n\t\t\t\t\t\t\t<BuilderProductProvider>\n\t\t\t\t\t\t\t\t<BuilderWishlistDataProvider>\n\t\t\t\t\t\t\t\t\t<BuilderWishlistProvider>\n\t\t\t\t\t\t\t\t\t\t<BuilderSubscriptionProvider>\n\t\t\t\t\t\t\t\t\t\t\t<BuilderContainedResourcesDataProvider>\n\t\t\t\t\t\t\t\t\t\t\t\t<BuilderContainedResourcesProvider>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<BuilderAuthorProvider>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<BuilderReferralProvider>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<BuilderBlogDataProvider staticBlogPosts={staticBlogPosts}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<BuilderBlogProvider>{children}</BuilderBlogProvider>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</BuilderBlogDataProvider>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</BuilderReferralProvider>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</BuilderAuthorProvider>\n\t\t\t\t\t\t\t\t\t\t\t\t</BuilderContainedResourcesProvider>\n\t\t\t\t\t\t\t\t\t\t\t</BuilderContainedResourcesDataProvider>\n\t\t\t\t\t\t\t\t\t\t</BuilderSubscriptionProvider>\n\t\t\t\t\t\t\t\t\t</BuilderWishlistProvider>\n\t\t\t\t\t\t\t\t</BuilderWishlistDataProvider>\n\t\t\t\t\t\t\t</BuilderProductProvider>\n\t\t\t\t\t\t</BuilderCartProvider>\n\t\t\t\t\t</BuilderCartDataProvider>\n\t\t\t\t</BuilderResourcesProvider>\n\t\t\t</WishlistContextProvider>\n\t\t</StaticDataContextProvider>\n\t);\n};\n\nexport default BuilderComponentsContextProvider;\n","import loadable from '@loadable/component';\n\n// Registers all Builder.io custom component types (including the entire universal-header\n// component tree) as a side effect of importing './custom-components'. Loading this via\n// `loadable.lib` (rather than a static import) keeps that registration code out of the\n// eager `site` entry bundle; `@loadable/server`'s ChunkExtractor + `loadableReady()` (already\n// wired up in site.js) ensure the client waits for this chunk before hydrating, so\n// registration is guaranteed to have completed before any <BuilderComponent> renders.\nconst CustomComponentsLib = loadable.lib(\n\t() => import(/* webpackChunkName: 'builder-custom-components' */ './custom-components')\n);\n\nexport default CustomComponentsLib;\n","import React, { useState } from 'react';\n\nimport { BuilderContent } from '@builder.io/sdk';\nimport { BuilderComponent } from '@builder.io/react';\nimport { registerSection } from '@faithlife/commerce-components';\n\nimport { useCurrentUser } from '../per-user-data/per-user-data-context';\nimport { cn } from '../../util/cn';\nimport { BuilderIoContentViewModel, componentThemeClassName } from '../../builder';\nimport ErrorBoundary from '../error-boundary';\nimport { initializeBuilderSdk } from './builder-sdk';\nimport BuilderComponentsContextProvider from './provider';\nimport CustomComponentsLib from './custom-components-lib';\n\n// The Visual Editor may render native Section fields before a lazy override arrives.\nregisterSection();\n\nexport interface RenderBuilderContentProps extends BuilderIoContentViewModel {\n\tcontext?: object;\n\tonContentLoaded?: (data: any, content: BuilderContent) => void;\n\tdomainUri?: string;\n\tclassName?: string;\n\trestrictOverflow?: boolean;\n\tshouldSuppressMinicartDrawer?: boolean;\n}\n\nconst RenderBuilderContent = ({\n\tmodel,\n\tcontent,\n\tlocale,\n\tcontext,\n\tstaticData,\n\tonContentLoaded,\n\tclassName,\n\tdomainUri,\n\tcomponentTheme = 'logos',\n\trestrictOverflow = true,\n\tshouldSuppressMinicartDrawer = false,\n}: RenderBuilderContentProps) => {\n\tconst { userInfo: currentUserInfo } = useCurrentUser(domainUri);\n\tconst [builder] = useState(initializeBuilderSdk);\n\n\treturn (\n\t\t<CustomComponentsLib>\n\t\t\t{() => (\n\t\t\t\t<BuilderComponentsContextProvider\n\t\t\t\t\tstaticProductData={staticData?.staticProductData}\n\t\t\t\t\tstaticBlogPosts={staticData?.staticBlogPosts}\n\t\t\t\t\tshouldSuppressMinicartDrawer={shouldSuppressMinicartDrawer}\n\t\t\t\t\tautoAppliedCouponCode={staticData?.autoAppliedCouponCode}\n\t\t\t\t>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={cn(restrictOverflow && 'prevent-overflow', className, componentThemeClassName[componentTheme])}\n\t\t\t\t\t>\n\t\t\t\t\t\t<ErrorBoundary>\n\t\t\t\t\t\t\t<BuilderComponent\n\t\t\t\t\t\t\t\tmodel={model}\n\t\t\t\t\t\t\t\tcontent={content}\n\t\t\t\t\t\t\t\tdata={{\n\t\t\t\t\t\t\t\t\t...staticData,\n\t\t\t\t\t\t\t\t\tuserInfo: currentUserInfo,\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tcontext={context}\n\t\t\t\t\t\t\t\tcontentLoaded={onContentLoaded}\n\t\t\t\t\t\t\t\tbuilder={builder}\n\t\t\t\t\t\t\t\tlocale={locale}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ErrorBoundary>\n\t\t\t\t\t</div>\n\t\t\t\t</BuilderComponentsContextProvider>\n\t\t\t)}\n\t\t</CustomComponentsLib>\n\t);\n};\n\nexport default RenderBuilderContent;\n","// Landing pages such as /church/bulk-books accept `?groupId=` so a specific organization is applied to the\n// cart before the first add-to-cart, instead of the shopper being sent through the group picker afterwards.\nexport const getGroupIdFromLocation = (search: string = window.location.search): number | undefined => {\n\tconst rawGroupId = new URLSearchParams(search).get('groupId');\n\tif (!rawGroupId) {\n\t\treturn undefined;\n\t}\n\n\tconst groupId = Number(rawGroupId);\n\treturn Number.isInteger(groupId) && groupId > 0 ? groupId : undefined;\n};\n","import { useCallback, useContext, useRef } from 'react';\nimport CartClient from '../../clients/cart-client';\nimport { RouteContext } from '../../route-context';\nimport { getGroupIdFromLocation } from '../../util/get-group-id-from-location';\nimport { notify } from '../cart/notifications/use-cart-notifications-events';\nimport { EventsTrackingContext } from '../events-tracking/events-tracking-context';\n\ninterface AddToCartRequestItem {\n\ttype: 'SKU' | 'SPOID';\n\tidentifier: string;\n\tquantity?: number;\n\tisPrepubProduct?: boolean;\n\tproductId?: string;\n}\n\nfunction appendPageCouponCode(couponCodes: string[] | undefined, autoAppliedCouponCode?: string | null) {\n\tif (!autoAppliedCouponCode) {\n\t\treturn couponCodes;\n\t}\n\n\tif (couponCodes?.includes(autoAppliedCouponCode)) {\n\t\treturn couponCodes;\n\t}\n\n\treturn [...(couponCodes ?? []), autoAppliedCouponCode];\n}\n\n// Per the commerce-components spec, lifecycle callbacks fire in this order:\n//   onRequestStart -> (onSuccess | onError) -> onRequestFinish (always last).\nexport function useAddToCartRequest(shouldSuppressMinicartDrawer = false, autoAppliedCouponCode?: string | null) {\n\tconst { routes } = useContext(RouteContext);\n\tconst eventsTrackingContext = useContext(EventsTrackingContext);\n\t// Maps a preorder product SKU id -> the SKU id that `/buy/{sku}` resolves for add-to-cart.\n\t// The multi-item AJAX route expects final SKU ids, so we remap preorder SKUs to the same\n\t// add-to-cart SKU used by existing mini-cart buttons (which post to `AddToCartUrl`).\n\tconst preorderAddToCartSkuIdsBySkuId = useRef<Record<string, string>>({});\n\n\tconst onAddToCartRequest = useCallback(\n\t\tasync (\n\t\t\t{\n\t\t\t\titems,\n\t\t\t\tcouponCodes,\n\t\t\t\tpayInFull,\n\t\t\t}: {\n\t\t\t\titems?: AddToCartRequestItem[];\n\t\t\t\tcouponCodes?: string[];\n\t\t\t\tpayInFull?: boolean;\n\t\t\t},\n\t\t\t{\n\t\t\t\tonRequestStart,\n\t\t\t\tonRequestFinish,\n\t\t\t\tonSuccess,\n\t\t\t\tonError,\n\t\t\t}: {\n\t\t\t\tonRequestStart?: () => void;\n\t\t\t\tonRequestFinish?: () => void;\n\t\t\t\tonSuccess?: () => void;\n\t\t\t\tonError?: (error: Error) => void;\n\t\t\t} = {}\n\t\t) => {\n\t\t\tonRequestStart?.();\n\n\t\t\tconst skuItems = (items ?? []).filter(item => item.type === 'SKU');\n\t\t\tconst spoidItems = (items ?? []).filter(item => item.type === 'SPOID');\n\n\t\t\tif (skuItems.length === 0 && spoidItems.length === 0) {\n\t\t\t\tonError?.(new Error('No items to add to cart'));\n\t\t\t\tonRequestFinish?.();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!routes.AddItemsToCartAjax) {\n\t\t\t\tconst error = new Error(\n\t\t\t\t\t'BuilderComponentsContextProvider: AddItemsToCartAjax route is missing from RouteContext'\n\t\t\t\t);\n\t\t\t\tconsole.error(error.message);\n\t\t\t\tonError?.(error);\n\t\t\t\tonRequestFinish?.();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst productIds = skuItems.flatMap(item => (item.productId ? [item.productId] : []));\n\t\t\t\tconst searchData = eventsTrackingContext\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tanonymousUserToken: eventsTrackingContext.anonymousUserToken,\n\t\t\t\t\t\t\t...(eventsTrackingContext.queryId ? { queryId: eventsTrackingContext.queryId } : {}),\n\t\t\t\t\t\t}\n\t\t\t\t\t: undefined;\n\n\t\t\t\tconst result = await CartClient.addItemsToCart(routes.AddItemsToCartAjax, {\n\t\t\t\t\tskuRequests: skuItems.map(item => ({\n\t\t\t\t\t\t// Preorder display SKUs are not directly purchasable; remap them to the\n\t\t\t\t\t\t// add-to-cart SKU resolved from `/buy/{sku}` (cached in mapUserProductData),\n\t\t\t\t\t\t// matching the existing mini-cart add-to-cart flow for preorders.\n\t\t\t\t\t\tskuId:\n\t\t\t\t\t\t\titem.isPrepubProduct === true\n\t\t\t\t\t\t\t\t? (preorderAddToCartSkuIdsBySkuId.current[item.identifier] ?? item.identifier)\n\t\t\t\t\t\t\t\t: item.identifier,\n\t\t\t\t\t\tquantity: item.quantity || 1,\n\t\t\t\t\t})),\n\t\t\t\t\tsubscribableProductOptionRequests: spoidItems.map(item => ({\n\t\t\t\t\t\tsubscribableProductOptionId: item.identifier,\n\t\t\t\t\t\tquantity: item.quantity || 1,\n\t\t\t\t\t})),\n\t\t\t\t\tpayInFull: payInFull ?? false,\n\t\t\t\t\tcouponCodes: appendPageCouponCode(couponCodes, autoAppliedCouponCode),\n\t\t\t\t\tsearchData,\n\t\t\t\t\t// Landing pages that target a single organization carry `?groupId=` so group-delivered\n\t\t\t\t\t// items skip the group picker and go straight into that organization's cart.\n\t\t\t\t\tgroupId: getGroupIdFromLocation(),\n\t\t\t\t\t// If sign-in is required to resolve the group, this lets the server send the shopper back\n\t\t\t\t\t// to this same landing page (instead of the cart page) once the items are added. Ignore\n\t\t\t\t\t// this when there's no real page URL to return to.\n\t\t\t\t\tredirectUrl: window.location.href || null,\n\t\t\t\t});\n\n\t\t\t\tif (!result) {\n\t\t\t\t\tonError?.(new Error('Unexpected error adding items to cart: no result returned'));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (result.redirectUrl) {\n\t\t\t\t\twindow.location.href = result.redirectUrl;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tdocument.dispatchEvent(\n\t\t\t\t\tnew CustomEvent('faithlife.sites.cart.updated', {\n\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\taddedSkuIds: skuItems.map(item => item.identifier),\n\t\t\t\t\t\t\taddedSubscribableProductOptionIds: spoidItems.map(item => item.identifier),\n\t\t\t\t\t\t\tstatus: result.addSkuToCartResultStatus ?? 'success',\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t);\n\n\t\t\t\tif (result.analyticsTelemetry) {\n\t\t\t\t\t(window.dataLayer ??= []).push(result.analyticsTelemetry);\n\t\t\t\t}\n\n\t\t\t\tif (result.notifications) {\n\t\t\t\t\tfor (const notification of result.notifications) {\n\t\t\t\t\t\tnotify(notification.message, notification.kind, notification.code);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!shouldSuppressMinicartDrawer && !result.suppressMiniCartDrawer) {\n\t\t\t\t\tconst addedItemCount = [...skuItems, ...spoidItems].reduce((sum, item) => sum + (item.quantity || 1), 0);\n\t\t\t\t\tdocument.dispatchEvent(new CustomEvent('faithlife.sites.minicart.open', { detail: { addedItemCount } }));\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tresult.addSkuToCartResultStatus?.toLowerCase() !== 'blocked' &&\n\t\t\t\t\teventsTrackingContext?.recordAddToCartEvent\n\t\t\t\t) {\n\t\t\t\t\tfor (const productId of productIds) {\n\t\t\t\t\t\teventsTrackingContext.recordAddToCartEvent(productId);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tonSuccess?.();\n\t\t\t} catch (error) {\n\t\t\t\tonError?.(error instanceof Error ? error : new Error(String(error)));\n\t\t\t} finally {\n\t\t\t\tonRequestFinish?.();\n\t\t\t}\n\t\t},\n\t\t[autoAppliedCouponCode, eventsTrackingContext, routes, shouldSuppressMinicartDrawer]\n\t);\n\n\treturn { onAddToCartRequest, preorderAddToCartSkuIdsBySkuId };\n}\n","export const CART_NOTIFICATION_SCOPE = 'cart';\n\nexport enum CartNotificationLocation {\n\tMiniCart = 'minicart',\n\tPage = 'page',\n}\n","import { useEffect } from 'react';\nimport { NotificationKind } from '../../notifications/types';\nimport { notify as notifyClient } from '../../notifications/client-notifications';\nimport { CART_NOTIFICATION_SCOPE, CartNotificationLocation } from './types';\n\nexport interface CartNotificationAddAttemptDetail {\n\tmessage: string;\n\tkind: NotificationKind;\n\tcode: string;\n}\n\nconst CART_NOTIFICATION_ADD_ITEM_COMPLETED_EVENT = 'cart.notification.addItemCompleted';\n\n// Register callbacks — same pattern as notifyCallbacks in client-notifications.tsx.\n// CartIconCore registers a getter so event handlers always read the live minicart\n// state at dispatch time, not a stale closure value from when the request started.\nconst registerMiniCartOpenStateCallbacks: (() => boolean)[] = [];\n\nexport function registerMiniCartState(getter: () => boolean): () => void {\n\tregisterMiniCartOpenStateCallbacks.push(getter);\n\treturn () => {\n\t\tconst index = registerMiniCartOpenStateCallbacks.indexOf(getter);\n\t\tif (index > -1) {\n\t\t\tregisterMiniCartOpenStateCallbacks.splice(index, 1);\n\t\t}\n\t};\n}\n\nexport function notifyError(message: string): void {\n\tdocument.dispatchEvent(\n\t\tnew CustomEvent<CartNotificationAddAttemptDetail>(CART_NOTIFICATION_ADD_ITEM_COMPLETED_EVENT, {\n\t\t\tdetail: { message, kind: 'error', code: 'CartError' },\n\t\t})\n\t);\n}\n\nexport function notify(message: string, kind: NotificationKind, code: string): void {\n\tdocument.dispatchEvent(\n\t\tnew CustomEvent<CartNotificationAddAttemptDetail>(CART_NOTIFICATION_ADD_ITEM_COMPLETED_EVENT, {\n\t\t\tdetail: { message, kind, code },\n\t\t})\n\t);\n}\n\nexport function useCartNotificationEvents() {\n\tuseEffect(() => {\n\t\tconst handleAddItemAttemptEvent = (e: Event) => {\n\t\t\tconst { message, kind, code } = (e as CustomEvent<CartNotificationAddAttemptDetail>).detail;\n\t\t\tnotifyClient(\n\t\t\t\tmessage,\n\t\t\t\tkind,\n\t\t\t\tcode,\n\t\t\t\t{\n\t\t\t\t\tname: CART_NOTIFICATION_SCOPE,\n\t\t\t\t\tlocation: registerMiniCartOpenStateCallbacks.some(isMiniCartOpen => isMiniCartOpen())\n\t\t\t\t\t\t? CartNotificationLocation.MiniCart\n\t\t\t\t\t\t: CartNotificationLocation.Page,\n\t\t\t\t},\n\t\t\t\ttrue\n\t\t\t);\n\t\t};\n\n\t\tdocument.addEventListener(CART_NOTIFICATION_ADD_ITEM_COMPLETED_EVENT, handleAddItemAttemptEvent);\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener(CART_NOTIFICATION_ADD_ITEM_COMPLETED_EVENT, handleAddItemAttemptEvent);\n\t\t};\n\t}, []);\n}\n","import React, { useContext, useEffect, useRef } from 'react';\nimport eventAggregator from '../../cart/utility/eventaggregator';\n\nconst CartContext = React.createContext({ cart: null, hasContext: false });\n\nexport function useCartEffect(callback) {\n\tconst { cart, hasContext } = useContext(CartContext);\n\tconst callbackRef = useRef();\n\tcallbackRef.current = callback;\n\tuseEffect(() => {\n\t\tif (hasContext) {\n\t\t\treturn;\n\t\t}\n\t\tfunction cartUpdated(event, data) {\n\t\t\tcallbackRef.current?.(data);\n\t\t}\n\t\teventAggregator.on('cart:updated', cartUpdated);\n\t\treturn () => {\n\t\t\teventAggregator.off('cart:updated', cartUpdated);\n\t\t};\n\t}, [hasContext]);\n\tuseEffect(() => {\n\t\tif (!cart) {\n\t\t\treturn;\n\t\t}\n\t\tcallbackRef.current?.(cart);\n\t}, [cart]);\n}\n\nexport function CartContextProvider({ cart, children }) {\n\treturn <CartContext.Provider value={{ cart, hasContext: true }}>{children}</CartContext.Provider>;\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nclass ErrorBoundary extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\thasError: false,\n\t\t\terror: null,\n\t\t\terrorInfo: null,\n\t\t};\n\t}\n\n\tstatic getDerivedStateFromError(error) {\n\t\t// Update state so the next render will show the fallback UI\n\t\treturn { hasError: true };\n\t}\n\n\tcomponentDidCatch(error, errorInfo) {\n\t\t// Store error details in state\n\t\tthis.setState({\n\t\t\terror,\n\t\t\terrorInfo,\n\t\t});\n\n\t\t// Notify parent component about the error\n\t\tif (this.props.onError) {\n\t\t\tthis.props.onError(error, errorInfo);\n\t\t}\n\n\t\t// Log error to console or external service\n\t\tconsole.error('ErrorBoundary caught an error:', error, errorInfo);\n\t}\n\n\tresetErrorBoundary = () => {\n\t\tthis.setState({\n\t\t\thasError: false,\n\t\t\terror: null,\n\t\t\terrorInfo: null,\n\t\t});\n\n\t\t// Notify parent that error was reset\n\t\tif (this.props.onReset) {\n\t\t\tthis.props.onReset();\n\t\t}\n\t};\n\n\trender() {\n\t\tif (this.state.hasError) {\n\t\t\t// If custom error template is provided, use it\n\t\t\tif (this.props.fallback) {\n\t\t\t\tif (typeof this.props.fallback !== 'function') {\n\t\t\t\t\treturn this.fallback;\n\t\t\t\t}\n\n\t\t\t\t// Pass error details and reset function to custom template\n\t\t\t\treturn this.props.fallback({\n\t\t\t\t\terror: this.state.error,\n\t\t\t\t\terrorInfo: this.state.errorInfo,\n\t\t\t\t\tresetErrorBoundary: this.resetErrorBoundary,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// If fallbackComponent is provided as a React component\n\t\t\tif (this.props.fallbackComponent) {\n\t\t\t\tconst FallbackComponent = this.props.fallbackComponent;\n\t\t\t\treturn (\n\t\t\t\t\t<FallbackComponent\n\t\t\t\t\t\terror={this.state.error}\n\t\t\t\t\t\terrorInfo={this.state.errorInfo}\n\t\t\t\t\t\tresetErrorBoundary={this.resetErrorBoundary}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this.props.children;\n\t}\n}\n\nErrorBoundary.propTypes = {\n\tchildren: PropTypes.node.isRequired,\n\tfallback: PropTypes.func,\n\tfallbackComponent: PropTypes.elementType,\n\tonError: PropTypes.func,\n\tonReset: PropTypes.func,\n\tshowError: PropTypes.bool,\n};\n\nErrorBoundary.defaultProps = {\n\tshowError: false,\n};\n\nexport default ErrorBoundary;\n","import React, { createContext, ReactNode, useCallback, useEffect, useRef, useState } from 'react';\nimport { InsightsMethodMap } from 'instantsearch.js/es/types/insights';\n\nimport { useLocation } from '../../location';\n\nconst searchInsights = import('search-insights'); // imported lazily to avoid loading it on the server\n\ninterface SendEventParams {\n\teventType: keyof InsightsMethodMap;\n\teventName: string;\n\tfilters?: string[] | null;\n\tproductIds?: string[] | null;\n\tpositions?: number[] | null;\n\tqueryId?: string | null;\n}\n\nexport interface EventsTrackingContextValue {\n\trecordAddToCartEvent: (productId: string) => void;\n\trecordClickFilterEvent: (filters: string[]) => void;\n\trecordClickResultEvent: (productId: string, position?: number) => void;\n\trecordViewEvent: (productId: string, displayTemplateKind: string) => void;\n\tqueryId: string | null;\n\tanonymousUserToken: string | null;\n}\n\nexport interface EventsTrackingContextProviderProps {\n\tchildren: ReactNode;\n\talgoliaApplicationId: string;\n\talgoliaSearchApiKey: string;\n\talgoliaIndexName: string;\n\tuserId?: string | null;\n\tqueryId?: string | null;\n}\n\nexport const EventsTrackingContext = createContext<EventsTrackingContextValue | null>(null);\n\n/**\n * Provides the context necessary for search-insights, using an Algolia insights client.\n */\nexport function EventsTrackingContextProvider({\n\tchildren,\n\talgoliaApplicationId,\n\talgoliaSearchApiKey,\n\talgoliaIndexName,\n\tuserId = null,\n\tqueryId = null,\n}: EventsTrackingContextProviderProps) {\n\tconst [anonymousUserToken, setAnonymousUserToken] = useState<string | null>(null);\n\tconst { pathname, searchParams, replaceUrl } = useLocation();\n\tconst recordedRedirectEvent = useRef<string | null>(null);\n\n\tconst getDetailedLocationIfAvailable = useCallback((): string | null => {\n\t\tif (!pathname) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst sanitizedPath = pathname.replace(/\\/product\\/(?<productId>[0-9]+)\\/[^/]+/i, '/product/$<productId>');\n\n\t\treturn ` on ${sanitizedPath}`;\n\t}, [pathname]);\n\n\tconst sendEvent = useCallback(\n\t\t({\n\t\t\teventType,\n\t\t\teventName,\n\t\t\tfilters = null,\n\t\t\tproductIds = null,\n\t\t\tpositions = null,\n\t\t\tqueryId: eventQueryId = queryId,\n\t\t}: SendEventParams) => {\n\t\t\tconst eventData: Record<string, unknown> = {\n\t\t\t\tindex: algoliaIndexName,\n\t\t\t\teventName: eventName.substring(0, 64),\n\t\t\t};\n\n\t\t\tif (eventQueryId !== null) {\n\t\t\t\teventData.queryID = eventQueryId;\n\t\t\t}\n\n\t\t\tif (filters !== null) {\n\t\t\t\teventData.filters = filters;\n\t\t\t}\n\n\t\t\tif (productIds !== null) {\n\t\t\t\teventData.objectIDs = productIds;\n\t\t\t}\n\n\t\t\tif (positions !== null) {\n\t\t\t\teventData.positions = positions;\n\t\t\t}\n\n\t\t\tsearchInsights.then(client => {\n\t\t\t\tclient.default(eventType, eventData);\n\t\t\t});\n\t\t},\n\t\t[algoliaIndexName, queryId]\n\t);\n\n\tuseEffect(() => {\n\t\tconst redirectProductIds = searchParams.get('addedToCartProductIds');\n\t\tif (!redirectProductIds) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst productIds = redirectProductIds.split(',').filter(Boolean);\n\t\tconst redirectQueryId = searchParams.get('addedToCartQueryId');\n\t\tconst eventKey = `${redirectQueryId ?? ''}:${productIds.join(',')}`;\n\t\tif (!productIds.length || recordedRedirectEvent.current === eventKey) {\n\t\t\treturn;\n\t\t}\n\n\t\trecordedRedirectEvent.current = eventKey;\n\t\tsendEvent({\n\t\t\teventType: redirectQueryId ? 'addedToCartObjectIDsAfterSearch' : 'addedToCartObjectIDs',\n\t\t\teventName: `Added product to cart${getDetailedLocationIfAvailable()}`,\n\t\t\tproductIds,\n\t\t\tqueryId: redirectQueryId,\n\t\t});\n\n\t\tconst remainingParameters = new URLSearchParams(searchParams);\n\t\tremainingParameters.delete('addedToCartProductIds');\n\t\tremainingParameters.delete('addedToCartQueryId');\n\t\tconst remainingQuery = remainingParameters.toString();\n\t\treplaceUrl(`${pathname}${remainingQuery ? `?${remainingQuery}` : ''}`);\n\t}, [getDetailedLocationIfAvailable, pathname, replaceUrl, searchParams, sendEvent]);\n\n\tsearchInsights.then(client => {\n\t\tclient.default('init', {\n\t\t\tappId: algoliaApplicationId,\n\t\t\tapiKey: algoliaSearchApiKey,\n\t\t});\n\n\t\tclient.default('getUserToken', {}, (err: unknown, userToken?: string | number) => {\n\t\t\tif (err || userToken === undefined) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetAnonymousUserToken(String(userToken));\n\t\t});\n\n\t\tif (userId) {\n\t\t\tclient.default('setAuthenticatedUserToken', userId);\n\t\t}\n\t});\n\n\tconst recordAddToCartEvent = (productId: string) => {\n\t\tconst eventName = `Added product to cart${getDetailedLocationIfAvailable()}`;\n\n\t\tconst eventType = queryId !== null ? 'addedToCartObjectIDsAfterSearch' : 'addedToCartObjectIDs';\n\n\t\tsendEvent({ eventType: eventType, eventName: eventName, productIds: [productId] });\n\t};\n\n\tconst recordClickFilterEvent = (filters: string[]) => {\n\t\tsendEvent({ eventType: 'clickedFilters', eventName: 'Clicked filter', filters: filters });\n\t};\n\n\tconst recordClickResultEvent = (productId: string, position = 1) => {\n\t\tconst eventName = `Clicked result${getDetailedLocationIfAvailable()}`;\n\n\t\tif (queryId !== null) {\n\t\t\tsendEvent({\n\t\t\t\teventType: 'clickedObjectIDsAfterSearch',\n\t\t\t\teventName: eventName,\n\t\t\t\tproductIds: [productId],\n\t\t\t\tpositions: [position],\n\t\t\t});\n\t\t} else {\n\t\t\tsendEvent({ eventType: 'clickedObjectIDs', eventName: eventName, productIds: [productId] });\n\t\t}\n\t};\n\n\tconst recordViewEvent = (productId: string, displayTemplateKind: string) => {\n\t\tsendEvent({\n\t\t\teventType: 'viewedObjectIDs',\n\t\t\teventName: `Viewed ${displayTemplateKind} PDP`,\n\t\t\tproductIds: [productId],\n\t\t});\n\t};\n\n\treturn (\n\t\t<EventsTrackingContext.Provider\n\t\t\tvalue={{\n\t\t\t\trecordAddToCartEvent,\n\t\t\t\trecordClickFilterEvent,\n\t\t\t\trecordClickResultEvent,\n\t\t\t\trecordViewEvent,\n\t\t\t\tqueryId,\n\t\t\t\tanonymousUserToken,\n\t\t\t}}\n\t\t>\n\t\t\t{children}\n\t\t</EventsTrackingContext.Provider>\n\t);\n}\n","import React, { CSSProperties, useEffect, useState } from 'react';\nimport { Notification } from '@faithlife/commerce-components';\nimport { ClientNotification } from './types';\n\nexport {\n\tnotify,\n\tnotifyError,\n\tnotifySuccess,\n\tnotifyWarning,\n\tnotifyInfo,\n\tremoveNotification,\n\tremoveScopedNotifications,\n\tuseClientNotifications,\n} from './notification-registry';\nexport type { ClientNotificationsState } from './notification-registry';\n\ntype AnimationPhase = 'entering' | 'showing' | 'visible' | 'grouping' | 'hiding';\n\nfunction getAnimationStyle(phase: AnimationPhase): CSSProperties {\n\tswitch (phase) {\n\t\tcase 'entering':\n\t\t\treturn { opacity: 0, transform: 'translateX(300px) scale(1)' };\n\t\tcase 'showing':\n\t\t\treturn {\n\t\t\t\topacity: 1,\n\t\t\t\ttransform: 'translateX(0) scale(1)',\n\t\t\t\ttransition: 'all 500ms cubic-bezier(0.175, 0.885, 0.32, 1.275)',\n\t\t\t};\n\t\tcase 'visible':\n\t\t\treturn { opacity: 1, transform: 'scale(1)', transition: 'opacity 150ms, transform 150ms' };\n\t\tcase 'grouping':\n\t\t\treturn {\n\t\t\t\topacity: 0.8,\n\t\t\t\tfilter: 'brightness(1.15)',\n\t\t\t\ttransform: 'scaleY(1.3)',\n\t\t\t\ttransformOrigin: 'top center',\n\t\t\t\ttransition: 'opacity 350ms ease-in-out, filter 300ms ease-in-out, transform 350ms ease-in-out',\n\t\t\t};\n\t\tcase 'hiding':\n\t\t\treturn {\n\t\t\t\topacity: 0,\n\t\t\t\ttransform: 'translateX(300px) scale(1)',\n\t\t\t\ttransition: 'all 500ms cubic-bezier(0.6, -0.28, 0.735, 0.045)',\n\t\t\t};\n\t}\n}\n\ninterface AnimatedClientNotificationProps {\n\tnotification: ClientNotification;\n\tonRemove: () => void;\n}\n\nexport const AnimatedClientNotification = ({ notification, onRemove }: AnimatedClientNotificationProps) => {\n\tconst [phase, setPhase] = useState<AnimationPhase>('entering');\n\n\tuseEffect(() => {\n\t\tconst timerId = window.setTimeout(() => setPhase('showing'), 50);\n\t\treturn () => window.clearTimeout(timerId);\n\t}, []);\n\n\tuseEffect(() => {\n\t\tif (notification.count <= 1) {\n\t\t\treturn;\n\t\t}\n\t\tsetPhase('grouping');\n\t}, [notification.count]);\n\n\tuseEffect(() => {\n\t\tif (phase !== 'visible' && phase !== 'grouping') {\n\t\t\treturn;\n\t\t}\n\n\t\tconst timerId = window.setTimeout(() => setPhase('hiding'), Math.max(500, notification.expiresAt - Date.now()));\n\t\treturn () => window.clearTimeout(timerId);\n\t}, [phase, notification.expiresAt]);\n\n\tconst handleTransitionEnd = () => {\n\t\tif (phase === 'showing') {\n\t\t\tsetPhase('visible');\n\t\t} else if (phase === 'grouping') {\n\t\t\tsetPhase('visible');\n\t\t} else if (phase === 'hiding') {\n\t\t\tonRemove();\n\t\t}\n\t};\n\n\treturn (\n\t\t<div style={getAnimationStyle(phase)} onTransitionEnd={handleTransitionEnd}>\n\t\t\t<Notification notificationId={notification.id} kind={notification.kind}>\n\t\t\t\t{notification.message}\n\t\t\t</Notification>\n\t\t</div>\n\t);\n};\n","var _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgErrorcomponent = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n  width: 16,\n  height: 16,\n  viewBox: \"0 0 32 32\",\n  fill: \"none\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n  d: \"m22.523.25 9.227 9.227v13.046l-9.227 9.227H9.477L.25 22.523V9.477L9.477.25h13.046ZM1.75 10.098v11.804l8.348 8.348h11.804l8.348-8.348V10.098L21.902 1.75H10.098L1.75 10.098Z\",\n  fill: \"#FFF\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n  d: \"M17.375 9.53v9.466h-2.25V9.53h2.25ZM17.5 21.22a1.25 1.25 0 1 1-2.5 0 1.25 1.25 0 0 1 2.5 0Z\",\n  fill: \"#FFF\"\n})));\nexport default SvgErrorcomponent;","import { RefObject, useEffect } from 'react';\n\nconst containerHeightSubscribers: ((height: number) => void)[] = [];\n\nexport function subscribeNotificationsContainerHeight(callback: (height: number) => void): () => void {\n\tcontainerHeightSubscribers.push(callback);\n\treturn () => {\n\t\tconst index = containerHeightSubscribers.indexOf(callback);\n\t\tif (index > -1) {\n\t\t\tcontainerHeightSubscribers.splice(index, 1);\n\t\t}\n\t};\n}\n\nexport function useContainerHeightObserver(containerRef: RefObject<HTMLElement | null>): void {\n\tuseEffect(() => {\n\t\tconst container = containerRef.current;\n\t\tif (!container) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst observer = new ResizeObserver(entries => {\n\t\t\tlet height = 0;\n\t\t\tfor (const entry of entries) {\n\t\t\t\theight = entry.contentRect.height;\n\t\t\t}\n\t\t\tfor (const callback of containerHeightSubscribers) {\n\t\t\t\tcallback(height);\n\t\t\t}\n\t\t});\n\n\t\tobserver.observe(container);\n\t\treturn () => observer.disconnect();\n\t}, [containerRef]);\n}\n","import React, { createContext, useContext, useEffect, useMemo, useState } from 'react';\n\nconst c_cookiePrefix = 'commerce_components.notification';\nconst c_cookieSuffix = '.hidden';\n\nexport function getDismissalCookieName(notificationId: string) {\n\treturn `${c_cookiePrefix}.${notificationId}${c_cookieSuffix}`;\n}\n\nfunction writeDismissalCookie(notificationId: string, cooldownMinutes: number) {\n\ttry {\n\t\tdocument.cookie = `${getDismissalCookieName(notificationId)}=1; max-age=${\n\t\t\tcooldownMinutes * 60\n\t\t}; path=/; SameSite=Lax`;\n\t} catch {\n\t\t// Storage can be blocked entirely (sandboxed frames, hardened privacy settings); the dismissal\n\t\t// still applies for this page view, it just won't survive a reload.\n\t}\n}\n\nfunction readDismissedIdsFromCookies(): string[] {\n\ttry {\n\t\treturn document.cookie\n\t\t\t.split('; ')\n\t\t\t.map(pair => {\n\t\t\t\tconst separatorIndex = pair.indexOf('=');\n\t\t\t\treturn separatorIndex < 0 ? pair : pair.slice(0, separatorIndex);\n\t\t\t})\n\t\t\t.filter(name => name.startsWith(`${c_cookiePrefix}.`) && name.endsWith(c_cookieSuffix))\n\t\t\t.map(name => name.slice(c_cookiePrefix.length + 1, name.length - c_cookieSuffix.length))\n\t\t\t.filter(Boolean);\n\t} catch {\n\t\treturn [];\n\t}\n}\n\nexport interface NotificationDismissal {\n\tisDismissed: (notificationId: string | undefined) => boolean;\n\tonDismiss: (notificationId: string | undefined, cooldownMinutes?: number) => void;\n}\n\nconst CookieNotificationContext = createContext<NotificationDismissal | undefined>(undefined);\n\nfunction useNotificationDismissalState(dismissedNotificationIds?: string[], isEnabled = true): NotificationDismissal {\n\t// Seeded synchronously from the server-read cookies so the first render — server and client alike —\n\t// already knows what is dismissed. Populating this later would reintroduce the flash (CMRC-24276).\n\tconst [dismissedIds, setDismissedIds] = useState<ReadonlySet<string>>(() => new Set(dismissedNotificationIds ?? []));\n\n\t// Content fetched after the initial response (Builder previews, client-rendered sections) carries ids\n\t// the server never saw. Merging those here rather than in the initial state keeps hydration identical.\n\tuseEffect(() => {\n\t\tif (!isEnabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetDismissedIds(current => {\n\t\t\tconst missingIds = readDismissedIdsFromCookies().filter(id => !current.has(id));\n\t\t\treturn missingIds.length === 0 ? current : new Set([...current, ...missingIds]);\n\t\t});\n\t}, [isEnabled]);\n\n\treturn useMemo<NotificationDismissal>(\n\t\t() => ({\n\t\t\tisDismissed: notificationId => (notificationId ? dismissedIds.has(notificationId) : false),\n\t\t\tonDismiss: (notificationId, cooldownMinutes) => {\n\t\t\t\tif (!notificationId) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (cooldownMinutes !== undefined && cooldownMinutes > 0) {\n\t\t\t\t\twriteDismissalCookie(notificationId, cooldownMinutes);\n\t\t\t\t}\n\n\t\t\t\tsetDismissedIds(current => (current.has(notificationId) ? current : new Set(current).add(notificationId)));\n\t\t\t},\n\t\t}),\n\t\t[dismissedIds]\n\t);\n}\n\ninterface CookieNotificationProviderProps {\n\tdismissedNotificationIds?: string[];\n\tchildren: React.ReactNode;\n}\n\nexport const CookieNotificationProvider = ({ dismissedNotificationIds, children }: CookieNotificationProviderProps) => {\n\tconst value = useNotificationDismissalState(dismissedNotificationIds);\n\n\treturn <CookieNotificationContext.Provider value={value}>{children}</CookieNotificationContext.Provider>;\n};\n\nexport const useCookieNotificationDismissal = () => {\n\tconst contextDismissal = useContext(CookieNotificationContext);\n\n\t// BuilderSection renders outside the notifications tree too (universal header, subscription\n\t// management). Those trees have no server-seeded list, but dismissal still has to work, so fall\n\t// back to local state rather than a no-op — the component itself no longer hides itself. The\n\t// hook runs unconditionally to keep hook order stable, but stays inert when a provider won.\n\tconst standaloneDismissal = useNotificationDismissalState(undefined, contextDismissal === undefined);\n\n\treturn contextDismissal ?? standaloneDismissal;\n};\n","import React, { useRef } from 'react';\nimport { CoursesIcon, Notification } from '@faithlife/commerce-components';\nimport type { NotificationDismissalContext } from '@faithlife/commerce-components';\nimport { SectionContentViewModel } from '../../builder';\nimport { BuilderSection } from '../builder';\nimport { PerUserDataContextProvider } from '../per-user-data/per-user-data-context';\nimport { useCartNotificationEvents } from '../cart/notifications/use-cart-notifications-events';\nimport ErrorIcon from './Error.component.svg';\nimport { useContainerHeightObserver } from './container-height';\nimport { AnimatedClientNotification, removeNotification, useClientNotifications } from './client-notifications';\nimport { CookieNotificationProvider, useCookieNotificationDismissal } from './cookie-notification-context';\nimport { ServerNotification } from './types';\n\nexport { subscribeNotificationsContainerHeight } from './container-height';\nexport { notify, notifyError, notifySuccess, notifyWarning, notifyInfo } from './client-notifications';\n\ninterface Props {\n\tserverNotifications?: ServerNotification[];\n\tcmsNotifications?: SectionContentViewModel[];\n\tdismissedNotificationIds?: string[];\n}\n\nconst NotificationsList = ({ serverNotifications, cmsNotifications }: Omit<Props, 'dismissedNotificationIds'>) => {\n\tconst { notifications: clientNotifications } = useClientNotifications();\n\tconst notificationDismissal = useCookieNotificationDismissal();\n\tconst builderContext = { notificationDismissal } satisfies {\n\t\tnotificationDismissal: NotificationDismissalContext;\n\t};\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\tuseCartNotificationEvents();\n\n\tuseContainerHeightObserver(containerRef);\n\n\treturn (\n\t\t<div ref={containerRef}>\n\t\t\t{cmsNotifications &&\n\t\t\t\tcmsNotifications.length > 0 &&\n\t\t\t\tcmsNotifications.map(\n\t\t\t\t\tnotification =>\n\t\t\t\t\t\tnotification.contentSourceKind === 'builderIo' && (\n\t\t\t\t\t\t\t<BuilderSection\n\t\t\t\t\t\t\t\tkey={notification.contentId}\n\t\t\t\t\t\t\t\tbuilderIo={notification.builderIo}\n\t\t\t\t\t\t\t\tcontext={builderContext}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)\n\t\t\t\t)}\n\t\t\t{serverNotifications &&\n\t\t\t\tserverNotifications.length > 0 &&\n\t\t\t\tserverNotifications.map(notification => (\n\t\t\t\t\t<Notification\n\t\t\t\t\t\tkey={notification.id ?? notification.code ?? `${notification.message}-${notification.kind}`}\n\t\t\t\t\t\tnotificationId={notification.id}\n\t\t\t\t\t\tkind={notification.kind}\n\t\t\t\t\t\tcooldownMinutes={notification.cooldownMinutes}\n\t\t\t\t\t\tisHidable={notification.isDismissable}\n\t\t\t\t\t\tisDismissed={notificationDismissal.isDismissed(notification.id)}\n\t\t\t\t\t\tonDismiss={notificationDismissal.onDismiss}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div className=\"flex flex-row items-center gap-2\">\n\t\t\t\t\t\t\t{notification.icon === 'error' && <ErrorIcon />}\n\t\t\t\t\t\t\t{notification.icon === 'academic' && <CoursesIcon />}\n\t\t\t\t\t\t\t<span className=\"[&>a]:underline\" dangerouslySetInnerHTML={{ __html: notification.message }} />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</Notification>\n\t\t\t\t))}\n\t\t\t{clientNotifications.map(notification => (\n\t\t\t\t<AnimatedClientNotification\n\t\t\t\t\tkey={notification.id}\n\t\t\t\t\tnotification={notification}\n\t\t\t\t\tonRemove={() => removeNotification(notification.id)}\n\t\t\t\t/>\n\t\t\t))}\n\t\t</div>\n\t);\n};\n\nconst Notifications = ({ serverNotifications, cmsNotifications, dismissedNotificationIds }: Props) => (\n\t<PerUserDataContextProvider>\n\t\t<CookieNotificationProvider dismissedNotificationIds={dismissedNotificationIds}>\n\t\t\t<NotificationsList serverNotifications={serverNotifications} cmsNotifications={cmsNotifications} />\n\t\t</CookieNotificationProvider>\n\t</PerUserDataContextProvider>\n);\n\nexport default Notifications;\n","import { useEffect, useMemo, useState } from 'react';\nimport { NotificationKind, ClientNotification, ClientNotificationScope } from './types';\n\nconst notificationTimeout = 15000;\n\nconst notifyCallbacks: ((notification: ClientNotification, isGroupedNotification?: boolean) => void)[] = [];\nconst removeNotificationCallbacks: ((notificationId: string) => void)[] = [];\nconst removeScopedNotificationsCallbacks: ((scope: string, location: string) => void)[] = [];\n\nexport function notifyError(message: string): void {\n\tnotify(message, 'error');\n}\n\nexport function notifySuccess(message: string): void {\n\tnotify(message, 'success');\n}\n\nexport function notifyWarning(message: string): void {\n\tnotify(message, 'warning');\n}\n\nexport function notifyInfo(message: string): void {\n\tnotify(message, 'info');\n}\n\nexport function notify(\n\tmessage: string,\n\tkind: NotificationKind,\n\tcode?: string,\n\tscope?: ClientNotificationScope,\n\tisGroupedNotification?: boolean\n): void {\n\tconst createdAt = Date.now();\n\n\tconst notification: ClientNotification = {\n\t\tid: `${Date.now()}-${Math.random()}`,\n\t\tmessage,\n\t\tkind,\n\t\tcode: code ?? '',\n\t\tcreatedAt: createdAt,\n\t\texpiresAt: createdAt + notificationTimeout,\n\t\tscope: scope,\n\t\tcount: 1,\n\t};\n\n\tfor (const callback of notifyCallbacks) {\n\t\tcallback(notification, isGroupedNotification);\n\t}\n}\n\nexport function removeNotification(notificationId: string): void {\n\tfor (const callback of removeNotificationCallbacks) {\n\t\tcallback(notificationId);\n\t}\n}\n\nexport function removeScopedNotifications(scope: string, location: string): void {\n\tfor (const callback of removeScopedNotificationsCallbacks) {\n\t\tcallback(scope, location);\n\t}\n}\n\nexport interface ClientNotificationsState {\n\tnotifications: ClientNotification[];\n\tscopedNotifications: Record<string, ClientNotification[]>;\n}\n\nfunction isSameNotificationGroup(a: ClientNotification, b: ClientNotification): boolean {\n\treturn a.code === b.code && a.scope?.name === b.scope?.name && a.scope?.location === b.scope?.location;\n}\n\nfunction applyNotification<T extends ClientNotification>(\n\tprev: T[],\n\tnotification: ClientNotification,\n\tisGroupedNotification?: boolean\n): T[] {\n\tif (isGroupedNotification) {\n\t\tconst hasExisting = prev.some(n => isSameNotificationGroup(n, notification));\n\t\tif (hasExisting) {\n\t\t\treturn prev.map(prevNotification =>\n\t\t\t\tisSameNotificationGroup(prevNotification, notification)\n\t\t\t\t\t? { ...prevNotification, expiresAt: notification.expiresAt, count: prevNotification.count + 1 }\n\t\t\t\t\t: prevNotification\n\t\t\t);\n\t\t}\n\t}\n\treturn [...prev, notification as T];\n}\n\nexport function useClientNotifications(): ClientNotificationsState {\n\tconst [clientNotifications, setClientNotifications] = useState<ClientNotification[]>([]);\n\tconst [scopedClientNotifications, setScopedClientNotifications] = useState<\n\t\t(ClientNotification & { scope: ClientNotificationScope })[]\n\t>([]);\n\n\tuseEffect(() => {\n\t\tconst handleNotify = (notification: ClientNotification, isGroupedNotification?: boolean) => {\n\t\t\tif (notification.scope) {\n\t\t\t\tsetScopedClientNotifications(prev => applyNotification(prev, notification, isGroupedNotification));\n\t\t\t} else {\n\t\t\t\tsetClientNotifications(prev => applyNotification(prev, notification, isGroupedNotification));\n\t\t\t}\n\t\t};\n\t\tconst handleRemoveNotification = (notificationId: string) => {\n\t\t\tsetClientNotifications(prev => prev.filter(n => n.id !== notificationId));\n\t\t\tsetScopedClientNotifications(prev => prev.filter(n => n.id !== notificationId));\n\t\t};\n\t\tconst handleRemoveScopedNotifications = (scope: string, location: string) => {\n\t\t\tsetScopedClientNotifications(prev =>\n\t\t\t\tprev.filter(notification => notification.scope?.name !== scope || notification.scope?.location !== location)\n\t\t\t);\n\t\t};\n\n\t\tnotifyCallbacks.push(handleNotify);\n\t\tremoveNotificationCallbacks.push(handleRemoveNotification);\n\t\tremoveScopedNotificationsCallbacks.push(handleRemoveScopedNotifications);\n\n\t\treturn () => {\n\t\t\tconst index = notifyCallbacks.indexOf(handleNotify);\n\t\t\tif (index > -1) {\n\t\t\t\tnotifyCallbacks.splice(index, 1);\n\t\t\t}\n\t\t\tconst removeIndex = removeNotificationCallbacks.indexOf(handleRemoveNotification);\n\t\t\tif (removeIndex > -1) {\n\t\t\t\tremoveNotificationCallbacks.splice(removeIndex, 1);\n\t\t\t}\n\t\t\tconst removeScopedIndex = removeScopedNotificationsCallbacks.indexOf(handleRemoveScopedNotifications);\n\t\t\tif (removeScopedIndex > -1) {\n\t\t\t\tremoveScopedNotificationsCallbacks.splice(removeScopedIndex, 1);\n\t\t\t}\n\t\t};\n\t}, []);\n\n\tconst scopedNotifications = useMemo(\n\t\t() =>\n\t\t\tscopedClientNotifications.reduce<Record<string, ClientNotification[]>>((acc, notification) => {\n\t\t\t\t(acc[notification.scope.name] ??= []).push(notification);\n\t\t\t\treturn acc;\n\t\t\t}, {}),\n\t\t[scopedClientNotifications]\n\t);\n\n\treturn {\n\t\tnotifications: clientNotifications,\n\t\tscopedNotifications,\n\t};\n}\n","import { useEffect, useRef, useState } from 'react';\n\nexport interface UseSwrOptions<T> {\n\tkey: string;\n\tfetcher: () => Promise<T>;\n\trevalidateOnFocus?: boolean;\n\tinitialData?: T;\n}\n\nexport interface UseSwrResult<T> {\n\tdata: T | undefined;\n\tisLoading: boolean;\n\tisValidating: boolean;\n\terror: Error | undefined;\n}\n\ninterface Subscriber {\n\tonData: (data: unknown) => void;\n\tonError: (error: Error | undefined) => void;\n\tonValidatingChange: (isValidating: boolean) => void;\n\tonLoadingDone: () => void;\n}\n\ninterface GlobalState {\n\tdata?: unknown;\n\tpromise?: Promise<unknown>;\n\tsubscribers: Subscriber[];\n\tfetcher: () => Promise<unknown>;\n\trevalidateOnFocus: boolean;\n}\n\nconst globalStore = new Map<string, GlobalState>();\n\nif (typeof window !== 'undefined') {\n\tdocument.addEventListener('visibilitychange', () => {\n\t\tfor (const [key, state] of globalStore) {\n\t\t\tif (!state.revalidateOnFocus || document.visibilityState !== 'visible') {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\trevalidateKey(key);\n\t\t}\n\t});\n}\n\nfunction revalidateKey(key: string): void {\n\tconst state = globalStore.get(key);\n\tif (!state) {\n\t\treturn;\n\t}\n\n\tif (state.promise) {\n\t\treturn;\n\t}\n\n\tfor (const sub of state.subscribers) {\n\t\tsub.onValidatingChange(true);\n\t\tsub.onError(undefined);\n\t}\n\n\tconst promise = state.fetcher();\n\tstate.promise = promise;\n\tpromise\n\t\t.then(result => {\n\t\t\tstate.data = result;\n\t\t\tfor (const sub of state.subscribers) {\n\t\t\t\tsub.onData(result);\n\t\t\t\tsub.onLoadingDone();\n\t\t\t\tsub.onValidatingChange(false);\n\t\t\t}\n\t\t})\n\t\t.catch(err => {\n\t\t\tconst error = err instanceof Error ? err : new Error(String(err));\n\t\t\tfor (const sub of state.subscribers) {\n\t\t\t\tsub.onError(error);\n\t\t\t\tsub.onLoadingDone();\n\t\t\t\tsub.onValidatingChange(false);\n\t\t\t}\n\t\t})\n\t\t.finally(() => {\n\t\t\tstate.promise = undefined;\n\t\t});\n}\n\nexport function useSwr<T>({ key, fetcher, revalidateOnFocus = true, initialData }: UseSwrOptions<T>): UseSwrResult<T> {\n\tconst existingData = globalStore.get(key)?.data as T | undefined;\n\n\tconst hasInitialData = initialData !== undefined;\n\tconst [data, setData] = useState<T | undefined>(hasInitialData ? initialData : existingData);\n\tconst [isLoading, setIsLoading] = useState(!hasInitialData && existingData === undefined);\n\tconst [isValidating, setIsValidating] = useState(false);\n\tconst [error, setError] = useState<Error | undefined>(undefined);\n\n\tconst ref = useRef({\n\t\tfetcher,\n\t\tkey,\n\t\trevalidateOnFocus,\n\t\tinitialData,\n\t});\n\n\t// Register as a subscriber to the global state and trigger initial revalidation.\n\tuseEffect(() => {\n\t\tconst currentKey = ref.current.key;\n\t\tconst existing = globalStore.get(currentKey);\n\n\t\tconst subscriber: Subscriber = {\n\t\t\tonData: (value: unknown) => setData(value as T),\n\t\t\tonError: setError,\n\t\t\tonValidatingChange: setIsValidating,\n\t\t\tonLoadingDone: () => setIsLoading(false),\n\t\t};\n\n\t\tconst state: GlobalState = existing ?? {\n\t\t\tsubscribers: [],\n\t\t\tfetcher: ref.current.fetcher as () => Promise<unknown>,\n\t\t\trevalidateOnFocus: ref.current.revalidateOnFocus,\n\t\t};\n\n\t\tif (ref.current.initialData !== undefined && state.data === undefined) {\n\t\t\tstate.data = ref.current.initialData;\n\t\t}\n\n\t\tstate.subscribers.push(subscriber);\n\n\t\tif (!existing) {\n\t\t\t// First subscriber for this key — start the initial fetch.\n\t\t\tglobalStore.set(currentKey, state);\n\t\t\trevalidateKey(currentKey);\n\t\t} else if (state.promise) {\n\t\t\t// A fetch is already in flight; sync validating state.\n\t\t\tsetIsValidating(true);\n\t\t\tif (state.data !== undefined) {\n\t\t\t\tsetData(state.data as T);\n\t\t\t\tsetIsLoading(false);\n\t\t\t}\n\t\t} else if (state.data !== undefined) {\n\t\t\t// Another subscriber already resolved this key — adopt its value instead of refetching.\n\t\t\tsetData(state.data as T);\n\t\t\tsetIsLoading(false);\n\t\t}\n\n\t\treturn () => {\n\t\t\tconst index = state.subscribers.indexOf(subscriber);\n\t\t\tif (index !== -1) {\n\t\t\t\tstate.subscribers.splice(index, 1);\n\t\t\t}\n\t\t\tif (state.subscribers.length === 0) {\n\t\t\t\tglobalStore.delete(currentKey);\n\t\t\t}\n\t\t};\n\t}, []);\n\n\treturn { data, isLoading, isValidating, error };\n}\n","import React, { useEffect, useMemo } from 'react';\nimport { createBatchContext } from '../../hooks/use-batch';\nimport { useSwr } from '../../hooks/use-swr';\nimport { getCartStatus, useCartContents } from '../../hooks/use-cart-contents';\nimport eventAggregator from '../../cart/utility/eventaggregator';\n\nexport interface SkuStatus {\n\tproductId: string;\n\tisOwned: boolean;\n\tisInCart: boolean;\n\thasBeenPreordered: boolean;\n}\n\nexport enum SubscriptionPeriodType {\n\tDay = 'day',\n\tMonth = 'month',\n\tYear = 'year',\n}\n\nexport interface SubscriptionInfo {\n\tperiodType: SubscriptionPeriodType;\n\tperiodCount: number;\n\tperiodDisplay: string;\n\tshouldHidePrice: boolean;\n}\n\nexport interface ProductPriceAmount {\n\tamount: number;\n\tdisplayAmount: string;\n\tdisplayAmountCurrencyCode: string | null;\n\tlocalizedDisplayAmount: string | null;\n\tcurrencyCode: string;\n\tdisplayAmountByCurrency: Record<string, string> | null;\n}\n\nexport interface ProductPriceBreakdownLine {\n\tlabel: string;\n\tamount: ProductPriceAmount;\n\tisDeduction: boolean;\n\tdisplayInUsd: boolean;\n\thref?: string | null;\n}\n\nexport interface ProductPriceDiscount {\n\tdescription: string;\n\tshouldStack: boolean;\n}\n\nexport interface SubscriptionPromotionFreeTrialInfo {\n\tperiodUnit: 'day' | 'month' | 'year';\n\tperiodLength: number;\n}\n\n/**\n * PDP subscription-promotion offer for a single SKU, keyed off both the product\n * and the current user. Sourced from `/api/user/subscription-promotions`\n * (PerUserDataController.GetSubscriptionPromotions) so it stays user-specific and\n * is fetched independently of the shared product pricing hook.\n */\nexport interface ProductSubscriptionPromotion {\n\tskuId: string;\n\tsubscribableProductTitle: string;\n\tsubscribableProductOptionId: string;\n\tpercentOff: string;\n\tlogosOrVerbum: string;\n\tfreeTrialInfo: SubscriptionPromotionFreeTrialInfo | null;\n\troutes: Record<string, string>;\n}\n\nexport interface ProductPrices {\n\tsalePrice: ProductPriceAmount;\n\tanchorPrice: ProductPriceAmount | null;\n\tanchorSavings?: ProductPriceAmount | null;\n\tdiscountSavings: ProductPriceAmount | null;\n\tdiscounts?: ProductPriceDiscount[] | null;\n\tbreakdownTriggerLabel?: string | null;\n\tbreakdownLines?: ProductPriceBreakdownLine[] | null;\n\tanchorPriceLines?: { label: string; displayAmount?: string | null; localizedDisplayAmount?: string | null }[] | null;\n\tsavingsDescription?: string | null;\n}\n\nexport interface ProductPricingSkuData {\n\tskuId: string;\n\tisSellable: boolean;\n\tisPurchasable?: boolean;\n\tisPreorder?: boolean;\n\tisOwned: boolean;\n\tisInCart: boolean;\n\tcartItemId?: number | null;\n\tcartUpdateUrl?: string | null;\n\thasBeenPreordered: boolean;\n\tprices: ProductPrices | null;\n\tunitPriceLabel?: string | null;\n\tdeliveryMethod: {\n\t\tisDownloadable: boolean;\n\t\tisShippable: boolean;\n\t} | null;\n\tsubscriptionInfo: SubscriptionInfo | null;\n\troutes: Record<string, string>;\n}\n\nexport interface Preorder {\n\torderDate: string;\n\troutes: {\n\t\tPreorderManagementPage: string;\n\t};\n}\n\nexport type PrepubProductStatus = 'none' | 'gatheringInterest' | 'almostThere' | 'underContract' | 'shippingSoon';\n\nexport interface PrepubProductStatusSummary {\n\tstatus: PrepubProductStatus;\n\tpercentCommitted: number;\n\tshipDate: string | null | undefined;\n\tdescription: string;\n}\n\nexport interface ProductPricingData {\n\tproductId: string;\n\taccessKind: string;\n\tisOwned: boolean;\n\tisGeographicallyRestricted?: boolean;\n\tisAcademicallyRestricted?: boolean;\n\tpreorder: Preorder | null;\n\thasPreorder: boolean;\n\tisPrepubProduct: boolean;\n\tprepubProductStatusSummary: PrepubProductStatusSummary | null;\n\tuserCountryOrRegionIsTradeSanctioned?: boolean;\n\tprimarySku: ProductPricingSkuData | null;\n\tskus: Record<string, ProductPricingSkuData> | null;\n\tbusinessDeskEditUri?: string | null;\n\topenInLogosBaseUrl?: string | null;\n}\n\nexport interface SubscriptionProductLocalizedResources {\n\tafterFreeTrial: string;\n\tbilledAnnually: string;\n\tbilledAnnuallyAfterFreeTrial: string;\n\tbilledOnceAfterFreeTrial: string;\n\tbilledOnceThenRenews: string;\n\tcontinueWith: string;\n\tcurrentPlan: string;\n\trenewsAnnuallyAfterTwoYears: string;\n\tstartFreeTrial: string;\n\tsubscribe: string;\n\tswitchTo: string;\n\tchangePlan: string;\n}\n\n/**\n * Mirrors `BuilderSubscriptionProductViewModel` returned by\n * `/api/user/subscription-products` (see PerUserDataController.MapToSubscriptionProductViewModel).\n * This includes the legacy fields still used by the configuration wizard and the\n * resolved fields consumed by commerce-components.\n */\nexport interface SubscriptionProductData {\n\tspoid?: string;\n\tisMultiAnnual?: boolean;\n\tisMultiAnnualSubscription?: boolean;\n\ttitle: string;\n\tanchorPrice?: string;\n\tanchorPriceDescription?: string;\n\tprice: string;\n\tstrikeoutPrice?: string;\n\tstrikeoutPriceDescription?: string;\n\tpricePerMonth: string;\n\tbillingNote?: string;\n\tfreeTrialDays?: number;\n\tcanSubscribe?: boolean;\n\thasSubscription?: boolean;\n\tlocalizedResources: SubscriptionProductLocalizedResources;\n\tannualSavingsPercentage?: number; // extra property necessary to provide to toggle when card appears in that context\n\tinitialCharge: string;\n\tinitialChargeLocalized: string;\n\trecommendedTrackProductId?: string;\n\toptionBillingMode?: string;\n}\n\nexport interface UserInfo {\n\tisLoggedIn: boolean;\n\tuserId: string;\n\temail: string;\n\tname: string;\n\tavatarUrl: string;\n\tuserState: string;\n\tisEmployee: boolean;\n\tisAcademicFaculty: boolean;\n\tisAcademicStudent: boolean;\n\tisAcademicStaff: boolean;\n\tisAcademicFacultyRequired: boolean;\n\tisAcademicStudentRequired: boolean;\n\tisSubscribed: boolean;\n\tdoesQualifyForSubscriptionFreeTrial: boolean;\n\tisLogos10Owner: boolean;\n\tisBasePackageOwner: boolean;\n\tsubscriptionLevel: string;\n\tsegments: string[];\n\tisUserEligibleForLegacyFallbackLicense: boolean;\n\tdoesUserHaveALogosSubscriptionInCart: boolean;\n\tsubscribableProductIdInCart: string;\n\tlogosSubscribableProductOptionIdsInCart: string[];\n}\n\nconst c_defaultStatus: SkuStatus = {\n\tproductId: '',\n\tisOwned: false,\n\tisInCart: false,\n\thasBeenPreordered: false,\n};\n\n// --- Ownership response parsing ---\n\ninterface OwnershipResponse {\n\tproducts?: {\n\t\tproductId: string;\n\t\tisOwned?: boolean;\n\t\tisInCart?: boolean;\n\t\thasBeenPreordered?: boolean;\n\t\tskus?: { skuId?: string; isOwned?: boolean; isInCart?: boolean; hasBeenPreordered?: boolean }[];\n\t}[];\n\tsubscribableProducts?: {\n\t\tproductId: string;\n\t\tisOwned?: boolean;\n\t\tisInCart?: boolean;\n\t\toptions?: { id?: string; isOwned?: boolean; isInCart?: boolean }[];\n\t}[];\n}\n\n// --- Batch contexts ---\n\ntype OwnershipId = { sku: string } | { spoid: string };\n\ninterface OwnershipResult extends SkuStatus {\n\tid: OwnershipId;\n}\n\nconst OwnershipBatch = createBatchContext<OwnershipId, OwnershipResult, boolean>(\n\tasync (ids, isSignedIn) => {\n\t\tif (!isSignedIn) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst skus = ids.filter((id): id is { sku: string } => 'sku' in id).map(id => id.sku);\n\t\tconst spoids = ids.filter((id): id is { spoid: string } => 'spoid' in id).map(id => id.spoid);\n\n\t\tconst response = await fetch('/api/user/ownership', {\n\t\t\tmethod: 'POST',\n\t\t\theaders: { 'Content-Type': 'application/json' },\n\t\t\tbody: JSON.stringify({ skus, spoids }),\n\t\t});\n\n\t\tif (!response.ok) {\n\t\t\tthrow new Error(`HTTP error! status: ${response.status}`);\n\t\t}\n\n\t\tconst data: OwnershipResponse = await response.json();\n\t\tconst results: OwnershipResult[] = [];\n\n\t\tfor (const product of data?.products ?? []) {\n\t\t\tfor (const sku of product?.skus ?? []) {\n\t\t\t\tif (sku?.skuId) {\n\t\t\t\t\tresults.push({\n\t\t\t\t\t\tid: { sku: String(sku.skuId) },\n\t\t\t\t\t\tproductId: product?.productId ?? '',\n\t\t\t\t\t\tisOwned: Boolean(sku?.isOwned ?? product?.isOwned),\n\t\t\t\t\t\tisInCart: Boolean(sku?.isInCart ?? product?.isInCart),\n\t\t\t\t\t\thasBeenPreordered: Boolean(sku?.hasBeenPreordered ?? product?.hasBeenPreordered),\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (const subscribableProduct of data?.subscribableProducts ?? []) {\n\t\t\tfor (const option of subscribableProduct?.options ?? []) {\n\t\t\t\tif (option?.id) {\n\t\t\t\t\tresults.push({\n\t\t\t\t\t\tid: { spoid: String(option.id) },\n\t\t\t\t\t\tproductId: subscribableProduct?.productId ?? '',\n\t\t\t\t\t\tisOwned: Boolean(option?.isOwned ?? subscribableProduct?.isOwned),\n\t\t\t\t\t\tisInCart: Boolean(option?.isInCart ?? subscribableProduct?.isInCart),\n\t\t\t\t\t\thasBeenPreordered: false,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn results;\n\t},\n\t(id, data) => data.find(d => JSON.stringify(d.id) === JSON.stringify(id))\n);\n\ninterface PricingResponse {\n\tproducts?: ProductPricingData[];\n}\n\nconst PricingBatch = createBatchContext<string, ProductPricingData>(\n\tasync productIds => {\n\t\t// Server only ever returns the canonical primary SKU per product; non-primary SKUs\n\t\t// (e.g. group-license escrow) intentionally fall back to default/catalog pricing.\n\t\tconst response = await fetch('/api/user/pricing', {\n\t\t\tmethod: 'POST',\n\t\t\theaders: { 'Content-Type': 'application/json' },\n\t\t\tbody: JSON.stringify({ productIds }),\n\t\t});\n\n\t\tif (!response.ok) {\n\t\t\tthrow new Error(`HTTP error! status: ${response.status}`);\n\t\t}\n\n\t\tconst data: PricingResponse = await response.json();\n\t\treturn data?.products ?? [];\n\t},\n\t(id, data) => data.find(d => d.productId === id)\n);\n\ninterface SubscriptionProductsResponse {\n\tsubscriptionProducts?: SubscriptionProductData[];\n}\n\ninterface SubscriptionProductRequest {\n\tspoid: string;\n\tcouponCodes?: string[];\n\tisMultiAnnual?: boolean;\n}\n\nconst SubscriptionProductBatch = createBatchContext<SubscriptionProductRequest, SubscriptionProductData>(\n\tasync requests => {\n\t\tconst subscriptionProductDataRequests = Array.from(\n\t\t\tnew Map(\n\t\t\t\trequests.map(request => [\n\t\t\t\t\t`${request.spoid}:${request.isMultiAnnual}`,\n\t\t\t\t\t{ spoid: request.spoid, isMultiAnnual: request.isMultiAnnual },\n\t\t\t\t])\n\t\t\t).values()\n\t\t);\n\t\tconst couponCodes = Array.from(new Set(requests.flatMap(request => request.couponCodes ?? [])));\n\t\tconst response = await fetch('/api/user/subscription-products', {\n\t\t\tmethod: 'POST',\n\t\t\theaders: { 'Content-Type': 'application/json' },\n\t\t\tbody: JSON.stringify({ subscriptionProductDataRequests, couponCodes }),\n\t\t});\n\n\t\tif (!response.ok) {\n\t\t\tthrow new Error(`HTTP error! status: ${response.status}`);\n\t\t}\n\n\t\tconst data: SubscriptionProductsResponse = await response.json();\n\t\treturn data?.subscriptionProducts ?? [];\n\t},\n\t(request, data) =>\n\t\tdata.find(\n\t\t\td =>\n\t\t\t\td.spoid === request.spoid &&\n\t\t\t\tBoolean(d.isMultiAnnual ?? d.isMultiAnnualSubscription) === Boolean(request.isMultiAnnual)\n\t\t)\n);\n\ninterface SubscriptionPromotionsResponse {\n\tsubscriptionPromotions?: Record<string, Omit<ProductSubscriptionPromotion, 'skuId'> | null> | null;\n}\n\nconst SubscriptionPromotionBatch = createBatchContext<string, ProductSubscriptionPromotion>(\n\tasync skuIds => {\n\t\tconst response = await fetch('/api/user/subscription-promotions', {\n\t\t\tmethod: 'POST',\n\t\t\theaders: { 'Content-Type': 'application/json' },\n\t\t\tbody: JSON.stringify({ skuIds }),\n\t\t});\n\n\t\tif (!response.ok) {\n\t\t\tthrow new Error(`HTTP error! status: ${response.status}`);\n\t\t}\n\n\t\tconst data: SubscriptionPromotionsResponse = await response.json();\n\t\tconst promotions = data?.subscriptionPromotions ?? {};\n\t\treturn Object.entries(promotions)\n\t\t\t.filter((entry): entry is [string, Omit<ProductSubscriptionPromotion, 'skuId'>] => entry[1] !== null)\n\t\t\t.map(([skuId, promotion]) => ({ skuId, ...promotion }));\n\t},\n\t(id, data) => data.find(d => d.skuId === id)\n);\n\n// --- Provider and hooks ---\n\ninterface InitialData {\n\tskus?: string[];\n\tspoids?: string[];\n}\n\ninterface PerUserDataContextProviderProps {\n\tinitialData?: InitialData;\n\tinitialPricingData?: ProductPricingData[];\n\tchildren: React.ReactNode;\n}\n\nexport function PerUserDataContextProvider({\n\tinitialData,\n\tinitialPricingData,\n\tchildren,\n}: PerUserDataContextProviderProps) {\n\tconst { userId, preferredCurrency, isSignedIn } = useCurrentUser();\n\tconst ownershipInitialIds = useMemo(() => {\n\t\tconst ids: OwnershipId[] = [];\n\t\tif (!isSignedIn) {\n\t\t\treturn ids;\n\t\t}\n\t\tfor (const sku of initialData?.skus ?? []) {\n\t\t\tif (sku) {\n\t\t\t\tids.push({ sku: String(sku) });\n\t\t\t}\n\t\t}\n\t\tfor (const spoid of initialData?.spoids ?? []) {\n\t\t\tif (spoid) {\n\t\t\t\tids.push({ spoid: String(spoid) });\n\t\t\t}\n\t\t}\n\t\treturn ids;\n\t}, [initialData, isSignedIn]);\n\n\tconst pricingInitialData = useMemo(\n\t\t() => (initialPricingData ?? []).map(data => ({ id: data.productId, data })),\n\t\t[initialPricingData]\n\t);\n\tconst pricingInitialIds = useMemo(\n\t\t() => (initialPricingData ?? []).map(data => data.productId).filter(Boolean),\n\t\t[initialPricingData]\n\t);\n\n\treturn (\n\t\t<OwnershipBatch.Provider\n\t\t\tkey={JSON.stringify([userId, preferredCurrency])}\n\t\t\tinitialIds={ownershipInitialIds}\n\t\t\tcontext={isSignedIn}\n\t\t>\n\t\t\t<PricingBatch.Provider initialIds={pricingInitialIds} initialData={pricingInitialData}>\n\t\t\t\t<SubscriptionProductBatch.Provider>\n\t\t\t\t\t<SubscriptionPromotionBatch.Provider>\n\t\t\t\t\t\t<PerUserDataBatchCacheRevalidator />\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</SubscriptionPromotionBatch.Provider>\n\t\t\t\t</SubscriptionProductBatch.Provider>\n\t\t\t</PricingBatch.Provider>\n\t\t</OwnershipBatch.Provider>\n\t);\n}\n\nfunction PerUserDataBatchCacheRevalidator(): null {\n\tconst revalidatePricing = PricingBatch.useRevalidate();\n\n\tuseEffect(() => {\n\t\tconst handleCartUpdated = () => {\n\t\t\trevalidatePricing();\n\t\t};\n\n\t\teventAggregator.on('cart:updated', handleCartUpdated);\n\t\tdocument.addEventListener('faithlife.sites.cart.updated', handleCartUpdated);\n\n\t\treturn () => {\n\t\t\teventAggregator.off('cart:updated', handleCartUpdated);\n\t\t\tdocument.removeEventListener('faithlife.sites.cart.updated', handleCartUpdated);\n\t\t};\n\t}, [revalidatePricing]);\n\n\treturn null;\n}\n\nexport function useOwnershipStatusData(\n\ttype?: 'SKU' | 'SPOID',\n\tid?: string,\n\tproductId?: string\n): {\n\tdata: SkuStatus | undefined;\n\tisLoading: boolean;\n\terror: Error | undefined;\n} {\n\tconst { isSignedIn, isLoading: isUserLoading } = useCurrentUser();\n\tconst cartContents = useCartContents();\n\tconst normalizedId = id?.trim();\n\tconst requestId = useMemo<OwnershipId | undefined>(\n\t\t() =>\n\t\t\tisSignedIn && type === 'SKU' && normalizedId\n\t\t\t\t? { sku: normalizedId }\n\t\t\t\t: isSignedIn && type === 'SPOID' && normalizedId\n\t\t\t\t\t? { spoid: normalizedId }\n\t\t\t\t\t: undefined,\n\t\t[isSignedIn, type, normalizedId]\n\t);\n\tconst { data, isLoading, error } = OwnershipBatch.useData(requestId);\n\tconst cartStatus =\n\t\ttype && normalizedId ? getCartStatus(cartContents, type, normalizedId, productId ?? data?.productId) : undefined;\n\tif (!isSignedIn) {\n\t\treturn {\n\t\t\tdata: cartStatus\n\t\t\t\t? { ...c_defaultStatus, ...cartStatus, productId: cartStatus.productId || productId || '' }\n\t\t\t\t: undefined,\n\t\t\tisLoading: Boolean(type && normalizedId) && (isUserLoading || !cartStatus),\n\t\t\terror: undefined,\n\t\t};\n\t}\n\tif (!data) {\n\t\treturn { data: undefined, isLoading, error };\n\t}\n\n\treturn {\n\t\tdata: {\n\t\t\tproductId: data.productId,\n\t\t\tisOwned: data.isOwned,\n\t\t\tisInCart: cartStatus?.isInCart ?? data.isInCart,\n\t\t\thasBeenPreordered: data.hasBeenPreordered,\n\t\t},\n\t\tisLoading,\n\t\terror,\n\t};\n}\n\nexport function usePricing(productId?: string): {\n\tdata: ProductPricingData | undefined;\n\tisLoading: boolean;\n\terror: Error | undefined;\n} {\n\treturn PricingBatch.useData(productId);\n}\n\nexport function useSubscriptionProductData(spoid?: string, couponCodes?: string[], isMultiAnnual?: boolean) {\n\tconst normalizedId = String(spoid ?? '').trim();\n\tconst request = useMemo<SubscriptionProductRequest | undefined>(\n\t\t() => (normalizedId ? { spoid: normalizedId, couponCodes, isMultiAnnual } : undefined),\n\t\t[normalizedId, couponCodes, isMultiAnnual]\n\t);\n\treturn SubscriptionProductBatch.useData(request);\n}\n\nexport function useSubscriptionPromotion(skuId?: string): {\n\tdata: ProductSubscriptionPromotion | undefined;\n\tisLoading: boolean;\n\terror: Error | undefined;\n} {\n\treturn SubscriptionPromotionBatch.useData(skuId);\n}\n\ninterface CurrentUserResponse {\n\tuserId: string | null;\n\tuserInfo: UserInfo | null;\n\tpreferredCurrency?: string | null;\n\tcanEditContent?: boolean;\n\timpactToken?: string | null;\n}\n\ninterface GlobalThis {\n\tlayoutViewModel?: {\n\t\tcurrentUserInfo?: UserInfo;\n\t};\n}\n\nconst c_currentUserKey = 'commerceweb:currentUser';\n\nexport const c_defaultUserInfo: UserInfo = {\n\tisLoggedIn: false,\n\tuserId: '',\n\temail: '',\n\tname: '',\n\tavatarUrl: '',\n\tuserState: 'NSI',\n\tisEmployee: false,\n\tisAcademicFaculty: false,\n\tisAcademicStudent: false,\n\tisAcademicStaff: false,\n\tisAcademicFacultyRequired: false,\n\tisAcademicStudentRequired: false,\n\tisSubscribed: false,\n\tdoesQualifyForSubscriptionFreeTrial: true,\n\tisLogos10Owner: false,\n\tisBasePackageOwner: false,\n\tsubscriptionLevel: '',\n\tsegments: [],\n\tisUserEligibleForLegacyFallbackLicense: false,\n\tlogosSubscribableProductOptionIdsInCart: [],\n\tdoesUserHaveALogosSubscriptionInCart: false,\n\tsubscribableProductIdInCart: '',\n};\n\nasync function fetchCurrentUser(domain?: string): Promise<CurrentUserResponse> {\n\ttry {\n\t\tconst url = domain ? new URL('/api/user/current', domain).href : '/api/user/current';\n\t\tconst response = await fetch(url, {\n\t\t\tmode: 'cors',\n\t\t\tcredentials: 'include',\n\t\t});\n\t\tif (!response.ok) {\n\t\t\treturn {\n\t\t\t\tuserId: null,\n\t\t\t\tuserInfo: null,\n\t\t\t\tcanEditContent: false,\n\t\t\t};\n\t\t}\n\t\treturn response.json();\n\t} catch (error) {\n\t\treturn {\n\t\t\tuserId: null,\n\t\t\tuserInfo: null,\n\t\t\tcanEditContent: false,\n\t\t};\n\t}\n}\n\nexport function useCurrentUser(\n\tdomain?: string,\n\tinitialUserInfo?: UserInfo\n): {\n\tuserId: string | null;\n\tuserInfo: UserInfo;\n\tpreferredCurrency: string;\n\tisLoading: boolean;\n\tcanEditContent: boolean;\n\timpactToken: string | undefined;\n\tisSignedIn: boolean;\n} {\n\tconst serverCurrentUserInfo = initialUserInfo ?? (globalThis as GlobalThis).layoutViewModel?.currentUserInfo;\n\tconst initialData = useMemo<CurrentUserResponse | undefined>(\n\t\t() =>\n\t\t\tserverCurrentUserInfo\n\t\t\t\t? {\n\t\t\t\t\t\tuserId: serverCurrentUserInfo.isLoggedIn ? serverCurrentUserInfo.userId : null,\n\t\t\t\t\t\tuserInfo: serverCurrentUserInfo,\n\t\t\t\t\t}\n\t\t\t\t: undefined,\n\t\t[serverCurrentUserInfo]\n\t);\n\n\tconst { data, isLoading } = useSwr<CurrentUserResponse>({\n\t\tkey: c_currentUserKey,\n\t\tfetcher: () => fetchCurrentUser(domain),\n\t\trevalidateOnFocus: true,\n\t\tinitialData,\n\t});\n\treturn {\n\t\tuserId: data?.userId ?? null,\n\t\tuserInfo: data?.userInfo ?? c_defaultUserInfo,\n\t\tpreferredCurrency: data?.preferredCurrency ?? 'USD',\n\t\tisLoading,\n\t\tcanEditContent: data?.canEditContent ?? false,\n\t\timpactToken: data?.impactToken ?? undefined,\n\t\tisSignedIn: Boolean(data?.userId),\n\t};\n}\n","import { useCallback, useEffect, useState } from 'react';\nimport { useCartEffect } from '../components/checkout-shared/useCartEffect';\n\ninterface CartOrder {\n\tlineItems?: {\n\t\tsku?: string;\n\t\tskuIds?: string[];\n\t\tproductId?: string;\n\t\tproductIds?: string[];\n\t\tprepubInfo?: unknown;\n\t}[];\n\tsubscribableLineItems?: { subscribableProductOptionId?: string }[];\n}\n\ninterface CartResponse extends CartOrder {\n\torder?: CartOrder | null;\n}\n\ninterface CartUpdatedDetail {\n\taddedSkuIds?: string[];\n\taddedSubscribableProductOptionIds?: string[];\n\tstatus?: string;\n}\n\nexport interface CartContents {\n\torder: CartOrder;\n\tisComplete: boolean;\n}\n\nexport function useCartContents(): CartContents | undefined {\n\tconst [contents, setContents] = useState<CartContents>();\n\tconst handleCartUpdated = useCallback((data?: CartResponse) => {\n\t\tconst order = data?.order ?? data;\n\t\tif (order?.lineItems || order?.subscribableLineItems) {\n\t\t\tsetContents({ order, isComplete: true });\n\t\t}\n\t}, []);\n\n\tuseCartEffect(handleCartUpdated);\n\n\tuseEffect(() => {\n\t\tconst handleCartLoaded = (event: Event) => {\n\t\t\tconst data = (event as CustomEvent<CartResponse>).detail;\n\t\t\tif (data) {\n\t\t\t\tsetContents({ order: data.order ?? data, isComplete: true });\n\t\t\t}\n\t\t};\n\t\tconst handleItemsAdded = (event: Event) => {\n\t\t\tconst detail = (event as CustomEvent<CartUpdatedDetail>).detail;\n\t\t\tif (!detail || detail.status?.toLowerCase() === 'blocked') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetContents(current => ({\n\t\t\t\tisComplete: current?.isComplete ?? false,\n\t\t\t\torder: {\n\t\t\t\t\tlineItems: [\n\t\t\t\t\t\t...(current?.order.lineItems ?? []),\n\t\t\t\t\t\t...(detail.addedSkuIds ?? []).filter(Boolean).map(sku => ({ sku })),\n\t\t\t\t\t],\n\t\t\t\t\tsubscribableLineItems: [\n\t\t\t\t\t\t...(current?.order.subscribableLineItems ?? []),\n\t\t\t\t\t\t...(detail.addedSubscribableProductOptionIds ?? [])\n\t\t\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t\t\t.map(subscribableProductOptionId => ({ subscribableProductOptionId })),\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t}));\n\t\t};\n\n\t\tdocument.addEventListener('faithlife.sites.cart.loaded', handleCartLoaded);\n\t\tdocument.addEventListener('faithlife.sites.cart.updated', handleItemsAdded);\n\t\tdocument.dispatchEvent(new CustomEvent('faithlife.sites.cart.request'));\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('faithlife.sites.cart.loaded', handleCartLoaded);\n\t\t\tdocument.removeEventListener('faithlife.sites.cart.updated', handleItemsAdded);\n\t\t};\n\t}, [handleCartUpdated]);\n\n\treturn contents;\n}\n\nexport function getCartStatus(\n\tcontents: CartContents | undefined,\n\ttype: 'SKU' | 'SPOID',\n\tid: string,\n\tproductId?: string\n): { isInCart: boolean; productId: string } | undefined {\n\tif (!contents) {\n\t\treturn undefined;\n\t}\n\n\tconst normalizedId = id.toLowerCase();\n\tif (type === 'SPOID') {\n\t\tconst isInCart =\n\t\t\tcontents.order.subscribableLineItems?.some(\n\t\t\t\titem => item.subscribableProductOptionId?.toLowerCase() === normalizedId\n\t\t\t) ?? false;\n\t\treturn isInCart || contents.isComplete ? { isInCart, productId: '' } : undefined;\n\t}\n\n\tconst item = contents.order.lineItems?.find(\n\t\tlineItem =>\n\t\t\t(lineItem.sku ? [lineItem.sku] : (lineItem.skuIds ?? [])).some(sku => sku.toLowerCase() === normalizedId) ||\n\t\t\t(Boolean(lineItem.prepubInfo) &&\n\t\t\t\tBoolean(productId) &&\n\t\t\t\t(lineItem.productId ? [lineItem.productId] : (lineItem.productIds ?? [])).some(\n\t\t\t\t\titemProductId => itemProductId.toLowerCase() === productId?.toLowerCase()\n\t\t\t\t))\n\t);\n\treturn item || contents.isComplete ? { isInCart: Boolean(item), productId: item?.productId ?? '' } : undefined;\n}\n","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgEditPencilWhitecomponent = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n  width: 12,\n  height: 12,\n  viewBox: \"0 0 12 12\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n  fill: \"#FFF\",\n  fillRule: \"evenodd\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n  d: \"m8.442 1.99-7.03 7.074v.818h.892L9.292 2.82l-.85-.83zm2.346.32c.28.272.28.72.006 1l-7.9 7.984H0V8.482L7.925.505a.714.714 0 0 1 1.008-.01l1.855 1.814z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n  d: \"M8.998 4.472 7.116 2.355l-1.055.937L7.944 5.41M4.94 10.588h6.455v.807H4.94\"\n}))));\nexport default SvgEditPencilWhitecomponent;","import React from 'react';\n\nimport { useCurrentUser } from '../../per-user-data/per-user-data-context';\n\nimport styles from './index.less';\n\nimport { Pencil } from './svgs';\n\nexport default function ContentEditLink(props) {\n\tconst { url, title } = props;\n\tconst { canEditContent } = useCurrentUser();\n\treturn canEditContent ? (\n\t\t<a className={styles.editPencilContainer} href={url} title={title} target=\"_blank\" rel=\"noopener noreferrer\">\n\t\t\t<Pencil className={styles.editPencil} alt={title} />\n\t\t</a>\n\t) : null;\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"editPencilContainer\":\"index--editPencilContainer--j0ahj\",\"editPencil\":\"index--editPencil--NEnMw\"};","import React from 'react';\nimport ReactModernDrawer from 'react-modern-drawer';\nimport PropTypes from 'prop-types';\n\nimport 'react-modern-drawer/dist/index.css';\n\n// using `dvh` should account for address bars on mobile browsers\nconst overrideStylesByDirection = {\n\tleft: { height: '100dvh' },\n\tright: { height: '100dvh' },\n};\n\nconst Drawer = ({ id, placement, isOpen, size, zIndex, onClose, children }) => {\n\treturn (\n\t\t<ReactModernDrawer\n\t\t\topen={isOpen}\n\t\t\tdirection={placement}\n\t\t\tonClose={onClose}\n\t\t\tlockBackgroundScroll={true}\n\t\t\tsize={size}\n\t\t\tstyle={{\n\t\t\t\toverflow: 'auto',\n\t\t\t\t...overrideStylesByDirection[placement],\n\t\t\t}}\n\t\t\tzIndex={zIndex}\n\t\t\tcustomIdSuffix={id}\n\t\t>\n\t\t\t{children}\n\t\t</ReactModernDrawer>\n\t);\n};\n\nDrawer.propTypes = {\n\tid: PropTypes.string.isRequired,\n\tplacement: PropTypes.oneOf(['left', 'right', 'top', 'bottom']).isRequired,\n\tisOpen: PropTypes.bool.isRequired,\n\tsize: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n\tzIndex: PropTypes.number,\n\tonClose: PropTypes.func.isRequired,\n\tchildren: PropTypes.node.isRequired,\n};\n\nexport default Drawer;\n","export function hasValidReviewData(\n\taverageRating: number | null | undefined,\n\treviewCount: number | null | undefined\n): boolean {\n\treturn (reviewCount ?? 0) > 0 && (averageRating ?? 0) > 0;\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Radio, Checkbox } from '@faithlife/styled-ui';\n\nconst getRadioOrCheckbox = (props, option) => {\n\tconst { type, controlFunc } = props;\n\n\tif (type === 'radio') {\n\t\treturn (\n\t\t\t<Radio\n\t\t\t\tdata-testid=\"radio\"\n\t\t\t\tonClick={() => controlFunc(option.optionId)}\n\t\t\t\tisChecked={option.isSelected}\n\t\t\t\tclassName=\"form-checkbox\"\n\t\t\t\ttype=\"button\"\n\t\t\t>\n\t\t\t\t<div className=\"text\">{option.text}</div>\n\t\t\t</Radio>\n\t\t);\n\t} else if (type === 'checkbox') {\n\t\treturn (\n\t\t\t<Checkbox\n\t\t\t\tdata-testid=\"checkbox\"\n\t\t\t\tonClick={() => controlFunc(option.optionId)}\n\t\t\t\tisChecked={option.isSelected}\n\t\t\t\tclassName=\"form-checkbox\"\n\t\t\t\ttype=\"button\"\n\t\t\t>\n\t\t\t\t<div className=\"text\">{option.text}</div>\n\t\t\t</Checkbox>\n\t\t);\n\t}\n};\nconst CheckboxOrRadioGroup = props => {\n\tconst { title, options, commentChangeFunc, maxCommentLength } = props;\n\n\treturn (\n\t\t<div className=\"survey__question-container\">\n\t\t\t<label className=\"question-title\">{title}</label>\n\t\t\t<div className=\"checkbox-group\">\n\t\t\t\t{options\n\t\t\t\t\t.filter(o => o.isVisible)\n\t\t\t\t\t.map(option => (\n\t\t\t\t\t\t<div key={option.optionId.toString()} className=\"option-container\">\n\t\t\t\t\t\t\t<div className=\"checkbox-container\">{getRadioOrCheckbox(props, option)}</div>\n\t\t\t\t\t\t\t{option.isCommentVisible && (\n\t\t\t\t\t\t\t\t<div className=\"question__comment-container\">\n\t\t\t\t\t\t\t\t\t<textarea\n\t\t\t\t\t\t\t\t\t\tclassName=\"question__comment\"\n\t\t\t\t\t\t\t\t\t\tonChange={commentChangeFunc}\n\t\t\t\t\t\t\t\t\t\tid={option.optionId}\n\t\t\t\t\t\t\t\t\t\tkey={option.optionId.toString() + option.text}\n\t\t\t\t\t\t\t\t\t\tmaxLength={maxCommentLength}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t))}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nCheckboxOrRadioGroup.propTypes = {\n\ttitle: PropTypes.string.isRequired,\n\ttype: PropTypes.oneOf(['checkbox', 'radio']).isRequired,\n\tsetName: PropTypes.string.isRequired,\n\toptions: PropTypes.arrayOf(\n\t\tPropTypes.shape({\n\t\t\toptionId: PropTypes.number.isRequired,\n\t\t\tisCommentVisible: PropTypes.bool.isRequired,\n\t\t\ttext: PropTypes.string.isRequired,\n\t\t\tisSelected: PropTypes.bool.isRequired,\n\t\t\tcomment: PropTypes.string,\n\t\t})\n\t).isRequired,\n\tcontrolFunc: PropTypes.func.isRequired,\n\tcommentChangeFunc: PropTypes.func,\n\tmaxCommentLength: PropTypes.number.isRequired,\n};\n\nexport default CheckboxOrRadioGroup;\n","import React from 'react';\nimport CheckboxOrRadioGroup from '../../../views/shared/survey/components/checkboxorradiogroup';\nimport { useLocalization } from '../../../localization';\n\nconst SurveyContent = ({\n\tclassName,\n\terrorMessage,\n\tisComplete,\n\tisNewQuestion,\n\tmaxCommentLength,\n\tonUpdateQuestionStatus,\n\toptions,\n\tcurrentQuestion,\n}) => {\n\tconst resources = useLocalization('CommerceWeb.Resources.Surveys.Surveys');\n\tconst getGroupType = displayType => {\n\t\tswitch (displayType) {\n\t\t\tcase 'oneAnswerVertical':\n\t\t\tcase 'oneAnswerHorizontal':\n\t\t\t\treturn 'radio';\n\t\t\tcase 'multipleAnswersVertical':\n\t\t\tcase 'multipleAnswersHorizontal':\n\t\t\t\treturn 'checkbox';\n\t\t}\n\t};\n\n\tconst handleCheckboxOrRadioSelection = selectedOptionId => {\n\t\tif (currentQuestion.questionDisplayType.includes('one')) {\n\t\t\tconst newOptions = options.map(option => ({\n\t\t\t\t...option,\n\t\t\t\tisSelected: option.optionId === selectedOptionId,\n\t\t\t}));\n\t\t\tconst selectedOption = newOptions.find(option => option.optionId === selectedOptionId);\n\t\t\tonUpdateQuestionStatus(currentQuestion, selectedOption && selectedOption.isSelected, newOptions);\n\t\t} else if (currentQuestion.questionDisplayType.includes('multiple')) {\n\t\t\tconst newOptions = options.map(option => ({\n\t\t\t\t...option,\n\t\t\t\tisSelected: option.optionId === selectedOptionId ? !option.isSelected : option.isSelected,\n\t\t\t}));\n\t\t\tconst anySelected = newOptions.some(option => option.isSelected === true);\n\t\t\tonUpdateQuestionStatus(currentQuestion, anySelected, newOptions);\n\t\t}\n\t};\n\n\tconst handleCommentChange = event => {\n\t\tconst newOptions = options.map(option => ({\n\t\t\t...option,\n\t\t\tcomment: option.optionId.toString() === event.target.id ? event.target.value : option.comment,\n\t\t}));\n\t\tonUpdateQuestionStatus(currentQuestion, true, newOptions);\n\t};\n\n\tconst getQuestion = () => {\n\t\tswitch (currentQuestion.questionDisplayType) {\n\t\t\tcase 'oneAnswerVertical':\n\t\t\tcase 'oneAnswerHorizontal':\n\t\t\tcase 'multipleAnswersVertical':\n\t\t\tcase 'multipleAnswersHorizontal':\n\t\t\t\treturn (\n\t\t\t\t\t<CheckboxOrRadioGroup\n\t\t\t\t\t\ttitle={currentQuestion.text}\n\t\t\t\t\t\ttype={getGroupType(currentQuestion.questionDisplayType)}\n\t\t\t\t\t\tsetName={currentQuestion.questionId.toString()}\n\t\t\t\t\t\toptions={options}\n\t\t\t\t\t\tcontrolFunc={handleCheckboxOrRadioSelection}\n\t\t\t\t\t\tcommentChangeFunc={handleCommentChange}\n\t\t\t\t\t\tmaxCommentLength={maxCommentLength}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\tcase 'openEndedSingleLines':\n\t\t\tcase 'openEndedEssay':\n\t\t\t\treturn (\n\t\t\t\t\t<div className=\"survey__question-container\">\n\t\t\t\t\t\t<label className=\"question-title\">{currentQuestion.text}</label>\n\t\t\t\t\t\t<div className=\"essay-container\">\n\t\t\t\t\t\t\t{options\n\t\t\t\t\t\t\t\t.filter(o => o.isVisible)\n\t\t\t\t\t\t\t\t.map(option => (\n\t\t\t\t\t\t\t\t\t<div key={option.optionId.toString()} className=\"option-container\">\n\t\t\t\t\t\t\t\t\t\t<textarea\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"essay-comment\"\n\t\t\t\t\t\t\t\t\t\t\tonChange={handleCommentChange}\n\t\t\t\t\t\t\t\t\t\t\tid={option.optionId}\n\t\t\t\t\t\t\t\t\t\t\tkey={option.optionId.toString() + option.text}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t{errorMessage && <div className=\"error\">{errorMessage}</div>}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\tdefault:\n\t\t\t\treturn;\n\t\t}\n\t};\n\n\treturn (\n\t\t<div className={`survey__content${className ? ` ${className}` : ''}`}>\n\t\t\t{!isComplete ? (\n\t\t\t\tgetQuestion()\n\t\t\t) : (\n\t\t\t\t<div className=\"survey__complete\">\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<svg className=\"checkmark\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\n\t\t\t\t\t\t\t<circle className=\"checkmark__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\n\t\t\t\t\t\t\t<path className=\"checkmark__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"thanks\">{isNewQuestion ? resources.thanks : resources.AlreadyParticipated}</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default SurveyContent;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useLocalization } from '../../../localization';\n\nconst SurveyIncompleteFooter = ({\n\tisAnonymous,\n\tisAnswered,\n\tisLastQuestion,\n\tisLoading,\n\tonSubmit,\n\tstep,\n\ttotalQuestionsCount,\n}) => {\n\tconst resources = useLocalization('CommerceWeb.Resources.Surveys.Surveys');\n\treturn (\n\t\t<div className=\"survey__footer\">\n\t\t\t<div className=\"survey__footer--steps\">\n\t\t\t\t{!isAnonymous &&\n\t\t\t\t\t(!isLastQuestion || !isAnswered) &&\n\t\t\t\t\t`${resources.step} ${step} ${resources.of} ${totalQuestionsCount}`}\n\t\t\t</div>\n\n\t\t\t{onSubmit &&\n\t\t\t\t(isAnswered || isAnonymous ? (\n\t\t\t\t\t<button\n\t\t\t\t\t\tdata-testid=\"survey-next-button\"\n\t\t\t\t\t\tclassName=\"survey__footer--next btn btn-secondary\"\n\t\t\t\t\t\tdisabled={isLoading}\n\t\t\t\t\t\tonClick={() => onSubmit('submit')}\n\t\t\t\t\t>\n\t\t\t\t\t\t{isLastQuestion && !isAnonymous && <span>{resources.finish}</span>}\n\t\t\t\t\t\t{(!isLastQuestion || isAnonymous) && <span>{resources.next}</span>}\n\t\t\t\t\t</button>\n\t\t\t\t) : (\n\t\t\t\t\t<button\n\t\t\t\t\t\tdata-testid=\"survey-skip-button\"\n\t\t\t\t\t\tclassName=\"survey__footer--skip btn btn-secondary-inverted\"\n\t\t\t\t\t\tdisabled={isLoading}\n\t\t\t\t\t\tonClick={() => onSubmit('skip')}\n\t\t\t\t\t>\n\t\t\t\t\t\t{resources.skip}\n\t\t\t\t\t</button>\n\t\t\t\t))}\n\t\t</div>\n\t);\n};\n\nSurveyIncompleteFooter.proptypes = {\n\tisAnonymous: PropTypes.bool.isRequired,\n\tisAnswered: PropTypes.bool.isRequired,\n\tisLastQuestion: PropTypes.bool.isRequired,\n\tisLoading: PropTypes.bool.isRequired,\n\tonSubmit: PropTypes.func.isRequired,\n\tstep: PropTypes.number.isRequired,\n\ttotalQuestionsCount: PropTypes.number.isRequired,\n};\n\nexport default SurveyIncompleteFooter;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useLocalization } from '../../../localization';\nimport { displayModePropType } from './survey-prop-type';\n\nconst SurveyCompleteFooter = ({\n\taccountEditUrl,\n\talternateSurveyId,\n\tdisplayMode,\n\trecipientToken,\n\tonFetchAlternateSurvey,\n\tonModalClose,\n\treturnUrl,\n}) => {\n\tconst resources = useLocalization('CommerceWeb.Resources.Surveys.Surveys');\n\treturn (\n\t\t<div className=\"survey__complete-footer\">\n\t\t\t{displayMode === 'modal' ? (\n\t\t\t\t<button className=\"done\" onClick={onModalClose}>\n\t\t\t\t\t{resources.done}\n\t\t\t\t</button>\n\t\t\t) : (\n\t\t\t\tdisplayMode === 'page' && (\n\t\t\t\t\t<a href={returnUrl} rel=\"nofollow\" className=\"done\">\n\t\t\t\t\t\t{resources.done}\n\t\t\t\t\t</a>\n\t\t\t\t)\n\t\t\t)}\n\t\t\t{alternateSurveyId && onFetchAlternateSurvey ? (\n\t\t\t\t<button\n\t\t\t\t\tdata-testid=\"survey-complete-button\"\n\t\t\t\t\tclassName=\"continue\"\n\t\t\t\t\tonClick={() => onFetchAlternateSurvey(alternateSurveyId, returnUrl, recipientToken)}\n\t\t\t\t>\n\t\t\t\t\t{resources.continueBuilding}\n\t\t\t\t</button>\n\t\t\t) : (\n\t\t\t\t// eslint-disable-next-line react/jsx-no-target-blank\n\t\t\t\t<a href={accountEditUrl} rel=\"noopener\" className=\"continue\">\n\t\t\t\t\t{resources.continueBuilding}\n\t\t\t\t</a>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nSurveyCompleteFooter.proptypes = {\n\taccountEditUrl: PropTypes.string.isRequired,\n\talternateSurveyId: PropTypes.string,\n\tdisplayMode: displayModePropType,\n\tonFetchAlternateSurvey: PropTypes.func,\n\tonModalClose: PropTypes.func.isRequired,\n\trecipientToken: PropTypes.string,\n\treturnUrl: PropTypes.string.isRequired,\n};\n\nexport default SurveyCompleteFooter;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { useLocalization } from '../../../localization';\nimport { notifyError } from '../../notifications';\nimport { getSurveyWithEmailAddress, submitAnswer } from '../../../clients/survey-client';\nimport { autoFillOptionPropType, optionPropType, displayModePropType } from './survey-prop-type';\nimport SurveyIncompleteFooter from './survey-incomplete-footer';\nimport SurveyCompleteFooter from './survey-complete-footer';\n\nconst SurveyFooter = ({\n\taccountEditUrl,\n\tansweredQuestions,\n\talternateSurveyId,\n\tautoFillOption,\n\tclassName,\n\tcurrentQuestion,\n\tdisplayMode,\n\terrorMessage,\n\tisAnonymous,\n\tisComplete,\n\tisLastQuestion,\n\tmaxCommentLength,\n\tonFetchAlternateSurvey,\n\tonModalClose,\n\tonUpdateAllQuestions,\n\tonUpdateSurveyOwner,\n\tonUpdateSurveyProgress,\n\tonUpdateSurveyStatus,\n\trecipientToken,\n\treturnUrl,\n\tshowAll,\n\tstep,\n\tsubmitUrl,\n\tsurveysBaseUrl,\n\tsurveyId,\n\ttotalQuestionsCount,\n\tuserSurveyId,\n}) => {\n\tconst resources = useLocalization('CommerceWeb.Resources.Surveys.Surveys');\n\tconst [isLoading, setIsLoading] = useState(false);\n\tconst isAnswered = answeredQuestions && answeredQuestions.length > 0;\n\n\tconst submitAnonymous = async (surveyId, emailAddress) => {\n\t\tonUpdateSurveyOwner(emailAddress);\n\n\t\tif (!errorMessage) {\n\t\t\tconst surveysUrl = `${surveysBaseUrl}/${surveyId}`;\n\t\t\treturn await getSurveyWithEmailAddress(surveysUrl, emailAddress);\n\t\t}\n\t};\n\n\tconst submit = async surveyResponse => {\n\t\treturn await submitAnswer(submitUrl, surveyResponse);\n\t};\n\n\tconst handleSubmit = async submitButton => {\n\t\tsetIsLoading(true);\n\t\tlet questionResponses = answeredQuestions.map(answeredQuestion => {\n\t\t\tconst questionResponse = {\n\t\t\t\toptionResponses: answeredQuestion.options.map(option => {\n\t\t\t\t\tconst optionResponse = {\n\t\t\t\t\t\toptionId: option.optionId,\n\t\t\t\t\t\toptionText: option.optionText,\n\t\t\t\t\t\tisSelected: autoFillOption && option.optionId === autoFillOption.optionId ? true : option.isSelected,\n\t\t\t\t\t\tcomment:\n\t\t\t\t\t\t\tautoFillOption && option.optionId === autoFillOption.optionId ? autoFillOption.comment : option.comment,\n\t\t\t\t\t};\n\t\t\t\t\treturn optionResponse;\n\t\t\t\t}),\n\t\t\t\tquestionId: answeredQuestion.questionId,\n\t\t\t};\n\t\t\treturn questionResponse;\n\t\t});\n\n\t\tif (!questionResponses || !questionResponses.length > 0) {\n\t\t\tconst options = currentQuestion.options.map(option => {\n\t\t\t\tconst optionResponse = {\n\t\t\t\t\toptionId: option.optionId,\n\t\t\t\t\toptionText: option.optionText,\n\t\t\t\t\tisSelected: false,\n\t\t\t\t\tcomment: null,\n\t\t\t\t};\n\t\t\t\treturn optionResponse;\n\t\t\t});\n\n\t\t\tquestionResponses = [{ options, questionId: currentQuestion.questionId }];\n\t\t}\n\n\t\ttry {\n\t\t\tconst survey = isAnonymous\n\t\t\t\t? await submitAnonymous(surveyId, questionResponses[0].optionResponses[0].comment)\n\t\t\t\t: await submit({\n\t\t\t\t\t\tsurveyId,\n\t\t\t\t\t\tuserSurveyId,\n\t\t\t\t\t\tsubmitButton,\n\t\t\t\t\t\tquestionResponses,\n\t\t\t\t\t\treturnUrl,\n\t\t\t\t\t\trecipientToken,\n\t\t\t\t\t\tfetchAlternateSurveyOnCompletion: true,\n\t\t\t\t\t\tdisplayMode: displayMode,\n\t\t\t\t\t\tshowAll: showAll,\n\t\t\t\t\t\tmaxCommentLength: maxCommentLength,\n\t\t\t\t\t});\n\n\t\t\tif (!survey) {\n\t\t\t\tsetIsLoading(false);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (survey.isComplete) {\n\t\t\t\tonUpdateSurveyStatus({ isComplete: true, isAnonymous: false });\n\t\t\t\tonUpdateSurveyProgress(\n\t\t\t\t\tsurvey.alternateSurveyId,\n\t\t\t\t\tsurvey.progress,\n\t\t\t\t\tsurvey.routes.ReturnUrl,\n\t\t\t\t\tsurvey.recipientToken,\n\t\t\t\t\tsurvey.emailAddress\n\t\t\t\t);\n\n\t\t\t\tsetIsLoading(false);\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tonUpdateAllQuestions(survey.allQuestions);\n\n\t\t\t\tonUpdateSurveyStatus({\n\t\t\t\t\tisAnonymous: false,\n\t\t\t\t\tisAnswered: false,\n\t\t\t\t\tisComplete: survey.progress.remainingQuestionsCount === 0,\n\t\t\t\t\tisLastQuestion: survey.progress.remainingQuestionsCount === 1,\n\t\t\t\t});\n\n\t\t\t\tonUpdateSurveyProgress(\n\t\t\t\t\tnull,\n\t\t\t\t\tsurvey.progress,\n\t\t\t\t\tsurvey.routes.ReturnUrl,\n\t\t\t\t\tsurvey.recipientToken,\n\t\t\t\t\tsurvey.emailAddress\n\t\t\t\t);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tnotifyError(resources.submitError);\n\t\t}\n\t\tsetIsLoading(false);\n\t};\n\n\treturn (\n\t\t<div className={className}>\n\t\t\t{!isComplete ? (\n\t\t\t\t<SurveyIncompleteFooter\n\t\t\t\t\tisAnonymous={isAnonymous}\n\t\t\t\t\tisAnswered={isAnswered}\n\t\t\t\t\tisLastQuestion={isLastQuestion}\n\t\t\t\t\tisLoading={isLoading}\n\t\t\t\t\tonSubmit={handleSubmit}\n\t\t\t\t\tstep={step}\n\t\t\t\t\ttotalQuestionsCount={totalQuestionsCount}\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<SurveyCompleteFooter\n\t\t\t\t\taccountEditUrl={accountEditUrl}\n\t\t\t\t\talternateSurveyId={alternateSurveyId}\n\t\t\t\t\tdisplayMode={displayMode}\n\t\t\t\t\trecipientToken={recipientToken}\n\t\t\t\t\tonFetchAlternateSurvey={onFetchAlternateSurvey}\n\t\t\t\t\tonModalClose={onModalClose}\n\t\t\t\t\treturnUrl={returnUrl}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nSurveyFooter.proptypes = {\n\taccountEditUrl: PropTypes.string.isRequired,\n\talternateSurveyId: PropTypes.string,\n\t...autoFillOptionPropType,\n\tclassName: PropTypes.string,\n\tdisplayMode: displayModePropType,\n\tisAnonymous: PropTypes.bool.isRequired,\n\tisAnswered: PropTypes.bool.isRequired,\n\tisComplete: PropTypes.bool.isRequired,\n\tisLastQuestion: PropTypes.bool.isRequired,\n\tonFetchAlternateSurvey: PropTypes.func,\n\tonModalClose: PropTypes.func.isRequired,\n\tonUpdateSurveyProgress: PropTypes.func.isRequired,\n\tonUpdateSurveyStatus: PropTypes.func.isRequired,\n\tonUpdateAllQuestions: PropTypes.func.isRequired,\n\toptions: PropTypes.arrayOf(\n\t\tPropTypes.shape({\n\t\t\t...optionPropType,\n\t\t\tisSelected: PropTypes.bool.isRequired,\n\t\t\tcomment: PropTypes.string.isRequired,\n\t\t})\n\t).isRequired,\n\tquestionId: PropTypes.number.isRequired,\n\trecipientToken: PropTypes.string,\n\treturnUrl: PropTypes.string.isRequired,\n\tstep: PropTypes.number.isRequired,\n\tsubmitUrl: PropTypes.string.isRequired,\n\tsurveyId: PropTypes.number.isRequired,\n\ttotalQuestionsCount: PropTypes.number.isRequired,\n\tuserSurveyId: PropTypes.number,\n};\n\nexport default SurveyFooter;\n","import PropTypes from 'prop-types';\n\nconst questionDisplayTypes = [\n\t'unknown',\n\t'oneAnswerVertical',\n\t'oneAnswerHorizontal',\n\t'multipleAnswersVertical',\n\t'multipleAnswersHorizontal',\n\t'openEndedSingleLines',\n\t'openEndedEssay',\n];\n\nconst optionPropType = {\n\toptionId: PropTypes.number,\n\tisCommentVisible: PropTypes.bool.isRequired,\n\ttext: PropTypes.string,\n\tisVisible: PropTypes.bool.isRequired,\n};\n\nconst autoFillOptionPropType = {\n\toptionId: PropTypes.number.isRequired,\n\tcomment: PropTypes.string.isRequired,\n};\n\nconst displayModePropType = PropTypes.oneOf(['page', 'modal', 'drop']).isRequired;\n\nconst surveyPropType = {\n\tsurveyId: PropTypes.number.isRequired,\n\tuserSurveyId: PropTypes.number,\n\tsurveyTitle: PropTypes.string.isRequired,\n\tsurveySubtitle: PropTypes.string,\n\taccountEditUrl: PropTypes.string.isRequired,\n\tprogress: PropTypes.shape({\n\t\tremainingQuestionsCount: PropTypes.number.isRequired,\n\t\ttotalQuestionsCount: PropTypes.number.isRequired,\n\t}),\n\talternateSurveyId: PropTypes.number,\n\tmaxCommentLength: PropTypes.number.isRequired,\n\tquestionViewModel: PropTypes.shape({\n\t\tquestionId: PropTypes.number,\n\t\tsurveyId: PropTypes.number.isRequired,\n\t\tuserSurveyId: PropTypes.number,\n\t\ttext: PropTypes.string.isRequired,\n\t\tquestionDisplayType: PropTypes.oneOf(questionDisplayTypes),\n\t\toptions: PropTypes.arrayOf(\n\t\t\tPropTypes.shape({\n\t\t\t\t...optionPropType,\n\t\t\t})\n\t\t).isRequired,\n\t}),\n\tautoFillOption: PropTypes.shape({\n\t\t...autoFillOptionPropType,\n\t}),\n\tdisplayMode: displayModePropType,\n\temailAddress: PropTypes.string,\n\tisAnonymous: PropTypes.bool.isRequired,\n\trecipientToken: PropTypes.string,\n\troutes: PropTypes.shape({\n\t\tReturnUrl: PropTypes.string.isRequired,\n\t\tSubmitUrl: PropTypes.string.isRequired,\n\t\tSurveysBaseUrl: PropTypes.string.isRequired,\n\t}),\n};\n\nexport { autoFillOptionPropType, optionPropType, surveyPropType, displayModePropType };\n","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgClosecomponent = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n  width: 12,\n  height: 12,\n  viewBox: \"0 0 12 12\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n  stroke: \"var(--gray-4, #c7c7c7)\",\n  strokeWidth: 2,\n  strokeLinecap: \"round\",\n  fill: \"none\",\n  fillRule: \"evenodd\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n  d: \"M11 1 1 11M1 1l10 10M11 1 1 11M1 1l10 10\"\n}))));\nexport default SvgClosecomponent;","// extracted by mini-css-extract-plugin\nexport default {\"button\":\"index--button--b8qGV\"};","import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { Popover } from '@faithlife/styled-ui';\nimport { useDebouncedCallback } from '@faithlife/react-ui';\n\nimport { CommerceWebThemeProvider } from '../../../util/theme';\n\nimport styles from './index.less';\n\nconst mouseEnterDelay = 500;\nconst mouseLeaveDelay = 250;\n\n/* Until this file is converted to TypeScript, to prevent errors in TypeScript consumers */\n/**\n * @typedef {object} TooltipProps\n * @property {string} [ariaLabel]\n * @property {string} [buttonClassName]\n * @property {import('react').ReactNode} [children]\n * @property {string} [className]\n * @property {object} [contentStyles]\n * @property {import('react').ReactNode} [link]\n * @property {() => void} [onOpen]\n * @property {'auto' | 'auto-start' | 'auto-end' | 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'right' | 'right-start' | 'right-end' | 'left' | 'left-start' | 'left-end'} [placement]\n * @property {boolean} [hideArrow]\n * @property {HTMLElement} [container]\n */\n\n/** @param {TooltipProps} props */\nconst Tooltip = ({\n\tariaLabel,\n\tbuttonClassName,\n\tchildren,\n\tclassName,\n\tcontentStyles,\n\tlink,\n\tonOpen,\n\tplacement = 'top',\n\thideArrow = false,\n\tcontainer,\n}) => {\n\tconst [isPopoverOpen, setIsPopoverOpen] = useState(false);\n\tconst linkRef = useRef();\n\n\tconst debouncedSetIsClosed = useDebouncedCallback(() => {\n\t\tsetIsPopoverOpen(false);\n\t}, mouseLeaveDelay);\n\n\tconst debouncedSetIsOpen = useDebouncedCallback(() => {\n\t\tsetIsPopoverOpen(true);\n\t}, mouseEnterDelay);\n\n\tconst handleMouseEnter = useCallback(async () => {\n\t\tdebouncedSetIsClosed.cancel();\n\t\tdebouncedSetIsOpen();\n\t}, [debouncedSetIsClosed, debouncedSetIsOpen]);\n\n\tconst handleMouseLeave = useCallback(() => {\n\t\tdebouncedSetIsOpen.cancel();\n\t\tdebouncedSetIsClosed();\n\t}, [debouncedSetIsOpen, debouncedSetIsClosed]);\n\n\tconst handleMouseEnterContent = useCallback(() => {\n\t\tdebouncedSetIsClosed.cancel();\n\t}, [debouncedSetIsClosed]);\n\n\tconst handleClick = useCallback(() => {\n\t\tdebouncedSetIsOpen.cancel();\n\t\tdebouncedSetIsClosed.cancel();\n\n\t\tsetIsPopoverOpen(isOpen => !isOpen);\n\t}, [debouncedSetIsClosed, debouncedSetIsOpen]);\n\n\tuseEffect(() => {\n\t\tif (isPopoverOpen && onOpen) {\n\t\t\tonOpen();\n\t\t}\n\t}, [isPopoverOpen, onOpen]);\n\n\treturn (\n\t\t<CommerceWebThemeProvider>\n\t\t\t<div className={className || ''}>\n\t\t\t\t<button\n\t\t\t\t\tclassName={`${styles.button} ${buttonClassName || ''}`}\n\t\t\t\t\tref={linkRef}\n\t\t\t\t\taria-label={ariaLabel}\n\t\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t\tonClick={handleClick}\n\t\t\t\t>\n\t\t\t\t\t{link}\n\t\t\t\t</button>\n\n\t\t\t\t{isPopoverOpen && (\n\t\t\t\t\t<Popover\n\t\t\t\t\t\treference={linkRef.current}\n\t\t\t\t\t\tcontainer={container}\n\t\t\t\t\t\tplacement={placement}\n\t\t\t\t\t\tonMouseEnter={handleMouseEnterContent}\n\t\t\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t\t\tmaxWidth={'calc(100vw - 24px)'}\n\t\t\t\t\t\tmodifiers={[\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'preventOverflow',\n\t\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\t\tpadding: 12,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t]}\n\t\t\t\t\t\t{...contentStyles}\n\t\t\t\t\t\thideArrow={hideArrow}\n\t\t\t\t\t>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</Popover>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</CommerceWebThemeProvider>\n\t);\n};\n\nexport default Tooltip;\n","export const PickListMode = 'pick-list';\nexport const CreateListMode = 'create-list';\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Radio, Input } from '@faithlife/styled-ui';\nimport { useLocalization } from '../../../localization';\nimport { PickListMode, CreateListMode } from './add-form-modes';\n\nimport styles from './add-form-inputs.less';\n\nconst AddFormInputs = ({ mode, inputs }) => {\n\tconst isPickingList = mode === PickListMode;\n\tconst isCreatingNewList = mode === CreateListMode;\n\n\treturn (\n\t\t<>\n\t\t\t{isPickingList && <PickListFormInputs {...inputs} />}\n\t\t\t{isCreatingNewList && <CreateNewListFormInputs {...inputs} />}\n\t\t</>\n\t);\n};\nAddFormInputs.propTypes = {\n\tmode: PropTypes.string.isRequired,\n\tinputs: PropTypes.object.isRequired,\n};\n\nconst PickListFormInputs = ({\n\tisDisabled,\n\tselectedListId,\n\twishListsProductMembershipRecords,\n\tonSelectCreatingNewWishList,\n\tonSelectWishList,\n}) => {\n\tconst resources = useLocalization('CommerceWeb.Resources.WishLists.WishLists');\n\n\treturn (\n\t\t<>\n\t\t\t<ul className={styles.wishListOptions}>\n\t\t\t\t{wishListsProductMembershipRecords.map(wl => (\n\t\t\t\t\t<li\n\t\t\t\t\t\tkey={wl.id}\n\t\t\t\t\t\tclassName={styles.wishListOption}\n\t\t\t\t\t\ttitle={wl.isProductInWishList ? resources.AlreadyInWishList : undefined}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Radio\n\t\t\t\t\t\t\tonClick={() => onSelectWishList(wl.id)}\n\t\t\t\t\t\t\tisChecked={wl.id === selectedListId}\n\t\t\t\t\t\t\ttitle={wl.name}\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tdisabled={isDisabled || wl.isProductInWishList}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</li>\n\t\t\t\t))}\n\t\t\t</ul>\n\t\t\t<div className={styles.createListButtonContainer}>\n\t\t\t\t<button className={styles.createListButton} onClick={onSelectCreatingNewWishList}>\n\t\t\t\t\t{resources.GoToCreateNewWishListLabel} <span className={styles.chevronRight}></span>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t</>\n\t);\n};\nPickListFormInputs.propTypes = {\n\tisDisabled: PropTypes.bool.isRequired,\n\tselectedListId: PropTypes.string,\n\twishListsProductMembershipRecords: PropTypes.arrayOf(\n\t\tPropTypes.shape({\n\t\t\tid: PropTypes.string.isRequired,\n\t\t\tisProductInWishList: PropTypes.bool.isRequired,\n\t\t\tname: PropTypes.string.isRequired,\n\t\t\troutes: PropTypes.shape({\n\t\t\t\tAddProductToWishListUrl: PropTypes.string.isRequired,\n\t\t\t}).isRequired,\n\t\t})\n\t),\n\tonSelectCreatingNewWishList: PropTypes.func.isRequired,\n\tonSelectWishList: PropTypes.func.isRequired,\n};\n\nconst CreateNewListFormInputs = ({ isDisabled, newListName, onChangeNewListName }) => {\n\tconst resources = useLocalization('CommerceWeb.Resources.WishLists.WishLists');\n\tconst handleInputChange = event => {\n\t\tonChangeNewListName(event.target.value);\n\t};\n\n\treturn (\n\t\t<label className={styles.newListLabel}>\n\t\t\t{resources.createWishListHeader}\n\t\t\t<br />\n\t\t\t<Input\n\t\t\t\tclassName={styles.newListInput}\n\t\t\t\tvalue={newListName}\n\t\t\t\tonChange={handleInputChange}\n\t\t\t\tplaceholder={resources.CreateWishListInputPlaceholder}\n\t\t\t\tdisabled={isDisabled}\n\t\t\t/>\n\t\t</label>\n\t);\n};\nCreateNewListFormInputs.propTypes = {\n\tisDisabled: PropTypes.bool.isRequired,\n\tnewListName: PropTypes.string,\n\tonChangeNewListName: PropTypes.func.isRequired,\n};\n\nexport default AddFormInputs;\n","// extracted by mini-css-extract-plugin\nexport default {\"wishListOptions\":\"add-form-inputs--wishListOptions--57KOM\",\"wishListOption\":\"add-form-inputs--wishListOption--ZOWvb\",\"createListButtonContainer\":\"add-form-inputs--createListButtonContainer--PbY1J\",\"createListButton\":\"add-form-inputs--createListButton--57Wi8\",\"chevronRight\":\"add-form-inputs--chevronRight---adwC sprite-global sprite-global-Chevron_Right\",\"newListLabel\":\"add-form-inputs--newListLabel--YJqqU\",\"newListInput\":\"add-form-inputs--newListInput--qtsOs\"};","// extracted by mini-css-extract-plugin\nexport default {\"content\":\"add-drawer--content--v-TNK\",\"title\":\"add-drawer--title--sE5Xi h3\",\"closeButton\":\"add-drawer--closeButton--7+uVT\",\"footerbuttonsContainer\":\"add-drawer--footerbuttonsContainer--5YL8F\",\"footerbutton\":\"add-drawer--footerbutton--e+edx\"};","import React from 'react';\nimport { Button } from '@faithlife/styled-ui';\nimport { X } from '@faithlife/styled-ui/icons/18px';\nimport PropTypes from 'prop-types';\nimport Drawer from '../shared/drawer';\nimport AddFormInputs from './forms/add-form-inputs';\n\nimport styles from './add-drawer.less';\n\nconst AddDrawer = ({ idSuffix, isOpen, hasTargetProduct, activeForm, onClose }) => (\n\t<Drawer\n\t\tid={`wish-list-drawer-${idSuffix}`}\n\t\tplacement=\"bottom\"\n\t\tisOpen={isOpen}\n\t\tsize={null}\n\t\tzIndex={5000}\n\t\tonClose={onClose}\n\t>\n\t\t{hasTargetProduct && <AddForm {...activeForm} onClose={onClose} />}\n\t</Drawer>\n);\nAddDrawer.propTypes = {\n\tidSuffix: PropTypes.string.isRequired,\n\tisOpen: PropTypes.bool.isRequired,\n\thasTargetProduct: PropTypes.bool.isRequired,\n\tactiveForm: PropTypes.object.isRequired,\n\tonClose: PropTypes.func.isRequired,\n};\n\nconst AddForm = ({\n\tmode,\n\ttitle,\n\tinputs,\n\tisConfirmButtonDisabled,\n\tconfirmButtonLabel,\n\tisCancelButtonDisabled,\n\tcancelButtonLabel,\n\tonSubmit,\n\tonCancel,\n\tonClose,\n}) => (\n\t<div className={styles.content}>\n\t\t<div className={styles.title}>{title}</div>\n\t\t<button className={styles.closeButton} onClick={onClose}>\n\t\t\t<X />\n\t\t</button>\n\t\t<form onSubmit={onSubmit}>\n\t\t\t<AddFormInputs mode={mode} inputs={inputs} />\n\t\t\t<div className={styles.footerbuttonsContainer}>\n\t\t\t\t<Button\n\t\t\t\t\tclassName={styles.footerbutton}\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tdisabled={isCancelButtonDisabled}\n\t\t\t\t\tonClick={onCancel}\n\t\t\t\t>\n\t\t\t\t\t{cancelButtonLabel}\n\t\t\t\t</Button>\n\t\t\t\t<Button\n\t\t\t\t\tclassName={styles.footerbutton}\n\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tdisabled={isConfirmButtonDisabled}\n\t\t\t\t>\n\t\t\t\t\t{confirmButtonLabel}\n\t\t\t\t</Button>\n\t\t\t</div>\n\t\t</form>\n\t</div>\n);\nAddForm.propTypes = {\n\tmode: PropTypes.string.isRequired,\n\ttitle: PropTypes.string.isRequired,\n\tinputs: PropTypes.object.isRequired,\n\tisConfirmButtonDisabled: PropTypes.bool.isRequired,\n\tconfirmButtonLabel: PropTypes.string.isRequired,\n\tisCancelButtonDisabled: PropTypes.bool.isRequired,\n\tcancelButtonLabel: PropTypes.string.isRequired,\n\tonSubmit: PropTypes.func.isRequired,\n\tonCancel: PropTypes.func.isRequired,\n\tonClose: PropTypes.func.isRequired,\n};\n\nexport default AddDrawer;\n","import { useCallback, useState } from 'react';\nimport { addProductToWishlist, createWishList } from '../../../clients/wishlist-client';\nimport { useLocalization } from '../../../localization';\nimport { publishNewWishListCreated, publishProductAddedToWishList } from '../events';\n\nconst useWishListFormHandler = (productId, createAndAddToNewWishListUrl) => {\n\tconst resources = useLocalization('CommerceWeb.Resources.WishLists.WishLists');\n\tconst [isLoading, setIsLoading] = useState(false);\n\n\tconst handleAddToWishList = useCallback(\n\t\tasync wishListProductMembershipRecord => {\n\t\t\tif (wishListProductMembershipRecord) {\n\t\t\t\tconst name = wishListProductMembershipRecord.name;\n\t\t\t\tsetIsLoading(true);\n\t\t\t\ttry {\n\t\t\t\t\tawait addProductToWishlist(wishListProductMembershipRecord.routes.AddProductToWishListUrl);\n\t\t\t\t} catch (error) {\n\t\t\t\t\twindow.NotificationUtility.notifyInfo(`${resources.UpdateFailureNotification} ${name}`);\n\t\t\t\t\tthrow error;\n\t\t\t\t} finally {\n\t\t\t\t\tsetIsLoading(false);\n\t\t\t\t}\n\n\t\t\t\twindow.NotificationUtility.notifyInfo(`${resources.AddedToNotification} ${name}`);\n\n\t\t\t\tpublishProductAddedToWishList(productId, wishListProductMembershipRecord.id);\n\t\t\t}\n\t\t},\n\t\t[productId, resources.AddedToNotification, resources.UpdateFailureNotification]\n\t);\n\n\tconst handleCreateAndAddToNewWishList = useCallback(\n\t\tasync newListName => {\n\t\t\tconst processedListName = (newListName ?? '')?.trim();\n\n\t\t\tif (processedListName !== '') {\n\t\t\t\tsetIsLoading(true);\n\n\t\t\t\tlet data;\n\t\t\t\ttry {\n\t\t\t\t\tdata = await createWishList(createAndAddToNewWishListUrl, newListName, productId);\n\t\t\t\t} catch (error) {\n\t\t\t\t\twindow.NotificationUtility.notifyInfo(`${resources.CreateFailureNotification}`);\n\t\t\t\t\tthrow error;\n\t\t\t\t} finally {\n\t\t\t\t\tsetIsLoading(false);\n\t\t\t\t}\n\n\t\t\t\tconst { wishList: createdWishList, baseAddProductToWishListUrl } = data;\n\n\t\t\t\twindow.NotificationUtility.notifyInfo(`${resources.AddedToNotification} ${createdWishList.name}`);\n\n\t\t\t\tpublishNewWishListCreated(createdWishList, baseAddProductToWishListUrl, productId);\n\t\t\t\tpublishProductAddedToWishList(productId, createdWishList.id);\n\n\t\t\t\treturn createdWishList;\n\t\t\t}\n\t\t},\n\t\t[createAndAddToNewWishListUrl, productId, resources.AddedToNotification, resources.CreateFailureNotification]\n\t);\n\n\treturn { isLoading, handleAddToWishList, handleCreateAndAddToNewWishList };\n};\n\nexport default useWishListFormHandler;\n","import { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useLocalization } from '../../../localization';\nimport { PickListMode, CreateListMode } from '../forms/add-form-modes';\nimport { WishListProductMembershipRecord } from '../hooks';\n\nconst findInitialSelectedListId = (wishListsProductMembershipRecords: WishListProductMembershipRecord[]) => {\n\tconst initialSelectedList = wishListsProductMembershipRecords.find(wl => !wl.isProductInWishList);\n\treturn initialSelectedList?.id;\n};\n\nconst useWishListForm = (\n\tproductId: string,\n\tisDisabled: boolean,\n\twishListsProductMembershipRecords: WishListProductMembershipRecord[],\n\tonAddToWishList: (selectedList: WishListProductMembershipRecord) => Promise<void>,\n\tonCreateNewWishList: (newListName: string) => Promise<void>,\n\tonClose?: () => void\n) => {\n\tconst resources = useLocalization('CommerceWeb.Resources.WishLists.WishLists');\n\tconst [state, setState] = useState<{\n\t\tmode: typeof PickListMode | typeof CreateListMode;\n\t\tselectedListId: string | null;\n\t\tpreviouslySelectedId: string | null;\n\t\tnewListName: string;\n\t}>(() => {\n\t\treturn {\n\t\t\tmode: PickListMode as typeof PickListMode | typeof CreateListMode,\n\t\t\tselectedListId: findInitialSelectedListId(wishListsProductMembershipRecords) ?? null,\n\t\t\tpreviouslySelectedId: null,\n\t\t\tnewListName: '',\n\t\t};\n\t});\n\tconst { mode, selectedListId, previouslySelectedId, newListName } = state;\n\n\tconst handleSelectWishList = (newId: string) => {\n\t\tsetState(previous => ({\n\t\t\t...previous,\n\t\t\tselectedListId: newId,\n\t\t}));\n\t};\n\n\tconst handleChangeMode = (\n\t\tnewMode: typeof PickListMode | typeof CreateListMode,\n\t\tadditionalData: Partial<{ selectedListId: string | null; previouslySelectedId: string | null; newListName: string }>\n\t) => {\n\t\treturn setState(oldState => ({\n\t\t\t...oldState,\n\t\t\tmode: newMode,\n\t\t\t...additionalData,\n\t\t}));\n\t};\n\n\t// everytime the product membership changes, make sure we aren't selected on a already added wish list\n\tuseEffect(() => {\n\t\tif (mode === PickListMode) {\n\t\t\tconst currentlySelected = wishListsProductMembershipRecords.find(wl => wl.id === selectedListId);\n\t\t\tif (!currentlySelected || currentlySelected.isProductInWishList) {\n\t\t\t\tconst newSelectedId = findInitialSelectedListId(wishListsProductMembershipRecords);\n\t\t\t\tif (newSelectedId) {\n\t\t\t\t\thandleSelectWishList(newSelectedId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}, [mode, selectedListId, wishListsProductMembershipRecords]);\n\n\tconst doClose = useCallback(() => {\n\t\tif (isDisabled) {\n\t\t\treturn;\n\t\t}\n\t\t// this timeout is to prevent the user from being able to see the change while the UI is animating away\n\t\tsetTimeout(() => {\n\t\t\thandleChangeMode(PickListMode, {\n\t\t\t\tselectedListId: findInitialSelectedListId(wishListsProductMembershipRecords) ?? null,\n\t\t\t});\n\t\t}, 300);\n\t\tonClose?.();\n\t}, [isDisabled, onClose, wishListsProductMembershipRecords]);\n\n\tconst handleClose = () => {\n\t\tdoClose();\n\t};\n\n\tconst handleCancelPickClick = useCallback(() => {\n\t\tdoClose();\n\t}, [doClose]);\n\n\tconst handleCreateNewListClick = useCallback(() => {\n\t\thandleChangeMode(CreateListMode, {\n\t\t\tselectedListId: selectedListId ?? null,\n\t\t\tpreviouslySelectedId: selectedListId ?? null,\n\t\t\tnewListName: '',\n\t\t});\n\t}, [selectedListId]);\n\n\tconst handleAddToWishListSubmit = useCallback(\n\t\tasync (event: React.FormEvent<HTMLFormElement>) => {\n\t\t\tevent.preventDefault();\n\t\t\tconst selectedList = wishListsProductMembershipRecords.find(wl => wl.id === selectedListId);\n\t\t\tif (selectedList) {\n\t\t\t\tawait onAddToWishList(selectedList);\n\t\t\t}\n\t\t\tdoClose();\n\t\t},\n\t\t[doClose, onAddToWishList, selectedListId, wishListsProductMembershipRecords]\n\t);\n\n\tconst isSelectedListIdValid = selectedListId !== null;\n\n\tconst handleChangeNewListName = (newListName: string) => {\n\t\tsetState(previous => ({\n\t\t\t...previous,\n\t\t\tnewListName,\n\t\t}));\n\t};\n\n\tconst handleCancelCreatingNewWishListClick = useCallback(() => {\n\t\thandleChangeMode(PickListMode, {\n\t\t\tselectedListId: previouslySelectedId,\n\t\t});\n\t}, [previouslySelectedId]);\n\n\tconst handleCreateNewWishListSubmit = useCallback(\n\t\tasync (event: React.FormEvent<HTMLFormElement>) => {\n\t\t\tevent.preventDefault();\n\t\t\tawait onCreateNewWishList(newListName);\n\t\t\thandleChangeMode(PickListMode, {\n\t\t\t\tselectedListId: null,\n\t\t\t});\n\t\t\tdoClose();\n\t\t},\n\t\t[doClose, newListName, onCreateNewWishList]\n\t);\n\n\tconst hasEnteredNewListName = (newListName ?? '')?.trim() !== '';\n\n\tconst forms = useMemo(\n\t\t() => ({\n\t\t\t[PickListMode]: {\n\t\t\t\tmode: PickListMode,\n\t\t\t\ttitle: resources.SelectAWishListTitle,\n\t\t\t\tinputs: {\n\t\t\t\t\tisDisabled: isDisabled,\n\t\t\t\t\tselectedListId: selectedListId,\n\t\t\t\t\twishListsProductMembershipRecords: wishListsProductMembershipRecords,\n\t\t\t\t\tonSelectCreatingNewWishList: handleCreateNewListClick,\n\t\t\t\t\tonSelectWishList: handleSelectWishList,\n\t\t\t\t},\n\t\t\t\tisConfirmButtonDisabled: isDisabled || !isSelectedListIdValid,\n\t\t\t\tconfirmButtonLabel: resources.AddToWishList,\n\t\t\t\tisCancelButtonDisabled: isDisabled,\n\t\t\t\tcancelButtonLabel: resources.cancelButtonText,\n\t\t\t\tonSubmit: handleAddToWishListSubmit,\n\t\t\t\tonCancel: handleCancelPickClick,\n\t\t\t},\n\t\t\t[CreateListMode]: {\n\t\t\t\tmode: CreateListMode,\n\t\t\t\ttitle: resources.CreateWishListTitle,\n\t\t\t\tinputs: {\n\t\t\t\t\tisDisabled: isDisabled,\n\t\t\t\t\tnewListName: newListName,\n\t\t\t\t\tonChangeNewListName: handleChangeNewListName,\n\t\t\t\t},\n\t\t\t\tisConfirmButtonDisabled: isDisabled || !hasEnteredNewListName,\n\t\t\t\tconfirmButtonLabel: resources.CreateWishListButtonText,\n\t\t\t\tisCancelButtonDisabled: isDisabled,\n\t\t\t\tcancelButtonLabel: resources.cancelButtonText,\n\t\t\t\tonSubmit: handleCreateNewWishListSubmit,\n\t\t\t\tonCancel: handleCancelCreatingNewWishListClick,\n\t\t\t},\n\t\t}),\n\t\t[\n\t\t\thandleAddToWishListSubmit,\n\t\t\thandleCancelCreatingNewWishListClick,\n\t\t\thandleCancelPickClick,\n\t\t\thandleCreateNewListClick,\n\t\t\thandleCreateNewWishListSubmit,\n\t\t\thasEnteredNewListName,\n\t\t\tisDisabled,\n\t\t\tisSelectedListIdValid,\n\t\t\tnewListName,\n\t\t\tresources,\n\t\t\tselectedListId,\n\t\t\twishListsProductMembershipRecords,\n\t\t]\n\t);\n\n\tconst hasTargetProduct = (productId ?? '') !== '';\n\n\treturn { hasTargetProduct, activeForm: forms[mode], handleClose };\n};\n\nexport default useWishListForm;\n","// extracted by mini-css-extract-plugin\nexport default {\"modalForm\":\"add-modal--modalForm--tPfrK\"};","import React from 'react';\nimport { Modal } from '@faithlife/styled-ui';\nimport PropTypes from 'prop-types';\nimport AddFormInputs from './forms/add-form-inputs';\n\nimport styles from './add-modal.less';\n\nconst AddModal = ({ isOpen, hasTargetProduct, activeForm, onClose }) => (\n\t<Modal isOpen={isOpen} container=\"body\" onClose={onClose} minWidth=\"390px\">\n\t\t{hasTargetProduct && <AddForm {...activeForm} />}\n\t</Modal>\n);\nAddModal.propTypes = {\n\tisOpen: PropTypes.bool.isRequired,\n\thasTargetProduct: PropTypes.bool.isRequired,\n\tactiveForm: PropTypes.object.isRequired,\n\tonClose: PropTypes.func.isRequired,\n};\n\nconst AddForm = ({\n\tmode,\n\ttitle,\n\tinputs,\n\tisConfirmButtonDisabled,\n\tconfirmButtonLabel,\n\tisCancelButtonDisabled,\n\tcancelButtonLabel,\n\tonSubmit,\n\tonCancel,\n}) => (\n\t<>\n\t\t<Modal.Header title={title} />\n\t\t<form className={styles.modalForm} onSubmit={onSubmit}>\n\t\t\t<Modal.Content>\n\t\t\t\t<AddFormInputs mode={mode} inputs={inputs} />\n\t\t\t</Modal.Content>\n\t\t\t<Modal.Footer>\n\t\t\t\t<Modal.FooterButtons>\n\t\t\t\t\t<Modal.FooterButton variant=\"primary\" type=\"submit\" disabled={isConfirmButtonDisabled}>\n\t\t\t\t\t\t{confirmButtonLabel}\n\t\t\t\t\t</Modal.FooterButton>\n\t\t\t\t\t<Modal.FooterButton variant=\"secondary\" type=\"button\" onClick={onCancel} disabled={isCancelButtonDisabled}>\n\t\t\t\t\t\t{cancelButtonLabel}\n\t\t\t\t\t</Modal.FooterButton>\n\t\t\t\t</Modal.FooterButtons>\n\t\t\t</Modal.Footer>\n\t\t</form>\n\t</>\n);\nAddForm.propTypes = {\n\tmode: PropTypes.string.isRequired,\n\ttitle: PropTypes.string.isRequired,\n\tinputs: PropTypes.object.isRequired,\n\tisConfirmButtonDisabled: PropTypes.bool.isRequired,\n\tconfirmButtonLabel: PropTypes.string.isRequired,\n\tisCancelButtonDisabled: PropTypes.bool.isRequired,\n\tcancelButtonLabel: PropTypes.string.isRequired,\n\tonSubmit: PropTypes.func.isRequired,\n\tonCancel: PropTypes.func.isRequired,\n};\n\nexport default AddModal;\n","import React, { createContext, useCallback, useContext, useState } from 'react';\nimport AddToWishListDrawer from '../../add-to-wish-list/add-drawer';\nimport { CommerceWebThemeProvider } from '../../../util/theme';\nimport useWishListFormHandler from '../../add-to-wish-list/hooks/use-wish-list-form-handler';\nimport useWishListForm from '../../add-to-wish-list/hooks/use-wish-list-form';\nimport useScreensize from '../../../util/hooks/use-screensize';\nimport AddToWishListModal from '../../add-to-wish-list/add-modal';\nimport { WishListProductMembershipRecord, applyProductAddedToMembershipRecords } from '../../add-to-wish-list/hooks';\nimport { useOnNewWishListCreated, useOnProductAddedToWishList } from '../../add-to-wish-list/events';\nimport { RouteContext } from '../../../route-context';\n\nexport interface SharedWishListFormContextValue {\n\topen: (productId: string, wishListsProductMembershipRecords: WishListProductMembershipRecord[]) => void;\n}\n\nexport const SharedWishListFormContext = createContext<SharedWishListFormContextValue>({\n\topen: () => void 0,\n});\n\nexport interface WishlistSettings {\n\tproductId: string;\n\twishListsProductMembershipRecords: WishListProductMembershipRecord[];\n}\n\nconst emptyWishListFormSettings: WishlistSettings = {\n\tproductId: '',\n\twishListsProductMembershipRecords: [],\n};\n\nconst mergeWishListMembershipRecords = (\n\tpreviousRecords: WishListProductMembershipRecord[],\n\tincomingRecords: WishListProductMembershipRecord[]\n): WishListProductMembershipRecord[] => {\n\tconst previousById = new Map(previousRecords.map(record => [record.id, record]));\n\tconst mergedIncoming = incomingRecords?.map(record => {\n\t\tconst previousRecord = previousById.get(record.id);\n\t\tif (!previousRecord) {\n\t\t\treturn record;\n\t\t}\n\n\t\tpreviousById.delete(record.id);\n\t\treturn {\n\t\t\t...record,\n\t\t\t...previousRecord,\n\t\t\tisProductInWishList: record.isProductInWishList || previousRecord.isProductInWishList,\n\t\t\troutes: record.routes ?? previousRecord.routes,\n\t\t};\n\t});\n\n\treturn [...mergedIncoming, ...Array.from(previousById.values())];\n};\n\nconst SharedWishListForm = ({\n\tisOpen,\n\tsettings,\n\tonClose,\n}: {\n\tisOpen: boolean;\n\tsettings: WishlistSettings;\n\tonClose: () => void;\n}) => {\n\tconst { productId, wishListsProductMembershipRecords } = settings;\n\tconst { routes } = useContext(RouteContext);\n\n\tconst { isDesktop } = useScreensize();\n\tconst showAddModal = isOpen && isDesktop;\n\tconst showAddDrawer = isOpen && !isDesktop;\n\n\tconst {\n\t\tisLoading: isDisabled,\n\t\thandleAddToWishList,\n\t\thandleCreateAndAddToNewWishList,\n\t} = useWishListFormHandler(productId, routes.CreateAndAddToNewWishListUrl);\n\n\tconst { hasTargetProduct, activeForm, handleClose } = useWishListForm(\n\t\tproductId,\n\t\tisDisabled,\n\t\twishListsProductMembershipRecords,\n\t\thandleAddToWishList,\n\t\thandleCreateAndAddToNewWishList,\n\t\tonClose\n\t);\n\n\treturn (\n\t\t<CommerceWebThemeProvider>\n\t\t\t<AddToWishListDrawer\n\t\t\t\tidSuffix=\"shared\"\n\t\t\t\tisOpen={showAddDrawer}\n\t\t\t\thasTargetProduct={hasTargetProduct}\n\t\t\t\tactiveForm={activeForm}\n\t\t\t\tonClose={handleClose}\n\t\t\t/>\n\t\t\t<AddToWishListModal\n\t\t\t\tisOpen={showAddModal}\n\t\t\t\thasTargetProduct={hasTargetProduct}\n\t\t\t\tactiveForm={activeForm}\n\t\t\t\tonClose={handleClose}\n\t\t\t/>\n\t\t</CommerceWebThemeProvider>\n\t);\n};\n\nconst SharedWishListFormProvider = ({ children }: { children: React.ReactNode }) => {\n\tconst [isOpen, setIsOpen] = useState(false);\n\tconst [settings, setSettings] = useState(emptyWishListFormSettings);\n\tconst [isInitialized, setIsInitialized] = useState(false);\n\n\tconst handleOpen = useCallback(\n\t\t(productId: string, wishListsProductMembershipRecords: WishListProductMembershipRecord[]) => {\n\t\t\tsetSettings(previousSettings => {\n\t\t\t\tconst previousRecordsForProduct =\n\t\t\t\t\tpreviousSettings.productId === productId ? previousSettings.wishListsProductMembershipRecords : [];\n\t\t\t\treturn {\n\t\t\t\t\tproductId,\n\t\t\t\t\twishListsProductMembershipRecords: mergeWishListMembershipRecords(\n\t\t\t\t\t\tpreviousRecordsForProduct,\n\t\t\t\t\t\twishListsProductMembershipRecords ?? []\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t});\n\t\t\tsetIsInitialized(true);\n\t\t\tsetIsOpen(true);\n\t\t},\n\t\t[]\n\t);\n\n\tuseOnProductAddedToWishList((productId: string, wishListId: string) => {\n\t\tsetSettings(previousSettings => {\n\t\t\tif (previousSettings.productId !== productId) {\n\t\t\t\treturn previousSettings;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...previousSettings,\n\t\t\t\twishListsProductMembershipRecords: applyProductAddedToMembershipRecords(\n\t\t\t\t\tpreviousSettings.wishListsProductMembershipRecords,\n\t\t\t\t\twishListId\n\t\t\t\t),\n\t\t\t};\n\t\t});\n\t});\n\n\tuseOnNewWishListCreated((wishList: { id: string; name: string }, baseAddToWishListUrl: string, productId: string) => {\n\t\tsetSettings(previousSettings => {\n\t\t\tif (previousSettings.productId !== productId) {\n\t\t\t\treturn previousSettings;\n\t\t\t}\n\n\t\t\tconst alreadyPresent = previousSettings.wishListsProductMembershipRecords.some(\n\t\t\t\trecord => record.id === wishList.id\n\t\t\t);\n\t\t\tif (alreadyPresent) {\n\t\t\t\treturn {\n\t\t\t\t\t...previousSettings,\n\t\t\t\t\twishListsProductMembershipRecords: previousSettings.wishListsProductMembershipRecords.map(record =>\n\t\t\t\t\t\trecord.id === wishList.id ? { ...record, isProductInWishList: true } : record\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...previousSettings,\n\t\t\t\twishListsProductMembershipRecords: [\n\t\t\t\t\t...previousSettings.wishListsProductMembershipRecords,\n\t\t\t\t\t{\n\t\t\t\t\t\tid: wishList.id,\n\t\t\t\t\t\tname: wishList.name,\n\t\t\t\t\t\tisProductInWishList: true,\n\t\t\t\t\t\troutes: {\n\t\t\t\t\t\t\tAddProductToWishListUrl: `${baseAddToWishListUrl}${productId}`,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t});\n\t});\n\n\tconst handleClose = () => {\n\t\tsetIsOpen(false);\n\t};\n\n\treturn (\n\t\t<SharedWishListFormContext.Provider value={{ open: handleOpen }}>\n\t\t\t{children}\n\t\t\t{isInitialized && <SharedWishListForm isOpen={isOpen} settings={settings} onClose={handleClose} />}\n\t\t</SharedWishListFormContext.Provider>\n\t);\n};\n\nexport default SharedWishListFormProvider;\n","import React, { createContext, useCallback, useContext, useMemo } from 'react';\nimport type { CatalogProductData } from '@faithlife/commerce-components';\n\nimport { createBatchContext } from '../../hooks/use-batch';\nimport fetch from '../../util/fetch';\nimport { hasValidReviewData } from '../shared/ratings/review-data';\n\n// Re-export so existing imports from this module keep working. The canonical shape\n// is owned by @faithlife/commerce-components; the BFF `StaticProductData` C# view\n// model is intentionally aligned to it (see ViewModels/Content/StaticProductData.cs).\nexport type { CatalogProductData };\n\ninterface StaticDataContextValue {\n\tstaticProductData: Record<string, CatalogProductData>;\n\tgetProductData: (productId: string) => Promise<CatalogProductData | null>;\n}\n\nfunction normalizeProductData({ rating, reviewCount, ...product }: CatalogProductData): CatalogProductData {\n\tif (hasValidReviewData(rating, reviewCount)) {\n\t\treturn { rating, reviewCount, ...product };\n\t}\n\n\treturn { ...product, rating: undefined, reviewCount: undefined };\n}\n\nconst StaticDataContext = createContext<StaticDataContextValue>({\n\tstaticProductData: {},\n\tgetProductData: async () => null,\n});\n\nconst StaticProductDataBatch = createBatchContext<string, CatalogProductData>(\n\tasync productIds => {\n\t\tconst normalizedProductIds = productIds.map(id => String(id ?? '').trim()).filter(id => id.length > 0);\n\n\t\tif (normalizedProductIds.length === 0) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst response = await fetch.get({\n\t\t\turl: '/api/staticproductdata',\n\t\t\tparams: {\n\t\t\t\tlogosProductIds: normalizedProductIds.join(','),\n\t\t\t\t// Bypass single sign-in redirects, supports embedded Builder.io editor iframes.\n\t\t\t\tssi: '0',\n\t\t\t},\n\t\t});\n\n\t\tconst products = await response.json();\n\t\treturn products ?? [];\n\t},\n\t(id, data) => {\n\t\tconst normalizedId = String(id ?? '').trim();\n\t\treturn data.find(product => product?.id === normalizedId);\n\t}\n);\n\nfunction StaticDataBridge({\n\tchildren,\n\tinitialStaticProductDataById,\n}: {\n\tchildren: React.ReactNode;\n\tinitialStaticProductDataById: Record<string, CatalogProductData>;\n}) {\n\tconst loadProductData = StaticProductDataBatch.useLoadData();\n\n\tconst getProductData = useCallback(\n\t\tasync (productId: string): Promise<CatalogProductData | null> => {\n\t\t\tconst normalizedProductId = String(productId ?? '').trim();\n\t\t\tif (!normalizedProductId) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst result = await loadProductData(normalizedProductId);\n\t\t\t\treturn result ? normalizeProductData(result) : null;\n\t\t\t} catch {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t\t[loadProductData]\n\t);\n\n\tconst contextValue = useMemo(\n\t\t() => ({\n\t\t\tstaticProductData: initialStaticProductDataById,\n\t\t\tgetProductData,\n\t\t}),\n\t\t[initialStaticProductDataById, getProductData]\n\t);\n\n\treturn <StaticDataContext.Provider value={contextValue}>{children}</StaticDataContext.Provider>;\n}\n\ninterface StaticDataContextProviderProps {\n\tinitialData?: CatalogProductData[];\n\tchildren: React.ReactNode;\n}\n\nexport function StaticDataContextProvider({ initialData, children }: StaticDataContextProviderProps) {\n\tconst initialStaticProductDataById = useMemo(() => {\n\t\tif (!initialData?.length) {\n\t\t\treturn {};\n\t\t}\n\n\t\treturn Object.fromEntries(\n\t\t\tinitialData.filter(product => product?.id).map(product => [product.id as string, normalizeProductData(product)])\n\t\t);\n\t}, [initialData]);\n\n\treturn (\n\t\t<StaticProductDataBatch.Provider>\n\t\t\t<StaticDataBridge initialStaticProductDataById={initialStaticProductDataById}>{children}</StaticDataBridge>\n\t\t</StaticProductDataBatch.Provider>\n\t);\n}\n\nexport const useStaticDataContext = () => useContext(StaticDataContext);\n","import { loadStripe } from '@stripe/stripe-js';\n\nexport default function stripe(stripePublishableKey) {\n\tglobal.stripe ??= loadStripe(stripePublishableKey);\n\treturn global.stripe;\n}\n","import { LinkButton } from '@faithlife/commerce-components';\nimport styled from 'styled-components';\n\nconst linkClasses =\n\t'px-sp16 py-sp12 text-primary hover:text-secondary-200 active:text-secondary-400 disabled:text-black disabled:opacity-25 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary';\n\nexport default styled(LinkButton).attrs(({ $button }) => ({\n\tclassName: $button ? undefined : linkClasses,\n\tintent: 'none',\n\tscale: 'sm',\n\ttouchTarget: 'sm',\n}))`\n\t&::before {\n\t\tdisplay: none;\n\t}\n\n\t& > span {\n\t\tdisplay: contents;\n\t\tfont: inherit;\n\t\tletter-spacing: inherit;\n\t}\n`;\n","import styled, { css } from 'styled-components';\n\nexport const CTAButtonContainer = styled.div`\n\tdisplay: none;\n\n\t${({ theme }) => theme.mediaQueries.desktop} {\n\t\tdisplay: flex;\n\t\tgap: 16px;\n\t\talign-items: center;\n\t}\n`;\n\nexport const MobileCTAButtonContainer = styled.div`\n\tdisplay: flex;\n`;\n\nexport const CTAMenuButtonContainer = styled.div`\n\tdisplay: none;\n\n\t${({ theme }) => theme.mediaQueries.desktop} {\n\t\tdisplay: block;\n\t\tmargin: 0;\n\t\tcolor: ${({ theme }) => theme.colors.headerText};\n\t}\n`;\n\nexport const MenuToggleText = styled.div`\n\tmargin-right: 4px;\n`;\n\nexport const MenuToggleChevronContainer = styled.div`\n\twidth: 14px;\n\theight: 14px;\n\ttransition: 0.1s transform ease-in-out;\n\t${({ isOpen }) =>\n\t\tisOpen &&\n\t\tcss`\n\t\t\ttransform: rotate(180deg);\n\t\t`}\n`;\n\nexport const IconContainer = styled.span`\n\tcolor: ${({ theme }) => theme.colors.headerText};\n`;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Typography } from '@faithlife/commerce-components';\n\nimport LinkButton from './link-button';\nimport { CTAButtonContainer, MobileCTAButtonContainer } from './styled';\n\nexport const CTAButton = ({ isMobile, href, displayText }) => {\n\tif (!href || !displayText) {\n\t\treturn null;\n\t}\n\n\treturn isMobile ? (\n\t\t<MobileCTAButtonContainer>\n\t\t\t<LinkButton href={href} className=\"flex items-center\">\n\t\t\t\t<Typography variant=\"bodySmall\">{displayText}</Typography>\n\t\t\t</LinkButton>\n\t\t</MobileCTAButtonContainer>\n\t) : (\n\t\t<CTAButtonContainer>\n\t\t\t<Button asChild={true} scale=\"small\" className=\"rounded-sm\">\n\t\t\t\t<a href={href}>\n\t\t\t\t\t<Typography className=\"font-normal\" variant=\"bodySmall\">\n\t\t\t\t\t\t{displayText}\n\t\t\t\t\t</Typography>\n\t\t\t\t</a>\n\t\t\t</Button>\n\t\t</CTAButtonContainer>\n\t);\n};\n\nCTAButton.propTypes = {\n\tisMobile: PropTypes.bool,\n\tbuttonText: PropTypes.string,\n\thref: PropTypes.string,\n};\n","import React, { useCallback, useState } from 'react';\nimport { Menu } from '@faithlife/styled-ui';\n\nimport { Typography } from '@faithlife/commerce-components';\nimport { DownloadChevron } from '../svgs';\nimport LinkButton from './link-button';\nimport { CTAMenuButtonContainer, MenuToggleText, MenuToggleChevronContainer, IconContainer } from './styled';\n\nexport const CTAMenuButton = ({ isMobile, displayText, items }) => {\n\tconst [isDropdownOpen, setIsDropdownOpen] = useState(false);\n\n\tconst handleToggleMenu = useCallback(() => {\n\t\tsetIsDropdownOpen(value => !value);\n\t}, []);\n\n\treturn (\n\t\t<>\n\t\t\t{isMobile ? (\n\t\t\t\t<ul>\n\t\t\t\t\t{items.map(\n\t\t\t\t\t\ti =>\n\t\t\t\t\t\t\ti.text &&\n\t\t\t\t\t\t\ti.href && (\n\t\t\t\t\t\t\t\t<li key={i.text}>\n\t\t\t\t\t\t\t\t\t<LinkButton href={i.href} className=\"inline-flex items-center gap-sp8\">\n\t\t\t\t\t\t\t\t\t\t<IconContainer>{i.icon}</IconContainer>\n\t\t\t\t\t\t\t\t\t\t<Typography variant=\"bodySmall\">{i.text}</Typography>\n\t\t\t\t\t\t\t\t\t</LinkButton>\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t)}\n\t\t\t\t</ul>\n\t\t\t) : (\n\t\t\t\t<CTAMenuButtonContainer>\n\t\t\t\t\t<Menu isOpen={isDropdownOpen} onToggleMenu={handleToggleMenu}>\n\t\t\t\t\t\t<Menu.Toggle size=\"small\" hideCaret padding=\"6px 12px\" borderRadius=\"4px\">\n\t\t\t\t\t\t\t<MenuToggleText>\n\t\t\t\t\t\t\t\t<Typography variant=\"bodySmall\">{displayText}</Typography>\n\t\t\t\t\t\t\t</MenuToggleText>\n\t\t\t\t\t\t\t<MenuToggleChevronContainer isOpen={isDropdownOpen}>\n\t\t\t\t\t\t\t\t<DownloadChevron />\n\t\t\t\t\t\t\t</MenuToggleChevronContainer>\n\t\t\t\t\t\t</Menu.Toggle>\n\t\t\t\t\t\t<Menu.Dropdown>\n\t\t\t\t\t\t\t{items.map(\n\t\t\t\t\t\t\t\ti =>\n\t\t\t\t\t\t\t\t\ti.text &&\n\t\t\t\t\t\t\t\t\ti.href && (\n\t\t\t\t\t\t\t\t\t\t<Menu.LinkItem key={i.text} href={i.href} rel=\"noopener\">\n\t\t\t\t\t\t\t\t\t\t\t{i.text}\n\t\t\t\t\t\t\t\t\t\t</Menu.LinkItem>\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</Menu.Dropdown>\n\t\t\t\t\t</Menu>\n\t\t\t\t</CTAMenuButtonContainer>\n\t\t\t)}\n\t\t</>\n\t);\n};\n","import React, { useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react';\n\nimport { debouncedResizeElement } from '../../../util/mobile-utility';\nimport UserSubscribeButton from '../user-subscribe-button';\nimport LanguageSelector from '../language-selector';\nimport { MegaMenuRenderModeProvider } from '../mega-menu/render-mode-context';\n\nimport {\n\tToggleButton as MobileToggleButton,\n\tToggleButtonSvg as MobileToggleButtonSvg,\n\tToggleButtonHamburgerTopLine as MobileToggleButtonHamburgerTopLine,\n\tToggleButtonHamburgerMiddleLine as MobileToggleButtonHamburgerMiddleLine,\n\tToggleButtonHamburgerBottomLine as MobileToggleButtonHamburgerBottomLine,\n\tContainer as MobileContainer,\n} from './styled';\n\nconst MobileMegaMenu = ({ isOpen, megaMenuElement, onToggleClick, userSubscribeButtonOptions }) => {\n\t// isMounted: container exists in DOM (true while open or animating out)\n\t// isVisible: open class applied, triggering CSS slide-in transition\n\tconst [isMounted, setIsMounted] = useState(false);\n\tconst [isVisible, setIsVisible] = useState(false);\n\tconst containerRef = useRef(null);\n\n\t// Mount when opening; begin close transition when closing\n\tuseEffect(() => {\n\t\tif (isOpen) {\n\t\t\tif (!isMounted) {\n\t\t\t\tsetIsMounted(true);\n\t\t\t} else {\n\t\t\t\tsetIsVisible(true);\n\t\t\t}\n\t\t} else {\n\t\t\tsetIsVisible(false);\n\t\t\tdocument.body.style.overflowY = null;\n\t\t}\n\t}, [isOpen, isMounted]);\n\n\t// After container mounts: apply offset synchronously, then trigger slide-in on next frame\n\tuseLayoutEffect(() => {\n\t\tif (!isMounted || !containerRef.current) {\n\t\t\treturn;\n\t\t}\n\t\tconst headerEl = document.querySelector('#universal-header-upper-half');\n\t\tif (headerEl) {\n\t\t\tcontainerRef.current.style.top = `${headerEl.offsetHeight}px`;\n\t\t\tcontainerRef.current.style.height = `calc(100vh - ${headerEl.offsetHeight}px)`;\n\t\t}\n\t}, [isMounted]);\n\n\tuseEffect(() => {\n\t\tif (!isMounted || !isOpen) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst frameId = requestAnimationFrame(() => {\n\t\t\tsetIsVisible(true);\n\t\t\t/* Because Universal Header scrolls away, if we are not at the top, a gap will appear between the UH and the Mobile Mega Menu */\n\t\t\t/* However, because the UH scrolls away, the user must be near the top to open the Mobile Mega Menu */\n\t\t\t/* Snap UH to top to prevent any gap from showing. */\n\t\t\t/* If we introduce a sticky UH again, this will need changed */\n\t\t\twindow.scrollTo({ top: 0, behavior: 'instant' });\n\t\t\tdocument.body.style.overflowY = 'hidden';\n\t\t});\n\t\treturn () => cancelAnimationFrame(frameId);\n\t}, [isMounted, isOpen]);\n\n\t// Re-apply offset if the header bar resizes while the menu is open (e.g. search expanding)\n\tuseEffect(() => {\n\t\tif (!isMounted) {\n\t\t\treturn;\n\t\t}\n\t\tconst headerEl = document.querySelector('#universal-header-upper-half');\n\t\tif (!headerEl) {\n\t\t\treturn;\n\t\t}\n\t\tconst debouncedResize = debouncedResizeElement(headerEl, () => {\n\t\t\tif (containerRef.current) {\n\t\t\t\tcontainerRef.current.style.top = `${headerEl.offsetHeight}px`;\n\t\t\t\tcontainerRef.current.style.height = `calc(100vh - ${headerEl.offsetHeight}px)`;\n\t\t\t}\n\t\t});\n\t\treturn () => debouncedResize.cancel();\n\t}, [isMounted]);\n\n\t// Unmount after the exit transition completes\n\tconst handleTransitionEnd = useCallback(() => {\n\t\tif (!isVisible) {\n\t\t\tsetIsMounted(false);\n\t\t}\n\t}, [isVisible]);\n\n\t// Safety: if the transition never fires (rapid toggle), still unmount\n\tuseEffect(() => {\n\t\tif (!isOpen && !isVisible && isMounted) {\n\t\t\tconst timeoutId = setTimeout(() => {\n\t\t\t\tsetIsMounted(false);\n\t\t\t}, 3000);\n\t\t\treturn () => clearTimeout(timeoutId);\n\t\t}\n\t}, [isOpen, isVisible, isMounted]);\n\n\treturn (\n\t\t<>\n\t\t\t<MobileToggleButton onClick={onToggleClick} data-testid=\"header-hamburger-menu-button\">\n\t\t\t\t<MobileToggleButtonSvg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth=\"20px\"\n\t\t\t\t\theight=\"17px\"\n\t\t\t\t\tviewBox=\"0 0 20 16\"\n\t\t\t\t\tversion=\"1.1\"\n\t\t\t\t>\n\t\t\t\t\t<g id=\"Icons_V2\" stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n\t\t\t\t\t\t<g id=\"Hamburger\" strokeLinecap=\"round\" stroke=\"#666666\" strokeWidth=\"1\">\n\t\t\t\t\t\t\t<g transform=\"translate(1.000000, 1.000000)\">\n\t\t\t\t\t\t\t\t<MobileToggleButtonHamburgerTopLine open={isOpen} d=\"M18,1 L0,1\" />\n\t\t\t\t\t\t\t\t<MobileToggleButtonHamburgerMiddleLine open={isOpen} d=\"M18,7 L0,7\" />\n\t\t\t\t\t\t\t\t<MobileToggleButtonHamburgerBottomLine open={isOpen} d=\"M18,13 L0,13\" />\n\t\t\t\t\t\t\t</g>\n\t\t\t\t\t\t</g>\n\t\t\t\t\t</g>\n\t\t\t\t</MobileToggleButtonSvg>\n\t\t\t</MobileToggleButton>\n\t\t\t{isMounted && (\n\t\t\t\t<MobileContainer ref={containerRef} $open={isVisible} onTransitionEnd={handleTransitionEnd}>\n\t\t\t\t\t<MegaMenuRenderModeProvider mode=\"mobile\">{megaMenuElement}</MegaMenuRenderModeProvider>\n\t\t\t\t\t{userSubscribeButtonOptions && (\n\t\t\t\t\t\t<UserSubscribeButton isInMobileMegaMenu={true} {...userSubscribeButtonOptions} />\n\t\t\t\t\t)}\n\t\t\t\t\t<LanguageSelector />\n\t\t\t\t</MobileContainer>\n\t\t\t)}\n\t\t</>\n\t);\n};\n\nexport default MobileMegaMenu;\n","export const UNIVERSAL_HEADER_CHILD_NAMES = Object.freeze({\n\tsiteLogo: 'SiteLogo',\n\tsearchBar: 'SearchBar',\n\tspacer: 'Spacer',\n\tcontactInfo: 'ContactInfo',\n\tlanguageSelector: 'LanguageSelector',\n\taccountIcon: 'AccountIcon',\n\tcartIcon: 'CartIcon',\n\tcheckoutSecureIndicator: 'CheckoutSecureIndicator',\n\tmegaMenu: 'MegaMenu',\n\tuserSubscribeButton: 'UserSubscribeButton',\n});\n","export function getChildren(children, childNames) {\n\treturn children.filter(c => childNames.includes(c.props.block.component.name));\n}\n","import styled from 'styled-components';\n\nexport const Container = styled.div`\n\tposition: relative;\n\tz-index: 20;\n\tbackground-color: ${({ theme }) => theme.colors.headerTopHalfBackground};\n\tborder-bottom: 1px solid ${({ theme }) => theme.colors.gray4};\n\tfont-family: var(--font-secondary);\n\n\tmin-height: 40px;\n\n\t${({ theme }) => theme.mediaQueries.desktop} {\n\t\tborder-bottom: none;\n\t\tmin-height: auto;\n\t}\n`;\n\nexport const TopLayer = styled.div`\n\tdisplay: flex;\n\tbox-sizing: content-box;\n\tmax-width: 1440px;\n\tmargin: 0 auto;\n\tposition: relative;\n\tpadding: 0 16px;\n\tjustify-content: space-between;\n\talign-items: center;\n\tgap: 16px;\n\n\t@media (min-width: 768px) {\n\t\tpadding: 8px 24px;\n\t}\n`;\n\nexport const DesktopLanguageSelector = styled.div`\n\tdisplay: none;\n\n\t${({ theme }) => theme.mediaQueries.desktop} {\n\t\tdisplay: block;\n\t}\n`;\n","import React, { useCallback, useEffect, useRef } from 'react';\nimport useScreensize from '../../../util/hooks/use-screensize';\nimport { CommerceWebThemeProvider } from '../../../util/theme';\nimport MobileMegaMenu from '../mobile-mega-menu';\nimport { useOpenMenu, useUniversalHeaderContext } from '../universal-header-context';\nimport { UNIVERSAL_HEADER_CHILD_NAMES } from '../universal-header-child-components';\nimport { getChildren } from '../utils';\nimport { Container, DesktopLanguageSelector, TopLayer } from './styled';\n\nexport default function UniversalHeaderTopHalf(props) {\n\tconst { children, megaMenu, userSubscribeButtonOptions } = props;\n\tconst { isDesktop } = useScreensize();\n\n\tconst leftChildren = getChildren(children, [\n\t\tUNIVERSAL_HEADER_CHILD_NAMES.siteLogo,\n\t\tUNIVERSAL_HEADER_CHILD_NAMES.searchBar,\n\t\tUNIVERSAL_HEADER_CHILD_NAMES.spacer,\n\t]);\n\n\tconst rightChildren = getChildren(children, [\n\t\tUNIVERSAL_HEADER_CHILD_NAMES.checkoutSecureIndicator,\n\t\tUNIVERSAL_HEADER_CHILD_NAMES.accountIcon,\n\t\tUNIVERSAL_HEADER_CHILD_NAMES.cartIcon,\n\t\tUNIVERSAL_HEADER_CHILD_NAMES.contactInfo,\n\t\tUNIVERSAL_HEADER_CHILD_NAMES.languageSelector,\n\t]);\n\n\tconst mobileMenu = megaMenu?.builderElement;\n\tconst [isMobileMegaMenuOpen, setIsMobileMegaMenuOpen] = useOpenMenu('mobileMegaMenu');\n\n\tconst handleMobileMegaMenuToggleButtonClicked = useCallback(() => {\n\t\tsetIsMobileMegaMenuOpen(currentValue => !currentValue);\n\t}, [setIsMobileMegaMenuOpen]);\n\n\tconst containerRef = useRef(null);\n\n\t// Measure header height for search bar dropdown positioning\n\tconst { setHeaderHeight } = useUniversalHeaderContext();\n\tuseEffect(() => {\n\t\tconst resizeObserver = new ResizeObserver(entries => {\n\t\t\tfor (const entry of entries) {\n\t\t\t\tif (entry?.borderBoxSize.length > 0) {\n\t\t\t\t\tsetHeaderHeight(entry.target.offsetHeight || 48);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tconst element = containerRef.current;\n\t\tresizeObserver.observe(element);\n\n\t\treturn () => {\n\t\t\tresizeObserver.unobserve(element);\n\t\t};\n\t}, [setHeaderHeight]);\n\n\tuseEffect(() => {\n\t\tif (isDesktop) {\n\t\t\tsetIsMobileMegaMenuOpen(false);\n\t\t}\n\t}, [isDesktop, setIsMobileMegaMenuOpen]);\n\n\treturn (\n\t\t<CommerceWebThemeProvider>\n\t\t\t<Container ref={containerRef} id=\"universal-header-upper-half\" className=\"header-top-half\">\n\t\t\t\t<TopLayer className=\"legacy\">\n\t\t\t\t\t{leftChildren}\n\t\t\t\t\t<div className=\"flex justify-evenly gap-4 items-center\">\n\t\t\t\t\t\t{rightChildren.map(child => {\n\t\t\t\t\t\t\tconst childName = child.props.block.component.name;\n\t\t\t\t\t\t\treturn childName === UNIVERSAL_HEADER_CHILD_NAMES.languageSelector ? (\n\t\t\t\t\t\t\t\t<DesktopLanguageSelector key={child.key}>{child}</DesktopLanguageSelector>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\tchild\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>\n\t\t\t\t\t{mobileMenu && (\n\t\t\t\t\t\t<MobileMegaMenu\n\t\t\t\t\t\t\tisOpen={isMobileMegaMenuOpen}\n\t\t\t\t\t\t\tonToggleClick={handleMobileMegaMenuToggleButtonClicked}\n\t\t\t\t\t\t\tmegaMenuElement={mobileMenu}\n\t\t\t\t\t\t\tuserSubscribeButtonOptions={userSubscribeButtonOptions}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</TopLayer>\n\t\t\t</Container>\n\t\t</CommerceWebThemeProvider>\n\t);\n}\n","import styled from 'styled-components';\nimport { desktopMinWidth } from '../../../util/mobile-utility';\n\nexport const Container = styled.div`\n\tdisplay: none;\n\tposition: relative;\n\tz-index: 10;\n\tbackground-color: ${({ theme }) => theme.colors.headerBackground || theme.colors.white};\n\tborder-bottom: 1px solid ${({ theme }) => theme.colors.borderColor};\n\tfont-family: var(--font-secondary);\n\tpadding-bottom: ${({ theme }) => theme.space[3]};\n\n\t@media (min-width: ${desktopMinWidth}px) {\n\t\tdisplay: block;\n\t}\n`;\n\nexport const LowerHalf = styled.div`\n\tbox-sizing: content-box;\n\tmax-width: 1440px;\n\tmargin: 0 auto;\n\tpadding: 0 16px;\n\n\t@media (min-width: 768px) {\n\t\tpadding: 0 24px;\n\t}\n`;\n\nexport const TopRow = styled.div`\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\tgap: 24px;\n\n\t@media (min-width: 1280px) {\n\t\tgap: 32px;\n\t}\n`;\n","import React from 'react';\n\nimport { CTAButton } from '../cta-buttons';\n\nimport { CommerceWebThemeProvider } from '../../../util/theme';\nimport { Container, LowerHalf, TopRow } from './styled';\n\nexport default function UniversalHeaderLowerHalf(props) {\n\tconst { children, buttonCTA } = props;\n\n\treturn (\n\t\t<CommerceWebThemeProvider>\n\t\t\t<Container id=\"universal-header-lower-half\">\n\t\t\t\t<LowerHalf className=\"legacy\">\n\t\t\t\t\t<TopRow>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t\t{buttonCTA && <CTAButton {...buttonCTA} />}\n\t\t\t\t\t</TopRow>\n\t\t\t\t</LowerHalf>\n\t\t\t</Container>\n\t\t</CommerceWebThemeProvider>\n\t);\n}\n","import React from 'react';\nimport ContentEditLink from '../shared/content-edit-link';\nimport UniversalHeaderTopHalf from './universal-header-top-half';\nimport UniversalHeaderLowerHalf from './universal-header-lower-half';\nimport { UNIVERSAL_HEADER_CHILD_NAMES } from './universal-header-child-components';\nimport { useUniversalHeaderContext } from './universal-header-context';\nimport { getChildren } from './utils';\n\nconst navOptions = {\n\tMinimal: 'minimal',\n\tSimplified: 'simplified',\n};\n\nexport function UniversalHeaderCore(props) {\n\tconst { children } = props;\n\tconst { editUrl, navKind } = useUniversalHeaderContext();\n\n\tlet upperChildren = [UNIVERSAL_HEADER_CHILD_NAMES.siteLogo];\n\tlet lowerChildren = [];\n\tif (!navKind || navKind === navOptions.Simplified) {\n\t\tupperChildren = [...upperChildren, UNIVERSAL_HEADER_CHILD_NAMES.accountIcon, UNIVERSAL_HEADER_CHILD_NAMES.cartIcon];\n\t}\n\n\tconst allowFullNav = !navKind || (navKind !== navOptions.Minimal && navKind !== navOptions.Simplified);\n\tif (allowFullNav) {\n\t\tupperChildren = [\n\t\t\t...upperChildren,\n\t\t\tUNIVERSAL_HEADER_CHILD_NAMES.searchBar,\n\t\t\tUNIVERSAL_HEADER_CHILD_NAMES.spacer,\n\t\t\tUNIVERSAL_HEADER_CHILD_NAMES.contactInfo,\n\t\t\tUNIVERSAL_HEADER_CHILD_NAMES.checkoutSecureIndicator,\n\t\t\tUNIVERSAL_HEADER_CHILD_NAMES.languageSelector,\n\t\t];\n\t\tlowerChildren = [UNIVERSAL_HEADER_CHILD_NAMES.megaMenu, UNIVERSAL_HEADER_CHILD_NAMES.userSubscribeButton];\n\t}\n\n\tconst megaMenuBuilderElement = Array.isArray(children)\n\t\t? children.find(c => c?.props?.block?.component?.name === UNIVERSAL_HEADER_CHILD_NAMES.megaMenu)\n\t\t: null;\n\n\tconst userSubscribeButton = children.find(\n\t\tc => c?.props?.block?.component?.name === UNIVERSAL_HEADER_CHILD_NAMES.userSubscribeButton\n\t)?.props.block.component;\n\n\tconst upperProps = {\n\t\t...props,\n\t\tchildren: getChildren(children, upperChildren),\n\t\tmegaMenu: megaMenuBuilderElement && allowFullNav ? { builderElement: megaMenuBuilderElement } : undefined,\n\t\tuserSubscribeButtonOptions: userSubscribeButton?.options,\n\t};\n\tconst lowerProps = {\n\t\t...props,\n\t\tchildren: getChildren(children, lowerChildren),\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t{editUrl && <ContentEditLink url={editUrl} title=\"Edit Universal Header\" />}\n\t\t\t<UniversalHeaderTopHalf {...upperProps} />\n\t\t\t{!!lowerProps.children.length && <UniversalHeaderLowerHalf {...lowerProps} />}\n\t\t</>\n\t);\n}\n","import React from 'react';\nimport { UniversalHeaderCore } from './core';\n\nconst UniversalHeader = props => {\n\treturn <UniversalHeaderCore {...props} />;\n};\n\nexport default UniversalHeader;\n","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgUnitedStatesOfAmerica = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 512 512\",\n  style: {\n    enableBackground: \"new 0 0 512 512\"\n  },\n  xmlSpace: \"preserve\"\n}, props), /*#__PURE__*/React.createElement(\"circle\", {\n  style: {\n    fill: \"#f0f0f0\"\n  },\n  cx: 256,\n  cy: 256,\n  r: 256\n}), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#d80027\"\n  },\n  d: \"M244.87 256H512c0-23.106-3.08-45.49-8.819-66.783H244.87V256zM244.87 122.435h229.556a257.35 257.35 0 0 0-59.07-66.783H244.87v66.783zM256 512c60.249 0 115.626-20.824 159.356-55.652H96.644C140.374 491.176 195.751 512 256 512zM37.574 389.565h436.852a254.474 254.474 0 0 0 28.755-66.783H8.819a254.474 254.474 0 0 0 28.755 66.783z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#0052b4\"\n  },\n  d: \"M118.584 39.978h23.329l-21.7 15.765 8.289 25.509-21.699-15.765-21.699 15.765 7.16-22.037a257.407 257.407 0 0 0-49.652 55.337h7.475l-13.813 10.035a255.58 255.58 0 0 0-6.194 10.938l6.596 20.301-12.306-8.941a253.567 253.567 0 0 0-8.372 19.873l7.267 22.368h26.822l-21.7 15.765 8.289 25.509-21.699-15.765-12.998 9.444A258.468 258.468 0 0 0 0 256h256V0c-50.572 0-97.715 14.67-137.416 39.978zm9.918 190.422-21.699-15.765L85.104 230.4l8.289-25.509-21.7-15.765h26.822l8.288-25.509 8.288 25.509h26.822l-21.7 15.765 8.289 25.509zm-8.289-100.083 8.289 25.509-21.699-15.765-21.699 15.765 8.289-25.509-21.7-15.765h26.822l8.288-25.509 8.288 25.509h26.822l-21.7 15.765zM220.328 230.4l-21.699-15.765L176.93 230.4l8.289-25.509-21.7-15.765h26.822l8.288-25.509 8.288 25.509h26.822l-21.7 15.765 8.289 25.509zm-8.289-100.083 8.289 25.509-21.699-15.765-21.699 15.765 8.289-25.509-21.7-15.765h26.822l8.288-25.509 8.288 25.509h26.822l-21.7 15.765zm0-74.574 8.289 25.509-21.699-15.765-21.699 15.765 8.289-25.509-21.7-15.765h26.822l8.288-25.509 8.288 25.509h26.822l-21.7 15.765z\"\n}));\nexport default SvgUnitedStatesOfAmerica;","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgCanada = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 512 512\",\n  style: {\n    enableBackground: \"new 0 0 512 512\"\n  },\n  xmlSpace: \"preserve\"\n}, props), /*#__PURE__*/React.createElement(\"circle\", {\n  style: {\n    fill: \"#f0f0f0\"\n  },\n  cx: 256,\n  cy: 256,\n  r: 256\n}), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#d80027\"\n  },\n  d: \"M512 256c0-101.494-59.065-189.19-144.696-230.598v461.195C452.935 445.19 512 357.494 512 256zM0 256c0 101.494 59.065 189.19 144.696 230.598V25.402C59.065 66.81 0 154.506 0 256zM300.522 289.391l44.521-22.261-22.26-11.13v-22.261L278.261 256l22.261-44.522h-22.261L256 178.087l-22.261 33.391h-22.261L233.739 256l-44.522-22.261V256l-22.26 11.13 44.521 22.261-11.13 22.261h44.522v33.391h22.26v-33.391h44.522z\"\n}));\nexport default SvgCanada;","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgUnitedKingdom = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 512 512\",\n  style: {\n    enableBackground: \"new 0 0 512 512\"\n  },\n  xmlSpace: \"preserve\"\n}, props), /*#__PURE__*/React.createElement(\"circle\", {\n  style: {\n    fill: \"#f0f0f0\"\n  },\n  cx: 256,\n  cy: 256,\n  r: 256\n}), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#0052b4\"\n  },\n  d: \"M52.92 100.142c-20.109 26.163-35.272 56.318-44.101 89.077h133.178L52.92 100.142zM503.181 189.219c-8.829-32.758-23.993-62.913-44.101-89.076l-89.075 89.076h133.176zM8.819 322.784c8.83 32.758 23.993 62.913 44.101 89.075l89.074-89.075H8.819zM411.858 52.921c-26.163-20.109-56.317-35.272-89.076-44.102v133.177l89.076-89.075zM100.142 459.079c26.163 20.109 56.318 35.272 89.076 44.102V370.005l-89.076 89.074zM189.217 8.819c-32.758 8.83-62.913 23.993-89.075 44.101l89.075 89.075V8.819zM322.783 503.181c32.758-8.83 62.913-23.993 89.075-44.101l-89.075-89.075v133.176zM370.005 322.784l89.075 89.076c20.108-26.162 35.272-56.318 44.101-89.076H370.005z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#d80027\"\n  },\n  d: \"M509.833 222.609H289.392V2.167A258.556 258.556 0 0 0 256 0c-11.319 0-22.461.744-33.391 2.167v220.441H2.167A258.556 258.556 0 0 0 0 256c0 11.319.744 22.461 2.167 33.391h220.441v220.442a258.35 258.35 0 0 0 66.783 0V289.392h220.442A258.533 258.533 0 0 0 512 256c0-11.317-.744-22.461-2.167-33.391z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#d80027\"\n  },\n  d: \"M322.783 322.784 437.019 437.02a256.636 256.636 0 0 0 15.048-16.435l-97.802-97.802h-31.482v.001zM189.217 322.784h-.002L74.98 437.019a256.636 256.636 0 0 0 16.435 15.048l97.802-97.804v-31.479zM189.217 189.219v-.002L74.981 74.98a256.636 256.636 0 0 0-15.048 16.435l97.803 97.803h31.481zM322.783 189.219 437.02 74.981a256.328 256.328 0 0 0-16.435-15.047l-97.802 97.803v31.482z\"\n}));\nexport default SvgUnitedKingdom;","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgAustralia = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 512 512\",\n  style: {\n    enableBackground: \"new 0 0 512 512\"\n  },\n  xmlSpace: \"preserve\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#0052b4\"\n  },\n  d: \"M512 256c0 141.384-114.616 256-256 256S0 397.384 0 256C0 256.06 256 .029 256 0c141.384 0 256 114.616 256 256z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#f0f0f0\"\n  },\n  d: \"m256 0-.043.001L256 0zM255.315 256H256v-.685l-.685.685z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#f0f0f0\"\n  },\n  d: \"M256 133.566V.001h-.043C114.592.024 0 114.629 0 256h133.565v-75.212L208.777 256h46.539l.685-.685v-46.536l-75.213-75.213H256z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#d80027\"\n  },\n  d: \"M129.515 33.391a257.222 257.222 0 0 0-96.124 96.124V256h66.783V100.174H256V33.391H129.515z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#d80027\"\n  },\n  d: \"m256 224.519-90.953-90.952h-31.481c0-.001 0 0 0 0L255.999 256H256v-31.481z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#f0f0f0\"\n  },\n  d: \"m154.395 300.522 14.05 29.378 31.727-7.333-14.208 29.302 25.514 20.233-31.767 7.16.089 32.564-25.405-20.373-25.404 20.373.089-32.564-31.768-7.16 25.515-20.233-14.21-29.302 31.729 7.333zM383.284 356.174l7.025 14.689 15.864-3.667-7.105 14.651 12.758 10.117-15.884 3.58.044 16.282-12.702-10.187-12.702 10.187.044-16.282-15.883-3.58 12.757-10.117-7.104-14.651 15.863 3.667zM317.933 200.348l7.024 14.69 15.864-3.668-7.104 14.651 12.757 10.117-15.883 3.58.043 16.282-12.701-10.187L305.231 256l.043-16.282-15.883-3.58 12.757-10.117-7.104-14.651 15.864 3.668zM383.284 111.304l7.025 14.69 15.864-3.667-7.104 14.651 12.756 10.116-15.883 3.581.044 16.282-12.702-10.187-12.702 10.187.044-16.282-15.883-3.581 12.756-10.116-7.103-14.651 15.863 3.667zM440.368 178.087l7.024 14.69 15.864-3.668-7.104 14.651 12.757 10.117-15.884 3.581.044 16.281-12.701-10.186-12.702 10.186.043-16.281-15.883-3.581 12.757-10.117-7.104-14.651 15.863 3.668zM399.55 256l5.525 17.006h17.882l-14.467 10.511 5.527 17.005-14.467-10.51-14.466 10.51 5.525-17.005-14.466-10.511h17.881z\"\n}));\nexport default SvgAustralia;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgGermany = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 512 512\",\n  style: {\n    enableBackground: \"new 0 0 512 512\"\n  },\n  xmlSpace: \"preserve\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#ffda44\"\n  },\n  d: \"M15.923 345.043C52.094 442.527 145.929 512 256 512s203.906-69.473 240.077-166.957L256 322.783l-240.077 22.26z\"\n}), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n  d: \"M256 0C145.929 0 52.094 69.472 15.923 166.957L256 189.217l240.077-22.261C459.906 69.472 366.071 0 256 0z\"\n})), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#d80027\"\n  },\n  d: \"M15.923 166.957C5.633 194.69 0 224.686 0 256s5.633 61.31 15.923 89.043h480.155C506.368 317.31 512 287.314 512 256s-5.632-61.31-15.923-89.043H15.923z\"\n}));\nexport default SvgGermany;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgSouthAfrica = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 512 512\",\n  style: {\n    enableBackground: \"new 0 0 512 512\"\n  },\n  xmlSpace: \"preserve\"\n}, props), /*#__PURE__*/React.createElement(\"circle\", {\n  style: {\n    fill: \"#f0f0f0\"\n  },\n  cx: 256,\n  cy: 256,\n  r: 256\n}), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n  d: \"M74.98 437.02c-99.974-99.975-99.974-262.065 0-362.04C74.973 74.991 222.609 256 222.609 256L74.98 437.02z\"\n})), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#ffda44\"\n  },\n  d: \"M222.609 256 33.953 128.513a255.118 255.118 0 0 0-15.439 31.763l95.509 95.725-95.506 95.73a254.82 254.82 0 0 0 15.426 31.741L222.609 256z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#6da544\"\n  },\n  d: \"M509.833 222.609H222.602L74.978 74.984a256.992 256.992 0 0 0-41.025 53.53L161.192 256 33.943 383.47a256.966 256.966 0 0 0 41.035 53.545l147.624-147.624h287.231A258.529 258.529 0 0 0 512 256c0-11.317-.744-22.461-2.167-33.391z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#0052b4\"\n  },\n  d: \"M100.138 459.077C143.307 492.259 197.344 512 256 512c118.279 0 217.805-80.221 247.181-189.217H236.433L100.138 459.077z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#d80027\"\n  },\n  d: \"M503.181 189.217C473.805 80.221 374.279 0 256 0c-58.656 0-112.693 19.741-155.862 52.923l136.294 136.294h266.749z\"\n}));\nexport default SvgSouthAfrica;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgSouthKorea = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 512 512\",\n  style: {\n    enableBackground: \"new 0 0 512 512\"\n  },\n  xmlSpace: \"preserve\"\n}, props), /*#__PURE__*/React.createElement(\"circle\", {\n  style: {\n    fill: \"#f0f0f0\"\n  },\n  cx: 256,\n  cy: 256,\n  r: 256\n}), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#d80027\"\n  },\n  d: \"M345.043 256c0 22.261-39.866 77.913-89.043 77.913S166.957 278.261 166.957 256c0-49.178 39.866-89.043 89.043-89.043s89.043 39.865 89.043 89.043z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#0052b4\"\n  },\n  d: \"M345.043 256c0 49.178-39.866 89.043-89.043 89.043S166.957 305.178 166.957 256\"\n}), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n  d: \"m350.442 334.705 23.61-23.61 15.741 15.74-23.61 23.61zM311.085 374.06l23.61-23.612 15.741 15.741-23.61 23.611zM397.67 381.917l23.611-23.61 15.74 15.74-23.61 23.61zM358.314 421.278l23.61-23.61 15.741 15.74-23.61 23.611zM374.055 358.313l23.61-23.61 15.741 15.74-23.61 23.61zM334.709 397.667l23.61-23.61 15.741 15.74-23.61 23.611zM397.678 177.29l-62.963-62.963 15.741-15.74 62.962 62.962zM334.713 161.558l-23.61-23.61 15.74-15.74 23.61 23.61zM374.06 200.907l-23.61-23.611 15.74-15.74 23.61 23.61zM381.915 114.336l-23.61-23.611 15.74-15.741 23.61 23.61zM421.283 153.688l-23.611-23.61 15.74-15.741 23.612 23.61zM90.723 358.318l62.962 62.962-15.74 15.74-62.963-62.961zM153.68 374.05l23.611 23.611-15.74 15.74-23.61-23.61zM114.33 334.703l23.611 23.611-15.74 15.741-23.611-23.61zM137.943 311.091l62.962 62.963-15.74 15.74-62.963-62.962zM153.684 90.72 90.72 153.683l-15.74-15.741 62.962-62.963zM177.287 114.325l-62.963 62.963-15.74-15.741 62.962-62.962zM200.912 137.947l-62.962 62.962-15.74-15.74 62.962-62.962z\"\n})));\nexport default SvgSouthKorea;","var _style, _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgChina = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n  id: \"Layer_1\",\n  xmlns: \"http://www.w3.org/2000/svg\",\n  x: 0,\n  y: 0,\n  viewBox: \"-49 141 512 512\",\n  style: {\n    enableBackground: \"new -49 141 512 512\"\n  },\n  xmlSpace: \"preserve\"\n}, props), _style || (_style = /*#__PURE__*/React.createElement(\"style\", null, \".st1{fill:#ffda44}\")), /*#__PURE__*/React.createElement(\"circle\", {\n  cx: 207,\n  cy: 397,\n  r: 256,\n  style: {\n    fill: \"#d80027\"\n  }\n}), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n  className: \"st1\",\n  d: \"m91.1 296.8 22.1 68h71.5l-57.8 42.1 22.1 68-57.9-42-57.9 42 22.2-68-57.9-42.1H69zM254.5 537.5l-16.9-20.8-25 9.7 14.5-22.5-16.9-20.9 25.9 6.9 14.6-22.5 1.4 26.8 26 6.9-25.1 9.6zM288.1 476.5l8-25.6-21.9-15.5 26.8-.4 7.9-25.6 8.7 25.4 26.8-.3-21.5 16 8.6 25.4-21.9-15.5zM333.4 328.9 321.6 353l19.2 18.7-26.5-3.8-11.8 24-4.6-26.4-26.6-3.8 23.8-12.5-4.6-26.5 19.2 18.7zM255.2 255.9l-2 26.7 24.9 10.1-26.1 6.4-1.9 26.8-14.1-22.8-26.1 6.4 17.3-20.5-14.2-22.7 24.9 10.1z\"\n})));\nexport default SvgChina;","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgFrance = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 512 512\",\n  style: {\n    enableBackground: \"new 0 0 512 512\"\n  },\n  xmlSpace: \"preserve\"\n}, props), /*#__PURE__*/React.createElement(\"circle\", {\n  style: {\n    fill: \"#f0f0f0\"\n  },\n  cx: 256,\n  cy: 256,\n  r: 256\n}), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#ef4135\"\n  },\n  d: \"M512 256c0-101.494-59.065-189.19-144.696-230.598v461.195C452.935 445.19 512 357.494 512 256z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#0055a4\"\n  },\n  d: \"M0 256c0 101.494 59.065 189.19 144.696 230.598V25.402C59.065 66.81 0 154.506 0 256z\"\n}));\nexport default SvgFrance;","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgBrazil = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 512 512\",\n  style: {\n    enableBackground: \"new 0 0 512 512\"\n  },\n  xmlSpace: \"preserve\"\n}, props), /*#__PURE__*/React.createElement(\"circle\", {\n  style: {\n    fill: \"#6da544\"\n  },\n  cx: 256,\n  cy: 256,\n  r: 256\n}), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#ffda44\"\n  },\n  d: \"M256 100.174 467.478 256 256 411.826 44.522 256z\"\n}), /*#__PURE__*/React.createElement(\"circle\", {\n  style: {\n    fill: \"#f0f0f0\"\n  },\n  cx: 256,\n  cy: 256,\n  r: 89.043\n}), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#0052b4\"\n  },\n  d: \"M211.478 250.435c-15.484 0-30.427 2.355-44.493 6.725.623 48.64 40.227 87.884 89.015 87.884 30.168 0 56.812-15.017 72.919-37.968-27.557-34.497-69.958-56.641-117.441-56.641zM343.393 273.06a89.45 89.45 0 0 0 1.651-17.06c0-49.178-39.866-89.043-89.043-89.043-36.694 0-68.194 22.201-81.826 53.899a183.693 183.693 0 0 1 37.305-3.812c51.717-.001 98.503 21.497 131.913 56.016z\"\n}));\nexport default SvgBrazil;","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgMexico = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 512 512\",\n  style: {\n    enableBackground: \"new 0 0 512 512\"\n  },\n  xmlSpace: \"preserve\"\n}, props), /*#__PURE__*/React.createElement(\"circle\", {\n  style: {\n    fill: \"#f0f0f0\"\n  },\n  cx: 256,\n  cy: 256,\n  r: 256\n}), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#d80027\"\n  },\n  d: \"M512 256c0-101.494-59.065-189.19-144.696-230.598v461.195C452.935 445.19 512 357.494 512 256z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#6da544\"\n  },\n  d: \"M0 256c0 101.494 59.065 189.19 144.696 230.598V25.402C59.065 66.81 0 154.506 0 256zM189.217 256c0 36.883 29.9 66.783 66.783 66.783s66.783-29.9 66.783-66.783v-22.261H189.217V256z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#ff9811\"\n  },\n  d: \"M345.043 211.478H278.26c0-12.294-9.967-22.261-22.261-22.261s-22.261 9.967-22.261 22.261h-66.783c0 12.295 10.709 22.261 23.002 22.261h-.741c0 12.295 9.966 22.261 22.261 22.261 0 12.295 9.966 22.261 22.261 22.261h44.522c12.295 0 22.261-9.966 22.261-22.261 12.295 0 22.261-9.966 22.261-22.261h-.742c12.295 0 23.003-9.966 23.003-22.261z\"\n}));\nexport default SvgMexico;","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgPhilippines = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 512 512\",\n  style: {\n    enableBackground: \"new 0 0 512 512\"\n  },\n  xmlSpace: \"preserve\"\n}, props), /*#__PURE__*/React.createElement(\"circle\", {\n  style: {\n    fill: \"#f0f0f0\"\n  },\n  cx: 256,\n  cy: 256,\n  r: 256\n}), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#d80027\"\n  },\n  d: \"M256 0v256L74.98 437.02C121.307 483.346 185.307 512 256 512c141.384 0 256-114.616 256-256S256 0 256 0z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#0052b4\"\n  },\n  d: \"M256 0C185.307 0 121.307 28.654 74.98 74.98L256 256h256C512 114.616 397.384 0 256 0z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#ffda44\"\n  },\n  d: \"m175.291 256-31.264-14.706 16.649-30.279-33.95 6.495-4.302-34.297-23.648 25.224-23.647-25.224-4.303 34.297-33.949-6.496 16.649 30.28L22.261 256l31.265 14.706-16.649 30.279 33.952-6.494 4.299 34.296 23.648-25.224 23.648 25.224 4.302-34.296 33.948 6.495-16.648-30.279zM68.273 100.174l10.404 14.543 17.045-5.399-10.618 14.388 10.404 14.543-16.966-5.651-10.617 14.387.133-17.88-16.965-5.652 17.048-5.399zM68.273 365.015l10.404 14.543 17.045-5.4-10.618 14.389 10.404 14.543-16.966-5.651-10.617 14.387.133-17.88-16.965-5.652 17.048-5.399zM216.666 232.595l-10.403 14.543-17.046-5.401 10.618 14.389-10.404 14.544 16.966-5.652 10.618 14.387-.134-17.879 16.965-5.652-17.047-5.399z\"\n}));\nexport default SvgPhilippines;","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgSingapore = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 512 512\",\n  style: {\n    enableBackground: \"new 0 0 512 512\"\n  },\n  xmlSpace: \"preserve\"\n}, props), /*#__PURE__*/React.createElement(\"circle\", {\n  style: {\n    fill: \"#f0f0f0\"\n  },\n  cx: 256,\n  cy: 256,\n  r: 256\n}), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#d80027\"\n  },\n  d: \"M0 256.001C0 114.616 114.616 0 256 0s256 114.616 256 256.001\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#f0f0f0\"\n  },\n  d: \"M155.826 133.564c0-37.298 26.213-68.456 61.217-76.101a78.208 78.208 0 0 0-16.696-1.811c-43.031 0-77.913 34.882-77.913 77.913s34.882 77.913 77.913 77.913c5.733 0 11.315-.637 16.696-1.812-35.004-7.645-61.217-38.803-61.217-76.102zM256 61.217l5.526 17.005h17.881L264.94 88.733l5.526 17.005L256 95.229l-14.466 10.509 5.526-17.005-14.466-10.511h17.88z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#f0f0f0\"\n  },\n  d: \"m212.625 94.608 5.525 17.006h17.881l-14.466 10.51 5.526 17.005-14.466-10.509-14.468 10.509 5.527-17.005-14.467-10.51h17.881zM299.376 94.608l5.527 17.006h17.88l-14.467 10.51 5.527 17.005-14.467-10.509-14.466 10.509 5.526-17.005-14.466-10.51h17.88zM282.681 144.695l5.526 17.006h17.88l-14.466 10.51 5.526 17.005-14.466-10.509-14.466 10.509 5.526-17.005-14.466-10.51h17.879zM229.32 144.695l5.525 17.006h17.882l-14.467 10.51 5.527 17.005-14.467-10.509-14.467 10.509 5.526-17.005-14.466-10.51h17.881z\"\n}));\nexport default SvgSingapore;","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgIndia = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 512 512\",\n  style: {\n    enableBackground: \"new 0 0 512 512\"\n  },\n  xmlSpace: \"preserve\"\n}, props), /*#__PURE__*/React.createElement(\"circle\", {\n  style: {\n    fill: \"#f0f0f0\"\n  },\n  cx: 256,\n  cy: 256,\n  r: 256\n}), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#ff9811\"\n  },\n  d: \"M256 0C154.506 0 66.81 59.065 25.402 144.696h461.195C445.19 59.065 357.493 0 256 0z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#6da544\"\n  },\n  d: \"M256 512c101.493 0 189.19-59.065 230.598-144.696H25.402C66.81 452.935 154.506 512 256 512z\"\n}), /*#__PURE__*/React.createElement(\"circle\", {\n  style: {\n    fill: \"#0052b4\"\n  },\n  cx: 256,\n  cy: 256,\n  r: 89.043\n}), /*#__PURE__*/React.createElement(\"circle\", {\n  style: {\n    fill: \"#f0f0f0\"\n  },\n  cx: 256,\n  cy: 256,\n  r: 55.652\n}), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#0052b4\"\n  },\n  d: \"m256 187.326 17.169 38.938 42.304-4.601L290.337 256l25.136 34.337-42.304-4.601L256 324.674l-17.169-38.938-42.304 4.6L221.663 256l-25.136-34.337 42.304 4.601z\"\n}));\nexport default SvgIndia;","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgColombia = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 512 512\",\n  style: {\n    enableBackground: \"new 0 0 512 512\"\n  },\n  xmlSpace: \"preserve\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#ffda44\"\n  },\n  d: \"M0 256C0 114.616 114.616 0 256 0s256 114.616 256 256l-256 22.261L0 256z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#d80027\"\n  },\n  d: \"M34.256 384C78.521 460.516 161.245 512 256 512s177.479-51.484 221.744-128L256 367.304 34.256 384z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#0052b4\"\n  },\n  d: \"M477.744 384C499.526 346.346 512 302.631 512 256H0c0 46.631 12.474 90.346 34.256 128h443.488z\"\n}));\nexport default SvgColombia;","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgSpain = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 512 512\",\n  style: {\n    enableBackground: \"new 0 0 512 512\"\n  },\n  xmlSpace: \"preserve\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#ffda44\"\n  },\n  d: \"M0 256c0 31.314 5.633 61.31 15.923 89.043L256 367.304l240.077-22.261C506.367 317.31 512 287.314 512 256s-5.633-61.31-15.923-89.043L256 144.696 15.923 166.957C5.633 194.69 0 224.686 0 256z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#d80027\"\n  },\n  d: \"M496.077 166.957C459.906 69.473 366.071 0 256 0S52.094 69.473 15.923 166.957h480.154zM15.923 345.043C52.094 442.527 145.929 512 256 512s203.906-69.473 240.077-166.957H15.923z\"\n}));\nexport default SvgSpain;","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgHongKong = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 512 512\",\n  style: {\n    enableBackground: \"new 0 0 512 512\"\n  },\n  xmlSpace: \"preserve\"\n}, props), /*#__PURE__*/React.createElement(\"circle\", {\n  style: {\n    fill: \"#d80027\"\n  },\n  cx: 256,\n  cy: 256,\n  r: 256\n}), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#f0f0f0\"\n  },\n  d: \"M282.43 193.668c-5.818 24.199-16.155 19.584-21.228 40.688-29.883-7.185-48.287-37.235-41.102-67.12 7.182-29.883 37.235-48.287 67.119-41.102-10.147 42.207.416 45.891-4.789 67.534zM204.887 211.6c21.217 13.01 13.633 21.417 32.135 32.764-16.068 26.201-50.333 34.416-76.535 18.349-26.201-16.067-34.418-50.334-18.35-76.535 37.006 22.692 43.771 13.785 62.75 25.422zM197.978 290.892c18.931-16.158 24.58-6.348 41.089-20.438 19.955 23.377 17.179 58.505-6.197 78.46-23.378 19.955-58.506 17.176-78.458-6.199 33.014-28.183 26.633-37.372 43.566-51.823zM271.254 321.965c-9.52-22.997 1.556-25.341-6.743-45.394 28.399-11.753 60.951 1.741 72.705 30.14 11.753 28.399-1.743 60.95-30.142 72.704-16.597-40.109-27.306-36.88-35.82-57.45zM323.45 261.876c-24.813 1.947-23.622-9.313-45.257-7.615-2.403-30.639 20.491-57.43 51.132-59.835 30.64-2.399 57.43 20.493 59.832 51.135-43.277 3.393-43.516 14.576-65.707 16.315z\"\n}));\nexport default SvgHongKong;","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgTaiwan = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 512 512\",\n  style: {\n    enableBackground: \"new 0 0 512 512\"\n  },\n  xmlSpace: \"preserve\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#d80027\"\n  },\n  d: \"M512 256c0 141.384-114.616 256-256 256S0 397.384 0 256L256 0c141.384 0 256 114.616 256 256z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#0052b4\"\n  },\n  d: \"M256 256V0C114.616 0 0 114.616 0 256h256z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#f0f0f0\"\n  },\n  d: \"m222.609 149.821-31.265 14.708 16.648 30.279-33.949-6.496-4.303 34.297-23.646-25.224-23.648 25.224-4.301-34.297-33.95 6.494 16.648-30.279-31.264-14.706 31.265-14.705-16.649-30.28 33.949 6.495 4.303-34.296 23.647 25.224 23.647-25.224 4.302 34.296 33.95-6.495-16.649 30.281z\"\n}), /*#__PURE__*/React.createElement(\"circle\", {\n  style: {\n    fill: \"#0052b4\"\n  },\n  cx: 146.098,\n  cy: 149.816,\n  r: 47.653\n}), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#f0f0f0\"\n  },\n  d: \"M146.094 175.213c-14.001 0-25.391-11.391-25.391-25.392s11.391-25.392 25.391-25.392c14.001 0 25.392 11.391 25.392 25.392-.001 14.001-11.393 25.392-25.392 25.392z\"\n}));\nexport default SvgTaiwan;","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgWorldwide = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 511.999 511.999\",\n  style: {\n    enableBackground: \"new 0 0 511.999 511.999\"\n  },\n  xmlSpace: \"preserve\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#03aa6f\"\n  },\n  d: \"m441.374 79.519-26.485 17.656-44.141-8.828-26.485-8.828-35.313 8.828-26.485-8.828 17.656-35.313h35.313l34.607-17.303a252.853 252.853 0 0 1 71.333 52.616zM238.325 44.206l-8.828 26.485-26.485 8.828-26.485 44.141-44.141 26.485-61.797 8.828v26.485l17.656 17.656v35.313L61.762 220.77l-26.485-17.656-15.361-46.171A255.855 255.855 0 0 1 160.284 18.604l25.072 16.774 52.969 8.828zM255.982 291.395l-8.828 44.141-35.313 35.313v26.485l-35.313 26.484v44.141l-26.484-8.828-17.657-44.141v-88.282l-44.141-8.828-17.656-35.313v-26.485l17.656-17.656 26.485-26.485 17.656 35.313h61.797l26.485 44.141zM479.335 130.987c48.193 85.978 42.702 191.996-14.125 272.526l-23.836-23.836v-35.313l-17.656-35.313-17.656-35.313v-35.313l-26.485-17.656-35.313 8.828-61.797-26.485-8.828-61.797 26.485-26.485h52.969l17.656 26.485 52.969 8.828 52.969-17.656 2.648-1.5z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n  style: {\n    fill: \"#86daf1\"\n  },\n  d: \"m308.951 88.347 35.313-8.828 26.485 8.828 44.141 8.828 26.485-17.656a252.12 252.12 0 0 1 37.961 51.468l-2.648 1.501-52.969 17.656-52.969-8.828-17.656-26.485h-52.969l-26.485 26.485 8.828 61.797 61.797 26.485 35.313-8.828 26.485 17.656v35.313l17.656 35.313 17.656 35.313v35.313l23.836 23.836c-81.528 115.526-241.275 143.079-356.792 61.55-98.108-69.249-134.913-197.373-88.503-308.122l15.361 46.171 26.485 17.656 26.485 17.656-17.657 17.657v26.485l17.656 35.313 44.141 8.828v88.282l17.656 44.141 26.485 8.828v-44.141l35.313-26.485v-26.485l35.313-35.313 8.828-44.141h-35.313l-26.485-44.141h-61.797l-17.656-35.313-26.485 26.485v-35.313L70.59 185.457v-26.485l61.797-8.828 44.141-26.485 26.485-44.141 26.485-8.828 8.828-26.485-52.969-8.828-25.072-16.774a256.035 256.035 0 0 1 209.758 8.299l-34.607 17.303h-35.313l-17.656 35.313 26.484 8.829z\"\n}));\nexport default SvgWorldwide;","import {\n\tUSA,\n\tCanada,\n\tUK,\n\tAustralia,\n\tGermany,\n\tFrance,\n\tBrazil,\n\tMexico,\n\tPhilippines,\n\tSouthAfrica,\n\tSingapore,\n\tIndia,\n\tColombia,\n\tSpain,\n\tKorea,\n\tHongKong,\n\tTaiwan,\n\tChina,\n\tWorld,\n} from './flags';\n\nexport const DefaultCulturePreference = {\n\tflagUrl: World,\n\tshortName: 'Other',\n\tlongName: 'Other',\n\tculturePreference: 'en-US',\n};\n\nexport const CulturePreferences = [\n\t{ flagUrl: USA, shortName: 'EN', longName: 'EN (English)', culturePreference: 'en-US' },\n\t{ flagUrl: USA, shortName: 'ES', longName: 'ES (Español)', culturePreference: 'es-US' },\n\t{ flagUrl: Canada, shortName: 'EN', longName: 'EN (English)', culturePreference: 'en-CA' },\n\t{ flagUrl: Canada, shortName: 'FR', longName: 'FR (Français)', culturePreference: 'fr-CA' },\n\t{ flagUrl: UK, shortName: 'EN', longName: 'EN (English)', culturePreference: 'en-GB' },\n\t{ flagUrl: Australia, shortName: 'EN', longName: 'EN (English)', culturePreference: 'en-AU' },\n\t{ flagUrl: Germany, shortName: 'DE', longName: 'DE (Deutsch)', culturePreference: 'de-DE' },\n\t{ flagUrl: Brazil, shortName: 'PT', longName: 'PT (Português)', culturePreference: 'pt-BR' },\n\t{ flagUrl: Mexico, shortName: 'ES', longName: 'ES (Español)', culturePreference: 'es-MX' },\n\t{ flagUrl: France, shortName: 'FR', longName: 'FR (Français)', culturePreference: 'fr-FR' },\n\t{\n\t\tflagUrl: Philippines,\n\t\tshortName: 'EN',\n\t\tlongName: 'EN (English)',\n\t\tculturePreference: 'en-PH',\n\t},\n\t{\n\t\tflagUrl: SouthAfrica,\n\t\tshortName: 'EN',\n\t\tlongName: 'EN (English)',\n\t\tculturePreference: 'en-ZA',\n\t},\n\t{ flagUrl: Singapore, shortName: 'EN', longName: 'EN (English)', culturePreference: 'en-SG' },\n\t{ flagUrl: India, shortName: 'EN', longName: 'EN (English)', culturePreference: 'en-IN' },\n\t{ flagUrl: Colombia, shortName: 'ES', longName: 'ES (Español)', culturePreference: 'es-CO' },\n\t{ flagUrl: Spain, shortName: 'ES', longName: 'ES (Español)', culturePreference: 'es-ES' },\n\t{\n\t\tflagUrl: Korea,\n\t\tshortName: 'KO',\n\t\tlongName: 'KO (한국어)',\n\t\tculturePreference: 'ko-KR',\n\t},\n\t{ flagUrl: HongKong, shortName: '繁', longName: '繁 (繁體中文)', culturePreference: 'zh-HK' },\n\t{ flagUrl: Taiwan, shortName: '繁', longName: '繁 (繁體中文)', culturePreference: 'zh-TW' },\n\t{ flagUrl: China, shortName: '简', longName: '简 (简体中文)', culturePreference: 'zh-CN' },\n];\n\nexport const InContextLocalizationCulturePreference = {\n\tflagUrl: World,\n\tshortName: 'Localizing',\n\tlongName: 'Localization',\n\tculturePreference: 'af-ZA',\n};\n\nexport const getFilteredCultures = displayedCultures => {\n\tif (!displayedCultures) {\n\t\treturn null;\n\t}\n\n\tconst displayedCulturesAsSet = new Set(displayedCultures);\n\treturn CulturePreferences.filter(c => displayedCulturesAsSet.has(c.culturePreference));\n};\n","import styled, { css } from 'styled-components';\nimport { LinkButton } from '@faithlife/commerce-components';\nimport { Text } from '@faithlife/styled-ui';\nimport { GlobeSvg } from '../svgs';\nimport ChevronIcon from '../shared/chevron-icon';\nexport { ChevronIcon as BackChevronIcon };\n\nexport const Container = styled(Text).attrs({ as: 'div', textStyle: 'ui.18' })`\n\tletter-spacing: 0.05px;\n\tline-height: ${({ theme }) => theme.lineHeights[3]};\n\tcolor: ${({ theme }) => theme.colors.headerText};\n\twidth: 100%;\n\tdisplay: block;\n\n\t${({ theme }) => theme.mediaQueries.desktop} {\n\t\tposition: relative;\n\t\twidth: auto;\n\t}\n`;\n\nexport const GlobeIcon = styled(GlobeSvg)`\n\twidth: 16px;\n\theight: 16px;\n\tcolor: ${({ theme }) => theme.colors.headerText};\n\n\t[fill]:not([fill='none']) {\n\t\tfill: currentColor;\n\t}\n\n\t${({ theme }) => theme.mediaQueries.desktop} {\n\t\twidth: 20px;\n\t\theight: 20px;\n\t}\n`;\n\nexport const MobileButtonLabel = styled(Text).attrs({ as: 'span', textStyle: 'ui.16' })`\n\tletter-spacing: normal;\n\tline-height: ${({ theme }) => theme.lineHeights[3]};\n\tcolor: var(--color-primary);\n\n\t${({ theme }) => theme.mediaQueries.desktop} {\n\t\tdisplay: none;\n\t}\n`;\n\nexport const DesktopButtonLabel = styled(Text).attrs({ as: 'span', textStyle: 'ui.16' })`\n\tletter-spacing: normal;\n\tline-height: ${({ theme }) => theme.lineHeights[3]};\n\tmargin-left: ${({ theme }) => theme.space[2]};\n\tdisplay: none;\n\n\t${({ theme }) => theme.mediaQueries.desktop} {\n\t\tdisplay: inherit;\n\t}\n`;\n\nexport const LabelGroup = styled.span`\n\tdisplay: flex;\n\talign-items: center;\n\tgap: ${({ theme }) => theme.space[3]};\n\n\t${({ theme }) => theme.mediaQueries.desktop} {\n\t\tgap: 0;\n\t}\n`;\n\nexport const Button = styled.button`\n\tbackground-color: transparent;\n\tborder: none;\n\tcolor: ${({ theme }) => theme.colors.headerText};\n\talign-items: center;\n\tpadding: 12px 16px;\n\tcursor: pointer;\n\tletter-spacing: 0.05px;\n\ttransition: color 0.15s ease-in-out;\n\tdisplay: flex;\n\tflex-direction: row;\n\tjustify-content: space-between;\n\twidth: 100%;\n\n\t${({ theme }) => theme.mediaQueries.desktop} {\n\t\tgap: 0;\n\t\twidth: auto;\n\t\tjustify-content: flex-start;\n\t\tpadding: 0;\n\t}\n\n\t${DesktopButtonLabel} {\n\t\ttransition: color 0.15s ease-in-out;\n\t}\n\n\t${ChevronIcon} {\n\t\tdisplay: block;\n\t\ttransform: rotate(-90deg);\n\n\t\t${({ theme }) => theme.mediaQueries.desktop} {\n\t\t\ttransform: none;\n\t\t\tdisplay: block;\n\t\t}\n\t}\n\n\t&:focus {\n\t\toutline: none;\n\t}\n\n\t&:hover {\n\t\tcolor: ${({ theme }) => theme.colors.brandColor};\n\n\t\t${GlobeIcon} {\n\t\t\tcolor: ${({ theme }) => theme.colors.brandColor};\n\t\t}\n\n\t\t${DesktopButtonLabel} {\n\t\t\tcolor: ${({ theme }) => theme.colors.brandColor};\n\t\t}\n\t}\n`;\n\nexport const DownIcon = styled.img`\n\tmargin-left: ${({ theme }) => theme.space[2]};\n\tdisplay: none;\n\ttransition: transform 0.2s ease-in-out;\n\n\t${({ theme }) => theme.mediaQueries.desktop} {\n\t\tdisplay: inherit;\n\t}\n\n\t${({ open }) =>\n\t\topen &&\n\t\tcss`\n\t\t\ttransform: rotate(180deg);\n\t\t`}\n`;\n\nexport const Popup = styled.div`\n\tz-index: 21;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tdisplay: flex;\n\tflex-direction: column;\n\tbackground-color: ${({ theme }) => theme.colors.headerNavMobileBackground || 'white'};\n\tfont-weight: normal;\n\toverflow-y: auto;\n\toverflow-x: hidden;\n\ttransform: translateX(100%);\n\ttransition:\n\t\ttransform 0.3s cubic-bezier(0.4, 0, 0.2, 1),\n\t\tvisibility 0s linear 0.3s;\n\tvisibility: hidden;\n\n\t${({ open }) =>\n\t\topen &&\n\t\tcss`\n\t\t\ttransform: translateX(0);\n\t\t\tvisibility: visible;\n\t\t\ttransition:\n\t\t\t\ttransform 0.3s cubic-bezier(0.4, 0, 0.2, 1),\n\t\t\t\tvisibility 0s linear 0s;\n\t\t`}\n\n\t${({ theme }) => theme.mediaQueries.desktop} {\n\t\tposition: absolute;\n\t\ttop: 100%;\n\t\tleft: inherit;\n\t\tbottom: auto;\n\t\theight: auto;\n\t\twidth: 205px;\n\t\toverflow: visible;\n\t\tborder-bottom: 1px solid ${({ theme }) => theme.colors.borderColor};\n\t\tbox-shadow: 0px 0px 10px 0px rgba(69, 86, 118, 0.1);\n\t\tbackground-color: white;\n\t\tflex-flow: column wrap;\n\t\ttransform: none;\n\t\ttransition: none;\n\t\tvisibility: hidden;\n\t\tdisplay: none;\n\n\t\t${({ open }) =>\n\t\t\topen &&\n\t\t\tcss`\n\t\t\t\tvisibility: visible;\n\t\t\t\tdisplay: flex;\n\t\t\t`}\n\t}\n\n\t@media (min-width: 1024px) and (max-height: 1024px) {\n\t\t${({ open }) =>\n\t\t\topen &&\n\t\t\tcss`\n\t\t\t\twidth: auto;\n\t\t\t\tdisplay: grid;\n\t\t\t\tgrid-template-columns: repeat(${({ itemCount }) => (itemCount > 7 ? 2 : 1)}, max-content);\n\t\t\t`}\n\t}\n\n\t@media (min-width: 1024px) and (max-height: 512px) {\n\t\t${({ open }) =>\n\t\t\topen &&\n\t\t\tcss`\n\t\t\t\tdisplay: grid;\n\t\t\t\tgrid-template-columns: repeat(${({ itemCount }) => (itemCount > 7 ? 3 : 1)}, max-content);\n\t\t\t`}\n\t}\n`;\n\nexport const Row = styled(LinkButton).attrs({\n\tintent: 'none',\n\tscale: 'sm',\n\ttouchTarget: 'sm',\n})`\n\theight: 48px;\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n\tpadding: ${({ theme }) => theme.space[4]};\n\tfont-size: 16px;\n\tfont-weight: normal;\n\tfont-style: normal;\n\tcolor: ${({ theme }) => theme.colors.headerText};\n\tcursor: pointer;\n\tbox-sizing: border-box;\n\tletter-spacing: 0.05px;\n\ttransition: color 0.15s ease-in-out;\n\tgap: 0;\n\n\t&::before {\n\t\tdisplay: none;\n\t}\n\n\t& > span {\n\t\tdisplay: contents;\n\t\tfont: inherit;\n\t\tletter-spacing: inherit;\n\t}\n\n\t&:hover:not(:active) {\n\t\tbackground-color: ${({ theme }) => theme.colors.headerNavMobileDropdownBackground || '#f4f4f4'};\n\t\topacity: 1;\n\t}\n\n\t${({ $isSelected }) =>\n\t\t$isSelected &&\n\t\tcss`\n\t\t\tbackground-color: ${({ theme }) => theme.colors.headerNavMobileDropdownBackground || '#f4f4f4'};\n\t\t\tfont-weight: bold;\n\t\t`}\n`;\n\nexport { ChevronIcon };\n\nexport const FlagIcon = styled.span`\n\twidth: 16px;\n\theight: 16px;\n\tmargin-right: ${({ theme }) => theme.space[3]};\n\n\t${({ theme }) => theme.mediaQueries.desktop} {\n\t\twidth: 20px;\n\t\theight: 20px;\n\t}\n`;\n\nexport const MobileHeader = styled.div`\n\tletter-spacing: 0.05px;\n\tline-height: 20px;\n\twidth: 100%;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: ${({ theme }) => theme.space[3]};\n\tpadding: ${({ theme }) => theme.space[5]};\n\tborder: none;\n\tbackground-color: ${({ theme }) => theme.colors.headerNavMobileBackground || theme.colors.white};\n\tfont-size: 16px;\n\tcolor: ${({ theme }) => theme.colors.headerNavMobileText || theme.colors.black};\n\tfont-weight: 600;\n\tjustify-content: center;\n\tposition: sticky;\n\ttop: 0;\n\tz-index: 2;\n\n\t@media (min-width: 768px) {\n\t\tpadding-left: 24px;\n\t\tpadding-right: 24px;\n\t}\n\n\t${({ theme }) => theme.mediaQueries.desktop} {\n\t\tdisplay: none;\n\t}\n`;\n\nexport const MobileBackButton = styled.button`\n\tbackground: none;\n\tborder: none;\n\tpadding: 0;\n\tcursor: pointer;\n\tposition: absolute;\n\ttop: ${({ theme }) => theme.space[5]};\n\tleft: ${({ theme }) => theme.space[5]};\n\n\t${ChevronIcon} {\n\t\tcolor: ${({ theme }) => theme.colors.brandColor};\n\t\ttransform: rotate(90deg);\n\t\tdisplay: block;\n\t}\n`;\n","import React, { useState, useCallback, useContext, useEffect, useRef } from 'react';\n\nimport styled from 'styled-components';\nimport { useLocation } from '../../../location';\nimport { RouteContext } from '../../../route-context';\nimport { useUniversalHeaderContext } from '../universal-header-context';\nimport { useLocalization } from '../../../localization';\nimport useScreensize from '../../../util/hooks/use-screensize';\nimport { World } from './flags';\nimport {\n\tCulturePreferences,\n\tDefaultCulturePreference,\n\tInContextLocalizationCulturePreference,\n\tgetFilteredCultures,\n} from './culturePreferences';\n\nimport {\n\tContainer,\n\tButton,\n\tDesktopButtonLabel,\n\tPopup,\n\tRow,\n\tFlagIcon,\n\tGlobeIcon,\n\tChevronIcon,\n\tLabelGroup,\n\tMobileHeader,\n\tMobileBackButton,\n\tBackChevronIcon,\n\tMobileButtonLabel,\n} from './styled';\n\nconst LanguageSelectorMobileHeader = styled(MobileHeader)`\n\tjustify-content: flex-start;\n`;\n\nconst LanguageSelectorMobileBackButton = styled(MobileBackButton)`\n\tposition: static;\n`;\n\nfunction InContextLocalizationRows({ inContextLocalizationStatus, culturePreferenceUrl }) {\n\tconst { origin, pathname, search } = useLocation();\n\tconst currentHref = `${origin}${pathname}${search}`;\n\tconst rows = [];\n\n\tif (inContextLocalizationStatus === 'available') {\n\t\tconst href = new URL(`${culturePreferenceUrl}/incontext`, currentHref);\n\t\thref.searchParams.set('returnUrl', currentHref);\n\t\trows.push(\n\t\t\t<Row key=\"localization\" $isSelected={false} href={href.toString()}>\n\t\t\t\t<FlagIcon>\n\t\t\t\t\t<World />\n\t\t\t\t</FlagIcon>\n\t\t\t\t<span>{'Localization'}</span>\n\t\t\t</Row>\n\t\t);\n\t}\n\n\tif (inContextLocalizationStatus === 'active') {\n\t\tconst href = new URL(`${culturePreferenceUrl}/incontext/escape`, currentHref);\n\t\thref.searchParams.set('returnUrl', currentHref);\n\t\trows.push(\n\t\t\t<Row key=\"exit-localization\" $isSelected={true} href={href.toString()}>\n\t\t\t\t<FlagIcon>\n\t\t\t\t\t<World />\n\t\t\t\t</FlagIcon>\n\t\t\t\t<span>{'Exit Localization'}</span>\n\t\t\t</Row>\n\t\t);\n\t}\n\n\treturn <>{rows}</>;\n}\n\nexport default function LanguageSelector() {\n\tconst {\n\t\tculturePreference: selectedCulturePreference,\n\t\tdisplayedCultures,\n\t\tinContextLocalizationStatus,\n\t} = useUniversalHeaderContext();\n\n\tconst { routes } = useContext(RouteContext);\n\tconst { isDesktop } = useScreensize();\n\tconst resources = useLocalization('CommerceWeb.Resources.Home._UniversalHeader');\n\tconst culturePreferenceBaseUrl = routes.CulturePreferenceBaseUrl;\n\n\tconst popupRef = useRef(null);\n\tconst [isOpen, setIsOpen] = useState(false);\n\n\tuseEffect(() => {\n\t\tif (!isDesktop) {\n\t\t\tsetIsOpen(false);\n\t\t}\n\t}, [isDesktop]);\n\n\tconst toggleOpen = useCallback(() => {\n\t\tsetIsOpen(prev => !prev);\n\t}, []);\n\n\tconst handleBlur = useCallback(e => {\n\t\tconst currentTarget = e.currentTarget;\n\t\tconst popup = popupRef.current;\n\t\tconst root = popup?.getRootNode() ?? document;\n\n\t\t// Using a setTimeout here to allow the user to click on elements in the popup before this blur method hides it\n\t\tsetTimeout(() => {\n\t\t\tif (!currentTarget.contains(root.activeElement) && popup && !popup.contains(root.activeElement)) {\n\t\t\t\tsetIsOpen(false);\n\t\t\t}\n\t\t}, 0);\n\t}, []);\n\n\tconst filteredCultures = getFilteredCultures(displayedCultures) || CulturePreferences;\n\n\tconst culturePreferenceToDisplay =\n\t\tinContextLocalizationStatus === 'active'\n\t\t\t? InContextLocalizationCulturePreference\n\t\t\t: filteredCultures.find(lang => lang.culturePreference === selectedCulturePreference) || DefaultCulturePreference;\n\n\treturn (\n\t\t<Container>\n\t\t\t<Button onClick={toggleOpen} onBlur={handleBlur}>\n\t\t\t\t<LabelGroup>\n\t\t\t\t\t<GlobeIcon />\n\t\t\t\t\t<MobileButtonLabel>{resources.changeSite}</MobileButtonLabel>\n\t\t\t\t\t<DesktopButtonLabel>{culturePreferenceToDisplay.shortName}</DesktopButtonLabel>\n\t\t\t\t\t<ChevronIcon open={isOpen} />\n\t\t\t\t</LabelGroup>\n\t\t\t</Button>\n\t\t\t<Popup ref={popupRef} open={isOpen} itemCount={filteredCultures.length}>\n\t\t\t\t<LanguageSelectorMobileHeader>\n\t\t\t\t\t<LanguageSelectorMobileBackButton onClick={toggleOpen} aria-label=\"Back\">\n\t\t\t\t\t\t<BackChevronIcon />\n\t\t\t\t\t</LanguageSelectorMobileBackButton>\n\t\t\t\t</LanguageSelectorMobileHeader>\n\t\t\t\t{filteredCultures.map(({ flagUrl: FlagUrl, longName, culturePreference }) => (\n\t\t\t\t\t<Row\n\t\t\t\t\t\tkey={culturePreference}\n\t\t\t\t\t\t$isSelected={culturePreference === selectedCulturePreference}\n\t\t\t\t\t\thref={`${culturePreferenceBaseUrl}/${culturePreference}`}\n\t\t\t\t\t>\n\t\t\t\t\t\t<FlagIcon>\n\t\t\t\t\t\t\t<FlagUrl alt={culturePreference} />\n\t\t\t\t\t\t</FlagIcon>\n\t\t\t\t\t\t<span>{longName}</span>\n\t\t\t\t\t</Row>\n\t\t\t\t))}\n\t\t\t\t<InContextLocalizationRows\n\t\t\t\t\tinContextLocalizationStatus={inContextLocalizationStatus}\n\t\t\t\t\tculturePreferenceUrl={culturePreferenceBaseUrl}\n\t\t\t\t/>\n\t\t\t</Popup>\n\t\t</Container>\n\t);\n}\n","import React, { createContext, useContext } from 'react';\n\nconst MegaMenuRenderModeContext = createContext('desktop');\nconst MegaMenuSectionContext = createContext(false);\n\nexport function MegaMenuRenderModeProvider({ mode, children }) {\n\treturn <MegaMenuRenderModeContext.Provider value={mode}>{children}</MegaMenuRenderModeContext.Provider>;\n}\n\nexport function useMegaMenuRenderMode() {\n\treturn useContext(MegaMenuRenderModeContext);\n}\n\nexport function MegaMenuSectionProvider({ children }) {\n\treturn <MegaMenuSectionContext.Provider value={true}>{children}</MegaMenuSectionContext.Provider>;\n}\n\nexport function useIsInMegaMenuSection() {\n\treturn useContext(MegaMenuSectionContext);\n}\n","import styled, { css } from 'styled-components';\nimport { LinkButton } from '@faithlife/commerce-components';\nimport { Text } from '@faithlife/styled-ui';\nimport { desktopMinWidth } from '../../../util/mobile-utility';\n\nexport const ToggleButton = styled.button`\n\tpadding: ${({ theme }) => theme.space[0]};\n\tbackground: none;\n\tborder: none;\n\tcursor: pointer;\n\n\t@media (min-width: ${desktopMinWidth}px) {\n\t\tdisplay: none;\n\t}\n`;\n\nexport const ToggleButtonSvg = styled.svg`\n\tdisplay: block;\n`;\n\nexport const ToggleButtonHamburgerTopLine = styled.path`\n\tstroke: ${({ theme }) => theme.colors.headerText};\n\ttransition-timing-function: ease-in-out;\n\ttransition-duration: 0.3s;\n\ttransform-origin: center center;\n\n\t${({ open }) =>\n\t\topen &&\n\t\tcss`\n\t\t\ttransform: rotate(48deg) translateY(7px) translateX(-1px);\n\t\t`}\n`;\n\nexport const ToggleButtonHamburgerMiddleLine = styled.path`\n\tstroke: ${({ theme }) => theme.colors.headerText};\n\ttransition-timing-function: ease-in-out;\n\ttransition-duration: 0.3s;\n\n\t${({ open }) =>\n\t\topen &&\n\t\tcss`\n\t\t\topacity: 0;\n\t\t`}\n`;\n\nexport const ToggleButtonHamburgerBottomLine = styled.path`\n\tstroke: ${({ theme }) => theme.colors.headerText};\n\ttransition-timing-function: ease-in-out;\n\ttransition-duration: 0.3s;\n\ttransform-origin: center center;\n\n\t${({ open }) =>\n\t\topen &&\n\t\tcss`\n\t\t\ttransform: rotate(-48deg) translateY(-7px) translateX(1px);\n\t\t`}\n`;\n\nexport const Container = styled(Text).attrs({ as: 'div', textStyle: 'ui.18' })`\n\tfont-family: ${({ theme }) => theme.fonts.normal};\n\tletter-spacing: 0.05px;\n\tline-height: 20px;\n\tdisplay: block;\n\tposition: fixed;\n\tleft: 0;\n\tright: 0;\n\tz-index: 20;\n\toverflow-y: auto;\n\toverflow-x: hidden;\n\tbackground-color: ${({ theme }) => theme.colors.headerNavMobileBackground || theme.colors.white};\n\ttransform: translateX(100%);\n\ttransition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n\n\t${({ $open }) =>\n\t\t$open &&\n\t\tcss`\n\t\t\ttransform: translateX(0);\n\t\t`}\n\n\t@media (min-width: ${desktopMinWidth}px) {\n\t\tdisplay: none;\n\t}\n`;\n\nexport const Menus = styled.div.attrs({ role: 'list' })`\n\tmargin: 0;\n\tpadding: 0;\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 1px;\n\n\t& .builder-personalization-container:has(> .builder-blocks.no-blocks) {\n\t\tdisplay: none;\n\t}\n`;\n\nexport const Menu = styled.div.attrs({ role: 'listitem' })`\n\tpadding: 0;\n`;\n\nexport const MenuLink = styled(LinkButton).attrs({\n\tintent: 'none',\n\tscale: 'lg',\n\ttouchTarget: 'sm',\n})`\n\tfont-family: ${({ theme }) => theme.fonts.normal};\n\tletter-spacing: 0.05px;\n\tline-height: 20px;\n\twidth: 100%;\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: center;\n\tposition: sticky;\n\ttop: 0;\n\tpadding: ${({ theme }) => theme.space[5]};\n\tborder: none;\n\tbackground-color: ${({ theme }) => theme.colors.headerNavMobileDropdownBackground || theme.colors.gray4};\n\tcolor: ${({ theme }) => theme.colors.headerNavMobileText || theme.colors.black};\n\tfont-size: 18px;\n\tfont-weight: 400;\n\tz-index: 2;\n\n\t&::before {\n\t\tdisplay: none;\n\t}\n\n\t& > span {\n\t\tdisplay: contents;\n\t\tfont: inherit;\n\t\tletter-spacing: inherit;\n\t}\n\n\t@media (min-width: 768px) {\n\t\tpadding-left: 24px;\n\t\tpadding-right: 24px;\n\t}\n\n\t${({ $sale }) =>\n\t\t$sale &&\n\t\tcss`\n\t\t\tcolor: #cb3232;\n\t\t\tfont-weight: bold;\n\t\t`}\n\n\t${({ $bold }) =>\n\t\t$bold &&\n\t\tcss`\n\t\t\tfont-weight: bold;\n\t\t`}\n`;\n","import styled, { css } from 'styled-components';\n\nimport { ChevronDownSvg } from '../svgs';\n\nconst ChevronIcon = styled(ChevronDownSvg)`\n\twidth: 20px;\n\theight: 20px;\n\tdisplay: none;\n\ttransition: transform 0.3s ease-in-out;\n\n\t${({ theme }) => theme.mediaQueries.desktop} {\n\t\tdisplay: block;\n\t}\n\n\t${({ open }) =>\n\t\topen &&\n\t\tcss`\n\t\t\ttransform: rotate(180deg);\n\t\t`}\n`;\n\nexport default ChevronIcon;\n","var _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgCart = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n  width: 25,\n  height: 20,\n  viewBox: \"0 0 25 20\",\n  fill: \"none\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n  d: \"M8.293 3.5h14.67a1 1 0 0 1 1 1.27l-1.64 5.73h-11\",\n  stroke: \"currentColor\",\n  strokeLinecap: \"round\",\n  strokeLinejoin: \"round\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n  d: \"M1.293.5h2.26a1 1 0 0 1 1 .71l3.56 11.58a1 1 0 0 0 1 .71h14.18M10.293 19.5a2 2 0 1 0 0-4 2 2 0 0 0 0 4ZM21.293 19.5a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z\",\n  stroke: \"currentColor\",\n  strokeLinecap: \"round\",\n  strokeLinejoin: \"round\"\n})));\nexport default SvgCart;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgChevronDown = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n  width: 20,\n  height: 20,\n  viewBox: \"0 0 20 20\",\n  fill: \"none\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n  d: \"m5 7.5 5 5 5-5\",\n  stroke: \"currentColor\",\n  strokeWidth: 1.5,\n  strokeLinecap: \"round\",\n  strokeLinejoin: \"round\"\n})));\nexport default SvgChevronDown;","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgClose = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n  width: 12,\n  height: 12,\n  viewBox: \"0 0 12 12\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n  stroke: \"#AAA\",\n  strokeWidth: 2,\n  strokeLinecap: \"round\",\n  fill: \"none\",\n  fillRule: \"evenodd\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n  d: \"M11 1 1 11M1 1l10 10M11 1 1 11M1 1l10 10\"\n}))));\nexport default SvgClose;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgDownloadChevron = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n  viewBox: \"0 0 12 12\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n  d: \"M9 4 5.5 8 2 4.022\",\n  stroke: \"#fff\",\n  fill: \"none\"\n})));\nexport default SvgDownloadChevron;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgGlobe = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n  width: 20,\n  height: 20,\n  viewBox: \"0 0 20 20\",\n  fill: \"none\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n  clipRule: \"evenodd\",\n  d: \"M2.114 7.18a8.604 8.604 0 0 0 12.178 10.415.822.822 0 0 1-.185-.727c.031-.164.1-.316.164-.44.066-.126.147-.256.219-.373l.005-.01c.074-.118.143-.229.204-.341.13-.238.192-.417.192-.558v-.002l-.008-.016a.534.534 0 0 0-.12-.119 4.215 4.215 0 0 0-.511-.315l-.159-.09c-.538-.306-1.32-.778-1.56-1.708l-.001-.001c-.195-.764.095-1.312.355-1.708.052-.079.098-.145.139-.204a3.47 3.47 0 0 0 .182-.283.625.625 0 0 0 .1-.304c0-.365.14-.676.4-.9.241-.207.548-.308.841-.358.585-.1 1.32-.03 2.006.085.698.117 1.4.292 1.937.435l.354.095a8.574 8.574 0 0 0-.542-2.774l-.215.083-.162.063c-.4.158-.949.374-1.592.58-.166.054-.351.082-.541.04a.84.84 0 0 1-.465-.283c-.103-.121-.17-.26-.217-.378a4.302 4.302 0 0 1-.124-.376l-.02-.068c-.144-.492-.293-1.003-.723-1.432-.837-.838-1.844-1.88-1.663-3.491a8.61 8.61 0 0 0-2.337-.321c-.938 0-1.84.15-2.686.427l.08.035.346.15c.385.17.838.387 1.25.674.413.285.813.66 1.062 1.157.11.222.133.462.059.693-.068.214-.205.38-.34.507-.261.247-.645.456-1.007.637-.162.082-.32.157-.475.232-.223.107-.442.211-.664.328-.368.194-.654.376-.834.555l-.016.016-.017.015a4.213 4.213 0 0 1-4.89.358Zm.39-.938a3.213 3.213 0 0 0 3.843-.176c.29-.283.682-.517 1.058-.715.23-.12.488-.245.73-.361.152-.073.298-.144.427-.208.368-.184.627-.337.77-.47a.536.536 0 0 0 .053-.058c-.149-.281-.398-.528-.72-.75a6.624 6.624 0 0 0-1.085-.581c-.089-.04-.18-.08-.272-.119a7.507 7.507 0 0 1-.702-.328 1.374 1.374 0 0 1-.232-.162 8.64 8.64 0 0 0-3.87 3.928Zm4.51-4.219.02.02a.259.259 0 0 0 .033-.041 8.18 8.18 0 0 0-.054.021Zm11.222 4.782h.001a8.605 8.605 0 0 0-.157-.367h-.023a.47.47 0 0 0 .179.367ZM13.56 2.058a8.637 8.637 0 0 1 4.337 4.005 19.93 19.93 0 0 0-.173.067l-.166.065c-.396.156-.905.357-1.505.55a3.44 3.44 0 0 1-.107-.319l-.027-.094c-.138-.478-.351-1.215-.968-1.831-.79-.791-1.404-1.475-1.39-2.443Zm5.253 8.723-.135-.037-.444-.12a20.774 20.774 0 0 0-1.846-.415c-.665-.111-1.261-.155-1.671-.085-.204.035-.31.09-.358.13-.028.025-.052.054-.052.142 0 .316-.11.58-.227.792-.077.137-.18.286-.265.411a8.55 8.55 0 0 0-.093.137c-.207.315-.312.558-.223.91.124.48.53.772 1.087 1.089l.129.072c.22.124.47.263.664.415.24.188.511.483.511.924 0 .401-.164.764-.315 1.04-.075.134-.155.265-.225.378l-.01.017a5.336 5.336 0 0 0-.184.31l-.034.07c.035.012.08.023.134.034a8.596 8.596 0 0 0 3.557-6.214ZM.641 10a9.604 9.604 0 1 1 19.208 0A9.604 9.604 0 0 1 .641 10Zm5.826.039c-.455.155-.777.377-.952.636-.131.196-.184.35-.2.483-.015.134.004.283.07.474.118.335.344.703.666 1.23l.27.443c.288.48.481.985.644 1.444l.102.292c.122.351.23.66.362.94.163.347.341.595.572.76.144.105.329.19.579.239a8.954 8.954 0 0 1-.083-.324c-.167-.715-.304-1.79.078-3.222.302-1.123.947-1.623 1.374-1.953l.096-.075c.222-.175.27-.244.286-.292.008-.026.038-.145-.136-.494-.085-.169-.315-.368-.735-.53-.406-.157-.923-.251-1.463-.263a4.56 4.56 0 0 0-1.53.212Zm2.223 7.37-.001-.012a.048.048 0 0 1 0 .012Zm1.13-8.252c.52.2 1.021.523 1.268 1.014l.001.001c.221.443.32.857.193 1.25-.12.372-.414.608-.618.769l-.096.075c-.402.313-.814.634-1.027 1.426-.33 1.236-.21 2.14-.07 2.736.036.153.073.287.107.41l.005.018c.031.109.064.226.083.326a.816.816 0 0 1-.028.473.587.587 0 0 1-.272.295.664.664 0 0 1-.307.071c-.676 0-1.214-.16-1.642-.468-.423-.304-.692-.72-.893-1.145a10.945 10.945 0 0 1-.411-1.066l-.09-.26c-.159-.446-.326-.871-.56-1.262-.079-.131-.157-.26-.235-.385-.33-.54-.63-1.027-.786-1.47a2.037 2.037 0 0 1-.12-.92c.037-.324.162-.629.363-.928.34-.505.885-.83 1.461-1.025a5.554 5.554 0 0 1 1.873-.265c.632.014 1.267.124 1.801.33Z\",\n  fill: \"currentColor\",\n  fillRule: \"evenodd\"\n})));\nexport default SvgGlobe;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgHandset = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n  width: 16,\n  height: 20,\n  viewBox: \"0 0 16 20\",\n  fill: \"none\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n  d: \"m3.894 12.013.05.083.049.09c3.08 5.351 8.364 8.497 9.346 6.845l1.239-2.353a.693.693 0 0 0-.05-.669c-.173-.338-.33-.346-1.238-.949-.471-.347-.966-.735-1.305-1.024a.776.776 0 0 0-1.04-.041l-.504.504a.957.957 0 0 1-.66.264c-.735 0-2.139-1.998-2.923-3.22a11.843 11.843 0 0 1-.496-.826c-.099-.19-.264-.479-.454-.826-.66-1.296-1.651-3.509-1.296-4.128a.867.867 0 0 1 .561-.43l.694-.19a.776.776 0 0 0 .487-.916c-.083-.429-.157-1.057-.231-1.651-.058-1.082 0-1.222-.19-1.544a.694.694 0 0 0-.561-.38L2.712.528C.79.504.83 6.647 3.895 12.013Z\",\n  stroke: \"currentColor\",\n  strokeMiterlimit: 10\n})));\nexport default SvgHandset;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgLargeMagnifyingGlass = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n  fill: \"none\",\n  viewBox: \"0 0 21 22\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n  clipRule: \"evenodd\",\n  d: \"M1.237 8.917a7 7 0 1 1 11.996 4.903.498.498 0 0 0-.091.092A7 7 0 0 1 1.238 8.917Zm12.293 5.999a8 8 0 1 1 .707-.707l6.022 6.02a.5.5 0 0 1-.708.708l-6.02-6.021Z\",\n  fill: \"currentColor\",\n  fillRule: \"evenodd\"\n})));\nexport default SvgLargeMagnifyingGlass;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgProfile = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n  width: 19,\n  height: 22,\n  viewBox: \"0 0 19 22\",\n  fill: \"none\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n  clipRule: \"evenodd\",\n  d: \"M12.966 5.29a3.372 3.372 0 1 1-6.744 0 3.372 3.372 0 0 1 6.744 0Zm-1.29 3.845a4.372 4.372 0 1 0-4.177-.008 8.725 8.725 0 0 0-6.65 8.474v2.482a1 1 0 0 0 1 1H17.293a1 1 0 0 0 1-1V17.6a8.725 8.725 0 0 0-6.618-8.466Zm-9.827 8.466a7.722 7.722 0 1 1 15.444 0v2.482H1.849V17.6Z\",\n  fill: \"currentColor\",\n  fillRule: \"evenodd\"\n})));\nexport default SvgProfile;","import React, { createContext, useCallback, useContext, useState } from 'react';\n\nconst UniversalHeaderContext = createContext(null);\n\nexport const UniversalHeaderContextProvider = props => {\n\tconst {\n\t\talgoliaAppId,\n\t\talgoliaAppKey,\n\t\talgoliaIndexName,\n\t\talgoliaSearchParametersJson,\n\t\tantiForgeryToken,\n\t\tculturePreference,\n\t\tdisplayedCultures,\n\t\tdomainUri,\n\t\teditUrl,\n\t\tinContextLocalizationStatus,\n\t\tnavKind,\n\t\tcurrentUserInfo,\n\t\tchildren,\n\t} = props;\n\n\tconst [currentOpenMenu, setCurrentOpenMenu] = useState(null);\n\tconst [headerHeight, setHeaderHeight] = useState(48);\n\n\tconst resolveUri = url => (domainUri ? new URL(url, domainUri).href : url);\n\n\treturn (\n\t\t<UniversalHeaderContext.Provider\n\t\t\tvalue={{\n\t\t\t\talgoliaAppId,\n\t\t\t\talgoliaAppKey,\n\t\t\t\talgoliaIndexName,\n\t\t\t\talgoliaSearchParametersJson,\n\t\t\t\tantiForgeryToken,\n\t\t\t\tculturePreference,\n\t\t\t\tdisplayedCultures,\n\t\t\t\tdomainUri,\n\t\t\t\tresolveUri,\n\t\t\t\teditUrl,\n\t\t\t\tcurrentUserInfo,\n\t\t\t\theaderHeight,\n\t\t\t\tnavKind,\n\t\t\t\tinContextLocalizationStatus,\n\t\t\t\tsetHeaderHeight,\n\t\t\t\tcurrentOpenMenu,\n\t\t\t\tsetCurrentOpenMenu,\n\t\t\t}}\n\t\t>\n\t\t\t{children}\n\t\t</UniversalHeaderContext.Provider>\n\t);\n};\n\nexport const useUniversalHeaderContext = () => useContext(UniversalHeaderContext);\n\nexport const useOpenMenu = menuName => {\n\tconst { currentOpenMenu, setCurrentOpenMenu } = useUniversalHeaderContext();\n\n\tconst isCurrentOpenMenu = menuName === currentOpenMenu;\n\n\tconst setIsCurrentOpenMenu = useCallback(\n\t\tvalueOrUpdater => {\n\t\t\tsetCurrentOpenMenu(previousOpenMenu => {\n\t\t\t\tconst currentIsCurrentOpenMenu = previousOpenMenu === menuName;\n\n\t\t\t\tlet nextIsCurrentOpenMenu;\n\t\t\t\tif (typeof valueOrUpdater === 'function') {\n\t\t\t\t\tnextIsCurrentOpenMenu = valueOrUpdater(currentIsCurrentOpenMenu);\n\t\t\t\t} else {\n\t\t\t\t\tnextIsCurrentOpenMenu = valueOrUpdater;\n\t\t\t\t}\n\n\t\t\t\tlet nextCurrentOpenMenu = previousOpenMenu;\n\t\t\t\tif (nextIsCurrentOpenMenu) {\n\t\t\t\t\tnextCurrentOpenMenu = menuName;\n\t\t\t\t} else if (currentIsCurrentOpenMenu) {\n\t\t\t\t\t// this executes only if this menuName should be closed, and it is currently open\n\t\t\t\t\t// if this menuName is not open, another menu may be and we should not close it\n\t\t\t\t\tnextCurrentOpenMenu = null;\n\t\t\t\t}\n\n\t\t\t\treturn nextCurrentOpenMenu;\n\t\t\t});\n\t\t},\n\t\t[menuName, setCurrentOpenMenu]\n\t);\n\n\treturn [isCurrentOpenMenu, setIsCurrentOpenMenu];\n};\n","import React, { useContext } from 'react';\n\nimport { DownloadIcon, WebIcon } from '@faithlife/commerce-components';\nimport { CTAButton, CTAMenuButton } from '../cta-buttons';\nimport { RouteContext } from '../../../route-context';\nimport { useLocalization } from '../../../localization';\nimport { useCurrentUser } from '../../per-user-data/per-user-data-context';\nimport { useUniversalHeaderContext } from '../universal-header-context';\n\nexport default function UserSubscribeButton(props) {\n\tconst { domainUri, currentUserInfo } = useUniversalHeaderContext();\n\tconst { userInfo } = useCurrentUser(domainUri, currentUserInfo);\n\tconst { isSubscribed, doesQualifyForSubscriptionFreeTrial } = userInfo;\n\tconst { routes } = useContext(RouteContext);\n\tconst resources = useLocalization('CommerceWeb.Resources.Home._UniversalHeader');\n\tconst { desktopUrl, onlineUrl, isInMobileMegaMenu = false } = props;\n\n\tconst button = !isSubscribed ? (\n\t\t<CTAButton\n\t\t\tisMobile={isInMobileMegaMenu}\n\t\t\thref={routes.ConfigureSubscriptionsUrl}\n\t\t\tdisplayText={doesQualifyForSubscriptionFreeTrial ? resources.StartAFreeTrial : resources.ChooseYourPlan}\n\t\t/>\n\t) : (\n\t\t<CTAMenuButton\n\t\t\tisMobile={isInMobileMegaMenu}\n\t\t\tdisplayText={resources.DownloadLogos} // TODO: consider verbum\n\t\t\titems={[\n\t\t\t\t{ text: resources.download, href: desktopUrl, icon: <DownloadIcon size={16} /> },\n\t\t\t\t{ text: resources.useOnline, href: onlineUrl, icon: <WebIcon size={16} /> },\n\t\t\t]}\n\t\t/>\n\t);\n\n\treturn <>{button}</>;\n}\n","import { createBatchContext } from './use-batch';\n\nexport interface AuthorInfo {\n\tid: string;\n\tdisplayName: string;\n\timageUrlLarge?: string;\n\tlongDescription?: string;\n}\n\nexport const AuthorBatch = createBatchContext<string, AuthorInfo>(\n\tasync ids => {\n\t\tconst nonEmptyIds = ids.filter(id => id);\n\t\tif (nonEmptyIds.length === 0) {\n\t\t\treturn [];\n\t\t}\n\t\tconst response = await fetch(`/api/authors?ids=${nonEmptyIds.join(',')}`);\n\n\t\tif (!response.ok) {\n\t\t\tthrow new Error(`HTTP error! status: ${response.status}`);\n\t\t}\n\n\t\treturn (await response.json()) as AuthorInfo[];\n\t},\n\t(id, data) => data.find(d => d.id === id)\n);\n\nexport function useAuthor(id: string) {\n\treturn AuthorBatch.useData(id);\n}\n","import React, { createContext, useContext, useRef, useEffect, useState, useCallback, PropsWithChildren } from 'react';\n\nconst scheduleTask = (callback: () => void) => {\n\tvoid Promise.resolve().then(callback);\n};\n\nconst toKey = <T,>(id: T): string => (typeof id === 'string' ? id : JSON.stringify(id));\n\nexport type BatchEvent<TData> = { data: TData | undefined; error?: undefined } | { data?: undefined; error: unknown };\n\nexport type BatchSubscriber<TData> = (event: BatchEvent<TData>) => void;\n\nexport function createBatchContext<TId, TData, TContext = undefined>(\n\tbatchFetch: (ids: TId[], context: TContext | undefined) => Promise<TData[]>,\n\tfind: (id: TId, data: TData[]) => TData | undefined,\n\tmaxBatchSize = 100\n) {\n\tinterface ContextValue {\n\t\tsubscribe: (id: TId, subscriber: BatchSubscriber<TData>) => () => void;\n\t\tloadData: (id: TId, options?: { revalidate?: boolean }) => Promise<TData | undefined>;\n\t\tgetCacheData: (id: TId) => TData | undefined;\n\t\trevalidate: () => void;\n\t}\n\n\tconst Context = createContext<ContextValue>({\n\t\tsubscribe: () => () => undefined,\n\t\tloadData: () => Promise.resolve(undefined),\n\t\tgetCacheData: () => undefined,\n\t\trevalidate: () => undefined,\n\t});\n\n\tfunction Provider({\n\t\tchildren,\n\t\tinitialIds,\n\t\tinitialData,\n\t\tcontext,\n\t}: PropsWithChildren<{\n\t\tinitialIds?: TId[];\n\t\tinitialData?: readonly { id: TId; data: TData }[];\n\t\tcontext?: TContext;\n\t}>) {\n\t\tconst contextRef = useRef(context);\n\t\tcontextRef.current = context;\n\n\t\tconst stateRef = useRef({\n\t\t\tscheduled: false,\n\t\t\tinflight: null as Promise<void> | null,\n\t\t\tpendingIds: new Map<string, TId>(),\n\t\t\t// Keys captured by the batch fetch currently in flight. Subscribers for a key already\n\t\t\t// in here must wait for that fetch to resolve instead of being re-queued into another\n\t\t\t// round-trip — otherwise a second subscriber arriving mid-fetch (e.g. a component that\n\t\t\t// mounts/re-subscribes while the first request for the same id is still pending)\n\t\t\t// triggers a redundant duplicate request for data that's already on the way.\n\t\t\tinflightKeys: new Set<string>(),\n\t\t\tsubscribers: new Map<string, Set<BatchSubscriber<TData>>>(),\n\t\t\tids: new Map<string, TId>(),\n\t\t\tcache: new Map<string, TData | undefined>((initialData ?? []).map(({ id, data }) => [toKey(id), data])),\n\t\t});\n\n\t\tconst notify = useCallback((key: string, event: BatchEvent<TData>) => {\n\t\t\tconst subs = stateRef.current.subscribers.get(key);\n\t\t\tif (!subs || subs.size === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (const subscriber of Array.from(subs)) {\n\t\t\t\tsubscriber(event);\n\t\t\t}\n\t\t}, []);\n\n\t\tconst flushBatch = useCallback(() => {\n\t\t\tconst state = stateRef.current;\n\t\t\tif (state.inflight !== null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst entries = Array.from(state.pendingIds.entries());\n\t\t\tstate.pendingIds.clear();\n\n\t\t\tif (entries.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (const [key] of entries) {\n\t\t\t\tstate.inflightKeys.add(key);\n\t\t\t}\n\n\t\t\tconst processChunk = (chunkEntries: [string, TId][]) => {\n\t\t\t\tconst ids = chunkEntries.map(([, id]) => id);\n\t\t\t\tconst keys = chunkEntries.map(([key]) => key);\n\n\t\t\t\treturn batchFetch(ids, contextRef.current)\n\t\t\t\t\t.then(results => {\n\t\t\t\t\t\tfor (let i = 0; i < ids.length; i++) {\n\t\t\t\t\t\t\tconst id = ids[i];\n\t\t\t\t\t\t\tconst key = keys[i];\n\t\t\t\t\t\t\tstate.inflightKeys.delete(key);\n\t\t\t\t\t\t\tif (state.pendingIds.has(key)) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst found = find(id, results);\n\t\t\t\t\t\t\tstate.cache.set(key, found);\n\t\t\t\t\t\t\tnotify(key, { data: found });\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.catch(error => {\n\t\t\t\t\t\tfor (const key of keys) {\n\t\t\t\t\t\t\tstate.inflightKeys.delete(key);\n\t\t\t\t\t\t\tif (!state.pendingIds.has(key)) {\n\t\t\t\t\t\t\t\tnotify(key, { error });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t};\n\n\t\t\tconst chunks: [string, TId][][] = [];\n\t\t\tfor (let i = 0; i < entries.length; i += maxBatchSize) {\n\t\t\t\tchunks.push(entries.slice(i, i + maxBatchSize));\n\t\t\t}\n\n\t\t\tstate.inflight = Promise.all(chunks.map(processChunk))\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-empty-function\n\t\t\t\t.then(() => {})\n\t\t\t\t.finally(() => {\n\t\t\t\t\tstate.inflight = null;\n\t\t\t\t\tif (state.pendingIds.size > 0) {\n\t\t\t\t\t\tscheduleTask(() => {\n\t\t\t\t\t\t\tflushBatch();\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}, [notify]);\n\n\t\tconst scheduleBatch = useCallback(() => {\n\t\t\tconst state = stateRef.current;\n\t\t\tif (state.scheduled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tstate.scheduled = true;\n\t\t\tscheduleTask(() => {\n\t\t\t\tstate.scheduled = false;\n\t\t\t\tflushBatch();\n\t\t\t});\n\t\t}, [flushBatch]);\n\n\t\tconst contextValue = useRef<ContextValue>(undefined as unknown as ContextValue);\n\t\tif (!contextValue.current) {\n\t\t\tconst subscribe = (id: TId, subscriber: BatchSubscriber<TData>) => {\n\t\t\t\tconst state = stateRef.current;\n\t\t\t\tconst key = toKey(id);\n\n\t\t\t\tlet subs = state.subscribers.get(key);\n\t\t\t\tif (!subs) {\n\t\t\t\t\tsubs = new Set();\n\t\t\t\t\tstate.subscribers.set(key, subs);\n\t\t\t\t}\n\t\t\t\tsubs.add(subscriber);\n\t\t\t\tstate.ids.set(key, id);\n\n\t\t\t\tif (state.cache.has(key)) {\n\t\t\t\t\tscheduleTask(() => {\n\t\t\t\t\t\tconst currentSubs = stateRef.current.subscribers.get(key);\n\t\t\t\t\t\tif (currentSubs?.has(subscriber) && state.cache.has(key)) {\n\t\t\t\t\t\t\tsubscriber({ data: state.cache.get(key) });\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else if (!state.inflightKeys.has(key)) {\n\t\t\t\t\tstate.pendingIds.set(key, id);\n\t\t\t\t\tscheduleBatch();\n\t\t\t\t}\n\n\t\t\t\treturn () => {\n\t\t\t\t\tconst currentSubs = stateRef.current.subscribers.get(key);\n\t\t\t\t\tif (!currentSubs) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tcurrentSubs.delete(subscriber);\n\t\t\t\t\tif (currentSubs.size === 0) {\n\t\t\t\t\t\tstateRef.current.subscribers.delete(key);\n\t\t\t\t\t\tstateRef.current.ids.delete(key);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t\tcontextValue.current = {\n\t\t\t\tsubscribe,\n\t\t\t\tloadData: async (id, { revalidate = false } = {}) => {\n\t\t\t\t\tconst state = stateRef.current;\n\t\t\t\t\tif (revalidate) {\n\t\t\t\t\t\tif (state.inflightKeys.has(toKey(id))) {\n\t\t\t\t\t\t\tawait state.inflight;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstate.cache.delete(toKey(id));\n\t\t\t\t\t}\n\t\t\t\t\treturn new Promise<TData | undefined>((resolve, reject) => {\n\t\t\t\t\t\tconst unsubscribe = subscribe(id, event => {\n\t\t\t\t\t\t\tunsubscribe();\n\t\t\t\t\t\t\tif (event.error !== undefined) {\n\t\t\t\t\t\t\t\treject(event.error);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tresolve(event.data);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tgetCacheData: (id: TId) => stateRef.current.cache.get(toKey(id)),\n\t\t\t\trevalidate: () => {\n\t\t\t\t\tconst state = stateRef.current;\n\t\t\t\t\tfor (const key of state.cache.keys()) {\n\t\t\t\t\t\tif (!state.ids.has(key)) {\n\t\t\t\t\t\t\tstate.cache.delete(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (state.ids.size === 0) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tfor (const [key, id] of state.ids) {\n\t\t\t\t\t\tstate.pendingIds.set(key, id);\n\t\t\t\t\t}\n\t\t\t\t\tscheduleBatch();\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tuseEffect(() => {\n\t\t\tif (initialIds && initialIds.length > 0) {\n\t\t\t\tconst state = stateRef.current;\n\t\t\t\tfor (const id of initialIds) {\n\t\t\t\t\tstate.pendingIds.set(toKey(id), id);\n\t\t\t\t}\n\t\t\t\tscheduleBatch();\n\t\t\t}\n\t\t}, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n\t\treturn <Context.Provider value={contextValue.current}>{children}</Context.Provider>;\n\t}\n\n\tfunction useData(id: TId | undefined) {\n\t\tconst { subscribe, getCacheData } = useContext(Context);\n\t\tconst key = id ? toKey(id) : undefined;\n\t\tconst [request, setRequest] = useState(() => ({ subscribe, key }));\n\t\tconst [data, setData] = useState<TData | undefined>(() => (id ? getCacheData(id) : undefined));\n\t\tconst [isLoading, setIsLoading] = useState(() => Boolean(id && data === undefined));\n\t\tconst [error, setError] = useState<Error | undefined>(undefined);\n\n\t\tuseEffect(() => {\n\t\t\tsetRequest(current => (current.subscribe === subscribe && current.key === key ? current : { subscribe, key }));\n\t\t\tif (!id) {\n\t\t\t\tsetData(undefined);\n\t\t\t\tsetError(undefined);\n\t\t\t\tsetIsLoading(false);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst cachedData = getCacheData(id);\n\t\t\tsetData(cachedData);\n\t\t\tsetIsLoading(cachedData === undefined);\n\t\t\tsetError(undefined);\n\n\t\t\tconst unsubscribe = subscribe(id, event => {\n\t\t\t\tif (event.error !== undefined) {\n\t\t\t\t\tconst err = event.error;\n\t\t\t\t\tsetError(err instanceof Error ? err : new Error(String(err)));\n\t\t\t\t} else {\n\t\t\t\t\tsetData(event.data);\n\t\t\t\t\tsetError(undefined);\n\t\t\t\t}\n\t\t\t\tsetIsLoading(false);\n\t\t\t});\n\n\t\t\treturn unsubscribe;\n\t\t}, [id, key, subscribe, getCacheData]);\n\n\t\tif (request.subscribe !== subscribe || request.key !== key) {\n\t\t\tconst cachedData = id ? getCacheData(id) : undefined;\n\t\t\treturn { data: cachedData, isLoading: Boolean(id && cachedData === undefined), error: undefined };\n\t\t}\n\t\treturn { data, isLoading, error };\n\t}\n\n\tfunction useLoadData() {\n\t\treturn useContext(Context).loadData;\n\t}\n\n\tfunction useRevalidate() {\n\t\treturn useContext(Context).revalidate;\n\t}\n\n\tfunction useSubscribe() {\n\t\treturn useContext(Context).subscribe;\n\t}\n\n\treturn { Provider, useData, useLoadData, useRevalidate, useSubscribe };\n}\n","import { useEffect, useState } from 'react';\nimport type { DataResult } from '@faithlife/commerce-components';\n\nconst c_emptyDataResult: DataResult<never> = Object.freeze({\n\tdata: null,\n\tisLoading: false,\n\tisRefetching: false,\n\terror: null,\n});\n\ninterface LoaderState<T> {\n\tkey: unknown[];\n\tresult: DataResult<T> | null;\n}\n\nfunction isSameKey(a: unknown[], b: unknown[]) {\n\treturn a.length === b.length && a.every((value, index) => Object.is(value, b[index]));\n}\n\n// Adapts a promise-returning loader into a commerce-components data hook; see the v19 migration guide.\nexport function useDataLoader<TRest extends unknown[], T>(\n\tloader: ((id: string, ...rest: TRest) => Promise<T | null>) | undefined,\n\tid: string | undefined,\n\t...rest: TRest\n): DataResult<T> {\n\tconst key = [loader, id, ...rest];\n\tconst [state, setState] = useState<LoaderState<T>>(() => ({ key, result: null }));\n\tlet { result } = state;\n\n\tif (!isSameKey(state.key, key)) {\n\t\tresult = null;\n\t\tsetState({ key, result: null });\n\t}\n\n\tuseEffect(() => {\n\t\tif (!loader || !id) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet cancelled = false;\n\t\tloader(id, ...rest).then(\n\t\t\tdata => {\n\t\t\t\tif (!cancelled) {\n\t\t\t\t\tsetState({\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tresult: {\n\t\t\t\t\t\t\tdata: data ?? null,\n\t\t\t\t\t\t\tisLoading: false,\n\t\t\t\t\t\t\tisRefetching: false,\n\t\t\t\t\t\t\terror: null,\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\t(error: unknown) => {\n\t\t\t\tif (!cancelled) {\n\t\t\t\t\tsetState({\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tresult: {\n\t\t\t\t\t\t\tdata: null,\n\t\t\t\t\t\t\tisLoading: false,\n\t\t\t\t\t\t\tisRefetching: false,\n\t\t\t\t\t\t\terror: error instanceof Error ? error : new Error(String(error)),\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\treturn () => {\n\t\t\tcancelled = true;\n\t\t};\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps -- `key` holds every input.\n\t}, key);\n\n\tif (!loader || !id) {\n\t\treturn c_emptyDataResult;\n\t}\n\n\treturn (\n\t\tresult ?? {\n\t\t\tdata: null,\n\t\t\tisLoading: true,\n\t\t\tisRefetching: false,\n\t\t\terror: null,\n\t\t}\n\t);\n}\n","function handler(event) {\n\tconst container = event.target;\n\tconst scripts = container.querySelectorAll('script');\n\tscripts.forEach(script => {\n\t\tscript.parentElement.removeChild(script);\n\t\tconst newScript = document.createElement('script');\n\t\tnewScript.innerText = script.innerText;\n\t\tcontainer.appendChild(newScript);\n\t});\n}\n\n// TODO: balance event listeners. https://faithlife.atlassian.net/browse/CMRC-22166\ndocument.addEventListener('lazyloaded', handler);\n","import React, { createContext, useContext, useMemo } from 'react';\nimport type { LocalizationMap } from '../generated/localization/types';\n\ninterface LocalizationContextValue {\n\tcomponentName: string;\n\tlocale: string;\n\tresources: Record<string, Record<string, string>>;\n}\n\nconst LocalizationContext = createContext<LocalizationContextValue>({\n\tcomponentName: 'UnknownComponent',\n\tlocale: 'en-US',\n\tresources: {},\n});\n\ninterface ServerLocaleProviderProps {\n\tcomponentName: string;\n\tlocale: string;\n\tresources: Record<string, Record<string, string>>;\n\tchildren?: React.ReactNode;\n}\n\nexport function ServerLocaleProvider({ componentName, locale, resources, children }: ServerLocaleProviderProps) {\n\tconst value = useMemo(\n\t\t() => ({ componentName, locale, resources: resources || {} }),\n\t\t[componentName, locale, resources]\n\t);\n\treturn <LocalizationContext.Provider value={value}>{children}</LocalizationContext.Provider>;\n}\n\ninterface UseLocalizationOptions {\n\tsuppressMissingError?: boolean;\n}\n\nexport function useLocalization<K extends keyof LocalizationMap>(\n\tns: K,\n\toptions?: UseLocalizationOptions\n): LocalizationMap[K];\nexport function useLocalization(ns: string, options?: UseLocalizationOptions): Record<string, string>;\nexport function useLocalization(ns: string, options?: UseLocalizationOptions): Record<string, string> {\n\tconst { componentName, resources } = useContext(LocalizationContext);\n\tconst values = resources[ns];\n\tif (!values && !options?.suppressMissingError) {\n\t\tconsole.error(`[useLocalization]: Missing namespace ${ns} for component ${componentName}`);\n\t}\n\treturn values || {};\n}\n\nexport function useLocale(): string {\n\treturn useContext(LocalizationContext).locale;\n}\n","import React, { createContext, useCallback, useContext, useEffect, useRef, useState } from 'react';\n\nexport interface InitialUrl {\n\tpathname: string;\n\tsearch: string;\n\torigin: string;\n}\n\nexport interface LocationContextValue {\n\t/** Current pathname, e.g. \"/cart/checkout\" */\n\tpathname: string;\n\t/** Current search string including \"?\", e.g. \"?foo=bar\" (empty string if none) */\n\tsearch: string;\n\t/** Current origin, e.g. \"https://www.logos.com\" */\n\torigin: string;\n\t/** Full href = origin + pathname + search */\n\thref: string;\n\t/** Parsed URLSearchParams from current search string */\n\tsearchParams: URLSearchParams;\n\t/** Full-page navigation (sets window.location.href). Referentially stable. */\n\tnavigate: (url: string) => void;\n\t/** Update URL via history.pushState without page reload. Triggers re-render. Referentially stable. */\n\tpushUrl: (url: string) => void;\n\t/** Update URL via history.replaceState without page reload. Triggers re-render. Referentially stable. */\n\treplaceUrl: (url: string) => void;\n}\n\nconst LocationContext = createContext<LocationContextValue | null>(null);\n\nfunction getLocationFromWindow(): { pathname: string; search: string; origin: string } {\n\treturn {\n\t\tpathname: window.location.pathname,\n\t\tsearch: window.location.search,\n\t\torigin: window.location.origin,\n\t};\n}\n\nfunction ensureHistoryLocationChangeEvents() {\n\tconst windowWithPatchFlag = window as Window & {\n\t\t__commerceWebLocationChangePatched?: boolean;\n\t};\n\n\tif (windowWithPatchFlag.__commerceWebLocationChangePatched) {\n\t\treturn;\n\t}\n\n\tconst notifyLocationChange = () => {\n\t\twindow.dispatchEvent(new Event('locationchange'));\n\t};\n\n\tconst originalPushState = window.history.pushState;\n\tconst originalReplaceState = window.history.replaceState;\n\n\twindow.history.pushState = function (...args) {\n\t\toriginalPushState.apply(this, args);\n\t\tnotifyLocationChange();\n\t};\n\n\twindow.history.replaceState = function (...args) {\n\t\toriginalReplaceState.apply(this, args);\n\t\tnotifyLocationChange();\n\t};\n\n\twindowWithPatchFlag.__commerceWebLocationChangePatched = true;\n}\n\nexport function LocationProvider({ initialUrl, children }: { initialUrl?: InitialUrl; children: React.ReactNode }) {\n\tconst [locationState, setLocationState] = useState<{ pathname: string; search: string; origin: string }>(() => {\n\t\tif (typeof window !== 'undefined') {\n\t\t\treturn getLocationFromWindow();\n\t\t}\n\t\tif (initialUrl) {\n\t\t\treturn initialUrl;\n\t\t}\n\t\treturn { pathname: '/', search: '', origin: '' };\n\t});\n\n\tconst locationStateRef = useRef(locationState);\n\tlocationStateRef.current = locationState;\n\n\tuseEffect(() => {\n\t\tensureHistoryLocationChangeEvents();\n\n\t\tconst syncFromWindow = () => {\n\t\t\tconst current = getLocationFromWindow();\n\t\t\tconst prev = locationStateRef.current;\n\t\t\tif (current.pathname !== prev.pathname || current.search !== prev.search || current.origin !== prev.origin) {\n\t\t\t\tsetLocationState(current);\n\t\t\t}\n\t\t};\n\n\t\t// Sync immediately in case hydration URL differs from initialUrl\n\t\tsyncFromWindow();\n\n\t\twindow.addEventListener('popstate', syncFromWindow);\n\t\twindow.addEventListener('locationchange', syncFromWindow);\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener('popstate', syncFromWindow);\n\t\t\twindow.removeEventListener('locationchange', syncFromWindow);\n\t\t};\n\t}, []);\n\n\tconst navigate = useCallback((url: string) => {\n\t\twindow.location.href = url;\n\t}, []);\n\n\tconst pushUrl = useCallback((url: string) => {\n\t\twindow.history.pushState(null, '', url);\n\t}, []);\n\n\tconst replaceUrl = useCallback((url: string) => {\n\t\twindow.history.replaceState(null, '', url);\n\t}, []);\n\n\tconst { pathname, search, origin } = locationState;\n\tconst href = `${origin}${pathname}${search}`;\n\tconst searchParams = React.useMemo(() => new URLSearchParams(search), [search]);\n\n\tconst value = React.useMemo<LocationContextValue>(\n\t\t() => ({\n\t\t\tpathname,\n\t\t\tsearch,\n\t\t\torigin,\n\t\t\thref,\n\t\t\tsearchParams,\n\t\t\tnavigate,\n\t\t\tpushUrl,\n\t\t\treplaceUrl,\n\t\t}),\n\t\t[pathname, search, origin, href, searchParams, navigate, pushUrl, replaceUrl]\n\t);\n\n\treturn <LocationContext.Provider value={value}>{children}</LocationContext.Provider>;\n}\n\nexport function useLocation(): LocationContextValue {\n\tconst context = useContext(LocationContext);\n\tif (!context) {\n\t\tthrow new Error(\n\t\t\t'useLocation must be used within a LocationProvider. Ensure TopLevelRenderer wraps your component.'\n\t\t);\n\t}\n\treturn context;\n}\n","import React, { createContext, useMemo } from 'react';\n\ninterface RouteContextValue {\n\troutes: Record<string, string>;\n}\n\nexport const RouteContext = createContext<RouteContextValue>({\n\troutes: {},\n});\n\ninterface ServerRouteProviderProps {\n\troutes: Record<string, string>;\n\tchildren?: React.ReactNode;\n}\n\nexport function ServerRouteProvider({ routes, children }: ServerRouteProviderProps) {\n\tconst value = useMemo(() => ({ routes: routes || {} }), [routes]);\n\treturn <RouteContext.Provider value={value}>{children}</RouteContext.Provider>;\n}\n","import loadable from '@loadable/component';\n\nexport { default as UniversalHeader } from './components/universal-header';\n\nexport const AccountShippingProfiles = loadable(\n\t() => import(/* webpackChunkName: 'account-shipping-profiles' */ './components/account-shipping-profiles')\n);\nexport const BuilderPage = loadable(\n\t() => import(/* webpackChunkName: 'builder-page' */ './components/builder/builder-page')\n);\nexport const BuilderSection = loadable(\n\t() => import(/* webpackChunkName: 'builder-section' */ './components/builder/builder-section')\n);\nexport const UniversalHeaderSection = loadable(\n\t() =>\n\t\timport(/* webpackChunkName: 'universal-header-section' */ './components/universal-header/universal-header-section')\n);\nexport const Cart = loadable(() => import(/* webpackChunkName: 'cart' */ './components/cart'));\nexport const Checkout = loadable(() => import(/* webpackChunkName: 'checkout' */ './components/checkout'));\nexport const ProductDetailsPage = loadable(\n\t() => import(/* webpackChunkName: 'product-details-page' */ './components/product/product-details-page')\n);\nexport const OrderHistory = loadable(\n\t() => import(/* webpackChunkName: 'order-history' */ './components/order-history')\n);\nexport const Preorders = loadable(() => import(/* webpackChunkName: 'preorders' */ './components/preorders'));\nexport const Search = loadable(() => import(/* webpackChunkName: 'search' */ './components/search'));\nexport const ConfigurationWizardSubscriptions = loadable(\n\t() =>\n\t\timport(\n\t\t\t/* webpackChunkName: 'configuration-wizard-subscriptions' */ './components/configuration-wizard/subscriptions'\n\t\t)\n);\nexport const ConfigurationWizardLibraries = loadable(\n\t() => import(/* webpackChunkName: 'configuration-wizard-libraries' */ './components/configuration-wizard/libraries')\n);\n\nexport const PreorderBillingShipping = loadable(\n\t() => import(/* webpackChunkName: 'preorder-billing-shipping' */ './components/preorder-billing-shipping')\n);\n\nexport const UserProfileEditor = loadable(\n\t() => import(/* webpackChunkName: 'user-profile-editor' */ './components/user-profile/user-profile-editor')\n);\n\nexport const AccountSecurity = loadable(\n\t() => import(/* webpackChunkName: 'account-security' */ './components/account-security')\n);\nexport const PaymentMethods = loadable(\n\t() => import(/* webpackChunkName: 'payment-methods' */ './components/payment-methods/index.jsx')\n);\nexport const CheckoutBillingMethods = loadable(\n\t() => import(/* webpackChunkName: 'checkout-payment-methods' */ './components/checkout-payment-methods')\n);\nexport const CheckoutPaymentStatus = loadable(\n\t() => import(/* webpackChunkName: 'checkout-payment-status' */ './components/checkout-payment-status')\n);\nexport const GiftsReceivedHistory = loadable(\n\t() => import(/* webpackChunkName: 'gifts-received' */ './components/gifts-received')\n);\nexport const WishListManager = loadable(\n\t() => import(/* webpackChunkName: 'wish-list-manager' */ './components/wishlists/wish-list-manager.jsx')\n);\nexport const DeviceManagement = loadable(\n\t() => import(/* webpackChunkName: 'device-management' */ './components/device-management')\n);\nexport const Credits = loadable(() => import(/* webpackChunkName: 'credits' */ './components/credits'));\nexport const PrivacyManager = loadable(\n\t() => import(/* webpackChunkName: 'privacy-manager' */ './components/privacy-manager')\n);\nexport const PaymentPlans = loadable(\n\t() => import(/* webpackChunkName: 'payment-plans' */ './components/payment-plans')\n);\nexport const VerificationCodeRequest = loadable(\n\t() => import(/* webpackChunkName: 'license-claim' */ './components/license-claim/verification-code-request')\n);\nexport const AcademicProfile = loadable(\n\t() => import(/* webpackChunkName: 'academic-profile' */ './components/academic-profile')\n);\nexport const AcademicApplication = loadable(\n\t() => import(/* webpackChunkName: 'academic-application' */ './components/academic-program/application')\n);\nexport const ApplicationConfirmation = loadable(\n\t() => import(/* webpackChunkName: 'application-confirmation' */ './components/academic-program/confirmation')\n);\nexport const SubscriptionManagement = loadable(\n\t() => import(/* webpackChunkName: 'subscription-management' */ './components/subscription-management')\n);\nexport const SubscriptionConfirmation = loadable(\n\t() => import(/* webpackChunkName: 'subscription-confirmation' */ './components/subscription-confirmation')\n);\nexport const StyledUIGroupSelector = loadable(\n\t() => import(/* webpackChunkName: 'styled-ui-group-selector' */ './components/styled-ui-group-selector')\n);\nexport const ComparePackages = loadable(\n\t() => import(/* webpackChunkName: 'compare-packages' */ './components/compare-page/compare-packages')\n);\nexport const Notifications = loadable(\n\t() => import(/* webpackChunkName: 'notifications' */ './components/notifications')\n);\nexport const CartNotifications = loadable(\n\t() => import(/* webpackChunkName: 'cart-notifications' */ './components/cart/notifications')\n);\nexport const PreorderForm = loadable(\n\t() => import(/* webpackChunkName: 'preorder-form' */ './components/preorder-form')\n);\nexport const Survey = loadable(() => import(/* webpackChunkName: 'survey' */ './views/shared/survey/survey.jsx'));\nexport const OrderConfirmationSummary = loadable(\n\t() => import(/* webpackChunkName: 'order-confirmation-summary' */ './components/order-confirmation-summary')\n);\n\nexport const WeDoNotSell = loadable(\n\t() => import(/* webpackChunkName: 'we-do-not-sell' */ './components/product/we-do-not-sell')\n);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport * as toplevelComponents from './toplevel-components';\nimport withProviders from './with-providers';\n\nfunction getComponent(componentName) {\n\tif (!(componentName in toplevelComponents)) {\n\t\tthrow new Error(\n\t\t\t`Unknown component '${componentName}'\\nCheck that the component is included in toplevel-components.js and that the names match`\n\t\t);\n\t}\n\n\t// eslint-disable-next-line import/namespace\n\treturn toplevelComponents[componentName];\n}\n\nconst TopLevelRenderer = props => {\n\tconst { componentName, props: componentProps, locale, localizationData, initialUrl, routes } = props;\n\tconst ComponentToRender = getComponent(componentName);\n\tif (!ComponentToRender) {\n\t\tthrow new Error(`Attempted to render unavailable component ${componentName}.`);\n\t}\n\n\tif (routes) {\n\t\tcomponentProps.routes = routes;\n\t}\n\n\treturn withProviders(<ComponentToRender {...componentProps} />, {\n\t\tcomponentName,\n\t\tlocale,\n\t\tlocalizationData,\n\t\tinitialUrl,\n\t\troutes,\n\t\tbrandName: componentProps?.logosOrVerbum,\n\t});\n};\n\nTopLevelRenderer.propTypes = {\n\tcomponentName: PropTypes.string.isRequired,\n\tprops: PropTypes.any,\n};\n\nexport default TopLevelRenderer;\n","import React from 'react';\nimport { ServerLocaleProvider } from './localization';\nimport { LocationProvider } from './location';\nimport { ServerRouteProvider } from './route-context';\nimport { BrandNameContextProvider } from './util/brand-name-context';\n\nexport default function withProviders(\n\trendered,\n\t{ componentName, locale, localizationData, initialUrl, routes, brandName }\n) {\n\tif (locale && localizationData && Object.keys(localizationData).length > 0) {\n\t\trendered = (\n\t\t\t<ServerLocaleProvider componentName={componentName} locale={locale} resources={localizationData}>\n\t\t\t\t{rendered}\n\t\t\t</ServerLocaleProvider>\n\t\t);\n\t}\n\n\tif (routes && Object.keys(routes).length > 0) {\n\t\trendered = <ServerRouteProvider routes={routes}>{rendered}</ServerRouteProvider>;\n\t}\n\n\tif (brandName) {\n\t\trendered = <BrandNameContextProvider brandName={brandName}>{rendered}</BrandNameContextProvider>;\n\t}\n\n\trendered = <LocationProvider initialUrl={initialUrl}>{rendered}</LocationProvider>;\n\n\treturn rendered;\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport TopLevelRenderer from './toplevel-renderer';\n\nglobal.React = React;\nglobal.ReactDOM = ReactDOM;\n\nglobal.TopLevelRenderer = TopLevelRenderer;\n","import React, { useCallback, useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { Button } from '@faithlife/styled-ui';\nimport { fetch } from '../../util/fetch';\nimport { notifySuccess, notifyError } from '../notifications/notification-registry';\nimport { EventsTrackingContext } from '../events-tracking/events-tracking-context';\n\nconst AjaxBuyButton = ({\n\tskuIds,\n\tisSellable,\n\tisOwnedByUser,\n\ttext,\n\tsuccessMessage,\n\terrorMessage,\n\tsize,\n\tvariant,\n\tonClick,\n\tanalyticsTelemetry,\n\t...props\n}) => {\n\tconst { recordAddToCartEvent } = useContext(EventsTrackingContext);\n\tconst handleButtonClick = useCallback(() => {\n\t\tfetch\n\t\t\t.post({ url: '/cart/add', params: { skus: skuIds } })\n\t\t\t.then(() => {\n\t\t\t\tconst event = new CustomEvent('faithlife.sites.cart.count', { detail: skuIds.length });\n\t\t\t\twindow.dispatchEvent(event);\n\t\t\t\tnotifySuccess(successMessage);\n\n\t\t\t\tif (analyticsTelemetry) {\n\t\t\t\t\twindow.dataLayer.push(analyticsTelemetry);\n\t\t\t\t}\n\n\t\t\t\trecordAddToCartEvent(props.productId);\n\n\t\t\t\tonClick?.();\n\t\t\t})\n\t\t\t.catch(error => {\n\t\t\t\tnotifyError(errorMessage);\n\t\t\t\tthrow Error(error);\n\t\t\t});\n\t}, [skuIds, successMessage, analyticsTelemetry, recordAddToCartEvent, props.productId, onClick, errorMessage]);\n\n\treturn (\n\t\t<Button\n\t\t\tdisabled={!isSellable || isOwnedByUser}\n\t\t\tvariant={variant}\n\t\t\tsize={size}\n\t\t\t{...props}\n\t\t\tonClick={handleButtonClick}\n\t\t>\n\t\t\t{text}\n\t\t</Button>\n\t);\n};\n\nAjaxBuyButton.defaultProps = {\n\tsize: 'medium',\n\tvariant: 'primary',\n\tsuccessMessage: 'Item added to cart',\n\terrorMessage: 'There was a problem adding item to cart. Please try again later.',\n};\n\nAjaxBuyButton.propTypes = {\n\tskuIds: PropTypes.arrayOf(PropTypes.string).isRequired,\n\tisSellable: PropTypes.bool.isRequired,\n\tisOwnedByUser: PropTypes.bool.isRequired,\n\ttext: PropTypes.string,\n\tsuccessMessage: PropTypes.string,\n\terrorMessage: PropTypes.string,\n\tsize: PropTypes.string,\n\tvariant: PropTypes.string,\n\tanalyticsTelemetry: PropTypes.object,\n};\nexport default AjaxBuyButton;\n","export function parseMetadata(metadata) {\n\ttry {\n\t\tconst interpretedMetadata = JSON.parse(metadata);\n\t\treturn interpretedMetadata || {};\n\t} catch (e) {\n\t\t// Continue working with invalid json\n\t}\n\treturn { cssClass: '' };\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"menuItem\":\"menu-item--menuItem--M8qqf\"};","import React from 'react';\nimport classNames from 'classnames';\nimport { parseMetadata } from './menu-utilities';\nimport styles from './menu-item.less';\n\nconst MenuItem = ({ title, url, metadata }) => {\n\tconst parsedMetadata = parseMetadata(metadata);\n\treturn (\n\t\t<a\n\t\t\tclassName={classNames(styles.menuItem, parsedMetadata.cssClass)}\n\t\t\thref={url}\n\t\t\ttarget={parsedMetadata.openInNewTab ? '_blank' : null}\n\t\t\trel=\"noreferrer\"\n\t\t>\n\t\t\t{title}\n\t\t</a>\n\t);\n};\n\nexport default MenuItem;\n","// extracted by mini-css-extract-plugin\nexport default {\"sectionContainer\":\"menu-section--sectionContainer--jbBH6\",\"sectionHeader\":\"menu-section--sectionHeader--Uj645 ui2\",\"chevronImage\":\"menu-section--chevronImage--5o5a5\",\"sectionItems\":\"menu-section--sectionItems--bOp-m\",\"openMobileSection\":\"menu-section--openMobileSection--TmkcU\",\"openMobileHeader\":\"menu-section--openMobileHeader--2Vvfm\"};","import React from 'react';\nimport classNames from 'classnames';\nimport MenuItem from './menu-item';\nimport { parseMetadata } from './menu-utilities';\nimport ChevronSmall from './chevron-small.svg';\nimport styles from './menu-section.less';\n\nconst MenuSection = ({ id, header, childItems, isOpenInMobile, handleSelectSection }) => {\n\tconst parsedMetadata = header ? parseMetadata(header.metadata) : null;\n\treturn (\n\t\t<div className={styles.sectionContainer}>\n\t\t\t{header && (\n\t\t\t\t<button\n\t\t\t\t\tclassName={classNames(\n\t\t\t\t\t\tstyles.sectionHeader,\n\t\t\t\t\t\tisOpenInMobile && styles.openMobileHeader,\n\t\t\t\t\t\tparsedMetadata.cssClass\n\t\t\t\t\t)}\n\t\t\t\t\tonClick={e => handleSelectSection(e, id)}\n\t\t\t\t>\n\t\t\t\t\t{header.title}\n\t\t\t\t\t<img src={ChevronSmall} className={styles.chevronImage} alt=\"\" />\n\t\t\t\t</button>\n\t\t\t)}\n\t\t\t<div className={classNames(styles.sectionItems, isOpenInMobile && styles.openMobileSection)}>\n\t\t\t\t{childItems.map(childItem => (\n\t\t\t\t\t<MenuItem key={childItem.id} {...childItem} />\n\t\t\t\t))}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default MenuSection;\n","import React from 'react';\nimport MenuSection from './menu-section';\nimport { parseMetadata } from './menu-utilities.js';\nimport styles from './menu-column.less';\n\nconst getSectionsByType = items => {\n\tconst sections = [];\n\tlet currentSection = null;\n\titems.forEach(item => {\n\t\tconst parsedMetadata = parseMetadata(item.metadata);\n\t\tif (parsedMetadata.type === 'header') {\n\t\t\tcurrentSection = { id: item.id, header: item, childItems: [] };\n\t\t\tsections.push(currentSection);\n\t\t} else if (!currentSection) {\n\t\t\tcurrentSection = { id: `section-${item.id}`, childItems: [item] };\n\t\t\tsections.push(currentSection);\n\t\t} else {\n\t\t\tcurrentSection.childItems.push(item);\n\t\t}\n\t});\n\treturn sections;\n};\n\nconst MenuColumn = ({ childItems, selectedSectionId, handleSelectSection }) => {\n\tconst sections = getSectionsByType(childItems);\n\n\tconst menuSections = sections\n\t\t.filter(section => section.childItems.length > 0)\n\t\t.map(section => (\n\t\t\t<MenuSection\n\t\t\t\tkey={section.id}\n\t\t\t\t{...section}\n\t\t\t\tisOpenInMobile={!section.header || selectedSectionId === section.id}\n\t\t\t\thandleSelectSection={handleSelectSection}\n\t\t\t/>\n\t\t));\n\n\treturn menuSections.length > 0 ? <div className={styles.menuColumn}>{menuSections}</div> : null;\n};\n\nexport default MenuColumn;\n","// extracted by mini-css-extract-plugin\nexport default {\"menuColumn\":\"menu-column--menuColumn--PerBE\"};","// extracted by mini-css-extract-plugin\nexport default {\"topLevelMenuItem\":\"top-level-menu-item--topLevelMenuItem--Ds0D4\",\"topLevelMenuItemLink\":\"top-level-menu-item--topLevelMenuItemLink--6ZWhW\",\"chevronImage\":\"top-level-menu-item--chevronImage--aKa9H\",\"menuDropdown\":\"top-level-menu-item--menuDropdown--TI33b\",\"openMobileHeader\":\"top-level-menu-item--openMobileHeader--NTa+1\",\"openMobileDropdown\":\"top-level-menu-item--openMobileDropdown---E48q\",\"megaMenu\":\"top-level-menu-item--megaMenu--nNA0z\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport MenuColumn from './menu-column';\nimport ChevronSmall from './chevron-small.svg';\nimport { parseMetadata } from './menu-utilities';\nimport styles from './top-level-menu-item.less';\n\nexport default class TopLevelMenuItem extends React.PureComponent {\n\tstatic propTypes = {\n\t\tid: PropTypes.string.isRequired,\n\t\ttitle: PropTypes.string.isRequired,\n\t\turl: PropTypes.string,\n\t\tmetadata: PropTypes.string,\n\t\tchildItems: PropTypes.array,\n\t\tisOpenInMobile: PropTypes.bool,\n\t\thandleSelectTopLevel: PropTypes.func,\n\t\tselectedSectionId: PropTypes.string,\n\t\thandleSelectSection: PropTypes.func,\n\t};\n\n\tgetColumnsByMetadata = sections => {\n\t\tconst columns = [];\n\t\tconst columnIndex = {};\n\t\tsections.forEach(section => {\n\t\t\tconst parsedMetadata = parseMetadata(section.metadata);\n\t\t\tconst columnKey = parsedMetadata.columnId ? parsedMetadata.columnId : 'column-1';\n\t\t\tif (!columnIndex[columnKey]) {\n\t\t\t\tconst newColumn = { columnId: columnKey, childItems: [] };\n\t\t\t\tcolumnIndex[columnKey] = newColumn;\n\t\t\t\tcolumns.push(newColumn);\n\t\t\t}\n\t\t\tcolumnIndex[columnKey].childItems.push(section);\n\t\t});\n\t\treturn columns;\n\t};\n\n\trender() {\n\t\tconst {\n\t\t\tid,\n\t\t\ttitle,\n\t\t\turl,\n\t\t\tmetadata,\n\t\t\tchildItems,\n\t\t\tisOpenInMobile,\n\t\t\thandleSelectTopLevel,\n\t\t\tselectedSectionId,\n\t\t\thandleSelectSection,\n\t\t} = this.props;\n\t\tconst parsedMetadata = parseMetadata(metadata);\n\t\tconst hasChildren = childItems && childItems.length;\n\t\tconst columns = this.getColumnsByMetadata(childItems);\n\t\tconst useMegaMenu = columns && columns.length > 1;\n\n\t\treturn (\n\t\t\t// TODO: Fix this the next time the file is edited.\n\t\t\t// eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions\n\t\t\t<div className={styles.topLevelMenuItem} onClick={e => handleSelectTopLevel(e, id)}>\n\t\t\t\t{hasChildren ? (\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={classNames(\n\t\t\t\t\t\t\t\tstyles.topLevelMenuItemLink,\n\t\t\t\t\t\t\t\tparsedMetadata.cssClass,\n\t\t\t\t\t\t\t\tisOpenInMobile && styles.openMobileHeader\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t<img src={ChevronSmall} className={styles.chevronImage} alt=\"\" role=\"presentation\" />\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={classNames(\n\t\t\t\t\t\t\t\tstyles.menuDropdown,\n\t\t\t\t\t\t\t\tuseMegaMenu && styles.megaMenu,\n\t\t\t\t\t\t\t\tisOpenInMobile && styles.openMobileDropdown\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{columns.map(column => (\n\t\t\t\t\t\t\t\t<MenuColumn\n\t\t\t\t\t\t\t\t\tkey={`${id}-${column.columnId}`}\n\t\t\t\t\t\t\t\t\t{...column}\n\t\t\t\t\t\t\t\t\tselectedSectionId={selectedSectionId}\n\t\t\t\t\t\t\t\t\thandleSelectSection={handleSelectSection}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t) : (\n\t\t\t\t\t<a className={classNames(styles.topLevelMenuItemLink, parsedMetadata.cssClass)} href={url}>\n\t\t\t\t\t\t{title}\n\t\t\t\t\t\t<div className={styles.chevronImage} />\n\t\t\t\t\t</a>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport TopLevelMenuItem from './top-level-menu-item';\n\nimport styles from './index.less';\n\nexport default class NavigationMenu extends React.PureComponent {\n\tstatic propTypes = {\n\t\titems: PropTypes.arrayOf(\n\t\t\tPropTypes.shape({\n\t\t\t\tid: PropTypes.string.isRequired,\n\t\t\t\ttitle: PropTypes.string.isRequired,\n\t\t\t\turl: PropTypes.string,\n\t\t\t\tmetadata: PropTypes.string,\n\t\t\t\tchildItems: PropTypes.array,\n\t\t\t})\n\t\t),\n\t};\n\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tconst firstTopLevelMenuItem = props.items.length ? props.items[0] : null;\n\t\tconst openMenuId = firstTopLevelMenuItem ? firstTopLevelMenuItem.id : '';\n\t\tconst selectedSectionId = this.findFirstSectionId(firstTopLevelMenuItem);\n\t\tthis.state = { openMenuId, selectedSectionId };\n\t}\n\n\tfindFirstSectionId = topLevelMenuItem =>\n\t\ttopLevelMenuItem && topLevelMenuItem.childItems && topLevelMenuItem.childItems.length\n\t\t\t? topLevelMenuItem.childItems[0].id\n\t\t\t: '';\n\n\thandleSelectTopLevel = (e, id) => {\n\t\tconst openMenuId = this.state.openMenuId !== id ? id : '';\n\t\tconst selectedTopLevelMenuItem = this.props.items.find(item => item.id === id);\n\t\tconst selectedSectionId = this.findFirstSectionId(selectedTopLevelMenuItem);\n\t\tthis.setState({ openMenuId, selectedSectionId });\n\t};\n\n\thandleSelectSection = (e, id) => {\n\t\te.stopPropagation();\n\t\tthis.setState({ selectedSectionId: this.state.selectedSectionId !== id ? id : '' });\n\t};\n\n\trender() {\n\t\tconst { openMenuId, selectedSectionId } = this.state;\n\t\tconst { items } = this.props;\n\t\treturn (\n\t\t\t<div className={`${styles.headerNavContainer} js-header-nav`}>\n\t\t\t\t{items.map(menuItem => (\n\t\t\t\t\t<TopLevelMenuItem\n\t\t\t\t\t\tkey={menuItem.id}\n\t\t\t\t\t\tisOpenInMobile={menuItem.id === openMenuId}\n\t\t\t\t\t\thandleSelectTopLevel={this.handleSelectTopLevel}\n\t\t\t\t\t\tselectedSectionId={selectedSectionId}\n\t\t\t\t\t\thandleSelectSection={this.handleSelectSection}\n\t\t\t\t\t\t{...menuItem}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t);\n\t}\n}\n","import { notify } from './notification-registry';\n\nexport const notificationUtility = {\n\tnotify,\n\tnotifyInfo: (message: string) => notify(message, 'info'),\n};\n","import { loadableReady } from '@loadable/component';\nimport AjaxBuyButton from './components/ajax-buy-button';\nimport Menu from './components/menu';\nimport Tooltip from './components/shared/tooltip';\nimport { notificationUtility as NotificationUtility } from './components/notifications/global-utility';\n\nglobal.Menu = Menu;\nglobal.NotificationUtility = NotificationUtility;\nglobal.Tooltip = Tooltip;\nglobal.AjaxBuyButton = AjaxBuyButton;\n\nglobal.loadableReady = loadableReady;\n","window.parent.postMessage(JSON.stringify({ kind: 'ready', url: window.document.location.href }), '*');\n\n/* eslint-disable-next-line */\n__webpack_public_path__ = `${window.CDNBaseAssetsUri || window.__webpack_public_path_prefix__ || ''}/dist/scripts/`;\n\nimport 'whatwg-fetch';\nimport './tailwind.css';\nimport './common.js';\nimport './browser-globals';\nimport smoothscroll from 'smoothscroll-polyfill';\nimport 'lazysizes';\nimport 'lazysizes/plugins/include/ls.include';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport fromEntries from 'object.fromentries';\nimport { loadableReady } from '@loadable/component';\nimport stripe from './components/stripe/stripe';\n\nwindow.ResizeObserver = window.ResizeObserver || ResizeObserver;\n\nstripe(window.layoutViewModel.stripePublishableKey);\n\nsmoothscroll.polyfill();\n\nif (!Object.fromEntries) {\n\tfromEntries.shim();\n}\n\nconst removeNoJsClass = () => {\n\tconst body = document.querySelector('body');\n\tbody.classList.remove('no-js');\n};\n(window.browserGlobalsReadyCallbacks ??= []).push(removeNoJsClass);\n\nif (window.loadableReadyCallbacks?.length > 0) {\n\tloadableReady(() => {\n\t\tfor (const invokeCallback of window.loadableReadyCallbacks) {\n\t\t\ttry {\n\t\t\t\tinvokeCallback();\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error occurred while invoking loadableReady callback:', error);\n\t\t\t}\n\t\t}\n\t\twindow.loadableReadyCallbacks = [];\n\t});\n}\n\nrequire('./lazysizes-script-handler');\nrequire('./util/fetch.js');\nrequire('./util/url');\nrequire('./util/test-utility.js');\n\nrequire('./views/shared/survey.js');\nrequire('./views/subscription/subscriptionSummary.js');\n\n// These imports must stay async. faithlife.sites.lazy.js relies on the 'jqueryAsync'\n// splitChunks cache group (webpack.config.js) because jQuery is no longer a global.\n(window.browserGlobalsReadyCallbacks ??= []).push(() => {\n\tif (document.querySelector('.lazy')) {\n\t\timport(/* webpackChunkName: 'faithlife-sites-lazy' */ './faithlife.sites.lazy.js').then(({ loadAllLazyContent }) =>\n\t\t\tloadAllLazyContent()\n\t\t);\n\t}\n\n\tif (document.querySelector('.js-account-layout')) {\n\t\timport(/* webpackChunkName: 'account-layout' */ './views/accounts/_account-layout.js');\n\t}\n});\n\n// handle events that need to wait for this script to finish loading, that aren't server-side rendered\nif (document.readyState !== 'loading') {\n\thandleBrowserGlobalsReadyCallbacks();\n} else {\n\tdocument.addEventListener(\n\t\t'DOMContentLoaded',\n\t\t() => {\n\t\t\thandleBrowserGlobalsReadyCallbacks();\n\t\t},\n\t\t{ once: true }\n\t);\n}\n\nfunction handleBrowserGlobalsReadyCallbacks() {\n\tif (global.browserGlobalsReadyCallbacks?.length > 0) {\n\t\tfor (const callback of global.browserGlobalsReadyCallbacks) {\n\t\t\ttry {\n\t\t\t\tcallback();\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error occurred while invoking browserGlobalsReady callback:', error);\n\t\t\t}\n\t\t}\n\t\tglobal.browserGlobalsReadyCallbacks = [];\n\t}\n}\n","import React, { createContext, useContext } from 'react';\n\nexport const BrandNameContext = createContext<string | null>(null);\n\nexport interface BrandNameContextProviderProps {\n\tbrandName: string;\n\tchildren: React.ReactNode;\n}\nexport const BrandNameContextProvider = ({ brandName, children }: BrandNameContextProviderProps) => (\n\t<BrandNameContext.Provider value={brandName}>{children}</BrandNameContext.Provider>\n);\n\nexport const useBrandName = () => {\n\tconst brandName = useContext(BrandNameContext);\n\tconst hasWarned = React.useRef(false);\n\tif (!brandName && !hasWarned.current) {\n\t\tconsole.error('[useBrandName]: No brand name provided in context');\n\t\thasWarned.current = true;\n\t}\n\treturn brandName ?? '<unknown>';\n};\n","import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n\treturn twMerge(clsx(inputs));\n}\n","export const checkIsEmailValid = email => {\n\tconst emailRegex = /\\w(?:\\.?[A-Za-z0-9_!#$%^&*+=~`'/?{}|-])*@(?:[A-Za-z0-9](?:-*[A-Za-z0-9])*\\.)+[A-Za-z]{2,9}\\s*/g;\n\treturn emailRegex.test(email);\n};\n\nexport const validateEmailAddress = (email, emptyEmailErrorMessage, invalidEmailErrorMessage) => {\n\tif (!email) {\n\t\treturn emptyEmailErrorMessage;\n\t}\n\n\tif (!checkIsEmailValid(email)) {\n\t\treturn invalidEmailErrorMessage;\n\t}\n\n\treturn null;\n};\n","import { rejectUnsuccessfulResponse } from './url';\n\nexport type FetchConfig = Omit<RequestInit, 'headers'> & {\n\theaders?: Record<string, string>;\n};\n\ntype QueryParams = Record<string, unknown>;\n\ninterface FetchRequest {\n\turl: string;\n\tparams?: QueryParams;\n\theaders?: Record<string, string>;\n}\n\ninterface FetchBodyRequest {\n\turl: string;\n\tbody: unknown;\n\tadditionalHeaders?: Record<string, string>;\n}\n\ninterface FetchFormRequest {\n\turl: string;\n\tformData: FormData;\n\theaders?: Record<string, string>;\n}\n\nconst defaultHeaders = {\n\tAccept: 'application/json',\n\t'X-Requested-With': 'XMLHttpRequest',\n\t'Content-Type': 'application/json',\n};\n\nconst defaults: FetchConfig = {\n\tcredentials: 'same-origin',\n\theaders: defaultHeaders,\n};\n\nexport const getParamsString = (object?: QueryParams): string => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\tconst str = Object.entries(object).map(([key, value]) => `${key}=${encodeURIComponent(value as string)}`);\n\treturn `?${str.join('&')}`;\n};\n\nexport const fetch = {\n\tget: ({ url, params, headers: requestHeaders }: FetchRequest, fetchConfig?: FetchConfig): Promise<Response> =>\n\t\twindow\n\t\t\t.fetch(url + getParamsString(params), {\n\t\t\t\t...defaults,\n\t\t\t\tmethod: 'GET',\n\t\t\t\t...fetchConfig,\n\t\t\t\theaders: {\n\t\t\t\t\t...defaultHeaders,\n\t\t\t\t\t...requestHeaders,\n\t\t\t\t\t...fetchConfig?.headers,\n\t\t\t\t},\n\t\t\t})\n\t\t\t.then(rejectUnsuccessfulResponse),\n\tpost: ({ url, params }: FetchRequest, fetchConfig?: FetchConfig): Promise<Response> => {\n\t\tvoid fetchConfig;\n\t\treturn window\n\t\t\t.fetch(url + getParamsString(params), {\n\t\t\t\t...defaults,\n\t\t\t\tmethod: 'POST',\n\t\t\t})\n\t\t\t.then(rejectUnsuccessfulResponse);\n\t},\n\tpostWithBody: ({ url, body, additionalHeaders }: FetchBodyRequest, fetchConfig?: FetchConfig): Promise<Response> =>\n\t\twindow\n\t\t\t.fetch(url, {\n\t\t\t\t...defaults,\n\t\t\t\t...fetchConfig,\n\t\t\t\theaders: {\n\t\t\t\t\t...defaultHeaders,\n\t\t\t\t\t...additionalHeaders,\n\t\t\t\t\t...fetchConfig?.headers,\n\t\t\t\t},\n\t\t\t\tmethod: 'POST',\n\t\t\t\tbody: JSON.stringify(body),\n\t\t\t})\n\t\t\t.then(rejectUnsuccessfulResponse),\n\tpatchWithBody: ({ url, body }: FetchBodyRequest): Promise<Response> =>\n\t\twindow\n\t\t\t.fetch(url, {\n\t\t\t\t...defaults,\n\t\t\t\tmethod: 'PATCH',\n\t\t\t\tbody: JSON.stringify(body),\n\t\t\t})\n\t\t\t.then(rejectUnsuccessfulResponse),\n\tputWithBody: ({ url, body }: FetchBodyRequest): Promise<Response> =>\n\t\twindow\n\t\t\t.fetch(url, {\n\t\t\t\t...defaults,\n\t\t\t\tmethod: 'PUT',\n\t\t\t\tbody: JSON.stringify(body),\n\t\t\t})\n\t\t\t.then(rejectUnsuccessfulResponse),\n\tpostWithForm: ({ url, formData, headers }: FetchFormRequest): Promise<Response> =>\n\t\twindow\n\t\t\t.fetch(url, {\n\t\t\t\tcredentials: 'same-origin',\n\t\t\t\tmethod: 'POST',\n\t\t\t\tbody: formData,\n\t\t\t\theaders,\n\t\t\t})\n\t\t\t.then(rejectUnsuccessfulResponse),\n\tdelete: ({ url, params }: FetchRequest): Promise<Response> =>\n\t\twindow\n\t\t\t.fetch(url + getParamsString(params), {\n\t\t\t\t...defaults,\n\t\t\t\tmethod: 'DELETE',\n\t\t\t})\n\t\t\t.then(rejectUnsuccessfulResponse),\n};\n\nexport default fetch;\n","import { useState, useLayoutEffect } from 'react';\nimport { mobileCutoffWidth, debouncedResize, desktopMinWidth } from '../mobile-utility';\n\nexport const largeDesktopMinWidth = 1200;\nexport const extraLargeDesktopMinWidth = 1600;\n\nexport interface IScreensize {\n\tisSsr: boolean;\n\tisMobile: boolean;\n\tisTablet: boolean;\n\tisDesktop: boolean;\n\tisLargeDesktop: boolean;\n\tisExtraLargeDesktop: boolean;\n\thtmlElementWidth: number | null;\n}\n\nconst c_defaultScreenSize: IScreensize = {\n\tisSsr: true,\n\tisMobile: true,\n\tisTablet: false,\n\tisDesktop: false,\n\tisLargeDesktop: false,\n\tisExtraLargeDesktop: false,\n\thtmlElementWidth: 300,\n};\n\nexport default function useScreensize() {\n\tconst [screensize, setScreensize] = useState(c_defaultScreenSize);\n\n\tuseLayoutEffect(() => {\n\t\tconst htmlElement = document.querySelector('html');\n\n\t\tfunction updateScreensize() {\n\t\t\tsetScreensize({\n\t\t\t\tisSsr: false,\n\t\t\t\tisMobile: window.innerWidth < mobileCutoffWidth,\n\t\t\t\tisTablet: window.innerWidth >= mobileCutoffWidth && window.innerWidth < desktopMinWidth,\n\t\t\t\tisDesktop: window.innerWidth >= desktopMinWidth,\n\t\t\t\tisLargeDesktop: window.innerWidth >= largeDesktopMinWidth,\n\t\t\t\tisExtraLargeDesktop: window.innerWidth >= extraLargeDesktopMinWidth,\n\t\t\t\thtmlElementWidth: htmlElement && htmlElement.offsetWidth,\n\t\t\t});\n\t\t}\n\n\t\tupdateScreensize();\n\n\t\tconst windowResizeListener = debouncedResize(() => updateScreensize());\n\n\t\treturn () => {\n\t\t\tif (windowResizeListener) {\n\t\t\t\twindowResizeListener.cancel();\n\t\t\t}\n\t\t};\n\t}, []);\n\n\treturn screensize;\n}\n","import type { UserProductData } from '@faithlife/commerce-components/product-grid';\nimport type {\n\tProductPriceAmount as CommerceWebProductPriceAmount,\n\tProductPrices as CommerceWebProductPrices,\n\tProductPricingData,\n} from '../components/per-user-data/per-user-data-context';\n\ninterface AddToCartStatusResources {\n\taddedToCart: string;\n\taddedToCartTooltip: string;\n\tyouAlreadyOwnThisProduct: string;\n\tyouAlreadyPreorderedThisProduct: string;\n\tpreorder: string;\n}\n\ninterface AddToCartStatusData {\n\tisOwned: boolean;\n\tisInCart: boolean;\n\thasBeenPreordered: boolean;\n\tisPrepubProduct: boolean;\n\tdefaultButtonText?: string;\n}\n\ntype ProductPrices = NonNullable<NonNullable<UserProductData['skus']>[number]['prices']>;\n\nconst mapProductPriceAmount = ({\n\tdisplayAmount,\n\tdisplayAmountCurrencyCode,\n\tlocalizedDisplayAmount,\n}: CommerceWebProductPriceAmount) => ({\n\tdisplayAmount,\n\tdisplayAmountCurrencyCode,\n\tlocalizedDisplayAmount,\n});\n\nexport const mapProductPrices = (prices: CommerceWebProductPrices | null): ProductPrices | null => {\n\tif (!prices) {\n\t\treturn null;\n\t}\n\n\treturn {\n\t\tsalePrice: mapProductPriceAmount(prices.salePrice),\n\t\tanchorPrice: prices.anchorPrice ? mapProductPriceAmount(prices.anchorPrice) : null,\n\t\tanchorSavings: prices.anchorSavings ? mapProductPriceAmount(prices.anchorSavings) : null,\n\t\tdiscountSavings: prices.discountSavings ? mapProductPriceAmount(prices.discountSavings) : null,\n\t\tdiscountDescription:\n\t\t\tprices.discounts\n\t\t\t\t?.map(discount => discount.description)\n\t\t\t\t.filter(description => description)\n\t\t\t\t.join(' ') || null,\n\t\tbreakdownTriggerLabel: prices.breakdownTriggerLabel,\n\t\tbreakdownLines: prices.breakdownLines?.map(line => ({\n\t\t\tlabel: line.label,\n\t\t\tdisplayAmount: line.displayInUsd\n\t\t\t\t? line.amount.displayAmount\n\t\t\t\t: (line.amount.localizedDisplayAmount ?? line.amount.displayAmount),\n\t\t\tisDeduction: line.isDeduction,\n\t\t\thref: line.href,\n\t\t})),\n\t\tanchorPriceLines: prices.anchorPriceLines,\n\t\tsavingsDescription: prices.savingsDescription,\n\t};\n};\n\nexport const createAddToCartStatus = (data: AddToCartStatusData, resources: AddToCartStatusResources) => {\n\tconst { isOwned, isInCart, hasBeenPreordered, isPrepubProduct, defaultButtonText } = data;\n\tconst isDisabled = isOwned || isInCart || hasBeenPreordered;\n\n\tlet buttonText;\n\tif (isInCart) {\n\t\tbuttonText = resources.addedToCart;\n\t} else if (isOwned) {\n\t\tbuttonText = resources.youAlreadyOwnThisProduct;\n\t} else if (hasBeenPreordered) {\n\t\tbuttonText = resources.youAlreadyPreorderedThisProduct;\n\t} else if (isPrepubProduct) {\n\t\tbuttonText = resources.preorder;\n\t} else if (defaultButtonText) {\n\t\tbuttonText = defaultButtonText;\n\t}\n\n\tlet tooltipText;\n\tif (isOwned) {\n\t\ttooltipText = resources.youAlreadyOwnThisProduct;\n\t} else if (isInCart) {\n\t\ttooltipText = resources.addedToCartTooltip;\n\t} else if (hasBeenPreordered) {\n\t\ttooltipText = resources.youAlreadyPreorderedThisProduct;\n\t}\n\n\treturn {\n\t\tisOwned,\n\t\tbuttonText,\n\t\tisDisabled,\n\t\ttooltipText,\n\t\t...(isPrepubProduct ? { isPrepubProduct: true } : {}),\n\t};\n};\n\nexport const mapPricingToUserProductData = (\n\tpricing: ProductPricingData | undefined,\n\tresources: AddToCartStatusResources\n): UserProductData | null => {\n\tconst primarySku = pricing?.primarySku;\n\tif (!pricing || !primarySku?.skuId) {\n\t\treturn null;\n\t}\n\n\tconst unitPriceLabelsBySkuId = new Map<string, string>();\n\tfor (const sku of [primarySku, ...Object.values(pricing.skus ?? {})]) {\n\t\tif (sku.unitPriceLabel) {\n\t\t\tunitPriceLabelsBySkuId.set(sku.skuId, sku.unitPriceLabel);\n\t\t}\n\t}\n\tconst primaryUnitPriceLabel = unitPriceLabelsBySkuId.get(primarySku.skuId);\n\tunitPriceLabelsBySkuId.delete(primarySku.skuId);\n\n\treturn {\n\t\tskus: [\n\t\t\t{\n\t\t\t\tid: primarySku.skuId,\n\t\t\t\tsalePrice: primarySku.prices?.salePrice?.displayAmount,\n\t\t\t\tsalePriceCurrency: primarySku.prices?.salePrice?.displayAmountCurrencyCode ?? undefined,\n\t\t\t\tanchorPrice: primarySku.prices?.anchorPrice?.displayAmount,\n\t\t\t\tanchorLabel: primarySku.prices?.anchorSavings ? (primarySku.prices.savingsDescription ?? undefined) : undefined,\n\t\t\t\tlocalizedSalePrice: primarySku.prices?.salePrice?.localizedDisplayAmount ?? undefined,\n\t\t\t\tpriceVariant: primarySku.prices?.discountSavings ? 'sale' : 'default',\n\t\t\t\tprices: mapProductPrices(primarySku.prices),\n\t\t\t\t...(primaryUnitPriceLabel ? { unitPriceLabel: primaryUnitPriceLabel } : {}),\n\t\t\t\t...createAddToCartStatus(\n\t\t\t\t\t{\n\t\t\t\t\t\tisOwned: Boolean(primarySku.isOwned),\n\t\t\t\t\t\tisInCart: Boolean(primarySku.isInCart),\n\t\t\t\t\t\thasBeenPreordered: Boolean(primarySku.hasBeenPreordered),\n\t\t\t\t\t\tisPrepubProduct: Boolean(pricing.isPrepubProduct),\n\t\t\t\t\t},\n\t\t\t\t\tresources\n\t\t\t\t),\n\t\t\t},\n\t\t\t...[...unitPriceLabelsBySkuId].map(([id, unitPriceLabel]) => ({ id, unitPriceLabel })),\n\t\t],\n\t};\n};\n","export const mobileCutoffWidth = 768;\nexport const desktopMinWidth = 1024;\n\nexport const debouncedResize = callback => {\n\tlet frame;\n\tconst listener = () => {\n\t\tif (frame) {\n\t\t\twindow.cancelAnimationFrame(frame);\n\t\t}\n\n\t\tframe = window.requestAnimationFrame(callback);\n\t};\n\n\twindow.addEventListener('resize', listener);\n\n\treturn {\n\t\tcancel: () => {\n\t\t\twindow.removeEventListener('resize', listener);\n\t\t\tif (frame) {\n\t\t\t\twindow.cancelAnimationFrame(frame);\n\t\t\t}\n\t\t},\n\t};\n};\n\nexport const debouncedResizeElement = (el, callback) => {\n\tif (!window.ResizeObserver) {\n\t\treturn {\n\t\t\tcancel: () => {},\n\t\t};\n\t}\n\n\tlet frame;\n\tconst listener = () => {\n\t\tif (frame) {\n\t\t\twindow.cancelAnimationFrame(frame);\n\t\t}\n\n\t\tframe = window.requestAnimationFrame(callback);\n\t};\n\tconst resizeObserver = new ResizeObserver(() => {\n\t\tlistener();\n\t});\n\tresizeObserver.observe(el);\n\n\treturn {\n\t\tcancel: () => {\n\t\t\tresizeObserver.disconnect();\n\t\t\tif (frame) {\n\t\t\t\twindow.cancelAnimationFrame(frame);\n\t\t\t}\n\t\t},\n\t};\n};\n","// This is so we can report console errors in our integration tests\nwindow.caughtErrors = [];\nwindow.onerror = (msg, url, lineNo, columnNo, error) => {\n\tconst loweredMessage = msg.toLowerCase();\n\tconst externalScriptErrorMessage = 'script error';\n\tif (loweredMessage.includes(externalScriptErrorMessage) !== -1) {\n\t\twindow.caughtErrors.push('Script Error: See Browser Console for Detail');\n\t} else {\n\t\tconst stringifiedError = JSON.stringify(error);\n\t\twindow.caughtErrors.push(\n\t\t\t`Message: ${msg} - URL: ${url} - Line: ${lineNo} - Column: ${columnNo} - Error object: ${stringifiedError}`\n\t\t);\n\t}\n};\n// TODO: balance event listeners. https://faithlife.atlassian.net/browse/CMRC-22166\nwindow.addEventListener('unhandledrejection', event => {\n\tconsole.log(event);\n\twindow.caughtErrors.push(event.reason?.toString() ?? 'Unhandled rejection: Reason is not provided');\n});\n","import React from 'react';\nimport { theme as styledUITheme } from '@faithlife/styled-ui';\nimport { ThemeProvider } from 'styled-components';\n\nexport const theme = {\n\t...styledUITheme,\n\tradii: ['var(--btn-xs-border-radius)', 'var(--btn-border-radius)', 'var(--btn-super-border-radius)'],\n\tcolors: {\n\t\t...styledUITheme.colors,\n\t\terror: 'var(--error)',\n\t\twhite: 'var(--shade0)',\n\t\tgray3: 'var(--shade7)',\n\t\tgray4: 'var(--shade7)',\n\t\tgray8: 'var(--shade10)',\n\t\tgray10: 'var(--shade10)',\n\t\tgray11: 'var(--shade15)',\n\t\tgray14: 'var(--shade20)',\n\t\tgray15: 'var(--shade20)',\n\t\tgray16: 'var(--shade25)',\n\t\tgray21: 'var(--shade30)',\n\t\tgray22: 'var(--shade30)',\n\t\tgray33: 'var(--shade50)',\n\t\tgray34: 'var(--shade50)',\n\t\tgray51: 'var(--shade60)',\n\t\tgray52: 'var(--shade60)',\n\t\tgray67: 'var(--shade80)',\n\t\tblack: 'var(--shade100)',\n\t\tborderColor: 'var(--ui-border-color)',\n\t\tbrandColor: 'var(--brand-blue)',\n\t\ttextHighlight: 'var(--text-highlight)',\n\t\tforegroundPrimary: 'var(--text-default)',\n\t\tbackgroundPrimary: 'var(--site-background-color)',\n\t\theaderBackground: 'var(--header-background, var(--shade0))',\n\t\theaderTopHalfBackground: 'var(--header-top-half-background, var(--shade0))',\n\t\theaderText: 'var(--header-text, var(--shade100))',\n\t\theaderDropdownBackground: 'var(--header-dropdown-background, var(--shade0))',\n\t\theaderDropdownLink: 'var(--header-dropdown-link, var(--shade60))',\n\t\theaderNavMobileBackground: 'var(--header-nav-mobile-background, var(--shade0))',\n\t\theaderNavMobileDropdownBackground: 'var(--header-nav-mobile-dropdown-item-hover, var(--shade7))',\n\t\theaderNavMobileText: 'var(--header-nav-mobile-text, var(--shade90))',\n\t\theadingColor: 'var(--heading-color)',\n\t\ttab: {\n\t\t\t...styledUITheme.colors.tab,\n\t\t\tmodalColorStripeActive: 'var(--btn-secondary-bg)',\n\t\t},\n\t\tinput: {\n\t\t\t...styledUITheme.colors.input,\n\t\t\tforeground: 'var(--text-default)',\n\t\t\tbackground: 'var(--site-background-color)',\n\t\t},\n\t\tradio: {\n\t\t\t...styledUITheme.colors.radio,\n\t\t\tprimary: 'var(--brand-blue)',\n\t\t},\n\t\tcheckbox: {\n\t\t\t...styledUITheme.colors.checkbox,\n\t\t\tprimary:\n\t\t\t\ttypeof getComputedStyle !== 'undefined'\n\t\t\t\t\t? getComputedStyle(document.documentElement).getPropertyValue('--btn-secondary-bg')\n\t\t\t\t\t: styledUITheme.colors.checkbox.primary,\n\t\t},\n\t\tpopover: {\n\t\t\t...styledUITheme.colors.popover,\n\t\t\tforeground: 'var(--text-default)',\n\t\t\tbackground: 'var(--site-background-color)',\n\t\t},\n\t},\n\tbuttons: {\n\t\t...styledUITheme.buttons,\n\t\tprimary: {\n\t\t\tcolor: 'var(--btn-secondary-color)',\n\t\t\tbackgroundColor: 'var(--btn-secondary-bg)',\n\t\t\tborder: 1,\n\t\t\tborderColor: 'var(--btn-secondary-border)',\n\t\t\t'&:hover': {\n\t\t\t\tcolor: 'var(--btn-secondary-hover-color)',\n\t\t\t\tbackgroundColor: 'var(--btn-secondary-hover-bg)',\n\t\t\t\tborderColor: 'var(--btn-secondary-hover-border)',\n\t\t\t},\n\t\t\t'&:active': {\n\t\t\t\tcolor: 'var(--btn-secondary-active-color)',\n\t\t\t\tbackgroundColor: 'var(--btn-secondary-active-bg)',\n\t\t\t\tborderColor: 'var(--btn-secondary-active-border)',\n\t\t\t},\n\t\t\t'&:disabled': {\n\t\t\t\tcolor: 'var(--btn-disabled-color)',\n\t\t\t\tbackgroundColor: 'var(--btn-disabled-border)',\n\t\t\t\tborderColor: 'var(--btn-disabled-border)',\n\t\t\t},\n\t\t},\n\t\tsecondary: {\n\t\t\tcolor: 'var(--btn-secondary-inverted-color)',\n\t\t\tbackgroundColor: 'var(--btn-secondary-inverted-bg)',\n\t\t\tborder: 1,\n\t\t\tborderColor: 'var(--btn-secondary-inverted-border)',\n\t\t\t'&:hover': {\n\t\t\t\tcolor: 'var(--btn-secondary-inverted-hover-color)',\n\t\t\t\tbackgroundColor: 'var(--btn-secondary-inverted-hover-bg)',\n\t\t\t\tborderColor: 'var(--btn-secondary-inverted-hover-border)',\n\t\t\t},\n\t\t\t'&:active': {\n\t\t\t\tcolor: 'var(--btn-secondary-inverted-active-color)',\n\t\t\t\tbackgroundColor: 'var(--btn-secondary-inverted-active-bg)',\n\t\t\t\tborderColor: 'var(--btn-secondary-inverted-active-border)',\n\t\t\t},\n\t\t\t'&:disabled': {\n\t\t\t\tcolor: 'var(--btn-disabled-color)',\n\t\t\t\tbackgroundColor: 'var(--btn-disabled-bg)',\n\t\t\t\tborderColor: 'var(--btn-disabled-border)',\n\t\t\t},\n\t\t},\n\t\tminor: {\n\t\t\tcolor: 'var(--btn-minor-color)',\n\t\t\tbackgroundColor: 'var(--btn-minor-bg)',\n\t\t\tborder: 1,\n\t\t\tborderColor: 'var(--btn-minor-border)',\n\t\t\t'&:hover': {\n\t\t\t\tcolor: 'var(--btn-minor-hover-color)',\n\t\t\t\tbackgroundColor: 'var(--btn-minor-hover-bg)',\n\t\t\t\tborderColor: 'var(--btn-minor-hover-border)',\n\t\t\t},\n\t\t\t'&:active': {\n\t\t\t\tcolor: 'var(--btn-minor-active-color)',\n\t\t\t\tbackgroundColor: 'var(--btn-minor-active-bg)',\n\t\t\t\tborderColor: 'var(--btn-minor-active-border)',\n\t\t\t},\n\t\t\t'&:disabled': {\n\t\t\t\tcolor: 'var(--btn-disabled-inverted-color)',\n\t\t\t\tbackgroundColor: 'var(--btn-minor-disabled-bg)',\n\t\t\t\tborderColor: 'var(--btn-minor-inverted-border)',\n\t\t\t},\n\t\t},\n\t\tlink: {\n\t\t\tcolor: 'var(--link)',\n\t\t\tbackgroundColor: 'transparent',\n\t\t\tborder: 0,\n\t\t\t'&:hover': {\n\t\t\t\tcolor: 'var(--link-active)',\n\t\t\t\tbackgroundColor: 'transparent',\n\t\t\t},\n\t\t\t'&:active': {\n\t\t\t\tcolor: 'var(--link-active)',\n\t\t\t\tbackgroundColor: 'transparent',\n\t\t\t},\n\t\t\t'&:disabled': {\n\t\t\t\tcolor: 'var(--btn-disabled-color)',\n\t\t\t\tbackgroundColor: 'transparent',\n\t\t\t},\n\t\t},\n\t\tdanger: {\n\t\t\tborder: 1,\n\t\t\tcolor: 'button.dangerBackground',\n\t\t\tbackgroundColor: 'button.dangerForeground',\n\t\t\tborderColor: 'button.dangerBackground',\n\t\t\t'&:hover': {\n\t\t\t\tcolor: 'button.dangerForeground',\n\t\t\t\tbackgroundColor: 'button.dangerBackground',\n\t\t\t\tborderColor: 'button.dangerBackground',\n\t\t\t},\n\t\t\t'&:active': {\n\t\t\t\tbackgroundColor: 'button.dangerActive',\n\t\t\t\tborderColor: 'button.dangerActive',\n\t\t\t},\n\t\t\t'&:disabled': {\n\t\t\t\tcolor: 'button.dangerDisabled',\n\t\t\t\tbackgroundColor: 'button.dangerForeground',\n\t\t\t\tborderColor: 'button.dangerDisabled',\n\t\t\t},\n\t\t},\n\t},\n\tmediaQueries: {\n\t\t...styledUITheme.mediaQueries,\n\t\tdesktop: '@media screen and (min-width: 1024px)',\n\t},\n};\n\nexport function CommerceWebThemeProvider({ children }) {\n\treturn <ThemeProvider theme={theme}>{children}</ThemeProvider>;\n}\n","interface ResponseLike {\n\tstatus: number;\n\tstatusText: string;\n}\n\ninterface UrlParam {\n\tname: string;\n\tvalue: string | undefined;\n}\n\ntype UrlParamValue = string | number | boolean | readonly (string | number | boolean)[] | null | undefined;\n\nexport function rejectUnsuccessfulResponse<T extends ResponseLike>(response: T): T {\n\tif (response.status >= 200 && response.status < 300) {\n\t\treturn response;\n\t}\n\n\tconst error = new Error(response.statusText) as Error & { response: T };\n\terror.response = response;\n\n\tthrow error;\n}\n\n/** @deprecated Use useLocation().searchParams directly */\nexport const getAllUrlParams = (): UrlParam[] => {\n\tif (typeof window === 'undefined') {\n\t\treturn [];\n\t}\n\treturn window.location.search\n\t\t.substring(1)\n\t\t.split('&')\n\t\t.map(item => item.split('='))\n\t\t.map(([name, value]) => ({ name, value }))\n\t\t.filter(param => param.name);\n};\n\n/** @deprecated Use useLocation().searchParams directly */\nexport const getAllUrlParamsObject = (): Record<string, string | undefined> =>\n\tgetAllUrlParams().reduce<Record<string, string | undefined>>((o, param) => ({ ...o, [param.name]: param.value }), {});\n\n/** @deprecated Use useLocation() and replaceUrl directly */\nexport const updateUrlParamValues = (updates: Record<string, UrlParamValue>): void => {\n\tif (typeof window === 'undefined') {\n\t\treturn;\n\t}\n\tconst url = new URL(window.location.href);\n\tfor (const [name, value] of Object.entries(updates)) {\n\t\tif (value) {\n\t\t\turl.searchParams.set(name, String(value));\n\t\t} else {\n\t\t\turl.searchParams.delete(name);\n\t\t}\n\t}\n\twindow.history.replaceState({}, '', url);\n};\n\n/** @deprecated Use useLocation() and replaceUrl directly */\nexport const updateUrlParamValue = (name: string, value: UrlParamValue): void => {\n\tupdateUrlParamValues({ [name]: value });\n};\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { getSurvey } from '../../clients/survey-client';\nimport Survey from './survey/survey';\n\nwindow.browserGlobalsReadyCallbacks.push(loadSurveys);\n\nfunction loadSurveys() {\n\tdocument.querySelectorAll('.js-survey-container').forEach(async surveyElement => {\n\t\tconst props = surveyElement && surveyElement.dataset.props;\n\t\tconst surveysUrl = surveyElement && surveyElement.dataset.surveysurl;\n\n\t\tif (props) {\n\t\t\tReactDOM.render(React.createElement(Survey, JSON.parse(props)), surveyElement);\n\t\t} else if (surveysUrl) {\n\t\t\tawait getSurvey(surveysUrl).then(data => {\n\t\t\t\tReactDOM.render(React.createElement(Survey, data), surveyElement);\n\t\t\t});\n\t\t}\n\t});\n}\n","import React, { useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { CloseSvg } from '../svgs';\nimport { displayModePropType } from './survey-prop-type';\n\nconst SurveyHeader = ({\n\tclassName,\n\tdisplayMode,\n\tonModalClose,\n\tonNewQuestionScroll,\n\tsurveyTitle,\n\tsurveySubtitle,\n\tisCloseable,\n\treturnUrl,\n}) => {\n\tconst headerRef = useRef(null);\n\n\tuseEffect(() => {\n\t\tonNewQuestionScroll(headerRef.current);\n\t});\n\n\treturn (\n\t\t<div ref={headerRef} className={(className ? className + ' ' : '') + 'survey__header'}>\n\t\t\t{displayMode === 'modal' && (\n\t\t\t\t// eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions\n\t\t\t\t<CloseSvg onClick={onModalClose} className=\"close\" />\n\t\t\t)}\n\t\t\t{displayMode === 'page' && isCloseable && (\n\t\t\t\t<a href={returnUrl} rel=\"nofollow\" className=\"close\">\n\t\t\t\t\t{/*eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions*/}\n\t\t\t\t\t<CloseSvg className=\"close\" />\n\t\t\t\t</a>\n\t\t\t)}\n\t\t\t<h3 className=\"title\">{surveyTitle}</h3>\n\t\t\t{surveySubtitle && <div className=\"subtitle\">{surveySubtitle}</div>}\n\t\t</div>\n\t);\n};\n\nSurveyHeader.proptypes = {\n\tclassName: PropTypes.string,\n\tdisplayMode: displayModePropType,\n\tonNewQuestionScroll: PropTypes.func.isRequired,\n\tonModalClose: PropTypes.func.isRequired,\n\tsurveyTitle: PropTypes.string.isRequired,\n\tsurveySubtitle: PropTypes.string,\n};\n\nexport default SurveyHeader;\n","import React from 'react';\nimport SurveyContent from '../../../components/shared/survey/survey-content';\n\nconst AllSurveyContent = ({\n\terrorMessage,\n\tisComplete,\n\tonUpdateSurveyStatus,\n\tonUpdateQuestionStatus,\n\tmaxCommentLength,\n\tallQuestions,\n}) => {\n\treturn allQuestions.map(\n\t\tquestionViewModel =>\n\t\t\t!questionViewModel.currentUserAnswers &&\n\t\t\tquestionViewModel.isEnabled && (\n\t\t\t\t<SurveyContent\n\t\t\t\t\tkey={questionViewModel.questionId}\n\t\t\t\t\terrorMessage={errorMessage}\n\t\t\t\t\tisComplete={isComplete}\n\t\t\t\t\tmaxCommentLength={maxCommentLength}\n\t\t\t\t\tonUpdateSurveyStatus={onUpdateSurveyStatus}\n\t\t\t\t\tonUpdateQuestionStatus={onUpdateQuestionStatus}\n\t\t\t\t\toptions={questionViewModel.options}\n\t\t\t\t\tcurrentQuestion={questionViewModel}\n\t\t\t\t/>\n\t\t\t)\n\t);\n};\n\nexport default AllSurveyContent;\n","import React from 'react';\nimport { fetch, getParamsString } from '../../../util/fetch';\nimport { notifyError } from '../../../components/notifications';\nimport SurveyHeader from '../../../components/shared/survey/survey-header';\nimport SurveyContent from '../../../components/shared/survey/survey-content';\nimport SurveyFooter from '../../../components/shared/survey/survey-footer';\nimport AllSurveyContent from '../../../components/shared/survey/all-survey-content';\nimport { surveyPropType } from '../../../components/shared/survey/survey-prop-type';\nimport { validateEmailAddress } from '../../../util/email';\n\nexport default class Survey extends React.PureComponent {\n\tstatic propTypes = {\n\t\t...surveyPropType,\n\t};\n\n\tstate = {\n\t\tsurveyId: this.props.surveyId,\n\t\treturnUrl: this.props.routes.ReturnUrl,\n\t\tshowAll: this.props.showAll,\n\t\taccountEditUrl: this.props.accountEditUrl,\n\t\talternateSurveyId: this.props.alternateSurveyId,\n\t\tprogress: this.props.progress,\n\t\tisAnswered: false,\n\t\tisLastQuestion: !this.props.isAnonymous && this.props.progress.remainingQuestionsCount === 1,\n\t\tisComplete: this.props.progress.remainingQuestionsCount === 0,\n\t\toptions:\n\t\t\tthis.props.questionViewModel &&\n\t\t\tthis.props.questionViewModel.options.map(option => ({\n\t\t\t\t...option,\n\t\t\t\tisSelected: false,\n\t\t\t\tcomment: null,\n\t\t\t})),\n\t\tsubmitUrl: this.props.routes.SubmitUrl,\n\t\tsurveysBaseUrl: this.props.routes.SurveysBaseUrl,\n\t\tisNewQuestion: false,\n\t\temailAddress: this.props.emailAddress,\n\t\tisAnonymous: this.props.isAnonymous,\n\t\trecipientToken: this.props.recipientToken,\n\t\tallQuestions:\n\t\t\tthis.props.allQuestions &&\n\t\t\tthis.props.allQuestions.map(question => ({\n\t\t\t\t...question,\n\t\t\t\tisAnswered: question.currentUserAnswers !== undefined,\n\t\t\t\toptions: question.options.map(option => ({\n\t\t\t\t\t...option,\n\t\t\t\t\tisSelected: false,\n\t\t\t\t})),\n\t\t\t})),\n\t\tcurrentQuestion: this.props.allQuestions.find(question => !question.currentUserAnswers && question.isEnabled),\n\t\tisCloseable: this.props.isCloseable,\n\t};\n\n\tsurveyContainer = React.createRef();\n\n\tcomponentDidUpdate(prevProps, prevState) {\n\t\tif (prevState.progress !== this.state.progress) {\n\t\t\tif (this.props.displayMode !== 'drop') {\n\t\t\t\twindow.scroll({\n\t\t\t\t\ttop: this.surveyContainer.current.offsetTop - 85, // size of mobile header\n\t\t\t\t\tbehavior: 'smooth',\n\t\t\t\t});\n\t\t\t}\n\t\t\tthis.setState({ isNewQuestion: true });\n\t\t}\n\t}\n\n\thandleNewQuestionScroll = element => {\n\t\tif (this.state.isNewQuestion && this.props.displayMode === 'drop') {\n\t\t\telement.scrollIntoView({ behavior: 'smooth' });\n\t\t\tthis.setState({ isNewQuestion: false });\n\t\t}\n\t};\n\n\tvalidateEmail = (email, errorStrings) => {\n\t\treturn validateEmailAddress(email, errorStrings.EmptyEmail, errorStrings.InvalidEmail);\n\t};\n\n\thandleUpdateAllQuestions = updatedQuestions => this.setState({ allQuestions: updatedQuestions });\n\n\thandleUpdateQuestionStatus = (updatedQuestion, isAnswered, options) => {\n\t\tconst updatedQuestions = this.state.allQuestions.map(question => ({\n\t\t\t...question,\n\t\t\toptions: updatedQuestion.questionId === question.questionId ? options : question.options,\n\t\t\tisAnswered: updatedQuestion.questionId === question.questionId ? isAnswered : question.isAnswered,\n\t\t}));\n\t\tthis.setState({\n\t\t\tallQuestions: updatedQuestions,\n\t\t\tcurrentQuestion: updatedQuestions.find(question => question.questionId === updatedQuestion.questionId),\n\t\t});\n\t};\n\n\thandleUpdateSurveyStatus = ({ isAnonymous, isComplete, isLastQuestion }) => {\n\t\tif (isAnonymous !== undefined) {\n\t\t\tthis.setState({ isAnonymous });\n\t\t}\n\n\t\tif (isComplete !== undefined) {\n\t\t\tthis.setState({ isComplete });\n\t\t}\n\n\t\tif (isLastQuestion !== undefined) {\n\t\t\tthis.setState({ isLastQuestion });\n\t\t}\n\t};\n\n\thandleUpdateSurveyProgress = (alternateSurveyId, progress, returnUrl, recipientToken, emailAddress) => {\n\t\tconst unansweredQuestionIndex = this.state.allQuestions.findIndex(\n\t\t\tquestion => !question.currentUserAnswers && question.isEnabled\n\t\t);\n\t\tif (unansweredQuestionIndex === -1) {\n\t\t\tthis.handleUpdateSurveyStatus({ isComplete: true });\n\t\t} else {\n\t\t\tthis.setState({ currentQuestion: this.state.allQuestions[unansweredQuestionIndex] });\n\t\t}\n\t\tthis.setState({\n\t\t\talternateSurveyId,\n\t\t\tprogress,\n\t\t\treturnUrl,\n\t\t\trecipientToken,\n\t\t\temailAddress,\n\t\t});\n\t};\n\n\thandleFetchAlternateSurvey = async (alternateSurveyId, returnUrl, recipientToken) => {\n\t\tconst { resources, routes } = this.props;\n\n\t\ttry {\n\t\t\tconst response = await fetch.get({\n\t\t\t\turl: `${routes.SurveysBaseUrl}/${alternateSurveyId}${\n\t\t\t\t\tthis.props.showAll ? getParamsString({ includeAllQuestionsAndAnswers: true }) : ''\n\t\t\t\t}`,\n\t\t\t\tparams: { returnUrl, recipientToken },\n\t\t\t});\n\n\t\t\tconst survey = await response.json();\n\n\t\t\tif (survey.surveyId !== this.state.surveyId && this.props.displayMode === 'page') {\n\t\t\t\thistory.pushState(\n\t\t\t\t\tsurvey,\n\t\t\t\t\tnull,\n\t\t\t\t\t`${routes.SurveysBaseUrl}/${survey.surveyId}${getParamsString({\n\t\t\t\t\t\treturnUrl: survey.routes.ReturnUrl,\n\t\t\t\t\t\tincludeAllQuestionsAndAnswers: this.props.showAll,\n\t\t\t\t\t})}`\n\t\t\t\t);\n\t\t\t}\n\t\t\tthis.setState({\n\t\t\t\t...survey,\n\t\t\t\toptions:\n\t\t\t\t\tsurvey.allQuestions &&\n\t\t\t\t\tsurvey.allQuestions[0].options.map(option => ({\n\t\t\t\t\t\t...option,\n\t\t\t\t\t\tisSelected: false,\n\t\t\t\t\t\tcomment: null,\n\t\t\t\t\t})),\n\t\t\t\tisAnswered: false,\n\t\t\t\tisComplete: false,\n\t\t\t\tcurrentQuestion: survey.allQuestions && survey.allQuestions[0],\n\t\t\t\tisNewQuestion: true,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tnotifyError(resources.fetchAlternateError);\n\t\t}\n\t};\n\n\thandleModalClose = () => {\n\t\tconst modalContainer = document.querySelector('.js-survey-modal-container');\n\t\tif (modalContainer) {\n\t\t\tmodalContainer.classList.remove('survey-modal-container--show');\n\t\t\tmodalContainer.classList.add('survey-modal-container--hide');\n\t\t}\n\t};\n\n\thandleUpdateSurveyOwner = emailAddress => {\n\t\tconst errorMessage = this.validateEmail(emailAddress, this.props.resources);\n\t\tif (!errorMessage) {\n\t\t\tthis.setState({ emailAddress });\n\t\t} else {\n\t\t\tthis.setState({ errorMessage });\n\t\t}\n\t};\n\n\trender() {\n\t\tconst { surveyTitle, surveySubtitle, resources, maxCommentLength, autoFillOption, displayMode } = this.props;\n\t\tconst { remainingQuestionsCount, totalQuestionsCount } = this.state.progress;\n\t\tconst {\n\t\t\tisLastQuestion,\n\t\t\tisComplete,\n\t\t\talternateSurveyId,\n\t\t\treturnUrl,\n\t\t\tshowAll,\n\t\t\taccountEditUrl,\n\t\t\tuserSurveyId,\n\t\t\tsurveyId,\n\t\t\tsubmitUrl,\n\t\t\tsurveysBaseUrl,\n\t\t\temailAddress,\n\t\t\tisAnonymous,\n\t\t\terrorMessage,\n\t\t\trecipientToken,\n\t\t\tallQuestions,\n\t\t\tisCloseable,\n\t\t\tisNewQuestion,\n\t\t} = this.state;\n\t\tconst step = totalQuestionsCount - remainingQuestionsCount + 1;\n\n\t\treturn (\n\t\t\t<div className=\"survey-container\">\n\t\t\t\t<div className=\"survey\" ref={this.surveyContainer}>\n\t\t\t\t\t<SurveyHeader\n\t\t\t\t\t\tonNewQuestionScroll={this.handleNewQuestionScroll}\n\t\t\t\t\t\tonModalClose={this.handleModalClose}\n\t\t\t\t\t\tdisplayMode={displayMode}\n\t\t\t\t\t\tsurveyTitle={surveyTitle}\n\t\t\t\t\t\tsurveySubtitle={surveySubtitle}\n\t\t\t\t\t\tref={this.surveyHeader}\n\t\t\t\t\t\tisCloseable={isCloseable}\n\t\t\t\t\t\treturnUrl={returnUrl}\n\t\t\t\t\t/>\n\t\t\t\t\t{showAll ? (\n\t\t\t\t\t\t<AllSurveyContent\n\t\t\t\t\t\t\tsurveyId={surveyId}\n\t\t\t\t\t\t\terrorMessage={errorMessage}\n\t\t\t\t\t\t\tisComplete={isComplete}\n\t\t\t\t\t\t\tmaxCommentLength={maxCommentLength}\n\t\t\t\t\t\t\tonUpdateSurveyStatus={this.handleUpdateSurveyStatus}\n\t\t\t\t\t\t\tonUpdateQuestionStatus={this.handleUpdateQuestionStatus}\n\t\t\t\t\t\t\tallQuestions={allQuestions}\n\t\t\t\t\t\t\tresources={resources}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<SurveyContent\n\t\t\t\t\t\t\tkey={this.state.currentQuestion && this.state.currentQuestion.questionId}\n\t\t\t\t\t\t\terrorMessage={errorMessage}\n\t\t\t\t\t\t\tisComplete={isComplete}\n\t\t\t\t\t\t\tisNewQuestion={isNewQuestion}\n\t\t\t\t\t\t\tmaxCommentLength={maxCommentLength}\n\t\t\t\t\t\t\tonUpdateSurveyStatus={this.handleUpdateSurveyStatus}\n\t\t\t\t\t\t\tonUpdateQuestionStatus={this.handleUpdateQuestionStatus}\n\t\t\t\t\t\t\tcurrentQuestion={this.state.currentQuestion}\n\t\t\t\t\t\t\toptions={this.state.currentQuestion && this.state.currentQuestion.options}\n\t\t\t\t\t\t\tresources={resources}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t<SurveyFooter\n\t\t\t\t\t\taccountEditUrl={accountEditUrl}\n\t\t\t\t\t\tansweredQuestions={this.state.allQuestions.filter(\n\t\t\t\t\t\t\tquestion => question.isAnswered && !question.currentUserAnswers\n\t\t\t\t\t\t)}\n\t\t\t\t\t\talternateSurveyId={alternateSurveyId}\n\t\t\t\t\t\tautoFillOption={autoFillOption}\n\t\t\t\t\t\tcurrentQuestion={this.state.currentQuestion}\n\t\t\t\t\t\tdisplayMode={displayMode}\n\t\t\t\t\t\temailAddress={emailAddress}\n\t\t\t\t\t\terrorMessage={errorMessage}\n\t\t\t\t\t\tisAnonymous={isAnonymous}\n\t\t\t\t\t\tisComplete={isComplete}\n\t\t\t\t\t\tisLastQuestion={isLastQuestion}\n\t\t\t\t\t\tmaxCommentLength={maxCommentLength}\n\t\t\t\t\t\tonFetchAlternateSurvey={this.handleFetchAlternateSurvey}\n\t\t\t\t\t\tonModalClose={this.handleModalClose}\n\t\t\t\t\t\tonUpdateAllQuestions={this.handleUpdateAllQuestions}\n\t\t\t\t\t\tonUpdateQuestionStatus={this.handleUpdateQuestionStatus}\n\t\t\t\t\t\tonUpdateSurveyOwner={this.handleUpdateSurveyOwner}\n\t\t\t\t\t\tonUpdateSurveyProgress={this.handleUpdateSurveyProgress}\n\t\t\t\t\t\tonUpdateSurveyStatus={this.handleUpdateSurveyStatus}\n\t\t\t\t\t\toptions={this.state.currentQuestion && this.state.currentQuestion.options}\n\t\t\t\t\t\tquestionId={this.state.currentQuestion && this.state.currentQuestion.questionId}\n\t\t\t\t\t\trecipientToken={recipientToken ? recipientToken : ''}\n\t\t\t\t\t\tresources={resources}\n\t\t\t\t\t\treturnUrl={returnUrl}\n\t\t\t\t\t\tshowAll={showAll}\n\t\t\t\t\t\tstep={step}\n\t\t\t\t\t\tsubmitUrl={submitUrl}\n\t\t\t\t\t\tsurveysBaseUrl={surveysBaseUrl}\n\t\t\t\t\t\tsurveyId={surveyId}\n\t\t\t\t\t\ttotalQuestionsCount={totalQuestionsCount}\n\t\t\t\t\t\tuserSurveyId={userSurveyId}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n}\n","const selectors = {\n\tsummaryContainer: 'js-core-subscription-summary',\n\tcontinueButton: 'js-continue-button',\n};\n\nfunction initialize() {\n\tif (window.parent) {\n\t\tconst summaryContainer = document.getElementsByClassName(selectors.summaryContainer)[0];\n\t\tif (summaryContainer) {\n\t\t\tconst continueButton = document.getElementsByClassName(selectors.continueButton)[0];\n\t\t\tif (continueButton) {\n\t\t\t\t// TODO: balance event listeners. https://faithlife.atlassian.net/browse/CMRC-22166\n\t\t\t\tcontinueButton.addEventListener('click', () => {\n\t\t\t\t\twindow.parent.postMessage(JSON.stringify({ kind: 'subscriptionContinueButtonClicked' }), '*');\n\t\t\t\t});\n\t\t\t}\n\t\t\t// Communicate progress to embedding application, e.g. BWA.\n\t\t\twindow.parent.postMessage(JSON.stringify({ kind: 'subscriptionSummaryReady' }), '*');\n\t\t}\n\t}\n}\n\nwindow.browserGlobalsReadyCallbacks.push(initialize);\n","// The module cache\nconst __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tconst cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tconst module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var createStylesheet = (chunkId, fullhref, resolve, reject) => {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = (event) => {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tlinkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\tif (linkTag.href.indexOf(window.location.origin + '/') !== 0) {\n\t\tlinkTag.crossOrigin = \"anonymous\";\n\t}\n\tdocument.head.appendChild(linkTag);\n\treturn linkTag;\n};\nvar findStylesheet = (href, fullhref) => {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = (chunkId) => {\n\treturn new Promise((resolve, reject) => {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t4378: 0\n};\n\n__webpack_require__.f.miniCss = (chunkId, promises) => {\n\tvar cssChunks = {\"179\":1,\"187\":1,\"251\":1,\"372\":1,\"511\":1,\"690\":1,\"963\":1,\"1279\":1,\"1756\":1,\"2493\":1,\"2876\":1,\"3781\":1,\"4927\":1,\"5663\":1,\"5850\":1,\"6399\":1,\"7286\":1,\"7540\":1,\"7552\":1,\"7579\":1,\"8618\":1,\"8658\":1,\"9189\":1,\"9283\":1,\"9788\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(() => {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, (e) => {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","const deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tlet notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tlet [chunkIds, fn, priority] = deferred[i];\n\t\tlet fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tconst r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tconst getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","const getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nlet leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tconst ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tconst def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; (typeof current == 'object' || typeof current == 'function') && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter/value functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tif(Array.isArray(definition)) {\n\t\tvar i = 0;\n\t\twhile(i < definition.length) {\n\t\t\tvar key = definition[i++];\n\t\t\tvar binding = definition[i++];\n\t\t\tif(!__webpack_require__.o(exports, key)) {\n\t\t\t\tif(binding === 0) {\n\t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, value: definition[i++] });\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: binding });\n\t\t\t\t}\n\t\t\t} else if(binding === 0) { i++; }\n\t\t}\n\t} else {\n\t\tfor(var key in definition) {\n\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t\t}\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + ({\"179\":\"product-details-page\",\"187\":\"search\",\"251\":\"checkout\",\"511\":\"license-claim\",\"690\":\"order-history\",\"871\":\"privacy-manager\",\"963\":\"device-management\",\"1279\":\"application-confirmation\",\"1293\":\"wish-list-manager\",\"1575\":\"faithlife-sites-lazy\",\"1579\":\"account-layout\",\"1756\":\"configuration-wizard-subscriptions\",\"2493\":\"builder-custom-components\",\"2649\":\"preorder-form\",\"2835\":\"checkout-payment-methods\",\"2876\":\"gifts-received\",\"3781\":\"preorders\",\"4018\":\"jquery-async\",\"4118\":\"order-confirmation-summary\",\"4927\":\"account-security\",\"5141\":\"checkout-payment-status\",\"5663\":\"credits\",\"5850\":\"academic-profile\",\"6399\":\"academic-application\",\"6630\":\"universal-header-section\",\"6891\":\"styled-ui-group-selector\",\"7286\":\"account-shipping-profiles\",\"7540\":\"payment-plans\",\"7552\":\"subscription-management\",\"7579\":\"preorder-billing-shipping\",\"7949\":\"cart\",\"8190\":\"cart-notifications\",\"8618\":\"compare-packages\",\"8638\":\"payment-methods\",\"8658\":\"subscription-confirmation\",\"8864\":\"we-do-not-sell\",\"9283\":\"configuration-wizard-libraries\",\"9788\":\"user-profile-editor\"}[chunkId] || chunkId) + \".\" + {\"179\":\"09213d96189cd409534b\",\"187\":\"e69c39aa331809972c0c\",\"251\":\"f4dd5855088674d46c67\",\"372\":\"126ac99af00bfc6491e0\",\"511\":\"d1095d9e69775aac0836\",\"690\":\"05f8c093264bb97b2517\",\"697\":\"de4e36d3b2de4a9c86d2\",\"871\":\"4d1390cc8ee1d058c3b1\",\"963\":\"7a977e57f25312c6a261\",\"1279\":\"1d82e70c2908355d3dbc\",\"1293\":\"3b52f853ad6b066085f0\",\"1295\":\"d59f99610d8d5143e8ec\",\"1575\":\"dcaf1c2c5a298559f7fd\",\"1579\":\"b2efac5f53516f964c1d\",\"1756\":\"0cf83881d478802cdaee\",\"1821\":\"f9a6eaf544a644a5afd7\",\"2443\":\"f8ca4f4b14ace4459bf2\",\"2493\":\"704231dcd963833f991f\",\"2559\":\"415fbec1b32e474c9a77\",\"2649\":\"ae9b9d28e09503764fc4\",\"2835\":\"bd40574d3c3c0412c6a3\",\"2876\":\"c9ebf794cbcb1e0937e0\",\"3135\":\"f84d367b88994a5ea0b3\",\"3729\":\"7b32615a35769313ebb5\",\"3781\":\"edc53c1a3d0f9036d1ca\",\"3943\":\"664222d3f015b5d4c8f8\",\"4018\":\"41bc4cdc96a03aa3ee6a\",\"4118\":\"b32f8df7ab7368df7e3c\",\"4927\":\"b7a3e08007cd1a15ee3a\",\"5141\":\"8829a9afd9e1f7578bbf\",\"5400\":\"c2c30fbddbe536ded356\",\"5663\":\"9eccde96a81ac85a4d22\",\"5850\":\"5fb41c6957377ec5f54a\",\"6279\":\"af5aa61e7ae5ef5c38ab\",\"6386\":\"f49dd30ee47edb80cbe1\",\"6399\":\"7925a56f3476ecdb96a1\",\"6630\":\"72ab140aaa7ff59d84d0\",\"6891\":\"f5d9965243c164d9774b\",\"7286\":\"b9b096fd54f4454b2b07\",\"7430\":\"54b1af4bd710cd52b8aa\",\"7481\":\"04e93ffccc00d948e38f\",\"7540\":\"b19f0bbfafeac06c21a1\",\"7552\":\"3145f9520ecaaddb1c69\",\"7579\":\"07a5158235f6cd5e2d8a\",\"7629\":\"cc52656e48deec2e90cd\",\"7949\":\"8d1b79312c8ab3387b00\",\"8051\":\"bed9cac20d80b45015b2\",\"8190\":\"8c7eb95511877b618d31\",\"8325\":\"d79311aad1c677997d19\",\"8618\":\"e4dc910b23abfb60a020\",\"8638\":\"08d44f3a1cff966840a9\",\"8658\":\"cf13ad8c887c04afc339\",\"8864\":\"35b7a04d1ea9d268aeee\",\"9067\":\"6b41b5ab387986997934\",\"9189\":\"673245b2aa23a019e759\",\"9283\":\"f5bc131c0f3577bd6744\",\"9414\":\"f345668efffa4f1c7c5c\",\"9788\":\"de07c4844088402e5524\",\"9852\":\"0b98182b1f782bcd8a89\"}[chunkId] + \".js?ssi=0\";\n};","// This function allow to reference all chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"../styles/\" + ({\"179\":\"product-details-page\",\"187\":\"search\",\"251\":\"checkout\",\"511\":\"license-claim\",\"690\":\"order-history\",\"963\":\"device-management\",\"1279\":\"application-confirmation\",\"1756\":\"configuration-wizard-subscriptions\",\"2493\":\"builder-custom-components\",\"2876\":\"gifts-received\",\"3781\":\"preorders\",\"4121\":\"vendor\",\"4378\":\"site\",\"4927\":\"account-security\",\"5663\":\"credits\",\"5850\":\"academic-profile\",\"6399\":\"academic-application\",\"7286\":\"account-shipping-profiles\",\"7540\":\"payment-plans\",\"7552\":\"subscription-management\",\"7579\":\"preorder-billing-shipping\",\"8618\":\"compare-packages\",\"8658\":\"subscription-confirmation\",\"9283\":\"configuration-wizard-libraries\",\"9788\":\"user-profile-editor\"}[chunkId] || chunkId) + \"-\" + {\"179\":\"21ef7d56\",\"187\":\"abfc80e4\",\"251\":\"c909127c\",\"372\":\"1ac7f7e5\",\"511\":\"cde033ea\",\"690\":\"1a01a300\",\"963\":\"eb462579\",\"1279\":\"e190d90f\",\"1756\":\"312f1085\",\"2493\":\"65b9ff7e\",\"2876\":\"d34e602d\",\"3781\":\"22d68d51\",\"4121\":\"ac4323dc\",\"4378\":\"26eb2c07\",\"4927\":\"b351a30c\",\"5663\":\"a89db51b\",\"5850\":\"c432acf1\",\"6399\":\"f02d7b84\",\"7286\":\"12952e1c\",\"7540\":\"89e31c54\",\"7552\":\"21c1fdb6\",\"7579\":\"c909127c\",\"8618\":\"4b2aa6b6\",\"8658\":\"5ed4f114\",\"9189\":\"7c15c7b3\",\"9283\":\"24014ac1\",\"9788\":\"e511d787\"}[chunkId] + \".css?ssi=0\";\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","const inProgress = {};\nconst dataWebpackPrefix = \"@logos/commerceweb-frontend:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tlet script, needAttach;\n\tif(key !== undefined) {\n\t\tconst scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tconst s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t\tif (script.src.indexOf(window.location.origin + '/') !== 0) {\n\t\t\tscript.crossOrigin = \"anonymous\";\n\t\t}\n\t}\n\tinProgress[url] = [done];\n\tconst onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tconst doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode?.removeChild(script);\n\t\tdoneFns?.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tconst timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// set .name for anonymous default exports per ES spec\n__webpack_require__.dn = (x) => {\n\t(Object.getOwnPropertyDescriptor(x, \"name\") || {}).writable || Object.defineProperty(x, \"name\", { value: \"default\", configurable: true });\n};","__webpack_require__.p = \"/dist/scripts/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nconst installedChunks = {\n\t4378: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tlet installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tconst promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tconst url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tconst error = new Error();\n\t\t\t\t\tconst loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tconst errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tconst realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nconst webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tlet [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nconst chunkLoadingGlobal = globalThis[\"__LOADABLE_LOADED_CHUNKS__\"] ||= [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// module factories are used so entry inlining is disabled\n// startup\n// Load entry module and return exports\nlet __webpack_exports__ = __webpack_require__.O(undefined, [4121], () => (__webpack_require__(68550)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["module","exports","componentThemeClassName","logos","undefined","faithlife","useIsPreviewingThisBuilderModel","model","isPreviewingGivenModel","setIsPreviewingGivenModel","useState","useEffect","Builder","isEditing","isPreviewing","previewingModel","handlers","clear","pending","eventAggregator","on","events","handler","event","split","data","type","off","index","indexOf","filter","it","ix","trigger","window","Error","push","e","console","error","setTimeout","global","CartClient","updateCartAsync","updateCartUrl","changeSet","response","fetch","postWithBody","url","body","json","addSkuToCart","addSkuToCartUrl","quantity","payInFull","searchData","couponCodes","parsedUrl","URL","location","origin","length","encodedCouponCodes","map","code","encodeURIComponent","pathname","replace","join","toString","addItemsToCart","addItemsToCartUrl","skuRequests","subscribableProductOptionRequests","groupId","redirectUrl","fetchConfig","catch","async","fetchError","then","errorCode","addSkusToCart","addSkusToCartUrl","addSubscribableProductOptionIdToCart","addSubscribableProductOptionIdToCartUrl","optionId","getMostRecentlyAddedItem","getMostRecentlyAddedItemUrl","get","getMostRecentlyAddedItemAndIncludeCredentials","credentials","removeWishlistItems","removeItemsUrl","selectedItems","wishlistItemIds","removeCartItems","antiForgeryToken","itemIds","saveForLater","formData","FormData","set","key","value","Object","entries","JSON","parse","postWithForm","headers","Accept","getCart","cartRequest","post","getCartWithCredentials","token","tokenContainer","document","getElementById","tokenInput","querySelector","__RequestVerificationToken","mode","getWishlist","wishListRequest","getRecommendedProducts","isSubscriptionInCart","skuIds","productIds","recommendedProducts","getSubscriptionPromotion","subscriptionPromotion","CannotMixGroupAndNonGroupItems","getSurvey","surveysUrl","getSurveyWithEmailAddress","emailAddress","params","encodedEmailAddress","submitAnswer","submitUrl","surveyResponse","getWishlistsForProducts","wishlistsProductsUrl","wishListProductRequests","addProductToWishlist","addProductToWishListUrl","ok","status","createWishList","createNewWishListUrl","listName","productIdToIncludeInWishList","name","BuilderCartDataContext","createContext","c_emptyPreorderAddToCartSkuIdsBySkuId","current","usePreorderAddToCartSkuIds","useContext","preorderAddToCartSkuIdsBySkuId","BuilderCartDataProvider","shouldSuppressMinicartDrawer","autoAppliedCouponCode","children","onAddToCartRequest","useAddToCartRequest","React","Provider","BuilderCartProvider","cartData","CartProvider","useStatus","useBuilderStatus","id","addToCartButtonResources","useLocalization","subscribeToMiniCartButtonResources","suppressMissingError","normalizedId","String","trim","shouldResolveSku","Boolean","ownershipStatusResult","useOwnershipStatusData","pricingResult","usePricing","productId","isLoading","isError","errorType","hasError","createAddToCartStatus","isOwned","isInCart","hasBeenPreordered","isPrepubProduct","defaultButtonText","Subscribe","buttonText","RecommendationsCartProvider","useCallback","args","options","skuItems","items","item","requestId","Date","now","Math","random","onRequestStart","controller","AbortController","addEventListener","detail","abort","onRequestFinish","onSuccess","signal","onError","dispatchEvent","CustomEvent","bubbles","identifier","CartRecommendationsSkuDataContext","CartRecommendationsDataProvider","skuDataBySkuId","useCartRecommendationsStatus","isPrepubSku","preorder","addToCart","CartRecommendationsCartProvider","newCart","skuIdsToAdd","order","analyticsTelemetry","dataLayer","LibraryUpsellCartProvider","onLibraryAddedToCart","handleAddToCartRequest","resolveProductData","catalogData","userSkus","userSkusById","Map","sku","skus","StaticProductDataContext","useStaticProductData","productData","isRefetching","StaticProductDataProvider","staticProductData","StaticProductProvider","ProductProvider","useProductData","useBuilderProductData","getProductData","useStaticDataContext","staticCatalogData","catalogResult","useDataLoader","userProductData","pricing","useMemo","primarySku","skuId","isPreorder","addToCartSkuId","addToCartUrl","normalized","match","decodeURIComponent","getSkuIdFromAddToCartUrl","routes","AddToCartUrl","mapPricingToUserProductData","useBuilderUserProductData","BuilderProductProvider","InitialSkuOwnershipContext","InitialSkuOwnershipProvider","initialOwnership","RecommendationsProductProvider","useRecommendationsProductData","resources","primarySkuId","ownership","initial","hasOwnership","hasStatus","useAddToCartStatusSkus","BuilderResourcesProvider","stepperControlResources","containedResourcesStrings","subscriptionPricingCardResources","containedResourcesLabels","buildContainedResourcesLabels","addToCartButton","containedResources","stepperControl","decrementLabel","incrementLabel","valueLabel","subscriptionPricingCards","ResourcesProvider","RecommendationsResourcesProvider","addedToCart","youAlreadyOwnThisProduct","freeTrial","subscribe","changePlan","AddToCartButtonResourcesProvider","useOnWishlistToggle","getPrimarySkuId","wishListsProductsUrlFallback","errorContext","RouteContext","open","openWishListForm","SharedWishListFormContext","loadData","useLoadWishListProductData","wishListsProductsUrl","WishListsGetViewModelsForProductRequests","productWishLists","revalidate","wishListsProductMembershipRecords","WishlistMembershipDataContext","onWishlistToggle","useWishlistMembershipData","isSignedIn","useCurrentUser","skuResult","request","result","useWishListProductData","added","setAdded","useOnProductAddedToWishList","addedProductId","isOptimistic","isOnUserWishlist","isInAnyWishList","WishlistMembershipDataProvider","contextValue","BuilderWishlistDataProvider","StaticWishlistDataProvider","BuilderWishlistProvider","WishlistProvider","useWishlistData","StaticWishlistProvider","NEW_WISHLIST_CREATED","PRODUCT_ADDED_TO_WISHLIST","publishNewWishListCreated","wishList","baseAddToWishListUrl","customEvent","useOnNewWishListCreated","handlerHelper","removeEventListener","publishProductAddedToWishList","wishListId","WishListProductsUrlContext","applyProductAddedToMembershipRecords","records","wl","isProductInWishList","WishListProductBatchContext","createBatchContext","requests","filteredRequests","r","values","productWishListsByProductId","find","d","stringify","WishListBatchCacheClearer","clearBatchCache","useRevalidate","WishListProductBatchProvider","userId","context","useLoadData","productRequest","Promise","resolve","useData","useProductInWishList","isWishlistEligible","fetchedData","setData","prev","WishlistContextProvider","SharedWishListFormProvider","builderPageStylesheetsUpdatedEventName","builder","initializeBuilderSdk","fetchStylesheetUrl","stylesheetId","content","query","limit","fields","promise","dynamic_stylesheets","DynamicStylesheets","latestUpdateIdRef","useRef","isMounted","handleStylesheetsUpdated","insertionMarker","commentWalker","createTreeWalker","head","NodeFilter","SHOW_COMMENT","nextNode","currentNode","textContent","getStylesheetInsertionMarker","nextStylesheetIds","stylesheetIds","currentStylesheetById","Array","from","querySelectorAll","reduce","link","dataset","currentStylesheetIds","keys","stylesheetIdsToAdd","includes","stylesheetIdsToRemove","updateId","stylesheetUrlsToAdd","stylesheetIdToRemove","remove","createElement","rel","href","insertBefore","builder_page","props","isPreviewingThisBuilderModel","editUrl","ContentEditLink","title","className","PerUserDataContextProvider","RenderBuilderContent","_extends","onContentLoaded","contentData","seenIds","Set","stylesheet","stylesheets","has","add","getBuilderPageStylesheets","builderIo","apiKey","globalThis","layoutViewModel","builderIoPublicApiKey","init","__WEBPACK_DEFAULT_EXPORT__","notifyWarning","restrictOverflow","domainUri","formatTemplate","template","part","i","exec","dynamicPriceLink","labels","target","dynamicPrice","buildSalePriceDisplay","row","isForeignCurrency","ownedAvailableResourceCount","totalAvailableResourceCount","isPartiallyIncluded","isPartial","isPartiallyOwned","includedCount","subResources","ownedIncludedCount","ownedSubresourceCount","allSubresourcesOwned","owned","partiallyIncludedFullyOwnedTooltip","INCLUDED_COUNT","COLLECTION_COUNT","totalResourceCount","INCLUDED_OWNED_COUNT","SalePriceDisplayPopover","anchorText","fullyIncludedPartlyOwnedTooltip","OWNED_COUNT","ownedResourceCount","DYNAMIC_PRICE_URL","partiallyOwned","newPartiallyOwnedTooltipFormat","newPartiallyOwnedNoneIncludedTooltip","pickPartiallyOwnedTemplate","salePriceDisplay","salePrice","isFree","mapContainedResourcesData","viewModel","isArray","sections","section","priceColumnLabel","areAllRowsOwned","priceColumnDisplay","rows","hasSingleCollection","count","categoryToken","categoryLabel","sortPriority","totalCount","unownedCount","defaultExpanded","isCollectionFullyOwned","partiallyIncludedTooltipText","base","partiallyIncludedTooltipFormat","p","youAlreadyOwnCollection","buildPartiallyIncludedTooltipText","sub","mapSubResource","mapRow","mapSection","totalValueDisplay","isOwnedByUser","displaySalePricedCopy","footnotes","mapContainedResourceTooltipData","imageUri","authorText","priceDisplay","retailPrice","productPageUrl","detailsUri","ownershipText","buildOwnershipText","convertPlaceholders","str","strings","expandAllLabel","ExpandAll","collapseAllLabel","CollapseAll","hideOwnedLabel","HideBooksIOwn","totalValueLabel","TotalValueIfSoldSeparately","partiallyIncludedLegendLabel","partiallyIncluded","salePricedFootnoteLabel","IndividualProductsSalePriced","ifPurchasedSeparatelyLabel","IfPurchasedSeparately","learnMoreLabel","LearnMoreButtonText","closeTooltipLabel","CloseTooltip","previewNotAvailableLabel","PreviewNotAvailable","buildContainedResourcesMapperStrings","useBuilderAuthor","authorId","author","AuthorBatch","displayName","imageUrl","imageUrlLarge","bio","longDescription","BuilderAuthorProvider","AuthorProvider","useAuthor","BuilderBlogPostsContext","useBuilderBlogPosts","carouselId","staticBlogPosts","BuilderBlogDataProvider","BuilderBlogProvider","BlogProvider","useBlogPosts","c_emptyResult","freeze","c_loadingResult","BuilderProductComponentsContext","ContainedResourceCache","Context","publish","entry","listener","subscribers","useInstance","instance","initialIds","initialData","contextRef","cache","load","loader","failure","getEntry","subscriber","delete","size","createInstance","currentResult","state","setState","useSubscribe","createCacheContext","useBuilderProductComponents","mapperStrings","useBuilderContainedResourceTooltipData","BuilderContainedResourcesDataProvider","containedResourcesMapperStrings","BuilderContainedResourcesProvider","ContainedResourcesProvider","useProductComponents","useContainedResourceTooltipData","BuilderReferralProvider","impactToken","ReferralProvider","useBuilderSubscriptionProductData","spoid","isMultiAnnual","subscriptionProductData","useSubscriptionProductData","strikeoutPrice","strikeoutPriceDescription","pricePerMonth","initialCharge","initialChargeLocalized","freeTrialDays","hasSubscription","canSubscribe","localizedResources","isMultiAnnualSubscription","annualSavingsPercentage","BuilderSubscriptionProvider","SubscriptionProvider","provider","BuilderComponentsContextProvider","StaticDataContextProvider","custom_components_lib","loadable","lib","resolved","chunkName","isReady","this","__webpack_modules__","importAsync","all","__webpack_require__","bind","requireAsync","requireSync","registerSection","render_builder_content","locale","staticData","componentTheme","userInfo","currentUserInfo","CustomComponentsLib","cn","ErrorBoundary","BuilderComponent","contentLoaded","getGroupIdFromLocation","search","rawGroupId","URLSearchParams","Number","isInteger","appendPageCouponCode","eventsTrackingContext","EventsTrackingContext","spoidItems","AddItemsToCartAjax","message","flatMap","anonymousUserToken","queryId","subscribableProductOptionId","addedSkuIds","addedSubscribableProductOptionIds","addSkuToCartResultStatus","notifications","notification","notify","kind","suppressMiniCartDrawer","addedItemCount","sum","toLowerCase","recordAddToCartEvent","CartNotificationLocation","CART_NOTIFICATION_ADD_ITEM_COMPLETED_EVENT","registerMiniCartOpenStateCallbacks","registerMiniCartState","getter","splice","notifyError","useCartNotificationEvents","handleAddItemAttemptEvent","notifyClient","CART_NOTIFICATION_SCOPE","some","isMiniCartOpen","MiniCart","Page","CartContext","cart","hasContext","useCartEffect","callback","callbackRef","cartUpdated","CartContextProvider","Component","constructor","super","errorInfo","getDerivedStateFromError","componentDidCatch","resetErrorBoundary","onReset","render","fallback","fallbackComponent","FallbackComponent","propTypes","PropTypes","isRequired","showError","defaultProps","searchInsights","EventsTrackingContextProvider","algoliaApplicationId","algoliaSearchApiKey","algoliaIndexName","setAnonymousUserToken","searchParams","replaceUrl","useLocation","recordedRedirectEvent","getDetailedLocationIfAvailable","sendEvent","eventType","eventName","filters","positions","eventQueryId","eventData","substring","queryID","objectIDs","client","default","redirectProductIds","redirectQueryId","eventKey","remainingParameters","remainingQuery","appId","err","userToken","recordClickFilterEvent","recordClickResultEvent","position","recordViewEvent","displayTemplateKind","getAnimationStyle","phase","opacity","transform","transition","transformOrigin","AnimatedClientNotification","onRemove","setPhase","timerId","clearTimeout","max","expiresAt","style","onTransitionEnd","handleTransitionEnd","Notification","notificationId","_path","_path2","assign","n","arguments","t","hasOwnProperty","call","apply","Error_component","react","width","height","viewBox","fill","xmlns","containerHeightSubscribers","subscribeNotificationsContainerHeight","c_cookiePrefix","c_cookieSuffix","CookieNotificationContext","useNotificationDismissalState","dismissedNotificationIds","isEnabled","dismissedIds","setDismissedIds","missingIds","cookie","pair","separatorIndex","slice","startsWith","endsWith","readDismissedIdsFromCookies","isDismissed","onDismiss","cooldownMinutes","getDismissalCookieName","writeDismissalCookie","CookieNotificationProvider","NotificationsList","serverNotifications","cmsNotifications","clientNotifications","useClientNotifications","notificationDismissal","useCookieNotificationDismissal","contextDismissal","standaloneDismissal","builderContext","containerRef","container","observer","ResizeObserver","contentRect","observe","disconnect","useContainerHeightObserver","ref","contentSourceKind","BuilderSection","contentId","isHidable","isDismissable","icon","ErrorIcon","CoursesIcon","dangerouslySetInnerHTML","__html","removeNotification","Notifications","notifyCallbacks","removeNotificationCallbacks","removeScopedNotificationsCallbacks","notifySuccess","notifyInfo","scope","isGroupedNotification","createdAt","removeScopedNotifications","isSameNotificationGroup","a","b","applyNotification","prevNotification","setClientNotifications","scopedClientNotifications","setScopedClientNotifications","handleNotify","handleRemoveNotification","handleRemoveScopedNotifications","removeIndex","removeScopedIndex","scopedNotifications","acc","globalStore","revalidateKey","onValidatingChange","fetcher","onData","onLoadingDone","finally","revalidateOnFocus","visibilityState","SubscriptionPeriodType","c_defaultStatus","OwnershipBatch","ids","spoids","method","results","product","products","subscribableProduct","subscribableProducts","option","PricingBatch","SubscriptionProductBatch","subscriptionProductDataRequests","subscriptionProducts","SubscriptionPromotionBatch","promotions","subscriptionPromotions","promotion","initialPricingData","preferredCurrency","ownershipInitialIds","pricingInitialData","pricingInitialIds","PerUserDataBatchCacheRevalidator","revalidatePricing","handleCartUpdated","isUserLoading","cartContents","contents","setContents","lineItems","subscribableLineItems","isComplete","handleCartLoaded","handleItemsAdded","useCartContents","cartStatus","lineItem","prepubInfo","itemProductId","getCartStatus","useSubscriptionPromotion","c_defaultUserInfo","isLoggedIn","email","avatarUrl","userState","isEmployee","isAcademicFaculty","isAcademicStudent","isAcademicStaff","isAcademicFacultyRequired","isAcademicStudentRequired","isSubscribed","doesQualifyForSubscriptionFreeTrial","isLogos10Owner","isBasePackageOwner","subscriptionLevel","segments","isUserEligibleForLegacyFallbackLicense","logosSubscribableProductOptionIdsInCart","doesUserHaveALogosSubscriptionInCart","subscribableProductIdInCart","domain","initialUserInfo","serverCurrentUserInfo","existingData","hasInitialData","setIsLoading","isValidating","setIsValidating","setError","currentKey","existing","useSwr","canEditContent","fetchCurrentUser","_g","edit_pencil_white_component","fillRule","Pencil","alt","overrideStylesByDirection","left","right","Drawer","placement","isOpen","zIndex","onClose","ReactModernDrawer","direction","lockBackgroundScroll","overflow","customIdSuffix","hasValidReviewData","averageRating","reviewCount","CheckboxOrRadioGroup","commentChangeFunc","maxCommentLength","o","isVisible","getRadioOrCheckbox","controlFunc","Radio","onClick","isChecked","isSelected","text","Checkbox","isCommentVisible","onChange","maxLength","setName","comment","checkboxorradiogroup","survey_content","SurveyContent","errorMessage","isNewQuestion","onUpdateQuestionStatus","currentQuestion","getGroupType","displayType","handleCheckboxOrRadioSelection","selectedOptionId","questionDisplayType","newOptions","selectedOption","anySelected","handleCommentChange","cx","cy","thanks","AlreadyParticipated","getQuestion","questionId","SurveyIncompleteFooter","isAnonymous","isAnswered","isLastQuestion","onSubmit","step","totalQuestionsCount","of","disabled","finish","next","skip","proptypes","survey_incomplete_footer","SurveyCompleteFooter","accountEditUrl","alternateSurveyId","displayMode","recipientToken","onFetchAlternateSurvey","onModalClose","returnUrl","done","continueBuilding","displayModePropType","survey_complete_footer","SurveyFooter","answeredQuestions","autoFillOption","onUpdateAllQuestions","onUpdateSurveyOwner","onUpdateSurveyProgress","onUpdateSurveyStatus","showAll","surveysBaseUrl","surveyId","userSurveyId","questionResponses","answeredQuestion","optionResponses","optionText","survey","submitAnonymous","submit","submitButton","fetchAlternateSurveyOnCompletion","progress","ReturnUrl","allQuestions","remainingQuestionsCount","submitError","autoFillOptionPropType","optionPropType","survey_footer","surveyPropType","surveyTitle","surveySubtitle","questionViewModel","SubmitUrl","SurveysBaseUrl","close_component","stroke","strokeWidth","strokeLinecap","shared_tooltip","Tooltip","ariaLabel","buttonClassName","contentStyles","onOpen","hideArrow","isPopoverOpen","setIsPopoverOpen","linkRef","debouncedSetIsClosed","useDebouncedCallback","debouncedSetIsOpen","handleMouseEnter","cancel","handleMouseLeave","handleMouseEnterContent","handleClick","CommerceWebThemeProvider","onMouseEnter","onMouseLeave","Popover","reference","maxWidth","modifiers","padding","PickListMode","CreateListMode","AddFormInputs","inputs","isPickingList","isCreatingNewList","PickListFormInputs","CreateNewListFormInputs","isDisabled","selectedListId","onSelectCreatingNewWishList","onSelectWishList","AlreadyInWishList","GoToCreateNewWishListLabel","AddProductToWishListUrl","newListName","onChangeNewListName","createWishListHeader","Input","placeholder","CreateWishListInputPlaceholder","forms_add_form_inputs","add_drawer","AddDrawer","idSuffix","hasTargetProduct","activeForm","AddForm","isConfirmButtonDisabled","confirmButtonLabel","isCancelButtonDisabled","cancelButtonLabel","onCancel","X","Button","styles","variant","add_to_wish_list_add_drawer","findInitialSelectedListId","initialSelectedList","AddModal","Modal","minWidth","Header","Content","Footer","FooterButtons","FooterButton","add_to_wish_list_add_modal","emptyWishListFormSettings","mergeWishListMembershipRecords","previousRecords","incomingRecords","previousById","record","mergedIncoming","previousRecord","SharedWishListForm","settings","isDesktop","useScreensize","showAddModal","showAddDrawer","handleAddToWishList","handleCreateAndAddToNewWishList","useWishListFormHandler","createAndAddToNewWishListUrl","wishListProductMembershipRecord","NotificationUtility","UpdateFailureNotification","AddedToNotification","processedListName","CreateFailureNotification","createdWishList","baseAddProductToWishListUrl","CreateAndAddToNewWishListUrl","handleClose","useWishListForm","onAddToWishList","onCreateNewWishList","previouslySelectedId","handleSelectWishList","newId","previous","handleChangeMode","newMode","additionalData","oldState","currentlySelected","newSelectedId","doClose","handleCancelPickClick","handleCreateNewListClick","handleAddToWishListSubmit","preventDefault","selectedList","isSelectedListIdValid","handleChangeNewListName","handleCancelCreatingNewWishListClick","handleCreateNewWishListSubmit","hasEnteredNewListName","SelectAWishListTitle","AddToWishList","cancelButtonText","CreateWishListTitle","CreateWishListButtonText","AddToWishListDrawer","AddToWishListModal","shared_wish_list_form_provider","setIsOpen","setSettings","isInitialized","setIsInitialized","handleOpen","previousSettings","previousRecordsForProduct","normalizeProductData","rating","StaticDataContext","StaticProductDataBatch","normalizedProductIds","logosProductIds","ssi","StaticDataBridge","initialStaticProductDataById","loadProductData","normalizedProductId","fromEntries","stripe","stripePublishableKey","loadStripe","link_button","styled","LinkButton","attrs","$button","intent","scale","touchTarget","withConfig","componentId","CTAButtonContainer","div","theme","mediaQueries","desktop","MobileCTAButtonContainer","CTAMenuButtonContainer","colors","headerText","MenuToggleText","MenuToggleChevronContainer","css","IconContainer","span","CTAButton","isMobile","displayText","Typography","asChild","CTAMenuButton","isDropdownOpen","setIsDropdownOpen","handleToggleMenu","Menu","onToggleMenu","Toggle","hideCaret","borderRadius","DownloadChevron","Dropdown","LinkItem","mobile_mega_menu","MobileMegaMenu","megaMenuElement","onToggleClick","userSubscribeButtonOptions","setIsMounted","setIsVisible","overflowY","useLayoutEffect","headerEl","top","offsetHeight","frameId","requestAnimationFrame","scrollTo","behavior","cancelAnimationFrame","debouncedResize","debouncedResizeElement","timeoutId","MobileToggleButton","MobileToggleButtonSvg","version","MobileToggleButtonHamburgerTopLine","MobileToggleButtonHamburgerMiddleLine","MobileToggleButtonHamburgerBottomLine","MobileContainer","$open","MegaMenuRenderModeProvider","UserSubscribeButton","isInMobileMegaMenu","LanguageSelector","UNIVERSAL_HEADER_CHILD_NAMES","siteLogo","searchBar","spacer","contactInfo","languageSelector","accountIcon","cartIcon","checkoutSecureIndicator","megaMenu","userSubscribeButton","getChildren","childNames","c","block","component","Container","headerTopHalfBackground","gray4","TopLayer","DesktopLanguageSelector","UniversalHeaderTopHalf","leftChildren","rightChildren","mobileMenu","builderElement","isMobileMegaMenuOpen","setIsMobileMegaMenuOpen","useOpenMenu","handleMobileMegaMenuToggleButtonClicked","currentValue","setHeaderHeight","useUniversalHeaderContext","resizeObserver","borderBoxSize","element","unobserve","child","headerBackground","white","borderColor","space","desktopMinWidth","LowerHalf","TopRow","UniversalHeaderLowerHalf","buttonCTA","navOptions","UniversalHeaderCore","navKind","upperChildren","lowerChildren","allowFullNav","megaMenuBuilderElement","upperProps","lowerProps","universal_header","united_states_of_america","enableBackground","xmlSpace","canada_extends","canada","united_kingdom_extends","australia_extends","south_africa_path","south_korea_path","_style","china_path","germany_extends","france_extends","brazil_extends","mexico_extends","philippines_extends","south_africa_extends","singapore_extends","india_extends","colombia_extends","spain_extends","south_korea_extends","hong_kong_extends","taiwan_extends","china_extends","worldwide_extends","worldwide","DefaultCulturePreference","flagUrl","World","shortName","longName","culturePreference","CulturePreferences","USA","Canada","x","y","InContextLocalizationCulturePreference","Text","as","textStyle","lineHeights","GlobeIcon","GlobeSvg","MobileButtonLabel","DesktopButtonLabel","LabelGroup","button","ChevronIcon","brandColor","Popup","img","headerNavMobileBackground","itemCount","Row","headerNavMobileDropdownBackground","$isSelected","FlagIcon","MobileHeader","headerNavMobileText","black","MobileBackButton","LanguageSelectorMobileHeader","LanguageSelectorMobileBackButton","InContextLocalizationRows","inContextLocalizationStatus","culturePreferenceUrl","currentHref","selectedCulturePreference","displayedCultures","culturePreferenceBaseUrl","CulturePreferenceBaseUrl","popupRef","toggleOpen","handleBlur","currentTarget","popup","root","getRootNode","contains","activeElement","filteredCultures","displayedCulturesAsSet","getFilteredCultures","culturePreferenceToDisplay","lang","onBlur","changeSite","BackChevronIcon","FlagUrl","MegaMenuRenderModeContext","MegaMenuSectionContext","useMegaMenuRenderMode","MegaMenuSectionProvider","useIsInMegaMenuSection","ToggleButton","ToggleButtonSvg","svg","ToggleButtonHamburgerTopLine","path","ToggleButtonHamburgerMiddleLine","ToggleButtonHamburgerBottomLine","fonts","normal","Menus","role","MenuLink","$sale","$bold","ChevronDownSvg","cart_path","cart_extends","strokeLinejoin","chevron_down_path","chevron_down_extends","chevron_down","close_extends","svgs_close","download_chevron_path","download_chevron_extends","download_chevron","globe_path","globe_extends","globe","clipRule","handset_path","handset_extends","handset","strokeMiterlimit","large_magnifying_glass_path","large_magnifying_glass_extends","large_magnifying_glass","profile_path","profile_extends","profile","UniversalHeaderContext","algoliaAppId","algoliaAppKey","algoliaSearchParametersJson","currentOpenMenu","setCurrentOpenMenu","headerHeight","resolveUri","menuName","valueOrUpdater","previousOpenMenu","currentIsCurrentOpenMenu","nextIsCurrentOpenMenu","nextCurrentOpenMenu","desktopUrl","onlineUrl","DownloadLogos","download","DownloadIcon","useOnline","WebIcon","ConfigureSubscriptionsUrl","StartAFreeTrial","ChooseYourPlan","nonEmptyIds","scheduleTask","toKey","batchFetch","maxBatchSize","getCacheData","stateRef","scheduled","inflight","pendingIds","inflightKeys","subs","flushBatch","chunks","chunkEntries","found","scheduleBatch","currentSubs","reject","unsubscribe","setRequest","cachedData","c_emptyDataResult","rest","every","is","cancelled","forEach","script","parentElement","removeChild","newScript","innerText","appendChild","LocalizationContext","componentName","ServerLocaleProvider","ns","LocationContext","getLocationFromWindow","LocationProvider","initialUrl","locationState","setLocationState","locationStateRef","windowWithPatchFlag","__commerceWebLocationChangePatched","notifyLocationChange","Event","originalPushState","history","pushState","originalReplaceState","replaceState","ensureHistoryLocationChangeEvents","syncFromWindow","navigate","pushUrl","ServerRouteProvider","AccountShippingProfiles","BuilderPage","UniversalHeaderSection","Cart","Checkout","ProductDetailsPage","OrderHistory","Preorders","Search","ConfigurationWizardSubscriptions","ConfigurationWizardLibraries","PreorderBillingShipping","UserProfileEditor","AccountSecurity","PaymentMethods","CheckoutBillingMethods","CheckoutPaymentStatus","GiftsReceivedHistory","WishListManager","DeviceManagement","Credits","PrivacyManager","PaymentPlans","VerificationCodeRequest","AcademicProfile","AcademicApplication","ApplicationConfirmation","SubscriptionManagement","SubscriptionConfirmation","StyledUIGroupSelector","ComparePackages","CartNotifications","PreorderForm","Survey","OrderConfirmationSummary","WeDoNotSell","TopLevelRenderer","componentProps","localizationData","ComponentToRender","toplevelComponents","getComponent","rendered","brandName","BrandNameContextProvider","withProviders","logosOrVerbum","toplevel_renderer","ReactDOM","AjaxBuyButton","isSellable","successMessage","handleButtonClick","ajax_buy_button","parseMetadata","metadata","cssClass","menu_menu_item","MenuItem","parsedMetadata","classNames","openInNewTab","menu_menu_section","MenuSection","header","childItems","isOpenInMobile","handleSelectSection","src","ChevronSmall","childItem","menu_menu_column","MenuColumn","selectedSectionId","menuSections","currentSection","getSectionsByType","top_level_menu_item","TopLevelMenuItem","static","handleSelectTopLevel","getColumnsByMetadata","columns","columnIndex","columnKey","columnId","newColumn","hasChildren","useMegaMenu","column","NavigationMenu","firstTopLevelMenuItem","openMenuId","findFirstSectionId","topLevelMenuItem","selectedTopLevelMenuItem","stopPropagation","menuItem","notificationUtility","notification_registry","me","loadableReady","handleBrowserGlobalsReadyCallbacks","browserGlobalsReadyCallbacks","parent","postMessage","__webpack_public_path__","CDNBaseAssetsUri","__webpack_public_path_prefix__","smoothscroll","removeNoJsClass","classList","loadableReadyCallbacks","invokeCallback","require","loadAllLazyContent","readyState","once","BrandNameContext","useBrandName","hasWarned","twMerge","clsx","checkIsEmailValid","test","validateEmailAddress","emptyEmailErrorMessage","invalidEmailErrorMessage","defaultHeaders","defaults","getParamsString","object","requestHeaders","rejectUnsuccessfulResponse","additionalHeaders","patchWithBody","putWithBody","c_defaultScreenSize","isSsr","isTablet","isLargeDesktop","isExtraLargeDesktop","htmlElementWidth","screensize","setScreensize","htmlElement","updateScreensize","innerWidth","mobileCutoffWidth","offsetWidth","windowResizeListener","mapProductPriceAmount","displayAmount","displayAmountCurrencyCode","localizedDisplayAmount","tooltipText","youAlreadyPreorderedThisProduct","addedToCartTooltip","unitPriceLabelsBySkuId","unitPriceLabel","primaryUnitPriceLabel","prices","salePriceCurrency","anchorPrice","anchorLabel","anchorSavings","savingsDescription","localizedSalePrice","priceVariant","discountSavings","discountDescription","discounts","discount","description","breakdownTriggerLabel","breakdownLines","line","label","displayInUsd","amount","isDeduction","anchorPriceLines","frame","el","caughtErrors","onerror","msg","lineNo","columnNo","stringifiedError","log","reason","styledUITheme","radii","gray3","gray8","gray10","gray11","gray14","gray15","gray16","gray21","gray22","gray33","gray34","gray51","gray52","gray67","textHighlight","foregroundPrimary","backgroundPrimary","headerDropdownBackground","headerDropdownLink","headingColor","tab","modalColorStripeActive","input","foreground","background","radio","primary","checkbox","getComputedStyle","documentElement","getPropertyValue","popover","buttons","color","backgroundColor","border","secondary","minor","danger","ThemeProvider","statusText","getAllUrlParams","param","updateUrlParamValues","updates","getAllUrlParamsObject","updateUrlParamValue","surveyElement","surveysurl","SurveyHeader","onNewQuestionScroll","isCloseable","headerRef","CloseSvg","survey_header","all_survey_content","AllSurveyContent","currentUserAnswers","question","surveyContainer","componentDidUpdate","prevProps","prevState","scroll","offsetTop","handleNewQuestionScroll","scrollIntoView","validateEmail","errorStrings","EmptyEmail","InvalidEmail","handleUpdateAllQuestions","updatedQuestions","handleUpdateQuestionStatus","updatedQuestion","handleUpdateSurveyStatus","handleUpdateSurveyProgress","unansweredQuestionIndex","findIndex","handleFetchAlternateSurvey","includeAllQuestionsAndAnswers","fetchAlternateError","handleModalClose","modalContainer","handleUpdateSurveyOwner","surveyHeader","getElementsByClassName","continueButton","__webpack_module_cache__","moduleId","cachedModule","loadStylesheet","installedCssChunks","m","deferred","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","__esModule","getProto","getPrototypeOf","obj","leafPrototypes","create","def","getOwnPropertyNames","definition","binding","defineProperty","enumerable","f","chunkId","promises","u","miniCssF","prop","prototype","inProgress","dataWebpackPrefix","l","needAttach","scripts","getElementsByTagName","s","getAttribute","charset","nc","setAttribute","crossOrigin","onScriptComplete","onload","timeout","doneFns","parentNode","Symbol","toStringTag","dn","getOwnPropertyDescriptor","writable","configurable","fullhref","existingLinkTags","dataHref","tag","existingStyleTags","findStylesheet","linkTag","realHref","createStylesheet","miniCss","installedChunks","installedChunkData","loadingEnded","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}