{"version":3,"file":"1821.e04057683588de49639f.js?ssi=0","mappings":"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","sources":["webpack://@logos/commerceweb-frontend/./Scripts/site/components/add-to-wish-list/icon-button.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/add-to-wish-list/link-button.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/add-to-wish-list/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/builder/custom-components/amber-image/builder-amber-image.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/builder/custom-components/amber-image/amber-image-impl.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/builder/custom-components/amber-image/register.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/builder/custom-components/amber-image/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/product/product-details-page/right-column/prepub-product-status-summary.tsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/read-more-read-less/index.less?d5ed","webpack://@logos/commerceweb-frontend/./Scripts/site/components/read-more-read-less/index.jsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/shared/author-bio/index.tsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/shared/dropdown-menu/dropdown-menu.tsx","webpack://@logos/commerceweb-frontend/./Scripts/site/components/shared/enhanced-image-tag/image.tsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { IconButton } from '@faithlife/commerce-components';\nimport { Heart } from 'lucide-react';\n\nconst AddToWishListIconButton = ({ isInAnyWishList, onClick }) => {\n\treturn (\n\t\t<IconButton\n\t\t\taria-label=\"Add to wishlist\"\n\t\t\tclassName=\"absolute right-2 top-2\"\n\t\t\tonClick={onClick}\n\t\t\tscale=\"sm\"\n\t\t\tvariant=\"floating\"\n\t\t>\n\t\t\t<Heart aria-hidden className=\"h-4 w-4.5 text-primary\" fill={isInAnyWishList ? 'currentcolor' : 'none'} />\n\t\t</IconButton>\n\t);\n};\nAddToWishListIconButton.propTypes = {\n\tisInAnyWishList: PropTypes.bool.isRequired,\n\tonClick: PropTypes.func.isRequired,\n};\n\nexport default AddToWishListIconButton;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Heart } from 'lucide-react';\nimport { useLocalization } from '../../localization';\nimport { cn } from '../../util/cn';\n\nconst LinkButton = ({ isInAnyWishList, onClick }) => {\n\tconst resources = useLocalization('CommerceWeb.Resources.WishLists.WishLists');\n\n\treturn (\n\t\t<button\n\t\t\taria-label={resources.AddToWishList}\n\t\t\tclassName={cn('group flex cursor-pointer items-center space-x-2 border-none bg-transparent p-0')}\n\t\t\tonClick={onClick}\n\t\t>\n\t\t\t<Heart\n\t\t\t\taria-hidden=\"true\"\n\t\t\t\tclassName=\"text-primary group-hover:text-secondary\"\n\t\t\t\tfill={isInAnyWishList ? 'currentColor' : 'none'}\n\t\t\t\tsize={16}\n\t\t\t\tstrokeWidth={1}\n\t\t\t/>\n\t\t\t<span className=\"text-primary group-hover:text-secondary\">{resources.AddToWishList}</span>\n\t\t\t<svg\n\t\t\t\taria-hidden=\"true\"\n\t\t\t\tclassName=\"text-primary group-hover:text-secondary\"\n\t\t\t\tfill=\"none\"\n\t\t\t\theight=\"7\"\n\t\t\t\twidth=\"12\"\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t>\n\t\t\t\t<path d=\"m10.893.895-5 4.21-5-4.21\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n\t\t\t</svg>\n\t\t</button>\n\t);\n};\n\nLinkButton.propTypes = {\n\tisLoading: PropTypes.bool,\n\tisInAnyWishList: PropTypes.bool,\n\tonClick: PropTypes.func,\n};\n\nexport default LinkButton;\n","import React, { useCallback, useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { CommerceWebThemeProvider } from '../../util/theme';\nimport { SharedWishListFormContext } from '../shared/wish-list/shared-wish-list-form-provider';\nimport { useCurrentUser } from '../per-user-data/per-user-data-context';\nimport IconButton from './icon-button';\nimport LinkButton from './link-button';\n\nimport SharedWishListFormProvider from './../shared/wish-list/shared-wish-list-form-provider';\n\nexport const AddToWishList = props => {\n\tconst { open: openAddForm } = useContext(SharedWishListFormContext);\n\tconst { isSignedIn } = useCurrentUser();\n\n\tconst handleClickMore = useCallback(() => {\n\t\topenAddForm?.(props.productId, props.wishListsProductMembershipRecords);\n\t}, [openAddForm, props.productId, props.wishListsProductMembershipRecords]);\n\n\tif (!isSignedIn || props.isOwned) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<CommerceWebThemeProvider>\n\t\t\t{props.variant === 'icon' && <IconButton isInAnyWishList={props.isInAnyWishList} onClick={handleClickMore} />}\n\t\t\t{props.variant === 'link' && <LinkButton isInAnyWishList={props.isInAnyWishList} onClick={handleClickMore} />}\n\t\t</CommerceWebThemeProvider>\n\t);\n};\n\nAddToWishList.propTypes = {\n\tvariant: PropTypes.oneOf(['icon', 'link']).isRequired,\n\tisInAnyWishList: PropTypes.bool,\n\tproductId: PropTypes.string,\n\twishListsProductMembershipRecords: PropTypes.arrayOf(\n\t\tPropTypes.shape({\n\t\t\tid: PropTypes.string,\n\t\t\tisProductInWishList: PropTypes.bool,\n\t\t\tname: PropTypes.string,\n\t\t\troutes: PropTypes.shape({\n\t\t\t\tAddProductToWishListUrl: PropTypes.string,\n\t\t\t}),\n\t\t})\n\t),\n};\n\nexport const AddToWishListWithForm = props => {\n\treturn (\n\t\t<SharedWishListFormProvider>\n\t\t\t<AddToWishList {...props} />\n\t\t</SharedWishListFormProvider>\n\t);\n};\n","import React from 'react';\nimport { Builder } from '@builder.io/react';\n\nimport { isAmberHost, toAmberCdnUrl } from '../../../shared/enhanced-image-tag/image';\n\nexport const ObjectFit = {\n\tContain: 'contain',\n\tCover: 'cover',\n};\n\nexport const ObjectPosition = {\n\tCenter: 'center',\n\tTop: 'top',\n\tBottom: 'bottom',\n\tLeft: 'left',\n\tRight: 'right',\n\tTopLeft: 'top-left',\n\tTopRight: 'top-right',\n\tBottomLeft: 'bottom-left',\n\tBottomRight: 'bottom-right',\n};\n\nfunction validateBuilderAmberImageProps(props) {\n\tconst { src, alt, width, height, objectFit, objectPosition, highPriority } = props;\n\n\tif (!src) {\n\t\treturn { valid: false, message: 'Source is required' };\n\t}\n\n\tif (!width || !height) {\n\t\treturn { valid: false, message: 'Width and height are required' };\n\t}\n\n\tlet valid = false;\n\tlet srcType = null;\n\tlet finalSrc = src;\n\n\t// Check if it's an Amber Asset ID (numeric string)\n\tif (/^\\d+$/.test(src)) {\n\t\tvalid = true;\n\t\tsrcType = 'assetId';\n\t}\n\n\tif (!valid) {\n\t\tlet url = null;\n\t\ttry {\n\t\t\turl = new URL(src);\n\t\t} catch {\n\t\t\t// Invalid URL, fall through to error below\n\t\t}\n\n\t\tif (url) {\n\t\t\t// Check if it's an Amber Optimized URL\n\t\t\tif (isAmberHost(url.host) && /\\/v1\\/assets\\/\\d+\\/optimized$/.test(url.pathname)) {\n\t\t\t\tvalid = true;\n\t\t\t\tsrcType = 'optimizedUrl';\n\t\t\t} else if (url.pathname.endsWith('.svg') && url.searchParams.has('signature')) {\n\t\t\t\t// Check if it's an Amber SVG URL\n\t\t\t\tvalid = true;\n\t\t\t\tsrcType = 'svg';\n\t\t\t}\n\n\t\t\tif (valid) {\n\t\t\t\tfinalSrc = toAmberCdnUrl(url);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (valid) {\n\t\treturn {\n\t\t\tvalid: true,\n\t\t\tsrc: finalSrc,\n\t\t\tsrcType,\n\t\t\twidth,\n\t\t\theight,\n\t\t\talt: alt ?? '',\n\t\t\tobjectFit,\n\t\t\tobjectPosition,\n\t\t\thighPriority: highPriority ?? false,\n\t\t};\n\t}\n\n\treturn {\n\t\tvalid: false,\n\t\tmessage: 'Source must be an Amber Asset ID (numeric), Amber Optimized URL, or Amber SVG URL',\n\t};\n}\n\nexport function createBuilderAmberImageComponent(AmberImageImpl) {\n\tfunction BuilderAmberImage(props) {\n\t\tconst result = validateBuilderAmberImageProps(props);\n\n\t\tif (result.valid) {\n\t\t\tconst { src, srcType, width, height, alt, objectFit, objectPosition, highPriority } = result;\n\n\t\t\treturn (\n\t\t\t\t<AmberImageImpl\n\t\t\t\t\tsrc={src}\n\t\t\t\t\tsrcType={srcType}\n\t\t\t\t\twidth={width}\n\t\t\t\t\theight={height}\n\t\t\t\t\talt={alt}\n\t\t\t\t\tobjectFit={objectFit}\n\t\t\t\t\tobjectPosition={objectPosition}\n\t\t\t\t\thighPriority={highPriority}\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\n\t\tif (Builder.isEditing) {\n\t\t\treturn (\n\t\t\t\t<>\n\t\t\t\t\t<div\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tborderRadius: '4px',\n\t\t\t\t\t\t\tborderLeftWidth: '4px',\n\t\t\t\t\t\t\tborderColor: '#ed8936',\n\t\t\t\t\t\t\tbackgroundColor: '#fefcbf',\n\t\t\t\t\t\t\tpadding: '12px',\n\t\t\t\t\t\t\tcolor: '#dd6b20',\n\t\t\t\t\t\t\tfontSize: '14px',\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{'Image configuration is not valid:'} {result.message}\n\t\t\t\t\t</div>\n\t\t\t\t</>\n\t\t\t);\n\t\t}\n\n\t\treturn null;\n\t}\n\n\treturn BuilderAmberImage;\n}\n","import React from 'react';\n\nimport { Image } from '../../../shared/enhanced-image-tag/image';\nimport { ObjectFit, ObjectPosition } from './builder-amber-image';\n\nconst objectFitCssValues = {\n\t[ObjectFit.Contain]: 'contain',\n\t[ObjectFit.Cover]: 'cover',\n};\n\nconst objectPositionCssValues = {\n\t[ObjectPosition.Center]: 'center',\n\t[ObjectPosition.Top]: 'top',\n\t[ObjectPosition.Bottom]: 'bottom',\n\t[ObjectPosition.Left]: 'left',\n\t[ObjectPosition.Right]: 'right',\n\t[ObjectPosition.TopLeft]: 'top left',\n\t[ObjectPosition.TopRight]: 'top right',\n\t[ObjectPosition.BottomLeft]: 'bottom left',\n\t[ObjectPosition.BottomRight]: 'bottom right',\n};\n\nexport function AmberImageImpl(props) {\n\tconst { src, srcType, alt, width, height, objectFit, objectPosition, highPriority } = props;\n\n\tlet finalSrc = src;\n\n\tif (srcType === 'assetId') {\n\t\tfinalSrc = `https://files.logoscdn.com/v1/assets/${src}/optimized`;\n\t}\n\n\tconst style = {\n\t\twidth: `${width}px`,\n\t\tmaxWidth: '100%',\n\t\taspectRatio: `${width} / ${height}`,\n\t\tobjectFit: objectFit ? objectFitCssValues[objectFit] : undefined,\n\t\tobjectPosition: objectPosition ? objectPositionCssValues[objectPosition] : undefined,\n\t};\n\n\treturn (\n\t\t<Image\n\t\t\talt={alt}\n\t\t\tbelowTheFold={!highPriority}\n\t\t\tfetchPriority={highPriority ? 'high' : undefined}\n\t\t\theight={height}\n\t\t\tsizes={{ mobile: '100vw', desktop: width }}\n\t\t\tsrc={finalSrc}\n\t\t\tstyle={style}\n\t\t\twidth={width}\n\t\t/>\n\t);\n}\n","import { Builder } from '@builder.io/react';\n\nimport { createBuilderAmberImageComponent, ObjectFit, ObjectPosition } from './builder-amber-image';\n\nexport function register(AmberImageImpl) {\n\tconst BuilderAmberImage = createBuilderAmberImageComponent(AmberImageImpl);\n\n\tregisterAmberImageWithBuilder(BuilderAmberImage);\n}\n\nconst icon =\n\t'data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cpath%20fill%3D%22%23333%22%20fill-rule%3D%22evenodd%22%20d%3D%22M0%202v12a2%202%200%200%200%202%202h12a2%202%200%200%200%202-2V2a2%202%200%200%200-2-2H2a2%202%200%200%200-2%202m1.5%200%20.02%2012a.5.5%200%200%200%20.48.5h12a.5.5%200%200%200%20.5-.5V2a.5.5%200%200%200-.5-.5H2a.5.5%200%200%200-.5.5%22%2F%3E%3Cpath%20fill%3D%22%23888%22%20d%3D%22M8%203%203.67%205.5v5zl4.33%207.5v-5Z%22%2F%3E%3Cpath%20fill%3D%22%23666%22%20d%3D%22m3.67%2010.5%202.165%201.25L8%208l2.165%203.75%202.165-1.25L8%203Z%22%2F%3E%3Cpath%20fill%3D%22%23333%22%20d%3D%22M5.835%2011.75%208%2013l2.165-1.25L8%208Z%22%2F%3E%3C%2Fsvg%3E';\n\nconst labelByObjectFit = {\n\t[ObjectFit.Cover]: 'cover',\n\t[ObjectFit.Contain]: 'contain',\n};\n\nconst labelByObjectPosition = {\n\t[ObjectPosition.Center]: 'center',\n\t[ObjectPosition.Top]: 'top',\n\t[ObjectPosition.Bottom]: 'bottom',\n\t[ObjectPosition.Left]: 'left',\n\t[ObjectPosition.Right]: 'right',\n\t[ObjectPosition.TopLeft]: 'top left',\n\t[ObjectPosition.TopRight]: 'top right',\n\t[ObjectPosition.BottomLeft]: 'bottom left',\n\t[ObjectPosition.BottomRight]: 'bottom right',\n};\n\nfunction registerAmberImageWithBuilder(AmberImage) {\n\tBuilder.registerComponent(AmberImage, {\n\t\tname: 'AmberImage',\n\t\tfriendlyName: 'Amber Image',\n\t\timage: icon,\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tname: 'src',\n\t\t\t\tfriendlyName: 'Source',\n\t\t\t\ttype: 'string',\n\t\t\t\thelperText: 'Enter an Amber Asset ID (numeric), Amber Optimized URL, or Amber SVG URL.',\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'alt',\n\t\t\t\tfriendlyName: 'Alt Text',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefaultValue: '',\n\t\t\t\trequired: false,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'width',\n\t\t\t\tfriendlyName: 'Width',\n\t\t\t\ttype: 'number',\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'height',\n\t\t\t\tfriendlyName: 'Height',\n\t\t\t\ttype: 'number',\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'objectFit',\n\t\t\t\tfriendlyName: 'Image Fit',\n\t\t\t\ttype: 'enum',\n\t\t\t\tdefaultValue: ObjectFit.Contain,\n\t\t\t\tenum: Object.values(ObjectFit).map(value => ({\n\t\t\t\t\tlabel: labelByObjectFit[value],\n\t\t\t\t\tvalue,\n\t\t\t\t})),\n\t\t\t\trequired: false,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'objectPosition',\n\t\t\t\tfriendlyName: 'Image Position',\n\t\t\t\ttype: 'enum',\n\t\t\t\tdefaultValue: ObjectPosition.Center,\n\t\t\t\tenum: Object.values(ObjectPosition).map(value => ({\n\t\t\t\t\tlabel: labelByObjectPosition[value],\n\t\t\t\t\tvalue,\n\t\t\t\t})),\n\t\t\t\trequired: false,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'highPriority',\n\t\t\t\tfriendlyName: 'High Priority',\n\t\t\t\ttype: 'boolean',\n\t\t\t\tadvanced: true,\n\t\t\t\tdefaultValue: false,\n\t\t\t\trequired: false,\n\t\t\t\thelperText:\n\t\t\t\t\t'Mark this image as high priority compared to other images on the page. This prevents lazy loading of the image and tells the browser to load this image before others on the page.',\n\t\t\t},\n\t\t],\n\t});\n}\n","import { AmberImageImpl } from './amber-image-impl';\nimport { register } from './register';\n\nregister(AmberImageImpl);\n\nexport const AmberImage = AmberImageImpl;\n","import React from 'react';\nimport { Typography, ConfirmationIcon } from '@faithlife/commerce-components';\nimport { PrepubProductStatus } from '../../../per-user-data/per-user-data-context';\n\ntype PrepubProductStatusSummaryVariant = 'pdp' | 'search-list' | 'search-grid';\n\ninterface PrepubProductStatusSummaryProps {\n\tstatus: PrepubProductStatus;\n\tdescription: string;\n\tpercentCommitted: number;\n\tshipDate: string | null | undefined;\n\tvariant: PrepubProductStatusSummaryVariant;\n}\n\nconst committedAmountClassMap: Record<PrepubProductStatus, string> = {\n\talmostThere: 'bg-[var(--prepub-almost)]',\n\tgatheringInterest: 'bg-[var(--prepub-gathering)]',\n\tunderContract: 'bg-[var(--prepub-complete)]',\n\tshippingSoon: 'bg-[var(--prepub-complete)]',\n\tnone: 'bg-transparent',\n};\n\nconst outerClassMap: Record<PrepubProductStatusSummaryVariant, string> = {\n\tpdp: 'flex flex-col justify-start gap-0.5',\n\t'search-list': 'flex flex-col gap-0.5 md:flex-row md:items-center md:gap-2 my-3',\n\t'search-grid': 'flex flex-col gap-0.5 my-3',\n};\n\nconst barClassMap: Record<PrepubProductStatusSummaryVariant, string> = {\n\tpdp: 'w-full sm:max-w-[224px] h-[10px] bg-grey-400 my-[4px] overflow-hidden',\n\t'search-list': 'flex-1 md:flex-none md:w-[224px] h-[10px] bg-grey-400 my-[4px] overflow-hidden',\n\t'search-grid': 'flex-1 h-[10px] bg-grey-400 my-[4px] overflow-hidden',\n};\n\nexport const PrepubProductStatusSummary = ({\n\tstatus,\n\tpercentCommitted,\n\tshipDate,\n\tdescription,\n\tvariant,\n}: PrepubProductStatusSummaryProps) => (\n\t<div className={outerClassMap[variant]}>\n\t\t<div className=\"flex items-center justify-start\">\n\t\t\t<div className={barClassMap[variant]}>\n\t\t\t\t<div className={`h-[10px] ${committedAmountClassMap[status]}`} style={{ width: `${percentCommitted}%` }} />\n\t\t\t</div>\n\t\t\t{shipDate && (\n\t\t\t\t<ConfirmationIcon size={18} className=\"ml-2 text-white rounded-full bg-(--prepub-complete) shrink-0\" />\n\t\t\t)}\n\t\t</div>\n\t\t<Typography variant=\"ui3\" className=\"text-black-200\">\n\t\t\t{description}\n\t\t</Typography>\n\t</div>\n);\n","// extracted by mini-css-extract-plugin\nexport default {\"contentContainer\":\"index--contentContainer--6Gijo\",\"contentTitle\":\"index--contentTitle--qg2Ie\",\"overlay\":\"index--overlay--+87Bn\",\"toggleButton\":\"index--toggleButton--xQsC8\"};","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { debouncedResize, debouncedResizeElement } from '../../util/mobile-utility.js';\n\nimport styles from './index.less';\n\nexport default class ReadMoreReadLess extends React.Component {\n\tstatic defaultProps = {\n\t\tcollapsedHeight: 354,\n\t\tinitiallyCollapsed: false,\n\t\treadMoreCopy: 'Read more',\n\t\treadLessCopy: 'Read less',\n\t\tcollapsedHeightCssVariable: undefined,\n\t};\n\n\tstatic propTypes = {\n\t\tcollapsedHeight: PropTypes.number,\n\t\tcollapsedHeightCssVariable: PropTypes.string,\n\t\t// When contentKey changes, the component resets its collapsed/expanded state\n\t\t// and re-measures, equivalent to a remount but without destroying child components.\n\t\tcontentKey: PropTypes.string,\n\t\tinitiallyCollapsed: PropTypes.bool,\n\t\treadMoreCopy: PropTypes.string,\n\t\treadLessCopy: PropTypes.string,\n\t};\n\n\tstate = {\n\t\tisCollapsed: this.props.initiallyCollapsed,\n\t\tisExpanded: false,\n\t\tcurrentHeight: this.props.initiallyCollapsed\n\t\t\t? this.props.collapsedHeightCssVariable\n\t\t\t\t? `var(${this.props.collapsedHeightCssVariable})`\n\t\t\t\t: this.props.collapsedHeight\n\t\t\t: 'auto',\n\t};\n\n\tcontentContainer = React.createRef();\n\n\tcomponentDidMount() {\n\t\tthis.resizeElementListener = debouncedResizeElement(this.contentContainer.current, this.handleResize);\n\t\tthis.resizeWindowListener = debouncedResize(this.handleResize);\n\n\t\tthis.handleResize();\n\t}\n\n\tcomponentDidUpdate(prevProps) {\n\t\tif (this.props.collapsedHeight !== prevProps.collapsedHeight) {\n\t\t\tthis.handleResize();\n\t\t}\n\t\tif (this.props.contentKey !== undefined && this.props.contentKey !== prevProps.contentKey) {\n\t\t\tthis.setState({ isCollapsed: false, isExpanded: false, currentHeight: 'auto' }, () => {\n\t\t\t\tthis.handleResize();\n\t\t\t});\n\t\t}\n\t}\n\n\tcomponentWillUnmount() {\n\t\tthis.isUnmounted = true;\n\n\t\tif (this.resizeElementListener) {\n\t\t\tthis.resizeElementListener.cancel();\n\t\t}\n\t\tif (this.resizeWindowListener) {\n\t\t\tthis.resizeWindowListener.cancel();\n\t\t}\n\t}\n\n\thandleResize = () => {\n\t\tconst contentContainer = this.contentContainer.current;\n\n\t\tif (!this.isUnmounted) {\n\t\t\tthis.setState(state => {\n\t\t\t\tconst collapsedHeight = this.getCollapsedHeight();\n\n\t\t\t\tif (state.isCollapsed && contentContainer.scrollHeight <= collapsedHeight) {\n\t\t\t\t\treturn { isCollapsed: false, currentHeight: 'auto' };\n\t\t\t\t} else if (state.isExpanded) {\n\t\t\t\t\treturn { currentHeight: contentContainer.scrollHeight };\n\t\t\t\t} else if (contentContainer.scrollHeight > collapsedHeight) {\n\t\t\t\t\treturn { isCollapsed: true, currentHeight: collapsedHeight };\n\t\t\t\t} else {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n\n\thandleExpandButtonClick = () => {\n\t\tthis.setState({\n\t\t\tisCollapsed: false,\n\t\t\tisExpanded: true,\n\t\t\tcurrentHeight: this.contentContainer.current.scrollHeight,\n\t\t});\n\t};\n\n\thandleCollapseButtonClick = () => {\n\t\tthis.setState({\n\t\t\tisCollapsed: true,\n\t\t\tisExpanded: false,\n\t\t\tcurrentHeight: this.getCollapsedHeight(),\n\t\t});\n\t};\n\n\tgetCollapsedHeight = () => {\n\t\tconst { collapsedHeight, collapsedHeightCssVariable } = this.props;\n\t\tconst contentContainer = this.contentContainer.current;\n\n\t\tif (collapsedHeightCssVariable && contentContainer) {\n\t\t\tconst cssValue = window.getComputedStyle(contentContainer).getPropertyValue(collapsedHeightCssVariable).trim();\n\t\t\tconst parsedValue = Number.parseFloat(cssValue);\n\n\t\t\tif (Number.isFinite(parsedValue)) {\n\t\t\t\treturn parsedValue;\n\t\t\t}\n\t\t}\n\n\t\treturn collapsedHeight;\n\t};\n\n\trender() {\n\t\tconst { children, readMoreCopy, readLessCopy } = this.props;\n\t\tconst { isCollapsed, isExpanded, currentHeight } = this.state;\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<div\n\t\t\t\t\tclassName={styles.contentContainer}\n\t\t\t\t\tref={this.contentContainer}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\theight: typeof currentHeight === 'number' ? `${currentHeight}px` : currentHeight,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t\t{isCollapsed && <div className={styles.overlay} />}\n\t\t\t\t</div>\n\t\t\t\t{isCollapsed && (\n\t\t\t\t\t<button onClick={this.handleExpandButtonClick} className={styles.toggleButton}>\n\t\t\t\t\t\t{readMoreCopy}\n\t\t\t\t\t</button>\n\t\t\t\t)}\n\t\t\t\t{isExpanded && (\n\t\t\t\t\t<button onClick={this.handleCollapseButtonClick} className={styles.toggleButton}>\n\t\t\t\t\t\t{readLessCopy}\n\t\t\t\t\t</button>\n\t\t\t\t)}\n\t\t\t</>\n\t\t);\n\t}\n}\n","import React from 'react';\nimport ReadMoreReadLess from '../../read-more-read-less';\nimport { AmberImage } from '../../builder/custom-components/amber-image';\nimport { cn } from '../../../util/cn';\n\nexport interface AuthorBioProps {\n\tdisplayName?: string | null;\n\timageUrl?: string | null;\n\tbio?: string | null;\n\tresources: {\n\t\tshowLess: string;\n\t\tshowMore: string;\n\t};\n\tclassName?: string;\n}\n\nexport const AuthorBio = ({ resources, displayName, imageUrl, bio, className }: AuthorBioProps) => {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t`flex flex-row gap-x-sp30 [--author-bio-collapsed-height:135px] md:[--author-bio-collapsed-height:170px]`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t>\n\t\t\t{imageUrl && (\n\t\t\t\t<div className=\"flex w-[108px] flex-none flex-col gap-y-sp30 md:w-[154px]\">\n\t\t\t\t\t<AmberImage alt={displayName} height={200} src={imageUrl} width={154} />\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{bio && (\n\t\t\t\t<div>\n\t\t\t\t\t<ReadMoreReadLess\n\t\t\t\t\t\treadMoreCopy={resources.showMore}\n\t\t\t\t\t\treadLessCopy={resources.showLess}\n\t\t\t\t\t\tinitiallyCollapsed\n\t\t\t\t\t\tcollapsedHeight={135}\n\t\t\t\t\t\tcollapsedHeightCssVariable=\"--author-bio-collapsed-height\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div className=\"bd-product-display-content\" dangerouslySetInnerHTML={{ __html: bio }} />\n\t\t\t\t\t</ReadMoreReadLess>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import * as React from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '../../../util/cn';\n\nconst DropdownMenu = DropdownMenuPrimitive.Root;\n\nconst DropdownMenuTrigger = React.forwardRef<\n\tReact.ComponentRef<typeof DropdownMenuPrimitive.Trigger>,\n\tReact.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n\t<DropdownMenuPrimitive.Trigger\n\t\tclassName={cn('outline-hidden focus-visible:ring-2 focus-visible:ring-primary', className)}\n\t\tref={ref}\n\t\t{...props}\n\t/>\n));\n\nDropdownMenuTrigger.displayName = DropdownMenuPrimitive.Trigger.displayName;\n\nconst DropdownMenuContent = React.forwardRef<\n\tReact.ComponentRef<typeof DropdownMenuPrimitive.Content>,\n\tReact.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ align = 'end', className, sideOffset = 8, ...props }, ref) => (\n\t<DropdownMenuPrimitive.Portal>\n\t\t<DropdownMenuPrimitive.Content\n\t\t\talign={align}\n\t\t\tclassName={cn(\n\t\t\t\t'tw-preflight isolate z-20 min-w-[140px] rounded border border-grey-300 bg-white py-1 shadow outline-hidden',\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tref={ref}\n\t\t\tsideOffset={sideOffset}\n\t\t\t{...props}\n\t\t/>\n\t</DropdownMenuPrimitive.Portal>\n));\n\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\n\nconst DropdownMenuRadioItem = React.forwardRef<\n\tReact.ComponentRef<typeof DropdownMenuPrimitive.RadioItem>,\n\tReact.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n\t<DropdownMenuPrimitive.RadioItem\n\t\tclassName={cn(\n\t\t\t'relative block cursor-pointer px-3 py-2 text-left text-black outline-hidden hover:bg-primary-100 active:bg-primary-200 focus-visible:z-10 focus-visible:bg-primary-100 data-[state=checked]:font-semibold',\n\t\t\tclassName\n\t\t)}\n\t\tref={ref}\n\t\t{...props}\n\t>\n\t\t{children}\n\t</DropdownMenuPrimitive.RadioItem>\n));\n\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;\n\nconst DropdownMenuItem = React.forwardRef<\n\tReact.ComponentRef<typeof DropdownMenuPrimitive.Item>,\n\tReact.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n\t<DropdownMenuPrimitive.Item\n\t\tclassName={cn(\n\t\t\t'relative block cursor-pointer px-3 py-2 text-left text-black outline-hidden hover:bg-primary-100 active:bg-primary-200 focus-visible:z-10 focus-visible:bg-primary-100',\n\t\t\tclassName\n\t\t)}\n\t\tref={ref}\n\t\t{...props}\n\t>\n\t\t{children}\n\t</DropdownMenuPrimitive.Item>\n));\n\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;\n\nexport {\n\tDropdownMenu,\n\tDropdownMenuTrigger,\n\tDropdownMenuContent,\n\tDropdownMenuRadioGroup,\n\tDropdownMenuRadioItem,\n\tDropdownMenuItem,\n};\n","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\ntype ImageElementProps = React.ImgHTMLAttributes<HTMLImageElement> & {\n\tfetchpriority?: ImageProps['fetchPriority'];\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 tryAddAmberLimit(urlAsString: string): string {\n\ttry {\n\t\tconst url = new URL(urlAsString);\n\t\tif (!isAmberHost(url.host) || !url.pathname.endsWith('optimized')) {\n\t\t\treturn urlAsString;\n\t\t}\n\t\turl.searchParams.set('m', 'limit');\n\t\treturn url.toString();\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(() => tryAddAmberLimit(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\tconst imageProps: ImageElementProps = {\n\t\tsrc,\n\t\tsrcSet: srcSetAttribute,\n\t\tsizes: sizesAttribute,\n\t\twidth: widthAttribute,\n\t\theight: heightAttribute,\n\t\tloading: belowTheFold ? 'lazy' : undefined,\n\t\tfetchpriority: fetchPriority,\n\t\tclassName,\n\t\tstyle,\n\t};\n\n\treturn <img {...imageProps} alt={alt} />;\n};\n\nexport {\n\tImage,\n\tdetectIsAmberOptimizedUrl,\n\tisAmberHost,\n\ttoAmberCdnUrl,\n\ttryAddAmberLimit,\n\ttryUpgradeAmberUrlToCdn,\n\tamberCdnHost,\n};\nexport type { ImageProps, ImageSizes, SizeDescriptor };\n"],"names":["AddToWishListIconButton","_ref","isInAnyWishList","onClick","React","IconButton","className","scale","variant","Heart","fill","propTypes","PropTypes","isRequired","icon_button","LinkButton","resources","useLocalization","AddToWishList","cn","size","strokeWidth","height","width","xmlns","d","stroke","isLoading","link_button","props","openAddForm","useContext","SharedWishListFormContext","open","isSignedIn","useCurrentUser","handleClickMore","useCallback","productId","wishListsProductMembershipRecords","isOwned","CommerceWebThemeProvider","id","isProductInWishList","name","routes","AddProductToWishListUrl","AddToWishListWithForm","SharedWishListFormProvider","ObjectFit","Contain","Cover","ObjectPosition","Center","Top","Bottom","Left","Right","TopLeft","TopRight","BottomLeft","BottomRight","objectFitCssValues","objectPositionCssValues","AmberImageImpl","src","srcType","alt","objectFit","objectPosition","highPriority","finalSrc","concat","style","maxWidth","aspectRatio","undefined","Image","belowTheFold","fetchPriority","sizes","mobile","desktop","labelByObjectFit","labelByObjectPosition","AmberImage","Builder","registerComponent","friendlyName","image","inputs","type","helperText","required","defaultValue","enum","Object","values","map","value","label","advanced","registerAmberImageWithBuilder","result","valid","message","test","url","URL","_unused","isAmberHost","host","pathname","endsWith","searchParams","has","toAmberCdnUrl","validateBuilderAmberImageProps","isEditing","borderRadius","borderLeftWidth","borderColor","backgroundColor","padding","color","fontSize","createBuilderAmberImageComponent","register","committedAmountClassMap","almostThere","gatheringInterest","underContract","shippingSoon","none","outerClassMap","pdp","barClassMap","status","percentCommitted","shipDate","description","ConfirmationIcon","Typography","read_more_read_less","ReadMoreReadLess","constructor","super","arguments","_defineProperty","this","isCollapsed","initiallyCollapsed","isExpanded","currentHeight","collapsedHeightCssVariable","collapsedHeight","contentContainer","current","isUnmounted","setState","state","getCollapsedHeight","scrollHeight","_this$props","cssValue","window","getComputedStyle","getPropertyValue","trim","parsedValue","Number","parseFloat","isFinite","componentDidMount","resizeElementListener","debouncedResizeElement","handleResize","resizeWindowListener","debouncedResize","componentDidUpdate","prevProps","contentKey","componentWillUnmount","cancel","render","_this$props2","children","readMoreCopy","readLessCopy","_this$state","ref","handleExpandButtonClick","styles","handleCollapseButtonClick","displayName","imageUrl","bio","showMore","showLess","dangerouslySetInnerHTML","__html","DropdownMenu","DropdownMenuPrimitive","DropdownMenuTrigger","_objectWithoutProperties","_excluded","_extends","DropdownMenuContent","_ref2","_ref2$align","align","_ref2$sideOffset","sideOffset","_excluded2","DropdownMenuRadioGroup","DropdownMenuRadioItem","_ref3","_excluded3","DropdownMenuItem","_ref4","_excluded4","breakPointNames","breakPoints","mobileCutoffWidth","desktopMinWidth","largeDesktopMinWidth","extraLargeDesktopMinWidth","standardDeviceWidths","formatSizeValue","computeSrcSetWidths","nominalWidths","deviceWidths","widthSet","Set","nominalWidth","add","sort","a","b","createSrcSetAttribute","srcSetWidths","entries","set","String","Math","round","push","toString","length","join","getNominalWidths","processedSizes","widthProp","s","filter","w","amberCdnHost","amberUrls","amberCdnUpgradableHosts","includes","detectIsAmberOptimizedUrl","urlAsString","isAmberCdn","isOptimized","cdnUrl","protocol","port","srcProp","inputSizes","_ref4$belowTheFold","targetAspectRatio","numericAspectRatio","useMemo","_unused3","tryAddAmberLimit","_unused2","tryUpgradeAmberUrlToCdn","_slicedToArray","sizeName","_size$height","floor","processSizes","isAmberOptimizedUrl","srcSetAttribute","containsResponsiveWidth","some","x","sizesAttribute","sizeResults","currentResult","i","_sizeEntry$width","sizeEntry","breakPoint","createSizesAttribute","widthAttribute","heightAttribute","imageProps","srcSet","loading","fetchpriority"],"sourceRoot":""}