{"version":3,"file":"configuration-wizard-libraries.d46d58024f9de060c516.js?ssi=0","mappings":"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","sources":["webpack://@logos/commerceweb-frontend/./Scripts/site/components/compare-page/hooks/comparison-tracks-with-custom-compare.js","webpack://@logos/commerceweb-frontend/./Scripts/site/components/compare-page/track-kinds.js","webpack://@logos/commerceweb-frontend/./Scripts/site/components/compare-page/new-comparison-table-with-slider/track-selector/index.less?745d","webpack://@logos/commerceweb-frontend/./Scripts/site/components/compare-page/new-comparison-table-with-slider/track-selector/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/shared/display-price-value.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/product/price-anchor/index.less?4265","webpack://@logos/commerceweb-frontend/./Scripts/site/components/product/price-anchor/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/compare-page/recommendation-badge.less?7def","webpack://@logos/commerceweb-frontend/./Scripts/site/components/compare-page/recommendation-badge.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/compare-page/new-comparison-table-with-slider/track-product-card/index.less?ad15","webpack://@logos/commerceweb-frontend/./Scripts/site/components/compare-page/new-comparison-table-with-slider/track-product-card/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/compare-page/new-comparison-table-with-slider/track-product-slider/product-tab/index.less?f43a","webpack://@logos/commerceweb-frontend/./Scripts/site/components/compare-page/new-comparison-table-with-slider/track-product-slider/product-tab/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/compare-page/new-comparison-table-with-slider/track-product-slider/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/compare-page/new-comparison-table-with-slider/track-product-slider/index.less?f67a","webpack://@logos/commerceweb-frontend/./Scripts/site/components/compare-page/new-comparison-table-with-slider/mobile-track-selector/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/compare-page/new-comparison-table-with-slider/mobile-track-selector/index.less?a280","webpack://@logos/commerceweb-frontend/./Scripts/site/components/compare-page/new-comparison-table-with-slider/mobile-track-product-card/index.less?ca2a","webpack://@logos/commerceweb-frontend/./Scripts/site/components/compare-page/new-comparison-table-with-slider/mobile-track-product-card/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/compare-page/new-comparison-table-with-slider/comparison-modal/index.less?18b5","webpack://@logos/commerceweb-frontend/./Scripts/site/components/compare-page/new-comparison-table-with-slider/comparison-modal/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/compare-page/new-comparison-table-with-slider/mobile-product-comparison/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/compare-page/new-comparison-table-with-slider/mobile-product-comparison/index.less?12f1","webpack://@logos/commerceweb-frontend/./Scripts/site/components/compare-page/new-comparison-table-with-slider/tab-based-track-selector/index.less?9712","webpack://@logos/commerceweb-frontend/./Scripts/site/components/compare-page/new-comparison-table-with-slider/tab-based-track-selector/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/compare-page/new-comparison-table-with-slider/index.less?f9ef","webpack://@logos/commerceweb-frontend/./Scripts/site/components/compare-page/new-comparison-table-with-slider/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/compare-page/compare-books-or-features/index.less?8c25","webpack://@logos/commerceweb-frontend/./Scripts/site/components/compare-page/compare-books-or-features/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/configuration-wizard/interstitial-modal/index.less?1024","webpack://@logos/commerceweb-frontend/./Scripts/site/components/configuration-wizard/interstitial-modal/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/configuration-wizard/libraries/add-a-subscription-modal/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/configuration-wizard/libraries/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/configuration-wizard/hooks/use-interstitial-modal-handler.js","webpack://@logos/commerceweb-frontend/./Scripts/site/components/configuration-wizard/libraries/index.less?8629","webpack://@logos/commerceweb-frontend/./Scripts/site/components/shared/enhanced-image-tag/image.tsx"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react';\nimport CompareClient from '../../../clients/compare-client';\nimport { notifyError } from '../../notifications';\nimport { useLocalization } from '../../../localization';\n\nconst customCompareTrackId = '-1';\nconst maxCustomCompareProductCount = 10;\n\nconst getSelectedTrackProductIndex = track => {\n\tif (!track || !track.trackProducts || track.trackProducts.length <= 3) {\n\t\treturn 0;\n\t}\n\n\treturn Math.min(\n\t\tMath.max(\n\t\t\ttrack.trackProducts.findIndex(tp => tp.isSelected),\n\t\t\t0\n\t\t),\n\t\ttrack.trackProducts.length - 3\n\t);\n};\n\nfunction useComparisonTracksWithCustomCompare({\n\tinitialSelectedTrackId,\n\tinitialSelectedTrackProducts,\n\ttrackOptions: propsTrackOptions,\n\troutes,\n\thandleTrackFetched,\n\thandleTrackSelected,\n\thandleCustomCompareAllCleared,\n}) {\n\tconst resources = useLocalization('CommerceWeb.Resources.Product.Compare');\n\tconst trackOptions =\n\t\tpropsTrackOptions && propsTrackOptions.length > 1\n\t\t\t? [...propsTrackOptions, { name: resources.CustomCompare, trackId: customCompareTrackId }]\n\t\t\t: propsTrackOptions;\n\n\tconst [tracks, setTracks] = useState(() => {\n\t\tconst tracksByTrackId = {};\n\t\tfor (const trackOption of trackOptions ?? []) {\n\t\t\ttracksByTrackId[trackOption.trackId] = trackOption;\n\t\t}\n\n\t\treturn tracksByTrackId;\n\t});\n\n\tconst [selectedTrackId, setSelectedTrackId] = useState(initialSelectedTrackId);\n\tconst [selectedMobileFilterTrackId, setSelectedMobileFilterTrackId] = useState(initialSelectedTrackId);\n\tconst [selectedTrack, setSelectedTrack] = useState(tracks && tracks[initialSelectedTrackId]);\n\tconst [selectedTrackProductIndex, setSelectedTrackProductIndex] = useState(0);\n\tconst [selectedCompareSections, setSelectedCompareSections] = useState([]);\n\tconst [displayMobileFilter, setDisplayMobileFilter] = useState(false);\n\tconst [isLoading, setIsLoading] = useState(true);\n\tconst [errorMessage, setErrorMessage] = useState(null);\n\tconst [isCustomCompareModalOpen, setIsCustomCompareModalOpen] = useState(false);\n\tconst [selectedCustomCompareTrackProducts, setSelectedCustomCompareTrackProducts] = useState(\n\t\tinitialSelectedTrackProducts ?? []\n\t);\n\n\tconst handleCustomCompare = useCallback(() => {\n\t\tsetIsCustomCompareModalOpen(false);\n\t\tsetDisplayMobileFilter(false);\n\n\t\tconst customCompareTrack = tracks[customCompareTrackId];\n\n\t\tif (\n\t\t\t!customCompareTrack.trackProducts ||\n\t\t\tcustomCompareTrack.trackProducts.length !== selectedCustomCompareTrackProducts.length ||\n\t\t\tselectedCustomCompareTrackProducts.some((tp, i) => tp !== customCompareTrack.trackProducts[i])\n\t\t) {\n\t\t\tconst newTracks = { ...tracks };\n\t\t\tnewTracks[customCompareTrackId] = {\n\t\t\t\t...tracks[customCompareTrackId],\n\t\t\t\ttrackProducts: selectedCustomCompareTrackProducts,\n\t\t\t\tsections: undefined, // force reload of the sections, since the track products changed\n\t\t\t};\n\t\t\tsetTracks(newTracks);\n\t\t\tsetSelectedTrackId(customCompareTrackId);\n\t\t}\n\t}, [selectedCustomCompareTrackProducts, tracks]);\n\n\tuseEffect(() => {\n\t\tsetSelectedTrackId(initialSelectedTrackId);\n\t}, [initialSelectedTrackId]);\n\n\tuseEffect(() => {\n\t\tif (!selectedTrack) {\n\t\t\tsetErrorMessage(resources.SomethingWentWrong);\n\t\t}\n\t}, [resources.SomethingWentWrong, selectedTrack]);\n\n\tuseEffect(() => {\n\t\tconst fetchTrackProducts = async () => {\n\t\t\tconst tracksWithoutTrackProducts = [];\n\n\t\t\tfor (const trackId in tracks) {\n\t\t\t\tif (!tracks[trackId].trackProducts && trackId !== customCompareTrackId) {\n\t\t\t\t\ttracksWithoutTrackProducts.push(trackId);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (tracksWithoutTrackProducts.length > 0) {\n\t\t\t\ttry {\n\t\t\t\t\tconst responseTracks = await CompareClient.getTrackProducts(\n\t\t\t\t\t\troutes.CompareTrackProductsBaseUrl,\n\t\t\t\t\t\ttracksWithoutTrackProducts\n\t\t\t\t\t);\n\n\t\t\t\t\tsetTracks(prev => {\n\t\t\t\t\t\tconst newTracks = { ...prev };\n\t\t\t\t\t\tresponseTracks.forEach(responseTrack => {\n\t\t\t\t\t\t\tnewTracks[responseTrack.trackId] = {\n\t\t\t\t\t\t\t\t...newTracks[responseTrack.trackId],\n\t\t\t\t\t\t\t\t...responseTrack,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn newTracks;\n\t\t\t\t\t});\n\t\t\t\t} catch (ex) {\n\t\t\t\t\tsetErrorMessage(resources.SomethingWentWrong);\n\t\t\t\t\tthrow ex;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// Eagerly load the product cards for every track up front so switching tracks only needs to\n\t\t// fetch comparison sections. This runs in the background without the blocking loading spinner.\n\t\tfetchTrackProducts();\n\t}, [resources.SomethingWentWrong, routes.CompareTrackProductsBaseUrl, tracks]);\n\n\tuseEffect(() => {\n\t\tconst fetchTrack = async () => {\n\t\t\tif (!selectedTrackId) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst track = { ...tracks[selectedTrackId] };\n\t\t\tif (!track.sections) {\n\t\t\t\tsetIsLoading(true);\n\t\t\t\ttry {\n\t\t\t\t\tif (selectedTrackId === customCompareTrackId) {\n\t\t\t\t\t\ttrack.trackProducts = selectedCustomCompareTrackProducts;\n\t\t\t\t\t} else if (!track.trackProducts) {\n\t\t\t\t\t\t// Fetch the product cards without comparison sections so the chart data can load separately.\n\t\t\t\t\t\tconst [responseTrack] = await CompareClient.getTrackProducts(routes.CompareTrackProductsBaseUrl, [\n\t\t\t\t\t\t\tselectedTrackId,\n\t\t\t\t\t\t]);\n\t\t\t\t\t\tObject.assign(track, responseTrack);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst productIds = (track.trackProducts ?? []).map(product => product.productId);\n\t\t\t\t\tif (productIds.length === 0) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst { sections } = await CompareClient.getCompareSectionData(\n\t\t\t\t\t\troutes.CompareTrackSectionsBaseUrl,\n\t\t\t\t\t\tproductIds\n\t\t\t\t\t);\n\n\t\t\t\t\ttrack.sections = sections;\n\n\t\t\t\t\thandleTrackFetched?.(track);\n\n\t\t\t\t\tsetTracks(prev => ({ ...prev, [selectedTrackId]: track }));\n\t\t\t\t} catch (ex) {\n\t\t\t\t\tsetErrorMessage(resources.SomethingWentWrong);\n\t\t\t\t\tthrow ex;\n\t\t\t\t} finally {\n\t\t\t\t\tsetIsLoading(false);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsetSelectedTrack(track);\n\t\t\tsetSelectedTrackId(track.trackId);\n\t\t\tsetSelectedCompareSections(track.sections);\n\t\t\tsetSelectedTrackProductIndex(getSelectedTrackProductIndex(track));\n\t\t\thandleTrackSelected?.(track);\n\n\t\t\treturn track;\n\t\t};\n\n\t\tfetchTrack(selectedTrackId);\n\t}, [\n\t\tselectedTrackId,\n\t\ttracks,\n\t\troutes.CompareTrackProductsBaseUrl,\n\t\tresources.SomethingWentWrong,\n\t\troutes.CompareTrackSectionsBaseUrl,\n\t\tselectedCustomCompareTrackProducts,\n\t\thandleTrackFetched,\n\t\thandleTrackSelected,\n\t]);\n\n\tconst handleTrackChange = useCallback(\n\t\ttrackId => {\n\t\t\tif (trackId !== customCompareTrackId || tracks[trackId].trackProducts) {\n\t\t\t\tsetSelectedTrackId(trackId);\n\t\t\t} else {\n\t\t\t\tsetIsCustomCompareModalOpen(true);\n\t\t\t}\n\t\t},\n\t\t[tracks]\n\t);\n\n\tconst handleMobileFilterTrackChange = useCallback(\n\t\ttrackId => {\n\t\t\tsetSelectedMobileFilterTrackId(trackId);\n\n\t\t\tif (trackId !== customCompareTrackId || tracks[trackId].trackProducts) {\n\t\t\t\tsetSelectedTrackId(trackId);\n\t\t\t}\n\t\t},\n\t\t[tracks]\n\t);\n\n\tuseEffect(() => {\n\t\tsetSelectedMobileFilterTrackId(selectedTrackId);\n\t}, [selectedTrackId]);\n\n\tconst handleFilterChange = useCallback(() => {\n\t\tsetDisplayMobileFilter(value => !value);\n\t}, []);\n\n\tconst handleCustomCompareTrackProductSelect = useCallback(\n\t\ttrackProduct => {\n\t\t\tconst selectedCustomCompareTrackProductIds = selectedCustomCompareTrackProducts.map(tp => tp.productId);\n\t\t\tconst isAlreadySelected = selectedCustomCompareTrackProductIds.includes(trackProduct.productId);\n\t\t\tif (selectedCustomCompareTrackProducts.length < maxCustomCompareProductCount && !isAlreadySelected) {\n\t\t\t\tconst newSelectedCustomCompareTrackProducts = [...selectedCustomCompareTrackProducts, trackProduct];\n\t\t\t\tsetSelectedCustomCompareTrackProducts(newSelectedCustomCompareTrackProducts);\n\t\t\t} else if (isAlreadySelected) {\n\t\t\t\tconst newSelectedCustomCompareTrackProducts = selectedCustomCompareTrackProducts.filter(\n\t\t\t\t\ttp => tp.productId !== trackProduct.productId\n\t\t\t\t);\n\t\t\t\tsetSelectedCustomCompareTrackProducts(newSelectedCustomCompareTrackProducts);\n\t\t\t} else {\n\t\t\t\tnotifyError(resources.YouHaveSelectedMaxNumberOfItemsToCompare);\n\t\t\t}\n\t\t},\n\t\t[selectedCustomCompareTrackProducts, resources.YouHaveSelectedMaxNumberOfItemsToCompare]\n\t);\n\n\tconst handleCustomCompareTrackProductDeselect = useCallback(\n\t\ttrackProduct => {\n\t\t\tconst filteredSelectedCustomCompareTrackProducts = selectedCustomCompareTrackProducts.filter(\n\t\t\t\ttp => tp !== trackProduct\n\t\t\t);\n\t\t\tsetSelectedCustomCompareTrackProducts(filteredSelectedCustomCompareTrackProducts);\n\t\t},\n\t\t[selectedCustomCompareTrackProducts]\n\t);\n\n\tconst handleCustomCompareClearAll = useCallback(() => {\n\t\tsetSelectedCustomCompareTrackProducts([]);\n\t\thandleCustomCompareAllCleared?.();\n\t}, [handleCustomCompareAllCleared]);\n\n\treturn {\n\t\ttrackOptions,\n\t\ttracks,\n\t\tselectedTrack,\n\t\thandleTrackChange,\n\t\tselectedTrackId,\n\t\tselectedTrackProductIndex,\n\t\tsetSelectedTrackProductIndex,\n\t\tselectedCompareSections,\n\t\tselectedCustomCompareTrackProducts,\n\t\tisCustomCompareModalOpen,\n\t\tsetIsCustomCompareModalOpen,\n\t\thandleCustomCompare,\n\t\terrorMessage,\n\t\tisLoading,\n\t\tdisplayMobileFilter,\n\t\tselectedMobileFilterTrackId,\n\t\thandleMobileFilterTrackChange,\n\t\thandleFilterChange,\n\t\thandleCustomCompareTrackProductSelect,\n\t\thandleCustomCompareTrackProductDeselect,\n\t\thandleCustomCompareClearAll,\n\t};\n}\n\nexport default useComparisonTracksWithCustomCompare;\nexport { customCompareTrackId };\n","const TrackKinds = {\n\tlibrary: 'Library',\n\tsubscribableFeatureSet: 'SubscribableFeatureSet',\n};\n\nexport default TrackKinds;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"index--container--yK0va\",\"dropdown\":\"index--dropdown--dtEwz\",\"desktopLabelPosition-top\":\"index--desktopLabelPosition-top--XZO9l\",\"desktopLabelPositionTop\":\"index--desktopLabelPosition-top--XZO9l\",\"desktopLabelPosition-left\":\"index--desktopLabelPosition-left--OSY0U\",\"desktopLabelPositionLeft\":\"index--desktopLabelPosition-left--OSY0U\",\"label\":\"index--label--aXamq\",\"select\":\"index--select--ANXvn\"};","import React, { useCallback, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport sharedStyles from '../../../configuration-wizard/shared.less';\nimport useScreensize from '../../../../util/hooks/use-screensize';\nimport { customCompareTrackId } from '../../hooks/comparison-tracks-with-custom-compare';\nimport styles from './index.less';\n\nconst TrackSelector = ({\n\tclassName,\n\tselectedTrackId,\n\ttrackOptions,\n\tlabel,\n\tdesktopLabelPosition = 'left',\n\tonTrackChange,\n}) => {\n\tconst { isMobile } = useScreensize();\n\n\tconst handleTrackChange = useCallback(\n\t\tevent => {\n\t\t\tconst trackId = event.target.value;\n\t\t\tonTrackChange(trackId);\n\t\t},\n\t\t[onTrackChange]\n\t);\n\n\tconst sortedTrackOptions = useMemo(() => {\n\t\tconst sortedOptions = [...trackOptions].sort((a, b) => a.name.localeCompare(b.name));\n\t\tconst customCompareTrackIndex = sortedOptions.findIndex(option => option.trackId === customCompareTrackId);\n\t\tif (customCompareTrackIndex !== -1) {\n\t\t\tconst [customCompareTrack] = sortedOptions.splice(customCompareTrackIndex, 1);\n\t\t\tsortedOptions.push(customCompareTrack);\n\t\t}\n\t\treturn sortedOptions;\n\t}, [trackOptions]);\n\n\treturn (\n\t\t<div className={classNames(styles.container, className)}>\n\t\t\t<div className={classNames(styles.dropdown, styles[`desktopLabelPosition-${desktopLabelPosition}`])}>\n\t\t\t\t{label && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={classNames(\n\t\t\t\t\t\t\tstyles.label,\n\t\t\t\t\t\t\tstyles[`desktopLabelPosition-${desktopLabelPosition}`],\n\t\t\t\t\t\t\tsharedStyles.h5\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{label}\n\t\t\t\t\t\t{desktopLabelPosition === 'left' && !isMobile && ':'}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t<select\n\t\t\t\t\tclassName={classNames(sharedStyles.ui2, styles.select)}\n\t\t\t\t\tvalue={selectedTrackId}\n\t\t\t\t\tonChange={handleTrackChange}\n\t\t\t\t\tdata-testid=\"track-select\"\n\t\t\t\t>\n\t\t\t\t\t{sortedTrackOptions.map(option => (\n\t\t\t\t\t\t<option key={option.trackId} value={option.trackId}>\n\t\t\t\t\t\t\t{option.name}\n\t\t\t\t\t\t</option>\n\t\t\t\t\t))}\n\t\t\t\t</select>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nTrackSelector.propTypes = {\n\tclassName: PropTypes.string,\n\tselectedTrackId: PropTypes.string.isRequired,\n\ttrackOptions: PropTypes.array.isRequired,\n\tlabel: PropTypes.string,\n\tonTrackChange: PropTypes.func.isRequired,\n};\n\nexport default TrackSelector;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst DisplayPriceValue = ({ smallPriceClassName, largePriceClassName, price, decimalSymbol }) => {\n\tconst [integralValue, decimalValue] = price.split(decimalSymbol);\n\treturn (\n\t\t<>\n\t\t\t<span className={largePriceClassName}>{integralValue}</span>\n\t\t\t<span className={smallPriceClassName}>\n\t\t\t\t{decimalSymbol}\n\t\t\t\t{decimalValue}\n\t\t\t</span>\n\t\t</>\n\t);\n};\nDisplayPriceValue.propTypes = {\n\tprice: PropTypes.string.isRequired,\n\tdecimalSymbol: PropTypes.string.isRequired,\n\tsmallPriceClassName: PropTypes.string,\n\tlargePriceClassName: PropTypes.string,\n};\n\nexport default DisplayPriceValue;\n","// extracted by mini-css-extract-plugin\nexport default {\"struckThroughPrice\":\"index--struckThroughPrice--XXf5o\",\"priceAnchor\":\"index--priceAnchor--QDmsi\",\"discountedSavingsDescription\":\"index--discountedSavingsDescription--aJfTS\"};","import React from 'react';\nimport cn from 'classnames';\nimport { CommandSentence } from '@faithlife/command-sentence-control';\nimport { useLocalization } from '../../../localization';\n\nimport styles from './index.less';\n\nconst PriceAnchor = ({ priceAnchor, className }) => {\n\tconst resources = useLocalization('Logos.CommerceWeb.Products.Resources.PriceAnchor');\n\tconst anchorPriceKinds = priceAnchor.anchorPriceKind.split(',').map(apk => apk.trim());\n\treturn (\n\t\t<div className={cn(styles.priceAnchor, className)}>\n\t\t\t{anchorPriceKinds.includes('CollectionValue') && (\n\t\t\t\t<div>\n\t\t\t\t\t{`${resources.CollectionValue} `}\n\t\t\t\t\t<CommandSentence\n\t\t\t\t\t\tContainer=\"span\"\n\t\t\t\t\t\ttemplate={priceAnchor.collectionValue}\n\t\t\t\t\t\tclassName={styles.struckThroughPrice}\n\t\t\t\t\t>\n\t\t\t\t\t\t<CommandSentence.Field name=\"PERDAYABBREVIATED\">\n\t\t\t\t\t\t\t<span>{resources.PerDayAbbreviated}</span>\n\t\t\t\t\t\t</CommandSentence.Field>\n\t\t\t\t\t\t<CommandSentence.Field name=\"PERMONTHABBREVIATED\">\n\t\t\t\t\t\t\t<span>{resources.PerMonthAbbreviated}</span>\n\t\t\t\t\t\t</CommandSentence.Field>\n\t\t\t\t\t\t<CommandSentence.Field name=\"PERYEARABBREVIATED\">\n\t\t\t\t\t\t\t<span>{resources.PerYearAbbreviated}</span>\n\t\t\t\t\t\t</CommandSentence.Field>\n\t\t\t\t\t</CommandSentence>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{anchorPriceKinds.includes('DynamicCollectionValue') && (\n\t\t\t\t<div>\n\t\t\t\t\t{`${resources.DynamicCollectionValue} `}\n\t\t\t\t\t<CommandSentence\n\t\t\t\t\t\tContainer=\"span\"\n\t\t\t\t\t\ttemplate={priceAnchor.dynamicCollectionValue}\n\t\t\t\t\t\tclassName={styles.struckThroughPrice}\n\t\t\t\t\t>\n\t\t\t\t\t\t<CommandSentence.Field name=\"PERDAYABBREVIATED\">\n\t\t\t\t\t\t\t<span>{resources.PerDayAbbreviated}</span>\n\t\t\t\t\t\t</CommandSentence.Field>\n\t\t\t\t\t\t<CommandSentence.Field name=\"PERMONTHABBREVIATED\">\n\t\t\t\t\t\t\t<span>{resources.PerMonthAbbreviated}</span>\n\t\t\t\t\t\t</CommandSentence.Field>\n\t\t\t\t\t\t<CommandSentence.Field name=\"PERYEARABBREVIATED\">\n\t\t\t\t\t\t\t<span>{resources.PerYearAbbreviated}</span>\n\t\t\t\t\t\t</CommandSentence.Field>\n\t\t\t\t\t</CommandSentence>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{anchorPriceKinds.includes('DigitalListPrice') && (\n\t\t\t\t<div>\n\t\t\t\t\t{`${resources.DigitalListPriceLabel} `}\n\t\t\t\t\t<CommandSentence\n\t\t\t\t\t\tContainer=\"span\"\n\t\t\t\t\t\ttemplate={priceAnchor.digitalListPrice}\n\t\t\t\t\t\tclassName={styles.struckThroughPrice}\n\t\t\t\t\t>\n\t\t\t\t\t\t<CommandSentence.Field name=\"PERDAYABBREVIATED\">\n\t\t\t\t\t\t\t<span>{resources.PerDayAbbreviated}</span>\n\t\t\t\t\t\t</CommandSentence.Field>\n\t\t\t\t\t\t<CommandSentence.Field name=\"PERMONTHABBREVIATED\">\n\t\t\t\t\t\t\t<span>{resources.PerMonthAbbreviated}</span>\n\t\t\t\t\t\t</CommandSentence.Field>\n\t\t\t\t\t\t<CommandSentence.Field name=\"PERYEARABBREVIATED\">\n\t\t\t\t\t\t\t<span>{resources.PerYearAbbreviated}</span>\n\t\t\t\t\t\t</CommandSentence.Field>\n\t\t\t\t\t</CommandSentence>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{anchorPriceKinds.includes('PrintListPrice') && (\n\t\t\t\t<div>\n\t\t\t\t\t{`${resources.PrintListPriceLabel} `}\n\t\t\t\t\t<CommandSentence Container=\"span\" template={priceAnchor.printPrice} className={styles.struckThroughPrice}>\n\t\t\t\t\t\t<CommandSentence.Field name=\"PERDAYABBREVIATED\">\n\t\t\t\t\t\t\t<span>{resources.PerDayAbbreviated}</span>\n\t\t\t\t\t\t</CommandSentence.Field>\n\t\t\t\t\t\t<CommandSentence.Field name=\"PERMONTHABBREVIATED\">\n\t\t\t\t\t\t\t<span>{resources.PerMonthAbbreviated}</span>\n\t\t\t\t\t\t</CommandSentence.Field>\n\t\t\t\t\t\t<CommandSentence.Field name=\"PERYEARABBREVIATED\">\n\t\t\t\t\t\t\t<span>{resources.PerYearAbbreviated}</span>\n\t\t\t\t\t\t</CommandSentence.Field>\n\t\t\t\t\t</CommandSentence>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{anchorPriceKinds.includes('RegularPrice') && (\n\t\t\t\t<div>\n\t\t\t\t\t{`${resources.RegularPriceLabel} `}\n\t\t\t\t\t<CommandSentence Container=\"span\" template={priceAnchor.regularPrice} className={styles.struckThroughPrice}>\n\t\t\t\t\t\t<CommandSentence.Field name=\"PERDAYABBREVIATED\">\n\t\t\t\t\t\t\t<span>{resources.PerDayAbbreviated}</span>\n\t\t\t\t\t\t</CommandSentence.Field>\n\t\t\t\t\t\t<CommandSentence.Field name=\"PERMONTHABBREVIATED\">\n\t\t\t\t\t\t\t<span>{resources.PerMonthAbbreviated}</span>\n\t\t\t\t\t\t</CommandSentence.Field>\n\t\t\t\t\t\t<CommandSentence.Field name=\"PERYEARABBREVIATED\">\n\t\t\t\t\t\t\t<span>{resources.PerYearAbbreviated}</span>\n\t\t\t\t\t\t</CommandSentence.Field>\n\t\t\t\t\t</CommandSentence>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{anchorPriceKinds.includes('DynamicPrice') && (\n\t\t\t\t<div>\n\t\t\t\t\t{`${resources.DynamicPriceLabel} `}\n\t\t\t\t\t<CommandSentence Container=\"span\" template={priceAnchor.dynamicPrice} className={styles.struckThroughPrice}>\n\t\t\t\t\t\t<CommandSentence.Field name=\"PERDAYABBREVIATED\">\n\t\t\t\t\t\t\t<span>{resources.PerDayAbbreviated}</span>\n\t\t\t\t\t\t</CommandSentence.Field>\n\t\t\t\t\t\t<CommandSentence.Field name=\"PERMONTHABBREVIATED\">\n\t\t\t\t\t\t\t<span>{resources.PerMonthAbbreviated}</span>\n\t\t\t\t\t\t</CommandSentence.Field>\n\t\t\t\t\t\t<CommandSentence.Field name=\"PERYEARABBREVIATED\">\n\t\t\t\t\t\t\t<span>{resources.PerYearAbbreviated}</span>\n\t\t\t\t\t\t</CommandSentence.Field>\n\t\t\t\t\t</CommandSentence>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{priceAnchor.savingsDescription && (\n\t\t\t\t<div className={priceAnchor.isDiscounted ? styles.discountedSavingsDescription : ''}>\n\t\t\t\t\t{priceAnchor.savingsDescription}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default PriceAnchor;\n","// extracted by mini-css-extract-plugin\nexport default {\"badge\":\"recommendation-badge--badge--03FP7\"};","import React from 'react';\nimport classNames from 'classnames';\n\nimport { useLocalization } from '../../localization';\nimport styles from './recommendation-badge.less';\n\nconst RecommendationBadge = ({ className }) => {\n\tconst resources = useLocalization('CommerceWeb.Resources.Product.Compare');\n\treturn <div className={classNames(styles.badge, className)}>{resources.RecommendedForYou}</div>;\n};\n\nexport default RecommendationBadge;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"index--container--eD0ua\",\"imageAndRecommendationBadge\":\"index--imageAndRecommendationBadge--HDMfy\",\"badgeContainer\":\"index--badgeContainer--ENbPS\",\"savingsBadge\":\"index--savingsBadge--K2-AL\",\"image\":\"index--image--nVcoN\",\"lowerContent\":\"index--lowerContent--jHpp8\",\"contentTopHalf\":\"index--contentTopHalf--JH3Hs\",\"contentBottomHalf\":\"index--contentBottomHalf--l6TCf\",\"titleSection\":\"index--titleSection--v8rat\",\"subtitle\":\"index--subtitle--1WCC+\",\"title\":\"index--title--b6Z7g\",\"titleLink\":\"index--titleLink--v2nPw index--title--b6Z7g\",\"description\":\"index--description---5S-X\",\"pricingSection\":\"index--pricingSection--IZyrH\",\"priceAnchor\":\"index--priceAnchor--angh3\",\"priceContainer\":\"index--priceContainer--QkjON\",\"priceLabelContainer\":\"index--priceLabelContainer--ZRRCI\",\"priceSmall\":\"index--priceSmall--oYG0a\",\"paymentPlanInfo\":\"index--paymentPlanInfo--ynkyA\",\"addToMiniCartButton\":\"index--addToMiniCartButton--Kv6d2 btn btn-primary\",\"resourcesCount\":\"index--resourcesCount--A9Kcg\",\"resourceCount\":\"index--resourceCount--wfbaQ\",\"shortContainer\":\"index--shortContainer--gE2h8\",\"shortContainerTitleAndPrice\":\"index--shortContainerTitleAndPrice--kGZex\",\"shortContainerForeignPrice\":\"index--shortContainerForeignPrice--NFIe4\",\"shortContainerAddToMiniCartButton\":\"index--shortContainerAddToMiniCartButton--SXb6e index--addToMiniCartButton--Kv6d2 btn btn-primary\"};","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { CommandSentence } from '@faithlife/command-sentence-control';\n\nimport AddToMiniCartButton from '../../../shared/add-to-mini-cart-button';\nimport DisplayPriceValue from '../../../shared/display-price-value';\nimport PriceAnchor from '../../../product/price-anchor';\nimport ForeignPriceTooltip from '../../../product/foreign-price-tooltip';\nimport RecommendationBadge from '../../recommendation-badge';\nimport { useLocalization } from '../../../../localization';\n\nimport shared from '../../../configuration-wizard/shared.less';\nimport { Image } from '../../../shared/enhanced-image-tag/image';\nimport { ScrollableTableWithSliderContext } from '../../scrollable-table-with-slider/scrollable-table-with-slider-provider';\nimport styles from './index.less';\n\nconst TrackProductCard = ({\n\tvariant,\n\ttitle,\n\tblurb,\n\tisForeignCurrency,\n\tprice,\n\tskuIds,\n\tpriceAnchorViewModel,\n\tproductId,\n\taddToMiniCartButton,\n\tisOwnedByUser,\n\townershipNotice,\n\tresourceCounts,\n\tisRecommended,\n\tonItemAddedToCart,\n\timageUrl,\n\tsavingsPercentage,\n\tproductDetailsUrl,\n}) => {\n\tconst resources = useLocalization('CommerceWeb.Resources.Product.Compare');\n\tconst showTrackProductDetails = variant === 'full';\n\n\tconst shouldShowResourceCount = !!resourceCounts;\n\tconst shouldShowNewToYou =\n\t\tshouldShowResourceCount && resourceCounts.unownedResourceCount !== resourceCounts.totalAvailableResourceCount;\n\tconst doesUserOwnAllResources = resourceCounts && resourceCounts.unownedResourceCount === 0;\n\n\tconst [resourcesTemplate, resourceCountTemplate] = doesUserOwnAllResources\n\t\t? [resources.BookCountAllOwned, null]\n\t\t: shouldShowNewToYou\n\t\t\t? [resources.BooksNewToYou, resources.BooksNewToYouBookCount]\n\t\t\t: [null, resources.BookCount];\n\tconst resourceCountToUse = shouldShowResourceCount\n\t\t? shouldShowNewToYou\n\t\t\t? resourceCounts?.unownedResourceCount\n\t\t\t: resourceCounts?.totalAvailableResourceCount\n\t\t: null;\n\n\tconst { columnWidth } = useContext(ScrollableTableWithSliderContext);\n\n\tif (!showTrackProductDetails) {\n\t\treturn (\n\t\t\t<div className={styles.shortContainer}>\n\t\t\t\t<div className={styles.shortContainerTitleAndPrice}>\n\t\t\t\t\t<div className={styles.title}>{title}</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<div data-testid=\"track-product-price\">\n\t\t\t\t\t\t\t<DisplayPriceValue\n\t\t\t\t\t\t\t\tlargePriceClassName={shared.h5}\n\t\t\t\t\t\t\t\tsmallPriceClassName={classNames(shared.h5, styles.priceSmall)}\n\t\t\t\t\t\t\t\tprice={price.value}\n\t\t\t\t\t\t\t\tdecimalSymbol={price.usdDecimalSymbol}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{isForeignCurrency && (\n\t\t\t\t\t\t\t<ForeignPriceTooltip className={styles.shortContainerForeignPrice} price={price.valueLocalized} />\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div>\n\t\t\t\t\t<AddToMiniCartButton\n\t\t\t\t\t\tbuttonClassName={styles.shortContainerAddToMiniCartButton}\n\t\t\t\t\t\tpayInFull={true}\n\t\t\t\t\t\tdisplayAddedToCart={false}\n\t\t\t\t\t\tskuIds={skuIds}\n\t\t\t\t\t\tproductId={productId}\n\t\t\t\t\t\tresources={addToMiniCartButton.resources}\n\t\t\t\t\t\tisOwnedByUser={isOwnedByUser}\n\t\t\t\t\t\tonItemAddedToCart={onItemAddedToCart}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className={styles.container}>\n\t\t\t<div className={styles.imageAndRecommendationBadge}>\n\t\t\t\t<div className={styles.badgeContainer}>\n\t\t\t\t\t{isRecommended && <RecommendationBadge />}\n\t\t\t\t\t{savingsPercentage && (\n\t\t\t\t\t\t<CommandSentence className={styles.savingsBadge} template={resources.PercentOff}>\n\t\t\t\t\t\t\t<CommandSentence.Field name=\"PERCENTSAVINGS\">{savingsPercentage}</CommandSentence.Field>\n\t\t\t\t\t\t</CommandSentence>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t{imageUrl &&\n\t\t\t\t\t(productDetailsUrl ? (\n\t\t\t\t\t\t<a href={productDetailsUrl}>\n\t\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\t\tsrc={imageUrl}\n\t\t\t\t\t\t\t\tclassName={styles.image}\n\t\t\t\t\t\t\t\talt={title}\n\t\t\t\t\t\t\t\tsizes={{\n\t\t\t\t\t\t\t\t\ttablet: columnWidth,\n\t\t\t\t\t\t\t\t\tdesktop: columnWidth,\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</a>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\tsrc={imageUrl}\n\t\t\t\t\t\t\tclassName={styles.image}\n\t\t\t\t\t\t\talt={title}\n\t\t\t\t\t\t\tsizes={{\n\t\t\t\t\t\t\t\ttablet: columnWidth,\n\t\t\t\t\t\t\t\tdesktop: columnWidth,\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</div>\n\t\t\t<div className={styles.lowerContent}>\n\t\t\t\t<div className={styles.contentTopHalf}>\n\t\t\t\t\t<div className={styles.titleSection}>\n\t\t\t\t\t\t{ownershipNotice && <div className={styles.subtitle}>{ownershipNotice}</div>}\n\t\t\t\t\t\t{productDetailsUrl ? (\n\t\t\t\t\t\t\t<a href={productDetailsUrl} className={styles.titleLink}>\n\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<div className={styles.title}>{title}</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t\t{blurb && <div className={styles.description}>{blurb}</div>}\n\t\t\t\t</div>\n\t\t\t\t<div className={styles.contentBottomHalf}>\n\t\t\t\t\t<div className={styles.pricingSection}>\n\t\t\t\t\t\t{priceAnchorViewModel && <PriceAnchor priceAnchor={priceAnchorViewModel} className={styles.priceAnchor} />}\n\t\t\t\t\t\t<div className={styles.priceContainer}>\n\t\t\t\t\t\t\t<div className={styles.priceLabelContainer}>{price.label}</div>\n\t\t\t\t\t\t\t<div data-testid=\"track-product-price\">\n\t\t\t\t\t\t\t\t<DisplayPriceValue\n\t\t\t\t\t\t\t\t\tlargePriceClassName={shared.h5}\n\t\t\t\t\t\t\t\t\tsmallPriceClassName={classNames(shared.h5, styles.priceSmall)}\n\t\t\t\t\t\t\t\t\tprice={price.value}\n\t\t\t\t\t\t\t\t\tdecimalSymbol={price.usdDecimalSymbol}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{isForeignCurrency && <ForeignPriceTooltip price={price.valueLocalized} />}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<AddToMiniCartButton\n\t\t\t\t\t\t\tbuttonClassName={styles.addToMiniCartButton}\n\t\t\t\t\t\t\tpayInFull={true}\n\t\t\t\t\t\t\tdisplayAddedToCart={false}\n\t\t\t\t\t\t\tskuIds={skuIds}\n\t\t\t\t\t\t\tproductId={productId}\n\t\t\t\t\t\t\tresources={addToMiniCartButton.resources}\n\t\t\t\t\t\t\tisOwnedByUser={isOwnedByUser}\n\t\t\t\t\t\t\tonItemAddedToCart={onItemAddedToCart}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t{shouldShowResourceCount && (\n\t\t\t\t<CommandSentence className={styles.resourcesCount} template={resourcesTemplate ?? '%BOOKS%'}>\n\t\t\t\t\t<CommandSentence.Field name=\"BOOKS\">\n\t\t\t\t\t\t<CommandSentence Container=\"span\" className={styles.resourceCount} template={resourceCountTemplate ?? ''}>\n\t\t\t\t\t\t\t<CommandSentence.Field name=\"COUNT\">{resourceCountToUse}</CommandSentence.Field>\n\t\t\t\t\t\t</CommandSentence>\n\t\t\t\t\t</CommandSentence.Field>\n\t\t\t\t</CommandSentence>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nTrackProductCard.propTypes = {\n\tvariant: PropTypes.oneOf(['short', 'full']),\n\ttitle: PropTypes.string.isRequired,\n\tblurb: PropTypes.string,\n\tisForeignCurrency: PropTypes.bool,\n\tprice: PropTypes.shape({\n\t\tlabel: PropTypes.string,\n\t\tvalue: PropTypes.string.isRequired,\n\t\tvalueLocalized: PropTypes.string.isRequired,\n\t\tusdDecimalSymbol: PropTypes.string.isRequired,\n\t}).isRequired,\n\tskuIds: PropTypes.arrayOf(PropTypes.string).isRequired,\n\tpriceAnchorViewModel: PropTypes.object,\n\tproductId: PropTypes.string.isRequired,\n\taddToMiniCartButton: PropTypes.object.isRequired,\n\tisOwnedByUser: PropTypes.bool,\n\townershipNotice: PropTypes.string,\n\tresourceCounts: PropTypes.shape({\n\t\tunownedResourceCount: PropTypes.number.isRequired,\n\t\ttotalAvailableResourceCount: PropTypes.number.isRequired,\n\t}),\n\tisRecommended: PropTypes.bool,\n\tonItemAddedToCart: PropTypes.func,\n\timageUrl: PropTypes.string,\n\tproductDetailsUrl: PropTypes.string,\n\tsavingsPercentage: PropTypes.number,\n};\n\nexport default TrackProductCard;\n","// extracted by mini-css-extract-plugin\nexport default {\"cardContainer\":\"index--cardContainer--8xt4T\",\"title\":\"index--title--JPGS1\",\"subTitle\":\"index--subTitle--cQCVz\",\"price\":\"index--price--G0gRL\",\"addToMiniCartButton\":\"index--addToMiniCartButton--y2SZE btn btn-primary\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport AddToMiniCartButton from '../../../../shared/add-to-mini-cart-button';\nimport styles from './index.less';\n\nconst ProductTab = ({\n\ttitle,\n\townershipNotice,\n\tprice,\n\tskuIds,\n\tproductId,\n\tisOwnedByUser,\n\tonItemAddedToCart,\n\taddToMiniCartButton,\n}) => {\n\treturn (\n\t\t<div className={styles.cardContainer}>\n\t\t\t<div className={styles.title}>{title}</div>\n\t\t\t{ownershipNotice && <div className={styles.subTitle}>{ownershipNotice}</div>}\n\t\t\t<div>\n\t\t\t\t<div className={styles.price}>{price.valueLocalized}</div>\n\t\t\t\t{addToMiniCartButton && (\n\t\t\t\t\t<AddToMiniCartButton\n\t\t\t\t\t\tbuttonClassName={styles.addToMiniCartButton}\n\t\t\t\t\t\tpayInFull={true}\n\t\t\t\t\t\tdisplayAddedToCart={false}\n\t\t\t\t\t\tskuIds={skuIds}\n\t\t\t\t\t\tproductId={productId}\n\t\t\t\t\t\tresources={addToMiniCartButton.resources}\n\t\t\t\t\t\tisOwnedByUser={isOwnedByUser}\n\t\t\t\t\t\tonItemAddedToCart={onItemAddedToCart}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nProductTab.propTypes = {\n\ttitle: PropTypes.string.isRequired,\n};\n\nexport default ProductTab;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport SliderWrapper from '../../scrollable-table-with-slider/slider-wrapper';\nimport useScreensize from '../../../../util/hooks/use-screensize';\nimport TrackProductCard from '../track-product-card/';\nimport sliderArrowOptions from '../../scrollable-table-with-slider/slider-arrow-options';\nimport ProductTab from './product-tab';\nimport styles from './index.less';\n\nconst TrackProductSlider = ({ trackProducts, isSticky, ownershipNotice, onItemAddedToCart }) => {\n\tconst { isMobile } = useScreensize();\n\n\tif (!trackProducts || !trackProducts.length) {\n\t\treturn null;\n\t}\n\n\tconst trackProductCards = trackProducts.map(tp => ({\n\t\tid: tp.productId,\n\t\tcomponent: isMobile ? (\n\t\t\t<ProductTab\n\t\t\t\ttitle={tp.name}\n\t\t\t\townershipNotice={ownershipNotice}\n\t\t\t\tprice={tp.price}\n\t\t\t\tskuIds={tp.skuIds}\n\t\t\t\tproductId={tp.productId}\n\t\t\t\tisOwnedByUser={tp.isOwned}\n\t\t\t\tonItemAddedToCart={onItemAddedToCart}\n\t\t\t\taddToMiniCartButton={tp.addToMiniCartButton}\n\t\t\t/>\n\t\t) : (\n\t\t\t<TrackProductCard\n\t\t\t\tvariant={isSticky ? 'short' : 'full'}\n\t\t\t\ttitle={tp.name}\n\t\t\t\tblurb={tp.blurb}\n\t\t\t\tisForeignCurrency={tp.isForeignCurrency}\n\t\t\t\tprice={tp.price}\n\t\t\t\tskuIds={tp.skuIds}\n\t\t\t\tpriceAnchorViewModel={tp.priceAnchorViewModel}\n\t\t\t\tproductId={tp.productId}\n\t\t\t\taddToMiniCartButton={tp.addToMiniCartButton}\n\t\t\t\tisOwnedByUser={tp.isOwned}\n\t\t\t\townershipNotice={ownershipNotice}\n\t\t\t\tresourceCounts={tp.resourceCounts}\n\t\t\t\tisRecommended={tp.isRecommended}\n\t\t\t\tonItemAddedToCart={onItemAddedToCart}\n\t\t\t\timageUrl={tp.imageUrl}\n\t\t\t\tsavingsPercentage={tp.savingsPercentage}\n\t\t\t\tproductDetailsUrl={tp.productDetailsUrl}\n\t\t\t/>\n\t\t),\n\t}));\n\n\treturn (\n\t\t<SliderWrapper\n\t\t\titemsClassName={styles.sliderItems}\n\t\t\titems={trackProductCards}\n\t\t\tarrowOptions={{ buttonHeight: isSticky && sliderArrowOptions.buttonHeight.short }}\n\t\t/>\n\t);\n};\n\nTrackProductSlider.propTypes = {\n\ttrackProducts: PropTypes.array,\n\tisSticky: PropTypes.bool.isRequired,\n\townershipNotice: PropTypes.string,\n\tonItemAddedToCart: PropTypes.func,\n};\n\nexport default TrackProductSlider;\n","// extracted by mini-css-extract-plugin\nexport default {\"sliderItems\":\"index--sliderItems--8RdOB\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { CommandSentence } from '@faithlife/command-sentence-control';\nimport { useLocalization } from '../../../../localization';\n\nimport styles from './index.less';\n\nconst MobileTrackSelector = ({ selectedTrack, hideBooksIOwn, onFilterChange }) => {\n\tconst resources = useLocalization('CommerceWeb.Resources.Product.Compare');\n\treturn (\n\t\t<div>\n\t\t\t<CommandSentence Container=\"span\" template={resources.MobileComparisonHeaderLibraries}>\n\t\t\t\t<CommandSentence.Field name=\"SELECTEDTRACKNAME\">{selectedTrack.name}</CommandSentence.Field>\n\t\t\t\t<CommandSentence.Field name=\"SHOWINGORHIDING\">\n\t\t\t\t\t{hideBooksIOwn ? resources.Hiding : resources.Showing}\n\t\t\t\t</CommandSentence.Field>\n\t\t\t</CommandSentence>{' '}\n\t\t\t<button onClick={onFilterChange} className={styles.changeButton}>\n\t\t\t\t{resources.Change}\n\t\t\t</button>\n\t\t</div>\n\t);\n};\n\nMobileTrackSelector.propTypes = {\n\tselectedTrack: PropTypes.shape({\n\t\tname: PropTypes.string.isRequired,\n\t}).isRequired,\n\thideBooksIOwn: PropTypes.bool.isRequired,\n\tonFilterChange: PropTypes.func.isRequired,\n};\n\nexport default MobileTrackSelector;\n","// extracted by mini-css-extract-plugin\nexport default {\"changeButton\":\"index--changeButton--llKCe\"};","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"index--container--WFh9T\",\"badgeContainer\":\"index--badgeContainer--Y2BoU\",\"savingsBadge\":\"index--savingsBadge--VL+RH\",\"baseCard\":\"index--baseCard--L-TXf\",\"fullCard\":\"index--fullCard--PXFdl index--baseCard--L-TXf\",\"shortCard\":\"index--shortCard--HUBX9 index--baseCard--L-TXf\",\"image\":\"index--image--wGSS4\",\"title\":\"index--title--GQ-dG\",\"titleLink\":\"index--titleLink--UcYYK index--title--GQ-dG\",\"subtitle\":\"index--subtitle--HqSsz\",\"descriptionSection\":\"index--descriptionSection--PWheF\",\"resourcesCount\":\"index--resourcesCount--bUvmv\",\"priceAndAddToCartSection\":\"index--priceAndAddToCartSection--5erF4\",\"shortPriceAndAddToCartSection\":\"index--shortPriceAndAddToCartSection--mMSjc index--priceAndAddToCartSection--5erF4\",\"fullPriceAndAddToCartSection\":\"index--fullPriceAndAddToCartSection--3cW3r index--priceAndAddToCartSection--5erF4\",\"pricingSection\":\"index--pricingSection--oM5G5\",\"priceAnchor\":\"index--priceAnchor--iBYmE\",\"collectionValuePrice\":\"index--collectionValuePrice--7hDWu\",\"priceContainer\":\"index--priceContainer--RCqFC\",\"priceLabelContainer\":\"index--priceLabelContainer--es1cG\",\"priceSmall\":\"index--priceSmall--ejV0k\",\"paymentPlanInfo\":\"index--paymentPlanInfo--TCoxT\",\"addToMiniCartButton\":\"index--addToMiniCartButton--BCDDV btn btn-primary\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { CommandSentence } from '@faithlife/command-sentence-control';\nimport AddToMiniCartButton from '../../../shared/add-to-mini-cart-button';\nimport DisplayPriceValue from '../../../shared/display-price-value';\nimport PriceAnchor from '../../../product/price-anchor';\nimport ForeignPriceTooltip from '../../../product/foreign-price-tooltip';\nimport RecommendationBadge from '../../recommendation-badge';\nimport { useLocalization } from '../../../../localization';\n\nimport shared from '../../../configuration-wizard/shared.less';\nimport styles from './index.less';\n\nconst MobileTrackProductCard = ({\n\tclassName,\n\tvariant,\n\ttitle,\n\tblurb,\n\tisForeignCurrency,\n\tprice,\n\tskuIds,\n\tpriceAnchorViewModel,\n\tproductId,\n\taddToMiniCartButton,\n\tisOwnedByUser,\n\townershipNotice,\n\tpaymentPlanInfo,\n\tresourceCounts,\n\tisRecommended,\n\tonItemAddedToCart,\n\timageUrl,\n\tsavingsPercentage,\n\tproductDetailsUrl,\n}) => {\n\tconst resources = useLocalization('CommerceWeb.Resources.Product.Compare');\n\tconst showTrackProductDetails = variant === 'full';\n\n\tconst shouldShowResourceCount = !!resourceCounts;\n\tconst shouldShowNewToYou =\n\t\tshouldShowResourceCount && resourceCounts.unownedResourceCount !== resourceCounts.totalAvailableResourceCount;\n\tconst doesUserOwnAllResources = resourceCounts && resourceCounts.unownedResourceCount === 0;\n\n\tconst resourceCountTemplate = doesUserOwnAllResources\n\t\t? resources.BookCountAllOwned\n\t\t: shouldShowNewToYou\n\t\t\t? resources.BookCountNewToYou\n\t\t\t: resources.BookCount;\n\tconst resourceCountToUse = shouldShowResourceCount\n\t\t? shouldShowNewToYou\n\t\t\t? resourceCounts?.unownedResourceCount\n\t\t\t: resourceCounts?.totalAvailableResourceCount\n\t\t: null;\n\n\treturn (\n\t\t<div className={styles.container}>\n\t\t\t<div className={styles.badgeContainer}>\n\t\t\t\t{isRecommended && <RecommendationBadge />}\n\t\t\t\t{savingsPercentage && (\n\t\t\t\t\t<CommandSentence className={styles.savingsBadge} template={resources.PercentOff}>\n\t\t\t\t\t\t<CommandSentence.Field name=\"PERCENTSAVINGS\">{savingsPercentage}</CommandSentence.Field>\n\t\t\t\t\t</CommandSentence>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t<div className={classNames(className, styles[`${variant}Card`])}>\n\t\t\t\t{showTrackProductDetails &&\n\t\t\t\t\timageUrl &&\n\t\t\t\t\t(productDetailsUrl ? (\n\t\t\t\t\t\t<a href={productDetailsUrl}>\n\t\t\t\t\t\t\t<img src={imageUrl} alt={title} className={styles.image} />\n\t\t\t\t\t\t</a>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<img src={imageUrl} alt={title} className={styles.image} />\n\t\t\t\t\t))}\n\t\t\t\t<div>\n\t\t\t\t\t{productDetailsUrl ? (\n\t\t\t\t\t\t<a href={productDetailsUrl} className={styles.titleLink}>\n\t\t\t\t\t\t\t<h5 className={classNames(shared.h5, styles.title)}>{title}</h5>\n\t\t\t\t\t\t</a>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<h5 className={classNames(shared.h5, styles.title)}>{title}</h5>\n\t\t\t\t\t)}\n\t\t\t\t\t{ownershipNotice && showTrackProductDetails && <div className={styles.subtitle}>{ownershipNotice}</div>}\n\t\t\t\t</div>\n\t\t\t\t{showTrackProductDetails && (\n\t\t\t\t\t<div className={styles.descriptionSection}>\n\t\t\t\t\t\t{shouldShowResourceCount && (\n\t\t\t\t\t\t\t<CommandSentence className={styles.resourcesCount} template={resourceCountTemplate}>\n\t\t\t\t\t\t\t\t<CommandSentence.Field name=\"COUNT\">{resourceCountToUse}</CommandSentence.Field>\n\t\t\t\t\t\t\t</CommandSentence>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{blurb && <div>{blurb}</div>}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t<div className={styles[`${variant}PriceAndAddToCartSection`]}>\n\t\t\t\t\t<div className={styles.pricingSection}>\n\t\t\t\t\t\t{showTrackProductDetails && priceAnchorViewModel && (\n\t\t\t\t\t\t\t<PriceAnchor priceAnchor={priceAnchorViewModel} className={styles.priceAnchor} />\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<div className={styles.priceContainer}>\n\t\t\t\t\t\t\t<div className={styles.priceLabelContainer}>{price.label}</div>\n\t\t\t\t\t\t\t<div data-testid=\"track-product-price\">\n\t\t\t\t\t\t\t\t<DisplayPriceValue\n\t\t\t\t\t\t\t\t\tlargePriceClassName={shared.h5}\n\t\t\t\t\t\t\t\t\tsmallPriceClassName={classNames(shared.h5, styles.priceSmall)}\n\t\t\t\t\t\t\t\t\tprice={price.value}\n\t\t\t\t\t\t\t\t\tdecimalSymbol={price.usdDecimalSymbol}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{isForeignCurrency && <ForeignPriceTooltip price={price.valueLocalized} />}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{showTrackProductDetails && paymentPlanInfo && (\n\t\t\t\t\t\t\t<CommandSentence\n\t\t\t\t\t\t\t\tclassName={styles.paymentPlanInfo}\n\t\t\t\t\t\t\t\ttemplate={paymentPlanInfo.resources.PaymentPlanInfoTemplate}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<CommandSentence.Field name=\"RECURRINGPRICE\">{paymentPlanInfo.recurringPrice}</CommandSentence.Field>\n\t\t\t\t\t\t\t\t<CommandSentence.Field name=\"NUMBEROFPAYMENTS\">\n\t\t\t\t\t\t\t\t\t{paymentPlanInfo.numberOfPayments}\n\t\t\t\t\t\t\t\t</CommandSentence.Field>\n\t\t\t\t\t\t\t</CommandSentence>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t\t<AddToMiniCartButton\n\t\t\t\t\t\tbuttonClassName={styles.addToMiniCartButton}\n\t\t\t\t\t\tpayInFull={true}\n\t\t\t\t\t\tdisplayAddedToCart={false}\n\t\t\t\t\t\tskuIds={skuIds}\n\t\t\t\t\t\tproductId={productId}\n\t\t\t\t\t\tresources={addToMiniCartButton.resources}\n\t\t\t\t\t\tisOwnedByUser={isOwnedByUser}\n\t\t\t\t\t\tonItemAddedToCart={onItemAddedToCart}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nMobileTrackProductCard.propTypes = {\n\tclassName: PropTypes.string,\n\tvariant: PropTypes.oneOf(['short', 'full']),\n\ttitle: PropTypes.string.isRequired,\n\tblurb: PropTypes.string,\n\tcollectionValuePrice: PropTypes.string,\n\tisForeignCurrency: PropTypes.bool,\n\tprice: PropTypes.shape({\n\t\tlabel: PropTypes.string,\n\t\tvalue: PropTypes.string.isRequired,\n\t\tvalueLocalized: PropTypes.string.isRequired,\n\t\tdecimalSymbol: PropTypes.string.isRequired,\n\t}).isRequired,\n\tskuIds: PropTypes.arrayOf(PropTypes.string).isRequired,\n\tproductId: PropTypes.string.isRequired,\n\taddToMiniCartButton: PropTypes.object.isRequired,\n\tresourceCounts: PropTypes.shape({\n\t\tunownedResourceCount: PropTypes.number.isRequired,\n\t\ttotalAvailableResourceCount: PropTypes.number.isRequired,\n\t}),\n\townershipNotice: PropTypes.string,\n\tpaymentPlanInfo: PropTypes.shape({\n\t\trecurringPrice: PropTypes.string.isRequired,\n\t\tnumberOfPayments: PropTypes.string.isRequired,\n\t\tresources: PropTypes.shape({\n\t\t\tPaymentPlanInfoTemplate: PropTypes.string.isRequired,\n\t\t}).isRequired,\n\t}),\n\tisRecommended: PropTypes.bool,\n\tonItemAddedToCart: PropTypes.func,\n\tsavingsPercentage: PropTypes.number,\n\tproductDetailsUrl: PropTypes.string,\n};\n\nexport default MobileTrackProductCard;\n","// extracted by mini-css-extract-plugin\nexport default {\"modal\":\"index--modal--VXb0e\",\"content\":\"index--content--FgVut\",\"header\":\"index--header--3tVqQ\",\"headerWithTitle\":\"index--headerWithTitle--4xRHQ index--header--3tVqQ\",\"title\":\"index--title--hBdEt\",\"closeButton\":\"index--closeButton--dc71y\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport SwipeableWrapper from '../../scrollable-table-with-slider/swipeable-wrapper';\nimport { CloseSvgUrl } from '../../../shared/svgs';\nimport { useLocalization } from '../../../../localization';\n\nimport styles from './index.less';\n\nconst ComparisonModal = ({ title, onClose, children }) => {\n\tconst resources = useLocalization('CommerceWeb.Resources.Product.Compare');\n\treturn (\n\t\t<div className={styles.modal}>\n\t\t\t<div className={title ? styles.headerWithTitle : styles.header}>\n\t\t\t\t{title && <div className={styles.title}>{title}</div>}\n\t\t\t\t<button onClick={onClose} className={styles.closeButton}>\n\t\t\t\t\t<img src={CloseSvgUrl} alt={resources.Close} />\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<SwipeableWrapper>\n\t\t\t\t<div className={styles.content}>{children}</div>\n\t\t\t</SwipeableWrapper>\n\t\t</div>\n\t);\n};\n\nComparisonModal.propTypes = {\n\ttitle: PropTypes.string,\n\tonClose: PropTypes.func,\n\tchildren: PropTypes.node,\n};\n\nexport default ComparisonModal;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport MobileTrackProductCard from '../mobile-track-product-card';\nimport { RightArrow } from '../../../configuration-wizard/svgs';\nimport ComparisonModal from '../comparison-modal';\nimport { useLocalization } from '../../../../localization';\n\nimport styles from './index.less';\n\nconst MobileProductComparison = ({\n\ttrackProducts,\n\townershipNotice,\n\tisComparisonModalOpen,\n\tonOpenComparisonModal,\n\tonCloseComparisonModal,\n\tonItemAddedToCart,\n\tchildren,\n}) => {\n\treturn (\n\t\t<>\n\t\t\t<div className={styles.productList}>\n\t\t\t\t<CompareLibrariesButton onClick={onOpenComparisonModal} />\n\t\t\t\t{trackProducts.map(tp => (\n\t\t\t\t\t<MobileTrackProductCard\n\t\t\t\t\t\tkey={tp.productId}\n\t\t\t\t\t\t// TODO use the ambidextrous version when mobile styles are implemented\n\t\t\t\t\t\tvariant=\"full\"\n\t\t\t\t\t\ttitle={tp.name}\n\t\t\t\t\t\tblurb={tp.blurb}\n\t\t\t\t\t\tisForeignCurrency={tp.isForeignCurrency}\n\t\t\t\t\t\tprice={tp.price}\n\t\t\t\t\t\tskuIds={tp.skuIds}\n\t\t\t\t\t\tpriceAnchorViewModel={tp.priceAnchorViewModel}\n\t\t\t\t\t\tproductId={tp.productId}\n\t\t\t\t\t\taddToMiniCartButton={tp.addToMiniCartButton}\n\t\t\t\t\t\tisOwnedByUser={tp.isOwned}\n\t\t\t\t\t\tpaymentPlanInfo={tp.paymentPlanInfo}\n\t\t\t\t\t\townershipNotice={ownershipNotice}\n\t\t\t\t\t\tonItemAddedToCart={onItemAddedToCart}\n\t\t\t\t\t\tisRecommended={tp.isRecommended}\n\t\t\t\t\t\tsavingsPercentage={tp.savingsPercentage}\n\t\t\t\t\t\tproductDetailsUrl={tp.productDetailsUrl}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\t\t\t\t<CompareLibrariesButton onClick={onOpenComparisonModal} />\n\t\t\t</div>\n\t\t\t{isComparisonModalOpen && <ComparisonModal onClose={onCloseComparisonModal}>{children}</ComparisonModal>}\n\t\t</>\n\t);\n};\n\nconst CompareLibrariesButton = ({ onClick }) => {\n\tconst resources = useLocalization('CommerceWeb.Resources.Product.Compare');\n\treturn (\n\t\t<button className={styles.compareLibrariesButton} onClick={onClick}>\n\t\t\t{resources.CompareLibraries}\n\t\t\t<RightArrow />\n\t\t</button>\n\t);\n};\n\nMobileProductComparison.propTypes = {\n\ttrackProducts: PropTypes.array.isRequired,\n\townershipNotice: PropTypes.string,\n\tisComparisonModalOpen: PropTypes.bool.isRequired,\n\tonOpenComparisonModal: PropTypes.func.isRequired,\n\tonCloseComparisonModal: PropTypes.func.isRequired,\n\tonItemAddedToCart: PropTypes.func,\n\tchildren: PropTypes.node.isRequired,\n};\n\nexport default MobileProductComparison;\n","// extracted by mini-css-extract-plugin\nexport default {\"productList\":\"index--productList--eJOIm\",\"compareLibrariesButton\":\"index--compareLibrariesButton--b5fKN btn\"};","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"index--container--RzOyO\",\"viewMoreContainer\":\"index--viewMoreContainer--g6hc9\",\"viewMoreButton\":\"index--viewMoreButton--fcIMW\",\"containerBottomBorder\":\"index--containerBottomBorder--nROtE\",\"tabsContainer\":\"index--tabsContainer--duICI\",\"tabSection\":\"index--tabSection--xLewU\",\"tab\":\"index--tab--4J7E6\",\"customCompareTrackTab\":\"index--customCompareTrackTab--IfGMH\",\"selectedTab\":\"index--selectedTab--b6ZYo\",\"tabIndicator\":\"index--tabIndicator--lVdfG\"};","import React, { useCallback, useMemo, useRef, useState } from 'react';\nimport classNames from 'classnames';\n\nimport { DoubleRightArrow } from '../../svgs';\nimport { useLocalization } from '../../../../localization';\n\nimport styles from './index.less';\n\nconst customCompareTabToken = 'custom-compare';\nconst denominationalTabToken = 'denominational';\nconst getTrackTabToken = trackId => {\n\treturn `track-${trackId}`;\n};\n\nconst TabBasedTrackSelector = ({\n\tclassName,\n\ttrackOptions,\n\tselectedTrackId,\n\tuserIsBasePackageOwner,\n\tonTrackChange,\n\tonChangeComparison,\n}) => {\n\tconst resources = useLocalization('CommerceWeb.Resources.Product.Compare');\n\tconst { primaryTrack, denominationalTracks, alternateTracks, customCompareTrack } = trackOptions;\n\n\tconst selectedTab = useMemo(() => {\n\t\tif (selectedTrackId === customCompareTrack?.trackId) {\n\t\t\treturn customCompareTabToken;\n\t\t}\n\n\t\tif (denominationalTracks.some(track => track.trackId === selectedTrackId)) {\n\t\t\treturn denominationalTabToken;\n\t\t}\n\n\t\treturn getTrackTabToken(selectedTrackId);\n\t}, [customCompareTrack?.trackId, denominationalTracks, selectedTrackId]);\n\n\tconst [isOpen, setIsOpen] = useState(() => {\n\t\tif (userIsBasePackageOwner) {\n\t\t\treturn true;\n\t\t}\n\t\tconst firstTrack = primaryTrack ?? (denominationalTracks.length > 0 ? null : alternateTracks[0]) ?? null;\n\t\tif (firstTrack) {\n\t\t\treturn selectedTrackId !== firstTrack.trackId;\n\t\t}\n\t\treturn true;\n\t});\n\n\tconst handleViewMoreClick = useCallback(() => {\n\t\tsetIsOpen(true);\n\t}, []);\n\n\tconst lastDenominationalLibrarySelectedRef = useRef(null);\n\n\tif (selectedTab === denominationalTabToken) {\n\t\tlastDenominationalLibrarySelectedRef.current = selectedTrackId;\n\t}\n\n\tconst handleDenominationalTabSelected = useCallback(() => {\n\t\tlet trackId = lastDenominationalLibrarySelectedRef.current;\n\t\tif (!trackId || !denominationalTracks.some(track => track.trackId === trackId)) {\n\t\t\ttrackId = denominationalTracks[0]?.trackId ?? null;\n\t\t}\n\t\tif (trackId !== null) {\n\t\t\tonTrackChange?.(trackId);\n\t\t}\n\t}, [denominationalTracks, onTrackChange]);\n\n\tif (!isOpen) {\n\t\treturn (\n\t\t\t<div className={styles.viewMoreContainer}>\n\t\t\t\t<button className={styles.viewMoreButton} onClick={handleViewMoreClick}>\n\t\t\t\t\t<span>{resources.ViewMoreLibraries}</span>\n\t\t\t\t\t<DoubleRightArrow />\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className={classNames(className, styles.container)}>\n\t\t\t<div className={styles.containerBottomBorder}></div>\n\t\t\t<div className={styles.tabsContainer}>\n\t\t\t\t{primaryTrack && (\n\t\t\t\t\t<TabSection>\n\t\t\t\t\t\t<TrackTab\n\t\t\t\t\t\t\ttrack={primaryTrack}\n\t\t\t\t\t\t\tisSelected={selectedTab === getTrackTabToken(primaryTrack.trackId)}\n\t\t\t\t\t\t\tonTrackChange={onTrackChange}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</TabSection>\n\t\t\t\t)}\n\t\t\t\t{denominationalTracks.length > 0 && (\n\t\t\t\t\t<TabSection>\n\t\t\t\t\t\t<Tab isSelected={selectedTab === denominationalTabToken} onClick={handleDenominationalTabSelected}>\n\t\t\t\t\t\t\t{resources.Traditions}\n\t\t\t\t\t\t</Tab>\n\t\t\t\t\t</TabSection>\n\t\t\t\t)}\n\t\t\t\t<TabSection>\n\t\t\t\t\t{alternateTracks.map(track => (\n\t\t\t\t\t\t<TrackTab\n\t\t\t\t\t\t\tkey={track.trackId}\n\t\t\t\t\t\t\ttrack={track}\n\t\t\t\t\t\t\tisSelected={selectedTab === getTrackTabToken(track.trackId)}\n\t\t\t\t\t\t\tonTrackChange={onTrackChange}\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\t\t\t\t</TabSection>\n\t\t\t\t{customCompareTrack && (\n\t\t\t\t\t<TabSection>\n\t\t\t\t\t\t<CustomCompareTrackTab\n\t\t\t\t\t\t\ttrack={customCompareTrack}\n\t\t\t\t\t\t\tisSelected={selectedTab === customCompareTabToken}\n\t\t\t\t\t\t\tonTrackChange={onTrackChange}\n\t\t\t\t\t\t\tonChangeComparison={onChangeComparison}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</TabSection>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nfunction TabSection({ children }) {\n\treturn <div className={styles.tabSection}>{children}</div>;\n}\n\nfunction Tab({ className, children, onClick, isSelected }) {\n\treturn (\n\t\t<button onClick={onClick} className={classNames(className, styles.tab, isSelected && styles.selectedTab)}>\n\t\t\t{children}\n\t\t\t<div className={styles.tabIndicator} />\n\t\t</button>\n\t);\n}\n\nfunction TrackTab({ className, track, isSelected, onTrackChange }) {\n\tconst handleClick = useCallback(() => {\n\t\tonTrackChange?.(track.trackId);\n\t}, [onTrackChange, track.trackId]);\n\n\treturn (\n\t\t<Tab className={className} onClick={handleClick} isSelected={isSelected}>\n\t\t\t{track.name}\n\t\t</Tab>\n\t);\n}\n\nfunction CustomCompareTrackTab({ track, isSelected, onTrackChange, onChangeComparison }) {\n\tconst resources = useLocalization('CommerceWeb.Resources.Product.Compare');\n\tconst handleClick = useCallback(() => {\n\t\tif (isSelected) {\n\t\t\tonChangeComparison?.();\n\t\t} else {\n\t\t\tonTrackChange?.(track.trackId);\n\t\t}\n\t}, [isSelected, onChangeComparison, onTrackChange, track.trackId]);\n\n\treturn (\n\t\t<Tab className={styles.customCompareTrackTab} onClick={handleClick} isSelected={isSelected}>\n\t\t\t{isSelected ? resources.ChangeComparison : resources.CustomCompare}\n\t\t</Tab>\n\t);\n}\n\nexport default TabBasedTrackSelector;\n","// extracted by mini-css-extract-plugin\nexport default {\"baseContainer\":\"index--baseContainer--ysDAr\",\"comparisonTable\":\"index--comparisonTable--Qbe49 index--baseContainer--ysDAr\",\"trackSection\":\"index--trackSection--2cwYf index--baseContainer--ysDAr\",\"tabBasedTrackSelector\":\"index--tabBasedTrackSelector--Gpq4L\",\"trackSectionContainer\":\"index--trackSectionContainer--plQi2\",\"trackUpperSection\":\"index--trackUpperSection--bjTsy\",\"trackUpperSectionLeftSide\":\"index--trackUpperSectionLeftSide--0uVSC\",\"trackSelectorContainer\":\"index--trackSelectorContainer--SOCko\",\"productSectionTitle\":\"index--productSectionTitle--o20oA\",\"leftSideProductSectionTitle\":\"index--leftSideProductSectionTitle--K-cg4 index--productSectionTitle--o20oA\",\"trackControls\":\"index--trackControls--ZGnhM\",\"trackSelector\":\"index--trackSelector--HFs+f\",\"comparisonTableLegendAndControlsContainer\":\"index--comparisonTableLegendAndControlsContainer--XcbpD\",\"paymentNotice\":\"index--paymentNotice--c2Z+K\",\"mobileFilterBody\":\"index--mobileFilterBody--31HPx\",\"errorMessage\":\"index--errorMessage--qwnvb\",\"mobileProductComparison\":\"index--mobileProductComparison--ofqit\",\"customCompareButton\":\"index--customCompareButton--hMjp1 btn btn-secondary-inverted\"};","import React, { useRef, useState, useCallback, useContext, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport usePreventBodyScrolling from '../../../util/hooks/use-prevent-body-scrolling';\nimport { updateUrlParamValues } from '../../../util/url.js';\nimport useScreensize from '../../../util/hooks/use-screensize';\nimport FullscreenOverlayLoadingSpinner from '../../shared/fullscreen-overlay-loading-spinner';\nimport StickyHeader from '../../sticky-header';\nimport sharedStyles from '../../configuration-wizard/shared.less';\nimport ComparisonTableLegend from '../comparison-table-legend';\nimport ComparisonTableControls from '../comparison-table-controls';\nimport { ScrollableTableWithSliderContext } from '../scrollable-table-with-slider/scrollable-table-with-slider-provider';\nimport useComparisonTracksWithCustomCompare, {\n\tcustomCompareTrackId,\n} from '../hooks/comparison-tracks-with-custom-compare';\nimport CustomCompareModal from '../custom-compare-modal';\nimport MobileCustomCompare from '../mobile-custom-compare';\nimport { useLocalization } from '../../../localization';\nimport TrackKinds from '../track-kinds';\nimport TrackSelector from './track-selector';\nimport ComparisonSectionsTable from './comparison-sections-table';\nimport TrackProductSlider from './track-product-slider';\nimport MobileTrackSelector from './mobile-track-selector';\nimport MobileProductComparison from './mobile-product-comparison';\nimport ComparisonModal from './comparison-modal';\nimport TabBasedTrackSelector from './tab-based-track-selector/index.jsx';\n\nimport styles from './index.less';\n\nconst NewComparisonTableWithSlider = ({\n\tinitialSelectedTrackId,\n\tinitialSelectedTrackProducts,\n\ttrackOptions: propsTrackOptions,\n\tuserIsBasePackageOwner,\n\tproductSectionTitle,\n\townershipNotice,\n\tupdateSelectedProductIndex,\n\ttrackKind,\n\trecommendedTrackProductId,\n\tonItemAddedToCart,\n\tcomparisonTableControlsHandler,\n\troutes,\n\tsuppressMobileProductComparison = false,\n}) => {\n\tconst [isMobileComparisonModalOpen, setIsMobileComparisonModalOpen] = useState(false);\n\tconst hasDemoedOpenSectionRef = useRef(false);\n\tconst resources = useLocalization('CommerceWeb.Resources.Product.Compare');\n\tconst pricingSidebarResources = useLocalization(\n\t\t'CommerceWeb.Resources.Product.DisplayTemplates.PricingSidebarViewModel'\n\t);\n\n\tconst handleTrackFetched = useCallback(track => {\n\t\t// note, `track` is a new object, that will be pushed into React state after this returns.\n\t\t// It is safe to mutate it like this.\n\t\ttrack.sections[0].isOpen = !hasDemoedOpenSectionRef.current;\n\t\thasDemoedOpenSectionRef.current = true;\n\t}, []);\n\n\tconst handleTrackSelected = useCallback(\n\t\ttrack => {\n\t\t\tupdateSelectedProductIndex(track);\n\n\t\t\tlet trackName = undefined,\n\t\t\t\tproductIds = undefined;\n\t\t\tif (track.trackId === customCompareTrackId) {\n\t\t\t\tproductIds = track.trackProducts.map(tp => tp.productId);\n\t\t\t} else {\n\t\t\t\ttrackName = track.name;\n\t\t\t}\n\t\t\tupdateUrlParamValues({ trackName, productIds });\n\t\t},\n\t\t[updateSelectedProductIndex]\n\t);\n\n\tconst {\n\t\ttrackOptions,\n\t\ttracks,\n\t\tselectedTrackId,\n\t\tselectedTrack,\n\t\thandleTrackChange,\n\t\tselectedCompareSections,\n\t\tselectedCustomCompareTrackProducts,\n\t\tisCustomCompareModalOpen,\n\t\tsetIsCustomCompareModalOpen,\n\t\thandleCustomCompare,\n\t\terrorMessage,\n\t\tisLoading,\n\t\tdisplayMobileFilter,\n\t\tselectedMobileFilterTrackId,\n\t\thandleMobileFilterTrackChange,\n\t\thandleFilterChange,\n\t\thandleCustomCompareTrackProductSelect,\n\t\thandleCustomCompareTrackProductDeselect,\n\t\thandleCustomCompareClearAll,\n\t} = useComparisonTracksWithCustomCompare({\n\t\tinitialSelectedTrackId,\n\t\tinitialSelectedTrackProducts,\n\t\ttrackOptions: propsTrackOptions,\n\t\trecommendedTrackProductId,\n\t\thandleTrackFetched,\n\t\thandleTrackSelected,\n\t\troutes,\n\t});\n\n\tconst handleChangeComparison = useCallback(() => {\n\t\tsetIsCustomCompareModalOpen(true);\n\t}, [setIsCustomCompareModalOpen]);\n\n\tconst handleCustomCompareModalClose = useCallback(() => {\n\t\tsetIsCustomCompareModalOpen(false);\n\t}, [setIsCustomCompareModalOpen]);\n\n\tconst { isMobile } = useScreensize();\n\n\tusePreventBodyScrolling(displayMobileFilter);\n\n\tconst handleOpenMobileComparisonModal = useCallback(() => setIsMobileComparisonModalOpen(true), []);\n\n\tconst handleCloseMobileComparisonModal = useCallback(() => setIsMobileComparisonModalOpen(false), []);\n\n\tconst stickyHeaderAnchorElementRef = useRef(null);\n\tconst comparisonTableRef = useRef(null);\n\tconst { isTableScrolling } = useContext(ScrollableTableWithSliderContext);\n\n\tconst categorizedTrackOptions = useMemo(() => {\n\t\tlet isAnyCategorizedTracks = false;\n\t\tlet firstTrack = null;\n\t\tconst denominationalTracks = [];\n\t\tconst alternateTracks = [];\n\t\tlet customCompareTrack = null;\n\t\tfor (const trackOption of trackOptions) {\n\t\t\tif (trackOption.trackId === customCompareTrackId) {\n\t\t\t\tcustomCompareTrack = trackOption;\n\t\t\t} else if (!firstTrack) {\n\t\t\t\tfirstTrack = trackOption;\n\t\t\t} else if (trackOption.trackGroup === 'denominational') {\n\t\t\t\tdenominationalTracks.push(trackOption);\n\t\t\t} else {\n\t\t\t\talternateTracks.push(trackOption);\n\t\t\t}\n\n\t\t\tif (trackOption.trackGroup) {\n\t\t\t\tisAnyCategorizedTracks = true;\n\t\t\t}\n\t\t}\n\n\t\tlet primaryTrack = null;\n\t\tif (isAnyCategorizedTracks) {\n\t\t\tprimaryTrack = firstTrack;\n\t\t} else if (firstTrack) {\n\t\t\talternateTracks.unshift(firstTrack);\n\t\t}\n\n\t\treturn {\n\t\t\tprimaryTrack,\n\t\t\tdenominationalTracks,\n\t\t\talternateTracks,\n\t\t\tcustomCompareTrack,\n\t\t};\n\t}, [trackOptions]);\n\n\tconst isDenominationalTrackSelected = categorizedTrackOptions.denominationalTracks.some(\n\t\ttrack => track.trackId === selectedTrackId\n\t);\n\n\tif (errorMessage) {\n\t\treturn <div className={styles.errorMessage}>{errorMessage}</div>;\n\t}\n\n\tif (displayMobileFilter) {\n\t\treturn (\n\t\t\t<ComparisonModal title={resources.ChangeComparison} onClose={handleFilterChange}>\n\t\t\t\t{isLoading && <FullscreenOverlayLoadingSpinner zIndex={5002} />}\n\t\t\t\t<div className={styles.mobileFilterBody}>\n\t\t\t\t\t{trackOptions && trackOptions.length > 1 && (\n\t\t\t\t\t\t<TrackSelector\n\t\t\t\t\t\t\tclassName={styles.trackSelector}\n\t\t\t\t\t\t\tselectedTrackId={selectedMobileFilterTrackId}\n\t\t\t\t\t\t\ttrackOptions={trackOptions}\n\t\t\t\t\t\t\tlabel={resources.Traditions}\n\t\t\t\t\t\t\tonTrackChange={handleMobileFilterTrackChange}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t{trackOptions.length > 1 && (\n\t\t\t\t\t\t<MobileCustomCompare\n\t\t\t\t\t\t\tinitialExpandedTrackId={initialSelectedTrackId}\n\t\t\t\t\t\t\tisVisible={selectedMobileFilterTrackId === customCompareTrackId}\n\t\t\t\t\t\t\tonClearAll={handleCustomCompareClearAll}\n\t\t\t\t\t\t\tonCompare={handleCustomCompare}\n\t\t\t\t\t\t\tonTrackProductDeselect={handleCustomCompareTrackProductDeselect}\n\t\t\t\t\t\t\tonTrackProductSelect={handleCustomCompareTrackProductSelect}\n\t\t\t\t\t\t\tselectedTrackProducts={selectedCustomCompareTrackProducts}\n\t\t\t\t\t\t\ttracks={tracks}\n\t\t\t\t\t\t\ttrackOptions={trackOptions}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</ComparisonModal>\n\t\t);\n\t}\n\n\tconst showTrackHeader = trackKind !== TrackKinds.subscribableFeatureSet;\n\n\tconst isTrackLoaded = selectedTrack && selectedTrack.trackProducts;\n\n\tconst getTrackHeader = (isStickyHeader, ref) => {\n\t\treturn (\n\t\t\t<div ref={ref} className={styles.trackSectionContainer}>\n\t\t\t\t<div className={styles.trackSection}>\n\t\t\t\t\t{!isMobile && (\n\t\t\t\t\t\t<div className={styles.tabBasedTrackSelector}>\n\t\t\t\t\t\t\t{trackOptions && trackOptions.length > 1 && selectedTrack && (\n\t\t\t\t\t\t\t\t<TabBasedTrackSelector\n\t\t\t\t\t\t\t\t\tclassName={styles.tabBasedTrackSelector}\n\t\t\t\t\t\t\t\t\ttrackOptions={categorizedTrackOptions}\n\t\t\t\t\t\t\t\t\tselectedTrackId={selectedTrackId}\n\t\t\t\t\t\t\t\t\tuserIsBasePackageOwner={userIsBasePackageOwner}\n\t\t\t\t\t\t\t\t\tonTrackChange={handleTrackChange}\n\t\t\t\t\t\t\t\t\tonChangeComparison={handleChangeComparison}\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)}\n\t\t\t\t\t{isMobile && trackOptions && trackOptions.length > 1 && selectedTrack && (\n\t\t\t\t\t\t<MobileTrackSelector\n\t\t\t\t\t\t\tselectedTrack={selectedTrack}\n\t\t\t\t\t\t\thideBooksIOwn={comparisonTableControlsHandler.hideBooksIOwn}\n\t\t\t\t\t\t\tonFilterChange={handleFilterChange}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t<div className={styles.trackUpperSection}>\n\t\t\t\t\t\t<div className={styles.trackUpperSectionLeftSide}>\n\t\t\t\t\t\t\t<div className={styles.trackSelectorContainer}>\n\t\t\t\t\t\t\t\t<div className={styles.leftSideProductSectionTitle}>\n\t\t\t\t\t\t\t\t\t{productSectionTitle && <div className={sharedStyles.h5}>{productSectionTitle}</div>}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t{isTrackLoaded && !isStickyHeader && (\n\t\t\t\t\t\t\t\t\t<div className={styles.trackControls}>\n\t\t\t\t\t\t\t\t\t\t{trackOptions && trackOptions.length > 1 && isDenominationalTrackSelected && selectedTrack && (\n\t\t\t\t\t\t\t\t\t\t\t<TrackSelector\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={styles.trackSelector}\n\t\t\t\t\t\t\t\t\t\t\t\tselectedTrackId={selectedTrack.trackId}\n\t\t\t\t\t\t\t\t\t\t\t\ttrackOptions={categorizedTrackOptions.denominationalTracks}\n\t\t\t\t\t\t\t\t\t\t\t\tlabel={resources.Traditions}\n\t\t\t\t\t\t\t\t\t\t\t\tdesktopLabelPosition={'top'}\n\t\t\t\t\t\t\t\t\t\t\t\tonTrackChange={handleTrackChange}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t<CustomCompareModal\n\t\t\t\t\t\t\t\t\t\t\tinitialExpandedTrackId={initialSelectedTrackId}\n\t\t\t\t\t\t\t\t\t\t\tisOpen={isCustomCompareModalOpen}\n\t\t\t\t\t\t\t\t\t\t\tselectedTrackProducts={selectedCustomCompareTrackProducts}\n\t\t\t\t\t\t\t\t\t\t\tonClose={handleCustomCompareModalClose}\n\t\t\t\t\t\t\t\t\t\t\ttrackOptions={trackOptions}\n\t\t\t\t\t\t\t\t\t\t\ttracks={tracks}\n\t\t\t\t\t\t\t\t\t\t\tonCompare={handleCustomCompare}\n\t\t\t\t\t\t\t\t\t\t\tonTrackProductSelect={handleCustomCompareTrackProductSelect}\n\t\t\t\t\t\t\t\t\t\t\tonTrackProductDeselect={handleCustomCompareTrackProductDeselect}\n\t\t\t\t\t\t\t\t\t\t\tonClearAll={handleCustomCompareClearAll}\n\t\t\t\t\t\t\t\t\t\t/>\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\t</div>\n\t\t\t\t\t\t\t{isTrackLoaded && !isStickyHeader && (\n\t\t\t\t\t\t\t\t<div className={styles.comparisonTableLegendAndControlsContainer}>\n\t\t\t\t\t\t\t\t\t<ComparisonTableLegend mode={isStickyHeader ? 'wide' : 'default'} />\n\t\t\t\t\t\t\t\t\t<ComparisonTableControls\n\t\t\t\t\t\t\t\t\t\tuserIsBasePackageOwner={userIsBasePackageOwner}\n\t\t\t\t\t\t\t\t\t\t{...comparisonTableControlsHandler}\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\t{isTrackLoaded && (\n\t\t\t\t\t\t\t<TrackProductSlider\n\t\t\t\t\t\t\t\ttrackProducts={selectedTrack.trackProducts}\n\t\t\t\t\t\t\t\tisSticky={isStickyHeader}\n\t\t\t\t\t\t\t\townershipNotice={ownershipNotice}\n\t\t\t\t\t\t\t\tonItemAddedToCart={onItemAddedToCart}\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{isTrackLoaded && !isStickyHeader && (\n\t\t\t\t\t\t<div className={styles.paymentNotice}>\n\t\t\t\t\t\t\t{'*'}\n\t\t\t\t\t\t\t{pricingSidebarResources.PaymentPlansAvailableInCart.toLowerCase()}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t};\n\n\tconst comparisonTableWithSlider = (\n\t\t<>\n\t\t\t{(isLoading || isTableScrolling) && <FullscreenOverlayLoadingSpinner zIndex={5002} />}\n\t\t\t{showTrackHeader && (\n\t\t\t\t<>\n\t\t\t\t\t{getTrackHeader(false, stickyHeaderAnchorElementRef)}\n\t\t\t\t\t{!isMobile && (\n\t\t\t\t\t\t<StickyHeader anchorElementRef={stickyHeaderAnchorElementRef} boundingElementRef={comparisonTableRef}>\n\t\t\t\t\t\t\t{getTrackHeader(true)}\n\t\t\t\t\t\t</StickyHeader>\n\t\t\t\t\t)}\n\t\t\t\t</>\n\t\t\t)}\n\t\t\t<div ref={comparisonTableRef} className={styles.comparisonTable}>\n\t\t\t\t<ComparisonSectionsTable\n\t\t\t\t\tselectedCompareSections={selectedCompareSections}\n\t\t\t\t\tcomparisonTableControlsHandler={comparisonTableControlsHandler}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</>\n\t);\n\n\tif (!suppressMobileProductComparison && isMobile) {\n\t\treturn (\n\t\t\t<div className={styles.mobileProductComparison}>\n\t\t\t\t<div className={styles.productSectionTitle}>{productSectionTitle && <div>{productSectionTitle}</div>}</div>\n\t\t\t\t{selectedTrack?.trackProducts?.length && (\n\t\t\t\t\t<MobileProductComparison\n\t\t\t\t\t\ttrackProducts={selectedTrack.trackProducts}\n\t\t\t\t\t\townershipNotice={ownershipNotice}\n\t\t\t\t\t\tisComparisonModalOpen={isMobileComparisonModalOpen}\n\t\t\t\t\t\tonOpenComparisonModal={handleOpenMobileComparisonModal}\n\t\t\t\t\t\tonCloseComparisonModal={handleCloseMobileComparisonModal}\n\t\t\t\t\t\tonItemAddedToCart={onItemAddedToCart}\n\t\t\t\t\t>\n\t\t\t\t\t\t{comparisonTableWithSlider}\n\t\t\t\t\t</MobileProductComparison>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn comparisonTableWithSlider;\n};\n\nNewComparisonTableWithSlider.propTypes = {\n\tinitialSelectedTrackId: PropTypes.string.isRequired,\n\ttrackOptions: PropTypes.arrayOf(\n\t\tPropTypes.shape({\n\t\t\tname: PropTypes.string,\n\t\t\ttrackId: PropTypes.string,\n\t\t})\n\t),\n\tuserIsBasePackageOwner: PropTypes.bool,\n\tonTrackAffinityUpdate: PropTypes.func,\n\tproductSectionTitle: PropTypes.string,\n\townershipNotice: PropTypes.string,\n\tsuppressMobileProductComparison: PropTypes.bool,\n\tonItemAddedToCart: PropTypes.func,\n\troutes: PropTypes.shape({\n\t\tDisabledLinkUrl: PropTypes.string,\n\t\tCompareTrackBaseUrl: PropTypes.string,\n\t\tCompareTrackProductsBaseUrl: PropTypes.string,\n\t\tCompareTrackSectionsBaseUrl: PropTypes.string,\n\t}),\n};\n\nexport default NewComparisonTableWithSlider;\n","// extracted by mini-css-extract-plugin\nexport default {\"comparePage\":\"index--comparePage--9Xjbj\",\"loadingIndicator\":\"index--loadingIndicator--Kp6Kg\",\"headerContainer\":\"index--headerContainer--d1vIw\",\"header\":\"index--header--j1Q0n\",\"hideBooksIOwnContainer\":\"index--hideBooksIOwnContainer--RvGgH\",\"headerFilters\":\"index--headerFilters--mL+wc\",\"trackSelectAndCompare\":\"index--trackSelectAndCompare--jbRRq\",\"mobileHeaderText\":\"index--mobileHeaderText--WbHi9\",\"change\":\"index--change--O5Pb8\",\"controls\":\"index--controls--eI8uO\",\"control\":\"index--control---A23M\",\"borderedControl\":\"index--borderedControl--Jznel index--control---A23M\",\"controlLegendMobile\":\"index--controlLegendMobile--LM+OW index--control---A23M\",\"controlLegendDesktop\":\"index--controlLegendDesktop--JaMux\",\"controlIcon\":\"index--controlIcon--ZX6fH\",\"controlIconLabel\":\"index--controlIconLabel--UMaAX\",\"legendIcon\":\"index--legendIcon--Il7IM\",\"legendModal\":\"index--legendModal--wt7Ib\",\"legendModalItem\":\"index--legendModalItem--CEY42\",\"legendModalItemIcon\":\"index--legendModalItemIcon--oQjoL\",\"mobileFilter\":\"index--mobileFilter--q8rcu\",\"mobileFilterHeader\":\"index--mobileFilterHeader--rbucT\",\"mobileFilterBody\":\"index--mobileFilterBody--G-YuB\",\"mobileFilterTitle\":\"index--mobileFilterTitle--EylpR\",\"closeButton\":\"index--closeButton--AUGKR\",\"trackSelect\":\"index--trackSelect--l3TZg\",\"hideBooksIOwnCheckbox\":\"index--hideBooksIOwnCheckbox--SQ+hu\",\"singleTrackHideBooksIOwn\":\"index--singleTrackHideBooksIOwn--nSw-K\",\"sections\":\"index--sections--ewAB1\",\"errorMessage\":\"index--errorMessage--AmGN6\",\"customCompareButton\":\"index--customCompareButton--hFYzX btn btn-secondary-inverted\"};","import React, { useCallback, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport DisabledMessage from '../disabled-message';\nimport NewComparisonTableWithSlider from '../new-comparison-table-with-slider';\nimport ScrollableTableWithSliderProvider from '../scrollable-table-with-slider/scrollable-table-with-slider-provider';\nimport scrollControlTypes from '../scroll-control-types';\nimport useComparisonTableControlsHandler from '../hooks/comparison-table-controls-handler';\nimport { useLocalization } from '../../../localization';\n\nimport styles from './index.less';\n\nconst comparisonTableWithSliderProps = {\n\tpropsByScreenSize: {\n\t\t/* [mobile, tablet, desktop, largeDesktop, extra: { size: value }] */\n\t\tnumbersOfVisibleColumnsByScreenSize: [1, { 450: 2, 768: 2, 1120: 3, 1320: 4, 1512: 5 }],\n\t\tcolumnWidthsByScreenSize: [84, 190],\n\t\tcolumnGapsByScreenSize: [18, 18],\n\t\tboundaryMarginWidthsByScreenSize: [16, 24],\n\t\tswipeRadiusXByScreenSize: [20, 50],\n\t\tsliderProps: {\n\t\t\tarrowWidthsByScreenSize: [0, 30, { 1350: 45 }],\n\t\t},\n\t},\n};\n\nconst getSelectedTrackProductIndex = track => {\n\tif (!track || !track.trackProducts || track.trackProducts.length <= 3) {\n\t\treturn 0;\n\t}\n\n\treturn Math.min(\n\t\tMath.max(\n\t\t\ttrack.trackProducts.findIndex(tp => tp.isSelected),\n\t\t\t0\n\t\t),\n\t\ttrack.trackProducts.length - 3\n\t);\n};\n\nconst ComparePage = ({\n\tinitialSelectedTrackId,\n\tinitialSelectedTrackProducts,\n\ttrackOptions,\n\tuserIsBasePackageOwner,\n\tproductSectionTitle,\n\townershipNotice,\n\trecommendedTrackProductId,\n\tonItemAddedToCart,\n\troutes,\n}) => {\n\tconst compareResources = useLocalization('CommerceWeb.Resources.Product.Compare');\n\tconst [selectedTrack, setSelectedTrack] = useState(\n\t\ttrackOptions\n\t\t\t? trackOptions.find(option => option.trackId === initialSelectedTrackId)\n\t\t\t: { name: compareResources.CustomCompare, trackId: -1 }\n\t);\n\tconst [selectedTrackProductIndex, setSelectedTrackProductIndex] = useState(0);\n\n\tconst handleUpdateSelectedProductIndex = useCallback(track => {\n\t\tsetSelectedTrack(track);\n\t\tsetSelectedTrackProductIndex(getSelectedTrackProductIndex(track));\n\t}, []);\n\n\tconst comparisonTableControlsHandler = useComparisonTableControlsHandler();\n\n\tconst handleFirstVisibleColumnChange = (updateTrackProductIndex, trackProductIndex) => {\n\t\tupdateTrackProductIndex(trackProductIndex);\n\t};\n\n\tif (routes.DisabledLinkUrl) {\n\t\treturn (\n\t\t\t<div className={styles.comparePage}>\n\t\t\t\t<DisabledMessage disabledLinkUrl={routes.DisabledLinkUrl} />\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className={styles.comparePage}>\n\t\t\t<ScrollableTableWithSliderProvider\n\t\t\t\tfirstVisibleColumnIndex={selectedTrackProductIndex}\n\t\t\t\ttotalNumberOfColumns={selectedTrack?.trackProducts?.length ?? 0}\n\t\t\t\tonFirstVisibleColumnChange={i => handleFirstVisibleColumnChange(setSelectedTrackProductIndex, i)}\n\t\t\t\t{...comparisonTableWithSliderProps}\n\t\t\t>\n\t\t\t\t<NewComparisonTableWithSlider\n\t\t\t\t\tinitialSelectedTrackId={initialSelectedTrackId}\n\t\t\t\t\tinitialSelectedTrackProducts={initialSelectedTrackProducts}\n\t\t\t\t\ttrackOptions={trackOptions}\n\t\t\t\t\tuserIsBasePackageOwner={userIsBasePackageOwner}\n\t\t\t\t\tproductSectionTitle={productSectionTitle}\n\t\t\t\t\townershipNotice={ownershipNotice}\n\t\t\t\t\tupdateSelectedProductIndex={handleUpdateSelectedProductIndex}\n\t\t\t\t\trecommendedTrackProductId={recommendedTrackProductId}\n\t\t\t\t\tonItemAddedToCart={onItemAddedToCart}\n\t\t\t\t\tcomparisonTableControlsHandler={comparisonTableControlsHandler}\n\t\t\t\t\troutes={routes}\n\t\t\t\t/>\n\t\t\t</ScrollableTableWithSliderProvider>\n\t\t</div>\n\t);\n};\n\nComparePage.propTypes = {\n\tinitialSelectedTrackId: PropTypes.string.isRequired,\n\tinitialSelectedTrackProducts: PropTypes.array,\n\ttrackOptions: PropTypes.array,\n\tuserIsBasePackageOwner: PropTypes.bool,\n\tscrollControlType: PropTypes.oneOf([scrollControlTypes.scrollbar, scrollControlTypes.buttons]),\n\tonItemAddedToCart: PropTypes.func,\n\tupperBannerViewModel: PropTypes.object.isRequired,\n\troutes: PropTypes.shape({\n\t\tDisabledLinkUrl: PropTypes.string,\n\t\tCompareBaseUrl: PropTypes.string,\n\t\tCompareTrackBaseUrl: PropTypes.string,\n\t\tCompareTrackProductsBaseUrl: PropTypes.string,\n\t\tCompareTrackSectionsBaseUrl: PropTypes.string,\n\t}),\n};\n\nexport default ComparePage;\n","// extracted by mini-css-extract-plugin\nexport default {\"h2\":\"index--h2--mxqjy h2\",\"h4\":\"index--h4---SFFh h2\",\"h5\":\"index--h5--A23tL h3\",\"ui1\":\"index--ui1--JpC8S\",\"ui2\":\"index--ui2--WakZX\",\"ui3\":\"index--ui3--T9oLQ\",\"ui5\":\"index--ui5--tFhyu\",\"b2\":\"index--b2--h3xgs\",\"b3\":\"index--b3--UGqWW\",\"loadingSpinner\":\"index--loadingSpinner--tUJuk\",\"interstitialModalContainer\":\"index--interstitialModalContainer--jaKAZ\",\"header\":\"index--header--nrOdq index--h2--mxqjy h2\",\"message\":\"index--message--yztyG index--ui1--JpC8S\",\"footer\":\"index--footer--25x4Q\",\"buttonsContainer\":\"index--buttonsContainer--tNikt\",\"button\":\"index--button--aIpAc\",\"primaryButton\":\"index--primaryButton--tK4fP index--button--aIpAc\",\"secondaryButton\":\"index--secondaryButton--z9Vo6 index--button--aIpAc\",\"disclaimer\":\"index--disclaimer--PntJL index--ui3--T9oLQ\",\"toastContainer\":\"index--toastContainer--QFfON\",\"subCartSlideIn\":\"index--subCartSlideIn--0QR7U\",\"subCartSlideOut\":\"index--subCartSlideOut--ORPVg\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Modal } from '@faithlife/styled-ui';\n\nimport { BlueCheckmark } from '../svgs';\n\nimport styles from './index.less';\n\nconst InterstitialModal = ({\n\tisOpen,\n\ttestId = undefined,\n\theader,\n\tchildren,\n\tprimaryButtonLabel,\n\tonPrimaryButtonClick,\n\tsecondaryButtonLabel,\n\tonSecondaryButtonClick,\n\tdisclaimer,\n\ttoast,\n}) => (\n\t<Modal\n\t\tisOpen={isOpen}\n\t\tcontainer=\"body\"\n\t\tallowBackgroundScrolling\n\t\tignoreClickOnBackdrop\n\t\twidth={['calc(100vw - 24px)', 'calc(100vw - 156px)']}\n\t\tmaxWidth={'1200px'}\n\t\t/* This z-index beats out the detail modals on mobile, so it always gets displayed over them */\n\t\tzIndex={10000}\n\t\tonClose={() => {\n\t\t\tthrow new Error('Close on the InterstitialModal should not have been triggered!');\n\t\t}} // required by Modal, but spec explicitly forbids close behavior\n\t>\n\t\t<div className={styles.interstitialModalContainer} data-testid={testId}>\n\t\t\t<h2 className={styles.header}>{header}</h2>\n\t\t\t<Modal.Content width={['100%', '75%']}>\n\t\t\t\t<p className={styles.message}>{children}</p>\n\t\t\t</Modal.Content>\n\t\t\t<div className={styles.footer}>\n\t\t\t\t<div className={styles.buttonsContainer}>\n\t\t\t\t\t<button className={styles.primaryButton} onClick={onPrimaryButtonClick}>\n\t\t\t\t\t\t{primaryButtonLabel}\n\t\t\t\t\t</button>\n\t\t\t\t\t<button className={styles.secondaryButton} onClick={onSecondaryButtonClick}>\n\t\t\t\t\t\t{secondaryButtonLabel}\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t\t{disclaimer && <div className={styles.disclaimer}>{disclaimer}</div>}\n\t\t\t</div>\n\t\t</div>\n\t\t{toast && (\n\t\t\t<div className={styles.toastContainer}>\n\t\t\t\t<BlueCheckmark />\n\t\t\t\t{toast}\n\t\t\t</div>\n\t\t)}\n\t</Modal>\n);\n\nInterstitialModal.propTypes = {\n\tisOpen: PropTypes.bool.isRequired,\n\ttestId: PropTypes.string,\n\theader: PropTypes.node.isRequired,\n\tchildren: PropTypes.node.isRequired,\n\tprimaryButtonLabel: PropTypes.node.isRequired,\n\tonPrimaryButtonClick: PropTypes.func,\n\tsecondaryButtonLabel: PropTypes.node.isRequired,\n\tonSecondaryButtonClick: PropTypes.func,\n\tdisclaimer: PropTypes.node,\n\ttoast: PropTypes.node,\n};\n\nexport default InterstitialModal;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { CommandSentence } from '@faithlife/command-sentence-control';\n\nimport InterstitialModal from '../../interstitial-modal';\nimport { useLocalization } from '../../../../localization';\nimport { useLocation } from '../../../../location';\nimport useInterstitialModalHandler from '../../hooks/use-interstitial-modal-handler';\n\nconst nextTimeToShowAddASubscriptionModalStorageKey = 'next-enable-add-a-subscription-modal-time';\n\nconst useAddASubscriptionModalHandler = (onAddASubscriptionModalNotShown, getShouldShowModalFromState) => {\n\treturn useInterstitialModalHandler(onAddASubscriptionModalNotShown, {\n\t\tnextTimeToShowModalStorageKey: nextTimeToShowAddASubscriptionModalStorageKey,\n\t\tgetShouldShowModalFromState,\n\t\t// disable query parameters\n\t\tshowModalQueryStringParameterName: null,\n\t\tshowCoolDownMillisecondsQueryStringParameterName: null,\n\t});\n};\n\nconst AddASubscriptionModal = ({ isOpen, productTitle, doesUserQualifyForSubscriptionFreeTrial = false, routes }) => {\n\tconst resources = useLocalization('CommerceWeb.Resources.Configure.ConfigurationWizardAddASubscriptionModal');\n\tconst { navigate } = useLocation();\n\treturn (\n\t\t<InterstitialModal\n\t\t\tisOpen={isOpen}\n\t\t\ttestId=\"subscription-popup-modal\"\n\t\t\theader={resources.SaveAndUnlockHeader}\n\t\t\tprimaryButtonLabel={resources.SeePlans}\n\t\t\tonPrimaryButtonClick={() => navigate(routes.ConfigurationWizardSubscriptionsUrl)}\n\t\t\tsecondaryButtonLabel={resources.ProceedToCheckout}\n\t\t\tonSecondaryButtonClick={() => navigate(routes.CartUrl)}\n\t\t\ttoast={\n\t\t\t\tproductTitle && (\n\t\t\t\t\t<CommandSentence template={resources.LibraryAddedToCart}>\n\t\t\t\t\t\t<CommandSentence.Field name=\"LIBRARY_NAME\">{productTitle}</CommandSentence.Field>\n\t\t\t\t\t</CommandSentence>\n\t\t\t\t)\n\t\t\t}\n\t\t>\n\t\t\t{resources.DiscoverInsightsBeyondMessage}\n\t\t\t{doesUserQualifyForSubscriptionFreeTrial && <> {resources.YourFirst30DaysAreFree}</>}\n\t\t</InterstitialModal>\n\t);\n};\nAddASubscriptionModal.propTypes = {\n\tisOpen: PropTypes.bool.isRequired,\n\tproductTitle: PropTypes.string,\n\tdoesUserQualifyForSubscriptionFreeTrial: PropTypes.bool,\n\n\troutes: PropTypes.shape({\n\t\tConfigurationWizardSubscriptionsUrl: PropTypes.string.isRequired,\n\t\tCartUrl: PropTypes.string.isRequired,\n\t}).isRequired,\n};\n\nexport default AddASubscriptionModal;\nexport { useAddASubscriptionModalHandler };\n","import React, { useCallback, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport FullscreenOverlayLoadingSpinner from '../../shared/fullscreen-overlay-loading-spinner';\nimport ComparePage from '../../compare-page/compare-books-or-features';\nimport {\n\tConfigurationWizardCartContextProvider,\n\tuseConfigurationWizardCartContext,\n} from '../../shared/configuration-wizard-cart';\nimport SummaryTrough from '../summary-trough';\n\nimport WizardHero from '../wizard-hero';\nimport ProgressIndicatorV2 from '../progress-indicator-v2';\nimport { useLocalization } from '../../../localization';\nimport { useLocation } from '../../../location';\nimport styles from './index.less';\nimport AddASubscriptionModal, { useAddASubscriptionModalHandler } from './add-a-subscription-modal';\n\nconst ConfigurationWizardLibraries = ({\n\tcompareViewModel,\n\tsummaryTrough,\n\tlogosOrVerbum,\n\taddASubscriptionModalViewModel,\n\troutes,\n}) => {\n\tconst librariesResources = useLocalization('CommerceWeb.Resources.Configure.ConfigurationWizardLibraries');\n\tconst subscriptionsResources = useLocalization('CommerceWeb.Resources.Configure.ConfigurationWizardSubscriptions');\n\tconst plansResources = useLocalization('CommerceWeb.Resources.Configure.SubscriptionPlans');\n\tconst { navigate } = useLocation();\n\tconst [isRedirecting, setIsRedirecting] = useState(false);\n\n\tconst { value: cart } = useConfigurationWizardCartContext();\n\n\tconst handleSkipAddASubscriptionModal = useCallback(() => {\n\t\tsetIsRedirecting(true);\n\t\tnavigate(!cart?.hasEffectiveSubscription ? routes.ConfigurationWizardSubscriptionsUrl : routes.CartUrl);\n\t}, [cart?.hasEffectiveSubscription, navigate, routes.ConfigurationWizardSubscriptionsUrl, routes.CartUrl]);\n\n\tconst handleCheckShouldShow = useCallback(() => {\n\t\treturn !cart?.hasEffectiveSubscription && addASubscriptionModalViewModel;\n\t}, [addASubscriptionModalViewModel, cart?.hasEffectiveSubscription]);\n\n\tconst { isOpen: isAddASubscriptionModalOpen, handle: handleLibraryAddedToCart } = useAddASubscriptionModalHandler(\n\t\thandleSkipAddASubscriptionModal,\n\t\thandleCheckShouldShow\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t{summaryTrough && <SummaryTrough step=\"libraries\" {...summaryTrough} />}\n\t\t\t{isRedirecting && <FullscreenOverlayLoadingSpinner zIndex={5002} />}\n\t\t\t{addASubscriptionModalViewModel && (\n\t\t\t\t<AddASubscriptionModal isOpen={isAddASubscriptionModalOpen} {...addASubscriptionModalViewModel} />\n\t\t\t)}\n\t\t\t<WizardHero\n\t\t\t\ttitle={librariesResources.BuildYourLogosOrVerbumSubscription}\n\t\t\t\tsubtitle={librariesResources.ChooseYourSoftwareThenAddALibrary}\n\t\t\t\tlogosOrVerbum={logosOrVerbum}\n\t\t\t/>\n\t\t\t<ProgressIndicatorV2\n\t\t\t\tstep=\"libraries\"\n\t\t\t\troutes={{\n\t\t\t\t\tsubscriptionsUrl: routes.ConfigurationWizardSubscriptionsUrl,\n\t\t\t\t\tlibrariesUrl: routes.ConfigurationWizardLibrariesUrl,\n\t\t\t\t}}\n\t\t\t\tresources={{\n\t\t\t\t\tlibrariesLabel: librariesResources.Library,\n\t\t\t\t\tsubscriptionsLabel: librariesResources.AddASubscriptionOptional,\n\t\t\t\t\tlibraryTitleAndNMoreTemplate: librariesResources.LibraryTitleAndNMoreTemplate,\n\t\t\t\t}}\n\t\t\t/>\n\n\t\t\t<div className={styles.lowerSectionContent}>\n\t\t\t\t{compareViewModel && (\n\t\t\t\t\t<ComparePage\n\t\t\t\t\t\t{...compareViewModel}\n\t\t\t\t\t\tonItemAddedToCart={handleLibraryAddedToCart}\n\t\t\t\t\t\tresources={{\n\t\t\t\t\t\t\t...compareViewModel.resources,\n\t\t\t\t\t\t\t...librariesResources,\n\t\t\t\t\t\t\t...subscriptionsResources,\n\t\t\t\t\t\t\t...plansResources,\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</>\n\t);\n};\n\nConfigurationWizardLibraries.propTypes = {\n\tcompareViewModel: PropTypes.object,\n\tsummaryTrough: PropTypes.object,\n\tlogosOrVerbum: PropTypes.string,\n\taddASubscriptionModalViewModel: PropTypes.object,\n\troutes: PropTypes.shape({\n\t\tCartUrl: PropTypes.string.isRequired,\n\t\tConfigurationWizardSubscriptionsUrl: PropTypes.string.isRequired,\n\t\tConfigurationWizardLibrariesUrl: PropTypes.string.isRequired,\n\t}).isRequired,\n};\n\nfunction ConfigurationWizardLibrariesContextWrapper(props) {\n\tconst { initialConfigurationWizardCartViewModel, routes } = props;\n\n\treturn (\n\t\t<ConfigurationWizardCartContextProvider initialValue={initialConfigurationWizardCartViewModel} routes={routes}>\n\t\t\t<ConfigurationWizardLibraries {...props} />\n\t\t</ConfigurationWizardCartContextProvider>\n\t);\n}\nConfigurationWizardLibrariesContextWrapper.propTypes = {\n\tinitialConfigurationWizardCartViewModel: PropTypes.object,\n\troutes: PropTypes.object,\n};\n\nexport default ConfigurationWizardLibrariesContextWrapper;\n","import { useCallback, useState } from 'react';\nimport { useLocation } from '../../../location';\n\nconst defaultShowModalQueryStringParameterName = 'showModal';\nconst defaultShowCoolDownMillisecondsQueryStringParamter = 'coolDownMs';\nconst defaultShowCoolDownMilliseconds = 24 * 60 * 60 * 1000;\n\nconst setNextTimeToShowModalInLocalStorage = (\n\tstorageKey,\n\tshowCoolDownMillisecondsQueryStringParameterName,\n\tconfiguredShowCoolDownMilliseconds,\n\tsearch\n) => {\n\tconst coolDownMillisecondsQueryStringParameterValue = parseInt(\n\t\tnew URLSearchParams(search).get(showCoolDownMillisecondsQueryStringParameterName)?.trim()\n\t);\n\n\tconst coolDownMilliseconds = isNaN(coolDownMillisecondsQueryStringParameterValue)\n\t\t? configuredShowCoolDownMilliseconds\n\t\t: coolDownMillisecondsQueryStringParameterValue;\n\n\tconst nextTimeToShowModal = Date.now() + coolDownMilliseconds;\n\n\twindow.localStorage.setItem(storageKey, nextTimeToShowModal.toString());\n};\n\nconst getShouldShowModal = (storageKey, showModalQueryStringParameterName, search) => {\n\tif (showModalQueryStringParameterName) {\n\t\tconst showModal = new URLSearchParams(search).get(showModalQueryStringParameterName)?.trim()?.toLowerCase();\n\n\t\tif (showModal !== 'true') {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tconst nextTimeToShowModal = parseInt(window.localStorage.getItem(storageKey));\n\tif (isNaN(nextTimeToShowModal)) {\n\t\treturn true;\n\t}\n\n\treturn Date.now() > nextTimeToShowModal;\n};\n\nconst useInterstitialModalHandler = (\n\tonInterstitialNotShown,\n\t{\n\t\tnextTimeToShowModalStorageKey,\n\t\tgetShouldShowModalFromState,\n\t\tshowModalQueryStringParameterName = defaultShowModalQueryStringParameterName,\n\t\tshowCoolDownMillisecondsQueryStringParameterName = defaultShowCoolDownMillisecondsQueryStringParamter,\n\t\tshowCoolDownMilliseconds = defaultShowCoolDownMilliseconds,\n\t}\n) => {\n\tconst { search } = useLocation();\n\tconst [isOpen, setIsOpen] = useState(false);\n\n\tconst handle = useCallback(() => {\n\t\tif (\n\t\t\t(getShouldShowModalFromState ? getShouldShowModalFromState() : true) &&\n\t\t\tgetShouldShowModal(nextTimeToShowModalStorageKey, showModalQueryStringParameterName, search)\n\t\t) {\n\t\t\tsetNextTimeToShowModalInLocalStorage(\n\t\t\t\tnextTimeToShowModalStorageKey,\n\t\t\t\tshowCoolDownMillisecondsQueryStringParameterName,\n\t\t\t\tshowCoolDownMilliseconds,\n\t\t\t\tsearch\n\t\t\t);\n\t\t\tsetIsOpen(true);\n\t\t} else {\n\t\t\tonInterstitialNotShown();\n\t\t}\n\t}, [\n\t\tgetShouldShowModalFromState,\n\t\tnextTimeToShowModalStorageKey,\n\t\tonInterstitialNotShown,\n\t\tsearch,\n\t\tshowCoolDownMilliseconds,\n\t\tshowCoolDownMillisecondsQueryStringParameterName,\n\t\tshowModalQueryStringParameterName,\n\t]);\n\n\treturn { isOpen, handle };\n};\n\nexport default useInterstitialModalHandler;\n","// extracted by mini-css-extract-plugin\nexport default {\"lowerSectionContent\":\"index--lowerSectionContent--556nz\"};","import React, { useMemo } from 'react';\nimport { mobileCutoffWidth, desktopMinWidth } from '../../../util/mobile-utility';\nimport { extraLargeDesktopMinWidth, largeDesktopMinWidth } from '../../../util/hooks/use-screensize';\n\ninterface SizeDescriptor {\n\twidth: number | string;\n\theight?: number;\n}\n\ntype SizeValue = number | string | SizeDescriptor;\n\ninterface ImageSizes {\n\tmobile?: SizeValue;\n\ttablet?: SizeValue;\n\tdesktop?: SizeValue;\n\tlargeDesktop?: SizeValue;\n\textraLargeDesktop?: SizeValue;\n}\n\ninterface ImageProps {\n\tsrc: string;\n\talt?: string;\n\twidth?: number | string;\n\theight?: number | string;\n\tsizes?: ImageSizes;\n\tbelowTheFold?: boolean;\n\tfetchPriority?: 'high' | 'low' | 'auto';\n\tclassName?: string;\n\tstyle?: React.CSSProperties;\n\ttargetAspectRatio?: [number, number];\n}\n\ninterface ProcessedSize {\n\twidth: number | string;\n\theight?: number;\n}\n\ninterface ProcessedSizes {\n\t[key: string]: ProcessedSize;\n}\n\ninterface SizeResult {\n\tsize: number | string;\n\tmaxWidth: number | null;\n}\n\nconst breakPointNames = ['mobile', 'tablet', 'desktop', 'largeDesktop', 'extraLargeDesktop'] as const;\nconst breakPoints: (number | null)[] = [\n\tmobileCutoffWidth,\n\tdesktopMinWidth,\n\tlargeDesktopMinWidth,\n\textraLargeDesktopMinWidth,\n\tnull,\n];\n\nconst standardDeviceWidths = [360, 640, 768, 1024, 1366, 1600, 1920, 2560];\n\nfunction formatSizeValue(size: number | string): string {\n\treturn typeof size === 'string' ? size : `${size}px`;\n}\n\nfunction createSizesAttribute(inputSizes: ProcessedSizes): string {\n\tconst sizeResults: SizeResult[] = [];\n\n\tlet currentResult: SizeResult | undefined = undefined;\n\tfor (let i = 0; i < breakPointNames.length; i++) {\n\t\tconst breakPointName = breakPointNames[i];\n\t\tconst sizeEntry = inputSizes[breakPointName];\n\t\tconst size = sizeEntry?.width ?? null;\n\t\tconst breakPoint = breakPoints[i];\n\t\tif (size !== null) {\n\t\t\tcurrentResult = { size, maxWidth: breakPoint === null ? null : breakPoint - 1 };\n\t\t\tsizeResults.push(currentResult);\n\t\t} else if (currentResult) {\n\t\t\tcurrentResult.maxWidth = breakPoint === null ? null : breakPoint - 1;\n\t\t}\n\t}\n\tif (currentResult) {\n\t\tcurrentResult.maxWidth = null;\n\t}\n\n\treturn sizeResults\n\t\t.map(({ size, maxWidth }) => {\n\t\t\tif (maxWidth !== null) {\n\t\t\t\treturn `(max-width: ${maxWidth}px) ${formatSizeValue(size)}`;\n\t\t\t}\n\t\t\treturn formatSizeValue(size);\n\t\t})\n\t\t.join(',');\n}\n\nfunction computeSrcSetWidths(nominalWidths: number[], deviceWidths: number[]): number[] {\n\tconst widthSet = new Set(deviceWidths);\n\tfor (const nominalWidth of nominalWidths) {\n\t\twidthSet.add(nominalWidth);\n\t\twidthSet.add(nominalWidth * 2);\n\t}\n\treturn [...widthSet].sort((a, b) => a - b);\n}\n\nfunction createSrcSetAttribute(srcSetWidths: number[], src: string, aspectRatio?: number): string | undefined {\n\tconst entries: string[] = [];\n\tfor (const width of srcSetWidths) {\n\t\tconst url = new URL(src);\n\t\turl.searchParams.set('w', String(width));\n\t\tif (aspectRatio) {\n\t\t\turl.searchParams.set('h', String(Math.round(width / aspectRatio)));\n\t\t}\n\t\turl.searchParams.set('m', 'limit');\n\t\tentries.push(`${url.toString()} ${width}w`);\n\t}\n\treturn entries.length > 0 ? entries.join(',') : undefined;\n}\n\nfunction getNominalWidths(processedSizes: ProcessedSizes | undefined, widthProp?: number | string): number[] {\n\tif (processedSizes) {\n\t\tconst numericWidths = Object.values(processedSizes)\n\t\t\t.map(s => s.width)\n\t\t\t.filter((w): w is number => typeof w === 'number');\n\t\treturn numericWidths;\n\t}\n\tif (typeof widthProp === 'number') {\n\t\treturn [widthProp];\n\t}\n\treturn [];\n}\n\nconst amberCdnHost = 'files.logoscdn.com';\nconst amberUrls = ['internal.files.logos.com', 'files.logos.com', amberCdnHost, 'files.amberfile.com'];\n\n// Only production hosts; test/internal hosts serve a different environment's assets and must not be pointed at the production CDN.\nconst amberCdnUpgradableHosts = ['files.logos.com', 'files.amberfile.com'];\n\nfunction isAmberHost(host: string): boolean {\n\treturn amberUrls.includes(host);\n}\n\nfunction detectIsAmberOptimizedUrl(urlAsString: string): boolean {\n\ttry {\n\t\tconst url = new URL(urlAsString);\n\t\tconst isAmberCdn = isAmberHost(url.host);\n\t\tconst isOptimized = url.pathname.endsWith('optimized');\n\t\treturn isAmberCdn && isOptimized;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\n// Amber link signatures are generated against a fixed host, so rewriting the host to the CDN keeps signed links valid.\nfunction toAmberCdnUrl(url: URL): string {\n\tif (!amberCdnUpgradableHosts.includes(url.host)) {\n\t\treturn url.toString();\n\t}\n\tconst cdnUrl = new URL(url.toString());\n\tcdnUrl.host = amberCdnHost;\n\tcdnUrl.protocol = 'https:';\n\tcdnUrl.port = '';\n\treturn cdnUrl.toString();\n}\n\nfunction tryUpgradeAmberUrlToCdn(urlAsString: string): string {\n\ttry {\n\t\treturn toAmberCdnUrl(new URL(urlAsString));\n\t} catch {\n\t\treturn urlAsString;\n\t}\n}\n\nfunction processSizes(inputSizes: ImageSizes | undefined, aspectRatio?: number): ProcessedSizes | undefined {\n\tif (!inputSizes) {\n\t\treturn undefined;\n\t}\n\tconst processedSizes: ProcessedSizes = {};\n\tfor (const [sizeName, size] of Object.entries(inputSizes)) {\n\t\tif (typeof size === 'string') {\n\t\t\tprocessedSizes[sizeName] = { width: size };\n\t\t} else if (size !== null && size !== undefined && typeof size === 'object') {\n\t\t\tprocessedSizes[sizeName] = {\n\t\t\t\twidth: size.width,\n\t\t\t\theight:\n\t\t\t\t\tsize.height ??\n\t\t\t\t\t(aspectRatio && typeof size.width === 'number' ? Math.floor(size.width / aspectRatio) : undefined),\n\t\t\t};\n\t\t} else if (typeof size === 'number') {\n\t\t\tprocessedSizes[sizeName] = { width: size, height: aspectRatio ? Math.floor(size / aspectRatio) : undefined };\n\t\t}\n\t}\n\treturn processedSizes;\n}\n\nconst Image = ({\n\tsrc: srcProp,\n\talt,\n\twidth,\n\theight,\n\tsizes: inputSizes,\n\tbelowTheFold = false,\n\tfetchPriority,\n\tclassName,\n\tstyle,\n\ttargetAspectRatio,\n}: ImageProps) => {\n\tconst numericAspectRatio = targetAspectRatio ? targetAspectRatio[0] / targetAspectRatio[1] : undefined;\n\n\tconst src = useMemo(() => tryUpgradeAmberUrlToCdn(srcProp), [srcProp]);\n\tconst processedSizes = processSizes(inputSizes, numericAspectRatio);\n\tconst isAmberOptimizedUrl = detectIsAmberOptimizedUrl(src);\n\n\tconst srcSetAttribute = useMemo(() => {\n\t\tif (!isAmberOptimizedUrl) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (!processedSizes) {\n\t\t\tconst nominalWidths = getNominalWidths(undefined, width);\n\t\t\tconst srcSetWidths = computeSrcSetWidths(nominalWidths, []);\n\t\t\treturn createSrcSetAttribute(srcSetWidths, src, numericAspectRatio);\n\t\t}\n\n\t\tconst containsResponsiveWidth = Object.values(processedSizes).some(\n\t\t\tx => typeof x.width === 'string' && x.width.endsWith('vw')\n\t\t);\n\t\tconst nominalWidths = getNominalWidths(processedSizes, width);\n\t\tconst srcSetWidths = computeSrcSetWidths(nominalWidths, containsResponsiveWidth ? standardDeviceWidths : []);\n\t\treturn createSrcSetAttribute(srcSetWidths, src, numericAspectRatio);\n\t}, [isAmberOptimizedUrl, processedSizes, src, width, numericAspectRatio]);\n\n\tconst sizesAttribute = useMemo(() => {\n\t\tif (srcSetAttribute && processedSizes) {\n\t\t\treturn createSizesAttribute(processedSizes);\n\t\t}\n\t\treturn undefined;\n\t}, [srcSetAttribute, processedSizes]);\n\n\tconst widthAttribute = width ?? targetAspectRatio?.[0];\n\tconst heightAttribute = height ?? targetAspectRatio?.[1];\n\n\treturn (\n\t\t<img\n\t\t\tsrc={src}\n\t\t\talt={alt}\n\t\t\tsrcSet={srcSetAttribute}\n\t\t\tsizes={sizesAttribute}\n\t\t\twidth={widthAttribute}\n\t\t\theight={heightAttribute}\n\t\t\tloading={belowTheFold ? 'lazy' : undefined}\n\t\t\tfetchPriority={fetchPriority}\n\t\t\tclassName={className}\n\t\t\tstyle={style}\n\t\t/>\n\t);\n};\n\nexport { Image, detectIsAmberOptimizedUrl, isAmberHost, toAmberCdnUrl, tryUpgradeAmberUrlToCdn, amberCdnHost };\nexport type { ImageProps, ImageSizes, SizeDescriptor };\n"],"names":["customCompareTrackId","track_kinds","track_selector","container","dropdown","desktopLabelPositionTop","desktopLabelPositionLeft","label","select","TrackSelector","_ref","className","selectedTrackId","trackOptions","_ref$desktopLabelPosi","desktopLabelPosition","onTrackChange","isMobile","useScreensize","handleTrackChange","useCallback","event","trackId","target","value","sortedTrackOptions","useMemo","sortedOptions","sort","a","b","name","localeCompare","customCompareTrackIndex","findIndex","option","_sortedOptions$splice","splice","customCompareTrack","_slicedToArray","push","React","classNames","styles","concat","sharedStyles","h5","ui2","onChange","map","key","propTypes","PropTypes","isRequired","new_comparison_table_with_slider_track_selector","DisplayPriceValue","smallPriceClassName","largePriceClassName","price","decimalSymbol","_price$split","split","_price$split2","integralValue","decimalValue","display_price_value","price_anchor","product_price_anchor","priceAnchor","resources","useLocalization","anchorPriceKinds","anchorPriceKind","apk","trim","cn","includes","CollectionValue","CommandSentence","Container","template","collectionValue","Field","PerDayAbbreviated","PerMonthAbbreviated","PerYearAbbreviated","DynamicCollectionValue","dynamicCollectionValue","DigitalListPriceLabel","digitalListPrice","PrintListPriceLabel","printPrice","RegularPriceLabel","regularPrice","DynamicPriceLabel","dynamicPrice","savingsDescription","isDiscounted","compare_page_recommendation_badge","RecommendedForYou","track_product_card","TrackProductCard","variant","title","blurb","isForeignCurrency","skuIds","priceAnchorViewModel","productId","addToMiniCartButton","isOwnedByUser","ownershipNotice","resourceCounts","isRecommended","onItemAddedToCart","imageUrl","savingsPercentage","productDetailsUrl","showTrackProductDetails","shouldShowResourceCount","shouldShowNewToYou","unownedResourceCount","totalAvailableResourceCount","_ref2","BookCountAllOwned","BooksNewToYou","BooksNewToYouBookCount","BookCount","_ref3","resourcesTemplate","resourceCountTemplate","resourceCountToUse","columnWidth","useContext","ScrollableTableWithSliderContext","RecommendationBadge","PercentOff","href","Image","src","alt","sizes","tablet","desktop","PriceAnchor","shared","usdDecimalSymbol","ForeignPriceTooltip","valueLocalized","AddToMiniCartButton","buttonClassName","payInFull","displayAddedToCart","new_comparison_table_with_slider_track_product_card","ProductTab","track_product_slider_product_tab","TrackProductSlider","trackProducts","isSticky","length","trackProductCards","tp","id","component","isOwned","SliderWrapper","itemsClassName","items","arrowOptions","buttonHeight","sliderArrowOptions","short","new_comparison_table_with_slider_track_product_slider","MobileTrackSelector","selectedTrack","hideBooksIOwn","onFilterChange","MobileComparisonHeaderLibraries","Hiding","Showing","onClick","Change","new_comparison_table_with_slider_mobile_track_selector","mobile_track_product_card","badgeContainer","savingsBadge","baseCard","fullCard","shortCard","image","titleLink","subtitle","descriptionSection","resourcesCount","priceAndAddToCartSection","shortPriceAndAddToCartSection","fullPriceAndAddToCartSection","pricingSection","collectionValuePrice","priceContainer","priceLabelContainer","priceSmall","paymentPlanInfo","MobileTrackProductCard","BookCountNewToYou","PaymentPlanInfoTemplate","recurringPrice","numberOfPayments","new_comparison_table_with_slider_mobile_track_product_card","ComparisonModal","onClose","children","CloseSvgUrl","Close","SwipeableWrapper","new_comparison_table_with_slider_comparison_modal","MobileProductComparison","isComparisonModalOpen","onOpenComparisonModal","onCloseComparisonModal","CompareLibrariesButton","CompareLibraries","RightArrow","new_comparison_table_with_slider_mobile_product_comparison","customCompareTabToken","denominationalTabToken","getTrackTabToken","TabSection","Tab","_ref4","isSelected","TrackTab","_ref5","track","handleClick","CustomCompareTrackTab","_ref6","onChangeComparison","ChangeComparison","CustomCompare","new_comparison_table_with_slider_tab_based_track_selector","userIsBasePackageOwner","primaryTrack","denominationalTracks","alternateTracks","selectedTab","some","_useState","useState","firstTrack","_useState2","isOpen","setIsOpen","handleViewMoreClick","lastDenominationalLibrarySelectedRef","useRef","current","handleDenominationalTabSelected","_denominationalTracks","_denominationalTracks2","Traditions","ViewMoreLibraries","DoubleRightArrow","new_comparison_table_with_slider","NewComparisonTableWithSlider","initialSelectedTrackId","initialSelectedTrackProducts","propsTrackOptions","productSectionTitle","updateSelectedProductIndex","trackKind","recommendedTrackProductId","comparisonTableControlsHandler","routes","_ref$suppressMobilePr","suppressMobileProductComparison","isMobileComparisonModalOpen","setIsMobileComparisonModalOpen","hasDemoedOpenSectionRef","pricingSidebarResources","handleTrackFetched","sections","handleTrackSelected","trackName","productIds","updateUrlParamValues","_useComparisonTracksW","handleCustomCompareAllCleared","tracksByTrackId","trackOption","tracks","setTracks","_useState3","_useState4","setSelectedTrackId","_useState5","_useState6","selectedMobileFilterTrackId","setSelectedMobileFilterTrackId","_useState7","_useState8","setSelectedTrack","_useState9","_useState0","selectedTrackProductIndex","setSelectedTrackProductIndex","_useState1","_useState10","selectedCompareSections","setSelectedCompareSections","_useState11","_useState12","displayMobileFilter","setDisplayMobileFilter","_useState13","_useState14","isLoading","setIsLoading","_useState15","_useState16","errorMessage","setErrorMessage","_useState17","_useState18","isCustomCompareModalOpen","setIsCustomCompareModalOpen","_useState19","_useState20","selectedCustomCompareTrackProducts","setSelectedCustomCompareTrackProducts","handleCustomCompare","i","newTracks","_objectSpread","undefined","useEffect","SomethingWentWrong","async","tracksWithoutTrackProducts","responseTracks","CompareClient","getTrackProducts","CompareTrackProductsBaseUrl","prev","forEach","responseTrack","ex","fetchTrackProducts","_track$trackProducts","_await$CompareClient$","Object","assign","product","getCompareSectionData","CompareTrackSectionsBaseUrl","Math","min","max","getSelectedTrackProductIndex","fetchTrack","handleMobileFilterTrackChange","handleFilterChange","handleCustomCompareTrackProductSelect","trackProduct","isAlreadySelected","newSelectedCustomCompareTrackProducts","filter","notifyError","YouHaveSelectedMaxNumberOfItemsToCompare","handleCustomCompareTrackProductDeselect","filteredSelectedCustomCompareTrackProducts","handleCustomCompareClearAll","useComparisonTracksWithCustomCompare","handleChangeComparison","handleCustomCompareModalClose","usePreventBodyScrolling","handleOpenMobileComparisonModal","handleCloseMobileComparisonModal","stickyHeaderAnchorElementRef","comparisonTableRef","isTableScrolling","categorizedTrackOptions","isAnyCategorizedTracks","trackGroup","unshift","isDenominationalTrackSelected","FullscreenOverlayLoadingSpinner","zIndex","MobileCustomCompare","initialExpandedTrackId","isVisible","onClearAll","onCompare","onTrackProductDeselect","onTrackProductSelect","selectedTrackProducts","showTrackHeader","TrackKinds","isTrackLoaded","getTrackHeader","isStickyHeader","ref","TabBasedTrackSelector","CustomCompareModal","ComparisonTableLegend","mode","ComparisonTableControls","_extends","PaymentPlansAvailableInCart","toLowerCase","comparisonTableWithSlider","StickyHeader","anchorElementRef","boundingElementRef","ComparisonSectionsTable","_selectedTrack$trackP","onTrackAffinityUpdate","DisabledLinkUrl","CompareTrackBaseUrl","compare_page_new_comparison_table_with_slider","compare_books_or_features","comparisonTableWithSliderProps","propsByScreenSize","numbersOfVisibleColumnsByScreenSize","columnWidthsByScreenSize","columnGapsByScreenSize","boundaryMarginWidthsByScreenSize","swipeRadiusXByScreenSize","sliderProps","arrowWidthsByScreenSize","ComparePage","_selectedTrack$trackP2","compareResources","find","handleUpdateSelectedProductIndex","useComparisonTableControlsHandler","DisabledMessage","disabledLinkUrl","ScrollableTableWithSliderProvider","firstVisibleColumnIndex","totalNumberOfColumns","onFirstVisibleColumnChange","scrollControlType","scrollControlTypes","scrollbar","buttons","upperBannerViewModel","CompareBaseUrl","compare_page_compare_books_or_features","InterstitialModal","_ref$testId","testId","header","primaryButtonLabel","onPrimaryButtonClick","secondaryButtonLabel","onSecondaryButtonClick","disclaimer","toast","Modal","allowBackgroundScrolling","ignoreClickOnBackdrop","width","maxWidth","Error","Content","BlueCheckmark","configuration_wizard_interstitial_modal","AddASubscriptionModal","productTitle","_ref$doesUserQualifyF","doesUserQualifyForSubscriptionFreeTrial","navigate","useLocation","SaveAndUnlockHeader","SeePlans","ConfigurationWizardSubscriptionsUrl","ProceedToCheckout","CartUrl","LibraryAddedToCart","DiscoverInsightsBeyondMessage","YourFirst30DaysAreFree","add_a_subscription_modal","ConfigurationWizardLibraries","compareViewModel","summaryTrough","logosOrVerbum","addASubscriptionModalViewModel","librariesResources","subscriptionsResources","plansResources","isRedirecting","setIsRedirecting","cart","useConfigurationWizardCartContext","_useAddASubscriptionM","useInterstitialModalHandler","onInterstitialNotShown","nextTimeToShowModalStorageKey","getShouldShowModalFromState","_ref$showModalQuerySt","showModalQueryStringParameterName","_ref$showCoolDownMill","showCoolDownMillisecondsQueryStringParameterName","_ref$showCoolDownMill2","showCoolDownMilliseconds","search","handle","getShouldShowModal","storageKey","_URLSearchParams$get2","URLSearchParams","get","nextTimeToShowModal","parseInt","window","localStorage","getItem","isNaN","Date","now","setNextTimeToShowModalInLocalStorage","configuredShowCoolDownMilliseconds","_URLSearchParams$get","coolDownMillisecondsQueryStringParameterValue","coolDownMilliseconds","setItem","toString","hasEffectiveSubscription","isAddASubscriptionModalOpen","handleLibraryAddedToCart","SummaryTrough","step","WizardHero","BuildYourLogosOrVerbumSubscription","ChooseYourSoftwareThenAddALibrary","ProgressIndicatorV2","subscriptionsUrl","librariesUrl","ConfigurationWizardLibrariesUrl","librariesLabel","Library","subscriptionsLabel","AddASubscriptionOptional","libraryTitleAndNMoreTemplate","LibraryTitleAndNMoreTemplate","ConfigurationWizardLibrariesContextWrapper","props","initialConfigurationWizardCartViewModel","ConfigurationWizardCartContextProvider","initialValue","configuration_wizard_libraries","breakPointNames","breakPoints","mobileCutoffWidth","desktopMinWidth","largeDesktopMinWidth","extraLargeDesktopMinWidth","standardDeviceWidths","formatSizeValue","size","computeSrcSetWidths","nominalWidths","deviceWidths","widthSet","Set","nominalWidth","add","createSrcSetAttribute","srcSetWidths","aspectRatio","entries","url","URL","searchParams","set","String","round","join","getNominalWidths","processedSizes","widthProp","values","s","w","amberCdnHost","amberUrls","amberCdnUpgradableHosts","isAmberHost","host","detectIsAmberOptimizedUrl","urlAsString","isAmberCdn","isOptimized","pathname","endsWith","_unused","toAmberCdnUrl","cdnUrl","protocol","port","srcProp","height","inputSizes","_ref4$belowTheFold","belowTheFold","fetchPriority","style","targetAspectRatio","numericAspectRatio","_unused2","tryUpgradeAmberUrlToCdn","sizeName","_size$height","floor","processSizes","isAmberOptimizedUrl","srcSetAttribute","containsResponsiveWidth","x","sizesAttribute","sizeResults","currentResult","_sizeEntry$width","sizeEntry","breakPoint","createSizesAttribute","widthAttribute","heightAttribute","srcSet","loading"],"sourceRoot":""}