{"version":3,"file":"productList~relatedProducts.e84eee64da422f8a2186.js","sources":["webpack:///./Source/FECOM.Web.UI/Scripts/components/Button.tsx","webpack:///./Source/FECOM.Web.UI/Scripts/components/CustomerDiscountText.tsx","webpack:///./Source/FECOM.Web.UI/Scripts/components/LoaderMask.tsx","webpack:///./Source/FECOM.Web.UI/Scripts/components/Modal.tsx","webpack:///./Source/FECOM.Web.UI/Scripts/components/ProductPod.tsx","webpack:///./Source/FECOM.Web.UI/Scripts/components/Roundels.tsx","webpack:///./Source/FECOM.Web.UI/Scripts/components/StockIndicator.tsx","webpack:///./Source/FECOM.Web.UI/Scripts/utilities/displayProductWasPrice.ts","webpack:///./Source/FECOM.Web.UI/Scripts/utilities/formatCurrency.ts","webpack:///./Source/FECOM.Web.UI/Scripts/utilities/updateQuantityBadge.ts","webpack:///./node_modules/core-js/internals/create-html.js","webpack:///./node_modules/core-js/internals/string-html-forced.js","webpack:///./node_modules/core-js/modules/es.array.join.js","webpack:///./node_modules/core-js/modules/es.array.reverse.js","webpack:///./node_modules/core-js/modules/es.regexp.to-string.js","webpack:///./node_modules/core-js/modules/es.string.link.js","webpack:///./node_modules/moment/locale sync en-gb"],"sourcesContent":["import classNames from 'classnames';\r\n\r\ninterface ButtonProps {\r\n id?: string;\r\n type?: 'submit' | 'reset' | 'button';\r\n className?: string;\r\n handleClick?: (event: React.MouseEvent) => void;\r\n children: React.ReactNode;\r\n disabled?: boolean;\r\n}\r\n\r\nexport function Button({\r\n id,\r\n type = 'button',\r\n className,\r\n handleClick,\r\n children,\r\n disabled,\r\n}: ButtonProps) {\r\n const btnClasses = classNames('btn', className);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n","export interface CustomerDiscountTextProps {\r\n isVariant: boolean;\r\n isContractPrice: boolean;\r\n isHeaderDiscounted: boolean;\r\n styleModifier: string | undefined;\r\n}\r\n\r\nexport function CustomerDiscountText({\r\n isVariant,\r\n isContractPrice,\r\n isHeaderDiscounted,\r\n styleModifier\r\n}: CustomerDiscountTextProps) {\r\n const renderDiscountText = () => {\r\n if (!isVariant) {\r\n if (isContractPrice) {\r\n return (\r\n \r\n Your contract price\r\n \r\n );\r\n } else if (isHeaderDiscounted) {\r\n return (\r\n \r\n Your discount price\r\n \r\n );\r\n }\r\n }\r\n };\r\n return <>{renderDiscountText()};\r\n}\r\n","import { FunctionComponent } from 'react';\r\nimport Loader from './Loader';\r\n\r\ninterface LoaderMaskProps {\r\n title?: string;\r\n subtitle?: string;\r\n type?: '' | 'absolute' | 'relative' | 'fixed';\r\n children?: React.ReactNode;\r\n}\r\n\r\nconst LoaderMask: FunctionComponent = ({ title = '', subtitle = '', type = '', children }: LoaderMaskProps) => {\r\n\r\n let loaderType = '';\r\n\r\n switch (type) {\r\n case 'absolute':\r\n loaderType = 'loader-mask--absolute';\r\n break;\r\n case 'relative':\r\n loaderType = 'loader-mask--relative';\r\n break;\r\n case 'fixed':\r\n loaderType = 'loader-mask--fixed';\r\n break;\r\n default:\r\n loaderType = '';\r\n }\r\n\r\n return (\r\n
\r\n {\r\n title &&\r\n
\r\n {title}\r\n
\r\n }\r\n {\r\n children\r\n }\r\n {\r\n !children &&\r\n \r\n }\r\n {\r\n subtitle &&\r\n
\r\n {subtitle}\r\n
\r\n }\r\n
\r\n );\r\n};\r\n\r\nexport default LoaderMask;","/* eslint-disable no-redeclare */\r\n/* eslint-disable @typescript-eslint/no-unused-vars */\r\n\r\nimport { Component } from 'react';\r\nimport { createPortal } from 'react-dom';\r\nimport FocusTrap from 'react-focus-trap';\r\nimport classNames from 'classnames';\r\nimport LoaderMask from './LoaderMask';\r\nimport canUseDOM from '../utilities/canUseDOM';\r\n\r\nconst domAvailable = canUseDOM();\r\n\r\nconst modalRoot = domAvailable ? document.getElementById('app-modals') : null;\r\n\r\ninterface Modal {\r\n el: HTMLDivElement;\r\n}\r\n\r\ninterface ModalProps {\r\n style?: React.CSSProperties;\r\n className?: string;\r\n escapeToClose?: boolean;\r\n isVisible?: boolean;\r\n title?: string;\r\n showClose?: boolean;\r\n handleClose: () => void;\r\n children: React.ReactNode;\r\n footer?: React.ReactNode;\r\n isLoading?: boolean;\r\n}\r\n\r\nclass Modal extends Component {\r\n constructor(props: ModalProps) {\r\n super(props);\r\n if (modalRoot) this.el = document.createElement('div');\r\n this.closeOnEscape = this.closeOnEscape.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n if (modalRoot) modalRoot.appendChild(this.el);\r\n }\r\n\r\n componentWillUnmount() {\r\n if (modalRoot) modalRoot.removeChild(this.el);\r\n }\r\n\r\n componentDidUpdate(prevProps: ModalProps) {\r\n if (this.props.isVisible !== prevProps.isVisible) {\r\n if (this.props.isVisible) {\r\n document.body.classList.add('modal-open');\r\n } else {\r\n document.body.classList.remove('modal-open');\r\n }\r\n }\r\n }\r\n\r\n closeOnEscape(e?: React.SyntheticEvent) {\r\n const { escapeToClose, handleClose } = this.props;\r\n\r\n if (handleClose && escapeToClose) {\r\n handleClose();\r\n }\r\n }\r\n\r\n render() {\r\n if (!modalRoot) {\r\n return null;\r\n }\r\n\r\n const {\r\n style,\r\n className,\r\n isVisible = false,\r\n title,\r\n showClose,\r\n handleClose,\r\n children,\r\n footer\r\n } = this.props;\r\n\r\n const modalDialogClasses = classNames('modal-dialog', className);\r\n\r\n return createPortal(\r\n <>\r\n \r\n {\r\n e.stopPropagation();\r\n }}\r\n >\r\n \r\n
\r\n {this.props.isLoading && }\r\n {title && (\r\n
\r\n
{title}
\r\n {showClose && handleClose && (\r\n \r\n ×\r\n \r\n )}\r\n
\r\n )}\r\n
{children}
\r\n\r\n {footer &&
{footer}
}\r\n
\r\n
\r\n \r\n \r\n
\r\n ,\r\n this.el\r\n );\r\n }\r\n}\r\n\r\nexport default Modal;\r\n","import { useEffect, useState } from 'react';\r\nimport { PageLocation, TransactionalCurrency } from '../types/enums';\r\nimport {\r\n Ecommerce,\r\n ProductListItemViewModel,\r\n ProductViewModel,\r\n Website\r\n} from '../types/generated';\r\nimport formatCurrency from '../utilities/formatCurrency';\r\nimport Roundels from './Roundels';\r\nimport { ResponsiveProductImage } from './ResponsiveProductImage';\r\nimport { addToBasket } from '../apps/basket/basketApi';\r\nimport popupAlert from '../utilities/popup-alert';\r\nimport updateQuantityBadge from '../utilities/updateQuantityBadge';\r\nimport StockIndicator from '../components/StockIndicator';\r\nimport Offer from '../apps/Offer/Offer';\r\nimport { getProductByProductId } from '../apps/product/productPageApi';\r\nimport ProductsILove from '../apps/product/components/ProductsILove';\r\nimport {\r\n addGA4ProductEvent,\r\n getGA4ListName,\r\n getGA4ListId\r\n} from '../helpers/ga4';\r\nimport { displayProductWasPrice } from '../utilities/displayProductWasPrice';\r\nimport { CustomerDiscountText } from './CustomerDiscountText';\r\n\r\nexport interface ProductPodProps extends ProductListItemViewModel {\r\n transactionalCurrency: TransactionalCurrency;\r\n showSecondaryPrice: boolean;\r\n website: Website;\r\n location: PageLocation;\r\n onAddToBasketClick?: (\r\n productId: number,\r\n quantity: number,\r\n catalogueRef: string\r\n ) => void;\r\n onTrackAddToBasketMonetate?: () => void;\r\n isCssFavouritesEnabled?: boolean;\r\n}\r\n\r\nexport default function ProductPod(props: ProductPodProps) {\r\n const [isJustAdded, setIsJustAdded] = useState(false);\r\n const [offerFreeProduct, setOfferFreeProduct] =\r\n useState(null);\r\n\r\n const displayWasPrice = displayProductWasPrice(\r\n props.isContractPrice,\r\n props.showSecondaryPrice,\r\n props.pricingInfo\r\n );\r\n\r\n function handleAddToBasket() {\r\n const qty = props.isUnitPriceDisabled ? props.priceBreakMinUnits : 1;\r\n if (props.onAddToBasketClick) {\r\n props.onAddToBasketClick(props.productId, qty, props.catalogueRef || '');\r\n } else {\r\n // const qty = typeof quantity === 'string' ? 1 : quantity;\r\n getProductByProductId(props.productId).then((item: ProductViewModel) => {\r\n addGA4ProductEvent(\r\n 'add_to_cart',\r\n item,\r\n {\r\n item_list_id: getGA4ListId(props.location),\r\n item_list_name: getGA4ListName(props.location)\r\n } as Ecommerce,\r\n qty\r\n );\r\n });\r\n\r\n addToBasket(props.productId, qty, props.catalogueRef, true)\r\n .then((response) => {\r\n if (response.success && response.warning) {\r\n popupAlert.showWarning(response.message);\r\n } else if (!response.success) {\r\n popupAlert.showNegative(response.message);\r\n } else {\r\n popupAlert.showPositive(response.message);\r\n if (props.onTrackAddToBasketMonetate)\r\n props.onTrackAddToBasketMonetate();\r\n }\r\n updateQuantityBadge(response.basketItemCount);\r\n setIsJustAdded(true);\r\n })\r\n .catch((error: Error) => {\r\n console.error(error);\r\n });\r\n }\r\n }\r\n\r\n function handleProductView() {\r\n getProductByProductId(props.productId).then((item: ProductViewModel) => {\r\n addGA4ProductEvent('select_item', item, {});\r\n });\r\n }\r\n\r\n function renderSavings() {\r\n let bestPriceBreak = props.priceBreaks\r\n ? props.priceBreaks[props.priceBreaks.length - 1]\r\n : null;\r\n if (\r\n bestPriceBreak &&\r\n bestPriceBreak.pricingInfo.savingsPercentage > 0 &&\r\n !displayWasPrice\r\n ) {\r\n return (\r\n \r\n Save up to {bestPriceBreak.pricingInfo.savingsPercentage}%\r\n \r\n );\r\n } else if (props.pricingInfo.primarySavings > 0) {\r\n return (\r\n \r\n {props.isVariant || props.isPriceBreakPrice\r\n ? 'Savings from '\r\n : 'Save '}\r\n {formatCurrency(\r\n props.pricingInfo.primarySavings,\r\n props.transactionalCurrency\r\n )}\r\n \r\n );\r\n }\r\n }\r\n\r\n function getPrimaryPriceWording() {\r\n if (displayWasPrice) {\r\n if (props.isVariant || props.isPriceBreakPrice) {\r\n return 'NOW from ';\r\n }\r\n return 'NOW ';\r\n } else if (props.isVariant || props.isPriceBreakPrice) {\r\n return 'From ';\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (props.offerFreeProductID && props.offerFreeProductID > 0) {\r\n getProductByProductId(props.offerFreeProductID).then(\r\n (data: ProductViewModel) => {\r\n setOfferFreeProduct(data);\r\n }\r\n );\r\n }\r\n }, [props.offerFreeProductID]);\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n {/* @Html.ResponsiveImage(Model.ImageUrl, \"\", new ResponsiveImageSizes(sm:\r\n 228, md: 228, lg: 198, xl: 172 ), \"product-pod__image\") */}\r\n {props.isVariant && !props.isRestricted && (\r\n \r\n )}\r\n \r\n \r\n
\r\n {props.name}{' '}\r\n {/* @if (!Model.UnitOfSale.IsNullOrEmpty() && Model.UnitOfSale != \"Each\") */}\r\n {props.unitOfSale && props.unitOfSale !== 'Each' && (\r\n {props.unitOfSale}\r\n )}\r\n
\r\n \r\n
\r\n
\r\n {!props.isVariant && (\r\n
{props.catalogueRef}
\r\n )}\r\n {props.stockInfo && (\r\n \r\n )}\r\n\r\n \r\n\r\n {displayWasPrice && (\r\n
\r\n Was{' '}\r\n {`${props.isVariant ? 'from' : ''} ${formatCurrency(\r\n props.pricingInfo.primaryWasPrice.value,\r\n props.transactionalCurrency\r\n )}`}\r\n
\r\n )}\r\n\r\n \r\n {getPrimaryPriceWording()}\r\n {formatCurrency(\r\n props.pricingInfo.primaryPrice.value,\r\n props.transactionalCurrency\r\n )}\r\n\r\n {props.showSecondaryPrice == false && (\r\n \r\n {props.pricingInfo.primaryPriceText}\r\n \r\n )}\r\n\r\n {!props.isVariant &&\r\n props.isUnitPriceDisabled &&\r\n props.priceBreakMinUnits > 0 && (\r\n \r\n      Minimum Quantity{' '}\r\n {props.priceBreakMinUnits}+\r\n \r\n )}\r\n
\r\n\r\n {props.showSecondaryPrice && (\r\n
\r\n {formatCurrency(\r\n props.pricingInfo.secondaryPrice.value,\r\n props.transactionalCurrency\r\n )}\r\n \r\n {props.pricingInfo.secondaryPriceText}\r\n \r\n
\r\n )}\r\n {renderSavings()}\r\n \r\n\r\n {/* @if (!Model.IsRestricted) */}\r\n {!props.isRestricted &&\r\n !props.isVariant &&\r\n !props.isTemporarilyUnavailable && (\r\n
\r\n {(props.isAdded || isJustAdded) && (\r\n \r\n Added to Basket\r\n \r\n )}\r\n {!props.isAdded && !isJustAdded && (\r\n \r\n Add to Basket\r\n \r\n )}\r\n
\r\n )}\r\n\r\n {props.isVariant && !props.isRestricted && (\r\n
\r\n \r\n More Options\r\n \r\n
\r\n )}\r\n\r\n {(props.isRestricted ||\r\n (props.isTemporarilyUnavailable && !props.isVariant)) && (\r\n
\r\n \r\n {props.isRestricted\r\n ? 'Product is restricted'\r\n : 'Temporarily Unavailable'}\r\n \r\n
\r\n )}\r\n \r\n \r\n );\r\n}\r\n","import { Roundel as ProductRoundel } from '../types/generated';\r\nexport interface RoundelsProps {\r\n roundel: ProductRoundel | null;\r\n}\r\n\r\nexport default function Roundels({ roundel }: RoundelsProps) {\r\n if (\r\n !roundel?.name ||\r\n roundel?.name === '' ||\r\n (!roundel?.isVendorRoundel &&\r\n (!roundel?.fileName || roundel?.fileName === ''))\r\n ) {\r\n return null;\r\n }\r\n\r\n let cssModifier = '';\r\n\r\n switch (roundel.name.toLowerCase()) {\r\n case 'offer':\r\n cssModifier = 'offer';\r\n break;\r\n case 'new':\r\n cssModifier = 'new';\r\n break;\r\n case 'bestseller':\r\n cssModifier = 'best-seller';\r\n break;\r\n case 'exclusive':\r\n cssModifier = 'exclusive'; // used for other exclusive\r\n break;\r\n case 'vendor':\r\n switch (roundel.text?.toLocaleLowerCase()) {\r\n case 'findel':\r\n cssModifier = 'findel';\r\n break;\r\n case 'clickety books':\r\n cssModifier = 'clickety-books';\r\n break;\r\n case 'cosy direct':\r\n cssModifier = 'cosy';\r\n break;\r\n case 'dryad big book':\r\n cssModifier = 'dryad-big-book';\r\n break;\r\n case 'dryad education':\r\n cssModifier = 'dryad-education';\r\n break;\r\n case 'gam':\r\n cssModifier = 'gam';\r\n break;\r\n case 'heart':\r\n cssModifier = 'heart';\r\n break;\r\n case 'kidzinc':\r\n cssModifier = 'kidzinc';\r\n break;\r\n case 'normans musical instruments':\r\n cssModifier = 'normans-music';\r\n break;\r\n case 'pottery crafts':\r\n cssModifier = 'pottery-crafts';\r\n break;\r\n case 'specialist crafts':\r\n cssModifier = 'specialist-crafts';\r\n break;\r\n case 'surestitch':\r\n cssModifier = 'surestitch';\r\n break;\r\n case 'wildgoose':\r\n cssModifier = 'wildgoose';\r\n break;\r\n default:\r\n break;\r\n }\r\n break;\r\n default:\r\n cssModifier = 'default';\r\n break;\r\n }\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\ninterface RoundelProps {\r\n name: string | null;\r\n cssModifier: string;\r\n fileName: string | null;\r\n}\r\n\r\nfunction Roundel({ name, cssModifier, fileName }: RoundelProps) {\r\n return fileName && fileName != '' ? (\r\n \r\n {name}\r\n \r\n ) : (\r\n
{name}
\r\n );\r\n}\r\n","import { StockInfo, Supplier } from '../types/generated';\r\nimport moment from 'moment';\r\nimport classNames from 'classnames';\r\n\r\ninterface StockIndicatorProps {\r\n stockInfo: StockInfo;\r\n showMessages?: boolean;\r\n singleLine?: boolean;\r\n supplierID: number;\r\n isThirdPartyDDelivery?: boolean | null;\r\n isRestricted?: boolean | null;\r\n suppressStockDeliveryMessage?: boolean | null;\r\n}\r\n\r\nconst StockIndicator = ({\r\n stockInfo,\r\n showMessages,\r\n singleLine,\r\n supplierID,\r\n isThirdPartyDDelivery,\r\n isRestricted,\r\n suppressStockDeliveryMessage = false\r\n}: StockIndicatorProps) => {\r\n const preOrderDateFormatted = moment(stockInfo?.preOrderDate).format(\r\n 'MMMM YYYY'\r\n );\r\n\r\n const outOfStockCssSuffix = stockInfo.isOutOfStock ? 'out' : 'delayed';\r\n\r\n const singleLineClass = classNames({\r\n 'd-flex flex-column': singleLine\r\n });\r\n\r\n const customPadding = singleLine ? ' pr-1' : '';\r\n const delayedStock = () => {\r\n return (\r\n <>\r\n \r\n Out of stock\r\n \r\n\r\n {stockInfo.isDelayedStock && showMessages && (\r\n

\r\n \r\n {' '}\r\n {stockInfo.expectedBackInStockMessage}\r\n \r\n

\r\n )}\r\n \r\n );\r\n };\r\n\r\n const delayedStockThirdParty = () => {\r\n return (\r\n <>\r\n {stockInfo.isInStock && isThirdPartyDDelivery && (\r\n

\r\n \r\n {' '}\r\n {stockInfo.thirdPartyDirectDeliveryMessage}\r\n \r\n

\r\n )}\r\n \r\n );\r\n };\r\n\r\n const preOrder = () => {\r\n return (\r\n <>\r\n \r\n Pre-order\r\n \r\n {showMessages && (\r\n

\r\n Order now, delivery expected in\r\n \r\n {' '}\r\n {preOrderDateFormatted}\r\n \r\n

\r\n )}\r\n \r\n );\r\n };\r\n\r\n return (\r\n <>\r\n {stockInfo.isStockRelevant &&\r\n stockInfo?.stockLevel != null &&\r\n !stockInfo?.isPreOrder &&\r\n supplierID === Supplier.Findel && (\r\n
\r\n
\r\n {stockInfo.isInStock && (\r\n
\r\n In stock\r\n {stockInfo.inStockDeliveryMessage !== '' &&\r\n !suppressStockDeliveryMessage &&\r\n !isRestricted &&\r\n !isThirdPartyDDelivery && (\r\n \r\n {' - '}\r\n {stockInfo.inStockDeliveryMessage}\r\n \r\n )}\r\n
\r\n )}\r\n {!singleLine &&\r\n (stockInfo.isDelayedStock || stockInfo.isOutOfStock) && (\r\n <>{delayedStock()}\r\n )}\r\n {singleLine &&\r\n (stockInfo.isDelayedStock || stockInfo.isOutOfStock) && (\r\n
{delayedStock()}
\r\n )}\r\n {stockInfo.isInStock && isThirdPartyDDelivery && (\r\n
\r\n {delayedStockThirdParty()}\r\n
\r\n )}\r\n
\r\n
\r\n )}\r\n {stockInfo.isStockRelevant && !singleLine && stockInfo?.isPreOrder && (\r\n
\r\n
{preOrder()}
\r\n
\r\n )}\r\n {stockInfo.isStockRelevant && singleLine && stockInfo?.isPreOrder && (\r\n
\r\n
\r\n
{preOrder()}
\r\n
\r\n
\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default StockIndicator;\r\n","import { PricingInfo } from '../types/generated';\r\n\r\nexport function displayProductWasPrice(\r\n isContractPrice: boolean,\r\n showSecondaryPrice: boolean,\r\n pricingInfo: PricingInfo\r\n): boolean {\r\n return (\r\n !isContractPrice &&\r\n pricingInfo.primaryWasPrice.value > 0 &&\r\n pricingInfo.primaryWasPrice.value > pricingInfo.primaryPrice.value &&\r\n (showSecondaryPrice\r\n ? pricingInfo.secondaryWasPrice.value > 0 &&\r\n pricingInfo.secondaryWasPrice.value > pricingInfo.secondaryPrice.value\r\n : true)\r\n );\r\n}\r\n","import { TransactionalCurrency } from '../types/enums';\r\n\r\nconst formatCurrency = (\r\n amount: number,\r\n currencyEnum: TransactionalCurrency = TransactionalCurrency.GBP\r\n) => {\r\n let currency = 'GBP';\r\n\r\n switch (currencyEnum) {\r\n case TransactionalCurrency.EUR:\r\n currency = 'EUR';\r\n break;\r\n case TransactionalCurrency.GBP:\r\n default:\r\n currency = 'GBP';\r\n break;\r\n case TransactionalCurrency.AED:\r\n currency = 'AED';\r\n break;\r\n }\r\n\r\n // numeral(amount).format('0.00');\r\n return amount?.toLocaleString(undefined, {\r\n style: 'currency',\r\n currency\r\n });\r\n};\r\nexport default formatCurrency;\r\n\r\nexport function createCurrencyCode(currencyEnum: TransactionalCurrency) {\r\n switch (currencyEnum) {\r\n case TransactionalCurrency.GBP:\r\n return 'GBP';\r\n case TransactionalCurrency.EUR:\r\n return 'EUR';\r\n case TransactionalCurrency.AED:\r\n return 'AED';\r\n default:\r\n return 'GBP';\r\n }\r\n}\r\n","function updateQuantityBadge(quantity: number) {\r\n if (document) {\r\n const basketCounters = document.querySelectorAll(\r\n '.js-header-icon-link .header-icon__badge',\r\n );\r\n\r\n if (basketCounters) {\r\n const counters = Array.from(basketCounters);\r\n counters.forEach(basketLovelyCounter => {\r\n basketLovelyCounter.innerText = quantity.toString();\r\n });\r\n }\r\n }\r\n}\r\n\r\nexport default updateQuantityBadge;\r\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar quot = /\"/g;\n\n// `CreateHTML` abstract operation\n// https://tc39.es/ecma262/#sec-createhtml\nmodule.exports = function (string, tag, attribute, value) {\n var S = String(requireObjectCoercible(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '"') + '\"';\n return p1 + '>' + S + '';\n};\n","var fails = require('../internals/fails');\n\n// check the existence of a method, lowercase\n// of a tag and escaping quotes in arguments\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n var test = ''[METHOD_NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeJoin = [].join;\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar STRICT_METHOD = arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.es/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {\n join: function join(separator) {\n return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\n\nvar nativeReverse = [].reverse;\nvar test = [1, 2];\n\n// `Array.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-array.prototype.reverse\n// fix for Safari 12.0 bug\n// https://bugs.webkit.org/show_bug.cgi?id=188794\n$({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, {\n reverse: function reverse() {\n // eslint-disable-next-line no-self-assign -- dirty hack\n if (isArray(this)) this.length = this.length;\n return nativeReverse.call(this);\n }\n});\n","'use strict';\nvar redefine = require('../internals/redefine');\nvar anObject = require('../internals/an-object');\nvar fails = require('../internals/fails');\nvar flags = require('../internals/regexp-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = String(R.source);\n var rf = R.flags;\n var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n return '/' + p + '/' + f;\n }, { unsafe: true });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.link` method\n// https://tc39.es/ecma262/#sec-string.prototype.link\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('link') }, {\n link: function link(url) {\n return createHTML(this, 'a', 'href', url);\n }\n});\n","var map = {\n\t\"./en-gb\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-gb.js\": \"./node_modules/moment/locale/en-gb.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./node_modules/moment/locale sync recursive en-gb\";"],"mappings":";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAWA;AAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AALA;AAAA;AAUA;;;;;;;;;;;;;;;;;;ACzBA;AAKA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AAEA;AADA;AAAA;AAMA;AACA;AAEA;AADA;AAAA;AAMA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;;;;;;;;;;;;AClCA;AAAA;AAAA;AAAA;AAAA;;;;AASA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAXA;AACA;AAaA;AACA;AAAA;AAGA;AAAA;AAAA;AASA;AAAA;AAIA;AAAA;AAAA;AAhBA;AAsBA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrDA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;;;;AAEA;AAEA;AACA;AAkBA;;;;;AACA;AAAA;AACA;AADA;AACA;AAAA;AACA;AACA;AAHA;AAIA;AACA;;;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWA;AAEA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAJA;AAOA;AACA;AACA;AACA;AACA;AACA;AANA;AAQA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAEA;AAAA;AACA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AALA;AAOA;AAAA;AAAA;AAPA;AAHA;AAeA;AAAA;AAAA;AAEA;AAAA;AAAA;AApBA;AADA;AARA;AANA;AAwCA;AAAA;AAzCA;AA6CA;;;;AAjGA;AACA;AAmGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnIA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;;;AAgBA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAKA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AAFA;AAMA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAKA;AACA;AAAA;AAAA;AAIA;AACA;AACA;AAAA;AAAA;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AAHA;AAKA;AAAA;AACA;AAAA;AACA;AAAA;AAFA;AAKA;AACA;AAIA;AACA;AAPA;AASA;AATA;AAWA;AACA;AAZA;AAeA;AACA;AAFA;AAcA;AACA;AACA;AAHA;AApCA;AA4CA;AACA;AACA;AAHA;AAKA;AAAA;AAIA;AAAA;AAAA;AAJA;AALA;AA5CA;AA0DA;AAAA;AAEA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AAJA;AASA;AACA;AACA;AACA;AAJA;AAQA;AAAA;AAAA;AAUA;AADA;AAYA;AAAA;AAAA;AAQA;AAAA;AAAA;AApBA;AA4BA;AAAA;AAKA;AAAA;AAAA;AALA;AAYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AARA;AAUA;AACA;AAZA;AAmBA;AAAA;AAGA;AACA;AACA;AAHA;AAAA;AAUA;AACA;AACA;AAHA;AAAA;AAXA;AAuBA;AAAA;AAEA;AACA;AACA;AAHA;AAAA;AADA;AAaA;AAAA;AAEA;AACA;AACA;AAHA;AAAA;AADA;AA5HA;AA3DA;AAsMA;;;;;;;;;;;;;;;;;;;;ACnVA;AAAA;AACA;AADA;AACA;AAAA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAzCA;AACA;AA0CA;AACA;AAAA;AACA;AACA;AA5DA;AACA;AA8DA;AAEA;AACA;AACA;AAHA;AAMA;AACA;AAOA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AAFA;AAAA;AAOA;AAAA;AAAA;AAEA;;;;;;;;;;;;;;;;;;;;;;;AC1GA;AACA;AACA;;;;;AAYA;AAQA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAIA;AAEA;AACA;AADA;AAIA;AACA;AAAA;AACA;AACA;AAEA;AADA;AAAA;AAWA;AAAA;AACA;AAAA;AAAA;AADA;AAZA;AAqBA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAAA;AAAA;AADA;AAFA;AAWA;AACA;AACA;AACA;AACA;AAEA;AADA;AAAA;AAMA;AAAA;AAEA;AAAA;AAAA;AAFA;AAPA;AAiBA;AACA;AACA;AACA;AAKA;AAAA;AACA;AAAA;AAEA;AAAA;AAMA;AAAA;AANA;AAeA;AAAA;AAIA;AAAA;AAAA;AAGA;AAAA;AAAA;AAxBA;AADA;AAiCA;AAAA;AACA;AAAA;AAAA;AADA;AAKA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AADA;AADA;AA3CA;AAmDA;AACA;AACA;;;;;;;;;;;;ACnJA;AAAA;AAAA;AAKA;AASA;;;;;;;;;;;;AChBA;AAAA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAVA;AACA;AACA;AAYA;AACA;AACA;AAFA;AAIA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AARA;AAUA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxCA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;A","sourceRoot":""}